瀏覽代碼

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

龙三郎 1 年之前
父節點
當前提交
3d12701c71

+ 7 - 25
Drivers/Business/PumpBusiness.c

@@ -14,21 +14,21 @@
 #include "Log_Module.h"
 #include "At_Module.h"
 #include "Pump_Dicts_Util.h"
-
+#include "Regist.h"
 
 // 计时相关的变量
 static struct TIMER_Struct timer;
 
 
-uint8_t resend_counter = 0;//nb失败重发标志
-uint8_t send_data_switch = 1; // 发送数据的开关,0表示发送数据
+
+uint8_t send_data_switch = 0; // 发送数据的开关,0表示发送数据
 uint8_t networkTest_Flag=0;//开机判断是否有信号,0是未知默认状态,1是失败状态,2是成功状态。
+static uint8_t test_switch=0; //0代表正常流程,1代表测试流程
 struct Pump_Params pump_params; // 泵参数
-uint8_t test_switch=0; //0代表正常流程,1代表测试流程
+
 static uint16_t Data_Number = 0; // 数据编号
 static uint16_t Data_success_Number = 0; // 成功包
 static uint16_t Data_fail_Number = 0; // 失败包
-extern Coefficient_Data flashdata;
 
 int RSRP1=0;
 int RSRQ2=0; 
