diff --git a/arduino/beken-72xx/libraries/WiFi/WiFi.cpp b/arduino/beken-72xx/libraries/WiFi/WiFi.cpp index b88a652..448fe5e 100644 --- a/arduino/beken-72xx/libraries/WiFi/WiFi.cpp +++ b/arduino/beken-72xx/libraries/WiFi/WiFi.cpp @@ -15,6 +15,7 @@ WiFiStatus eventTypeToStatus(uint8_t type) { switch (type) { case RW_EVT_STA_IDLE: return WL_IDLE_STATUS; + case RW_EVT_STA_NO_AP_FOUND: return WL_NO_SSID_AVAIL; case RW_EVT_STA_CONNECTING: case RW_EVT_STA_CONNECTED: @@ -22,7 +23,6 @@ WiFiStatus eventTypeToStatus(uint8_t type) { case RW_EVT_STA_GOT_IP: return WL_CONNECTED; case RW_EVT_STA_PASSWORD_WRONG: - case RW_EVT_STA_NO_AP_FOUND: case RW_EVT_STA_ASSOC_FULL: case RW_EVT_STA_CONNECT_FAILED: return WL_CONNECT_FAILED; diff --git a/arduino/beken-72xx/libraries/WiFi/WiFiGeneric.cpp b/arduino/beken-72xx/libraries/WiFi/WiFiGeneric.cpp index 1c85673..3df552e 100644 --- a/arduino/beken-72xx/libraries/WiFi/WiFiGeneric.cpp +++ b/arduino/beken-72xx/libraries/WiFi/WiFiGeneric.cpp @@ -71,7 +71,10 @@ WiFiMode WiFiClass::getMode() { } WiFiStatus WiFiClass::status() { - return eventTypeToStatus(mhdr_get_station_status()); + rw_evt_type status = mhdr_get_station_status(); + if (status == RW_EVT_STA_CONNECTED && STA_CFG->dhcp_mode == DHCP_DISABLE) + status = RW_EVT_STA_GOT_IP; + return eventTypeToStatus(status); } IPAddress WiFiClass::hostByName(const char *hostname) { diff --git a/arduino/beken-72xx/libraries/WiFi/WiFiSTA.cpp b/arduino/beken-72xx/libraries/WiFi/WiFiSTA.cpp index 299af5c..80a0f8e 100644 --- a/arduino/beken-72xx/libraries/WiFi/WiFiSTA.cpp +++ b/arduino/beken-72xx/libraries/WiFi/WiFiSTA.cpp @@ -25,6 +25,9 @@ WiFiClass::begin(const char *ssid, const char *passphrase, int32_t channel, cons } bool WiFiClass::config(IPAddress localIP, IPAddress gateway, IPAddress subnet, IPAddress dns1, IPAddress dns2) { + // need to initialize data struct first + enableSTA(true); + STA_CFG->dhcp_mode = localIP ? DHCP_DISABLE : DHCP_CLIENT; if (localIP) { sprintf(STA_CFG->local_ip_addr, IP_FMT, localIP[0], localIP[1], localIP[2], localIP[3]);