From 5f59088ed121193c358b0c2b95961b66593b79e5 Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期五, 25 七月 2025 18:02:04 +0800
Subject: [PATCH] 修复偶尔mk测距不了的bug

---
 keil/include/src/Radio/lora_1268.c |  515 ++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 342 insertions(+), 173 deletions(-)

diff --git a/keil/include/src/Radio/lora_1268.c b/keil/include/src/Radio/lora_1268.c
index cf1a5e8..bd22c2e 100644
--- a/keil/include/src/Radio/lora_1268.c
+++ b/keil/include/src/Radio/lora_1268.c
@@ -15,6 +15,7 @@
 #include "HIDO_TypeDef.h"
 #include "PCA9555.h"
 #include "mk_misc.h"
+#include "mk_flash.h"
 /********************************************结构体**************************************************************/
 typedef enum
 {
@@ -158,12 +159,13 @@
     lora_sendbuffer[HB_LORAPOWER_IDX] = g_com_map[LORA_POWER];//将距离校准改为了TX发射功率设置
     checksum = Checksum_u16(lora_sendbuffer,14);
     memcpy(&lora_sendbuffer[14],&checksum,2);	
-//    Radio.Send(lora_sendbuffer,16);
+	LOG_INFO(TRACE_MODULE_APP, "进入send3\r\n");
+    Radio.Send(lora_sendbuffer,16);
 		
 /*****************************心跳包上传内容*************************************/	
 		
 }
-#define HEATBEAT_UPDATE_TIME   100
+#define HEATBEAT_UPDATE_TIME   20
 uint16_t heatbeat_count = HEATBEAT_UPDATE_TIME-1 ;
 uint16_t flag_getwgresp = 0;
 int16_t intheight;			//气压
@@ -180,124 +182,15 @@
 extern uint16_t REV_RX_NUM;
 extern uint16_t REV_POLL_NUM;
 extern uint16_t REPLY_POLL_NUM;
-uint16_t num[3]={0,0,0};
+uint8_t num[3]={1,2,0};
 extern uint8_t stationary_flag;
 extern uint8_t SOS_KEY_STATE;
 uint32_t LORA_POLL_COUNT=0;
