this is using the mbed os version 5-13-1
Diff: source/WiFiManager.cpp
- Revision:
- 95:290859010c8c
- Parent:
- 94:fb4414aff957
- Child:
- 96:f5ed273881af
--- a/source/WiFiManager.cpp Sun Apr 14 17:03:02 2019 +0000
+++ b/source/WiFiManager.cpp Wed Apr 17 18:11:45 2019 +0000
@@ -96,10 +96,13 @@
wifiCmd = WIFI_CMD_NONE;
if(is_connected==false){
printf("[WIFI MAN] +++ WIFI CONNECTION TIMEOUT +++ \r\n");
- queueATresponse(AT_COMMAND_FAILED);
+ //queueATresponse(AT_COMMAND_FAILED);
+ responseString = (char *) malloc(100);
+ sprintf(responseString, "\r\n+UUTIMEOUT\r\n");
+ sendATresponseString(AT_COMMAND_FAILED);
}
else {
- queueATresponse(AT_CONNECT_RESP);
+ sendATresponseString(AT_CONNECT_RESP);
}
break;
case WIFI_CMD_DISCONNECT:
@@ -114,8 +117,18 @@
break;
case WIFI_CMD_INTERNET_CONFIG:
set_internet_config();
+ queueATresponse(AT_INTERNET_CONFIG_RESP);
wifiCmd = WIFI_CMD_NONE;
- queueATresponse(AT_INTERNET_CONFIG_RESP);
+ break;
+ case WIFI_CMD_NETWORK_STATUS:
+ getNetworkStatus();
+ sendATresponseString(AT_NETWORK_STATUS_RESP);
+ wifiCmd = WIFI_CMD_NONE;
+ break;
+ case WIFI_CMD_WIFI_STATUS:
+ getWiFiStatus();
+ sendATresponseString(AT_WIFI_STATUS_RESP);
+ wifiCmd = WIFI_CMD_NONE;
break;
case WIFI_CMD_SEND_HTTPS_REQ:
printf("before call to send http request \n");
@@ -136,16 +149,16 @@
}
-void WiFiManager::sentATresponseString(at_cmd_resp_t at_cmd,
- const char *responseString,
- int strLen)
+void WiFiManager::sendATresponseString(at_cmd_resp_t at_cmd)
{
+ int strLen = strlen(responseString) + 1;
at_data_resp = new at_data_msg_t;
// create message pointer for response header generation
char * msgPtr = (char *)at_data_resp->buffer;
// set string length
at_data_resp->dataLen = strLen;
memcpy(at_data_resp->buffer, responseString, strLen);
+ free(responseString);
// package and send on wifi data queue
at_data_resp->at_resp = at_cmd;
bool queueResult = true;
@@ -318,6 +331,121 @@
delete socket;
}
+
+
+void WiFiManager::getNetworkStatus(){
+
+ responseString = (char *) malloc(MAX_RESPONSE_STRING_LEN);
+ net_stat_id_t status_id;
+ char * nextStrPtr = responseString;
+ for(int i=0; i< NumNetworkStatus;i++){
+ status_id = netStatusIds[i]; // get current status id
+ switch(status_id){
+ case IF_HW_ADDRESS:
+ sprintf(nextStrPtr, "\r\n%s%d,%d,%s\r\n", NETWORK_STATUS,
+ WIFI_CHANNEL,
+ status_id,
+ network->get_mac_address());
+ break;
+ case NETWORK_IF_STATUS:
+ sprintf(nextStrPtr, "\r\n%s%d,%d, %d\r\n", NETWORK_STATUS,
+ WIFI_CHANNEL,
+ status_id,
+ (uint8_t)is_connected);
+ break;
+ case INTERFACE_TYPE:
+ sprintf(nextStrPtr, "\r\n%s%d,%d,%d\r\n", NETWORK_STATUS,
+ WIFI_CHANNEL,
+ status_id,
+ WIFI_STATION);
+ break;
+ case IPv4_ADDRESS:
+ sprintf(nextStrPtr, "\r\n%s%d,%d,%s\r\n", NETWORK_STATUS,
+ WIFI_CHANNEL,
+ status_id,
+ network->get_ip_address());
+ break;
+ case SUBNET_MASK:
+ sprintf(nextStrPtr, "\r\n%s%d,%d,%s\r\n", NETWORK_STATUS,
+ WIFI_CHANNEL,
+ status_id,
+ network->get_netmask());
+ break;
+ case GATEWAY_ADDRESS:
+ sprintf(nextStrPtr, "\r\n%s%d,%d,%s\r\n", NETWORK_STATUS,
+ WIFI_CHANNEL,
+ status_id,
+ network->get_gateway());
+ break;
+ case PRIMARY_DNS_SERVER:
+ sprintf(nextStrPtr, "\r\n%s%d,%d,%s\r\n", NETWORK_STATUS,
+ WIFI_CHANNEL,
+ status_id,
+ DEFAULT_DNS_ADDRESS);
+ break;
+ case SECONDARY_DNS_SERVER:
+ sprintf(nextStrPtr, "\r\n%s%d,%d,%s\r\n", NETWORK_STATUS,
+ WIFI_CHANNEL,
+ status_id,
+ DEFAULT_DNS_ADDRESS);
+ break;
+ case IPv6_ADDRESS:
+ sprintf(nextStrPtr, "\r\n%s%d,%d,::\r\n", NETWORK_STATUS,
+ WIFI_CHANNEL,
+ status_id);
+ break;
+ default:
+ sprintf(nextStrPtr, "\r\n%s,::\r\n", NETWORK_STATUS);
+ break;
+ }
+ nextStrPtr += strlen(nextStrPtr) +1; // progress to end of current string
+ }
+}
+
+
+
+void WiFiManager::getWiFiStatus(){
+
+ responseString = (char *) malloc(MAX_RESPONSE_STRING_LEN);
+ wifi_stat_id_t status_id;
+ char * nextStrPtr = responseString;
+ for(int i=0; i< NumWiFiStatus;i++){
+ status_id = wifiStatusIds[i]; // get current status id
+ switch(status_id){
+ case WIFI_SSID:
+ sprintf(nextStrPtr, "\r\n%s%d,%s\r\n", WIFI_NETWORK_STATUS,
+ status_id,
+ wifi_config.ssid);
+ break;
+ case WIFI_BSSID:
+ sprintf(nextStrPtr, "\r\n%s%d,%s\r\n", WIFI_NETWORK_STATUS,
+ status_id,
+ network->get_mac_address());
+ break;
+ case WIFI__CURRENT_CHANNEL:
+ sprintf(nextStrPtr, "\r\n%s%d,%d\r\n", WIFI_NETWORK_STATUS,
+ status_id,
+ DEFAULT_WIFI_CHANNEL);
+ break;
+ case WIFI_STA_STATUS:
+ sprintf(nextStrPtr, "\r\n%s%d,%d\r\n", WIFI_NETWORK_STATUS,
+ status_id,
+ (uint8_t)is_connected);
+ break;
+ case WIFI_RSSI:
+ sprintf(nextStrPtr, "\r\n%s%d,%d\r\n", WIFI_NETWORK_STATUS,
+ status_id,
+ network->get_rssi());
+ break;
+ default:
+ sprintf(nextStrPtr, "\r\n%s,::\r\n", WIFI_NETWORK_STATUS);
+ break;
+ }
+ nextStrPtr += strlen(nextStrPtr) +1; // progress to end of current string
+ }
+}
+
+
void WiFiManager::free_DataMsg()
{
// free memory after processing
@@ -339,6 +467,12 @@
printf("Global IP address set!\r\n");
printf("[WIFI-MAN] IP address: %s\n", network->get_ip_address());
printf("[WIFI-MAN] Connected to the network %s\n", wifi_config.ssid);
+ responseString = (char *) malloc(MAX_RESPONSE_STRING_LEN);
+ sprintf(responseString, "\r\n%s%d,%s,%d\r\n", WIFI_LINK_ENABLED,
+ WIFI_CHANNEL,
+ network->get_mac_address(),
+ DEFAULT_WIFI_CHANNEL);
+
is_connected = true;
break;
case NSAPI_STATUS_DISCONNECTED: