
this is using the mbed os version 5-13-1
source/ATCmdManager.h@81:637a87eb8170, 2019-03-23 (annotated)
- Committer:
- ocomeni
- Date:
- Sat Mar 23 16:28:34 2019 +0000
- Revision:
- 81:637a87eb8170
- Parent:
- 80:e8f0e92e3ac9
- Child:
- 82:10072c1794d3
first data queue/dequeue implemented for internet configuration.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ocomeni | 74:f26e846adfe9 | 1 | #ifndef __ATCMD_MANAGER_H__ |
ocomeni | 74:f26e846adfe9 | 2 | #define __ATCMD_MANAGER_H__ |
ocomeni | 79:a2187bbfa407 | 3 | #include <events/mbed_events.h> |
ocomeni | 74:f26e846adfe9 | 4 | #include <mbed.h> |
ocomeni | 74:f26e846adfe9 | 5 | #include "ATCmdParser.h" |
ocomeni | 78:07bb86e3ce14 | 6 | #include "BleManager.h" |
ocomeni | 78:07bb86e3ce14 | 7 | #include "WiFiManager.h" |
ocomeni | 74:f26e846adfe9 | 8 | |
ocomeni | 75:08eff6258e1b | 9 | #define MAIN_LOOP_WAIT_TIME_MS 1000 // milliseconds |
ocomeni | 75:08eff6258e1b | 10 | #define NUM_UART_OPTIONS 6 |
ocomeni | 74:f26e846adfe9 | 11 | #ifndef UBLOX_ODIN_W2_MISC_TIMEOUT |
ocomeni | 74:f26e846adfe9 | 12 | #define UBLOX_ODIN_W2_MISC_TIMEOUT 2000 |
ocomeni | 74:f26e846adfe9 | 13 | #endif |
ocomeni | 74:f26e846adfe9 | 14 | |
ocomeni | 74:f26e846adfe9 | 15 | |
ocomeni | 74:f26e846adfe9 | 16 | class ATCmdManager { |
ocomeni | 74:f26e846adfe9 | 17 | public: |
ocomeni | 78:07bb86e3ce14 | 18 | ATCmdManager(PinName tx, PinName rx, SMDevicePeripheral *blePeripheral, |
ocomeni | 79:a2187bbfa407 | 19 | events::EventQueue &event_queue, WiFiManager *wifi, |
ocomeni | 79:a2187bbfa407 | 20 | MemoryPool<wifi_cmd_message_t, 16> *aT2WiFimPool, |
ocomeni | 79:a2187bbfa407 | 21 | Queue<wifi_cmd_message_t, 16> *aT2WiFiCmdQueue, |
ocomeni | 81:637a87eb8170 | 22 | MemoryPool<at_resp_message_t, 16> *wiFi2ATmPool, |
ocomeni | 81:637a87eb8170 | 23 | Queue<at_resp_message_t, 16> *wiFi2ATCmdQueue, |
ocomeni | 80:e8f0e92e3ac9 | 24 | MemoryPool<wifi_data_msg_t, 4> *aT2WiFiDatamPool, |
ocomeni | 80:e8f0e92e3ac9 | 25 | Queue<wifi_data_msg_t, 4> *aT2WiFiDataQueue, |
ocomeni | 81:637a87eb8170 | 26 | MemoryPool<at_data_msg_t, 4> *wiFi2ATDatamPool, |
ocomeni | 81:637a87eb8170 | 27 | Queue<at_data_msg_t, 4> *wiFi2ATDataQueue, |
ocomeni | 79:a2187bbfa407 | 28 | bool debug = false); |
ocomeni | 74:f26e846adfe9 | 29 | public: |
ocomeni | 74:f26e846adfe9 | 30 | void runMain(); |
ocomeni | 74:f26e846adfe9 | 31 | |
ocomeni | 74:f26e846adfe9 | 32 | |
ocomeni | 74:f26e846adfe9 | 33 | |
ocomeni | 74:f26e846adfe9 | 34 | private: |
ocomeni | 74:f26e846adfe9 | 35 | // UART settings |
ocomeni | 74:f26e846adfe9 | 36 | UARTSerial _serial; |
ocomeni | 74:f26e846adfe9 | 37 | Mutex _smutex; // Protect serial port access |
ocomeni | 74:f26e846adfe9 | 38 | Mutex _rmutex; // Reset protection |
ocomeni | 79:a2187bbfa407 | 39 | // define event queue |
ocomeni | 79:a2187bbfa407 | 40 | events::EventQueue &_event_queue; |
ocomeni | 74:f26e846adfe9 | 41 | // AT Command Parser |
ocomeni | 74:f26e846adfe9 | 42 | ATCmdParser _parser; |
ocomeni | 78:07bb86e3ce14 | 43 | SMDevicePeripheral *blePeripheral; |
ocomeni | 79:a2187bbfa407 | 44 | WiFiManager *wiFiManager; |
ocomeni | 81:637a87eb8170 | 45 | at_cmd_resp_t at_resp; |
ocomeni | 81:637a87eb8170 | 46 | at_data_mode_t dataMode; |
ocomeni | 80:e8f0e92e3ac9 | 47 | /* Queue and memory pool for AT to Wifi commands */ |
ocomeni | 79:a2187bbfa407 | 48 | MemoryPool<wifi_cmd_message_t, 16> *_aT2WiFimPool; |
ocomeni | 79:a2187bbfa407 | 49 | Queue<wifi_cmd_message_t, 16> *_aT2WiFiCmdQueue; |
ocomeni | 80:e8f0e92e3ac9 | 50 | |
ocomeni | 80:e8f0e92e3ac9 | 51 | /* Queue and memory pool for WiFi to AT commands */ |
ocomeni | 81:637a87eb8170 | 52 | MemoryPool<at_resp_message_t, 16> *_wiFi2ATmPool; |
ocomeni | 81:637a87eb8170 | 53 | Queue<at_resp_message_t, 16> *_wiFi2ATCmdQueue; |
ocomeni | 80:e8f0e92e3ac9 | 54 | |
ocomeni | 80:e8f0e92e3ac9 | 55 | /* Queue and memory pool for AT to WiFi data */ |
ocomeni | 80:e8f0e92e3ac9 | 56 | MemoryPool<wifi_data_msg_t, 4> *_aT2WiFiDatamPool; |
ocomeni | 80:e8f0e92e3ac9 | 57 | Queue<wifi_data_msg_t, 4> *_aT2WiFiDataQueue; |
ocomeni | 80:e8f0e92e3ac9 | 58 | |
ocomeni | 80:e8f0e92e3ac9 | 59 | |
ocomeni | 80:e8f0e92e3ac9 | 60 | /* Queue and memory pool for WiFi to AT data */ |
ocomeni | 81:637a87eb8170 | 61 | MemoryPool<at_data_msg_t, 4> *_wiFi2ATDatamPool; |
ocomeni | 81:637a87eb8170 | 62 | Queue<at_data_msg_t, 4> *_wiFi2ATDataQueue; |
ocomeni | 81:637a87eb8170 | 63 | |
ocomeni | 81:637a87eb8170 | 64 | //pointer to response data - should be deleted after processing |
ocomeni | 81:637a87eb8170 | 65 | at_data_msg_t *resp_data; |
ocomeni | 80:e8f0e92e3ac9 | 66 | |
ocomeni | 80:e8f0e92e3ac9 | 67 | |
ocomeni | 74:f26e846adfe9 | 68 | // OOB processing |
ocomeni | 74:f26e846adfe9 | 69 | void _process_oob(uint32_t timeout, bool all); |
ocomeni | 74:f26e846adfe9 | 70 | // OOB message handlers |
ocomeni | 74:f26e846adfe9 | 71 | void _oob_startup_hdlr(); |
ocomeni | 81:637a87eb8170 | 72 | void _oob_ok_hdlr(); |
ocomeni | 74:f26e846adfe9 | 73 | void _oob_bleRole_hdlr(); |
ocomeni | 74:f26e846adfe9 | 74 | void _oob_wifiMode_err(); |
ocomeni | 74:f26e846adfe9 | 75 | void _oob_conn_already(); |
ocomeni | 74:f26e846adfe9 | 76 | void _oob_err(); |
ocomeni | 75:08eff6258e1b | 77 | void _oob_echo_off(); |
ocomeni | 75:08eff6258e1b | 78 | void _oob_uart_setup(); |
ocomeni | 75:08eff6258e1b | 79 | void _oob_echo_on(); |
ocomeni | 75:08eff6258e1b | 80 | void _oob_data_mode(); |
ocomeni | 75:08eff6258e1b | 81 | void _oob_get_mac_addr(); |
ocomeni | 75:08eff6258e1b | 82 | void _oob_get_ble_role(); |
ocomeni | 75:08eff6258e1b | 83 | void _oob_ena_ble_peri(); |
ocomeni | 75:08eff6258e1b | 84 | void _oob_reboot(); |
ocomeni | 75:08eff6258e1b | 85 | void _oob_get_fw_ver(); |
ocomeni | 79:a2187bbfa407 | 86 | void _oob_scanWiFiNetworks(); |
ocomeni | 79:a2187bbfa407 | 87 | void _oob_connect2WiFiNetwork(); |
ocomeni | 79:a2187bbfa407 | 88 | void _oob_disconnectWiFiNetwork(); |
ocomeni | 81:637a87eb8170 | 89 | void _oob_setupInternetConnection(); |
ocomeni | 79:a2187bbfa407 | 90 | const char * sec2str(nsapi_security_t sec); |
ocomeni | 79:a2187bbfa407 | 91 | bool queueWiFiCommand(wifi_cmd_t cmd); |
ocomeni | 81:637a87eb8170 | 92 | bool dequeueATresponse(); |
ocomeni | 81:637a87eb8170 | 93 | bool queueWiFiDataRequest(wifi_data_msg_t cmd); |
ocomeni | 81:637a87eb8170 | 94 | bool dequeueATdataResponse(); |
ocomeni | 81:637a87eb8170 | 95 | void processResponses(); |
ocomeni | 81:637a87eb8170 | 96 | bool setNextResponse(at_cmd_resp_t resp); |
ocomeni | 81:637a87eb8170 | 97 | |
ocomeni | 74:f26e846adfe9 | 98 | |
ocomeni | 74:f26e846adfe9 | 99 | /** |
ocomeni | 74:f26e846adfe9 | 100 | * Allows timeout to be changed between commands |
ocomeni | 74:f26e846adfe9 | 101 | * |
ocomeni | 74:f26e846adfe9 | 102 | * @param timeout_ms timeout of the connection |
ocomeni | 74:f26e846adfe9 | 103 | */ |
ocomeni | 74:f26e846adfe9 | 104 | void set_timeout(uint32_t timeout_ms = UBLOX_ODIN_W2_MISC_TIMEOUT); |
ocomeni | 74:f26e846adfe9 | 105 | }; |
ocomeni | 74:f26e846adfe9 | 106 | #endif // __ATCMD_MANAGER_H__ |