Okundu Omeni
/
wifi-https-ble-sm-uart-atcmd-5-13-1
this is using the mbed os version 5-13-1
Diff: source/ATCmdManager.cpp
- Revision:
- 75:08eff6258e1b
- Parent:
- 74:f26e846adfe9
- Child:
- 78:07bb86e3ce14
--- a/source/ATCmdManager.cpp Sun Mar 10 09:46:06 2019 +0000 +++ b/source/ATCmdManager.cpp Thu Mar 14 21:34:06 2019 +0000 @@ -11,8 +11,23 @@ _serial.set_baud(DEFAULT_BAUD_RATE); _parser.debug_on(debug); _parser.set_delimiter("\r\n"); - _parser.oob("ATE0", callback(this, &ATCmdManager::_oob_startup_hdlr)); + _parser.send("+STARTUP"); + _parser.oob("ATE0", callback(this, &ATCmdManager::_oob_echo_off)); + _parser.oob("ATE1", callback(this, &ATCmdManager::_oob_echo_on)); + _parser.oob("AT+UMRS", callback(this, &ATCmdManager::_oob_uart_setup)); + + _parser.oob("ATO", callback(this, &ATCmdManager::_oob_data_mode)); + _parser.oob("AT+UMLA", callback(this, &ATCmdManager::_oob_get_mac_addr)); + _parser.oob("AT+UBTLE?", callback(this, &ATCmdManager::_oob_get_ble_role)); + _parser.oob("AT+UBTLE=2", callback(this, &ATCmdManager::_oob_ena_ble_peri)); + _parser.oob("AT+CPWROFF", callback(this, &ATCmdManager::_oob_reboot)); + _parser.oob("AT+CGMR", callback(this, &ATCmdManager::_oob_get_fw_ver)); + + + //_parser.oob("ATE0", callback(this, &ATCmdManager::_oob_startup_hdlr)); printf("\n --- ATCmdManager constructor completed ---\n"); + + //AT+UMRS=230400,2,8,1,1,1 // AT+UBTLE } @@ -56,8 +71,122 @@ void ATCmdManager::_oob_err(){ } +void ATCmdManager::_oob_uart_setup(){ + int uOpts[NUM_UART_OPTIONS]; + //if(_parser.recv("=%d,%d,%d,%d,%d,%d", &uOpts[0], &uOpts[1], &uOpts[2], &uOpts[3], &uOpts[4], &uOpts[5])) { + if(_parser.scanf("=%d,%d,%d,%d,%d,%d", &uOpts[0], &uOpts[1], &uOpts[2], &uOpts[3], &uOpts[4], &uOpts[5]) >0) { + printf("\nATCmdParser: Uart Options=%d,%d,%d,%d,%d,%d\n", uOpts[0], uOpts[1], uOpts[2], uOpts[3], uOpts[4], uOpts[5]); + } else { + printf("\nATCmdParser: Retrieving Uart Options failed"); + } +} + void ATCmdManager::set_timeout(uint32_t timeout_ms) { _parser.set_timeout(timeout_ms); } + +void ATCmdManager::_oob_echo_off() +{ + _smutex.lock(); + printf("\n Received ATEO OOB command!!\n"); + printf("\n turning echo OFF!!\n"); + _parser.debug_on(false); + _parser.send("OK\n"); + _smutex.unlock(); +} + + +void ATCmdManager::_oob_echo_on() +{ + _smutex.lock(); + printf("\n Received ATE1 OOB command!!\n"); + printf("\n turning echo ON!!\n"); + _parser.debug_on(true); + _parser.send("OK\n"); + _smutex.unlock(); +} + + +void ATCmdManager::_oob_data_mode(){ + int dataMode; + _smutex.lock(); + printf("\n Received EDM mode command!!\n"); + if(_parser.scanf("%d", &dataMode) >0) { + printf("\nATCmdParser: Data mode=%d\n", dataMode); + switch(dataMode) + { + case 0: + printf("\nATCmdParser: Command Mode request received"); + break; + case 1: + printf("\nATCmdParser: Data Mode request received"); + break; + case 2: + printf("\nATCmdParser: Extended data Mode request received"); + break; + default: + printf("\nATCmdParser: ERROR - UNKNOWN DATA MODE RECEIVED!!! \n"); + break; + } + } else { + printf("\nATCmdParser: Retrieving Uart Options failed"); + } + _parser.send("OK\n"); + _smutex.unlock(); +} + +void ATCmdManager::_oob_get_mac_addr(){ + int bleOrWifi; + _smutex.lock(); + if(_parser.scanf("=%d", &bleOrWifi) >0) { + switch(bleOrWifi) + { + case 1: + printf("\nATCmdParser: BLE MAC Address request received"); + break; + case 2: + printf("\nATCmdParser: WiFi MAC Address request received"); + break; + default: + printf("\nATCmdParser: ERROR - UNKNOWN MAC ADDRESS REQUEST RECEIVED!!! \n"); + break; + } + } else { + printf("\nATCmdParser: Retrieving Uart Options failed"); + } + _parser.send("OK\n"); + _smutex.unlock(); +} + +void ATCmdManager::_oob_get_ble_role(){ + _smutex.lock(); + printf("\n Received get BLE role command!!\n"); + _parser.send("OK\n"); + _smutex.unlock(); +} + +void ATCmdManager::_oob_ena_ble_peri(){ + _smutex.lock(); + printf("\n Received enable BLE Peripheral command!!\n"); + _parser.send("OK\n"); + _smutex.unlock(); +} + +void ATCmdManager::_oob_reboot(){ + _smutex.lock(); + printf("\n Received reboot command!!\n"); + _parser.send("OK\n"); + _parser.send("System Resetting....\n"); + system_reset(); + _smutex.unlock(); +} + +void ATCmdManager::_oob_get_fw_ver(){ + _smutex.lock(); + printf("\n Received Firmware Version command!!\n"); + _parser.send("OK\n"); + _smutex.unlock(); +} +