|
|
@ -11,7 +11,6 @@ |
|
|
|
#define HEART_OVERTIME (30 * 1000)
|
|
|
|
|
|
|
|
using namespace iflytop; |
|
|
|
using namespace zscanprotocol; |
|
|
|
|
|
|
|
static uint8_t m_deviceId; |
|
|
|
static zcanbus_on_rx_t m_rxlistener[30]; |
|
|
@ -53,7 +52,7 @@ void HAL_CAN_ErrorCallback(CAN_HandleTypeDef *hcan) { ZLOGI(TAG, "HAL_CAN_ErrorC |
|
|
|
} |
|
|
|
|
|
|
|
/***********************************************************************************************************************
|
|
|
|
* 䏿–消æ�¯å¤„ç�† * |
|
|
|
* ��消�处� * |
|
|
|
***********************************************************************************************************************/ |
|
|
|
|
|
|
|
static void _oncanpacket(CAN_HandleTypeDef *hcan) { |
|
|
@ -67,7 +66,7 @@ static void _oncanpacket(CAN_HandleTypeDef *hcan) { |
|
|
|
|
|
|
|
static bool _getRxMessage(CAN_RxHeaderTypeDef *pHeader, uint8_t aData[] /*8byte table*/) { |
|
|
|
/**
|
|
|
|
* @brief 读å�–当å‰�FIFOä¸ç¼“å˜äº†å¤šå°‘帧的数æ�® |
|
|
|
* @brief 读å�–当å‰�FIFOä¸?缓å˜äº†å?šå°‘帧的数æ�® |
|
|
|
*/ |
|
|
|
uint32_t level = HAL_CAN_GetRxFifoFillLevel(CANHANDLER, CAN_FIFO_NUM); |
|
|
|
if (level == 0) { |
|
|
@ -100,7 +99,7 @@ static void _processOneCanPacket(CAN_RxHeaderTypeDef *pHeader, uint8_t *aData) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// �接收主机消�
|
|
|
|
// �接收主机消�
|
|
|
|
if (from != 1) { |
|
|
|
return; |
|
|
|
} |
|
|
@ -109,7 +108,7 @@ static void _processOneCanPacket(CAN_RxHeaderTypeDef *pHeader, uint8_t *aData) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 上次接收到的消�还没有�的急处�
|
|
|
|
// 上�接收到的消�还没有�的急��
|
|
|
|
if (m_rxbufcache.dataIsReady) { |
|
|
|
ZLOGI(TAG, "discard rx packet ,last packet not processed"); |
|
|
|
return; |
|
|
@ -195,7 +194,7 @@ HAL_StatusTypeDef initializeFilter() { |
|
|
|
sFilterConfig.SlaveStartFilterBank = CAN_MAX_FILTER_NUM; // slave filter start index
|
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
* 接收所有消� * |
|
|
|
* 接收所有消� * |
|
|
|
*******************************************************************************/ |
|
|
|
filterId = (0); //
|
|
|
|
mask = (0); //
|
|
|
@ -219,7 +218,7 @@ void zcanbus_init(uint8_t deviceId) { |
|
|
|
HAL_StatusTypeDef hal_status; |
|
|
|
|
|
|
|
m_rxbufcache.dataIsReady = false; |
|
|
|
m_rxbufcache.id = 0; // �接收�自主机的消�
|
|
|
|
m_rxbufcache.id = 0; // �接收�自主机的消�
|
|
|
|
m_rxbufcache.canPacketNum = 0; |
|
|
|
|
|
|
|
hal_status = initializeFilter(); |
|
|
@ -342,8 +341,8 @@ bool zcanbus_send_ack(zcanbus_packet_t *rxpacket, uint8_t *param, size_t len) { |
|
|
|
return zcanbus_send_packet(1 /*mainboard*/, (uint8_t *)&txpacket[0], sizeof(zcanbus_packet_t) + len); |
|
|
|
} |
|
|
|
|
|
|
|
bool zcanbus_send_ack(iflytop::zscanprotocol::zcanbus_packet_t *rxpacket, int32_t val) { return zcanbus_send_ack(rxpacket, (uint8_t *)&val, sizeof(val)); } |
|
|
|
bool zcanbus_send_ack(iflytop::zscanprotocol::zcanbus_packet_t *rxpacket, bool _val) { |
|
|
|
bool zcanbus_send_ack(zcanbus_packet_t *rxpacket, int32_t val) { return zcanbus_send_ack(rxpacket, (uint8_t *)&val, sizeof(val)); } |
|
|
|
bool zcanbus_send_ack(zcanbus_packet_t *rxpacket, bool _val) { |
|
|
|
int32_t val = _val ? 1 : 0; |
|
|
|
return zcanbus_send_ack(rxpacket, (uint8_t *)&val, sizeof(val)); |
|
|
|
} |
|
|
|