subscribe method

Stream<List<int>> subscribe()

Subscribes to updates from the characteristic specified.

This stream terminates automatically when the device is disconnected.

Implementation

Stream<List<int>> subscribe() {
  _assertValidity();

  final isDisconnected = _lib.connectedDeviceStream
      .where((update) =>
          update.deviceId == service.deviceId &&
          (update.connectionState == DeviceConnectionState.disconnecting ||
              update.connectionState == DeviceConnectionState.disconnected))
      .cast<void>()
      .firstWhere((_) => true, orElse: () {});

  return _lib.initialize().asStream().asyncExpand(
        (_) => _lib._connectedDeviceOperator.subscribeToCharacteristic(
          CharacteristicInstance(
            characteristicId: id,
            characteristicInstanceId: _instanceId,
            serviceId: service.id,
            serviceInstanceId: service._instanceId,
            deviceId: service.deviceId,
          ),
          isDisconnected,
        ),
      );
}