31 uint16_t
cfg[LINK_CC_COUNT];
45 const uint16_t *slots);
117uint16_t
out_stage_crc(
const uint16_t *cfg,
const uint16_t *slots);
147 uint8_t (*
take_cfg)(
void *ctx,
const uint16_t *next);
151 void (*
put_cfg)(
void *ctx,
const uint16_t *prev);
183 const uint16_t *cfg_in_force,
The page map: what the panel can ask the IOmcu for, and set.
void out_stage_init(out_stage_t *st, const uint16_t *cfg, const uint16_t *slots)
Start from the pages in force; NULL starts from the pages' defaults.
Definition out_stage.c:19
uint8_t out_stage_cfg_write(out_stage_t *st, uint8_t off, uint8_t n, const uint16_t *in)
A window of BIND_CFG or BIND_OUT written: 0, or the link_nack_t outputs_chan_cfg_write() and outputs_...
Definition out_stage.c:37
void out_stage_cfg_read(const out_stage_t *st, uint8_t off, uint8_t n, uint16_t *out)
Copies a window of the prepared CHAN_CFG page.
Definition out_stage.c:73
uint16_t out_stage_held_crc(const out_stage_t *st)
The same of what st holds; 0 for NULL.
Definition out_stage.c:118
uint8_t out_stage_slots_write(out_stage_t *st, uint8_t off, uint8_t n, const uint16_t *in)
A window of BIND_OUT written: 0, or the link_nack_t outputs_slots_write() gives for the same window,...
Definition out_stage.c:46
uint8_t out_stage_commit(const out_stage_t *st, uint16_t crc, const uint16_t *cfg_in_force, const out_stage_ops_t *ops, void *ctx)
A write of LINK_BD_COMMIT.
Definition out_stage.c:126
uint16_t out_stage_crc(const uint16_t *cfg, const uint16_t *slots)
The CRC a commit names: CRC-16/CCITT-FALSE (polynomial 0x1021, seed 0xFFFF, link_crc()) over the 32 C...
Definition out_stage.c:108
void out_stage_slots_read(const out_stage_t *st, uint8_t off, uint8_t n, uint16_t *out)
Copies a window of the prepared OUTPUTS page.
Definition out_stage.c:81
The intermediary every output goes through: one set of rules for arming, clamping,...
What the IOmcu does with a page once the commit has matched.
Definition out_stage.h:145
void(*) put_cfg(void *ctx, const uint16_t *prev)
Puts a CHAN_CFG page back, without judging it.
Definition out_stage.h:151
uint8_t(*) take_slots(void *ctx, const uint16_t *next)
Judges an OUTPUTS page and puts it in force, or refuses it.
Definition out_stage.h:149
uint8_t(*) take_cfg(void *ctx, const uint16_t *next)
Judges a CHAN_CFG page and puts it in force, or refuses it.
Definition out_stage.h:147
outputs_t * bank
The bank the two takes change, or NULL.
Definition out_stage.h:158
void(*) keep(void *ctx)
Called once when both pages are in force.
Definition out_stage.h:156
The CHAN_CFG and OUTPUTS pages prepared beside the bank in force.
Definition out_stage.h:30
uint16_t slots[LINK_OS_COUNT]
Definition out_stage.h:32
uint16_t cfg[LINK_CC_COUNT]
Definition out_stage.h:31
The state of a bank of channels and slots.
Definition outputs.h:143