Browse Source

update

master
zhaohe 1 year ago
parent
commit
4fbd2bdf3a
  1. 40
      components/zcancmder/zcanreceiver.cpp
  2. 12
      components/zcancmder/zcanreceiver.hpp

40
components/zcancmder/zcanreceiver.cpp

@ -11,7 +11,7 @@ using namespace zcr;
#define OVER_TIME_MS 5
ZCanCmder::CFG *ZCanCmder::createCFG(uint8_t deviceId) {
ZCanReceiver::CFG *ZCanReceiver::createCFG(uint8_t deviceId) {
CFG *cfg = new CFG();
ZASSERT(cfg != NULL);
cfg->deviceId = deviceId;
@ -25,7 +25,7 @@ ZCanCmder::CFG *ZCanCmder::createCFG(uint8_t deviceId) {
cfg->rxfifoNum = CAN_RX_FIFO0;
return cfg;
}
void ZCanCmder::init(CFG *cfg) {
void ZCanReceiver::initialize(CFG *cfg) {
HAL_StatusTypeDef hal_status;
m_config = cfg;
m_lock.init();
@ -68,7 +68,7 @@ void ZCanCmder::init(CFG *cfg) {
}
// ZHALCORE::getInstance()->regPeriodJob([this](ZHALCORE::Context &context) { loop(); }, 0);
}
HAL_StatusTypeDef ZCanCmder::initializeFilter() {
HAL_StatusTypeDef ZCanReceiver::initializeFilter() {
/**
* @brief ID区帧格式
* [ 27:0 ]
@ -108,8 +108,8 @@ HAL_StatusTypeDef ZCanCmder::initializeFilter() {
return HAL_Status;
}
void ZCanCmder::registerListener(IZCanReceiverListener *listener) { m_listenerList.push_back(listener); }
void ZCanCmder::sendPacket(uint8_t *packet, size_t len) {
void ZCanReceiver::registerListener(IZCanReceiverListener *listener) { m_listenerList.push_back(listener); }
void ZCanReceiver::sendPacket(uint8_t *packet, size_t len) {
/**
* @brief
*/
@ -134,7 +134,7 @@ void ZCanCmder::sendPacket(uint8_t *packet, size_t len) {
}
}
#if 0
void ZCanCmder::sendAck(zcr_cmd_header_t *cmdheader, uint8_t *data, size_t len) {
void ZCanReceiver::sendAck(zcr_cmd_header_t *cmdheader, uint8_t *data, size_t len) {
zlock_guard l(m_lock);
zcr_cmd_header_t *txheader = (zcr_cmd_header_t *)txbuff;
memcpy(txheader, cmdheader, sizeof(zcr_cmd_header_t));
@ -142,7 +142,7 @@ void ZCanCmder::sendAck(zcr_cmd_header_t *cmdheader, uint8_t *data, size_t len)
memcpy(txheader->data, data, len);
sendPacket(txbuff, sizeof(zcr_cmd_header_t) + len);
}
void ZCanCmder::sendErrorAck(zcr_cmd_header_t *cmdheader, uint16_t id, uint32_t errcode) {
void ZCanReceiver::sendErrorAck(zcr_cmd_header_t *cmdheader, uint16_t id, uint32_t errcode) {
zlock_guard l(m_lock);
zcr_cmd_header_t *txheader = (zcr_cmd_header_t *)txbuff;
@ -154,7 +154,7 @@ void ZCanCmder::sendErrorAck(zcr_cmd_header_t *cmdheader, uint16_t id, uint32_t
sendPacket(txbuff, sizeof(zcr_cmd_header_t) + sizeof(zcanreceiver_error_ack_t));
}
void ZCanCmder::sendExecStatusReport(zcr_cmd_header_t *rxcmdheader, uint8_t *data, size_t len) {
void ZCanReceiver::sendExecStatusReport(zcr_cmd_header_t *rxcmdheader, uint8_t *data, size_t len) {
zlock_guard l(m_lock);
zcr_cmd_header_t *txheader = (zcr_cmd_header_t *)txbuff;
@ -163,7 +163,7 @@ void ZCanCmder::sendExecStatusReport(zcr_cmd_header_t *rxcmdheader, uint8_t *dat
memcpy(txheader->data, data, len);
sendPacket(txbuff, sizeof(zcr_cmd_header_t) + len);
}
void ZCanCmder::sendStatusReport(zcr_cmd_header_t *rxcmdheader, uint8_t *data, size_t len) {
void ZCanReceiver::sendStatusReport(zcr_cmd_header_t *rxcmdheader, uint8_t *data, size_t len) {
zlock_guard l(m_lock);
zcr_cmd_header_t *txheader = (zcr_cmd_header_t *)txbuff;
@ -173,7 +173,7 @@ void ZCanCmder::sendStatusReport(zcr_cmd_header_t *rxcmdheader, uint8_t *data, s
sendPacket(txbuff, sizeof(zcr_cmd_header_t) + len);
}
#endif
int32_t ZCanCmder::sendBufAck(zcr_cmd_header_t *rx_cmd_header, uint8_t *data, int32_t len) {
int32_t ZCanReceiver::sendBufAck(zcr_cmd_header_t *rx_cmd_header, uint8_t *data, int32_t len) {
zlock_guard l(m_lock);
ZASSERT(sizeof(txbuff) > sizeof(zcr_cmd_header_t) + len);
zcr_cmd_header_t *txheader = (zcr_cmd_header_t *)txbuff;
@ -183,7 +183,7 @@ int32_t ZCanCmder::sendBufAck(zcr_cmd_header_t *rx_cmd_header, uint8_t *data, in
sendPacket(txbuff, sizeof(zcr_cmd_header_t) + len);
return 0;
}
int32_t ZCanCmder::triggerEvent(zcr_cmd_header_t *cmd_header, uint8_t *data, int32_t len) {
int32_t ZCanReceiver::triggerEvent(zcr_cmd_header_t *cmd_header, uint8_t *data, int32_t len) {
zlock_guard l(m_lock);
m_reportIndex++;
ZASSERT(sizeof(txbuff) > sizeof(zcr_cmd_header_t) + len);
@ -196,7 +196,7 @@ int32_t ZCanCmder::triggerEvent(zcr_cmd_header_t *cmd_header, uint8_t *data, int
return 0;
}
int32_t ZCanCmder::sendAck(zcr_cmd_header_t *rx_cmd_header, int32_t *ackvar, int32_t nack) {
int32_t ZCanReceiver::sendAck(zcr_cmd_header_t *rx_cmd_header, int32_t *ackvar, int32_t nack) {
zlock_guard l(m_lock);
zcr_cmd_header_t *txheader = (zcr_cmd_header_t *)txbuff;
memcpy(txheader, rx_cmd_header, sizeof(zcr_cmd_header_t));
@ -210,7 +210,7 @@ int32_t ZCanCmder::sendAck(zcr_cmd_header_t *rx_cmd_header, int32_t *ackvar, int
sendPacket(txbuff, sizeof(zcr_cmd_header_t) + sizeof(int32_t) * nack);
return 0;
}
int32_t ZCanCmder::sendErrorAck(zcr_cmd_header_t *rx_cmd_header, int32_t errorcode) {
int32_t ZCanReceiver::sendErrorAck(zcr_cmd_header_t *rx_cmd_header, int32_t errorcode) {
zlock_guard l(m_lock);
zcr_cmd_header_t *txheader = (zcr_cmd_header_t *)txbuff;
memcpy(txheader, rx_cmd_header, sizeof(zcr_cmd_header_t));
@ -223,7 +223,7 @@ int32_t ZCanCmder::sendErrorAck(zcr_cmd_header_t *rx_cmd_header, int32_t errorco
return 0;
}
bool ZCanCmder::sendPacketSub(int npacket, int packetIndex, uint8_t *packet, size_t len, int overtimems) {
bool ZCanReceiver::sendPacketSub(int npacket, int packetIndex, uint8_t *packet, size_t len, int overtimems) {
zlock_guard l(m_lock);
// ZLOGI(TAG, "sendPacketSub(%d:%d)", npacket, packetIndex);
@ -264,7 +264,7 @@ bool ZCanCmder::sendPacketSub(int npacket, int packetIndex, uint8_t *packet, siz
return true;
}
bool ZCanCmder::getRxMessage(CAN_RxHeaderTypeDef *pHeader, uint8_t aData[] /*8byte table*/) {
bool ZCanReceiver::getRxMessage(CAN_RxHeaderTypeDef *pHeader, uint8_t aData[] /*8byte table*/) {
/**
* @brief FIFO中缓存了多少帧的数据
*/
@ -280,7 +280,7 @@ bool ZCanCmder::getRxMessage(CAN_RxHeaderTypeDef *pHeader, uint8_t aData[] /*8by
}
return false;
}
void ZCanCmder::STM32_HAL_onCAN_RxFifo0MsgPending(CAN_HandleTypeDef *canHandle) {
void ZCanReceiver::STM32_HAL_onCAN_RxFifo0MsgPending(CAN_HandleTypeDef *canHandle) {
/**
* @brief
*/
@ -338,13 +338,13 @@ void ZCanCmder::STM32_HAL_onCAN_RxFifo0MsgPending(CAN_HandleTypeDef *canHandle)
// deactivateRxIT();
}
void ZCanCmder::STM32_HAL_onCAN_Error(CAN_HandleTypeDef *canHandle) {
void ZCanReceiver::STM32_HAL_onCAN_Error(CAN_HandleTypeDef *canHandle) {
if (canHandle != m_config->canHandle) {
return;
}
ZLOGE(TAG, "onCAN_Error\r\n");
}
void ZCanCmder::loop() {
void ZCanReceiver::loop() {
CanPacketRxBuffer *rxbuf = &m_canPacketRxBuffer[0];
if (rxbuf->dataIsReady) {
int dataoff = 0;
@ -361,7 +361,7 @@ void ZCanCmder::loop() {
rxbuf->dataIsReady = false;
}
}
HAL_StatusTypeDef ZCanCmder::activateRxIT() {
HAL_StatusTypeDef ZCanReceiver::activateRxIT() {
HAL_StatusTypeDef hal_status = HAL_ERROR;
if (m_config->rxfifoNum == CAN_RX_FIFO0) {
hal_status = HAL_CAN_ActivateNotification(m_config->canHandle, CAN_IT_RX_FIFO0_MSG_PENDING);
@ -373,7 +373,7 @@ HAL_StatusTypeDef ZCanCmder::activateRxIT() {
}
return hal_status;
}
HAL_StatusTypeDef ZCanCmder::deactivateRxIT() {
HAL_StatusTypeDef ZCanReceiver::deactivateRxIT() {
HAL_StatusTypeDef hal_status = HAL_ERROR;
if (m_config->rxfifoNum == CAN_RX_FIFO0) {
hal_status = HAL_CAN_DeactivateNotification(m_config->canHandle, CAN_IT_RX_FIFO0_MSG_PENDING);

12
components/zcancmder/zcanreceiver.hpp

@ -10,16 +10,10 @@
namespace iflytop {
using namespace zcr;
#if 0
class ZCanCmderListener {
public:
virtual void onRceivePacket(CanPacketRxBuffer *rxcmd) = 0;
};
#endif
typedef function<void(CanPacketRxBuffer *rxcmd)> zcanreceiver_listener_t;
class ZCanCmder : public ZCanIRQListener, public IZCanReceiver {
class ZCanReceiver : public ZCanIRQListener, public IZCanReceiver {
public:
class CFG {
public:
@ -57,9 +51,9 @@ class ZCanCmder : public ZCanIRQListener, public IZCanReceiver {
int32_t m_reportIndex = 0;
public:
ZCanCmder() {}
ZCanReceiver() {}
CFG *createCFG(uint8_t deviceId);
void init(CFG *cfg);
void initialize(CFG *cfg);
#if 0
void sendExecStatusReport(zcr_cmd_header_t *rxcmdheader, uint8_t *data, size_t len);

Loading…
Cancel
Save