ESResult ConnectToWiFiNetwork(const char *ssid, const char *pass, NetworkEventCallback cb) { char *fwVersion; int status = WL_IDLE_STATUS; int res; // check for the presence of the shield: if (WiFi.status() == WL_NO_SHIELD) { OC_LOG(ERROR, ES_NH_TAG, "WiFi shield not present"); return ES_ERROR; } // Verify that WiFi Shield is running the firmware with all UDP fixes fwVersion = WiFi.firmwareVersion(); OC_LOG_V(INFO, ES_NH_TAG, "WiFi Shield Firmware version %s", fwVersion); if (strncmp(fwVersion, ARDUINO_WIFI_SHIELD_UDP_FW_VER, sizeof(ARDUINO_WIFI_SHIELD_UDP_FW_VER)) != 0) { OC_LOG(DEBUG, ES_NH_TAG, "!!!!! Upgrade WiFi Shield Firmware version !!!!!!"); //return ES_ERROR; } OC_LOG_V(INFO, ES_NH_TAG, "Finding SSID: %s", ssid); while (findNetwork(ssid) == 0) // found { delay(1000); } if (cb != NULL) { cb(ES_NETWORKFOUND); } if (WiFi.status() == WL_CONNECTED) WiFi.disconnect(); res = ConnectToNetwork(ssid, pass); if (res == 0) { return ES_NETWORKCONNECTED; } else { return ES_NETWORKNOTCONNECTED; } }
ESResult ConnectToWiFiNetwork(const char *ssid, const char *pass, NetworkEventCallback cb) { char *fwVersion; int status = WL_IDLE_STATUS; int res; // check for the presence of the shield: if (WiFi.status() == WL_NO_SHIELD) { OIC_LOG(ERROR, ES_NH_TAG, "WiFi shield not present"); return ES_ERROR; } // Verify that WiFi Shield is running the firmware with all UDP fixes fwVersion = WiFi.firmwareVersion(); OIC_LOG_V(INFO, ES_NH_TAG, "WiFi Shield Firmware version %s", fwVersion); if (strncmp(fwVersion, ARDUINO_WIFI_SHIELD_UDP_FW_VER, sizeof(ARDUINO_WIFI_SHIELD_UDP_FW_VER)) != 0) { OIC_LOG(DEBUG, ES_NH_TAG, "!!!!! Upgrade WiFi Shield Firmware version !!!!!!"); return ES_ERROR; } //Retry counter is reset everytime the ConnectToWiFiNetwork is invoked g_retryCounter = 0; OIC_LOG_V(INFO, ES_NH_TAG, "Finding SSID: %s", ssid); while ((findNetwork(ssid) == 0) && g_retryCounter < ES_MAX_NETWORK_RETRY) // found { delay(1000); g_retryCounter++; } if(g_retryCounter == ES_MAX_NETWORK_RETRY){ OIC_LOG_V(ERROR, ES_NH_TAG, "Connection to network failed after %d attempts", g_retryCounter); return ES_ERROR; } if (cb != NULL) { cb(ES_OK); } if (WiFi.status() == WL_CONNECTED) WiFi.disconnect(); //Retry counter is reset everytime the ConnectToWiFiNetwork is invoked g_retryCounter = 0; res = ConnectToNetwork(ssid, pass); if (res == 0) { return ES_NETWORKCONNECTED; } else { return ES_NETWORKNOTCONNECTED; } }