mirror of
https://github.com/cagnulein/qdomyos-zwift.git
synced 2026-02-18 00:17:41 +01:00
Echelon swift plus victory dircon (#3442)
* starting * builds * works with the simulator * Update echelonconnectsport.cpp * crash fixed * fixing crash? * fixing crash! * Update echelonconnectsport.cpp * build fix * starting * it's working for asking the UUID! * i'm getting the 0003 but i need to notify the 0002 it doesn't enter into the sendCharacteristicNotification loop * adding 0004 notifier * kind of works (no unhandled frames) * it works! * wahoo rgt setting is not useful anymore * dircon works perfectly on ios! * improving wattage also for all bluetooth, but it's not perfect yet * Horizon 5.0 Bike Compatibility #3001 * Update characteristicwriteprocessor0003.h * Update dirconmanager.cpp * Update fakebike.cpp * simulating a fake cadence randomly * handling unhandled case * Log on Thread * Update project.pbxproj * fixing gears on startup alinged with zwift * Update dirconmanager.cpp https://github.com/cagnulein/qdomyos-zwift/issues/2897#issuecomment-2666126808 * Gears don't work for mid-work free ride segment (Issue #2897) * Update project.pbxproj * fixing bluetooth on ios with get gears from zwift enabled * fixing bluetooth with get gears on on android? not tested * fixing build * Update project.pbxproj * Update settings.qml * Gears don't work for mid-work free ride segment (Issue #2897) https://github.com/cagnulein/qdomyos-zwift/issues/2897#issuecomment-2692178928 * Gears don't work for mid-work free ride segment (Issue #2897) https://github.com/cagnulein/qdomyos-zwift/issues/2897#issuecomment-2692370530 * Update project.pbxproj * fixing memory leak * Update project.pbxproj * Update project.pbxproj * build 1043 * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * added gears UI from zwift directly if received * fixing build * fixing build * Update project.pbxproj * fixing zwift gears in the UI of qz * always enabling 50ms on dircon * Update project.pbxproj * wahookickrsnapbike as well * adding also zwiftclickremote * fixing crash * fixing crash * Update project.pbxproj * gear alignment between zwift and qz under a new setting * Update project.pbxproj * fixing wahoo swift implementation * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update ios_wahookickrsnapbike.mm * Update project.pbxproj * adding compensation when there is a power sensor and an ergModeSuppported bike * Update project.pbxproj * adding compensation when there is a power sensor and an ergModeSuppported bike * Update project.pbxproj * Update project.pbxproj * Elite Drivio II * rower distance on apple health? * Update project.pbxproj * avoiding crash * Update project.pbxproj * Update project.pbxproj * Bluetooth issues (Issue #3420) * fixing build #3420 * Update project.pbxproj * Bluetooth issues (Issue #3420) * Bluetooth issues #3420 * Revert "Bluetooth issues #3420" This reverts commitf20f55c0f1. * Revert "Bluetooth issues (Issue #3420)" This reverts commit74c15befaf. * Revert "fixing build #3420" This reverts commit416d10698d. * Revert "Bluetooth issues (Issue #3420)" This reverts commit5cd3efe559. * merge * Update echelonconnectsport.h * Update project.pbxproj * iOS v2.18 (1061) zwift play controllers disconnecting all the time (Issue #3378) https://github.com/cagnulein/qdomyos-zwift/issues/3378#issuecomment-2859933867 * Update project.pbxproj * Bluetooth issues (Issue #3420) * Update project.pbxproj * zwift custom characteristic only if get gears from zwift is enabled https://github.com/cagnulein/qdomyos-zwift/issues/3419#issuecomment-2860215362 * adding max resistance for SCHWINN 190U * Update qdomyos-zwift.pri * Update project.pbxproj * Bluetooth issues (Issue #3420) * Update project.pbxproj
This commit is contained in:
@@ -396,6 +396,7 @@
|
||||
8785D5442B3DD105005A2EB7 /* moc_zwift_client_auth.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8785D5422B3DD105005A2EB7 /* moc_zwift_client_auth.cpp */; };
|
||||
87873AEE2D09A8AA005F86B4 /* moc_sportsplusrower.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87873AED2D09A8AA005F86B4 /* moc_sportsplusrower.cpp */; };
|
||||
87873AF12D09A8CE005F86B4 /* sportsplusrower.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87873AF02D09A8CE005F86B4 /* sportsplusrower.cpp */; };
|
||||
878895DB2DD48AB100BF5162 /* moc_inclinationresistancetable.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 878895DA2DD48AB100BF5162 /* moc_inclinationresistancetable.cpp */; };
|
||||
878A331A25AB4FF800BD13E1 /* yesoulbike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 878A331725AB4FF800BD13E1 /* yesoulbike.cpp */; };
|
||||
878A331D25AB50C300BD13E1 /* moc_yesoulbike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 878A331B25AB50C200BD13E1 /* moc_yesoulbike.cpp */; };
|
||||
878C9E6928B77E7C00669129 /* nordictrackifitadbbike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 878C9E6828B77E7B00669129 /* nordictrackifitadbbike.cpp */; };
|
||||
@@ -1375,6 +1376,8 @@
|
||||
87873AED2D09A8AA005F86B4 /* moc_sportsplusrower.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = moc_sportsplusrower.cpp; sourceTree = "<group>"; };
|
||||
87873AF02D09A8CE005F86B4 /* sportsplusrower.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sportsplusrower.cpp; sourceTree = "<group>"; };
|
||||
87873AF22D09AADF005F86B4 /* sportsplusrower.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = sportsplusrower.h; path = ../src/devices/sportsplusrower/sportsplusrower.h; sourceTree = SOURCE_ROOT; };
|
||||
878895D92DD48AB100BF5162 /* inclinationresistancetable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = inclinationresistancetable.h; path = ../src/inclinationresistancetable.h; sourceTree = SOURCE_ROOT; };
|
||||
878895DA2DD48AB100BF5162 /* moc_inclinationresistancetable.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = moc_inclinationresistancetable.cpp; sourceTree = "<group>"; };
|
||||
8789DCDB6A4F681A76DF3F92 /* Qt5Widgets */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Widgets; path = "/Users/cagnulein/Qt/5.15.2/ios/lib/libQt5Widgets$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
|
||||
878A331725AB4FF800BD13E1 /* yesoulbike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = yesoulbike.cpp; path = ../src/devices/yesoulbike/yesoulbike.cpp; sourceTree = "<group>"; };
|
||||
878A331825AB4FF800BD13E1 /* yesoulbike.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = yesoulbike.h; path = ../src/devices/yesoulbike/yesoulbike.h; sourceTree = "<group>"; };
|
||||
@@ -2058,6 +2061,8 @@
|
||||
25B08E2869634E9BCBA333A2 /* Generated Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
878895D92DD48AB100BF5162 /* inclinationresistancetable.h */,
|
||||
878895DA2DD48AB100BF5162 /* moc_inclinationresistancetable.cpp */,
|
||||
87C4E5BC2C1C1D2600D0750E /* moc_crossrope.cpp */,
|
||||
87C424252BC1294000503687 /* moc_treadmillErgTable.cpp */,
|
||||
874823FD2B935ADA006F3CA1 /* moc_ergtable.cpp */,
|
||||
@@ -3603,6 +3608,7 @@
|
||||
87DAE16426E9FF3A00B0527E /* kingsmithr2treadmill.cpp in Compile Sources */,
|
||||
87F93427278E0EC00088B596 /* domyosrower.cpp in Compile Sources */,
|
||||
87B617EE25F25FED0094A1CB /* snodebike.cpp in Compile Sources */,
|
||||
878895DB2DD48AB100BF5162 /* moc_inclinationresistancetable.cpp in Compile Sources */,
|
||||
87C5F0B526285E5F0067A1B5 /* mimemessage.cpp in Compile Sources */,
|
||||
8768C8C92BBC11C80099DBE1 /* adb_client.c in Compile Sources */,
|
||||
873063C0259DF2C500DA0F44 /* moc_heartratebelt.cpp in Compile Sources */,
|
||||
@@ -4367,7 +4373,7 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_ENTITLEMENTS = "../src/ios/qdomyos-zwift.entitlements";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1080;
|
||||
CURRENT_PROJECT_VERSION = 1087;
|
||||
DEVELOPMENT_TEAM = 6335M7T29D;
|
||||
ENABLE_BITCODE = NO;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "ADB_HOST=1";
|
||||
@@ -4561,7 +4567,7 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_ENTITLEMENTS = "../src/ios/qdomyos-zwift.entitlements";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1080;
|
||||
CURRENT_PROJECT_VERSION = 1087;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEVELOPMENT_TEAM = 6335M7T29D;
|
||||
ENABLE_BITCODE = NO;
|
||||
@@ -4791,7 +4797,7 @@
|
||||
CODE_SIGN_ENTITLEMENTS = "watchkit Extension/WatchKit Extension.entitlements";
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1080;
|
||||
CURRENT_PROJECT_VERSION = 1087;
|
||||
DEVELOPMENT_TEAM = 6335M7T29D;
|
||||
ENABLE_BITCODE = YES;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
@@ -4887,7 +4893,7 @@
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = "watchkit Extension/WatchKit Extension.entitlements";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1080;
|
||||
CURRENT_PROJECT_VERSION = 1087;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEVELOPMENT_TEAM = 6335M7T29D;
|
||||
ENABLE_BITCODE = YES;
|
||||
@@ -4979,7 +4985,7 @@
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = "watchkit Extension/WatchKit Extension.entitlements";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1080;
|
||||
CURRENT_PROJECT_VERSION = 1087;
|
||||
DEVELOPMENT_ASSET_PATHS = "\"watchkit Extension/Preview Content\"";
|
||||
ENABLE_BITCODE = YES;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
@@ -5095,7 +5101,7 @@
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = "watchkit Extension/WatchKit Extension.entitlements";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1080;
|
||||
CURRENT_PROJECT_VERSION = 1087;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEVELOPMENT_ASSET_PATHS = "\"watchkit Extension/Preview Content\"";
|
||||
ENABLE_BITCODE = YES;
|
||||
|
||||
@@ -62,17 +62,28 @@ void bike::changePower(int32_t power) {
|
||||
return;
|
||||
}
|
||||
|
||||
requestPower = power; // used by some bikes that have ERG mode builtin
|
||||
QSettings settings;
|
||||
bool power_sensor = !settings.value(QZSettings::power_sensor_name, QZSettings::default_power_sensor_name)
|
||||
.toString()
|
||||
.startsWith(QStringLiteral("Disabled"));
|
||||
double erg_filter_upper =
|
||||
settings.value(QZSettings::zwift_erg_filter, QZSettings::default_zwift_erg_filter).toDouble();
|
||||
double erg_filter_lower =
|
||||
settings.value(QZSettings::zwift_erg_filter_down, QZSettings::default_zwift_erg_filter_down).toDouble();
|
||||
|
||||
requestPower = power; // used by some bikes that have ERG mode builtin
|
||||
|
||||
if(power_sensor && ergModeSupported && m_rawWatt.value() > 0 && m_watt.value() > 0 && fabs(requestPower - m_watt.average5s()) < qMax(erg_filter_upper, erg_filter_lower)) {
|
||||
qDebug() << "applying delta watt to power request m_rawWatt" << m_rawWatt.average5s() << "watt" << m_watt.average5s() << "req" << requestPower;
|
||||
// the concept here is to trying to add or decrease the delta from the power sensor
|
||||
requestPower += (requestPower - m_watt.average5s());
|
||||
}
|
||||
|
||||
bool force_resistance =
|
||||
settings.value(QZSettings::virtualbike_forceresistance, QZSettings::default_virtualbike_forceresistance)
|
||||
.toBool();
|
||||
// bool erg_mode = settings.value(QZSettings::zwift_erg, QZSettings::default_zwift_erg).toBool(); //Not used
|
||||
// anywhere in code
|
||||
double erg_filter_upper =
|
||||
settings.value(QZSettings::zwift_erg_filter, QZSettings::default_zwift_erg_filter).toDouble();
|
||||
double erg_filter_lower =
|
||||
settings.value(QZSettings::zwift_erg_filter_down, QZSettings::default_zwift_erg_filter_down).toDouble();
|
||||
double deltaDown = wattsMetric().value() - ((double)power);
|
||||
double deltaUp = ((double)power) - wattsMetric().value();
|
||||
qDebug() << QStringLiteral("filter ") + QString::number(deltaUp) + " " + QString::number(deltaDown) + " " +
|
||||
@@ -176,6 +187,7 @@ void bike::clearStats() {
|
||||
m_jouls.clear(true);
|
||||
elevationAcc = 0;
|
||||
m_watt.clear(false);
|
||||
m_rawWatt.clear(false);
|
||||
WeightLoss.clear(false);
|
||||
|
||||
RequestedPelotonResistance.clear(false);
|
||||
@@ -203,6 +215,7 @@ void bike::setPaused(bool p) {
|
||||
Heart.setPaused(p);
|
||||
m_jouls.setPaused(p);
|
||||
m_watt.setPaused(p);
|
||||
m_rawWatt.setPaused(p);
|
||||
WeightLoss.setPaused(p);
|
||||
m_pelotonResistance.setPaused(p);
|
||||
Cadence.setPaused(p);
|
||||
@@ -228,6 +241,7 @@ void bike::setLap() {
|
||||
Heart.setLap(false);
|
||||
m_jouls.setLap(true);
|
||||
m_watt.setLap(false);
|
||||
m_rawWatt.setLap(false);
|
||||
WeightLoss.setLap(false);
|
||||
WattKg.setLap(false);
|
||||
|
||||
|
||||
@@ -282,6 +282,7 @@ void bluetoothdevice::clearStats() {
|
||||
m_jouls.clear(true);
|
||||
elevationAcc = 0;
|
||||
m_watt.clear(false);
|
||||
m_rawWatt.clear(false);
|
||||
WeightLoss.clear(false);
|
||||
WattKg.clear(false);
|
||||
Cadence.clear(false);
|
||||
@@ -302,6 +303,7 @@ void bluetoothdevice::setPaused(bool p) {
|
||||
Heart.setPaused(p);
|
||||
m_jouls.setPaused(p);
|
||||
m_watt.setPaused(p);
|
||||
m_rawWatt.setPaused(p);
|
||||
WeightLoss.setPaused(p);
|
||||
WattKg.setPaused(p);
|
||||
Cadence.setPaused(p);
|
||||
@@ -321,6 +323,7 @@ void bluetoothdevice::setLap() {
|
||||
Heart.setLap(false);
|
||||
m_jouls.setLap(true);
|
||||
m_watt.setLap(false);
|
||||
m_rawWatt.setLap(false);
|
||||
WeightLoss.setLap(false);
|
||||
WattKg.setLap(false);
|
||||
Cadence.setLap(false);
|
||||
|
||||
@@ -591,9 +591,14 @@ class bluetoothdevice : public QObject {
|
||||
metric elevationAcc;
|
||||
|
||||
/**
|
||||
* @brief m_watt Metric to get and set the power expended in the session. Unit: watts
|
||||
* @brief m_watt Metric to get and set the power read from the trainer or from the power sensor Unit: watts
|
||||
*/
|
||||
metric m_watt;
|
||||
|
||||
/**
|
||||
* @brief m_rawWatt Metric to get and set the power from the trainer only. Unit: watts
|
||||
*/
|
||||
metric m_rawWatt;
|
||||
|
||||
/**
|
||||
* @brief WattKg Metric to get and set the watt kg for the session (what's this?). Unit: watt kg
|
||||
|
||||
@@ -18,6 +18,7 @@ proformtelnetbike::proformtelnetbike(bool noWriteResistance, bool noHeartService
|
||||
double bikeResistanceGain) {
|
||||
QSettings settings;
|
||||
m_watt.setType(metric::METRIC_WATT);
|
||||
m_rawWatt.setType(metric::METRIC_WATT);
|
||||
target_watts.setType(metric::METRIC_WATT);
|
||||
Speed.setType(metric::METRIC_SPEED);
|
||||
refresh = new QTimer(this);
|
||||
@@ -298,11 +299,11 @@ void proformtelnetbike::characteristicChanged(const char *buff, int len) {
|
||||
QStringList packet = QString::fromLocal8Bit(newValue).split(" ");
|
||||
qDebug() << packet;
|
||||
if (newValue.contains("Current Watts")) {
|
||||
double watt = packet[3].toDouble();
|
||||
m_rawWatt = packet[3].toDouble();
|
||||
if (settings.value(QZSettings::power_sensor_name, QZSettings::default_power_sensor_name)
|
||||
.toString()
|
||||
.startsWith(QStringLiteral("Disabled")))
|
||||
m_watt = watt;
|
||||
m_watt = m_rawWatt.value();
|
||||
emit debug(QStringLiteral("Current Watt: ") + QString::number(watts()));
|
||||
} else if (newValue.contains("Cur RPM")) {
|
||||
double RPM = packet[3].toDouble();
|
||||
|
||||
@@ -18,6 +18,7 @@ proformwifibike::proformwifibike(bool noWriteResistance, bool noHeartService, in
|
||||
double bikeResistanceGain) {
|
||||
QSettings settings;
|
||||
m_watt.setType(metric::METRIC_WATT);
|
||||
m_rawWatt.setType(metric::METRIC_WATT);
|
||||
target_watts.setType(metric::METRIC_WATT);
|
||||
Speed.setType(metric::METRIC_SPEED);
|
||||
refresh = new QTimer(this);
|
||||
@@ -483,11 +484,11 @@ void proformwifibike::characteristicChanged(const QString &newValue) {
|
||||
// some buggy TDF1 bikes send spurious wattage at the end with cadence = 0
|
||||
if (Cadence.value() > 0) {
|
||||
if (!values[QStringLiteral("Current Watts")].isUndefined()) {
|
||||
double watt = values[QStringLiteral("Current Watts")].toString().toDouble();
|
||||
m_rawWatt = values[QStringLiteral("Current Watts")].toString().toDouble();
|
||||
if (settings.value(QZSettings::power_sensor_name, QZSettings::default_power_sensor_name)
|
||||
.toString()
|
||||
.startsWith(QStringLiteral("Disabled")))
|
||||
m_watt = watt;
|
||||
m_watt = m_rawWatt.value();
|
||||
emit debug(QStringLiteral("Current Watt: ") + QString::number(watts()));
|
||||
} else if (!values[QStringLiteral("Watt attuali")].isUndefined()) {
|
||||
double watt = values[QStringLiteral("Watt attuali")].toString().toDouble();
|
||||
|
||||
@@ -18,6 +18,7 @@ renphobike::renphobike(bool noWriteResistance, bool noHeartService) {
|
||||
ergModeSupported = true; // IMPORTANT, only for this bike
|
||||
|
||||
m_watt.setType(metric::METRIC_WATT);
|
||||
m_rawWatt.setType(metric::METRIC_WATT);
|
||||
Speed.setType(metric::METRIC_SPEED);
|
||||
refresh = new QTimer(this);
|
||||
this->noWriteResistance = noWriteResistance;
|
||||
@@ -286,15 +287,15 @@ void renphobike::characteristicChanged(const QLowEnergyCharacteristic &character
|
||||
}
|
||||
|
||||
if (Flags.instantPower) {
|
||||
wattFromBike =
|
||||
m_rawWatt =
|
||||
((double)(((uint16_t)((uint8_t)newValue.at(index + 1)) << 8) | (uint16_t)((uint8_t)newValue.at(index))));
|
||||
if (settings.value(QZSettings::power_sensor_name, QZSettings::default_power_sensor_name)
|
||||
.toString()
|
||||
.startsWith(QStringLiteral("Disabled")))
|
||||
m_watt = wattFromBike.value();
|
||||
m_watt = m_rawWatt.value();
|
||||
index += 2;
|
||||
debug("Current Watt: " + QString::number(m_watt.value()));
|
||||
debug("Current Watt from the Bike: " + QString::number(wattFromBike.value()));
|
||||
debug("Current Watt from the Bike: " + QString::number(m_rawWatt.value()));
|
||||
}
|
||||
|
||||
if (Flags.avgPower) {
|
||||
@@ -529,7 +530,7 @@ uint16_t renphobike::ergModificator(uint16_t powerRequested) {
|
||||
double f = ((double)powerRequested * (double)powerRequested) / m_watt.average5s();
|
||||
lastPowerRequestedFactor = f / powerRequested;
|
||||
powerRequested = f;
|
||||
qDebug() << QStringLiteral("power sensor detected, reading from the bike") << wattFromBike.value()
|
||||
qDebug() << QStringLiteral("power sensor detected, reading from the bike") << m_rawWatt.value()
|
||||
<< QStringLiteral("reading from power pedal") << m_watt.value()
|
||||
<< QStringLiteral("reading from power pedal (avg 5s)") << m_watt.average5s()
|
||||
<< QStringLiteral("powerRequested") << powerRequested;
|
||||
|
||||
@@ -71,8 +71,6 @@ class renphobike : public bike {
|
||||
bool noWriteResistance = false;
|
||||
bool noHeartService = false;
|
||||
|
||||
metric wattFromBike;
|
||||
|
||||
#ifdef Q_OS_IOS
|
||||
lockscreen *h = 0;
|
||||
#endif
|
||||
|
||||
@@ -22,6 +22,7 @@ wahookickrsnapbike::wahookickrsnapbike(bool noWriteResistance, bool noHeartServi
|
||||
ergModeSupported = true; // IMPORTANT, only for this bike
|
||||
|
||||
m_watt.setType(metric::METRIC_WATT);
|
||||
m_rawWatt.setType(metric::METRIC_WATT);
|
||||
Speed.setType(metric::METRIC_SPEED);
|
||||
refresh = new QTimer(this);
|
||||
this->noWriteResistance = noWriteResistance;
|
||||
@@ -255,6 +256,7 @@ void wahookickrsnapbike::update() {
|
||||
bool power_sensor = !settings.value(QZSettings::power_sensor_name, QZSettings::default_power_sensor_name)
|
||||
.toString()
|
||||
.startsWith(QStringLiteral("Disabled"));
|
||||
|
||||
QByteArray a = setErgMode(requestPower);
|
||||
uint8_t b[20];
|
||||
memcpy(b, a.constData(), a.length());
|
||||
@@ -410,10 +412,11 @@ void wahookickrsnapbike::handleCharacteristicValueChanged(const QBluetoothUuid &
|
||||
uint8_t index = 4;
|
||||
|
||||
if (newValue.length() > 3) {
|
||||
m_rawWatt = (((uint16_t)((uint8_t)newValue.at(3)) << 8) | (uint16_t)((uint8_t)newValue.at(2)));
|
||||
if (settings.value(QZSettings::power_sensor_name, QZSettings::default_power_sensor_name)
|
||||
.toString()
|
||||
.startsWith(QStringLiteral("Disabled")))
|
||||
m_watt = (((uint16_t)((uint8_t)newValue.at(3)) << 8) | (uint16_t)((uint8_t)newValue.at(2)));
|
||||
m_watt = m_rawWatt.value();
|
||||
}
|
||||
|
||||
emit powerChanged(m_watt.value());
|
||||
|
||||
@@ -918,7 +918,6 @@ const QString QZSettings::tile_coretemperature_order = QStringLiteral("tile_core
|
||||
const QString QZSettings::nordictrack_t65s_treadmill_81_miles = QStringLiteral("nordictrack_t65s_treadmill_81_miles");
|
||||
const QString QZSettings::nordictrack_elite_800 = QStringLiteral("nordictrack_elite_800");
|
||||
|
||||
|
||||
const QString QZSettings::ios_btdevice_native = QStringLiteral("ios_btdevice_native");
|
||||
|
||||
const QString QZSettings::inclinationResistancePoints = QStringLiteral("inclinationResistancePoints");
|
||||
@@ -1699,6 +1698,7 @@ QVariant allSettings[allSettingsCount][2] = {
|
||||
|
||||
{QZSettings::nordictrack_t65s_treadmill_81_miles, QZSettings::default_nordictrack_t65s_treadmill_81_miles},
|
||||
{QZSettings::nordictrack_elite_800, QZSettings::default_nordictrack_elite_800},
|
||||
{QZSettings::ios_btdevice_native, QZSettings::default_ios_btdevice_native},
|
||||
{QZSettings::inclinationResistancePoints, QZSettings::default_inclinationResistancePoints},
|
||||
};
|
||||
|
||||
|
||||
@@ -2461,6 +2461,8 @@ class QZSettings {
|
||||
|
||||
static const QString nordictrack_elite_800;
|
||||
static constexpr bool default_nordictrack_elite_800 = false;
|
||||
static const QString ios_btdevice_native;
|
||||
static constexpr bool default_ios_btdevice_native = false;
|
||||
|
||||
static const QString inclinationResistancePoints;
|
||||
static const QString default_inclinationResistancePoints;
|
||||
|
||||
Reference in New Issue
Block a user