observeAs
fun <T> Peripheral.observeAs(serviceUuid: Uuid, characteristicUuid: Uuid, decoder: BleDecoder<T>, backpressure: BackpressureStrategy = BackpressureStrategy.Latest, onDecodeFailure: (ByteArray) -> Unit = {}): Flow<T>
Observes notifications/indications from a characteristic addressed by service+characteristic UUID, decoding each payload with decoder.
Resolution is deferred until the peripheral is ready to resolve (services populated and state is a stable State.Connected substate other than State.Connected.ServiceChanged), matching the readiness predicate used by readAs and writeAs. When the characteristic is absent from the resolved service list, the flow completes empty, matching the lenient SIG-profile convention. Payloads that fail to decode are routed to onDecodeFailure and dropped from the output stream.
The flow may be collected before Peripheral.connect; it will suspend until the readiness predicate first becomes true.