|
|
@@ -42,16 +42,17 @@ enum Result esp32_autoconnect_ap(uint8_t mode); //20.
|
|
|
enum Result esp32_autoconnect_ap_sync(uint8_t mode); //21.是否自动连接AP-同步
|
|
|
enum Result esp32_close_ap(void); //22.关闭AP连接
|
|
|
enum Result esp32_close_ap_sync(void); //23.关闭AP连接-同步
|
|
|
-//enum Result esp32_recv(uint8_t * data, uint16_t * data_length); //24.接收数据
|
|
|
-//enum Result esp32_recv_with_time(uint8_t * data, uint16_t * data_length, uint32_t time_out); //25.接收数据+等待时间
|
|
|
-//enum Result esp32_recv_with_time_sync(uint8_t * data, uint16_t * data_length, uint32_t time_out); //26.接收数据+等待时间-同步
|
|
|
-enum Result esp32_query_signal(int * RSSI); //27.查询已连接WiFi的信号强度
|
|
|
-enum Result esp32_query_signal_sync(int * RSSI); //28.查询已连接WiFi的信号强度-同步
|
|
|
-enum Result esp32_ready(void); //29.模块是否启动
|
|
|
-enum Result esp32_ready_sync(void);
|
|
|
|
|
|
-enum Result esp32_handle_data(uint8_t * data, uint16_t send_data_length, uint16_t *recv_data_length); //30.处理数据(数据发送+等待发送结果)
|
|
|
-enum Result esp32_handle_data_sync(uint8_t * data, uint16_t send_data_length, uint16_t *recv_data_length);
|
|
|
+enum Result esp32_query_signal(int * RSSI); //24.查询已连接WiFi的信号强度
|
|
|
+enum Result esp32_query_signal_sync(int * RSSI); //25.查询已连接WiFi的信号强度-同步
|
|
|
+enum Result esp32_ready(void); //26.模块是否启动-初始化处理专用
|
|
|
+enum Result esp32_ready_sync(void); //27.模块是否启动-同步
|
|
|
+
|
|
|
+enum Result esp32_handle_data(uint8_t * data, uint16_t send_data_length, uint16_t *recv_data_length); //28.处理数据(数据发送+等待发送结果)
|
|
|
+enum Result esp32_handle_data_sync(uint8_t * data, uint16_t send_data_length, uint16_t *recv_data_length); //29.处理数据(数据发送+等待发送结果)-同步
|
|
|
+
|
|
|
+enum Result esp32_recv_ready(void); //30.判断模块是否正常启动
|
|
|
+enum Result esp32_recv_ready_with_time(uint32_t time_out); //31.判断模块是否正常启动+等待时间
|
|
|
|
|
|
/*************************************************** AT指令相关函数 ***************************************************/
|
|
|
|
|
|
@@ -145,13 +146,46 @@ static enum Result success(void)
|
|
|
return Result_Success; //结果
|
|
|
}
|
|
|
|
|
|
+// 返回成功结果
|
|
|
+static enum Result success_no_log(void)
|
|
|
+{
|
|
|
+ // 成功
|
|
|
+ setStatus(Status_Success);
|
|
|
+ // 结果
|
|
|
+ return Result_Success;
|
|
|
+}
|
|
|
+
|
|
|
+//// 返回失败结果
|
|
|
+//static enum Result failed(void)
|
|
|
+//{
|
|
|
+// setStatus(Status_Failed); //失败
|
|
|
+// return Result_Failed; //结果
|
|
|
+//}
|
|
|
+
|
|
|
// 返回失败结果
|
|
|
-static enum Result failed(void)
|
|
|
+static enum Result failed(int type)
|
|
|
{
|
|
|
- setStatus(Status_Failed); //失败
|
|
|
- return Result_Failed; //结果
|
|
|
+ // 失败
|
|
|
+ setStatus(Status_Failed);
|
|
|
+ if(type == 1)
|
|
|
+ {
|
|
|
+ Log_Printf_Debug("activeID: %d, error: 接收结果过期,请重置状态\r\n", esp32.activeID); // 打印日志
|
|
|
+ }
|
|
|
+ else if(type == 2)
|
|
|
+ {
|
|
|
+ // 发送日志
|
|
|
+ Log_Printf_Debug("activeID: %d, AT接收失败: %d\r\n", esp32.activeID, AT_result_length());
|
|
|
+ Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Log_Printf_Debug("activeID: %d, error: 未知错误类型\r\n", esp32.activeID); // 打印日志
|
|
|
+ }
|
|
|
+ // 失败结果
|
|
|
+ return Result_Failed;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
// 发送指令并改变状态
|
|
|
enum Result send_at(char * cmd, uint8_t activeID)
|
|
|
{
|
|
|
@@ -234,7 +268,7 @@ enum Result esp32_set_lightsleep_wakeup(uint8_t source, uint8_t gpio, uint8_t mo
|
|
|
else if(getStatus() != Status_Sending) // 上一次的结果没有清除,返回错误,为了保证时效性,需要重置状态。重新调用
|
|
|
{
|
|
|
Log_Printf_Debug("返回结果过期,请重置状态\r\n");// 打印日志
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(1); // 失败
|
|
|
}
|
|
|
else if(getTimerMs() > time) // 正在发送状态。判断超时
|
|
|
{
|
|
|
@@ -254,7 +288,7 @@ enum Result esp32_set_lightsleep_wakeup(uint8_t source, uint8_t gpio, uint8_t mo
|
|
|
// 发送日志
|
|
|
Log_Printf_Debug("AT返回: %d\r\n", AT_result_length());
|
|
|
Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(2); // 失败
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
@@ -303,7 +337,7 @@ enum Result esp32_set_sleep(uint8_t mode)
|
|
|
else if(getStatus() != Status_Sending) // 上一次的结果没有清除,返回错误,为了保证时效性,需要重置状态。重新调用
|
|
|
{
|
|
|
Log_Printf_Debug("返回结果过期,请重置状态\r\n");// 打印日志
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(1); // 失败
|
|
|
}
|
|
|
else if(getTimerMs() > time) // 正在发送状态。判断超时
|
|
|
{
|
|
|
@@ -323,7 +357,7 @@ enum Result esp32_set_sleep(uint8_t mode)
|
|
|
// 发送日志
|
|
|
Log_Printf_Debug("AT返回: %d\r\n", AT_result_length());
|
|
|
Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(2); // 失败
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
@@ -366,7 +400,7 @@ enum Result esp32_connect_ap(char * id, char * password)
|
|
|
else if(getStatus() != Status_Sending) // 上一次的结果没有清除,返回错误,为了保证时效性,需要重置状态。重新调用
|
|
|
{
|
|
|
Log_Printf_Debug("返回结果过期,请重置状态\r\n");// 打印日志
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(1); // 失败
|
|
|
}
|
|
|
else if(getTimerMs() > time) // 正在发送状态。判断超时
|
|
|
{
|
|
|
@@ -386,7 +420,7 @@ enum Result esp32_connect_ap(char * id, char * password)
|
|
|
// 发送日志
|
|
|
Log_Printf_Debug("AT返回: %d\r\n", AT_result_length());
|
|
|
Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(2); // 失败
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
@@ -433,7 +467,7 @@ enum Result esp32_set_cipmode(uint8_t mode)
|
|
|
else if(getStatus() != Status_Sending) // 上一次的结果没有清除,返回错误,为了保证时效性,需要重置状态。重新调用
|
|
|
{
|
|
|
Log_Printf_Debug("返回结果过期,请重置状态\r\n");// 打印日志
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(1); // 失败
|
|
|
}
|
|
|
else if(getTimerMs() > time) // 正在发送状态。判断超时
|
|
|
{
|
|
|
@@ -453,7 +487,7 @@ enum Result esp32_set_cipmode(uint8_t mode)
|
|
|
// 发送日志
|
|
|
Log_Printf_Debug("AT返回: %d\r\n", AT_result_length());
|
|
|
Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(2); // 失败
|
|
|
}
|
|
|
return result;
|
|
|
|
|
|
@@ -497,7 +531,7 @@ enum Result esp32_connect_network(char * service_type, char * IP_address, uint16
|
|
|
else if(getStatus() != Status_Sending) // 上一次的结果没有清除,返回错误,为了保证时效性,需要重置状态。重新调用
|
|
|
{
|
|
|
Log_Printf_Debug("返回结果过期,请重置状态\r\n");// 打印日志
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(1); // 失败
|
|
|
}
|
|
|
else if(getTimerMs() > time) // 正在发送状态。判断超时
|
|
|
{
|
|
|
@@ -517,7 +551,7 @@ enum Result esp32_connect_network(char * service_type, char * IP_address, uint16
|
|
|
// 发送日志
|
|
|
Log_Printf_Debug("AT返回: %d\r\n", AT_result_length());
|
|
|
Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(2); // 失败
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
@@ -560,7 +594,7 @@ enum Result esp32_query_id_signal(char * ID, int * RSSI)
|
|
|
else if(getStatus() != Status_Sending) // 上一次的结果没有清除,返回错误,为了保证时效性,需要重置状态。重新调用
|
|
|
{
|
|
|
Log_Printf_Debug("返回结果过期,请重置状态\r\n");// 打印日志
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(1); // 失败
|
|
|
}
|
|
|
else if(getTimerMs() > time) // 正在发送状态。判断超时
|
|
|
{
|
|
|
@@ -592,7 +626,7 @@ enum Result esp32_query_id_signal(char * ID, int * RSSI)
|
|
|
// 发送日志
|
|
|
Log_Printf_Debug("返回: %d\r\n", AT_result_length());
|
|
|
Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(2); // 失败
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -635,7 +669,7 @@ enum Result esp32_close_network(void)
|
|
|
else if(getStatus() != Status_Sending) // 上一次的结果没有清除,返回错误,为了保证时效性,需要重置状态。重新调用
|
|
|
{
|
|
|
Log_Printf_Debug("返回结果过期,请重置状态\r\n");// 打印日志
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(1); // 失败
|
|
|
}
|
|
|
else if(getTimerMs() > time) // 正在发送状态。判断超时
|
|
|
{
|
|
|
@@ -706,7 +740,7 @@ enum Result esp32_autoconnect_ap(uint8_t mode)
|
|
|
else if(getStatus() != Status_Sending) // 上一次的结果没有清除,返回错误,为了保证时效性,需要重置状态。重新调用
|
|
|
{
|
|
|
Log_Printf_Debug("返回结果过期,请重置状态\r\n");// 打印日志
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(1); // 失败
|
|
|
}
|
|
|
else if(getTimerMs() > time) // 正在发送状态。判断超时
|
|
|
{
|
|
|
@@ -726,7 +760,7 @@ enum Result esp32_autoconnect_ap(uint8_t mode)
|
|
|
// 发送日志
|
|
|
Log_Printf_Debug("AT返回: %d\r\n", AT_result_length());
|
|
|
Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(2); // 失败
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
@@ -767,7 +801,7 @@ enum Result esp32_close_ap(void)
|
|
|
else if(getStatus() != Status_Sending) // 上一次的结果没有清除,返回错误,为了保证时效性,需要重置状态。重新调用
|
|
|
{
|
|
|
Log_Printf_Debug("返回结果过期,请重置状态\r\n");// 打印日志
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(1); // 失败
|
|
|
}
|
|
|
else if(getTimerMs() > time) // 正在发送状态。判断超时
|
|
|
{
|
|
|
@@ -787,7 +821,7 @@ enum Result esp32_close_ap(void)
|
|
|
// 发送日志
|
|
|
Log_Printf_Debug("AT返回: %d\r\n", AT_result_length());
|
|
|
Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(2); // 失败
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
@@ -813,7 +847,7 @@ enum Result esp32_close_ap_sync(void)
|
|
|
|
|
|
|
|
|
/******************************************************************************
|
|
|
-* 26.查询WiFi信号强度
|
|
|
+* 24.查询WiFi信号强度
|
|
|
* param1: RSSI信号强度值
|
|
|
*
|
|
|
*******************************************************************************/
|
|
|
@@ -832,7 +866,7 @@ enum Result esp32_query_signal(int * RSSI)
|
|
|
else if(getStatus() != Status_Sending) // 上一次的结果没有清除,返回错误,为了保证时效性,需要重置状态。重新调用
|
|
|
{
|
|
|
Log_Printf_Debug("返回结果过期,请重置状态\r\n");// 打印日志
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(1); // 失败
|
|
|
}
|
|
|
else if(getTimerMs() > time) // 正在发送状态。判断超时
|
|
|
{
|
|
|
@@ -865,7 +899,7 @@ enum Result esp32_query_signal(int * RSSI)
|
|
|
// 发送日志
|
|
|
Log_Printf_Debug("返回: %d\r\n", AT_result_length());
|
|
|
Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(2); // 失败
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -874,12 +908,12 @@ enum Result esp32_query_signal(int * RSSI)
|
|
|
// 发送日志
|
|
|
Log_Printf_Debug("返回: %d\r\n", AT_result_length());
|
|
|
Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(2); // 失败
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
-//26.查询WiFi信号强度-同步
|
|
|
+//25.查询WiFi信号强度-同步
|
|
|
enum Result esp32_query_signal_sync(int * RSSI)
|
|
|
{
|
|
|
|
|
|
@@ -898,7 +932,7 @@ enum Result esp32_query_signal_sync(int * RSSI)
|
|
|
}
|
|
|
|
|
|
/******************************************************************************
|
|
|
-* 29.模块是否重启
|
|
|
+* 26.模块是否重启
|
|
|
*
|
|
|
*******************************************************************************/
|
|
|
enum Result esp32_ready(void)
|
|
|
@@ -923,6 +957,7 @@ enum Result esp32_ready(void)
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+// 27.模块是否重启
|
|
|
enum Result esp32_ready_sync(void)
|
|
|
{
|
|
|
|
|
|
@@ -941,7 +976,7 @@ enum Result esp32_ready_sync(void)
|
|
|
}
|
|
|
|
|
|
/******************************************************************************
|
|
|
-* 30.数据处理
|
|
|
+* 28.数据处理
|
|
|
*
|
|
|
*******************************************************************************/
|
|
|
enum Result esp32_handle_data(uint8_t * data, uint16_t send_data_length, uint16_t *recv_data_length)
|
|
|
@@ -959,7 +994,7 @@ enum Result esp32_handle_data(uint8_t * data, uint16_t send_data_length, uint16_
|
|
|
else if(getStatus() != Status_Sending) // 上一次的结果没有清除,返回错误,为了保证时效性,需要重置状态。重新调用
|
|
|
{
|
|
|
Log_Printf_Debug("返回结果过期,请重置状态\r\n");// 打印日志
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(1); // 失败
|
|
|
}
|
|
|
else if(getTimerMs() > time) // 正在发送状态。判断超时
|
|
|
{
|
|
|
@@ -1029,11 +1064,11 @@ enum Result esp32_handle_data(uint8_t * data, uint16_t send_data_length, uint16_
|
|
|
// 发送日志
|
|
|
Log_Printf_Debug("AT返回: %d\r\n", AT_result_length());
|
|
|
Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
- result = failed(); // 失败
|
|
|
+ result = failed(2); // 失败
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
-
|
|
|
+//29.数据处理-同步
|
|
|
enum Result esp32_handle_data_sync(uint8_t * data, uint16_t send_data_length, uint16_t *recv_data_length)
|
|
|
{
|
|
|
|
|
|
@@ -1051,6 +1086,65 @@ enum Result esp32_handle_data_sync(uint8_t * data, uint16_t send_data_length, ui
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+/******************************************************************************
|
|
|
+* 30.判断模块是否正常启动
|
|
|
+*
|
|
|
+*******************************************************************************/
|
|
|
+enum Result esp32_recv_ready(void)
|
|
|
+{
|
|
|
+ // 设置AT为使用中,防止被其他程序占用
|
|
|
+ AT_Set_Status(AT_Status_Using);
|
|
|
+ enum Result result = Result_None;
|
|
|
+ // 校验参数
|
|
|
+ char cmp[20];
|
|
|
+ sprintf(cmp, "ready"); // 拼接AT指令
|
|
|
+ // 判断是否接收到
|
|
|
+ if(strstr((char * )AT_result(), cmp) != NULL)
|
|
|
+ {
|
|
|
+ // 发送日志
|
|
|
+ Log_Printf_Debug("AT返回: %d\r\n", AT_result_length());
|
|
|
+ Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
+ // 成功
|
|
|
+ result = Result_Success;
|
|
|
+ // 清理一下AT返回结果缓存
|
|
|
+ AT_Clear_Result();
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+}
|
|
|
+//31.判断模块是否正常启动+等待时间
|
|
|
+enum Result esp32_recv_ready_with_time(uint32_t time_out)
|
|
|
+{
|
|
|
+ enum Result result = Result_None;
|
|
|
+ int activeID = 99, time = time_out; // 活动ID, 超时时间
|
|
|
+ // 校验ID
|
|
|
+ if(!verifyActiveID(activeID)){ return Result_Failed; }
|
|
|
+ // 判断状态
|
|
|
+ if(getStatus() == Status_None) // 空闲状态
|
|
|
+ {
|
|
|
+ setStatus(Status_Sending);
|
|
|
+ }
|
|
|
+ else if(getStatus() != Status_Sending) // 上一次的结果没有清除,返回错误,为了保证时效性,需要重置状态。重新调用
|
|
|
+ {
|
|
|
+ result = failed(1); // 失败
|
|
|
+ }
|
|
|
+ else if(getTimerMs() > time) // 正在发送状态。判断超时
|
|
|
+ {
|
|
|
+ result = overtime(); // 超时
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // 接收数据
|
|
|
+ result = esp32.recv_ready();
|
|
|
+ if(result == Result_Success)
|
|
|
+ {
|
|
|
+ result = success_no_log(); // 成功
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
///***************************************** 测试用*****************************************/
|
|
|
//enum Result esp32_at(void)
|
|
|
//{
|
|
|
@@ -1146,6 +1240,8 @@ struct ESP32_Struct esp32=
|
|
|
.ready_sync = esp32_ready_sync,
|
|
|
.handle_data = esp32_handle_data,
|
|
|
.handle_data_sync = esp32_handle_data_sync,
|
|
|
+ .recv_ready = esp32_recv_ready,
|
|
|
+ .recv_ready_with_time = esp32_recv_ready_with_time,
|
|
|
|
|
|
};
|
|
|
|