+uint8_t test1,test2;
+extern int poll_rx_num;
 #define GET_USERKEY gpio_pin_get_val(SOS_PIN)
 void LoraReportPoll(void)
 {
-////    // delay_ms(100);
-
-////#ifdef _USE_BAR
-////    GetPressAndHeight();
-////    intheight = Height*100;
-////#endif
-////#ifdef _SMT_TEST
-////    printf("气压值:%d",intheight);
-////#endif
-
-//////    TagListUpdate();
-
-////    LoraReportFreqPoll();
-////    flag_getwgresp = 0;
-
-//    SwitchLoraSettings(478,REPORT_CHANNEL_SF,22);
-
-////    if(heatbeat_count++>HEATBEAT_UPDATE_TIME && WG_Connected == wg_state) //如果心跳包到达上传时间,并且网关处于链接状态,就上传心跳包
-////    {
-////        heatbeat_count = 0;
-////        LoraHeartBeartPoll();
-////        return;
-////    }
-////    for(uint16_t i=0; i<report_ancnum-1; i++)
-////    {
-////        for(uint16_t j=0; j<report_ancnum-1-i; j++)
-////        {
-////            if(report_ancdist[j]>report_ancdist[j+1])
-////            {
-////                uint16_t id,dist;
-////                uint8_t bat;
-////                id = report_ancid[j];
-////                dist = report_ancdist[j];
-////                report_ancid[j] = report_ancid[j+1];
-////                report_ancdist[j] = report_ancdist[j+1];
-////                report_ancid[j+1] = id;
-////                report_ancdist[j+1] = dist;
-////            }
-////        }
-////    }
-////    
-////    if(report_ancnum>LORA_REPORT_MAXANC_NUM)	                              //考虑lora传输时间,最多发送10个基站数据。
-////		{
-////      report_ancnum = LORA_REPORT_MAXANC_NUM;
-////		} 		  
-////				
-////#ifdef USE_GPS
-////    lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGMSGTOWG_GPS;
-////    lora_sendbuffer[MSG_LENGTH] = 4*report_ancnum+30;
-////#else
-////		BT_NUM=DMA_RXBuf_BT[0];
-////		if(SOS_KEY_STATE)
-////		{
-////			BT_NUM=0;
-//////		}
-////    lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGMSGTOWG;
-//		lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGMSGTOWG_BT;
-//    //lora_sendbuffer[MSG_LENGTH] = 4*report_ancnum+4*BT_NUM+ANCID_IDX+3;
-////#endif
-//    memcpy(&lora_sendbuffer[SOURCE_ID_IDX],&g_com_map[DEV_ID],2);
-//    memcpy(&lora_sendbuffer[DEST_ID_IDX],&wg_report_id,2);
-//    lora_sendbuffer[SEQNUM_IDX] = seq_num++;
-//    lora_sendbuffer[BAT_IDX] = bat_percent;
-////		lora_sendbuffer[STATE_IDX] = !GET_USERKEY|stationary_flag<<1;
-////		//GET_USERKEY这个是那个lora——busy那个引脚
-//////		lora_sendbuffer[STATE_IDX]=0x01;
-//////		lora_sendbuffer[GATEWAY_CHANL]=0x02;
-//////		lora_sendbuffer[CHANL_NUM]=0x03;
-////    
-////#ifdef USE_GPS
-////    memcpy(&lora_sendbuffer[GPS_JINGDU_IDX],&gps_jingdu,8);
-////    memcpy(&lora_sendbuffer[GPS_WEIDU_IDX],&gps_jingdu,8);
-////    memcpy(&lora_sendbuffer[GPS_HEIGHT_IDX],&gps_height,8);
-////    lora_sendbuffer[GPS_STATE_IDX] = gps_state;
-////    lora_sendbuffer[GPS_SATEL_NUM_IDX] = gps_satel_num;
-////    lora_sendbuffer[GPS_SPOWER_IDX] = gps_signalpower;
-////    lora_sendbuffer[GPS_CHAFENLINGQI] = gps_chafenlingqi;
-////#endif
-////    memcpy(&lora_sendbuffer[BAR_HEIGHT_IDX],&intheight,2);
-////    lora_sendbuffer[BT_ANCID_IDX] = report_ancnum;
-////    memcpy(&lora_sendbuffer[BT_ANCID_IDX+1],report_ancid,report_ancnum*2);
-////    memcpy(&lora_sendbuffer[BT_ANCID_IDX+report_ancnum*2+1],report_ancdist,report_ancnum*2);
-////		uint8_t LORA_RETRANSNUSSION_BT=0;
-//////		
-//////		num[0]=REV_RX_NUM;
-//////		num[1]=REV_POLL_NUM;
-//////		num[2]=REPLY_POLL_NUM;
-////		LORA_RETRANSNUSSION_BT=BT_ANCID_IDX+report_ancnum*4+1;
-////		lora_sendbuffer[LORA_RETRANSNUSSION_BT] = 0x2D; 		//蓝牙上传标识符
-
-////    memcpy(&lora_sendbuffer[LORA_RETRANSNUSSION_BT+1],&DMA_RXBuf_BT[0],BT_NUM*2+1); 									//基站ID
-////    memcpy(&lora_sendbuffer[LORA_RETRANSNUSSION_BT+BT_NUM*2+2],&DMA_RXBuf_BT[1+BT_NUM*2],BT_NUM*2);//基站距离		
-////		lora_sendbuffer[MSG_LENGTH] = LORA_RETRANSNUSSION_BT+4*BT_NUM+2;
-//////		}
-//////		if(lora_sendbuffer[LORA_RETRANSNUSSION_BT]==0x2D)
-//////		{
-////		checksum = Checksum_u16(lora_sendbuffer,4*BT_NUM+4*report_ancnum+BT_ANCID_IDX+3);
-////		memcpy(&lora_sendbuffer[LORA_RETRANSNUSSION_BT+BT_NUM*4+2],&checksum,2);
-//		BT_SEND_flag=BT_ANCID_IDX+report_ancnum*4+BT_NUM*4+5;
-//		Radio.Send(lora_sendbuffer,BT_SEND_flag);	
-////		LORA_POLL_COUNT++;
-//////		LORA_3029_SINGLE_SEND(lora_sendbuffer,ANCID_IDX+report_ancnum*4+BT_NUM*4+4,0);
-//////		}
-//////		else
-//////		{
-//////		checksum = Checksum_u16(lora_sendbuffer,4*report_ancnum+ANCID_IDX);
-//////		memcpy(&lora_sendbuffer[ANCID_IDX+report_ancnum*4],&checksum,2);
-//////		Radio.Send(lora_sendbuffer,ANCID_IDX+report_ancnum*4+BT_NUM*4+2);
-//////		}
-
-
 #ifdef _USE_BAR
     GetPressAndHeight();
     intheight = Height*100;
@@ -311,7 +204,11 @@
     LoraReportFreqPoll();
     flag_getwgresp = 0;
     //  wg_report_freq = REPORT_MANGE_CHANNEL_FRQ;
-    SwitchLoraSettings(wg_report_freq,REPORT_CHANNEL_SF,g_com_map[LORA_POWER]);
+	//LOG_INFO(TRACE_MODULE_APP," 切换2\r\n");
+	//test1++;
+//	LOG_INFO(TRACE_MODULE_APP," 切换9\r\n");
+    SwitchLoraSettings(wg_report_freq,REPORT_CHANNEL_SF,22);
+	//SwitchLoraSettings(478,7,22);
     if(heatbeat_count++>HEATBEAT_UPDATE_TIME && WG_Connected == wg_state) //如果心跳包到达上传时间,并且网关处于链接状态,就上传心跳包
     {
         heatbeat_count = 0;
@@ -364,8 +261,20 @@
     memcpy(&lora_sendbuffer[ANCID_IDX+report_ancnum*2],report_ancdist,report_ancnum*2);
     checksum = Checksum_u16(lora_sendbuffer,4*report_ancnum+ANCID_IDX);
     memcpy(&lora_sendbuffer[ANCID_IDX+report_ancnum*4],&checksum,2);
+		
+	//	test2++;   num
+//	LOG_INFO(TRACE_MODULE_APP," 切换8\r\n");
+	//SwitchLoraSettings(wg_report_freq,REPORT_CHANNEL_SF,22);
     Radio.Send(lora_sendbuffer,ANCID_IDX+report_ancnum*4+2);
-
+		LOG_INFO(TRACE_MODULE_APP," 数量%d\r\n",poll_rx_num);
+		if(poll_rx_num==0)
+		{
+		CloseUWB();
+		Uwb_init();//默认为我们测距配置
+		OpenUWB();
+		}
+		poll_rx_num=0;
+   //Radio.Send(num,3);
 
 }
 
@@ -405,7 +314,8 @@
         checksum = Checksum_u16(lora_sendbuffer,11+data_length);
         memcpy(&lora_sendbuffer[11+data_length],&checksum,2);
 //        LORA_3029_SINGLE_SEND(lora_sendbuffer,data_length+13,0);
-//				Radio.Send(lora_sendbuffer,data_length+13);
+	LOG_INFO(TRACE_MODULE_APP, "进入send2\r\n");
+				Radio.Send(lora_sendbuffer,data_length+13);
 	      //++;
   //  Delay_Ms(100);
 }
