yincheng.zhong
2024-02-25 58bf13b0569714d03afe101a3abb4d2419ec9e30
Src/application/dw_mbx_anc.c
@@ -74,24 +74,29 @@
{
}
#define HEATBEAT_UPDATE_TIME_S 3600  //心跳包一个小时上传一次
static uint16_t current_count,target_count,heartbeat_count,wg_report_id;
#define HEATBEAT_UPDATE_TIME_S 10  //心跳包一个小时上传一次
static uint16_t current_count,target_count,wg_report_id;
uint16_t heartbeat_count;
static uint8_t heatbeat_buffer[100];
void HeartbeatPoll(void)
    {//心跳包上传 ID 版本号 小组 UWB功率 LORA功率 UWB发送时间
void HeartbeatPoll(uint16_t wangguanid)
{//心跳包上传 ID 版本号 小组 UWB功率 LORA功率 UWB发送时间
    heartbeat_count+=sync_interval_s;
    if(heartbeat_count>HEATBEAT_UPDATE_TIME_S)
    {
    {   uint16_t checksum1 = 0;
        heartbeat_count = 0;
        heatbeat_buffer[MSG_TYPE_IDX] = LORA_MSGTYPE_ANCHEARTBEAT_POLL;
        memcpy(&heatbeat_buffer[ANC_ID_IDX],&g_com_map[DEV_ID],2);
        heatbeat_buffer[ANC_VERSION_IDX] = g_com_map[VERSION];
        heatbeat_buffer[ANC_GROUPID_IDX] = g_com_map[GROUP_ID];
        heatbeat_buffer[ANC_UWBPOWER_IDX] = g_com_map[POWER];
        heatbeat_buffer[ANC_LORAPOWER_IDX] = g_com_map[LORA_POWER];
        heatbeat_buffer[ANC_UWBPOLLTIME_IDX] = g_com_map[UWBPOLLTIME_MS_IDX];
        Radio.Send(heatbeat_buffer, 14);
        delay_us(1700);
        heatbeat_buffer[MSG_TYPE_IDX] = LORA_MSGTYPE_ANC_HEARTBEAT;
        heatbeat_buffer[MSG_LENGTH] = 17;
        memcpy(&heatbeat_buffer[SOURCE_ID_IDX],&g_com_map[DEV_ID],2);
        memcpy(&heatbeat_buffer[DEST_ID_IDX],&wangguanid,2);
        memcpy(&heatbeat_buffer[ANC_HB_VERSION_IDX],&g_com_map[VERSION],2);
        memcpy(&heatbeat_buffer[ANC_HB_UWBPOLLTIME_IDX],&g_com_map[UWBPOLLTIME_MS_IDX],2);
        heatbeat_buffer[ANC_HB_UWBPOWER_IDX] = g_com_map[POWER];
        heatbeat_buffer[ANC_HB_LORAPOWER_IDX] = g_com_map[LORA_POWER];
        heatbeat_buffer[ANC_HB_BATTARY_IDX] = bat_percent;
        checksum1=Checksum_u16(heatbeat_buffer,17);
        memcpy(&heatbeat_buffer[17],&checksum1,2);
        Radio.Send(heatbeat_buffer, 19);
        Delay_Ms(60);
    }
}
static uint8_t lora_sendbuffer[200];
@@ -100,7 +105,7 @@
void LoraSendComMap(uint8_t cmd)
{
   uint16_t checksum = 0;
    data_length = 0x28;
    data_length = 0x50;
   lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_READPARARESP;
   lora_sendbuffer[MSG_LENGTH] = data_length+9;
    memcpy(&lora_sendbuffer[SOURCE_ID_IDX],&g_com_map[DEV_ID],2);
@@ -108,10 +113,10 @@
   lora_sendbuffer[RP_CMD_IDX] = cmd;
   lora_sendbuffer[RP_INDEX_IDX] = 2;
   lora_sendbuffer[RP_LEN_IDX] = data_length;
   memcpy(&lora_sendbuffer[7], &g_com_map[1], 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);
   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);
    Radio.Send(lora_sendbuffer,data_length+13);
    Delay_Ms(60);
}
void LoraRspWriteCommap(uint8_t index)
@@ -161,11 +166,12 @@
       }
       HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET);
       if(flag_sync_success)  //同步成功
       {
           HeartbeatPoll();
       {   uint16_t wangguanid;
           lora_recbuffer_len = GetLoraBufferAndLen(lora_recbuffer,&rec_sync_count);//获取LORA收到的数据和长度
           memcpy(&wangguanid,&lora_recbuffer[SOURCE_ID_IDX],2);
           HeartbeatPoll(wangguanid);
           LED_LG_ON;
           sync_lost_count = 0;
           lora_recbuffer_len = GetLoraBufferAndLen(lora_recbuffer,&rec_sync_count);//获取LORA收到的数据和长度
           if(lora_recbuffer[MSG_TYPE_IDX]==LORA_MSGTYPE_SYNC)
           { uint16_t wg_sendtime_100us,pwanc_value;
               uint8_t pwanc_index;
@@ -199,7 +205,7 @@
                        save_com_map_to_flash();
                        flag_writepara_needreset = 1;
                        break;
                    case SUBMSG_UPDATE_ANC:
                    case SUBMSG_UPDATE_ANC:
                        LoraUp_Poll();
                        break;
                }