|
|
@ -34,6 +34,8 @@ class ZCanRceiverListener { |
|
|
|
virtual void onRceivePacket(CanPacketRxBuffer *rxbuf, uint8_t *packet, size_t len) = 0; |
|
|
|
}; |
|
|
|
|
|
|
|
typedef function<void(CanPacketRxBuffer *rxbuf, uint8_t *packet, size_t len)> CanPacketRxBufferCB_t; |
|
|
|
|
|
|
|
class ZCanReceiver : public ZCanIRQListener { |
|
|
|
public: |
|
|
|
class CFG { |
|
|
@ -65,6 +67,7 @@ class ZCanReceiver : public ZCanIRQListener { |
|
|
|
HAL_StatusTypeDef m_lastTransmitStatus; // 上次调用can发送方法的返回值
|
|
|
|
|
|
|
|
list<ZCanRceiverListener *> m_listenerList; |
|
|
|
list<CanPacketRxBufferCB_t> m_listenerCBList; |
|
|
|
CanPacketRxBuffer m_canPacketRxBuffer[1]; |
|
|
|
|
|
|
|
public: |
|
|
@ -73,6 +76,7 @@ class ZCanReceiver : public ZCanIRQListener { |
|
|
|
void init(CFG *cfg); |
|
|
|
|
|
|
|
void registerListener(ZCanRceiverListener *listener); |
|
|
|
void registerListener(CanPacketRxBufferCB_t cb); |
|
|
|
void sendPacket(uint8_t *packet, size_t len); |
|
|
|
void sendAck(Cmdheader_t *cmdheader, uint8_t *data, size_t len); |
|
|
|
void sendErrorAck(Cmdheader_t *cmdheader, int16_t errcode); |
|
|
|