zhangbo
4 天以前 f8fe8c08a399c3b6622f809fda4925851aef2c21
keil/include/src/Radio/lora_1268.c
@@ -500,66 +500,67 @@
uint8_t rxdone=0;
void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr )
{  
            uint16_t checksum1;
      uint16_t checksum1;
        BufferSize = size;
        memcpy( RX_Buffer, payload, BufferSize );
        RssiValue = rssi;
        SnrValue = snr;
        Radio.Standby();
         rxdone++;
            no_rx_flag = 0;
            lora_up_rec_flag=1;
             if(RX_Buffer[MSG_TYPE_IDX]==LORA_MSGTYPE_WGRESPTAG)
                  {
                     checksum1=Checksum_u16(RX_Buffer,BufferSize-2);
              memcpy(&DEST_ID,&RX_Buffer[DEST_ID_IDX],2);
                     memcpy(&CRC16,&RX_Buffer[BufferSize-2],2);
                     if(!memcmp(&checksum1,&RX_Buffer[BufferSize-2],2))
                     if(!memcmp(&dev_id,&RX_Buffer[DEST_ID_IDX],2))
                     {
                        memcpy(&source_id,&RX_Buffer[SOURCE_ID_IDX],2);
                        if(wg_state==WG_Lost)
                           {
                            wg_state = WG_Connected;
                            wg_report_id = source_id;
                           }
                        if(!memcmp(&wg_report_id,&RX_Buffer[SOURCE_ID_IDX],2))
                        {
                              wg_lost_count = 0;
                              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);
       rxdone++;
      no_rx_flag = 0;
      lora_up_rec_flag=1;
      if(RX_Buffer[MSG_TYPE_IDX]==LORA_MSGTYPE_WGRESPTAG)
      {
            checksum1=Checksum_u16(RX_Buffer,BufferSize-2);
            memcpy(&DEST_ID,&RX_Buffer[DEST_ID_IDX],2);
            memcpy(&CRC16,&RX_Buffer[BufferSize-2],2);
                        if(!memcmp(&checksum1,&RX_Buffer[BufferSize-2],2))
                        if(!memcmp(&dev_id,&RX_Buffer[DEST_ID_IDX],2))
                        {
                            memcpy(&source_id,&RX_Buffer[SOURCE_ID_IDX],2);
                            if(wg_state==WG_Lost)
                                {
                                 wg_state = WG_Connected;
                                 wg_report_id = source_id;
                                }
                            if(!memcmp(&wg_report_id,&RX_Buffer[SOURCE_ID_IDX],2))
                            {
                                    wg_lost_count = 0;
                                    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);
                        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(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++;
                                    }
                                            {
                                            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;
                                    }
                                            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;
@@ -569,32 +570,32 @@
//                                     sleep_timer_start(sleep_time_count);
                                       time_count++;
//                                    }
                        break;
                                    case WGRSP_RWTAG_READ:
                                             no_rx_flag = 1;
                                             LoraSendComMap(WGRSP_RWTAG_READ);
                                             break;
                                    case WGRSP_RWTAG_WRITE:
                                          rec_index = RX_Buffer[PWTAG_WRITE_IDX_IDX];
                                       switch(rec_index)
                                             {
                                                   case 0xdd:  //语音下发
                                                         break;
//                        case 0x20:  //蜂鸣
//                            memcpy(&rec_value,&RX_Buffer[PWTAG_WRITE_VALUE_IDX],2);
//                            motor_keeptime = rec_value;
//                            break;
                        default :
                            memcpy(&rec_value,&RX_Buffer[PWTAG_WRITE_VALUE_IDX],2);
                            g_com_map[rec_index/2] = rec_value;
                            save_com_map_to_flash();
                            LoraRspWriteCommap(SUBMSG_WRITE_ANCPARA);
                            //flag_writepara_needreset = 1;
                            no_rx_flag = 1;
                                             }
                                            break;
                           case WGRSP_RWTAG_READ:
                                            no_rx_flag = 1;
                                            LoraSendComMap(WGRSP_RWTAG_READ);
                                            break;
                           case WGRSP_RWTAG_WRITE:
                                 rec_index = RX_Buffer[PWTAG_WRITE_IDX_IDX];
                              switch(rec_index)
                              {
                               case 0xdd:  //语音下发
                               break;
//                                        case 0x20:  //蜂鸣
//                                            memcpy(&rec_value,&RX_Buffer[PWTAG_WRITE_VALUE_IDX],2);
//                                            motor_keeptime = rec_value;
//                                            break;
                                                       default :
                                            memcpy(&rec_value,&RX_Buffer[PWTAG_WRITE_VALUE_IDX],2);
                                            g_com_map[rec_index/2] = rec_value;
                                            save_com_map_to_flash();
                                            LoraRspWriteCommap(SUBMSG_WRITE_ANCPARA);
                                            //flag_writepara_needreset = 1;
                                            no_rx_flag = 1;
                               }
                                             break;
                                    case WGRSP_RWTAG_UPDATE:
                               break;
                           case WGRSP_RWTAG_UPDATE:
                                    rec_index = RX_Buffer[PWTAG_WRITE_IDX_IDX];
//                                    switch(rec_index)
//                                    {