
this is using the mbed os version 5-13-1
source/ATCmdManager.h
- Committer:
- ocomeni
- Date:
- 2019-07-19
- Branch:
- PassingRegression
- Revision:
- 129:590bdc2dcf5b
- Parent:
- 127:a21788227ca6
File content as of revision 129:590bdc2dcf5b:
#ifndef __ATCMD_MANAGER_H__ #define __ATCMD_MANAGER_H__ #include <events/mbed_events.h> #include <mbed.h> #include <vector> #include "ATCmdParser.h" #include "BleManager.h" #include "WiFiManager.h" #include "common_config.h" #define NUM_UART_OPTIONS 6 #ifndef UBLOX_ODIN_W2_MISC_TIMEOUT #define UBLOX_ODIN_W2_MISC_TIMEOUT 2000 #endif #define OK_RESP "\r\nOK\r\n" #define ERROR_RESP "\r\nERROR\r\n" #define WIFI_BUSY_RESP "\r\nWIFI BUSY\r\n" #define UART_TIMEOUT_ERROR "\r\nUART TIMEOUT ERROR\r\n" #define MEMORY_ALLOCATION_ERROR "\r\nMEMORY ALLOCATION ERROR\r\n" #define BOX_UBLOX_DEMO_TESTING //extern void print_memory_info(); //extern void blinkLEDs(); class ATCmdManager { public: ATCmdManager(PinName tx, PinName rx, uart_config_t *uart_config, events::EventQueue &event_queue, WiFiManager *wifi, MemoryPool<wifi_cmd_message_t, 16> *aT2WiFimPool, Queue<wifi_cmd_message_t, 16> *aT2WiFiCmdQueue, MemoryPool<at_resp_message_t, 16> *wiFi2ATmPool, Queue<at_resp_message_t, 16> *wiFi2ATCmdQueue, MemoryPool<wifi_data_msg_t, PQDSZ> *aT2WiFiDatamPool, Queue<wifi_data_msg_t, PQDSZ> *aT2WiFiDataQueue, MemoryPool<at_data_msg_t, PQDSZ> *wiFi2ATDatamPool, Queue<at_data_msg_t, PQDSZ> *wiFi2ATDataQueue, MemoryPool<at_ble_msg_t, PQDSZ_BLE> *aT2BleDatamPool, Queue<at_ble_msg_t, PQDSZ_BLE> *aT2BleDataQueue, MemoryPool<ble_at_msg_t, PQDSZ_BLE> *ble2ATDatamPool, Queue<ble_at_msg_t, PQDSZ_BLE> *ble2ATDataQueue, startup_config_t *startup_config, bool debug = false); public: void runMain(); private: // UART settings UARTSerial _serial; uart_config_t *uart_config; Mutex _smutex; // Protect serial port access Mutex _rmutex; // Reset protection // define event queue events::EventQueue &_event_queue; // AT Command Parser SMDevicePeripheral *blePeripheral; WiFiManager *wiFiManager; at_cmd_resp_t at_resp; at_data_mode_t dataMode; uint32_t lastHttpRespTime; uint8_t lastCloudMsgType; /* Queue and memory pool for AT to Wifi commands */ MemoryPool<wifi_cmd_message_t, 16> *_aT2WiFimPool; Queue<wifi_cmd_message_t, 16> *_aT2WiFiCmdQueue; /* Queue and memory pool for WiFi to AT commands */ MemoryPool<at_resp_message_t, 16> *_wiFi2ATmPool; Queue<at_resp_message_t, 16> *_wiFi2ATCmdQueue; /* Queue and memory pool for AT to WiFi data */ MemoryPool<wifi_data_msg_t, PQDSZ> *_aT2WiFiDatamPool; Queue<wifi_data_msg_t, PQDSZ> *_aT2WiFiDataQueue; /* Queue and memory pool for WiFi to AT data */ MemoryPool<at_data_msg_t, PQDSZ> *_wiFi2ATDatamPool; Queue<at_data_msg_t, PQDSZ> *_wiFi2ATDataQueue; /* Queue and memory pool for AT to BLE data */ MemoryPool<at_ble_msg_t, PQDSZ_BLE> *_aT2BleDatamPool; Queue<at_ble_msg_t, PQDSZ_BLE> *_aT2BleDataQueue; /* Queue and memory pool for BLE to AT data */ MemoryPool<ble_at_msg_t, PQDSZ_BLE> *_ble2ATDatamPool; Queue<ble_at_msg_t, PQDSZ_BLE> *_ble2ATDataQueue; ATCmdParser _parser; //pointer to wifi response data - should be deleted after processing at_data_msg_t *resp_data; //pointer to ble response data - should be deleted after processing ble_at_msg_t *ble_resp_data; edm_header_t edm_hdr; uint8_t *rx_buf_ptr; startup_config_t *startup_config; int debug_flags_map; at_cmd_resp_t wifiStateControl; #ifdef BOX_UBLOX_DEMO_TESTING bool check_for_at_cmd; #endif // OOB processing void _process_oob(uint32_t timeout, bool all); // OOB message handlers void _oob_startup_hdlr(); void _oob_ok_hdlr(); void _oob_bleRole_hdlr(); void _oob_enable_wifi(); void _oob_wifiMode_err(); void _oob_conn_already(); void _oob_err(); void _oob_echo_off(); void _oob_uart_setup(); void _oob_echo_on(); void _oob_debug_logs_on(); void _oob_debug_logs_off(); void _oob_set_debug_flag(); void _oob_data_mode(); void _oob_get_mac_addr(); void _oob_get_ble_role(); void _oob_ena_ble_peri(); void _oob_get_ble_name(); void _oob_reboot(); void _oob_get_fw_ver(); void _oob_saveSettings_hdlr(); void _oob_scanWiFiNetworks(); void _oob_WiFiStationConfigAction(); void _oob_disconnectWiFiNetwork(); void _oob_setupInternetConnection(); void _oob_factoryReset(); void _oob_deleteConfiguration(); void _oob_setWiFiSSID(); void _oob_setWiFiPWD(); void _oob_setWiFiSecurity(); void _oob_sendHttpMessage(); void _oob_getNetworkStatus(); void _oob_WiFiNetworkStatus(); wifi_config_t init_wifi_config(); const char * sec2str(nsapi_security_t sec); bool queueWiFiCommand(wifi_cmd_t cmd); bool dequeueATresponse(); bool queueWiFiDataRequest(wifi_data_msg_t cmd); bool dequeueWiFidataResponse(); void processResponses(); bool setNextResponse(at_cmd_resp_t resp); int ReadBytes(uint8_t *buf, int maxBytes); int readStringBytes(uint8_t *buf, int maxBytes); bool validate(edm_header_t edm_header); bool createHttpRequest(); http_method str2HttpMethod(const char * methodStr); void return_response(bool download=false); void printBufferInHex(const uint8_t *buf, int pLen); void outputEDMdata(const uint8_t *buf, int pLen, edm_msg_id_t identifier, edm_msg_type_t type, channel_id_t channel_id); void sendAtConfirmation(const char *buf); void sendAtConfirmationFreeMpool(const char *buf); void sendConnectIndicationFreeMpool(const char *buf); void sendAtEvent(const char *buf); void sendConnectEvent(const uint8_t *buf, int len); int readAtCommandString(char *strbuf, size_t bufLen); void updateWiFiMgrStatus(); void sendBleDataEvent(const char *buf, int len); void sendBleAtEvent(const char *buf, int len); void sendBleConnectEvent(const char *buf, int len); void sendBleDisconnectEvent(); bool dequeueBleDataResponse(); bool queueBleDataRequest(at_ble_msg_t data_req); void filterHttpResponse(); int readEDMmodeBytes(uint8_t *rx_buf_ptr, int pLen); /** * Allows timeout to be changed between commands * * @param timeout_ms timeout of the connection */ void set_timeout(uint32_t timeout_ms = UBLOX_ODIN_W2_MISC_TIMEOUT); }; #endif // __ATCMD_MANAGER_H__