@@ -423,9 +333,10 @@
 	memcpy(&lora_sendbuffer[7], &g_com_map[index/2], data_length);
 	checksum = Checksum_u16(lora_sendbuffer,9+data_length);
 	memcpy(&lora_sendbuffer[9+data_length],&checksum,2);
-//	Radio.Send(lora_sendbuffer,data_length+11);
-
-//	 LORA_3029_SINGLE_SEND(lora_sendbuffer,data_length+11,0);
+	LOG_INFO(TRACE_MODULE_APP, "进入send1\r\n");
+	Radio.Send(lora_sendbuffer,data_length+11);
+LOG_INFO(TRACE_MODULE_APP, "进入回复\r\n");
+  //LORA_3029_SINGLE_SEND(lora_sendbuffer,data_length+11,0);
   //  Delay_Ms(100);
 }
 uint8_t t22[20],ti;
@@ -451,8 +362,8 @@
     {
 //			gpio_pin_set(IO_PIN_5);
 			
-
-        if(lora_send_count++%10==0||lora_jianting_flag)
+// if(lora_send_count++%10==0||lora_jianting_flag)
+       if(lora_send_count++%10==0||lora_jianting_flag)
         {
 					sum_count++;
             lora_tx_flag=0;
@@ -471,7 +382,34 @@
 
      
 }
+void lora_in_sleep(void)
+{
+				 //SPI0/MOSI/MISO/CLK/CS
+//	gpio_pin_set(LORA_CS);
+	
+//	io_pin_mux_set(LORA_CS, IO_FUNC0);
+//	io_pin_mux_set(LORA_MOSI, IO_FUNC2);
+//	io_pin_mux_set(LORA_MISO, IO_FUNC2);
+//	io_pin_mux_set(LORA_CLK, IO_FUNC2);
+//	io_pin_mux_set(LORA_IRQ, IO_FUNC0);
+//	io_pin_mux_set(LORA_NRST, IO_FUNC0);
 
+//	io_pin_mux_set(LORA_MOSI, IO_FUNC0);
+//	io_pin_mux_set(LORA_MISO, IO_FUNC0);
+//	io_pin_mux_set(LORA_CLK, IO_FUNC0);
+//	//io_pull_set(LORA_IRQ, IO_PULL_UP, IO_PULL_UP_LEVEL4);
+//	io_pull_set(LORA_MOSI, IO_PULL_UP, IO_PULL_UP_LEVEL4);//功耗有影响
+//	io_pull_set(LORA_CLK, IO_PULL_UP, IO_PULL_UP_LEVEL4);//功耗有影响
+//	
+//	gpio_pin_set_dir(LORA_MOSI,GPIO_DIR_OUT,0);
+//	gpio_pin_set_dir(LORA_MISO,GPIO_DIR_OUT,0);
+//	gpio_pin_set_dir(LORA_CLK,GPIO_DIR_OUT,0);
+//	gpio_pin_clr(LORA_MOSI);
+//	gpio_pin_clr(LORA_CLK);
+
+	
+    Radio.Sleep();
+}
 ////States_t State = LOWPOWER;
 
 //////int8_t RssiValue = 0;
@@ -488,13 +426,16 @@
 //uint16_t current_count;
 //extern wg_state_enum wg_state;
 uint8_t txdone=0;
+uint8_t send_flag;
 void OnTxDone( void )
 { 
 	  txdone++;
+		
     if(flag_writepara_needreset) //配置写入完成设备需要重启
     {
-        printf("网关下发配置写入完成,重启");
-        SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader   
+        LOG_INFO(TRACE_MODULE_APP,"网关下发配置写入完成,重启\r\n");
+//        SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader   
+			sys_reset(0);
     }
     Radio.Standby();
     if(LoraUp_flag)
@@ -504,7 +445,9 @@
     }
     else
     {
+			
     Radio.Rx( 50 );
+			send_flag=1;
     //LORA_LED_OFF;
     }
 }
