Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 123:a49e9ffbaca6, committed 2019-06-14
- Comitter:
- ocomeni
- Date:
- Fri Jun 14 21:13:46 2019 +0000
- Branch:
- PassingRegression
- Parent:
- 122:62166886db5f
- Child:
- 124:eae4512b131b
- Commit message:
- Implemented the following features:; 1. FW version; 2. BLE MAC address; 3. BLE name; 4. WiFi MAC address; Not fully tested
Changed in this revision
--- a/source/ATCmdManager.cpp Tue Jun 11 20:23:43 2019 +0000
+++ b/source/ATCmdManager.cpp Fri Jun 14 21:13:46 2019 +0000
@@ -70,8 +70,8 @@
_parser.oob("AT+UWSCAN", callback(this, &ATCmdManager::_oob_scanWiFiNetworks));
_parser.oob("AT+UWSCA=", callback(this, &ATCmdManager::_oob_WiFiStationConfigAction));
- _parser.oob("AT+UMLA=", callback(this, &ATCmdManager::_oob_ok_hdlr));
- _parser.oob("AT+UBTLN", callback(this, &ATCmdManager::_oob_ok_hdlr));
+ _parser.oob("AAT+UBTLN?", callback(this, &ATCmdManager::_oob_get_ble_name));
+ _parser.oob("AT+UBTLN=", callback(this, &ATCmdManager::_oob_ok_hdlr));
_parser.oob("AT+UBTSM?", callback(this, &ATCmdManager::_oob_ok_hdlr));
_parser.oob("AT+UBTPM", callback(this, &ATCmdManager::_oob_ok_hdlr));
@@ -301,12 +301,37 @@
}
case BLE_DISCONNECT_EVENT:
{
- // AT Event state
+ // BLE_DISCONNECT_EVENT state
dbg_printf(LOG, "\n [ATCMD MAN] BLE_DISCONNECT_EVENT RECEIVED!!\r\n");
sendBleDisconnectEvent();
at_resp = AT_RESP_NONE;
break;
}
+ case AT_WIFI_MAC_RESP:
+ // AT_WIFI_MAC_RESP response state
+ dbg_printf(LOG, "\n [ATCMD MAN] AT_WIFI_MAC_RESP RESPONSE RECEIVED!!\r\n");
+ respStr = (char *) resp_data->buffer;
+ sendAtConfirmationFreeMpool(respStr);
+ at_resp = AT_RESP_NONE;
+ break;
+ case AT_BLE_MAC_RESP:
+ // AT_BLE_MAC_RESP response state
+ dbg_printf(LOG, "\n [ATCMD MAN] AT_BLE_MAC_RESP RESPONSE RECEIVED!!\r\n");
+ respStr = (char *) ble_resp_data->buffer;
+ sendAtConfirmation(respStr);
+ _ble2ATDatamPool->free(ble_resp_data);
+ ble_resp_data = NULL;
+ at_resp = AT_RESP_NONE;
+ break;
+ case AT_BLE_NAME_RESP:
+ // AT_BLE_MAC_RESP response state
+ dbg_printf(LOG, "\n [ATCMD MAN] AT_BLE_NAME_RESP RESPONSE RECEIVED!!\r\n");
+ respStr = (char *) ble_resp_data->buffer;
+ sendAtConfirmation(respStr);
+ _ble2ATDatamPool->free(ble_resp_data);
+ ble_resp_data = NULL;
+ at_resp = AT_RESP_NONE;
+ break;
default:
//UNKNOWN response state
dbg_printf(LOG, "\n [ATCMD MAN] UNKNOWN RESPONSE RECEIVED!!\r\n");
@@ -750,8 +775,13 @@
void ATCmdManager::_oob_get_fw_ver()
{
#ifdef MBED_MAJOR_VERSION
- char * fw_ver_str = new char[20];
- sprintf(fw_ver_str, "Mbed OS version %d.%d.%d.0\n\n", MBED_MAJOR_VERSION, MBED_MINOR_VERSION, MBED_PATCH_VERSION);
+ char * fw_ver_str = new char[40];
+ sprintf(fw_ver_str, "API version:%d.%d.%d.%d.%d.%d\n\n", MBED_MAJOR_VERSION
+ , MBED_MINOR_VERSION
+ , MBED_PATCH_VERSION
+ , API_MAJOR_VERSION
+ , API_MINOR_VERSION
+ , API_BUILD_NUMBER);
sendAtConfirmation(fw_ver_str);
delete fw_ver_str;
#endif
@@ -861,9 +891,16 @@
{
case 1:
dbg_printf(LOG, "\nATCmdParser: BLE MAC Address request received");
+ at_ble_msg_t data_req;
+ data_req.ble_cmd = BLE_CMD_MAC_ADDR;
+ // queue next BLE command
+ queueBleDataRequest(data_req);
break;
case 2:
- dbg_printf(LOG, "\nATCmdParser: WiFi MAC Address request received");
+ dbg_printf(LOG, "\nATCmdParser: WiFi MAC Address request received");
+ wifi_cmd_t cmd = WIFI_CMD_WIFI_MAC_ADDR;
+ // queue next command
+ queueWiFiCommand(cmd);
break;
default:
dbg_printf(LOG, "\nATCmdParser: ERROR - UNKNOWN MAC ADDRESS REQUEST RECEIVED!!! \n");
@@ -875,6 +912,16 @@
sendAtConfirmation(OK_RESP); //_parser.send(OK_RESP);
}
+
+void ATCmdManager::_oob_get_ble_name()
+{
+ dbg_printf(LOG, "\nATCmdParser: BLE CMD DEVICE_NAME request received");
+ at_ble_msg_t data_req;
+ data_req.ble_cmd = BLE_CMD_DEVICE_NAME;
+ // queue next BLE command
+ queueBleDataRequest(data_req);
+}
+
void ATCmdManager::_oob_get_ble_role(){
trigger_start_BLE();
dbg_printf(LOG, "\n Received get BLE role command!!\n");
@@ -1292,7 +1339,7 @@
bleData->dataLen = data_req.dataLen;
memcpy(bleData->buffer, data_req.buffer, data_req.dataLen);
_aT2BleDataQueue->put(bleData);
- dbg_printf(LOG, "[ATCMD MAN] queued BLE data size = %d : wifi_cmd = %d\n", data_req.dataLen, data_req.ble_cmd);
+ dbg_printf(LOG, "[ATCMD MAN] queued BLE data size = %d : ble_cmd = %d\n", data_req.dataLen, data_req.ble_cmd);
return true;
}
--- a/source/ATCmdManager.h Tue Jun 11 20:23:43 2019 +0000
+++ b/source/ATCmdManager.h Fri Jun 14 21:13:46 2019 +0000
@@ -117,6 +117,7 @@
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();
--- a/source/BleManager.cpp Tue Jun 11 20:23:43 2019 +0000
+++ b/source/BleManager.cpp Fri Jun 14 21:13:46 2019 +0000
@@ -605,6 +605,8 @@
sendATresponseBytes(BLE_DISCONNECT_EVENT);
}
+
+
void SMDevicePeripheral::processQueues()
{
dequeueATdataResponse();
@@ -626,6 +628,44 @@
bleCmd = BLE_CMD_NONE;
break;
}
+ case BLE_CMD_MAC_ADDR:
+ {
+ // send BLE MAC_ADDR
+ _aT2BleDatamPool->free(data_msg);
+ at_data_resp = new ble_at_msg_t;
+ char * respStr = (char *)at_data_resp->buffer;
+ /* print device address */
+ Gap::AddressType_t addr_type;
+ Gap::Address_t addr;
+ _ble.gap().getAddress(&addr_type, addr);
+ //dbg_printf(LOG, "Device address: %02x:%02x:%02x:%02x:%02x:%02x\r\n",
+ // addr[5], addr[4], addr[3], addr[2], addr[1], addr[0]);
+ sprintf(respStr, "\r\n%s%d,%02X%02X%02X%02X%02X%02X\r\n", LOCAL_ADDRESS_RESP
+ , BLE_IF_ID
+ , addr[5]
+ , addr[4]
+ , addr[3]
+ , addr[2]
+ , addr[1]
+ , addr[0]
+ );
+ at_data_resp->dataLen = strlen(respStr); // get bytes total
+ sendATresponseBytes(AT_BLE_MAC_RESP);
+ bleCmd = BLE_CMD_NONE;
+ break;
+ }
+ case BLE_CMD_DEVICE_NAME:
+ {
+ // send BLE_CMD_DEVICE_NAME
+ _aT2BleDatamPool->free(data_msg);
+ at_data_resp = new ble_at_msg_t;
+ char * respStr = (char *)at_data_resp->buffer;
+ sprintf(respStr, "\r\n%s%s\r\n", BLE_DEVICE_NAME_RESP, ble_config->deviceName);
+ at_data_resp->dataLen = strlen(respStr); // get bytes total
+ sendATresponseBytes(AT_BLE_NAME_RESP);
+ bleCmd = BLE_CMD_NONE;
+ break;
+ }
case BLE_CMD_SEND_RX_DATA_2AT:
sendATresponseBytes(AT_BLE_RESPONSE);
bleCmd = BLE_CMD_NONE;
--- a/source/WiFiManager.cpp Tue Jun 11 20:23:43 2019 +0000
+++ b/source/WiFiManager.cpp Fri Jun 14 21:13:46 2019 +0000
@@ -49,7 +49,8 @@
wifiWatchdogTimer.start();
watchdogCnt = 0;
//_event_queue.call_every(10000, this, &WiFiManager::callWifiWatchDog);
- keep_alive_id = _event_queue.call_every(CLOUD_KEEP_ALIVE_INTERVAL, this, &WiFiManager::callInternetKeepAlive);
+ //keep_alive_id = _event_queue.call_every(CLOUD_KEEP_ALIVE_INTERVAL, this, &WiFiManager::callInternetKeepAlive);
+ keep_alive_id = 0;
//watchDogTick.attach(callback(this, &WiFiManager::callWifiWatchDogIsr), 10.0); // call flip function every 10 seconds
}
@@ -122,6 +123,7 @@
https_connection_active = false;
socket->close();
delete socket;
+ socket = NULL;
return;
}
@@ -344,7 +346,10 @@
case WIFI_CMD_SEND_HTTPS_REQ:
{
// cancel keep alive event as not needed since new request has come in.
- _event_queue.cancel(keep_alive_id);
+ if(keep_alive_id != 0) // only cancel if it has been activated
+ {
+ _event_queue.cancel(keep_alive_id);
+ }
wifiBusy = 1;
#ifdef SEND_DEBUG_MESSAGES
if(outputBuffersAvailable())
@@ -423,6 +428,8 @@
if(https_connection_active == false)
{
queueATresponse(AT_SOCKET_KEEP_ALIVE_FAILED);
+ delete socket;
+ socket = NULL;
}
}
wifiCmd = WIFI_CMD_NONE;
@@ -435,6 +442,16 @@
wifiCmd = WIFI_CMD_NONE;
wifiBusy = 0;
break;
+ case WIFI_CMD_WIFI_MAC_ADDR:
+ wifiBusy = 1;
+ if(outputBuffersAvailable())
+ {
+ getWiFiMACaddress();
+ sendATresponseString(AT_WIFI_MAC_RESP);
+ }
+ wifiCmd = WIFI_CMD_NONE;
+ wifiBusy = 0;
+ break;
case WIFI_CMD_SEND_HTTP_REQ:
break;
default:
@@ -796,6 +813,13 @@
sprintf(nextStrPtr, "%s", UDDRP_WRITE_OK);
}
+void WiFiManager::getWiFiMACaddress()
+{
+ responseString = (char *) malloc(100);
+ sprintf(responseString, "\r\n%s%d,%s\r\n", LOCAL_ADDRESS_RESP,
+ WIFI_IF_ID,
+ network->get_mac_address());
+}
void WiFiManager::getWiFiStatus(){
--- a/source/WiFiManager.h Tue Jun 11 20:23:43 2019 +0000
+++ b/source/WiFiManager.h Fri Jun 14 21:13:46 2019 +0000
@@ -106,6 +106,7 @@
http_result_t http_result;
bool use_full_hostname;
int keep_alive_id;
+
#ifdef DNANUDGE_DEBUG
rtos::Semaphore callback_semaphore;
#endif
@@ -149,6 +150,7 @@
void sendATresponseBytes(at_cmd_resp_t at_cmd, int len);
void getNetworkStatus();
void getWiFiStatus();
+ void getWiFiMACaddress();
void status_callback_event(nsapi_event_t status, intptr_t param);
void gethostbyname_callback(nsapi_error_t res, SocketAddress *addr);
void gethostbyname();
--- a/source/common_config.h Tue Jun 11 20:23:43 2019 +0000 +++ b/source/common_config.h Fri Jun 14 21:13:46 2019 +0000 @@ -50,6 +50,10 @@ #define CLOUD_RETRY_TIME_MS 10000 #define MAX_BLE_POOL_DATA_SIZE 40 #define BLE_PROCESS_QUEUES_INTERVAL_MS 200 // check BLE queues every 200 ms +#define BLE_IF_ID 1 +#define WIFI_IF_ID 2 +#define LOCAL_ADDRESS_RESP "+UMLA:" +#define BLE_DEVICE_NAME_RESP "+UBTLN:" //#define ENABLE_MEMORY_CHECKS //#define SEND_DEBUG_MESSAGES
--- a/source/common_types.h Tue Jun 11 20:23:43 2019 +0000
+++ b/source/common_types.h Fri Jun 14 21:13:46 2019 +0000
@@ -85,6 +85,7 @@
WIFI_CMD_DISCONNECT,
WIFI_CMD_NETWORK_STATUS,
WIFI_CMD_WIFI_STATUS,
+ WIFI_CMD_WIFI_MAC_ADDR,
WIFI_CMD_SEND_HTTPS_REQ,
WIFI_CMD_SEND_HTTP_REQ,
WIFI_CMD_TLS_CONNECT,
@@ -118,7 +119,10 @@
AT_BLE_RESPONSE = 22,
AT_SOCKET_KEEP_ALIVE_OK = 23,
AT_SOCKET_KEEP_ALIVE_FAILED = 24,
- BLE_DISCONNECT_EVENT = 25
+ BLE_DISCONNECT_EVENT = 25,
+ AT_WIFI_MAC_RESP = 26,
+ AT_BLE_MAC_RESP = 27,
+ AT_BLE_NAME_RESP = 28
}at_cmd_resp_t;
typedef enum edm_msg_id
@@ -275,6 +279,8 @@
{
BLE_CMD_NONE,
BLE_CMD_CONFIG,
+ BLE_CMD_MAC_ADDR,
+ BLE_CMD_DEVICE_NAME,
BLE_CMD_CONNECT,
BLE_CMD_DISCONNECT,
BLE_CMD_SEND_RX_DATA_2AT,
--- a/source/main.h Tue Jun 11 20:23:43 2019 +0000 +++ b/source/main.h Fri Jun 14 21:13:46 2019 +0000 @@ -1,5 +1,8 @@ #ifndef __MAIN_H__ #define __MAIN_H__ +#define API_MAJOR_VERSION 1 +#define API_MINOR_VERSION 0 +#define API_BUILD_NUMBER 122 void print_memory_info(); void blinkLEDs(); void trigger_start_BLE();