Skip to content

Commit

Permalink
Trying to support Stryd power readings by adding a Cycling Power Mete…
Browse files Browse the repository at this point in the history
…r as an additional sensor #395

(We contemplate that Stryd's bicycle identification is due to a Power Meter profile and not FTMS Indoor Bike data)
  • Loading branch information
MrCsabaToth committed Dec 31, 2023
1 parent 6dfe0f8 commit 6a227ee
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import '../../utils/constants.dart';
import '../../utils/guid_ex.dart';
import '../../utils/logging.dart';
import '../gadgets/complex_sensor.dart';
import '../gadgets/cycling_power_meter_sensor.dart';
import '../gadgets/heart_rate_monitor.dart';
import '../gadgets/running_speed_and_cadence_sensor.dart';
import '../gatt/hrm.dart';
Expand Down Expand Up @@ -82,16 +83,25 @@ class RunningSpeedAndCadenceDescriptor extends DeviceDescriptor {
@override
List<ComplexSensor> getAdditionalSensors(
BluetoothDevice device, List<BluetoothService> services) {
List<ComplexSensor> additionalSensors = [];
// TODO: ask the user whether they prefer to pair the HRM to the console or not. We assume yes now.
final requiredService = services
final hrmService = services
.firstWhereOrNull((service) => service.serviceUuid.uuidString() == heartRateServiceUuid);
if (requiredService == null) {
return [];
if (hrmService != null) {
final additionalSensor = HeartRateMonitor(device);
additionalSensor.services = services;
additionalSensors.add(additionalSensor);
}

final powerMeterService = services
.firstWhereOrNull((service) => service.serviceUuid.uuidString() == cyclingPowerServiceUuid);
if (powerMeterService != null) {
final additionalSensor = CyclingPowerMeterSensor(device);
additionalSensor.services = services;
additionalSensors.add(additionalSensor);
}

final additionalSensor = HeartRateMonitor(device);
additionalSensor.services = services;
return [additionalSensor];
return additionalSensors;
}

@override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,9 +93,9 @@ class TreadmillDeviceDescriptor extends FitnessMachineDescriptor {
@override
List<ComplexSensor> getAdditionalSensors(
BluetoothDevice device, List<BluetoothService> services) {
final requiredService = services.firstWhereOrNull(
final rscService = services.firstWhereOrNull(
(service) => service.serviceUuid.uuidString() == RunningSpeedAndCadenceSensor.serviceUuid);
if (requiredService == null) {
if (rscService == null) {
return [];
}

Expand Down

0 comments on commit 6a227ee

Please sign in to comment.