From e0e6659453c4e9552c7e249f7dd54c2f356704c7 Mon Sep 17 00:00:00 2001 From: yincheng.zhong <634916154@qq.com> Date: 星期二, 27 二月 2024 11:05:42 +0800 Subject: [PATCH] 增加心跳包功能 --- Src/application/dw_mbx_tag.c | 39 ++++++++++++++++++++++++++++++++++++--- 1 files changed, 36 insertions(+), 3 deletions(-) diff --git a/Src/application/dw_mbx_tag.c b/Src/application/dw_mbx_tag.c index b7f43d4..9e3bd89 100644 --- a/Src/application/dw_mbx_tag.c +++ b/Src/application/dw_mbx_tag.c @@ -258,9 +258,28 @@ static u16 checksum; u8 gps_state,gps_chafenlingqi,gps_satel_num,gps_signalpower; double gps_jingdu,gps_weidu; +float gps_height; extern u8 bat_percent,stationary_flag; -int16_t sendcount = 0,tp1; +int16_t sendcount = 0,tp1,bar_height; u8 flag_getwgresp; +void LoraHeartBeartPoll(void) +{ + LoraReportFreqPoll(); + flag_getwgresp = 0; + SwitchLoraSettings(wg_report_freq,REPORT_CHANNEL_SF,g_com_map[LORA_POWER]); + lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGHEARTBEAT; + lora_sendbuffer[MSG_LENGTH] = 14; + memcpy(&lora_sendbuffer[SOURCE_ID_IDX],&g_com_map[DEV_ID],2); + memcpy(&lora_sendbuffer[DEST_ID_IDX],&wg_report_id,2); + memcpy(&lora_sendbuffer[HB_VERSION_IDX],&g_com_map[VERSION],2); + memcpy(&lora_sendbuffer[HB_UWBPOWER_IDX],&g_com_map[POWER],2); + memcpy(&lora_sendbuffer[HB_LORAPOWER_IDX],&g_com_map[POWER],2); + checksum = Checksum_u16(lora_sendbuffer,14); + memcpy(&lora_sendbuffer[14],&checksum,2); + Radio.Send(lora_sendbuffer,16); +} +uint16_t heatbeat_count = 3598; +#define HEATBEAT_UPDATE_TIME 3600 void LoraReportPoll(void) { @@ -270,19 +289,33 @@ LoraReportFreqPoll(); flag_getwgresp = 0; 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; + LoraHeartBeartPoll(); + return; + } +#ifdef USE_GPS lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGMSGTOWG_GPS; +#else + lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGMSGTOWG; +#endif lora_sendbuffer[MSG_LENGTH] = 4*report_ancnum+30; 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;; + lora_sendbuffer[STATE_IDX] = !GET_USERKEY|stationary_flag<<1; +#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],&bar_height,2); lora_sendbuffer[ANCNUM_IDX] = report_ancnum; memcpy(&lora_sendbuffer[ANCID_IDX],report_ancid,report_ancnum*2); memcpy(&lora_sendbuffer[ANCID_IDX+report_ancnum*2],report_ancdist,report_ancnum*2); @@ -292,4 +325,4 @@ LED_TB_ON; // bat_percent=Get_Battary(); -} \ No newline at end of file +} -- Gitblit v1.9.3