|
|
@@ -54,6 +54,9 @@ enum Result esp32_handle_data_sync(uint8_t * data, uint16_t send_data_length, ui
|
|
|
enum Result esp32_recv_ready(void); //30.判断模块是否正常启动
|
|
|
enum Result esp32_recv_ready_with_time(uint32_t time_out); //31.判断模块是否正常启动+等待时间
|
|
|
|
|
|
+enum Result esp32_set_mode(uint8_t mode); //32.设置WiFi模式
|
|
|
+enum Result esp32_set_mode_sync(uint8_t mode); //33.设置WiFi模式-同步
|
|
|
+
|
|
|
/*************************************************** AT指令相关函数 ***************************************************/
|
|
|
|
|
|
//AT指令数组
|
|
|
@@ -1148,65 +1151,72 @@ enum Result esp32_recv_ready_with_time(uint32_t time_out)
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+/*************************************************************************************
|
|
|
+* 32.设置WiFi工作模式
|
|
|
+* param1: mode(0:无WiFi模式 1:Station模式 2:SoftAP模式 3:SoftAP+Station模式)
|
|
|
+*
|
|
|
+**************************************************************************************/
|
|
|
+enum Result esp32_set_mode(uint8_t mode)
|
|
|
+{
|
|
|
+ enum Result result = Result_None;
|
|
|
+ int activeID = 88, time=500; // 活动ID, 超时时间
|
|
|
+ //校验参数
|
|
|
+ if(mode != 1) //本模块采用Station模式
|
|
|
+ {
|
|
|
+ Log_Printf_Debug("set mode error!\r\n");
|
|
|
+ return Result_Failed;
|
|
|
+ }
|
|
|
+ // 校验ID
|
|
|
+ if(!verifyActiveID(activeID)){ return Result_Failed; }
|
|
|
+ // 判断状态
|
|
|
+ if(getStatus() == Status_None) // 空闲状态
|
|
|
+ {
|
|
|
+ sprintf(AT_CMD, "AT+CWMODE=%d\r\n", mode); // 拼接AT指令
|
|
|
+ result = send_at(AT_CMD, activeID);
|
|
|
+ }
|
|
|
+ else if(getStatus() != Status_Sending) // 上一次的结果没有清除,返回错误,为了保证时效性,需要重置状态。重新调用
|
|
|
+ {
|
|
|
+ Log_Printf_Debug("返回结果过期,请重置状态\r\n");// 打印日志
|
|
|
+ result = failed(1); // 失败
|
|
|
+ }
|
|
|
+ else if(getTimerMs() > time) // 正在发送状态。判断超时
|
|
|
+ {
|
|
|
+ Log_Printf_Debug("AT指令返回超时\r\n"); // 打印日志
|
|
|
+ result = overtime(); // 超时
|
|
|
+ }
|
|
|
+ else if(strstr((char * )AT_result(), "OK\r\n") != NULL) // 查询是否返回
|
|
|
+ {
|
|
|
+ // 发送日志
|
|
|
+ Log_Printf_Debug("AT返回: %d\r\n", AT_result_length());
|
|
|
+ Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
+ result = success(); // 成功
|
|
|
+ }
|
|
|
+ else if(strstr((char * )AT_result(), "ERROR\r\n") != NULL) // 查询是否返回
|
|
|
+ {
|
|
|
+ // 发送日志
|
|
|
+ Log_Printf_Debug("AT返回: %d\r\n", AT_result_length());
|
|
|
+ Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
+ result = failed(2); // 失败
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+}
|
|
|
|
|
|
-
|
|
|
-///***************************************** 测试用*****************************************/
|
|
|
-//enum Result esp32_at(void)
|
|
|
-//{
|
|
|
-// enum Result result = Result_None;
|
|
|
-// int activeID = 88, time=500; // 活动ID, 超时时间
|
|
|
-//
|
|
|
-// // 校验ID
|
|
|
-// if(!verifyActiveID(activeID)){ return Result_Failed; }
|
|
|
-// // 判断状态
|
|
|
-// if(getStatus() == Status_None) // 空闲状态
|
|
|
-// {
|
|
|
-// sprintf(AT_CMD, "AT\r\n"); // 拼接AT指令
|
|
|
-// result = send_at(AT_CMD, activeID);
|
|
|
-// }
|
|
|
-// else if(getStatus() != Status_Sending) // 上一次的结果没有清除,返回错误,为了保证时效性,需要重置状态。重新调用
|
|
|
-// {
|
|
|
-// Log_Printf_Debug("返回结果过期,请重置状态\r\n");// 打印日志
|
|
|
-// result = failed(); // 失败
|
|
|
-// }
|
|
|
-// else if(getTimerMs() > time) // 正在发送状态。判断超时
|
|
|
-// {
|
|
|
-// Log_Printf_Debug("AT指令返回超时\r\n"); // 打印日志
|
|
|
-// result = overtime(); // 超时
|
|
|
-// }
|
|
|
-// else if(strstr((char * )AT_result(), "OK\r\n") != NULL) // 查询是否返回
|
|
|
-// {
|
|
|
-// // 发送日志
|
|
|
-// Log_Printf_Debug("测试命令AT返回: %d\r\n", AT_result_length());
|
|
|
-// Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
-// result = success(); // 成功
|
|
|
-//
|
|
|
-// }
|
|
|
-// else if(strstr((char * )AT_result(), "ERROR\r\n") != NULL) // 查询是否返回
|
|
|
-// {
|
|
|
-// // 发送日志
|
|
|
-// Log_Printf_Debug("测试命令AT返回: %d\r\n", AT_result_length());
|
|
|
-// Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
-// result = failed(); // 失败
|
|
|
-// }
|
|
|
-// return result;
|
|
|
-//}
|
|
|
-
|
|
|
-//enum Result esp32_at_sync(void)
|
|
|
-//{
|
|
|
-// enum Result result = Result_None;
|
|
|
-// while(1)
|
|
|
-// {
|
|
|
-// result = esp32_at();
|
|
|
-// if(result != Result_None)
|
|
|
-// {
|
|
|
-// // 重置
|
|
|
-// esp32.reset();
|
|
|
-// break;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// return result;
|
|
|
-//}
|
|
|
+//33.设置WiFi工作模式
|
|
|
+enum Result esp32_set_mode_sync(uint8_t mode)
|
|
|
+{
|
|
|
+ enum Result result = Result_None;
|
|
|
+ while(1)
|
|
|
+ {
|
|
|
+ result = esp32_set_mode(mode);
|
|
|
+ if(result != Result_None)
|
|
|
+ {
|
|
|
+ // 重置
|
|
|
+ esp32.reset();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+}
|
|
|
|
|
|
/***************************************** 基于ESP32_C3模组的相关结构体声明 *****************************************/
|
|
|
|
|
|
@@ -1247,7 +1257,8 @@ struct ESP32_Struct esp32=
|
|
|
.handle_data_sync = esp32_handle_data_sync,
|
|
|
.recv_ready = esp32_recv_ready,
|
|
|
.recv_ready_with_time = esp32_recv_ready_with_time,
|
|
|
-
|
|
|
+ .set_mode = esp32_set_mode,
|
|
|
+ .set_mode_sync = esp32_set_mode_sync,
|
|
|
};
|
|
|
|
|
|
|