Compare commits

...

1871 Commits

Author SHA1 Message Date
Roberto Viola
d157685be4 crossqfile issue
https://github.com/mahdize/CrossQFile/issues/3
2023-03-26 17:56:25 +02:00
Takiora
2a4b58634b Fixing Resistance nordictrackelliptical.cpp (#1375) 2023-03-24 14:46:14 +01:00
Roberto Viola
95cb85fd88 BH Spada 2 bike (i.concept module) #486 2023-03-24 14:36:16 +01:00
Roberto Viola
ff1abb2b9f Zwift OCR for Auto incline on freerun (#1369) 2023-03-23 19:44:02 +01:00
Roberto Viola
aa22225e5e Zwift OCR for Auto incline on freerun (#1369) 2023-03-23 17:04:45 +01:00
Roberto Viola
b6b5d8ecba GEM module inclination added 2023-03-23 15:48:14 +01:00
Roberto Viola
e9be1d8fb2 BH Spada 2 bike (i.concept module) #486 2023-03-22 14:17:07 +01:00
Roberto Viola
5bfa0b3312 Auto-resistance not working properly with tacx neo 2 and peleton app (Issue #1370) 2023-03-22 12:56:14 +01:00
Roberto Viola
7fd491e005 android version 2.13.17 2023-03-22 12:11:26 +01:00
Roberto Viola
0717799d15 Floating Window: start button and disabling auto resistance #1134 2023-03-22 11:08:25 +01:00
Roberto Viola
2c34d9001b added some note on the zwift ocr setting 2023-03-22 11:03:11 +01:00
Roberto Viola
61498cb6ef Zwift OCR for Auto incline on freerun (#1369)
* testing and output

* getting ready to get the inclination

* Update trainprogram.cpp

* Update trainprogram.cpp

* Update ScreenCaptureService.java

* it's working!

* fixing resolution!
2023-03-22 10:25:56 +01:00
Roberto Viola
95ec82b641 Save FIT file when the app is closing (#1346)
* Update homeform.cpp

* -fit-file-saved-on-quit added

* debug log added

* Update qzsettings.cpp

* Update main.cpp
2023-03-21 16:56:12 +01:00
Roberto Viola
c6a34c59d3 BH Spada 2 bike (i.concept module) #486 2023-03-21 08:21:31 +01:00
Roberto Viola
c9d243ab18 QZ won't connect to Norditrack C1750 #1373 2023-03-20 17:28:06 +01:00
Roberto Viola
172440872a n Support for Sole Fitness F85 >2019 treadmill #1243 2023-03-20 16:15:28 +01:00
Roberto Viola
7ccbc07808 fixing android build 2023-03-20 11:18:58 +01:00
Roberto Viola
e02fb8e1c5 Stride in metric when other measures are imperial #1372 2023-03-20 11:17:10 +01:00
Roberto Viola
17b54a1963 Auto-resistance not working properly with tacx neo 2 and peleton app #1370 2023-03-20 10:50:52 +01:00
Roberto Viola
5e7b208c92 BH Spada 2 bike (i.concept module) #486 2023-03-20 10:26:05 +01:00
Roberto Viola
78a652a512 NPE RUNN Inclination Override Not Working #1352 2023-03-19 16:34:49 +01:00
Roberto Viola
9a49ef1e7f BH Spada 2 bike (i.concept module) #486 2023-03-19 16:22:24 +01:00
Roberto Viola
39f92a429a QZCompanion and Wahoo Direct Connect no-gui #1332 2023-03-19 07:46:32 +01:00
Roberto Viola
a70c79f144 WaterRower S4 ComModule #1366 2023-03-17 08:38:20 +01:00
Roberto Viola
278e209670 version 2.13.13 2023-03-16 16:43:48 +01:00
Roberto Viola
9fefde58ac Add support for hometrainer Skandika X-2000 #1364 2023-03-16 16:24:11 +01:00
Roberto Viola
7f26e63cd6 Add support for hometrainer Skandika X-2000 #1364 2023-03-16 15:39:01 +01:00
Roberto Viola
54beb7cc4e fix build error 2023-03-16 08:53:06 +01:00
Roberto Viola
35d7e54871 Open Resistance dropping or going higher when using QZ + Zwift/Rouvy[BUG] #1356 #1299 2023-03-16 08:23:14 +01:00
Roberto Viola
5eb9de8c9b NPE RUNN Inclination Override Not Working #1352 2023-03-16 08:07:35 +01:00
Roberto Viola
0f703cd836 Costaway folding treadmill #1350 (#1355)
* Costaway folding treadmill #1350

first implementation, not finished yet

* Update eslinkertreadmill.cpp
2023-03-15 08:55:00 +01:00
Roberto Viola
9157e39ebd fixing treadmillInclinationOverride 2023-03-14 21:16:16 +01:00
Roberto Viola
e9c76bde99 version 2.13.12 2023-03-14 20:37:42 +01:00
Roberto Viola
1398cb26fb fixing treadmillInclinationOverride 2023-03-14 20:34:55 +01:00
Roberto Viola
35a986fdd0 fixing virtual bike device for strydrunpowersensor 2023-03-14 20:22:03 +01:00
Roberto Viola
3f8aa376a6 version 2.13.11 2023-03-14 10:42:55 +01:00
Roberto Viola
21a3ae6816 Paragon X #1359 2023-03-14 10:42:10 +01:00
Roberto Viola
3da7ac198a Proform Pro22 add #1341 2023-03-14 05:47:27 +01:00
Roberto Viola
36aed6c326 setting tips fonts increased 2023-03-13 08:30:14 +01:00
Roberto Viola
2a02eec288 NPE RUNN Inclination Override Not Working #1352 2023-03-13 08:09:28 +01:00
Roberto Viola
0ca1a8caad Support for ZIPRO Notus (Issue #1344) 2023-03-11 08:00:39 +01:00
Roberto Viola
13ea251697 adding virtual bike to stryd (rouvy abandoned treadmill thing so users want to play with rouvy bike format) 2023-03-11 07:55:13 +01:00
Roberto Viola
9c0757986f WalkingPad #1348 2023-03-10 13:41:33 +01:00
Roberto Viola
81028fc111 iOS version 2.13.7 514 2023-03-10 09:47:51 +01:00
Roberto Viola
1999bbaee0 Support for ZIPRO Notus (Issue #1344) 2023-03-10 09:19:56 +01:00
Roberto Viola
12ad01ddde power calculation for footpods 2023-03-10 09:09:58 +01:00
Roberto Viola
8b79b85f8c Support for ZIPRO Notus (Issue #1344) 2023-03-09 16:09:52 +01:00
Roberto Viola
3e900c1a55 Broadcast cadence & speed to Garmin watch #1316
send power and cadence to garmin device also on android (not tested)
2023-03-09 10:17:43 +01:00
Roberto Viola
5f22107085 Open Support for ZIPRO Notus #1344 2023-03-09 10:04:57 +01:00
Roberto Viola
6354d20bc4 Open Support for ZIPRO Notus #1344
HR added!
2023-03-09 09:54:10 +01:00
Roberto Viola
d1aeb30abb PID not showing right number according to training program (Issue #1234) 2023-03-09 09:48:54 +01:00
Roberto Viola
e2592896c6 Broadcast cadence & speed to Garmin watch #1316 2023-03-09 08:54:19 +01:00
Roberto Viola
d4305fa93a align swift virtual bike from Garmin power sensor over bluetooth #1347 2023-03-09 06:41:32 +01:00
Roberto Viola
cc0051f7c3 it works! 2023-03-09 06:31:54 +01:00
Roberto Viola
56962545d8 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2023-03-08 14:31:08 +01:00
Roberto Viola
7b128d2a8a iOS 2.13.6 2023-03-08 14:30:51 +01:00
Roberto Viola
a228f55a9a Please add total output & time to next as a metric available in the floater window #1321 2023-03-08 14:15:25 +01:00
Roberto Viola
9ec12d5733 Support for ZIPRO Notus #1344 2023-03-08 10:22:23 +01:00
Roberto Viola
f460a9770a Support for ZIPRO Notus #1344 2023-03-08 09:44:35 +01:00
Roberto Viola
49bbbddbe2 PID not showing right number according to training program #1234 2023-03-08 08:29:45 +01:00
Roberto Viola
f1b7daf34b Some tiles data missing from floating window #1247 2023-03-07 10:15:31 +01:00
Roberto Viola
e78434fbb3 Add Google Maps Display when "travelling" imported GPX Files #455
https://github.com/cagnulein/qdomyos-zwift/issues/455#issuecomment-1456871560
2023-03-07 10:04:18 +01:00
Roberto Viola
397dcc7db8 fix typo 2023-03-07 09:24:08 +01:00
Roberto Viola
c2b0ebb882 Solution to get Octane Zero Runner ZR8 Elliptical working with Zwift #1338 2023-03-07 09:01:16 +01:00
Roberto Viola
68a8169e0b 2.13.4 on iOS 2023-03-06 16:45:48 +01:00
Roberto Viola
5611be511f 2.13.5 2023-03-06 12:26:40 +01:00
Roberto Viola
427b63b113 Some tiles data missing from floating window #1247 2023-03-06 12:12:58 +01:00
Roberto Viola
716a256cf4 Some tiles data missing from floating window #12 2023-03-06 12:02:39 +01:00
Roberto Viola
8d123cec1a Horizon Paragon X #637 2023-03-06 11:51:04 +01:00
Roberto Viola
582c260dd9 typo 2023-03-06 10:20:20 +01:00
Roberto Viola
7994c884ea Gear adjustment option within floating window #1336 2023-03-06 10:06:27 +01:00
Roberto Viola
58dbee1e15 Solution to get Octane Zero Runner ZR8 Elliptical working with Zwift #1338 2023-03-06 10:05:03 +01:00
Roberto Viola
5c2483b264 Solution to get Octane Zero Runner ZR8 Elliptical working with Zwift #1338 2023-03-06 09:50:21 +01:00
Roberto Viola
15d94329c2 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2023-03-06 09:21:01 +01:00
Roberto Viola
77de4703d3 Wahoo Kickr Headwind #1281 2023-03-06 09:20:30 +01:00
Takiora
2318531980 Nordictrack_C7.5 (#1337)
* inclination+cadence+resistance+heart+speed ok

* Update nordictrackelliptical.cpp
2023-03-04 16:01:56 +01:00
Roberto Viola
993727d251 Solution to get Octane Zero Runner ZR8 Elliptical working with Zwift #1338 2023-03-04 15:54:11 +01:00
Roberto Viola
128ad2a84b Ability to turn magnet on/off from floater window (Issue #1322) 2023-03-03 08:24:08 +01:00
Roberto Viola
9e8a8a18f2 QZ FIT file start timestamp inconsistent with Zwift (Issue #1311) (#1312) 2023-03-03 07:00:36 +00:00
Roberto Viola
19e05219f5 MatrixTF50 Treadmill #1331 2023-03-02 17:43:48 +01:00
Roberto Viola
58376bff43 Ability to turn magnet on/off from floater window #1322
https://github.com/cagnulein/qdomyos-zwift/issues/1322#issuecomment-1449125738
2023-03-02 13:53:07 +01:00
Roberto Viola
d4518fe018 version 507 for iOS 2023-03-01 16:05:56 +01:00
Roberto Viola
d6258a5774 Low Speed based on calculation on wattage #1325 2023-03-01 12:14:47 +01:00
Roberto Viola
063ab524e6 Allow the resitance knob on echelon bikes to be used to switch gears #1299 2023-03-01 10:36:08 +01:00
Roberto Viola
fbf8fed94d Ability to turn magnet on/off from floater window #1322 2023-03-01 10:14:40 +01:00
Roberto Viola
bbf0ef11d4 iOS Crash when stop pressed #1323 2023-03-01 09:11:20 +01:00
Roberto Viola
1439f5d15a added a protection for the homeform singleton in the templateinfosenderbuilder 2023-02-28 16:47:47 +01:00
Roberto Viola
79aad21d26 fixed homeform singleton 2023-02-28 16:29:31 +01:00
Roberto Viola
062cac38f6 Ability to turn magnet on/off from floater window #1322 2023-02-28 15:57:35 +01:00
Roberto Viola
36046c00ad Please add total output & time to next as a metric available in the floater window #1321 2023-02-28 15:22:33 +01:00
Roberto Viola
8e84d2bf95 Please add total output & time to next as a metric available in the floater window #1321 2023-02-28 14:27:46 +01:00
Roberto Viola
66aaeb5c8b floating: removed target number if 0 2023-02-28 11:56:41 +01:00
Roberto Viola
52c25f5fc7 Update apexbiketestdata.h 2023-02-28 10:12:33 +01:00
Roberto Viola
ec457a18c2 Apex Rides bikes #1230 2023-02-28 09:45:34 +01:00
Roberto Viola
eb00d52512 Apex Rides bikes #1230 2023-02-28 09:27:09 +01:00
Roberto Viola
55ad2dbe3e QZ FIT file start timestamp inconsistent with Zwift #1311 2023-02-28 08:28:21 +01:00
Roberto Viola
2ea9ad2992 Occasional wildly inaccurate distance measurement #1290 2023-02-28 08:07:08 +01:00
Roberto Viola
211024f67f Samsung S22/S23 crash on startup #1320 2023-02-27 17:38:58 +01:00
Roberto Viola
3b7fa4f8a8 Target/Actual Zones on floater #1310 2023-02-27 10:41:36 +01:00
Roberto Viola
e3c0fc933a PID not showing right number according to training program #1234 2023-02-27 09:55:53 +01:00
Roberto Viola
e4d2d7899b PID not showing right number according to training program #1234 2023-02-27 09:41:43 +01:00
Roberto Viola
70e87ac6a3 Elliptical NordicTrack C 7.5 #1277 2023-02-27 09:34:04 +01:00
Roberto Viola
9d6b53586a target inclination added in the floating 2023-02-27 08:14:03 +01:00
Roberto Viola
b35c41a319 target speed added to the floating 2023-02-27 08:02:25 +01:00
Roberto Viola
010d0b0dcc floating.htm clang formatted 2023-02-27 07:55:32 +01:00
Roberto Viola
a31c926a1a fixed cadence in the floating window for device different from bike 2023-02-27 07:49:34 +01:00
Roberto Viola
94c03ba9b4 Allow the resitance knob on echelon bikes to be used to switch gears #1299 2023-02-26 22:43:55 +01:00
Roberto Viola
bce965c6d6 Domyos EL 520 auto resistance #1252 2023-02-26 08:50:24 +01:00
Roberto Viola
74e5e04f0c Issue with Peloton ride 1/21/23 (Issue #1315) 2023-02-25 19:45:14 +01:00
Roberto Viola
159611da89 YPOO treadmill #1306 2023-02-25 03:14:15 +01:00
Roberto Viola
8cb9d24261 Indicate n/a for speeds too low for Pace calculation (Issue #1293) 2023-02-25 02:54:14 +01:00
Roberto Viola
74cc93b91e Elliptical NordicTrack C 7.5 (Issue #1277) 2023-02-24 14:54:41 +01:00
Roberto Viola
85d622a1e3 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2023-02-24 14:44:25 +01:00
Roberto Viola
9967550a41 Beta 2.12(498) - Incline Step : Per Facebook #1303 2023-02-24 13:37:03 +01:00
Roberto Viola
bf41d8f1d7 Update treadmill.cpp 2023-02-24 07:39:26 +01:00
Roberto Viola
f4999e3233 YPOO treadmill #1306 2023-02-23 16:28:05 +01:00
Roberto Viola
2b01877a7c Beta 2.12(498) - Incline Step : Per Facebook #1303 2023-02-23 16:12:01 +01:00
Roberto Viola
d985b9a477 Elliptical NordicTrack C 7.5 #1277 2023-02-23 15:55:19 +01:00
Roberto Viola
960aa7a17b Display step cadence on main app #1242 2023-02-23 12:04:23 +01:00
Roberto Viola
42e7c3481e Allow the resitance knob on echelon bikes to be used to switch gears #1299 2023-02-23 09:27:31 +01:00
Roberto Viola
7404128eba Elliptical NordicTrack C 7.5 #1277 2023-02-23 08:25:38 +01:00
Roberto Viola
f81f5354f6 2.12.72 2023-02-22 16:41:29 +01:00
Roberto Viola
b3e588cff5 Beta 2.12(498) - Incline Step : Per Facebook (Issue #1303) 2023-02-22 16:27:18 +01:00
Roberto Viola
a39597765c 2.12.71 2023-02-22 14:59:52 +01:00
Roberto Viola
28f4bb04da Beta 2.12(498) - Incline Step : Per Facebook #1303 2023-02-22 14:20:22 +01:00
Roberto Viola
80ab7a3877 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2023-02-22 14:12:58 +01:00
Roberto Viola
5fcd1233c1 Cadence not showing #1302 2023-02-22 14:12:55 +01:00
Roberto Viola
b894906f48 Strava Auth Webview (#1296)
* test needed

* linker error

* removing static for linker error

* signals fixed

* Update Home.qml

* Update main.qml

* fixing anchors

* using a separate qml

* Update WebStravaAuth.qml

* Update WebStravaAuth.qml

* added setting to fallback to previous

* removed unused import
2023-02-22 14:04:19 +01:00
Roberto Viola
f998d7123f Preset tiles colour setting doesn't work, crashes [BUG] #1301 2023-02-22 13:46:35 +01:00
Roberto Viola
35c4ecc781 Elliptical NordicTrack C 7.5 #1277 2023-02-22 11:28:50 +01:00
Roberto Viola
c98e0db8b0 Technogym myrun cadence but no stride length #1260 2023-02-22 11:01:01 +01:00
Roberto Viola
0eead667a3 Indicate n/a for speeds too low for Pace calculation #1293 2023-02-22 10:57:14 +01:00
Roberto Viola
759dcf37c7 dynamic text recognition for amazon app store 2023-02-22 06:39:40 +01:00
Roberto Viola
4f79679601 Noble Pro Elite e8i treadmill #1298 2023-02-21 21:34:28 +01:00
Roberto Viola
a834e6ea14 adding the mlkit text recogniton library for amazon app store 2023-02-21 20:22:19 +01:00
Roberto Viola
325963327e version 2.12.70 2023-02-21 15:22:39 +01:00
Roberto Viola
ef96f05127 Domyos EL 520 auto resistance #1252 2023-02-21 15:07:36 +01:00
Roberto Viola
d836883fc3 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2023-02-21 11:05:52 +01:00
Roberto Viola
4abb1be184 Elliptical NordicTrack C 7.5 #1277 2023-02-21 11:05:42 +01:00
Roberto Viola
8af0ca3350 Google Test on CI (#1148)
* Update main.yml

* Update main.yml

* Update main.yml

* fixing bluetooth scan thanks to tests!

* Update main.yml

* Update main.yml

* Update main.yml

* Update main.yml
2023-02-21 11:03:18 +01:00
David Mason
c16e113290 #1294 additional compiler option in Windows to avoid "File too big" error (#1295) 2023-02-21 06:40:34 +01:00
Roberto Viola
6e92bcece2 Kickr connection not showing watts (Issue #1229) 2023-02-21 06:37:43 +01:00
Roberto Viola
f71a393c2b noblepro connect to fitshow treadmill 2023-02-20 22:32:11 +01:00
Roberto Viola
015bf842b0 Domyos 500b self powered rower (Issue #1238) 2023-02-20 22:08:17 +01:00
Roberto Viola
cde122089e Nordictrack Incline Trainer x7i #1284 2023-02-20 14:23:21 +01:00
Roberto Viola
709ead19a3 Sole S77 Support #1283 2023-02-20 13:28:07 +01:00
David Mason
8b4fe10f87 #1287 unit test fixes (#1288)
* #1287 unit test fixes

* #1287 made test name values more user friendly, after all, they aren't actually the test name identifier anymore.
2023-02-20 08:45:39 +01:00
Roberto Viola
74d69f5d8f Kickr connection not showing watts #1229 2023-02-20 08:35:38 +01:00
Roberto Viola
d7a8caa24c Sunny Health Fitness Smart Multifunction Magnetic Rowing Machine SF-RW5941SMART #1289 2023-02-20 08:22:22 +01:00
Roberto Viola
803291ba43 TREADMILL NORDIC TRACK 2950 #1278 2023-02-20 08:16:23 +01:00
Roberto Viola
38f53fd1bf Sole S77 Support (Issue #1283) 2023-02-20 07:56:52 +01:00
Roberto Viola
3d310bfd14 fixing double issue for the color of the resistance 2023-02-19 14:24:26 +01:00
Roberto Viola
5cdad64d9c cadence missing in the floating window for treadmill and elliptical 2023-02-19 08:34:07 +01:00
Roberto Viola
d3c2d15fc3 Sole S77 Support (Issue #1283) 2023-02-19 08:32:10 +01:00
Roberto Viola
794cda41cc license on apk 2023-02-18 18:00:51 +01:00
Roberto Viola
330359c446 Kickr connection not showing watts (Issue #1229) 2023-02-18 06:55:10 +01:00
Roberto Viola
c75906f766 disable_hr_frommachinery setting for fitshow treadmill 2023-02-18 06:42:06 +01:00
Roberto Viola
a2d9994608 version 2.12.67 2023-02-17 15:13:58 +01:00
Roberto Viola
0a01f62f79 Missing event_type start in Fit Export #1279 2023-02-17 15:09:13 +01:00
Roberto Viola
8888639bef DYNAMAX treadmill added 2023-02-17 15:04:20 +01:00
Roberto Viola
5a114a7f8f Renpho. Auto resistance with only whole numbers #1245 2023-02-17 11:23:14 +01:00
Roberto Viola
53717078b9 Missing event_type start in Fit Export #1279 2023-02-17 10:57:05 +01:00
Roberto Viola
d2c94da6bf Kickr connection not showing watts #1229 2023-02-17 08:14:10 +01:00
Roberto Viola
320a40c65c NPE Runn Incline Data #1276 2023-02-17 07:31:31 +01:00
Roberto Viola
9efb573f83 version 2.12.65 2023-02-16 19:00:21 +01:00
Roberto Viola
072024cee1 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2023-02-16 18:56:07 +01:00
Roberto Viola
bf692fbcc0 Nordictrack Incline Trainer added (not tested yet) 2023-02-16 11:29:20 +01:00
Roberto Viola
2909a61a94 added disabling auto resistance handling to ftmsbike 2023-02-16 07:56:22 +01:00
Roberto Viola
c06dc9c332 NPE Runn Incline Data #1276 2023-02-16 07:52:29 +01:00
Roberto Viola
85ee8fae3c 2.12.64 2023-02-15 13:35:03 +01:00
Roberto Viola
0f3f5d7db3 Update wahookickrsnapbike.cpp 2023-02-15 10:00:29 +01:00
Roberto Viola
5d34e2e6eb Missing event_type start in Fit Export #1279 2023-02-15 09:58:15 +01:00
Roberto Viola
679fec7e69 Lap Issue #1102 2023-02-14 15:40:04 +01:00
Roberto Viola
1cd68457a9 Elliptical NordicTrack C 7.5 #1277 2023-02-14 09:48:27 +01:00
Roberto Viola
065494ae43 Fixed treadmill incline #1273 2023-02-14 08:58:05 +01:00
Roberto Viola
c59ee00d3e NPE Runn Incline Data #1276 2023-02-14 08:46:51 +01:00
Roberto Viola
d504812655 Domyos EL 520 auto resistance #1252 2023-02-14 08:30:08 +01:00
Roberto Viola
06110e808d Strava Activity Walking when average speed is under 6.5 km/h #1275 2023-02-13 15:13:11 +01:00
Roberto Viola
c27e7353b7 Train Program: HR Min and Max #1271 2023-02-13 11:43:30 +01:00
Roberto Viola
38ca4cbf33 Rhythm 24 HRM cadence and heart rate sensor 2023-02-13 10:34:34 +01:00
Roberto Viola
f86604d7b2 Auto Resistance from Zwift-QZ is not working on Proform Hybrid #1172 2023-02-13 10:11:07 +01:00
Roberto Viola
7309df034e Kickr connection not showing watts #1229 2023-02-13 09:56:06 +01:00
Roberto Viola
16180689ac Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2023-02-13 08:55:39 +01:00
Roberto Viola
880a8708f0 Domyos Elliptical EL 520 Power Calibration #1267 2023-02-13 08:55:31 +01:00
Roberto Viola
fbc68c5487 version 2.12.62 2023-02-11 09:11:07 +01:00
Roberto Viola
1540fd4fe3 Domyos EL500 Gears [BUG] (Issue #1263) 2023-02-11 09:02:29 +01:00
Roberto Viola
9855b9e76f Kickr connection not showing watts #1229 2023-02-10 15:15:16 +01:00
Roberto Viola
3ba1eaf92a Technogym myrun cadence but no stride length (Issue #1260) 2023-02-10 15:08:38 +01:00
Roberto Viola
474d519d85 Matching QZ Speed to Zwift Speed using Zwift Workout files (.zwo) (Issue #1209) 2023-02-10 14:08:20 +01:00
Roberto Viola
3e8bbf57d2 Auto Resistance from Zwift-QZ is not working on Proform Hybrid #1172 2023-02-10 08:59:44 +01:00
Roberto Viola
80f6a5a9ee Revert "Auto Resistance from Zwift-QZ is not working on Proform Hybrid #1172"
This reverts commit 7191141177.
2023-02-10 08:42:21 +01:00
Roberto Viola
c1c1a07cd9 cardiostrang TX90 smart treadmill #1251 2023-02-10 08:23:37 +01:00
Roberto Viola
369eb4d101 Kickr connection not showing watts #1229 2023-02-10 08:21:04 +01:00
Roberto Viola
115bdc1cb2 Kickr connection not showing watts #1229 2023-02-09 15:49:46 +01:00
Roberto Viola
3b6b5a6721 Renpho. Auto resistance with only whole numbers #1245 2023-02-09 11:21:53 +01:00
Roberto Viola
24b680ca12 removed email from debug log 2023-02-08 17:27:44 +01:00
Roberto Viola
7c53a16e38 Horizon Paragon X not able to control through qz (Issue #1256) 2023-02-08 15:38:14 +01:00
Roberto Viola
0eabe10ea1 Matching QZ Speed to Zwift Speed using Zwift Workout files (.zwo) (Issue #1209) 2023-02-08 15:26:42 +01:00
Roberto Viola
c92b702b2e Debug log using qdomyos on a proform Tour de France 10.0 bike #877
https://github.com/cagnulein/qdomyos-zwift/issues/877#issuecomment-1422555720
2023-02-08 14:08:56 +01:00
Roberto Viola
9068e82ae3 Tiles not displaying data for Sole e55 elliptical (#1240) 2023-02-08 13:56:51 +01:00
Roberto Viola
77ebbe7c6d Domyos EL 520 auto resistance #1252 2023-02-08 10:46:18 +01:00
Roberto Viola
8ec760855e Jumping Resistance on Schwinn IC8 (Issue #1236) 2023-02-08 09:59:25 +01:00
Roberto Viola
5d1b399fa6 Incline Override (Issue #1244) 2023-02-07 23:21:59 +01:00
Roberto Viola
b6ebeadae2 fix build error on iOS 2023-02-07 18:53:07 +01:00
Roberto Viola
c43dfaeb1f Lap Issue #1102 2023-02-07 17:16:23 +01:00
Roberto Viola
0f6caeff8a Winfita (T532) Treadmill Incline Levels Table for Calculations, etc. #1244 (#1253)
* settings added

* done
2023-02-07 15:17:53 +01:00
Roberto Viola
7191141177 Auto Resistance from Zwift-QZ is not working on Proform Hybrid #1172 2023-02-07 14:56:04 +01:00
Roberto Viola
256981dff7 adding adb for windows for nordictrack treadmill (#1167)
* start adding adb for windows for nordictrack treadmill #1153

* adding adb to package

* Update main.yml

* Update main.yml

* fixing file path

* fixing file name

* avoiding searching for bluetooth for wifi devices

* using adb pull to get the logs

* Update nordictrackifitadbtreadmill.cpp

* fixing open file issue

* Update nordictrackifitadbtreadmill.cpp

* Update nordictrackifitadbtreadmill.cpp

* adb on a thread

* thread error

* trying to get log emulating the tail command

* trying logcat directly

* using logcat only!
2023-02-07 09:00:08 +01:00
Roberto Viola
ac8e295322 Joroto x2pro #1239 2023-02-07 08:34:50 +01:00
Roberto Viola
d772ae85bf filering watch device #110 2023-02-07 08:17:13 +01:00
Roberto Viola
83180f37ce target power on echelon #1198 2023-02-07 08:09:47 +01:00
Roberto Viola
af695b0aab Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2023-02-07 07:52:42 +01:00
Roberto Viola
68bf628cf3 cardiostrang TX90 smart treadmill #1251 2023-02-07 07:52:33 +01:00
Roberto Viola
c631511fc9 Display step cadence on main app #1242 2023-02-06 16:30:24 +01:00
Roberto Viola
7a0ac82f0d Display step cadence on main app #1242 2023-02-06 16:18:08 +01:00
Roberto Viola
f90e980a62 Horizon Paragon X #637 2023-02-06 15:34:55 +01:00
Roberto Viola
03b871143a Jumping Resistance on Schwinn IC8 #1236 2023-02-06 09:26:32 +01:00
Roberto Viola
c374cbeace Matching QZ Speed to Zwift Speed using Zwift Workout files (.zwo) (Issue #1209) 2023-02-05 18:32:24 +01:00
Roberto Viola
df55d648c9 Wahoo Kickr compatibity #442 #1229 2023-02-04 06:33:54 +01:00
Roberto Viola
d18a2ebe38 version 2.12.59 2023-02-03 15:42:43 +01:00
Roberto Viola
bca55a68a1 Getting peloton timestamp #1224 (#1225)
* Getting peloton timestamp #1224

crash on start service

* screenshot works!

* OCR implementation done!

* OCR implemented, not tested

* linker fix

* fixing linking error

* fix compile error

* Update ScreenCaptureService.java

* fixing android build

* it's working at least for a minute!

* some optimizations, working

* memory leak fixed

* working like a charm! super stable!

* peloton logic added, not tested

* added AppChecker

* Update AndroidManifest.xml

* adding also landscape recognizer

* Update MediaProjection.java

* Update MediaProjection.java

* Update MediaProjection.java

* Update MediaProjection.java

* peloton bike added!

* peloton bike ocr works

* peloton bike doesn't require location services (don't know if it's available)

* added androidadblog class

* getting package name

* removing previewtrainingprogram when a program is correctly loaded

* it's working!
2023-02-03 15:40:38 +01:00
Roberto Viola
a34d880ef3 FTMS Treadmill inclination timeout issue #1237 2023-02-03 12:24:32 +01:00
Roberto Viola
1b07564429 Jumping Resistance on Schwinn IC8 #1236 2023-02-02 15:48:23 +01:00
Roberto Viola
53fd346348 Jumping Resistance on Schwinn IC8 #1236 2023-02-02 15:32:13 +01:00
Roberto Viola
11e037dd84 Max Resistance #1219 2023-02-02 12:09:19 +01:00
Roberto Viola
0869ad36c5 Max Resistance #1219 2023-02-02 11:54:57 +01:00
Roberto Viola
334e0cfd25 Auto Resistance from Zwift-QZ is not working on Proform Hybrid #1172 2023-02-02 11:49:11 +01:00
Roberto Viola
d2af89f693 BUG] Kickr connection not showing watts #1229 2023-02-02 11:24:58 +01:00
Roberto Viola
2f832c65ed Matching QZ Speed to Zwift Speed using Zwift Workout files (.zwo) #1209
math issue
2023-02-02 11:01:49 +01:00
Roberto Viola
cb087ea4be Matrix T50 Treadmill #1235 2023-02-02 08:18:16 +01:00
Roberto Viola
72df934997 Wrong speed after update QZ on 31 Jan 2023 #1233 2023-02-02 08:13:30 +01:00
Roberto Viola
349b525295 add canStartStop method to the treadmills 2023-02-01 10:56:09 +01:00
Roberto Viola
3e58c2d681 Open Matching QZ Speed to Zwift Speed using Zwift Workout files (.zwo) #1209 2023-02-01 10:31:25 +01:00
Roberto Viola
e7748f943c Sprint XBR555 #1231 2023-02-01 08:25:39 +01:00
Roberto Viola
03a755ee36 fixing minor on #1134 2023-01-31 12:08:46 +01:00
Roberto Viola
9ad1821194 Differences in the GPX starting point (Issue #988)
scaling down the pin
2023-01-31 10:33:05 +01:00
Roberto Viola
04b16b5849 Floating Window: start button and disabling auto resistance (Issue #1134) 2023-01-31 10:30:54 +01:00
Roberto Viola
12c16b9634 Floating Window: start button and disabling auto resistance #1134 2023-01-30 10:56:45 +01:00
Roberto Viola
4034109195 Proform Hybrid Trainer XT connects but data seems inaccurate. #1138 2023-01-30 10:03:31 +01:00
Roberto Viola
5355b43cdf Virtual Echelon: distance is wrong in miles #1226 2023-01-30 09:26:15 +01:00
Roberto Viola
ecbb40a375 Winfita treadmill #1214 2023-01-30 08:30:19 +01:00
Roberto Viola
6235d00c55 android version 2.12.55 2023-01-28 20:59:46 +01:00
Roberto Viola
bff9f1a0a2 Floating Window: start button and disabling auto resistance #1134 2023-01-28 20:49:39 +01:00
Roberto Viola
ecc6306b7d Winfita treadmill #1214 2023-01-28 17:24:22 +01:00
Roberto Viola
e9856d8b42 Fixing Android CI (#1216)
* trying to use java 9

* Update main.yml

* Update gradle-wrapper.properties

* Update gradle-wrapper.properties

* Update main.yml

* Update gradle-wrapper.properties

* Update main.yml

* Update main.yml
2023-01-28 17:01:56 +01:00
Roberto Viola
099bbf7d9c Proform Hybrid Trainer XT connects but data seems inaccurate. (Issue #1138) 2023-01-28 08:03:18 +01:00
Roberto Viola
ba462a4d10 Proform Hybrid Trainer XT connects but data seems inaccurate. #1138 2023-01-28 07:25:30 +01:00
Roberto Viola
f953335bd2 Proform Hybrid Trainer XT connects but data seems inaccurate. (Issue #1138) 2023-01-27 14:18:07 +01:00
Roberto Viola
3e60e0bd91 Add elevation gain to iOS for treadmill #1218 2023-01-27 14:10:40 +01:00
Roberto Viola
3e98e548be Merge pull request #1210 from cagnulein/Floating-Window-start-button-and-disabling-auto-resistance#1134
Floating Window: start button and disabling auto resistance #1134
2023-01-27 09:15:21 +01:00
Roberto Viola
8021055345 start stop pause on floating 2023-01-27 09:12:33 +01:00
Roberto Viola
3fdf890474 Merge branch 'master' into Floating-Window-start-button-and-disabling-auto-resistance#1134 2023-01-27 08:07:12 +01:00
Roberto Viola
53e4e58c3f Winfita treadmill #1214 2023-01-27 07:56:57 +01:00
punk-kaos
ad37d26815 Fix resistance auto tracking values for Proform Hybrid Trainer XT. (#1211) 2023-01-25 18:58:52 +01:00
Roberto Viola
a59321e7b8 Floating Window: start button and disabling auto resistance #1134 2023-01-25 15:08:43 +01:00
Roberto Viola
e203fdaa67 Training Program Random Option INT? #1152 2023-01-25 10:09:32 +01:00
Roberto Viola
81b95ac080 Open Proform Hybrid Trainer XT connects but data seems inaccurate. #1138 2023-01-25 08:35:47 +01:00
David Mason
3ce3719630 Test updates 1197 (#1208) 2023-01-24 22:03:16 +01:00
Roberto Viola
5eaac9e509 Proform Hybrid Trainer XT connects but data seems inaccurate. (Issue #1138) 2023-01-24 19:40:50 +01:00
Roberto Viola
65adba7285 Specify profile to use via cmd-line #1189 (#1190)
* Specify profile to use via cmd-line #1189

* added  + ".qzs" to the filename

* fixed and tested
2023-01-24 16:00:18 +01:00
Roberto Viola
03aadfa864 Proform Cycle Trainer 400 Ri #1203 2023-01-24 11:53:01 +01:00
Roberto Viola
b3a83c13b3 Proform Hybrid Trainer XT connects but data seems inaccurate. #1138 2023-01-24 09:20:18 +01:00
Roberto Viola
a92e43ba4d peloton offset on floating is changing 3 seconds at once #1206 2023-01-24 08:50:28 +01:00
Roberto Viola
bbf2fd54f3 Treadmill Sportsmaster T300 originally manufactured by DK City (T800 is the name used by DK City) #1204 2023-01-23 16:42:26 +01:00
Roberto Viola
2b110e7d9c Proform Hybrid Trainer XT connects but data seems inaccurate. #1138 2023-01-23 14:27:02 +01:00
Roberto Viola
ac3f2dd7f9 Floating Window - km to mph (Issue #1201) 2023-01-23 09:31:38 +01:00
Roberto Viola
afda87f2b3 Sole ST90 Treadmill #1202 2023-01-23 08:11:21 +01:00
Roberto Viola
2689b01159 Sole SB700 #1196 2023-01-21 20:14:46 +01:00
Roberto Viola
28c69284cf Update settings.qml 2023-01-21 19:03:36 +01:00
Roberto Viola
606aa28231 ERG Mode Stops Auto-Adjusting Resistance after beginning of workout [BUG] #1194 2023-01-21 18:53:14 +01:00
Roberto Viola
26e25914db BH iBoxster Plus doesn’t work #1185 2023-01-21 12:15:16 +01:00
Roberto Viola
6d83d67ec3 BH iBoxster Plus doesn’t work #1185 2023-01-21 08:43:56 +01:00
Roberto Viola
aad68cb1b9 description added to the settings 2023-01-20 11:40:23 +01:00
Roberto Viola
959b2e1663 Increase speed on treadmill for the Peloton app for the whole run as upper is too fast and average is too slow #1091 2023-01-20 10:25:22 +01:00
Roberto Viola
48b247fed6 Proform Hybrid Trainer XT connects but data seems inaccurate. #1138 2023-01-20 09:43:38 +01:00
Roberto Viola
a575776ea7 Strange behavior with HR training programs #1182 2023-01-20 08:50:41 +01:00
Roberto Viola
a394c7d075 second wave of descrptions in the settings 2023-01-19 15:52:49 +01:00
Roberto Viola
1efad04a7c first wave of comments in the settings 2023-01-19 14:41:59 +01:00
Roberto Viola
d6418d199f Treadmill Workouts All Labeled as Run in Strava #1130 2023-01-19 08:05:16 +01:00
Roberto Viola
6915494594 version 2.12.49 2023-01-18 20:55:37 +01:00
Roberto Viola
44b278173d sportstech sx600 connection but no data #1116 2023-01-18 20:52:47 +01:00
Roberto Viola
621de55f67 Home Fitness Buddy classes with the same date. needs to check the pel… (#1179)
* Home Fitness Buddy classes with the same date. needs to check the peloton class id #1176

work in progress to test and fix

* fixed

* removing debug

* Update main.cpp
2023-01-18 20:48:13 +01:00
mo1425z
11f347276c #1177 Fixing Grammar and details on home form (#1178) 2023-01-18 20:40:09 +01:00
Roberto Viola
d165382960 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2023-01-18 16:50:00 +01:00
Roberto Viola
819ecaf133 Power Zone Desync investigation #1175 2023-01-18 16:49:52 +01:00
Roberto Viola
b744ceb731 Target resistance tiles are toggled off in settings. (Issue #1162) 2023-01-18 11:47:40 +01:00
Roberto Viola
d706314802 Back character missing from title bar #1163 2023-01-18 11:33:17 +01:00
Roberto Viola
c9e5c2f065 Floating Window - Resistance (Echelon) stat appears even if Resistance & Target resistance tiles are toggled off in settings. (Issue #1162) 2023-01-18 11:10:02 +01:00
Roberto Viola
eadaf62064 sportstech sx600 connection but no data #1116
merging ftms with fitplus
2023-01-18 10:20:46 +01:00
Roberto Viola
ca9ada6d83 windows workaround for cscbike 2023-01-18 07:49:18 +01:00
Roberto Viola
aa9948b4ba Saris trainer #1173 2023-01-18 07:22:22 +01:00
Roberto Viola
07a301f53c steam rejected qz from their store 2023-01-18 07:07:45 +01:00
Roberto Viola
984a6395d0 Horizon treadmill miss some frames in the init #1108 2023-01-18 07:06:02 +01:00
Roberto Viola
50361e2b4f jtx_fitness_sprint_treadmill beeps everytime qz sends a inclination request. let's limit to 0.5 2023-01-17 20:50:26 +01:00
punk-kaos
fb6478324b Update Proform Hybrid XT resistance settings to (mostly) proper bluetooth values. (#1170) 2023-01-17 20:15:25 +01:00
Roberto Viola
048edf2022 fixing target tiles boolean on the floating 2023-01-16 22:20:47 +01:00
Roberto Viola
0985816c20 Floating window - Peloton Offset always appears even if that tile is disabled. (Issue #1161) 2023-01-16 22:15:06 +01:00
Roberto Viola
95e7ca1f6b Floating Window - Resistance (Echelon) stat appears even if Resistance & Target resistance tiles are toggled off in settings. #1162 2023-01-16 20:37:13 +01:00
Roberto Viola
f30e141d3f Support of Kingsmith WR1 rowing device (Issue #1118) 2023-01-16 16:37:02 +01:00
Roberto Viola
0bd4232d24 Support of Kingsmith WR1 rowing device (Issue #1118) not tested yet 2023-01-16 16:07:31 +01:00
Roberto Viola
f56b12ae85 Proform Hybrid Trainer XT connects but data seems inaccurate. (Issue #1138) 2023-01-16 15:02:27 +01:00
Roberto Viola
d98fccdf5a version 2.12.44 2023-01-16 14:07:03 +01:00
Roberto Viola
13b62ab0d0 Debug log using qdomyos on a proform Tour de France 10.0 bike #877 2023-01-16 14:03:58 +01:00
Roberto Viola
a20f73dc1b fixed empty charts if the previous session was stopped #857 2023-01-16 12:22:31 +01:00
Roberto Viola
dd84d2ce04 sportstech sx600 connection but no data #1116 2023-01-16 12:05:24 +01:00
Roberto Viola
b304505a1b Bowflex T6 treadmill #1064 2023-01-16 11:59:27 +01:00
Roberto Viola
c6c2717bb5 tile disabled fixed 2023-01-16 10:00:06 +01:00
Roberto Viola
61e539c822 sportstech sx600 connection but no data #1116 2023-01-16 09:26:35 +01:00
Roberto Viola
5cfb8141af Training Program Random Option INT? #1152 2023-01-15 10:21:06 +01:00
Roberto Viola
bb03d1c36a What are the available values to use in the training program xml? #1149 2023-01-15 09:00:37 +01:00
Roberto Viola
59c4249741 Support of Kingsmith WR1 rowing device (Issue #1118) 2023-01-15 08:56:31 +01:00
Roberto Viola
a44f52995d Echelon Stride treadmill stays in 'app' mode after the app has been closed (iOS keeps the connection alive) #1155 2023-01-15 08:37:12 +01:00
David Mason
ac2848cb55 Build corrections 1150 (#1156) 2023-01-15 07:02:52 +01:00
Roberto Viola
e8169806f9 fixing android build 2023-01-13 10:36:05 +01:00
Roberto Viola
8295ad654b Update settings.qml 2023-01-13 09:36:20 +01:00
Roberto Viola
6abcf8e536 Make Gears setting permanent (Issue #1146) 2023-01-13 09:21:24 +01:00
Roberto Viola
8161aae3da Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2023-01-13 09:02:04 +01:00
Roberto Viola
36c1933192 Proform Hybrid Trainer XT connects but data seems inaccurate. #1138 2023-01-13 09:02:01 +01:00
Roberto Viola
0508d26796 Update 20_supported_devices_and_applications.md 2023-01-13 08:13:28 +01:00
Roberto Viola
67d2292680 Sole Elliptical: Apple Watch not connecting #1120 2023-01-13 08:04:49 +01:00
Roberto Viola
873c4e8b72 Saris H3 #1147 2023-01-13 07:55:44 +01:00
David Mason
1a3a10f636 #1144 added tests for Thinkrider X5, Noblepro treadmill. (#1145) 2023-01-13 06:51:19 +01:00
Roberto Viola
a876959e79 fixing CI Steam 2023-01-12 07:38:57 +01:00
Roberto Viola
138af1514a fixing CI steam 2023-01-12 07:00:51 +01:00
David Mason
c9ec71ae02 Automated testing with Google Test #911 (#1111)
* #911 new branch with a very basic google test. Needs google test downloaded into /google_test. Will probably set up another submodule at some point.

* #911 added google test as a submodule

* Attempt to get lib and test project to build in action

* #911 trying to get submodule checkout to work

* #911 trying to get Linux build to happen

* #911 added header include

* #996 put the values from settings read for device discovery into a class

* #996 moved the enormous if statement for device detection to a method.

* #996 split device detection into detection and bluetoothdevice object creation

* #996 return the created object (but don't use it)

* #996 factored out starting of template managers into a single location

* #911 beginning of 2 device detection tests using google test

* #911 removed unnecessary #pragma once

* #996 put new classes into separate files. Added exclusions to devicediscoveryinfo to replicate current production behaviour

* #996 comments on functions

* #911 latest work. Tests crash in Windows.

* #911 2 device detection tests working

* #911 added test data classes for remaining devices

* #911 missed file

* #911 tests build and run. Most fail due to incomplete config.

* #911 filled in details for some of the device tests

* #911 filled in vast majority of test data. Doesn't build, and some obscure situations yet to be done.

* #911 use template method instead

* #911 builds, some tests failing

* #911 fixed some tests.

* #911 device identification tests passing to the currently possible extent, pending feedback.

* #911 start of work testing device object creation

* #911 got bluetoothdevice object creation tests working

* #911 added manufacturer data for m3i bike test, and fixed case sensitivity of m3i bike test.

* #911 added ability to specify and test multiple settings configurations

* #911 fixed typos

* #911 parameterized version

* #911 fixed file name to match class

* #911 added version using typed tests. Refactored to share basic test code from original test suite.

* #911 added googletest submodule to the documentation

* #911 rework to match current functioning of the bluetooth class, instead of the result of current work on #996.

* #911 updated for changes in master. Still doesn't actually work.

* #911 added configuration of test QSettings.

QSettings are probablly not set up properly, but the tests actually run now, but many fail.

* #911 added test settings facility

This enables the developer to override the default QSettings for the life of a test suite.

* #911 start tests with default settings.

* #911 got exclusions working

At least, where the bluetoothdevice object can actually work.

* #911 skip abstract devices

* #911 removed some unused code

* #911 removed unused file

* #911 include app project in main project

* #911 updated for latest device detection code

* #911 added submodule checkout of googletest to Android build

* #911 run qmake from the root in android build

* #911 adjusted test names and made the test for the invalid bluetooth device info test with enabling and disabling settings.

* #911 enabled the test for non-detection with invalid names

* #911 fixed test

* #911 updated comments

* #911 moved devicediscoveryinfo to the testing project

* #911 move devicediscoveryinfo to the test project

* #911 removed a unused class

* #911 removed unused file

* #911 modify correct object

* #911 modify correct object

* #911 removed irrelevant comment

* adding ls to locate llvm-arm

* debugging github actions

* Update main.yml

* #911 try being more specific about tst project dependency

* trying linking llvm-ar

* debugging llvm

* adding alias to llvm-ar

* enabling aliases

* Update main.yml

* maybe the last one for fixing CI?

* #911 see how the CI builds go without the app project

* #911 restored app project to root project

* trying to move the alias just before the make process

* trying to use NDK_LLVM_PATH

* trying set AR variable

* seems to be the right way

* fixing test m3i

* updating version aligned with the master

* #911 moved some definitions to defaults.pri

* #911 adjusted test case for adjusted detection rule

* #911 adjusted relative path

* #911 try adding toolchain/bin to path

* #911 revert previous change and show the PATH

* #911 fixed yml file

* #911 restored previous working yml file

* #911 show the PATH

* #911 moved some android related content to the shared defaults.pri

* #911 ignore the test and lib projects in an Android build

* #911 restore yml without AR specified

* #911 updated for the "TOORX" option for Horizon Treadmill

* #911 added test for the new detection criteria for Horizon Treadmill (TOORX)

* #911 added test for Kingsmith WR1 rowing device

* #911 added test cases for Toorx experience etc

* #911 added test case for FTMS Bike named KICKR CORE

* #911 simplified setup of multiple detection configs

* #911 further simplification of test config setup

* version aligned with master

Co-authored-by: Roberto Viola <cagnulein@gmail.com>
2023-01-12 06:30:40 +01:00
Roberto Viola
e10e7e5cc7 peloton offset fixed in the floating window 2023-01-12 06:15:24 +01:00
Roberto Viola
e7ea68e766 Steam Store (#1140) 2023-01-11 17:45:56 +01:00
Roberto Viola
2ccdbb1336 thinkrider X5 trainer bike #1142 2023-01-11 16:15:11 +01:00
Roberto Viola
c3c43991f2 Zwift not seeing Renpho #1141 2023-01-11 14:36:31 +01:00
Roberto Viola
ef135f1ffe Sole Elliptical: Apple Watch not connecting #1120 2023-01-11 10:25:27 +01:00
Roberto Viola
3294c9284b NoblePro treadmill #1139 2023-01-11 09:59:42 +01:00
Roberto Viola
9f287ca8c7 Support of Kingsmith WR1 rowing device #1118 2023-01-10 09:49:27 +01:00
Roberto Viola
cbacce66ca sportstech sx600 connection but no data #1116 2023-01-10 08:14:42 +01:00
Roberto Viola
dac3a5323e Bowflex T6 treadmill #1064 2023-01-09 16:55:39 +01:00
Roberto Viola
d486d7e2a0 Floating window: target tiles and peloton offset #1136 2023-01-09 16:30:22 +01:00
Roberto Viola
1c0e212125 KICKR CORE #1135 2023-01-09 16:12:53 +01:00
Roberto Viola
146e1c5da4 Bowflex T6 treadmill #1064 2023-01-09 15:04:06 +01:00
Roberto Viola
d21e0da604 Windows version doesn't show the profiles #1133 2023-01-09 11:41:20 +01:00
Roberto Viola
11864ed49d sportstech sx600 connection but no data #1116 2023-01-09 11:22:45 +01:00
Roberto Viola
86c0db5612 Nautilus T618 treadmill being discovered but not working #1074 2023-01-09 09:28:09 +01:00
Roberto Viola
b61b2132f9 Lap Issue #1102 2023-01-08 08:56:20 +01:00
Roberto Viola
66c963ec7c Suspend stats while paused for horizon treadmill #923
https://github.com/cagnulein/qdomyos-zwift/issues/923#issuecomment-1374666627
2023-01-08 08:40:20 +01:00
Roberto Viola
2505e49675 Horizon Treadmill Auto speed off 0.1 #1128 2023-01-07 18:40:58 +01:00
Roberto Viola
8e4d0dd49e No speed or incline control on T6.5S #1119 2023-01-06 09:49:34 +01:00
Roberto Viola
919902f8bb Sole Elliptical: Apple Watch not connecting #1120 2023-01-04 15:56:38 +01:00
Roberto Viola
020c1440d6 Support of Kingsmith WR1 rowing device #1118 2023-01-04 15:51:01 +01:00
Roberto Viola
349f03b330 Toorx Experience plus all parameter (speed, inclination) = 0 (Issue #1107) 2023-01-04 10:03:53 +01:00
Roberto Viola
fd1224e7c9 Support of Kingsmith WR1 rowing device #1118 2023-01-04 09:56:41 +01:00
Roberto Viola
672455c0d3 Resistance icon not showing in Floating Window #1113 2023-01-04 09:51:29 +01:00
Roberto Viola
676f2f1f9a Nordic Track S25i Treadmill [BUG] #1115 2023-01-04 09:45:55 +01:00
Roberto Viola
b94fa37aaf Mobvoi Treadmill #1095 reverted 2023-01-03 16:59:31 +01:00
Roberto Viola
0af537701c Mobvoi Treadmill #1095 2023-01-02 14:42:00 +01:00
Roberto Viola
d819781150 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2023-01-02 12:25:57 +01:00
Roberto Viola
d9443cff54 Lap Issue #1102 2023-01-02 12:25:52 +01:00
jwatral
92283b65ba issues with ant+ speed sensor fixed by migration to speed and cadence (#1110) 2023-01-02 08:54:03 +01:00
Roberto Viola
497cbc67f1 Rebook treadmill with wrong odometer after 1 km #1100 2023-01-02 06:11:31 +01:00
Roberto Viola
3085d284f6 Horizon treadmill miss some frames in the init (Issue #1108) 2023-01-02 05:47:19 +01:00
Roberto Viola
d39b51c389 Mobvoi Treadmill #1095 2022-12-31 17:44:07 +01:00
Roberto Viola
590e42dc73 NordicTrack S25i Treadmill #1109 2022-12-31 14:56:11 +01:00
Roberto Viola
242ca22bc5 TDF2 incline not working #1101 2022-12-31 11:20:57 +01:00
Roberto Viola
34f37bc70a Floating Window - default to active (Issue #1105) 2022-12-31 11:14:36 +01:00
Roberto Viola
43ae256c18 Floating Window - retain location between sessions (Issue #1104) 2022-12-31 10:57:33 +01:00
Roberto Viola
466be88bb9 SmartSpin2K as smart trainer (Issue #1080) 2022-12-31 10:21:19 +01:00
Roberto Viola
ff7b7bbfe7 Increase speed on treadmill for the Peloton app for the whole run as upper is too fast and average is too slow (Issue #1091) 2022-12-31 10:11:27 +01:00
Roberto Viola
1d1c22b234 Horizon treadmill miss some frames in the init #1108 2022-12-31 09:55:20 +01:00
Roberto Viola
1b1850f82c K80 Toorx Treadmill #1106 2022-12-30 17:50:22 +01:00
Roberto Viola
e9942ca63d TDF2 incline not working (Issue #1101) 2022-12-30 17:17:40 +01:00
Roberto Viola
b87cf9162c Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-12-30 16:16:00 +01:00
Roberto Viola
8c11fe9ae1 Increase speed on treadmill for the Peloton app for the whole run as upper is too fast and average is too slow #1091 2022-12-30 16:15:56 +01:00
Roberto Viola
4a1726df27 fixing android build 2022-12-30 15:33:52 +01:00
Roberto Viola
9f51255994 android version 2.12.32 2022-12-30 14:35:31 +01:00
Roberto Viola
d2b3262edd fixing android build 2022-12-30 14:34:58 +01:00
Roberto Viola
3f7b085173 Tread Bootcamp only sends Partial Time remaining #1103 2022-12-30 12:13:58 +01:00
Roberto Viola
ed4cb797d4 fixing android build 2022-12-30 12:09:34 +01:00
Roberto Viola
d3bc3cdfaf TDF2 incline not working #1101 2022-12-30 11:42:40 +01:00
Roberto Viola
db3f8c217b Picture in Picture on android #1072 2022-12-30 11:36:54 +01:00
Roberto Viola
5cf4719de2 Picture in Picture on android #1072 2022-12-30 10:56:06 +01:00
Roberto Viola
0ddfb3d910 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-12-30 10:33:22 +01:00
Roberto Viola
47621150d3 NordicTrack S22i support using issue 877 as example (Issue #954) 2022-12-30 10:31:42 +01:00
Roberto Viola
d5ff290a8b fixing build 2022-12-29 19:02:07 +01:00
Roberto Viola
4629a9ed04 fixing distance parsing 2022-12-29 18:53:11 +01:00
Roberto Viola
92a2fb5854 NordicTrack S22i support using issue 877 as example (Issue #954) 2022-12-29 18:25:02 +01:00
Roberto Viola
3dedb4cb5e Picture in Picture on android #1072 2022-12-29 15:05:08 +01:00
Roberto Viola
23ef0eab21 build fix 2022-12-29 11:54:20 +01:00
Roberto Viola
c72535e423 fix build 2022-12-29 11:22:53 +01:00
Roberto Viola
07a050d6c5 NordicTrack S22i support using issue 877 as example (Issue #954) 2022-12-29 10:56:13 +01:00
Roberto Viola
58c1ac9d5b playing with floating window #1072 2022-12-28 18:33:56 +01:00
Roberto Viola
0d2e53e6af Picture in Picture on android #1072 2022-12-28 16:50:47 +01:00
Roberto Viola
581f2a4af1 setting to enable adb remote 2022-12-28 15:14:02 +01:00
Roberto Viola
009b569f25 Zwift RunPod OE run cadence does not match strava (Issue #1099) 2022-12-28 14:55:10 +01:00
Roberto Viola
d47364d344 android version 2.12.29 2022-12-28 14:35:00 +01:00
Roberto Viola
61b011b3ce crash fixed when usb is not inserted #1085 2022-12-28 11:24:11 +01:00
Roberto Viola
09d48c0bbf Rebook treadmill with wrong odometer after 1 km #1100 2022-12-28 07:11:05 +01:00
Roberto Viola
e184347f0e ADBRemote #1094 2022-12-27 20:06:17 +01:00
Roberto Viola
dc3f83093e Background operation permanent notification option #1058 2022-12-27 18:29:27 +01:00
Roberto Viola
0bf0466a11 Picture in Picture on android #1072 2022-12-27 18:12:15 +01:00
Roberto Viola
2347b5633d floating window button hides it also 2022-12-27 17:57:59 +01:00
Roberto Viola
7de641ce5c Increase speed on treadmill for the Peloton app for the whole run as upper is too fast and average is too slow (Issue #1091) 2022-12-27 16:04:50 +01:00
Roberto Viola
2e8189037c Zwift Runpod #1097 2022-12-27 15:42:43 +01:00
Roberto Viola
a54071f05d android version 2.12.27 2022-12-27 15:33:02 +01:00
Roberto Viola
77e92f4e96 ADBRemote for android 2022-12-27 15:31:59 +01:00
Roberto Viola
39e63a435f Support for Computrainer with USB connection #1085 2022-12-26 17:13:17 +01:00
Roberto Viola
2218bb4489 Mobvoi Treadmill #1095 2022-12-26 16:12:39 +01:00
Roberto Viola
dc85b4a35e fix ios build 2022-12-26 08:22:13 +01:00
Roberto Viola
75604aed8c Support for Computrainer with USB connection #1085 2022-12-25 18:07:19 +01:00
Roberto Viola
029995d420 SmartSpin2K as smart trainer #1080 2022-12-23 08:54:01 +01:00
Roberto Viola
aec612614c Support for Computrainer with USB connection #1085 2022-12-23 08:31:04 +01:00
Roberto Viola
2a4ca076cf Increase speed on treadmill for the Peloton app for the whole run as upper is too fast and average is too slow #1091 2022-12-23 08:10:32 +01:00
Roberto Viola
e215918987 Support for Computrainer with USB connection #1085 2022-12-21 21:28:51 +01:00
Roberto Viola
23e2a11b6b Increase speed on treadmill for the Peloton app for the whole run as upper is too fast and average is too slow #1091 2022-12-21 20:57:41 +01:00
Roberto Viola
5f8a09d82e Support for Computrainer with USB connection #1085 2022-12-21 20:12:28 +01:00
Roberto Viola
6e2107e82e Support for Computrainer with USB connection #1085 2022-12-21 19:01:44 +01:00
Roberto Viola
af3ab73359 Support for Computrainer with USB connection #1085 2022-12-21 17:51:33 +01:00
Roberto Viola
7d3828d3b9 Increase speed on treadmill for the Peloton app for the whole run as upper is too fast and average is too slow (Issue #1091) 2022-12-21 17:00:43 +01:00
Roberto Viola
a43b73fb9e Support for Computrainer with USB connection #1085 2022-12-21 16:39:06 +01:00
Roberto Viola
bd102dee72 adding speed based on power setting on proformwifibikes 2022-12-21 16:04:02 +01:00
Roberto Viola
2634993a3a ios build errors 2022-12-21 11:07:52 +01:00
Roberto Viola
30f93ac439 android version 2.12.18 2022-12-21 10:53:08 +01:00
Roberto Viola
337b06cce4 Usb serial for android (#1092)
* adding manifest and gradle

* it's working!
2022-12-21 10:51:40 +01:00
Roberto Viola
cc41d02607 Strava Virtual Tag Setting #1083 2022-12-20 09:03:19 +01:00
Roberto Viola
4b7829e1f3 added some debug log #1085 2022-12-20 08:25:32 +01:00
Roberto Viola
ac8fd15d0a android version 2.12.17 2022-12-20 08:21:40 +01:00
Roberto Viola
b1a4b58ba2 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-12-20 08:20:37 +01:00
Roberto Viola
3bd17743d2 SmartSpin2K as smart trainer #1080 2022-12-20 08:20:30 +01:00
Roberto Viola
e88e89c96b Computrainer (#1086)
* first commit

* build fix

* fixing build errors on windows
2022-12-20 08:05:59 +01:00
Roberto Viola
ae3a393038 Zwift HUB #1087 2022-12-19 15:09:42 +01:00
Roberto Viola
12f2f2601c Proform TDF4 and Wahoo SYSTM training software, Erg mode does not affect resistance #1081 2022-12-19 10:37:38 +01:00
Roberto Viola
e42825b0ec Proform TDF4 and Wahoo SYSTM training software, Erg mode does not affect resistance #1081 2022-12-19 10:09:14 +01:00
Roberto Viola
eb7895bb48 added echelon rower sport 2022-12-16 19:41:29 +01:00
Roberto Viola
1366c21891 missing changeresistance event for the rowers 2022-12-16 19:35:32 +01:00
Roberto Viola
341b0607fc version 2.12.14 2022-12-16 15:13:17 +01:00
Roberto Viola
e8a59937f6 SmartSpin2K as smart trainer #1080 2022-12-16 08:44:31 +01:00
Roberto Viola
20c69a374c Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-12-14 14:45:47 +01:00
Roberto Viola
3eb3dbecc8 power calibration for Domyos Bike[REQ] #1078 2022-12-14 14:45:39 +01:00
Roberto Viola
f8a6e428ee version 2.12.13 on android 2022-12-14 14:38:03 +01:00
Roberto Viola
196bfe351d Android floating window (#1077)
* first implementation of the webview. didn't compile yet

* it's building

* window appears but is not showing the webview and also doesn't move. permission window needs to be fixed

* floating window works!

* adding html page for floating

* adding floating.htm to the floating window

* creating tiles...

* table

* dinamicize metrics on the floating window

* adding transparency

* finalizing

* alpha channel fixed

* fixing 1 minute timeout
2022-12-14 14:25:26 +01:00
Roberto Viola
5169cf78a4 ifit kcal fixed 2022-12-14 08:23:49 +01:00
Roberto Viola
11425ea861 Bowflex T6 treadmill #1064 2022-12-13 18:46:16 +01:00
Roberto Viola
d4a5604af6 Add option to disable pausing/stopping of machinery when pause/stop is pressed in QZ #1075 2022-12-13 18:44:43 +01:00
Roberto Viola
b53ff4a516 notification icon on android restored to false as default 2022-12-12 09:37:18 +01:00
Roberto Viola
1adf0b2e08 Gears tile for elliptical #1071 2022-12-12 08:46:49 +01:00
Roberto Viola
883c4c56d6 Bowflex T6 treadmill #1064 2022-12-12 07:59:43 +01:00
Roberto Viola
13a2c95671 Add option to disable pausing/stopping of machinery when pause/stop is pressed in QZ #1075 2022-12-11 20:04:27 +01:00
Roberto Viola
48df8b3057 Add option to disable pausing/stopping of machinery when pause/stop is pressed in QZ (Issue #1075) 2022-12-11 19:53:57 +01:00
Roberto Viola
e771b4a62d Add option to disable pausing/stopping of machinery when pause/stop is pressed in QZ (Issue #1075) 2022-12-11 19:44:19 +01:00
Roberto Viola
c7bed0a259 Add option to disable pausing/stopping of machinery when pause/stop is pressed in QZ #1075 2022-12-11 18:50:11 +01:00
Roberto Viola
bb7dc3f4e9 Domyos EL 520 Minimum Resistance #1069 2022-12-10 14:30:00 +01:00
Roberto Viola
e9c383ce8b ios project updated 2022-12-10 10:49:59 +01:00
Roberto Viola
395973b0ae Bowflex T6 treadmill #1064 2022-12-10 09:44:16 +01:00
Roberto Viola
8cdbc8463a Open proform wifi bike doesn't reconnect automatically #1062 2022-12-10 09:15:41 +01:00
Roberto Viola
9f1d6a163f The control of RGT app not working with Wahoo Direct Connect for RGT setting (#1059)
* fundaments building :)

* Update project.pbxproj

* dircon wahoo protocol managed for RFT

* The control of RGT app not working with Wahoo Direct Connect for RGT setting #1055

* The control of RGT app not working with Wahoo Direct Connect for RGT setting #1055

* cleaning the code

* The control of RGT app not working with Wahoo Direct Connect for RGT setting #1055
2022-12-10 09:08:21 +01:00
Roberto Viola
44b304bcf7 adding close button on android since the notification icon will keep qz alive 2022-12-09 11:21:57 +01:00
Roberto Viola
b0bea930e0 trying to fix swag bag on android 2022-12-09 11:21:32 +01:00
Roberto Viola
6ce71c69f6 incline doesn't work #1063 2022-12-09 07:05:11 +01:00
Roberto Viola
1bf665ae98 incline doesn't work (Issue #1063) 2022-12-08 17:31:03 +01:00
Roberto Viola
a3e6cbd416 removing qt5-default 2022-12-07 14:40:22 +01:00
Roberto Viola
c2ef787a74 qt5-default missing
https://askubuntu.com/questions/1335184/qt5-default-not-in-ubuntu-21-04
2022-12-07 14:37:48 +01:00
Roberto Viola
c00f2a81ca Bowflex T6 treadmill #1064 2022-12-07 14:28:09 +01:00
Roberto Viola
b4164cd10f Kingsmith walkingpad X21, app not responding #1031 2022-12-07 08:06:27 +01:00
Roberto Viola
f95a0510c7 echelon stride doesn't provide metrics #1056 2022-12-05 09:11:34 +01:00
Roberto Viola
b6c5099e07 Kingsmith walkingpad X21, app not responding #1031 2022-12-05 08:50:52 +01:00
Roberto Viola
bc26307c63 proform wifi bike doesn't reconnect automatically #1062
https://github.com/cagnulein/qdomyos-zwift/issues/1062#issuecomment-1336437407
2022-12-04 16:42:23 +01:00
Roberto Viola
ee0b7993de new iOS requirement 2022-12-02 20:24:50 +01:00
Roberto Viola
93a6a352a1 Tacx Flow #1060 2022-12-02 08:18:48 +01:00
Roberto Viola
1e98454070 version 2.12.9 2022-12-01 17:44:48 +01:00
Roberto Viola
a90d3f227f Wahoo Dircon on Treadmill doesn't flash the inclination icon #1061 2022-12-01 17:44:14 +01:00
Roberto Viola
0ad5ca8651 Background operation // Permanent notification option #711 2022-12-01 16:31:23 +01:00
Roberto Viola
8daf02afb6 Background operation // Permanent notification option #711 2022-12-01 16:06:07 +01:00
Roberto Viola
422bf4144f Tacx Flow #1060 2022-12-01 14:23:49 +01:00
Roberto Viola
57455ee7d6 Back from the same gpx path (START - END - START - END all the time) #987 2022-12-01 09:19:57 +01:00
Roberto Viola
032636b3b6 Background operation // Permanent notification option #711 2022-12-01 08:54:57 +01:00
Roberto Viola
536067d731 Background operation permanent notification option (#1058) under settings 2022-11-30 14:40:54 +01:00
Roberto Viola
9aaa1a0d18 Background operation permanent notification option (#1058)
* first try

* Update NotificationClient.java

* Update NotificationClient.java

* adding Foreground Service

* fixing build errors

* build error fixed

* fixing

* Update ForegroundService.java

* fixing click on the notification
2022-11-30 10:00:05 +01:00
Roberto Viola
17db301d5d fixing forcing resistance,speed and incline for nordictrack adb devices 2022-11-29 17:03:15 +01:00
Roberto Viola
0e4945f15b Back from the same gpx path (START - END - START - END all the time) #987 2022-11-29 11:36:10 +01:00
Roberto Viola
94ba539de4 erg mode for proform wifi bike improved 2022-11-28 10:58:57 +01:00
Roberto Viola
9c9d540585 Domyos Elliptical EL 520 #1046 2022-11-28 04:26:32 +01:00
Roberto Viola
9f6e54dfc4 nordictreadmill can go with negative inclination 2022-11-28 03:10:05 +01:00
Roberto Viola
3b1d24381e Revert "Proform Treadmill on Windows error #1054"
This reverts commit 563e7708f0.
2022-11-27 19:00:20 +01:00
Roberto Viola
563e7708f0 Proform Treadmill on Windows error #1054 2022-11-27 13:45:34 +01:00
Roberto Viola
5127420097 Ability to change target power by tiles for bikes #1053 2022-11-26 08:46:05 +01:00
Roberto Viola
9202958a39 fixing ERG mode for proformwifibike 2022-11-25 08:21:53 +01:00
Roberto Viola
c2ca7a06fe Auto stop when a GPX ride has completed #905 2022-11-22 15:32:28 +01:00
Roberto Viola
0a852644bc Auto stop when a GPX ride has completed #905 2022-11-22 13:47:44 +01:00
Roberto Viola
fd32d29c87 Care Fitness CV-351 : #1042 2022-11-21 16:50:49 +01:00
Roberto Viola
c4c1091147 XT800 treadmill #1051 2022-11-21 15:57:19 +01:00
Roberto Viola
fd15b1ac4f Add ProForm Cadence LT Treadmill to QZ to connect to Peloton [REQ] #1047 2022-11-21 14:32:08 +01:00
Roberto Viola
7b53ee0dc9 build issue fixed 2022-11-21 14:03:35 +01:00
Roberto Viola
59fc9864ec fixing decimal error on inclination on horizontreadmill #1050 2022-11-21 13:50:12 +01:00
Roberto Viola
c59e8a0079 Care Fitness CV-351 : (Issue #1042) 2022-11-21 13:35:03 +01:00
Roberto Viola
96ff845abe inclination offset and gain for treadmill used also on train program 2022-11-21 08:42:05 +01:00
Roberto Viola
62f504bdc7 Power Sensor Profile with 16bit UUID on iOS #1044 2022-11-20 07:52:14 +01:00
Roberto Viola
8113bccb77 Power Sensor Profile with 16bit UUID on iOS #1044 2022-11-19 16:11:28 +01:00
Roberto Viola
ab14cbfa49 Care Fitness CV-351 : #1042 2022-11-19 15:19:09 +01:00
Roberto Viola
ee252a313d Care Fitness CV-351 : #1042 2022-11-18 14:24:04 +01:00
Roberto Viola
293ff2eda1 Virtual Dircon Bike device for treadmill #1043 2022-11-18 14:16:47 +01:00
Roberto Viola
f084b88312 Life Fitness Treadmill FTMS #1018 2022-11-18 12:04:32 +01:00
Roberto Viola
bc9c36624a Stages bike peloton resistance null sometimes #1040 2022-11-18 08:49:55 +01:00
Roberto Viola
b49af71c2e Life Fitness Treadmill FTMS #1018
removing forcing commands since this treadmill is not able to do so
2022-11-18 08:40:19 +01:00
Roberto Viola
118684ebff Carefitness CV-351 #1041 2022-11-18 08:23:51 +01:00
Roberto Viola
9e8c8322e3 Life Fitness Treadmill FTMS #1018 2022-11-17 15:21:24 +01:00
Roberto Viola
cce52fcdfa Update SwagBagView.qml 2022-11-16 15:12:52 +01:00
Roberto Viola
e29b7f1356 swag bag edited in order to be accepted from the app store 2022-11-16 14:16:00 +01:00
Roberto Viola
036f0c4fc9 Blank Screen/No Metrics after Class #857 2022-11-15 14:00:25 +01:00
Roberto Viola
2ff9cdeba6 Apple Watch/Health integration - indoor walk for treadmill instead of indoor cycle #924 2022-11-15 09:27:07 +01:00
Roberto Viola
1b7e61e77a Life Fitness Treadmill FTMS #1018 2022-11-15 08:17:14 +01:00
Roberto Viola
5affe4b687 Add Virtual Pod mode #45 2022-11-14 16:16:46 +01:00
Roberto Viola
5f6d3cc7f3 Footpod (Stryd) support with manual incline #1038 2022-11-14 15:33:14 +01:00
Roberto Viola
c651c682c3 inCondi ET660i support #1007 2022-11-14 08:42:43 +01:00
Roberto Viola
6163b967f7 NordiTrack T 7.0 treadmill #1030
fixing start
2022-11-14 08:33:24 +01:00
Roberto Viola
0c1c25823c Life Fitness Treadmill FTMS #1018 2022-11-14 08:16:12 +01:00
Roberto Viola
30046c8177 Merge pull request #1035 from cagnulein/ftmsCRR
FTMS CRR implemented
2022-11-12 18:30:17 +01:00
Roberto Viola
c893180e4d added QZ_EnableDiscoveryCharsAndDescripttors to domyostreadmill and fitmetria 2022-11-12 09:37:51 +01:00
Roberto Viola
5d49fa8174 ios project updated 2022-11-11 19:59:46 +01:00
Roberto Viola
e0f8c30a94 build issue fixed 2022-11-11 19:58:50 +01:00
Roberto Viola
a4b7eb7ebb fixed build issue 2022-11-11 19:57:12 +01:00
Roberto Viola
ee3067baa0 qmdnsengine doesn't work anymore with iOS 16 or Ventura #1011 2022-11-11 19:54:39 +01:00
Roberto Viola
73a1d8dbb6 fixing qml error 2022-11-11 16:04:37 +01:00
Roberto Viola
63f778c32d added also the wind resistance 2022-11-11 15:37:54 +01:00
Roberto Viola
9d50363a9c removing the gain from the CRR formula 2022-11-11 15:19:17 +01:00
Roberto Viola
7dc112b6f5 implemented 2022-11-11 15:08:16 +01:00
Roberto Viola
3b1a478822 Life Fitness Treadmill FTMS #1018 2022-11-11 09:09:59 +01:00
Roberto Viola
e114745d5f Pace (Treadmill Only) on 3d maps #1020
pin updated
2022-11-10 12:00:01 +01:00
Roberto Viola
a18818d5fe Pace (Treadmill Only) on 3d maps #1020 2022-11-10 10:08:46 +01:00
Roberto Viola
c5fdf4a9bf Life Fitness Treadmill FTMS #1018 2022-11-10 04:39:49 +01:00
Roberto Viola
f45610343b reverting all the iOS mdns madness. Let's wait an answer from Apple 2022-11-10 04:19:45 +01:00
Roberto Viola
f45dd3bfed adding some protection to the domyostreadmill 2022-11-09 20:58:05 +01:00
Roberto Viola
5d0f0138a5 peloton power zone metrics fail #1033 2022-11-09 16:47:36 +01:00
Roberto Viola
827285ede0 JK fitness 577 bike #1032 2022-11-09 09:57:03 +01:00
Roberto Viola
df759a14a1 Android version 2.11.89 2022-11-09 08:10:41 +01:00
Roberto Viola
2b38d4fbe3 JK fitness 577 bike #1032 2022-11-09 08:09:54 +01:00
Roberto Viola
2dccd4016a qmdnsengine doesn't work anymore with iOS 16 or Ventura #1011 2022-11-08 14:59:00 +01:00
Roberto Viola
06ccf9136b Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-11-08 13:37:12 +01:00
Roberto Viola
66e3420abc JK fitness 577 bike #1032 2022-11-08 13:37:09 +01:00
Bepo7012
650fc81c6d Test Videos with higher fps Rates (#1024)
* Test Videos with higher fps Rates

* Set the speed limit higher, no longer a Problem

* iOS project updated

Co-authored-by: Roberto Viola <cagnulein@gmail.com>
2022-11-08 12:14:47 +01:00
Roberto Viola
dff786dd2a NordiTrack T 7.0 treadmill #1030 2022-11-08 11:57:08 +01:00
Roberto Viola
78bc2b2d97 Life Fitness Treadmill FTMS #1018 2022-11-08 08:03:50 +01:00
Roberto Viola
bd79b30eda fixing integer cast for inclination for the proform wifi bike 2022-11-07 14:55:31 +01:00
Roberto Viola
2a6a4e3db8 Disable TTS prefixes for frequent repetitions #986 2022-11-07 14:23:14 +01:00
Roberto Viola
8af33b0845 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-11-06 07:28:57 +01:00
Roberto Viola
cdb09471b1 iOS project updated 2022-11-06 07:28:47 +01:00
Andrea Gelmini
f5c7b1d891 Fix typos (#1025) 2022-11-05 07:05:53 +01:00
David Mason
7908420622 #962 Bluetooth details to settings for all devices (#963)
* #962 factored out the setting of the last bluetooth device settings to a method

* #962 call setLastBluetoothDevice for every device

* #962 fixed typos

* #962 whitespace adjustments

* #962 whitespace adjustments

* #962 updated qmdnsengine submodule to HEAD

Co-authored-by: Roberto Viola <Cagnulein@gmail.com>
2022-11-04 14:01:58 +01:00
Roberto Viola
e0ba6e6f08 Octane Fitness Q37xi Support #1023 2022-11-04 12:12:26 +01:00
Roberto Viola
c9cb0e5728 QZ / ZWIFT / Treadmill / Smartwatch: Different distance value #1022 2022-11-04 08:36:55 +01:00
Roberto Viola
43c263bd22 GPX Issues on Treadmill #973 2022-11-03 14:54:31 +01:00
Roberto Viola
1f38aee4d0 GPX Issues on Treadmill #973
cesium metrics on the bottom right and with a rounded green box around
2022-11-03 12:25:52 +01:00
Roberto Viola
424d98cb80 using watt gain and watt offset even for target_watt for proform bikes 2022-11-03 12:24:42 +01:00
Roberto Viola
8869913c4e Differences in the GPX starting point #988
new pin point in the 3d map
2022-11-03 10:04:52 +01:00
Roberto Viola
69d9b23b6e Fitshow FTMS bike doesn't send metrics #1019 2022-11-03 08:20:23 +01:00
Roberto Viola
c9b215ff44 Life Fitness Treadmill FTMS #1018 2022-11-03 08:06:03 +01:00
Roberto Viola
ee8c66d3e8 bluetooth discovery fitfan improvement 2022-11-02 16:01:11 +01:00
Roberto Viola
c2589f7f26 AVG Watts per Lap #1009 2022-11-02 15:03:48 +01:00
Roberto Viola
8dd3ff6340 Preset resistance tiles #493 2022-11-02 14:36:43 +01:00
Roberto Viola
82e075798c inCondi ET660i support #1007 2022-11-02 08:42:55 +01:00
Roberto Viola
732e84d2e3 new raspberry install #1014 2022-10-31 11:05:59 +01:00
Roberto Viola
c2d0176b67 ios dircon permission fixed #1011 2022-10-28 23:46:43 +02:00
Roberto Viola
01ef11496d proformwifibike: send only 0.5 inclination 2022-10-28 14:53:48 +02:00
Roberto Viola
0c768a4943 optimizing bluetooth traffic over fitmetria 2022-10-28 14:43:43 +02:00
Roberto Viola
9e63e31954 erg mode added to proformwifiibike 2022-10-28 11:49:27 +02:00
Roberto Viola
c7efa0e5ad fixing a problem with the speed based on power setting enabled
if the wattage was evaluated after the speed in the bike module, the speed was always 0
2022-10-28 09:57:13 +02:00
Roberto Viola
0b9de9509c Differences in the GPX starting point (Issue #988) 2022-10-28 09:17:47 +02:00
Roberto Viola
92dbbcaf5a preparing version 2.11.84 2022-10-28 08:36:35 +02:00
Roberto Viola
d8951ab83e Differences in the GPX starting point #988
chartjs color typo
2022-10-28 08:35:45 +02:00
Roberto Viola
a4bd3cfd6e iOS version 2.11.83 2022-10-26 18:26:09 +02:00
Roberto Viola
83637aa626 adding ECH-UK as another name of echelon stride 2022-10-26 17:40:19 +02:00
Roberto Viola
f65ecd3df7 fixing speed gain and offset to the calculateSpeedFromPower function 2022-10-26 15:13:22 +02:00
Roberto Viola
7e11c740ac Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-10-26 14:26:12 +02:00
Roberto Viola
7b4102964e Apple Watch Miles and Km conversion #1006 2022-10-26 14:26:05 +02:00
Roberto Viola
c706b2db71 Merge pull request #1008 from Bepo7012/master
Added Debug for Video Jump Issues
2022-10-26 12:04:00 +02:00
Bepo7012
70f5b627d1 Added Debug for Video Jump Issues 2022-10-26 11:19:15 +02:00
Roberto Viola
547bd51673 build issues 2022-10-26 10:23:51 +02:00
Roberto Viola
b42f684bbf inCondi ET660i support #1007 2022-10-26 09:46:29 +02:00
Roberto Viola
8434cebdc7 version 2.11.83 2022-10-26 08:28:11 +02:00
Roberto Viola
9f7886af58 Differences in the GPX starting point #988 2022-10-26 08:27:38 +02:00
Roberto Viola
82f3cf227d Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-10-25 16:15:44 +02:00
Roberto Viola
8708bb76cc android version 2.11.82 2022-10-25 16:12:11 +02:00
Roberto Viola
3a23d6798a Merge pull request #1005 from Bepo7012/master
Fix for INF Calculation in cagnulein#973
2022-10-25 15:46:21 +02:00
Bepo7012
9d3457b53c Update trainprogram.cpp
Fix for INF Calculation in cagnulein#973
2022-10-25 15:42:42 +02:00
Roberto Viola
e0f5c90d93 Spirit XT385 not able to get working, Gets discovered but can't see Qdomyos in Zwift Discovery. #833 2022-10-25 14:24:45 +02:00
Roberto Viola
46d2d0c346 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-10-25 11:52:36 +02:00
Roberto Viola
dc2876f80a Differences in the GPX starting point #988 2022-10-25 11:52:29 +02:00
Roberto Viola
73767d68fe Merge pull request #999 from drmason789/iconcept_virtualdevice_setup_998
#998 only attempt to set up virtual device on first update
2022-10-25 11:44:19 +02:00
Roberto Viola
ee840abd5e Merge pull request #1003 from drmason789/kingsmith_searchingStop_removal_1000 2022-10-25 06:55:14 +02:00
David Mason
31d401a1df #1000 removed searchStopped check from virtual device setup 2022-10-24 21:25:40 +01:00
David Mason
05a0184f03 #998 only attempt to set up virtual device on first update 2022-10-24 20:54:50 +01:00
Roberto Viola
1707f7c8ff yesoul target resistance fixed on zwift 2022-10-24 21:22:19 +02:00
Roberto Viola
c0b4ea071e fixing typo 2022-10-24 16:46:27 +02:00
Roberto Viola
7a2528d007 Merge pull request #997 from cagnulein/preset_tiles
Preset resistance tiles (#493)
2022-10-24 15:31:02 +02:00
Roberto Viola
1a37a4c3b2 Preset resistance tiles (#493) 2022-10-24 15:27:18 +02:00
Roberto Viola
ed1568c583 Spirit XT385 not able to get working, Gets discovered but can't see Qdomyos in Zwift Discovery. #833 2022-10-24 08:45:43 +02:00
Roberto Viola
69d95ee27d Spirit XT385 not able to get working, Gets discovered but can't see Qdomyos in Zwift Discovery. #833 2022-10-22 13:07:53 +02:00
Roberto Viola
1cfb556e6c Merge pull request #992 from jwatral/ant_plus_speed_channel_controller_fix_167
fixed speed value conversion in SpeedChannelController #167
2022-10-20 08:30:02 +02:00
Roberto Viola
20a0b9e968 helper label added 2022-10-20 08:29:15 +02:00
Jaroslaw Watral
57dd826033 removed cadence reference usage in ChannelService 2022-10-20 00:09:54 +02:00
Jaroslaw Watral
fe7e259db3 fixed speed value conversion in SpeedChannelController 2022-10-20 00:01:30 +02:00
Roberto Viola
88ba5a5239 Differences in the GPX starting point #988 2022-10-19 10:24:42 +02:00
Roberto Viola
bbd586895a keeping useful modification 2022-10-18 21:40:08 +02:00
Roberto Viola
ae1d25208e Revert "Differences in the GPX starting point #988"
This reverts commit 2b19896498.
2022-10-18 21:39:11 +02:00
Roberto Viola
2b19896498 Differences in the GPX starting point #988 2022-10-18 14:33:48 +02:00
Roberto Viola
ea6c5c1190 version 2.11.75 2022-10-18 08:03:27 +02:00
Roberto Viola
50bb52c15c gpx without timestamp fixed 2022-10-17 23:19:31 +02:00
Roberto Viola
be4454563b version 2.11.74 for android 2022-10-17 16:54:42 +02:00
Roberto Viola
0ac29a4470 Disable TTS prefixes for frequent repetitions #986 2022-10-17 14:41:29 +02:00
Roberto Viola
136c807f16 Android 2 Android Wahoo Kickr direct no data #983 2022-10-17 11:58:10 +02:00
Roberto Viola
c74e3545d4 Android 2 Android Wahoo Kickr direct no data #983 2022-10-17 10:59:15 +02:00
Roberto Viola
a05345264c adding wifi permissions on android in order to collect the ip address of the wifi for dircon 2022-10-16 20:22:04 +02:00
Roberto Viola
92c10f3042 GPX Issues on Treadmill #973 2022-10-16 14:24:31 +02:00
Roberto Viola
76935090a4 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-10-16 10:43:09 +02:00
Roberto Viola
2b0accb933 Merach MRK-S02-0B8D Resistance Change #984 2022-10-16 10:43:05 +02:00
Brad Stoney
26e2146051 Update 30_usage.md (#985)
Updated -qml default and added -noqml
2022-10-16 10:39:01 +02:00
Roberto Viola
f552f27224 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-10-16 09:36:28 +02:00
Roberto Viola
05deaa76fc GPX Issues on Treadmill (Issue #973 2022-10-16 09:36:24 +02:00
Roberto Viola
8d79fb3f35 android version 2.11.70 2022-10-14 08:03:38 +02:00
Roberto Viola
ec748b695e calling watts() instead of m_watt on speed based on power formula 2022-10-14 08:02:42 +02:00
Roberto Viola
8618384bb6 Pro FlexCycle #979 2022-10-13 14:46:43 +02:00
Roberto Viola
11e1117611 adding debug on ftmsbike 2022-10-13 13:38:40 +02:00
Roberto Viola
ba08f656fe adding a setting for zwift compatibility #476 2022-10-13 13:33:58 +02:00
Roberto Viola
af875a7295 Wahoo Direct Connect #476 RGT compatibility fixed
Tested with RGT and Zwift on iOS
2022-10-13 11:49:12 +02:00
Bepo7012
56e38e650a Keep Video and Gpx Position synchronized (Addition to #838) (#945)
* Speed up debugging on Windows

* Added new way for Video Rate

* Tried another Variant

* Fixed double double Conversion

* Splitted Videopos Rate and Frame rate

* Fixed new calculation

* Very easy possible solution

* Simple try

* Not really better, another try

* Adjust both Endpoints for calculation

* Framerate set

* Collecting Data

* Use average Rate

* Adjusted Videoframe Distance

* Fixed correction

* use weighted mean rate

* Played with factor weighting

* Found logic Error in Video Rate

* Factor weighting and try reduce flickering

* Fixed weighting of Rates

* New Idea

* Bad  Idea, changed Factor weighting again

* Code cleanup before Pull Request

* added Time difference for testing spec. Video

* Test should not be in Pull Request

* reverted debug on main.cpp

* ios version 2.11.54

* Fixed rewinding Video

* Variable Weighting Videorate/Framerate

* Added changes again for windows debug

* Different Aproach again

* Fixed wrong speed calc

* Add adjustment to rate based on time difference

* try higher or lower rate by 10% first

* Adjusted the Rate Base

* Removed the Rate % adoption

* video length added

* Implemented Referencepoint at End of Video

* Corrected Video start Time

* Init Videotimestamp with Traintimestamp at Start

* Fixed comparence

* Added trainProgram::TotalGPXSecs

* Corrected return

* Time to finish

* Removed Test and Debug changes in main.cpp

* Debug Message removed for next Windows Build

* Setting Video to correct Pos if length differs

* Don't do anything if Video isn't displayed

* fixed visible

* fixed visible comparison

* added videoSeekPosition in order to change the position of the video in realtime

* Implemented Video Adjustment on start

* Correct Videotimestamp every time if needed

* As usual, fixed Typo

* Reversed Video Timestamp correction

* Implemented case that Video is shorter then gpx

* Approach should be smoother

* Corrected shorter Video

* Fixed Video starting point if hidden/redisplayed

* Reverted Debug changes in main.cpp

* adding acceleration in the calculation of the speed based on wattage

* fixing negative speed values

* Windows debugging again

* added Debug Info to calculateSpeedFromPower

* Moved Watt calc up to have it for Speed calc

* Corrected Start for shorter Videos

* Try to use smaller Frame for average Video Speed

* Use Fullrate if Diff is to high

* Changed high difference rate

* adjusted factor

* Add 1 % of Timediff to Totalrate

* Not successfull, removed again

* rolling resistance setting added

* Hopefully the last approach

* Corrected Target

* Remarked some Things to get Debug Data

* use only 90 % of rate

* Only adjust factor one time per gpx Cycle

* Try Percent adoption

* fixing changeTimestamp callback with milliseconds precision

* Removed % in-/decrease

* Removed call to changeTimestamp

* removed avgInclination for bikes #838

* Test for Debug

* fixing distance error on trxappgateusbbike when speed was calculated over wattage

* tried fake bike

* Use a 2 sec Window

* Added changed Header definition

* try to fix gaps in gps

* Added some Debug Info

* Changed Params for Fake

* Removed 2 seconds frame

* Try Speed without average

* Debug Output Trainprogram

* Add more Debug for Trainprogram

* Removed Trainprogram Debug

* Tried avg. Speed -3/+3 secs

* Fix Bug in avgSpeedCalculation

* try to limit the rate change

* Fixed limiting

* Fixed again

* Fixed init of Limitation

* Removed Limitation, not working as hoped

* Check speed Deviation between 90 and 110 %

* Search for speed in 6 Secs/clearify Property-Names

* Fixed Typo

* Fixed Bug in gpx average Speed calculation

* Changed Filerrange from +/- 15 %

* Fixed possible segmentation Fault

* improving precision in the debuglog

* fixing elapsed time #838

* changeTimestamp again when next point reached

* fixing wrong ratiodistance

* qzsettings updated

* Save currentStepDistance before set to 0

* currentStop is already incremented, use -2

* use Distance from prev.Row too

* currentStep -1 distance and -2 time

* Don't use Point 1

* just a try

* Should be correct now

* changed distance

* fixing merge issues

* fixing another merge issue

* updating ios project

* fixing circuit gpx for video

* caching the odometer for all the scheduler event and removing the changetimestamp not time based

* Calc RatioDistance with Timediff between Points

* do this only if the point get hits first

* Calc distanceRow to gpx Diff

* only use currentStepDistance added since last

* Ratio Time has to be summed

* Redesign the process

* fixed typo

* Forgot one change

* fixed crash

* hopefully fixed now

* only add ratioDistance one time

* Added debug Info

* Filter changingTimestamp if Variance to high

* added Debug Info

* fixed Variance calculation

* fixed typo

* Store last Tick/TimeStamp Ratio for next cycle

* moved ratioDistance in correct scope

* Add ratioDistance, not calculated Ratio

* Back to Ratio again, better Results

* add ms not s

* changed Variance Range to -25/+25%

* Apply filtering Speed to trainingrows

* header definition added

* Fixed typo

* fixed array access

* accessing row data

* fixed bug when timetotickratio was 0

* logic Error

* fix bug in wma calculation

* added more detail to debug

* Calculate new distance into temporary array before

* fixed typo

* removed filter in changing timestamp

* Removed some routines no longer needed

* Remove peak Filter ompletely, no longer needed

* fixed crash at end of program

* fixing ios build and applySpeedFilter only on gpx workout

* adding running cadence from apple watch to ipad

* Fix for iOS Crash?

* fixing treadmill force speed setting with applyspeedfilter on

* adding speedlimit to bike

* Update trainprogram.cpp

Max.Speed for Bikes (=2 * avg current Trainprogram Speed) implemented

* Update trainprogram.cpp

changed to max speed to get a max replay factor of 1.9

* fixing speed limit

* removing bad check on the speedlimit

* adding a new method to know if the video is visible and reset the speed limit

* Fixed Issues on video hiding/redisplaying

 Also makes the first display a little nicer

* Removed no longer needed filterSeconds

The Option in the setting can also be removed, it's no longer needed

* Try to calculate the Speedlimit +1sec

* video_playback_window setting removed

* preparing for the merge

* removed unuseful coment

Co-authored-by: Roberto Viola <cagnulein@gmail.com>
Co-authored-by: Bernhard Ponemayr <bernhard.ponemayr@voglauer.com>
2022-10-13 10:56:12 +02:00
Roberto Viola
3b75f4fa94 Zwift Workouts Over Cadence #980 2022-10-13 10:48:23 +02:00
Roberto Viola
7e18946909 Update settings.qml 2022-10-12 18:16:34 +02:00
Roberto Viola
6edde653b6 Average Speed in the Email doesn't match #977 2022-10-12 09:54:24 +02:00
Roberto Viola
caedc73901 Bike Support Merach MRK-S02-0B8D #978 2022-10-12 09:46:40 +02:00
Roberto Viola
19e552f4cd Pro FlexCycle #979 2022-10-12 08:18:08 +02:00
Roberto Viola
6dc46aa689 license request every 30s 2022-10-11 17:18:27 +02:00
Roberto Viola
2cce91beea fixed typo 2022-10-11 17:03:32 +02:00
Roberto Viola
4824b65590 GPX Issues on Treadmill #973
speed on treadmill fixed
2022-10-11 16:59:15 +02:00
Roberto Viola
f327d13252 fix typo 2022-10-10 20:45:56 +02:00
Roberto Viola
e1a4bbb19a fixin avg inclination for treadmill 2022-10-10 20:31:02 +02:00
Roberto Viola
e11d4610a9 fixing build error on iOS 2022-10-10 20:17:11 +02:00
Roberto Viola
68d1eb678f GPX Issues on Treadmill #973 2022-10-10 16:26:50 +02:00
Roberto Viola
95d1f1fd8e Merge pull request #976 from nzbrian/master
Adding ESLinker YPOO Mini Change treadmill
2022-10-10 10:05:36 +02:00
Brian Bannister
ceaa5f0fa2 Adding ESLinker YPOO Mini Change treadmill 2022-10-10 18:22:53 +13:00
Roberto Viola
efede4bee0 GPX Issues on Treadmill #973 2022-10-09 08:26:46 +02:00
Roberto Viola
18787431a6 fixed crash for nautilus treadmill 2022-10-08 19:55:17 +02:00
Roberto Viola
e30e3c85e3 GPX Issues on Treadmill #973
map icon showed only when speed forcing for treadmill is disabled
2022-10-08 15:19:05 +02:00
Roberto Viola
e5724b43db fixed qzsettings usage 2022-10-08 03:02:45 +02:00
Roberto Viola
2428b4c230 GPX Issues on Treadmill #973 2022-10-07 14:30:34 +02:00
Roberto Viola
cf111ab23c Merge pull request #974 from cagnulein/cherrypickingfromvideobranch
Cherry-picking from video branch
2022-10-07 13:59:38 +02:00
Roberto Viola
3c37f1d77b fixing another merge issue 2022-10-07 12:23:59 +02:00
Roberto Viola
e0a79b51d3 updating ios project 2022-10-07 12:23:33 +02:00
Roberto Viola
5de8e7f1d8 rolling resistance setting added 2022-10-07 12:22:13 +02:00
Roberto Viola
45ddd78624 fixing negative speed values 2022-10-07 12:19:16 +02:00
Roberto Viola
b47d605999 adding acceleration in the calculation of the speed based on wattage 2022-10-07 12:18:40 +02:00
Roberto Viola
b2ea235729 using qzsettings in kcal on fitshowtreadmill 2022-10-06 12:23:45 +02:00
Roberto Viola
875764ac5c fixing kcal and distance for fitshowtreadmills 2022-10-06 08:46:29 +02:00
David Mason
832fd25edb #948 Set string values in cpp file to lower output size (#972)
* #948 copied settings.qml to qzsettings.h

* #948 removed non-settings content

* #948 adjusted tabs

* #948 converted to C++

* #948 move defaults to next line

* #948 fixed invalid bool value from settings.qml

* #948 converted settings.value

* #948 added settings keys and defaults that are not in settings.qml. Fixed some build errors.

* #948 comment fixes

* #948 fixed comments

* #948 include qzsettings.h

* #948 added missing settings keys that are not in settings.qml

* #948 include qzsettings.h

* #948 fixed comment

* #948 changed settings key name to match the one from settings.qml

* #948 converted a QLatin1String to QStringLiteral in qzsettings.h

* #948 added placeholders for comment/documentation

* #948 added function to qDebug log the settings from the QZSettings constants

* #948 some missing usage of new constants

* #948 removed superfluous )

* #948 restored some defaults reading the settings that were not constants. Added some docs on the settings keys.

* #948 some removal of the commented out old defaults for QSettings.value. having checked they match the default obtained from settings.qml

* #948 updates based on feedback about defaults that differ from settings.qml

* #948 removed most of the remaining commented-out defaults having checked them individually against the constants the were replaced with.

* #948 removed more of the remaining commented-out defaults having checked them individually against the constants the were replaced with.

* #948 another use of settings constant

* #948 added missing keys, write settings to debug log from qzsettings in main.cpp. Sort the qdebug dump from qzsettings by key.

* #948 removed unused variable and settings read.

* #948 removed another commented, previously hardcoded default.

* #948 filled in some @briefs, deleted others where deemed to be self explanatory, or  very device specific. A few remain, for more consideration.

* #948 processed most remaining commented out hardcoded default settings values

* #948
- updates for PR review feedback
- factored out setting of last bluetooth device settings

* #948 restored original user_email defaults, and made the constant for it a QLatin1String (though not actually used)

* #948 restored defaults in homeform::sortTiles

* #948 filled in some more @briefs

* #948 added new nordictrack device setting

* Update proformbike.cpp

* removing the qdebugallsettings from main

* #948 set string values in cpp file to lower output size

Co-authored-by: Roberto Viola <Cagnulein@gmail.com>
2022-10-06 08:45:51 +02:00
Roberto Viola
c526d4e675 trying const char instead of qstring for qzsettings (#971) 2022-10-05 18:20:31 +02:00
Roberto Viola
bb8e0f0417 NordicTrack GX 2.7 U #964 2022-10-05 17:27:20 +02:00
Roberto Viola
9cbf72d594 Schwinn 510T #970 2022-10-05 16:28:13 +02:00
Roberto Viola
df65f0d951 android build fixed 2022-10-05 16:26:08 +02:00
Roberto Viola
2325635b28 NordicTrack GX 2.7 U #964 2022-10-05 14:48:40 +02:00
David Mason
1d9c24ba91 Use of named constants for settings keys and default values (#950)
* #948 copied settings.qml to qzsettings.h

* #948 removed non-settings content

* #948 adjusted tabs

* #948 converted to C++

* #948 move defaults to next line

* #948 fixed invalid bool value from settings.qml

* #948 converted settings.value

* #948 added settings keys and defaults that are not in settings.qml. Fixed some build errors.

* #948 comment fixes

* #948 fixed comments

* #948 include qzsettings.h

* #948 added missing settings keys that are not in settings.qml

* #948 include qzsettings.h

* #948 fixed comment

* #948 changed settings key name to match the one from settings.qml

* #948 converted a QLatin1String to QStringLiteral in qzsettings.h

* #948 added placeholders for comment/documentation

* #948 added function to qDebug log the settings from the QZSettings constants

* #948 some missing usage of new constants

* #948 removed superfluous )

* #948 restored some defaults reading the settings that were not constants. Added some docs on the settings keys.

* #948 some removal of the commented out old defaults for QSettings.value. having checked they match the default obtained from settings.qml

* #948 updates based on feedback about defaults that differ from settings.qml

* #948 removed most of the remaining commented-out defaults having checked them individually against the constants the were replaced with.

* #948 removed more of the remaining commented-out defaults having checked them individually against the constants the were replaced with.

* #948 another use of settings constant

* #948 added missing keys, write settings to debug log from qzsettings in main.cpp. Sort the qdebug dump from qzsettings by key.

* #948 removed unused variable and settings read.

* #948 removed another commented, previously hardcoded default.

* #948 filled in some @briefs, deleted others where deemed to be self explanatory, or  very device specific. A few remain, for more consideration.

* #948 processed most remaining commented out hardcoded default settings values

* #948
- updates for PR review feedback
- factored out setting of last bluetooth device settings

* #948 restored original user_email defaults, and made the constant for it a QLatin1String (though not actually used)

* #948 restored defaults in homeform::sortTiles

* #948 filled in some more @briefs

* #948 added new nordictrack device setting

* Update proformbike.cpp

* removing the qdebugallsettings from main

Co-authored-by: Roberto Viola <Cagnulein@gmail.com>
2022-10-05 14:13:10 +02:00
Roberto Viola
39ba7402d7 ftmsCharacteristicChanged missing on the virtualtreadmill 2022-10-05 08:56:04 +02:00
Roberto Viola
4e29df685a Open Train Program Update Suggestions[REQ] #968 2022-10-05 08:48:12 +02:00
Roberto Viola
d1f5afce4c Include elevation gain in summary email #966 2022-10-05 07:59:13 +02:00
Roberto Viola
641783d90a improving precision in the qdebug in the gpx.cpp 2022-10-04 16:04:24 +02:00
Roberto Viola
7f6cdf82cf Video again, just to show and see #838
float to double conversion for the lat and lon in the gpx file
2022-10-04 15:55:38 +02:00
Roberto Viola
6e414f8e02 Include elevation gain in summary email #966 2022-10-04 14:05:31 +02:00
Roberto Viola
5f41e9a08d NordicTrack GX 2.7 U #964 2022-10-04 12:03:23 +02:00
Roberto Viola
115cbc0fa1 fix desync from ipad to iphone #957 2022-10-03 15:26:14 +02:00
Roberto Viola
a702d7e4c3 android version 2.11.63 2022-10-03 09:01:37 +02:00
Roberto Viola
cbe3f7de78 starting NordicTrack GX 2.7 U #964 2022-10-03 08:10:26 +02:00
Roberto Viola
0803236439 Should NordicTrack Commercial X11i treadmill work with Android app? #961 2022-10-03 07:31:31 +02:00
Roberto Viola
5c8c8881e0 build issue fixed #957 2022-10-02 08:56:18 +02:00
Roberto Viola
1bbca34ca5 writing distance and kcal to iphone #957 2022-10-02 07:22:49 +02:00
Roberto Viola
37e98fa0a6 android version 2.11.62 2022-10-02 06:45:48 +02:00
Roberto Viola
9498aa5501 bidirectional Apple Watch communication to IPad #957 2022-10-01 17:24:59 +02:00
Roberto Viola
e659322a0b removing assert for wrong HR devices 2022-10-01 15:21:06 +02:00
Roberto Viola
b74a5b3f8b also the iphone should connect to the ipad to collecting distance and kcal #958 2022-10-01 07:13:20 +02:00
Roberto Viola
6e2541d1b7 Merge pull request #960 from drmason789/ios_peloton_workaround_default_959 2022-10-01 06:37:02 +02:00
David Mason
647717cd73 #959 changed default for reading ios_peloton_workaround setting to true 2022-10-01 00:22:47 +01:00
Roberto Viola
56a09fad21 Merge pull request #958 from cagnulein/AppleWatchFromIpad
Apple Watch to iPad
2022-09-30 22:31:46 +02:00
Roberto Viola
b156396d1c it's working! (at least the hr) 2022-09-30 22:27:56 +02:00
Roberto Viola
ae1f099703 not tested code, but the idea should works 2022-09-30 16:21:48 +02:00
Roberto Viola
07d62ed9ad trying the bonjour approach 2022-09-30 15:53:41 +02:00
Roberto Viola
a8cf95380c adding the multicast entitlement 2022-09-29 13:55:10 +02:00
Roberto Viola
48f2d479a3 first test for Apple Watch on iPad 2022-09-29 12:15:20 +02:00
Roberto Viola
67515b94c9 adding issuehunt account 2022-09-29 10:09:03 +02:00
Roberto Viola
f1b05c5975 #923 horizon profiles can't accept letters 2022-09-28 17:27:43 +02:00
Roberto Viola
2e1d3b03c7 iOS version 2.11.62 2022-09-28 16:54:31 +02:00
Roberto Viola
79e3be71ca Merge pull request #951 from cagnulein/horizontreadmill7_4
Horizon treadmill 7.4
2022-09-28 16:52:16 +02:00
Roberto Viola
82717a6775 Revert "trying to fix some strange init situation #923"
This reverts commit f4b9be340f.
2022-09-28 15:09:41 +02:00
Roberto Viola
1f0582e0d0 license retry 2022-09-28 14:58:29 +02:00
Roberto Viola
f4b9be340f trying to fix some strange init situation #923 2022-09-28 09:52:57 +02:00
Roberto Viola
43d6e6c233 removed the - 500 meter offset from fit file (strava seems to doesn't consider it)
https://www.strava.com/activities/7873313493
2022-09-27 09:39:02 +02:00
Roberto Viola
2e608cae22 Resistance control BH Fitness i.CARBON BIKE DUAL H8705LW with the DualKit FTMS Extension #912 2022-09-26 14:28:56 +02:00
Roberto Viola
0d8dd957ad fixing build error on iOS 2022-09-26 11:32:36 +02:00
Roberto Viola
810391f03b Apple Watch/Health integration - indoor walk for treadmill instead of indoor cycle #924 2022-09-26 11:14:01 +02:00
Roberto Viola
386484d03b Resistance control BH Fitness i.CARBON BIKE DUAL H8705LW with the DualKit FTMS Extension #912 2022-09-26 10:54:14 +02:00
Roberto Viola
2c2436a430 Resistance control BH Fitness i.CARBON BIKE DUAL H8705LW with the DualKit FTMS Extension #912 2022-09-26 09:58:58 +02:00
Roberto Viola
06c178cbff fixing profiles 2022-09-26 08:30:57 +02:00
Roberto Viola
ce22fef00d fixed wrong index and segmentation fault 2022-09-25 09:15:04 +02:00
Roberto Viola
4c49918a97 fixing wrong index #923 2022-09-24 20:24:09 +02:00
Roberto Viola
88344438a7 fixing decimal point on distance on apple watch 2022-09-22 17:25:28 +02:00
Roberto Viola
09d8881b43 profiles for horizon in the settings added 2022-09-22 14:22:29 +02:00
Roberto Viola
83fe4e19ec fixing pid heart (double issue) #427 2022-09-22 12:06:29 +02:00
Roberto Viola
5733889e8a CRC function for updating the profile messages 2022-09-22 08:59:10 +02:00
Roberto Viola
5895f5cc7c Merge branch 'master' into horizontreadmill7_4 2022-09-22 08:08:41 +02:00
Roberto Viola
94830044f6 disabling qml too if the no-gui selector is enabled 2022-09-21 08:10:09 +02:00
Roberto Viola
3200cf2b28 PID function a little pushy #427 2022-09-20 14:34:51 +02:00
Roberto Viola
38cb8f4ccd Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-09-20 11:00:35 +02:00
Roberto Viola
73a20b9980 Avoidance of compiler warning #936 2022-09-20 11:00:33 +02:00
Roberto Viola
57b06c2143 Merge pull request #937 from cagnulein/Speed-Sensor
Speed Sensor #935
2022-09-20 10:22:30 +02:00
Roberto Viola
583ab09dc4 fixing battery cscbike issue 2022-09-20 10:18:33 +02:00
Roberto Viola
67a5f8612f fixing memory overflow 2022-09-20 09:43:40 +02:00
Roberto Viola
14c91a308b Profiles seem to overwrite each other #947 2022-09-20 08:57:49 +02:00
Roberto Viola
8995cf866c disabling HR from FTMS rower is now possible 2022-09-20 08:44:35 +02:00
Roberto Viola
3808619f3e reverting tunturi fix 2022-09-18 19:40:18 +02:00
Roberto Viola
3206a28199 trying to fix communication error on TUNTURI_2 #920 2022-09-18 18:56:43 +02:00
Roberto Viola
216e6874b2 Tunturi E60 Performance combatibly (Discussion #920)Tunturi E60 Performance combatibly (Discussion #920) 2022-09-18 16:06:56 +02:00
Roberto Viola
28aaf7fbff Bodytone DS25 2022-09-18 15:41:06 +02:00
Roberto Viola
55d4467886 Horizon 7.4 Treadmill starts on its own after app launch #923 2022-09-16 16:17:41 +02:00
Roberto Viola
f1887b7ea1 Horizon 7.4 Treadmill starts on its own after app launch #923 2022-09-16 14:54:58 +02:00
Roberto Viola
a8bc82c2d0 2.11.53 2022-09-16 14:21:21 +02:00
Roberto Viola
3b2dcaef43 Yesoul C1H #944 2022-09-16 13:58:22 +02:00
Roberto Viola
cd217d4f38 Connecting TUNTURI Fitcycle 50i #932 2022-09-16 11:31:31 +02:00
Roberto Viola
c5e113bd20 bluetooth device setting to max width 2022-09-16 10:10:18 +02:00
Roberto Viola
d63eafe0b3 fixed build issue #838 2022-09-16 09:59:29 +02:00
Roberto Viola
ea69aa2251 adding the videotimestamp #838 2022-09-16 09:52:46 +02:00
Roberto Viola
e697842df7 Merge pull request #941 from cagnulein/quit_button
Quit option #939
2022-09-15 08:41:28 +02:00
Roberto Viola
909bc2dbc5 use "nickname" setting to profiles name #923 2022-09-14 15:14:13 +02:00
Roberto Viola
d152c5d9c6 Quit option #939 2022-09-14 10:47:16 +02:00
Roberto Viola
dad642e82d trying to remove profiles #923 2022-09-14 10:32:27 +02:00
Roberto Viola
c3d757a872 Connecting TUNTURI Fitcycle 50i #932 2022-09-12 15:16:57 +02:00
Roberto Viola
a1cd69d68f Horizon 7.4 Treadmill starts on its own after app launch #923 2022-09-12 14:48:23 +02:00
Roberto Viola
cd6edddea0 Horizon 7.4 Treadmill starts on its own after app launch #923 2022-09-12 14:04:24 +02:00
Roberto Viola
22a8352963 Speed Sensor #935 2022-09-12 11:11:04 +02:00
Roberto Viola
997b04ee54 Horizon GR7 Spin Bike #477
bike without the 2AD2 characteristic
2022-09-12 10:30:15 +02:00
Roberto Viola
835b1c3956 Horizon 7.4 Treadmill starts on its own after app launch #923 2022-09-12 10:16:57 +02:00
Roberto Viola
097e23d20b Support for Whipr kayak please #653 2022-09-12 08:15:42 +02:00
Roberto Viola
51e55a81e7 Video again, just to show and see #838 2022-09-10 21:01:44 +02:00
Roberto Viola
95eeae56cc Connecting TUNTURI Fitcycle 50i #932 2022-09-10 19:06:04 +02:00
Roberto Viola
90278bd6b2 ios 2.11.49 2022-09-10 17:21:37 +02:00
Roberto Viola
32c0019f89 fixing ftms rower bug in the kcal metric 2022-09-10 17:14:48 +02:00
Roberto Viola
f8df2c580b Open Video again, just to show and see #838 2022-09-10 13:10:40 +02:00
Roberto Viola
38dce24e26 Kickr Rollr #934 2022-09-10 13:09:21 +02:00
Roberto Viola
5bfa16ace1 Horizon 7.4 Treadmill starts on its own after app launch #923 2022-09-09 14:43:21 +02:00
Roberto Viola
7b0819dce2 Horizon GR7 Spin Bike #477 2022-09-09 13:56:21 +02:00
Roberto Viola
c349e3d6e4 HR fixed for wifi based devices 2022-09-09 09:38:14 +02:00
Roberto Viola
e6a3ce0d3c Video again, just to show and see (Issue #838) 2022-09-09 09:26:36 +02:00
Roberto Viola
85f8d4454f Merge pull request #928 from cagnulein/VideoWorkoutFooter
Video Workout footer
2022-09-08 20:21:36 +02:00
Roberto Viola
3ea6780fe7 version 2.11.46 2022-09-08 20:17:07 +02:00
Roberto Viola
8c2598f2c6 Video again, just to show and see #838 2022-09-08 20:16:06 +02:00
Roberto Viola
6c987ef4bf Merge pull request #930 from drmason789/discovery_927 2022-09-07 21:46:39 +02:00
David Mason
970915996a #927 log a qDebug when stopDiscovery is called when the discovery agent is null 2022-09-07 20:42:32 +01:00
David Mason
7159812dbc #927 route starting and stopping of bluetooth discovery through new functions startDiscovery() and stopDiscovery() 2022-09-07 20:17:51 +01:00
Roberto Viola
515ec1605b faketreadmill HR fixed 2022-09-07 21:14:52 +02:00
Roberto Viola
00802d1374 qz immediately crashes (Issue #929) 2022-09-07 21:03:00 +02:00
Roberto Viola
428f07dc6f Video again, just to show and see (Issue #838) 2022-09-07 20:55:45 +02:00
Roberto Viola
dcfb1f9588 Video again, just to show and see #838 2022-09-07 16:52:24 +02:00
Roberto Viola
5736cc6a97 Horizon 7.4 Treadmill starts on its own after app launch #923 2022-09-07 16:48:59 +02:00
Roberto Viola
146ebd156c Video again, just to show and see #838 2022-09-07 15:18:37 +02:00
Roberto Viola
0ad2c37dcb Video again, just to show and see #838 2022-09-07 12:09:08 +02:00
Roberto Viola
253244abda typo fixed! 2022-09-07 08:34:32 +02:00
Roberto Viola
0ac3d3e944 version 2.11.43 2022-09-06 15:52:35 +02:00
Roberto Viola
c6b1398aa9 Horizon 7.4 Treadmill starts on its own after app launch #923 2022-09-06 15:45:55 +02:00
Roberto Viola
4ba6862c61 Cant enter colon for times in iOS app under pace options #926 #838 2022-09-06 15:36:18 +02:00
Roberto Viola
9066c4e02a typo fixed 2022-09-06 12:26:42 +02:00
Roberto Viola
9349996989 adding some debug to changeTimestamp 2022-09-06 09:25:31 +02:00
Roberto Viola
da5157970a Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-09-06 09:18:40 +02:00
Roberto Viola
28efbcdd9b Apple Watch/Health integration - indoor walk for treadmill instead of indoor cycle #924 2022-09-06 09:18:29 +02:00
Roberto Viola
10200c1e29 Horizon 7.4 Treadmill starts on its own after app launch #923 2022-09-06 08:45:41 +02:00
Roberto Viola
e37e0853d1 Video again, just to show and see #838 2022-09-06 08:36:15 +02:00
Roberto Viola
4b464ba041 sole f80 treadmill HR builtin handled 2022-09-05 15:56:31 +02:00
Roberto Viola
ff7863a25c Horizon 7.4 Treadmill starts on its own after app launch #923
pause handled
2022-09-05 15:46:44 +02:00
Roberto Viola
72af1701a2 Apple Watch/Health integration - indoor walk for treadmill instead of indoor cycle (Issue #924) 2022-09-05 11:36:23 +02:00
Roberto Viola
487ff2e8e9 Apple Watch/Health integration - indoor walk for treadmill instead of indoor cycle (Issue #924) 2022-09-05 11:23:15 +02:00
Roberto Viola
6cda7cd02c Apple Watch/Health integration - indoor walk for treadmill instead of indoor cycle (Issue #924) 2022-09-05 11:05:01 +02:00
Roberto Viola
77b34e2f41 start event added for horizon treadmill 7.4 2022-09-03 16:26:42 +02:00
Roberto Viola
0e27c87480 Horizon 7.4 Treadmill starts on its own after app launch (Issue #923) 2022-09-03 11:04:50 +02:00
Roberto Viola
fb1bac5e5e "Virtual Treadmill" #917 2022-09-02 09:16:41 +02:00
Roberto Viola
27ea164da1 Spirit Xt485 Treadmill Connection (Log file attached) #918 2022-09-02 08:43:57 +02:00
Roberto Viola
2ec9abc4ad Video again, just to show and see #838
trying a different videorate approach
2022-09-02 08:03:55 +02:00
Roberto Viola
bb1d903e07 Debug log using qdomyos on a proform Tour de France 10.0 bike #877 2022-08-31 14:04:46 +02:00
Roberto Viola
9ccb1ef5d5 Debug log using qdomyos on a proform Tour de France 10.0 bike #877 2022-08-31 12:08:32 +02:00
Roberto Viola
065ee078a2 Merge pull request #913 from cagnulein/android_api_31 2022-08-30 15:27:16 +02:00
Roberto Viola
5635f54bb4 yesoul bike doesn't send bluetooth name on android 13 2022-08-30 14:56:25 +02:00
Roberto Viola
b0f0236dbf printing manufacturer data 2022-08-30 11:50:51 +02:00
Roberto Viola
e19e077e15 Merge branch 'master' into android_api_31 2022-08-28 08:48:44 +02:00
Roberto Viola
7c08ca1bf5 Additional Bluetooth Remote Functionality #914 2022-08-28 08:47:03 +02:00
Roberto Viola
273208c8a9 android 13 bluetooth permissions 2022-08-27 15:09:55 +02:00
Roberto Viola
ac901cb2d2 android compiled in debug for signal issues 2022-08-26 11:55:49 +02:00
Roberto Viola
cb708d6ae7 Debug log using qdomyos on a proform Tour de France 10.0 bike (Issue #877) 2022-08-25 11:59:30 +02:00
Roberto Viola
435e9d58db targetting android 33 api level 2022-08-25 11:17:21 +02:00
Roberto Viola
07f94db63e trying to port to android api 31 2022-08-25 08:45:51 +02:00
Roberto Viola
480099ffca android:exported=true 2022-08-25 08:05:50 +02:00
Roberto Viola
1b1130e80b proformwifitreadmill speed forced fixed 2022-08-24 19:45:38 +02:00
Roberto Viola
da753ccef4 reverting android target sdk 2022-08-24 11:34:29 +02:00
Roberto Viola
dbcbaec5e7 Improve use of polymorphism in bluetooth class (Issue #887) 2022-08-23 11:16:28 +02:00
Roberto Viola
93a712201e targetSDK for android 33 2022-08-23 11:12:37 +02:00
Roberto Viola
7d985f2f65 targetsdkversion = 31 for android 2022-08-23 10:46:23 +02:00
Roberto Viola
f92b4c4634 version 2.11.31 2022-08-22 15:20:12 +02:00
Roberto Viola
a599e4ce4b Support for Whipr kayak please #653 2022-08-22 14:24:20 +02:00
Roberto Viola
d9c4b2b637 Improve use of polymorphism in bluetooth class #887 2022-08-22 10:03:47 +02:00
Roberto Viola
347bedd1be Improve use of polymorphism in bluetooth class (Issue #887) 2022-08-22 10:02:00 +02:00
Roberto Viola
b34a91e2de Merge pull request #898 from drmason789/resistance_tile_labelling_895
#895 introduced "typedef int16_t resistance_t;" and used throughout code
2022-08-22 09:57:10 +02:00
Roberto Viola
b099f63f0a added assert to connects 2022-08-22 09:56:09 +02:00
Roberto Viola
8219845f62 Improve use of polymorphism in bluetooth class (Issue #887) 2022-08-21 22:38:26 +02:00
Roberto Viola
687764fe89 iFit Virtual Device Implementation #441 2022-08-21 22:21:03 +02:00
Roberto Viola
0b27aedb22 Merge pull request #907 from drmason789/chronobike_templatemanagers_906 2022-08-21 21:40:56 +02:00
David Mason
2c7b5911d6 #906 add chronobike to template managers 2022-08-21 19:44:06 +01:00
Roberto Viola
4912dd1fd3 reverting to double for peloton_resistance in order to fix #901
c986b9ad4b
2022-08-20 11:08:22 +02:00
Roberto Viola
db17a2ff11 Merge pull request #903 from drmason789/window_title_902 2022-08-19 00:20:49 +02:00
David Mason
886b596339 #902 changed main window title to "qDomyos-Zwift" 2022-08-18 21:53:38 +01:00
David Mason
7cd10a0f56 #895 changed #define to typedef 2022-08-18 09:38:02 +01:00
David Mason
a3033db052 #895 changed a few more resistance-related parameter types to resistance_t 2022-08-17 21:40:25 +01:00
Roberto Viola
2f5eff7282 Elliptical NORDICTRACK C5.5 (Issue #882) 2022-08-16 19:37:08 +02:00
Roberto Viola
7952816601 Tunturi Bikes #897 2022-08-16 15:35:26 +02:00
Roberto Viola
7b0021a09f Elliptical NORDICTRACK C5.5 #882 2022-08-15 22:39:27 +02:00
David Mason
6834aa8366 #895 introduced "#define resistance_t int16_t" and used throughout code 2022-08-14 00:12:04 +01:00
Roberto Viola
d9596d5000 Resistance tile labelling indicates %, but it's not really #895 2022-08-13 21:32:58 +02:00
Roberto Viola
01288594c7 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-08-11 11:20:03 +02:00
Roberto Viola
9da9d58597 speed = 0 cause the video to pause 2022-08-11 11:20:00 +02:00
Roberto Viola
370ddb1002 trying to fix min_resistance issue for proform wifi bikes 2022-08-11 11:06:55 +02:00
Roberto Viola
ca95661894 Merge pull request #891 from drmason789/master
#890 fixed resource leak in PathController: don't use a QGeoPositionI…
2022-08-11 10:31:31 +02:00
Roberto Viola
71cb280dae Developer Documentation #852 2022-08-11 09:25:04 +02:00
David Mason
1705511bc8 Merge branch 'cagnulein:master' into master 2022-08-10 22:18:37 +01:00
Roberto Viola
32e9e68397 Elliptical NORDICTRACK C5.5 #882 2022-08-10 18:12:25 +02:00
David Mason
8d671e3e9f #890 fixed resource leak in PathController: don't use a QGeoPositionInfoSource that delivers an invalid last known position. Also added some logging. 2022-08-10 01:19:21 +01:00
Roberto Viola
c986b9ad4b trying to fix peloton resistance color 2022-08-09 10:30:56 +02:00
Roberto Viola
422c6f3e22 Elliptical NORDICTRACK C5.5 #882 2022-08-07 15:49:44 +02:00
Roberto Viola
7769f9b507 Elliptical NORDICTRACK C5.5 #882 2022-08-07 12:41:56 +02:00
Roberto Viola
6dbebfaa6f Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-08-07 09:53:54 +02:00
Roberto Viola
12bc5fd924 Open Proform SE inclination #871 2022-08-07 09:43:09 +02:00
Roberto Viola
45a3d7c9e7 iOS version 2.11.24 2022-08-07 09:41:19 +02:00
Roberto Viola
bde66ad790 Echelon Row, the app connects to the rower but no metrics are getting reported. (Issue #886) 2022-08-07 09:36:29 +02:00
Roberto Viola
4575da3c8e docs/10_installation.md is outdated due to the addition of the multimedia module in the .pro file (Issue #885) 2022-08-07 08:28:55 +02:00
Roberto Viola
b9fab4b5e2 version 2.11.23 2022-08-07 08:27:29 +02:00
Roberto Viola
86138e0dec Echelon Row, the app connects to the rower but no metrics are getting reported. #886 2022-08-07 08:26:28 +02:00
Roberto Viola
e117ed5b87 Cable Bluetooth converter does not populate qdomyos screen (Issue #884) 2022-08-06 22:47:05 +02:00
Roberto Viola
73742faf1a KingSmith WalkingPad X21 (Issue #791) 2022-08-06 20:14:01 +02:00
Roberto Viola
88e4be6df3 Elliptical NORDICTRACK C5.5 (Issue #882) 2022-08-06 20:10:32 +02:00
Roberto Viola
809a265231 KingSmith WalkingPad X21 #791 2022-08-06 17:35:49 +02:00
Roberto Viola
eb37c918bb Open [BUG] Echelon Rower not able to move in Holofit when set as Virtual Rower #876 2022-08-06 17:02:13 +02:00
Roberto Viola
543424075f iOS version 2.11.19 2022-08-06 16:00:04 +02:00
Roberto Viola
c2ceacdeb8 fix build issue 2022-08-06 15:40:25 +02:00
Roberto Viola
244a45b779 Elliptical NORDICTRACK C5.5 #882 2022-08-06 15:29:21 +02:00
Roberto Viola
6937b2549c Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-08-06 15:26:00 +02:00
Roberto Viola
3684072af2 Elliptical NORDICTRACK C5.5 #882 2022-08-06 15:25:57 +02:00
Roberto Viola
c36bb2604e Elliptical NORDICTRACK C5.5 #882 2022-08-05 15:46:54 +02:00
Roberto Viola
042a228489 [BUG] Virtufit iconsole HRT 2.1 - Unable to connect #688 2022-08-05 08:44:53 +02:00
Roberto Viola
bcafc7c1e3 iOS version 2.11.17 2022-08-04 15:49:06 +02:00
Roberto Viola
5a4b2fd418 Proform SE inclination #871 2022-08-04 15:26:22 +02:00
Roberto Viola
7735fd7636 Treadmill Proform 9 doesn’t change speed from app #805 2022-08-04 14:57:49 +02:00
Roberto Viola
8b876ac17f footer added and it's working! 2022-08-03 17:56:18 +02:00
Roberto Viola
ddab1862d0 [BUG] Peloton and Echelon auto resistance #879 2022-08-03 15:14:58 +02:00
Roberto Viola
0176892025 Proform Premier 900 Treadmill speed and incline forcing 2022-08-03 11:16:21 +02:00
Roberto Viola
0c766b2d53 [BUG] Virtufit iconsole HRT 2.1 - Unable to connect #688 2022-08-02 16:42:13 +02:00
Roberto Viola
9cd135b845 Proform Premier 900 Treadmill 2022-08-02 10:41:03 +02:00
Roberto Viola
ebc21c90b4 NSCameraUsageDescription added 2022-08-01 11:02:05 +02:00
Roberto Viola
c30ec964f1 Treadmill Proform 9 doesn’t change speed from app #805 2022-08-01 09:33:10 +02:00
Roberto Viola
95fc04eede Echelon Rower not able to move in Holofit when set as Virtual Rower #876 2022-08-01 09:14:09 +02:00
Roberto Viola
93e94efa40 Merge pull request #875 from cagnulein/VideoPlayback
Video playback
2022-08-01 08:32:17 +02:00
Roberto Viola
83bf333cba video tag in the gpx handled 2022-08-01 08:26:58 +02:00
Roberto Viola
d4d2d722c8 iOS it's working! 2022-07-29 13:48:13 +02:00
Roberto Viola
5d92aa5c07 adding CoreVideo 2022-07-29 11:16:18 +02:00
Roberto Viola
76164c1d07 adding other iOs libraries 2022-07-29 11:03:24 +02:00
Roberto Viola
73747d65b1 fixing iOS issue with video playback (not fixed yet) 2022-07-29 10:33:46 +02:00
Roberto Viola
99c7886e16 Octane Fitness Zr7 (Issue #864) 2022-07-29 08:47:54 +02:00
Roberto Viola
f5ef731356 using QML video for better performance 2022-07-28 15:25:16 +02:00
Roberto Viola
6f13a23bfe changing playback ratio only when is needed 2022-07-28 12:18:14 +02:00
Roberto Viola
bfd43d2a03 video playback with current position and rate works! 2022-07-28 12:10:35 +02:00
Roberto Viola
4934c6e6be video playback works! 2022-07-28 11:08:32 +02:00
Roberto Viola
ac5c84971e Octane Fitness Zr7 #864 2022-07-28 09:13:45 +02:00
Roberto Viola
668584432c No watt output on SportPlus SP-HT-1004-iE with latest version #874 2022-07-28 09:00:44 +02:00
Roberto Viola
03393fc314 Proform SE inclination #871 2022-07-27 10:27:29 +02:00
Roberto Viola
bc2cfa676e Revert "Adding watts to graph based n users current ftp as entered in the app #849"
This reverts commit 8af879cb25.
2022-07-26 16:31:12 +02:00
Roberto Viola
8af879cb25 Adding watts to graph based n users current ftp as entered in the app #849 2022-07-26 09:48:00 +02:00
Roberto Viola
0b37c18c15 Octane Fitness Zr7 #864 2022-07-26 08:18:01 +02:00
Roberto Viola
ee35c03260 Proform SE inclination #871 2022-07-25 16:26:30 +02:00
Roberto Viola
b46cadac77 Octane Fitness Zr7 #864 2022-07-25 09:47:55 +02:00
Roberto Viola
cf264f2f0c Proform SE inclination #871 2022-07-24 14:40:23 +02:00
Roberto Viola
e104ff33e0 Proform SE inclination #871 #779 2022-07-24 11:48:17 +02:00
Roberto Viola
2d0807777e Open Spirit XT385 not able to get working, Gets discovered but can't see Qdomyos in Zwift Discovery. #833 2022-07-24 11:13:33 +02:00
Roberto Viola
f660f8d77a fixed issue with speed based on power when the inclination goes under -5 2022-07-24 08:24:06 +02:00
Roberto Viola
d32e0e7cf3 Spirit XT385 not able to get working, Gets discovered but can't see Qdomyos in Zwift Discovery. (Issue #833) 2022-07-24 08:06:32 +02:00
Roberto Viola
61c4a60dd4 Octane Fitness Zr7 (Issue #864) 2022-07-24 08:00:06 +02:00
Roberto Viola
bb472a74ab Spirit XT385 not able to get working, Gets discovered but can't see Qdomyos in Zwift Discovery. #833 2022-07-23 12:28:16 +02:00
Roberto Viola
eebda0dbb7 fixed color on peloton resistance 2022-07-23 12:16:29 +02:00
Roberto Viola
c894e042a5 Weird PZE workout #867 2022-07-23 12:12:19 +02:00
Roberto Viola
ef70b97e80 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-07-23 08:33:56 +02:00
Roberto Viola
4ddb8ae638 fixed strava color in the settings 2022-07-23 08:33:54 +02:00
Roberto Viola
a70b2a23dc Octane Fitness Zr7 #864 2022-07-22 16:57:30 +02:00
Roberto Viola
2de9174f35 Octane Fitness Zr7 #864 2022-07-22 16:55:06 +02:00
Roberto Viola
3248f8b290 Octane Fitness Zr7 #864 2022-07-22 10:48:18 +02:00
Roberto Viola
b63b4b2f3b Echelon Rower Connetion Issues #866 2022-07-22 08:34:16 +02:00
Roberto Viola
13965200e6 Elite Suito-T (Issue #862) 2022-07-21 19:11:07 +02:00
Roberto Viola
6f151ac57c Octane Fitness Zr7 (Issue #864) 2022-07-21 10:53:38 +02:00
Roberto Viola
d09a2cf96c fixing keyboard on settings with the comma, on iOS there is an issue with the decimal separator 2022-07-20 08:48:24 +02:00
Roberto Viola
e4e6e4b489 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-07-19 17:27:01 +02:00
Roberto Viola
99c139743c new type of echelon rower added 2022-07-19 17:26:57 +02:00
Roberto Viola
a337aaf9dd iOS version 2.11.1 2022-07-19 16:40:27 +02:00
Roberto Viola
1480871ffd Octane Fitness Zr7 #864 2022-07-19 16:18:43 +02:00
David Mason
be68d6c00e #856 documentation on some members (#858)
* #856 comment metadata on some bluetoothdevice members

* #856 steering doc

* #856 draft comments on public and protected bluetoothdevice members

* #856 draft comments on public and protected bluetoothdevice members

* #856 METs comments

* #856 adjusted comments, made some bike-specific comments general

* #856 comment updates from PR review
2022-07-18 08:49:45 +02:00
Roberto Viola
fe4b82740d NordicTrack Commercial 2950 iFit Embedded Wifi Treadmill (2021 model) #815 udp send fixed 2022-07-15 15:11:16 +02:00
Roberto Viola
617ce05cc0 new fit sdk imported for fit decoding 2022-07-15 11:03:12 +02:00
Roberto Viola
e04eecec5f VO2Max calculation #859 2022-07-14 12:01:53 +02:00
Roberto Viola
724af51807 circuit gpx fixed 2022-07-13 21:56:45 +02:00
Roberto Viola
ce470dfc6a adding first point to gpx to close the circuit 2022-07-13 18:07:43 +02:00
Roberto Viola
b1c3b06df8 fixing build errors 2022-07-13 16:31:17 +02:00
Roberto Viola
0c7e66715f adding lap feature for gpx with a circuit 2022-07-13 16:29:02 +02:00
Roberto Viola
aa938e11af Spirit XT385 not able to get working, Gets discovered but can't see Qdomyos in Zwift Discovery. #833 2022-07-13 09:49:34 +02:00
Roberto Viola
38662f6b36 Blank Screen/No Metrics after Class #857 2022-07-13 09:49:21 +02:00
Roberto Viola
f9c9428928 Spirit XT385 not able to get working, Gets discovered but can't see Qdomyos in Zwift Discovery. #833 2022-07-12 11:51:28 +02:00
Roberto Viola
432a389f70 fixing udp send for nordictrackifitadbtreadmill 2022-07-12 08:09:06 +02:00
Roberto Viola
64e29f9bb9 fixing peloton resistance calculated for proformellipticaltrainer 2022-07-11 17:57:18 +02:00
Roberto Viola
aa358764d5 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-07-11 16:22:19 +02:00
Roberto Viola
fd86b4cdac using 1 only socket for nordictrackifitadbtreadmill 2022-07-11 16:22:16 +02:00
Roberto Viola
941f86ee56 Fixing cesium windows (#854)
* Update main.yml

* Update main.yml

* Update main.yml

* -static-libstdc++ -static-libgcc

* Update qdomyos-zwift.pro

* Update main.yml

* Update qdomyos-zwift.pro

* Update main.yml
2022-07-08 14:23:08 +02:00
Roberto Viola
88bdd03145 reverting -static-libstdc++ -static-libgcc 2022-07-08 11:50:12 +02:00
Roberto Viola
6d983c38b4 -static-libstdc++ and -static-libgcc 2022-07-08 11:49:27 +02:00
Roberto Viola
39154a1a5d mingw fix 2022-07-08 09:40:49 +02:00
Roberto Viola
b760e53468 porting mingw32 to 32bit 2022-07-08 09:38:27 +02:00
Roberto Viola
3c8f8a5e00 trying to fix cesium on windows porting mingw to 32bit 2022-07-08 09:14:53 +02:00
Roberto Viola
2320a048b4 Merge pull request #853 from drmason789/master 2022-07-08 05:02:08 +01:00
David Mason
60cb240faf Update 10_Installation.md
Removed additional sudo and changed library name to one that worked.
2022-07-08 02:39:55 +01:00
Roberto Viola
07e1585f85 trying to fixing cesium on windows build 2022-07-07 17:34:07 +02:00
Roberto Viola
8d4ddf128b No charts in email or targets for Peloton tread classes #850 2022-07-07 17:21:28 +02:00
Roberto Viola
7c96e758a7 version 2.10.116 2022-07-07 17:18:27 +02:00
Roberto Viola
c6be5d52f3 No charts in email or targets for Peloton tread classes #850 2022-07-07 17:17:23 +02:00
Roberto Viola
19fafe9d43 NordicTrack Commercial 2950 iFit Embedded Wifi Treadmill (2021 model) #815
sending request speed and inclination
2022-07-07 12:25:21 +02:00
Roberto Viola
59fa3f9861 fixed build issue 2022-07-07 09:21:44 +02:00
Roberto Viola
e7b31a09b8 version 2.10.115 2022-07-07 09:06:20 +02:00
Roberto Viola
c01db89c54 NAN issue fixed #850 2022-07-07 09:04:06 +02:00
Roberto Viola
88e8fe4d66 I-Rower #842 2022-07-05 15:09:11 +02:00
Roberto Viola
03af7a803a iOs version 2.10.114 2022-07-05 10:14:24 +02:00
Roberto Viola
92322102e0 adding mutex on trainprogram to avoid crash on stop 2022-07-05 10:04:14 +02:00
Roberto Viola
236b159533 Treadmill Proform 9 doesn’t change speed from app #805 init removed for now 2022-07-05 10:03:33 +02:00
Roberto Viola
737425dd4e Omega Z treadmill #841 2022-07-05 09:05:47 +02:00
Roberto Viola
41e315fb7a Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-07-05 08:50:07 +02:00
Roberto Viola
591560b747 GPX Ride crashed #851 2022-07-05 08:40:50 +02:00
Roberto Viola
a5bff8f1c4 Spirit XT385 not able to get working, Gets discovered but can't see Qdomyos in Zwift Discovery. #833 2022-07-04 10:44:35 +02:00
Roberto Viola
837a486b8d fixed missing initialization of smtpclient pointers 2022-07-04 09:51:04 +02:00
Roberto Viola
950de8f81a iOS version 2.10.113 2022-07-02 12:11:55 +02:00
Roberto Viola
eba968b48f Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-07-02 12:02:37 +02:00
Roberto Viola
429279d5dd No charts in email or targets for Peloton tread classes #850 2022-07-02 12:02:34 +02:00
Roberto Viola
0fd31d8015 Update 10_Installation.md 2022-07-01 10:58:35 +02:00
Roberto Viola
56e6721625 version 2.10.112 2022-06-30 10:39:48 +02:00
Roberto Viola
63e4d34e68 fixing ios 2d maps 2022-06-30 10:36:29 +02:00
Roberto Viola
b57171f9ae ios build fixed 2022-06-30 10:09:10 +02:00
Roberto Viola
31523786d3 Latest broken on Linux #848 2022-06-30 09:29:49 +02:00
Roberto Viola
60c3d94660 android version 2.10.111 2022-06-29 15:33:25 +02:00
Roberto Viola
2f6bf8d05a Merge pull request #847 from cagnulein/gpxviewer
Gpxviewer
2022-06-29 14:31:09 +01:00
Roberto Viola
bec71aad26 added distance and elevation 2022-06-29 15:30:20 +02:00
Roberto Viola
a78ec1aeb7 map loaded correctly! 2022-06-29 15:07:03 +02:00
Roberto Viola
f5eb789d64 googlemap qml added to memory to reduce loading and cesium API consumptions 2022-06-27 09:09:12 +02:00
Roberto Viola
944a5661bd Treadmill Proform 9 doesn’t change speed from app #805 2022-06-27 08:38:01 +02:00
Roberto Viola
12afa4531b transparent background on chart on 3d maps 2022-06-26 17:10:57 +02:00
Roberto Viola
68db10712f cesium module simplified! 2022-06-26 17:02:11 +02:00
Roberto Viola
5f44f9e5b4 added avg inclination for gpx to 100m and also fixed bike smooth movement 2022-06-26 15:33:15 +02:00
Roberto Viola
89ae34893d inclination chart on maps3d now show the updated inclination every second 2022-06-25 11:28:05 +02:00
Roberto Viola
67a07d7ac0 min and max resistance settings added to SS2K 2022-06-24 14:33:03 +02:00
Roberto Viola
a786977214 strava workout name matches the gpx file or the workout file 2022-06-24 12:19:10 +02:00
Roberto Viola
eb7fa75e68 fixing color on chartjs on inclination chart 2022-06-24 12:09:06 +02:00
Roberto Viola
16f9ef5775 3d maps view from 400m 2022-06-24 11:49:32 +02:00
Roberto Viola
efb81495cc color and max and min Y to the inclination chart 2022-06-24 11:43:09 +02:00
Roberto Viola
7b13d0e69b new gpx from JC #839 2022-06-24 11:42:40 +02:00
Roberto Viola
93d628f581 scrolling text on trainprogramlist 2022-06-24 11:22:31 +02:00
Roberto Viola
6561014e82 scroll bar fixed in the trainprogram form 2022-06-24 10:48:38 +02:00
Roberto Viola
ee9b040f96 Cesium (#832)
* first version working!

* fixing strange azimuth

* replaced flyto with lookat

* fixing build error

* add a purple box as indicator of the user

* using crosshair image instead of the box

* fixing var error

* added metrics to cesium map

* fixed issues with metrics

* added icons to metrics

* gpx track added (not tested)

* gpx track fixed

* metrics improved

* billboard removed

* approximation of latlon fixed

* filtering azimuth

* smoothing altitude and azimuth differences

* improving smoothness of the map

* fixed camera collision to the ground; added bike model; added altitude to the metrics

* removed useless debug

* fixing altitude in the 3d map

* removed useless UI components and fixed camera collision again

* bike azimuth fixed

* event inclinationNext300Meters added in order to draw a chart in the 3d map

* adding elevation chart

* added key to ignore file

* added selection between 2d and 3d maps for gpx

* enabling fog and lighting

* comment removed

* fixies

* chart Y max size fixed and chart below the metrics always

* fixed position of the chart

* chart ticks disabled

* bike 3d now match the actual value from the GPX file

* added gpx file to bundle
2022-06-24 09:18:30 +02:00
Roberto Viola
74327f1d25 added wifi filter for wifi devices 2022-06-21 10:55:01 +02:00
Roberto Viola
6a4b051406 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-06-21 10:16:46 +02:00
Roberto Viola
9303d6042f resistance remapped for proformellipticaltrainer 2022-06-21 10:16:31 +02:00
Roberto Viola
3efe139da9 Merge pull request #843 from cagnulein/zwo-chart-preview
Zwo chart preview for power zone bike workout
2022-06-21 09:09:54 +01:00
Roberto Viola
cf593a11e6 filter added 2022-06-21 10:08:12 +02:00
Roberto Viola
816b612352 fixing description and tags and also some ZWO file formats 2022-06-20 17:14:26 +02:00
Roberto Viola
f510d0dec5 first commit 2022-06-20 14:38:34 +02:00
Roberto Viola
8d07e3e924 Treadmill Proform 9 doesn’t change speed from app #805 2022-06-20 08:47:02 +02:00
Roberto Viola
4d22e6f6d5 fixing auto resistance for ifit
iFit Virtual Device Implementation #441
2022-06-19 10:13:03 +02:00
Roberto Viola
71dc9875db I-Rower #842 2022-06-19 10:03:13 +02:00
Roberto Viola
46a0695428 inRide sensor #836 2022-06-17 05:43:20 +02:00
Roberto Viola
475f5911c6 Life fitness t5 #834 2022-06-15 15:33:32 +02:00
Roberto Viola
7351e5859e fixed distance mistmaching when following a gpx with 1Hz resolution or more 2022-06-15 09:57:13 +02:00
Roberto Viola
7d27d3d92c Life fitness t5 #834 2022-06-14 16:04:46 +02:00
Roberto Viola
2d4a9d3a80 Life fitness t5 #834 2022-06-14 15:23:31 +02:00
Roberto Viola
8e53a7f6a8 Proform elliptical Proform HIIT Trainer model # PFEL09915.2 #817 peloton resistance approximation 2022-06-14 14:22:47 +02:00
Roberto Viola
f54d211911 Life fitness t5 #834 2022-06-14 08:39:52 +02:00
Roberto Viola
a1d2d6c33c doubling cadence fixed for iOS on running 2022-06-14 08:01:40 +02:00
Roberto Viola
eda84c23cb Life fitness t5 #834 2022-06-13 14:27:15 +02:00
Roberto Viola
e313fdc710 Spirit XG400 #828 fixing wattage 2022-06-13 09:00:23 +02:00
Roberto Viola
3aeb41aecf iOS verson 2.10.104 2022-06-13 08:54:08 +02:00
Roberto Viola
2e6edbce0e Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-06-13 08:50:51 +02:00
Roberto Viola
15d2b3e36a Spirit XT385 not able to get working, Gets discovered but can't see Qdomyos in Zwift Discovery. #833 2022-06-13 08:50:47 +02:00
Roberto Viola
8182bd24a0 Android version 2.10.103 2022-06-12 08:21:48 +02:00
Roberto Viola
511fc1d74a QZ not recognising Garmin speed sensor 2 #826 2022-06-12 07:37:07 +02:00
Roberto Viola
71c5a9ffbb new metrics always written in the fit file for treadmill #827 2022-06-12 07:30:19 +02:00
Roberto Viola
093ba1cc38 renpho erg mode with sensor improved
https://github.com/cagnulein/qdomyos-zwift/discussions/547#discussioncomment-2924583
2022-06-11 17:59:46 +02:00
Roberto Viola
da9e644ecd stride length divided by 2 Step Length, Ground Contact and Vertical Oscillation to a RSC sensor #827 2022-06-11 17:52:44 +02:00
Roberto Viola
b03cc3bc4e peloton walking and running workout types handled 2022-06-11 17:41:25 +02:00
Roberto Viola
8ae702247f cesium testing 2022-06-11 17:32:21 +02:00
Roberto Viola
ecdf6bbeac update ground contact label 2022-06-10 22:43:29 +02:00
Roberto Viola
0f1088cd73 fixing vertical oscillation doesn't reset when the run stops #827 2022-06-10 22:37:03 +02:00
Roberto Viola
a39ccbadc4 fixing build error #827 2022-06-10 22:08:09 +02:00
Roberto Viola
0dbcd90125 Step Length, Ground Contact and Vertical Oscillation to a RSC sensor
#827
2022-06-10 22:05:04 +02:00
Roberto Viola
4917cad8a9 Proform elliptical Proform HIIT Trainer model # PFEL09915.2 #817 init phase fixed 2022-06-10 09:54:53 +02:00
Roberto Viola
0d3691cfa4 switched Sex to Gender 2022-06-09 16:59:48 +02:00
Roberto Viola
1418067957 calories calculated Heart rate based for fake device 2022-06-09 12:20:28 +02:00
Roberto Viola
258e9b95b1 Step Length, Ground Contact and Vertical Oscillation to a RSC sensor #827 2022-06-09 12:04:14 +02:00
Roberto Viola
744d20e39c Spirit XG400 #828 resistance fixed 2022-06-09 11:01:06 +02:00
Roberto Viola
f6c9354717 refresh bluetooth button doesn't work on windows #807 #825 2022-06-09 09:47:47 +02:00
Roberto Viola
d650ad0916 fixed incorrect range in the peloton resistance color 2022-06-09 09:38:11 +02:00
Roberto Viola
d5b8c6224f renpho bike and power pedal in erg mode
https://github.com/cagnulein/qdomyos-zwift/discussions/547#discussioncomment-2910584
2022-06-09 09:05:58 +02:00
Roberto Viola
3b5369a489 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-06-09 08:50:30 +02:00
Roberto Viola
c35c23e2c5 Treadmill Proform 9 doesn’t change speed from app #805 2022-06-09 08:50:26 +02:00
Roberto Viola
87e65e61c2 iOS version 2.10.100 2022-06-08 19:21:36 +02:00
Roberto Viola
7ab6284574 WalkingPad X21 #829 2022-06-08 19:20:36 +02:00
Roberto Viola
de50a5af05 iOS version 2.10.99 2022-06-08 09:09:43 +02:00
Roberto Viola
5d9103244b version 2.10.99 2022-06-08 09:00:42 +02:00
Roberto Viola
9d45fcc263 Spirit XG400 #828 2022-06-08 08:55:26 +02:00
Roberto Viola
d9001edf3c added InstantaneousStrideLength to Stryd module 2022-06-08 08:43:19 +02:00
Roberto Viola
63284d4df8 Merge pull request #816 from cagnulein/NordicTrack-Commercial-2950
NordicTrack Commercial 2950 iFit Embedded Wifi Treadmill (2021 model)
2022-06-07 14:44:06 +01:00
Roberto Viola
f0d1e510de Merge branch 'NordicTrack-Commercial-2950' of https://github.com/cagnulein/qdomyos-zwift into NordicTrack-Commercial-2950 2022-06-07 15:42:37 +02:00
Roberto Viola
b56cd8e51f fixing before merge to master 2022-06-07 15:13:06 +02:00
Roberto Viola
d50c6e5a09 Merge branch 'master' into NordicTrack-Commercial-2950 2022-06-07 14:02:37 +01:00
Roberto Viola
f83f362131 Update nordictrackifitadbtreadmill.cpp 2022-06-07 12:18:15 +02:00
Roberto Viola
2dc1d33874 #817 fixing cadence and peloton resistance 2022-06-07 09:05:27 +02:00
Roberto Viola
3c3435c69d #805 enabling proform 9 setting back 2022-06-07 08:20:26 +02:00
Roberto Viola
d35f63f8ea treadmill force speed moved to treadmill options 2022-06-06 11:27:47 +02:00
Roberto Viola
1cda750421 new way to ERG mode on renpho bike with assioma pedals
https://github.com/cagnulein/qdomyos-zwift/discussions/547#discussioncomment-2885686
2022-06-06 09:20:08 +02:00
Roberto Viola
59b5927710 Doubling Power Option for separate power sensors. #822 2022-06-06 09:06:58 +02:00
Roberto Viola
808294f9c9 Treadmill Proform 9 doesn’t change speed from app #805 speed and inclination fixed 2022-06-06 08:59:23 +02:00
Roberto Viola
8e28481ee0 fixed build error 2022-06-06 08:53:16 +02:00
Roberto Viola
7541f8b9f7 Proform elliptical Proform HIIT Trainer model # PFEL09915.2 #817 speed fixed 2022-06-06 08:41:06 +02:00
Roberto Viola
a59231da4e Proform elliptical Proform HIIT Trainer model # PFEL09915.2 #817 peloton resistance tile fixed 2022-06-06 08:33:48 +02:00
Roberto Viola
8d1f225a60 SP-HT-9600iE #814 speed fixed 2022-06-06 08:26:05 +02:00
Roberto Viola
8576d4b207 SP-HT-9600iE #814 speed decimal point fixed 2022-06-06 08:22:13 +02:00
Roberto Viola
18f8707338 Update main.yml 2022-06-05 11:18:58 +02:00
Roberto Viola
6090ec0193 fixed gpx imported when distance from 2 points is 0 2022-06-05 11:18:05 +02:00
Roberto Viola
3f0bda127c win32 and macx releases on debug in order to solve strange crashes issue 2022-06-05 07:47:00 +02:00
Roberto Viola
2c3c051b9e Update 10_Installation.md 2022-06-05 07:21:41 +02:00
Roberto Viola
0261dd46e5 Update main.yml 2022-06-05 07:20:32 +02:00
Roberto Viola
94657779b7 Update main.yml 2022-06-05 00:10:34 +02:00
Roberto Viola
7a3543ac4a fixing crash on startup 2022-06-04 23:48:29 +01:00
Roberto Viola
6699c1d1ce fix typo 2022-06-04 15:44:53 +02:00
Roberto Viola
285cd87a8f Merge branch 'master' into NordicTrack-Commercial-2950 2022-06-04 15:37:59 +02:00
Roberto Viola
60a27c3519 removed adb for upd connection 2022-06-04 15:36:29 +02:00
Roberto Viola
190fb3de80 Merach U3 Pro-Y #820 2022-06-04 10:30:38 +02:00
Roberto Viola
3d673f6b51 speed reading error #817 2022-06-04 09:08:15 +02:00
Roberto Viola
e4528ec9b1 target cadence and target speed for elliptical #817 2022-06-04 08:39:26 +02:00
Roberto Viola
9035c65072 Merge pull request #803 from cagnulein/raspberry
raspberry connection issue
2022-06-03 10:32:16 +02:00
Roberto Viola
6ce3dcd193 Merge branch 'master' into raspberry 2022-06-03 10:29:52 +02:00
Roberto Viola
ca90e765c5 Merge pull request #821 from cagnulein/fakeelliptical
fake elliptical profile added
2022-06-03 08:20:25 +02:00
Roberto Viola
5558fb4288 Merge branch 'master' into fakeelliptical 2022-06-03 08:19:15 +02:00
Roberto Viola
949485729b Update project.pbxproj 2022-06-03 08:17:44 +02:00
Roberto Viola
f0e53afaae fixing typo 2022-06-03 08:14:23 +02:00
Roberto Viola
b71013d306 Merach U3 Pro-Y #820 2022-06-03 08:04:36 +02:00
Roberto Viola
97b859451f SP-HT-9600iE #814 2022-06-03 08:01:22 +02:00
Roberto Viola
aa005614ad renpho bike with power pedal https://github.com/cagnulein/qdomyos-zwift/discussions/547#discussioncomment-2869260 2022-06-03 07:52:27 +02:00
Roberto Viola
355f8a5c1d fake elliptical profile added 2022-06-02 20:05:49 +02:00
Roberto Viola
16fe25df18 Merge pull request #818 from cagnulein/TTS
TTS (Text to Speech)
2022-06-02 19:50:44 +02:00
Roberto Viola
c515f5f1ad Update project.pbxproj 2022-06-02 16:15:37 +02:00
Roberto Viola
d22ad924ec Update project.pbxproj 2022-06-02 16:11:33 +02:00
Roberto Viola
6cc4a984ee Merge branch 'master' into TTS 2022-06-02 16:00:12 +02:00
Roberto Viola
10d7644dd9 aligning iOS project 2022-06-02 15:59:03 +02:00
Roberto Viola
5b0b8a776f android version 2.10.95 2022-06-02 15:19:48 +02:00
Roberto Viola
2b3b9d30c0 resistance reading fixed on proformellipticaltrainer #817 2022-06-02 15:18:34 +02:00
Roberto Viola
5e77af695b fixing cadence on peloton for proformellipticaltrainer #817 2022-06-02 15:15:15 +02:00
Roberto Viola
c603da2ebc adding info.plist to macx version 2022-06-02 14:58:10 +02:00
Roberto Viola
87a9b54693 added license for macos 2022-06-02 11:43:27 +02:00
Roberto Viola
94cb089737 iOS version 2.10.94 2022-06-01 20:20:54 +02:00
Roberto Viola
9e02c03b4a trying to round the negative inclination to 0.5 for proform treadmill 1800i 2022-06-01 17:05:20 +02:00
Roberto Viola
7cd0543aa3 Xiaomi k12 pro treadmill KS-ST-K12PRO #819 2022-06-01 16:43:00 +02:00
Roberto Viola
66ba115462 fixing crash during a peloton workout with an elliptical #817 2022-06-01 16:39:50 +02:00
Roberto Viola
abb4c33152 fixing force resistance for proformellipticaltrainer #817 2022-06-01 16:38:55 +02:00
Roberto Viola
406d11209e fixed cadence to peloton from elliptical #817 2022-06-01 16:38:27 +02:00
Roberto Viola
bb4323d7fd minors 2022-06-01 12:05:23 +02:00
Roberto Viola
e4c418be19 tts to the metrics added 2022-06-01 11:47:20 +02:00
Roberto Viola
dc61b55461 SP-HT-9600iE #814 trying to get cadence and wattage 2022-06-01 09:50:39 +02:00
Roberto Viola
11f5286302 renpho bike power request with power pedal
https://github.com/cagnulein/qdomyos-zwift/discussions/547#discussioncomment-2858668
2022-06-01 08:30:10 +02:00
Roberto Viola
521c583984 Proform elliptical Proform HIIT Trainer model # PFEL09915.2 #817
fixing forcing resistance
2022-06-01 08:10:44 +02:00
Roberto Viola
cccda9ac90 handled peloton resistance for ellipticals #817 2022-06-01 08:08:35 +02:00
Roberto Viola
d4d5a0bc7f avoid crashing on speed plus if the device is not a treadmill 2022-06-01 08:01:25 +02:00
Roberto Viola
b3d5e984e6 halfway throught the settings-tts 2022-06-01 07:58:38 +02:00
Roberto Viola
57d1b29d5c Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-05-31 16:03:09 +02:00
Roberto Viola
3848316641 android version 2.10.92 2022-05-31 16:02:15 +02:00
Roberto Viola
412fada4ea Proform elliptical Proform HIIT Trainer model # PFEL09915.2 #817
writing resistance done
2022-05-31 15:26:08 +02:00
Roberto Viola
29454352d5 tts setting page added 2022-05-31 15:06:55 +02:00
Roberto Viola
d7b9bd5cc8 Proform elliptical Proform HIIT Trainer model # PFEL09915.2 #817
resistance reading OK
2022-05-31 14:30:18 +02:00
Roberto Viola
ad6c59f96d start press message works :) 2022-05-31 12:09:04 +02:00
Roberto Viola
bfb7b74779 removed maps from the left side bar and placed on the toolBar instead only when a gpx has been loaded 2022-05-31 09:26:43 +02:00
Roberto Viola
d92f137617 Proform elliptical Proform HIIT Trainer model # PFEL09915.2 #817 2022-05-31 09:09:26 +02:00
Roberto Viola
2a5f13d220 Renpho bike issues #547
https://github.com/cagnulein/qdomyos-zwift/discussions/547#discussioncomment-2841375
2022-05-30 09:49:17 +02:00
Roberto Viola
1254593fd1 SP-HT-9600iE #814 2022-05-30 09:33:20 +02:00
Roberto Viola
d144a21980 Proform elliptical Proform HIIT Trainer model # PFEL09915.2 #817 2022-05-29 21:47:32 +02:00
Roberto Viola
9c0328f6b7 fixing nullpointer? 2022-05-26 16:21:04 +02:00
Roberto Viola
e78dc46c6f fix crash when clicking on the map and no devices connected 2022-05-26 15:06:52 +02:00
Roberto Viola
d53aecf5b4 SP-HT-9600iE #814 2022-05-26 14:36:27 +02:00
Roberto Viola
370208844f NordicTrack Commercial 2950 iFit Embedded Wifi Treadmill (2021 model) #815 first implementation 2022-05-26 09:55:29 +02:00
Roberto Viola
91044a2c5b negative inclination fixed for proform treadmill 2022-05-26 08:19:38 +02:00
Roberto Viola
97e0efefdf fixing negative inclination reading from proform treadmill 2022-05-25 08:04:08 +02:00
Roberto Viola
3cf1c5490f fixing renpho bike resistance on zwift
https://github.com/cagnulein/qdomyos-zwift/discussions/547#discussioncomment-2805685
2022-05-24 08:35:34 +02:00
Roberto Viola
d3df4274be license auto popup on windows closing after 2 minutes 2022-05-24 08:11:59 +02:00
Roberto Viola
e15474fcab windows license added 2022-05-23 21:28:27 +02:00
Roberto Viola
dc4d854e5c Create qdomyos-zwift.iss 2022-05-23 17:00:32 +02:00
Roberto Viola
4330badaf6 fixing cadence reset for treadmill 2022-05-23 16:59:14 +02:00
Roberto Viola
8010830d07 fix inclination on bike during GPX sessions 2022-05-23 11:22:56 +02:00
Roberto Viola
d3272ffa57 proform treadmill performance 1800i #810 handled negative inclination 2022-05-23 08:30:33 +02:00
Roberto Viola
fe499b6526 Merge pull request #811 from cagnulein/kml
first commit that works loading a GPX without the speed and time
2022-05-23 08:17:17 +02:00
Roberto Viola
d17d923455 changed the map description 2022-05-23 08:15:14 +02:00
Roberto Viola
fc0c0614d5 change maps marker as a crosshair 2022-05-23 07:47:56 +02:00
Roberto Viola
1491731a65 fixed gpx import process 2022-05-23 07:43:47 +02:00
Roberto Viola
8adfc889d2 requestInclination default value to -100 2022-05-22 18:20:05 +02:00
Roberto Viola
c386127749 adding cadence to the ftms notification for treadmill 2022-05-20 09:00:47 +02:00
Roberto Viola
da883ed2b8 iFit Virtual Device Implementation #441 reverting timeout handling 2022-05-20 08:40:17 +02:00
Roberto Viola
09f93ff8ce adding cadence to kingsmithr2treadmill 2022-05-20 08:13:49 +02:00
Roberto Viola
7c11c1e45a fixing marker icon 2022-05-19 15:17:06 +02:00
Roberto Viola
2490c7fd27 marker added 2022-05-19 15:09:14 +02:00
Roberto Viola
a42d6d4466 first working openlayer map without marker 2022-05-19 11:55:44 +02:00
Roberto Viola
1df7c8250f Auto resistance not working on SportPlus SP-HT-1004-iE with IOS app #812 2022-05-19 08:13:12 +02:00
Roberto Viola
14cac49def iFit Virtual Device Implementation #441 2022-05-18 10:34:34 +02:00
Roberto Viola
775cb9e69f fixing negative inclination and small steps in the gpx 2022-05-18 07:46:00 +02:00
Roberto Viola
0a6ffb4b3e fixed altitude and first point on GPX without speed or time 2022-05-17 15:42:03 +02:00
Roberto Viola
d84162d013 preparing to merge it 2022-05-17 11:28:07 +02:00
Roberto Viola
f79b4751d4 qml-module* added to the installation process 2022-05-17 11:25:09 +02:00
Roberto Viola
43420aa008 iFit Virtual Device Implementation #441 2022-05-17 11:02:01 +02:00
Roberto Viola
d08daf0573 first commit that works loading a GPX without the speed and time 2022-05-17 10:23:12 +02:00
Roberto Viola
6565178254 Neo 1 + rizer #659 NAN on resistance fixed 2022-05-16 11:51:22 +02:00
Roberto Viola
0e6f792e85 proform treadmill performance 1800i #810 2022-05-16 09:58:16 +02:00
Roberto Viola
ea02e1709f iFit Virtual Device Implementation #441 timeout implemented 2022-05-16 09:03:37 +02:00
Roberto Viola
67051b2105 fixing segmentation fault
#769
2022-05-14 08:04:41 +02:00
Roberto Viola
306797191a some debug added for #769 2022-05-13 15:54:00 +02:00
Roberto Viola
958750f2ad iOS version 2.10.84 2022-05-12 21:45:28 +02:00
Roberto Viola
7591cea089 merging 2022-05-12 21:38:38 +02:00
Roberto Viola
ea735e0e9c DKN Motion doesn't connect #798 2022-05-12 11:45:05 +02:00
Roberto Viola
777d801284 Renpho bike: Watt gain in ERG mode #809 2022-05-12 11:37:19 +02:00
Roberto Viola
f066ceecbd reverting DKN Motion doesn't connect #798 2022-05-12 08:37:21 +02:00
Roberto Viola
82ea75ff62 Sole e25 elliptical distance calibration #808 2022-05-11 15:14:30 +02:00
Roberto Viola
90f6b6ee66 Treadmill Proform 9 doesn’t change speed from app #805 2022-05-11 08:45:50 +02:00
Roberto Viola
e8e972ff7a Update main.yml 2022-05-10 15:03:46 +02:00
Roberto Viola
eff07d39ec Update main.yml 2022-05-10 14:42:54 +02:00
Roberto Viola
d54ce91e07 Bluetooth Discovery doesn't stop on Windows #807 2022-05-10 14:38:29 +01:00
Roberto Viola
9762fb2809 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-05-10 09:58:22 +01:00
Roberto Viola
d62981b12b Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-05-10 09:20:15 +02:00
Roberto Viola
e42be4e50c Duplicate HR on Android brings to no HR at all #806 2022-05-10 09:16:33 +02:00
Roberto Viola
b045fff288 apple watch fake device renamed to Fake Device
#759
2022-05-10 08:41:10 +02:00
Roberto Viola
b7d1e9b92b fixing manifest again 2022-05-09 13:13:30 +01:00
Roberto Viola
90dd1fbe34 fixing manifest 2022-05-09 12:40:16 +01:00
Roberto Viola
16d7a5e65d Getting QZ to Work with True PS800 Treadmill #799 2022-05-08 07:22:53 +02:00
Roberto Viola
d6d1e7536a again logos 2022-05-07 22:54:45 +01:00
Roberto Viola
604d61d339 removing 50x50 logo on Microsoft store (manifest issue?!) 2022-05-07 21:24:15 +01:00
Roberto Viola
6dbc1f71ae fixing logos on Microsoft 2022-05-07 21:16:50 +01:00
Roberto Viola
f4252e00d9 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-05-07 18:00:07 +01:00
Roberto Viola
02a3d9d6ac Create generate_appx_windows_store.bat 2022-05-07 17:59:50 +01:00
Roberto Viola
4a2faf9e1b WINRT deploy fixes 2022-05-07 17:31:15 +01:00
Roberto Viola
00cde22da8 renpho bike: ERG mode use also the watt gain and watt offset https://github.com/cagnulein/qdomyos-zwift/discussions/547#discussioncomment-2706606 2022-05-07 17:55:27 +02:00
Roberto Viola
35e49df5a5 WINRT compatibility fix 2022-05-07 15:24:12 +01:00
Roberto Viola
f13138e107 WINRT compatibility fixed 2022-05-07 08:37:44 +01:00
Roberto Viola
6d2394603c Update homeform.cpp 2022-05-06 20:51:48 +02:00
Roberto Viola
15db70f2dd Update AppxManifest.xml 2022-05-06 10:21:06 +02:00
Roberto Viola
a23fd7ae1b removed runFullTrust from the appxmanifest 2022-05-06 08:59:00 +02:00
Roberto Viola
4b4c20a2ef Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-05-06 06:20:52 +02:00
Roberto Viola
503edb51b1 adding runFullTrust back 2022-05-05 21:32:02 +02:00
Roberto Viola
49288ebb08 Update AppxManifest.xml 2022-05-05 21:13:47 +02:00
Roberto Viola
aaf4e386ab fixing secret.h 2022-05-05 20:59:23 +02:00
Roberto Viola
2d837f7ed6 creating secret.h 2022-05-05 20:49:38 +02:00
Roberto Viola
ff2d0ff6d0 fixing github workflow 2022-05-05 20:41:27 +02:00
Roberto Viola
0aa062409c Getting QZ to Work with True PS800 Treadmill (Issue #799) 2022-05-05 20:37:18 +02:00
Roberto Viola
644ca82cd8 fixing github workflow 2022-05-05 20:30:14 +02:00
Roberto Viola
b510a8151d qml enabled by default and dircon enabled by default 2022-05-05 19:44:28 +02:00
Roberto Viola
793d5d233a fixing github workflow 2022-05-05 17:37:52 +02:00
Roberto Viola
ce623ad270 removing runFullTrust from Windows package and adding strava to windows version 2022-05-05 17:33:48 +02:00
Roberto Viola
baf9d3ebbd playing with secrets on the github workflow 2022-05-05 17:07:09 +02:00
Roberto Viola
4e9848c72d adding smtp username to secrets 2022-05-05 16:57:51 +02:00
Roberto Viola
1a3d55e8b9 Merge pull request #800 from d3m3vilurr/for-791 2022-05-04 21:22:30 +02:00
Roberto Viola
285b333a4d iOS version 2.10.78 2022-05-04 21:01:22 +02:00
Sunguk Lee
771c9d6fe1 Add more KingSmith WalkingPad X21
Just copied from official application logs

Related #791
2022-05-05 03:59:57 +09:00
Roberto Viola
1f66f66831 Getting QZ to Work with True PS800 Treadmill #799 2022-05-04 16:16:47 +02:00
Roberto Viola
5e5e488f02 Proform TDF 4 (Wifi Only) #760 lastDirconFTMSFrameReceived added to virtualbike 2022-05-04 15:58:29 +02:00
Roberto Viola
b6d401d0e0 Kickr Snap #585 trying to fix crashes 2022-05-04 08:44:18 +02:00
Roberto Viola
07626bb0b6 DKN Motion doesn't connect #798 2022-05-04 08:12:21 +02:00
Roberto Viola
3da3b554ad DKN Motion doesn't connect #798 2022-05-03 20:39:32 +02:00
Roberto Viola
93a3ea04f3 handling ERG mode on dircon #756 2022-05-03 08:27:54 +02:00
Roberto Viola
6c2ec9962e Proform TDF 4 (Wifi Only) #760 handling disconnection 2022-05-03 08:27:20 +02:00
Roberto Viola
c8c71be11b KingSmith WalkingPad X21 #791 2022-05-02 11:39:36 +02:00
Roberto Viola
abe85e0ba9 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-05-01 10:54:05 +02:00
Roberto Viola
49ef60b828 retrying to send email in case of failure 2022-05-01 10:53:58 +02:00
Roberto Viola
e0cfa60531 Proform TDF 4 (Wifi Only) #760 2022-04-30 16:16:24 +02:00
Roberto Viola
0b23259541 dare2ride fuego 1.0 #795 2022-04-30 16:10:04 +02:00
Roberto Viola
b7d150b3b6 DIRCON Zwift #756 2022-04-29 10:34:11 +02:00
Roberto Viola
d8ecbbe426 added notifier for 2AD9 DIRCON Zwift #756 2022-04-29 10:31:14 +02:00
Roberto Viola
47287daacc Update AppxManifest.xml 2022-04-29 08:09:32 +02:00
Roberto Viola
073cc46595 Update AppxManifest.xml 2022-04-29 07:38:03 +02:00
Roberto Viola
7fa640e294 Update AppxManifest.xml 2022-04-28 16:48:54 +02:00
Roberto Viola
ca1ab54561 Windows Store (#793)
* adding MakeAppx

* updated CI for windows appx package

* fix tabs

* fixed tabs

* path fixed

* fixing CI appx

* fixing dirs

* added logo to manifest
2022-04-28 16:42:51 +02:00
Roberto Viola
c14c583512 added manifest file for Windows Store #793 2022-04-28 14:51:59 +02:00
Roberto Viola
a387bed4a3 Elevation in Miles for treadmill #792 2022-04-27 10:58:29 +02:00
Roberto Viola
5a8c2a6354 Stages SB20 auto resistance not working on peloton or zwift #790 2022-04-27 08:29:55 +02:00
Roberto Viola
d39939b52e module "Qt.labs.platform" is not installed
https://forum.qt.io/topic/113645/module-qt-labs-platform-is-not-installed-macdeployqt-not-copy-qt-labs-platform/3
2022-04-26 17:35:24 +02:00
Roberto Viola
5177ec28b5 adding --qmldir to CI Windows 2022-04-26 17:08:54 +02:00
Roberto Viola
aa3ef9a5ab Stages SB20 auto resistance not working on peloton or zwift #790 2022-04-26 15:42:22 +02:00
Roberto Viola
3ce93dfcff KingSmith WalkingPad X21 #791 2022-04-26 14:25:31 +02:00
Roberto Viola
d83ddd348e adding tag if on CI windows for releases 2022-04-26 14:08:02 +02:00
Roberto Viola
cb2088606b trying to move CI artifact to release 2022-04-26 12:13:30 +02:00
Roberto Viola
22dadaddc5 Tacx Neo 2 #388 filtering strange cadence values 2022-04-26 10:59:38 +02:00
Roberto Viola
4a47c96e27 Tacx Neo 2 #388 trying to handle peloton resistance 2022-04-26 09:43:55 +02:00
Roberto Viola
4f74d145a3 Zwift Bridge on Windows (#39)
fixing missing dlls
2022-04-25 20:43:59 +02:00
Roberto Viola
7c45960889 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-04-25 12:01:19 +02:00
Roberto Viola
d900815837 iOS version 2.10.73 2022-04-25 10:43:17 +02:00
Roberto Viola
9d6f778624 Bug report between Gfit App and Fitfiu MC-460 Tradmill #784 2022-04-25 08:29:46 +02:00
Roberto Viola
501b16fb87 iFit Virtual Device Implementation (#441) using the last ifit resistance requested in order to stabilize ifit resistance 2022-04-24 05:26:34 +02:00
Roberto Viola
2796cd7ce8 fixing CI 2022-04-23 18:50:22 +02:00
Roberto Viola
47f23ce8b7 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-04-23 18:37:36 +02:00
Roberto Viola
1b8edeaad8 Bug report between Gfit App and Fitfiu MC-460 Tradmill #784 fixing name 2022-04-23 18:37:03 +02:00
Roberto Viola
c82d132a9d fixing CI 2022-04-23 18:34:30 +02:00
Roberto Viola
4fcb762f3c Bike Weight setting #785 2022-04-23 18:30:07 +02:00
Roberto Viola
0513ef64c6 Bug report between Gfit App and Fitfiu MC-V460 Tradmill #784 2022-04-23 18:18:24 +02:00
Roberto Viola
8d42d2f78d Strava Upload Not Correct on Consecutive Peloton Classes #745 added new debug prints 2022-04-22 15:25:52 +02:00
Roberto Viola
c3b6442c70 elevation gain for bike only if the current inclination is positive 2022-04-21 22:01:57 +02:00
Roberto Viola
0b01d37604 Add PZ targets for Peloton PZ classes to Rower #757 target zone tile fixed 2022-04-21 21:18:36 +02:00
Roberto Viola
e9e52c3da8 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-04-21 16:54:53 +02:00
Roberto Viola
c8b0f9a7bd DIRCON Zwift #756 low byte overflows #659 2022-04-21 16:54:32 +02:00
Roberto Viola
9835d2ae4a adding libwinpthread-1.dll to windows CI 2022-04-21 12:08:30 +02:00
Roberto Viola
2db03e3c77 fixing CI for windows 2022-04-21 11:33:49 +02:00
Roberto Viola
54aa797c34 adding dll to window release created by CI 2022-04-21 11:16:53 +02:00
Roberto Viola
2dd9d6cdcd Proform TDF 4 (Wifi Only) #760 forcing incline 2022-04-21 10:55:24 +02:00
Roberto Viola
11369ba1f8 Schwinn/Bowflex + SS2k + QZ - inconsistent auto-resistance in Zwift #500
force disconnection in case of error
2022-04-21 09:50:34 +02:00
Roberto Viola
8c7ad0cf96 Proform Treadmill 9.0 #779 2022-04-21 09:07:51 +02:00
Roberto Viola
58d0f7cc08 PZ stats from Peloton directly (Issue #774) 2022-04-19 21:09:50 +02:00
Roberto Viola
9069d7c14a Proform TDF 4 (Wifi Only) #760 2022-04-19 15:25:49 +02:00
Roberto Viola
90660b98e9 peloton offset and gain handled on echelon bike 2022-04-19 11:29:50 +02:00
Roberto Viola
0aab57a243 PZ stats from Peloton directly #774 2022-04-19 08:10:33 +02:00
Roberto Viola
08407cff6b PZ stats from Peloton directly #774 2022-04-19 08:03:50 +02:00
Roberto Viola
661305b7f0 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-04-19 06:21:36 +02:00
Roberto Viola
888736f095 trxappgateusbbike handle bike resistance offet and gain #776 2022-04-19 06:21:12 +02:00
Roberto Viola
fc1c246e8c Windows Workflow (#775) 2022-04-18 21:37:34 +02:00
Roberto Viola
bdd4b952de Add PZ targets for Peloton PZ classes to Rower #757 2022-04-17 18:40:31 +02:00
Roberto Viola
3805b45a71 Proform TDF 4 (Wifi Only) #760 resistance writing 2022-04-17 11:45:39 +02:00
Roberto Viola
c6b40848e3 2.10.68 iOS version 2022-04-16 09:09:12 +02:00
Roberto Viola
b9c743dff8 DIRCON Zwift #756 2022-04-16 09:04:00 +02:00
Roberto Viola
e6b5133e4e DIRCON Zwift #756 zwift connect also as contrallable! 2022-04-16 09:02:10 +02:00
Roberto Viola
302dcf80de Proform TDF 4 (Wifi Only) #760 first attempt of resistance control 2022-04-16 07:47:23 +02:00
Roberto Viola
d97094e383 Multiple Instructors Power Zone Ride #772 2022-04-16 07:38:09 +02:00
Roberto Viola
02f08f387e Training programs with "Ramp" sections show Time Remaining as 1 second #763 2022-04-15 22:01:56 +02:00
Roberto Viola
4cff6b2936 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-04-14 14:43:44 +02:00
Roberto Viola
b6723ffd8b DIRCON Zwift #756 repository updated 2022-04-14 14:43:39 +02:00
Roberto Viola
a290b34563 Unable to connect App to Wahoo Kickr Bike (Issue #770) 2022-04-13 19:42:43 +02:00
Roberto Viola
0bd5915e53 Proform TDF 4 (Wifi Only) #760 2022-04-13 10:44:19 +02:00
Roberto Viola
07e653111c Sole F63 doesn’t do auto incline in Zwift #768 2022-04-13 08:16:48 +02:00
Roberto Viola
1f6b925f68 Proform TDF 4 (Wifi Only) #760 debug enabled 2022-04-12 09:20:57 +02:00
Roberto Viola
6d37d5759c Speed based on power, inclination and weight #767 2022-04-11 22:08:34 +02:00
Roberto Viola
cc693cc3ea Training programs with "Ramp" sections show Time Remaining as 1 second #763 2022-04-11 11:45:52 +02:00
Roberto Viola
bcd903685e Proform TDF 4 (Wifi Only) #760 2022-04-11 09:38:29 +02:00
Roberto Viola
214698d410 Proform TDF 4 (Wifi Only) #760 2022-04-10 12:50:35 +02:00
Roberto Viola
9222527020 iFit Virtual Device Implementation #441 elapsed timer managed when stop received 2022-04-10 11:53:55 +02:00
Roberto Viola
05019e2e39 removed target METS No Peloton Power Zone targets or time elapsed/time next displayed #761 2022-04-10 11:41:04 +02:00
Roberto Viola
22170ff4c1 webserverinfosender: added a watchdog timer to check if the qtctpserver is still listening 2022-04-08 20:47:46 +02:00
Roberto Viola
09950204bf iOS build error fixed 2022-04-08 20:44:38 +02:00
Roberto Viola
c7bba9aef9 proformwifibike added to iOS project 2022-04-08 20:43:43 +02:00
Roberto Viola
2c6503d85d Echeolon bike screen (EX5s) will not load software after recent firmware
or software update #762
2022-04-08 14:37:44 +02:00
Roberto Viola
7105dfa50b Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-04-08 10:46:15 +02:00
Roberto Viola
ba8982280d Proform TDF 4 (Wifi Only) #760 2022-04-08 10:46:06 +02:00
Roberto Viola
ddfd4ccd92 improving the swag bag opening 2022-04-07 21:05:46 +02:00
Roberto Viola
3e4538508e Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-04-07 12:06:23 +02:00
Roberto Viola
1f4661612f inappstore handled for PC 2022-04-07 12:06:14 +02:00
Roberto Viola
e95d9f94ac iFit Virtual Device Implementation #441 fixed mileage 2022-04-06 18:03:59 +02:00
Roberto Viola
cdf1734e2a iFit Virtual Device Implementation #441 stop handled 2022-04-06 09:30:43 +02:00
Roberto Viola
053119ad82 Strava Upload Not Correct on Consecutive Peloton Classes #745 2022-04-05 08:14:53 +02:00
Roberto Viola
5c1ec25386 Add PZ targets for Peloton PZ classes to Rower #757 2022-04-05 08:04:53 +02:00
Roberto Viola
527663c387 iOS version 2.10.59 2022-04-04 22:02:37 +02:00
Roberto Viola
b2f8aaab55 iFit Virtual Device Implementation #441 fixed! 2022-04-04 21:59:11 +02:00
Roberto Viola
5290a70f27 Wahoo Kickr compatibity (#442) 2022-04-03 20:27:06 +02:00
Roberto Viola
c3344c8db7 Wahoo Kickr compatibity #442 added elevation gain values on bike 2022-04-03 08:50:35 +02:00
Roberto Viola
ca442acbc2 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-04-02 10:23:30 +02:00
Roberto Viola
5393a5db35 inclination tile available for bike when peloton cadence sensor is disabled 2022-04-02 10:23:18 +02:00
Roberto Viola
90f6f1ae64 Merge pull request #753 from cagnulein/workflow-for-qt-5-15
Update main.yml
2022-04-02 09:59:40 +02:00
Roberto Viola
390b03e334 purchasing avaiable also on linux 2022-04-02 08:44:35 +02:00
Roberto Viola
3705222690 added networkauth charts in the workflow 2022-04-02 08:43:40 +02:00
Roberto Viola
0f0700731c Update main.yml 2022-04-02 08:39:14 +02:00
Roberto Viola
321b65e3da added qt5quickcontrols2-5-dev 2022-04-02 08:18:36 +02:00
Roberto Viola
dd60e6eb5f fixed virtual rower 2022-04-02 08:10:41 +02:00
Roberto Viola
5b1f443b71 Wahoo Kickr compatibity (#442) gears enabled 2022-04-01 22:37:57 +02:00
Roberto Viola
e0f7ba438b Please add Pro-form Sport RL rower Bluetooth Name I_RW (Issue #733) build issues fixed 2022-04-01 21:58:04 +02:00
Roberto Viola
cd49516389 Please add Pro-form Sport RL rower Bluetooth Name I_RW (Issue #733) 2022-04-01 21:36:58 +02:00
Roberto Viola
9e8550473a Merge pull request #750 from cagnulein/swagbag
Swag Bag for Donation
2022-04-01 18:20:17 +02:00
Roberto Viola
27e7b35dbf Merge branch 'master' into swagbag 2022-04-01 18:06:50 +02:00
Roberto Viola
cf223d2f05 android swagbag works! 2022-04-01 18:03:15 +02:00
Roberto Viola
a250a2d557 virtualrower swift added, but needs to be finished
Please add Pro-form Sport RL rower Bluetooth Name I_RW #733
2022-04-01 15:49:35 +02:00
Roberto Viola
b863e2ebd1 added debug string to java 2022-04-01 15:38:41 +02:00
Roberto Viola
2443a4da37 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-03-31 22:31:42 +02:00
Roberto Viola
f6262276e7 HR monitor connection issues with latest beta #751 2022-03-31 22:31:34 +02:00
Roberto Viola
125c038040 build fixed on Android 2022-03-31 21:59:26 +02:00
Roberto Viola
ceb2b68a6b manifest error fixed 2022-03-31 17:45:17 +02:00
Roberto Viola
57ff2e9425 restored all archs for android 2022-03-31 17:14:54 +02:00
Roberto Viola
12100250e0 android version 2.10.55 2022-03-31 15:01:26 +02:00
Roberto Viola
35ae6a1027 Merge branch 'swagbag' of https://github.com/cagnulein/qdomyos-zwift into swagbag 2022-03-31 15:00:41 +02:00
Roberto Viola
c06be822f9 run on Android (not tested) 2022-03-31 15:00:29 +02:00
Roberto Viola
281a9e0eae sudo added back 2022-03-31 10:33:17 +02:00
Roberto Viola
1d1f2d4603 purchasing.pri only on android or ios 2022-03-31 10:27:26 +02:00
Roberto Viola
e6bf8cc51a removed ubuntu 21.04 2022-03-31 10:23:20 +02:00
Roberto Viola
8e12f2d074 sudo removed 2022-03-31 10:21:22 +02:00
Roberto Viola
7db71b4087 image: ubuntu:21.04 added 2022-03-31 10:19:57 +02:00
Roberto Viola
9198541ded Merge branch 'swagbag' of https://github.com/cagnulein/qdomyos-zwift into swagbag 2022-03-31 10:10:24 +02:00
Roberto Viola
09c961a2e8 builds on Android (not tested) 2022-03-31 10:07:34 +02:00
Roberto Viola
6bc5e6b6e8 qtquickcontrols2-5-dev added 2022-03-31 08:39:24 +02:00
Roberto Viola
1adf637026 qt5quickcontrols2-5-dev 2022-03-31 08:37:20 +02:00
Roberto Viola
186d5eb8a6 libqt5quickcontrols2-5-dev added 2022-03-31 08:33:05 +02:00
Roberto Viola
ceec63bf57 libqt5quickcontrols* added 2022-03-31 08:27:46 +02:00
Roberto Viola
40e9afee2d libqt5quickcontrols2 added 2022-03-31 08:26:24 +02:00
Roberto Viola
0ce2cc865e Merge branch 'master' into swagbag 2022-03-31 08:22:34 +02:00
Roberto Viola
e7296f3bd7 Merge pull request #748 from greghesp/patch-1
Update Dockerfile
2022-03-30 23:14:03 +02:00
Greg Hesp
275b2afc2d Update Dockerfile
Added command to launch
2022-03-30 21:43:04 +01:00
Roberto Viola
ce7ad4aa83 Update Dockerfile
thanks to @greghesp #747
2022-03-30 22:21:16 +02:00
Roberto Viola
06bdc67c84 iOS version works! 2022-03-30 10:43:19 +02:00
Roberto Viola
f2e95e6584 removed reference of toplevel and qz.storekit added 2022-03-30 09:37:24 +02:00
Roberto Viola
6d373bbda4 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-03-30 09:16:02 +02:00
Roberto Viola
51eca9f100 iOS version 2.10.55 2022-03-29 20:57:51 +02:00
Roberto Viola
88d1469d48 peloton debug added 2022-03-29 12:10:15 +02:00
Roberto Viola
7d600c0761 powerzonepack debug added 2022-03-29 12:07:59 +02:00
Roberto Viola
5fcdd187e3 Please add Pro-form Sport RL rower Bluetooth Name I_RW #733 2022-03-29 08:36:44 +02:00
Roberto Viola
b0dc898818 Merge branch 'swagbag' of https://github.com/cagnulein/qdomyos-zwift into swagbag 2022-03-28 20:43:43 +02:00
Roberto Viola
462fd2f6fa version 2.10.54 2022-03-28 15:33:21 +02:00
Roberto Viola
d81d6c84c0 Open Please add Pro-form Sport RL rower Bluetooth Name I_RW #733
virtualrower fixed
2022-03-28 14:39:32 +02:00
Roberto Viola
3aa20281ae https://github.com/cagnulein/qdomyos-zwift/issues/
629#issuecomment-1079224854 #629
2022-03-28 10:32:43 +02:00
Roberto Viola
ada1225759 UI changes 2022-03-28 10:31:41 +02:00
Roberto Viola
e9d853b06a build succeded! 2022-03-26 19:13:18 +01:00
Roberto Viola
2b962a64e9 fixed build error on iOS 2022-03-26 18:40:18 +01:00
Roberto Viola
babfa86f60 removing HR caching on iOS 2022-03-25 21:53:49 +01:00
Roberto Viola
910936dc58 iOS project fixing (it's not building yet) 2022-03-25 21:48:42 +01:00
Roberto Viola
f222dc7ed8 version 2.10.52 for iOS 2022-03-25 21:02:45 +01:00
Roberto Viola
fa697f73ec Please add Pro-form Sport RL rower Bluetooth Name I_RW #733 virtual
rower device
2022-03-25 14:48:53 +01:00
Roberto Viola
9cb5372961 adding purchase module: compiles and runs. 2022-03-25 14:15:41 +01:00
Roberto Viola
9ffa682f87 If you have time Nautilus B628 support please #738 2022-03-25 08:23:39 +01:00
Roberto Viola
f93eb05ed8 version 2.10.51 for iOS 2022-03-24 14:31:10 +01:00
Roberto Viola
c3b9f9f37e Please add Pro-form Sport RL rower Bluetooth Name I_RW #733 resistance
writer done
2022-03-24 10:48:09 +01:00
Roberto Viola
b6c40ebd0b iFit Virtual Device Implementation #441 2022-03-23 09:03:59 +01:00
Roberto Viola
ac51a6ccd5 Please add Pro-form Sport RL rower Bluetooth Name I_RW #733 2022-03-22 16:09:38 +01:00
Roberto Viola
0ec1958e9e Kickr Snap #585 fixing setSlope and adding setSimMode 2022-03-22 08:48:13 +01:00
Roberto Viola
dce10819e6 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-03-21 11:12:26 +01:00
Roberto Viola
e6bf4bbcdd Have a peloton charts with target and converted to Peloton if not using Peleton Bike #735 2022-03-21 11:12:01 +01:00
Roberto Viola
9a8c89910c Update main.yml 2022-03-21 09:35:04 +01:00
Roberto Viola
d91920a8ce Update main.yml 2022-03-21 09:23:17 +01:00
Roberto Viola
51e3bc7a2e Update main.yml 2022-03-21 09:21:01 +01:00
Roberto Viola
32d8caaf4e version 2.10.50 2022-03-21 09:14:16 +01:00
Roberto Viola
95259cb408 odometer and autoresistance on iFIT! #441 2022-03-21 09:11:02 +01:00
Roberto Viola
54dd6aac83 iFit with real metrics! 2022-03-20 17:36:52 +01:00
Roberto Viola
241c5995b6 autoresistance with ifit! 2022-03-20 17:24:44 +01:00
Roberto Viola
fd46afe9c3 all metrics are working on iFit! 2022-03-20 17:15:03 +01:00
Roberto Viola
e43cbc7bab cadence and resistance on iFit! 2022-03-20 16:34:55 +01:00
Roberto Viola
ee4139e2f6 kcal works too on iFit! 2022-03-20 15:14:28 +01:00
Roberto Viola
23a66eff6b iFit elapsed timer works! 2022-03-20 14:45:48 +01:00
Roberto Viola
482cb510c2 Merge pull request #734 from cagnulein/dircon
Dircon
2022-03-20 11:19:25 +01:00
Roberto Viola
0908074c70 QZ starts on its own as soon as it connects to Horizon 7.0 #731 2022-03-20 11:13:49 +01:00
Roberto Viola
1e44bd1bfa signals fixed 2022-03-20 10:53:37 +01:00
Roberto Viola
a7c2804144 clearing array before using them 2022-03-19 19:07:20 +01:00
Roberto Viola
13df364d9b fix merge error 2022-03-19 18:53:42 +01:00
Roberto Viola
4b23716dea other iOS fixes 2022-03-19 18:28:09 +01:00
Roberto Viola
736d4e97ea fixing some iOS build error 2022-03-19 17:56:05 +01:00
Roberto Viola
167773d365 Merge pull request #529 from p3g4asus/dircon
Implementing dircon protocol for treadmill
2022-03-19 17:22:36 +01:00
Roberto Viola
37b4392319 Merge branch 'dircon' into dircon 2022-03-19 15:46:37 +01:00
Roberto Viola
2338a5b73c aligned with current master 2022-03-19 15:22:56 +01:00
Roberto Viola
2df59e9058 Merge branch 'master' into dircon 2022-03-19 15:22:28 +01:00
Roberto Viola
a817b21492 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-03-18 15:49:25 +01:00
Roberto Viola
55038f5ca4 prepared iOS project for Default Build system (legacy one is deprecated) 2022-03-18 15:49:03 +01:00
Roberto Viola
92122984fc Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-03-18 15:21:01 +01:00
Roberto Viola
2fa7b1ce80 Keep C1 spin bike #478 2022-03-18 15:20:55 +01:00
Roberto Viola
76e50a18f0 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-03-18 12:27:46 +01:00
Roberto Viola
fc487d2a3a version 2.10.48 for Android 2022-03-18 12:26:45 +01:00
Roberto Viola
2128597592 Keep C1 spin bike #478 2022-03-18 11:10:36 +01:00
Roberto Viola
e4c06d186f nordick track fs5i compatibility with QZ #645 2022-03-17 12:09:45 +01:00
Roberto Viola
c001363e3d fixed echelonconnectsport ERG mode when cadence is 0 the resistance went
to the MAX
2022-03-17 07:56:31 +01:00
Roberto Viola
d6da58e2c1 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-03-16 11:53:29 +01:00
Roberto Viola
0c42a39e42 iFit Virtual Device Implementation #441
some steps forward but it's not stable yet. I saw a connection at least
2022-03-16 11:53:22 +01:00
Roberto Viola
31aa2d18f2 Apollo Xfit #679 2022-03-15 09:20:06 +01:00
Roberto Viola
f1a50f2f1e changing getProfileDir() to the standard one since on iOS we will lost
that directory each time that there is an update
2022-03-15 08:36:44 +01:00
Roberto Viola
8253ad1886 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-03-14 16:17:17 +01:00
Roberto Viola
cd34ba3b1b version 2.10.47 2022-03-14 15:12:00 +01:00
Roberto Viola
29223d7c5e Mekbelt bike #730 2022-03-14 15:10:00 +01:00
Roberto Viola
1e29b729bf Schwinn/Bowflex + SS2k + QZ - inconsistent auto-resistance in Zwift #500
slowing down communication with SS2k waiting always the answers
2022-03-13 18:52:56 +01:00
Roberto Viola
90f43465f3 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-03-13 18:43:53 +01:00
Roberto Viola
66088caef1 Nautilus T218 #729 2022-03-13 18:41:49 +01:00
Roberto Viola
61e7f282a0 fixing Decimal point of distance on Apple Watch 2022-03-11 14:51:55 +01:00
Roberto Viola
21eef75c3f decreasing webserver timeout from 30s to 5s
in order to fix the chart issues
2022-03-11 14:38:45 +01:00
Roberto Viola
f701705127 Profile selection reverts to previous before changing #727 2022-03-11 10:38:05 +01:00
Roberto Viola
15c104fefb Merge pull request #691 from grantland/dev
Improve functionality for Peloton App users
2022-03-10 12:01:45 +01:00
Roberto Viola
0742d39b81 Merge branch 'master' into dev 2022-03-10 12:01:13 +01:00
Roberto Viola
55260f6382 version 2.10.46 2022-03-10 11:59:34 +01:00
Roberto Viola
451e66f3ee new settings must be always at the end
in order to keep compatiblity on iOS
2022-03-10 11:57:57 +01:00
Roberto Viola
71c3819ab6 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-03-10 11:40:57 +01:00
Roberto Viola
831343892b profile on ios shows useless files #725 2022-03-10 11:40:28 +01:00
Roberto Viola
6b6d01e5f3 profile on ios shows useless files #725 2022-03-10 10:34:01 +01:00
Roberto Viola
d85831aeb1 iOS version 2.10.45 2022-03-09 11:22:09 +01:00
Roberto Viola
bc22016313 fixed iOS build 2022-03-09 11:20:07 +01:00
Roberto Viola
82e411220c Rowing Odometer displays Miles but says "m" not "mi" #720 2022-03-09 11:10:11 +01:00
Roberto Viola
7bfa30a4ca Merge pull request #714 from grantland/profiles
Implement Profiles
2022-03-09 11:01:28 +01:00
Roberto Viola
7733a308c2 profiles list always open (i like it more :) ) 2022-03-09 11:00:30 +01:00
Roberto Viola
c6ffceb391 password and token crypted in the settings and profiles 2022-03-09 10:09:48 +01:00
Roberto Viola
612c8ec766 Merge pull request #724 from grantland/secret
Add src/secret.h to .gitignore
2022-03-09 09:39:59 +01:00
Grantland Chew
56a25b11a4 Add src/secret.h to .gitignore
Prevent the ability to accidentally commit secrets
2022-03-09 00:28:42 -08:00
Roberto Viola
9a315a104f Update main.qml
removed unwanted spaces
2022-03-09 08:31:21 +01:00
Roberto Viola
9f5ecda75a moved profile_name setting in the settings file at the bottom to keep compatibility 2022-03-09 08:29:15 +01:00
Grantland Chew
01e8bc5301 Enable writing to Time to Next 2022-03-08 22:05:49 -08:00
Grantland Chew
67b63971b0 Implement settings to enable/disable cadence and resistance color 2022-03-08 22:05:49 -08:00
Grantland Chew
f80d026591 Implement Peloton Remaining tile 2022-03-08 22:05:49 -08:00
Grantland Chew
1e04e62027 Improve readability of target cadence and peloton resistance for bikes 2022-03-08 22:05:49 -08:00
Grantland Chew
825e93911c Implement profile switching 2022-03-08 22:02:47 -08:00
Roberto Viola
f43501a1f6 Neo 1 + rizer #659 erg mode checksum fixing 2022-03-08 09:47:46 +01:00
Roberto Viola
0e7bab0905 Horizon Paragon X #637 odometer false starting fixed 2022-03-08 08:53:38 +01:00
Roberto Viola
4da9a30709 Metrics glitch on Inspire bike #719 2022-03-08 08:05:14 +01:00
Grantland Chew
3dcaee7422 Update settings name to allow sorting recent first 2022-03-07 17:45:30 -08:00
Roberto Viola
025ee9b1ef calories and distance views added to Apple Watch screen in order to debug apple heatlh issues to the users 2022-03-07 17:26:20 +01:00
Roberto Viola
3ca6d46132 Kickr Snap #585 fix sim mode and init func 2022-03-07 10:21:46 +01:00
Roberto Viola
ffefc5743f fix build error 2022-03-07 10:04:23 +01:00
Roberto Viola
86616424e1 Bowflex BXT216 Treadmill #712 2022-03-07 09:53:49 +01:00
Roberto Viola
1ecfa31712 Horizon 7.8 treadmill: Unwanted countdown timer on treadmill workouts
#704 added new setting for this
2022-03-07 09:43:52 +01:00
Roberto Viola
17bf544475 Merge pull request #716 from grantland/gitignore
Update .gitignore
2022-03-07 09:29:09 +01:00
Grantland Chew
e0bf8d0c1f Update .gitignore 2022-03-07 00:18:32 -08:00
Roberto Viola
55afec2c54 Merge pull request #717 from grantland/cues_clean
Clean up
2022-03-07 09:16:13 +01:00
Grantland Chew
eb43c085a8 Clean up
Realized I had some errant TODOs right before it was merged
2022-03-07 00:12:15 -08:00
Roberto Viola
658a4365ce Merge pull request #713 from grantland/cues
Improve Peloton cues
2022-03-07 09:08:23 +01:00
Roberto Viola
02da446843 Merge pull request #715 from grantland/fakebike 2022-03-05 22:01:54 +01:00
Grantland Chew
d98ee23d6f Enable restance changes with fakebike 2022-03-05 12:53:51 -08:00
Grantland Chew
bda9090b3d Improve Peloton cues
* `/api/workout/<workout_id>/performance_graph?every_n=10` has a resolution of 10s which means that cues will always be off unless on a strict 10s mark
* `/api/ride/<ride_id>/details` has exact cues
* Fallback using old logic
2022-03-05 12:39:25 -08:00
Grantland Chew
8da8394405 Update qDebug 2022-03-05 12:39:25 -08:00
Roberto Viola
92683a9974 stagesbike resistance fixed with SS2K 2022-03-04 11:48:20 +01:00
Roberto Viola
1df2cb12c7 Peloton thumbnail image included in post-workout email #559 compressing
image to JPG (90kb more or less)
2022-03-04 08:39:52 +01:00
Roberto Viola
7d7a419f18 iOS version 2.10.42 2022-03-03 17:41:56 +01:00
Roberto Viola
b8b6095708 version 2.10.42 2022-03-03 17:38:41 +01:00
Roberto Viola
eff71933a7 Peloton thumbnail image included in post-workout email #559 2022-03-03 17:34:01 +01:00
Roberto Viola
e0f93fd0ee Add Reebok FR30 treadmill #710 command line added 2022-03-03 11:32:57 +01:00
Roberto Viola
5bb1af7eab Add Reebok FR30 treadmill #710 2022-03-03 11:01:21 +01:00
Roberto Viola
25e40de014 Horizon 7.8 treadmill: Unwanted countdown timer on treadmill workouts
#704 start and stop managed
2022-03-03 09:31:22 +01:00
Roberto Viola
1ceb9f339f Kickr Snap #585 using setSimGrade func instead of setResistance 2022-03-03 08:59:07 +01:00
Roberto Viola
a488d78830 version 2.10.40 2022-03-02 14:41:49 +01:00
Roberto Viola
143e81d5c4 nordick track fs5i compatibility with QZ #645 resistance conversion 2022-03-02 13:49:32 +01:00
Roberto Viola
9bc6cf3201 Neo 1 + rizer #659 2022-03-02 12:21:52 +01:00
Roberto Viola
28bb77cf85 Horizon Paragon X #637 fixing start phase 2022-03-02 09:21:54 +01:00
Roberto Viola
9d021f1fdb nordick track fs5i compatibility with QZ #645 crash for elliptical 2022-03-02 08:41:09 +01:00
Roberto Viola
c5211c26b2 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-03-01 15:04:24 +01:00
Roberto Viola
b670948db6 Horizon Paragon X (Issue #637) distance fixed 2022-03-01 15:03:58 +01:00
Roberto Viola
9dc43d0c49 LocalNetworkDescriptionUsage for SS2K debug log #500 2022-03-01 11:32:43 +01:00
Roberto Viola
3bb5d9a4dd Schwinn/Bowflex + SS2k + QZ - inconsistent auto-resistance in Zwift #500
debug from SS2K added
2022-03-01 10:46:22 +01:00
Roberto Viola
3a837e2781 Kickr Snap #585 cadence fixed 2022-03-01 09:57:22 +01:00
Roberto Viola
e85f509e7f nordick track fs5i compatibility with QZ #645 2022-03-01 09:53:33 +01:00
Roberto Viola
ebbdee8424 Support for Bowflex BXT216 Treadmill #677 2022-03-01 09:38:35 +01:00
Roberto Viola
8c587bc57b clear history button added to the experimental settings 2022-02-28 16:06:41 +01:00
Roberto Viola
59304c26d0 Provide Increment/Decrement preferences for Speed/Incline #618 2022-02-28 11:23:59 +01:00
Roberto Viola
ef68948df4 Nautilus E616 Elliptical #629 elliptical watts calculation by default
added
2022-02-28 11:17:36 +01:00
Roberto Viola
51e42267cb Support for Bowflex BXT216 Treadmill #677 2022-02-28 11:03:56 +01:00
Roberto Viola
fc0f7bf7c2 Request to add new bicycle model: FYTTER CROSSER CR-11R #662 2022-02-28 09:17:11 +01:00
Roberto Viola
deb26a9a57 Spirit CT800 #703 2022-02-27 05:54:55 +01:00
Roberto Viola
db51fddb76 iOS version 2.10.35 2022-02-25 16:25:42 +01:00
Roberto Viola
ca7d98af5e Fitex F1 Treadmill #698 2022-02-25 16:18:34 +01:00
Roberto Viola
c14b9474a3 Kickr Snap #585 2022-02-25 14:42:53 +01:00
Roberto Viola
067072a5db Horizon Paragon X #637 2022-02-25 09:17:08 +01:00
Roberto Viola
f8f278a5d5 nordick track fs5i compatibility with QZ #645 2022-02-25 09:00:22 +01:00
Roberto Viola
7137b5d636 Nautilus E616 Elliptical #629 2022-02-25 08:54:52 +01:00
Roberto Viola
f546b32ba7 Schwinn 510U #697 2022-02-25 08:34:51 +01:00
Roberto Viola
f0418cffb4 Echelon App not displaying data from virtual echelon #695 2022-02-25 08:28:34 +01:00
Roberto Viola
bcee9f2026 Fitex F1 Treadmill #698 2022-02-24 16:38:14 +01:00
Roberto Viola
e96aa6f19c Schwinn 510U #697 2022-02-24 15:08:59 +01:00
Roberto Viola
8de1d17391 Echelon App not displaying data from virtual echelon #695 trying
handling getWorkoutControlState
2022-02-24 14:40:36 +01:00
Roberto Viola
28fbd75e96 nordick track fs5i compatibility with QZ #645 speed parsing changed 2022-02-24 09:29:18 +01:00
Roberto Viola
e78bf6d5dc nordick track fs5i compatibility with QZ #645 calories fixed! 2022-02-24 09:11:05 +01:00
Roberto Viola
dc8da3f45a Add TRX 4500 Treadmill #696 2022-02-24 08:19:27 +01:00
Roberto Viola
6a814a2cf2 Horizon Paragon X #637 syncing stop and start with speed 2022-02-23 08:31:22 +01:00
Roberto Viola
5a07d5b958 iOS version 2.10.31 2022-02-23 05:18:12 +01:00
Roberto Viola
04badb1d40 Support for Ultrasport F-Bike 400B #690 2022-02-22 11:41:45 +01:00
Roberto Viola
e39ca23d4c Virtufit iconsole HRT 2.1 - Unable to connect #688 2022-02-22 11:13:08 +01:00
Roberto Viola
1595a4e13a auto inclination for fitshowtreadmill 2022-02-22 10:23:06 +01:00
Roberto Viola
1aa05852ae Nautilus E616 Elliptical #629 2022-02-22 10:06:45 +01:00
Roberto Viola
1dc2f2fa19 Nautilus E616 Elliptical #629 2022-02-22 09:45:52 +01:00
Roberto Viola
0d6a58e188 Request to add new bicycle model: FYTTER CROSSER CR-11R #662 2022-02-21 16:24:23 +01:00
Roberto Viola
4cc7c5b2c1 nordick track fs5i compatibility with QZ #645 2022-02-19 09:48:47 +01:00
Roberto Viola
e026c975c2 fixed stepcadence from Apple Watch (strava wants /2 for running so i guess it's the right way) 2022-02-19 09:36:58 +01:00
Roberto Viola
93ada11a61 Horizon Paragon X #637 start managed (i hope) 2022-02-19 09:32:00 +01:00
Roberto Viola
70ae42ec29 Virtufit iconsole HRT 2.1 - Unable to connect #688 removing FTMS for now 2022-02-19 09:12:37 +01:00
Roberto Viola
8732e925d4 Virtufit iconsole HRT 2.1 - Unable to connect #688 2022-02-19 09:09:41 +01:00
Roberto Viola
f258f99c62 iOS version 2.10.30 2022-02-17 19:32:39 +01:00
Roberto Viola
45d2b17469 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-02-17 19:31:28 +01:00
Roberto Viola
936df23bfb added qDebug on FTMS recv from virtualbike_zwift 2022-02-17 19:25:02 +01:00
Roberto Viola
8358890bb1 Follow Peloton Resistance forcing bike to 21 resistance every second #684 2022-02-17 18:58:50 +01:00
Roberto Viola
5a60162b51 Support for the Sole R92 Recumbent Bike (Issue #678) trying controlling
resistance
2022-02-17 11:17:06 +01:00
Roberto Viola
0a0e41d8fc Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-02-17 11:02:32 +01:00
Roberto Viola
3c6880ee98 Request to add new bicycle model: FYTTER CROSSER CR-11R #662 2022-02-17 11:02:24 +01:00
Roberto Viola
174d821f4e Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-02-17 09:48:12 +01:00
Roberto Viola
c2235ffc74 Vzfit on oculus quest and qz logs #680 and CSC sensor added also with improved speed from 1s to 0.2s 2022-02-17 09:43:49 +01:00
Roberto Viola
086856c66c iOS version 2.10.29 2022-02-17 08:51:28 +01:00
Roberto Viola
7726f47b54 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-02-17 08:32:48 +01:00
Roberto Viola
ec5de70a31 Horizon Paragon X (Issue #637) zwo treadmill speed error fixed 2022-02-17 08:32:19 +01:00
Roberto Viola
2d7d67572f Vzfit on oculus quest and qz logs (#680) 2022-02-17 08:00:03 +01:00
Roberto Viola
7db54b8ab9 re-reverting Timing difference between QZ and strava #623 2022-02-17 07:47:26 +01:00
Roberto Viola
5da0b26701 reverting Timing difference between QZ and strava #623 2022-02-16 16:17:22 +01:00
Roberto Viola
cb8ce08d46 Support for Bowflex BXT216 Treadmill #677 2022-02-16 16:15:56 +01:00
Roberto Viola
ff2e2d2c04 Neo 1 + rizer #659 2022-02-16 08:25:33 +01:00
Roberto Viola
c91c31543b Support for the Sole R92 Recumbent Bike #678 2022-02-16 08:17:27 +01:00
Roberto Viola
e2df8e0261 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-02-15 16:14:14 +01:00
Roberto Viola
4cce33098d fixed build issue 2022-02-15 16:13:56 +01:00
Roberto Viola
7238138540 nordick track fs5i compatibility with QZ #645 moving to elliptical class 2022-02-15 15:23:12 +01:00
Roberto Viola
61f7121a51 iOS version 2.10.28 2022-02-15 14:37:35 +01:00
Roberto Viola
d27eafae82 Support for the Sole R92 Recumbent Bike #678 2022-02-15 12:18:12 +01:00
Roberto Viola
3e55f04617 Apollo Xfit #679 2022-02-15 12:13:31 +01:00
Roberto Viola
09f9eed9b4 Support for the Sole R92 Recumbent Bike #678 2022-02-15 12:13:06 +01:00
Roberto Viola
5f97a08f42 Fassi F 9.4 HRC #646 2022-02-15 11:53:04 +01:00
Roberto Viola
e7ee2e0416 Support for the Sole LCB Upright Bike #675 2022-02-15 09:28:39 +01:00
Roberto Viola
f32dbf9129 Neo 1 + rizer #659 2022-02-15 08:24:34 +01:00
Roberto Viola
5cd1150bbc Neo 1 + rizer #659 2022-02-14 16:58:49 +01:00
Roberto Viola
cd20d4d939 Timing difference between QZ and strava #623 trying to get better
results on strava
2022-02-14 08:50:31 +01:00
Roberto Viola
b5ceafdd1d QZ not connecting to Bowflex T22 #674 2022-02-14 08:47:34 +01:00
Roberto Viola
547704545f Rowing on Zwift (like Rowed Biker and PainSled) #656 2022-02-14 08:39:45 +01:00
Roberto Viola
929b0b4bb6 Renpho Bike - Auto follow on Peloton classes #634 2022-02-13 14:53:08 +01:00
Roberto Viola
b8465ec7d7 Nautilus E626 Elliptical #629 2022-02-13 14:05:40 +01:00
Roberto Viola
0e71cc3973 Sole e25 #665 2022-02-13 12:12:50 +01:00
Roberto Viola
d71378cdf5 Request to add new bicycle model: FYTTER CROSSER CR-11R #662 2022-02-13 12:01:56 +01:00
Roberto Viola
c642c68a7a Fassi F 9.4 HRC #646 2022-02-13 11:54:00 +01:00
Roberto Viola
0765bf1dc3 Horizon Paragon X #637 2022-02-13 11:48:18 +01:00
Roberto Viola
f07dc253ab ss2k build issue fixed 2022-02-13 11:43:25 +01:00
Roberto Viola
457e29b645 Merge pull request #666 from rjbutler/master
SS2K Shift Step calibration #500
2022-02-13 11:36:06 +01:00
Roberto Viola
16406622df Merge branch 'master' into master 2022-02-13 11:35:26 +01:00
Roberto Viola
0dd76bd8f9 new settings on the bottom
in order to keep compatibility on iOS
2022-02-13 11:32:18 +01:00
Bob Butler
0c75f4405b Set shift set samples to zero initially
This will keep the behavior as it was unless the user enters calibration values.  I left the resistance values as recommended points to sample.  As long as either of the two is zero the samples won't be used.
2022-02-12 15:53:25 -08:00
Bob Butler
af1e5b9a1d Add 4 samples of resistance and shift step for SS2k
Removed slope and intercept from settings and calculate from samples.
2022-02-12 12:45:37 -08:00
Roberto Viola
f100c98d94 Merge pull request #671 from p3g4asus/anyrun_fixes
Fix for anyrun treadmills. They use big endian transmission and not l…
2022-02-12 18:12:19 +01:00
p3g4asus
c4b08f0523 Fix for anyrun treadmills. They use big endian transmission and not little endian like fitshow treadmills. Added the option to use the original timer data from treadmill rather then the one calculated it internally. 2022-02-12 11:25:53 +01:00
Roberto Viola
4afa70a0e6 managing peloton offset and gain for yesoulbike 2022-02-11 15:38:52 +01:00
Roberto Viola
35975ccea0 Troubleshooting Stages SC3 powermeter #664 aligning stages resistance
calculation to the schwinn one (same thing, power and cadence but no
resistance calculated)
2022-02-11 12:10:09 +01:00
Roberto Viola
520d9add35 Renpho Bike - Auto follow on Peloton classes #634 2022-02-11 11:57:15 +01:00
Roberto Viola
fef4c45c8f Support for the BH Fitness i.FDC20 (crosstrainer/elliptical) #661 2022-02-11 11:45:20 +01:00
Roberto Viola
e4da29ddaa Neo 1 + rizer #659 gears on inclination 2022-02-11 09:55:05 +01:00
Roberto Viola
ee678b328a Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-02-11 08:59:52 +01:00
Bob Butler
758e5c95e2 SS2K Shift Step calibration
SS2K Shift Step calibration

Add calibration of SS2K shift step by resistance level using least squares method.  Sampling of data points in configuration TBD
2022-02-10 20:47:45 -08:00
Roberto Viola
12356cd5df fixed AGAIN, cadence on apple watch 2022-02-10 14:25:58 +01:00
Roberto Viola
e271b95f60 fixing step cadence on apple watch 2022-02-10 11:16:06 +01:00
Roberto Viola
b4bbbe3cbe airdate peloton UTC https://github.com/cagnulein/qdomyos-zwift/issues/
634#issuecomment-1034681629
2022-02-10 10:55:18 +01:00
Roberto Viola
03fd70ea7a build issues fixed 2022-02-10 09:53:53 +01:00
Roberto Viola
2ae0104bc0 iOS version 2.10.25 2022-02-10 09:37:59 +01:00
Roberto Viola
3fb3ccb3cb what's on zwift removed from the sidebar 2022-02-10 09:23:32 +01:00
Roberto Viola
f052bc26e0 removed comment to watt gain 2022-02-10 08:46:26 +01:00
Roberto Viola
436a1ebe37 Support for the BH Fitness i.FDC20 (crosstrainer/elliptical) #661 2022-02-10 08:45:52 +01:00
Roberto Viola
dd87019988 Horizon Paragon X #637 2022-02-10 08:30:29 +01:00
Roberto Viola
c8d107f66f Neo 1 + rizer #659 2022-02-10 08:04:14 +01:00
Roberto Viola
a3385c678d fixing cadence from Apple Watch 2022-02-09 16:53:57 +01:00
Roberto Viola
f0271947bc Support for the BH Fitness i.FDC20 (crosstrainer/elliptical) (Issue
#661)
2022-02-09 11:26:31 +01:00
Roberto Viola
51bf6aeaca nordick track fs5i compatibility with QZ #645 2022-02-09 10:31:44 +01:00
Roberto Viola
31270ff90b Neo 1 + rizer #659 2022-02-09 09:48:52 +01:00
Roberto Viola
3523702f8a Horizon Paragon X #637 2022-02-09 09:18:22 +01:00
Roberto Viola
353f876b59 Renpho Bike - Auto follow on Peloton classes #634 2022-02-09 08:41:52 +01:00
Roberto Viola
f723ed364e Rowing on Zwift (like Rowed Biker and PainSled) #656 2022-02-09 08:26:36 +01:00
Roberto Viola
b3b349274a Incline does not follow Rouvy and Zwift using ProForm TDF 1.0 #628
settings moved in the Advanced section
2022-02-09 08:10:04 +01:00
Roberto Viola
77376b75fd peloton popup always after a stopped class for some users #597 2022-02-09 08:03:37 +01:00
Roberto Viola
bc50f33dd5 Wrong Class [BUG] #660 2022-02-09 07:52:15 +01:00
Roberto Viola
a5bc33f0f4 U.K. Horizon 7.0 AT 02 (Aug2020) does not connect #648 2022-02-08 09:51:15 +01:00
Roberto Viola
99c6e92bb2 Horizon Paragon X #637 fixing read metrics and controls speed and
incline
2022-02-08 09:36:08 +01:00
Roberto Viola
ae31c76040 Neo 1 + rizer #659 2022-02-08 09:11:44 +01:00
Roberto Viola
feed443f1a trxappgateusb apple watch support #654 2022-02-08 08:59:30 +01:00
Roberto Viola
6ded19d01d disabled whatsonzwift plugin due to licensing issue 2022-02-08 08:18:13 +01:00
Roberto Viola
8ea9017752 Add support for speed and incline on NordiTrack s30 treadmill #652 2022-02-07 14:05:44 +01:00
Roberto Viola
edaeac372b Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-02-07 11:56:05 +01:00
Roberto Viola
7bf07bff2e cadence from Apple Watch do Domyos Treadmill! 2022-02-07 11:55:53 +01:00
Roberto Viola
0dd8d4c15e Support for Whipr kayak please #653 2022-02-07 10:48:21 +01:00
Roberto Viola
ee2cbc669e fix build issue 2022-02-07 10:11:16 +01:00
Roberto Viola
0a99499340 Kayakpro Swimfast #649 2022-02-07 10:08:16 +01:00
Roberto Viola
7364613b06 Renpho Bike - Auto follow on Peloton classes #634 trying to use ftms
resistance instead of ftms power for peloton classes
2022-02-07 10:04:04 +01:00
Roberto Viola
50f644e0dd Horizon Paragon X #637 second wave 2022-02-07 09:08:37 +01:00
Roberto Viola
5736e37ac4 step cadence added to the Apple Watch (only on Apple Watch UI) 2022-02-06 14:47:54 +01:00
Roberto Viola
f09aa4061a adding disable_hr_frommachinery to domyostreadmill 2022-02-06 13:52:16 +01:00
Roberto Viola
3ebd15ef22 added What's on zwift name in the top bar label 2022-02-06 11:00:00 +01:00
Roberto Viola
1b81e286b4 Renpho Bike - Auto follow on Peloton classes #634 2022-02-06 10:21:50 +01:00
Roberto Viola
0c51d0687b Nautilus E626 Elliptical (Issue #629) 2022-02-06 10:11:54 +01:00
Roberto Viola
9cd4a228ac JTX sprint 7 qz app does not control incline or speed (Issue #598) 2022-02-06 10:04:35 +01:00
Roberto Viola
23e3ecf7a6 added Whatsonzwift disclaimer popup 2022-02-05 19:08:21 +01:00
Roberto Viola
4375d74007 U.K. Horizon 7.0 AT 02 (Aug2020) does not connect 2022-02-05 18:18:35 +01:00
Roberto Viola
3424eb04bd adding whatsonzwift disclaimer 2022-02-05 18:16:54 +01:00
Roberto Viola
df6dfcab5a Merge pull request #647 from p3g4asus/whatsonzwift
Whatsonzwift
2022-02-05 18:11:53 +01:00
Roberto Viola
eeaaf31aaf trying to preserve setting for testflight 2022-02-05 18:08:03 +01:00
Roberto Viola
d5941ab190 Update main.qml 2022-02-05 18:05:17 +01:00
Roberto Viola
3a76595794 adding sidebar new option for whatonzwift 2022-02-05 18:03:40 +01:00
Roberto Viola
be982e294f Merge branch 'master' into whatsonzwift 2022-02-05 17:58:42 +01:00
Roberto Viola
691b8964d7 JTX sprint 7 qz app does not control incline or speed (Issue #598) 2022-02-05 17:52:34 +01:00
p3g4asus
e65a6bfb44 Introducing compatibility with Fitshow-AnyRun treadmills 2022-02-05 16:28:41 +01:00
Roberto Viola
020fd33f72 JTX sprint 7 qz app does not control incline or speed #598 2022-02-05 05:09:29 +01:00
Roberto Viola
588f8f0ba0 Create stale.yml 2022-02-04 16:21:27 +01:00
Roberto Viola
841f203b99 Provide Increment/Decrement preferences for Speed/Incline #618 2022-02-04 11:42:30 +01:00
Roberto Viola
76b456cbcc JTX sprint 7 qz app does not control incline or speed #598 2022-02-04 09:00:22 +01:00
Roberto Viola
cc28d29b83 Tunturi T60 Treadmill #641 cherry picking https://github.com/p3g4asus/
qdomyos-zwift/commit/b0488128f5921c92c05f1b843e43fadc19bc3742
2022-02-04 08:48:02 +01:00
p3g4asus
b0488128f5 A couple of fixes to fitshowthreadmill and m3ibike 2022-02-03 18:24:52 +01:00
Roberto Viola
798a19bebf nordictrack fs5i 2022-02-03 15:11:24 +01:00
Roberto Viola
a12fab4aba target resistance drops to 5 #643 2022-02-03 14:24:29 +01:00
Roberto Viola
dcdd1b5e70 Horizon Paragon X #637 first wave 2022-02-03 12:34:18 +01:00
Roberto Viola
fc471d78b0 Renpho Bike - Auto follow on Peloton classes #634 2022-02-03 09:50:58 +01:00
Roberto Viola
d4955b8ade Resistance limits for ERG mode #639 2022-02-02 15:32:22 +01:00
Roberto Viola
b96cf47848 Horizon Paragon X #637 2022-02-02 15:06:53 +01:00
Roberto Viola
c159575200 Incline does not follow Rouvy and Zwift using ProForm TDF 1.0 #628 2022-02-02 14:52:58 +01:00
Roberto Viola
31a7591b2b 2 peloton classes in the same day with the same instructor #602 2022-02-02 14:44:57 +01:00
p3g4asus
2c9f1ba3da Fixed "No Incline Walk" Workout 2022-01-31 18:29:52 +01:00
Roberto Viola
13a285e223 Renpho Bike - Auto follow on Peloton classes #634 2022-01-31 12:05:12 +01:00
Roberto Viola
dd9526631e Sole F63 doesn't work with qz #597 2022-01-31 09:53:19 +01:00
Roberto Viola
32f3b92948 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-01-31 08:48:15 +01:00
Roberto Viola
ee6cb30ab3 Compatibility BH i.Boxster treadmill #604 2022-01-31 08:47:48 +01:00
Roberto Viola
4ffda5bd26 Nautilus E626 Elliptical #629 2nd wave 2022-01-31 08:39:11 +01:00
p3g4asus
18e3ff23dc Added navigation of site whatsonzwift 2022-01-30 12:57:27 +01:00
Roberto Viola
b7760098eb iOS version 2.10.12 2022-01-29 07:41:28 +01:00
Roberto Viola
45fb0ea9b8 avoiding change inclination in the training program if it's not set
Implement "Pace Time" for Runner #609
2022-01-29 07:36:47 +01:00
Roberto Viola
0c667e9b5b Incorrect Auto Speed/Inclination Timing for Peloton Treadmill Run #631 2022-01-29 07:34:12 +01:00
Roberto Viola
509ffdcc79 Nautilus E626 Elliptical #629 2022-01-28 13:54:30 +01:00
Roberto Viola
513b205107 logging qsettings error 2022-01-28 10:07:43 +01:00
Roberto Viola
3cf2715cf2 Implement "Pace Time" for Runner #609 fixing some strange parsing error 2022-01-28 08:52:15 +01:00
Roberto Viola
e4364f5b8b fix build errors again 2022-01-28 08:39:18 +01:00
Roberto Viola
349c2f8eea fix build error 2022-01-28 08:35:49 +01:00
Roberto Viola
c7320e4223 Nautilus E626 Elliptical #629 first wave: need to parse the metrics 2022-01-28 08:27:40 +01:00
Roberto Viola
7e5e6ba449 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-01-27 15:51:26 +01:00
Roberto Viola
eff5c86601 iOS complication #139 2022-01-27 15:51:15 +01:00
Roberto Viola
c4ecaa1e2a resistance conversion for Horizon GR7 bike for use with Peloton program
#625
2022-01-27 15:18:35 +01:00
Roberto Viola
fab776c8c7 Sole F63 doesn't work with qz #597 2nd wave of changes 2022-01-27 11:33:58 +01:00
Roberto Viola
73070b382c Implement "Pace Time" for Runner #609 total time instead of pace time 2022-01-27 10:38:14 +01:00
Roberto Viola
a1ce154294 App crashes when connecting to iconsole+ bike #624 2022-01-26 15:35:20 +01:00
Roberto Viola
5bf7864efb QZ App iOS: Lock Out Technogym Myrun Speed & Inclination Paddles When QZ
Paused. #620
2022-01-26 15:16:15 +01:00
Roberto Viola
cc1055bd29 Set the value <0 in Watt Offset (Issue #622) 2022-01-26 13:46:36 +01:00
Roberto Viola
b9961bc6bc Peloton Difficulty Tile #468 first wave 2022-01-26 10:46:46 +01:00
Roberto Viola
72cb2fbaf0 Target Speed is showing km/h instead of mi/h for Peloton Running #619 2022-01-26 10:22:02 +01:00
Roberto Viola
dc44b86cbd Implement "Pace Time" for Runner #609 2022-01-26 10:12:25 +01:00
Roberto Viola
46d0b625ab Implement "Pace Time" for Runner #609 https://github.com/cagnulein/
qdomyos-zwift/issues/609#issuecomment-1021360949
2022-01-25 17:26:39 +01:00
Roberto Viola
163c074372 iOS version 2.10.7 2022-01-25 17:04:01 +01:00
Roberto Viola
06692cd902 sole f63 keep restarting #597 https://github.com/cagnulein/qdomyos-
zwift/issues/597#issuecomment-1021320925
2022-01-25 17:01:48 +01:00
Roberto Viola
8da031797a Auto Inclination Accuracy Investigation: QZ (IOS) Control of Technogym
Myrun #610
2022-01-25 10:10:27 +01:00
Roberto Viola
4cf613fccc Implement "Pace Time" for Runner #609 2022-01-25 09:42:58 +01:00
Roberto Viola
7baada88d3 Troubleshoot Sole TT8 Treadmill control via QZ #591 2022-01-25 08:37:27 +01:00
Roberto Viola
c005a623f6 JTX sprint 7 qz app does not control incline or speed #598 2022-01-25 08:14:36 +01:00
Roberto Viola
e210bb8acc Compatibility BH i.Boxster treadmill #604 fix decimal speed 2022-01-25 05:43:09 +01:00
Roberto Viola
2e306ccfd6 2 peloton classes in the same day with the same instructor #602 2022-01-24 10:56:12 +01:00
Roberto Viola
5d5bde34bf Unable to control speed/incline on NordicTrack T6.5S #592 2022-01-24 09:35:07 +01:00
Roberto Viola
984141c6e2 Merge pull request #613 from gungun974/master 2022-01-24 06:26:50 +01:00
Gungun974
81001cbbdd Add 40_web_socket_api.md / QDomyos-Zwift WebSocket API Installation & Operation guide 2022-01-24 07:47:26 +04:00
Roberto Viola
c150dd4d2a SS2K hardware buttons handled as gears 2022-01-23 14:30:31 +01:00
Roberto Viola
29990ff840 erg mode with SS2K for stagesbike and assioma pedals 2022-01-23 13:47:06 +01:00
Roberto Viola
24da48f265 the app starts with 10 watts ,im not pedaling (Issue #607) 2022-01-23 05:40:45 +01:00
Roberto Viola
715b1a847f Unable to control incline or resistance on ProForm TDF 1.0 #593 2022-01-23 05:27:41 +01:00
Roberto Viola
73bf1c04a2 apple watch heart rate fixed on stagesbike and assioma 2022-01-22 19:53:16 +01:00
Roberto Viola
f7a6a1982f Unable to control incline or resistance on ProForm TDF 1.0 #593 2022-01-22 19:50:54 +01:00
Roberto Viola
8239073592 SS2K fix 2022-01-22 15:55:29 +01:00
Roberto Viola
35935d8ada adding resistanceFromFTMSAccessory to stagesbike and assioma pedals 2022-01-22 14:52:07 +01:00
Roberto Viola
21d26f326a Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-01-22 14:47:21 +01:00
Roberto Viola
aa9ca3de4b Compatibility BH i.Boxster treadmill #604 fixing start issue 2022-01-22 14:46:24 +01:00
Roberto Viola
5e96e6dad3 android version 2.10.3 2022-01-22 05:26:10 +01:00
Roberto Viola
6172301846 Unable to control incline or resistance on ProForm TDF 1.0 #593 2022-01-21 16:04:10 +01:00
Roberto Viola
67902625c7 Unable to control speed/incline on NordicTrack T6.5S #592 2022-01-21 15:42:54 +01:00
Roberto Viola
0cf7999198 [BUG] virtufit etappe 2.0 i/ qz. zwift #595 watt fixed 2022-01-21 14:37:24 +01:00
Roberto Viola
4dffbc27b3 Sole F63 doesn't work with qz #597 2022-01-21 12:03:25 +01:00
Roberto Viola
090ea3ebc9 HealthRider H70t iOS debug report - version 2.10 #600 2022-01-21 08:10:53 +01:00
Roberto Viola
9048eea17a version 2.10.1 2022-01-20 17:53:49 +01:00
Roberto Viola
3da7d544c9 freeride distance trainprogram zwo fixed
https://github.com/cagnulein/qdomyos-zwift/issues/
589#issuecomment-1017501795 #589
2022-01-20 14:36:10 +01:00
Roberto Viola
0a8f9a6742 ZWO workout file with treadmill not working #589 calculating remaining
time based also on speed
2022-01-20 14:23:56 +01:00
Roberto Viola
daa7e1174f Merge pull request #584 from gungun974/master
Add on Websocket start / pause / stop commands
2022-01-20 11:13:32 +01:00
Roberto Viola
99bf7610da Technogym MYRUN Zwift Mode Creation: 1) Free Run 2)ERG #571 disabled
autostart
2022-01-20 10:23:34 +01:00
Roberto Viola
b0054df5ae Merge pull request #596 from cagnulein/trainingprogram_distance
Trainingprogram distance
2022-01-20 10:08:36 +01:00
Roberto Viola
82c6f67631 ZWO workout file with treadmill not working #589 2022-01-20 10:07:26 +01:00
Roberto Viola
98bb01f5b4 Merge pull request #594 from siudej/master
adjust skierg metrics, and use one notification
2022-01-20 09:52:30 +01:00
Roberto Viola
afe6ef3755 Merge branch 'master' into master 2022-01-20 09:43:50 +01:00
Roberto Viola
92020edf76 ZWO workout file with treadmill not working #589 #320 Added the ability
in the trainprogram. We need to manage the durationtype field in the
zwiftworkout.cpp
2022-01-20 09:38:13 +01:00
Roberto Viola
7809e5176f ZWO workout file with treadmill not working #589 rounding speed to the
nearest integer for kingsmithr1protreadmill
2022-01-20 09:06:32 +01:00
Roberto Viola
e25a93ea4f stroke length dummy added to echelonrower 2022-01-20 08:55:39 +01:00
Roberto Viola
035b46b973 cadence tile renamed to stroke rate for rowers 2022-01-20 08:49:52 +01:00
Roberto Viola
27889d1b84 change the description of the odometer tile when rower device used 2022-01-20 08:47:42 +01:00
Roberto Viola
477284c1e6 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-01-20 08:44:32 +01:00
Roberto Viola
acd4532e30 fixed strokes count on echelonrower and concept2skierg 2022-01-20 08:44:22 +01:00
Bartek Siudeja
5f683023de adjust skierg metrics, and use one notification 2022-01-19 23:29:53 -08:00
Roberto Viola
a8935e11f1 request control to shuaa5treadmill (mail "Zwift incline on treadmill
question" by Philip N.)
2022-01-19 16:40:44 +01:00
Roberto Viola
0b8c6e54f1 improved the setting needed to Virtufit etappe 2.0 I no auto resistance (#580) 2022-01-19 12:23:04 +01:00
Roberto Viola
81ace335ab initializing the service of technogymmyruntreadmill in order to fix https://github.com/cagnulein/qdomyos-zwift/issues/571#issuecomment-1016319909 #571 2022-01-19 12:12:31 +01:00
Roberto Viola
d6dd8ec10c Fitmetria Fanfit - Enhacements #506 led managed 2022-01-19 11:47:33 +01:00
Roberto Viola
1510eddba1 iOS version 2.10.0 2022-01-19 08:07:24 +01:00
Roberto Viola
9a289e593e Troubleshoot Sole TT8 Treadmill control via QZ #591 2022-01-18 17:25:40 +01:00
Roberto Viola
af5caf1f8a Virtufit etappe 2.0 I no auto resistance #580 added the resistance
levels
2022-01-18 14:42:11 +01:00
Roberto Viola
8217b7a7ea ZWO workout file with treadmill not working #589 2022-01-18 11:03:17 +01:00
Roberto Viola
098818706d Virtufit etappe 2.0 I no auto resistance #580 added experimental support 2022-01-18 10:04:48 +01:00
Roberto Viola
157153116b Virtufit etappe 2.0 I no auto resistance #580 fixed settings page 2022-01-18 09:06:53 +01:00
Roberto Viola
f46ce80228 Healthrider h70t #590 trying adding it as a fitshow treadmill 2022-01-18 08:10:30 +01:00
Roberto Viola
99b793d713 Using Precor 956i treadmill connected via NPE GEM Retro 2022-01-16 13:18:30 +01:00
Roberto Viola
ea18896c9e TOORX SRX-500 (iConsole+ latest version) metrics not updating #578 2022-01-16 13:13:20 +01:00
Gungun974
8e9057d4de On Websocket stop command emit workoutEventStateChanged to stopped 2022-01-16 12:24:06 +04:00
Gungun974
ce55f95cf4 Add on Websocket start / pause / stop commands (Don't update the UI) 2022-01-16 00:28:53 +04:00
Roberto Viola
819aeb6452 iOS version 2.9.47 2022-01-15 19:58:51 +01:00
Roberto Viola
5ff7b36e93 Technogym MYRUN Zwift Mode Creation: 1) Free Run 2)ERG #571 adding FTMS
init key on control point
2022-01-15 17:37:24 +01:00
Roberto Viola
5278059093 Technogym MYRUN Zwift Mode Creation: 1) Free Run 2)ERG #571 fixing init 2022-01-15 11:48:10 +01:00
Roberto Viola
47626f923f Technogym MYRUN Zwift Mode Creation: 1) Free Run 2)ERG #571 changing
customChar to WriteWithoutResponse
2022-01-15 06:40:19 +01:00
Roberto Viola
bee99d2400 Technogym MYRUN Zwift Mode Creation: 1) Free Run 2)ERG #571 adding
weigth command
2022-01-14 15:12:43 +01:00
Roberto Viola
813ce1c8b5 Power connects but no signal in Zwift, controllable and cadence not
detected #495
2022-01-14 10:58:43 +01:00
Roberto Viola
bbe6197fa7 Renpho bike issues #553 fix FTMS routing process 2022-01-14 10:50:03 +01:00
Roberto Viola
d520bc42f9 Renpho bike issues #553 avoid sending power request 0 to the bike 2022-01-14 10:44:15 +01:00
Roberto Viola
44bd9a4c7a [REQ] Concept2 SkiErg support #573 distance fixed 2022-01-14 09:31:32 +01:00
Roberto Viola
c1cb0a12c2 Technogym MYRUN Zwift Mode Creation: 1) Free Run 2)ERG #571 2022-01-14 08:45:19 +01:00
Roberto Viola
1ecc2563f8 changing the speed on echelonstride from km to miles 2022-01-13 19:57:36 +01:00
Roberto Viola
0aa0ea4614 android version 2.9.42 2022-01-13 13:54:51 +01:00
Roberto Viola
b3988e7922 Domyos Rower #570 2022-01-13 13:52:08 +01:00
Roberto Viola
4f11a83820 Concept2 SkiErg support #573 added 2022-01-13 08:37:50 +01:00
Roberto Viola
d203c1de8b TRX3500 treadmill #574 added 2022-01-13 07:46:21 +01:00
Roberto Viola
2cdbd079e0 reverting echelonrower mods 2022-01-13 07:24:03 +01:00
Roberto Viola
dc81d9b51f Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-01-13 07:22:12 +01:00
Roberto Viola
59e6a9c167 Domyos Rower #570 2022-01-12 17:16:05 +01:00
Roberto Viola
7dfd879188 fixing cadence on echelonrower 2022-01-12 17:11:58 +01:00
Roberto Viola
70c94f931f build error fixed 2022-01-12 14:18:50 +01:00
Roberto Viola
b6c4620381 BH I.Boxster treadmill #551 relaxed timing 2022-01-12 09:47:28 +01:00
Roberto Viola
c337ae63d8 BH I.Boxster treadmill #551 fixes 2022-01-12 08:59:56 +01:00
Roberto Viola
6bd9592c37 echelonrower distance fixed 2022-01-12 08:19:41 +01:00
Roberto Viola
5dfd7ab688 iOS version 2.9.39 2022-01-11 20:15:49 +01:00
Roberto Viola
d0eb72efc9 Implement PID Heart Tile #565 2022-01-11 15:50:20 +01:00
Roberto Viola
fe2590286d Schwinn/Bowflex + SS2k + QZ - inconsistent auto-resistance in Zwift #500
adding FTMS service
2022-01-11 09:30:03 +01:00
Roberto Viola
575fa4499a Renpho bike issues #553 2022-01-11 08:40:35 +01:00
Roberto Viola
b6d6813b4f Cadence or Stroke rate will not function using a Echelon Rower Qdomyos-
Swift App IOS 12.5.5 iPod Air #564
2022-01-10 11:38:19 +01:00
Roberto Viola
201d888599 Cadence with Garmin and Zwift #566 2022-01-10 11:14:07 +01:00
Roberto Viola
49f283d2ca build issue fixed 2022-01-10 11:08:08 +01:00
Roberto Viola
7e01fb4425 Schwinn/Bowflex + SS2k + QZ - inconsistent auto-resistance in Zwift #500
adding erg mode directly on SS2K
2022-01-10 10:46:17 +01:00
Roberto Viola
0faae303d3 Domyos Rower #570 2022-01-10 10:05:36 +01:00
Roberto Viola
c4ebf7f962 trying to get renpho on iOS #553 2022-01-09 07:31:25 +01:00
Roberto Viola
9a8b64ed89 trying to get iOS version working with renpho bike #553 2022-01-08 18:19:40 +01:00
Roberto Viola
b35adb3b8d Renpho bike issues #553 routing FTMS packet to the bike directly on the zwift scenario 2022-01-07 10:51:42 +01:00
Roberto Viola
2eed5132fa [BUG] Echelon App displays incorrect resistance by default (affected by Swift resistance offset) #557 2022-01-07 10:37:29 +01:00
Roberto Viola
d98e4bbe6a [BUG]Myrun Cadence always zero on QZ app #558 2022-01-07 10:26:33 +01:00
Roberto Viola
12d72c1c11 Bug with Sole F65. #545 added auto incline 2022-01-07 10:22:13 +01:00
Roberto Viola
e610ccfbe7 Renpho bike issues #553 removed 5 seconds restarts 2022-01-06 00:06:10 +01:00
Roberto Viola
04b5238207 iOS version 2.9.34 2022-01-05 15:23:01 +01:00
Roberto Viola
16f48c3c23 Schwinn conversion is increasingly off as resistance gets higher #521
fixing peloton resistance values under 20
2022-01-05 08:17:54 +01:00
Roberto Viola
c848683575 trying to understand if there is a rfcomm simulator on iOS Technogym
Myrun treadmill #515
2022-01-05 07:56:53 +01:00
Roberto Viola
2881a564a5 speed up technogymmyruntreadmillrfcomm init process and removing the 1.2
speed on startup #515
2022-01-05 07:35:22 +01:00
Roberto Viola
943a27e7d5 Technogym Myrun treadmill #515 waiting discovery completion 2022-01-04 18:07:12 +01:00
Roberto Viola
226e687570 iOS version 2.9.32 2022-01-04 16:27:03 +01:00
Roberto Viola
add8ee3efc Technogym Myrun treadmill #515 fix android crash (i hope so) 2022-01-04 16:00:51 +01:00
Roberto Viola
79022a6560 Renpho bike issues #553 2022-01-04 11:47:08 +01:00
Roberto Viola
dcd05e9580 Technogym Myrun treadmill #515 crash fix 2022-01-04 11:24:46 +01:00
Roberto Viola
d5bc202865 BH I.Boxster treadmill #551 stop command added 2022-01-04 11:12:38 +01:00
Roberto Viola
9383ca3f10 BH I.Boxster treadmill #551 added 2022-01-04 11:04:15 +01:00
Roberto Viola
e1acdb24c1 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2022-01-04 09:35:03 +01:00
Roberto Viola
1565e87766 Schwinn/Bowflex + SS2k + QZ - inconsistent auto-resistance in Zwift #500 2022-01-04 09:34:36 +01:00
Roberto Viola
3a7280cf37 Syncronaction XT900 produced by Dyaco and sold in Italy by Intergym #550 2022-01-03 21:23:09 +01:00
Roberto Viola
4e564c01ca wiki images added 2022-01-03 16:18:30 +01:00
Roberto Viola
3700d8262d technogymmyruntreadmillrfcomm max speed and inclination updated 2022-01-03 16:17:32 +01:00
Roberto Viola
b964301d4b Technogym Myrun treadmill #515 added inclination command 2022-01-03 14:44:37 +01:00
Roberto Viola
64938a87d1 Bug with Sole F65. #545 2022-01-03 10:38:17 +01:00
Roberto Viola
bf96c64dad Schwinn conversion is increasingly off as resistance gets higher #521 2022-01-03 09:59:16 +01:00
Roberto Viola
eff1483b86 Improperly reported / intermittent metrics on Domyos Bike Issue #481 2022-01-02 18:14:29 +01:00
Roberto Viola
4840ffb06f TOORX TRX ROUTE KEY #541 2022-01-02 12:09:15 +01:00
Roberto Viola
46c296fae7 trying to find dev code for technogym myrun to change incline 2022-01-02 11:48:10 +01:00
Roberto Viola
fe025ce039 peloton treadmill 1 minute offset fixed (same as bike) 2022-01-01 22:35:02 +01:00
Roberto Viola
b2c476d481 parse fixing for technogymmyruntreadmillrfcomm #515 2022-01-01 18:21:10 +01:00
Roberto Viola
1183c58cd6 trying to fixing bt init phase on myrun 2022-01-01 14:58:27 +01:00
Roberto Viola
beabcdc526 target speed and inclination tiles fixed 2022-01-01 14:41:28 +01:00
Roberto Viola
f92e37ac1a iConsole+ - Connectivity Issue #538 CASALL bike added 2022-01-01 14:02:15 +01:00
Roberto Viola
1f556508f8 virtualbike/treadmill fixed on swift #540 2022-01-01 10:03:04 +01:00
Roberto Viola
215c0f436d fixing erg mode on zwift 2021-12-31 18:48:53 +01:00
Roberto Viola
d0e774a3da recalculating power requested if zwift doesn't send it regulary 2021-12-31 17:42:05 +01:00
Roberto Viola
00873f3b16 changing virtual device on swift to Wahoo Kickr to unblock zwift devices 2021-12-31 13:01:16 +01:00
Roberto Viola
78bb4f8bd2 iOS version 2.9.23 2021-12-31 11:40:28 +01:00
Roberto Viola
ca38c7299b adding starting offset on peloton treadmill workouts 2021-12-31 11:32:03 +01:00
Roberto Viola
9cbb87750d using the zwift offset and gain in order to trim the resistance sent to the echelon app 2021-12-31 11:27:04 +01:00
Roberto Viola
f7dc3a3bcf iConsole+ - Connectivity Issue #538 2021-12-31 11:21:34 +01:00
Roberto Viola
2d16630dfb hiding QZ from Zwift on iOS workaround 2021-12-31 11:17:37 +01:00
Roberto Viola
8a3ad5305c fix ios build on xcode 13 2021-12-30 11:49:18 +01:00
Roberto Viola
a21d962760 fixing elapsed timer in schwinnic4bike when the bike has been discovered
without using the advertising message (IC Bike workaround)
2021-12-30 11:30:40 +01:00
Roberto Viola
3b7e740f12 fixing force speed for peloton 2021-12-30 09:45:20 +01:00
Roberto Viola
46b901ed20 fixing next rows tile 2021-12-30 09:36:39 +01:00
Roberto Viola
9a92bed5a7 target speed and target incline fixed 2021-12-29 23:05:22 +01:00
Roberto Viola
0cddfa69b7 Nautilus T628 Treadmill #458 speed parsing fixed! 2021-12-29 20:43:33 +01:00
Roberto Viola
b1c07aae39 added a new setting (disabled by default) to enable the ability from the training program to change the speed (done after adding the peloton treadmill metrics) 2021-12-29 19:24:41 +01:00
Roberto Viola
07e73b3d4f target speed and target incline tile added 2021-12-29 19:12:59 +01:00
Roberto Viola
cce32cfa48 Peloton Treadmill Auto Speed/incline #532 2021-12-29 15:36:56 +01:00
Roberto Viola
e5d897923c Disclaimer at startup #533 2021-12-29 14:01:08 +01:00
Roberto Viola
0831bf6197 colouring watt tile accordingly to ftp color tile 2021-12-29 11:56:55 +01:00
Roberto Viola
88f9d8e4b1 DKN Airun X #526 trying a different protocol based on rfcomm one 2021-12-29 11:34:24 +01:00
Roberto Viola
6cff1b5a22 Nautilus T628 Treadmill #458 fixing parse inclination and speed 2021-12-29 09:28:38 +01:00
Roberto Viola
f7d37a53f8 trying to fix crash on RSC on swift 2021-12-29 09:16:10 +01:00
Roberto Viola
38083cfb4a Nautilus T628 Treadmill #458 trying to change the init phase 2021-12-28 16:33:04 +01:00
Roberto Viola
8f78d806f1 build issue fixed 2021-12-28 14:16:46 +01:00
Roberto Viola
56573db029 Nautilus T628 Treadmill #458 services fixed 2021-12-28 14:14:40 +01:00
Roberto Viola
dc3a399d82 disabling rfcomm for iOS Technogym Myrun treadmill #515 2021-12-28 11:56:12 +01:00
Roberto Viola
4d5bcfc92c iOS version 2.9.17 2021-12-28 10:05:31 +01:00
Roberto Viola
f83522a7ea Horizon GR7 Spin Bike #477 distance fixed 2021-12-28 09:48:59 +01:00
Roberto Viola
6d7ddd5052 Nautilus T628 Treadmill #458 parsing speed and inclination 2021-12-28 09:34:48 +01:00
Roberto Viola
8340efef51 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-12-28 09:06:47 +01:00
Roberto Viola
c6bc073cd5 Nautilus T628 Treadmill #458 added (need to parse correctly the data,
waiting infos from the user)
2021-12-28 09:06:29 +01:00
Roberto Viola
4319995c67 Merge pull request #531 from pascal-bourut/master 2021-12-28 06:58:55 +01:00
Pascal Bourut
faa12f5fb1 fix typo in parameters' list 2021-12-27 18:51:35 -07:00
Roberto Viola
dfeb1a21c3 Merge pull request #530 from pascal-bourut/master 2021-12-28 00:09:59 +01:00
Pascal Bourut
4c504c7eaf new command line parameter to enable nordictrack treadmill 2021-12-27 14:44:43 -07:00
Pascal Bourut
a891f95cd8 new command line parameter to enable nordictrack treadmill 2021-12-27 12:59:18 -07:00
Matteo Federico Zazzetta
7f4dc41eb0 Fix compilation issues on iOS (again). 2021-12-27 17:51:30 +01:00
Matteo Federico Zazzetta
94580bcb53 Fix for compilation issue under iOS. 2021-12-27 17:40:18 +01:00
Matteo Federico Zazzetta
2d2e130631 Merged with virtualtreadmill in master branch 2021-12-27 17:22:42 +01:00
Matteo Federico Zazzetta
5e76cd61fd Fix write characteristic response build 2021-12-27 16:04:16 +01:00
Roberto Viola
b8f2846419 iOS version 2.9.16 2021-12-27 15:42:30 +01:00
Roberto Viola
3dde451fb2 technogymmyruntreadmillrfcomm added 2021-12-27 15:39:30 +01:00
Matteo Federico Zazzetta
037101f317 Fixes + new debug messages 2021-12-27 13:39:38 +01:00
Matteo Federico Zazzetta
044ad996c7 Added Dircon for treadmill. Fixed an m3i bug 2021-12-26 18:30:41 +01:00
Roberto Viola
046f73a431 next rows tile added 2021-12-26 18:01:35 +01:00
Roberto Viola
ae79cbb5e2 fixing Improperly reported / intermittent metrics on Domyos Bike #481 decimal point on distance 2021-12-26 16:19:06 +01:00
Roberto Viola
f380978bd1 zwift offset and gain for inclination added 2021-12-26 16:14:18 +01:00
Roberto Viola
0b9af8f543 added the timestamp of the last current slope received in order to signalling it correctly on the UI 2021-12-26 15:55:29 +01:00
Roberto Viola
b832a8ecfa rsc on virtualtreadmill fix 2021-12-26 15:28:06 +01:00
Roberto Viola
afadc9e352 DKN Airun X #526 trying to use another notify chars 2021-12-25 11:54:40 +01:00
Roberto Viola
b5562199e6 Merge pull request #528 from cagnulein/virtualtreadmill_ios
Virtualtreadmill Swift code for ios
2021-12-25 11:39:34 +01:00
Roberto Viola
3911337666 fixes and tested! 2021-12-25 11:36:29 +01:00
Roberto Viola
8c182d0f0a virtualtreadmil.cpp updated 2021-12-24 16:45:17 +01:00
Roberto Viola
e0be81b50b objectiveC interface done 2021-12-24 16:25:17 +01:00
Roberto Viola
37144c6b51 finalizing virtualtreadmill_zwift module 2021-12-24 16:05:13 +01:00
Roberto Viola
518f881a4d starting the module, based on the virtualbike one 2021-12-24 15:23:32 +01:00
Roberto Viola
53580bc9ac DKN Airun X #526 service fixed 2021-12-24 13:53:33 +01:00
Roberto Viola
6d19ef42d6 Allow resistance adjustments from the Peloton Resistance tiles #527 2021-12-24 11:53:38 +01:00
Roberto Viola
e8da049ec7 eliterizer fixed (i can't receive notify yet) 2021-12-24 11:46:41 +01:00
Roberto Viola
7801db0d1d elitesterzosmart fix 2021-12-24 09:57:14 +01:00
Roberto Viola
488a7e078a added a setting to double the negative inclination sent from zwift 2021-12-23 17:15:45 +01:00
Roberto Viola
2e6ed34e96 Improperly reported / intermittent metrics on Domyos Bike #481 trying to
fix cadence and the speed decimal separator
2021-12-23 16:12:45 +01:00
Roberto Viola
7d202faf48 DKN Airun X #526 compatibility added 2021-12-23 11:51:28 +01:00
Roberto Viola
61e9841375 inclination tile icon blinks when auto inclination is turned on by 3rd
party app like Zwift
2021-12-22 10:51:12 +01:00
Roberto Viola
07cf50b124 Improperly reported / intermittent metrics on Domyos Bike #481 2021-12-21 14:53:37 +01:00
Roberto Viola
cb37687f0b Schwinn/Bowflex + SS2k + QZ - inconsistent auto-resistance in Zwift #500
using bike resistance instead of peloton resistance
2021-12-20 08:31:08 +01:00
Roberto Viola
28241daf45 removed duplicate cadence var from rower.h 2021-12-19 15:46:00 +01:00
Roberto Viola
b408dd2071 remove cadence from elliptical (there is already in the
bluetoothdevice.h)
2021-12-19 09:35:35 +01:00
Roberto Viola
3d7c41d54a added min step inclination to 1 in echelonstride 2021-12-19 09:35:08 +01:00
Roberto Viola
81e8bc7061 reading heart rate from echelonstride 2021-12-19 09:15:57 +01:00
Roberto Viola
ad025c53d4 iOS version 2.9.9 2021-12-18 20:05:07 +01:00
Roberto Viola
19f721112c fixing controllable bike in virtualtreadmill 2021-12-18 19:55:24 +01:00
Roberto Viola
bd85d96bc3 Treadmill Bowflex T216 #522 need to parse data and fill the forceSpeed
and forceIncline and add virtualbike
2021-12-18 18:20:30 +01:00
Roberto Viola
bdf48c11d6 android version 2.9.8 2021-12-18 17:28:37 +01:00
Roberto Viola
6abeea9b17 virtualtreadmill and rsc and virtualbike alltoghether managed. it's
quite a revolution for virtualtreadmill
2021-12-18 17:08:41 +01:00
Roberto Viola
128b7a8a22 Echelon sport stride managed 2021-12-18 17:07:37 +01:00
Roberto Viola
9123230dab moved running cadence sensor to experimental settings (it was not
releated to peloton anyway)
2021-12-18 16:59:40 +01:00
Roberto Viola
828ee3dbba fix overflow on calories on display on domyostreadmill T900C 2021-12-18 16:58:01 +01:00
Roberto Viola
ada040f4b8 domyostreadmill kcal calculated because, otherwise, when you put the
treadmill in pause, the kcal resets itself
2021-12-18 16:36:18 +01:00
Roberto Viola
934222c6ab Schwinn/Bowflex + SS2k + QZ - inconsistent auto-resistance in Zwift #500
fix Cadence == 0
2021-12-18 13:40:04 +01:00
Roberto Viola
7483a60765 RSC speed fixed 2021-12-18 13:14:52 +01:00
Roberto Viola
29b8922a35 stryd sensor fixed when connected to a treadmill 2021-12-18 13:14:37 +01:00
Roberto Viola
900fbafc55 echelonstride fix speed and inclination readings 2021-12-18 07:45:57 +01:00
Roberto Viola
e2b8cc6e8c 2.9.5 android version 2021-12-17 14:13:37 +01:00
Roberto Viola
59e262581a Support for Bodytone Treadmills #511 added odometer and kcal 2021-12-17 14:12:24 +01:00
Roberto Viola
28be132c8e Update 20_supported_devices_and_applications.md 2021-12-17 11:42:52 +01:00
Roberto Viola
7f957bbfea Support for Bodytone Treadmills #511 adding the full keymab of the
treadmill buttons
2021-12-17 11:37:04 +01:00
Roberto Viola
8c85c9da1c removed unused variable 2021-12-17 09:18:08 +01:00
Roberto Viola
f5e562a13b build issues fixed 2021-12-17 09:10:40 +01:00
Roberto Viola
70bcbe4385 Echelon Stride (Treadmill) #380 added force speed and force inclination
and virtual bike. also fixed virtual treadmill
2021-12-17 09:06:54 +01:00
Roberto Viola
97c32181e7 Support for Bodytone Treadmills #511 : inclination fixed and start/stop
handled
2021-12-17 08:15:56 +01:00
Roberto Viola
7501ddee7d iOS version 2.9.3 2021-12-16 19:59:28 +01:00
Roberto Viola
f4c2bea575 added bowflex C9/C10 2021-12-16 17:42:12 +01:00
Roberto Viola
7c9aea76f6 Support for Bodytone Treadmills #511 caching speed and incline values
after writing them
2021-12-16 17:36:14 +01:00
Roberto Viola
15de92a8e8 Support for Bodytone Treadmills #511 : improving init phase 2021-12-16 16:41:29 +01:00
Roberto Viola
bba1f03206 Support for Bodytone Treadmills #511 fixing inclination and min/max
speed/inclination command added
2021-12-16 15:21:40 +01:00
Roberto Viola
6af3bd1bad Virtual rower profile #519 2021-12-16 14:42:19 +01:00
Roberto Viola
77ef273046 Support for Bodytone Treadmills #511 fixing inclination and handshake 2021-12-16 10:30:00 +01:00
Roberto Viola
cb030c1bf2 Add cadence to virtualtreadmill for ellipticals and treadmills #195
(only for ios or android < 10)
2021-12-16 09:02:06 +01:00
Roberto Viola
ef31268755 added possibility to multiply the cadence X2 when you're using a RSC 2021-12-16 08:28:09 +01:00
Roberto Viola
9997b2caf6 Peloton Strength, Yoga... workout into Strava #518 2021-12-16 08:27:26 +01:00
Roberto Viola
0ab90cea38 Support for Bodytone Treadmills #511 fixed init issue 2021-12-15 17:18:05 +01:00
Roberto Viola
7ff78587d2 Support for Bodytone Treadmills #511 adding some debug prints 2021-12-15 16:22:09 +01:00
Roberto Viola
cc412cf2df Support for Bodytone Treadmills #511 fixing init phase 2021-12-15 14:36:05 +01:00
Roberto Viola
f46b7e0ade Support for Bodytone Treadmills #511 2021-12-15 12:03:32 +01:00
Roberto Viola
8bdf0e79f4 New version of Echelon App not displaying metrics when connected to QZ
#275 trying to change firmware version
2021-12-15 09:00:45 +01:00
Roberto Viola
77c0af738e Support for Bodytone Treadmills in progress... #511 2021-12-14 17:39:18 +01:00
Roberto Viola
9244019ffa Peloton Strength, Yoga... workout into Strava #518 2021-12-14 15:27:38 +01:00
Roberto Viola
76d7dbc3fa fixed max resistance for SS2K and schwinnic4bike
resistanceFromPowerRequest (the function doesn't get all the resistance
levels (for example the ones < 25)) #500
2021-12-14 08:58:09 +01:00
Roberto Viola
8d85a328f7 renamed the title bar to QZ Fitness 2021-12-13 15:41:25 +01:00
Roberto Viola
b625ffb2d5 wattkg tile was not calculated if a bike has a proprietary wattage
calculation
2021-12-13 10:37:56 +01:00
Roberto Viola
fc49bd4cb4 virtual bluetooth device label changed 2021-11-30 15:02:43 +01:00
Roberto Viola
e23ee931d9 Merge pull request #508 from p3g4asus/Dircon
Adding support to dircon protocol
2021-11-30 12:03:14 +01:00
Roberto Viola
237fdad849 added p3g4asus/qmdnsengine repo on github workflows 2021-11-30 12:01:29 +01:00
Matteo Federico Zazzetta
5ee67336e9 Removed test code from heart rate characteristic notifier 2021-11-29 14:57:41 +01:00
Matteo Federico Zazzetta
d9ccc96c21 Better dircon managing and allowing more than one service for a single advertisement 2021-11-28 17:20:17 +01:00
Matteo Federico Zazzetta
fb6da934b6 Removed SN setting: SN is now the uuid of the exported service 2021-11-25 14:48:07 +01:00
Matteo Federico Zazzetta
94628587b0 Changed branch and repo of qmdnsengine to allow DesiredHostname to be specified on hostname build 2021-11-22 16:39:45 +01:00
Matteo Federico Zazzetta
92a0796377 Removed qmdnsengine submodule 2021-11-22 16:21:27 +01:00
Matteo Federico Zazzetta
7285411626 Adding qmdnsengine module 2021-11-22 16:18:40 +01:00
Matteo Federico Zazzetta
d92a3a7275 Changing repository for submodule qmdnsengine 2021-11-22 12:19:50 +01:00
Matteo Federico Zazzetta
506d938163 Forwarding signals from dricomManager to virtualbike 2021-11-21 16:42:06 +01:00
Matteo Federico Zazzetta
5e3c59e387 Settings structure for virtual device enabled. An accordion with the possibility to enable bluetooth or direct connect 2021-11-21 16:19:24 +01:00
Matteo Federico Zazzetta
391b08709f Adding qmdnsengine as submodule 2021-11-21 14:24:45 +01:00
Matteo Federico Zazzetta
080454bff5 Adding mdnsengine as submodule 2021-11-21 14:09:51 +01:00
Matteo Federico Zazzetta
b2ebaad1d0 Removig useless compilation flag 2021-11-21 13:46:32 +01:00
Matteo Federico Zazzetta
6f6d455221 Seems to work
Added some debug messages
2021-11-21 13:35:00 +01:00
Matteo Federico Zazzetta
94a2881e20 changing zeroconf lib 2021-11-21 10:07:57 +01:00
Matteo Federico Zazzetta
2163c3d378 Removing submodule 2021-11-21 10:01:35 +01:00
Matteo Federico Zazzetta
595a6c67e1 Fix parenthesis error 2021-11-18 16:23:34 +01:00
Matteo Federico Zazzetta
1d40b4380d Integrating Dircon in virtualbike 2021-11-18 15:25:22 +01:00
Matteo Federico Zazzetta
4bd1abd56c Introducing wahoo direct connect (not tested and not fully integrated) 2021-11-18 15:12:38 +01:00
839 changed files with 190322 additions and 74425 deletions

2
.github/FUNDING.yml vendored
View File

@@ -7,6 +7,6 @@ ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
issuehunt: cagnulein
otechie: # Replace with a single Otechie username
custom: ['https://www.buymeacoffee.com/cagnulein'] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

17
.github/stale.yml vendored Normal file
View File

@@ -0,0 +1,17 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 15
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- pinned
- security
# Label to use when marking an issue as stale
staleLabel: wontfix
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
#closeComment: false

View File

@@ -13,13 +13,181 @@ on:
branches: [ master, github-workflow-playground ]
pull_request:
branches: [ master ]
schedule:
- cron: "0 */12 * * *"
# schedule:
# - cron: "0 */12 * * *"
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
window-build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Checkout submodule repo
uses: actions/checkout@v2
with:
repository: bluetiger9/SmtpClient-for-Qt
path: "src/smtpclient/"
ref: 3fa4a0fe5797070339422cf18b5e9ed8dcb91f9c
- uses: actions/checkout@v2
- name: Checkout submodule repo
uses: actions/checkout@v2
with:
repository: cagnulein/qmdnsengine
path: "src/qmdnsengine/"
ref: "zwift"
- uses: actions/checkout@v2
- name: Checkout submodule repo
uses: actions/checkout@v2
with:
repository: google/googletest
path: "tst/googletest/"
ref: "release-1.12.1"
- uses: actions/checkout@v2
- name: Checkout submodule repo
uses: actions/checkout@v2
with:
repository: microsoft/MSIX-Toolkit
path: "src/MSIX-Toolkit/"
ref: b82af826d29e93e4c85d34fad8a405b6c49905e7
- uses: msys2/setup-msys2@v2
with:
install: mingw-w64-x86_64-toolchain
msystem: mingw64
release: false
- name: Setup cmake
uses: jwlawson/actions-setup-cmake@v1.9
with:
cmake-version: '3.20.x'
- name: Install Qt
uses: jurplel/install-qt-action@v2
with:
version: '5.15.2'
host: 'windows'
modules: 'qtnetworkauth qtcharts'
target: "desktop"
arch: win64_mingw81
dir: "${{github.workspace}}/qt/"
install-deps: "true"
- name: Build
run: |
qmake
cd src
echo "#define STRAVA_SECRET_KEY ${{ secrets.strava_secret_key }}" > secret.h
echo "#define SMTP_USERNAME ${{ secrets.smtp_username }}" >> secret.h
echo "#define SMTP_PASSWORD ${{ secrets.smtp_password }}" >> secret.h
echo "#define SMTP_SERVER ${{ secrets.smtp_server }}" >> secret.h
cd ..
make -j8
cd src/debug
mkdir output
mkdir appx
cp qdomyos-zwift.exe output/
cd output
windeployqt --qmldir ../../ qdomyos-zwift.exe
cp "${{github.workspace}}/qt/Qt/5.15.2/mingw81_64/bin/libwinpthread-1.dll" .
cp "${{github.workspace}}/qt/Qt/5.15.2/mingw81_64/bin/libgcc_s_seh-1.dll" .
cp "${{github.workspace}}/qt/Qt/5.15.2/mingw81_64/bin/libstdc++-6.dll" .
cp ../../../icons/iOS/iTunesArtwork@2x.png .
cp ../../AppxManifest.xml .
mkdir adb
cp ../../adb/* adb/
cd ..
cd appx
#../../MSIX-Toolkit/WindowsSDK/10/10.0.20348.0/x64/makeappx.exe pack /d ../output/ /p qz
- name: Archive windows binary
uses: actions/upload-artifact@v2
with:
name: windows-binary
path: src/debug/output
# window-steam-build:
# runs-on: windows-latest
#
# steps:
# - uses: actions/checkout@v2
# - name: Checkout submodule repo
# uses: actions/checkout@v2
# with:
# repository: bluetiger9/SmtpClient-for-Qt
# path: "src/smtpclient/"
# ref: 3fa4a0fe5797070339422cf18b5e9ed8dcb91f9c
#
# - uses: actions/checkout@v2
# - name: Checkout submodule repo
# uses: actions/checkout@v2
# with:
# repository: cagnulein/qmdnsengine
# path: "src/qmdnsengine/"
# ref: "zwift"
#
# - uses: msys2/setup-msys2@v2
# with:
# install: mingw-w64-x86_64-toolchain
# msystem: mingw64
# release: false
#
# - name: Setup cmake
# uses: jwlawson/actions-setup-cmake@v1.9
# with:
# cmake-version: '3.20.x'
#
# - name: Install Qt
# uses: jurplel/install-qt-action@v2
# with:
# version: '5.15.2'
# host: 'windows'
# modules: 'qtnetworkauth qtcharts'
# target: "desktop"
# arch: win64_mingw81
# dir: "${{github.workspace}}/qt/"
# install-deps: "true"
#
# - name: Build
# run: |
# qmake
# cd src
# echo "#define STRAVA_SECRET_KEY ${{ secrets.strava_secret_key }}" > secret.h
# echo "#define SMTP_USERNAME ${{ secrets.smtp_username }}" >> secret.h
# echo "#define SMTP_PASSWORD ${{ secrets.smtp_password }}" >> secret.h
# echo "#define SMTP_SERVER ${{ secrets.smtp_server }}" >> secret.h
# echo "#define STEAM_STORE" >> secret.h
# cd ..
# make -j8
# cd src/debug
# mkdir output
# mkdir appx
# cp qdomyos-zwift.exe output/
# cd output
# windeployqt --qmldir ../../ qdomyos-zwift.exe
# cp "${{github.workspace}}/qt/Qt/5.15.2/mingw81_64/bin/libwinpthread-1.dll" .
# cp "${{github.workspace}}/qt/Qt/5.15.2/mingw81_64/bin/libgcc_s_seh-1.dll" .
# cp "${{github.workspace}}/qt/Qt/5.15.2/mingw81_64/bin/libstdc++-6.dll" .
#
# - uses: game-ci/steam-deploy@v1
# with:
# username: ${{ secrets.STEAM_USERNAME }}
# password: ${{ secrets.STEAM_PASSWORD }}
# configVdf: ${{ secrets.STEAM_CONFIG_VDF}}
# ssfnFileName: ${{ secrets.STEAM_SSFN_FILE_NAME }}
# ssfnFileContents: ${{ secrets.STEAM_SSFN_FILE_CONTENTS }}
# appId: 2267200
# buildDescription: 2.12
# rootPath: src/debug/output
# depot1Path: ./
# #depot2Path: StandaloneLinux64
# releaseBranch: prerelease
# This workflow contains a single job called "build"
build:
linux-x86-build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
@@ -42,7 +210,7 @@ jobs:
- name: Xvfb install and run
run: |
sudo apt-get install -y xvfb
Xvfb -ac ${{ env.DISPLAY }} -screen 0 1280x780x24 &
Xvfb -ac ${{ env.DISPLAY }} -screen 0 1280x780x24 &
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
@@ -51,18 +219,52 @@ jobs:
with:
repository: bluetiger9/SmtpClient-for-Qt
path: "src/smtpclient/"
ref: 3fa4a0fe5797070339422cf18b5e9ed8dcb91f9c
- uses: actions/checkout@v2
- name: Checkout submodule repo
uses: actions/checkout@v2
with:
repository: cagnulein/qmdnsengine
path: "src/qmdnsengine/"
ref: "zwift"
- uses: actions/checkout@v2
- name: Checkout submodule repo
uses: actions/checkout@v2
with:
repository: google/googletest
path: "tst/googletest/"
ref: "release-1.12.1"
- name: Install packages required to run QZ inside workflow
run: sudo apt update -y && sudo apt-get install -y qt5-default libqt5bluetooth5 libqt5widgets5 libqt5positioning5 libqt5xml5 qtconnectivity5-dev qtpositioning5-dev libqt5charts5-dev libqt5charts5 qt5-default libqt5networkauth5-dev libqt5websockets5* libxcb-randr0-dev libxcb-xtest0-dev libxcb-xinerama0-dev libxcb-shape0-dev libxcb-xkb-dev
run: sudo apt update -y && sudo apt-get install -y qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools qtquickcontrols2-5-dev libqt5bluetooth5 libqt5widgets5 libqt5positioning5 libqt5xml5 qtconnectivity5-dev qtpositioning5-dev libqt5charts5-dev libqt5charts5 libqt5networkauth5-dev libqt5websockets5* libxcb-randr0-dev libxcb-xtest0-dev libxcb-xinerama0-dev libxcb-shape0-dev libxcb-xkb-dev
- name: Install Qt
uses: jurplel/install-qt-action@v2
with:
version: '5.15.2'
host: 'linux'
modules: 'qtnetworkauth qtcharts'
- name: Compile Linux Desktop
run: cd src; qmake; make -j8
run: qmake; make -j8
- name: Archive linux-desktop binary
uses: actions/upload-artifact@v2
with:
name: linux-desktop-binary
path: src/qdomyos-zwift
path: src/qdomyos-zwift
- name: Test
run: cd tst; GTEST_OUTPUT=xml:test-results/ GTEST_COLOR=1 ./qdomyos-zwift-tests; cd ..
- name: Upload test results
uses: actions/upload-artifact@v2
if: failure()
with:
name: test_results_xml
path: tst/test-results/**/*.xml
# - name: Test Peloton API
# if: github.event_name == 'push' || github.event_name == 'schedule'
@@ -103,7 +305,7 @@ jobs:
# modules: 'qtcharts debug_info'
# dir: '${{ github.workspace }}/output/android/'
# cached: ${{ steps.cache-qt-android.outputs.cache-hit }}
# - name: Compile Android
# run: cd src; qmake; make -j4
@@ -115,6 +317,124 @@ jobs:
# target: 'desktop'
# modules: 'qtcharts debug_info'
# dir: '${{ github.workspace }}/output/macos/'
# - name: Compile MacOS
# run: cd src; qmake; make -j4
# This workflow contains a single job called "build"
android-build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# - name: Cache Qt Linux Desktop
# id: cache-qt-linux-desktop
# uses: actions/cache@v1
# with:
# path: '${{ github.workspace }}/output/linux-desktop/'
# key: ${{ runner.os }}-QtCache-Linux-Desktop
# - name: Cache Qt Linux Android
# id: cache-qt-android
# uses: actions/cache@v1
# with:
# path: '${{ github.workspace }}/output/android/'
# key: ${{ runner.os }}-QtCache-Android
- name: Xvfb install and run
run: |
sudo apt-get install -y xvfb
Xvfb -ac ${{ env.DISPLAY }} -screen 0 1280x780x24 &
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- name: Checkout submodule repo
uses: actions/checkout@v2
with:
repository: bluetiger9/SmtpClient-for-Qt
path: "src/smtpclient/"
ref: 3fa4a0fe5797070339422cf18b5e9ed8dcb91f9c
- uses: actions/checkout@v2
- name: Checkout submodule repo
uses: actions/checkout@v2
with:
repository: cagnulein/qmdnsengine
path: "src/qmdnsengine/"
ref: "zwift"
- uses: actions/checkout@v2
- name: Checkout submodule repo
uses: actions/checkout@v2
with:
repository: google/googletest
path: "tst/googletest/"
ref: "release-1.12.1"
- name: Install packages required to run QZ inside workflow
run: sudo apt update -y && sudo apt-get install -y qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools qtquickcontrols2-5-dev libqt5bluetooth5 libqt5widgets5 libqt5positioning5 libqt5xml5 qtconnectivity5-dev qtpositioning5-dev libqt5charts5-dev libqt5charts5 libqt5networkauth5-dev libqt5websockets5* libxcb-randr0-dev libxcb-xtest0-dev libxcb-xinerama0-dev libxcb-shape0-dev libxcb-xkb-dev
# - name: Test Peloton API
# if: github.event_name == 'push' || github.event_name == 'schedule'
# run: cd /home/runner/work/qdomyos-zwift/qdomyos-zwift/src/; ./qdomyos-zwift -test-peloton -peloton-username ${{ secrets.peloton_username }} -peloton-password ${{ secrets.peloton_password }}
# timeout-minutes: 2
# - name: Test Home Fitness Buddy API
# run: cd /home/runner/work/qdomyos-zwift/qdomyos-zwift/src/; ./qdomyos-zwift -test-hfb
# timeout-minutes: 2
# - uses: actions/checkout@v2
# with:
# repository: nttld/setup-ndk
# path: setup-ndk
# The packages.json in nttld/setup-ndk has already been updated,
# https://github.com/nttld/setup-ndk/commit/831db5b02a0f0cab80614619efe461a3dcc140e6
# but `dist/*` has not been rebuilt yet. Build it.
# https://github.com/nttld/setup-ndk/tree/main/dist
# - name: Locally rebuilt setup-ndk
# run: |
# npm -prefix ./setup-ndk install
# npm -prefix ./setup-ndk run all
# Install using locally rebuilt setup-ndk
# - name: Setup Android NDK r21d
# uses: ./setup-ndk
#- uses: nttld/setup-ndk@v1
# with:
# ndk-version: r21d
# waiting github.com/jurplel/install-qt-action/issues/63
- name: Install Qt Android
uses: jurplel/install-qt-action@v2
with:
version: '5.15.2'
host: 'linux'
target: 'android'
arch: 'android'
modules: 'qtcharts qtnetworkauth'
dir: '${{ github.workspace }}/output/android/'
- name: Install Java
uses: actions/setup-java@v3
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '11'
- name: Set Android NDK 21 && build
run: |
# Install NDK 21 after GitHub update
# https://github.com/actions/virtual-environments/issues/5595
ANDROID_ROOT="/usr/local/lib/android"
ANDROID_SDK_ROOT="${ANDROID_ROOT}/sdk"
SDKMANAGER="${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager"
echo "y" | $SDKMANAGER "ndk;21.4.7075529"
export ANDROID_NDK="${ANDROID_SDK_ROOT}/ndk-bundle"
export ANDROID_NDK_ROOT="${ANDROID_NDK}"
ln -sfn $ANDROID_SDK_ROOT/ndk/21.4.7075529 $ANDROID_NDK
rm -rf /usr/local/lib/android/sdk/ndk/25.1.8937393
qmake -spec android-clang 'ANDROID_ABIS=armeabi-v7a arm64-v8a x86 x86_64' 'ANDROID_NDK_ROOT=/usr/local/lib/android/sdk/ndk/21.4.7075529' && make -j4 && make INSTALL_ROOT=${{ github.workspace }}/output/android/ install
- name: Build APK (not usable for production due to unpatched QT library)
run: cd src; androiddeployqt --input android-qdomyos-zwift-deployment-settings.json --output ${{ github.workspace }}/output/android/ --android-platform android-31 --gradle --aab

16
.gitignore vendored
View File

@@ -18,9 +18,15 @@ src/build/*
src/debug-*
src/secret.h
*.swo
*.swp
build-qdomyos-zwift-Android_Qt_5_15_2_Clang_Multi_Abi-Debug/*
**/node_modules/*
*.pro.user
template-examples/youtube-viewer/node_modules/*
template-examples/youtube-viewer/*.json
template-examples/youtube-viewer/.eslintrc.js
@@ -33,3 +39,13 @@ template-examples/train-program-saver/*.json
template-examples/train-program-saver/.eslintrc.js
template-examples/train-program-saver/.jshintrc
template-examples/train-program-saver/debug.js
google_test/*
# Qt-es
*.pro.user
*build-*
!build-qdomyos-zwift-Qt_*_for_iOS-Debug # Needed for Apple Watch
src/inner_templates/googlemaps/cesium-key.js
*.autosave
.vscode/settings.json

11
.gitmodules vendored
View File

@@ -3,4 +3,13 @@
url = https://github.com/KDAB/android_openssl.git
[submodule "src/smtpclient"]
path = src/smtpclient
url = https://github.com/bluetiger9/SmtpClient-for-Qt.git
url = https://github.com/cagnulein/SmtpClient-for-Qt.git
branch = cagnulein-patch-2
[submodule "src/qmdnsengine"]
path = src/qmdnsengine
url = https://github.com/cagnulein/qmdnsengine.git
branch = zwift
[submodule "tst/googletest"]
path = tst/googletest
url = https://github.com/google/googletest.git
branch = tags/release-1.12.1

View File

@@ -54,8 +54,10 @@
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<RemoteRunnable
runnableDebuggingMode = "2"
BundleIdentifier = "com.apple.Carousel"
RemotePath = "/qdomyoszwift">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "876E4E102594747F00BD5714"
@@ -63,7 +65,7 @@
BlueprintName = "watchkit"
ReferencedContainer = "container:qdomyoszwift.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</RemoteRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
@@ -71,8 +73,10 @@
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<RemoteRunnable
runnableDebuggingMode = "2"
BundleIdentifier = "com.apple.Carousel"
RemotePath = "/qdomyoszwift">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "876E4E102594747F00BD5714"
@@ -80,7 +84,16 @@
BlueprintName = "watchkit"
ReferencedContainer = "container:qdomyoszwift.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</RemoteRunnable>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "876E4E102594747F00BD5714"
BuildableName = "watchkit.app"
BlueprintName = "watchkit"
ReferencedContainer = "container:qdomyoszwift.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">

View File

@@ -193,6 +193,38 @@
endingLineNumber = "57"
landmarkName = "BLEPeripheralManager"
landmarkType = "3">
<Locations>
<Location
uuid = "16D24B27-D0FB-4EC3-BAE8-56101FE7949B - 1c798ec95ff8d4b7"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "qdomyoszwift.BLEPeripheralManager.crankRevolutions.modify : Swift.Optional&lt;Swift.UInt16&gt;"
moduleName = "qdomyoszwift"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/cagnulein/qdomyos-zwift/build-qdomyos-zwift-Qt_5_15_2_for_iOS-Debug/%3Ccompiler-generated%3E"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "0"
endingLineNumber = "0"
offsetFromSymbolStart = "16">
</Location>
<Location
uuid = "16D24B27-D0FB-4EC3-BAE8-56101FE7949B - 5ebbef0dc9913f07"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "qdomyoszwift.BLEPeripheralManager.init() -&gt; qdomyoszwift.BLEPeripheralManager"
moduleName = "qdomyoszwift"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/cagnulein/qdomyos-zwift/src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "57"
endingLineNumber = "57"
offsetFromSymbolStart = "132">
</Location>
</Locations>
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
@@ -335,7 +367,7 @@
endingColumnNumber = "9223372036854775807"
startingLineNumber = "38"
endingLineNumber = "38"
landmarkName = "lockscreen::virtualbike_setHeartRate(heartRate)"
landmarkName = "lockscreen::stepCadence()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
@@ -343,7 +375,7 @@
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "FE5697FF-F44C-43C2-A98D-C400EE56F047"
shouldBeEnabled = "Yes"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/lockscreen.mm"
@@ -351,8 +383,8 @@
endingColumnNumber = "9223372036854775807"
startingLineNumber = "44"
endingLineNumber = "44"
landmarkName = "lockscreen::virtualbike_setCadence(crankRevolutions, lastCrankEventTime)"
landmarkType = "7">
landmarkName = "unknown"
landmarkType = "0">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
@@ -367,7 +399,7 @@
endingColumnNumber = "9223372036854775807"
startingLineNumber = "37"
endingLineNumber = "37"
landmarkName = "lockscreen::virtualbike_setHeartRate(heartRate)"
landmarkName = "lockscreen::stepCadence()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
@@ -375,7 +407,7 @@
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "3DBE0495-050A-4979-85D4-28B78676F212"
shouldBeEnabled = "Yes"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/lockscreen.mm"
@@ -383,7 +415,7 @@
endingColumnNumber = "9223372036854775807"
startingLineNumber = "43"
endingLineNumber = "43"
landmarkName = "lockscreen::virtualbike_setCadence(crankRevolutions, lastCrankEventTime)"
landmarkName = "lockscreen::setKcal(kcal)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
@@ -399,7 +431,7 @@
endingColumnNumber = "9223372036854775807"
startingLineNumber = "32"
endingLineNumber = "32"
landmarkName = "lockscreen::virtualbike_ios()"
landmarkName = "lockscreen::heartRate()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
@@ -431,7 +463,7 @@
endingColumnNumber = "9223372036854775807"
startingLineNumber = "35"
endingLineNumber = "35"
offsetFromSymbolStart = "22">
offsetFromSymbolStart = "32">
</Location>
<Location
uuid = "18F27065-9FB2-44A2-99D0-7D41061141A3 - 4daffae51fb2d733"
@@ -446,7 +478,7 @@
endingColumnNumber = "9223372036854775807"
startingLineNumber = "35"
endingLineNumber = "35"
offsetFromSymbolStart = "28">
offsetFromSymbolStart = "36">
</Location>
</Locations>
</BreakpointContent>

View File

@@ -0,0 +1,62 @@
{
"identifier" : "2816EB89",
"nonRenewingSubscriptions" : [
],
"products" : [
],
"settings" : {
},
"subscriptionGroups" : [
{
"id" : "F012E388",
"localizations" : [
],
"name" : "Swag Bag",
"subscriptions" : [
{
"adHocOffers" : [
],
"codeOffers" : [
],
"displayPrice" : "1.99",
"familyShareable" : false,
"groupNumber" : 1,
"internalID" : "F108BD35",
"introductoryOffer" : null,
"localizations" : [
{
"description" : "Swag Bag",
"displayName" : "Swag Bag",
"locale" : "en_US"
},
{
"description" : "Swag Bag",
"displayName" : "Swag Bag",
"locale" : "en_GB"
},
{
"description" : "Swag Bag",
"displayName" : "Swag Bag",
"locale" : "it"
}
],
"productID" : "org.cagnulein.qdomyoszwift.swagbag",
"recurringSubscriptionPeriod" : "P1M",
"referenceName" : "SwagBag",
"subscriptionGroupID" : "F012E388",
"type" : "RecurringSubscription"
}
]
}
],
"version" : {
"major" : 1,
"minor" : 2
}
}

View File

@@ -1,21 +1,25 @@
{
"images" : [
{
"filename" : "circular38mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : "<=145"
},
{
"filename" : "circular40mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">161"
},
{
"filename" : "circular42mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">145"
},
{
"filename" : "circular44mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">183"

View File

@@ -1,21 +1,25 @@
{
"images" : [
{
"filename" : "extra-large38mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : "<=145"
},
{
"filename" : "extra-large40mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">161"
},
{
"filename" : "extra-large42mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">145"
},
{
"filename" : "extra-large44mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">183"

View File

@@ -1,11 +1,13 @@
{
"images" : [
{
"filename" : "graphic-bezel40mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">161"
},
{
"filename" : "graphic-bezel44mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">183"

View File

@@ -1,11 +1,13 @@
{
"images" : [
{
"filename" : "graphic-circular40mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">161"
},
{
"filename" : "graphic-circular44mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">183"

View File

@@ -1,11 +1,13 @@
{
"images" : [
{
"filename" : "graphic-corner40mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">161"
},
{
"filename" : "graphic-corner44mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">183"

View File

@@ -1,21 +1,25 @@
{
"images" : [
{
"filename" : "graphic-extra-large38mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : "<=145"
},
{
"filename" : "graphic-extra-large40mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">161"
},
{
"filename" : "graphic-extra-large42mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">145"
},
{
"filename" : "graphic-extra-large44mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">183"

View File

@@ -1,11 +1,13 @@
{
"images" : [
{
"filename" : "graphic-large-rectangular40mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">161"
},
{
"filename" : "graphic-large-rectangular44mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">183"

View File

@@ -1,21 +1,25 @@
{
"images" : [
{
"filename" : "modular38mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : "<=145"
},
{
"filename" : "modular40mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">161"
},
{
"filename" : "modular42mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">145"
},
{
"filename" : "modular44mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">183"

View File

@@ -1,21 +1,25 @@
{
"images" : [
{
"filename" : "utility38mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : "<=145"
},
{
"filename" : "utility40mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">161"
},
{
"filename" : "utility42mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">145"
},
{
"filename" : "utility44mm@2x.png",
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">183"

View File

@@ -13,6 +13,59 @@ class ComplicationController: NSObject, CLKComplicationDataSource {
// MARK: - Timeline Configuration
private func templateForComplication(complication: CLKComplication) -> CLKComplicationTemplate? {
// Init default output:
var template: CLKComplicationTemplate? = nil
// Graphic Complications are only availably since watchOS 5.0:
if #available(watchOSApplicationExtension 5.0, *) {
// NOTE: Watch faces that support graphic templates are available only on Apple Watch Series 4 or later. So the binary on older devices (e.g. Watch Series 3) will not contain the images.
if complication.family == .graphicCircular {
let imageTemplate = CLKComplicationTemplateGraphicCircularImage()
// Check if asset exists, to prevent crash on non-supported devices:
if let fullColorImage = UIImage(named: "Complication/Graphic Circular") {
let imageProvider = CLKFullColorImageProvider.init(fullColorImage: fullColorImage)
imageTemplate.imageProvider = imageProvider
template = imageTemplate
}
}
else if complication.family == .graphicCorner {
let imageTemplate = CLKComplicationTemplateGraphicCornerCircularImage()
// Check if asset exists, to prevent crash on non-supported devices:
if let fullColorImage = UIImage(named: "Complication/Graphic Corner") {
let imageProvider = CLKFullColorImageProvider.init(fullColorImage: fullColorImage)
imageTemplate.imageProvider = imageProvider
template = imageTemplate
}
}
}
// For all watchOS versions:
if complication.family == .circularSmall {
let imageTemplate = CLKComplicationTemplateCircularSmallSimpleImage()
let imageProvider = CLKImageProvider(onePieceImage: UIImage(named: "Complication/Circular")!)
imageProvider.tintColor = UIColor.blue
imageTemplate.imageProvider = imageProvider
template = imageTemplate
}
else if complication.family == .modularSmall {
let imageTemplate = CLKComplicationTemplateModularSmallSimpleImage()
let imageProvider = CLKImageProvider(onePieceImage: UIImage(named: "Complication/Modular")!)
imageProvider.tintColor = UIColor.blue
imageTemplate.imageProvider = imageProvider
template = imageTemplate
}
else if complication.family == .utilitarianSmall {
let imageTemplate = CLKComplicationTemplateUtilitarianSmallSquare()
let imageProvider = CLKImageProvider(onePieceImage: UIImage(named: "Complication/Utilitarian")!)
imageProvider.tintColor = UIColor.blue
imageTemplate.imageProvider = imageProvider
template = imageTemplate
}
return template
}
func getSupportedTimeTravelDirections(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimeTravelDirections) -> Void) {
handler([.forward, .backward])
}
@@ -33,7 +86,9 @@ class ComplicationController: NSObject, CLKComplicationDataSource {
func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void) {
// Call the handler with the current timeline entry
handler(nil)
let template = templateForComplication(complication: complication)
let timelineEntry = CLKComplicationTimelineEntry(date: Date(), complicationTemplate: template!)
handler(timelineEntry)
}
func getTimelineEntries(for complication: CLKComplication, before date: Date, limit: Int, withHandler handler: @escaping ([CLKComplicationTimelineEntry]?) -> Void) {
@@ -46,11 +101,15 @@ class ComplicationController: NSObject, CLKComplicationDataSource {
handler(nil)
}
func getPlaceholderTemplate(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTemplate?) -> Void) {
// This method will be called once per supported complication, and the results will be cached
handler(templateForComplication(complication: complication))
}
// MARK: - Placeholder Templates
func getLocalizableSampleTemplate(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTemplate?) -> Void) {
// This method will be called once per supported complication, and the results will be cached
handler(nil)
handler(templateForComplication(complication: complication))
}
}

View File

@@ -8,6 +8,8 @@
<string>watchkit Extension</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>NSMotionUsageDescription</key>
<string>access to step cadence in order to show it in the application</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
@@ -22,6 +24,21 @@
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>CLKComplicationPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).ComplicationController</string>
<key>CLKComplicationSupportedFamilies</key>
<array>
<string>CLKComplicationFamilyModularSmall</string>
<string>CLKComplicationFamilyModularLarge</string>
<string>CLKComplicationFamilyUtilitarianSmall</string>
<string>CLKComplicationFamilyUtilitarianSmallFlat</string>
<string>CLKComplicationFamilyUtilitarianLarge</string>
<string>CLKComplicationFamilyCircularSmall</string>
<string>CLKComplicationFamilyExtraLarge</string>
<string>CLKComplicationFamilyGraphicCorner</string>
<string>CLKComplicationFamilyGraphicBezel</string>
<string>CLKComplicationFamilyGraphicCircular</string>
<string>CLKComplicationFamilyGraphicRectangular</string>
<string>CLKComplicationFamilyGraphicExtraLarge</string>
</array>
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>

View File

@@ -8,26 +8,56 @@
import WatchKit
import HealthKit
import CoreMotion
class MainController: WKInterfaceController {
@IBOutlet weak var userNameLabel: WKInterfaceLabel!
@IBOutlet weak var stepCountsLabel: WKInterfaceLabel!
@IBOutlet weak var caloriesLabel: WKInterfaceLabel!
@IBOutlet weak var distanceLabel: WKInterfaceLabel!
@IBOutlet weak var heartRateLabel: WKInterfaceLabel!
@IBOutlet weak var startButton: WKInterfaceButton!
@IBOutlet weak var cmbSports: WKInterfacePicker!
static var start: Bool! = false
let pedometer = CMPedometer()
var sport: Int = 0
override func awake(withContext context: Any?) {
super.awake(withContext: context)
let sports: [WKPickerItem] = [WKPickerItem(),WKPickerItem(),WKPickerItem(),WKPickerItem(),WKPickerItem()]
sports[0].title = "Bike"
sports[1].title = "Run"
sports[2].title = "Walk"
sports[3].title = "Elliptical"
sports[4].title = "Rowing"
cmbSports.setItems(sports)
sport = UserDefaults.standard.value(forKey: "sport") as? Int ?? 0
cmbSports.setSelectedItemIndex(sport)
// Configure interface objects here.
print("AWAKE")
}
@IBAction func changeSport(_ value: Int) {
self.sport = value
UserDefaults.standard.set(value, forKey: "sport")
UserDefaults.standard.synchronize()
}
override func willActivate() {
// This method is called when watch view controller is about to be visible to user
super.willActivate()
print("WILL ACTIVE")
WorkoutTracking.shared.fetchStepCounts()
if CMPedometer.isStepCountingAvailable() {
pedometer.startUpdates(from: Date()) { pedometerData, error in
guard let pedometerData = pedometerData, error == nil else { return }
self.stepCountsLabel.setText("\(Int(((pedometerData.currentCadence?.doubleValue ?? 0) * 60.0 / 2.0))) STEP CAD.")
WatchKitConnection.stepCadence = Int(((pedometerData.currentCadence?.doubleValue ?? 0) * 60.0 / 2.0))
WatchKitConnection.shared.sendMessage(message: ["stepCadence":
"\(WatchKitConnection.stepCadence)" as AnyObject])
}
}
}
override func didDeactivate() {
@@ -44,6 +74,7 @@ extension MainController {
MainController.start = true
startButton.setTitle("Stop")
WorkoutTracking.authorizeHealthKit()
WorkoutTracking.shared.setSport(sport)
WorkoutTracking.shared.startWorkOut()
WorkoutTracking.shared.delegate = self
@@ -59,6 +90,7 @@ extension MainController {
}
extension MainController: WorkoutTrackingDelegate {
func didReceiveHealthKitDistanceCycling(_ distanceCycling: Double) {
}
@@ -72,10 +104,21 @@ extension MainController: WorkoutTrackingDelegate {
"\(heartRate)" as AnyObject])
WorkoutTracking.distance = WatchKitConnection.distance
WorkoutTracking.kcal = WatchKitConnection.kcal
if Locale.current.measurementSystem != "Metric" {
self.distanceLabel.setText("Distance \(String(format:"%.2f", WorkoutTracking.distance))")
} else {
self.distanceLabel.setText("Distance \(String(format:"%.2f", WorkoutTracking.distance * 1.60934))")
}
self.caloriesLabel.setText("KCal \(Int(WorkoutTracking.kcal))")
//WorkoutTracking.cadenceSteps = pedometer.
}
func didReceiveHealthKitStepCounts(_ stepCounts: Double) {
stepCountsLabel.setText("\(stepCounts) STEPS")
//stepCountsLabel.setText("\(stepCounts) STEPS")
}
func didReceiveHealthKitStepCadence(_ stepCadence: Double) {
}
}
@@ -84,3 +127,11 @@ extension MainController: WatchKitConnectionDelegate {
userNameLabel.setText(userName)
}
}
extension Locale
{
var measurementSystem : String?
{
return (self as NSLocale).object(forKey: NSLocale.Key.measurementSystem) as? String
}
}

View File

@@ -23,6 +23,7 @@ class WatchKitConnection: NSObject {
static let shared = WatchKitConnection()
public static var distance = 0.0
public static var kcal = 0.0
public static var stepCadence = 0
weak var delegate: WatchKitConnectionDelegate?
private override init() {

View File

@@ -12,6 +12,7 @@ import HealthKit
protocol WorkoutTrackingDelegate: class {
func didReceiveHealthKitHeartRate(_ heartRate: Double)
func didReceiveHealthKitStepCounts(_ stepCounts: Double)
func didReceiveHealthKitStepCadence(_ stepCadence: Double)
func didReceiveHealthKitDistanceCycling(_ distanceCycling: Double)
func didReceiveHealthKitActiveEnergyBurned(_ activeEnergyBurned: Double)
}
@@ -27,6 +28,10 @@ class WorkoutTracking: NSObject {
static let shared = WorkoutTracking()
public static var distance = Double()
public static var kcal = Double()
public static var cadenceTimeStamp = NSDate().timeIntervalSince1970
public static var cadenceLastSteps = Double()
public static var cadenceSteps = 0
var sport: Int = 0
let healthStore = HKHealthStore()
let configuration = HKWorkoutConfiguration()
var workoutSession: HKWorkoutSession!
@@ -79,7 +84,13 @@ extension WorkoutTracking {
if let sum = result.sumQuantity() {
resultCount = sum.doubleValue(for: HKUnit.count())
let now = NSDate().timeIntervalSince1970
let deltaT = now - WorkoutTracking.cadenceTimeStamp
let deltaC = resultCount - WorkoutTracking.cadenceLastSteps
WorkoutTracking.cadenceLastSteps = resultCount
WorkoutTracking.cadenceTimeStamp = now
weakSelf.delegate?.didReceiveHealthKitStepCounts(resultCount)
weakSelf.delegate?.didReceiveHealthKitStepCadence((deltaC / deltaT) * 60)
} else {
print("Failed to fetch steps rate 2")
}
@@ -91,8 +102,23 @@ extension WorkoutTracking {
}
}
func setSport(_ sport: Int) {
self.sport = sport
}
private func configWorkout() {
configuration.activityType = .cycling
var activityType = HKWorkoutActivityType.cycling
if self.sport == 1 {
activityType = HKWorkoutActivityType.running
} else if self.sport == 2 {
activityType = HKWorkoutActivityType.walking
} else if self.sport == 3 {
activityType = HKWorkoutActivityType.elliptical
} else if self.sport == 4 {
activityType = HKWorkoutActivityType.rowing
}
configuration.activityType = activityType
configuration.locationType = .indoor
do {
@@ -124,6 +150,7 @@ extension WorkoutTracking: WorkoutTrackingProtocol {
HKSampleType.quantityType(forIdentifier: .stepCount)!,
HKSampleType.quantityType(forIdentifier: .heartRate)!,
HKSampleType.quantityType(forIdentifier: .distanceCycling)!,
HKSampleType.quantityType(forIdentifier: .distanceWalkingRunning)!,
HKSampleType.quantityType(forIdentifier: .activeEnergyBurned)!,
HKSampleType.workoutType()
])
@@ -149,6 +176,10 @@ extension WorkoutTracking: WorkoutTrackingProtocol {
if let error = error {
print(error)
}
if self.sport > 0 {
self.workoutBuilder.dataSource?.enableCollection(for: HKQuantityType.quantityType(forIdentifier: .distanceWalkingRunning)!, predicate: nil)
}
}
}
@@ -173,29 +204,72 @@ extension WorkoutTracking: WorkoutTrackingProtocol {
end: Date())
workoutBuilder.add([sample]) {(success, error) in}
guard let quantityTypeDistance = HKQuantityType.quantityType(
forIdentifier: .distanceCycling) else {
return
}
let unitDistance = HKUnit.mile()
let miles = WorkoutTracking.distance
let quantityMiles = HKQuantity(unit: unitDistance,
doubleValue: miles)
let sampleDistance = HKCumulativeQuantitySeriesSample(type: quantityTypeDistance,
quantity: quantityMiles,
start: workoutSession.startDate!,
end: Date())
workoutBuilder.add([sample]) {(success, error) in}
workoutBuilder.add([sampleDistance]) {(success, error) in}
workoutBuilder.endCollection(withEnd: Date()) { (success, error) in
if(sport == 0) {
guard let quantityTypeDistance = HKQuantityType.quantityType(
forIdentifier: .distanceCycling) else {
return
}
let sampleDistance = HKCumulativeQuantitySeriesSample(type: quantityTypeDistance,
quantity: quantityMiles,
start: workoutSession.startDate!,
end: Date())
workoutBuilder.add([sampleDistance]) {(success, error) in
if let error = error {
print(error)
}
self.workoutBuilder.endCollection(withEnd: Date()) { (success, error) in
if let error = error {
print(error)
}
self.workoutBuilder.finishWorkout{ (workout, error) in
if let error = error {
print(error)
}
workout?.setValue(quantityMiles, forKey: "totalDistance")
}
}
}
} else {
guard let quantityTypeDistance = HKQuantityType.quantityType(
forIdentifier: .distanceWalkingRunning) else {
return
}
let sampleDistance = HKCumulativeQuantitySeriesSample(type: quantityTypeDistance,
quantity: quantityMiles,
start: workoutSession.startDate!,
end: Date())
workoutBuilder.add([sampleDistance]) {(success, error) in
if let error = error {
print(error)
}
self.workoutBuilder.endCollection(withEnd: Date()) { (success, error) in
if let error = error {
print(error)
}
self.workoutBuilder.finishWorkout{ (workout, error) in
if let error = error {
print(error)
}
workout?.setValue(quantityMiles, forKey: "totalDistance")
}
}
}
}
workoutBuilder.finishWorkout{ (success, error) in }
}
func fetchStepCounts() {

View File

@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder.WatchKit.Storyboard" version="3.0" toolsVersion="17506" targetRuntime="watchKit" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="Tpn-rd-UUX">
<document type="com.apple.InterfaceBuilder.WatchKit.Storyboard" version="3.0" toolsVersion="20037" targetRuntime="watchKit" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="Tpn-rd-UUX">
<device id="watch38"/>
<dependencies>
<deployment identifier="watchOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17505"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBWatchKitPlugin" version="17500"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBWatchKitPlugin" version="20006"/>
</dependencies>
<scenes>
<!--Main-->
@@ -12,16 +12,26 @@
<objects>
<controller identifier="Main" hidesWhenLoading="NO" id="Tpn-rd-UUX" customClass="MainController" customModule="watchkit_Extension">
<items>
<label width="136" alignment="left" text="qdomyos-zwift" textAlignment="center" id="SlU-M7-WGB"/>
<label width="136" alignment="left" text="Heart Rate" id="Nda-m1-XRw"/>
<label width="136" alignment="left" text="Step Counts" id="HpA-e9-6YV"/>
<label width="136" alignment="left" text="QZ Fitness" textAlignment="center" id="SlU-M7-WGB"/>
<button width="1" alignment="left" title="Start" id="vZg-X8-uY5">
<connections>
<action selector="startWorkout" destination="Tpn-rd-UUX" id="UaW-pR-tn6"/>
</connections>
</button>
<label width="136" alignment="left" text="Heart Rate" id="Nda-m1-XRw"/>
<label width="136" alignment="left" text="Step Counts" id="HpA-e9-6YV"/>
<label width="136" alignment="left" text="Calories" id="Szi-Jp-J3S"/>
<label width="136" alignment="left" text="Distance" id="eRf-NJ-6If"/>
<picker height="100" alignment="left" id="OTR-HF-vYb">
<connections>
<action selector="changeSport:" destination="Tpn-rd-UUX" id="3vY-lq-IhZ"/>
</connections>
</picker>
</items>
<connections>
<outlet property="caloriesLabel" destination="Szi-Jp-J3S" id="trd-YS-bJy"/>
<outlet property="cmbSports" destination="OTR-HF-vYb" id="Ws5-w9-ZT8"/>
<outlet property="distanceLabel" destination="eRf-NJ-6If" id="ZE2-OB-jqN"/>
<outlet property="heartRateLabel" destination="Nda-m1-XRw" id="1la-8R-3jG"/>
<outlet property="startButton" destination="vZg-X8-uY5" id="pJc-09-kfV"/>
<outlet property="stepCountsLabel" destination="HpA-e9-6YV" id="Z88-ej-6oG"/>

14
defaults.pri Normal file
View File

@@ -0,0 +1,14 @@
QT += gui bluetooth widgets xml positioning quick networkauth websockets texttospeech location multimedia
QTPLUGIN += qavfmediaplayer
QT+= charts
unix:android: QT += androidextras gui-private
android: include(android_openssl/openssl.pri)
INCLUDEPATH += $$PWD/src/qmdnsengine/src/include
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/src/android
ANDROID_ABIS = armeabi-v7a arm64-v8a x86 x86_64

View File

@@ -1,10 +1,24 @@
FROM debian:stable
FROM ubuntu:latest
MAINTAINER cagnulein
ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Europe/Moscow
ENV MAKEFLAGS -j8
WORKDIR /usr/local/src
# utils
RUN apt-get update && apt-get install -y tzdata
RUN apt -y update
RUN apt -y upgrade
RUN apt -y install git libqt5bluetooth5 libqt5widgets5 libqt5positioning5 libqt5xml5 qtconnectivity5-dev qtpositioning5-dev libqt5charts5-dev libqt5charts5 qt5-default
RUN apt update -y && apt-get install -y git qt5-default libqt5bluetooth5 libqt5widgets5 libqt5positioning5 libqt5xml5 qtconnectivity5-dev qtpositioning5-dev libqt5charts5-dev libqt5charts5 qt5-default libqt5networkauth5-dev libqt5websockets5* libxcb-randr0-dev libxcb-xtest0-dev libxcb-xinerama0-dev libxcb-shape0-dev libxcb-xkb-dev build-essential
RUN git clone https://github.com/cagnulein/qdomyos-zwift.git
WORKDIR /usr/local/src/qdomyos-zwift
RUN git submodule update --init src/smtpclient/
RUN git submodule update --init src/qmdnsengine/
WORKDIR /usr/local/src/qdomyos-zwift/src
RUN qmake
RUN make -j4
WORKDIR /usr/local/src/qdomyos-zwift/src
CMD ["./qdomyos-zwift","-no-gui"]

View File

@@ -4,17 +4,20 @@ QDomyos-Zwift can be installed from source on MacOs, Linux, Android and IOS.
Once you've installed QDomyos-Zwift, you can access the [operation guide](30_usage.md) for more information.
These instructions build the app itself, not the test project.
## On a Linux System (from source)
```buildoutcfg
$ sudo apt update && sudo apt upgrade # this is very important on raspberry pi: you need the bluetooth firmware updated!
$ sudo sudo apt install git libqt5bluetooth5 libqt5widgets5 libqt5positioning5 libqt5xml5 qtconnectivity5-dev qtpositioning5-dev libqt5charts5-dev libqt5charts5 qt5-assistant libqt5networkauth5-dev libqt5websockets5-dev
$ sudo apt install git qtquickcontrols2-5-dev libqt5bluetooth5 libqt5widgets5 libqt5positioning5 libqt5xml5 qtconnectivity5-dev qtpositioning5-dev libqt5charts5-dev libqt5charts5 qt5-assistant libqt5networkauth5-dev libqt5websockets5-dev qml-module* libqt5texttospeech5-dev libqt5texttospeech5 libqt5location5-plugins qtlocation5-dev qtmultimedia5-dev libqt5multimediawidgets5 libqt5multimedia5-plugins libqt5multimedia5 g++ make
$ git clone https://github.com/cagnulein/qdomyos-zwift.git
$ cd qdomyos-zwift
$ git submodule update --init src/smtpclient/
$ git submodule update --init src/qmdnsengine/
$ git submodule update --init tst/googletest/
$ cd src
$ qmake
$ qmake qdomyos-zwift.pro
$ make -j4
$ sudo ./qdomyos-zwift
```
@@ -25,13 +28,13 @@ $ sudo ./qdomyos-zwift
You will need to (at a minimum) to install the xcode Command Line Tools (CLI) thanks to @richardwait
https://developer.apple.com/download/more/?=xcode
Download and install http://download.qt.io/official_releases/qt/5.12/5.12.9/qt-opensource-mac-x64-5.12.9.dmg and simply run the qdomyos-zwift relase for MacOs
Download and install http://download.qt.io/official_releases/qt/5.12/5.12.9/qt-opensource-mac-x64-5.12.9.dmg and simply run the qdomyos-zwift release for MacOs
## On Raspberry Pi Zero W
![raspi](../docs/img/raspi-bike.jpg)
This guide will walk you through steps to setup an autonomous, headless raspberry brigde.
This guide will walk you through steps to setup an autonomous, headless raspberry bridge.
### Initial System Preparation
@@ -102,15 +105,17 @@ This operation takes a moment to complete.
#### Install qdomyos-zwift from sources
`sudo apt install git libqt5bluetooth5 libqt5widgets5 libqt5positioning5 libqt5xml5 qtconnectivity5-dev qtpositioning5-dev libqt5charts5-dev libqt5charts5 qt5-assistant libqt5networkauth5-dev libqt5websockets5-dev`
`git clone https://github.com/cagnulein/qdomyos-zwift.git`
`cd qdomyos-zwift`
`git submodule update --init src/smtpclient/`
`git submodule update --init src/qmdnsengine/`
`cd src`
`qmake`
`make`
```bash
sudo apt install git libqt5bluetooth5 libqt5widgets5 libqt5positioning5 libqt5xml5 qtconnectivity5-dev qtpositioning5-dev libqt5charts5-dev libqt5charts5 qt5-assistant libqt5networkauth5-dev libqt5websockets5-dev qtmultimedia5-dev libqt5multimediawidgets5 libqt5multimedia5-plugins libqt5multimedia5 qtlocation5-dev qtquickcontrols2-5-dev libqt5texttospeech5-dev libqt5texttospeech5 g++ make
git clone https://github.com/cagnulein/qdomyos-zwift.git
cd qdomyos-zwift
git submodule update --init src/smtpclient/
git submodule update --init src/qmdnsengine/
git submodule update --init tst/googletest/
cd src
qmake qdomyos-zwift.pro
make
```
Please note :
- Don't build the application with `-j4` option (this will fail)

View File

@@ -11,26 +11,12 @@ This list is not exhaustive. Please report any application known to be working w
|[Fulgaz](21_applications_detail.md#fulgaz)|![bike](img/20_bike.png)|![IOS](img/20_apple.png) ![Android](img/20_android.png) ![PC](img/20_windows.png)|Yes|Yes|Yes|Yes, no FTMS support (see note)|Yes (see note) |
# Supported devices
Check the full list https://github.com/cagnulein/qdomyos-zwift/wiki/Equipment-Compatibility
This list is not exhaustive.
Try the qdomyos app with your fitness appliance and report how it is going.
If it's not working, you can [ask for your device to be supported](#ask-for-device-support)
## Supported bikes
|Manufacturer|Model|Speed|RPM|Power|HRM|Resistence Control|
|------------|-----|------------|---|-----|---|------------------|
|[Echelon](22_devices_detail.md#echelon)|Connect Sport|Yes|Yes|Yes|Yes|N/A|
|[Sportstech](22_devices_detail.md#sportstech)|ESX500|Yes|Yes|Yes|Yes|Yes|
## Supported treadmills
|Manufacturer|Model|Speed|HRM|Inclinaison Control| Speed control|
|------------|-----|------------|---|-------------------|--------------|
|Domyos|Intense Run|Yes|Yes|Yes|Yes|
|Domyos|T900c|Yes|Yes|Yes|Yes|
|Toorx|TRX Route Key|Yes|Yes|Yes|Yes|
# Ask for device support
You can ask for supporting a device by opening an issue and following these steps.
@@ -50,7 +36,7 @@ An android device is required for this operation.
8. Disable the option Enable Bluetooth HCI snoop log
9. in Developer Options: Bug report->Full report
10. wait a random amount of time (10-20 seconds)
11. A notification will appear at the top of the device. Click on it, share, email it to yourself
11. A notification will appear at the top of the device. Click on it, share, email it to yourself. If it doesn't appear you need to use ADB to pull the file from the phone itself
12. You'll get a zip file with the entire report. In the FS/Data/Log/bt directory of the zipfile is the file you want.
13. attach the log file in a new issue with a short description of the steps you did in the app when you used it

View File

@@ -26,5 +26,5 @@ You can have ae true 4k video stream while you ride ("extreme quality" setting)
The application do not read the FTMS value. It is required to start the application with `-heart-service` or `bike_heartrate_service: true` in settings.
### Resistance management
You can adjust resistence using arrows [up and down](img/21_zwift-resistance-buttons.jpg) rom the riding screen.
You can adjust resistance using arrows [up and down](img/21_zwift-resistance-buttons.jpg) rom the riding screen.

View File

@@ -21,32 +21,34 @@ Please refer to this article for more information under [QML Operations](https:/
This is the list of settings available in the application. These settings needs to be appended to the binary command line.
*Example :* `sudo ./qdomyos-zwift -no-gui` for disabling any graphical interface.
| **Option** | **Type** | **Default** | **Function** |
|:------------------------|:---------|:------------|:-----------------------------------------------------------------------------|
| -no-gui | Boolean | False | Disable GUI |
| -qml | Boolean | False | Enables the QML interface |
| -miles | Boolean | False | Swithes to Imperial Units System |
| -no-console | Boolean | False | Not in use |
| -test-resistance | Boolean | False | |
| -no-log | Boolean | False | Disable Logging |
| -no-write-resistance | Boolean | False | Disable resistance instructions from QZ to your fitness equipment |
| -no-heart-service | Boolean | False | Do not simulate external HR monitor, use only FTMS |
| -heart-service | Boolean | True | Simulate HR service (required for applications not reading FTMS) |
| -only-virtualbike | Boolean | False | |
| -only-virtualtreadmill | Boolean | False | |
| -no-reconnection | Boolean | False | QZ will not try to reconnect your fitness equipement if enabled |
| -bluetooth-relaxed | Boolean | False | In case of deconnections from QZ to your fitness equipement |
| -bike-cadence-sensor | Boolean | False | |
| -bike-power-sensor | Boolean | False | |
| -battery-service | Boolean | False | |
| -service-changed | Boolean | False | |
| -bike-wheel-revs | Boolean | False | |
| -run-cadence-sensor | Boolean | False | |
| -train | String | | Force training program |
| -name | String | | Force bluetooth device name (if QZ struggles finding your fitness equipment) |
| -poll-device-time | Int | 200 (ms) | Frequency to refresh informations from QZ to Fitness equipment |
| -bike-resistance-gain | Int | | Adjust resistance from the fitness application |
| -bike-resistance-offset | Int | | Set another resistance point than default |
| **Option** | **Type** | **Default** | **Function** |
|:------------------------------|:---------|:------------|:-----------------------------------------------------------------------------|
| -no-gui | Boolean | False | Disable GUI |
| -qml | Boolean | True | Enables the QML interface |
| -noqml | Boolean | False | Enables the NativeQT interface |
| -miles | Boolean | False | Switches to Imperial Units System |
| -no-console | Boolean | False | Not in use |
| -test-resistance | Boolean | False | |
| -no-log | Boolean | False | Disable Logging |
| -no-write-resistance | Boolean | False | Disable resistance instructions from QZ to your fitness equipment |
| -no-heart-service | Boolean | False | Do not simulate external HR monitor, use only FTMS |
| -heart-service | Boolean | True | Simulate HR service (required for applications not reading FTMS) |
| -only-virtualbike | Boolean | False | |
| -only-virtualtreadmill | Boolean | False | |
| -no-reconnection | Boolean | False | QZ will not try to reconnect your fitness equipement if enabled |
| -bluetooth-relaxed | Boolean | False | In case of deconnections from QZ to your fitness equipement |
| -bike-cadence-sensor | Boolean | False | |
| -bike-power-sensor | Boolean | False | |
| -battery-service | Boolean | False | |
| -service-changed | Boolean | False | |
| -bike-wheel-revs | Boolean | False | |
| -run-cadence-sensor | Boolean | False | |
| -nordictrack-10-treadmill | Boolean | False | Enable NordicTrack compatibility mode |
| -train | String | | Force training program |
| -name | String | | Force bluetooth device name (if QZ struggles finding your fitness equipment) |
| -poll-device-time | Int | 200 (ms) | Frequency to refresh information from QZ to Fitness equipment |
| -bike-resistance-gain | Int | | Adjust resistance from the fitness application |
| -bike-resistance-offset | Int | | Set another resistance point than default |

365
docs/40_web_socket_api.md Normal file
View File

@@ -0,0 +1,365 @@
# QDomyos-Zwift WebSocket API Installation & Operation guide
# Installation
## About
The QDomyos-Zwift WebSocket API can be installed from source on Linux, Raspberry Pi (4, 3, zero W), macOS, Android and IOS.
However, this guide will only focus on the Linux (Debian 11) Installation and Raspberry Pi cause there are the most useful case in headless control.
If you already install the Web Socket, feel free to [skip to the Usage section](#usage).
## Requirement
To Install QDomyos-Zwift with WebSocket API you will need Qt 5.12.2+ and the following modules :
- Qt Bluetooth
- Qt Widgets
- Qt Positioning
- Qt XML
- Qt Charts
- Qt Network
- Qt Network Authorization
- Qt WebSockets
- Qt Assistant
Unfortunately under Debian 11 (or Raspbian 11) the Qt 5 packages are not recent enough for compilation however this guide will explain how to manually compile the latest version of Qt (5.12.12)
If you already had Qt 5.12.2 or more, feel free to [skip to Install Qt Httpserver](#install-qt-httpserver).
## Install Qt 5.12.2
*If you compile for a Raspberry Pi Zero, it's* ***faster and easy*** *to do all the Raspberry Pi task on a Raspberry Pi 4 and after copy compiled binary files toe the Raspberry Pi Zero*
For more info on the steps [please refer to the source](#source)
Before do anything. Make sure all your packages are updated :
```bash
apt update && apt upgrade # this is very important on raspberry pi: you need the bluetooth firmware updated!
```
After download last version of Qt Source and extract them :
```bash
wget https://download.qt.io/official_releases/qt/5.12/5.12.12/single/qt-everywhere-src-5.12.12.tar.xz
```
If you compile for a Raspberry Pi you will need the Raspberry Pi Qt Configuration for raspberry pi and install it in the source :
```bash
git clone https://github.com/oniongarlic/qt-raspberrypi-configuration.git
cd qt-raspberrypi-configuration && make install DESTDIR=../qt-everywhere-src-5.12.12
```
Install the bare minimum required development packages for building Qt 5 with apt :
```bash
apt install build-essential libfontconfig1-dev libdbus-1-dev libfreetype6-dev libicu-dev libinput-dev libxkbcommon-dev libsqlite3-dev libssl-dev libpng-dev libjpeg-dev libglib2.0-dev libraspberrypi-dev
```
*For raspberry Pi install `libraspberrypi-dev` package* :
```bash
apt install libraspberrypi-dev
```
Now install all required development packages for building all Qt 5 modules:
```bash
apt install bluez libgbm-dev
apt install libudev-dev libinput-dev libts-dev libxcb-xinerama0-dev libxcb-xinerama0 gdbserver
apt install libegl1-mesa libegl1-mesa-dev libgles2-mesa libgles2-mesa-dev
apt install wiringpi libnfc-bin libnfc-dev fonts-texgyre libts-dev
apt install libbluetooth-dev bluez-tools gstreamer1.0-plugins* libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libopenal-data libopenal1 libopenal-dev pulseaudio
apt install libgstreamer*-dev
apt install gstreamer*-dev
apt install libasound2-dev libavcodec-dev libavformat-dev libswscale-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev gstreamer-tools libgstreamer-plugins-*
apt install qtdeclarative5-dev
apt install libvlc-dev
```
On Raspbian Stretch/Buster/Bullseye the OpenGL library files have been renamed so that they wouldn't conflict with Mesa installed ones. Unfortunately Qt configure script is still looking for the old names.
So ***on your target Raspberry Pi*** you need to symlink those file to make sure Qt run correctly.
```bash
ln -s /usr/lib/arm-linux-gnueabihf/libGLESv2.so /usr/lib/libbrcmGLESv2.so
ln -s /usr/lib/arm-linux-gnueabihf/libEGL.so /usr/lib/libbrcmEGL.so
```
Now all dependency are installed. It's time to create build folder and compiled.
```bash
mkdir build
cd build
# For Raspberry Pi Zero or 3
PKG_CONFIG_LIBDIR=/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/share/pkgconfig ../qt-everywhere-src-5.12.12/configure -platform linux-rpi-g++ -v -opengl es2 -eglfs -no-gtk -opensource -confirm-license -release -reduce-exports -force-pkg-config -nomake examples -no-compile-examples -skip qtwayland -skip qtwebengine -no-feature-geoservices_mapboxgl -qt-pcre -no-pch -ssl -evdev -system-freetype -fontconfig -glib -prefix /opt/Qt/5.12.12 -qpa eglfs
CFLAGS="-march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp" make -j3 # Remove -j3 if you compiled directly on Raspberry Pi Zero
# For Raspberry Pi 4
PKG_CONFIG_LIBDIR=/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/share/pkgconfig ../qt-everywhere-src-5.12.12/configure -platform linux-rpi4-v3d-g++ -v -opengl es2 -eglfs -no-gtk -opensource -confirm-license -release -reduce-exports -force-pkg-config -nomake examples -no-compile-examples -skip qtwayland -skip qtwebengine -no-feature-geoservices_mapboxgl -qt-pcre -no-pch -ssl -evdev -system-freetype -fontconfig -glib -prefix /opt/Qt/5.12.12 -qpa eglfs
CFLAGS="-march=armv8-a -mtune=cortex-a72 -mfpu=crypto-neon-fp-armv8" make -j3
# For Debian 11 x64 (Not tested)
../qt-everywhere-src-5.12.12/configure -v -opengl es2 -eglfs -no-gtk -opensource -confirm-license -release -reduce-exports -force-pkg-config -nomake examples -no-compile-examples -skip qtwayland -skip qtwebengine -no-feature-geoservices_mapboxgl -qt-pcre -no-pch -ssl -evdev -system-freetype -fontconfig -glib -prefix /opt/Qt/5.12.12 -qpa eglfs
make
```
Finally, if you cross compiled you can transfer the build folder to other machine and then just run as root in the build folder :
```bash
make install
```
# Install Qt Httpserver
Like explain in PR #252, to make work the Http Server you will need to manually compile `qthttpserver` module.
For that just run following commands in your home directory :
```bash
cd ~
git clone https://github.com/qt-labs/qthttpserver
cd ~/qthttpserver/src/3rdparty/http-parser
wget https://raw.githubusercontent.com/nodejs/http-parser/main/http_parser.h
wget https://raw.githubusercontent.com/nodejs/http-parser/main/http_parser.c
cd ~/qthttpserver/src
qmake # Please note if you compiled Qt you need to specify /opt/Qt/5.12.12/bin/qmake
make
# Wait...
sudo make install
```
***You have successfully installed Qt Httpserver***
# Install QDomyos-Zwift
If you already compile QDomyos-Zwift and you just compiled a new version of Qt.
Please delete the whole QDomyos-Zwift folder and restart from scratch to prevent linking issues.
```bash
cd ~
git clone https://github.com/cagnulein/qdomyos-zwift.git
cd ~/qdomyos-zwift
git submodule update --init ~/qdomyos-zwift/src/smtpclient/
cd ~/qdomyos-zwift/src
qmake # Please note if you compiled Qt you need to specify /opt/Qt/5.12.12/bin/qmake
make -j4 # Remove -j4 if you compiled on Raspberry Pi Zero
```
Now installed you need to compile like say in PR #252 and issue #572 template/debug in the same directory of source file of QDomyos-Zwift.
```bash
cp -r ~/qdomyos-zwift/src/templates/debug ~/qdomyos-zwift/src/.
cp -r ~/qdomyos-zwift/src/templates/debug/* ~/qdomyos-zwift/src/.
```
Last if you can't run QML version (probably because you don't had a X11 Server.) you need to manually edit the configuration file in `/root/.config/Roberto Viola/qDomyos-Zwift.conf` and add :
```
template_inner_QZWS_enabled=true
template_inner_QZWS_folders=:/inner_templates//chartjs
template_inner_QZWS_ips=192.168.1.42
template_inner_QZWS_port=34107
template_inner_QZWS_type=WebServer
```
In this config file we open an HTTP Server on port 34107 with bind to 192.168.1.42 but feel free to change these values.
Finally, ***do not move `qdomyos-zwift` from src folder*** and run it as Root
# Usage
The way that [WebSocket](https://developer.mozilla.org/docs/Web/API/WebSockets_API) work in QDomyos-Zwift is by sending commands and listen events.
## Workout Event
The workout Event is the default message send almost every second by QDomyos-Zwift to inform you which state is your equipment.
Here what is look like :
```json
{
"BIKE_TYPE": 2,
"ELLIPTICAL_TYPE": 4,
"ROWING_TYPE": 3,
"TREADMILL_TYPE": 1,
"UNKNOWN_TYPE": 0,
"deviceId": "0B:54:49:D1:BC:DA",
"deviceName": "Domyos-TC-0314",
"deviceRSSI": 0,
"deviceType": 1,
"deviceConnected": false,
"devicePaused": false,
"elapsed_s": 0,
"elapsed_m": 0,
"elapsed_h": 0,
"pace_s": 0,
"pace_m": 0,
"pace_h": 0,
"moving_s": 0,
"moving_m": 0,
"moving_h": 0,
"speed": 0,
"speed_avg": 0,
"calories": 0,
"distance": 0,
"heart": 0,
"heart_avg": 0,
"heart_max": 0,
"jouls": 0,
"elevation": 0,
"difficult": 1,
"watts": 0,
"watts_avg": 0,
"watts_max": 0,
"kgwatts": 0,
"kgwatts_avg": 0,
"kgwatts_max": 0,
"workoutName": "",
"workoutStartDate": "",
"instructorName": "",
"latitude": null,
"longitude": null,
"nickName": "N/A",
"inclination": 0,
"inclination_avg": 0
}
```
## Commands
To send commands you will need to send a socket message in JSON format like :
```json
{
"msg": "pause"
}
```
which `msg` is always the name of the command. Command also return on WebSocket message like to acknowledge command :
```json
{
"msg": "R_pause"
}
```
Here is a list of the most "useful" commands
### Start
#### Description :
Allows you to start the bike / treadmill (Reset Timer if bike / treadmill is stopped)
#### Send :
```json
{
"msg": "start"
}
```
#### Response :
```json
{
"msg": "R_start"
}
```
### Pause
#### Description :
Allows you to stop (pause) the bike / treadmill without reset timer.
#### Send :
```json
{
"msg": "pause"
}
```
#### Response :
```json
{
"msg": "R_pause"
}
```
### Stop
#### Description :
Allows you to stop the bike / treadmill and reset timer.
#### Send :
```json
{
"msg": "stop"
}
```
#### Response :
```json
{
"msg": "R_stop"
}
```
### SetSpeed
#### Description :
Allows you to control the treadmill speed.
#### Send :
```json
{
"msg": "setspeed",
"content": {
"value": 8.0
}
}
```
#### Response :
```json
{
"msg": "R_setspeed",
"content": {
"value": 8.0
}
}
```
### SetResistance
#### Description :
Allows you to control the resistance bike or the treadmill incline.
#### Send :
```json
{
"msg": "setresistance",
"content": {
"value": 8.0
}
}
```
#### Response :
```json
{
"msg": "R_setresistance",
"content": {
"value": 8.0
}
}
```
### SetFanSpeed
#### Description :
Allows you to control the fan bike / treadmill speed.
#### Send :
```json
{
"msg": "setfanspeed",
"content": {
"value": 8.0
}
}
```
#### Response :
```json
{
"msg": "R_setfanspeed",
"content": {
"value": 8.0
}
}
```
# Source
How compile Qt 5.12.10 on Raspberry Pi : https://www.tal.org/tutorials/building-qt-512-raspberry-pi
How cross compile Qt 5.12.5 on Raspberry Pi (in French) : https://wiki.logre.eu/index.php/Cross-compilation_Qt_5.12.5_pour_Raspberry_Pi
Issue [REQ] Add to qdomyos an API for remote access to treadmill #572
PR "Templated" connections and Web server #252

View File

@@ -0,0 +1,272 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Copyright 2017 Bluetooth SIG, Inc. All rights reserved.-->
<Characteristic xsi:noNamespaceSchemaLocation="http://schemas.bluetooth.org/Documents/characteristic.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
name="Cross Trainer Data"
type="org.bluetooth.characteristic.cross_trainer_data" uuid="2ACE"
last-modified="2017-02-14" approved="Yes">
<InformativeText>
<Summary>The Cross Trainer Data characteristic is used to send
training-related data to the Client from a cross trainer
(Server).</Summary>
</InformativeText>
<Value>
<Field name="Flags">
<Requirement>Mandatory</Requirement>
<Format>24bit</Format>
<BitField>
<Bit index="0" size="1" name="More Data">
<Enumerations>
<Enumeration key="0" value="False" requires="C1" />
<Enumeration key="1" value="True" />
</Enumerations>
</Bit>
<Bit index="1" size="1" name="Average Speed present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C2" />
</Enumerations>
</Bit>
<Bit index="2" size="1" name="Total Distance Present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C3" />
</Enumerations>
</Bit>
<Bit index="3" size="1" name="Step Count present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C4" />
</Enumerations>
</Bit>
<Bit index="4" size="1" name="Stride Count present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C5" />
</Enumerations>
</Bit>
<Bit index="5" size="1" name="Elevation Gain present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C6" />
</Enumerations>
</Bit>
<Bit index="6" size="1"
name="Inclination and Ramp Angle Setting present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C7" />
</Enumerations>
</Bit>
<Bit index="7" size="1" name="Resistance Level Present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C8" />
</Enumerations>
</Bit>
<Bit index="8" size="1" name="Instantaneous Power present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C9" />
</Enumerations>
</Bit>
<Bit index="9" size="1" name="Average Power present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C10" />
</Enumerations>
</Bit>
<Bit index="10" size="1" name="Expended Energy present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C11" />
</Enumerations>
</Bit>
<Bit index="11" size="1" name="Heart Rate present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C12" />
</Enumerations>
</Bit>
<Bit index="12" size="1"
name="Metabolic Equivalent present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C13" />
</Enumerations>
</Bit>
<Bit index="13" size="1" name="Elapsed Time present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C14" />
</Enumerations>
</Bit>
<Bit index="14" size="1" name="Remaining Time present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C15" />
</Enumerations>
</Bit>
<Bit index="15" size="1" name="Movement Direction">
<Enumerations>
<Enumeration key="0" value="Forward" />
<Enumeration key="1" value="Backward" />
</Enumerations>
</Bit>
<ReservedForFutureUse index="16" size="8" />
</BitField>
</Field>
<Field name="Instantaneous Speed">
<InformativeText>Kilometer per hour with a resolution of
0.01</InformativeText>
<Requirement>C1</Requirement>
<Format>uint16</Format>
<Unit>org.bluetooth.unit.velocity.kilometre_per_hour</Unit>
<DecimalExponent>-2</DecimalExponent>
</Field>
<Field name="Average Speed">
<InformativeText>Kilometer per hour with a resolution of
0.01</InformativeText>
<Requirement>C2</Requirement>
<Format>uint16</Format>
<Unit>org.bluetooth.unit.velocity.kilometre_per_hour</Unit>
<DecimalExponent>-2</DecimalExponent>
</Field>
<Field name="Total Distance">
<InformativeText>Meters with a resolution of
1</InformativeText>
<Requirement>C3</Requirement>
<Format>uint24</Format>
<Unit>org.bluetooth.unit.length.metre</Unit>
</Field>
<Field name="Step Per Minute">
<InformativeText>Step/minute with a resolution of
1</InformativeText>
<Requirement>C4</Requirement>
<Format>uint16</Format>
<Unit>org.bluetooth.unit.step_per_minute</Unit>
</Field>
<Field name="Average Step Rate">
<InformativeText>Step/minute with a resolution of
1</InformativeText>
<Requirement>C4</Requirement>
<Format>uint16</Format>
<Unit>org.bluetooth.unit.step_per_minute</Unit>
</Field>
<Field name="Stride Count">
<InformativeText>Unitless with a resolution of
0.1</InformativeText>
<Requirement>C5</Requirement>
<Format>uint16</Format>
<DecimalExponent>-1</DecimalExponent>
<Unit>org.bluetooth.unit.unitless</Unit>
</Field>
<Field name="Positive Elevation Gain">
<InformativeText>Meters with a resolution of
1</InformativeText>
<Requirement>C6</Requirement>
<Format>uint16</Format>
<Unit>org.bluetooth.unit.length.metre</Unit>
</Field>
<Field name="Negative Elevation Gain">
<InformativeText>Meters with a resolution of
1</InformativeText>
<Requirement>C6</Requirement>
<Format>uint16</Format>
<Unit>org.bluetooth.unit.length.metre</Unit>
</Field>
<Field name="Inclination">
<InformativeText>Percent with a resolution of
0.1</InformativeText>
<Requirement>C7</Requirement>
<Format>sint16</Format>
<Unit>org.bluetooth.unit.percentage</Unit>
<DecimalExponent>-1</DecimalExponent>
</Field>
<Field name="Ramp Angle Setting">
<InformativeText>Degree with a resolution of
0.1</InformativeText>
<Requirement>C7</Requirement>
<Format>sint16</Format>
<Unit>org.bluetooth.unit.plane_angle.degree</Unit>
<DecimalExponent>-1</DecimalExponent>
</Field>
<Field name="Resistance Level">
<InformativeText>Unitless with a resolution of
0.1</InformativeText>
<Requirement>C8</Requirement>
<Format>sint16</Format>
<DecimalExponent>-1</DecimalExponent>
<Unit>org.bluetooth.unit.unitless</Unit>
</Field>
<Field name="Instantaneous Power">
<InformativeText>Watts with a resolution of
1</InformativeText>
<Requirement>C9</Requirement>
<Format>sint16</Format>
<Unit>org.bluetooth.unit.power.watt</Unit>
</Field>
<Field name="Average Power">
<InformativeText>Watts with a resolution of
1</InformativeText>
<Requirement>C10</Requirement>
<Format>sint16</Format>
<Unit>org.bluetooth.unit.power.watt</Unit>
</Field>
<Field name="Total Energy">
<InformativeText>Kilo Calorie with a resolution of
1</InformativeText>
<Requirement>C11</Requirement>
<Format>uint16</Format>
<Unit>org.bluetooth.unit.energy.kilogram_calorie</Unit>
</Field>
<Field name="Energy Per Hour">
<InformativeText>Kilo Calorie with a resolution of
1</InformativeText>
<Requirement>C11</Requirement>
<Format>uint16</Format>
<Unit>org.bluetooth.unit.energy.kilogram_calorie</Unit>
</Field>
<Field name="Energy Per Minute">
<InformativeText>Kilo Calorie with a resolution of
1</InformativeText>
<Requirement>C11</Requirement>
<Format>uint8</Format>
<Unit>org.bluetooth.unit.energy.kilogram_calorie</Unit>
</Field>
<Field name="Heart Rate">
<InformativeText>Beats per minute with a resolution of
1</InformativeText>
<Requirement>C12</Requirement>
<Format>uint8</Format>
<Unit>org.bluetooth.unit.period.beats_per_minute</Unit>
</Field>
<Field name="Metabolic Equivalent">
<InformativeText>Metabolic Equivalent with a resolution of
0.1</InformativeText>
<Requirement>C13</Requirement>
<Format>uint8</Format>
<DecimalExponent>-1</DecimalExponent>
<Unit>org.bluetooth.unit.metabolic_equivalent</Unit>
</Field>
<Field name="Elapsed Time">
<InformativeText>Second with a resolution of
1</InformativeText>
<Requirement>C14</Requirement>
<Format>uint16</Format>
<Unit>org.bluetooth.unit.time.second</Unit>
</Field>
<Field name="Remaining Time">
<InformativeText>Second with a resolution of
1</InformativeText>
<Requirement>C15</Requirement>
<Format>uint16</Format>
<Unit>org.bluetooth.unit.time.second</Unit>
</Field>
</Value>
<Note>The fields in the above table, reading from top to bottom,
are shown in the order of LSO to MSO, where LSO = Least
Significant Octet and MSO = Most Significant Octet. The Least
Significant Octet represents the eight bits numbered 0 to
7.</Note>
</Characteristic>

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

View File

@@ -0,0 +1,6 @@
copy icons\iOS\iTunesArtwork@2x.png build-qdomyos-zwift-Qt_5_15_2_for_UWP_64bit_MSVC_2019-Release\release
del build-qdomyos-zwift-Qt_5_15_2_for_UWP_64bit_MSVC_2019-Release\release\qz.appx
cd build-qdomyos-zwift-Qt_5_15_2_for_UWP_64bit_MSVC_2019-Release\release
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64\makeappx.exe" pack /d . /p qz
explorer build-qdomyos-zwift-Qt_5_15_2_for_UWP_64bit_MSVC_2019-Release\release
pause

BIN
icons/Microsoft/150.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

BIN
icons/Microsoft/44.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
icons/Microsoft/50.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -3,5 +3,5 @@ QMAKE_PRO_INPUT = httpserver.pro
QMAKE_PRL_TARGET = libQt5HttpServer_arm64-v8a.so
QMAKE_PRL_CONFIG = lex yacc depend_includepath testcase_targets import_plugins import_qpa_plugin prepare_docs qt_docs_targets qt_build_extra file_copies qmake_use qt warn_on release link_prl android_install unversioned_soname unversioned_libname plugin_with_soname android_deployment_settings clang_pch_style android-21 shared cross_compile shared release android linux unix posix gcc clang llvm copy_dir_files cross_compile compile_examples enable_new_dtags neon precompile_header prefix_build force_independent force_bootstrap builtin_testdata utf8_source create_prl link_prl no_private_qt_headers_warning QTDIR_build qt_example_installs exceptions_off testcase_exceptions explicitlib arm64-v8a Arm64-v8aBuild Arm64-v8a build_pass qtquickcompiler arm64-v8a Arm64-v8aBuild Arm64-v8a build_pass relative_qt_rpath git_build target_qt c++11 strict_c++ c++14 c++1z c99 c11 hide_symbols qt_install_headers need_fwd_pri qt_install_module create_cmake compiler_supports_fpmath qt_android_deps no_linker_version_script create_pc create_libtool arm64-v8a Arm64-v8aBuild Arm64-v8a build_pass have_target dll armeabi-v7a_and_arm64-v8a_and_x86_and_x86_64 build_all exclusive_builds multi_android_abi no_autoqmake thread moc resources
QMAKE_PRL_VERSION = 5.12.0
QMAKE_PRL_LIBS = D:/Dati/GoogleDrive/cpp/build-qthttpserver-Android_Qt_5_15_2_Clang_Multi_Abi-Release/lib/libQt5SslServer_arm64-v8a.so C:/Qt/5.15.2/android/lib/libQt5WebSockets_arm64-v8a.so C:/Qt/5.15.2/android/lib/libQt5Network_arm64-v8a.so C:/Qt/5.15.2/android/lib/libQt5Concurrent_arm64-v8a.so C:/Qt/5.15.2/android/lib/libQt5Core_arm64-v8a.so
QMAKE_PRL_LIBS_FOR_CMAKE = D:/Dati/GoogleDrive/cpp/build-qthttpserver-Android_Qt_5_15_2_Clang_Multi_Abi-Release/lib/libQt5SslServer_arm64-v8a.so;C:/Qt/5.15.2/android/lib/libQt5WebSockets_arm64-v8a.so;C:/Qt/5.15.2/android/lib/libQt5Network_arm64-v8a.so;C:/Qt/5.15.2/android/lib/libQt5Concurrent_arm64-v8a.so;C:/Qt/5.15.2/android/lib/libQt5Core_arm64-v8a.so;
QMAKE_PRL_LIBS = C:/Qt/5.15.2/android/lib/libQt5SslServer_arm64-v8a.so C:/Qt/5.15.2/android/lib/libQt5WebSockets_arm64-v8a.so C:/Qt/5.15.2/android/lib/libQt5Network_arm64-v8a.so C:/Qt/5.15.2/android/lib/libQt5Concurrent_arm64-v8a.so C:/Qt/5.15.2/android/lib/libQt5Core_arm64-v8a.so
QMAKE_PRL_LIBS_FOR_CMAKE = C:/Qt/5.15.2/android/lib/libQt5SslServer_arm64-v8a.so;C:/Qt/5.15.2/android/lib/libQt5WebSockets_arm64-v8a.so;C:/Qt/5.15.2/android/lib/libQt5Network_arm64-v8a.so;C:/Qt/5.15.2/android/lib/libQt5Concurrent_arm64-v8a.so;C:/Qt/5.15.2/android/lib/libQt5Core_arm64-v8a.so;

View File

@@ -3,5 +3,5 @@ QMAKE_PRO_INPUT = httpserver.pro
QMAKE_PRL_TARGET = libQt5HttpServer_armeabi-v7a.so
QMAKE_PRL_CONFIG = lex yacc depend_includepath testcase_targets import_plugins import_qpa_plugin prepare_docs qt_docs_targets qt_build_extra file_copies qmake_use qt warn_on release link_prl android_install unversioned_soname unversioned_libname plugin_with_soname android_deployment_settings clang_pch_style android-21 shared cross_compile shared release android linux unix posix gcc clang llvm copy_dir_files cross_compile compile_examples enable_new_dtags neon precompile_header prefix_build force_independent force_bootstrap builtin_testdata utf8_source create_prl link_prl no_private_qt_headers_warning QTDIR_build qt_example_installs exceptions_off testcase_exceptions explicitlib armeabi-v7a Armeabi-v7aBuild Armeabi-v7a build_pass optimize_size qtquickcompiler armeabi-v7a Armeabi-v7aBuild Armeabi-v7a build_pass relative_qt_rpath git_build target_qt c++11 strict_c++ c++14 c++1z c99 c11 hide_symbols qt_install_headers need_fwd_pri qt_install_module create_cmake compiler_supports_fpmath qt_android_deps no_linker_version_script create_pc create_libtool armeabi-v7a Armeabi-v7aBuild Armeabi-v7a build_pass have_target dll armeabi-v7a_and_arm64-v8a_and_x86_and_x86_64 build_all exclusive_builds multi_android_abi no_autoqmake thread moc resources
QMAKE_PRL_VERSION = 5.12.0
QMAKE_PRL_LIBS = D:/Dati/GoogleDrive/cpp/build-qthttpserver-Android_Qt_5_15_2_Clang_Multi_Abi-Release/lib/libQt5SslServer_armeabi-v7a.so C:/Qt/5.15.2/android/lib/libQt5WebSockets_armeabi-v7a.so C:/Qt/5.15.2/android/lib/libQt5Network_armeabi-v7a.so C:/Qt/5.15.2/android/lib/libQt5Concurrent_armeabi-v7a.so C:/Qt/5.15.2/android/lib/libQt5Core_armeabi-v7a.so
QMAKE_PRL_LIBS_FOR_CMAKE = D:/Dati/GoogleDrive/cpp/build-qthttpserver-Android_Qt_5_15_2_Clang_Multi_Abi-Release/lib/libQt5SslServer_armeabi-v7a.so;C:/Qt/5.15.2/android/lib/libQt5WebSockets_armeabi-v7a.so;C:/Qt/5.15.2/android/lib/libQt5Network_armeabi-v7a.so;C:/Qt/5.15.2/android/lib/libQt5Concurrent_armeabi-v7a.so;C:/Qt/5.15.2/android/lib/libQt5Core_armeabi-v7a.so;
QMAKE_PRL_LIBS = C:/Qt/5.15.2/android/lib/libQt5SslServer_armeabi-v7a.so C:/Qt/5.15.2/android/lib/libQt5WebSockets_armeabi-v7a.so C:/Qt/5.15.2/android/lib/libQt5Network_armeabi-v7a.so C:/Qt/5.15.2/android/lib/libQt5Concurrent_armeabi-v7a.so C:/Qt/5.15.2/android/lib/libQt5Core_armeabi-v7a.so
QMAKE_PRL_LIBS_FOR_CMAKE = C:/Qt/5.15.2/android/lib/libQt5SslServer_armeabi-v7a.so;C:/Qt/5.15.2/android/lib/libQt5WebSockets_armeabi-v7a.so;C:/Qt/5.15.2/android/lib/libQt5Network_armeabi-v7a.so;C:/Qt/5.15.2/android/lib/libQt5Concurrent_armeabi-v7a.so;C:/Qt/5.15.2/android/lib/libQt5Core_armeabi-v7a.so;

View File

@@ -3,5 +3,5 @@ QMAKE_PRO_INPUT = httpserver.pro
QMAKE_PRL_TARGET = libQt5HttpServer_x86.so
QMAKE_PRL_CONFIG = lex yacc depend_includepath testcase_targets import_plugins import_qpa_plugin prepare_docs qt_docs_targets qt_build_extra file_copies qmake_use qt warn_on release link_prl android_install unversioned_soname unversioned_libname plugin_with_soname android_deployment_settings clang_pch_style android-21 shared cross_compile shared release android linux unix posix gcc clang llvm copy_dir_files cross_compile compile_examples enable_new_dtags neon precompile_header prefix_build force_independent force_bootstrap builtin_testdata utf8_source create_prl link_prl no_private_qt_headers_warning QTDIR_build qt_example_installs exceptions_off testcase_exceptions explicitlib x86 X86Build X86 build_pass qtquickcompiler x86 X86Build X86 build_pass relative_qt_rpath git_build target_qt c++11 strict_c++ c++14 c++1z c99 c11 hide_symbols qt_install_headers need_fwd_pri qt_install_module create_cmake compiler_supports_fpmath qt_android_deps no_linker_version_script create_pc create_libtool x86 X86Build X86 build_pass have_target dll armeabi-v7a_and_arm64-v8a_and_x86_and_x86_64 build_all exclusive_builds multi_android_abi no_autoqmake thread moc resources
QMAKE_PRL_VERSION = 5.12.0
QMAKE_PRL_LIBS = D:/Dati/GoogleDrive/cpp/build-qthttpserver-Android_Qt_5_15_2_Clang_Multi_Abi-Release/lib/libQt5SslServer_x86.so C:/Qt/5.15.2/android/lib/libQt5WebSockets_x86.so C:/Qt/5.15.2/android/lib/libQt5Network_x86.so C:/Qt/5.15.2/android/lib/libQt5Concurrent_x86.so C:/Qt/5.15.2/android/lib/libQt5Core_x86.so
QMAKE_PRL_LIBS_FOR_CMAKE = D:/Dati/GoogleDrive/cpp/build-qthttpserver-Android_Qt_5_15_2_Clang_Multi_Abi-Release/lib/libQt5SslServer_x86.so;C:/Qt/5.15.2/android/lib/libQt5WebSockets_x86.so;C:/Qt/5.15.2/android/lib/libQt5Network_x86.so;C:/Qt/5.15.2/android/lib/libQt5Concurrent_x86.so;C:/Qt/5.15.2/android/lib/libQt5Core_x86.so;
QMAKE_PRL_LIBS = C:/Qt/5.15.2/android/lib/libQt5SslServer_x86.so C:/Qt/5.15.2/android/lib/libQt5WebSockets_x86.so C:/Qt/5.15.2/android/lib/libQt5Network_x86.so C:/Qt/5.15.2/android/lib/libQt5Concurrent_x86.so C:/Qt/5.15.2/android/lib/libQt5Core_x86.so
QMAKE_PRL_LIBS_FOR_CMAKE = C:/Qt/5.15.2/android/lib/libQt5SslServer_x86.so;C:/Qt/5.15.2/android/lib/libQt5WebSockets_x86.so;C:/Qt/5.15.2/android/lib/libQt5Network_x86.so;C:/Qt/5.15.2/android/lib/libQt5Concurrent_x86.so;C:/Qt/5.15.2/android/lib/libQt5Core_x86.so;

View File

@@ -3,5 +3,5 @@ QMAKE_PRO_INPUT = httpserver.pro
QMAKE_PRL_TARGET = libQt5HttpServer_x86_64.so
QMAKE_PRL_CONFIG = lex yacc depend_includepath testcase_targets import_plugins import_qpa_plugin prepare_docs qt_docs_targets qt_build_extra file_copies qmake_use qt warn_on release link_prl android_install unversioned_soname unversioned_libname plugin_with_soname android_deployment_settings clang_pch_style android-21 shared cross_compile shared release android linux unix posix gcc clang llvm copy_dir_files cross_compile compile_examples enable_new_dtags neon precompile_header prefix_build force_independent force_bootstrap builtin_testdata utf8_source create_prl link_prl no_private_qt_headers_warning QTDIR_build qt_example_installs exceptions_off testcase_exceptions explicitlib x86_64 X86_64Build X86_64 build_pass qtquickcompiler x86_64 X86_64Build X86_64 build_pass relative_qt_rpath git_build target_qt c++11 strict_c++ c++14 c++1z c99 c11 hide_symbols qt_install_headers need_fwd_pri qt_install_module create_cmake compiler_supports_fpmath qt_android_deps no_linker_version_script create_pc create_libtool x86_64 X86_64Build X86_64 build_pass have_target dll armeabi-v7a_and_arm64-v8a_and_x86_and_x86_64 build_all exclusive_builds multi_android_abi no_autoqmake thread moc resources
QMAKE_PRL_VERSION = 5.12.0
QMAKE_PRL_LIBS = D:/Dati/GoogleDrive/cpp/build-qthttpserver-Android_Qt_5_15_2_Clang_Multi_Abi-Release/lib/libQt5SslServer_x86_64.so C:/Qt/5.15.2/android/lib/libQt5WebSockets_x86_64.so C:/Qt/5.15.2/android/lib/libQt5Network_x86_64.so C:/Qt/5.15.2/android/lib/libQt5Concurrent_x86_64.so C:/Qt/5.15.2/android/lib/libQt5Core_x86_64.so
QMAKE_PRL_LIBS_FOR_CMAKE = D:/Dati/GoogleDrive/cpp/build-qthttpserver-Android_Qt_5_15_2_Clang_Multi_Abi-Release/lib/libQt5SslServer_x86_64.so;C:/Qt/5.15.2/android/lib/libQt5WebSockets_x86_64.so;C:/Qt/5.15.2/android/lib/libQt5Network_x86_64.so;C:/Qt/5.15.2/android/lib/libQt5Concurrent_x86_64.so;C:/Qt/5.15.2/android/lib/libQt5Core_x86_64.so;
QMAKE_PRL_LIBS = C:/Qt/5.15.2/android/lib/libQt5SslServer_x86_64.so C:/Qt/5.15.2/android/lib/libQt5WebSockets_x86_64.so C:/Qt/5.15.2/android/lib/libQt5Network_x86_64.so C:/Qt/5.15.2/android/lib/libQt5Concurrent_x86_64.so C:/Qt/5.15.2/android/lib/libQt5Core_x86_64.so
QMAKE_PRL_LIBS_FOR_CMAKE = C:/Qt/5.15.2/android/lib/libQt5SslServer_x86_64.so;C:/Qt/5.15.2/android/lib/libQt5WebSockets_x86_64.so;C:/Qt/5.15.2/android/lib/libQt5Network_x86_64.so;C:/Qt/5.15.2/android/lib/libQt5Concurrent_x86_64.so;C:/Qt/5.15.2/android/lib/libQt5Core_x86_64.so;

18
qdomyos-zwift.pro Normal file
View File

@@ -0,0 +1,18 @@
TEMPLATE = subdirs
CONFIG+=ordered
!android: {
SUBDIRS = \
src/qdomyos-zwift-lib.pro \
src/qdomyos-zwift.pro \
tst/qdomyos-zwift-tests.pro
tst.depends = src/qdomyos-zwift-lib.pro
}
android: {
SUBDIRS = \
src/qdomyos-zwift.pro
}

View File

@@ -1018,7 +1018,7 @@ public class QtBluetoothLE {
/*
* Already executed in GattCallback so executed by the HandlerThread. No need to
* post it to the Hander.
* post it to the Handler.
*/
private void scheduleMtuExchange() {
ReadWriteJob newJob = new ReadWriteJob();

View File

@@ -385,11 +385,11 @@ QT_USE_NAMESPACE
}
[uuids addObject:nsUuid];
// With the latest CoreBluetooth, we can synchronously retrive peripherals:
// With the latest CoreBluetooth, we can synchronously retrieve peripherals:
QT_BT_MAC_AUTORELEASEPOOL;
NSArray *const peripherals = [manager retrievePeripheralsWithIdentifiers:uuids];
if (!peripherals || peripherals.count != 1) {
qCWarning(QT_BT_OSX) << "failed to retrive a peripheral";
qCWarning(QT_BT_OSX) << "failed to retrieve a peripheral";
if (notifier)
emit notifier->CBManagerError(QLowEnergyController::UnknownRemoteDeviceError);
return;
@@ -648,7 +648,7 @@ QT_USE_NAMESPACE
servicesToDiscoverDetails.removeAll(serviceUuid);
const NSUInteger nHandles = qt_countGATTEntries(service);
Q_ASSERT_X(nHandles, Q_FUNC_INFO, "unexpected number of GATT entires");
Q_ASSERT_X(nHandles, Q_FUNC_INFO, "unexpected number of GATT entries");
const QLowEnergyHandle maxHandle = std::numeric_limits<QLowEnergyHandle>::max();
if (nHandles >= maxHandle || lastValidHandle > maxHandle - nHandles) {
@@ -1058,7 +1058,7 @@ QT_USE_NAMESPACE
// TODO: test that we NEVER have the same characteristic twice in array!
// At the moment I just protect against this by iterating in a reverse
// order (at least avoiding a potential inifite loop with '-indexOfObject:').
// order (at least avoiding a potential infinite loop with '-indexOfObject:').
NSArray *const cs = service.characteristics;
if (cs.count == 1)
return nil;
@@ -1091,7 +1091,7 @@ QT_USE_NAMESPACE
// TODO: test that we NEVER have the same characteristic twice in array!
// At the moment I just protect against this by iterating in a reverse
// order (at least avoiding a potential inifite loop with '-indexOfObject:').
// order (at least avoiding a potential infinite loop with '-indexOfObject:').
NSArray *const cs = service.characteristics;
if (cs.count == 1)
return nil;
@@ -1597,8 +1597,8 @@ QT_USE_NAMESPACE
} else {
// This is (probably) the result of update notification.
// It's very possible we can have an invalid handle here (0) -
// if something esle is wrong (we subscribed for a notification),
// disconnected (but other application is connected) and still receiveing
// if something else is wrong (we subscribed for a notification),
// disconnected (but other application is connected) and still receiving
// updated values ...
// TODO: this must be properly tested.
if (!chHandle) {

30
src/AppxManifest.xml Normal file
View File

@@ -0,0 +1,30 @@
<Package xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\" xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\" xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\" xmlns:uap3=\"http://schemas.microsoft.com/appx/manifest/uap/windows10/3\" xmlns:mobile=\"http://schemas.microsoft.com/appx/manifest/mobile/windows10\" xmlns:iot=\"http://schemas.microsoft.com/appx/manifest/iot/windows10\" IgnorableNamespaces=\"uap uap3 mp mobile iot\">
<Identity Name=\"35433QZdiRobertoViola.QZFitness\" Publisher=\"CN=CA24F902-6882-40DF-B1E3-2E1B81CD730C\" Version=\"2.10.83.0\" ProcessorArchitecture=\"x64\"/>
<Properties>
<DisplayName>QZ Fitness</DisplayName>
<PublisherDisplayName>QZ di Roberto Viola</PublisherDisplayName>
<Description>QZ Fitness syncs fitness bikes, ellipticals, rowers, and treadmills to training apps like Echelon, Peloton, Zwift and Strava providing you with an unparalleled level of connectivity that keeps you informed and in control of your workouts</Description>
<Logo>50.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.19041.0\" MaxVersionTested=\"10.0.19041.0\"/>
<PackageDependency Name=\"Microsoft.VCLibs.140.00\" MinVersion=\"14.0.0.0\" Publisher=\"CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US\"/>
</Dependencies>
<Resources>
<Resource Language=\"en\"/>
</Resources>
<Applications>
<Application Id=\"App\" Executable=\"qdomyos-zwift.exe\" EntryPoint=\"qdomyos-zwift.App\">
<uap:VisualElements DisplayName=\"qdomyos-zwift\" Description=\"Default package description\" BackgroundColor=\"green\" Square150x150Logo=\"150.png\" Square44x44Logo=\"44.png\">
</uap:VisualElements>
</Application>
</Applications>
<Capabilities>
<Capability Name=\"internetClient\"/>
<Capability Name=\"internetClientServer\"/>
<Capability Name=\"privateNetworkClientServer\"/>
<DeviceCapability Name=\"bluetooth.genericAttributeProfile\"/>
<DeviceCapability Name=\"bluetooth.rfcomm\"/>
<DeviceCapability Name=\"location\"/>
</Capabilities>
</Package>

View File

@@ -19,11 +19,19 @@ ColumnLayout {
url: "http://localhost:" + settings.value("template_inner_QZWS_port") + "/chartjs/chart.htm"
visible: true
onLoadingChanged: {
if (loadRequest.errorString)
if (loadRequest.errorString) {
console.error(loadRequest.errorString);
console.error("port " + settings.value("template_inner_QZWS_port"));
}
}
}
Timer {
id: chartJscheckStartFromWeb
interval: 200; running: true; repeat: true
onTriggered: {if(rootItem.startRequested) {rootItem.startRequested = false; rootItem.stopRequested = false; stackView.pop(); }}
}
Button {
id: closeButton
height: 50

1058
src/Computrainer.cpp Normal file

File diff suppressed because it is too large Load Diff

215
src/Computrainer.h Normal file
View File

@@ -0,0 +1,215 @@
/*
* Copyright (c) 2009 Mark Liversedge (liversedge@gmail.com)
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
// I have consciously avoided putting things like data logging, lap marking,
// intervals or any load management functions in this class. It is restricted
// to controlling an reading telemetry from the device
//
// I expect higher order classes to implement such functions whilst
// other devices (e.g. ANT+ devices) may be implemented with the same basic
// interface
//
// I have avoided a base abstract class at this stage since I am uncertain
// what core methods would be required by say, ANT+ or Tacx devices
#ifndef _Computrainer_h
#define _Computrainer_h 1
#include <QDebug>
#include <QFile>
#include <QMutex>
#include <QString>
#include <QThread>
#ifdef WIN32
#include <windef.h>
#endif
#ifdef WIN32
#include <winbase.h>
#include <windows.h>
#else
#include <sys/ioctl.h>
#include <termios.h> // unix!!
#include <unistd.h> // unix!!
#ifndef N_TTY // for OpenBSD, this is a hack XXX
#define N_TTY 0
#endif
#endif
#ifdef Q_OS_ANDROID
#include "keepawakehelper.h"
#include <QAndroidJniObject>
#endif
#include <errno.h>
#include <fcntl.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
/* Some CT Microcontroller / Protocol Constants */
/* read timeouts in microseconds */
#define CT_READTIMEOUT 1000
#define CT_WRITETIMEOUT 2000
// message type
#define CT_SPEED 0x01
#define CT_POWER 0x02
#define CT_HEARTRATE 0x03
#define CT_CADENCE 0x06
#define CT_RRC 0x09
#define CT_SENSOR 0x0b
// buttons
#define CT_RESET 0x01
#define CT_F1 0x02
#define CT_F3 0x04
#define CT_PLUS 0x08
#define CT_F2 0x10
#define CT_MINUS 0x20
#define CT_SSS 0x40 // spinscan sync is not a button!
#define CT_NONE 0x80
/* Device operation mode */
#define CT_ERGOMODE 0x01
#define CT_SSMODE 0x02
#define CT_CALIBRATE 0x04
/* UI operation mode */
#define UI_MANUAL 0x01 // using +/- keys to adjust
#define UI_ERG 0x02 // running an erg file!
/* Control status */
#define CT_RUNNING 0x01
#define CT_PAUSED 0x02
/* default operation mode */
#define DEFAULT_MODE CT_ERGOMODE
#define DEFAULT_LOAD 100.00
#define DEFAULT_GRADIENT 2.00
class Computrainer : public QThread {
public:
Computrainer(QObject *parent = 0, QString deviceFilename = 0); // pass device
~Computrainer();
QObject *parent;
// HIGH-LEVEL FUNCTIONS
int start(); // Calls QThread to start
int restart(); // restart after paused
int pause(); // pauses data collection, inbound telemetry is discarded
int stop(); // stops data collection thread
int quit(int error); // called by thread before exiting
bool discover(QString deviceFilename); // confirm CT is attached to device
// SET
void setDevice(QString deviceFilename); // setup the device filename
void setLoad(double load); // set the load to generate in ERGOMODE
void setGradient(double gradient); // set the load to generate in SSMODE
void setMode(int mode,
double load = DEFAULT_LOAD, // set mode to CT_ERGOMODE or CT_SSMODE
double gradient = DEFAULT_GRADIENT);
// GET TELEMETRY AND STATUS
// direct access to class variables is not allowed because we need to use wait conditions
// to sync data read/writes between the run() thread and the main gui thread
bool isCalibrated();
bool isHRConnected();
bool isCADConnected();
void getTelemetry(double &Power, double &HeartRate, double &Cadence, double &Speed, double &RRC, bool &calibration,
int &Buttons, uint8_t *ss, int &Status);
void getSpinScan(double spinData[]);
int getMode();
double getGradient();
double getLoad();
private:
void run(); // called by start to kick off the CT comtrol thread
// 56 bytes comprise of 8 7byte command messages, where
// the last is the set load / gradient respectively
uint8_t ERGO_Command[56], SS_Command[56];
// Utility and BG Thread functions
int openPort();
int closePort();
// Protocol encoding
void prepareCommand(int mode, double value); // sets up the command packet according to current settings
int sendCommand(int mode); // writes a command to the device
int calcCRC(int value); // calculates the checksum for the current command
// Protocol decoding
int readMessage();
void unpackTelemetry(int &b1, int &b2, int &b3, int &buttons, int &type, int &value8, int &value12);
// Mutex for controlling accessing private data
QMutex pvars;
// INBOUND TELEMETRY - all volatile since it is updated by the run() thread
volatile double devicePower; // current output power in Watts
volatile double deviceHeartRate; // current heartrate in BPM
volatile double deviceCadence; // current cadence in RPM
volatile double deviceSpeed; // current speed in KPH
volatile double deviceRRC; // calibrated Rolling Resistance
volatile bool deviceCalibrated; // is it calibrated?
volatile uint8_t spinScan[24]; // SS values only in SS_MODE
volatile int deviceButtons; // Button status
volatile bool deviceHRConnected; // HR jack is connected
volatile bool deviceCADConnected; // Cadence jack is connected
volatile int deviceStatus; // Device status running, paused, disconnected
// OUTBOUND COMMANDS - all volatile since it is updated by the GUI thread
volatile int mode;
volatile double load;
volatile double gradient;
// i/o message holder
uint8_t buf[7];
// device port
QString deviceFilename;
#ifdef WIN32
HANDLE devicePort; // file descriptor for reading from com3
DCB deviceSettings; // serial port settings baud rate et al
#else
int devicePort; // unix!!
struct termios deviceSettings; // unix!!
#endif
// raw device utils
int rawWrite(uint8_t *bytes, int size); // unix!!
int rawRead(uint8_t *bytes, int size); // unix!!
#ifdef Q_OS_ANDROID
QList<jbyte> bufRX;
bool cleanFrame = false;
#endif
};
class CTsleeper : public QThread {
public:
static void msleep(unsigned long msecs); // inherited from QThread
};
#endif // _GC_Computrainer_h

165
src/CrossQFile.cpp Normal file
View File

@@ -0,0 +1,165 @@
#include "CrossQFile.h"
#include <QFileInfo>
#ifdef __ANDROID__
#include <jni.h>
#include <QtAndroidExtras/QtAndroid>
#include <QtAndroidExtras/qandroidjnienvironment.h>
#endif
#include <QCoreApplication>
CrossQFile::CrossQFile(const QString& nameOrUri, const bool isUri) : QFile(nameOrUri), isWorkingWithUri(isUri){
#ifdef __ANDROID__
mainActivityObj = QtAndroid::androidActivity();
contentResolverObj = mainActivityObj.callObjectMethod
("getContentResolver","()Landroid/content/ContentResolver;");
checkJenvExceptions();
#endif
}
#ifdef __ANDROID__
bool CrossQFile::checkJenvExceptions() const{
QAndroidJniEnvironment env;
if (env->ExceptionCheck()) {
env->ExceptionDescribe();
env->ExceptionClear();
return true;
}
return false;
}
QAndroidJniObject CrossQFile::parseUriString(const QString& uriString) const{
return QAndroidJniObject::callStaticObjectMethod
("android/net/Uri" , "parse",
"(Ljava/lang/String;)Landroid/net/Uri;",
QAndroidJniObject::fromString(uriString).object());
}
#endif
void CrossQFile::setFileName(const QString& nameOrUri, bool isUri){
QFile::setFileName(nameOrUri);
isWorkingWithUri = isUri;
}
qint64 CrossQFile::size() const{
#ifdef __ANDROID__
if(isWorkingWithUri){
QAndroidJniObject cursorObj {contentResolverObj.callObjectMethod
("query",
"(Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/database/Cursor;",
parseUriString(fileName()).object(), QAndroidJniObject().object(), QAndroidJniObject().object()
, QAndroidJniObject().object(), QAndroidJniObject().object())};
int sizeIndex {cursorObj.callMethod<jint>
("getColumnIndex","(Ljava/lang/String;)I",
QAndroidJniObject::getStaticObjectField<jstring>
("android/provider/OpenableColumns","SIZE").object())};
cursorObj.callMethod<jboolean>("moveToFirst");
qint64 ret {cursorObj.callMethod<jlong>("getLong","(I)J",sizeIndex)};
if(checkJenvExceptions()){
ret = 0;
}
return ret;
}
#endif
return QFile::size();
}
bool CrossQFile::open(CrossQFile::OpenMode openMode){
#ifdef __ANDROID__
if(isWorkingWithUri){
QAndroidJniObject jopenMode {QAndroidJniObject::fromString("rw")};
switch (openMode){
case QFile::ReadOnly:
jopenMode = QAndroidJniObject::fromString("r");
break;
case QFile::WriteOnly:
jopenMode = QAndroidJniObject::fromString("w");
break;
default:
jopenMode = QAndroidJniObject::fromString("rw");
}
QAndroidJniObject pfdObj{contentResolverObj.callObjectMethod
("openFileDescriptor", "(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;",
parseUriString(fileName()).object(), jopenMode.object())};
int fd{pfdObj.callMethod<jint>("detachFd")};
bool ret {false};
if(QFile::open(fd, openMode)){
ret = true;
}
if(checkJenvExceptions()){
ret = false;
}
return ret;
}
#endif
return QFile::open(openMode);
}
QString CrossQFile::displayName(){
#ifdef __ANDROID__
if(isWorkingWithUri){
QAndroidJniObject cursorObj {contentResolverObj.callObjectMethod
("query",
"(Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/database/Cursor;",
parseUriString(fileName()).object(), QAndroidJniObject().object(), QAndroidJniObject().object(),
QAndroidJniObject().object(), QAndroidJniObject().object())};
cursorObj.callMethod<jboolean>("moveToFirst");
QAndroidJniObject retObj{cursorObj.callObjectMethod
("getString","(I)Ljava/lang/String;", cursorObj.callMethod<jint>
("getColumnIndex","(Ljava/lang/String;)I",
QAndroidJniObject::getStaticObjectField<jstring>
("android/provider/OpenableColumns","DISPLAY_NAME").object()))};
QString ret {retObj.toString()};
if(checkJenvExceptions()){
ret = "";
}
return ret;
}
#endif
QFileInfo fileInfo(fileName());
return fileInfo.fileName();
}
bool CrossQFile::remove(){
#ifdef __ANDROID__
if(isWorkingWithUri){
bool ret {static_cast<bool>(QAndroidJniObject::callStaticMethod<jboolean>
("android/provider/DocumentsContract", "deleteDocument",
"(Landroid/content/ContentResolver;Landroid/net/Uri;)Z",
contentResolverObj.object(), parseUriString(fileName()).object()))};
if(checkJenvExceptions()){
ret = false;
}
return ret;
}
#endif
return QFile::remove();
}
bool CrossQFile::rename(const QString& newName){
if(!isWorkingWithUri){
return QFile::rename(newName);
}else{
return false;
}
}
bool CrossQFile::exists() const{
#ifdef __ANDROID__
if(isWorkingWithUri){
bool ret {static_cast<bool>(QAndroidJniObject::callStaticMethod<jboolean>
("android/provider/DocumentsContract", "isDocumentUri",
"(Landroid/content/Context;Landroid/net/Uri;)Z",
mainActivityObj.object(), parseUriString(fileName()).object()))};
if(checkJenvExceptions()){
ret = false;
}
return ret;
}
#endif
return QFile::exists();
}

40
src/CrossQFile.h Normal file
View File

@@ -0,0 +1,40 @@
#ifndef CROSSQFILE_H
#define CROSSQFILE_H
#include <QObject>
#include <QFile>
#include <QSharedPointer>
#ifdef __ANDROID__
#include <QtAndroidExtras/QAndroidJniObject>
#endif
class CrossQFile : public QFile
{
public:
CrossQFile(const QString& nameOrUri, const bool isUri = false);
virtual qint64 size() const override;
//if working with uri, it uses QAndroidjniObject to open the file using the uri.
//otherwise it would act like a normal QFile.
bool open(CrossQFile::OpenMode openMode) override;
bool remove();
//if working with uri, it does nothing.
//otherwise it would act like a normal QFile.
bool rename(const QString& newName);
bool exists() const;
//returns the display name of the file.
QString displayName();
void setFileName(const QString& nameOrUri, bool isUri = false);
private:
bool isWorkingWithUri{false};
#ifdef __ANDROID__
QAndroidJniObject mainActivityObj;
QAndroidJniObject contentResolverObj;
bool checkJenvExceptions() const;
QAndroidJniObject parseUriString(const QString& uriString) const;
#endif
};
#endif // CROSSQFILE_H

267
src/GPXList.qml Normal file
View File

@@ -0,0 +1,267 @@
import QtQuick 2.7
import Qt.labs.folderlistmodel 2.15
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.15
import QtQuick.Controls.Material 2.0
import QtQuick.Dialogs 1.0
import QtCharts 2.2
import Qt.labs.settings 1.0
import QtPositioning 5.5
import QtLocation 5.6
ColumnLayout {
signal trainprogram_open_clicked(url name)
signal trainprogram_preview(url name)
FileDialog {
id: fileDialogTrainProgram
title: "Please choose a file"
folder: shortcuts.home
onAccepted: {
console.log("You chose: " + fileDialogTrainProgram.fileUrl)
trainprogram_open_clicked(fileDialogTrainProgram.fileUrl)
fileDialogTrainProgram.close()
}
onRejected: {
console.log("Canceled")
fileDialogTrainProgram.close()
}
}
RowLayout{
spacing: 2
anchors.top: parent.top
anchors.fill: parent
ColumnLayout {
spacing: 0
anchors.top: parent.top
anchors.fill: parent
Row
{
spacing: 5
Text
{
text:"Filter"
color: "white"
verticalAlignment: Text.AlignVCenter
}
TextField
{
function updateFilter()
{
var text = filterField.text
var filter = "*"
for(var i = 0; i<text.length; i++)
filter+= "[%1%2]".arg(text[i].toUpperCase()).arg(text[i].toLowerCase())
filter+="*"
print(filter)
folderModel.nameFilters = [filter + ".gpx"]
}
id: filterField
onTextChanged: updateFilter()
}
Button {
anchors.left: mainRect.right
anchors.leftMargin: 5
text: "←"
onClicked: folderModel.folder = folderModel.parentFolder
}
}
ListView {
Layout.fillWidth: true
Layout.minimumWidth: 50
Layout.preferredWidth: 100
Layout.maximumWidth: row.left
Layout.minimumHeight: 150
Layout.preferredHeight: parent.height
ScrollBar.vertical: ScrollBar {}
id: list
FolderListModel {
id: folderModel
nameFilters: ["*.gpx"]
folder: "file://" + rootItem.getWritableAppDir() + 'gpx'
showDotAndDotDot: false
showDirs: true
sortField: "Name"
showDirsFirst: true
}
model: folderModel
delegate: Component {
Rectangle {
property alias textColor: fileTextBox.color
width: parent.width
height: 40
color: Material.backgroundColor
z: 1
Item {
id: root
property alias text: fileTextBox.text
property int spacing: 30
width: fileTextBox.width + spacing
height: fileTextBox.height
clip: true
Text {
id: fileTextBox
color: (!folderModel.isFolder(index)?Material.color(Material.Grey):Material.color(Material.Orange))
font.pixelSize: Qt.application.font.pixelSize * 1.6
text: fileName.substring(0, fileName.length-4)
NumberAnimation on x {
Component.onCompleted: {
if(fileName.length > 30) {
running: true;
} else {
stop();
}
}
from: 0; to: -root.width; duration: 20000; loops: Animation.Infinite
}
Text {
x: root.width
text: fileTextBox.text
color: Material.color(Material.Grey)
font.pixelSize: Qt.application.font.pixelSize * 1.6
}
}
}
MouseArea {
anchors.fill: parent
z: 100
onClicked: {
console.log('onclicked ' + index+ " count "+list.count);
if (index == list.currentIndex) {
let fileUrl = folderModel.get(list.currentIndex, 'fileUrl') || folderModel.get(list.currentIndex, 'fileURL');
if (fileUrl && !folderModel.isFolder(list.currentIndex)) {
trainprogram_open_clicked(fileUrl);
popup.open()
} else {
folderModel.folder = fileURL
}
}
else {
if (list.currentItem)
list.currentItem.textColor = Material.color(Material.Grey)
list.currentIndex = index
}
}
}
}
}
highlight: Rectangle {
color: Material.color(Material.Green)
z:3
radius: 5
opacity: 0.4
focus: true
}
focus: true
onCurrentItemChanged: {
let fileUrl = folderModel.get(list.currentIndex, 'fileUrl') || folderModel.get(list.currentIndex, 'fileURL');
if (fileUrl) {
list.currentItem.textColor = Material.color(Material.Yellow)
console.log(fileUrl + ' selected');
trainprogram_preview(fileUrl)
}
}
Component.onCompleted: {
}
}
}
ScrollView {
anchors.top: parent.top
ScrollBar.vertical.policy: ScrollBar.AlwaysOn
//contentHeight: map.height
Layout.preferredHeight: parent.height
Layout.fillWidth: true
Layout.fillHeight: true
Layout.minimumWidth: 100
Layout.preferredWidth: 200
Row {
id: row
anchors.fill: parent
Text {
id: distance
width: parent.width
text: rootItem.previewWorkoutDescription
font.pixelSize: 16
color: "white"
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
anchors.horizontalCenter: parent.horizontalCenter
}
Plugin {
id: osmMapPlugin
name: "osm"
PluginParameter { name: "osm.useragent"; value: "QZ Fitness" }
}
Map {
height: parent.height - distance.height
width: parent.width
id: map
anchors.top: distance.bottom
plugin: osmMapPlugin
zoomLevel: 14
center: pathController.center
visible: true
MapPolyline {
id: pl
line.width: 3
line.color: 'red'
}
Component.onCompleted: {
console.log("Dimensions: ", width, height)
}
}
function loadPath(){
var lines = []
var elevationGain = 0
var offsetElevation = 0
for(var i = 0; i < pathController.geopath.size(); i++){
if(i > 0 && pathController.geopath.coordinateAt(i).altitude > pathController.geopath.coordinateAt(i-1).altitude)
elevationGain = elevationGain + (pathController.geopath.coordinateAt(i).altitude - pathController.geopath.coordinateAt(i-1).altitude)
lines[i] = pathController.geopath.coordinateAt(i)
}
distance.text = "Distance " + (pathController.geopath.length() / 1000.0).toFixed(1) + " km Elevation Gain: " + elevationGain.toFixed(1) + " meters"
return lines;
}
Connections{
target: pathController
onGeopathChanged: {
pl.path = row.loadPath();
}
onCenterChanged: {
map.center = pathController.center;
}
}
Component.onCompleted: pl.path = loadPath()
}
}
}
Button {
id: searchButton
height: 50
width: parent.width
text: "Other folders"
Layout.alignment: Qt.AlignCenter | Qt.AlignVCenter
onClicked: {
console.log("folder is " + rootItem.getWritableAppDir() + 'gpx')
fileDialogTrainProgram.visible = true
}
anchors {
bottom: parent.bottom
}
}
}

44
src/GoogleMap.qml Normal file
View File

@@ -0,0 +1,44 @@
import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.15
import QtQuick.Controls.Material 2.0
import Qt.labs.settings 1.0
import QtWebView 1.1
ColumnLayout {
signal popupclose()
id: column1
spacing: 10
anchors.fill: parent
Settings {
id: settings
property string maps_type: "3D"
}
WebView {
id: webView
anchors.fill: parent
url: "http://localhost:" + settings.value("template_inner_QZWS_port") + "/" + (settings.value("maps_type") === "3D" ? "googlemaps" : "maps2d") + "/maps.htm"
visible: true
onLoadingChanged: {
if (loadRequest.errorString)
console.error(loadRequest.errorString);
}
}
Button {
id: closeButton
height: 50
width: parent.width
text: "Close"
Layout.alignment: Qt.AlignCenter | Qt.AlignVCenter
onClicked: {
popupclose();
}
anchors {
bottom: parent.bottom
}
}
Component.onCompleted: {
headerToolbar.visible = true;
}
}

View File

@@ -5,6 +5,7 @@ import QtGraphicalEffects 1.12
import QtQuick.Window 2.12
import Qt.labs.settings 1.0
import Qt.labs.platform 1.1
import QtMultimedia 5.15
HomeForm{
objectName: "home"
@@ -12,8 +13,10 @@ HomeForm{
signal stop_clicked;
signal lap_clicked;
signal peloton_start_workout;
signal peloton_abort_workout;
signal plus_clicked(string name)
signal minus_clicked(string name)
signal largeButton_clicked(string name)
Settings {
id: settings
@@ -26,7 +29,7 @@ HomeForm{
informativeText: "Do you want to follow the resistance? " + rootItem.pelotonProvider
buttons: (MessageDialog.Yes | MessageDialog.No)
onYesClicked: {rootItem.pelotonAskStart = false; peloton_start_workout();}
onNoClicked: rootItem.pelotonAskStart = false;
onNoClicked: {rootItem.pelotonAskStart = false; peloton_abort_workout();}
visible: rootItem.pelotonAskStart
}
@@ -65,8 +68,13 @@ HomeForm{
onTriggered: popupLap.close();
}
start.onClicked: { start_clicked(); }
stop.onClicked: {
Timer {
id: checkStartStopFromWeb
interval: 200; running: true; repeat: true
onTriggered: {if(rootItem.stopRequested) {rootItem.stopRequested = false; inner_stop(); }}
}
function inner_stop() {
stop_clicked();
rootItem.save_screenshot();
if(CHARTJS)
@@ -74,170 +82,253 @@ HomeForm{
else
stackView.push("ChartsEndWorkout.qml")
}
start.onClicked: { start_clicked(); }
stop.onClicked: {
inner_stop();
}
lap.onClicked: { lap_clicked(); popupLap.open(); popupLapAutoClose.running = true; }
Component.onCompleted: { console.log("completed"); }
GridView {
anchors.horizontalCenter: parent.horizontalCenter
anchors.fill: parent
cellWidth: 175 * settings.ui_zoom / 100
cellHeight: 130 * settings.ui_zoom / 100
focus: true
model: appModel
leftMargin: { if(OS_VERSION === "Android") (Screen.width % cellWidth) / 2; else (parent.width % cellWidth) / 2; }
anchors.topMargin: (!window.lockTiles ? rootItem.topBarHeight + 30 : 0)
id: gridView
objectName: "gridview"
onMovementEnded: { headerToolbar.visible = (contentY == 0) || window.lockTiles; }
Screen.orientationUpdateMask: Qt.LandscapeOrientation | Qt.PortraitOrientation
Screen.onPrimaryOrientationChanged:{
if(OS_VERSION === "Android")
gridView.leftMargin = (Screen.width % cellWidth) / 2;
else
gridView.leftMargin = (parent.width % cellWidth) / 2;
GridView {
anchors.horizontalCenter: parent.horizontalCenter
anchors.fill: parent
cellWidth: 175 * settings.ui_zoom / 100
cellHeight: 130 * settings.ui_zoom / 100
focus: true
model: appModel
leftMargin: { if(OS_VERSION === "Android") (Screen.width % cellWidth) / 2; else (parent.width % cellWidth) / 2; }
anchors.topMargin: (!window.lockTiles ? rootItem.topBarHeight + 30 : 0)
id: gridView
objectName: "gridview"
onMovementEnded: { headerToolbar.visible = (contentY == 0) || window.lockTiles; }
Screen.orientationUpdateMask: Qt.LandscapeOrientation | Qt.PortraitOrientation
Screen.onPrimaryOrientationChanged:{
if(OS_VERSION === "Android")
gridView.leftMargin = (Screen.width % cellWidth) / 2;
else
gridView.leftMargin = (parent.width % cellWidth) / 2;
}
// highlight: Rectangle {
// width: 150
// height: 150
// color: "lightsteelblue"
// }
delegate: Item {
id: id1
width: 170 * settings.ui_zoom / 100
height: 125 * settings.ui_zoom / 100
visible: visibleItem
Component.onCompleted: console.log("completed " + objectName)
Behavior on x {
enabled: id1.state != "active"
NumberAnimation { duration: 400; easing.type: Easing.OutBack }
}
Behavior on y {
enabled: id1.state != "active"
NumberAnimation { duration: 400; easing.type: Easing.OutBack }
}
SequentialAnimation on rotation {
NumberAnimation { to: 2; duration: 60 }
NumberAnimation { to: -2; duration: 120 }
NumberAnimation { to: 0; duration: 60 }
running: loc.currentId !== -1 && id1.state !== "active" && window.lockTiles
loops: Animation.Infinite; alwaysRunToEnd: true
}
states: State {
name: "active"; when: loc.currentId === gridId && window.lockTiles
PropertyChanges { target: id1; x: loc.mouseX - gridView.x - width/2; y: loc.mouseY - gridView.y - height/2; scale: 0.5; z: 10 }
}
transitions: Transition { NumberAnimation { property: "scale"; duration: 200} }
Rectangle {
width: 168 * settings.ui_zoom / 100
height: 123 * settings.ui_zoom / 100
radius: 3
border.width: 1
border.color: "purple"
color: Material.backgroundColor
id: rect
}
DropShadow {
anchors.fill: rect
cached: true
horizontalOffset: 3
verticalOffset: 3
radius: 8.0
samples: 16
color: Material.color(Material.Purple)
source: rect
}
Timer {
id: toggleIconTimer
interval: 500; running: true; repeat: true
onTriggered: { if(identificator === "inclination" && rootItem.autoInclinationEnabled()) myIcon.visible = !myIcon.visible; else myIcon.visible = true; }
}
Image {
id: myIcon
x: 5
anchors {
bottom: id1.bottom
}
width: 48 * settings.ui_zoom / 100
height: 48 * settings.ui_zoom / 100
source: icon
visible: !largeButton
}
Text {
objectName: "value"
id: myValue
color: valueFontColor
y: 0
anchors {
horizontalCenter: parent.horizontalCenter
}
text: value
horizontalAlignment: Text.AlignHCenter
font.pointSize: valueFontSize * settings.ui_zoom / 100
font.bold: true
visible: !largeButton
}
Text {
objectName: "secondLine"
id: secondLineText
color: "white"
y: myValue.bottom
anchors {
top: myValue.bottom
horizontalCenter: parent.horizontalCenter
}
text: secondLine
horizontalAlignment: Text.AlignHCenter
font.pointSize: 12 * settings.ui_zoom / 100
font.bold: false
visible: !largeButton
}
Text {
id: myText
anchors {
top: myIcon.top
}
font.bold: true
font.pointSize: labelFontSize
color: "white"
text: name
anchors.left: parent.left
anchors.leftMargin: 55 * settings.ui_zoom / 100
anchors.topMargin: 20 * settings.ui_zoom / 100
visible: !largeButton
}
RoundButton {
objectName: minusName
autoRepeat: true
text: "-"
onClicked: minus_clicked(objectName)
visible: writable && !largeButton
anchors.top: myValue.top
anchors.left: parent.left
anchors.leftMargin: 2
width: 48 * settings.ui_zoom / 100
height: 48 * settings.ui_zoom / 100
}
RoundButton {
autoRepeat: true
objectName: plusName
text: "+"
onClicked: plus_clicked(objectName)
visible: writable && !largeButton
anchors.top: myValue.top
anchors.right: parent.right
anchors.rightMargin: 2
width: 48 * settings.ui_zoom / 100
height: 48 * settings.ui_zoom / 100
}
RoundButton {
autoRepeat: true
objectName: identificator
text: largeButtonLabel
onClicked: largeButton_clicked(objectName)
visible: largeButton
anchors.fill: rect
background: Rectangle {
color: largeButtonColor
radius: 20
}
font.pointSize: 20 * settings.ui_zoom / 100
//width: 48 * settings.ui_zoom / 100
//height: 48 * settings.ui_zoom / 100
}
/*MouseArea {
anchors.fill: parent
onClicked: parent.GridView.view.currentIndex = index
}*/
}
}
// highlight: Rectangle {
// width: 150
// height: 150
// color: "lightsteelblue"
// }
delegate: Item {
id: id1
width: 170 * settings.ui_zoom / 100
height: 125 * settings.ui_zoom / 100
visible: visibleItem
Component.onCompleted: console.log("completed " + objectName)
Behavior on x {
enabled: id1.state != "active"
NumberAnimation { duration: 400; easing.type: Easing.OutBack }
}
Behavior on y {
enabled: id1.state != "active"
NumberAnimation { duration: 400; easing.type: Easing.OutBack }
}
SequentialAnimation on rotation {
NumberAnimation { to: 2; duration: 60 }
NumberAnimation { to: -2; duration: 120 }
NumberAnimation { to: 0; duration: 60 }
running: loc.currentId !== -1 && id1.state !== "active" && window.lockTiles
loops: Animation.Infinite; alwaysRunToEnd: true
}
states: State {
name: "active"; when: loc.currentId === gridId && window.lockTiles
PropertyChanges { target: id1; x: loc.mouseX - gridView.x - width/2; y: loc.mouseY - gridView.y - height/2; scale: 0.5; z: 10 }
}
transitions: Transition { NumberAnimation { property: "scale"; duration: 200} }
footer:
Rectangle {
width: 168 * settings.ui_zoom / 100
height: 123 * settings.ui_zoom / 100
radius: 3
border.width: 1
border.color: "purple"
color: Material.backgroundColor
id: rect
}
objectName: "footerrectangle"
visible: rootItem.videoVisible
anchors.top: gridView.bottom
width: parent.width
height: parent.height / 2
DropShadow {
anchors.fill: rect
cached: true
horizontalOffset: 3
verticalOffset: 3
radius: 8.0
samples: 16
color: Material.color(Material.Purple)
source: rect
}
Timer {
id: pauseTimer
interval: 1000; running: true; repeat: true
onTriggered: { if(visible == true) { (rootItem.currentSpeed > 0 ?
videoPlaybackHalf.play() :
videoPlaybackHalf.pause()) } }
}
Image {
id: myIcon
x: 5
anchors {
bottom: id1.bottom
}
width: 48 * settings.ui_zoom / 100
height: 48 * settings.ui_zoom / 100
source: icon
}
Text {
objectName: "value"
id: myValue
color: valueFontColor
y: 0
anchors {
horizontalCenter: parent.horizontalCenter
}
text: value
horizontalAlignment: Text.AlignHCenter
font.pointSize: valueFontSize * settings.ui_zoom / 100
font.bold: true
}
Text {
objectName: "secondLine"
id: secondLineText
color: "white"
y: myValue.bottom
anchors {
top: myValue.bottom
horizontalCenter: parent.horizontalCenter
}
text: secondLine
horizontalAlignment: Text.AlignHCenter
font.pointSize: 12 * settings.ui_zoom / 100
font.bold: false
}
Text {
id: myText
anchors {
top: myIcon.top
}
font.bold: true
font.pointSize: labelFontSize
color: "white"
text: name
anchors.left: parent.left
anchors.leftMargin: 55 * settings.ui_zoom / 100
anchors.topMargin: 20 * settings.ui_zoom / 100
}
RoundButton {
objectName: minusName
autoRepeat: true
text: "-"
onClicked: minus_clicked(objectName)
visible: writable
anchors.top: myValue.top
anchors.left: parent.left
anchors.leftMargin: 2
width: 48 * settings.ui_zoom / 100
height: 48 * settings.ui_zoom / 100
}
RoundButton {
autoRepeat: true
objectName: plusName
text: "+"
onClicked: plus_clicked(objectName)
visible: writable
anchors.top: myValue.top
anchors.right: parent.right
anchors.rightMargin: 2
width: 48 * settings.ui_zoom / 100
height: 48 * settings.ui_zoom / 100
}
onVisibleChanged: {
if(visible === true) {
console.log("mediaPlayer onCompleted: " + rootItem.videoPath)
console.log("videoRate: " + rootItem.videoRate)
videoPlaybackHalf.source = rootItem.videoPath
//videoPlaybackHalf.playbackRate = rootItem.videoRate
/*MouseArea {
anchors.fill: parent
onClicked: parent.GridView.view.currentIndex = index
}*/
}
}
videoPlaybackHalf.seek(rootItem.videoPosition)
videoPlaybackHalf.play()
videoPlaybackHalf.muted = true
} else {
videoPlaybackHalf.stop()
}
}
MediaPlayer {
id: videoPlaybackHalf
objectName: "videoplaybackhalf"
autoPlay: false
playbackRate: rootItem.videoRate
onError: {
if (videoPlaybackHalf.NoError !== error) {
console.log("[qmlvideo] VideoItem.onError error " + error + " errorString " + errorString)
}
}
}
VideoOutput {
id:videoPlayer
anchors.fill: parent
source: videoPlaybackHalf
}
}
MouseArea {
property int currentId: -1 // Original position in model

View File

@@ -5,7 +5,7 @@ import QtGraphicalEffects 1.12
Page {
title: qsTr("qDomyos-Zwift")
title: qsTr("QZ Fitness")
id: page
property alias start: start
@@ -157,7 +157,7 @@ Page {
width: parent.width
anchors.top: row1.bottom
anchors.topMargin: 30
text: "This app should automatically connects to your bike/treadmill. <b>If it doesn't, please check</b>:<br>1) your Echelon/Domyos App MUST be closed while qdomyos-zwift is running;<br>2) bluetooth and bluetooth permission MUST be on<br>3) your bike/treadmill should be turned on BEFORE starting this app<br>4) try to restart your device<br><br>If your bike/treadmill disconnects every 30 seconds try to disable the 'virtual device' setting on the left bar.<br><br>In case of issue, please, feel free to contact me to roberto.viola83@gmail.com.<br><br><b>Have a nice ride!</b><br>Roberto Viola"
text: "This app should automatically connect to your bike/treadmill/rower. <b>If it doesn't, please check</b>:<br>1) your Echelon/Domyos App MUST be closed while qdomyos-zwift is running;<br>2) bluetooth and bluetooth permission MUST be on<br>3) your bike/treadmill/rower should be turned on BEFORE starting this app<br>4) try to restart your device<br><br>If your bike/treadmill disconnects every 30 seconds try to disable the 'virtual device' setting on the left bar.<br><br>In case of issues, please feel free to contact me at roberto.viola83@gmail.com.<br><br><b>Have a nice ride!</b><br/ ><i>QZ specifically disclaims liability for<br>incidental or consequential damages and assumes<br>no responsibility or liability for any loss<br>or damage suffered by any person as a result of<br>the use or misuse of the app.</i><br><br>Roberto Viola"
wrapMode: Label.WordWrap
visible: rootItem.labelHelp
}

57
src/NewPageElement.qml Normal file
View File

@@ -0,0 +1,57 @@
import QtQuick 2.7
import QtQuick.Layouts 1.3
ColumnLayout {
id: rootElement
property bool isOpen: false
property string title: ""
property alias color: accordionHeader.color
property alias textColor: accordionText.color
property alias textFont: accordionText.font.family
property alias textFontSize: accordionText.font.pixelSize
property alias indicatRectColor: indicatRect.color
property string accordionContent: ""
spacing: 0
Layout.fillWidth: true;
Rectangle {
id: accordionHeader
color: "red"
Layout.alignment: Qt.AlignTop
Layout.fillWidth: true;
height: 48
Rectangle{
id:indicatRect
x: 16; y: 20
width: 8; height: 8
radius: 8
color: "white"
}
Text {
id: accordionText
x:34;y:13
color: "#FFFFFF"
text: rootElement.title
}
Text {
y:13
anchors.right: parent.right
anchors.rightMargin: 20
width: 30; height: 30
id: indicatImg
text: ">"
font.pixelSize: 24
color: "white"
}
MouseArea {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onClicked: {
stackView.push(accordionContent)
}
}
}
}

39
src/PathController.cpp Normal file
View File

@@ -0,0 +1,39 @@
#include <wobjectimpl.h>
#include "PathController.h"
#include <QtDebug>
W_OBJECT_IMPL(PathController)
PathController::PathController(QObject *parent)
: QObject(parent)
{
QGeoPositionInfoSource *source = QGeoPositionInfoSource::createDefaultSource(this);
if (source) {
auto sourceName = source->sourceName();
auto objectName = source->objectName();
qDebug() << "Found QGeoPositionInfoSource: sourceName:" << sourceName
<< ", objectName:"<<objectName;
QGeoCoordinate const coordinate = source->lastKnownPosition().coordinate();
if(coordinate.isValid()) {
this->setCenter(coordinate);
} else {
// This has been known to happen.
// The Trixter X-Dream V1 bike using a Prolific PL2303HXA Serial to USB converter
// is identified by QGeoPositionInfoSource in Qt 5.15.2 as a source, but it delivers
// invalid data.
qDebug() << "Last known coordinate was not valid. Ignoring device.";
delete source;
}
}
}

52
src/PathController.h Normal file
View File

@@ -0,0 +1,52 @@
#ifndef APPLICATION_PATHCONTROLLER_H
#define APPLICATION_PATHCONTROLLER_H
#include <wobjectdefs.h>
#include <QGeoPath>
#include <QGeoPositionInfoSource>
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
class PathController : public QObject {
// Q_OBJECT
W_OBJECT(PathController)
public:
PathController(QObject *parent = 0);
QGeoPath geoPath() const { return mGeoPath; }
void setGeoPath(const QGeoPath &geoPath) {
if (geoPath == mGeoPath) {
return;
}
mGeoPath = geoPath;
emit geopathChanged();
}
void geopathChanged() W_SIGNAL(geopathChanged)
QGeoCoordinate center() const {
return mCenter;
}
void setCenter(const QGeoCoordinate &center) {
if (center == mCenter) {
return;
}
mCenter = center;
emit centerChanged();
}
void centerChanged() W_SIGNAL(centerChanged)
private : QGeoPath mGeoPath;
QGeoCoordinate mCenter;
W_PROPERTY(QGeoPath, geopath READ geoPath WRITE setGeoPath NOTIFY geopathChanged)
W_PROPERTY(QGeoCoordinate, center READ center WRITE setCenter NOTIFY centerChanged)
};
#endif // APPLICATION_PATHCONTROLLER_H

View File

@@ -37,6 +37,7 @@ ColumnLayout {
folder: "file://" + rootItem.getWritableAppDir() + 'settings'
showDotAndDotDot: false
showDirs: true
sortReversed: true
}
model: folderModel
delegate: Component {

129
src/SimpleButton.qml Normal file
View File

@@ -0,0 +1,129 @@
/****************************************************************************
**
** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** BSD License Usage
** Alternatively, you may use this file under the terms of the BSD license
** as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of The Qt Company Ltd nor the names of its
** contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.7
Item {
id: button
property string text: ""
property color buttonColor: "white"
property color textColor: "black"
property bool available: true
property alias fontPointSize: buttonText.font.pointSize
signal clicked()
state: "NORMAL"
Rectangle {
id: buttonRect
anchors.fill: parent
radius: 10
color: buttonColor
visible: button.available
Text {
id: buttonText
anchors.fill: parent
anchors.rightMargin: parent.width * 0.05
anchors.leftMargin: parent.width * 0.05
anchors.bottomMargin: parent.height * 0.20
anchors.topMargin: parent.height * 0.20
text: button.text
color: textColor
fontSizeMode: Text.Fit
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
minimumPointSize: 8
font.pointSize: 64
font.family: "Helvetica"
font.weight: Font.Light
}
}
MouseArea {
anchors.fill: parent
onClicked: {
button.clicked();
}
onPressed: {
button.state = "PRESSED";
}
onReleased: {
button.state = "NORMAL";
}
}
states: [
State {
name: "NORMAL"
PropertyChanges {
target: buttonRect
color: button.buttonColor
border.color: "transparent"
}
PropertyChanges {
target: buttonText
color: button.textColor
}
},
State {
name: "PRESSED"
PropertyChanges {
target: buttonRect
color: "transparent"
border.color: button.buttonColor
}
PropertyChanges {
target: buttonText
color: button.buttonColor
}
}
]
}

185
src/SwagBagItem.qml Normal file
View File

@@ -0,0 +1,185 @@
/****************************************************************************
**
** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** BSD License Usage
** Alternatively, you may use this file under the terms of the BSD license
** as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of The Qt Company Ltd nor the names of its
** contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.7
import QtQuick.Controls 2.15
import org.cagnulein.qdomyoszwift 1.0
Rectangle {
id: storeItem
property Product product: undefined
state: "NORMAL"
visible: product.status == Product.Registered
radius: 10
color: "white"
height: titleText.contentHeight + descriptionText.contentHeight + 2
// ![0]
Text {
id: titleText
text: product.title
font.bold: true
anchors.right: priceText.left
anchors.top: parent.top
anchors.left: parent.left
}
Text {
id: descriptionText
text: product.description
anchors.right: priceText.left
anchors.left: parent.left
anchors.top: titleText.bottom
wrapMode: Text.WordWrap
}
Text {
id: priceText
text: product.price
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
}
MouseArea {
anchors.fill: parent
onClicked: {
pendingRect.visible = true;
spinBox.visible = true;
statusText.text = "Purchasing...";
storeItem.state = "PURCHASING";
product.purchase();
}
onPressed: {
storeItem.state = "PRESSED";
}
onReleased: {
storeItem.state = "NORMAL";
}
}
// ![0]
Rectangle {
id: pendingRect
anchors.fill: parent
opacity: 0.0
color: "white"
radius: parent.radius
Text {
id: statusText
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.right: spinBox.left
verticalAlignment: Text.AlignVCenter
}
BusyIndicator {
id: spinBox
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.right: parent.right
width: height
}
Connections {
target: product
function onPurchaseSucceeded() {
statusText.text = "Purchase Succeeded";
spinBox.visible = false;
}
function onPurchaseFailed() {
statusText.text = "Purchase Failed";
spinBox.visible = false;
storeItem.state = "NORMAL";
}
}
}
states: [
State {
name: "NORMAL"
PropertyChanges {
target: storeItem
color: "white"
border.color: "transparent"
}
PropertyChanges {
target: pendingRect
opacity: 0.0
}
},
State {
name: "PRESSED"
PropertyChanges {
target: storeItem
color: "transparent"
border.color: "white"
}
},
State {
name: "PURCHASING"
PropertyChanges {
target: pendingRect
opacity: 1.0
}
}
]
transitions: [
Transition {
from: "PURCHASING"
to: "NORMAL"
NumberAnimation { target: pendingRect; property: "opacity"; duration: 2000; easing.type: Easing.InExpo }
}
]
}

107
src/SwagBagView.qml Normal file
View File

@@ -0,0 +1,107 @@
/****************************************************************************
**
** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** BSD License Usage
** Alternatively, you may use this file under the terms of the BSD license
** as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of The Qt Company Ltd nor the names of its
** contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.7
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.3
import org.cagnulein.qdomyoszwift 1.0
Item {
Text {
padding: 5
id: description
width: parent.width
anchors.horizontalCenter: parent.horizontalCenter
color: "white"
font.pointSize: 22
wrapMode: TextArea.Wrap
text: qsTr("Hi! Do you know that QZ is just an Open Source Indie App?<br><br>No Big Companies are running this!<br>The \"Swag Bag\" is a way to support the ongoing development, maintenance and support of QZ Fitness!")
}
Column {
//anchors.top: description.bottom + 10
anchors.top: description.bottom
//anchors.bottom: restoreButton.top
anchors.right: parent.right
anchors.left: parent.left
id: itemSwagBag
SwagBagItem {
product: productUnlockVowels
width: parent.width
}
}
Text {
anchors {
top: itemSwagBag.bottom
horizontalCenter: parent.horizontalCenter
}
padding: 5
id: appleDescription
width: parent.width
color: "white"
font.pointSize: 8
wrapMode: TextArea.Wrap
text: qsTr("<html><style type='text/css'></style>Swag bag feature:<br>• an auto-renewable subscription<br>• 1 month ($1.99)<br>• Your subscription will be charged to your iTunes account at confirmation of purchase and will automatically renew (at the duration selected) unless auto-renew is turned off at least 24 hours before the end of the current period.<br>• Current subscription may not be cancelled during the active subscription period; however, you can manage your subscription and/or turn off auto-renewal by visiting your iTunes Account Settings after purchase.<br>• Privacy policy: <a href='https://robertoviola.cloud/privacy-policy-qdomyos-zwift/'>https://robertoviola.cloud/privacy-policy-qdomyos-zwift/</a><br>• Licensed Application end user license agreement: <a href='https://www.apple.com/legal/internet-services/itunes/dev/stdeula/'>https://www.apple.com/legal/internet-services/itunes/dev/stdeula/</a><br></html>")
onLinkActivated: Qt.openUrlExternally(link)
}
/*Button {
id: restoreButton
anchors.bottom: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width * .5
text: "Restore Purchases"
onClicked: {
console.log("restoring...");
iapStore.restorePurchases();
}
}*/
}

View File

@@ -32,7 +32,7 @@ ColumnLayout {
horizontalAlignment: Text.AlignRight
Layout.fillHeight: false
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
inputMethodHints: Qt.ImhFormattedNumbersOnly
//inputMethodHints: Qt.ImhFormattedNumbersOnly
onAccepted: hostRow.doSaveHost(text)
}
Button {

View File

@@ -4,9 +4,12 @@ import QtQuick.Layouts 1.3
import QtQuick.Controls 2.15
import QtQuick.Controls.Material 2.0
import QtQuick.Dialogs 1.0
import QtCharts 2.2
import Qt.labs.settings 1.0
ColumnLayout {
signal trainprogram_open_clicked(url name)
signal trainprogram_preview(url name)
FileDialog {
id: fileDialogTrainProgram
title: "Please choose a file"
@@ -22,21 +25,65 @@ ColumnLayout {
}
}
AccordionElement {
title: qsTr("Application Training folder")
indicatRectColor: Material.color(Material.Grey)
textColor: Material.color(Material.Grey)
color: Material.backgroundColor
accordionContent: ColumnLayout {
RowLayout{
spacing: 2
anchors.top: parent.top
anchors.fill: parent
ColumnLayout {
spacing: 0
anchors.top: parent.top
anchors.fill: parent
Row
{
spacing: 5
Text
{
text:"Filter"
color: "white"
verticalAlignment: Text.AlignVCenter
}
TextField
{
function updateFilter()
{
var text = filterField.text
var filter = "*"
for(var i = 0; i<text.length; i++)
filter+= "[%1%2]".arg(text[i].toUpperCase()).arg(text[i].toLowerCase())
filter+="*"
print(filter)
folderModel.nameFilters = [filter + ".zwo", filter + ".xml"]
}
id: filterField
onTextChanged: updateFilter()
}
Button {
anchors.left: mainRect.right
anchors.leftMargin: 5
text: "←"
onClicked: folderModel.folder = folderModel.parentFolder
}
}
ListView {
Layout.fillWidth: true
Layout.minimumWidth: 50
Layout.preferredWidth: 100
Layout.maximumWidth: row.left
Layout.minimumHeight: 150
Layout.preferredHeight: parent.height
ScrollBar.vertical: ScrollBar {}
id: list
anchors.fill: parent
FolderListModel {
id: folderModel
nameFilters: ["*.xml", "*.zwo"]
folder: "file://" + rootItem.getWritableAppDir() + 'training'
showDotAndDotDot: false
showDotAndDotDot: false
showDirs: true
sortField: "Name"
showDirsFirst: true
}
model: folderModel
delegate: Component {
@@ -44,13 +91,37 @@ ColumnLayout {
property alias textColor: fileTextBox.color
width: parent.width
height: 40
color: Material.backgroundColor
color: Material.backgroundColor
z: 1
Text {
id: fileTextBox
color: Material.color(Material.Grey)
font.pixelSize: Qt.application.font.pixelSize * 1.6
text: fileName.substring(0, fileName.length-4)
Item {
id: root
property alias text: fileTextBox.text
property int spacing: 30
width: fileTextBox.width + spacing
height: fileTextBox.height
clip: true
Text {
id: fileTextBox
color: (!folderModel.isFolder(index)?Material.color(Material.Grey):Material.color(Material.Orange))
font.pixelSize: Qt.application.font.pixelSize * 1.6
text: fileName.substring(0, fileName.length-4)
NumberAnimation on x {
Component.onCompleted: {
if(fileName.length > 30) {
running: true;
} else {
stop();
}
}
from: 0; to: -root.width; duration: 20000; loops: Animation.Infinite
}
Text {
x: root.width
text: fileTextBox.text
color: Material.color(Material.Grey)
font.pixelSize: Qt.application.font.pixelSize * 1.6
}
}
}
MouseArea {
anchors.fill: parent
@@ -59,10 +130,12 @@ ColumnLayout {
console.log('onclicked ' + index+ " count "+list.count);
if (index == list.currentIndex) {
let fileUrl = folderModel.get(list.currentIndex, 'fileUrl') || folderModel.get(list.currentIndex, 'fileURL');
if (fileUrl) {
if (fileUrl && !folderModel.isFolder(list.currentIndex)) {
trainprogram_open_clicked(fileUrl);
popup.open()
}
} else {
folderModel.folder = fileURL
}
}
else {
if (list.currentItem)
@@ -91,14 +164,124 @@ ColumnLayout {
if (fileUrl) {
list.currentItem.textColor = Material.color(Material.Yellow)
console.log(fileUrl + ' selected');
trainprogram_preview(fileUrl)
powerSeries.clear();
for(var i=0;i<rootItem.preview_workout_points;i+=10)
{
powerSeries.append(i * 1000, rootItem.preview_workout_watt[i]);
}
rootItem.update_chart_power(powerChart);
//trainprogram_open_clicked(fileUrl);
//popup.open()
}
}
Component.onCompleted: {
}
}
}
ScrollView {
anchors.top: parent.top
ScrollBar.vertical.policy: ScrollBar.AlwaysOn
contentHeight: date.height + description.height + powerChart.height
Layout.preferredHeight: parent.height
Layout.fillWidth: true
Layout.minimumWidth: 100
Layout.preferredWidth: 200
property alias powerSeries: powerSeries
property alias powerChart: powerChart
Settings {
id: settings
property real ftp: 200.0
}
Row {
id: row
anchors.fill: parent
Text {
id: date
width: parent.width
text: rootItem.previewWorkoutDescription
font.pixelSize: 14
color: "white"
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
anchors.horizontalCenter: parent.horizontalCenter
}
Text {
anchors.top: date.bottom
id: description
width: parent.width
text: rootItem.previewWorkoutTags
font.pixelSize: 10
wrapMode: Text.WordWrap
color: "white"
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
anchors.horizontalCenter: parent.horizontalCenter
}
Item {
anchors.left: parent.left
anchors.right: parent.right
anchors.top: description.bottom
anchors.bottom: parent.bottom
ChartView {
id: powerChart
objectName: "powerChart"
antialiasing: true
legend.visible: false
height: 400
width: parent.width
title: "Power"
titleFont.pixelSize: 20
DateTimeAxis {
id: valueAxisX
tickCount: 7
min: new Date(0)
max: new Date(rootItem.preview_workout_points * 1000)
format: "mm:ss"
//labelsVisible: false
gridVisible: false
//lineVisible: false
labelsFont.pixelSize: 10
}
ValueAxis {
id: valueAxisY
min: 0
max: rootItem.wattMaxChart
//tickCount: 60
tickCount: 8
labelFormat: "%.0f"
//labelsVisible: false
//gridVisible: false
//lineVisible: false
labelsFont.pixelSize: 10
}
LineSeries {
//name: "Power"
id: powerSeries
visible: true
axisX: valueAxisX
axisY: valueAxisY
color: "black"
width: 1
}
}
}
}
}
}
spacing: 10
Button {
id: searchButton

205
src/WebEngineTest.qml Normal file
View File

@@ -0,0 +1,205 @@
import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.15
import QtQuick.Controls.Material 2.0
import Qt.labs.settings 1.0
import QtWebView 1.1
Item {
signal trainprogram_zwo_loaded(string s)
id: column1
// vedi trainprogram_open_clicked
Settings {
id: settings
}
Button {
id: loadButton
anchors.top: parent.top
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width
enabled: false
text: "Load"
height: Math.max(parent.height * 0.1, 50)
onClicked: {
console.log(webView.rr);
trainprogram_zwo_loaded(webView.rr);
//popupclose();
}
}
WebView {
id: webView
property var rr;
anchors.top: loadButton.bottom
anchors.bottom: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width
url: "https://whatsonzwift.com/workouts"
visible: true
onLoadingChanged: {
if (loadRequest.errorString)
console.error(loadRequest.errorString);
if (loadRequest.status == WebView.LoadSucceededStatus) {
console.error("Procedo");
let loadScr = `
let parsePace = function(s) {
let pace = 2;
if (s=='5k') pace = 1;
else if (s == 'HM') pace = 3;
else if (s == 'M') pace = 4;
return pace;
};
let parseDuration = function(txt) {
let re;
let objout = {
dur: 60,
repeat: 0,
durationType: null,
txt: txt
};
let dur = 60;
let repeat = 0;
if ((txt.indexOf('min') > 0 || txt.indexOf('sec') > 0) && (re = /([0-9]+x +)?([0-9]+min)? *([0-9]+sec)? +/.exec(txt.trim()))) {
let dd = 0;
objout.durationType = 'time';
objout.d_re = re;
for (let i = 1; i<re.length; i++) {
let trm1 = re[i];
if (!trm1) continue;
else if ((trm1 = trm1.trim()).endsWith('x')) {
objout.repeat = parseInt(re[i].substring(0, re[i].length - 1));
}
else if (trm1.endsWith('sec')) {
dd += parseInt(re[i].substring(0, re[i].length - 3));
}
else if (trm1.endsWith('min')) {
dd += parseInt(re[i].substring(0, re[i].length - 3)) * 60;
}
}
if (dd) objout.dur = dd;
objout.txt = txt.substring(re[0].length);
}
else if (re = /(?:([0-9]+)x +)?([0-9]+) +m +/.exec(txt)) {
objout.durationType = 'distance';
if (re[1]) {
objout.repeat = parseInt(re[1]);
}
objout.d_re = re;
objout.dur = parseInt(re[2]);
objout.txt = txt.substring(re[0].length);
}
return objout;
};
let processDOM = function() {
let outobj = {};
let div = document.querySelector('div.overview');
outobj.description = 'N/A';
if (div) {
let nextSibling = div.nextSibling;
while(nextSibling && (nextSibling.nodeType != 1 || nextSibling.tagName != 'P')) {
nextSibling = nextSibling.nextSibling;
}
if (nextSibling) outobj.description = nextSibling.innerText;
}
let durationType = null;
let gli = document.querySelector('h4.glyph-icon');
outobj.name = gli?gli.innerText:'N/A';
outobj.sportType = gli && gli.classList.contains('flaticon-run')?'run':'bike';
outobj.workout = [];
outobj.author = "whatsonzwift.com";
let wll = document.querySelector('.workoutlist');
let pace = null;
if (wll) {
let rexp = /(?:from +([0-9]+) +to +|@ +|)(?:[0-9]+rpm, +)?(?:([0-9]+)% +(?:of +(5k|10k|HM|M) +pace|FTP)|No Incline Walk)/; // fine idx = 2, pace idx = 3 inizio idx = 1
let tbs = wll.querySelectorAll('.textbar');
for (let i = 0; tbs && i<tbs.length; i++) {
let txt = tbs[i].innerText;
let elem = {};
elem.d_pretxt = txt;
let o = parseDuration(txt);
if (o.durationType) {
let dur = o.dur;
let repeat = o.repeat;
let OffDuration = -1;
let OffPower = -1;
let o2;
let re, re2;
elem.d_dur = o;
elem.d_posttxt = o.txt;
txt = o.txt;
if (re = rexp.exec(txt.trim())) {
elem.d_re = re;
let ln = re[0].length;
if (txt.length > ln && txt.charAt(ln) == ',' && (o2 = parseDuration(txt.substring(ln + 1))) && o2.durationType && (re2 = rexp.exec(o2.txt))) {
OffPower = parseInt(re2[2]);
OffDuration = o2.dur;
}
if (re[1]) {
if (i == 0) {
elem.type = "Warmup";
}
else if (i == tbs.length - 1) {
elem.type = "Cooldown";
}
else {
elem.type = "Ramp";
}
elem.Duration = o.dur;
elem.PowerLow = parseInt(re[1]) / 100.0;
elem.PowerHigh = parseInt(re[2]) / 100.0;
}
else if (OffPower >= 0 && OffDuration >= 0) {
elem.type = 'IntervalsT';
if (o.repeat) elem.Repeat = o.repeat; else elem.Repeat = 0;
elem.OnDuration = o.dur;
elem.OnPower = parseInt(re[2]) / 100.0;
elem.OffDuration = OffDuration;
elem.OffPower = OffPower / 100.0;
}
else {
elem.type = "SteadyState";
if (o.repeat) elem.Repeat = o.repeat; else elem.Repeat = 0;
elem.Duration = o.dur;
elem.Power = re[2]?parseInt(re[2]) / 100.0:0.5;
}
if (re[3]) pace = parsePace(re[3]);
if (pace) elem.pace = pace;
}
else if (txt == "free run" || txt == "free ride") {
elem.type = "FreeRide";
elem.Duration = o.dur;
}
if (durationType === null) {
outobj.durationType = o.durationType;
durationType = o.durationType;
}
}
if (elem) outobj.workout.push(elem);
}
}
return outobj;
};
let o = processDOM();
let res = JSON.stringify(o);
res
`;
webView.runJavaScript(loadScr, function(res) {
console.log("AHO1 " + res);
let ro = JSON.parse(res);
if (ro.name && ro.workout && ro.workout.length) {
console.log("AHO2 " + ro);
webView.rr = res;
loadButton.text = 'Load ' + ro.name;
loadButton.enabled = true;
}
});
}
}
}
Component.onCompleted: {
headerToolbar.visible = true;
webView.rr = 'ciao';
}
}

58
src/WebStravaAuth.qml Normal file
View File

@@ -0,0 +1,58 @@
import QtQuick 2.12
import QtQuick.Controls 2.5
import QtQuick.Controls.Material 2.12
import QtQuick.Dialogs 1.0
import QtGraphicalEffects 1.12
import Qt.labs.settings 1.0
import QtMultimedia 5.15
import QtQuick.Layouts 1.3
import QtWebView 1.1
Item {
anchors.fill: parent
height: parent.height
width: parent.width
visible: true
WebView {
anchors.fill: parent
height: parent.height
width: parent.width
visible: !rootItem.generalPopupVisible
url: rootItem.getStravaAuthUrl
}
Popup {
id: popupStravaConnectedWeb
parent: Overlay.overlay
enabled: rootItem.generalPopupVisible
onEnabledChanged: { if(rootItem.generalPopupVisible) popupStravaConnectedWeb.open() }
onClosed: { rootItem.generalPopupVisible = false; }
x: Math.round((parent.width - width) / 2)
y: Math.round((parent.height - height) / 2)
width: 380
height: 120
modal: true
focus: true
palette.text: "white"
closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutside
enter: Transition
{
NumberAnimation { property: "opacity"; from: 0.0; to: 1.0 }
}
exit: Transition
{
NumberAnimation { property: "opacity"; from: 1.0; to: 0.0 }
}
Column {
anchors.horizontalCenter: parent.horizontalCenter
Label {
anchors.horizontalCenter: parent.horizontalCenter
width: 370
height: 120
text: qsTr("Your Strava account is now connected!<br><br>When you will press STOP on QZ a file<br>will be automatically uploaded to Strava!")
}
}
}
}

View File

@@ -1,6 +1,5 @@
#include "activiotreadmill.h"
#include "activiotreadmill.h"
#include "ios/lockscreen.h"
#include "keepawakehelper.h"
#include "virtualtreadmill.h"
@@ -34,7 +33,7 @@ activiotreadmill::activiotreadmill(uint32_t pollDeviceTime, bool noConsole, bool
refresh->start(pollDeviceTime);
}
void activiotreadmill::writeCharacteristic(const QLowEnergyCharacteristic characteristc, uint8_t *data,
void activiotreadmill::writeCharacteristic(const QLowEnergyCharacteristic characteristic, uint8_t *data,
uint8_t data_len, const QString &info, bool disable_log,
bool wait_for_response) {
QEventLoop loop;
@@ -55,7 +54,7 @@ void activiotreadmill::writeCharacteristic(const QLowEnergyCharacteristic charac
return;
}
gattCommunicationChannelService->writeCharacteristic(characteristc, QByteArray((const char *)data, data_len));
gattCommunicationChannelService->writeCharacteristic(characteristic, QByteArray((const char *)data, data_len));
if (!disable_log) {
emit debug(QStringLiteral(" >> ") + QByteArray((const char *)data, data_len).toHex(' ') +
@@ -70,11 +69,66 @@ void activiotreadmill::writeCharacteristic(const QLowEnergyCharacteristic charac
}
void activiotreadmill::forceSpeed(double requestSpeed) {
QSettings settings;
uint8_t writeSpeed[] = {0x03, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00};
writeSpeed[1] = (requestSpeed * 10);
writeSpeed[5] += writeSpeed[1];
writeSpeed[6] = writeSpeed[1] + 1;
if(!settings.value(QZSettings::fitfiu_mc_v460, QZSettings::default_fitfiu_mc_v460).toBool())
writeSpeed[6] = writeSpeed[1] + 1;
else {
switch(writeSpeed[1] & 0x0F) {
case 0x00:
writeSpeed[6] = writeSpeed[1] + 5;
break;
case 0x01:
writeSpeed[6] = writeSpeed[1] + 3;
break;
case 0x02:
writeSpeed[6] = writeSpeed[1] + 1;
break;
case 0x03:
writeSpeed[6] = writeSpeed[1] - 1;
break;
case 0x04:
writeSpeed[6] = writeSpeed[1] + 5;
break;
case 0x05:
writeSpeed[6] = writeSpeed[1] + 3;
break;
case 0x06:
writeSpeed[6] = writeSpeed[1] + 1;
break;
case 0x07:
writeSpeed[6] = writeSpeed[1] - 1;
break;
case 0x08:
writeSpeed[6] = writeSpeed[1] + 5;
break;
case 0x09:
writeSpeed[6] = writeSpeed[1] + 3;
break;
case 0x0A:
writeSpeed[6] = writeSpeed[1] + 1;
break;
case 0x0B:
writeSpeed[6] = writeSpeed[1] - 1;
break;
case 0x0C:
writeSpeed[6] = writeSpeed[1] + 5;
break;
case 0x0D:
writeSpeed[6] = writeSpeed[1] + 3;
break;
case 0x0E:
writeSpeed[6] = writeSpeed[1] + 1;
break;
case 0x0F:
writeSpeed[6] = writeSpeed[1] - 1;
break;
}
}
writeCharacteristic(gattWriteCharacteristic, writeSpeed, sizeof(writeSpeed),
QStringLiteral("forceSpeed speed=") + QString::number(requestSpeed), false, false);
@@ -114,8 +168,8 @@ void activiotreadmill::update() {
QSettings settings;
// ******************************************* virtual treadmill init *************************************
if (!firstInit && !virtualTreadMill && !virtualBike) {
bool virtual_device_enabled = settings.value("virtual_device_enabled", true).toBool();
bool virtual_device_force_bike = settings.value("virtual_device_force_bike", false).toBool();
bool virtual_device_enabled = settings.value(QZSettings::virtual_device_enabled, QZSettings::default_virtual_device_enabled).toBool();
bool virtual_device_force_bike = settings.value(QZSettings::virtual_device_force_bike, QZSettings::default_virtual_device_force_bike).toBool();
if (virtual_device_enabled) {
if (!virtual_device_force_bike) {
debug("creating virtual treadmill interface...");
@@ -136,7 +190,7 @@ void activiotreadmill::update() {
// debug("Domyos Treadmill RSSI " + QString::number(bluetoothDevice.rssi()));
update_metrics(true, watts(settings.value(QStringLiteral("weight"), 75.0).toFloat()));
update_metrics(true, watts(settings.value(QZSettings::weight, QZSettings::default_weight).toFloat()));
{
if (requestSpeed != -1) {
@@ -146,13 +200,15 @@ void activiotreadmill::update() {
}
requestSpeed = -1;
}
if (requestInclination != -1) {
if (requestInclination != -100) {
if(requestInclination < 0)
requestInclination = 0;
if (requestInclination != currentInclination().value() && requestInclination >= 0 &&
requestInclination <= 15) {
emit debug(QStringLiteral("writing incline ") + QString::number(requestInclination));
forceIncline(requestInclination);
}
requestInclination = -1;
requestInclination = -100;
}
if (requestStart != -1) {
emit debug(QStringLiteral("starting..."));
@@ -226,7 +282,7 @@ void activiotreadmill::characteristicChanged(const QLowEnergyCharacteristic &cha
// qDebug() << "characteristicChanged" << characteristic.uuid() << newValue << newValue.length();
QSettings settings;
QString heartRateBeltName =
settings.value(QStringLiteral("heart_rate_belt_name"), QStringLiteral("Disabled")).toString();
settings.value(QZSettings::heart_rate_belt_name, QZSettings::default_heart_rate_belt_name).toString();
Q_UNUSED(characteristic);
QByteArray value = newValue;
@@ -240,12 +296,14 @@ void activiotreadmill::characteristicChanged(const QLowEnergyCharacteristic &cha
// lastState = value.at(0);
double speed = GetSpeedFromPacket(value);
double incline = GetInclinationFromPacket(value);
double incline = 1.0; // "fitfiu_mc_v460" has 1.0 fixed inclination
if(!settings.value(QZSettings::fitfiu_mc_v460, QZSettings::default_fitfiu_mc_v460).toBool())
incline = GetInclinationFromPacket(value);
// double kcal = GetKcalFromPacket(value);
// double distance = GetDistanceFromPacket(value);
#ifdef Q_OS_ANDROID
if (settings.value("ant_heart", false).toBool())
if (settings.value(QZSettings::ant_heart, QZSettings::default_ant_heart).toBool())
Heart = (uint8_t)KeepAwakeHelper::heart();
else
#endif
@@ -272,10 +330,10 @@ void activiotreadmill::characteristicChanged(const QLowEnergyCharacteristic &cha
}
if (!firstCharacteristicChanged) {
if (watts(settings.value(QStringLiteral("weight"), 75.0).toFloat()))
if (watts(settings.value(QZSettings::weight, QZSettings::default_weight).toFloat()))
KCal +=
((((0.048 * ((double)watts(settings.value(QStringLiteral("weight"), 75.0).toFloat())) + 1.19) *
settings.value(QStringLiteral("weight"), 75.0).toFloat() * 3.5) /
((((0.048 * ((double)watts(settings.value(QZSettings::weight, QZSettings::default_weight).toFloat())) + 1.19) *
settings.value(QZSettings::weight, QZSettings::default_weight).toFloat() * 3.5) /
200.0) /
(60000.0 / ((double)lastTimeCharacteristicChanged.msecsTo(
QDateTime::currentDateTime())))); //(( (0.048* Output in watts +1.19) * body weight in

View File

@@ -53,7 +53,7 @@ class activiotreadmill : public treadmill {
void forceSpeed(double requestSpeed);
void forceIncline(double requestIncline);
void btinit(bool startTape);
void writeCharacteristic(const QLowEnergyCharacteristic characteristc, uint8_t *data, uint8_t data_len,
void writeCharacteristic(const QLowEnergyCharacteristic characteristic, uint8_t *data, uint8_t data_len,
const QString &info, bool disable_log = false, bool wait_for_response = false);
void startDiscover();
bool noConsole = false;

Some files were not shown because too many files have changed in this diff Show More