|
|
@@ -11,7 +11,7 @@
|
|
|
#include "Common_Util.h"
|
|
|
#include "Log_Module.h"
|
|
|
#include "At_Module.h"
|
|
|
-
|
|
|
+#include "Tuoreniot.h"
|
|
|
|
|
|
/******************************************* 基于ESP32_C3模组的相关方法声明 *******************************************/
|
|
|
|
|
|
@@ -58,6 +58,10 @@ enum Result esp32_set_mode(uint8_t mode); //32.
|
|
|
enum Result esp32_set_mode_sync(uint8_t mode); //33.设置WiFi模式-同步
|
|
|
|
|
|
enum Result esp32_query_mac_address(char * MAC_address); //34.查询WiFi模块的MAC地址
|
|
|
+enum Result esp32_set_ip_address(char *IP_address); //35.设置WiFi模块的IP地址
|
|
|
+enum Result esp32_set_dhcp(uint8_t operate,uint8_t mode); //36.设置启用DHCP模式
|
|
|
+enum Result esp32_set_gateway(char *IP_address, char *Gateway, char *Netmask); //37.设置WiFi模块的IP地址、网关、掩码
|
|
|
+
|
|
|
|
|
|
/*************************************************** AT指令相关函数 ***************************************************/
|
|
|
|
|
|
@@ -1279,6 +1283,146 @@ enum Result esp32_query_mac_address(char * MAC_address)
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+/******************************************************************************
|
|
|
+* 35.设置WiFi模块的IP地址
|
|
|
+* param1: IP_address IP地址
|
|
|
+*
|
|
|
+*******************************************************************************/
|
|
|
+enum Result esp32_set_ip_address(char *IP_address)
|
|
|
+{
|
|
|
+ enum Result result = Result_None;
|
|
|
+ int activeID = 35, time=500; // 活动ID, 超时时间
|
|
|
+
|
|
|
+ // 校验ID
|
|
|
+ if(!verifyActiveID(activeID)){ return Result_Failed; }
|
|
|
+ // 判断状态
|
|
|
+ if(getStatus() == Status_None) // 空闲状态
|
|
|
+ {
|
|
|
+ sprintf(AT_CMD, "AT+CIPSTA=\"%s\"\r\n", IP_address); // 拼接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;
|
|
|
+}
|
|
|
+
|
|
|
+/*************************************************************************************
|
|
|
+* 36.设置DHCP模式
|
|
|
+* param1: operate(0:禁用DHCP模式 1:启用DHCP模式)
|
|
|
+* param2: mode(Bit0: Station 的 DHCP,Bit1: SoftAP 的 DHCP)
|
|
|
+*
|
|
|
+**************************************************************************************/
|
|
|
+enum Result esp32_set_dhcp(uint8_t operate,uint8_t mode)
|
|
|
+{
|
|
|
+ enum Result result = Result_None;
|
|
|
+ int activeID = 36, time=500; // 活动ID, 超时时间
|
|
|
+ // 校验ID
|
|
|
+ if(!verifyActiveID(activeID)){ return Result_Failed; }
|
|
|
+ // 判断状态
|
|
|
+ if(getStatus() == Status_None) // 空闲状态
|
|
|
+ {
|
|
|
+ sprintf(AT_CMD, "AT+CWDHCP=%d,%d\r\n",operate, 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;
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+/******************************************************************************
|
|
|
+* 37.设置WiFi模块的IP地址、网关、掩码
|
|
|
+* param1: IP_address IP地址
|
|
|
+* param2: Gateway 网关
|
|
|
+* param3: Netmask 子网掩码
|
|
|
+*******************************************************************************/
|
|
|
+
|
|
|
+enum Result esp32_set_gateway(char *IP_address, char *Gateway, char *Netmask)
|
|
|
+{
|
|
|
+ enum Result result = Result_None;
|
|
|
+ int activeID = 37, time=500; // 活动ID, 超时时间
|
|
|
+
|
|
|
+ // 校验ID
|
|
|
+ if(!verifyActiveID(activeID)){ return Result_Failed; }
|
|
|
+ // 判断状态
|
|
|
+ if(getStatus() == Status_None) // 空闲状态
|
|
|
+ {
|
|
|
+ sprintf(AT_CMD, "AT+CIPSTA=\"%s\",\"%s\",\"%s\"\r\n", IP_address,Gateway,Netmask); // 拼接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;
|
|
|
+}
|
|
|
|
|
|
/***************************************** 基于ESP32_C3模组的相关结构体声明 *****************************************/
|
|
|
|
|
|
@@ -1322,6 +1466,10 @@ struct ESP32_Struct esp32=
|
|
|
.set_mode = esp32_set_mode,
|
|
|
.set_mode_sync = esp32_set_mode_sync,
|
|
|
.query_mac_address = esp32_query_mac_address,
|
|
|
+ .set_ip_address = esp32_set_ip_address,
|
|
|
+ .set_dhcp = esp32_set_dhcp,
|
|
|
+ .set_gateway = esp32_set_gateway,
|
|
|
+
|
|
|
};
|
|
|
|
|
|
#endif
|