@@ -538,6 +481,219 @@
 uint8_t LoraUp_flag;
 uint16_t REV_WG_pack=0; 
 uint8_t rxdone=0;
+extern uint16_t set_mk_time;
+extern mk_send_message_to_BLE(void);
+uint8_t tt4=1;
+uint32_t Zhongjian_data[60];
+uint8_t send_lora_data[250];
+uint16_t rec_wenjian_daxiao;
+uint8_t huifushengjibaoerror_num;
+uint8_t muqiandeshengjibao;
+uint8_t final_bag_num;
+uint16_t wangguan_up_id;
+uint16_t testflag;
+uint16_t current_count1,target_count1,start_count1;
+int16_t end_count1;
+uint8_t start_wait_flag;
+/**
+  * @brief  Update CRC16 for input byte
+  * @param  CRC input value 
+  * @param  input byte
+  * @retval Updated CRC value
+  */
+uint16_t UpdateCRC16(uint16_t crcIn, uint8_t byte)
+{
+  uint32_t crc = crcIn;
+  uint32_t in = byte|0x100;
+
+  do
+  {
+    crc <<= 1;
+    in <<= 1;
+
+    if(in&0x100)
+    {
+      ++crc;
+    }
+    
+    if(crc&0x10000)
+    {
+      crc ^= 0x1021;
+    }
+ } while(!(in&0x10000));
+
+ return (crc&0xffffu);
+}
+
+/**
+  * @brief  Cal CRC16 for YModem Packet
+  * @param  data
+  * @param  length
+  * @retval CRC value
+  */
+uint16_t Cal_CRC16(const uint8_t* data, uint32_t size)
+{
+  uint32_t crc = 0;
+  const uint8_t* dataEnd = data+size;
+  
+  while(data<dataEnd)
+  {
+    crc = UpdateCRC16(crc,*data++);
+  }
+  crc = UpdateCRC16(crc,0);
+  crc = UpdateCRC16(crc,0);
+
+  return (crc&0xffffu);
+}
+
+void LoraUp_Poll()
+{    uint16_t  result ;
+    uint16_t crc16;
+    if(shengji_flag)
+    {
+//    memcpy(&wangguan_up_id,&RX_Buffer[SOURCE_ID_IDX],2);//网关ID 占用2个字节
+    send_lora_data[MSG_TYPE_IDX]=LORA_MSGTYPE_UPDATE_CONFIRM;
+    memcpy(&send_lora_data[SOURCE_ID_IDX],&dev_id,2);//网关ID 占用2个字节
+    memcpy(&send_lora_data[DEST_ID_IDX],&wangguan_up_id,2);//标签或者基站的设备ID 2个字节
+//    send_lora_data[MUQIAN_BAG]=0xFF;
+    crc16=Checksum_u16(send_lora_data,6);
+    memcpy(&send_lora_data[6],&crc16,2);
+    huifushengjibao_flag=0;
+    LoraUp_flag=1;
+    Radio.Send(send_lora_data,8);//基站发送升级确认回复
+			
+    delay_ms(1000); 
+//LOG_INFO(TRACE_MODULE_APP," 切换7\r\n");			
+    SwitchLoraSettings(LORA_UPCHANNEL_FRQ,LORA_UPCHANNEL_SF,22); //切换lora升级频点  
+    delay_ms(200);   
+    __disable_irq();
+//    FLASH_Read(APP_1OR2_ADRESS,(uint8_t*)&app1_or_app2,2);        
+    final_bag_num=(rec_wenjian_daxiao/220)+1;//计算一共要请求多少包   
+        while(1)
+        {
+            //FLASH_Prepare(APP2_ADRESS, APP_SIZE); //删除上一次app为下次做准备
+						testflag=flash_erase(FLASH_ID0,APP2_ADRESS,APP_SIZE);//删除100kAPP2空间为下面做准备
+            delay_ms(500);
+            if(testflag==0)
+            {break;}
+        }
+//    FLASH_Write(APP2_ADRESS, (const uint8_t*)&tmp111, 2);    
+    __enable_irq();             
+    while(1)
+    {
+        if(huifushengjibao_flag==1)
+        {lora_up_rec_flag=1;
+            while(1)
+            {
+                send_lora_data[MSG_TYPE_IDX]=LORA_MSGTYPE_UPDATEFILE_REQUEST;
+                memcpy(&send_lora_data[SOURCE_ID_IDX],&dev_id,2);//网关ID 占用2个字节
+                memcpy(&send_lora_data[DEST_ID_IDX],&wangguan_up_id,2);//标签或者基站的设备ID 2个字节
+                send_lora_data[MUQIAN_BAG]=muqiandeshengjibao;
+                crc16=Checksum_u16(send_lora_data,7);
+                memcpy(&send_lora_data[7],&crc16,2);
+                lora_up_rec_flag=0;    
+                Radio.Send(send_lora_data,9);//基站发送请求第x包
+							
+                /*重写超时逻辑
+                start_count1=HAL_LPTIM_ReadCounter(&hlptim1);     //等待接收完成直到超时
+                end_count1=start_count1+32768/2;//500ms等待
+                if(end_count1>=32768)
+                {end_count1-=32768;}
+                current_count1=HAL_LPTIM_ReadCounter(&hlptim1);
+                while(!lora_up_rec_flag)
+                {
+                    current_count1=HAL_LPTIM_ReadCounter(&hlptim1);
+                    if(current_count1>=end_count1&&current_count1<end_count1+15000)
+                    {
+                    break;
+                    }
+                    delay_ms(100);
+                    if(lora_up_rec_flag)
+                    {break;}
+                    Radio.Send(send_lora_data,9);
+                }
+								 重写超时逻辑 */
+								 
+								 start_wait_flag=1;
+								 end_count1=2;
+								  while(!lora_up_rec_flag)
+                {
+									if(start_wait_flag==0)
+									{
+									break;
+									}
+									  delay_ms(100);
+                    if(lora_up_rec_flag)
+                    {break;}
+                    Radio.Send(send_lora_data,9);
+								}
+//                while(1);
+                if(lora_up_rec_flag)
+                {   uint16_t result12;
+                    //HAL_IWDG_Refresh(&hiwdg);//未修改喂狗
+                     crc16=Cal_CRC16(RX_Buffer,DATA_IDX+ONE_BAG_DAXIAO);
+                    __disable_irq();
+                     if(muqiandeshengjibao==RX_Buffer[MUQIAN_BAG]&&!memcmp(&crc16,&RX_Buffer[DATA_IDX+ONE_BAG_DAXIAO],2)&&!memcmp(&dev_id,&RX_Buffer[DEST_ID_IDX],2)&& !memcmp(&wangguan_up_id,&RX_Buffer[SOURCE_ID_IDX],2))
+                     {
+                     memcpy(Zhongjian_data,&RX_Buffer[DATA_IDX],ONE_BAG_DAXIAO);
+                     result12=flash_write_nbytes(FLASH_ID0,APP2_ADRESS+ONE_BAG_DAXIAO*RX_Buffer[MUQIAN_BAG],(uint8_t*)Zhongjian_data,ONE_BAG_DAXIAO);
+											// flash_write_nbytes(FLASH_ID0, FLASH_IAP_CTRL_MAP, (const uint8_t*)g_com_map, sizeof(g_com_map));
+                     while(result12==0)
+                     {
+                     result12=flash_write_nbytes(FLASH_ID0,APP2_ADRESS+ONE_BAG_DAXIAO*RX_Buffer[MUQIAN_BAG],(uint8_t*)Zhongjian_data,ONE_BAG_DAXIAO);
+                     delay_ms(10);    
+                     }                         
+                     if(result12)
+                     muqiandeshengjibao++;   
+                     }
+                     __enable_irq();
+                }
+                else
+                {
+                    //HAL_IWDG_Refresh(&hiwdg);//未修改喂狗
+                    huifushengjibaoerror_num++;
+                    if(huifushengjibaoerror_num>=20)
+                    {
+                    huifushengjibaoerror_num=0;    
+                    muqiandeshengjibao=0;
+                    delay_ms(500);
+                    //HAL_NVIC_SystemReset();//修改重启
+										sys_reset(0);											
+                    break;
+                    }   
+                }
+                if(muqiandeshengjibao==final_bag_num)
+                {
+                uint16_t tmp11 ,result11;
+                    tmp11=0XCC;
+									result11=flash_erase(FLASH_ID0,APP_1OR2_ADRESS,FLASH_SECTOR_SIZE);//删除标志位所在区域
+                if(!result11)
+                result11 = flash_write_nbytes(FLASH_ID0,APP_1OR2_ADRESS, (const uint8_t*)&tmp11, 2);//更新标志位
+                __disable_irq();                
+                delay_ms(1500);
+                //HAL_NVIC_SystemReset();//修改重启
+										sys_reset(0);
+                }
+            }
+        }
+        else
+        {
+        delay_ms(500);
+//        huifushengjibao_flag=0;
+        Radio.Send(send_lora_data,8);//基站发送升级确认回复
+        huifushengjibaoerror_num++;
+            if(huifushengjibaoerror_num>=5)
+            {
+            huifushengjibaoerror_num=0;  
+						delay_ms(500);
+						sys_reset(0);      
+            break;
+            }                
+        }
+    }
+  }
+}
+uint8_t imu_enable;
 void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr )
 {  
 				uint16_t checksum1;
@@ -570,43 +726,43 @@
 										switch(RX_Buffer[PWTAG_RW_FLAG_IDX])
 										{
 												case WGRSP_RWTAG_NONE:
-												REV_WG_pack++;
-                        wg_report_freq = RX_Buffer[POLL_FREQ_IDX]+400;
-                        memcpy(&rec_delaytime,&RX_Buffer[NEXTPOLL_TIME_IDX],2);
+												REV_WG_pack++;//此处刚放开
+                        wg_report_freq = RX_Buffer[POLL_FREQ_IDX]+400;//此处刚放开未测试
+//                        memcpy(&rec_delaytime,&RX_Buffer[NEXTPOLL_TIME_IDX],2);
 
-                        if(report_ancnum<2)
-                        {
-                            datalen_offset = report_ancnum*85;
-                        }else{
-                            datalen_offset = (report_ancnum-1)*46+85;
-                        }
-                        rec_secdelay = RX_Buffer[PWTAG_SECDELAY_IDX];
-                        if(BufferSize!=13||rec_secdelay>20)
-                        {
-                         rec_secdelay = 0;
-                        }
-											if(rec_delaytime<500)
-												{
-												int t;
-													t++;
-												}
-//                        sleep_time_count =(__MS_TO_32K_CNT(rec_delaytime)/10)- delaytime-datalen_offset;
-                        sleep_time_count =(__MS_TO_32K_CNT(rec_delaytime)/10);
-                        while(sleep_time_count>=32768)
-												{
-                         sleep_time_count-=32768;											
-												}
-												while(sleep_time_count<2000)
-												{
-												 sleep_time_count+=10000;
-												}
+//                        if(report_ancnum<2)
+//                        {
+//                            datalen_offset = report_ancnum*85;
+//                        }else{
+//                            datalen_offset = (report_ancnum-1)*46+85;
+//                        }
+//                        rec_secdelay = RX_Buffer[PWTAG_SECDELAY_IDX];
+//                        if(BufferSize!=13||rec_secdelay>20)
+//                        {
+//                         rec_secdelay = 0;
+//                        }
+//											if(rec_delaytime<500)
+//												{
+//												int t;
+//													t++;
+//												}
+////                        sleep_time_count =(__MS_TO_32K_CNT(rec_delaytime)/10)- delaytime-datalen_offset;
+//                        sleep_time_count =(__MS_TO_32K_CNT(rec_delaytime)/10);
+//                        while(sleep_time_count>=32768)
+//												{
+//                         sleep_time_count-=32768;											
+//												}
+//												while(sleep_time_count<2000)
+//												{
+//												 sleep_time_count+=10000;
+//												}
 //												if(REV_WG_pack==1)
 //												{
 //												sleep_time_count_LAST=sleep_time_count;
 //												}
 //												if(abs(sleep_time_count_LAST-sleep_time_count)>2000||REV_WG_pack==1)
 //												{
-												 sleep_timer_start(sleep_time_count);
+//												 sleep_timer_start(sleep_time_count);
 													time_count++;
 //												}
                         break;
@@ -615,6 +771,7 @@
 															LoraSendComMap(WGRSP_RWTAG_READ);
 															break;
 												case WGRSP_RWTAG_WRITE:
+
 														rec_index = RX_Buffer[PWTAG_WRITE_IDX_IDX];
 													switch(rec_index)
 															{
@@ -627,45 +784,53 @@
                         default :
                             memcpy(&rec_value,&RX_Buffer[PWTAG_WRITE_VALUE_IDX],2);
                             g_com_map[rec_index/2] = rec_value;
+														if(rec_index/2==POWER)//新增判断
+														{
+														 memcpy(&set_mk_time,&RX_Buffer[PWTAG_WRITE_VALUE_IDX],2);
+															mk_send_message_to_BLE();	//发送给蓝牙
+															//LOG_INFO(TRACE_MODULE_APP, "修改成功g_com表为%#x,时间为%#x\r\n",g_com_map[POWER],set_mk_time);
+														}
                             save_com_map_to_flash();
                             LoraRspWriteCommap(SUBMSG_WRITE_ANCPARA);
-                            //flag_writepara_needreset = 1;
+                            flag_writepara_needreset = 1;
                             no_rx_flag = 1;                           
 															}
-
 															break; 
 												case WGRSP_RWTAG_UPDATE:
 												rec_index = RX_Buffer[PWTAG_WRITE_IDX_IDX];
-//												switch(rec_index)
-//												{
-//														case 0xaa:  //升级下发
-//														memcpy(&rec_wenjian_daxiao,&RX_Buffer[WRITEPARA_VALUE_IDX],2);//文件大小
-//														if(rec_wenjian_daxiao>0XAC00||rec_wenjian_daxiao==0)
-//														{}//文件过大,超出范围
-//														else
-//														{
-//																memcpy(&wangguan_up_id,&RX_Buffer[SOURCE_ID_IDX],2);//网关ID 占用2个字节
-//																shengji_flag=1;
-//																LoraUp_flag=1;   
+												switch(rec_index)
+												{
+														case 0xaa:  //升级下发
+														memcpy(&rec_wenjian_daxiao,&RX_Buffer[WRITEPARA_VALUE_IDX],2);//文件大小
+														if(rec_wenjian_daxiao>0XAC00||rec_wenjian_daxiao==0)
+														{}//文件过大,超出范围
+														else
+														{
+																memcpy(&wangguan_up_id,&RX_Buffer[SOURCE_ID_IDX],2);//网关ID 占用2个字节
+																shengji_flag=1;
+																LoraUp_flag=1;   
 //																imu_enable=0;                            
-//														}
-////                    		  LoraUp_Poll();
-//																break;                        
-//												}
+														}
+//                    		  LoraUp_Poll();
+																break;                        
+												}
 														break; 
 										}
 									}
 								}
 
-							}						
+							}
+			
     if(!no_rx_flag)
     {
         if(lora_jianting_flag&&LoraUp_flag==0)
-        {
+        {	
+					//LOG_INFO(TRACE_MODULE_APP," 切换2\r\n");
             SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0);
             Radio.Rx(0);
         }
     }
+		
 }
 
 void OnTxTimeout( void )
@@ -673,6 +838,7 @@
     Radio.Standby();
     if(lora_jianting_flag)
     {
+//			LOG_INFO(TRACE_MODULE_APP," 切换3\r\n");
         SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0);
         Radio.Rx(0);
     }
@@ -681,8 +847,10 @@
 void OnRxTimeout( void )
 {
     Radio.Standby();
+	
     if(lora_jianting_flag)
     {
+			//LOG_INFO(TRACE_MODULE_APP," 切换4\r\n");
         SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0);
         Radio.Rx(0);
     }
@@ -695,6 +863,7 @@
     Radio.Standby();
     if(lora_jianting_flag)
     {
+			//LOG_INFO(TRACE_MODULE_APP," 切换5\r\n");
         SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0);
         Radio.Rx(0);
     }

--
Gitblit v1.9.3