subscribeToCharacteristic method

Stream<List<int>> subscribeToCharacteristic(
  1. QualifiedCharacteristic characteristic
)

Subscribes to updates from the characteristic specified.

This stream terminates automatically when the device is disconnected.

Implementation

Stream<List<int>> subscribeToCharacteristic(
  QualifiedCharacteristic characteristic,
) {
  final isDisconnected = connectedDeviceStream
      .where((update) =>
          update.deviceId == characteristic.deviceId &&
          (update.connectionState == DeviceConnectionState.disconnecting ||
              update.connectionState == DeviceConnectionState.disconnected))
      .cast<void>()
      .firstWhere((_) => true, orElse: () {});

  return initialize().asStream().asyncExpand(
        (_) => _connectedDeviceOperator.subscribeToCharacteristic(
          characteristic,
          isDisconnected,
        ),
      );
}