Skip to content

Commit c1c2521

Browse files
committed
Propagate power sensor cadence to CSC bikes
1 parent 4ffc94e commit c1c2521

2 files changed

Lines changed: 36 additions & 18 deletions

File tree

src/devices/bluetooth.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3262,8 +3262,10 @@ void bluetooth::connectedAndDiscovered() {
32623262

32633263
connect(powerSensor, &stagesbike::debug, this, &bluetooth::debug);
32643264
connect(powerSensor, &bluetoothdevice::powerChanged, this->device(), &bluetoothdevice::powerSensor);
3265-
connect(powerSensor, &bluetoothdevice::cadenceChanged, this->device(),
3266-
&bluetoothdevice::cadenceSensor);
3265+
if (cscName.startsWith(QStringLiteral("Disabled"))) {
3266+
connect(powerSensor, &bluetoothdevice::cadenceChanged, this->device(),
3267+
&bluetoothdevice::cadenceSensor);
3268+
}
32673269
powerSensor->deviceDiscovered(b);
32683270
} else if (device() && device()->deviceType() == TREADMILL) {
32693271
powerSensorRun = new strydrunpowersensor(false, false, true);

src/devices/cscbike/cscbike.cpp

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,10 @@ void cscbike::update() {
170170
QSettings settings;
171171
QString heartRateBeltName =
172172
settings.value(QZSettings::heart_rate_belt_name, QZSettings::default_heart_rate_belt_name).toString();
173+
bool externalPowerSensorEnabled =
174+
!settings.value(QZSettings::power_sensor_name, QZSettings::default_power_sensor_name)
175+
.toString()
176+
.startsWith(QStringLiteral("Disabled"));
173177

174178
if (!noVirtualDevice) {
175179
#ifdef Q_OS_ANDROID
@@ -183,21 +187,24 @@ void cscbike::update() {
183187
}
184188
}
185189

186-
bool rogue_echo_bike = settings.value(QZSettings::rogue_echo_bike, QZSettings::default_rogue_echo_bike).toBool();
187-
188-
if (manualResistancePowerAdjustmentActive && jorotoBike) {
189-
m_watt = manualResistanceAdjustedWatts();
190-
} else if (manualResistancePowerAdjustmentActive && useCustomResistancePowerTable()) {
191-
m_watt = customResistanceAdjustedWatts(currentCadence().value(), manualResistanceTarget);
192-
} else if (rogue_echo_bike) {
193-
double rpm = currentCadence().value();
194-
m_watt = 0.000602337 * pow(rpm, 3.11762) + 32.6404;
195-
} else {
196-
// When cadence is zero, watts should be zero regardless of HR
197-
if (currentCadence().value() == 0) {
198-
m_watt = 0;
190+
if (!externalPowerSensorEnabled) {
191+
bool rogue_echo_bike =
192+
settings.value(QZSettings::rogue_echo_bike, QZSettings::default_rogue_echo_bike).toBool();
193+
194+
if (manualResistancePowerAdjustmentActive && jorotoBike) {
195+
m_watt = manualResistanceAdjustedWatts();
196+
} else if (manualResistancePowerAdjustmentActive && useCustomResistancePowerTable()) {
197+
m_watt = customResistanceAdjustedWatts(currentCadence().value(), manualResistanceTarget);
198+
} else if (rogue_echo_bike) {
199+
double rpm = currentCadence().value();
200+
m_watt = 0.000602337 * pow(rpm, 3.11762) + 32.6404;
199201
} else {
200-
m_watt = wattFromHR(false);
202+
// When cadence is zero, watts should be zero regardless of HR
203+
if (currentCadence().value() == 0) {
204+
m_watt = 0;
205+
} else {
206+
m_watt = wattFromHR(false);
207+
}
201208
}
202209
}
203210
emit debug(QStringLiteral("Current Watt: ") + QString::number(m_watt.value()));
@@ -272,6 +279,15 @@ void cscbike::characteristicChanged(const QLowEnergyCharacteristic &characterist
272279
qDebug() << "characteristicChanged << " << characteristic.uuid() << newValue.toHex(' ') << newValue.length();
273280
Q_UNUSED(characteristic);
274281
QSettings settings;
282+
bool externalCadenceSensorEnabled =
283+
!settings.value(QZSettings::cadence_sensor_name, QZSettings::default_cadence_sensor_name)
284+
.toString()
285+
.startsWith(QStringLiteral("Disabled"));
286+
bool externalPowerSensorEnabled =
287+
!settings.value(QZSettings::power_sensor_name, QZSettings::default_power_sensor_name)
288+
.toString()
289+
.startsWith(QStringLiteral("Disabled"));
290+
bool useMachineCadence = !externalCadenceSensorEnabled && !externalPowerSensorEnabled;
275291
// QString heartRateBeltName = //unused QString
276292
// settings.value(QZSettings::heart_rate_belt_name, QZSettings::default_heart_rate_belt_name).toString();
277293

@@ -356,7 +372,7 @@ void cscbike::characteristicChanged(const QLowEnergyCharacteristic &characterist
356372
deltaT = LastCrankEventTime + 65535 - oldLastCrankEventTime;
357373
}
358374

359-
if (CrankRevs != oldCrankRevs && deltaT) {
375+
if (useMachineCadence && CrankRevs != oldCrankRevs && deltaT) {
360376
double cadence = ((CrankRevs - oldCrankRevs) / deltaT) * 1024 * 60;
361377

362378
// Cadence Validation Logic
@@ -377,7 +393,7 @@ void cscbike::characteristicChanged(const QLowEnergyCharacteristic &characterist
377393
if ((cadence >= 0 && (cadence < 256 || _CrankRevs == 0) && CrankPresent) || (!CrankPresent && WheelPresent))
378394
Cadence = cadence;
379395
lastGoodCadence = now;
380-
} else if (lastGoodCadence.msecsTo(now) > 2000) {
396+
} else if (useMachineCadence && lastGoodCadence.msecsTo(now) > 2000) {
381397
Cadence = 0;
382398
}
383399
emit cadenceChanged(Cadence.value());

0 commit comments

Comments
 (0)