Skip to content

Commit

Permalink
schwinn 170 fix
Browse files Browse the repository at this point in the history
  • Loading branch information
cagnulein committed Jun 4, 2024
1 parent 908cd7f commit 61a6be9
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 15 deletions.
44 changes: 29 additions & 15 deletions src/devices/schwinn170bike/schwinn170bike.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,35 @@ void schwinn170bike::characteristicChanged(const QLowEnergyCharacteristic &chara
return;
}

if (newValue.length() == 17) {
double cadence_gain = settings.value(QZSettings::cadence_gain, QZSettings::default_cadence_gain).toDouble();
double cadence_offset = settings.value(QZSettings::cadence_offset, QZSettings::default_cadence_offset).toDouble();

if (settings.value(QZSettings::cadence_sensor_name, QZSettings::default_cadence_sensor_name)
.toString()
.startsWith(QStringLiteral("Disabled"))) {
double current = ((double)(((uint16_t)((uint8_t)newValue.at(5)) << 8) | (uint16_t)((uint8_t)newValue.at(4))));
if (current != lastCadenceValue) {
QDateTime now = QDateTime::currentDateTime();
double c = ((current - lastCadenceValue) / (now.msecsTo(lastCadenceChanged))) * 60000.0;
lastCadenceValue = current;
lastCadenceChanged = now;
if (c < 255) {
if (c > 0)
Cadence = (c * cadence_gain) + cadence_offset;
else
Cadence = 0;
} else {
qDebug() << "Cadence too high" << c << "discarded!";
}
}
}

emit debug(QStringLiteral("Current Cadence: ") + QString::number(Cadence.value()));

return;
}

if (newValue.length() != 14)
return;

Expand All @@ -141,21 +170,6 @@ void schwinn170bike::characteristicChanged(const QLowEnergyCharacteristic &chara
m_watt = ((double)(((uint16_t)((uint8_t)newValue.at(7)) << 8) | (uint16_t)((uint8_t)newValue.at(6)))) / 100.0;
emit debug(QStringLiteral("Current Watt: ") + QString::number(m_watt.value()));

double cadence_gain = settings.value(QZSettings::cadence_gain, QZSettings::default_cadence_gain).toDouble();
double cadence_offset = settings.value(QZSettings::cadence_offset, QZSettings::default_cadence_offset).toDouble();

if (settings.value(QZSettings::cadence_sensor_name, QZSettings::default_cadence_sensor_name)
.toString()
.startsWith(QStringLiteral("Disabled"))) {
double c = ((double)(((uint16_t)((uint8_t)newValue.at(4)) << 8) | (uint16_t)((uint8_t)newValue.at(3)))) / 17.47;
if (c > 0)
Cadence = (c * cadence_gain) + cadence_offset;
else
Cadence = 0;
}

emit debug(QStringLiteral("Current Cadence: ") + QString::number(Cadence.value()));

if (!settings.value(QZSettings::speed_power_based, QZSettings::default_speed_power_based).toBool()) {
Speed = ((double)(((uint16_t)((uint8_t)newValue.at(4)) << 8) | (uint16_t)((uint8_t)newValue.at(3)))) / 100.0;
} else {
Expand Down
3 changes: 3 additions & 0 deletions src/devices/schwinn170bike/schwinn170bike.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,9 @@ class schwinn170bike : public bike {
QByteArray lastPacket;
QDateTime lastRefreshCharacteristicChanged = QDateTime::currentDateTime();
uint8_t firstStateChanged = 0;

double lastCadenceValue = 0;
QDateTime lastCadenceChanged = QDateTime::currentDateTime();

bool initDone = false;
bool initRequest = false;
Expand Down
2 changes: 2 additions & 0 deletions src/ios/virtualbike_zwift.swift
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,8 @@ class BLEPeripheralManagerZwift: NSObject, CBPeripheralManagerDelegate {
public var connected: Bool = false

private var notificationTimer: Timer! = nil

let SwiftDebug = swiftDebug()
//var delegate: BLEPeripheralManagerDelegate?

init(disable_hr: Bool, garmin_bluetooth_compatibility: Bool) {
Expand Down

0 comments on commit 61a6be9

Please sign in to comment.