stream
Cold stream of decoded chunks. On collection it starts the device stream (control 0x01) and decodes each notification into one EegChunk; on completion it stops the stream (control 0x00, best-effort). Notifications are buffered UNBOUNDED between the BLE callback and the decoder: the transport's callback bridge (Nordic callbackFlow) would otherwise silently discard packets once its default 64-slot buffer fills behind a transiently slow collector — a drop the decoder then gap-fills and misattributes to missedSamples as device-side loss. A backlog here costs memory (~500 B/packet), never data; only a consumer that is sustainedly slower than real time can grow it. Each chunk also carries per-active-channel EegChunk.contact; device-side losses (gap-filled samples) accumulate into missedSamples.
outputMode selects electrode data or the ADS1299 test signal. On a device that has the output-mode characteristic (supportsTestSignal) the mode is written on EVERY start — the device keeps the last value until power-off, so a test signal left on by another host would otherwise stream as if it were EEG. On older firmware nothing is written and only OutputMode.NORMAL is possible (BrainAccessError.TestSignalNotSupported otherwise). The test signal replaces the impedance measurement, so it requires com.neurotec.brainaccess.protocol.ImpedanceMode.OFF.