DeviceConfig
Immutable device configuration. Replaces the legacy mutable BADeviceConfig (which used var/MutableList shared as a per-type static).
Field meanings are preserved from the legacy wire contract:
gain per-channel gain (e.g. 8). Only active channels' gain is transmitted.
bias per-channel bias enable; packed LSB-first, one byte per 8 channels (channel 0 = bit 0 of the first byte, channel 8 = bit 0 of the second).
active per-channel enable mask.
srate sample rate in Hz; one of SUPPORTED_SRATES (the rates with a wire code) — anything else is rejected at construction instead of being sent as an unknown code.
impedanceMode wire code byte 0 of the config blob; any non-OFF mode selects the impedance packet layout (24-bit absolute) vs the normal layout (24-bit first sample
12-bit deltas).
The four lists MUST all be length DeviceModel.channelCount.