FFI-safe mirror of Cell — a single cell in a Table reading.
Three parallel payload fields; the active one is selected by
kind. Inactive fields carry default values that are never read.
FFI-stable mirror of linsight_core::HardwareDevice. The plugin
emits these alongside its sensors; the daemon validates each one
before integrating into its registry.
FFI-safe mirror of Reading — every sample a plugin returns is
one of these variants, selected by kind. The four payload fields
(scalar / counter / state / table) live alongside the discriminant
and are read individually based on kind. Inactive fields carry
defaults that callers must not read.
FFI-safe mirror of SensorId. Carries an opaque UTF-8 string;
plugins should construct via SensorId::new(...).into() rather than
touching the value field directly.
FFI-safe mirror of Unit. Encoded as a kind discriminant plus a
custom payload that is Some(label) only when kind == Custom.
All other variants set custom: None.
FFI-stable discriminant for linsight_core::HardwareCategory. Per
ADR-0001 v3 lessons, ALL discriminants are #[repr(u8)] unit-only
enums; payload-bearing variants live on a sibling struct (see
RHardwareDevice). This avoids the stabby match_owned release-mode
bug entirely.