Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/devices/bluetooth.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2928,6 +2928,7 @@ void bluetooth::deviceDiscovered(const QBluetoothDeviceInfo &device) {
snodeBike->deviceDiscovered(b);
this->signalBluetoothDeviceConnected(snodeBike);
} else if (((b.name().startsWith(QStringLiteral("FS-")) && fitplus_bike) ||
b.name().startsWith(QStringLiteral("X100-")) ||
(b.name().toUpper().startsWith("H9110 OSAKA")) ||
b.name().startsWith(QStringLiteral("MRK-"))) &&
!fitPlusBike && !ftmsBike && !ftmsRower && !snodeBike && !horizonTreadmill && !trxappgateusbRower && filter) {
Expand Down
19 changes: 13 additions & 6 deletions src/devices/fitplusbike/fitplusbike.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,8 @@ void fitplusbike::writeCharacteristic(uint8_t *data, uint8_t data_len, const QSt

void fitplusbike::forceResistance(resistance_t requestResistance) {
QSettings settings;
bool virtufit_etappe = settings.value(QZSettings::virtufit_etappe, QZSettings::default_virtufit_etappe).toBool();
bool virtufit_etappe = virtufitEtappe ||
settings.value(QZSettings::virtufit_etappe, QZSettings::default_virtufit_etappe).toBool();
bool sportstech_sx600 = settings.value(QZSettings::sportstech_sx600, QZSettings::default_sportstech_sx600).toBool();
requestResistanceCompleted = false;
if (virtufit_etappe || merach_MRK || H9110_OSAKA) {
Expand Down Expand Up @@ -304,8 +305,8 @@ void fitplusbike::update() {
gattNotify1Characteristic.isValid() && initDone) {
QSettings settings;
update_metrics(false, watts());
bool virtufit_etappe =
settings.value(QZSettings::virtufit_etappe, QZSettings::default_virtufit_etappe).toBool();
bool virtufit_etappe = virtufitEtappe ||
settings.value(QZSettings::virtufit_etappe, QZSettings::default_virtufit_etappe).toBool();
bool sportstech_sx600 =
settings.value(QZSettings::sportstech_sx600, QZSettings::default_sportstech_sx600).toBool();

Expand Down Expand Up @@ -413,7 +414,8 @@ void fitplusbike::characteristicChanged(const QLowEnergyCharacteristic &characte

lastPacket = newValue;

bool virtufit_etappe = settings.value(QZSettings::virtufit_etappe, QZSettings::default_virtufit_etappe).toBool();
bool virtufit_etappe = virtufitEtappe ||
settings.value(QZSettings::virtufit_etappe, QZSettings::default_virtufit_etappe).toBool();
bool sportstech_sx600 = settings.value(QZSettings::sportstech_sx600, QZSettings::default_sportstech_sx600).toBool();

if (sportstech_sx600 && characteristic.uuid() == QBluetoothUuid((quint16)0x2AD2)) {
Expand Down Expand Up @@ -752,7 +754,8 @@ double fitplusbike::bikeResistanceToPeloton(double resistance) {
void fitplusbike::btinit() {

QSettings settings;
bool virtufit_etappe = settings.value(QZSettings::virtufit_etappe, QZSettings::default_virtufit_etappe).toBool();
bool virtufit_etappe = virtufitEtappe ||
settings.value(QZSettings::virtufit_etappe, QZSettings::default_virtufit_etappe).toBool();
bool sportstech_sx600 = settings.value(QZSettings::sportstech_sx600, QZSettings::default_sportstech_sx600).toBool();

if (merach_MRK) {
Expand Down Expand Up @@ -1014,6 +1017,9 @@ void fitplusbike::deviceDiscovered(const QBluetoothDeviceInfo &device) {
if (device.name().startsWith(QStringLiteral("MRK-"))) {
qDebug() << QStringLiteral("merach_MRK workaround enabled!");
merach_MRK = true;
} else if (device.name().startsWith(QStringLiteral("X100-"))) {
qDebug() << QStringLiteral("VirtuFit Etappe 2.0i workaround enabled!");
virtufitEtappe = true;
} else if (device.name().toUpper().startsWith("H9110 OSAKA")) {
qDebug() << QStringLiteral("H9110 OSAKA workaround enabled!");
max_resistance = 32;
Expand Down Expand Up @@ -1080,7 +1086,8 @@ void fitplusbike::controllerStateChanged(QLowEnergyController::ControllerState s

uint16_t fitplusbike::wattsFromResistance(double resistance) {
QSettings settings;
bool virtufit_etappe = settings.value(QZSettings::virtufit_etappe, QZSettings::default_virtufit_etappe).toBool();
bool virtufit_etappe = virtufitEtappe ||
settings.value(QZSettings::virtufit_etappe, QZSettings::default_virtufit_etappe).toBool();

// https://github.com/cagnulein/qdomyos-zwift/issues/62#issuecomment-736913564
/*if(currentCadence().value() < 90)
Expand Down
1 change: 1 addition & 0 deletions src/devices/fitplusbike/fitplusbike.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ class fitplusbike : public bike {

bool merach_MRK = false;
bool H9110_OSAKA = false;
bool virtufitEtappe = false;

#ifdef Q_OS_IOS
lockscreen *h = 0;
Expand Down
1 change: 1 addition & 0 deletions tst/Devices/deviceindex.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ DEFINE_DEVICE(FakeRower, "Fake Rower");
DEFINE_DEVICE(FakeTreadmill, "Fake Treadmill");
DEFINE_DEVICE(FitPlusBike_MRK_NoSettings, "FitPlus Bike (MRK, no settings)");
DEFINE_DEVICE(FitPlusF5, "FitPlus F5");
DEFINE_DEVICE(FitPlusVirtufitEtappeX100, "FitPlus VirtuFit Etappe 2.0i (X100)");
DEFINE_DEVICE(FitShowBF, "FitShow BF");
DEFINE_DEVICE(FitShowFS, "FitShow FS");
DEFINE_DEVICE(FitShowTR510T, "FitShow TR510-T");
Expand Down
1 change: 1 addition & 0 deletions tst/Devices/deviceindex.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ class DeviceIndex
DEFINE_DEVICE(FakeTreadmill, "Fake Treadmill");
DEFINE_DEVICE(FitPlusBike_MRK_NoSettings, "FitPlus Bike (MRK, no settings)");
DEFINE_DEVICE(FitPlusF5, "FitPlus F5");
DEFINE_DEVICE(FitPlusVirtufitEtappeX100, "FitPlus VirtuFit Etappe 2.0i (X100)");
DEFINE_DEVICE(FitShowBF, "FitShow BF");
DEFINE_DEVICE(FitShowFS, "FitShow FS");
DEFINE_DEVICE(FitShowTR510T, "FitShow TR510-T");
Expand Down
5 changes: 5 additions & 0 deletions tst/Devices/devicetestdataindex.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -387,6 +387,11 @@ void DeviceTestDataIndex::Initialize() {
->acceptDeviceName("FS-", DeviceNameComparison::StartsWith)
->configureSettingsWith( QZSettings::fitplus_bike);

// VirtuFit Etappe 2.0i
RegisterNewDeviceTestData(DeviceIndex::FitPlusVirtufitEtappeX100)
->expectDevice<fitplusbike>()
->acceptDeviceName("X100-", DeviceNameComparison::StartsWith);


// FitPlus MRK
RegisterNewDeviceTestData(DeviceIndex::FitPlusBike_MRK_NoSettings)
Expand Down
Loading