Files
CCU621M/app/mdu_comm/mdu_stm_status_comm.c

126 lines
2.9 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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 */