|
|
@@ -13,53 +13,52 @@
|
|
|
#include "soft_version.h"
|
|
|
#include "soft_p_2_c.h"
|
|
|
|
|
|
-
|
|
|
UAVH30 uavh30_dist;
|
|
|
|
|
|
uavr_terrain uavr56_info = {.get_radar_sensi = 50};
|
|
|
-uavr_terrain mimo_ter_info;
|
|
|
+uavr_terrain mimo_ter_info;
|
|
|
|
|
|
-//muniu muniu_ter_info;
|
|
|
+_dev_par DM_4DRADARMAG;
|
|
|
+// muniu muniu_ter_info;
|
|
|
|
|
|
bool terrain_is_link = false;
|
|
|
uint16_t terrain_height = 0;
|
|
|
|
|
|
/**
|
|
|
- * @file can_recv_mocib_terrain
|
|
|
- * @brief 莫之比防地解析
|
|
|
- * @param none
|
|
|
- * @details
|
|
|
- * @author Zhang Sir
|
|
|
+ * @file can_recv_mocib_terrain
|
|
|
+ * @brief 莫之比防地解析
|
|
|
+ * @param none
|
|
|
+ * @details
|
|
|
+ * @author Zhang Sir
|
|
|
**/
|
|
|
void can_recv_mocib_terrain(uint8_t *data)
|
|
|
{
|
|
|
uavh30_dist.powerful = (data[0] << 8) + data[1];
|
|
|
uavh30_dist.near = (data[2] << 8) + data[3];
|
|
|
uavh30_dist.far = (data[4] << 8) + data[5];
|
|
|
-
|
|
|
+
|
|
|
uavr56_info.height = uavh30_dist.powerful;
|
|
|
uavr56_info.Link.recv_time = HAL_GetTick();
|
|
|
uavr56_info.Link.connect_status = COMP_NORMAL;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
- * @file can_recv_enzhao_terrain
|
|
|
- * @brief 恩曌防地解析
|
|
|
- * @param none
|
|
|
- * @details
|
|
|
- * @author Zhang Sir
|
|
|
+ * @file can_recv_enzhao_terrain
|
|
|
+ * @brief 恩曌防地解析
|
|
|
+ * @param none
|
|
|
+ * @details
|
|
|
+ * @author Zhang Sir
|
|
|
**/
|
|
|
mimo_part_radar T_radar[3];
|
|
|
void can_recv_enzhao_terrain(uint32_t CanID, uint8_t data[], uint8_t len)
|
|
|
{
|
|
|
switch (CanID)
|
|
|
{
|
|
|
- case CAN_MIMO_T_ID: //单点雷达
|
|
|
+ case CAN_MIMO_T_ID: // 单点雷达
|
|
|
mimo_ter_info.crc = data[3] + data[4] + data[5] + data[6];
|
|
|
if (data[7] == mimo_ter_info.crc)
|
|
|
{
|
|
|
- mimo_ter_info.height = (256 * data[4]) + (data[3]); //cm
|
|
|
+ mimo_ter_info.height = (256 * data[4]) + (data[3]); // cm
|
|
|
// printf("%d %d\n", mimo_ter_info.height, m.muniu_hight); //输出到串口助手上 需要pringtf重定向
|
|
|
}
|
|
|
|
|
|
@@ -83,14 +82,13 @@ void can_recv_enzhao_terrain(uint32_t CanID, uint8_t data[], uint8_t len)
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
-//木牛仿地雷达
|
|
|
-// void can_recv_muniu_terrain(uint8_t *data)
|
|
|
-// {
|
|
|
-// muniu_ter_info.muniu_hight = (data[0] << 8) + data[1];
|
|
|
-// muniu_ter_info.muniu_SNR = (data[2] << 8) + data[3];
|
|
|
+// 木牛仿地雷达
|
|
|
+// void can_recv_muniu_terrain(uint8_t *data)
|
|
|
+// {
|
|
|
+// muniu_ter_info.muniu_hight = (data[0] << 8) + data[1];
|
|
|
+// muniu_ter_info.muniu_SNR = (data[2] << 8) + data[3];
|
|
|
|
|
|
// muniu_ter_info.Link.connect_status = COMP_NORMAL;
|
|
|
// muniu_ter_info.Link.recv_time = HAL_GetTick();
|
|
|
@@ -104,55 +102,55 @@ uint8_t DM_recv_flag = 0;
|
|
|
uint8_t DM4d_recv_flag = 0;
|
|
|
Connect_check DM_status;
|
|
|
Connect_check DM_4dstatus;
|
|
|
-uavr_terrain DM_ter_info;
|
|
|
-void DM_terrain_recieved_hookfuction(uint32_t cellCanID,uint8_t data[], uint8_t len)
|
|
|
+uavr_terrain DM_ter_info;
|
|
|
+void DM_terrain_recieved_hookfuction(uint32_t cellCanID, uint8_t data[], uint8_t len)
|
|
|
{
|
|
|
- if(cellCanID == 0x901300) //多点协议
|
|
|
+ if (cellCanID == 0x901300) // 多点协议
|
|
|
{
|
|
|
DM_T_info.byte7.frame_flag = data[7];
|
|
|
|
|
|
DM_status.connect_status = COMP_NORMAL;
|
|
|
DM_status.recv_time = HAL_GetTick();
|
|
|
-
|
|
|
- if(DM_T_info.byte7.flag.head != 0 ) //头
|
|
|
+
|
|
|
+ if (DM_T_info.byte7.flag.head != 0) // 头
|
|
|
{
|
|
|
- memcpy(&DM_T_info.target_num,&data[0],7);
|
|
|
+ memcpy(&DM_T_info.target_num, &data[0], 7);
|
|
|
if( DM_T_info.target_num > 30 )
|
|
|
DM_T_info.target_num = 30;
|
|
|
dm_i = 0;
|
|
|
- if(DM_T_info.target_num == 0 && DM_recv_flag == 0)
|
|
|
+ if (DM_T_info.target_num == 0 && DM_recv_flag == 0)
|
|
|
{
|
|
|
FMU_DM_info.target_num = 0;
|
|
|
}
|
|
|
}
|
|
|
- else if(DM_T_info.byte7.flag.tail != 0) //尾
|
|
|
+ else if (DM_T_info.byte7.flag.tail != 0) // 尾
|
|
|
{
|
|
|
- if(DM_T_info.target_num != 1)
|
|
|
+ if (DM_T_info.target_num != 1)
|
|
|
{
|
|
|
- memcpy(&DM_T_info.buf[dm_i],&data[0],DM_T_info.target_num*4%7);
|
|
|
+ memcpy(&DM_T_info.buf[dm_i], &data[0], DM_T_info.target_num * 4 % 7);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- memcpy(&DM_T_info.buf[dm_i],&data[0],4);
|
|
|
+ memcpy(&DM_T_info.buf[dm_i], &data[0], 4);
|
|
|
}
|
|
|
|
|
|
- if(DM_T_info.crc == Get_Crc16(&DM_T_info.buf[0],DM_T_info.target_num * 4) && DM_recv_flag == 0)
|
|
|
+ if (DM_T_info.crc == Get_Crc16(&DM_T_info.buf[0], DM_T_info.target_num * 4) && DM_recv_flag == 0)
|
|
|
{
|
|
|
- memcpy(&FMU_DM_info.target_num,&DM_T_info.target_num,DM_T_info.target_num * 4 + 8);
|
|
|
- //memcpy(&FMU_DM_info.buf[0], &DM_T_info.buf[0], DM_T_info.target_num * 4);
|
|
|
+ memcpy(&FMU_DM_info.target_num, &DM_T_info.target_num, DM_T_info.target_num * 4 + 8);
|
|
|
+ // memcpy(&FMU_DM_info.buf[0], &DM_T_info.buf[0], DM_T_info.target_num * 4);
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- memcpy(&DM_T_info.buf[dm_i],&data[0],7);
|
|
|
+ memcpy(&DM_T_info.buf[dm_i], &data[0], 7);
|
|
|
dm_i += 7;
|
|
|
}
|
|
|
- if(dm_i >= 255 -7)
|
|
|
+ if (dm_i >= 255 - 7)
|
|
|
{
|
|
|
dm_i = 0;
|
|
|
}
|
|
|
}
|
|
|
- else if(cellCanID == 0x901301)//单点协议
|
|
|
+ else if (cellCanID == 0x901301) // 单点协议
|
|
|
{
|
|
|
DM_ter_info.Link.connect_status = COMP_NORMAL;
|
|
|
DM_ter_info.Link.recv_time = HAL_GetTick();
|
|
|
@@ -161,69 +159,70 @@ void DM_terrain_recieved_hookfuction(uint32_t cellCanID,uint8_t data[], uint8_t
|
|
|
DM_ter_info.height = data[3] + data[4] * 256;
|
|
|
}
|
|
|
|
|
|
- //版本信息
|
|
|
- if(cellCanID == 0x981301 && data[0] == 0x1)
|
|
|
+ // 版本信息
|
|
|
+ if (cellCanID == 0x981301 && data[0] == 0x1)
|
|
|
{
|
|
|
uint32_t version_temp = 0;
|
|
|
DM_T_info.byte7.frame_flag = data[7];
|
|
|
|
|
|
- if(DM_T_info.byte7.flag.head != 0 ) //头
|
|
|
+ if (DM_T_info.byte7.flag.head != 0) // 头
|
|
|
{
|
|
|
- memcpy(&version_temp,&data[1],4);
|
|
|
- Int2String(version_temp,DM_ter_info.sn,9);
|
|
|
- //通过SN序号判断新旧boot
|
|
|
- if((version_temp % 10000000) < 2502999)
|
|
|
+ memcpy(&version_temp, &data[1], 4);
|
|
|
+ Int2String(version_temp, DM_ter_info.sn, 9);
|
|
|
+ // 通过SN序号判断新旧boot
|
|
|
+ if ((version_temp % 10000000) < 2502999)
|
|
|
DM_ter_info.version[3] = 'O';
|
|
|
else
|
|
|
DM_ter_info.version[3] = 'N';
|
|
|
|
|
|
- regist_dev_info(&dev_ter,DEVICE_TERRA,false,DM_ter_info.sn,9,NULL,0,NULL,0,"dmter",6);
|
|
|
+ regist_dev_info(&dev_ter, DEVICE_TERRA, false, DM_ter_info.sn, 9, NULL, 0, NULL, 0, "dmter", 6);
|
|
|
}
|
|
|
- else if(DM_T_info.byte7.flag.tail != 0) //尾
|
|
|
+ else if (DM_T_info.byte7.flag.tail != 0) // 尾
|
|
|
{
|
|
|
- memcpy(&version_temp,&data[1],4);
|
|
|
- Int2String(version_temp,&DM_ter_info.version[4],6);
|
|
|
- DM_ter_info.version[0] = 'D';
|
|
|
- DM_ter_info.version[1] = 'S';
|
|
|
- DM_ter_info.version[2] = '1';
|
|
|
+ memcpy(&version_temp, &data[1], 4);
|
|
|
+ Int2String(version_temp, &DM_ter_info.version[4], 6);
|
|
|
+ DM_ter_info.version[0] = 'D';
|
|
|
+ DM_ter_info.version[1] = 'S';
|
|
|
+ DM_ter_info.version[2] = '1';
|
|
|
|
|
|
- regist_dev_info(&dev_ter,DEVICE_TERRA,false,NULL,0,DM_ter_info.version,10,NULL,0,"dmter",6);
|
|
|
+ regist_dev_info(&dev_ter, DEVICE_TERRA, false, NULL, 0, DM_ter_info.version, 10, NULL, 0, "dmter", 6);
|
|
|
|
|
|
- DM_ter_info.get_radar_ver_flag = true;
|
|
|
- pmu_send = PMU_SEND_VERSION; //旧版APP
|
|
|
+ DM_ter_info.get_radar_ver_flag = true;
|
|
|
+ pmu_send = PMU_SEND_VERSION; // 旧版APP
|
|
|
}
|
|
|
}
|
|
|
- else if(cellCanID == 0x981301 && (data[0] == 0x8 || data[0] == 0x5))
|
|
|
+ else if (cellCanID == 0x981301 && (data[0] == 0x8 || data[0] == 0x5))
|
|
|
{
|
|
|
- if(data[0] == 0x8)
|
|
|
+ if (data[0] == 0x8)
|
|
|
DM_ter_info.get_radar_blind_flag = true;
|
|
|
- pmu_set_ack(_MSGID_SET,MSGID_SET_TR_BLIND,0x56,data[1] + data[2] * 256);
|
|
|
+ pmu_set_ack(_MSGID_SET, MSGID_SET_TR_BLIND, 0x56, data[1] + data[2] * 256);
|
|
|
}
|
|
|
- else if(cellCanID == 0x981301 && (data[0] == 0x9 || data[0] == 0x7))
|
|
|
+ else if (cellCanID == 0x981301 && (data[0] == 0x9 || data[0] == 0x7))
|
|
|
{
|
|
|
- if(data[0] == 0x9)
|
|
|
+ if (data[0] == 0x9)
|
|
|
DM_ter_info.get_radar_power_flag = true;
|
|
|
- pmu_set_ack(_MSGID_SET,MSGID_SET_BR_POWER,0x56,data[1] + data[2] * 256);
|
|
|
+ pmu_set_ack(_MSGID_SET, MSGID_SET_BR_POWER, 0x56, data[1] + data[2] * 256);
|
|
|
}
|
|
|
- else if(cellCanID == 0x981301 && (data[0] == 0xA || data[0] == 0xB))
|
|
|
+ else if (cellCanID == 0x981301 && (data[0] == 0xA || data[0] == 0xB))
|
|
|
{
|
|
|
- if(data[0] == 0xB)
|
|
|
+ if (data[0] == 0xB)
|
|
|
DM_ter_info.get_radar_rawSwitch_flag = true;
|
|
|
- pmu_set_ack(_MSGID_SET,MSGID_SET_RAW_SWITCH,0x56,data[1] + data[2] * 256);
|
|
|
+ pmu_set_ack(_MSGID_SET, MSGID_SET_RAW_SWITCH, 0x56, data[1] + data[2] * 256);
|
|
|
}
|
|
|
- else if(cellCanID == 0x981301 && data[0] == 0x4 )
|
|
|
+ else if (cellCanID == 0x981301 && data[0] == 0x4)
|
|
|
{
|
|
|
- pmu_set_ack(_MSGID_SET,MSGID_SET_R_FUNC,0,data[1] + data[2] * 256);
|
|
|
+ pmu_set_ack(_MSGID_SET, MSGID_SET_R_FUNC, 0, data[1] + data[2] * 256);
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
-int16_t F_4DRadar[3][3]={0}; // X Y Z
|
|
|
+int16_t F_4DRadar[3][3] = {0}; // X Y Z
|
|
|
DM_4dFRADAR DM_F4d;
|
|
|
int dm_4df_i = 0;
|
|
|
DM_4DRADAR FMU_4D_info;
|
|
|
bool F4d_send_flag = false;
|
|
|
-
|
|
|
-void DM_Fobs_recieved_hookfuction(uint32_t cellCanID,uint8_t data[], uint8_t len)
|
|
|
+bool DM4Dmsg_send_fmu=false;
|
|
|
+void DM_Fobs_recieved_hookfuction(uint32_t cellCanID, uint8_t data[], uint8_t len)
|
|
|
{
|
|
|
if (cellCanID == 0XA01300) // 多点协议
|
|
|
{
|
|
|
@@ -270,7 +269,7 @@ void DM_Fobs_recieved_hookfuction(uint32_t cellCanID,uint8_t data[], uint8_t len
|
|
|
dm_i = 0;
|
|
|
}
|
|
|
}
|
|
|
- else if(cellCanID == 0XA01301)//单点协议
|
|
|
+ else if (cellCanID == 0XA01301) // 单点协议
|
|
|
{
|
|
|
DM_f_info.Link.connect_status = COMP_NORMAL;
|
|
|
DM_f_info.Link.recv_time = HAL_GetTick();
|
|
|
@@ -321,7 +320,6 @@ void DM_Fobs_recieved_hookfuction(uint32_t cellCanID,uint8_t data[], uint8_t len
|
|
|
memcpy(&FMU_4D_info.buf, &DM_F4d.RawData, DM_F4d.target_num * 5);
|
|
|
F4d_send_flag = true;
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
@@ -333,8 +331,8 @@ void DM_Fobs_recieved_hookfuction(uint32_t cellCanID,uint8_t data[], uint8_t len
|
|
|
dm_4df_i = 0;
|
|
|
}
|
|
|
}
|
|
|
- //4D前避障雷达协议 单点
|
|
|
- if(cellCanID == 0XA01302)
|
|
|
+ // 4D前避障雷达协议 单点
|
|
|
+ if (cellCanID == 0XA01302)
|
|
|
{
|
|
|
F_4DRadar[0][0] = data[1] + data[2] * 256;
|
|
|
F_4DRadar[0][1] = data[3] + data[4] * 256;
|
|
|
@@ -344,75 +342,201 @@ void DM_Fobs_recieved_hookfuction(uint32_t cellCanID,uint8_t data[], uint8_t len
|
|
|
Dev.Part_Fradar_Link.connect_status = COMP_NORMAL;
|
|
|
Dev.Part_radarF.facid = FAC_DM_RF_4D;
|
|
|
}
|
|
|
- else if(cellCanID == 0XA01303)
|
|
|
+ else if (cellCanID == 0XA01303)
|
|
|
{
|
|
|
F_4DRadar[1][0] = data[1] + data[2] * 256;
|
|
|
F_4DRadar[1][1] = data[3] + data[4] * 256;
|
|
|
F_4DRadar[1][2] = data[5] + data[6] * 256;
|
|
|
}
|
|
|
- else if(cellCanID == 0XA01304)
|
|
|
+ else if (cellCanID == 0XA01304)
|
|
|
{
|
|
|
F_4DRadar[2][0] = data[1] + data[2] * 256;
|
|
|
F_4DRadar[2][1] = data[3] + data[4] * 256;
|
|
|
F_4DRadar[2][2] = data[5] + data[6] * 256;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- //版本信息
|
|
|
- if(cellCanID == 0XA81301 && data[0] == 0x1)
|
|
|
+ // 版本信息
|
|
|
+ if (cellCanID == 0XA81301 && data[0] == 0x1)
|
|
|
{
|
|
|
uint32_t version_temp = 0;
|
|
|
DM_T_info.byte7.frame_flag = data[7];
|
|
|
|
|
|
- if(DM_T_info.byte7.flag.head != 0 ) //头
|
|
|
+ if (DM_T_info.byte7.flag.head != 0) // 头
|
|
|
{
|
|
|
- memcpy(&version_temp,&data[1],4);
|
|
|
- Int2String(version_temp,DM_f_info.sn,9);
|
|
|
- //通过SN序号判断新旧boot
|
|
|
- if((version_temp % 10000000) < 2502999)
|
|
|
+ memcpy(&version_temp, &data[1], 4);
|
|
|
+ Int2String(version_temp, DM_f_info.sn, 9);
|
|
|
+ // 通过SN序号判断新旧boot
|
|
|
+ if ((version_temp % 10000000) < 2502999)
|
|
|
DM_f_info.version[3] = 'O';
|
|
|
else
|
|
|
DM_f_info.version[3] = 'N';
|
|
|
|
|
|
- regist_dev_info(&dev_obsf,DEVICE_OBSF,false,DM_f_info.sn,9,NULL,0,NULL,0,"dmter",6);
|
|
|
+ regist_dev_info(&dev_obsf, DEVICE_OBSF, false, DM_f_info.sn, 9, NULL, 0, NULL, 0, "dmter", 6);
|
|
|
}
|
|
|
- else if(DM_T_info.byte7.flag.tail != 0) //尾
|
|
|
+ else if (DM_T_info.byte7.flag.tail != 0) // 尾
|
|
|
{
|
|
|
- memcpy(&version_temp,&data[1],4);
|
|
|
- Int2String(version_temp,&DM_f_info.version[4],6);
|
|
|
+ memcpy(&version_temp, &data[1], 4);
|
|
|
+ Int2String(version_temp, &DM_f_info.version[4], 6);
|
|
|
DM_f_info.version[0] = 'D';
|
|
|
DM_f_info.version[1] = 'W';
|
|
|
DM_f_info.version[2] = '1';
|
|
|
-
|
|
|
- regist_dev_info(&dev_obsf,DEVICE_OBSF,false,NULL,0,DM_f_info.version,10,NULL,0,"dmter",6);
|
|
|
|
|
|
- DM_f_info.get_radar_ver_flag = true;
|
|
|
- pmu_send = PMU_SEND_VERSION; //旧版APP
|
|
|
+ regist_dev_info(&dev_obsf, DEVICE_OBSF, false, NULL, 0, DM_f_info.version, 10, NULL, 0, "dmter", 6);
|
|
|
+
|
|
|
+ DM_f_info.get_radar_ver_flag = true;
|
|
|
+ pmu_send = PMU_SEND_VERSION; // 旧版APP
|
|
|
}
|
|
|
}
|
|
|
- else if(cellCanID == 0xA81301 && (data[0] == 0x8 || data[0] == 0x5))
|
|
|
+ else if (cellCanID == 0xA81301 && (data[0] == 0x8 || data[0] == 0x5))
|
|
|
{
|
|
|
- if(data[0] == 0x8)
|
|
|
+ if (data[0] == 0x8)
|
|
|
DM_f_info.get_radar_blind_flag = true;
|
|
|
- pmu_set_ack(_MSGID_SET,MSGID_SET_TR_BLIND,0x11,data[1] + data[2] * 256);
|
|
|
+ pmu_set_ack(_MSGID_SET, MSGID_SET_TR_BLIND, 0x11, data[1] + data[2] * 256);
|
|
|
}
|
|
|
- else if(cellCanID == 0xA81301 && (data[0] == 0x9 || data[0] == 0x7))
|
|
|
+ else if (cellCanID == 0xA81301 && (data[0] == 0x9 || data[0] == 0x7))
|
|
|
{
|
|
|
- if(data[0] == 0x9)
|
|
|
+ if (data[0] == 0x9)
|
|
|
DM_f_info.get_radar_power_flag = true;
|
|
|
- pmu_set_ack(_MSGID_SET,MSGID_SET_BR_POWER,0x11,data[1] + data[2] * 256);
|
|
|
+ pmu_set_ack(_MSGID_SET, MSGID_SET_BR_POWER, 0x11, data[1] + data[2] * 256);
|
|
|
+ }
|
|
|
+ else if (cellCanID == 0xA81301 && (data[0] == 0xA || data[0] == 0xB))
|
|
|
+ {
|
|
|
+
|
|
|
+ if (data[0] == 0xB)
|
|
|
+ DM_f_info.get_radar_rawSwitch_flag = true;
|
|
|
+ pmu_set_ack(_MSGID_SET, MSGID_SET_RAW_SWITCH, 0x11, data[1] + data[2] * 256);
|
|
|
+
|
|
|
+ }
|
|
|
+ else if (cellCanID == 0xA81301 && data[0] == 0x4)
|
|
|
+ {
|
|
|
+ pmu_set_ack(_MSGID_SET, MSGID_SET_R_FUNC, 0, data[1] + data[2] * 256);
|
|
|
+ }
|
|
|
+ else if (cellCanID == 0xA81302 && (data[0] == 0xD || data[0] == 0xC))
|
|
|
+ {
|
|
|
+ if (data[0] == 0xD)
|
|
|
+ DM_4DRADARMAG.get_angel_4DF = true;
|
|
|
+ DM_4DRADARMAG.angel_4DF = data[1] + data[2] * 256;
|
|
|
+ DM4Dmsg_send_fmu = true;
|
|
|
+ }
|
|
|
+ else if (cellCanID == 0xA81302 && (data[0] == 0xF || data[0] == 0xE))
|
|
|
+ {
|
|
|
+ if (data[0] == 0xF)
|
|
|
+ DM_4DRADARMAG.get_ground_filter_4DF = true;
|
|
|
+ DM_4DRADARMAG.ground_filter_4DF = data[1] + data[2] * 256;
|
|
|
+ DM4Dmsg_send_fmu = true;
|
|
|
+ }
|
|
|
+ else if (cellCanID == 0xA81301 && (data[0] == 0xA || data[0] == 0xB))
|
|
|
+ {
|
|
|
+ if (data[0] == 0xB)
|
|
|
+ DM_4DRADARMAG.get_dotcloud_switch_4DF = true;
|
|
|
+ DM_4DRADARMAG.dotcloud_switch_4DF = data[1] + data[2] * 256;
|
|
|
+ DM4Dmsg_send_fmu = true;
|
|
|
+ }
|
|
|
+}
|
|
|
+int16_t B_4DRadar[3][3] = {0}; // X Y Z
|
|
|
+DM_4dFRADAR DM_B4d;
|
|
|
+int dm_4dB_i = 0;
|
|
|
+// DM_4DRADAR FMU_4DB_info;
|
|
|
+bool B4d_send_flag = false;
|
|
|
+uint8_t DM4dB_recv_flag = 0;
|
|
|
+void DM_Bobs_recieved_hookfuction(uint32_t cellCanID, uint8_t data[], uint8_t len)
|
|
|
+{
|
|
|
+ // 4D后避障雷达协议 点云
|
|
|
+ if (cellCanID == 0XB01310)
|
|
|
+ {
|
|
|
+ // DM_4dstatus.connect_status = COMP_NORMAL;
|
|
|
+ // DM_4dstatus.recv_time = HAL_GetTick();
|
|
|
+ Dev.Part_radarB.facid = FAC_DM_RB_4D;
|
|
|
+
|
|
|
+ DM_B4d.byte7.frame_flag = data[7];
|
|
|
+
|
|
|
+ if (DM_B4d.byte7.flag.head != 0) // 头
|
|
|
+ {
|
|
|
+ memcpy(&DM_B4d.target_num, &data[0], 7);
|
|
|
+ dm_4dB_i = 0;
|
|
|
+ }
|
|
|
+ else if (DM_B4d.byte7.flag.tail != 0) // 尾
|
|
|
+ {
|
|
|
+ if (DM_B4d.target_num != 1)
|
|
|
+ {
|
|
|
+ if ((DM_B4d.target_num * 5) % 7 != 0)
|
|
|
+ {
|
|
|
+ memcpy(&DM_B4d.RawData[dm_4dB_i], &data[0], (DM_B4d.target_num * 5) % 7);
|
|
|
+ dm_4dB_i += (DM_B4d.target_num * 5) % 7;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ memcpy(&DM_B4d.RawData[dm_4dB_i], &data[0], 7);
|
|
|
+ dm_4dB_i += 7;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ memcpy(&DM_B4d.RawData[dm_4dB_i], &data[0], 5);
|
|
|
+ dm_4dB_i += 5;
|
|
|
+ }
|
|
|
+ if (DM_4dstatus.connect_status != COMP_NORMAL)
|
|
|
+ {
|
|
|
+ if (DM_B4d.crc == Get_Crc16(&DM_B4d.RawData[0], DM_B4d.target_num * 5) && DM4dB_recv_flag == 0)
|
|
|
+ {
|
|
|
+ FMU_4D_info.target_num = DM_B4d.target_num;
|
|
|
+ memcpy(&FMU_4D_info.buf, &DM_B4d.RawData, DM_B4d.target_num * 5);
|
|
|
+ B4d_send_flag = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ memcpy(&DM_B4d.RawData[dm_4dB_i], &data[0], 7);
|
|
|
+ dm_4dB_i += 7;
|
|
|
+ }
|
|
|
+ if (dm_4dB_i >= 254 * 5)
|
|
|
+ {
|
|
|
+ dm_4dB_i = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 4D后避障雷达协议 单点
|
|
|
+ if (cellCanID == 0XB01302)
|
|
|
+ {
|
|
|
+ B_4DRadar[0][0] = data[1] + data[2] * 256;
|
|
|
+ B_4DRadar[0][1] = data[3] + data[4] * 256;
|
|
|
+ B_4DRadar[0][2] = data[5] + data[6] * 256;
|
|
|
+
|
|
|
+ Dev.Part_Bradar_Link.recv_time = HAL_GetTick();
|
|
|
+ Dev.Part_Bradar_Link.connect_status = COMP_NORMAL;
|
|
|
+ Dev.Part_radarB.facid = FAC_DM_RB_4D;
|
|
|
+ }
|
|
|
+ else if (cellCanID == 0XB01303)
|
|
|
+ {
|
|
|
+ B_4DRadar[1][0] = data[1] + data[2] * 256;
|
|
|
+ B_4DRadar[1][1] = data[3] + data[4] * 256;
|
|
|
+ B_4DRadar[1][2] = data[5] + data[6] * 256;
|
|
|
+ }
|
|
|
+ else if (cellCanID == 0XB01304)
|
|
|
+ {
|
|
|
+ B_4DRadar[2][0] = data[1] + data[2] * 256;
|
|
|
+ B_4DRadar[2][1] = data[3] + data[4] * 256;
|
|
|
+ B_4DRadar[2][2] = data[5] + data[6] * 256;
|
|
|
+ }
|
|
|
+ else if (cellCanID == 0xB81302 && (data[0] == 0xA || data[0] == 0xB))
|
|
|
+ {
|
|
|
+ if (data[0] == 0xB)
|
|
|
+ DM_4DRADARMAG.get_dotcloud_switch_4DB = true;
|
|
|
+ DM_4DRADARMAG.dotcloud_switch_4DB = data[1] + data[2] * 256;
|
|
|
+ DM4Dmsg_send_fmu = true;
|
|
|
}
|
|
|
- else if(cellCanID == 0xA81301 && (data[0] == 0xA || data[0] == 0xB))
|
|
|
+ else if (cellCanID == 0xB81302 && (data[0] == 0xD || data[0] == 0xC))
|
|
|
{
|
|
|
- if(data[0] == 0xB)
|
|
|
- DM_f_info.get_radar_rawSwitch_flag = true;
|
|
|
- pmu_set_ack(_MSGID_SET,MSGID_SET_RAW_SWITCH,0x11,data[1] + data[2] * 256);
|
|
|
+ if (data[0] == 0xD)
|
|
|
+ DM_4DRADARMAG.get_angel_4DB = true;
|
|
|
+ DM_4DRADARMAG.angel_4DB = data[1] + data[2] * 256;
|
|
|
+ DM4Dmsg_send_fmu = true;
|
|
|
}
|
|
|
- else if(cellCanID == 0xA81301 && data[0] == 0x4 )
|
|
|
+ else if (cellCanID == 0xB81302 && (data[0] == 0xF || data[0] == 0xE))
|
|
|
{
|
|
|
- pmu_set_ack(_MSGID_SET,MSGID_SET_R_FUNC,0,data[1] + data[2] * 256);
|
|
|
+ if (data[0] == 0xF)
|
|
|
+ DM_4DRADARMAG.get_ground_filter_4DB = true;
|
|
|
+ DM_4DRADARMAG.ground_filter_4DB = data[1] + data[2] * 256;
|
|
|
+ DM4Dmsg_send_fmu = true;
|
|
|
}
|
|
|
-
|
|
|
}
|