60 std::atomic<bool>
run_{
false};
70 std::atomic<uint16_t>
tec_{0};
71 std::atomic<uint16_t>
rec_{0};
Transport-neutral CAN frame and the ICanPort interface for port bindings (EspTwaiPort,...
One CAN transport binding.
Definition HfCanPort.h:106
Definition LinuxSocketCanPort.h:28
std::mutex sink_mu_
Definition LinuxSocketCanPort.h:63
std::atomic< uint32_t > tx_queue_full_
Definition LinuxSocketCanPort.h:73
PortStatus Status() const override
Error counters and state.
std::atomic< uint16_t > tec_
Definition LinuxSocketCanPort.h:70
bool Recover() override
Request bus-off recovery; false when not possible now.
int fd_
Definition LinuxSocketCanPort.h:57
RxSink rx_sink_
Definition LinuxSocketCanPort.h:64
std::thread reader_
Definition LinuxSocketCanPort.h:59
void HandleErrorFrame(uint32_t can_id, const uint8_t *data, uint8_t len)
LinuxSocketCanPort(Options options)
Options opt_
Definition LinuxSocketCanPort.h:56
void SetRxSink(RxSink sink, void *ctx) override
Install the RX sink (nullptr detaches).
TxResult Send(const CanFrame &frame) override
Queue frame without blocking.
std::atomic< uint32_t > bus_off_count_
Definition LinuxSocketCanPort.h:74
std::atomic< uint8_t > state_
Definition LinuxSocketCanPort.h:69
void * rx_ctx_
Definition LinuxSocketCanPort.h:65
void SetTxDoneSink(TxDoneSink sink, void *ctx) override
Install the TX-done sink. Ports without a TX-done event ignore it.
LinuxSocketCanPort(const LinuxSocketCanPort &)=delete
std::atomic< uint32_t > rx_overruns_
Definition LinuxSocketCanPort.h:72
PortCaps Caps() const override
Static capabilities.
std::atomic< uint16_t > rec_
Definition LinuxSocketCanPort.h:71
void * tx_ctx_
Definition LinuxSocketCanPort.h:67
std::atomic< bool > run_
Definition LinuxSocketCanPort.h:60
LinuxSocketCanPort & operator=(const LinuxSocketCanPort &)=delete
std::atomic< bool > want_writable_
Definition LinuxSocketCanPort.h:61
bool IsOpen() const noexcept
Definition LinuxSocketCanPort.h:43
TxDoneSink tx_sink_
Definition LinuxSocketCanPort.h:66
~LinuxSocketCanPort() override
int wake_[2]
Definition LinuxSocketCanPort.h:58
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
void(*)(void *ctx) TxDoneSink
TX-done sink: the port has room again; may run in ISR context.
Definition HfCanPort.h:103
One CAN or CAN FD frame; len is a byte count, never a DLC code.
Definition HfCanPort.h:49
Definition LinuxSocketCanPort.h:30
bool fd
enable CAN_RAW_FD_FRAMES
Definition LinuxSocketCanPort.h:32
uint32_t nominal_bps
reported in Caps() (0 for vcan)
Definition LinuxSocketCanPort.h:33
std::string ifname
Definition LinuxSocketCanPort.h:31
What a port binding can carry.
Definition HfCanPort.h:76
Error counters and statistics of one port.
Definition HfCanPort.h:91