zhangbo
5 天以前 f8fe8c08a399c3b6622f809fda4925851aef2c21
keil/include/src/Radio/lora_1268.c
@@ -3,7 +3,6 @@
#include "sx126x.h"
#include "sx126x-board.h"
#include "lora_1268.h"
//#include "lora_3029.h""
#include "user.h"
#include "sx126x-board.h"
#include "string.h"
@@ -158,7 +157,7 @@
    lora_sendbuffer[HB_LORAPOWER_IDX] = g_com_map[LORA_POWER];
    checksum = Checksum_u16(lora_sendbuffer,14);
    memcpy(&lora_sendbuffer[14],&checksum,2);   
//    Radio.Send(lora_sendbuffer,16);
    Radio.Send(lora_sendbuffer,16);
      
/*****************************心跳包上传内容*************************************/   
      
@@ -207,7 +206,7 @@
    flag_getwgresp = 0;
    SwitchLoraSettings(wg_report_freq,REPORT_CHANNEL_SF,22);
    mir3da_get_step();
//    mir3da_get_step();
    if(heatbeat_count++>HEATBEAT_UPDATE_TIME && WG_Connected == wg_state) //如果心跳包到达上传时间,并且网关处于链接状态,就上传心跳包
    {
        heatbeat_count = 0;
@@ -301,6 +300,19 @@
      
      Radio.Send(lora_sendbuffer,BT_SEND_lenth);   
      LORA_POLL_COUNT++;
//#ifdef CESHIGUJIAN
//      uint16_t log_info_bt[10];
//      uint16_t log_info_uwb[10];
//      memcpy(log_info_bt,&lora_sendbuffer[LORA_RETRANSNUSSION_BT+1],BT_NUM*2+1);
//      memcpy(log_info_uwb,&lora_sendbuffer[BT_ANCID_IDX+1],report_ancnum*2);
//
//      uint16_t corrected_value =(log_info_bt[0] << 8) | (log_info_bt[0] >> 8);
//      uint16_t corrected_value2 =(log_info_bt[1] << 8) | (log_info_bt[1] >> 8);
//      LOG_INFO(TRACE_MODULE_APP,"BTNUM:%d,基站ID1: %04x ,基站ID2: %04x 运动状态:%d,步数: %d\r\n",BT_NUM,corrected_value,corrected_value2,lora_sendbuffer[EXERCISE_STATE],lora_sendbuffer[STEP_COUNT]);
//      LOG_INFO(TRACE_MODULE_APP,"UWBNUM:%d,基站ID1: %x,基站ID2: %x \r\n",report_ancnum,log_info_uwb[0],log_info_uwb[1]);
//      memset(log_info_uwb,0,10);
//      taglist_num==0;
//#endif
//      LORA_3029_SINGLE_SEND(lora_sendbuffer,ANCID_IDX+report_ancnum*4+BT_NUM*4+4,0);
//      }
//      else
@@ -357,8 +369,7 @@
        memcpy(&lora_sendbuffer[9], &g_com_map[1], data_length);
        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);
            Radio.Send(lora_sendbuffer,data_length+13);
         //++;
  //  Delay_Ms(100);
}
@@ -376,10 +387,7 @@
   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);
  //  Delay_Ms(100);
   Radio.Send(lora_sendbuffer,data_length+11);
}
uint8_t t22[20],ti;
uint8_t no_yingdaflag;
@@ -492,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;
@@ -561,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)
//                                    {