|
|
@ -5,52 +5,11 @@ |
|
|
|
#pragma once
|
|
|
|
#include "sdk/os/zos.hpp"
|
|
|
|
#include "sdk\components\zprotocols\zcancmder\zcancmder_protocol.hpp"
|
|
|
|
#include "basic.hpp"
|
|
|
|
|
|
|
|
namespace iflytop { |
|
|
|
namespace zcr { |
|
|
|
typedef enum { |
|
|
|
kpacketHeader = 0, |
|
|
|
kpacketData = 1, |
|
|
|
kpacketTail = 2, |
|
|
|
} packet_type_t; |
|
|
|
|
|
|
|
class CANPacket { |
|
|
|
public: |
|
|
|
CAN_RxHeaderTypeDef pHeader; |
|
|
|
uint8_t aData[8]; /*8byte table*/ |
|
|
|
}; |
|
|
|
|
|
|
|
}; // namespace zcr
|
|
|
|
using namespace zcr; |
|
|
|
|
|
|
|
class CanPacketRxBuffer { |
|
|
|
public: |
|
|
|
uint16_t id = 0; |
|
|
|
CANPacket m_canPacket[256] = {0}; // ÓÃÓÚ½ÓÊÕcanÏûÏ¢
|
|
|
|
uint8_t m_canPacketNum = 0; |
|
|
|
bool dataIsReady = false; |
|
|
|
uint8_t rxdata[2000] = {0}; |
|
|
|
|
|
|
|
int rxdataSize = 0; |
|
|
|
|
|
|
|
public: |
|
|
|
uint16_t get_packetindex(); |
|
|
|
uint16_t get_cmdid(); |
|
|
|
uint8_t get_subcmdid(); |
|
|
|
uint8_t get_packetType(); |
|
|
|
uint8_t *get_data(); |
|
|
|
uint16_t get_datalen(); |
|
|
|
|
|
|
|
Cmdheader_t *get_cmdheader(); |
|
|
|
|
|
|
|
bool iscmd(CmdID_t id); |
|
|
|
|
|
|
|
template <typename T> |
|
|
|
T *get_data_as() { |
|
|
|
return (T *)get_data(); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
class ZCanCmderListener { |
|
|
|
public: |
|
|
|
virtual void onRceivePacket(CanPacketRxBuffer *rxcmd) = 0; |
|
|
|