HiLink table-driven runtime level executor and applied-state report #3

Open
opened 2026-10-18 07:43:43 +02:00 by hermes · 0 comments
Collaborator

Goal

Implement the HiLink side of table-driven WFB/video control. VTX is a bounded executor, never an adaptive policy decision-maker.

Inputs

  • complete policy table provisioned through separate authenticated GS ↔ VTX control path;
  • runtime level 0..127 arriving on dedicated ELRS CH7/AUX3 via FC/MSP channel callback.

VTX behavior

0       → WFB OFF / management
1..127  → apply acknowledged_table[level]

A table entry contains only allowlisted values:

power_pct
video mode enum
bitrate
MCS
FEC K/N

Requirements

  • validate table schema, generation, hash, bounds and capability allowlist before accepting;
  • decode level deterministically from PWM buckets with hysteresis;
  • only apply complete table entries, serialized through current link-mode/video ownership;
  • preserve the single persistent msposd UART owner;
  • VTX reports table generation/hash, requested/applied level, actual applied config, lifecycle and error back to GS;
  • VTX never evaluates RSSI/loss/FEC and never chooses a new level;
  • reject/stale/invalid control preserves last valid configuration and reports state.

Acceptance

Piotr manually selects 1080p60, 720p60, lower-FPS and OFF table entries. GS OSD shows matching table identity and applied level after each controlled transition.

## Goal Implement the HiLink side of table-driven WFB/video control. VTX is a bounded executor, never an adaptive policy decision-maker. ## Inputs - complete policy table provisioned through separate authenticated GS ↔ VTX control path; - runtime level `0..127` arriving on dedicated ELRS CH7/AUX3 via FC/MSP channel callback. ## VTX behavior ```text 0 → WFB OFF / management 1..127 → apply acknowledged_table[level] ``` A table entry contains only allowlisted values: ```text power_pct video mode enum bitrate MCS FEC K/N ``` ## Requirements - validate table schema, generation, hash, bounds and capability allowlist before accepting; - decode level deterministically from PWM buckets with hysteresis; - only apply complete table entries, serialized through current link-mode/video ownership; - preserve the single persistent msposd UART owner; - VTX reports table generation/hash, requested/applied level, actual applied config, lifecycle and error back to GS; - VTX never evaluates RSSI/loss/FEC and never chooses a new level; - reject/stale/invalid control preserves last valid configuration and reports state. ## Acceptance Piotr manually selects 1080p60, 720p60, lower-FPS and OFF table entries. GS OSD shows matching table identity and applied level after each controlled transition.
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: piotr/openipc-builder#3