HID Gateway¶
The Human Interface Device (HID) gateway service (gva-gateway-hid) bridges
physical bezel-key panels — currently ScioTeq SmartView MFDs — to the GVA DDS
data bus. It publishes a Human_Interaction_Resource covering the panel's
buttons (up to 35 keys: F1..F20, eight top-area keys, five aux, two mode) and,
when wired to a ScioTeq DAPI (Display Access Programming Interface) HTTP
endpoint, bridges the panel's brightness and blackout controls into the
Displays and Controls domain.
Overview¶
The gateway implements bidirectional integration with the physical panel:
- Panel to DDS: Reads bezel key presses (via the DAPI socket or a Qt
keyboard fallback), debounces them, and publishes
C_Button_Controlsamples withA_transitioning=falseper Def Stan 23-009 §2.5.5. - DDS to Panel: Subscribes to
Human_Interaction_Resource::setBrightnessandHuman_Interaction_Resource::setBlackoutand forwards them to the DAPI endpoint on the panel. - State republish: Polls DAPI on a 5 s cadence and republishes the observed brightness/blackout state so any subscriber has a live view of the panel regardless of who commanded the change.
Brightness and blackout¶
Brightness and blackout are unusual among GVA commands because they may be driven from two independent sources: the DDS command bus and the physical panel controls.
Def Stan 23-009 Displays and Controls Specification v1.0 anticipates this
directly. §2.3.4 (LDM_DAC_1, on setBlackout) states:
This operation may be mirrored or entirely replaced by physical controls on the resource itself e.g. a blackout button.
§2.3.5 (LDM_DAC_3, on setBrightness) is identical:
This operation may be mirrored or entirely replaced by physical controls on the resource itself.
Current behaviour¶
- The gateway advertises
A_setBlackoutSupportedandA_setBrightnessSupportedonly when a DAPI client is wired. If the gateway is running in output-only mode (buttons only, no DAPI), both capabilities are advertised as unsupported. - When a
setBrightnessorsetBlackoutcommand arrives on DDS, it is forwarded verbatim to the DAPI endpoint. Brightness is clamped to [0, 100] before forwarding. - Pre-blackout brightness is restored by the panel hardware itself on blackout release. The gateway does not maintain a fallback cache because the spec explicitly permits physical-control delegation and the ScioTeq DAPI blackout endpoint is documented to preserve the pre-blackout value.
- The ATLAS HMI does not currently publish
setBrightnessorsetBlackoutcommands. Brightness and blackout are operated exclusively via the physical panel controls, and the gateway observes and republishes the resulting state so any DDS subscriber sees a live view.
This mode of operation — physical controls drive brightness/blackout, DDS carries the observed state — is spec-compliant. If a deployment requires HMI-commandable brightness (for example, a dimming automation tied to external ambient-light sensors), the DDS command path is already wired and no code change in the gateway is required; only an HMI-side UI would need to be added.
Capability advertisement¶
The gateway publishes a Human_Interaction_Resource_Specification at
startup that reflects the wired configuration:
| Attribute | Value | Notes |
|---|---|---|
A_setTestModeSupported |
false |
Panel does not expose a test-mode command. |
A_setBlackoutSupported |
true iff DAPI wired |
Advertised honestly per §2.3.4. |
A_setBrightnessSupported |
true iff DAPI wired |
Advertised honestly per §2.3.5. |
A_transitioningSupported (per button) |
false |
Panel does not provide half-press / long-press events; §2.5.5 permits omission. |
Each bezel key is published as a discrete Human_Interaction_Component
with its own (resourceId, instanceId). No Composite_Component or
Output_Component is published; the panel backlight is subsumed by the
resource-level brightness/blackout attributes.
Installation¶
The gateway is packaged as a Debian package and installed as a systemd service. See Installation for platform-specific instructions. Once installed:
The service reads its DAPI endpoint URL and DDS domain ID from the
package-supplied environment file at /etc/default/gva-gateway-hid.
Diagnostics¶
If the gateway is running but bezel keys are not reaching the HMI, run:
Confirm that the gateway's Human_Interaction_Resource topic shows
W=1 R>=1 and that no QoS mismatches are reported. See
DDS Discovery Diagnostics for details.
References¶
- Def Stan 23-009 Displays and Controls Specification v1.0 §2.3.4, §2.3.5, §2.5.5
- Def Stan 23-009 GVA Command Response Protocol v2.0