#include "mdu_comm/mdu_stm_status_comm.h" #include "mdu_comm/mdu_comm_task.h" #include "collect_ctrl/yk_ctrl.h" #if (GUN_LINK_COMM_EN) /* STM32072 板状态 CAN 帧:扩展帧 ID 0x1801AABB * data[0] = A枪插枪(0=未插枪 1=插枪) * data[1] = B枪插枪 * data[2] = DI1 * data[3] = DI2 */ #define STM_STATUS_CAN_ID ((U32_T)0x1801AABB) /* STM32072 板控制 CAN 帧:扩展帧 ID 0x1802BBAA * data[0] = DO0(本板 DO1,对应辅源1) * data[1] = DO1(本板 DO2,对应辅源2) */ #define STM_CTRL_CAN_ID ((U32_T)0x1802BBAA) typedef struct { U8_T u8_gun_plug[2]; // 0:A枪 1:B枪 U8_T u8_di[2]; // 0:DI1 1:DI2 U8_T u8_aux[2]; // 0:AUX_A 1:AUX_B } S_STM_STATUS_CAN; static S_STM_STATUS_CAN s_stm_status_can; U8_T u8_stm_status_can_rx(CAN_DATA *rxMsg) { if (rxMsg->ID != STM_STATUS_CAN_ID) { return 0; } s_stm_status_can.u8_gun_plug[0] = (rxMsg->Data[0] ? 1U : 0U); s_stm_status_can.u8_gun_plug[1] = (rxMsg->Data[1] ? 1U : 0U); s_stm_status_can.u8_di[0] = (rxMsg->Data[2] ? 1U : 0U); s_stm_status_can.u8_di[1] = (rxMsg->Data[3] ? 1U : 0U); s_stm_status_can.u8_aux[0] = (rxMsg->Data[4] ? 1U : 0U); // AUX_PADET_A s_stm_status_can.u8_aux[1] = (rxMsg->Data[5] ? 1U : 0U); // AUX_PADET_B return 1; } void v_stm_status_can_send_aux_frame(void) { CAN_DATA can_data; memset(&can_data , 0 , sizeof(CAN_DATA)); can_data.ID = STM_CTRL_CAN_ID; /* 与 STM32 侧 APP_CTRL_CAN_ID 保持一致 */ can_data.Len = 8; /* 辅源1/2 控制:E_CMD 为 0/1,直接作为 DO0/DO1 的控制位 */ can_data.Data[0] = (U8_T)e_yk_get_ctrl_cmd(E_KY_TYPE_AUX_POWER1); can_data.Data[1] = (U8_T)e_yk_get_ctrl_cmd(E_KY_TYPE_AUX_POWER2); v_MduCanMsg_send(&can_data); } U8_T u8_stm_status_get_gun_plug(U8_T u8_gunNo) { if (u8_gunNo < 2) { return s_stm_status_can.u8_gun_plug[u8_gunNo]; } return 0; } U8_T u8_stm_status_get_di(U8_T u8_index) { if (u8_index < 2) { return s_stm_status_can.u8_di[u8_index]; } return 0; } U8_T u8_stm_status_get_aux(U8_T u8_index) { if (u8_index < 2) { return s_stm_status_can.u8_aux[u8_index]; } return 0; } // 判断是否有国标枪,若有则启用国标相关功能 U8_T u8_stm_gb_enable(void) { return (g_t_share_data.t_sys_fix_cfg.u8_gun_type[0] == GUN_TYPE_GB || g_t_share_data.t_sys_fix_cfg.u8_gun_type[1] == GUN_TYPE_GB); } #else /* GUN_LINK_COMM_EN == 0 */ U8_T u8_stm_status_can_rx(CAN_DATA *rxMsg) { (void)rxMsg; return 0; } void v_stm_status_can_send_aux_frame(void) { } U8_T u8_stm_status_get_gun_plug(U8_T u8_gunNo) { (void)u8_gunNo; return 0; } U8_T u8_stm_status_get_di(U8_T u8_index) { (void)u8_index; return 0; } // 判断是否有国标枪,若有则启用国标相关功能 U8_T u8_stm_gb_enable(void) { return 0; } #endif /* GUN_LINK_COMM_EN */