@@ -123,7 +123,7 @@ void PumpBusines_Handle(void)
 	// 发送
 	if(UDP_Client_Status() == Client_Status_None)
 	{
-		if(test_switch==1&&Data_Number>=100)
+		if(test_switch==1&&Data_Number>=100)//测试模式只发100条数据
 		{
 			send_data_switch=0;
 			return ;
@@ -145,7 +145,6 @@ void PumpBusines_Handle(void)
 		
 		send_data_switch = 0; // 关闭发送
 		Data_success_Number++;
-		resend_counter =0;
 		if(test_switch==1){
 			Query_Signal(&RSRP1,&RSRQ2,&RSSI3,&SINR4);
 			Log_Printf("\r\nRSRP1:%d,RSRQ2:%d,RSSI3:%d,SINR4:%d\r\n", RSRP1,RSRQ2,RSSI3,SINR4);
@@ -155,23 +154,7 @@ void PumpBusines_Handle(void)
 	{
 		Log_Printf("发送失败:%s\r\n", UDP_Client_Get_Info());
 		UDP_Client_Clear(); // 清除
-//		#if  BC260Y
-//		resend_counter++;
-//		if(resend_counter<=3)
-//		{
-//		send_data_switch = 1; // 失败重发
-//		Data_success_Number--;
-//		Data_Number--;	
-//		}
-//		else
-//		{
-//		send_data_switch = 0; // 关闭发送
-////			resend_counter=4;
-//		}
-//		#endif
-//		#if  EC800M
 		send_data_switch = 0; // 关闭发送
-//		#endif
 		Data_fail_Number++;
 
 	}
@@ -188,7 +171,6 @@ void PumpBusines_Handle(void)
 // 循环执行
 void pump_business_loop_execution()
 {
-	
 	Power_Handle();
 	#if  EC800M
 //	if(module_switch==1) return;
@@ -202,7 +184,7 @@ void pump_business_loop_execution()
 	{
 	 //信号显示关
 	}
-	
+	if(regist_get_result()==Regist_Result_Failure)return;
 //	if(flashdata.read_flag==0)return;//注册失败或flash存储失败
 	//if(network_switch==1)return;//关闭网络状态
 	// 业务处理

+ 54 - 0
Drivers/Modules/Tuoreniot.c

@@ -0,0 +1,54 @@
+#include "stm32f10x.h"
+#include <stdio.h>
+#include <stdarg.h>
+#include <string.h>
+#include <stdlib.h>
+#include "Tuoreniot.h"
+
+#include "mbedtls_util.h"
+#include "Log_Module.h"
+#include "At_Module.h"
+#include "Common_Util.h"
+#include "ec800m.h"
+
+unsigned char key[17]="tuorenzhinenghua";
+/**
+* 
+*注册信息打包
+*/
+enum Result packRegistDataAnd(uint8_t *length,char * qcciddata,char *recvdata,uint8_t *mcu_id,uint16_t Version_data){
+	 enum Result result = Result_None;
+	// 
+//	 int i=0;
+	int datalen = 0;
+	char* dataPtr = recvdata+2; //dataPtr指针指向registData第三个字节
+	//复制muid,并转化为16进制
+
+	Log_Printf_Debug("mcu_id:%s,%d\r\n",mcu_id,sizeof(mcu_id));//串口打印
+	byteToHexStr(mcu_id, dataPtr, (int)length);
+	Log_Printf_Debug("device data:%s,%d\r\n",dataPtr,strlen(dataPtr));//串口打印
+	memcpy(dataPtr+strlen(dataPtr),"&",1);
+	//获取qccid
+	AT_Clear();
+	//get_qccid_flag=get_qccid(qcciddata);
+	
+//	result=ec800m.query_qccid_sync(qcciddata);
+	
+    //获取复制qccid
+	memcpy(dataPtr+strlen(dataPtr),qcciddata,31);
+	//复制版本号
+	snprintf(dataPtr+strlen(dataPtr),10,"&%d.%03d",Version_data/1000,Version_data%1000);
+	Log_Printf_Debug("device data:%s,%d\r\n",dataPtr,strlen(dataPtr));//串口打印
+	Log_Printf_Debug("regist data:%s\r\n",recvdata+2);
+	datalen = utils_aes128_ECB_base64_enc_with_length((char *)key,(uint8_t *)dataPtr);
+
+	recvdata[0] = datalen>>8;//头2个字节赋值数据长度
+	recvdata[1] = datalen;
+	Log_Printf_Debug("strlendata:%d,datalen=%d\r\n",strlen(dataPtr),datalen);
+	 *length=datalen+2;
+	 return Result_Success;
+}
+
+
+
+

+ 8 - 0
Drivers/Modules/Tuoreniot.h

@@ -0,0 +1,8 @@
+#ifndef __TUORENIOT_H
+#define __TUORENIOT_H
+
+#include <stdint.h>
+enum Result packRegistDataAnd(uint8_t *length,char * qcciddata,char *recvdata,uint8_t *mcu_id,uint16_t Version_data);
+
+
+#endif

+ 53 - 39
Drivers/Modules/bc260y/BC260Y_UDP_Client5.c

@@ -25,9 +25,9 @@
 
 #include "UDP_Client.h"
 #include "CoAP_Util.h"
-
+#include "Timer_Module.h"
 #include "mbedtls_util.h"
-
+#include "Regist.h"
 #include "cJSON.h"
 #include "bc260y.h"
 #include "Pump_Dicts_Util.h"
@@ -35,7 +35,7 @@
 #include "PumpBusiness.h"
 #include "aliyuniot.h"
 #include "Log_Module.h"
-
+#include "Initialize.h"
 
 // 流程
 enum Step{
@@ -78,14 +78,12 @@ enum Step{
 static enum Step step = STEP_NONE;
 // 下一步
 static enum Step next_step = STEP_NONE;
-
+static uint8_t resend_counter = 0;//nb失败重发标志
 // 客户端5
-struct COMM_Client_Struct UDP_Client5 = {
+struct COMM_Client_Struct udp_client = {
 	.status = Client_Status_None,
 };
 
-// 注册后的参数
-extern Coefficient_Data flashdata;
 
 // socket ID
 static uint8_t connectID = 1;
@@ -104,11 +102,10 @@ static uint16_t data_length;
 
 static uint8_t test_flag=0;
 
-extern struct AT_Struct AT;
+
 // 计时相关的变量
-uint8_t Client5_time_flag = 0;
-uint32_t Client5_timer_ms = 0;
-uint32_t Client5_wait_time = 10;
+static struct TIMER_Struct timer;
+uint32_t wait_time = 10;
 // 信号值
 static struct Signal
 {
@@ -132,54 +129,61 @@ void Query_Signal(int * RSRP, int * RSRQ, int * RSSI, int * SINR)
 }
 
 // 初始化
-void UDP_Client5_Init(void)
+void UDP_Client_Init(void)
 {
-
-	aliyuniot_set_device_params(flashdata.productKey,flashdata.deviceName,flashdata.deviceSecret);
+   aliyuniot_set_device_params(regist_get_aliyun_productKey(),regist_get_aliyun_deviceName(),regist_get_aliyun_deviceSecret());
+//	aliyuniot_set_device_params(flashdata.productKey,flashdata.deviceName,flashdata.deviceSecret);
 	// 设置host
- 
+  resend_counter=0;//失败重发置0
 }
 // 声明函数。步骤跳转
 void goto_step(enum Step ns);
 // 发送流程
-void UDP_Client5_Handle(void);
+void UDP_Client_Handle(void);
 // 发送数据
-void UDP_Client5_Send(uint8_t test_switch)
+void UDP_Client_Send(uint8_t test_switch)
 {
 	test_flag=test_switch;
 	if(step == STEP_NONE)
 	{
 		// 初始化
-		UDP_Client5_Init();
+		UDP_Client_Init();
 		// 正在发送
-		UDP_Client5.status = Client_Status_Sending;
+		udp_client.status = Client_Status_Sending;
 		// 流程开始
 		goto_step(STEP_START);
 	}
 }
 // 获取状态
-enum Client_Status UDP_Client5_Status(void)
+enum Client_Status UDP_Client_Status(void)
 {
-	if(UDP_Client5.status == Client_Status_None)
+	if(udp_client.status == Client_Status_None)
 	{
-		return UDP_Client5.status;
+		return udp_client.status;
 	}
 	else if(step == STEP_FINISH)
 	{
-		return UDP_Client5.status;
+		return udp_client.status;
 	}
 	else
 	{
 		return Client_Status_Sending;
 	}
 }
+
+// 获取备注
+char * UDP_Client_Get_Info(void)
+{
+	return udp_client.info;
+}
+
 // 清除
-void UDP_Client5_Clear(void)
+void UDP_Client_Clear(void)
 {
 	// 流程置空
 	goto_step(STEP_NONE);
 	// 空闲
-	UDP_Client5.status = Client_Status_None;
+	udp_client.status = Client_Status_None;
 }
 
 // 直接跳转到下一步
@@ -194,7 +198,7 @@ static void goto_step(enum Step ns)
 static void goto_step_wait(enum Step ns, uint32_t t)
 {
 	goto_step(STEP_WAIT); // 等待
-	Client5_wait_time = t;
+	wait_time = t;
 	next_step = ns; // 等待之后跳转
 }
 
@@ -208,32 +212,27 @@ static void goto_wait(uint32_t t)
 static void goto_failure(char * info)
 {
 	Log_Printf_Debug("STEP: 数据发送失败,%s\r\n", info);
-	UDP_Client5.status = Client_Status_Failure;
-	strcpy(UDP_Client5.info, info);
+	udp_client.status = Client_Status_Failure;
+	strcpy(udp_client.info, info);
 	goto_step(STEP_FAILURE);
 }
 
 // 成功
 static void goto_success(char * info)
 {
-	Log_Printf_Debug("STEP: 数据发送成功,%s\r\n", info);
-	UDP_Client5.status = Client_Status_Success;
-	strcpy(UDP_Client5.info, info);
+    Log_Printf_Debug("STEP: 数据发送成功,%s\r\n", info);
+	udp_client.status = Client_Status_Success;
+	strcpy(udp_client.info, info);
 	goto_step(STEP_SUCCESS);
 }
 
 // 等待
 static void wait(void)
 {
-	if(Client5_time_flag == 0)
-	{
-		Client5_timer_ms = 0;
-		Client5_time_flag = 1;
-	}
-	else if(Client5_timer_ms > Client5_wait_time)
+	if(time_get_delay(&timer) > wait_time)
 	{
 		goto_step(next_step); // 进入下一步
-		Client5_time_flag = 0;
+		time_clear(&timer);
 	}
 }
 
@@ -247,8 +246,15 @@ static uint8_t query_cgreg_times = 0; // 
 static uint8_t auth_times = 0; // 认证次数
 static uint16_t socket_err = 0;
 static uint8_t auth_or_data = 0;
-void UDP_Client5_Handle(void)
+void UDP_Client_Handle(void)
 {
+	static enum Initialize_Result InitializeResult;
+	InitializeResult=get_initialize_status();
+	if(InitializeResult==Initialize_Result_Busy)
+	{
+		return ;
+	
+	}
 	// 流程
 	switch(step)
 	{
@@ -463,7 +469,15 @@ void UDP_Client5_Handle(void)
 			goto_step(STEP_SET_SLEEP);
 			break;
 		case STEP_FAILURE: // 失败
+			if(resend_counter>=2){
 			goto_step(STEP_SET_SLEEP);
+			}
+			else
+			{
+				//重发2次
+			resend_counter++;
+			goto_step(STEP_SET_CFUN_1);	
+			}
 			break;
 		case STEP_SET_SLEEP: // 设置休眠模式
 			result = bc260y.set_sleep(1);

+ 35 - 21
Drivers/Modules/bc260y/Bc260y_Initialize.c

@@ -7,10 +7,11 @@
 #include <string.h>
 #include <stdlib.h>
 
-#include "Initialize.h"
+
 #include "bc260y.h"
 #include "PumpBusiness.h"
 #include "Log_Module.h"
+#include "Initialize.h"
 
 
 // 流程
@@ -33,15 +34,16 @@ static enum PowerStep powerstep = STEP_START;
 // 下一步
 static enum PowerStep next_step = STEP_START;
 
-extern struct AT_Struct AT;
-extern uint8_t send_data_switch;
+static enum Initialize_Result InitializeResult;
+
+static struct TIMER_Struct timer;
+
 
 // 计时相关的变量
-uint8_t Power_time_flag = 0;
-uint32_t Power_timer_ms = 0;
-uint32_t Power_wait_time = 10;
+static uint32_t Power_wait_time = 10;
+
+static uint8_t set_mincfun_flag=0;//0代表正在初始化,1代表空闲
 
-uint8_t set_mincfun_flag=1;
 static uint8_t cgreg_n; 
 static uint8_t cgreg_stat; 
 static uint16_t cgreg_lac; 
@@ -50,20 +52,15 @@ static uint8_t query_cgreg_times = 0; // 
 //// 声明函数。步骤跳转
 void pownext_step(enum PowerStep ns);
 // 发送流程
-void Power_Handle_Handle(void);
+void Power_Handle(void);
 
 // 等待
 static void powerwait(void)
 {
-	if(Power_time_flag == 0)
-	{
-		Power_timer_ms = 0;
-		Power_time_flag = 1;
-	}
-	else if(Power_timer_ms >Power_wait_time)
+	if(time_get_delay(&timer) > Power_wait_time)
 	{
-		pownext_step(next_step); // 进入下一步
-		Power_time_flag = 0;
+	 pownext_step(next_step); // 进入下一步
+	 time_clear(&timer);
 	}
 }
 // 失败
@@ -104,6 +101,20 @@ static void pownext_wait_step(enum PowerStep ns, uint32_t t)
 
 // 发送数据的逻辑
 static enum Result result = Result_None;
+//获取初始化状态
+enum Initialize_Result get_initialize_status(void){
+	
+	if(set_mincfun_flag==0)
+	{
+	  InitializeResult=Initialize_Result_Busy;
+	}
+	else
+	{
+	InitializeResult=Initialize_Result_free;
+	}
+ return InitializeResult;
+
+}
 void Power_Handle(void)
 {
 	result =bc260y.ready();
@@ -121,11 +132,14 @@ void Power_Handle(void)
 	switch(powerstep)
 	{
 		case STEP_START: // 开始
-			pownext_step(STEP_SET_SLEEP);
+			pownext_step(STEP_EXIT_SLEEP);
 		
 		   query_cgreg_times = 0; // 查询网络状态的次数
 			break;
-
+        case STEP_EXIT_SLEEP: // 退出休眠
+			bc260y.exit_sleep();
+			pownext_wait_step(STEP_SET_SLEEP, 10);
+			break;
 		case STEP_SET_SLEEP: // 设置休眠模式
 			result = bc260y.set_sleep(1);
 //            power_times++;
@@ -205,14 +219,14 @@ void Power_Handle(void)
 			break;
 		case STEP_SUCCESS: // 成功
 //			bc260y.enter_sleep();
-			pownext_wait_step(STEP_START, 5);
+			pownext_wait_step(STEP_START, 50);
 
 		    set_mincfun_flag=1;
-
+             Log_Printf_Debug("初始化成功\r\n");
 			break;
 		case STEP_FAILURE: // 失败
 //			bc260y.enter_sleep();
-			pownext_wait_step(STEP_START, 5);
+			pownext_wait_step(STEP_START, 500);
 			break;
 		default:
 			break;

+ 41 - 6
Drivers/Modules/bc260y/Bc260y_Regist.c

@@ -34,21 +34,50 @@
 static uint8_t mcu_id[8]="8945809";
 static uint16_t Version_data = 1032;
 static uint8_t regist_result =0;
-static uint8_t register_status;
+static uint8_t register_status;//注册成功,向flash存储标志
 static Coefficient_Data flashdata;
 //uint8_t registlen=0;
 
-extern struct AT_Struct AT;
+
 unsigned char key[17]="tuorenzhinenghua";
 
 
-//static uint8_t tcpcontextID = 1;
+
 static uint8_t tcpconnectID = 2;
 static char * REGIST_SERVER ="8337239yf4.yicp.fun" ; //注册服务器地址
 static uint16_t REGIST_PORT=22155; //端口号
 static char qcciddata[31]={0};//
-//char registData[100] = {0};
+
 static char recvdata[512]={0};//和registData共用
+
+
+//清空flash
+void clearflash(void){
+flashdata.read_flag=0;
+memcpy(flashdata.deviceSecret,"0",40);
+memcpy(flashdata.productKey,"0",20);
+memcpy(flashdata.deviceName,"0",20);
+delay_ms(10);
+STMFLASH_Write(FLASH_SAVE_ADDR,(uint16_t*)&flashdata,sizeof(flashdata));
+}
+
+void storedata(void){
+
+flashdata.read_flag=1;
+ Log_Printf_Debug("###########\r\n");
+ Log_Printf_Debug("deviceSecret:%s,productKey:%s,deviceName:%s,read_flag:%d\r\n",flashdata.deviceSecret,flashdata.productKey,flashdata.deviceName,flashdata.read_flag);
+ Log_Printf_Debug("结构体大小: %d\r\n", sizeof(Coefficient_Data));
+	
+     
+     delay_ms(10);
+    STMFLASH_Write(FLASH_SAVE_ADDR,(uint16_t*)&flashdata,sizeof(flashdata));
+    flashdata.read_flag=0;
+    delay_ms(10);
+   Log_Printf_Debug("写入数据完成\r\n");
+   STMFLASH_Read(FLASH_SAVE_ADDR,(uint16_t*)&flashdata,sizeof(flashdata));
+   Log_Printf_Debug("读取完成read_flag:%d,deviceSecret:%s,productKey:%s,deviceName:%s\r\n",flashdata.read_flag,flashdata.deviceSecret,flashdata.productKey,flashdata.deviceName);
+
+}
 /**
 * 
 *注册信息打包
@@ -65,7 +94,6 @@ enum Result packRegistDataAnd(uint8_t *length){
 	memcpy(dataPtr+strlen(dataPtr),"&",1);
 	//获取qccid
 	AT_Clear();
-	//get_qccid_flag=get_qccid(qcciddata);
 	
 	 result=bc260y.query_qccid_sync(qcciddata);
 	
@@ -237,20 +265,27 @@ uint8_t regist_device_sync(void)
 {
  flashdata.read_flag=0;
  uint8_t regist_flag=0;
+//读取flash
  Log_Printf_Debug("读取前read_flag:%d\r\n",flashdata.read_flag);
  STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)&flashdata,sizeof(flashdata));//读取flash
  delay_ms(10);
+//已经注册。读取flash成功
  if(flashdata.read_flag==1)
  {
 	 Log_Printf_Debug("读取flash成功read_flag:%d,\ndeviceSecret:%s,\n productKey:%s,\ndeviceName:%s\r\n",flashdata.read_flag,flashdata.deviceSecret,flashdata.productKey,flashdata.deviceName); 
+	 register_status=1;
  return 1;
  }
+ //未注册开始注册流程
  regist_flag=regist_Handle();//注册流程
  if(regist_flag==0)//注册流程失败不储存flash
  {
   flashdata.read_flag=0;
+	 register_status=0;
+	  clearflash();
   return 0;
  }
+ //注册成功向flash储存
  if(register_status==1){
 	 storedata();//存储到flash
      return 1;
@@ -263,7 +298,7 @@ uint8_t regist_device_sync(void)
 }
 enum Regist_Result regist_get_result(void)
 {
-  if(register_status){
+  if(register_status==1){
     return Regist_Result_Success;
   }
   else

+ 5 - 7
Drivers/Modules/bc260y/bc260y.c

@@ -219,7 +219,6 @@ enum Result bc260y_query_qccid_sync(char * iccid);
 enum Result bc260y_dataformat(uint8_t n);
 enum Result bc260y_dataformat_sync(uint8_t n);
 // 
-extern struct AT_Struct AT;
 
 // AT指令
 static char AT_CMD[256];
@@ -269,11 +268,11 @@ struct BC260Y_Struct bc260y =
 
 
 // 发送AT指令
-//static void send_data(uint8_t * data, uint16_t length)
-//{
-//	// 发送AT指令
-//	AT_Send_Bytes(data, length);
-//}
+static void send_data(uint8_t * data, uint16_t length)
+{
+	// 发送AT指令
+	AT_Send_Bytes(data, length);
+}
 
 // 发送AT指令
 static uint8_t send_at_string(char * cmd)
@@ -289,7 +288,6 @@ static uint8_t send_at_string(char * cmd)
 }
 
 
-
 // 获取状态
 static enum STATUS getStatus(void)
 {

+ 2 - 1
Drivers/Modules/bc260y/bc260y.h

@@ -4,8 +4,8 @@
 #ifndef __BC260Y_H
 #define __BC260Y_H
 #include <stdint.h>
+#include "Timer_Module.h"
 
-extern struct BC260Y_Struct bc260y;
 
 enum Result
 {
@@ -22,6 +22,7 @@ enum STATUS
 	Status_Overtime, // ³¬Ê±
 };
 
+extern struct BC260Y_Struct bc260y;
 
 // ec800mµÄAT·¢ËÍ״̬»ú
 struct BC260Y_Struct

+ 15 - 15
Drivers/Modules/ec800m/Ec800m_Initialize.c

@@ -34,21 +34,21 @@ static enum PowerStep powerstep = STEP_START;
 // 下一步
 static enum PowerStep next_step = STEP_START;
 
+static enum Initialize_Result InitializeResult;
 
-extern uint8_t send_data_switch;
 
 static struct TIMER_Struct timer;
+static struct TIMER_Struct timer2;
 
-static enum Initialize_Result InitializeResult;
 // 计时相关的变量
 
-static uint8_t Restart_flag = 0;//5分钟内重启次数计数
+static uint8_t Restart_flag = 0;//4分钟内重启次数计数
 
-static uint8_t module_switch = 0;//4G模块开关 0正常,1是关闭标志
+uint8_t module_switch = 0;//4G模块开关 0正常,1是关闭标志
 
 
 static uint32_t Power_wait_time = 10;
-static uint32_t Restart_time_ms = 0;//重启时间计时
+
 static uint8_t set_mincfun_flag=1;//0代表正在初始化,1代表空闲
 
 
@@ -60,15 +60,15 @@ static uint8_t query_cgreg_times = 0; // 
 //// 声明函数。步骤跳转
 void pownext_step(enum PowerStep ns);
 // 发送流程
-void Power_Handle_Handle(void);
+void Power_Handle(void);
 
 // 等待
 static void powerwait(void)
 {
-if(time_get_delay(&timer) > Power_wait_time)
+   if(time_get_delay(&timer) > Power_wait_time)
 	{
-		pownext_step(next_step); // 进入下一步
-		time_clear(&timer);
+	 pownext_step(next_step); // 进入下一步
+	 time_clear(&timer);
 	}
 }
 // 失败
@@ -133,10 +133,10 @@ void Power_Handle(void)
 
 	}
 	
-	if(Restart_time_ms>=240000)
+	if(time_get_delay(&timer2)>=240000)
 		{
 		 Restart_flag=0;
-		 Restart_time_ms=0;
+		 time_clear(&timer2);
 		}else
         {
 		  if(Restart_flag>=4&&module_switch==0)//4分钟内重启4次
@@ -159,12 +159,12 @@ void Power_Handle(void)
 			break;
 		case STEP_EXIT_SLEEP: // 退出休眠
 			ec800m.exit_sleep();
-			pownext_wait_step(STEP_SET_SLEEP, 5);
+			pownext_wait_step(STEP_SET_SLEEP, 10);
 			break;
 		
 		case STEP_SET_SLEEP: // 设置休眠模式
 			result = ec800m.set_sleep(1);
-//            power_times++;
+
 			if(result == Result_Success)
 			{
 				Log_Printf_Debug("设置休眠模式成功\r\n");
@@ -262,11 +262,11 @@ void Power_Handle(void)
 			
 		 if(module_switch==0)
 		 {
-		 pownext_wait_step(STEP_START, 500);
+		 pownext_wait_step(STEP_START, 50);
 		 }
 		 else
 		 {
-		 pownext_wait_step(STEP_SET_CFUN_0, 1000);
+		 pownext_wait_step(STEP_SET_CFUN_0, 500);
 		 }
 			break;
 		default:

+ 57 - 42
Drivers/Modules/ec800m/Ec800m_Regist.c

@@ -30,14 +30,15 @@
 #include "Log_Module.h"
 #include "At_Module.h"
 #include "Common_Util.h"
+#include "Tuoreniot.h"
 static uint8_t mcu_id[8]="8945809";
 static uint16_t Version_data = 1032;
 static uint8_t regist_result =0;
-static uint8_t register_status;
+static uint8_t register_status;//注册成功,向flash存储标志
 
 
 
-unsigned char key[17]="tuorenzhinenghua";
+//unsigned char key[17]="tuorenzhinenghua";
 static Coefficient_Data flashdata;
 
 static uint8_t tcpconnectID = 2;
@@ -75,45 +76,45 @@ flashdata.read_flag=1;
 
 }
 
-/**
-* 
-*注册信息打包
-*/
-enum Result packRegistDataAnd(uint8_t *length){
-	 enum Result result = Result_None;
-	// 
-//	 int i=0;
-	int datalen = 0;
-     memset(qcciddata,'\0',sizeof(qcciddata));
-     memset(recvdata,'\0', sizeof(recvdata));
-	char* dataPtr = recvdata+2; //dataPtr指针指向registData第三个字节
-	//复制muid,并转化为16进制
-	byteToHexStr(mcu_id, dataPtr, sizeof(mcu_id));
-	memcpy(dataPtr+strlen(dataPtr),"&",1);
-	//获取qccid
-	AT_Clear();
-	//get_qccid_flag=get_qccid(qcciddata);
-	
-	result=ec800m.query_qccid_sync(qcciddata);
-	
-	  if(result==Result_Failed)
-     {
-      return result;
-     }
-    //获取复制qccid
-	memcpy(dataPtr+strlen(dataPtr),qcciddata,31);
-	//复制版本号
-	snprintf(dataPtr+strlen(dataPtr),10,"&%d.%03d",Version_data/1000,Version_data%1000);
-	Log_Printf_Debug("device data:%s,%d\r\n",dataPtr,strlen(dataPtr));//串口打印
-	Log_Printf_Debug("regist data:%s\r\n",recvdata+2);
-	datalen = utils_aes128_ECB_base64_enc_with_length((char *)key,(uint8_t *)dataPtr);
+///**
+//* 
+//*注册信息打包
+//*/
+//enum Result packRegistDataAnd(uint8_t *length){
+//	 enum Result result = Result_None;
+//	// 
+////	 int i=0;
+//	int datalen = 0;
+//     memset(qcciddata,'\0',sizeof(qcciddata));
+//     memset(recvdata,'\0', sizeof(recvdata));
+//	char* dataPtr = recvdata+2; //dataPtr指针指向registData第三个字节
+//	//复制muid,并转化为16进制
+//	byteToHexStr(mcu_id, dataPtr, sizeof(mcu_id));
+//	memcpy(dataPtr+strlen(dataPtr),"&",1);
+//	//获取qccid
+//	AT_Clear();
+//	//get_qccid_flag=get_qccid(qcciddata);
+//	
+//	result=ec800m.query_qccid_sync(qcciddata);
+//	
+//	  if(result==Result_Failed)
+//     {
+//      return result;
+//     }
+//    //获取复制qccid
+//	memcpy(dataPtr+strlen(dataPtr),qcciddata,31);
+//	//复制版本号
+//	snprintf(dataPtr+strlen(dataPtr),10,"&%d.%03d",Version_data/1000,Version_data%1000);
+//	Log_Printf_Debug("device data:%s,%d\r\n",dataPtr,strlen(dataPtr));//串口打印
+//	Log_Printf_Debug("regist data:%s\r\n",recvdata+2);
+//	datalen = utils_aes128_ECB_base64_enc_with_length((char *)key,(uint8_t *)dataPtr);
 
-	recvdata[0] = datalen>>8;//头2个字节赋值数据长度
-	recvdata[1] = datalen;
-	Log_Printf_Debug("strlendata:%d,datalen=%d\r\n",strlen(dataPtr),datalen);
-	 *length=datalen+2;
-	 return Result_Success;
-}
+//	recvdata[0] = datalen>>8;//头2个字节赋值数据长度
+//	recvdata[1] = datalen;
+//	Log_Printf_Debug("strlendata:%d,datalen=%d\r\n",strlen(dataPtr),datalen);
+//	 *length=datalen+2;
+//	 return Result_Success;
+//}
 /**
 * 
 *注册数据解密
@@ -121,7 +122,7 @@ enum Result packRegistDataAnd(uint8_t *length){
 enum Result analysis_recvdata()
 {
 	enum Result result = Result_None;
-	
+	unsigned char key[17]="tuorenzhinenghua";
 	uint16_t recvdata_length=0;
   cJSON *json = NULL,*json_productKey = NULL,*json_deviceName = NULL,*json_deviceSecret = NULL;
 	memset(recvdata, '\0', sizeof(recvdata));
@@ -204,8 +205,17 @@ result=ec800m.query_cgreg_sync(&regist_result,&stat,&lac,&ci);//循
  
  if(result==Result_Success)
  {
-    result =(enum Result)packRegistDataAnd(&length);//数据打包
+	 result=ec800m.query_qccid_sync(qcciddata);
+
+ }
+  if(result==Result_Success)
+  {
+	 memset(qcciddata,'\0',sizeof(qcciddata));
+     memset(recvdata,'\0', sizeof(recvdata));
+	  length = sizeof(mcu_id);
+    result =(enum Result)packRegistDataAnd(&length,qcciddata,recvdata,mcu_id,Version_data);//数据打包
 	 Log_Printf_Debug("data length=%d\r\n", length);
+	  Log_Printf_Debug("recvdata:%s\r\n", recvdata);
  }
  
   
@@ -251,14 +261,18 @@ uint8_t regist_device_sync(void)
 {
  flashdata.read_flag=0;
  uint8_t regist_flag=0;
+ //读取flash
  Log_Printf_Debug("读取前read_flag:%d\r\n",flashdata.read_flag);
  STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)&flashdata,sizeof(flashdata));//读取flash
  delay_ms(10);
+ //已经注册。读取flash成功
  if(flashdata.read_flag==1)
  {
 	 Log_Printf_Debug("读取flash成功read_flag:%d,\ndeviceSecret:%s,\n productKey:%s,\ndeviceName:%s\r\n",flashdata.read_flag,flashdata.deviceSecret,flashdata.productKey,flashdata.deviceName); 
+	 register_status=1;
  return 1;
  }
+  //未注册开始注册流程
  regist_flag=regist_Handle();//注册流程
  if(regist_flag==0)//注册流程失败不储存flash
  {
@@ -267,6 +281,7 @@ uint8_t regist_device_sync(void)
 	 clearflash();
   return 0;
  }
+  //注册成功向flash储存
  if(register_status==1){
 	 storedata();//存储到flash
      return 1;

+ 1 - 1
User/main.c

@@ -65,7 +65,7 @@ int main(void)
 		// Ñ­»·Ö´ÐÐudp¿Í»§¶ËOLED_ShowNum
 		OLED_ShowNum(1, 4, time_get_delay(&timer), 6);
 		
-		pump_business_loop_execution();
+//		pump_business_loop_execution();