yincheng.zhong
2025-03-28 3f91d9cad5d95d7a37a4af1f1ed8c99b3d7c2e64
Src/application/dw_mbx_tag.c
@@ -243,33 +243,55 @@
    dwt_entersleep();
}
#define START_FREQ    480
#define END_FREQ      483  //LR 远距离通道
wg_state_enum wg_state = WG_Lost;
uint8_t lora_sendbuffer[200];
u8 seq_num;
extern u32 wg_lost_count;
uint16_t wg_report_freq,wg_report_id;
uint16_t wg_report_freq = START_FREQ,wg_report_id;
#define WG_LOST_SWITCH_THRES   5
#define WG_LOST_NOUWB_COUNT    60
#define DEFAULT_WG_ID       0xFFFF
u8 lora_jianting_flag = 1;
void LoraReportFreqPoll(void)
{
    if(wg_lost_count++>WG_LOST_NOUWB_COUNT) //网关60秒没有通讯,就不开启UWB测距lora监听
    if(wg_lost_count++>3)
    {
        lora_jianting_flag = 0;
        wg_state = WG_Lost;
        wg_report_id = DEFAULT_WG_ID;
       // if(wg_report_freq++>END_FREQ)
        {
            wg_report_freq = START_FREQ;
        }
        if(wg_report_freq==END_FREQ)
        {
            SwitchLoraSettings(wg_report_freq,LR_CHANNEL_SF,g_com_map[LORA_POWER]);
        }else{
            SwitchLoraSettings(wg_report_freq, REPORT_CHANNEL_SF,g_com_map[LORA_POWER]);
        }
    }
//    wg_report_freq = g_com_map[ALARM_DISTANCE2];
    if(wg_lost_count++>WG_LOST_NOUWB_COUNT) //网关60秒没有通讯,就不开启UWB测距lora监听
    {
       // lora_jianting_flag = 0;
    } else {
        lora_jianting_flag = 1;
    }
    if(wg_state==WG_Lost)
    {
        wg_report_id = DEFAULT_WG_ID;
        wg_report_freq = REPORT_MANGE_CHANNEL_FRQ; //如果丢失链接就进入WG管理信道。
    } else {
        if(wg_lost_count>WG_LOST_SWITCH_THRES)
        {
            wg_state = WG_Lost;
        }
    }
//    if(wg_state==WG_Lost)
//    {
//        wg_report_id = DEFAULT_WG_ID;
//        wg_report_freq = REPORT_MANGE_CHANNEL_FRQ; //如果丢失链接就进入WG管理信道。
//    } else {
//        if(wg_lost_count>WG_LOST_SWITCH_THRES)
//        {
//            wg_state = WG_Lost;
//        }
//    }
    \
}
static u16 checksum;
u8 gps_state,gps_chafenlingqi,gps_satel_num,gps_signalpower;
@@ -313,7 +335,7 @@
    LoraReportFreqPoll();
    flag_getwgresp = 0;
    //  wg_report_freq = REPORT_MANGE_CHANNEL_FRQ;
    SwitchLoraSettings(wg_report_freq,REPORT_CHANNEL_SF,g_com_map[LORA_POWER]);
//    SwitchLoraSettings(wg_report_freq,REPORT_CHANNEL_SF,g_com_map[LORA_POWER]);
    if(heatbeat_count++>HEATBEAT_UPDATE_TIME && WG_Connected == wg_state) //如果心跳包到达上传时间,并且网关处于链接状态,就上传心跳包
    {
        heatbeat_count = 0;
@@ -352,7 +374,7 @@
    memcpy(&lora_sendbuffer[DEST_ID_IDX],&wg_report_id,2);
    lora_sendbuffer[SEQNUM_IDX] = seq_num++;
    lora_sendbuffer[BAT_IDX] = bat_percent;
  //  lora_sendbuffer[BAT_IDX] = recnum[0];
    lora_sendbuffer[BAT_IDX] = wg_report_freq-400;
   // lora_sendbuffer[SEQNUM_IDX] = recnum[1];
    lora_sendbuffer[STATE_IDX] = !GET_USERKEY|stationary_flag<<1;
#ifdef USE_GPS