Browse Source

修改zcanreceiver 兼容最新的zcanprotocol

hand_acid_mainboard
zhaohe 11 months ago
parent
commit
a58887133a
  1. 17
      zcanreceiver/zcanreceiver.cpp
  2. 10
      zcanreceiver/zcanreceiver.hpp

17
zcanreceiver/zcanreceiver.cpp

@ -11,7 +11,6 @@
#define HEART_OVERTIME (30 * 1000) #define HEART_OVERTIME (30 * 1000)
using namespace iflytop; using namespace iflytop;
using namespace zscanprotocol;
static uint8_t m_deviceId; static uint8_t m_deviceId;
static zcanbus_on_rx_t m_rxlistener[30]; 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) { 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*/) { 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); uint32_t level = HAL_CAN_GetRxFifoFillLevel(CANHANDLER, CAN_FIFO_NUM);
if (level == 0) { if (level == 0) {
@ -100,7 +99,7 @@ static void _processOneCanPacket(CAN_RxHeaderTypeDef *pHeader, uint8_t *aData) {
return; return;
} }
// �接收主机消�
// �接收主机消�
if (from != 1) { if (from != 1) {
return; return;
} }
@ -109,7 +108,7 @@ static void _processOneCanPacket(CAN_RxHeaderTypeDef *pHeader, uint8_t *aData) {
return; return;
} }
// 上次接收到的消�还没有�的急处�
// 上�接收到的消�还没有�的急��
if (m_rxbufcache.dataIsReady) { if (m_rxbufcache.dataIsReady) {
ZLOGI(TAG, "discard rx packet ,last packet not processed"); ZLOGI(TAG, "discard rx packet ,last packet not processed");
return; return;
@ -195,7 +194,7 @@ HAL_StatusTypeDef initializeFilter() {
sFilterConfig.SlaveStartFilterBank = CAN_MAX_FILTER_NUM; // slave filter start index sFilterConfig.SlaveStartFilterBank = CAN_MAX_FILTER_NUM; // slave filter start index
/******************************************************************************* /*******************************************************************************
* æŽ¥æææœæˆæ¯ *
* æŽ¥æææœæˆæ? *
*******************************************************************************/ *******************************************************************************/
filterId = (0); // filterId = (0); //
mask = (0); // mask = (0); //
@ -219,7 +218,7 @@ void zcanbus_init(uint8_t deviceId) {
HAL_StatusTypeDef hal_status; HAL_StatusTypeDef hal_status;
m_rxbufcache.dataIsReady = false; m_rxbufcache.dataIsReady = false;
m_rxbufcache.id = 0; // �接收�自主机的消�
m_rxbufcache.id = 0; // �接收�自主机的消�
m_rxbufcache.canPacketNum = 0; m_rxbufcache.canPacketNum = 0;
hal_status = initializeFilter(); 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); 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; int32_t val = _val ? 1 : 0;
return zcanbus_send_ack(rxpacket, (uint8_t *)&val, sizeof(val)); return zcanbus_send_ack(rxpacket, (uint8_t *)&val, sizeof(val));
} }

10
zcanreceiver/zcanreceiver.hpp

@ -5,7 +5,7 @@
#pragma once #pragma once
#include "project_configs.h" #include "project_configs.h"
#include "stm32basic/stm32basic.hpp" #include "stm32basic/stm32basic.hpp"
#include "zscanprotocol/zscanprotocol.hpp"
#include "zscanprotocol/zscanprotocol.h"
typedef void (*zcanbus_on_rx_t)(uint8_t from, uint8_t to, uint8_t *packet, size_t len); typedef void (*zcanbus_on_rx_t)(uint8_t from, uint8_t to, uint8_t *packet, size_t len);
typedef void (*zcanbus_on_connected_t)(bool connected); typedef void (*zcanbus_on_connected_t)(bool connected);
@ -37,9 +37,9 @@ bool zcanbus_send_packet(uint8_t to, uint8_t *packet, size_t len);
bool zcanbus_send_packet(uint8_t to, uint8_t *packet, size_t len, int overtimems); bool zcanbus_send_packet(uint8_t to, uint8_t *packet, size_t len, int overtimems);
bool zcanbus_send_sub_packet(uint8_t to, int npacket, int packetIndex, uint8_t *packet, size_t len, int overtimems); bool zcanbus_send_sub_packet(uint8_t to, int npacket, int packetIndex, uint8_t *packet, size_t len, int overtimems);
bool zcanbus_send_ack(iflytop::zscanprotocol::zcanbus_packet_t *rxpacket, uint8_t *param, size_t len);
bool zcanbus_send_ack(iflytop::zscanprotocol::zcanbus_packet_t *rxpacket, int32_t val);
bool zcanbus_send_ack(iflytop::zscanprotocol::zcanbus_packet_t *rxpacket, bool _val);
bool zcanbus_send_errorack(iflytop::zscanprotocol::zcanbus_packet_t *rxpacket, int32_t errcode);
bool zcanbus_send_ack(zcanbus_packet_t *rxpacket, uint8_t *param, size_t len);
bool zcanbus_send_ack(zcanbus_packet_t *rxpacket, int32_t val);
bool zcanbus_send_ack(zcanbus_packet_t *rxpacket, bool _val);
bool zcanbus_send_errorack(zcanbus_packet_t *rxpacket, int32_t errcode);
bool zcanbus_send_report(uint16_t function_id, uint8_t *param, size_t len, int32_t overtime); bool zcanbus_send_report(uint16_t function_id, uint8_t *param, size_t len, int32_t overtime);
bool zcanbus_send_emergency_report(uint16_t function_id, uint8_t *param, size_t len, int32_t overtime); bool zcanbus_send_emergency_report(uint16_t function_id, uint8_t *param, size_t len, int32_t overtime);
Loading…
Cancel
Save