AmbientService constructor
AmbientService({
- required BluetoothService service,
A Movisens service containing Ambient data.
Implementation
AmbientService({required super.service}) {
// service = service;
List<Stream<MovisensEvent>> nonNullStreams = [];
// For each characteristic that is supported in the service
for (BluetoothCharacteristic char in service.characteristics) {
String charUuid = char.uuid.toString();
MovisensBluetoothCharacteristics? moviChar =
characteristicUUIDToMovisensBluetoothCharacteristics[charUuid];
// add light stream
if (moviChar == MovisensBluetoothCharacteristics.light) {
_lightEvents = char.lastValueStream
.skipWhile((element) => element.isEmpty)
.map((event) =>
LightEvent(bytes: event, deviceId: service.remoteId.str))
.asBroadcastStream();
nonNullStreams.add(_lightEvents!);
}
// add light RGB stream
else if (moviChar == MovisensBluetoothCharacteristics.lightRGB) {
_lightRGBEvents = char.lastValueStream
.skipWhile((element) => element.isEmpty)
.map((event) =>
LightRGBEvent(bytes: event, deviceId: service.remoteId.str))
.asBroadcastStream();
nonNullStreams.add(_lightRGBEvents!);
} // add sensor temperature stream
else if (moviChar == MovisensBluetoothCharacteristics.sensorTemperature) {
_sensorTemperatureEvents = char.lastValueStream
.skipWhile((element) => element.isEmpty)
.map((event) => SensorTemperatureEvent(
bytes: event, deviceId: service.remoteId.str))
.asBroadcastStream();
nonNullStreams.add(_sensorTemperatureEvents!);
}
}
_events = Rx.merge(nonNullStreams);
}