37#define SERVO_HZ_UNKNOWN 0xFFFFu
The panel's half of the link: poll, match the reply to the question, and escalate when the answers st...
A write of any width, one frame in flight at a time.
The panel's side of the programming ports' page (0x33).
A command of the SERVO screen as the panel's servo link takes it (servo_link.h), and what the link re...
servo_sweep_from_t
Where the IOmcu's output was when it started a sweep.
Definition servo_cmd.h:214
bool servo_link_sweep_able(void)
Whether the IOmcu can sweep: protocol 4.2 or later.
Definition servo_link.c:1524
void servo_link_let_go(void)
Stop holding the servo.
Definition servo_link.c:1274
bool servo_link_take_sweep_held(uint16_t *pause_seq, uint32_t *kept_ms)
The far end took the HOLD of pause pause_seq and kept its curve kept_ms in, once.
Definition servo_link.c:1548
void servo_link_lost(void)
The link went down: a sweep or a hold held to be said again is dropped (servo_cmd_survives_link_loss(...
Definition servo_link.c:1405
unsigned servo_link_rate_shown(void)
The rate's state and its Hz, as (servo_rate_state_t << 16) | Hz.
Definition servo_link.c:1519
bool servo_link_take_release(void)
A release the screen asked for through servo_link_ask_release(): taken, it drops the position held an...
Definition servo_link.c:1499
bool servo_link_binding_known(void)
Whether a binding has been read since the last servo_link_init(), servo_link_forget_binding() or unkn...
Definition servo_link.c:1427
void servo_link_rate_reset_note(bool page, bool landed)
What a rate reset left behind: page whether the IOmcu has the SERVO page, landed whether the reset wa...
Definition servo_link.c:1086
void servo_link_came_up(uint16_t minor)
An IOmcu of protocol minor minor started answering.
Definition servo_link.c:1378
void servo_link_prog_service(void)
The SERVO screen's half of the programming ports' service, after the page's read: a position still ou...
Definition servo_link.c:1432
void servo_link_service(bool link_up)
Every pass: settle a rate not known while a release is owed or the bank is armed, pay an owed release...
Definition servo_link.c:1295
bool servo_link_rate_settled(void)
Whether the rate the surfaces run at is known, after one more reset when it is not....
Definition servo_link.c:1127
void servo_link_forget_binding(void)
A binding was written: the mask is unknown until the next read.
Definition servo_link.c:1422
void servo_link_ask_release(void)
From the screens' task: a release, or a disarm with one, asked for. A sweep being written gives way t...
Definition servo_link.c:1509
void servo_link_ask_hold(void)
From the screens' task: a HOLD, or a command that ends a sweep, asked for.
Definition servo_link.c:1514
void servo_link_init(const servo_link_ctx_t *ctx)
Start over with ctx: nothing held, no release owed, no binding read, the rate not known,...
Definition servo_link.c:1336
bool servo_link_take_sweep_refused(void)
A sweep found no surface to sweep, once.
Definition servo_link.c:1534
void servo_link_surfaces_publish(void)
For the screen's SWEEP and its horn: a programming port as target, or a binding read with a surface i...
Definition servo_link.c:245
bool servo_link_take_sweep_start(void)
The far end started a sweep, once.
Definition servo_link.c:1558
void servo_link_apply(const servo_cmd_t sv, bool link_up, uint32_t stops)
One command from the screen, with the link state link_up and the stop count stops its sender had seen...
Definition servo_link.c:1147
bool servo_link_release_owed(void)
Whether a release is owed: a surface may still hold a position.
Definition servo_link.c:1489
bool servo_link_take_hold_lost(uint16_t *pause_seq)
The far end let go of a hold, once, with its pause in pause_seq.
Definition servo_link.c:1539
bool servo_link_surfaces(void)
What servo_link_surfaces_publish() last published.
Definition servo_link.c:1529
uint16_t servo_link_hz_sent(void)
The rate the IOmcu acknowledged, 0 for each slot's own, or SERVO_HZ_UNKNOWN.
Definition servo_link.c:1494
servo_link_alert_t
The alerts a sweep's resume can raise, for servo_link_ctx_t.alert.
Definition servo_link.h:40
@ SERVO_LINK_ALERT_RESUME_UNTIMED
Definition servo_link.h:43
@ SERVO_LINK_ALERT_RESUME_OLD
Definition servo_link.h:41
@ SERVO_LINK_ALERT_RESUME_REFUSED
Definition servo_link.h:42
void servo_link_binding(uint8_t channels, bool known)
The binding read back: channels the surfaces' channel mask, bit n channel n, and known whether the pa...
Definition servo_link.c:1415
servo_link_start_t servo_link_sweep_start(void)
Read the last sweep start the far end acknowledged.
Definition servo_link.c:1563
The panel's state for one link: the outstanding request, the counters and the reassembly buffer.
Definition link_host.h:35
How a request reaches the far end and its answer comes back.
Definition link_port.h:52
The panel's side of the programming ports' page.
Definition prog_link.h:108
A command of the SERVO screen, as the servo link takes it.
Definition servo_cmd.h:58
What the module reaches of the panel.
Definition servo_link.h:54
const link_port_t * port
Definition servo_link.h:56
uint32_t(*) stop_count(void *ctx)
The arming policy's count of stops (arming_stop_count()).
Definition servo_link.h:68
bool(*) armed(void *ctx)
Whether the output bank is armed (outputs_armed()).
Definition servo_link.h:60
void * ctx
Definition servo_link.h:58
void(*) alert(void *ctx, servo_link_alert_t a)
Definition servo_link.h:64
bool(*) stopped(void *ctx)
A stop applied, or a disarm asked for since the write began.
Definition servo_link.h:62
void(*) disarm(void *ctx, bool link_up)
Definition servo_link.h:66
void(*) arm_surfaces(void *ctx)
Ask the arming policy to arm the surfaces and the programming ports, and no motor.
Definition servo_link.h:72
prog_link_t * prog
Definition servo_link.h:57
link_host_t * host
Definition servo_link.h:55
The last sweep start the far end acknowledged.
Definition servo_link.h:295
servo_sweep_from_t from
Definition servo_link.h:298
uint32_t start_ms
Definition servo_link.h:297
uint16_t start_seq
Definition servo_link.h:296
uint32_t frozen_ms
Definition servo_link.h:299