197 lines
8.1 KiB
C
197 lines
8.1 KiB
C
|
|
//-------------------------------------------------------------------------------
|
|||
|
|
// File Name: canwork.c
|
|||
|
|
// Brief:
|
|||
|
|
// Version: 1.0.0
|
|||
|
|
// Create Date: 2024/10/17
|
|||
|
|
// Create by: W.X
|
|||
|
|
// Copyright:
|
|||
|
|
// TIANJIN GETONAGAIN TECHNOLOGY CO., LIMITED
|
|||
|
|
// All rights reserved.
|
|||
|
|
//
|
|||
|
|
// Modify by: W.X
|
|||
|
|
// Modify Date: 2024/10/17
|
|||
|
|
//-------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
#include "canwork.h"
|
|||
|
|
|
|||
|
|
#if (CONTROL_BUS == COMM_CAN)
|
|||
|
|
|
|||
|
|
void ExA1CanFilter(u8 fifo);
|
|||
|
|
|
|||
|
|
void InitCAN(void)
|
|||
|
|
{
|
|||
|
|
// CAN <20>ڵ<EFBFBD>
|
|||
|
|
g_workCtrl.hostId = 1;
|
|||
|
|
|
|||
|
|
g_workCtrl.device = BN_DEVICE_EXA1;
|
|||
|
|
g_workCtrl.nodeId = CUR_EXA1_NODE_ID;
|
|||
|
|
|
|||
|
|
g_workCtrl.workSta = 2;
|
|||
|
|
|
|||
|
|
printf("g_workCtrl.nodeId is %d\r\n",g_workCtrl.nodeId);
|
|||
|
|
|
|||
|
|
RegistFilter(ExA1CanFilter);
|
|||
|
|
|
|||
|
|
InitCanCtrl();
|
|||
|
|
InitSewHeadControl(&g_workCtrl.curBdCtrl);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void ExA1CanFilter(u8 fifo)
|
|||
|
|
{
|
|||
|
|
CAN_FilterTypeDef CAN_FilterInitStructure;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ڵ<F3B1BEBD>״̬<D7B4>仯<EFBFBD><E4BBAF>Զ<EFBFBD><D4B6>֡<EFBFBD>Ϳ<EFBFBD><CDBF>Ʊ<EFBFBD><C6B1>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
|
|||
|
|
CAN_FilterInitStructure.FilterBank = 0; // <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>ΧΪ0~13
|
|||
|
|
CAN_FilterInitStructure.FilterMode = CAN_FILTERMODE_IDLIST; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0Ϊ<30><CEAA>ʶ<EFBFBD><CAB6><EFBFBD>б<EFBFBD>ģʽ
|
|||
|
|
CAN_FilterInitStructure.FilterScale = CAN_FILTERSCALE_32BIT; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0λ<30><CEBB>Ϊ32λ
|
|||
|
|
CAN_FilterInitStructure.FilterIdHigh = HIWORD(MAKE_FILTER(MAKE_EXID(g_workCtrl.device, g_workCtrl.nodeId, 0, BN_CMD_EXSTA), CAN_RTR_REMOTE)); // <20>趨<EFBFBD><E8B6A8>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16λ
|
|||
|
|
CAN_FilterInitStructure.FilterIdLow = LOWORD(MAKE_FILTER(MAKE_EXID(g_workCtrl.device, g_workCtrl.nodeId, 0, BN_CMD_EXSTA), CAN_RTR_REMOTE)); // <20>趨<EFBFBD><E8B6A8>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16λ
|
|||
|
|
CAN_FilterInitStructure.FilterMaskIdHigh = HIWORD(MAKE_FILTER(MAKE_EXID(g_workCtrl.device, g_workCtrl.nodeId, 0, BN_CMD_EXSTA), CAN_RTR_DATA)); // <20>趨<EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16λ
|
|||
|
|
CAN_FilterInitStructure.FilterMaskIdLow = LOWORD(MAKE_FILTER(MAKE_EXID(g_workCtrl.device, g_workCtrl.nodeId, 0, BN_CMD_EXSTA), CAN_RTR_DATA)); // <20>趨<EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16λ
|
|||
|
|
CAN_FilterInitStructure.FilterFIFOAssignment = fifo; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO
|
|||
|
|
CAN_FilterInitStructure.FilterActivation = ENABLE; // ʹ<>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
HAL_CAN_ConfigFilter(&HCAN,&CAN_FilterInitStructure); // д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
// <20>㲥<EFBFBD><E3B2A5><EFBFBD>Զ<EEA3AC><D4B6>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
|
|||
|
|
CAN_FilterInitStructure.FilterBank = 1; // <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>ΧΪ0~13
|
|||
|
|
CAN_FilterInitStructure.FilterMode = CAN_FILTERMODE_IDLIST; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1Ϊ<31><CEAA>ʶ<EFBFBD><CAB6><EFBFBD>б<EFBFBD>ģʽ
|
|||
|
|
CAN_FilterInitStructure.FilterScale = CAN_FILTERSCALE_32BIT; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1λ<31><CEBB>Ϊ32λ
|
|||
|
|
CAN_FilterInitStructure.FilterIdHigh = HIWORD(MAKE_FILTER(BROADCAST_EXID, CAN_RTR_REMOTE)); // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16λ
|
|||
|
|
CAN_FilterInitStructure.FilterIdLow = LOWORD(MAKE_FILTER(BROADCAST_EXID, CAN_RTR_REMOTE)); // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16λ
|
|||
|
|
CAN_FilterInitStructure.FilterMaskIdHigh = HIWORD(MAKE_FILTER(BNMASK_PRT, CAN_RTR_DATA)); // <20>趨<EFBFBD><E8B6A8><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16λ
|
|||
|
|
CAN_FilterInitStructure.FilterMaskIdLow = LOWORD(MAKE_FILTER(BNMASK_PRT, CAN_RTR_DATA)); // <20>趨<EFBFBD><E8B6A8><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16λ
|
|||
|
|
CAN_FilterInitStructure.FilterFIFOAssignment = fifo; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO
|
|||
|
|
CAN_FilterInitStructure.FilterActivation = ENABLE; // ʹ<>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
HAL_CAN_ConfigFilter(&HCAN,&CAN_FilterInitStructure); // д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<49>Ĺ㲥<C4B9><E3B2A5>Զ<EFBFBD><D4B6>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
|
|||
|
|
CAN_FilterInitStructure.FilterBank = 2; // <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD>ΧΪ0~13
|
|||
|
|
CAN_FilterInitStructure.FilterMode = CAN_FILTERMODE_IDLIST; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2Ϊ<32><CEAA>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λģʽ
|
|||
|
|
CAN_FilterInitStructure.FilterScale = CAN_FILTERSCALE_32BIT; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Ϊ1<CEAA><31>32λ<32><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
CAN_FilterInitStructure.FilterIdHigh = HIWORD(MAKE_FILTER(MAKE_EXID(g_workCtrl.device, BN_ID_BROADCAST, 0, 0), 0)); // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>32λλ<CEBB><CEBB>ʱΪ<CAB1><CEAA><EFBFBD>߶<EFBFBD>λ<EFBFBD><CEBB>16λλ<CEBB><CEBB>ʱΪ<CAB1><CEAA>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
|||
|
|
CAN_FilterInitStructure.FilterIdLow = LOWORD(MAKE_FILTER(MAKE_EXID(g_workCtrl.device, BN_ID_BROADCAST, 0, 0), 0)); // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>32λλ<CEBB><CEBB>ʱΪ<CAB1><CEAA><EFBFBD>Ͷ<EFBFBD>λ<EFBFBD><CEBB>16λλ<CEBB><CEBB>ʱΪ<CAB1>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
CAN_FilterInitStructure.FilterMaskIdHigh = HIWORD(MAKE_FILTER(BNMASK_PRT|BNMASK_TID, 0)); // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>α<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><DFB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>32λλ<CEBB><CEBB>ʱΪ<CAB1><CEAA><EFBFBD>߶<EFBFBD>λ<EFBFBD><CEBB>16λλ<CEBB><CEBB>ʱΪ<CAB1><CEAA>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
|||
|
|
CAN_FilterInitStructure.FilterMaskIdLow = LOWORD(MAKE_FILTER(BNMASK_PRT|BNMASK_TID, 0)); // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>α<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><DFB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>32λλ<CEBB><CEBB>ʱΪ<CAB1><CEAA><EFBFBD>Ͷ<EFBFBD>λ<EFBFBD><CEBB>16λλ<CEBB><CEBB>ʱΪ<CAB1>ڶ<EFBFBD><DAB6><EFBFBD>)
|
|||
|
|
CAN_FilterInitStructure.FilterFIFOAssignment = fifo; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO
|
|||
|
|
CAN_FilterInitStructure.FilterActivation = ENABLE; // ʹ<>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
HAL_CAN_ConfigFilter(&HCAN,&CAN_FilterInitStructure); // д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>豸<EFBFBD>ı<EFBFBD><C4B1>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>Ƶ<EFBFBD>Զ<EFBFBD><D4B6>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
|
|||
|
|
CAN_FilterInitStructure.FilterBank = 3; // <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD>ΧΪ0~13
|
|||
|
|
CAN_FilterInitStructure.FilterMode = CAN_FILTERMODE_IDLIST; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2Ϊ<32><CEAA>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λģʽ
|
|||
|
|
CAN_FilterInitStructure.FilterScale = CAN_FILTERSCALE_32BIT; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Ϊ1<CEAA><31>32λ<32><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
CAN_FilterInitStructure.FilterIdHigh = HIWORD(MAKE_FILTER(MAKE_EXID(g_workCtrl.device, g_workCtrl.nodeId, 0, 0), 0)); // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>32λλ<CEBB><CEBB>ʱΪ<CAB1><CEAA><EFBFBD>߶<EFBFBD>λ<EFBFBD><CEBB>16λλ<CEBB><CEBB>ʱΪ<CAB1><CEAA>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
|||
|
|
CAN_FilterInitStructure.FilterIdLow = LOWORD(MAKE_FILTER(MAKE_EXID(g_workCtrl.device, g_workCtrl.nodeId, 0, 0), 0)); // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>32λλ<CEBB><CEBB>ʱΪ<CAB1><CEAA><EFBFBD>Ͷ<EFBFBD>λ<EFBFBD><CEBB>16λλ<CEBB><CEBB>ʱΪ<CAB1>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
CAN_FilterInitStructure.FilterMaskIdHigh = HIWORD(MAKE_FILTER(BNMASK_PRT|BNMASK_TID, 0)); // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>α<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><DFB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>32λλ<CEBB><CEBB>ʱΪ<CAB1><CEAA><EFBFBD>߶<EFBFBD>λ<EFBFBD><CEBB>16λλ<CEBB><CEBB>ʱΪ<CAB1><CEAA>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
|||
|
|
CAN_FilterInitStructure.FilterMaskIdLow = LOWORD(MAKE_FILTER(BNMASK_PRT|BNMASK_TID, 0)); // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>α<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><DFB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>32λλ<CEBB><CEBB>ʱΪ<CAB1><CEAA><EFBFBD>Ͷ<EFBFBD>λ<EFBFBD><CEBB>16λλ<CEBB><CEBB>ʱΪ<CAB1>ڶ<EFBFBD><DAB6><EFBFBD>)
|
|||
|
|
CAN_FilterInitStructure.FilterFIFOAssignment = fifo; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO
|
|||
|
|
CAN_FilterInitStructure.FilterActivation = ENABLE; // ʹ<>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
HAL_CAN_ConfigFilter(&HCAN,&CAN_FilterInitStructure);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
void CanBusTask(void)
|
|||
|
|
{
|
|||
|
|
int rslt;
|
|||
|
|
int sendflag;
|
|||
|
|
CanRxMsg rxMsg;
|
|||
|
|
CanTxMsg txMsg;
|
|||
|
|
int dev, tid, sid, cmd;
|
|||
|
|
|
|||
|
|
sendflag = 0;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>CAN<41><4E><EFBFBD><EFBFBD>
|
|||
|
|
rslt = GetACanDataPacket(&rxMsg);
|
|||
|
|
if (rslt == 0)
|
|||
|
|
{
|
|||
|
|
dev = GET_PRT_FROM_EXID(rxMsg.canRxhead.ExtId);
|
|||
|
|
tid = GET_TID_FROM_EXID(rxMsg.canRxhead.ExtId);
|
|||
|
|
sid = GET_SID_FROM_EXID(rxMsg.canRxhead.ExtId);
|
|||
|
|
cmd = GET_CMD_FROM_EXID(rxMsg.canRxhead.ExtId);
|
|||
|
|
|
|||
|
|
if (rxMsg.canRxhead.RTR == CAN_RTR_REMOTE) // Զ<><D4B6>֡
|
|||
|
|
{
|
|||
|
|
if ((dev == BN_PROTOCOL_ALL || dev == g_workCtrl.device) && // ȫ<><C8AB><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>豸
|
|||
|
|
(tid == BN_ID_BROADCAST || tid == g_workCtrl.nodeId) ) // ȫ<><C8AB>ID<49><EFBFBD>
|
|||
|
|
{
|
|||
|
|
if (cmd == BN_CMD_EXSTA) // ״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
sendflag = 1; // <20><><EFBFBD><EFBFBD>״̬
|
|||
|
|
printf("receive sta request packet\r\n");
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("other Remote cmd, cmd=0x%x\r\n", cmd);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("other Remote packet, exid=0x%x\r\n", (int)rxMsg.canRxhead.ExtId);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else // if (rxMsg.canRxhead.RTR == CAN_RTR_DATA) // <20><><EFBFBD><EFBFBD>֡
|
|||
|
|
{
|
|||
|
|
if ((dev == BN_PROTOCOL_ALL ||dev == g_workCtrl.device) && // exa1
|
|||
|
|
(tid == BN_ID_BROADCAST || tid == g_workCtrl.nodeId) ) // ȫ<><C8AB>ID<49><EFBFBD>
|
|||
|
|
{
|
|||
|
|
if (cmd == BN_CMD_EXCTRL || // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
cmd == BN_CMD_TRAVERSE || // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
0 )
|
|||
|
|
{
|
|||
|
|
g_workCtrl.curBdCtrl.ctrlCmd.cancomm.exId.id = rxMsg.canRxhead.ExtId;
|
|||
|
|
memcpy(g_workCtrl.curBdCtrl.ctrlCmd.cancomm.data.buff, rxMsg.data, CAN_DATA_LEN); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>
|
|||
|
|
g_workCtrl.curBdCtrl.cmdFlag = 1; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|||
|
|
// printf("get ex ctrl cmd\r\n");
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("get other data cmd=0x%x\r\n", cmd);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("other data packet, dev=0x%x, tid=%d, exid=0x%x\r\n", dev, (int)tid, (int)rxMsg.canRxhead.ExtId);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (sendflag == 0)
|
|||
|
|
{
|
|||
|
|
sid = g_workCtrl.hostId;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>Ϣ
|
|||
|
|
if (g_workCtrl.curBdCtrl.staFlag != 0)
|
|||
|
|
{
|
|||
|
|
g_workCtrl.curBdCtrl.staFlag = 0;
|
|||
|
|
sendflag = 1; // <20><><EFBFBD><EFBFBD>״̬
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (sendflag == 1)
|
|||
|
|
{
|
|||
|
|
if(g_workCtrl.workSta == 1)
|
|||
|
|
{
|
|||
|
|
txMsg.canTxhead.ExtId = MAKE_EXID(g_workCtrl.device, g_workCtrl.nodeId, sid, BN_CMD_TRAVERSE); // ״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
txMsg.canTxhead.ExtId = MAKE_EXID(g_workCtrl.device, g_workCtrl.nodeId, sid, BN_CMD_EXSTA); // ״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
txMsg.canTxhead.RTR = CAN_RTR_DATA; // <20><><EFBFBD><EFBFBD>֡
|
|||
|
|
txMsg.canTxhead.IDE = CAN_ID_EXT; // <20><>չ֡
|
|||
|
|
txMsg.canTxhead.DLC = CAN_DATA_LEN; // <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
memcpy(txMsg.data, g_workCtrl.curBdCtrl.exbSta.cancomm.data.buff, CAN_DATA_LEN); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>
|
|||
|
|
rslt = SendACANDataPacket(&txMsg);
|
|||
|
|
|
|||
|
|
//printf("send sta data by can, exid=0x%x\r\n", (int)txMsg.ExtId);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|