Skip to content

Commit 00c96ce

Browse files
authored
Merge branch 'master' into click-tiles-with-a-keyboard-(Issue-#4249)
2 parents f368ddd + bf75b2b commit 00c96ce

9 files changed

Lines changed: 403 additions & 11 deletions

File tree

build-qdomyos-zwift-Qt_5_15_2_for_iOS-Debug/qdomyoszwift.xcodeproj/project.pbxproj

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -557,6 +557,8 @@
557557
87DAE16926E9FF5000B0527E /* moc_shuaa5treadmill.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87DAE16626E9FF5000B0527E /* moc_shuaa5treadmill.cpp */; };
558558
87DAE16A26E9FF5000B0527E /* moc_kingsmithr2treadmill.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87DAE16726E9FF5000B0527E /* moc_kingsmithr2treadmill.cpp */; };
559559
87DAE16B26E9FF5000B0527E /* moc_solef80treadmill.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87DAE16826E9FF5000B0527E /* moc_solef80treadmill.cpp */; };
560+
87DBD5DB2F2CEE1900342F2B /* thinkridercontroller.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87DBD5DA2F2CEE1900342F2B /* thinkridercontroller.cpp */; };
561+
87DBD5ED2F2CF22100342F2B /* moc_thinkridercontroller.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87DBD5EC2F2CF22100342F2B /* moc_thinkridercontroller.cpp */; };
560562
87DC27EA2D9BDB53007A1B9D /* echelonstairclimber.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87DC27E72D9BDB53007A1B9D /* echelonstairclimber.cpp */; };
561563
87DC27EB2D9BDB53007A1B9D /* stairclimber.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87DC27E92D9BDB53007A1B9D /* stairclimber.cpp */; };
562564
87DC27EE2D9BDB8F007A1B9D /* moc_stairclimber.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87DC27ED2D9BDB8F007A1B9D /* moc_stairclimber.cpp */; };
@@ -1660,6 +1662,9 @@
16601662
87DAE16626E9FF5000B0527E /* moc_shuaa5treadmill.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_shuaa5treadmill.cpp; sourceTree = "<group>"; };
16611663
87DAE16726E9FF5000B0527E /* moc_kingsmithr2treadmill.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_kingsmithr2treadmill.cpp; sourceTree = "<group>"; };
16621664
87DAE16826E9FF5000B0527E /* moc_solef80treadmill.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_solef80treadmill.cpp; sourceTree = "<group>"; };
1665+
87DBD5D92F2CEE1900342F2B /* thinkridercontroller.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = thinkridercontroller.h; path = ../src/devices/thinkridercontroller/thinkridercontroller.h; sourceTree = SOURCE_ROOT; };
1666+
87DBD5DA2F2CEE1900342F2B /* thinkridercontroller.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = thinkridercontroller.cpp; path = ../src/devices/thinkridercontroller/thinkridercontroller.cpp; sourceTree = SOURCE_ROOT; };
1667+
87DBD5EC2F2CF22100342F2B /* moc_thinkridercontroller.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = moc_thinkridercontroller.cpp; sourceTree = "<group>"; };
16631668
87DC27E62D9BDB53007A1B9D /* echelonstairclimber.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = echelonstairclimber.h; path = ../src/devices/echelonstairclimber/echelonstairclimber.h; sourceTree = SOURCE_ROOT; };
16641669
87DC27E72D9BDB53007A1B9D /* echelonstairclimber.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = echelonstairclimber.cpp; path = ../src/devices/echelonstairclimber/echelonstairclimber.cpp; sourceTree = SOURCE_ROOT; };
16651670
87DC27E82D9BDB53007A1B9D /* stairclimber.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = stairclimber.h; path = ../src/devices/stairclimber.h; sourceTree = SOURCE_ROOT; };
@@ -2335,6 +2340,9 @@
23352340
2EB56BE3C2D93CDAB0C52E67 /* Sources */ = {
23362341
isa = PBXGroup;
23372342
children = (
2343+
87DBD5EC2F2CF22100342F2B /* moc_thinkridercontroller.cpp */,
2344+
87DBD5D92F2CEE1900342F2B /* thinkridercontroller.h */,
2345+
87DBD5DA2F2CEE1900342F2B /* thinkridercontroller.cpp */,
23382346
87A892572F0C173600811D95 /* sportsplusrower.cpp */,
23392347
87A892552F0C12EB00811D95 /* deerruntreadmill.cpp */,
23402348
87CBCF0F2EFAA2F8004F5ECE /* garminconnect.h */,
@@ -3892,6 +3900,7 @@
38923900
87FE5BAF2692F3130056EFC8 /* tacxneo2.cpp in Compile Sources */,
38933901
8718CBAC263063CE004BF4EE /* moc_tcpclientinfosender.cpp in Compile Sources */,
38943902
873824B527E64707004F1B46 /* moc_provider_p.cpp in Compile Sources */,
3903+
87DBD5ED2F2CF22100342F2B /* moc_thinkridercontroller.cpp in Compile Sources */,
38953904
87097D2F275EA9A30020EE6F /* sportsplusbike.cpp in Compile Sources */,
38963905
333C629F93DB3941862924F7 /* fit_field_base.cpp in Compile Sources */,
38973906
87473A9827ECAA0500C203F5 /* moc_proformrower.cpp in Compile Sources */,
@@ -4198,6 +4207,7 @@
41984207
874D272029AFA11F0007C079 /* apexbike.cpp in Compile Sources */,
41994208
8798C8872733E103003148B3 /* strydrunpowersensor.cpp in Compile Sources */,
42004209
87C5F0B626285E5F0067A1B5 /* quotedprintable.cpp in Compile Sources */,
4210+
87DBD5DB2F2CEE1900342F2B /* thinkridercontroller.cpp in Compile Sources */,
42014211
87310B23266FBB78008BA0D6 /* moc_smartrowrower.cpp in Compile Sources */,
42024212
EE29228550794460E7654533 /* moc_trxappgateusbtreadmill.cpp in Compile Sources */,
42034213
3DB7B5F0CE1E2390CEFFC1E8 /* moc_virtualbike.cpp in Compile Sources */,
@@ -4573,7 +4583,7 @@
45734583
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
45744584
CODE_SIGN_ENTITLEMENTS = "../src/ios/qdomyos-zwift.entitlements";
45754585
COPY_PHASE_STRIP = NO;
4576-
CURRENT_PROJECT_VERSION = 1274;
4586+
CURRENT_PROJECT_VERSION = 1277;
45774587
DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = YES;
45784588
DEVELOPMENT_TEAM = 6335M7T29D;
45794589
ENABLE_BITCODE = NO;
@@ -4774,7 +4784,7 @@
47744784
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
47754785
CODE_SIGN_ENTITLEMENTS = "../src/ios/qdomyos-zwift.entitlements";
47764786
COPY_PHASE_STRIP = NO;
4777-
CURRENT_PROJECT_VERSION = 1274;
4787+
CURRENT_PROJECT_VERSION = 1277;
47784788
DEBUG_INFORMATION_FORMAT = dwarf;
47794789
DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = YES;
47804790
DEVELOPMENT_TEAM = 6335M7T29D;
@@ -5011,7 +5021,7 @@
50115021
CODE_SIGN_ENTITLEMENTS = "watchkit Extension/WatchKit Extension.entitlements";
50125022
CODE_SIGN_IDENTITY = "Apple Development";
50135023
CODE_SIGN_STYLE = Automatic;
5014-
CURRENT_PROJECT_VERSION = 1274;
5024+
CURRENT_PROJECT_VERSION = 1277;
50155025
DEVELOPMENT_TEAM = 6335M7T29D;
50165026
ENABLE_BITCODE = YES;
50175027
ENABLE_STRICT_OBJC_MSGSEND = YES;
@@ -5107,7 +5117,7 @@
51075117
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
51085118
CODE_SIGN_ENTITLEMENTS = "watchkit Extension/WatchKit Extension.entitlements";
51095119
CODE_SIGN_STYLE = Automatic;
5110-
CURRENT_PROJECT_VERSION = 1274;
5120+
CURRENT_PROJECT_VERSION = 1277;
51115121
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
51125122
DEVELOPMENT_TEAM = 6335M7T29D;
51135123
ENABLE_BITCODE = YES;
@@ -5199,7 +5209,7 @@
51995209
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
52005210
CODE_SIGN_ENTITLEMENTS = "watchkit Extension/WatchKit Extension.entitlements";
52015211
CODE_SIGN_STYLE = Automatic;
5202-
CURRENT_PROJECT_VERSION = 1274;
5212+
CURRENT_PROJECT_VERSION = 1277;
52035213
DEVELOPMENT_ASSET_PATHS = "\"watchkit Extension/Preview Content\"";
52045214
ENABLE_BITCODE = YES;
52055215
ENABLE_PREVIEWS = YES;
@@ -5315,7 +5325,7 @@
53155325
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
53165326
CODE_SIGN_ENTITLEMENTS = "watchkit Extension/WatchKit Extension.entitlements";
53175327
CODE_SIGN_STYLE = Automatic;
5318-
CURRENT_PROJECT_VERSION = 1274;
5328+
CURRENT_PROJECT_VERSION = 1277;
53195329
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
53205330
DEVELOPMENT_ASSET_PATHS = "\"watchkit Extension/Preview Content\"";
53215331
ENABLE_BITCODE = YES;
@@ -5425,7 +5435,7 @@
54255435
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
54265436
CODE_SIGN_ENTITLEMENTS = QZWidgetExtension.entitlements;
54275437
CODE_SIGN_STYLE = Automatic;
5428-
CURRENT_PROJECT_VERSION = 1274;
5438+
CURRENT_PROJECT_VERSION = 1277;
54295439
DEVELOPMENT_TEAM = 6335M7T29D;
54305440
ENABLE_STRICT_OBJC_MSGSEND = YES;
54315441
ENABLE_TESTABILITY = YES;
@@ -5516,7 +5526,7 @@
55165526
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
55175527
CODE_SIGN_ENTITLEMENTS = QZWidgetExtension.entitlements;
55185528
CODE_SIGN_STYLE = Automatic;
5519-
CURRENT_PROJECT_VERSION = 1274;
5529+
CURRENT_PROJECT_VERSION = 1277;
55205530
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
55215531
DEVELOPMENT_TEAM = 6335M7T29D;
55225532
ENABLE_NS_ASSERTIONS = NO;

src/devices/bluetooth.cpp

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,12 +201,15 @@ void bluetooth::finished() {
201201

202202
bool sramDeviceFound = !settings.value(QZSettings::sram_axs_controller, QZSettings::default_sram_axs_controller).toBool();
203203

204+
bool thinkriderDeviceFound = !settings.value(QZSettings::thinkrider_controller, QZSettings::default_thinkrider_controller).toBool();
205+
204206
if ((!heartRateBeltFound && !heartRateBeltAvaiable()) || (!ftmsAccessoryFound && !ftmsAccessoryAvaiable()) ||
205207
(!cscFound && !cscSensorAvaiable()) || (!powerSensorFound && !powerSensorAvaiable()) ||
206208
(!eliteRizerFound && !eliteRizerAvaiable()) || (!eliteSterzoSmartFound && !eliteSterzoSmartAvaiable()) ||
207209
(!fitmetriaFanfitFound && !fitmetriaFanfitAvaiable()) ||
208210
(!zwiftDeviceFound && !zwiftDeviceAvaiable()) ||
209-
(!sramDeviceFound && !sramDeviceAvaiable())) {
211+
(!sramDeviceFound && !sramDeviceAvaiable()) ||
212+
(!thinkriderDeviceFound && !thinkriderDeviceAvaiable())) {
210213

211214
// force heartRateBelt off
212215
forceHeartBeltOffForTimeout = true;
@@ -336,6 +339,16 @@ bool bluetooth::sramDeviceAvaiable() {
336339
return false;
337340
}
338341

342+
bool bluetooth::thinkriderDeviceAvaiable() {
343+
344+
Q_FOREACH (QBluetoothDeviceInfo b, devices) {
345+
if (b.name().toUpper().startsWith("THINK VS") || b.name().toUpper().startsWith("THINKRIDER")) {
346+
return true;
347+
}
348+
}
349+
return false;
350+
}
351+
339352

340353
bool bluetooth::powerSensorAvaiable() {
341354

@@ -437,6 +450,7 @@ void bluetooth::deviceDiscovered(const QBluetoothDeviceInfo &device) {
437450
bool sramDeviceFound = !settings.value(QZSettings::sram_axs_controller, QZSettings::default_sram_axs_controller).toBool();
438451
bool zwiftDeviceFound =
439452
!settings.value(QZSettings::zwift_click, QZSettings::default_zwift_click).toBool() && !settings.value(QZSettings::zwift_play, QZSettings::default_zwift_play).toBool();
453+
bool thinkriderDeviceFound = !settings.value(QZSettings::thinkrider_controller, QZSettings::default_thinkrider_controller).toBool();
440454
bool fitmetriaFanfitFound =
441455
!settings.value(QZSettings::fitmetria_fanfit_enable, QZSettings::default_fitmetria_fanfit_enable).toBool();
442456
bool toorx_ftms = settings.value(QZSettings::toorx_ftms, QZSettings::default_toorx_ftms).toBool();
@@ -549,6 +563,10 @@ void bluetooth::deviceDiscovered(const QBluetoothDeviceInfo &device) {
549563

550564
sramDeviceFound = sramDeviceAvaiable();
551565
}
566+
if(!thinkriderDeviceFound) {
567+
568+
thinkriderDeviceFound = thinkriderDeviceAvaiable();
569+
}
552570
if (!ftmsAccessoryFound) {
553571

554572
ftmsAccessoryFound = ftmsAccessoryAvaiable();
@@ -681,7 +699,7 @@ void bluetooth::deviceDiscovered(const QBluetoothDeviceInfo &device) {
681699
#endif
682700

683701
bool searchDevices = (heartRateBeltFound && ftmsAccessoryFound && cscFound && powerSensorFound && eliteRizerFound &&
684-
eliteSterzoSmartFound && fitmetriaFanfitFound && zwiftDeviceFound) ||
702+
eliteSterzoSmartFound && fitmetriaFanfitFound && zwiftDeviceFound && sramDeviceFound && thinkriderDeviceFound) ||
685703
forceHeartBeltOffForTimeout;
686704

687705
if (searchDevices) {
@@ -3115,6 +3133,24 @@ void bluetooth::connectedAndDiscovered() {
31153133
}
31163134
}
31173135

3136+
if(settings.value(QZSettings::thinkrider_controller, QZSettings::default_thinkrider_controller).toBool()) {
3137+
for (const QBluetoothDeviceInfo &b : qAsConst(devices)) {
3138+
if (((b.name().toUpper().startsWith("THINK VS")) || (b.name().toUpper().startsWith("THINKRIDER"))) && !thinkriderController && this->device() &&
3139+
this->device()->deviceType() == BIKE) {
3140+
3141+
thinkriderController = new thinkridercontroller(this->device());
3142+
3143+
connect(thinkriderController, &thinkridercontroller::debug, this, &bluetooth::debug);
3144+
connect(thinkriderController, &thinkridercontroller::plus, (bike*)this->device(), &bike::gearUp);
3145+
connect(thinkriderController, &thinkridercontroller::minus, (bike*)this->device(), &bike::gearDown);
3146+
thinkriderController->deviceDiscovered(b);
3147+
if(homeform::singleton())
3148+
homeform::singleton()->setToastRequested("Thinkrider Controller Connected!");
3149+
break;
3150+
}
3151+
}
3152+
}
3153+
31183154
if(settings.value(QZSettings::zwift_play, QZSettings::default_zwift_play).toBool()) {
31193155
for (const QBluetoothDeviceInfo &b : qAsConst(devices)) {
31203156
if (((b.name().toUpper().startsWith("SQUARE"))) && !eliteSquareController && this->device() &&

src/devices/bluetooth.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@
154154

155155
#include "zwift_play/zwiftPlayDevice.h"
156156
#include "zwift_play/zwiftclickremote.h"
157+
#include "devices/thinkridercontroller/thinkridercontroller.h"
157158

158159
#ifdef Q_OS_IOS
159160
#include "ios/lockscreen.h"
@@ -306,6 +307,7 @@ class bluetooth : public QObject, public SignalHandler {
306307
QList<eliteariafan *> eliteAriaFan;
307308
QList<zwiftclickremote* > zwiftPlayDevice;
308309
zwiftclickremote* zwiftClickRemote = nullptr;
310+
thinkridercontroller* thinkriderController = nullptr;
309311
sramaxscontroller* sramAXSController = nullptr;
310312
elitesquarecontroller* eliteSquareController = nullptr;
311313
QString filterDevice = QLatin1String("");
@@ -343,6 +345,7 @@ class bluetooth : public QObject, public SignalHandler {
343345
bool fitmetriaFanfitAvaiable();
344346
bool zwiftDeviceAvaiable();
345347
bool sramDeviceAvaiable();
348+
bool thinkriderDeviceAvaiable();
346349
bool fitmetria_fanfit_isconnected(QString name);
347350

348351
#ifdef Q_OS_WIN

0 commit comments

Comments
 (0)