| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- #ifndef __SOFT_CAN_YY_H_
- #define __SOFT_CAN_YY_H_
- #include <stdint.h>
- #include "hpm_can_drv.h"
- enum Rotate_State
- {
- ROTATE_DEFAULT = 0x00,
- ROTATE_START = 0x01,
- ROTATE_FINISH = 0x02,
- };
- enum yy_CAN_node_id
- {
- NODE_TXGL = 0X01, // 通信管理
- NODE_MEMS = 0X02, // mems
- NODE_WRJ = 0X04, // 无人机
- NODE_HDWMK = 0X08, // 互定位模块
- NODE_RADAR = 0X10, // 雷达
- };
- enum yy_CAN_msg_id
- {
- MSG_XLTB = 0X01, // 系留同步帧
- MSG_RADAR_STATUS = 0X02,
- MSG_DRONE_STATUS = 0X03,
- MSG_IMU_SOLV = 0X04,
- MSG_IMU_A = 0x05,
- MSG_IMU_B = 0x06,
- MSG_IMU_C = 0x07,
- MSG_GLOBAL_POS = 0X08,
- MSG_GLOBAL_VEL = 0X09,
- MSG_POS_BIAS = 0X0A,
- MSG_HDW = 0X0B,
- MSG_HDW_DRIFT = 0X0C,
- MSG_RADAR_TAR1 = 0X0D,
- MSG_RADAR_TAR2 = 0X0E,
- MSG_RADAR_TAR3 = 0X0F,
- MSG_RADAR_TAR4 = 0X10,
- MSG_RADAR_TAR5 = 0X11,
- MSG_RADAR_TAR_MOVE1 = 0X12,
- MSG_RADAR_TAR_MOVE2 = 0X13,
- MSG_RADAR_TAR_MOVE3 = 0X14,
- MSG_RADAR_TAR_MOVE4 = 0X15,
- MSG_RADAR_TAR_MOVE5 = 0X16,
- MSG_DRONE_SELF_CHECK = 0x17,
- };
- enum yy_CAN_cmd_id
- {
- CTL_RTO_ACTION = 0x01,
- CTL_CW_ROTATION = 0x02,
- CTL_CCW_ROTATION = 0x04,
- CTL_ALT_ACTION = 0x08,
- CTL_YAW_ACTION = 0x10,
- CTL_TO_ACTION = 0x20,
- CTL_FIND_ACTION = 0x40,
- CTL_STOP_ACTION = 0x80,
- };
- enum yy_CAN_cmd_mask_id
- {
- CTL_RTO_CMD_MASK = 0x01, /*预备弹射指令*/
- CTL_ROTATE_CMD_MASK = 0x06, /*搜索指令:顺时针旋转/逆时针旋转*/
- CTL_ALT_CMD_MASK = 0x08, /*执行设定高度有效性*/
- CTL_YAW_CMD_MASK = 0x10, /*执行设定航向有效性*/
- CTL_TO_CMD_MASK = 0x20, /*执行弹射指令*/
- CTL_FIND_CMD_MASK = 0x40, /*范围搜索(±30度)*/
- CTL_STOP_CMD_MASK = 0x80, /*任务结束指令*/
- };
- #define CLEAR_STATUS_BIT(x, y) ((x) &= ~(1 << y))
- #define SET_STATUS_BIT(x, y) ((x) |= (1 << y))
- enum yy_CAN_cmd_execute_bit
- {
- TAX_READY = 0,
- ALT_SETTING = 1,
- ALT_EXECUTE = 2,
- YAW_SETTING = 3,
- YAW_EXECUTE = 4,
- CW_EXECUTE_COMPLETE = 5,
- CCW_EXECUTE_COMPLETE = 6,
- TAX_EXECUTE = 7,
- };
- struct yy_can_rx_msg_data
- {
- // 通讯管理模块相关数据
- int32_t txgl_lon; // 1e-7deg
- int32_t txgl_lat;
- float txgl_enu_vel[3]; // m/s
- uint8_t txgl_pos_fix_status;
- uint8_t txgl_gps_num;
- uint8_t temp_count; /*CAN帧ID类接收标志位: 按bit对应:b0:互定位帧 b1:卫导定位帧 b2:卫导速度帧
- b3:卫导经度是否丢失0丢失1未丢失 b4:卫导纬度是否丢失0丢失1未丢失*/
- // int16_t txgl_pos_fix_status;
- float txgl_msl_alt; // m
- uint8_t txgl_wk_stage;
- uint8_t txgl_drone_cmd; // b0 1-弹射准备 b1~2 00-无效 01-顺时针旋转 10-逆时针旋转
- uint8_t txgl_radar_cmd;
- uint8_t txgl_selfcheck; // 00-自检无效 11-自检有效
- float txgl_alt_sp; // m
- float txgl_yaw_sp; // deg
- // 互定位模块相关数据
- float hdw_enu_rpos[3]; // m 右前下
- float hdw_drift_vel[3]; // m/s
- uint16_t hdw_status;
- // mems imu 模块相关数据
- float imu_yaw; // in deg
- float imu_roll;
- float imu_pitch;
- uint8_t imu_status; /*bit0: 0--正欧拉角 1--反欧拉角 默认0*/
- float imu_xyz_rate[3]; // in deg/s
- float imu_xyz_acc[3]; // in m/s^2
- uint8_t temp; // 温度 °C
- uint16_t nav_status; /* 01-对准中 02-转导航 */
- uint16_t mems_status; /* 按 bit 对应 b0~b2 自检,*/
- };
- extern uint16_t hdw_can_delay;
- extern bool debug_mode, alt_reached, yaw_reached;
- extern uint32_t recv_alt_time;
- extern uint8_t status_broadcast;
- void updata_cmd_status(enum yy_CAN_cmd_execute_bit bit, bool status);
- const struct yy_can_rx_msg_data *yy_can_rx_data_get(void);
- int YY_can_rx_decode(const can_receive_buf_t *rxmsg);
- void YY_tx_loop(void);
- #endif
|