Comms CCF
This is a simple communication layer based on COBS, CBOR and FNV-1A
Loading...
Searching...
No Matches
Todo List
Member Ccf< Config >::log (LogLevel level, uint8_t module, const char *fmt,...)
Optionally just send the format string pointer (if it is in .rodata) and the client can read it from the ELF file (or download it separately)
Member Ccf< Config >::logToBuffer (std::span< uint8_t > &span, LogLevel level, uint8_t module, const char *fmt,...)
Optionally just send the format string pointer (if it is in .rodata) and the client can read it from the ELF file (or download it separately)
Member Ccf< Config >::poll (const Rpc &rpc)

Just using checksumless zero-length packets to indicate error for now.

Dispatch on channel

Just using checksumless zero-length packets to indicate error for now.

Just using checksumless zero-length packets to indicate error for now.

Member Ccf< Config >::send (Channels channel, std::span< uint8_t > &data)
Maybe could be re-entrant/support adding from ISR without locking by exchanging the ISR data buffer with the data not yet notified, then putting the data not yet notified back after. This would make it only not threadsafe for normal tasks which might get switched out between each-other
File circular_buffer.hpp

Currently this was written for architectures which don't reorder reads/writes, in my case small microcontrollers without caches and write buffers, but needs to be fixed by using atomics on the cursors and the buffer to ensure the cursors point to valid data (by the time the updated cursor is read, the value at that location has been written).

This does not expose an interface for DMA engines, but this could fairly easily be added by getting the current next contiguous unused part of the buffer (i.e. the part before any wrapping) and passing that to the DMA engine.

Forward and bidirectional iterator/range for Iterator/Frame.

Member commsCcfTxAvailable ()
Check UART is not busy?
Member Trace
In-place trace tag to save bytes on trace data?