|
|
@@ -79,6 +79,7 @@ enum Step{
|
|
|
STEP_WAIT, // 等待
|
|
|
|
|
|
STEP_SELECT_AP, // 选择AP
|
|
|
+ STEP_TEST_AP, // 检验已选择的AP
|
|
|
STEP_CONNECT_AP, // 连接AP
|
|
|
STEP_QUERY_SIGNAL, // 查询WiFi信号强度
|
|
|
STEP_SET_CIPMODE, // 设置传输模式
|
|
|
@@ -214,8 +215,10 @@ void UDPCLIENT_ProcessHandle(void)
|
|
|
}
|
|
|
|
|
|
// 发送数据的逻辑
|
|
|
-static int wifi_number = 0; //wifi信息编号变量
|
|
|
int wifi_rssi[10]; //各wifi信号值存储数组
|
|
|
+static int wifi_number = 0; //wifi信息编号变量
|
|
|
+static int wifi_location=0; // 最佳wifi信号在数组中的位置
|
|
|
+static int select_ap_flag = 0; // 选择AP标志位 0:未选择 1:已选择
|
|
|
static enum Result result = Result_None;
|
|
|
|
|
|
//获取最佳wifi_rssi中最佳信号位置
|
|
|
@@ -259,32 +262,53 @@ static void UDPCLIENT_Process(void)
|
|
|
break;
|
|
|
|
|
|
case STEP_SELECT_AP:
|
|
|
-
|
|
|
- if(wifi_number < regist_response.wifiNumber)
|
|
|
+ if(select_ap_flag == 0)
|
|
|
{
|
|
|
- result = esp32.query_id_signal(regist_response.wifi[wifi_number].wifiName, &wifi_rssi[wifi_number]);
|
|
|
- if(result == Result_Success ||result == Result_Failed)
|
|
|
+ if(wifi_number < regist_response.wifiNumber)
|
|
|
{
|
|
|
-// Log_Printf_Debug("wifi%d的信号值RSSI=%d\r\n",wifi_number,wifi_rssi[wifi_number]);
|
|
|
-// Log_Printf_Debug("wifi_number=%d\r\n",wifi_number);
|
|
|
- wifi_number++;
|
|
|
- PCTRL_GotoStep(&pctrl, STEP_SELECT_AP, "继续选择AP");
|
|
|
+ result = esp32.query_id_signal(regist_response.wifi[wifi_number].wifiName, &wifi_rssi[wifi_number]);
|
|
|
+ if(result == Result_Success ||result == Result_Failed)
|
|
|
+ {
|
|
|
+// Log_Printf_Debug("wifi%d的信号值RSSI=%d\r\n",wifi_number,wifi_rssi[wifi_number]);
|
|
|
+// Log_Printf_Debug("wifi_number=%d\r\n",wifi_number);
|
|
|
+ wifi_number++;
|
|
|
+ PCTRL_GotoStep(&pctrl, STEP_SELECT_AP, "继续选择AP");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //获取信号最佳的wifi在数组中的位置
|
|
|
+ wifi_location=get_BestWifiSignal(wifi_rssi, wifi_number);
|
|
|
+ //拷贝wifi信息
|
|
|
+ strcpy(WIFI_ID,regist_response.wifi[wifi_location].wifiName);
|
|
|
+ strcpy(WIFI_PASSWORD,regist_response.wifi[wifi_location].wifiPassword);
|
|
|
+ //选择AP标志位置1
|
|
|
+ select_ap_flag =1;
|
|
|
+
|
|
|
+ Log_Printf_Debug("选择信号最好的第%d组wifi\r\n",wifi_location);
|
|
|
+ Log_Printf_Debug("WIFI_ID=%s\r\n",WIFI_ID);
|
|
|
+ Log_Printf_Debug("WIFI_PASSWORD=%s\r\n",WIFI_PASSWORD);
|
|
|
+ PCTRL_GotoStep(&pctrl, STEP_CONNECT_AP, "连接AP");
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- //获取信号最佳的wifi在数组中的位置
|
|
|
- int i=get_BestWifiSignal(wifi_rssi, wifi_number);
|
|
|
- //拷贝wifi信息
|
|
|
- strcpy(WIFI_ID,regist_response.wifi[i].wifiName);
|
|
|
- strcpy(WIFI_PASSWORD,regist_response.wifi[i].wifiPassword);
|
|
|
- Log_Printf_Debug("选择信号最好的第%d组wifi\r\n",i);
|
|
|
- Log_Printf_Debug("WIFI_ID=%s\r\n",WIFI_ID);
|
|
|
- Log_Printf_Debug("WIFI_PASSWORD=%s\r\n",WIFI_PASSWORD);
|
|
|
+ PCTRL_GotoStep(&pctrl, STEP_TEST_AP, "检验已选择的AP");
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case STEP_TEST_AP:
|
|
|
+ result = esp32.query_id_signal(regist_response.wifi[wifi_location].wifiName, &wifi_rssi[wifi_location]);
|
|
|
+ if(result == Result_Success)
|
|
|
+ {
|
|
|
PCTRL_GotoStep(&pctrl, STEP_CONNECT_AP, "连接AP");
|
|
|
}
|
|
|
+ else if(result == Result_Failed)
|
|
|
+ {
|
|
|
+ wifi_number = 0;
|
|
|
+ select_ap_flag = 0;
|
|
|
+ goto_failure("检验已选择的AP失败");
|
|
|
+ }
|
|
|
break;
|
|
|
-
|
|
|
case STEP_CONNECT_AP: // 连接AP
|
|
|
result = esp32.connect_ap(WIFI_ID,WIFI_PASSWORD);
|
|
|
if(result == Result_Success)
|