|
|
@@ -34,7 +34,7 @@ enum Result esp32_connect_network(char * service_type, char * IP_address, uint16
|
|
|
enum Result esp32_connect_network_sync(char * service_type, char * IP_address, uint16_t remote_port); //15.连接TCP/UDP服务器-同步
|
|
|
|
|
|
enum Result esp32_query_id_signal(char * ID, int * RSSI); //16.查询指定ID的WiFi信号强度
|
|
|
-enum Result esp32_query_id_signal_sync(char * ID, int * RSSI); //17.查询指定ID的WiFi信号强度-同步
|
|
|
+enum Result esp32_query_id_signal_sync(char * ID, int * RSSI); //17.查询指定ID的WiFi信号强度-同步
|
|
|
|
|
|
enum Result esp32_close_network(void); //18.关闭TCP/UDP连接
|
|
|
enum Result esp32_close_network_sync(void); //19.关闭TCP/UDP连接-同步
|
|
|
@@ -57,6 +57,8 @@ 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模式-同步
|
|
|
|
|
|
+enum Result esp32_query_mac_address(char * MAC_address); //34.查询WiFi模块的MAC地址
|
|
|
+
|
|
|
/*************************************************** AT指令相关函数 ***************************************************/
|
|
|
|
|
|
//AT指令数组
|
|
|
@@ -81,7 +83,6 @@ static uint8_t send_at_string(char * cmd)
|
|
|
return state;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/******************************************* 基于ESP32_C3模组的相关执行函数 *********************************************/
|
|
|
|
|
|
// 获取状态
|
|
|
@@ -257,7 +258,7 @@ void esp32_enter_lightsleep(void)
|
|
|
enum Result esp32_set_lightsleep_wakeup(uint8_t source, uint8_t gpio, uint8_t mode)
|
|
|
{
|
|
|
enum Result result = Result_None;
|
|
|
- int activeID = 11, time=500; // 活动ID, 超时时间
|
|
|
+ int activeID = 6, time=500; // 活动ID, 超时时间
|
|
|
//校验参数
|
|
|
if(source != 2) //本模块浅休眠唤醒模式采用GPIO唤醒
|
|
|
{
|
|
|
@@ -320,13 +321,13 @@ enum Result esp32_set_lightsleep_wakeup_sync(uint8_t source, uint8_t gpio, uint8
|
|
|
/******************************************************************************
|
|
|
* 8.设置睡眠模式
|
|
|
* param1: mode 代表睡眠模式 (0:禁用睡眠模式 1:Modem-sleep模式
|
|
|
- 2:Light-sleep模式 3:Modem-sleep listen interval模式)
|
|
|
+* 2:Light-sleep模式 3:Modem-sleep listen interval模式)
|
|
|
*
|
|
|
*******************************************************************************/
|
|
|
enum Result esp32_set_sleep(uint8_t mode)
|
|
|
{
|
|
|
enum Result result = Result_None;
|
|
|
- int activeID = 12, time=500; // 活动ID, 超时时间
|
|
|
+ int activeID = 8, time=500; // 活动ID, 超时时间
|
|
|
//校验参数
|
|
|
if(mode != 2) //本模块采用浅休眠模式
|
|
|
{
|
|
|
@@ -395,7 +396,7 @@ enum Result esp32_set_sleep_sync(uint8_t mode)
|
|
|
enum Result esp32_connect_ap(char * id, char * password)
|
|
|
{
|
|
|
enum Result result = Result_None;
|
|
|
- int activeID = 13, time=15000; // 活动ID, 超时时间
|
|
|
+ int activeID = 10, time=15000; // 活动ID, 超时时间
|
|
|
// 校验ID
|
|
|
if(!verifyActiveID(activeID)){ return Result_Failed; }
|
|
|
// 判断状态
|
|
|
@@ -456,7 +457,7 @@ enum Result esp32_connect_ap_sync(char * id, char * password)
|
|
|
enum Result esp32_set_cipmode(uint8_t mode)
|
|
|
{
|
|
|
enum Result result = Result_None;
|
|
|
- int activeID = 14, time=500; // 活动ID, 超时时间
|
|
|
+ int activeID = 12, time=500; // 活动ID, 超时时间
|
|
|
//校验参数
|
|
|
if(mode != 0) //本模块采用普通模式
|
|
|
{
|
|
|
@@ -526,7 +527,7 @@ enum Result esp32_set_cipmode_sync(uint8_t mode)
|
|
|
enum Result esp32_connect_network(char * service_type, char * IP_address, uint16_t remote_port)
|
|
|
{
|
|
|
enum Result result = Result_None;
|
|
|
- int activeID = 15, time=10000; // 活动ID, 超时时间
|
|
|
+ int activeID = 14, time=10000; // 活动ID, 超时时间
|
|
|
// 校验ID
|
|
|
if(!verifyActiveID(activeID)){ return Result_Failed; }
|
|
|
// 判断状态
|
|
|
@@ -589,7 +590,7 @@ enum Result esp32_query_id_signal(char * ID, int * RSSI)
|
|
|
{
|
|
|
|
|
|
enum Result result = Result_None;
|
|
|
- int activeID = 66, time=5000; // 活动ID, 超时时间
|
|
|
+ int activeID = 16, time=5000; // 活动ID, 超时时间
|
|
|
// 校验ID
|
|
|
if(!verifyActiveID(activeID)){ return Result_Failed; }
|
|
|
// 判断状态
|
|
|
@@ -665,7 +666,7 @@ enum Result esp32_query_id_signal_sync(char * ID, int * RSSI)
|
|
|
enum Result esp32_close_network(void)
|
|
|
{
|
|
|
enum Result result = Result_None;
|
|
|
- int activeID = 17, time=1000; // 活动ID, 超时时间
|
|
|
+ int activeID = 18, time=1000; // 活动ID, 超时时间
|
|
|
// 校验ID
|
|
|
if(!verifyActiveID(activeID)){ return Result_Failed; }
|
|
|
// 判断状态
|
|
|
@@ -730,7 +731,7 @@ enum Result esp32_close_network_sync(void)
|
|
|
enum Result esp32_autoconnect_ap(uint8_t mode)
|
|
|
{
|
|
|
enum Result result = Result_None;
|
|
|
- int activeID = 18, time=500; // 活动ID, 超时时间
|
|
|
+ int activeID = 20, time=500; // 活动ID, 超时时间
|
|
|
//校验参数
|
|
|
if(mode != 0) //本系统关闭自动连接AP模式
|
|
|
{
|
|
|
@@ -797,7 +798,7 @@ enum Result esp32_autoconnect_ap_sync(uint8_t mode)
|
|
|
enum Result esp32_close_ap(void)
|
|
|
{
|
|
|
enum Result result = Result_None;
|
|
|
- int activeID = 17, time=500; // 活动ID, 超时时间
|
|
|
+ int activeID = 22, time=500; // 活动ID, 超时时间
|
|
|
// 校验ID
|
|
|
if(!verifyActiveID(activeID)){ return Result_Failed; }
|
|
|
// 判断状态
|
|
|
@@ -862,7 +863,7 @@ enum Result esp32_close_ap_sync(void)
|
|
|
enum Result esp32_query_signal(int * RSSI)
|
|
|
{
|
|
|
enum Result result = Result_None;
|
|
|
- int activeID = 19, time=5000; // 活动ID, 超时时间
|
|
|
+ int activeID = 24, time=5000; // 活动ID, 超时时间
|
|
|
// 校验ID
|
|
|
if(!verifyActiveID(activeID)){ return Result_Failed; }
|
|
|
// 判断状态
|
|
|
@@ -899,7 +900,7 @@ enum Result esp32_query_signal(int * RSSI)
|
|
|
* RSSI = atoi(strtok_r(NULL, split, &saveptr));
|
|
|
|
|
|
//打印信号强度值
|
|
|
- Log_Printf_Debug("WiFi信号强度RSSI值: %d\r\n", *RSSI);
|
|
|
+ Log_Printf_Debug("WiFi信号强度RSSI值: %d\r\n", * RSSI);
|
|
|
result = success(); // 成功
|
|
|
}
|
|
|
else
|
|
|
@@ -990,7 +991,7 @@ enum Result esp32_ready_sync(void)
|
|
|
enum Result esp32_handle_data(uint8_t * data, uint16_t send_data_length, uint16_t *recv_data_length)
|
|
|
{
|
|
|
enum Result result = Result_None;
|
|
|
- int activeID = 30, time=5000; // 活动ID, 超时时间
|
|
|
+ int activeID = 28, time=5000; // 活动ID, 超时时间
|
|
|
// 校验ID
|
|
|
if(!verifyActiveID(activeID)){ return Result_Failed; }
|
|
|
// 判断状态
|
|
|
@@ -1123,7 +1124,7 @@ enum Result esp32_recv_ready(void)
|
|
|
enum Result esp32_recv_ready_with_time(uint32_t time_out)
|
|
|
{
|
|
|
enum Result result = Result_None;
|
|
|
- int activeID = 99, time = time_out; // 活动ID, 超时时间
|
|
|
+ int activeID = 31, time = time_out; // 活动ID, 超时时间
|
|
|
// 校验ID
|
|
|
if(!verifyActiveID(activeID)){ return Result_Failed; }
|
|
|
// 判断状态
|
|
|
@@ -1159,7 +1160,7 @@ enum Result esp32_recv_ready_with_time(uint32_t time_out)
|
|
|
enum Result esp32_set_mode(uint8_t mode)
|
|
|
{
|
|
|
enum Result result = Result_None;
|
|
|
- int activeID = 88, time=500; // 活动ID, 超时时间
|
|
|
+ int activeID = 32, time=500; // 活动ID, 超时时间
|
|
|
//校验参数
|
|
|
if(mode != 1) //本模块采用Station模式
|
|
|
{
|
|
|
@@ -1218,6 +1219,66 @@ enum Result esp32_set_mode_sync(uint8_t mode)
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+/*************************************************************************************
|
|
|
+* 34.查询WiFi模块的MAC地址
|
|
|
+* param1: MAC_address(模块的MAC地址)
|
|
|
+*
|
|
|
+**************************************************************************************/
|
|
|
+enum Result esp32_query_mac_address(char * MAC_address)
|
|
|
+{
|
|
|
+ enum Result result = Result_None;
|
|
|
+ int activeID = 34, time=500; // 活动ID, 超时时间
|
|
|
+ // 校验ID
|
|
|
+ if(!verifyActiveID(activeID)){ return Result_Failed; }
|
|
|
+ // 判断状态
|
|
|
+ if(getStatus() == Status_None) // 空闲状态
|
|
|
+ {
|
|
|
+ sprintf(AT_CMD, "AT+CIPSTAMAC?\r\n"); // 拼接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") != NULL) // 查询是否返回
|
|
|
+ {
|
|
|
+
|
|
|
+ // 发送日志
|
|
|
+ Log_Printf_Debug("AT返回: %d\r\n", AT_result_length());
|
|
|
+ Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
+
|
|
|
+ // 处理返回结果
|
|
|
+ char * saveptr = NULL;
|
|
|
+ char * split = "\"";
|
|
|
+
|
|
|
+ strtok_r((char * )AT_result(), split, &saveptr);
|
|
|
+ MAC_address = strtok_r(NULL, split, &saveptr);
|
|
|
+ //校验获取到的MAC地址长度
|
|
|
+ if(strlen( MAC_address) == 17)
|
|
|
+ {
|
|
|
+ //打印信号强度值
|
|
|
+ Log_Printf_Debug("WiFi模块的MAC地址: %s\r\n", MAC_address);
|
|
|
+ result = success(); // 成功
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // 发送日志
|
|
|
+ Log_Printf_Debug("返回: %d\r\n", AT_result_length());
|
|
|
+ Log_SendArray_Debug(AT_result(), AT_result_length());
|
|
|
+ result = failed(2); // 失败
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
/***************************************** 基于ESP32_C3模组的相关结构体声明 *****************************************/
|
|
|
|
|
|
struct ESP32_Struct esp32=
|
|
|
@@ -1259,9 +1320,9 @@ struct ESP32_Struct esp32=
|
|
|
.recv_ready_with_time = esp32_recv_ready_with_time,
|
|
|
.set_mode = esp32_set_mode,
|
|
|
.set_mode_sync = esp32_set_mode_sync,
|
|
|
+ .query_mac_address = esp32_query_mac_address,
|
|
|
};
|
|
|
|
|
|
-
|
|
|
#endif
|
|
|
|
|
|
|