WXK
2 天以前 5f59088ed121193c358b0c2b95961b66593b79e5
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);
    }