@@ -188,18 +188,20 @@ esp_err_t set_esp_interface_ip(esp_interface_t interface, IPAddress local_ip=IPA
188
188
lease.start_ip .addr = _byte_swap32 (lease.start_ip .addr );
189
189
lease.end_ip .addr = _byte_swap32 (lease.end_ip .addr );
190
190
log_v (" DHCP Server Range: %s to %s" , IPAddress (lease.start_ip .addr ).toString ().c_str (), IPAddress (lease.end_ip .addr ).toString ().c_str ());
191
- err = tcpip_adapter_dhcps_option (
192
- (tcpip_adapter_dhcp_option_mode_t )TCPIP_ADAPTER_OP_SET,
193
- (tcpip_adapter_dhcp_option_id_t )ESP_NETIF_SUBNET_MASK,
191
+ err = esp_netif_dhcps_option (
192
+ esp_netif,
193
+ ESP_NETIF_OP_SET,
194
+ ESP_NETIF_SUBNET_MASK,
194
195
(void *)&info.netmask .addr , sizeof (info.netmask .addr )
195
196
);
196
197
if (err){
197
198
log_e (" DHCPS Set Netmask Failed! 0x%04x" , err);
198
199
return err;
199
200
}
200
- err = tcpip_adapter_dhcps_option (
201
- (tcpip_adapter_dhcp_option_mode_t )TCPIP_ADAPTER_OP_SET,
202
- (tcpip_adapter_dhcp_option_id_t )REQUESTED_IP_ADDRESS,
201
+ err = esp_netif_dhcps_option (
202
+ esp_netif,
203
+ ESP_NETIF_OP_SET,
204
+ ESP_NETIF_REQUESTED_IP_ADDRESS,
203
205
(void *)&lease, sizeof (dhcps_lease_t )
204
206
);
205
207
if (err){
@@ -766,6 +768,126 @@ WiFiGenericClass::WiFiGenericClass()
766
768
{
767
769
}
768
770
771
+ /* *
772
+ * @brief Convert wifi_err_reason_t to a string.
773
+ * @param [in] reason The reason to be converted.
774
+ * @return A string representation of the error code.
775
+ * @note: wifi_err_reason_t values as of Mar 2023 (arduino-esp32 r2.0.7) are: (1-39, 46-51, 67-68, 200-208) and are defined in /tools/sdk/esp32/include/esp_wifi/include/esp_wifi_types.h.
776
+ */
777
+ const char * WiFiGenericClass::disconnectReasonName (wifi_err_reason_t reason) {
778
+ switch (reason) {
779
+ // ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(2,0,7)
780
+ case WIFI_REASON_UNSPECIFIED: return " UNSPECIFIED" ;
781
+ case WIFI_REASON_AUTH_EXPIRE: return " AUTH_EXPIRE" ;
782
+ case WIFI_REASON_AUTH_LEAVE: return " AUTH_LEAVE" ;
783
+ case WIFI_REASON_ASSOC_EXPIRE: return " ASSOC_EXPIRE" ;
784
+ case WIFI_REASON_ASSOC_TOOMANY: return " ASSOC_TOOMANY" ;
785
+ case WIFI_REASON_NOT_AUTHED: return " NOT_AUTHED" ;
786
+ case WIFI_REASON_NOT_ASSOCED: return " NOT_ASSOCED" ;
787
+ case WIFI_REASON_ASSOC_LEAVE: return " ASSOC_LEAVE" ;
788
+ case WIFI_REASON_ASSOC_NOT_AUTHED: return " ASSOC_NOT_AUTHED" ;
789
+ case WIFI_REASON_DISASSOC_PWRCAP_BAD: return " DISASSOC_PWRCAP_BAD" ;
790
+ case WIFI_REASON_DISASSOC_SUPCHAN_BAD: return " DISASSOC_SUPCHAN_BAD" ;
791
+ case WIFI_REASON_BSS_TRANSITION_DISASSOC: return " BSS_TRANSITION_DISASSOC" ;
792
+ case WIFI_REASON_IE_INVALID: return " IE_INVALID" ;
793
+ case WIFI_REASON_MIC_FAILURE: return " MIC_FAILURE" ;
794
+ case WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT: return " 4WAY_HANDSHAKE_TIMEOUT" ;
795
+ case WIFI_REASON_GROUP_KEY_UPDATE_TIMEOUT: return " GROUP_KEY_UPDATE_TIMEOUT" ;
796
+ case WIFI_REASON_IE_IN_4WAY_DIFFERS: return " IE_IN_4WAY_DIFFERS" ;
797
+ case WIFI_REASON_GROUP_CIPHER_INVALID: return " GROUP_CIPHER_INVALID" ;
798
+ case WIFI_REASON_PAIRWISE_CIPHER_INVALID: return " PAIRWISE_CIPHER_INVALID" ;
799
+ case WIFI_REASON_AKMP_INVALID: return " AKMP_INVALID" ;
800
+ case WIFI_REASON_UNSUPP_RSN_IE_VERSION: return " UNSUPP_RSN_IE_VERSION" ;
801
+ case WIFI_REASON_INVALID_RSN_IE_CAP: return " INVALID_RSN_IE_CAP" ;
802
+ case WIFI_REASON_802_1X_AUTH_FAILED: return " 802_1X_AUTH_FAILED" ;
803
+ case WIFI_REASON_CIPHER_SUITE_REJECTED: return " CIPHER_SUITE_REJECTED" ;
804
+ case WIFI_REASON_TDLS_PEER_UNREACHABLE: return " TDLS_PEER_UNREACHABLE" ;
805
+ case WIFI_REASON_TDLS_UNSPECIFIED: return " TDLS_UNSPECIFIED" ;
806
+ case WIFI_REASON_SSP_REQUESTED_DISASSOC: return " SSP_REQUESTED_DISASSOC" ;
807
+ case WIFI_REASON_NO_SSP_ROAMING_AGREEMENT: return " NO_SSP_ROAMING_AGREEMENT" ;
808
+ case WIFI_REASON_BAD_CIPHER_OR_AKM: return " BAD_CIPHER_OR_AKM" ;
809
+ case WIFI_REASON_NOT_AUTHORIZED_THIS_LOCATION: return " NOT_AUTHORIZED_THIS_LOCATION" ;
810
+ case WIFI_REASON_SERVICE_CHANGE_PERCLUDES_TS: return " SERVICE_CHANGE_PERCLUDES_TS" ;
811
+ case WIFI_REASON_UNSPECIFIED_QOS: return " UNSPECIFIED_QOS" ;
812
+ case WIFI_REASON_NOT_ENOUGH_BANDWIDTH: return " NOT_ENOUGH_BANDWIDTH" ;
813
+ case WIFI_REASON_MISSING_ACKS: return " MISSING_ACKS" ;
814
+ case WIFI_REASON_EXCEEDED_TXOP: return " EXCEEDED_TXOP" ;
815
+ case WIFI_REASON_STA_LEAVING: return " STA_LEAVING" ;
816
+ case WIFI_REASON_END_BA: return " END_BA" ;
817
+ case WIFI_REASON_UNKNOWN_BA: return " UNKNOWN_BA" ;
818
+ case WIFI_REASON_TIMEOUT: return " TIMEOUT" ;
819
+ case WIFI_REASON_PEER_INITIATED: return " PEER_INITIATED" ;
820
+ case WIFI_REASON_AP_INITIATED: return " AP_INITIATED" ;
821
+ case WIFI_REASON_INVALID_FT_ACTION_FRAME_COUNT: return " INVALID_FT_ACTION_FRAME_COUNT" ;
822
+ case WIFI_REASON_INVALID_PMKID: return " INVALID_PMKID" ;
823
+ case WIFI_REASON_INVALID_MDE: return " INVALID_MDE" ;
824
+ case WIFI_REASON_INVALID_FTE: return " INVALID_FTE" ;
825
+ case WIFI_REASON_TRANSMISSION_LINK_ESTABLISH_FAILED: return " TRANSMISSION_LINK_ESTABLISH_FAILED" ;
826
+ case WIFI_REASON_ALTERATIVE_CHANNEL_OCCUPIED: return " ALTERATIVE_CHANNEL_OCCUPIED" ;
827
+ case WIFI_REASON_BEACON_TIMEOUT: return " BEACON_TIMEOUT" ;
828
+ case WIFI_REASON_NO_AP_FOUND: return " NO_AP_FOUND" ;
829
+ case WIFI_REASON_AUTH_FAIL: return " AUTH_FAIL" ;
830
+ case WIFI_REASON_ASSOC_FAIL: return " ASSOC_FAIL" ;
831
+ case WIFI_REASON_HANDSHAKE_TIMEOUT: return " HANDSHAKE_TIMEOUT" ;
832
+ case WIFI_REASON_CONNECTION_FAIL: return " CONNECTION_FAIL" ;
833
+ case WIFI_REASON_AP_TSF_RESET: return " AP_TSF_RESET" ;
834
+ case WIFI_REASON_ROAMING: return " ROAMING" ;
835
+ default : return " " ;
836
+ }
837
+ }
838
+
839
+ /* *
840
+ * @brief Convert arduino_event_id_t to a C string.
841
+ * @param [in] id The event id to be converted.
842
+ * @return A string representation of the event id.
843
+ * @note: arduino_event_id_t values as of Mar 2023 (arduino-esp32 r2.0.7) are: 0-39 (ARDUINO_EVENT_MAX=40) and are defined in WiFiGeneric.h.
844
+ */
845
+ const char * WiFiGenericClass::eventName (arduino_event_id_t id) {
846
+ switch (id) {
847
+ case ARDUINO_EVENT_WIFI_READY: return " WIFI_READY" ;
848
+ case ARDUINO_EVENT_WIFI_SCAN_DONE: return " SCAN_DONE" ;
849
+ case ARDUINO_EVENT_WIFI_STA_START: return " STA_START" ;
850
+ case ARDUINO_EVENT_WIFI_STA_STOP: return " STA_STOP" ;
851
+ case ARDUINO_EVENT_WIFI_STA_CONNECTED: return " STA_CONNECTED" ;
852
+ case ARDUINO_EVENT_WIFI_STA_DISCONNECTED: return " STA_DISCONNECTED" ;
853
+ case ARDUINO_EVENT_WIFI_STA_AUTHMODE_CHANGE: return " STA_AUTHMODE_CHANGE" ;
854
+ case ARDUINO_EVENT_WIFI_STA_GOT_IP: return " STA_GOT_IP" ;
855
+ case ARDUINO_EVENT_WIFI_STA_GOT_IP6: return " STA_GOT_IP6" ;
856
+ case ARDUINO_EVENT_WIFI_STA_LOST_IP: return " STA_LOST_IP" ;
857
+ case ARDUINO_EVENT_WIFI_AP_START: return " AP_START" ;
858
+ case ARDUINO_EVENT_WIFI_AP_STOP: return " AP_STOP" ;
859
+ case ARDUINO_EVENT_WIFI_AP_STACONNECTED: return " AP_STACONNECTED" ;
860
+ case ARDUINO_EVENT_WIFI_AP_STADISCONNECTED: return " AP_STADISCONNECTED" ;
861
+ case ARDUINO_EVENT_WIFI_AP_STAIPASSIGNED: return " AP_STAIPASSIGNED" ;
862
+ case ARDUINO_EVENT_WIFI_AP_PROBEREQRECVED: return " AP_PROBEREQRECVED" ;
863
+ case ARDUINO_EVENT_WIFI_AP_GOT_IP6: return " AP_GOT_IP6" ;
864
+ case ARDUINO_EVENT_WIFI_FTM_REPORT: return " FTM_REPORT" ;
865
+ case ARDUINO_EVENT_ETH_START: return " ETH_START" ;
866
+ case ARDUINO_EVENT_ETH_STOP: return " ETH_STOP" ;
867
+ case ARDUINO_EVENT_ETH_CONNECTED: return " ETH_CONNECTED" ;
868
+ case ARDUINO_EVENT_ETH_DISCONNECTED: return " ETH_DISCONNECTED" ;
869
+ case ARDUINO_EVENT_ETH_GOT_IP: return " ETH_GOT_IP" ;
870
+ case ARDUINO_EVENT_ETH_GOT_IP6: return " ETH_GOT_IP6" ;
871
+ case ARDUINO_EVENT_WPS_ER_SUCCESS: return " WPS_ER_SUCCESS" ;
872
+ case ARDUINO_EVENT_WPS_ER_FAILED: return " WPS_ER_FAILED" ;
873
+ case ARDUINO_EVENT_WPS_ER_TIMEOUT: return " WPS_ER_TIMEOUT" ;
874
+ case ARDUINO_EVENT_WPS_ER_PIN: return " WPS_ER_PIN" ;
875
+ case ARDUINO_EVENT_WPS_ER_PBC_OVERLAP: return " WPS_ER_PBC_OVERLAP" ;
876
+ case ARDUINO_EVENT_SC_SCAN_DONE: return " SC_SCAN_DONE" ;
877
+ case ARDUINO_EVENT_SC_FOUND_CHANNEL: return " SC_FOUND_CHANNEL" ;
878
+ case ARDUINO_EVENT_SC_GOT_SSID_PSWD: return " SC_GOT_SSID_PSWD" ;
879
+ case ARDUINO_EVENT_SC_SEND_ACK_DONE: return " SC_SEND_ACK_DONE" ;
880
+ case ARDUINO_EVENT_PROV_INIT: return " PROV_INIT" ;
881
+ case ARDUINO_EVENT_PROV_DEINIT: return " PROV_DEINIT" ;
882
+ case ARDUINO_EVENT_PROV_START: return " PROV_START" ;
883
+ case ARDUINO_EVENT_PROV_END: return " PROV_END" ;
884
+ case ARDUINO_EVENT_PROV_CRED_RECV: return " PROV_CRED_RECV" ;
885
+ case ARDUINO_EVENT_PROV_CRED_FAIL: return " PROV_CRED_FAIL" ;
886
+ case ARDUINO_EVENT_PROV_CRED_SUCCESS: return " PROV_CRED_SUCCESS" ;
887
+ default : return " " ;
888
+ }
889
+ }
890
+
769
891
const char * WiFiGenericClass::getHostname ()
770
892
{
771
893
return get_esp_netif_hostname ();
@@ -904,33 +1026,15 @@ void WiFiGenericClass::removeEvent(wifi_event_id_t id)
904
1026
* callback for WiFi events
905
1027
* @param arg
906
1028
*/
907
- #if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG
908
- const char * arduino_event_names[] = {
909
- " WIFI_READY" ,
910
- " SCAN_DONE" ,
911
- " STA_START" , " STA_STOP" , " STA_CONNECTED" , " STA_DISCONNECTED" , " STA_AUTHMODE_CHANGE" , " STA_GOT_IP" , " STA_GOT_IP6" , " STA_LOST_IP" ,
912
- " AP_START" , " AP_STOP" , " AP_STACONNECTED" , " AP_STADISCONNECTED" , " AP_STAIPASSIGNED" , " AP_PROBEREQRECVED" , " AP_GOT_IP6" ,
913
- " FTM_REPORT" ,
914
- " ETH_START" , " ETH_STOP" , " ETH_CONNECTED" , " ETH_DISCONNECTED" , " ETH_GOT_IP" , " ETH_GOT_IP6" ,
915
- " WPS_ER_SUCCESS" , " WPS_ER_FAILED" , " WPS_ER_TIMEOUT" , " WPS_ER_PIN" , " WPS_ER_PBC_OVERLAP" ,
916
- " SC_SCAN_DONE" , " SC_FOUND_CHANNEL" , " SC_GOT_SSID_PSWD" , " SC_SEND_ACK_DONE" ,
917
- " PROV_INIT" , " PROV_DEINIT" , " PROV_START" , " PROV_END" , " PROV_CRED_RECV" , " PROV_CRED_FAIL" , " PROV_CRED_SUCCESS"
918
- };
919
- #endif
920
- #if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_WARN
921
- const char * system_event_reasons[] = { " UNSPECIFIED" , " AUTH_EXPIRE" , " AUTH_LEAVE" , " ASSOC_EXPIRE" , " ASSOC_TOOMANY" , " NOT_AUTHED" , " NOT_ASSOCED" , " ASSOC_LEAVE" , " ASSOC_NOT_AUTHED" , " DISASSOC_PWRCAP_BAD" , " DISASSOC_SUPCHAN_BAD" , " UNSPECIFIED" , " IE_INVALID" , " MIC_FAILURE" , " 4WAY_HANDSHAKE_TIMEOUT" , " GROUP_KEY_UPDATE_TIMEOUT" , " IE_IN_4WAY_DIFFERS" , " GROUP_CIPHER_INVALID" , " PAIRWISE_CIPHER_INVALID" , " AKMP_INVALID" , " UNSUPP_RSN_IE_VERSION" , " INVALID_RSN_IE_CAP" , " 802_1X_AUTH_FAILED" , " CIPHER_SUITE_REJECTED" , " BEACON_TIMEOUT" , " NO_AP_FOUND" , " AUTH_FAIL" , " ASSOC_FAIL" , " HANDSHAKE_TIMEOUT" , " CONNECTION_FAIL" };
922
- #define reason2str (r ) ((r>176 )?system_event_reasons[r-176 ]:system_event_reasons[r-1 ])
923
- #endif
924
1029
esp_err_t WiFiGenericClass::_eventCallback (arduino_event_t *event)
925
1030
{
926
1031
static bool first_connect = true ;
927
1032
928
- if (event-> event_id < ARDUINO_EVENT_MAX) {
929
- log_d ( " Arduino Event: %d - %s " , event-> event_id , arduino_event_names[event-> event_id ]);
930
- }
1033
+ if (! event) return ESP_OK; // Null would crash this function
1034
+
1035
+ log_d ( " Arduino Event: %d - %s " , event-> event_id , WiFi. eventName (event-> event_id ));
931
1036
if (event->event_id == ARDUINO_EVENT_WIFI_SCAN_DONE) {
932
1037
WiFiScanClass::_scanDone ();
933
-
934
1038
} else if (event->event_id == ARDUINO_EVENT_WIFI_STA_START) {
935
1039
WiFiSTAClass::_setStatus (WL_DISCONNECTED);
936
1040
setStatusBits (STA_STARTED_BIT);
@@ -950,7 +1054,7 @@ esp_err_t WiFiGenericClass::_eventCallback(arduino_event_t *event)
950
1054
// Reason 0 causes crash, use reason 1 (UNSPECIFIED) instead
951
1055
if (!reason)
952
1056
reason = WIFI_REASON_UNSPECIFIED;
953
- log_w (" Reason: %u - %s" , reason, reason2str ( reason));
1057
+ log_w (" Reason: %u - %s" , reason, WiFi. disconnectReasonName (( wifi_err_reason_t ) reason));
954
1058
if (reason == WIFI_REASON_NO_AP_FOUND) {
955
1059
WiFiSTAClass::_setStatus (WL_NO_SSID_AVAIL);
956
1060
} else if ((reason == WIFI_REASON_AUTH_FAIL) && !first_connect){
0 commit comments