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

Dependencies:   mbed-http

Committer:
ocomeni
Date:
Thu Mar 21 22:17:28 2019 +0000
Revision:
80:e8f0e92e3ac9
Parent:
79:a2187bbfa407
Child:
81:637a87eb8170
implemented queue and memory pools for command and data passing between ATCmdManager and WiFiManager classes

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 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 80:e8f0e92e3ac9 22 MemoryPool<wifi_cmd_message_t, 16> *wiFi2ATmPool,
ocomeni 80:e8f0e92e3ac9 23 Queue<wifi_cmd_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 80:e8f0e92e3ac9 26 MemoryPool<wifi_data_msg_t, 4> *wiFi2ATDatamPool,
ocomeni 80:e8f0e92e3ac9 27 Queue<wifi_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 80:e8f0e92e3ac9 45
ocomeni 80:e8f0e92e3ac9 46
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 80:e8f0e92e3ac9 52 MemoryPool<wifi_cmd_message_t, 16> *_wiFi2ATmPool;
ocomeni 80:e8f0e92e3ac9 53 Queue<wifi_cmd_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 80:e8f0e92e3ac9 61 MemoryPool<wifi_data_msg_t, 4> *_wiFi2ATDatamPool;
ocomeni 80:e8f0e92e3ac9 62 Queue<wifi_data_msg_t, 4> *_wiFi2ATDataQueue;
ocomeni 80:e8f0e92e3ac9 63
ocomeni 80:e8f0e92e3ac9 64
ocomeni 74:f26e846adfe9 65 // OOB processing
ocomeni 74:f26e846adfe9 66 void _process_oob(uint32_t timeout, bool all);
ocomeni 74:f26e846adfe9 67 // OOB message handlers
ocomeni 74:f26e846adfe9 68 void _oob_startup_hdlr();
ocomeni 74:f26e846adfe9 69 void _oob_bleRole_hdlr();
ocomeni 74:f26e846adfe9 70 void _oob_wifiMode_err();
ocomeni 74:f26e846adfe9 71 void _oob_conn_already();
ocomeni 74:f26e846adfe9 72 void _oob_err();
ocomeni 75:08eff6258e1b 73 void _oob_echo_off();
ocomeni 75:08eff6258e1b 74 void _oob_uart_setup();
ocomeni 75:08eff6258e1b 75 void _oob_echo_on();
ocomeni 75:08eff6258e1b 76 void _oob_data_mode();
ocomeni 75:08eff6258e1b 77 void _oob_get_mac_addr();
ocomeni 75:08eff6258e1b 78 void _oob_get_ble_role();
ocomeni 75:08eff6258e1b 79 void _oob_ena_ble_peri();
ocomeni 75:08eff6258e1b 80 void _oob_reboot();
ocomeni 75:08eff6258e1b 81 void _oob_get_fw_ver();
ocomeni 79:a2187bbfa407 82 void _oob_scanWiFiNetworks();
ocomeni 79:a2187bbfa407 83 void _oob_connect2WiFiNetwork();
ocomeni 79:a2187bbfa407 84 void _oob_disconnectWiFiNetwork();
ocomeni 79:a2187bbfa407 85 const char * sec2str(nsapi_security_t sec);
ocomeni 79:a2187bbfa407 86 bool queueWiFiCommand(wifi_cmd_t cmd);
ocomeni 74:f26e846adfe9 87
ocomeni 74:f26e846adfe9 88 /**
ocomeni 74:f26e846adfe9 89 * Allows timeout to be changed between commands
ocomeni 74:f26e846adfe9 90 *
ocomeni 74:f26e846adfe9 91 * @param timeout_ms timeout of the connection
ocomeni 74:f26e846adfe9 92 */
ocomeni 74:f26e846adfe9 93 void set_timeout(uint32_t timeout_ms = UBLOX_ODIN_W2_MISC_TIMEOUT);
ocomeni 74:f26e846adfe9 94 };
ocomeni 74:f26e846adfe9 95 #endif // __ATCMD_MANAGER_H__