28struct hf_can_message_t;
38 EspTwaiPort(EspCan& can, uint32_t nominal_bps)
noexcept;
50 static void OnRx(
const hf_can_message_t& message,
void* user_data);
54 std::atomic<RxSink>
sink_{
nullptr};
Transport-neutral CAN frame and the ICanPort interface for port bindings (EspTwaiPort,...
Definition EspTwaiPort.h:32
TxResult Send(const CanFrame &frame) override
Queue frame without blocking.
Definition EspTwaiPort.cpp:28
PortCaps Caps() const override
Static capabilities.
Definition EspTwaiPort.cpp:18
std::atomic< RxSink > sink_
Definition EspTwaiPort.h:54
void SetRxSink(RxSink sink, void *ctx) override
Install the RX sink (nullptr detaches).
Definition EspTwaiPort.cpp:58
std::atomic< void * > sink_ctx_
Definition EspTwaiPort.h:55
EspTwaiPort(const EspTwaiPort &)=delete
uint32_t nominal_bps_
Definition EspTwaiPort.h:53
EspTwaiPort & operator=(const EspTwaiPort &)=delete
EspCan & can_
Definition EspTwaiPort.h:52
~EspTwaiPort() override
Definition EspTwaiPort.cpp:16
bool Recover() override
Request bus-off recovery; false when not possible now.
Definition EspTwaiPort.cpp:85
static void OnRx(const hf_can_message_t &message, void *user_data)
Definition EspTwaiPort.cpp:46
PortStatus Status() const override
Error counters and state.
Definition EspTwaiPort.cpp:70
One CAN transport binding.
Definition HfCanPort.h:106
Definition EspTwaiPort.cpp:12
TxResult
Result of a non-blocking ICanPort::Send.
Definition HfCanPort.h:85
bool(*)(void *ctx, const CanFrame &frame) RxSink
RX sink; may run in ISR context (copy and return). Returns false if it could not take the frame.
Definition HfCanPort.h:101
One CAN or CAN FD frame; len is a byte count, never a DLC code.
Definition HfCanPort.h:49
What a port binding can carry.
Definition HfCanPort.h:76
Error counters and statistics of one port.
Definition HfCanPort.h:91