23
23
#include "esp_wifi_driver.h"
24
24
#include "esp_event.h"
25
25
#include "esp_mac.h"
26
+ #include "esp_check.h"
26
27
#include "wifi_defs.h"
27
28
#include <time.h>
28
29
#include <sys/time.h>
@@ -1759,7 +1760,7 @@ int process_add_key(uint8_t if_type, uint8_t *payload, uint16_t payload_len)
1759
1760
int process_set_mode (uint8_t if_type , uint8_t * payload , uint16_t payload_len )
1760
1761
{
1761
1762
esp_err_t ret = ESP_OK ;
1762
- uint8_t cmd_status = CMD_RESPONSE_SUCCESS ;
1763
+ uint8_t cmd_status = CMD_RESPONSE_FAIL ;
1763
1764
struct cmd_config_mode * mode = (struct cmd_config_mode * ) payload ;
1764
1765
wifi_mode_t old_mode ;
1765
1766
@@ -1771,40 +1772,32 @@ int process_set_mode(uint8_t if_type, uint8_t *payload, uint16_t payload_len)
1771
1772
1772
1773
if (old_mode == mode -> mode ) {
1773
1774
ESP_LOGI (TAG , "old mode and new modes are same, return" );
1774
- goto send_resp ;
1775
+ goto send_ok ;
1775
1776
}
1776
1777
ret = esp_wifi_stop ();
1777
1778
if (ret ) {
1778
1779
ESP_LOGE (TAG , "Failed to stop wifi\n" );
1779
1780
}
1780
1781
1781
- if (mode -> mode == WIFI_MODE_AP ) {
1782
- ret = esp_wifi_set_mac (WIFI_IF_STA , dummy_mac );
1782
+ if (mode -> mode == WIFI_MODE_AP || mode -> mode == WIFI_MODE_APSTA ) {
1783
+ ESP_LOGI (TAG , "Setting APSTA mode" );
1784
+ ESP_GOTO_ON_ERROR (esp_wifi_set_mac (WIFI_IF_STA , dummy_mac ), send_err , TAG , "Setting MAC on STA failed" );
1785
+ ESP_GOTO_ON_ERROR (esp_wifi_set_mode (WIFI_MODE_APSTA ), send_err , TAG , "Setting mode to APSTA failed" );
1786
+ ESP_GOTO_ON_ERROR (esp_wifi_set_mac (WIFI_IF_AP , dev_mac ), send_err , TAG , "Setting MAC on AP failed" );
1783
1787
} else if (mode -> mode == WIFI_MODE_STA ){
1784
- ret = esp_wifi_set_mac (WIFI_IF_AP , dummy_mac2 );
1788
+ ESP_LOGI (TAG , "Setting STA mode" );
1789
+ ESP_GOTO_ON_ERROR (esp_wifi_set_mac (WIFI_IF_AP , dummy_mac2 ), send_err , TAG , "Setting MAC on AP failed" );
1790
+ ESP_GOTO_ON_ERROR (esp_wifi_set_mode (WIFI_MODE_STA ), send_err , TAG , "Setting mode to STA failed" );
1791
+ ESP_GOTO_ON_ERROR (esp_wifi_set_mac (WIFI_IF_STA , dev_mac ), send_err , TAG , "Setting MAC on STA failed" );
1785
1792
}
1786
1793
1787
- ESP_LOGI (TAG , "Setting mode=%d \n" , mode -> mode );
1788
- ret = esp_wifi_set_mode (mode -> mode );
1789
- if (mode -> mode == WIFI_MODE_AP ) {
1790
- ret = esp_wifi_set_mac (WIFI_IF_AP , dev_mac );
1791
- } else if (mode -> mode == WIFI_MODE_STA ){
1792
- ret = esp_wifi_set_mac (WIFI_IF_STA , dev_mac );
1793
- }
1794
-
1795
- ESP_ERROR_CHECK (esp_wifi_start ());
1796
-
1797
- if (ret ) {
1798
- ESP_LOGE (TAG , "Failed to set mode\n" );
1799
- cmd_status = CMD_RESPONSE_FAIL ;
1800
- goto send_resp ;
1801
- }
1794
+ ESP_GOTO_ON_ERROR (esp_wifi_start (), send_err , TAG , "Cannot start wifi" );
1802
1795
1803
- send_resp :
1804
- ret = send_command_resp (if_type , CMD_SET_MODE , cmd_status , (uint8_t * )& mode -> mode ,
1796
+ send_ok :
1797
+ cmd_status = CMD_RESPONSE_SUCCESS ;
1798
+ send_err :
1799
+ return send_command_resp (if_type , CMD_SET_MODE , cmd_status , (uint8_t * )& mode -> mode ,
1805
1800
sizeof (uint16_t ), sizeof (struct command_header ));
1806
-
1807
- return ret ;
1808
1801
}
1809
1802
1810
1803
int process_set_ie (uint8_t if_type , uint8_t * payload , uint16_t payload_len )
0 commit comments