81#define KST_LINK_MINOR LINK_MINOR_PROG
87#define KST_LINK_POLL_MS 50u
89#define KST_LINK_IDLE_MS 500u
95#define KST_LINK_RETRIES 3u
98#define KST_LINK_NO_ANSWER (-1)
117 KST_LINK_START_OK = 0,
154 KST_LINK_OUT_NONE = 0,
kst_link_outcome_kind_t
How an operation went.
Definition kst_link.h:153
@ KST_LINK_OUT_DONE
Definition kst_link.h:155
@ KST_LINK_OUT_RESTARTED
Definition kst_link.h:161
@ KST_LINK_OUT_DROPPED
Definition kst_link.h:164
@ KST_LINK_OUT_REFUSED
Definition kst_link.h:156
@ KST_LINK_OUT_NO_ANSWER
Definition kst_link.h:159
@ KST_LINK_OUT_NACK
Definition kst_link.h:158
bool kst_link_image(const kst_link_t *k, kst_image_t *out)
The servo's registers as last fetched; false while there are none.
Definition kst_link.c:826
void kst_link_came_up(kst_link_t *k, uint16_t minor)
An IOmcu answered with protocol minor minor.
Definition kst_link.c:164
kst_link_phase_t kst_link_phase(const kst_link_t *k)
Where the module is.
Definition kst_link.c:774
void kst_link_init(kst_link_t *k)
Sets up the link state for the KST link page.
Definition kst_link.c:136
kst_link_start_t
What kst_link_start() and kst_link_fetch() answer.
Definition kst_link.h:116
@ KST_LINK_START_NO_PAGE
Definition kst_link.h:119
@ KST_LINK_START_NO_ENABLE
Definition kst_link.h:122
@ KST_LINK_START_DOWN
Definition kst_link.h:118
@ KST_LINK_START_ARG
Definition kst_link.h:121
@ KST_LINK_START_BUSY
Definition kst_link.h:120
@ KST_LINK_START_NO_IMAGE
Definition kst_link.h:123
@ KST_LINK_START_NO_OP
Definition kst_link.h:125
bool kst_link_backup(const kst_link_t *k, kst_image_t *out)
The backup the IOmcu's session holds, as last fetched.
Definition kst_link.c:835
void kst_link_readout(const kst_link_t *k, kst_link_readout_t *r)
The screen's copy of the page.
Definition kst_link.c:789
bool kst_link_outcome(kst_link_t *k, kst_link_outcome_t *out)
How the last operation went, once: false while there is nothing new.
Definition kst_link.c:779
kst_link_phase_t
Where the module is.
Definition kst_link.h:102
@ KST_LINK_PLANNING
Definition kst_link.h:110
@ KST_LINK_SENDING
Definition kst_link.h:107
@ KST_LINK_SYNC
Definition kst_link.h:105
@ KST_LINK_FETCHING
Definition kst_link.h:109
@ KST_LINK_NO_PAGE
Definition kst_link.h:104
@ KST_LINK_DOWN
Definition kst_link.h:103
@ KST_LINK_READY
Definition kst_link.h:106
@ KST_LINK_RUNNING
Definition kst_link.h:108
bool kst_link_has_page(const kst_link_t *k)
Whether the IOmcu has the page: false while none answers.
Definition kst_link.c:176
kst_link_start_t kst_link_start(kst_link_t *k, const kst_link_request_t *r)
Start an operation.
Definition kst_link.c:202
kst_link_start_t kst_link_fetch(kst_link_t *k)
Read the results and the images again without an operation: for a panel that started while the port i...
Definition kst_link.c:274
void kst_link_lost(kst_link_t *k)
The link went: an operation on its way ends as KST_LINK_OUT_NO_ANSWER and nothing is read or written ...
Definition kst_link.c:143
bool kst_link_next(kst_link_t *k, uint32_t now_ms, kst_link_xfer_t *x)
The next exchange owed at now_ms, into x; false for none.
Definition kst_link.c:426
void kst_link_abort(kst_link_t *k)
STOP, or the operator's cancel.
Definition kst_link.c:304
void kst_link_done(kst_link_t *k, int result, const uint16_t *regs)
How the exchange kst_link_next() gave went: KST_LINK_ACK with the registers read (regs,...
Definition kst_link.c:659
#define k
Short name for kst_panel_k inside the overlay's seven files.
Definition kst_panel_int.h:238
KST servo programming protocol: the register image and its fields.
uint64_t kst_field_set_t
A set of fields, bit n for field n.
Definition kst_reg.h:110
KST servo programming protocol: the session with one servo.
The page map: what the panel can ask the IOmcu for, and set.
#define LINK_KS_W_STAGED
The staged registers a command's CRC covers, from LINK_KS_W_IMAGE.
Definition link_pages.h:1922
#define LINK_KS_W_CMD_FRAME
Registers of the command, from LINK_KS_W_CMD: one frame.
Definition link_pages.h:1920
link_kst_op_t
The operations of a command.
Definition link_pages.h:2043
link_kst_state_t
Where the programming port is.
Definition link_pages.h:2008
#define LINK_KS_IMAGE_REGS
Registers a servo image takes on the page.
Definition link_pages.h:1924
@ LINK_KS_FAIL
Definition link_pages.h:1857
@ LINK_KS_IMAGE
Definition link_pages.h:1875
link_kst_refusal_t
Why a command that was taken did nothing: the high byte of LINK_KS_RESULT.
Definition link_pages.h:2070
The 32 registers, by address.
Definition kst_reg.h:47
The outcome of an operation that ended, as the link module reports it.
Definition kst_link.h:171
uint8_t nack
Definition kst_link.h:177
bool taken
Definition kst_link.h:178
uint8_t result
Definition kst_link.h:180
link_kst_refusal_t refusal
Definition kst_link.h:176
uint32_t diff_regs
Definition kst_link.h:189
uint32_t id
Definition kst_link.h:174
uint8_t fail_reg
Definition kst_link.h:186
uint16_t frames
Definition kst_link.h:188
uint8_t steps_done
Definition kst_link.h:187
uint32_t bad_regs
Definition kst_link.h:190
The screen's copy: a plain value the control task fills and the renderer reads.
Definition kst_link.h:197
bool have_image
Definition kst_link.h:208
uint16_t frames
Definition kst_link.h:207
bool have_results
Definition kst_link.h:210
uint16_t fp_rules
Definition kst_link.h:211
uint32_t fp_regs
Definition kst_link.h:212
uint16_t half_max_ns
Definition kst_link.h:214
uint8_t port_no
Definition kst_link.h:204
uint16_t delay_max_us
Definition kst_link.h:216
uint16_t half_min_ns
Definition kst_link.h:213
bool known
Definition kst_link.h:199
uint16_t delay_min_us
Definition kst_link.h:215
bool was_held
Definition kst_link.h:200
uint16_t flags
Definition kst_link.h:205
bool have_backup
Definition kst_link.h:209
link_kst_op_t op
Definition kst_link.h:206
link_kst_state_t port
Definition kst_link.h:203
An operation as the screen asks for it.
Definition kst_link.h:130
link_kst_op_t op
Definition kst_link.h:131
bool confirm
Definition kst_link.h:143
uint16_t leave_ms
Definition kst_link.h:139
bool write_enabled
Definition kst_link.h:142
uint8_t port
Definition kst_link.h:134
uint32_t id
Definition kst_link.h:148
uint16_t supply_ma
Definition kst_link.h:138
kst_image_t image
Definition kst_link.h:145
uint16_t supply_mv
Definition kst_link.h:136
kst_field_set_t unlock
Definition kst_link.h:147
The state of the KST link module.
Definition kst_link.h:231
uint8_t phase
Definition kst_link.h:236
uint16_t leave_ms
Definition kst_link.h:262
uint16_t seq
Definition kst_link.h:248
bool poll_now
Definition kst_link.h:246
bool known
Definition kst_link.h:235
bool polled
Definition kst_link.h:245
bool active
Definition kst_link.h:251
uint16_t cmd_proto[LINK_KS_W_CMD_FRAME]
Definition kst_link.h:263
bool cmd_doubt
Definition kst_link.h:268
bool supply_due
Definition kst_link.h:259
uint8_t op
Definition kst_link.h:255
uint8_t fetch
Definition kst_link.h:276
uint32_t status_ms
Definition kst_link.h:247
uint16_t supply[2]
Definition kst_link.h:260
uint16_t end_status[LINK_KS_W_CMD_FRAME]
Definition kst_link.h:277
bool verdict
Definition kst_link.h:252
uint8_t tries
Definition kst_link.h:240
uint8_t stage_at
Definition kst_link.h:257
bool was_held
Definition kst_link.h:241
uint32_t id
Definition kst_link.h:256
uint8_t pending
Definition kst_link.h:239
bool leave_due
Definition kst_link.h:261
bool taken
Definition kst_link.h:254
uint16_t minor
Definition kst_link.h:234
One exchange for the caller to make.
Definition kst_link.h:220
bool write
Definition kst_link.h:221
uint16_t regs[4]
Definition kst_link.h:225
uint8_t off
Definition kst_link.h:223
uint8_t page
Definition kst_link.h:222
uint8_t n
Definition kst_link.h:224