浏览代码

Merge branch 'master' of http://192.168.100.32:3000/longsanlang/Network-Modules

# Conflicts:
#	Drivers/CONFIG.h
龙三郎 7 月之前
父节点
当前提交
150acb3fca

+ 2 - 0
Drivers/Business/PumpBusiness.c

@@ -26,6 +26,7 @@ struct PUMPDICTS_ParamsStruct pump_params; 	// 
 static uint16_t Data_Number = 0; 			// 鑒앴긍뵀
 static uint16_t Data_success_Number = 0;	// 냥묘관
 static uint16_t Data_fail_Number = 0; 		// 呵겨관
+static uint16_t version_Number = 5001; // 경굶뵀-貢쭹궁
 
 int RSRP1=0;
 int RSRQ2=0; 
@@ -93,6 +94,7 @@ void PUMPBUSINESS_ParamsRefresh(void)
 	pump_params.forcast_WillFinished =1;
 	pump_params.forcast_InsufficientAnalgesia = 0;
 	pump_params.forcast_LowPowerForecast = 0;
+	pump_params.version = version_Number;
 }
 
 

+ 44 - 0
Drivers/CONFIG.h

@@ -0,0 +1,44 @@
+#ifndef __CONFIG_H
+#define __CONFIG_H
+#include <stdint.h>
+
+
+#define DEBUG 1 // Debug开关 1是开,0是关
+
+// 测试环境
+//#define TEST_ENV 1
+// 生产环境
+#define PROD_ENV 1
+
+
+
+#define EC800M 1 //4G开关,不能数字开头
+//#define BC260Y 1  // NB
+//#define ESP32 1		//WiFi
+//#define AIWB2	1	//WIFI_AIWB2-32S
+
+
+
+
+// 何龙祥的配置
+//睡眠相关IO配置 
+#define WAKE_GPIO_RCC RCC_APB2Periph_GPIOA
+#define WAKE_GPIO GPIOA
+#define WAKE_GPIO_Pin GPIO_Pin_6 // 睡眠的引脚
+//flash相关配置
+#define FLASH_SIZE 64
+#define FLASH_SAVE_ADDR 0X0800F800
+
+
+
+// 刘艳斌的配置
+//睡眠相关IO配置
+//#define WAKE_GPIO_RCC RCC_APB2Periph_GPIOE
+//#define WAKE_GPIO GPIOE
+//#define WAKE_GPIO_Pin GPIO_Pin_5 // 睡眠的引脚
+////flash相关配置
+//#define FLASH_SIZE 512
+//#define SAVE_ADDR 0X0807E000
+
+
+#endif

+ 1 - 1
Drivers/Modules/ec800m/Ec800m_Regist.c

