11#include "fifo_buffer.h"
15#if EFI_PROD_CODE | EFI_SIMULATOR
16#define can_msg_t msg_t
17#define can_sysinterval_t sysinterval_t
18#define CAN_MSG_OK MSG_OK
19#define CAN_MSG_TIMEOUT MSG_TIMEOUT
25#define CAN_TIME_IMMEDIATE ((can_sysinterval_t)0)
28#define CAN_FIFO_BUF_SIZE 76
29#define CAN_FIFO_FRAME_SIZE 8
31#define CAN_FLOW_STATUS_OK 0
32#define CAN_FLOW_STATUS_WAIT_MORE 1
33#define CAN_FLOW_STATUS_ABORT 2
69#if defined(TS_CAN_DEVICE_SHORT_PACKETS_IN_ONE_FRAME)
121 return rxFifo.get(item, timeout);
125 fifo_buffer_sync<CanRxMessage, CAN_FIFO_FRAME_SIZE>
rxFifo;
int32_t can_sysinterval_t
CanRxMessage(const CanRxMessage &msg)
CanRxMessage(const CANRxFrame &f)
CanRxMessage & operator=(const CanRxMessage &msg)
virtual can_msg_t receive(canmbx_t mailbox, CANRxFrame *crfp, can_sysinterval_t timeout) override
virtual can_msg_t transmit(canmbx_t mailbox, const CanTxMessage *ctfp, can_sysinterval_t timeout) override
CanStreamerState(ICanStreamer *s)
fifo_buffer< uint8_t, CAN_FIFO_BUF_SIZE > txFifoBuf
fifo_buffer< uint8_t, CAN_FIFO_BUF_SIZE > rxFifoBuf
int receiveFrame(CANRxFrame *rxmsg, uint8_t *buf, int num, can_sysinterval_t timeout)
can_msg_t streamFlushTx(can_sysinterval_t timeout)
int sendDataTimeout(const uint8_t *txbuf, int numBytes, can_sysinterval_t timeout)
int sendFrame(const IsoTpFrameHeader &header, const uint8_t *data, int num, can_sysinterval_t timeout)
can_msg_t streamReceiveTimeout(size_t *np, uint8_t *rxbuf, can_sysinterval_t timeout)
int getDataFromFifo(uint8_t *rxbuf, size_t &numBytes)
can_msg_t streamAddToTxTimeout(size_t *np, const uint8_t *txbuf, can_sysinterval_t timeout)
bool get(CanRxMessage &item, int timeout)
fifo_buffer_sync< CanRxMessage, CAN_FIFO_FRAME_SIZE > rxFifo
virtual void decodeFrame(const CANRxFrame &frame, efitick_t nowNt)
virtual can_msg_t transmit(canmbx_t mailbox, const CanTxMessage *ctfp, can_sysinterval_t timeout)=0
virtual can_msg_t receive(canmbx_t mailbox, CANRxFrame *crfp, can_sysinterval_t timeout)=0
msg_t canStreamReceiveTimeout(size_t *np, uint8_t *rxbuf, sysinterval_t timeout)
@ ISO_TP_FRAME_CONSECUTIVE
@ ISO_TP_FRAME_FLOW_CONTROL
msg_t canStreamAddToTxTimeout(size_t *np, const uint8_t *txbuf, sysinterval_t timeout)
msg_t canStreamFlushTx(sysinterval_t timeout)