this is using the mbed os version 5-13-1

Dependencies:   mbed-http

Committer:
ocomeni
Date:
Wed Apr 17 18:11:45 2019 +0000
Revision:
95:290859010c8c
Parent:
93:06e755a80187
Child:
96:f5ed273881af
response format for the following command implemented:; - AT+UWSCA; - AT+UNSTAT=0; - AT+UWSSTAT

Who changed what in which revision?

UserRevisionLine numberNew 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 83:9c271a50a70b 5 #include <vector>
ocomeni 74:f26e846adfe9 6 #include "ATCmdParser.h"
ocomeni 78:07bb86e3ce14 7 #include "BleManager.h"
ocomeni 78:07bb86e3ce14 8 #include "WiFiManager.h"
ocomeni 74:f26e846adfe9 9
ocomeni 84:7c7add00f4bf 10 #define MAIN_LOOP_WAIT_TIME_MS 100 // milliseconds
ocomeni 75:08eff6258e1b 11 #define NUM_UART_OPTIONS 6
ocomeni 74:f26e846adfe9 12 #ifndef UBLOX_ODIN_W2_MISC_TIMEOUT
ocomeni 74:f26e846adfe9 13 #define UBLOX_ODIN_W2_MISC_TIMEOUT 2000
ocomeni 74:f26e846adfe9 14 #endif
ocomeni 74:f26e846adfe9 15
ocomeni 95:290859010c8c 16 #define OK_RESP "\r\nOK\r\n"
ocomeni 95:290859010c8c 17 #define ERROR_RESP "\r\nERROR\r\n"
ocomeni 84:7c7add00f4bf 18 extern void print_memory_info();
ocomeni 74:f26e846adfe9 19 class ATCmdManager {
ocomeni 74:f26e846adfe9 20 public:
ocomeni 78:07bb86e3ce14 21 ATCmdManager(PinName tx, PinName rx, SMDevicePeripheral *blePeripheral,
ocomeni 79:a2187bbfa407 22 events::EventQueue &event_queue, WiFiManager *wifi,
ocomeni 79:a2187bbfa407 23 MemoryPool<wifi_cmd_message_t, 16> *aT2WiFimPool,
ocomeni 79:a2187bbfa407 24 Queue<wifi_cmd_message_t, 16> *aT2WiFiCmdQueue,
ocomeni 81:637a87eb8170 25 MemoryPool<at_resp_message_t, 16> *wiFi2ATmPool,
ocomeni 81:637a87eb8170 26 Queue<at_resp_message_t, 16> *wiFi2ATCmdQueue,
ocomeni 87:99b37d26ff2a 27 MemoryPool<wifi_data_msg_t, PQDSZ> *aT2WiFiDatamPool,
ocomeni 87:99b37d26ff2a 28 Queue<wifi_data_msg_t, PQDSZ> *aT2WiFiDataQueue,
ocomeni 87:99b37d26ff2a 29 MemoryPool<at_data_msg_t, PQDSZ> *wiFi2ATDatamPool,
ocomeni 87:99b37d26ff2a 30 Queue<at_data_msg_t, PQDSZ> *wiFi2ATDataQueue,
ocomeni 79:a2187bbfa407 31 bool debug = false);
ocomeni 74:f26e846adfe9 32 public:
ocomeni 74:f26e846adfe9 33 void runMain();
ocomeni 74:f26e846adfe9 34
ocomeni 74:f26e846adfe9 35
ocomeni 74:f26e846adfe9 36
ocomeni 74:f26e846adfe9 37 private:
ocomeni 74:f26e846adfe9 38 // UART settings
ocomeni 74:f26e846adfe9 39 UARTSerial _serial;
ocomeni 74:f26e846adfe9 40 Mutex _smutex; // Protect serial port access
ocomeni 74:f26e846adfe9 41 Mutex _rmutex; // Reset protection
ocomeni 79:a2187bbfa407 42 // define event queue
ocomeni 79:a2187bbfa407 43 events::EventQueue &_event_queue;
ocomeni 74:f26e846adfe9 44 // AT Command Parser
ocomeni 74:f26e846adfe9 45 ATCmdParser _parser;
ocomeni 78:07bb86e3ce14 46 SMDevicePeripheral *blePeripheral;
ocomeni 79:a2187bbfa407 47 WiFiManager *wiFiManager;
ocomeni 81:637a87eb8170 48 at_cmd_resp_t at_resp;
ocomeni 81:637a87eb8170 49 at_data_mode_t dataMode;
ocomeni 80:e8f0e92e3ac9 50 /* Queue and memory pool for AT to Wifi commands */
ocomeni 79:a2187bbfa407 51 MemoryPool<wifi_cmd_message_t, 16> *_aT2WiFimPool;
ocomeni 79:a2187bbfa407 52 Queue<wifi_cmd_message_t, 16> *_aT2WiFiCmdQueue;
ocomeni 80:e8f0e92e3ac9 53
ocomeni 80:e8f0e92e3ac9 54 /* Queue and memory pool for WiFi to AT commands */
ocomeni 81:637a87eb8170 55 MemoryPool<at_resp_message_t, 16> *_wiFi2ATmPool;
ocomeni 81:637a87eb8170 56 Queue<at_resp_message_t, 16> *_wiFi2ATCmdQueue;
ocomeni 80:e8f0e92e3ac9 57
ocomeni 80:e8f0e92e3ac9 58 /* Queue and memory pool for AT to WiFi data */
ocomeni 87:99b37d26ff2a 59 MemoryPool<wifi_data_msg_t, PQDSZ> *_aT2WiFiDatamPool;
ocomeni 87:99b37d26ff2a 60 Queue<wifi_data_msg_t, PQDSZ> *_aT2WiFiDataQueue;
ocomeni 80:e8f0e92e3ac9 61
ocomeni 80:e8f0e92e3ac9 62
ocomeni 80:e8f0e92e3ac9 63 /* Queue and memory pool for WiFi to AT data */
ocomeni 87:99b37d26ff2a 64 MemoryPool<at_data_msg_t, PQDSZ> *_wiFi2ATDatamPool;
ocomeni 87:99b37d26ff2a 65 Queue<at_data_msg_t, PQDSZ> *_wiFi2ATDataQueue;
ocomeni 81:637a87eb8170 66
ocomeni 81:637a87eb8170 67 //pointer to response data - should be deleted after processing
ocomeni 81:637a87eb8170 68 at_data_msg_t *resp_data;
ocomeni 83:9c271a50a70b 69 edm_header_t edm_hdr;
ocomeni 83:9c271a50a70b 70 uint8_t *rx_buf_ptr;
ocomeni 80:e8f0e92e3ac9 71
ocomeni 74:f26e846adfe9 72 // OOB processing
ocomeni 74:f26e846adfe9 73 void _process_oob(uint32_t timeout, bool all);
ocomeni 74:f26e846adfe9 74 // OOB message handlers
ocomeni 74:f26e846adfe9 75 void _oob_startup_hdlr();
ocomeni 81:637a87eb8170 76 void _oob_ok_hdlr();
ocomeni 74:f26e846adfe9 77 void _oob_bleRole_hdlr();
ocomeni 74:f26e846adfe9 78 void _oob_wifiMode_err();
ocomeni 74:f26e846adfe9 79 void _oob_conn_already();
ocomeni 74:f26e846adfe9 80 void _oob_err();
ocomeni 75:08eff6258e1b 81 void _oob_echo_off();
ocomeni 75:08eff6258e1b 82 void _oob_uart_setup();
ocomeni 75:08eff6258e1b 83 void _oob_echo_on();
ocomeni 75:08eff6258e1b 84 void _oob_data_mode();
ocomeni 75:08eff6258e1b 85 void _oob_get_mac_addr();
ocomeni 75:08eff6258e1b 86 void _oob_get_ble_role();
ocomeni 75:08eff6258e1b 87 void _oob_ena_ble_peri();
ocomeni 75:08eff6258e1b 88 void _oob_reboot();
ocomeni 75:08eff6258e1b 89 void _oob_get_fw_ver();
ocomeni 79:a2187bbfa407 90 void _oob_scanWiFiNetworks();
ocomeni 95:290859010c8c 91 void _oob_WiFiStationConfigurationAction();
ocomeni 79:a2187bbfa407 92 void _oob_disconnectWiFiNetwork();
ocomeni 81:637a87eb8170 93 void _oob_setupInternetConnection();
ocomeni 82:10072c1794d3 94 void _oob_setWiFiSSID();
ocomeni 82:10072c1794d3 95 void _oob_setWiFiPWD();
ocomeni 82:10072c1794d3 96 void _oob_setWiFiSecurity();
ocomeni 83:9c271a50a70b 97 void _oob_sendHttpMessage();
ocomeni 95:290859010c8c 98 void _oob_getNetworkStatus();
ocomeni 95:290859010c8c 99 void _oob_WiFiNetworkStatus();
ocomeni 82:10072c1794d3 100 wifi_config_t init_wifi_config();
ocomeni 79:a2187bbfa407 101 const char * sec2str(nsapi_security_t sec);
ocomeni 87:99b37d26ff2a 102 bool queueWiFiCommand(wifi_cmd_t cmd);
ocomeni 87:99b37d26ff2a 103 bool dequeueATresponse();
ocomeni 87:99b37d26ff2a 104 bool queueWiFiDataRequest(wifi_data_msg_t cmd);
ocomeni 87:99b37d26ff2a 105 bool dequeueWiFidataResponse();
ocomeni 87:99b37d26ff2a 106 void processResponses();
ocomeni 87:99b37d26ff2a 107 bool setNextResponse(at_cmd_resp_t resp);
ocomeni 87:99b37d26ff2a 108 int ReadBytes(uint8_t *buf, int maxBytes);
ocomeni 87:99b37d26ff2a 109 int readStringBytes(uint8_t *buf, int maxBytes);
ocomeni 87:99b37d26ff2a 110 bool validate(edm_header_t edm_header);
ocomeni 87:99b37d26ff2a 111 bool createHttpRequest();
ocomeni 84:7c7add00f4bf 112 http_method str2HttpMethod(const char * methodStr);
ocomeni 89:45f6db09a76d 113 void return_response(bool download=false);
ocomeni 89:45f6db09a76d 114 void printBufferInHex(uint8_t *buf, int pLen);
ocomeni 90:ed0267eca7b5 115 void outputEDMdata(const uint8_t *buf, int pLen,
ocomeni 91:d6b6319ad681 116 edm_msg_id_t identifier, edm_msg_type_t type,
ocomeni 91:d6b6319ad681 117 channel_id_t channel_id);
ocomeni 74:f26e846adfe9 118
ocomeni 93:06e755a80187 119 void sendAtConfirmation(const char *buf);
ocomeni 93:06e755a80187 120 void sendAtEvent(const char *buf);
ocomeni 93:06e755a80187 121
ocomeni 74:f26e846adfe9 122 /**
ocomeni 74:f26e846adfe9 123 * Allows timeout to be changed between commands
ocomeni 74:f26e846adfe9 124 *
ocomeni 74:f26e846adfe9 125 * @param timeout_ms timeout of the connection
ocomeni 74:f26e846adfe9 126 */
ocomeni 74:f26e846adfe9 127 void set_timeout(uint32_t timeout_ms = UBLOX_ODIN_W2_MISC_TIMEOUT);
ocomeni 74:f26e846adfe9 128 };
ocomeni 74:f26e846adfe9 129 #endif // __ATCMD_MANAGER_H__