33#ifndef RCBENCH_LINK_CAN_H
34#define RCBENCH_LINK_CAN_H
57#define LINK_CAN_PRIO_SHIFT 26
58#define LINK_CAN_OP_SHIFT 22
59#define LINK_CAN_PAGE_SHIFT 14
60#define LINK_CAN_OFFSET_SHIFT 6
61#define LINK_CAN_COUNT_SHIFT 0
66#define LINK_CAN_PRIO_MASK 0x7u
67#define LINK_CAN_OP_MASK 0xFu
68#define LINK_CAN_PAGE_MASK 0xFFu
69#define LINK_CAN_OFFSET_MASK 0xFFu
70#define LINK_CAN_COUNT_MASK 0x3Fu
73#define LINK_CAN_REGS_PER_FRAME 4
76#define LINK_CAN_MAX_FRAMES (LINK_MAX_REGS / LINK_CAN_REGS_PER_FRAME)
129 uint8_t offset, uint8_t count);
144 uint8_t *page, uint8_t *offset, uint8_t *count);
link_can_prio_t link_can_priority(uint8_t page, uint8_t op)
The arbitration class a page and op belong to.
Definition link_can.c:48
link_can_prio_t
Arbitration classes.
Definition link_can.h:84
@ LINK_CAN_PRIO_NORMAL
Definition link_can.h:86
@ LINK_CAN_PRIO_BULK
Definition link_can.h:87
@ LINK_CAN_PRIO_CONTROL
Definition link_can.h:85
void link_can_id_split(uint32_t id, link_can_prio_t *prio, uint8_t *op, uint8_t *page, uint8_t *offset, uint8_t *count)
Split an identifier back into its fields.
Definition link_can.c:79
bool link_can_decode_counted(const link_can_frame_t *f, link_msg_t *out, uint32_t *refused)
link_can_decode(), and a count of the frames it refuses.
Definition link_can.c:202
bool link_can_decode(const link_can_frame_t *f, link_msg_t *out)
Turn one received frame back into a message carrying up to four registers.
Definition link_can.c:160
size_t link_can_encode(const link_msg_t *msg, link_can_frame_t *out, size_t cap)
Render a message as one or more CAN frames.
Definition link_can.c:101
uint32_t link_can_id(link_can_prio_t prio, uint8_t op, uint8_t page, uint8_t offset, uint8_t count)
Build a 29-bit identifier from its fields.
Definition link_can.c:68
What crosses the link, independent of the transport: an op, a page, an offset, a count and up to a pa...
One CAN frame: its identifier and up to 8 payload bytes.
Definition link_can.h:93
uint32_t id
Definition link_can.h:94
uint8_t dlc
Definition link_can.h:95
uint8_t data[8]
Definition link_can.h:96
One link message: the op, the register window and its values.
Definition link_msg.h:55