|
|
@@ -7,6 +7,7 @@
|
|
|
#include <string.h>
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
+
|
|
|
#include "UDP_Client.h"
|
|
|
#include "Timer_Module.h"
|
|
|
#include "Log_Module.h"
|
|
|
@@ -91,6 +92,8 @@ enum Step{
|
|
|
STEP_JOIN_DATA_MESSAGE, // 拼接数据报文
|
|
|
STEP_CLOSE_AP, // 断开AP连接
|
|
|
STEP_CLOSE_NETWORK, // 断开TCP/UDP网络
|
|
|
+
|
|
|
+ STEP_RESET, // 数据发送流程重置
|
|
|
STEP_SUCCESS, // 成功
|
|
|
STEP_FAILURE, // 失败
|
|
|
STEP_FINISH, // 流程结束
|
|
|
@@ -99,11 +102,14 @@ enum Step{
|
|
|
// 步骤跳转时的监听
|
|
|
static uint8_t STEP_JOIN_AUTH_MESSAGE_times = 0; // 认证的次数
|
|
|
static uint8_t STEP_HANDLE_times = 0; // 数据重发的次数
|
|
|
+static uint8_t STEP_RESET_times = 0; // 流程重置的次数
|
|
|
+
|
|
|
|
|
|
static void initialize()
|
|
|
{
|
|
|
STEP_JOIN_AUTH_MESSAGE_times = 0;
|
|
|
STEP_HANDLE_times = 0;
|
|
|
+ STEP_RESET_times = 0;
|
|
|
}
|
|
|
static uint16_t goto_step_event(uint16_t ns)
|
|
|
{
|
|
|
@@ -114,15 +120,19 @@ static uint16_t goto_step_event(uint16_t ns)
|
|
|
uint16_t step = ns;
|
|
|
if(ns == STEP_JOIN_AUTH_MESSAGE && STEP_JOIN_AUTH_MESSAGE_times++ >= 1)
|
|
|
{
|
|
|
- goto_failure("认证次数过多");
|
|
|
+ Log_Printf_Debug("认证次数过多");
|
|
|
step = STEP_FAILURE;
|
|
|
}
|
|
|
if(ns == STEP_HANDLE && STEP_HANDLE_times++ >= 2)
|
|
|
{
|
|
|
- goto_failure("数据重发次数过多");
|
|
|
+ Log_Printf_Debug("数据重发次数过多");
|
|
|
+ step = STEP_RESET;
|
|
|
+ }
|
|
|
+ if(ns == STEP_RESET && STEP_RESET_times++ >= 2)
|
|
|
+ {
|
|
|
+ goto_failure("流程重置次数过多");
|
|
|
step = STEP_FAILURE;
|
|
|
}
|
|
|
-
|
|
|
return step;
|
|
|
}
|
|
|
// 流程控制
|
|
|
@@ -223,8 +233,8 @@ void UDPCLIENT_ProcessHandle(void)
|
|
|
}
|
|
|
|
|
|
// 发送数据的逻辑
|
|
|
-int wifi_rssi[10]; //各wifi信号值存储数组
|
|
|
-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;
|
|
|
@@ -265,7 +275,8 @@ static void UDPCLIENT_Process(void)
|
|
|
}
|
|
|
else if(result == Result_Failed)
|
|
|
{
|
|
|
- goto_failure("WiFi模块启动失败");
|
|
|
+ Log_Printf_Debug("WiFi模块启动失败");
|
|
|
+ PCTRL_GotoStep(&pctrl, STEP_RESET, "流程重置");
|
|
|
}
|
|
|
break;
|
|
|
case STEP_SET_MODE: // 设置WiFi为Station模式
|
|
|
@@ -275,8 +286,9 @@ static void UDPCLIENT_Process(void)
|
|
|
PCTRL_GotoStep(&pctrl, STEP_SELECT_AP, "选择AP");
|
|
|
}
|
|
|
else if(result == Result_Failed)
|
|
|
- {
|
|
|
- goto_failure("设置工作模式失败");
|
|
|
+ {
|
|
|
+ Log_Printf_Debug("设置工作模式失败");
|
|
|
+ PCTRL_GotoStep(&pctrl, STEP_RESET, "流程重置");
|
|
|
}
|
|
|
break;
|
|
|
case STEP_SELECT_AP:
|
|
|
@@ -321,13 +333,14 @@ 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失败");
|
|
|
+ Log_Printf_Debug("连接AP失败");
|
|
|
+ PCTRL_GotoStep(&pctrl, STEP_RESET, "流程重置");
|
|
|
}
|
|
|
break;
|
|
|
case STEP_QUERY_SIGNAL: //查询WiFi信号强度
|
|
|
@@ -338,18 +351,32 @@ static void UDPCLIENT_Process(void)
|
|
|
}
|
|
|
else if(result == Result_Failed)
|
|
|
{
|
|
|
- goto_failure("查询WiFi信号强度失败");
|
|
|
+ Log_Printf_Debug("查询WiFi信号强度失败");
|
|
|
+ PCTRL_GotoStep(&pctrl, STEP_RESET, "流程重置");
|
|
|
}
|
|
|
break;
|
|
|
case STEP_SET_CIPMODE: //设置普通传输模式
|
|
|
result = esp32.set_cipmode(0);
|
|
|
if(result == Result_Success)
|
|
|
+ {
|
|
|
+ PCTRL_GotoStep(&pctrl, STEP_CLOSE_NETWORK, "关闭UDP网络");
|
|
|
+ }
|
|
|
+ else if(result == Result_Failed)
|
|
|
+ {
|
|
|
+ Log_Printf_Debug("设置传输模式失败");
|
|
|
+ PCTRL_GotoStep(&pctrl, STEP_RESET, "流程重置");
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case STEP_CLOSE_NETWORK: //关闭UDP网络
|
|
|
+ result = esp32.close_network();
|
|
|
+ if(result == Result_Success)
|
|
|
{
|
|
|
PCTRL_GotoStep(&pctrl, STEP_CONNECT_NETWORK, "连接UDP网络");
|
|
|
}
|
|
|
else if(result == Result_Failed)
|
|
|
{
|
|
|
- goto_failure("设置传输模式失败");
|
|
|
+ Log_Printf_Debug("关闭UDP网络失败");
|
|
|
+ PCTRL_GotoStep(&pctrl, STEP_RESET, "流程重置");
|
|
|
}
|
|
|
break;
|
|
|
case STEP_CONNECT_NETWORK: //连接UDP网络
|
|
|
@@ -360,7 +387,8 @@ static void UDPCLIENT_Process(void)
|
|
|
}
|
|
|
else if(result == Result_Failed)
|
|
|
{
|
|
|
- goto_failure("连接UDP网络失败");
|
|
|
+ Log_Printf_Debug("连接UDP网络失败");
|
|
|
+ PCTRL_GotoStep(&pctrl, STEP_RESET, "流程重置");
|
|
|
}
|
|
|
break;
|
|
|
case STEP_JUDGE_AUTH_OR_DATA: // 判断认证还是发送
|
|
|
@@ -383,6 +411,7 @@ static void UDPCLIENT_Process(void)
|
|
|
PCTRL_GotoStep(&pctrl, STEP_HANDLE, "发送认证报文");
|
|
|
break;
|
|
|
case STEP_JOIN_DATA_MESSAGE: // 拼接数据报文
|
|
|
+
|
|
|
// 泵数据更新
|
|
|
PUMPBUSINESS_ParamsRefresh();
|
|
|
// 编码
|
|
|
@@ -422,10 +451,14 @@ static void UDPCLIENT_Process(void)
|
|
|
case STEP_WAIT: // 等待
|
|
|
PCTRL_Wait(&pctrl);
|
|
|
break;
|
|
|
+ case STEP_RESET: // 发送流程重置
|
|
|
+ PCTRL_GotoStep(&pctrl, STEP_SELECT_AP, "数据发送流程重置>>>>>>选择AP");
|
|
|
+ break;
|
|
|
case STEP_SUCCESS: // 成功
|
|
|
PCTRL_GotoStep(&pctrl, STEP_ENTER_DEEP_SLEEP, "泵数据发送成功,进入深休眠");
|
|
|
break;
|
|
|
case STEP_FAILURE: // 失败
|
|
|
+ goto_failure("数据发送流程失败");
|
|
|
PCTRL_GotoStep(&pctrl, STEP_ENTER_DEEP_SLEEP, "泵数据发送失败,进入深休眠");
|
|
|
break;
|
|
|
case STEP_ENTER_DEEP_SLEEP:
|
|
|
@@ -442,3 +475,4 @@ static void UDPCLIENT_Process(void)
|
|
|
|
|
|
|
|
|
#endif
|
|
|
+
|