|
|
@@ -80,7 +80,6 @@ enum Step{
|
|
|
|
|
|
STEP_SET_MODE, // 设置WIFI工作模式
|
|
|
STEP_SELECT_AP, // 选择AP
|
|
|
- STEP_TEST_AP, // 检验已选择的AP
|
|
|
STEP_CONNECT_AP, // 连接AP
|
|
|
STEP_QUERY_SIGNAL, // 查询WiFi信号强度
|
|
|
STEP_SET_CIPMODE, // 设置传输模式
|
|
|
@@ -99,9 +98,12 @@ enum Step{
|
|
|
|
|
|
// 步骤跳转时的监听
|
|
|
static uint8_t STEP_JOIN_AUTH_MESSAGE_times = 0; // 认证的次数
|
|
|
+static uint8_t STEP_HANDLE_times = 0; // 数据重发的次数
|
|
|
+
|
|
|
static void initialize()
|
|
|
{
|
|
|
STEP_JOIN_AUTH_MESSAGE_times = 0;
|
|
|
+ STEP_HANDLE_times = 0;
|
|
|
}
|
|
|
static uint16_t goto_step_event(uint16_t ns)
|
|
|
{
|
|
|
@@ -115,7 +117,12 @@ static uint16_t goto_step_event(uint16_t ns)
|
|
|
goto_failure("认证次数过多");
|
|
|
step = STEP_FAILURE;
|
|
|
}
|
|
|
-
|
|
|
+ if(ns == STEP_HANDLE && STEP_HANDLE_times++ >= 2)
|
|
|
+ {
|
|
|
+ goto_failure("数据重发次数过多");
|
|
|
+ step = STEP_FAILURE;
|
|
|
+ }
|
|
|
+
|
|
|
return step;
|
|
|
}
|
|
|
// 流程控制
|
|
|
@@ -303,22 +310,9 @@ static void UDPCLIENT_Process(void)
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
- {
|
|
|
- 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);
|
|
|
@@ -327,7 +321,12 @@ static void UDPCLIENT_Process(void)
|
|
|
PCTRL_GotoStep(&pctrl, STEP_QUERY_SIGNAL, "查询WiFi信号强度");
|
|
|
}
|
|
|
else if(result == Result_Failed)
|
|
|
- {
|
|
|
+ {
|
|
|
+ //连接AP失败时,信号值Rssi赋值
|
|
|
+ signal.RSSI = -100;
|
|
|
+ //连接AP失败时,下次数据发送重新选择信号最佳的AP
|
|
|
+ select_ap_flag = 0;
|
|
|
+ wifi_number = 0;
|
|
|
goto_failure("连接AP失败");
|
|
|
}
|
|
|
break;
|
|
|
@@ -417,7 +416,7 @@ static void UDPCLIENT_Process(void)
|
|
|
}
|
|
|
else if(result == Result_Failed)
|
|
|
{
|
|
|
- goto_failure("等待结果失败");
|
|
|
+ PCTRL_GotoStep(&pctrl, STEP_HANDLE, "重新发送数据");
|
|
|
}
|
|
|
break;
|
|
|
case STEP_WAIT: // 等待
|