Skip to content

Commit e3e822d

Browse files
author
root
committed
feat: add CARE bike support setting
1 parent 4d534e2 commit e3e822d

8 files changed

Lines changed: 49 additions & 4 deletions

File tree

src/devices/bluetooth.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -649,6 +649,8 @@ void bluetooth::deviceDiscovered(const QBluetoothDeviceInfo &device) {
649649
bool sole_inclination =
650650
settings.value(QZSettings::sole_treadmill_inclination, QZSettings::default_sole_treadmill_inclination).toBool();
651651
QString ftms_rower = settings.value(QZSettings::ftms_rower, QZSettings::default_ftms_rower).toString();
652+
bool careBikeEnableSupport =
653+
settings.value(QZSettings::care_bike_enable_support, QZSettings::default_care_bike_enable_support).toBool();
652654
QString ftms_bike = settings.value(QZSettings::ftms_bike, QZSettings::default_ftms_bike).toString();
653655
QString ftms_treadmill = settings.value(QZSettings::ftms_treadmill, QZSettings::default_ftms_treadmill).toString();
654656
QString ftms_elliptical = settings.value(QZSettings::ftms_elliptical, QZSettings::default_ftms_elliptical).toString();
@@ -2482,7 +2484,7 @@ void bluetooth::deviceDiscovered(const QBluetoothDeviceInfo &device) {
24822484
((b.name().toUpper().startsWith(QStringLiteral("HT")) && b.name().length() == 10) &&
24832485
ftms_bike.contains(QZSettings::default_ftms_bike)) ||
24842486
(b.name().toUpper().contains(QStringLiteral("CARE")) &&
2485-
b.name().length() == 11)) // CARE9040177 - Carefitness CV-351
2487+
(b.name().length() == 11 || careBikeEnableSupport))) // CARE9040177 - Carefitness CV-351
24862488
&& !sportsPlusBike && filter) {
24872489
this->setLastBluetoothDevice(b);
24882490
this->stopDiscovery();
@@ -2498,7 +2500,8 @@ void bluetooth::deviceDiscovered(const QBluetoothDeviceInfo &device) {
24982500
// SLOT(inclinationChanged(double)));
24992501
sportsPlusBike->deviceDiscovered(b);
25002502
this->signalBluetoothDeviceConnected(sportsPlusBike);
2501-
} else if (((b.name().toUpper().contains(QStringLiteral("CARE")) && b.name().length() >= 12) || // CARE968300122, CARE10692135
2503+
} else if (((b.name().toUpper().contains(QStringLiteral("CARE")) && b.name().length() >= 12 &&
2504+
!careBikeEnableSupport) || // CARE968300122, CARE10692135
25022505
(b.name().toUpper().startsWith(QStringLiteral("VMAX"))))
25032506
&& !sportsPlusRower && filter) {
25042507
this->setLastBluetoothDevice(b);

src/qzsettings.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1120,6 +1120,8 @@ const QString QZSettings::applewatch_as_treadmill_speed = QStringLiteral("applew
11201120
const QString QZSettings::horizon_treadmill_omega_z = QStringLiteral("horizon_treadmill_omega_z");
11211121
const QString QZSettings::nordictrack_elliptical_s700 = QStringLiteral("nordictrack_elliptical_s700");
11221122

1123+
const QString QZSettings::care_bike_enable_support = QStringLiteral("care_bike_enable_support");
1124+
11231125
// Zwift Play/Ride per-button gear mapping
11241126
const QString QZSettings::zwiftplay_gear_ls1 = QStringLiteral("zwiftplay_gear_ls1");
11251127
const QString QZSettings::zwiftplay_gear_ls2 = QStringLiteral("zwiftplay_gear_ls2");
@@ -1280,7 +1282,7 @@ const QString QZSettings::default_shortcut_start_stop = QStringLiteral("");
12801282
const QString QZSettings::shortcut_stop = QStringLiteral("shortcut_stop");
12811283
const QString QZSettings::default_shortcut_stop = QStringLiteral("");
12821284

1283-
const uint32_t allSettingsCount = 1002;
1285+
const uint32_t allSettingsCount = 1003;
12841286

12851287
QVariant allSettings[allSettingsCount][2] = {
12861288
{QZSettings::cryptoKeySettingsProfiles, QZSettings::default_cryptoKeySettingsProfiles},
@@ -2307,6 +2309,7 @@ QVariant allSettings[allSettingsCount][2] = {
23072309
{QZSettings::zwiftplay_gear_lb, QZSettings::default_zwiftplay_gear_lb},
23082310
{QZSettings::zwiftplay_gear_rb, QZSettings::default_zwiftplay_gear_rb},
23092311
{QZSettings::freebeat_serialport, QZSettings::default_freebeat_serialport},
2312+
{QZSettings::care_bike_enable_support, QZSettings::default_care_bike_enable_support},
23102313
};
23112314

23122315
void QZSettings::qDebugAllSettings(bool showDefaults) {

src/qzsettings.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3294,6 +3294,9 @@ class QZSettings {
32943294
*/
32953295
static const QString nordictrack_elliptical_s700;
32963296
static constexpr bool default_nordictrack_elliptical_s700 = false;
3297+
3298+
static const QString care_bike_enable_support;
3299+
static constexpr bool default_care_bike_enable_support = false;
32973300

32983301
/**
32993302
* @brief Per-button gear mapping for Zwift Play/Ride controllers.

src/settings-catalog.json

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"$schema": "https://qdomyos-zwift.local/settings-catalog.schema.json",
33
"schemaVersion": 1,
44
"format": "qdomyos-zwift-settings-catalog",
5-
"settingCount": 966,
5+
"settingCount": 967,
66
"pages": [
77
{
88
"key": "page_custom_gear_table",
@@ -13733,6 +13733,19 @@
1373313733
"defaultValue": false,
1373413734
"defaultExpression": "false",
1373513735
"options": null
13736+
},
13737+
{
13738+
"key": "care_bike_enable_support",
13739+
"name": "Enable Support",
13740+
"description": "Treat CARE devices as bikes instead of rowers. Default is off.",
13741+
"parent": "Care Bike Options",
13742+
"type": "boolean",
13743+
"qmlType": "bool",
13744+
"control": "switch",
13745+
"visible": true,
13746+
"defaultValue": false,
13747+
"defaultExpression": "false",
13748+
"options": null
1373613749
}
1373713750
]
1373813751
}

src/settings.qml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1738,6 +1738,7 @@ import AndroidStatusBar 1.0
17381738
property bool waterrower_usb: false
17391739
property string freebeat_serialport: ""
17401740
property bool nordictrack_elliptical_s700: false
1741+
property bool care_bike_enable_support: false
17411742
}
17421743

17431744

@@ -4491,6 +4492,20 @@ import AndroidStatusBar 1.0
44914492
color: Material.color(Material.Lime)
44924493
}
44934494

4495+
AccordionElement {
4496+
id: careBikeAccordion
4497+
title: qsTr("Care Bike Options")
4498+
indicatRectColor: Material.color(Material.Grey)
4499+
textColor: Material.color(Material.Yellow)
4500+
color: Material.backgroundColor
4501+
accordionContent: IndicatorOnlySwitch {
4502+
text: qsTr("Enable Support")
4503+
checked: settings.care_bike_enable_support
4504+
Layout.fillWidth: true
4505+
onClicked: { settings.care_bike_enable_support = checked; window.settings_restart_to_apply = true; }
4506+
}
4507+
}
4508+
44944509
NewPageElement {
44954510
title: qsTr("Wahoo Options")
44964511
indicatRectColor: Material.color(Material.Grey)

tst/Devices/deviceindex.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ DEFINE_DEVICE(SoleF80Treadmill2, "Sole F80 Treadmill 2");
136136
DEFINE_DEVICE(SoleF85Treadmill, "Sole F85 Treadmill");
137137
DEFINE_DEVICE(SpiritTreadmill, "Spirit Treadmill");
138138
DEFINE_DEVICE(SportsPlusBike, "Sports Plus Bike");
139+
DEFINE_DEVICE(CareBike_EnableSupport, "Care Bike (Enable Support)");
139140
DEFINE_DEVICE(SportsPlusRower, "Sports Plus Rower");
140141
DEFINE_DEVICE(SportsTechBike, "Sports Tech Bike");
141142
DEFINE_DEVICE(StagesBike_Assioma_PowerSensorDisabled, "Stages Bike (Assioma / Power Sensor disabled)");

tst/Devices/deviceindex.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ class DeviceIndex
141141
DEFINE_DEVICE(SoleF85Treadmill, "Sole F85 Treadmill");
142142
DEFINE_DEVICE(SpiritTreadmill, "Spirit Treadmill");
143143
DEFINE_DEVICE(SportsPlusBike, "Sports Plus Bike");
144+
DEFINE_DEVICE(CareBike_EnableSupport, "Care Bike (Enable Support)");
144145
DEFINE_DEVICE(SportsPlusRower, "Sports Plus Rower");
145146
DEFINE_DEVICE(SportsTechBike, "Sports Tech Bike");
146147
DEFINE_DEVICE(StagesBike_Assioma_PowerSensorDisabled, "Stages Bike (Assioma / Power Sensor disabled)");

tst/Devices/devicetestdataindex.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1162,6 +1162,12 @@ void DeviceTestDataIndex::Initialize() {
11621162
->expectDevice<sportsplusbike>()
11631163
->acceptDeviceName("CARDIOFIT", DeviceNameComparison::StartsWithIgnoreCase);
11641164

1165+
// Care Bike with support enabled
1166+
RegisterNewDeviceTestData(DeviceIndex::CareBike_EnableSupport)
1167+
->expectDevice<sportsplusbike>()
1168+
->acceptDeviceName("CARE10692135", DeviceNameComparison::IgnoreCase)
1169+
->configureSettingsWith(QZSettings::care_bike_enable_support);
1170+
11651171
// Sports Plus Rower
11661172
RegisterNewDeviceTestData(DeviceIndex::SportsPlusRower)
11671173
->expectDevice<sportsplusrower>()

0 commit comments

Comments
 (0)