From d97120d3780b8a1f8d4f1fdf2403f44cca82097e Mon Sep 17 00:00:00 2001 From: Chris Date: Tue, 10 May 2016 10:38:33 -0700 Subject: [PATCH 1/3] make sure new settings always take priority --- kitsune/wifi_cmd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kitsune/wifi_cmd.c b/kitsune/wifi_cmd.c index fe7b5a0a..1a2420ce 100644 --- a/kitsune/wifi_cmd.c +++ b/kitsune/wifi_cmd.c @@ -2537,6 +2537,7 @@ SlSecParams_t make_sec_params(const char* ssid, const char* password, int sec_ty } int connect_wifi(const char* ssid, const char* password, int sec_type, int version, bool save) { + static uint32_t priority = 0; int16_t ret = 0; SlSecParams_t secParam = make_sec_params(ssid, password, sec_type, version); @@ -2544,7 +2545,7 @@ int connect_wifi(const char* ssid, const char* password, int sec_type, int versi if( save ) { sl_WlanProfileAdd((_i8*) ssid, strlen(ssid), NULL, - &secParam, NULL, 0, 0); + &secParam, NULL, ++priority, 0); } if(ret == 0 || ret == -71) { From 57a5bcc8d952013e7bbe7472cb51df751a30984a Mon Sep 17 00:00:00 2001 From: Chris Date: Tue, 10 May 2016 10:43:46 -0700 Subject: [PATCH 2/3] delete the index of unsuccessful profiles --- kitsune/ble_proto.c | 11 ++++++++--- kitsune/wifi_cmd.c | 8 +++++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/kitsune/ble_proto.c b/kitsune/ble_proto.c index 15cdc4e4..976a6236 100644 --- a/kitsune/ble_proto.c +++ b/kitsune/ble_proto.c @@ -203,7 +203,8 @@ static void _reply_wifi_scan_result() int force_data_push(); static bool _set_wifi(const char* ssid, const char* password, int security_type, int version, int app_version) { - int i; + int i,idx; + idx = -1; LOGI("Connecting to WIFI %s\n", ssid ); xSemaphoreTake(_wifi_smphr, portMAX_DELAY); @@ -223,7 +224,7 @@ static bool _set_wifi(const char* ssid, const char* password, int security_type, nwp_reset(); wifi_state_requested = true; - if(connect_wifi(ssid, password, security_type, version, false) < 0) + if(connect_wifi(ssid, password, security_type, version, &idx, false) < 0) { LOGI("failed to connect\n"); ble_reply_protobuf_error(ErrorType_WLAN_CONNECTION_ERROR); @@ -246,6 +247,10 @@ static bool _set_wifi(const char* ssid, const char* password, int security_type, } if( ++to > 6 ) { + if( idx != -1 ) { + sl_WlanProfileDel(idx); + nwp_reset(); + } LOGI("wifi timeout\n"); wifi_state_requested = false; ble_reply_protobuf_error(ErrorType_SERVER_CONNECTION_TIMEOUT); @@ -284,7 +289,7 @@ static bool _set_wifi(const char* ssid, const char* password, int security_type, } else { bool connection_ret = false; //play_led_progress_bar(0xFF, 128, 0, 128,portMAX_DELAY); - connect_wifi(ssid, password, security_type, version, false); + connect_wifi(ssid, password, security_type, version, &idx, false); if(!connection_ret) { LOGI("Tried all wifi ep, all failed to connect\n"); diff --git a/kitsune/wifi_cmd.c b/kitsune/wifi_cmd.c index 1a2420ce..9b70502b 100644 --- a/kitsune/wifi_cmd.c +++ b/kitsune/wifi_cmd.c @@ -646,11 +646,13 @@ int Cmd_disconnect(int argc, char *argv[]) { return (0); } int Cmd_connect(int argc, char *argv[]) { + int idx; + if (argc != 4) { LOGF( "usage: connect \n\r"); } - connect_wifi( argv[1], argv[2], atoi(argv[3]), 1, true ); + connect_wifi( argv[1], argv[2], atoi(argv[3]), 1, &idx, true ); return (0); } int Cmd_setDns(int argc, char *argv[]) { @@ -2535,7 +2537,7 @@ SlSecParams_t make_sec_params(const char* ssid, const char* password, int sec_ty } return secParam; } -int connect_wifi(const char* ssid, const char* password, int sec_type, int version, bool save) +int connect_wifi(const char* ssid, const char* password, int sec_type, int version, int * idx, bool save) { static uint32_t priority = 0; int16_t ret = 0; @@ -2544,7 +2546,7 @@ int connect_wifi(const char* ssid, const char* password, int sec_type, int versi ret = sl_WlanConnect((_i8*) ssid, strlen(ssid), NULL, sec_type == SL_SEC_TYPE_OPEN ? NULL : &secParam, 0); if( save ) { - sl_WlanProfileAdd((_i8*) ssid, strlen(ssid), NULL, + *idx = sl_WlanProfileAdd((_i8*) ssid, strlen(ssid), NULL, &secParam, NULL, ++priority, 0); } if(ret == 0 || ret == -71) From 59494c0bc0bfd30b0cbc6273d0bbfdab9804d976 Mon Sep 17 00:00:00 2001 From: Chris Date: Tue, 10 May 2016 10:48:39 -0700 Subject: [PATCH 3/3] compile fix --- kitsune/wifi_cmd.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kitsune/wifi_cmd.h b/kitsune/wifi_cmd.h index 3b7555f4..f22a1d1d 100644 --- a/kitsune/wifi_cmd.h +++ b/kitsune/wifi_cmd.h @@ -140,7 +140,7 @@ int send_data_pb( char* host, const char* path, char ** recv_buf_ptr, int get_wifi_scan_result(Sl_WlanNetworkEntry_t* entries, uint16_t entry_len, uint32_t scan_duration_ms, int antenna); SlSecParams_t make_sec_params(const char* ssid, const char* password, int sec_type, int version); -int connect_wifi(const char* ssid, const char* password, int sec_type, int version, bool save); +int connect_wifi(const char* ssid, const char* password, int sec_type, int version, int * idx, bool save); void wifi_get_connected_ssid(uint8_t* ssid_buffer, size_t len); long nwp_reset();