@@ -218,7 +218,7 @@ static void REGIST_Process(void)
 	switch(pctrl.current_step)
 	{
 		case STEP_START: // 开始
-			PCTRL_GotoStep(&pctrl, STEP_EXIT_SLEEP, "退出休眠");
+			PCTRL_GotoStepWait(&pctrl, STEP_EXIT_SLEEP,3000, "退出休眠");
 			break;
 		case STEP_EXIT_SLEEP: // 退出休眠
 			ec800m.exit_sleep();

+ 20 - 12
Drivers/Modules/esp32/Esp32.Regist.c

@@ -1,4 +1,4 @@
-#include "CONFIG.h"
+ #include "CONFIG.h"
 #if  ESP32
 
 /**
@@ -34,6 +34,7 @@
 //系统初始的WiFi连接参数 
 char INITIAL_WIFI_ID[10]="tuoren";
 char INITIAL_WIFI_PASSWORD[10]="123456789";
+char MAC_ADDRESS[20];	//MAC地址
 
 
 // 注册参数
@@ -66,9 +67,10 @@ enum Step{
 	STEP_EXIT_DEEP_SLEEP, 	// 退出深睡眠
 	STEP_ENTER_DEEP_SLEEP, 	// 进入深睡眠
 	STEP_WAIT,				// 等待
-	
-	STEP_SET_MODE,			// 设置WIFI工作模式
+
 	STEP_CLOSE_AUTOCONNECT,	// 关闭自动连接AP
+	STEP_QUERY_MAC,			// 查询MAC地址
+	STEP_SET_MODE,			// 设置WIFI工作模式
 	STEP_CONNECT_AP,		// 连接AP
 	STEP_QUERY_SIGNAL,		// 查询WiFi信号强度
 	STEP_SET_CIPMODE,		// 设置传输模式
@@ -84,7 +86,6 @@ enum Step{
 };
 
 /******************************************* 注册相关函数 *******************************************/
-
 // 步骤跳转时的监听
 static uint16_t goto_step_event(uint16_t ns)
 {
@@ -110,7 +111,6 @@ static struct PCTRL_Struct pctrl = {
 	.goto_step_listener = goto_step_event,
 };
 
-
 // 备注
 static char info[40];
 // 开始
@@ -221,7 +221,6 @@ static void REGIST_Process()
 		case STEP_EXIT_DEEP_SLEEP:		// 退出深休眠
 						esp32.exit_deepsleep();
 						PCTRL_GotoStepWait(&pctrl, STEP_READY,5, "判断模块是否启动");
-						
 						break;
 		case STEP_READY: 				// 判断模块是否启动
 						result = esp32.recv_ready_with_time(5000);
@@ -239,13 +238,25 @@ static void REGIST_Process()
 						result = esp32.autoconnect_ap(0);
 						if(result == Result_Success)
 						{
-							PCTRL_GotoStep(&pctrl, STEP_SET_MODE, "设置WiFi为Station工作模式");
+							PCTRL_GotoStep(&pctrl, STEP_QUERY_MAC, "查询WiFi模块MAC地址");
 						}
 						else if(result == Result_Failed)
 						{
 							goto_failure("关闭自动连接AP模式失败");
 						}
 						break;
+		case STEP_QUERY_MAC:
+						result = esp32.query_mac_address(MAC_ADDRESS);
+						if(result == Result_Success)
+						{
+							
+							PCTRL_GotoStep(&pctrl, STEP_SET_MODE, "设置WiFi为Station工作模式");
+						}
+						else if(result == Result_Failed)
+						{
+							goto_failure("查询WiFi模块MAC地址失败");
+						}
+						break;
 		case STEP_SET_MODE:    			// 设置WiFi为Station模式
 						result = esp32.set_mode(1);
 						if(result == Result_Success)
@@ -303,7 +314,6 @@ static void REGIST_Process()
 						result = esp32.handle_data(regist_data, regist_data_length, &regist_data_length);
 						if(result == Result_Success)
 						{
-						
 							uint8_t res = TUORENIOT_AnalysisRegistData(regist_data, regist_data_length);
 							if(res == 1) // 成功
 							{
@@ -319,9 +329,9 @@ static void REGIST_Process()
 							goto_failure("注册数据处理失败");
 						}
 						break;
-		case STEP_WAIT: 			// 等待
+		case STEP_WAIT: // 等待
 						PCTRL_Wait(&pctrl);
-						break;
+						break;				
 		case STEP_SUCCESS: 			// 成功
 						PCTRL_GotoStep(&pctrl, STEP_ENTER_DEEP_SLEEP, "注册成功,模块进入深休眠");	
 						break;
@@ -340,8 +350,6 @@ static void REGIST_Process()
 	}
 }
 
-
-
 #endif
 
 

+ 79 - 18
Drivers/Modules/esp32/esp32.c

@@ -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
 
 

+ 4 - 0
Drivers/Modules/esp32/esp32.h

@@ -9,6 +9,8 @@
 //系统初始的WiFi连接参数 
 extern char WIFI_ID[50];
 extern char WIFI_PASSWORD[30];
+//WiFi模块MAC地址 
+extern char MAC_ADDRESS[20];
 
 enum Result
 {
@@ -75,6 +77,8 @@ struct ESP32_Struct
 
 	enum Result (* set_mode)(uint8_t mode);						//32.设置WiFi模式
 	enum Result (* set_mode_sync)(uint8_t mode);				//33.设置WiFi模式-同步
+	
+	enum Result (* query_mac_address)(char * MAC_address);		//34.查询WiFi模块的MAC地址
 };
 
 

+ 5 - 0
Drivers/Utils/Pump_Dicts_Util.c

@@ -321,6 +321,11 @@ void PUMPDICTS_ProtocolEncode(struct PUMPDICTS_ParamsStruct * pump_params, uint8
 	pump_data[length++] = (uint8_t)( ( pump_params->bedNo & 0xff00 ) >> 8 );
 	pump_data[length++] = (uint8_t)( pump_params->bedNo & 0x00ff );
 	
+	//°æ±¾ºÅ
+	setPumpOption(136,2,pump_data,&length);
+	pump_data[length++] = (uint8_t)( ( pump_params->version & 0xff00 ) >> 8 );
+	pump_data[length++] = (uint8_t)( pump_params->version & 0x00ff );
+	
 	*pump_data_length = length;
 }
 

+ 1 - 0
Drivers/Utils/Pump_Dicts_Util.h

@@ -47,6 +47,7 @@ struct PUMPDICTS_ParamsStruct{
 	uint8_t pulseDose; // 编号123,脉冲量。
 	uint16_t ward; // 编号124,病区。
 	uint16_t bedNo; // 编号125,床号。
+	uint16_t version; // 编号136,版本号。
 };