Line data Source code
1 : #pragma once 2 : 3 : #include "AP_Scripting_config.h" 4 : 5 : #if AP_SCRIPTING_SERIALDEVICE_ENABLED 6 : 7 : #include <AP_SerialManager/AP_SerialManager.h> 8 : 9 : #ifndef AP_SCRIPTING_SERIALDEVICE_NUM_PORTS 10 : #define AP_SCRIPTING_SERIALDEVICE_NUM_PORTS 3 11 : #endif 12 : 13 : class AP_Scripting; 14 : 15 : class AP_Scripting_SerialDevice 16 : { 17 : public: 18 : /* Do not allow copies */ 19 : CLASS_NO_COPY(AP_Scripting_SerialDevice); 20 : 21 8392 : AP_Scripting_SerialDevice() {} 22 : 23 : AP_Int8 enable; 24 : 25 : void init(void); 26 : void clear(void); 27 : 28 : public: 29 : class Port : public AP_SerialManager::RegisteredPort { 30 : public: 31 : friend class AP_Scripting_SerialDevice; 32 : void init(void); 33 : void clear(void); 34 : 35 : size_t device_write(const uint8_t *buffer, size_t size); 36 : ssize_t device_read(uint8_t *buffer, uint16_t count); 37 : uint32_t device_available(void); 38 : 39 : private: 40 0 : bool is_initialized() override { 41 0 : return true; 42 : } 43 0 : bool tx_pending() override { 44 0 : return false; 45 : } 46 : 47 : bool init_buffers(const uint32_t size_rx, const uint32_t size_tx); 48 : 49 : uint32_t txspace() override; 50 : void _begin(uint32_t b, uint16_t rxS, uint16_t txS) override; 51 : size_t _write(const uint8_t *buffer, size_t size) override; 52 : ssize_t _read(uint8_t *buffer, uint16_t count) override; 53 : uint32_t _available() override; 54 0 : void _end() override {} 55 0 : void _flush() override {} 56 : bool _discard_input() override; 57 : 58 : ByteBuffer *readbuffer; 59 : ByteBuffer *writebuffer; 60 : uint32_t last_size_tx; 61 : uint32_t last_size_rx; 62 : 63 : HAL_Semaphore sem; 64 : }; 65 : 66 : Port ports[AP_SCRIPTING_SERIALDEVICE_NUM_PORTS]; 67 : }; 68 : 69 : #endif // AP_SCRIPTING_SERIALDEVICE_ENABLED