Compare commits

...

516 Commits

Author SHA1 Message Date
Roberto Viola
a5565f5913 Update build_ios.yml 2021-07-27 16:09:14 +02:00
Roberto Viola
b4e41131a9 Create build_ios.yml 2021-07-27 16:07:40 +02:00
Roberto Viola
90b2188fe1 fixed minors on chartjs 2021-07-27 12:11:44 +02:00
Roberto Viola
677dd4a735 horizontreadmill calories fixed 2021-07-27 09:29:06 +02:00
Roberto Viola
2143281c00 forcing header toolbar visible when the chartjs popups 2021-07-26 08:08:10 +02:00
Roberto Viola
a2154a5d42 version 2.8.4 for iOS 2021-07-24 19:14:44 +02:00
Roberto Viola
11981729b1 flywheel life fitness ic8 2021-07-24 18:59:20 +02:00
Roberto Viola
a7fce387bd avgs on chartjs floored 2021-07-24 18:53:22 +02:00
Roberto Viola
870d392a1c added heart to virtualbike on iOS 2021-07-24 15:29:12 +02:00
Roberto Viola
9f2a223df5 fixed typo in the gears callback 2021-07-24 10:39:52 +02:00
Roberto Viola
69fdd79e50 AVG resistance and peloton resistance fixed for echelon bikes 2021-07-23 08:14:29 +02:00
Roberto Viola
f5fbbbf8e5 missing templates line in the bluetooth.cpp 2021-07-21 16:39:31 +02:00
Roberto Viola
e136cc520f fix on templateinfosenderbuilder.cpp 2021-07-21 10:30:24 +02:00
Roberto Viola
e71269b68b fix on templateinfosenderbuilder.cpp 2021-07-21 10:13:39 +02:00
Roberto Viola
cac547a136 echelonconnectsport mgarcea watt table updated 2021-07-21 08:01:37 +02:00
Roberto Viola
7d5310395d Merge pull request #406 from cagnulein/chartjs
Chartjs
2021-07-20 16:50:23 +02:00
Roberto Viola
b4d6921058 added wattTable_mgarcea to echelonconnectsport 2021-07-20 16:49:27 +02:00
Roberto Viola
bfe7c62e07 debug log file removed temporarily 2021-07-20 12:26:48 +02:00
Roberto Viola
a7ff674621 fixed wattage to zone 1 invisible in the charts 2021-07-20 08:20:14 +02:00
Roberto Viola
b4aa37da0d Merge branch 'chartjs' of https://github.com/cagnulein/qdomyos-zwift into chartjs 2021-07-20 08:16:19 +02:00
Roberto Viola
92c9e5ef9c gears plus event restored from a wrong merge 2021-07-20 08:16:10 +02:00
Roberto Viola
1d3077530d iOS build fixed 2021-07-20 08:15:18 +02:00
Roberto Viola
c043fe2ea1 fixed loading spinner 2021-07-19 20:12:28 +02:00
Roberto Viola
5549685e9c restarting training program only if the user come from a full stop 2021-07-19 16:12:31 +02:00
Roberto Viola
a246c9aee5 scale y max for watt chart 2021-07-19 15:10:45 +02:00
Roberto Viola
c5d064c993 added minutes::seconds to power distribution chart 2021-07-19 15:02:59 +02:00
Roberto Viola
c40a559ebb Merge branch 'master' into chartjs 2021-07-19 14:22:01 +02:00
Roberto Viola
2eda4b2261 debug file works in the email! 2021-07-19 14:18:38 +02:00
Roberto Viola
92e34178ce added signal for workoutname & friends to homeform to
templateinfosenderbuilder. also added the ability to send the debug log
file via email (not tested) #405
2021-07-19 11:26:54 +02:00
Roberto Viola
b5656f67a9 chartjs titles and some labels under the charts 2021-07-19 09:52:51 +02:00
Roberto Viola
3030428313 reverting ios rotation issue (single column on iphone 6) 2021-07-18 17:28:50 +02:00
Roberto Viola
daa7f4e409 fixing chartjs for cadence as a bike 2021-07-18 17:28:14 +02:00
Roberto Viola
0e3814cde3 added the ajax loader 2021-07-18 16:32:15 +02:00
Roberto Viola
3a6560c32d heartrate error fixed on ios and fixed stupid js issue 2021-07-18 16:24:50 +02:00
Roberto Viola
f01b961725 savescreenshot for charts must be a single shot 2021-07-18 15:36:40 +02:00
Roberto Viola
dfc71b7218 added inclination tag for treadmill 2021-07-18 15:12:18 +02:00
Roberto Viola
2f390f5fc4 add spinner loader and fixed 0 tick on some charts 2021-07-18 15:12:04 +02:00
Roberto Viola
86e972a455 fixed HR on charths 2021-07-18 10:21:19 +02:00
Roberto Viola
b858e7bc7a screenshot fixed, scales on X fixed, disabled interpolation for more
details
2021-07-18 09:51:01 +02:00
Roberto Viola
f3f60155f3 Merge pull request #403 from p3g4asus/ChartTemplate2
Allowing 2 or more instances of TemplateInfoSenderBuilder
2021-07-17 18:21:24 +02:00
Matteo Federico Zazzetta
c4155dc754 Removed Unneeded Test file 2021-07-17 17:47:43 +02:00
Matteo Federico Zazzetta
f14f86d0c9 Changing external template folder (Download folder is no more OK in Android 11). Now external templates in Android have to be placed in /sorage/emulated/0/Android/data/org.cagnulen.qdomyoszwift/files/QZTemplates.
Removing unused READ_EXTERNAL_STORAGE permission that is not needed anymore
2021-07-17 17:35:05 +02:00
Matteo Federico Zazzetta
4975b9feae Fixed including unnecessary files 2021-07-17 13:24:14 +02:00
Matteo Federico Zazzetta
f16d59b282 Remove Node Modules from Commit 2021-07-17 13:19:53 +02:00
Matteo Federico Zazzetta
efcb51b2be Fully integrating charts template with multi instance TemplateInfoSenderBuilder 2021-07-17 13:16:26 +02:00
Matteo Federico Zazzetta
b1c14be958 Merge remote-tracking branch 'remotes/cagnu/chartjs' into chartjs 2021-07-17 11:20:53 +02:00
Matteo Federico Zazzetta
7f57b8281c Merge remote-tracking branch 'remotes/cagnu/chartjs' into chartjs 2021-07-17 11:19:15 +02:00
Matteo Federico Zazzetta
63b8028bca Allowing multiple instances of TemplateInfoSenderBuilder and random port for web server 2021-07-17 10:59:43 +02:00
Roberto Viola
d0de5b9aa9 fixed logo on iOS 2021-07-17 10:52:23 +02:00
Roberto Viola
81334fb13b fixed chartjs onStopClicked 2021-07-17 10:37:36 +02:00
Roberto Viola
838252ccc0 test ifdef removed 2021-07-17 10:23:37 +02:00
Roberto Viola
a398a46680 cadence and speed charts added 2021-07-17 10:14:57 +02:00
Roberto Viola
8e7c3f352d added req cadence on the charts 2021-07-16 18:49:03 +02:00
Roberto Viola
126b23e4a3 power distribution chart and other improvements! 2021-07-16 18:37:39 +02:00
Roberto Viola
cac7ea79bd Merge branch 'chartjs' of https://github.com/cagnulein/qdomyos-zwift into chartjs 2021-07-16 14:54:04 +02:00
Roberto Viola
14c7679965 fix backcompatibility to the old fashion charts system 2021-07-16 14:52:30 +02:00
Roberto Viola
36260ee130 added js files to qml 2021-07-16 13:02:48 +02:00
Roberto Viola
1ac2118813 Merge branch 'chartjs' of https://github.com/cagnulein/qdomyos-zwift into chartjs 2021-07-16 11:45:50 +02:00
Roberto Viola
b58bfe67b1 chartjs moment adapter added 2021-07-16 11:45:41 +02:00
Roberto Viola
c7bd4ca848 Merge branch 'chartjs' of https://github.com/cagnulein/qdomyos-zwift into chartjs 2021-07-16 11:44:05 +02:00
Roberto Viola
23bac30309 moment.js added 2021-07-16 11:43:51 +02:00
Roberto Viola
8d2b9dde08 resize observer and jquery added locally 2021-07-16 11:38:18 +02:00
Roberto Viola
dfb23aba50 build issue fixed #402 2021-07-16 11:17:54 +02:00
Roberto Viola
4e10950c39 Magnetic days added #403 2021-07-16 11:13:49 +02:00
Roberto Viola
966e09a284 peloton test even on scheduled workflow 2021-07-15 16:39:25 +02:00
Roberto Viola
982833642b keeping the compatibility with QtCharts 2021-07-15 16:36:59 +02:00
Roberto Viola
0613a9f690 screenshots saved correctly! 2021-07-15 15:52:08 +02:00
Roberto Viola
b77b81590d trying to save screenshot from chart js (untested) 2021-07-15 14:51:24 +02:00
Roberto Viola
53a62e02b1 peloton resistance chart added 2021-07-15 12:13:44 +02:00
Roberto Viola
6f31e657db segments coloring fixed 2021-07-15 12:02:27 +02:00
Roberto Viola
4d01f534db legends removed 2021-07-15 11:55:55 +02:00
Roberto Viola
24eb35c60e heart rate chart and fixed resolution for mobile 2021-07-15 11:36:43 +02:00
Roberto Viola
236bbfe78a coloring watt zones and requested power. not tested 2021-07-15 09:44:23 +02:00
Roberto Viola
e333bbc073 starting customizing power chart 2021-07-14 17:12:17 +02:00
Roberto Viola
9daa3c4dba fixed iOS security stuff 2021-07-14 11:42:05 +02:00
Roberto Viola
752e6de22b fixes 2021-07-14 10:56:19 +02:00
Roberto Viola
9c4628f077 changing the firstRealIndex algorithm following the p3g4asus comment
https://github.com/cagnulein/qdomyos-zwift/commit/
4008fb81912642f0f71006eda32d6941400c3dff#commitcomment-53465346
2021-07-14 10:36:08 +02:00
Roberto Viola
1a80a0fea6 merge with https://github.com/p3g4asus/qdomyos-zwift/commit/
f9f816bad8f45f534f80e9909d4e091fa4229da6#diff-
c769f44c5a54869486235d89326a0d1b9d6ee14638fb6a0858049ac4e20ef709
2021-07-14 10:28:57 +02:00
Roberto Viola
27b69d2b72 Inspire bike new watt table #401 2021-07-14 09:00:06 +02:00
Roberto Viola
4008fb8191 fit file: get the first real point in the session line in order to avoid mismatch timing on Strava 2021-07-14 06:21:27 +02:00
Roberto Viola
b116a63532 only if the system has the qhttpserver we're using chartjs 2021-07-14 06:06:05 +02:00
Roberto Viola
849ad687df fixing iOS build again 2021-07-14 06:01:07 +02:00
Roberto Viola
baea835b20 continuing fixing iOS build 2021-07-14 05:29:18 +02:00
Roberto Viola
69c23950fd merged with https://github.com/p3g4asus/qdomyos-zwift/tree/ChartTemplate 2021-07-13 15:17:03 +02:00
Roberto Viola
bf39e4ba5a chartjs is working on iOS! 2021-07-13 11:27:43 +02:00
Roberto Viola
bfaa25d0a2 webkit added to iOS 2021-07-13 11:08:25 +02:00
Roberto Viola
85fa16d4f0 qtwebview added to ios 2021-07-13 10:14:31 +02:00
Roberto Viola
0fabddefc9 updating github workflow
https://github.com/actions/runner/issues/950
2021-07-12 15:42:38 +02:00
Roberto Viola
2a1fbcd93e added pzp test case 2021-07-12 08:33:49 +02:00
Roberto Viola
bfbe705dd2 Merge pull request #400 from p3g4asus/WSOptAndFeatures2
Some more webserver / template features
2021-07-12 08:05:44 +02:00
Matteo Federico Zazzetta
6b0ccc4ff7 ActivityDescription field moved to homeform and set using signal-slot mechanism 2021-07-11 13:38:33 +02:00
Roberto Viola
1757d403cd fixed test peloton api on pull request 2021-07-11 12:55:59 +02:00
Matteo Federico Zazzetta
5fc1a83a52 Added command to alter strava activity description
Added the possibility to request a web page body fetch in base64 format
Added twitch palyer and grabber for youtube-viewer plugin (needs ssl or localhost web server)
Added dash palyer for youtube-viewer plugin
Added hls player for youtube-viewer plugin
2021-07-11 10:00:11 +02:00
Roberto Viola
aed3e35da2 Heart chart scale issue #399 fixed 2021-07-11 09:20:44 +02:00
Roberto Viola
45950b2339 reverted merge error 2021-07-10 23:40:56 +02:00
Roberto Viola
d7d2240c14 fixed iOS errors 2021-07-10 16:30:42 +02:00
Roberto Viola
dec1119b29 added STAGES SB20 #398 2021-07-10 16:14:44 +02:00
Roberto Viola
7b01a1ee52 trying to fixing strnage behaviour of peloton servers 2021-07-10 15:21:16 +02:00
Roberto Viola
fffe1c0628 adding QStringLiteral everywhere :D 2021-07-09 16:20:37 +02:00
Roberto Viola
24b829053c added the possibility to change the order of the peloton date in the
workout title
2021-07-09 15:14:20 +02:00
Roberto Viola
b994c606e8 fixed root permission on test HFB 2021-07-09 11:25:58 +02:00
Roberto Viola
ae7c2a281e fixed github workflow 2021-07-09 11:21:18 +02:00
Roberto Viola
db80470acc added test HFB on GitHub 2021-07-09 11:16:59 +02:00
Roberto Viola
5806ded842 GitHub workflow playground
GitHub workflow playground
2021-07-09 11:00:44 +02:00
Roberto Viola
40b5a9148c workflow runs every 12 hours 2021-07-09 10:59:01 +02:00
Roberto Viola
1322f8618b export QT_DEBUG_PLUGINS=1; removed from the workflow 2021-07-09 10:51:49 +02:00
Roberto Viola
6b44a88f50 exit in case of peloton api success fixed 2021-07-09 10:34:58 +02:00
Roberto Viola
a4e3601e32 creating xvfb 2021-07-09 10:22:59 +02:00
Roberto Viola
e127394988 blaming on xcb 2021-07-09 10:12:22 +02:00
Roberto Viola
30926058f2 managing xcb issues 2021-07-09 10:05:02 +02:00
Roberto Viola
36bcfb2b40 fixed check on QNetworkReply::errorOccurred 2021-07-09 09:55:38 +02:00
Roberto Viola
b5c37a0454 fixing QNetworkReply::errorOccurred error on Qt 5.12 2021-07-09 09:50:47 +02:00
Roberto Viola
dda503e4c2 added libqt5websockets5* to workflow 2021-07-09 09:45:26 +02:00
Roberto Viola
dad2ebad86 qt packets added 2021-07-09 09:43:08 +02:00
Roberto Viola
840ba2d45f using qt5-default directly 2021-07-09 09:41:13 +02:00
Roberto Viola
5d1f895793 updated workflow build rules 2021-07-09 09:31:46 +02:00
Roberto Viola
8bd70eb227 installing libxcb 2021-07-09 09:30:43 +02:00
Roberto Viola
3bfa5fde00 root check after the parameters parsing 2021-07-09 09:16:58 +02:00
Roberto Viola
d22ce79f73 disable root check in case of test peloton api 2021-07-09 09:07:36 +02:00
Roberto Viola
fc568b1c8d still playing with github workflow 2021-07-09 09:01:22 +02:00
Roberto Viola
ae8d5f960a playing again with peloton api test case 2021-07-09 08:51:30 +02:00
Roberto Viola
46e693148f fixing speed on echelonstride 2021-07-09 08:23:11 +02:00
Roberto Viola
117d160ed5 zwift virtualbike on ios fixes 2021-07-08 21:54:18 +02:00
Roberto Viola
87d08452c0 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-07-08 16:46:34 +02:00
Roberto Viola
12bbdb3caa fixing a bug that if the peloton cadence sensor setting was off and
nothing was connected to the virtualbike, the resistance was forced to
5.
2021-07-08 16:38:39 +02:00
Roberto Viola
5a4600732c added a test for the peloton api 2021-07-08 16:19:28 +02:00
Roberto Viola
e5ab7fb8b8 pausing the testing peloton api thing 2021-07-08 16:16:01 +02:00
Roberto Viola
cf0e76eb5d fixing test peloton api 2021-07-08 16:02:26 +02:00
Roberto Viola
aa1025dc78 fixing test peloton api 2021-07-08 15:52:26 +02:00
Roberto Viola
b97b805d9c trying to create a test case for peloton api 2021-07-08 15:35:23 +02:00
Roberto Viola
cbf642e9c7 Merge pull request #341 from lifof/codeRefactoring
First batch of code Refactoring related to Code Improvements #339
2021-07-07 15:01:24 +02:00
lifof
02c093a020 Fix:
- conflicts after effects
2021-07-07 13:55:17 +01:00
lifof
0b87993c9c Merge branch 'refs/heads/master' into codeRefactoring
Conflicts:
	src/bike.h
	src/bluetoothdevice.cpp
	src/bluetoothdevice.h
	src/domyoselliptical.cpp
	src/domyostreadmill.cpp
	src/domyostreadmill.h
	src/elliptical.cpp
	src/homeform.cpp
	src/mainwindow.cpp
	src/soleelliptical.cpp
	src/virtualbike.cpp
	src/virtualbike.h
2021-07-07 13:45:59 +01:00
Roberto Viola
82502c1f57 Merge pull request #394 from cagnulein/treadmill_as_a_bike
Treadmill as a bike
2021-07-07 13:47:07 +02:00
Roberto Viola
836b5a9c6a Merge branch 'master' into treadmill_as_a_bike 2021-07-07 13:42:36 +02:00
lifof
5d09ec0056 Update :
- rapid code refactoring
2021-07-07 11:19:27 +01:00
lifof
242ca69574 Merge branch 'refs/heads/master' into codeRefactoring
Conflicts:
	src/schwinnic4bike.cpp
2021-07-07 11:02:57 +01:00
Roberto Viola
af70bccafa Schwinn IC4 Support Mapping Bike Resistance to Peloton Resistance #392
added missing resistance conversion
2021-07-07 08:16:50 +02:00
Roberto Viola
f6ad122e12 peloton Resistance to renphobike 2021-07-07 08:14:18 +02:00
lifof
e296960798 Merge branch 'refs/heads/master' into codeRefactoring
Conflicts:
	src/bluetooth.cpp
	src/homeform.cpp
	src/homeform.h
	src/schwinnic4bike.cpp
2021-07-06 12:11:13 +01:00
lifof
0bf6f79340 Update:
- tacxneo2* refactor
2021-07-06 11:50:16 +01:00
Roberto Viola
929219771d Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-07-06 12:25:44 +02:00
Roberto Viola
539edc2c38 Schwinn IC4 Support Mapping Bike Resistance to Peloton Resistance #392 2021-07-06 12:25:16 +02:00
Youssef BEDDAD
4206cefdad Merge branch 'refs/heads/master' into codeRefactoring 2021-07-06 11:19:47 +01:00
Roberto Viola
542e7f1517 added Hammer Sole B94 #393 2021-07-06 12:05:35 +02:00
Roberto Viola
6e4b7f0e43 added the possibility to change gears with the volume keys #379 2021-07-06 12:03:41 +02:00
Roberto Viola
dea68cef94 adding a sleep during the SS2K init phase 2021-07-06 08:44:51 +02:00
Roberto Viola
8f7c243f69 added AppScreens 2021-07-05 12:20:38 +02:00
Roberto Viola
4856c9444e iOS version 2.6.60 2021-07-05 11:07:23 +02:00
lifof
b09c4b66fc Merge branch 'refs/heads/master' into codeRefactoring
Conflicts:
	src/main.cpp
2021-07-05 01:49:06 +01:00
Roberto Viola
14046ba3e3 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-07-04 17:44:09 +02:00
Roberto Viola
947f3f39d8 trying to fixing tiles quantity on iOS. Need to be tested on Android 2021-07-04 17:43:57 +02:00
Roberto Viola
0f3b899a92 domyostreadmill: limit writing inclination only to 0.5 steps 2021-07-03 18:32:10 +02:00
lifof
2d84f7e186 Merge branch 'refs/heads/master' into codeRefactoring
Conflicts:
	src/smartspin2k.cpp
2021-07-03 13:40:30 +01:00
Roberto Viola
d42f295e83 fixed init for SS2K 2021-07-03 12:26:29 +02:00
Roberto Viola
a67996cd8a changeInclination of domyostreadmill filter for negative values 2021-07-03 12:08:27 +02:00
lifof
7c19613b24 Merge branch 'refs/heads/master' into codeRefactoring
Conflicts:
	src/bluetooth.cpp
	src/bluetooth.h
2021-07-02 23:43:16 +01:00
Roberto Viola
d02eb70412 virtual_device_force_bike setting added 2021-07-02 15:20:24 +02:00
Roberto Viola
27a22eceb3 first commit of treadmill as a bike 2021-07-02 15:04:53 +02:00
Roberto Viola
cff64b71bc Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-07-01 14:11:16 +02:00
Roberto Viola
fb93a6610c tacxneo2 added #388 2021-07-01 12:27:35 +02:00
Roberto Viola
412d8e2da7 android version 2.6.59 2021-06-30 09:57:47 +02:00
Roberto Viola
3c40972a20 ios version 2.6.59 2021-06-30 08:02:48 +02:00
Roberto Viola
bf4c21a098 peloton airdate added to the title 2021-06-29 15:45:53 +02:00
Roberto Viola
e8fd1e18fe renphobike module added 2021-06-29 15:21:04 +02:00
lifof
a98e96d036 Fixed:
- some conflict's after effects
2021-06-28 22:23:15 +01:00
lifof
5dfffae8a0 Merge branch 'refs/heads/master' into codeRefactoring
Conflicts:
	src/bike.cpp
	src/bluetooth.cpp
	src/bluetooth.h
	src/domyostreadmill.cpp
	src/homeform.cpp
	src/powerzonepack.cpp
	src/powerzonepack.h
	src/qfit.cpp
	src/smartspin2k.cpp
	src/smartspin2k.h
2021-06-28 15:21:12 +01:00
Roberto Viola
6578cd9365 trying to improve precision on distance on domyostreadmill 2021-06-28 08:49:22 +02:00
Roberto Viola
9097c2a1c4 Manage in the fit file the elapsed time and the total time differently
#386
2021-06-28 08:28:33 +02:00
Roberto Viola
6e60fb6002 WAHOO KICKR added 2021-06-28 08:10:14 +02:00
Roberto Viola
d3585052c5 fixed rounded on metrics_override_heartrate 2021-06-28 08:08:16 +02:00
Roberto Viola
c2ffd3e426 F63 treadmill connection issue fixed 2021-06-27 22:10:42 +02:00
Roberto Viola
afcaa5e894 limit ftp zone and target ftp zones to 7 as peloton 2021-06-27 15:55:09 +02:00
Roberto Viola
0800bb4345 changed the label of the SS2k settings 2021-06-25 22:22:16 +02:00
Roberto Viola
369abeac1b ss2k init phase fix 2021-06-25 21:59:46 +02:00
Roberto Viola
9c8ea4e422 Merge pull request #384 from cagnulein/smartspin2k
Smartspin2k
2021-06-25 21:52:55 +02:00
Roberto Viola
a540114d13 fix init phase on SS2K 2021-06-25 18:10:55 +02:00
Roberto Viola
e7b27a46e7 BLE_syncMode handled for smartspin2k 2021-06-25 08:07:21 +02:00
Roberto Viola
fad04cde91 fixed crash on powerzonepack 2021-06-24 15:20:14 +02:00
Roberto Viola
9e24ac97a6 resistance for smartspin2k is signed 2021-06-24 15:02:03 +02:00
Roberto Viola
7347383c21 disabling BLE_externalControl on smartspin2k 2021-06-24 14:12:03 +02:00
Roberto Viola
5e084a0367 Renpho Bike compatibility added #382 2021-06-24 08:30:28 +02:00
Roberto Viola
eeda71e51a iOS version 2.6.54 2021-06-24 08:05:45 +02:00
Roberto Viola
c3be99e606 added websocket to iOS 2021-06-23 18:03:04 +02:00
Roberto Viola
32e25f0f55 fix build issues 2021-06-23 16:10:06 +02:00
Roberto Viola
d78d6c70b9 fixed indication for smartspin2k and added the BLE_externalControl
command
2021-06-23 16:02:03 +02:00
Roberto Viola
6b43f948d5 first experimental support for echelonstride #380 2021-06-23 15:52:37 +02:00
Roberto Viola
ecd7c659ed pzp to websockets 2021-06-23 14:32:59 +02:00
Roberto Viola
5563bb9d97 first implementation of smartspin2k with custom services 2021-06-21 17:31:40 +02:00
lifof
450e52f492 Fixups for minor conflits resolving side effects 2021-06-19 22:08:33 +01:00
lifof
06863c7c62 Merge branch 'refs/heads/master' into codeRefactoring
Conflicts:
	src/bike.cpp
	src/homeform.cpp
	src/homeform.h
	src/horizontreadmill.cpp
	src/peloton.cpp
	src/peloton.h
	src/powerzonepack.cpp
2021-06-19 21:57:42 +01:00
Roberto Viola
b2969f1e85 fixed erroneous flags reading on stagesbike 2021-06-19 17:32:18 +02:00
Roberto Viola
ff2ef58424 handled horizontreadmill different services 2021-06-19 17:14:31 +02:00
Roberto Viola
87cddeca88 gears change now immediately; peloton provider added to the message box 2021-06-19 15:46:08 +02:00
Roberto Viola
0c523dcbc9 fixed issue when no pzp credentials are provided 2021-06-19 09:02:32 +02:00
lifof
7ac3a6684d Curly braces {} 2021-06-17 13:39:32 +01:00
lifof
cd9518d41c Merge branch 'refs/heads/master' into codeRefactoring
Conflicts:
	src/trxappgateusbbike.cpp
2021-06-17 13:35:58 +01:00
Roberto Viola
da140a5e6a forceResistance packet for DKN MOTION bike fixed #366 2021-06-17 13:24:37 +02:00
lifof
3f863165bf Last minute Refactoring of homeform.cpp :
- curly braces for ifs
 - QStringLiterals to some strings
2021-06-17 11:14:26 +01:00
lifof
2c2f70398f Merge branch 'refs/heads/master' into codeRefactoring
Conflicts:
	src/homeform.cpp
2021-06-17 10:40:58 +01:00
Roberto Viola
e85135261f fixed ftp range #374 2021-06-17 07:44:59 +02:00
lifof
6aac31b4d9 Code reformating and some fast refactoring 2021-06-16 15:47:02 +01:00
Youssef BEDDAD
247db96d58 fixup! Merge branch 'refs/heads/master' into codeRefactoring 2021-06-16 15:38:53 +01:00
lifof
c79ee60464 Merge branch 'refs/heads/master' into codeRefactoring 2021-06-16 15:35:28 +01:00
Roberto Viola
b6ecc93c5d fixed "double" seconds in the PZP plugin 2021-06-16 15:23:00 +02:00
Roberto Viola
355969b10f added the ability to change the value of the speed read from the
machinery (useful for treadmill uncalibrated) #373
2021-06-16 14:18:52 +02:00
Roberto Viola
00974411ab improvments on rower (fit files and more) 2021-06-16 13:59:25 +02:00
Roberto Viola
35422aeab1 added gears tile 2021-06-16 13:27:54 +02:00
lifof
f7763b289f Merge branch 'refs/heads/master' into codeRefactoring 2021-06-16 10:37:05 +01:00
Roberto Viola
6c73b2ffe0 weight loss and watt/kg fixed for m3ibike 2021-06-15 16:45:35 +02:00
lifof
117f049944 Fixups for some conflicts side effects 2021-06-15 11:37:55 +01:00
lifof
02fdd72f28 Merge branch 'refs/heads/master' into codeRefactoring 2021-06-15 11:11:11 +01:00
Roberto Viola
c21fab6c64 trying to handle different firmware for DKN MOTION #366 2021-06-15 11:04:05 +02:00
Roberto Viola
807f3a385d fixed double approximation in the FTP zones 2021-06-15 08:10:09 +02:00
lifof
7f297b7700 Merge branch 'refs/heads/master' into codeRefactoring 2021-06-14 23:08:10 +01:00
lifof
1f62e9529e Merge branch 'refs/heads/master' into codeRefactoring
- fixing some mistakes that were done during the last coflict solving ( some errornous if statments )
- @cagnulein would you mind taking a look homeform.cpp line 2062 there's a note above is it ok to replace it by that cause the analyzer is complaining about it.
2021-06-14 23:02:10 +01:00
Roberto Viola
5d9f6b1245 fixing strava export for domyostreadmill #363 2021-06-14 16:34:45 +02:00
Youssef BEDDAD
8ed26c96d4 Revert "Update qfit.cpp"
This reverts commit d21395da8a.
2021-06-14 13:36:52 +01:00
lifof
d21395da8a Update qfit.cpp
Is it correct to change these two sub sport values for the Treadmill & Elliptical
2021-06-14 13:36:12 +01:00
Roberto Viola
ab0e5f9cd2 watt/kg tile added 2021-06-14 10:08:00 +02:00
Roberto Viola
58896be47a target resistance and target cadence second lines disabled if there
aren't any data
2021-06-14 09:46:04 +02:00
lifof
3f874a61e2 Merge branch 'refs/heads/master' into codeRefactoring
- resolving conflicts & refactoring
2021-06-13 21:24:04 +01:00
Roberto Viola
a3fcc47bfd target zone added. lower and upper values added for peloton resistance
and cadence. #356 #315
2021-06-13 11:40:20 +02:00
Roberto Viola
5f0ca8682a fixed distance for smartrowrower 2021-06-13 10:59:03 +02:00
Roberto Viola
a7ac55ec80 added indoor rowing in the fit file 2021-06-13 10:55:58 +02:00
lifof
537531db09 Refactoring related to #358 2021-06-10 11:52:28 +01:00
Roberto Viola
5c71609523 Merge branch 'master' into codeRefactoring 2021-06-10 09:15:53 +02:00
Roberto Viola
8e3670be65 Added decimal point to the zone tile #359 2021-06-10 09:04:57 +02:00
lifof
f4d9475d21 Merge branch 'cagnulein:master' into codeRefactoring 2021-06-09 15:09:01 +01:00
Roberto Viola
f794f98859 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-06-09 14:58:10 +02:00
Roberto Viola
28a3c7c94c version 2.6.45 for ios and android 2021-06-09 14:57:42 +02:00
Roberto Viola
3b86cd966d fixed domyoselliptical timing 2021-06-09 12:14:55 +02:00
Roberto Viola
7fc3ef2359 trying to fixing #342 2021-06-09 08:31:10 +02:00
Roberto Viola
e3ecec04c7 fixed proformbike resistance during a resistance change 2021-06-09 08:26:24 +02:00
lifof
b0a929bfe3 Merge branch 'refs/heads/master' into codeRefactoring 2021-06-08 17:10:40 +01:00
lifof
1e7b093941 Merge branch 'refs/heads/master' into codeRefactoring 2021-06-08 17:01:26 +01:00
Roberto Viola
98ea1f19e1 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-06-08 16:25:48 +02:00
Roberto Viola
3e2bdec819 fixed current airtime on peloton 2021-06-08 16:19:15 +02:00
Roberto Viola
dd4273bb76 first implementation of homefitnessbuddy (NOT TESTED) 2021-06-08 14:33:08 +02:00
Roberto Viola
d1fdbb88a6 added strokes count and length and pace for rower 2021-06-08 08:57:08 +02:00
lifof
bcdd25f18e New code tranformations
- using qt5's new style connect is considered good behavior
 - using nullptr instead of 0 and NULL when dealing with pointers
 - using curly braces everytime in if and for statements is good behavior too
2021-06-07 10:51:13 +01:00
Roberto Viola
06d2f4517f Merge branch 'master' into codeRefactoring 2021-06-07 09:13:25 +02:00
Roberto Viola
21d1d3f204 smartrow rower stupid typos fixed 2021-06-07 09:12:19 +02:00
Roberto Viola
79e9b2660a Merge branch 'master' into codeRefactoring 2021-06-07 09:08:47 +02:00
Roberto Viola
32b39a8578 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-06-07 09:02:07 +02:00
Roberto Viola
f44ac930e9 first raw implementation of smartrow rower 2021-06-07 08:58:27 +02:00
lifof
851def48bb Ninth wave of code changes
- finally figured out a way to change the qt5 connects that deal with QLowEnergyController::Error and QLowEnergyService::ServiceError from the old to new style
2021-06-06 21:30:35 +01:00
lifof
f9449f57a8 fix for android-armeabi-v7a
- complains about optimization & lto during link time - found that it had a fixed "CONFIG += optimize_size" that translates to -Oz
2021-06-06 18:31:04 +01:00
lifof
dcbc4497c2 trying to solve github's artifact crash:
- seems to crash on my distro with this message :
   ./qdomyos-zwift: symbol lookup error: ./qdomyos-zwift: undefined symbol: _ZdlPvm, version Qt_5
2021-06-06 17:43:40 +01:00
lifof
6672725dfa Adding -s to strip all debug symbols from release version 2021-06-06 17:24:21 +01:00
lifof
5a95c4c1da Eighth wave of code changes
- second pass on the cpp source files
 - added src/build/* to .gitignore cause I'm getting two annoying files every time I want to commit something
 - main.cpp - fixed a potential memory leak - clang-analyzer-cplusplus.NewDeleteLeaks
 - all header files refactored
 - with this all warnings related to the project ( no 3rd-party included ) are eliminated along with potential memory leaks and soem code tweaks related to performance
2021-06-06 17:11:22 +01:00
Roberto Viola
e4463d3dad Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-06-06 14:37:17 +02:00
lifof
a542662da2 Seventh wave of code changes
- finished 1st pass
2021-06-06 02:56:01 +01:00
lifof
33479ad88a Sixth wave of code changes 2021-06-05 22:39:13 +01:00
Roberto Viola
d702d2d9b8 Merge branch 'master' into codeRefactoring 2021-06-05 20:20:34 +02:00
Roberto Viola
d3ea8d651a fixed PZP session over 1h 2021-06-05 20:16:28 +02:00
lifof
9b15d0d98a Fifth wave of changes
+ debug messages medicine ( needs testing ) related to #345
2021-06-05 17:54:41 +01:00
lifof
4db3c92bd4 Fourth wave of changes 2021-06-05 16:19:53 +01:00
lifof
89f082c55d Movinig on -> Third wave 2021-06-05 02:55:26 +01:00
lifof
1c8cece6cf Update Qt version in main.yml 2021-06-04 22:32:35 +01:00
lifof
747049761c Second batch of modifications 2021-06-04 22:10:44 +01:00
lifof
1eb9f11434 Update domyoselliptical.cpp 2021-06-04 11:31:37 +01:00
Roberto Viola
71f0e56728 fixed wrong incliantion value on domyos elliptical
@lifof could you try this?
2021-06-04 12:20:26 +02:00
Roberto Viola
6ec9be0a8f Merge branch 'master' into codeRefactoring 2021-06-04 10:23:44 +02:00
Roberto Viola
aa2bb93d52 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-06-04 09:34:32 +02:00
Roberto Viola
901b126f49 hammer bike fixed 2021-06-04 08:01:12 +02:00
lifof
6fefb6485a Refactoring code related to Code Improvements #339
- switching to c++17

 - activating link-time optimizations with qt's ltcg flag in CONFIG

 - android-clang config for optimize_full is errornous instead of passing an -O3 it passes a -Oz

 - using clazy's refactoring:
   - isempty-vs-count
   - old-style-connect
   - qstring-unneeded-heap-allocations
   - function-args-by-ref

 - clang-format *.cpp and *.h using .clang-format config

 - QStringLiteral everything

 - replacing initializing ptrs with 0 by nullptr

 - using Qt's isEmpty instead of count and length

 - using chrono's time expressions in QTimer

 - curly braces for all ifs and fors ( atleast the ones that I detected so far )
2021-06-03 22:59:37 +01:00
Roberto Viola
e1f3d1d0bd Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-06-03 11:53:26 +02:00
Roberto Viola
e88be3c23a version 2.6.41 on android 2021-06-03 11:53:14 +02:00
Roberto Viola
63d1299b07 Hammer racer S spinning bike #337 2021-06-03 11:49:17 +02:00
Roberto Viola
f793521ce3 Merge pull request #336 from lifof/master
Android Screen dimming Fix
2021-06-03 10:56:51 +02:00
lifof
908313c594 Android Srceen dimming Fix:
Added a keepScreenOn function for Android to deactivate screen dimming
2021-06-03 02:04:50 +01:00
Roberto Viola
fa86c3ca04 ios version 2.6.41 with concept row support #335 2021-06-02 14:20:25 +02:00
Roberto Viola
3d2d9dac0b ZWO (zwift workout file) compatibility added #331 2021-06-01 17:17:16 +02:00
Roberto Viola
90ab5e1c5b fixed build error on GitHub 2021-06-01 11:10:36 +02:00
Roberto Viola
f93b053de5 added the ability to ovveride the HR value sent to peloton #334 2021-06-01 11:04:08 +02:00
Roberto Viola
403beca71f powerzonepack fixed issue after 1 minute 2021-05-29 20:52:14 +02:00
Roberto Viola
80c2a741b2 weight loss fixed in the mail 2021-05-29 16:50:32 +02:00
Roberto Viola
4465ad7488 fixed distance on apple watch (only miles instead of kms) 2021-05-29 16:20:14 +02:00
Roberto Viola
4d34780319 ftmsrower cadence fixed #330 2021-05-29 14:00:17 +02:00
Roberto Viola
21a153fc5a fixed peloton workout when an user does multiple workout in a single QZ
session
2021-05-28 09:18:12 +02:00
Roberto Viola
305a01b7e0 first implementation of City Rower #327 2021-05-28 09:12:17 +02:00
Roberto Viola
af7380940a powerzonepack loginstate fixed 2021-05-27 22:35:15 +02:00
Roberto Viola
cce631c366 update powerzonepack to pzpack.com #264 2021-05-27 22:15:22 +02:00
Roberto Viola
b0efda1f02 ios version 2.6.36 2021-05-26 14:32:58 +02:00
Roberto Viola
63d033d48f Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-05-26 13:28:12 +02:00
Roberto Viola
094ec5cfdd first alpha implementation of powerzonepack #264 2021-05-26 13:24:07 +02:00
Roberto Viola
f35a1a9ec9 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-05-24 16:39:39 +02:00
Roberto Viola
7d1986f962 2.6.35 for android 2021-05-24 16:38:43 +02:00
Roberto Viola
04b394303e updating stats on flywheelbike on apple watch even if datas are not
"clean"
2021-05-24 16:28:55 +02:00
Roberto Viola
7d3bf6863e adding weight to the power-speed formula 2021-05-23 18:53:25 +02:00
Roberto Viola
f0ed3044ab Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-05-21 18:09:46 +02:00
Roberto Viola
136f957833 fix issue on virtual device when a cadence sensor has been used as a
accessory for another bike
2021-05-21 18:08:37 +02:00
Roberto Viola
a4a79069c7 fixed a strange bug into the flywheelbike about refresh->interval()
with value at 0
2021-05-21 15:03:30 +02:00
Roberto Viola
d247cb4830 weight loss tile added 2021-05-20 11:35:16 +02:00
Roberto Viola
35a2798541 ios version 2.6.32 2021-05-20 10:07:26 +02:00
Roberto Viola
c62ba5850e Speed from power #269 2021-05-20 10:01:52 +02:00
Roberto Viola
91483c8867 moved random training program setting into a parent setting in order to
avoid accidentally enabling
2021-05-20 09:25:37 +02:00
Roberto Viola
a2c331c4fa fixed formula on the target resistance second line tile 2021-05-20 08:09:40 +02:00
Roberto Viola
9021b2ffa3 Life Fitness Bike support #325 2021-05-20 08:01:34 +02:00
Roberto Viola
ba1b74f872 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-05-19 09:02:58 +02:00
Roberto Viola
a7f8699a30 added rower class 2021-05-19 09:00:18 +02:00
Roberto Viola
5cf915fed1 changed strava tag to #QZ 2021-05-18 17:24:31 +02:00
Roberto Viola
47beb070cd added the ability to load and save settings #240 2021-05-18 15:51:51 +02:00
Roberto Viola
c257601916 trying to get inclination from horizontreadmill 2021-05-18 09:59:47 +02:00
Roberto Viola
0ca3ba87f9 small fix on echelonrower 2021-05-17 09:53:15 +02:00
Roberto Viola
e586dea477 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-05-17 09:07:49 +02:00
Roberto Viola
1d2a8bc7e1 ios version 2.6.30 2021-05-17 09:07:26 +02:00
Roberto Viola
b493124644 first implementation of echelonrower #318 2021-05-17 08:57:31 +02:00
Roberto Viola
7d6f16ad61 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-05-17 07:58:10 +02:00
Roberto Viola
b2c7da5111 added simple hrzones_1h_treadmill program 2021-05-17 07:57:59 +02:00
Roberto Viola
7cf1d6a3bf fixed watt calculation on schwinnic4bike 2021-05-15 09:41:39 +02:00
Roberto Viola
a2c0009a8c using resistance function to SmartSpin2K 2021-05-14 18:50:39 +02:00
Roberto Viola
25983aa7e2 version 2.6.29 2021-05-14 11:11:56 +02:00
Roberto Viola
7790a1bc66 added startup offset to smartspin2k #299 2021-05-13 15:09:47 +02:00
Roberto Viola
88fe1e6c81 fix build error 2021-05-13 09:15:15 +02:00
Roberto Viola
f4951befd4 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-05-13 08:53:58 +02:00
Roberto Viola
ee12336b90 external cadence sensor on bike to override bike computer's cadence
sensor #317
2021-05-13 08:53:41 +02:00
Roberto Viola
c1259cf0ab ios version 2.6.28 2021-05-12 15:44:40 +02:00
Roberto Viola
ce1308b5ee kcal and distance to apple watch 2021-05-12 14:36:21 +02:00
Roberto Viola
83c3387eb2 fixed timeout on ftmsaccessory #299 2021-05-11 17:06:11 +02:00
Roberto Viola
22152ddf10 ftmsbike limited to 15 resistance levels. changed to 100 #299 2021-05-11 17:00:52 +02:00
Roberto Viola
0cb759f771 fixed stupid error on ftms accessory #299 2021-05-11 16:34:09 +02:00
Roberto Viola
4facb2c26a fixed init phase of DKN MOTION bike #294 2021-05-11 14:03:55 +02:00
Roberto Viola
dae2d78d6e fixed connection issue on FTMS accessory #299 2021-05-11 07:59:31 +02:00
Roberto Viola
85c9baeb50 first untested implementation of SpinBike2K #299 2021-05-10 15:28:05 +02:00
Roberto Viola
18dd8dc911 fix import GPX file with resolution different than 1 second #304 2021-05-10 10:41:58 +02:00
Roberto Viola
8ed312cd0a Merge pull request #303 from p3g4asus/WSGetPost2
Get Post request via web socket
2021-05-10 08:10:08 +02:00
Roberto Viola
5ecebc506f default client strava id to QZ's one 2021-05-10 08:03:19 +02:00
Roberto Viola
1f68727c79 Merge branch 'master' into WSGetPost2 2021-05-10 08:01:44 +02:00
Matteo Federico Zazzetta
997b919ee6 Minor optimizations 2021-05-08 21:28:11 +02:00
Matteo Federico Zazzetta
33be574d54 Fixes strava speed display on m3i bike 2021-05-08 20:52:30 +02:00
Matteo Federico Zazzetta
8b3ae1a700 Merge with master 2021-05-08 13:21:20 +02:00
Matteo Federico Zazzetta
b3fbf34e89 Fixes strava id stringify and adds train program saver template 2021-05-07 12:07:28 +02:00
Roberto Viola
cc842e55c7 added mouse cursor ability to amazon manifest 2021-05-07 10:11:21 +02:00
Roberto Viola
2710cac480 small fixes on init for DKN AM-3i #285 2021-05-04 15:48:35 +02:00
Roberto Viola
6594ed1ae2 fix on fitplusbike 2021-05-04 15:29:41 +02:00
Roberto Viola
884bc2ca0a added template tcp client QZ 2021-05-04 12:17:43 +02:00
Roberto Viola
d58475a61d Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-05-04 08:39:42 +02:00
Roberto Viola
843138f82a ios version 2.6.24 2021-05-04 08:39:23 +02:00
Roberto Viola
390c5fa915 train program with positive and negative offset 2021-05-04 08:33:57 +02:00
Roberto Viola
5ecf34c524 added the ability to disable HRM from machinery (treadmill and bikes) 2021-05-03 14:20:20 +02:00
Roberto Viola
7964c6247d added watt calculation based on heart on fitplusbike 2021-05-03 14:17:02 +02:00
Roberto Viola
be29c27c80 added a new yesoul peloton conversion formula #245 2021-05-03 12:02:49 +02:00
Roberto Viola
ad7dea821d first commit for fitplusbike #296 2021-05-03 10:21:49 +02:00
Roberto Viola
dfe4d8df0a added a new tile for peloton offset time 2021-05-03 08:41:12 +02:00
Roberto Viola
f02cfddb10 fixes on trainprograms 2021-05-03 08:05:57 +02:00
Matteo Federico Zazzetta
52378cfed3 Merge with upstram master branch and some fixes 2021-05-02 13:14:04 +02:00
Matteo Federico Zazzetta
788bf68705 Fixed some typos 2021-05-01 19:20:22 +02:00
p3g4asus
2c6dd1a02d Tons of Fixes 2021-05-01 18:14:24 +02:00
Roberto Viola
c281f9dfb4 elapsed buttons works only to train program counter (peloton buffer
issue)
2021-05-01 17:09:06 +02:00
Matteo Federico Zazzetta
64b3ee35f4 Adding support for loading / saving training programs via templates 2021-05-01 12:49:56 +02:00
Matteo Federico Zazzetta
8f7d417cd6 Added to .gtignore some paterns in template-examples folder 2021-04-30 14:01:33 +02:00
Matteo Federico Zazzetta
eae8c0ab72 Fixes to youtube-viewer template issues 2021-04-30 13:38:00 +02:00
Roberto Viola
ad4ec969a1 fixed crash on trainprogram 2021-04-30 06:58:15 +02:00
Matteo Federico Zazzetta
98b078f9c7 Fix Youtube template bug 2021-04-29 20:23:41 +02:00
Matteo Federico Zazzetta
dc75e8e469 Adding youtube-viewer template 2021-04-29 19:45:55 +02:00
Roberto Viola
f0dea27ab3 fixed wrong stop frame on domyosbike 2021-04-29 15:39:09 +02:00
Roberto Viola
3d3cbe8632 dkn motion init fixies #294 2021-04-28 17:03:37 +02:00
Roberto Viola
ebdbcfa946 OS, bluetooth device and bluetooth heart rate added to the email 2021-04-28 14:17:46 +02:00
Roberto Viola
48255659ad fixed writeresistance for soleelliptical #278 2021-04-28 08:57:10 +02:00
Matteo Federico Zazzetta
0770a3d7f4 Small changes in getsettings message 2021-04-28 07:10:19 +02:00
Roberto Viola
2403e463f4 hr pid in the XML #226 2021-04-27 20:38:20 +02:00
Roberto Viola
af6f169bd9 added averagePace and maxPace for treadmills and coloured tiles! 2021-04-27 14:04:38 +02:00
Roberto Viola
2d144fefd4 HR pid on treadmill now with a 10s loop 2021-04-27 11:21:16 +02:00
Roberto Viola
ba3b262f34 integration on spirittreadmill 2021-04-27 11:13:31 +02:00
Roberto Viola
8a26cb4a97 fixed resistance on soleelliptical #278 2021-04-26 11:45:05 +02:00
Roberto Viola
4f23227de4 peloton conversion for domyosbike 2021-04-26 10:55:20 +02:00
Roberto Viola
f532de8c62 resistance up and down for soleelliptical #278 2021-04-26 07:27:51 +02:00
Roberto Viola
87b1a84043 trying to increase resistance on soleelliptical #278 2021-04-25 17:17:04 +02:00
Roberto Viola
8128b8b15b age ande weight for soleelliptical #278 2021-04-25 17:11:15 +02:00
Roberto Viola
b3e95de924 duration of the workout for soleelliptical changed from 10 minutes to
255 minutes #278
2021-04-25 17:04:36 +02:00
Matteo Federico Zazzetta
1081c63b72 Added the possibility to make request get/post requests
Added moving_time metric for templates
Added the possibility to add new settings by using templates
2021-04-25 12:09:58 +02:00
Roberto Viola
cdc66ae76a Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-04-24 22:26:17 +02:00
Roberto Viola
10ce2d9c1f ios build fixed 2021-04-24 22:26:01 +02:00
Roberto Viola
7da452c4ea added peloton reverse conversion for proformbike 2021-04-24 22:16:02 +02:00
Roberto Viola
57bba4152c Merge pull request #289 from p3g4asus/MovingTime
Introducing moving time for m3i and fitshowtreadmill.
2021-04-24 18:46:40 +02:00
Matteo Federico Zazzetta
aadb3dd743 Introducing moving time for m3i and fitshowtreadmill. 2021-04-24 16:57:10 +02:00
Roberto Viola
e6cc2341b7 fixed signed slope on virtual bike on swift 2021-04-24 12:08:46 +02:00
Roberto Viola
2b3f135443 moving time added 2021-04-24 12:08:19 +02:00
Roberto Viola
f61f1ed91f fixing, again, virtual echelon bike 2021-04-23 15:02:26 +02:00
Roberto Viola
318eade1b7 very fast implementation of XT485 spirit treadmill (NOT TESTED AND NOT
FINISHED, i'm waiting the user with more informations)
2021-04-23 11:39:22 +02:00
Roberto Viola
48d9af6e96 added FIT file to the email 2021-04-23 08:32:58 +02:00
Roberto Viola
d1923ee4e7 fixed soleelliptical 2021-04-22 20:16:05 +02:00
Roberto Viola
af2ecf5fbd Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-04-22 20:01:02 +02:00
Roberto Viola
383ff90871 heart rate fixed on swift on zwift 2021-04-22 20:00:27 +02:00
Roberto Viola
e19dccd908 DKN MOTION bike added #285 2021-04-22 16:22:05 +02:00
Roberto Viola
ebe4e8e31c watt calculation based on HR executed only if HR attached #286 2021-04-22 15:14:05 +02:00
Roberto Viola
f865f5ddf2 swift swift interface is working 2021-04-22 14:23:44 +02:00
Roberto Viola
ed4722cb20 first implementation of virtual bike zwift on swift (not tested) 2021-04-22 09:40:40 +02:00
Roberto Viola
e3058bb621 npecablebike fixed again :( 2021-04-22 07:18:27 +02:00
Roberto Viola
1d197c15f5 fixed build issue on qt < 5.15 2021-04-21 20:56:25 +02:00
Roberto Viola
8c8de54553 ios build 2.6.13 2021-04-21 15:54:01 +02:00
Roberto Viola
90763b7135 trying to fix virtual echelon 2021-04-21 15:39:21 +02:00
Roberto Viola
2e79664b82 first raw implementation of PID based on Heart Rate for Treadmills #226 2021-04-21 15:12:58 +02:00
Roberto Viola
c2e4060d56 template webserver settings moved into the experimental settings section 2021-04-21 13:59:32 +02:00
Roberto Viola
e38c9d790c Merge pull request #252 from p3g4asus/TemplatingAndWS2
"Templated" connections and Web server
2021-04-21 13:53:57 +02:00
Matteo Federico Zazzetta
6c9b5fb660 Added installation files (binary lib, include and mkspecs) for qHttWebServer for ios and android.
Modified example template to support websocket reconnection
2021-04-21 12:55:44 +02:00
Roberto Viola
3205869ab0 first implementation of soleelliptical #278 2021-04-21 11:48:38 +02:00
Roberto Viola
417ae3c9d8 qml setting avaiable also for linux and windows #277 2021-04-21 08:34:50 +02:00
Roberto Viola
12956df6b5 added url to workout email #279 2021-04-21 08:27:52 +02:00
Roberto Viola
373e7aa505 npecablebike cadence fixed 2021-04-21 07:22:29 +02:00
Roberto Viola
eef3239a37 Merge branch 'master' into TemplatingAndWS2 2021-04-20 16:48:45 +02:00
Roberto Viola
21c26e095e added the QZ version on the bottom of the email 2021-04-20 16:39:31 +02:00
Roberto Viola
e337242d0a peloton class name showed even if it's not a peloton ride class 2021-04-20 16:28:11 +02:00
Roberto Viola
56cf4b4b9b virtual echelon bike fixed 2021-04-20 09:16:10 +02:00
Roberto Viola
69b270aef6 zwift resistance gain and offset for proformbike #277 2021-04-20 08:02:38 +02:00
Roberto Viola
40c9bfb3ac fixed crash pressing start 2021-04-19 15:59:53 +02:00
Roberto Viola
0924595b69 writing settings only if needed 2021-04-19 15:12:13 +02:00
Roberto Viola
93debf2557 reverting yesoulbike on linux 2021-04-19 13:35:06 +02:00
Roberto Viola
51c43c2a24 trying fixing #274 (yesoulbike on linux) 2021-04-19 12:16:55 +02:00
Roberto Viola
b33ee84d99 removed write external storage permission on android 2021-04-19 09:25:16 +02:00
Roberto Viola
9fbd14130c trainprogram cleared when stopped 2021-04-19 07:28:50 +02:00
Roberto Viola
0d8e5fb414 jouls in the mail now are kjouls 2021-04-19 07:08:10 +02:00
Roberto Viola
6e7f42c26d fixed build issue 2021-04-18 14:53:19 +02:00
Roberto Viola
6e4c835b51 fixed android permission on writing file and minor fixes on mail 2021-04-18 14:38:18 +02:00
Roberto Viola
acf4b3678b added a new case on virtual echelon 2021-04-17 19:03:33 +02:00
Roberto Viola
7f11cced2c avoid crashes on npecablebike 2021-04-17 09:14:55 +02:00
Roberto Viola
756d78546c ibiking+ bike supported 2021-04-17 08:18:30 +02:00
Roberto Viola
dd304f684a Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-04-16 11:45:51 +02:00
Roberto Viola
4c0af00c97 fixed zwift offset and gain on domyosbike #272 2021-04-16 11:45:16 +02:00
Roberto Viola
799795323c add peloton resistance for the bike without resistance 2021-04-15 20:47:21 +02:00
Roberto Viola
446a23519e version 2.6.5 2021-04-15 13:52:07 +02:00
Roberto Viola
5be4bb8206 heart rate fixed on JLL_IC400 2021-04-15 07:45:24 +02:00
Roberto Viola
8f318ef4f7 fixed chronobike resistance and mail error 2021-04-14 20:23:19 +02:00
Roberto Viola
f3b6bfee4c heart rate fixed for JLL_IC400 bike 2021-04-14 19:47:19 +02:00
Roberto Viola
b79d6ee1ec JLL_IC400 wattage from HR and kcal added 2021-04-14 15:44:48 +02:00
Roberto Viola
7d0589723f watts not setted to 0 when speed goes to 0 leaving a ghost value on
zwift
2021-04-14 08:01:55 +02:00
Roberto Viola
0bfc857b7f cadence peak filtered for domyosbike #268 2021-04-13 16:08:28 +02:00
Roberto Viola
78b2219f48 domyosbike init phase for changyow fixed (i hope) 2021-04-13 15:30:29 +02:00
Roberto Viola
4e8cc48c66 heart rate value for JLL_IC400 bike 2021-04-13 12:03:06 +02:00
Roberto Viola
bac6043ff1 chronobike added 2021-04-13 09:50:02 +02:00
Roberto Viola
3032e3069e stagesbike added 2021-04-13 08:59:56 +02:00
Roberto Viola
3c803d87d1 avoid to retry to login to peloton if the credentials are wrong 2021-04-13 08:26:03 +02:00
Roberto Viola
aa631ff2a6 fixed random program for bikes 2021-04-13 08:05:28 +02:00
Roberto Viola
124ec4ca4c peloton workout doesn't start if there isn't the top bar enabled 2021-04-13 07:23:54 +02:00
Roberto Viola
7f419c85ce JLL IC400 fixed 2021-04-12 17:45:11 +02:00
Roberto Viola
ecaf0a044d smtp server changed 2021-04-12 17:30:47 +02:00
Roberto Viola
0b3f05d5c3 added timeout to cscbike and npecablebike 2021-04-12 11:57:17 +02:00
Roberto Viola
8dedb81e7a other fix on JLL_IC400_bike 2021-04-12 10:56:28 +02:00
Roberto Viola
33669f3722 sending mail only if a stopped session and events synchronized 2021-04-12 09:19:48 +02:00
Roberto Viola
5952b953cf fixed cadence on JLL IC400 bike #243 2021-04-12 07:37:41 +02:00
Roberto Viola
44616bfbac distance on fit file must starts with 0 #257 2021-04-12 07:32:41 +02:00
Roberto Viola
8267c62e1b fixinig build issue with smtpclient 2021-04-12 07:07:32 +02:00
Roberto Viola
f4bf40e8a7 first email experiments 2021-04-11 19:09:04 +02:00
Roberto Viola
0f030e3b2e chart images added 2021-04-11 17:58:05 +02:00
Roberto Viola
e96aa4036f weight lbs conversion added in the settings 2021-04-11 17:03:26 +02:00
Roberto Viola
8d66f13600 ios version 2.6.0 2021-04-11 16:46:41 +02:00
Roberto Viola
8f07094067 npecablebike managed #258 2021-04-11 14:46:52 +02:00
Roberto Viola
57645bbf05 add heart rate for virtualbike echelon 2021-04-11 14:14:13 +02:00
Roberto Viola
60e096d14c Merge branch 'cadence_sensor' 2021-04-11 11:41:14 +02:00
Roberto Viola
54f9e59e61 timeout for speed for cscbike 2021-04-11 11:40:48 +02:00
Roberto Viola
43daabd397 added wheel ratio for cscbike 2021-04-11 11:39:12 +02:00
Roberto Viola
40092e9727 added some debug to ERG mode for echelonconnectsport 2021-04-10 15:03:38 +02:00
Roberto Viola
48b67cdb96 watt gain and offset weren't applied to virtualbike 2021-04-10 15:03:14 +02:00
Matteo Federico Zazzetta
028ce80766 Some JSON commands added:
- setresistance (bikes and treadmills (inclination))
- setpower (bikes only)
- setcadence (bikes only)
- setdifficult (bikes and treadmills)
- setfanspeed (bikes and treadmills)
- setspeed (treadmills)
2021-04-10 12:21:19 +02:00
Roberto Viola
4be34fd1f6 added a up and down filter for Zwift ERG Mode 2021-04-09 11:57:53 +02:00
Roberto Viola
16229bcb46 elliptical speed settings can now add decimal separator on the keyboard 2021-04-09 11:43:28 +02:00
Roberto Viola
51106cb293 heart rate always read on cscbike 2021-04-08 17:09:56 +02:00
Roberto Viola
ed0b1be6c4 csc fixes 2021-04-08 16:34:09 +02:00
Roberto Viola
8a7f3193aa first commit of cscbike 2021-04-08 16:07:07 +02:00
Roberto Viola
054fe59ddb added icon for peloton credentials if they are ok or not 2021-04-07 15:24:36 +02:00
Roberto Viola
e94bdde451 connection timeout on inspirebike 2021-04-07 14:17:01 +02:00
Roberto Viola
78dfb415bb clearing the heartRate lastname if it set to disabled 2021-04-07 12:12:28 +02:00
Roberto Viola
1c81291d5d added the ability to save settings to the debug file #240 2021-04-07 11:22:13 +02:00
Roberto Viola
c56b9ea3d3 fixed screen rotation issue #105 2021-04-07 11:08:24 +02:00
Roberto Viola
617ee0a32c fixed crash when user changes the settings while connected to the bike 2021-04-07 09:50:49 +02:00
Roberto Viola
9b1f5dfd6d fixed inclination on random training program 2021-04-07 07:42:50 +02:00
Roberto Viola
97b446ec7f distance on echelon on virtualbike 2021-04-06 08:20:24 +02:00
Roberto Viola
4b230e856c Update issue templates 2021-04-06 08:09:27 +02:00
Matteo Federico Zazzetta
42b798eb05 Prepare for PR - part 2 2021-04-05 21:27:07 +02:00
Matteo Federico Zazzetta
2e8ca637a9 Prepare for PR 2021-04-05 21:24:47 +02:00
Matteo Federico Zazzetta
c16bfffb36 Useless line removed 2021-04-05 18:07:47 +02:00
Matteo Federico Zazzetta
667b847f24 Merge with qz master 2021-04-05 17:56:43 +02:00
Matteo Federico Zazzetta
6aa479de65 Adding vlc extension needed for showing vlc subtitles 2021-04-05 17:29:07 +02:00
p3g4asus
79afb5c22e Fixes for input commands 2021-04-05 17:26:05 +02:00
p3g4asus
b634efd179 Fixes compilation warnings on iOS 2021-04-05 14:38:42 +02:00
Matteo Federico Zazzetta
da3ad44097 Adding debug webserver template 2021-04-05 14:17:03 +02:00
Matteo Federico Zazzetta
b02074e7d7 Adding debug template 2021-04-05 14:15:07 +02:00
p3g4asus
e30266863a Many Fixes!!! It seems to work fine now 2021-04-05 13:44:07 +02:00
Roberto Viola
97e6f8449d fixed a bug that occurs when you have a peloton class running and you
start QZ after
2021-04-05 11:52:04 +02:00
Roberto Viola
5b4ff32501 fixed missing training program line on peloton #233 2021-04-05 11:28:31 +02:00
Roberto Viola
7441c50dfa added setting for peloton difficulty #242 2021-04-05 10:48:03 +02:00
Matteo Federico Zazzetta
3983af0ead Fixed Settings Gui problems 2021-04-05 10:32:52 +02:00
Roberto Viola
03a0690e39 requested peloton resistance in the trainprogram #233 2021-04-05 10:31:26 +02:00
Roberto Viola
4fd51423c0 add primary service for virtual echelon on virtualbike #198 2021-04-05 10:12:45 +02:00
Matteo Federico Zazzetta
a8bb3a7cb5 First tests 2021-04-04 21:12:29 +02:00
Roberto Viola
277febac16 iOS build fixed 2021-04-04 19:59:51 +02:00
Roberto Viola
f0956f47b4 added an erg filter for zwift #230 2021-04-04 19:35:03 +02:00
Roberto Viola
5df686c1a5 fixed advertisment packet on echelon sport virtualbike 2021-04-04 19:18:17 +02:00
Roberto Viola
7f13505f54 apple watch on domyosbike #249 2021-04-04 19:07:05 +02:00
Roberto Viola
a897514fbb small fix on chart with peloton instructor 2021-04-03 15:46:37 +02:00
Roberto Viola
4b36a51861 version 2.5.20 2021-04-03 15:21:21 +02:00
Roberto Viola
07a7966879 reduced charts width to 1 2021-04-03 15:18:36 +02:00
Roberto Viola
14190a771e added target peloton resistance to echelonconnectsport #233 2021-04-03 15:13:27 +02:00
Roberto Viola
d9d92ff955 JLL IC400 bike managed #243 2021-04-03 14:57:50 +02:00
Roberto Viola
eb3d5983be pause handled on trainprogram #235 2021-04-03 14:21:40 +02:00
Roberto Viola
87a4c9511c peloton instructorName #237 2021-04-03 14:15:52 +02:00
Roberto Viola
a393e8767a limit peloton workout to 1 #236 2021-04-03 13:32:41 +02:00
Roberto Viola
2417b85f64 fixing domyosbike splitted packages #234 2021-04-03 13:30:02 +02:00
Roberto Viola
a18e2b771b fix fonts on chart on ios 2021-04-02 15:50:52 +02:00
Roberto Viola
ba268cf97c ios build fixed 2021-04-02 15:29:39 +02:00
Roberto Viola
e0a695be01 settings fixed and moved the tiles groups on the root of the settings 2021-04-02 14:51:39 +02:00
Roberto Viola
b1ceae9136 erg mode fixed 2021-04-02 14:22:24 +02:00
Roberto Viola
ff8a3dc340 JLL_IC400_bike managed 2021-04-02 14:06:44 +02:00
Roberto Viola
686c3eb6f0 autoresistance button added 2021-04-02 13:57:05 +02:00
Roberto Viola
d3cebaa79e S77 treadmill compatibility added 2021-04-02 13:22:12 +02:00
Roberto Viola
a6585e8b58 zwift erg mode for domyosbike 2021-04-02 09:46:18 +02:00
Roberto Viola
ff5143894c fix on watt function on echelonconnectsport 2021-04-02 09:08:02 +02:00
Roberto Viola
b717818616 zwift erg mode managed for echelonconnectsport 2021-04-02 09:01:47 +02:00
Roberto Viola
3a099f89f4 added target power tile and target cadence tile; managed cadence from
peloton
2021-04-02 08:35:38 +02:00
Roberto Viola
aafec8f292 screenshot has been called by QML now in order to be synced with the
chart UI
2021-04-02 08:04:56 +02:00
Roberto Viola
ba611c908e min heart rate on chart set to 60 2021-04-02 07:54:49 +02:00
Roberto Viola
05b34fd935 dateaxis on charts 2021-04-02 07:52:38 +02:00
Roberto Viola
961c070011 toolbar must be always available when entering in the chart form 2021-04-02 07:29:54 +02:00
Roberto Viola
0d4f038a26 iOS fixing Charts build issues 2021-04-02 07:18:42 +02:00
427 changed files with 38573 additions and 11714 deletions

View File

@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: "[REQ]"
labels: enhancement
assignees: cagnulein
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

43
.github/workflows/build_ios.yml vendored Normal file
View File

@@ -0,0 +1,43 @@
# This is a basic workflow to help you get started with Actions
name: build-ios
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the master branch
#push:
# branches: [ master ]
#pull_request:
# branches: [ master ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
build: # make sure build/ci work properly
runs-on: macOS-latest
timeout-minutes: 90
steps:
- uses: actions/checkout@v2
- uses: Apple-Actions/import-codesign-certs@v1
with:
p12-file-base64: ${{ secrets.CERTIFICATES_FILE_BASE64 }}
p12-password: ${{ secrets.CERTIFICATES_PASSWORD }}
- uses: Apple-Actions/download-provisioning-profiles@v1
with:
bundle-id: org.cagnulein.qdomyoszwift
issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
api-key-id: ${{ secrets.APPSTORE_KEY_ID }}
api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }}
- name: "#️⃣ Generate Build Number"
id: buildnumber
uses: einaregilsson/build-number@v2
with:
token: ${{ secrets.github_token }}
- run: ./Build
# - uses: Apple-Actions/upload-testflight-build@master
# with:
# app-path: .build/Artifacts/Example-iOS.ipa/Example-iOS.ipa
# issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
# api-key-id: ${{ secrets.APPSTORE_KEY_ID }}
# api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }}

View File

@@ -2,13 +2,18 @@
name: CI
env:
DISPLAY: ':99'
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
push:
branches: [ master ]
branches: [ master, github-workflow-playground ]
pull_request:
branches: [ master ]
schedule:
- cron: "0 */12 * * *"
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
@@ -33,28 +38,39 @@ jobs:
# 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
# Runs a set of commands using the runners shell
- name: Install Qt Linux Desktop
uses: jurplel/install-qt-action@v2
- name: Checkout submodule repo
uses: actions/checkout@v2
with:
version: '5.12.9'
host: 'linux'
target: 'desktop'
modules: 'qtcharts debug_info qtnetworkauth'
dir: '${{ github.workspace }}/output/linux-desktop/'
# cached: ${{ steps.cache-qt-linux-desktop.outputs.cache-hit }}
repository: bluetiger9/SmtpClient-for-Qt
path: "src/smtpclient/"
- name: Install packages required to run QZ inside workflow
run: 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
- name: Compile Linux Desktop
run: cd src; qmake; make -j4
run: cd src; 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 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:

16
.gitignore vendored
View File

@@ -13,7 +13,23 @@ src/qdomyos-zwift
src/ui_charts.h
src/ui_mainwindow.h
src/build/*
src/build/*
src/debug-*
*.swo
*.swp
template-examples/youtube-viewer/node_modules/*
template-examples/youtube-viewer/*.json
template-examples/youtube-viewer/.eslintrc.js
template-examples/youtube-viewer/.jshintrc
template-examples/youtube-viewer/debug.js
template-examples/train-program-saver/node_modules/*
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

3
.gitmodules vendored
View File

@@ -1,3 +1,6 @@
[submodule "android_openssl"]
path = android_openssl
url = https://github.com/KDAB/android_openssl.git
[submodule "src/smtpclient"]
path = src/smtpclient
url = https://github.com/bluetiger9/SmtpClient-for-Qt.git

View File

@@ -0,0 +1,84 @@
<?xml version="1.0"?>
<manifest package="org.cagnulen.qdomyoszwift" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="2.6.18" android:versionCode="128" android:installLocation="auto">
<uses-feature android:name="android.hardware.bluetooth" android:required="true" />
<uses-feature android:name="android.hardware.location" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
<uses-feature android:name="android.hardware.location" android:required="false" />
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
<supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/>
<application android:hardwareAccelerated="true" android:debuggable="false" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="qdomyos-zwift" android:extractNativeLibs="true" android:icon="@drawable/icon">
<activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density" android:name="org.qtproject.qt5.android.bindings.QtActivity" android:label="qdomyos-zwift" android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<!-- Application arguments -->
<!-- meta-data android:name="android.app.arguments" android:value="arg1 arg2 arg3"/ -->
<!-- Application arguments -->
<meta-data android:name="android.app.lib_name" android:value="qdomyos-zwift"/>
<meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/>
<meta-data android:name="android.app.repository" android:value="default"/>
<meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/>
<meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/>
<!-- Deploy Qt libs as part of package -->
<meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/>
<!-- Run with local libs -->
<meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/>
<meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/>
<meta-data android:name="android.app.load_local_libs_resource_id" android:resource="@array/load_local_libs"/>
<meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/>
<meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/>
<!-- Used to specify custom system library path to run with local system libs -->
<!-- <meta-data android:name="android.app.system_libs_prefix" android:value="/system/lib/"/> -->
<!-- Messages maps -->
<meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/>
<meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/>
<meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/>
<meta-data android:value="@string/unsupported_android_version" android:name="android.app.unsupported_android_version"/>
<!-- Messages maps -->
<!-- Splash screen -->
<!-- Orientation-specific (portrait/landscape) data is checked first. If not available for current orientation,
then android.app.splash_screen_drawable. For best results, use together with splash_screen_sticky and
use hideSplashScreen() with a fade-out animation from Qt Android Extras to hide the splash screen when you
are done populating your window with content. -->
<!-- meta-data android:name="android.app.splash_screen_drawable_portrait" android:resource="@drawable/logo_portrait" / -->
<!-- meta-data android:name="android.app.splash_screen_drawable_landscape" android:resource="@drawable/logo_landscape" / -->
<!-- meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/logo"/ -->
<!-- meta-data android:name="android.app.splash_screen_sticky" android:value="true"/ -->
<!-- Splash screen -->
<!-- Background running -->
<!-- Warning: changing this value to true may cause unexpected crashes if the
application still try to draw after
"applicationStateChanged(Qt::ApplicationSuspended)"
signal is sent! -->
<meta-data android:name="android.app.background_running" android:value="true"/>
<!-- Background running -->
<!-- auto screen scale factor -->
<meta-data android:name="android.app.auto_screen_scale_factor" android:value="full"/>
<!-- auto screen scale factor -->
<!-- extract android style -->
<!-- available android:values :
* default - In most cases this will be the same as "full", but it can also be something else if needed, e.g., for compatibility reasons
* full - useful QWidget & Quick Controls 1 apps
* minimal - useful for Quick Controls 2 apps, it is much faster than "full"
* none - useful for apps that don't use any of the above Qt modules
-->
<meta-data android:name="android.app.extract_android_style" android:value="default"/>
<!-- extract android style -->
<meta-data android:name="com.amazon.input.cursor" android:value="pointer"/>
</activity>
<service android:name=".ChannelService"></service>
<activity android:name="org.cagnulen.qdomyoszwift.MyActivity" />
<!-- For adding service(s) please check: https://wiki.qt.io/AndroidServices -->
</application>
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="29" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
</manifest>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17506" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<device id="ipad12_9rounded" orientation="landscape" layout="splitview2_3" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17505"/>
@@ -13,32 +13,32 @@
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<rect key="frame" x="0.0" y="0.0" width="981" height="1024"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="obG-Y5-kRd">
<rect key="frame" x="0.0" y="876" width="414" height="0.0"/>
<rect key="frame" x="0.0" y="1004" width="981" height="0.0"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="launcher" translatesAutoresizingMaskIntoConstraints="NO" id="VVq-0c-S8O">
<rect key="frame" x="20" y="348" width="374" height="201"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<rect key="frame" x="20" y="114" width="941" height="776"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
</imageView>
</subviews>
<viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
<color key="backgroundColor" red="0.10980264100000001" green="0.11007446799999999" blue="0.1176523939" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="obG-Y5-kRd" secondAttribute="centerX" id="5cz-MP-9tL"/>
<constraint firstItem="obG-Y5-kRd" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" constant="20" symbolic="YES" id="SfN-ll-jLj"/>
<constraint firstItem="obG-Y5-kRd" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="SfN-ll-jLj"/>
<constraint firstAttribute="bottom" secondItem="obG-Y5-kRd" secondAttribute="bottom" constant="20" id="Y44-ml-fuU"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="52.173913043478265" y="375"/>
<point key="canvasLocation" x="50.625" y="373.75"/>
</scene>
</scenes>
<resources>

View File

@@ -56,6 +56,7 @@
2B42755BF45173E11E2110CB /* FitFieldDefinition.mm in Compile Sources */ = {isa = PBXBuildFile; fileRef = F3B0A31277FCD46877B1C226 /* FitFieldDefinition.mm */; settings = {ATTRIBUTES = (); }; };
2B800DC34C91D8B080DEFBE8 /* fit_mesg_with_event_broadcaster.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 24568621B9F9DEB322DAA4C4 /* fit_mesg_with_event_broadcaster.cpp */; settings = {ATTRIBUTES = (); }; };
2D4684BE88B9B0456A50B3F0 /* qdomyoszwift_plugin_import.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8DD3B05BF7374DC62BC3BA4A /* qdomyoszwift_plugin_import.cpp */; settings = {ATTRIBUTES = (); }; };
2F0E70F826316F3600E11F3A /* virtualbike_zwift.swift in Compile Sources */ = {isa = PBXBuildFile; fileRef = 2F0E70F726316F3600E11F3A /* virtualbike_zwift.swift */; };
3015F9B9FF4CA6D653D46CCA /* fit_developer_field_description.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = CA35DDC56ACD982A52226071 /* fit_developer_field_description.cpp */; settings = {ATTRIBUTES = (); }; };
333C629F93DB3941862924F7 /* fit_field_base.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = BDE58BCA9ABD5DF101B0E0FF /* fit_field_base.cpp */; settings = {ATTRIBUTES = (); }; };
3407CACF00E4A0046255A968 /* qtpcre2 in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 344F66310C19536DB4886D8F /* qtpcre2 */; };
@@ -119,12 +120,38 @@
87062646259480B200D06586 /* ViewController.swift in Compile Sources */ = {isa = PBXBuildFile; fileRef = 876E4E4F259479EE00BD5714 /* ViewController.swift */; };
87062647259480B400D06586 /* WatchKitConnection.swift in Compile Sources */ = {isa = PBXBuildFile; fileRef = 876E4E53259479EE00BD5714 /* WatchKitConnection.swift */; };
87062648259480B700D06586 /* WorkoutTracking.swift in Compile Sources */ = {isa = PBXBuildFile; fileRef = 876E4E50259479EE00BD5714 /* WorkoutTracking.swift */; };
87083D9626678EFA0072410D /* zwiftworkout.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87083D9526678EFA0072410D /* zwiftworkout.cpp */; };
8718CBA2263063BD004BF4EE /* soleelliptical.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8718CB9A263063BC004BF4EE /* soleelliptical.cpp */; };
8718CBA3263063BD004BF4EE /* templateinfosender.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8718CB9B263063BC004BF4EE /* templateinfosender.cpp */; };
8718CBA4263063BD004BF4EE /* templateinfosenderbuilder.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8718CB9D263063BC004BF4EE /* templateinfosenderbuilder.cpp */; };
8718CBA5263063BD004BF4EE /* tcpclientinfosender.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8718CB9F263063BD004BF4EE /* tcpclientinfosender.cpp */; };
8718CBAB263063CE004BF4EE /* moc_templateinfosenderbuilder.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8718CBA7263063CD004BF4EE /* moc_templateinfosenderbuilder.cpp */; };
8718CBAC263063CE004BF4EE /* moc_tcpclientinfosender.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8718CBA8263063CD004BF4EE /* moc_tcpclientinfosender.cpp */; };
8718CBAD263063CE004BF4EE /* moc_templateinfosender.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8718CBA9263063CE004BF4EE /* moc_templateinfosender.cpp */; };
8718CBAE263063CE004BF4EE /* moc_soleelliptical.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8718CBAA263063CE004BF4EE /* moc_soleelliptical.cpp */; };
871B9FD2265E6A8800DB41F4 /* powerzonepack.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 871B9FD1265E6A8800DB41F4 /* powerzonepack.cpp */; };
871B9FD4265E6A9A00DB41F4 /* moc_powerzonepack.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 871B9FD3265E6A9A00DB41F4 /* moc_powerzonepack.cpp */; };
871E4CD125A6FB5A00E18D6D /* BLEPeripheralManager.swift in Compile Sources */ = {isa = PBXBuildFile; fileRef = 871E4CD025A6FB5A00E18D6D /* BLEPeripheralManager.swift */; };
872BAB4E261750EE006A59AB /* libQt5Charts.a in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 872BAB4D261750EE006A59AB /* libQt5Charts.a */; };
872BAB50261751FB006A59AB /* libqtchartsqml2.a in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 872BAB4F261751FB006A59AB /* libqtchartsqml2.a */; };
873063BE259DF20000DA0F44 /* heartratebelt.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 873063BC259DF20000DA0F44 /* heartratebelt.cpp */; };
873063C0259DF2C500DA0F44 /* moc_heartratebelt.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 873063BF259DF2C500DA0F44 /* moc_heartratebelt.cpp */; };
87310B1E266FBB59008BA0D6 /* smartrowrower.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87310B1B266FBB54008BA0D6 /* smartrowrower.cpp */; };
87310B1F266FBB59008BA0D6 /* homefitnessbuddy.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87310B1C266FBB57008BA0D6 /* homefitnessbuddy.cpp */; };
87310B22266FBB78008BA0D6 /* moc_homefitnessbuddy.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87310B20266FBB6E008BA0D6 /* moc_homefitnessbuddy.cpp */; };
87310B23266FBB78008BA0D6 /* moc_smartrowrower.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87310B21266FBB77008BA0D6 /* moc_smartrowrower.cpp */; };
87318AAD2683799100770F13 /* echelonstride.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87318AAB2683799100770F13 /* echelonstride.cpp */; };
87318AAF2683799C00770F13 /* moc_echelonstride.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87318AAE2683799C00770F13 /* moc_echelonstride.cpp */; };
87318AB126837C7600770F13 /* libQt5WebSockets.a in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 87318AB026837AA500770F13 /* libQt5WebSockets.a */; };
87368825259C602800C71C7E /* watchAppStart.swift in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87368824259C602800C71C7E /* watchAppStart.swift */; };
87420DF6269D770F000C5EC6 /* libQt5WebView.a in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 87420DF5269D770F000C5EC6 /* libQt5WebView.a */; };
87420DFA269D7F44000C5EC6 /* libdeclarative_webview.a in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 87420DF9269D7F43000C5EC6 /* libdeclarative_webview.a */; };
87440FBD2640291700E4DC0B /* fitplusbike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87440FBC2640291700E4DC0B /* fitplusbike.cpp */; };
87440FBF2640292900E4DC0B /* moc_fitplusbike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87440FBE2640292900E4DC0B /* moc_fitplusbike.cpp */; };
87586A4125B8340E00A243C4 /* proformbike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87586A4025B8340E00A243C4 /* proformbike.cpp */; };
87586A4325B8341B00A243C4 /* moc_proformbike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87586A4225B8341B00A243C4 /* moc_proformbike.cpp */; };
875F69B926342E8D0009FD78 /* spirittreadmill.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 875F69B826342E8D0009FD78 /* spirittreadmill.cpp */; };
875F69BB26342E9A0009FD78 /* moc_spirittreadmill.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 875F69BA26342E9A0009FD78 /* moc_spirittreadmill.cpp */; };
8762D50F2601F7EA00F6F049 /* M3iNS.mm in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8762D50B2601F7EA00F6F049 /* M3iNS.mm */; };
8762D5102601F7EA00F6F049 /* M3iNSQT.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8762D50C2601F7EA00F6F049 /* M3iNSQT.cpp */; };
8762D5132601F89500F6F049 /* scanrecordresult.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8762D5112601F89500F6F049 /* scanrecordresult.cpp */; };
@@ -149,6 +176,9 @@
876EE3CDDF69DA139329ADD8 /* qquicklayoutsplugin in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 307B2F8E9A717B514EA118E0 /* qquicklayoutsplugin */; };
8772A0E625E43ADB0080718C /* trxappgateusbbike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8772A0E525E43ADA0080718C /* trxappgateusbbike.cpp */; };
8772A0E825E43AE70080718C /* moc_trxappgateusbbike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8772A0E725E43AE70080718C /* moc_trxappgateusbbike.cpp */; };
877A7609269D8E9F0024DD2C /* WebKit.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 877A7608269D8E9F0024DD2C /* WebKit.framework */; };
8780D947264FB8AC00192D41 /* smartspin2k.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8780D946264FB8AB00192D41 /* smartspin2k.cpp */; };
8780D949264FB8B800192D41 /* moc_smartspin2k.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8780D948264FB8B800192D41 /* moc_smartspin2k.cpp */; };
8781907E2615089D0085E656 /* peloton.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8781907C2615089D0085E656 /* peloton.cpp */; };
87819080261508B10085E656 /* moc_peloton.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8781907F261508B10085E656 /* moc_peloton.cpp */; };
8781908526150C8E0085E656 /* libqtlabsplatformplugin.a in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 8781908126150B490085E656 /* libqtlabsplatformplugin.a */; };
@@ -156,8 +186,20 @@
8783153C25E8DAFD0007817C /* sportstechbike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87A3EBBA25D2CFED0040EB4C /* sportstechbike.cpp */; };
878A331A25AB4FF800BD13E1 /* yesoulbike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 878A331725AB4FF800BD13E1 /* yesoulbike.cpp */; };
878A331D25AB50C300BD13E1 /* moc_yesoulbike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 878A331B25AB50C200BD13E1 /* moc_yesoulbike.cpp */; };
87900DC6268B672E000CB351 /* renphobike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87900DC5268B672E000CB351 /* renphobike.cpp */; };
87900DC8268B673C000CB351 /* moc_renphobike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87900DC7268B673C000CB351 /* moc_renphobike.cpp */; };
8791A8AA25C8603F003B50B2 /* moc_inspirebike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8791A8A925C8603F003B50B2 /* moc_inspirebike.cpp */; };
8791A8AB25C861BD003B50B2 /* inspirebike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8791A8A825C8602A003B50B2 /* inspirebike.cpp */; };
87A0C4BB262329A600121A76 /* npecablebike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87A0C4B7262329A600121A76 /* npecablebike.cpp */; };
87A0C4BC262329A600121A76 /* cscbike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87A0C4B9262329A600121A76 /* cscbike.cpp */; };
87A0C4BF262329B500121A76 /* moc_cscbike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87A0C4BD262329B500121A76 /* moc_cscbike.cpp */; };
87A0C4C0262329B500121A76 /* moc_npecablebike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87A0C4BE262329B500121A76 /* moc_npecablebike.cpp */; };
87A18F072660D5C1002D7C96 /* ftmsrower.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87A18F052660D5C0002D7C96 /* ftmsrower.cpp */; };
87A18F092660D5D9002D7C96 /* moc_ftmsrower.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87A18F082660D5D9002D7C96 /* moc_ftmsrower.cpp */; };
87A3BC222656429600D302E3 /* rower.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87A3BC1F2656429400D302E3 /* rower.cpp */; };
87A3BC232656429600D302E3 /* echelonrower.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87A3BC202656429400D302E3 /* echelonrower.cpp */; };
87A3BC26265642A300D302E3 /* moc_rower.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87A3BC24265642A200D302E3 /* moc_rower.cpp */; };
87A3BC27265642A300D302E3 /* moc_echelonrower.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87A3BC25265642A200D302E3 /* moc_echelonrower.cpp */; };
87A4B76125AF27CB0027EF3C /* metric.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87A4B75F25AF27CB0027EF3C /* metric.cpp */; };
87B617EC25F25FED0094A1CB /* screencapture.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87B617E725F25FEC0094A1CB /* screencapture.cpp */; };
87B617ED25F25FED0094A1CB /* fitshowtreadmill.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87B617EA25F25FED0094A1CB /* fitshowtreadmill.cpp */; };
@@ -165,6 +207,34 @@
87B617F225F260150094A1CB /* moc_fitshowtreadmill.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87B617EF25F260140094A1CB /* moc_fitshowtreadmill.cpp */; };
87B617F325F260150094A1CB /* moc_snodebike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87B617F025F260140094A1CB /* moc_snodebike.cpp */; };
87B617F425F260150094A1CB /* moc_screencapture.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87B617F125F260150094A1CB /* moc_screencapture.cpp */; };
87BB1774269E983200F46A1C /* moc_webserverinfosender.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87BB1773269E983200F46A1C /* moc_webserverinfosender.cpp */; };
87BB1776269E987100F46A1C /* libQt5HttpServer.a in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 87BB1775269E987000F46A1C /* libQt5HttpServer.a */; };
87C5F0B526285E5F0067A1B5 /* mimemessage.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F09726285E5A0067A1B5 /* mimemessage.cpp */; };
87C5F0B626285E5F0067A1B5 /* quotedprintable.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F09A26285E5B0067A1B5 /* quotedprintable.cpp */; };
87C5F0B726285E5F0067A1B5 /* mimecontentformatter.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F09B26285E5B0067A1B5 /* mimecontentformatter.cpp */; };
87C5F0B826285E5F0067A1B5 /* stagesbike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F09C26285E5B0067A1B5 /* stagesbike.cpp */; };
87C5F0B926285E5F0067A1B5 /* mimehtml.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F0A026285E5C0067A1B5 /* mimehtml.cpp */; };
87C5F0BA26285E5F0067A1B5 /* mimefile.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F0A126285E5C0067A1B5 /* mimefile.cpp */; };
87C5F0BB26285E5F0067A1B5 /* mimetext.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F0A426285E5C0067A1B5 /* mimetext.cpp */; };
87C5F0BC26285E5F0067A1B5 /* SmtpMime in Copy Bundle Resources */ = {isa = PBXBuildFile; fileRef = 87C5F0A526285E5C0067A1B5 /* SmtpMime */; };
87C5F0BD26285E5F0067A1B5 /* chronobike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F0A726285E5D0067A1B5 /* chronobike.cpp */; };
87C5F0BE26285E5F0067A1B5 /* mimemultipart.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F0A926285E5D0067A1B5 /* mimemultipart.cpp */; };
87C5F0BF26285E5F0067A1B5 /* smtpclient.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F0AC26285E5D0067A1B5 /* smtpclient.cpp */; };
87C5F0C026285E5F0067A1B5 /* mimepart.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F0AD26285E5D0067A1B5 /* mimepart.cpp */; };
87C5F0C126285E5F0067A1B5 /* mimeattachment.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F0AE26285E5D0067A1B5 /* mimeattachment.cpp */; };
87C5F0C226285E5F0067A1B5 /* emailaddress.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F0AF26285E5E0067A1B5 /* emailaddress.cpp */; };
87C5F0C326285E5F0067A1B5 /* mimeinlinefile.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F0B326285E5E0067A1B5 /* mimeinlinefile.cpp */; };
87C5F0CF26285E7E0067A1B5 /* moc_mimepart.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F0C426285E7D0067A1B5 /* moc_mimepart.cpp */; };
87C5F0D026285E7E0067A1B5 /* moc_smtpclient.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F0C526285E7D0067A1B5 /* moc_smtpclient.cpp */; };
87C5F0D126285E7E0067A1B5 /* moc_stagesbike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F0C626285E7D0067A1B5 /* moc_stagesbike.cpp */; };
87C5F0D226285E7E0067A1B5 /* moc_mimemultipart.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F0C726285E7D0067A1B5 /* moc_mimemultipart.cpp */; };
87C5F0D326285E7E0067A1B5 /* moc_mimecontentformatter.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F0C826285E7D0067A1B5 /* moc_mimecontentformatter.cpp */; };
87C5F0D426285E7E0067A1B5 /* moc_chronobike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F0C926285E7D0067A1B5 /* moc_chronobike.cpp */; };
87C5F0D526285E7E0067A1B5 /* moc_mimehtml.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F0CA26285E7E0067A1B5 /* moc_mimehtml.cpp */; };
87C5F0D626285E7E0067A1B5 /* moc_emailaddress.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F0CB26285E7E0067A1B5 /* moc_emailaddress.cpp */; };
87C5F0D726285E7E0067A1B5 /* moc_mimefile.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F0CC26285E7E0067A1B5 /* moc_mimefile.cpp */; };
87C5F0D826285E7E0067A1B5 /* moc_quotedprintable.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F0CD26285E7E0067A1B5 /* moc_quotedprintable.cpp */; };
87C5F0D926285E7E0067A1B5 /* moc_mimeattachment.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87C5F0CE26285E7E0067A1B5 /* moc_mimeattachment.cpp */; };
87CC3B9D25A08812001EC5A8 /* moc_domyoselliptical.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87CC3B9B25A08812001EC5A8 /* moc_domyoselliptical.cpp */; };
87CC3B9E25A08812001EC5A8 /* moc_elliptical.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87CC3B9C25A08812001EC5A8 /* moc_elliptical.cpp */; };
87CC3BA325A0885F001EC5A8 /* domyoselliptical.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87CC3B9F25A0885D001EC5A8 /* domyoselliptical.cpp */; };
@@ -173,6 +243,7 @@
87D269A025F535200076AA48 /* skandikawiribike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87D2699D25F535180076AA48 /* skandikawiribike.cpp */; };
87D269A325F535340076AA48 /* moc_skandikawiribike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87D269A125F535300076AA48 /* moc_skandikawiribike.cpp */; };
87D269A425F535340076AA48 /* moc_m3ibike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87D269A225F535300076AA48 /* moc_m3ibike.cpp */; };
87D44181269DE979003263D5 /* webserverinfosender.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87D44180269DE979003263D5 /* webserverinfosender.cpp */; };
87DF68B825E2673B00FCDA46 /* eslinkertreadmill.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87DF68B625E2673600FCDA46 /* eslinkertreadmill.cpp */; };
87DF68BD25E2675100FCDA46 /* moc_eslinkertreadmill.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87DF68BA25E2675100FCDA46 /* moc_eslinkertreadmill.cpp */; };
87DF68BF25E2675100FCDA46 /* moc_schwinnic4bike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87DF68BC25E2675100FCDA46 /* moc_schwinnic4bike.cpp */; };
@@ -182,6 +253,9 @@
87E6A85B25B5C8B900371D28 /* flywheelbike.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87E6A85925B5C8B900371D28 /* flywheelbike.cpp */; };
87EFB56E25BD703D0039DD5A /* proformtreadmill.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87EFB56C25BD703C0039DD5A /* proformtreadmill.cpp */; };
87EFB57025BD704A0039DD5A /* moc_proformtreadmill.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87EFB56F25BD704A0039DD5A /* moc_proformtreadmill.cpp */; };
87F1179E26A5FBDE00541B3A /* libqtwebview_darwin.a in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 87420DF7269D7CE1000C5EC6 /* libqtwebview_darwin.a */; };
87FE5BAF2692F3130056EFC8 /* tacxneo2.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87FE5BAD2692F3130056EFC8 /* tacxneo2.cpp */; };
87FE5BB12692F31E0056EFC8 /* moc_tacxneo2.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 87FE5BB02692F31E0056EFC8 /* moc_tacxneo2.cpp */; };
8C3422A825EF7ECD78951307 /* moc_bluetoothdevice.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 1B96B43BE93B05F81BBF0CCF /* moc_bluetoothdevice.cpp */; settings = {ATTRIBUTES = (); }; };
8FF7ED75180A8827C6B6AF63 /* qmldbg_inspector in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 67E53FD43BE69489B0434897 /* qmldbg_inspector */; };
906D4B242F504925A3CF2DBB /* GSS.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = C714C1AF3FA78E2DABBC17E8 /* GSS.framework */; };
@@ -373,6 +447,7 @@
2E6B7E1FF5E6A5461E7B7C44 /* fit_dive_summary_mesg.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = fit_dive_summary_mesg.hpp; path = "/Users/cagnulein/qdomyos-zwift/src/fit-sdk/fit_dive_summary_mesg.hpp"; sourceTree = "<absolute>"; };
2E99CE78422C13B5E8F1EB53 /* qfit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = qfit.h; path = "/Users/cagnulein/qdomyos-zwift/src/qfit.h"; sourceTree = "<absolute>"; };
2E9A703E620AD39818182E87 /* FitField.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FitField.h; path = "/Users/cagnulein/qdomyos-zwift/src/fit-sdk/FitField.h"; sourceTree = "<absolute>"; };
2F0E70F726316F3600E11F3A /* virtualbike_zwift.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = virtualbike_zwift.swift; path = ../src/ios/virtualbike_zwift.swift; sourceTree = "<group>"; };
2F875FD21B3CE91076B48D2D /* domyostreadmill.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = domyostreadmill.h; path = "/Users/cagnulein/qdomyos-zwift/src/domyostreadmill.h"; sourceTree = "<absolute>"; };
302316BD81D103EDFB1BBFF4 /* fit_event_mesg.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = fit_event_mesg.hpp; path = "/Users/cagnulein/qdomyos-zwift/src/fit-sdk/fit_event_mesg.hpp"; sourceTree = "<absolute>"; };
306373050762B159D8FBFD7A /* fit_timestamp_correlation_mesg_listener.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = fit_timestamp_correlation_mesg_listener.hpp; path = "/Users/cagnulein/qdomyos-zwift/src/fit-sdk/fit_timestamp_correlation_mesg_listener.hpp"; sourceTree = "<absolute>"; };
@@ -509,14 +584,53 @@
867187CB3CB3703D1925C88A /* fit_weather_conditions_mesg_listener.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = fit_weather_conditions_mesg_listener.hpp; path = "/Users/cagnulein/qdomyos-zwift/src/fit-sdk/fit_weather_conditions_mesg_listener.hpp"; sourceTree = "<absolute>"; };
86DD72842A64993F31E31719 /* fit_ant_rx_mesg_listener.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = fit_ant_rx_mesg_listener.hpp; path = "/Users/cagnulein/qdomyos-zwift/src/fit-sdk/fit_ant_rx_mesg_listener.hpp"; sourceTree = "<absolute>"; };
86F10E1AE2D47520E65C0543 /* fit_dive_summary_mesg_listener.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = fit_dive_summary_mesg_listener.hpp; path = "/Users/cagnulein/qdomyos-zwift/src/fit-sdk/fit_dive_summary_mesg_listener.hpp"; sourceTree = "<absolute>"; };
87083D9426678EFA0072410D /* zwiftworkout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = zwiftworkout.h; path = ../src/zwiftworkout.h; sourceTree = "<group>"; };
87083D9526678EFA0072410D /* zwiftworkout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = zwiftworkout.cpp; path = ../src/zwiftworkout.cpp; sourceTree = "<group>"; };
8718CB98263063BB004BF4EE /* tcpclientinfosender.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tcpclientinfosender.h; path = ../src/tcpclientinfosender.h; sourceTree = "<group>"; };
8718CB99263063BB004BF4EE /* templateinfosender.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = templateinfosender.h; path = ../src/templateinfosender.h; sourceTree = "<group>"; };
8718CB9A263063BC004BF4EE /* soleelliptical.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = soleelliptical.cpp; path = ../src/soleelliptical.cpp; sourceTree = "<group>"; };
8718CB9B263063BC004BF4EE /* templateinfosender.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = templateinfosender.cpp; path = ../src/templateinfosender.cpp; sourceTree = "<group>"; };
8718CB9C263063BC004BF4EE /* soleelliptical.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = soleelliptical.h; path = ../src/soleelliptical.h; sourceTree = "<group>"; };
8718CB9D263063BC004BF4EE /* templateinfosenderbuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = templateinfosenderbuilder.cpp; path = ../src/templateinfosenderbuilder.cpp; sourceTree = "<group>"; };
8718CB9E263063BC004BF4EE /* templateinfosenderbuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = templateinfosenderbuilder.h; path = ../src/templateinfosenderbuilder.h; sourceTree = "<group>"; };
8718CB9F263063BD004BF4EE /* tcpclientinfosender.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tcpclientinfosender.cpp; path = ../src/tcpclientinfosender.cpp; sourceTree = "<group>"; };
8718CBA1263063BD004BF4EE /* webserverinfosender.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = webserverinfosender.h; path = ../src/webserverinfosender.h; sourceTree = "<group>"; };
8718CBA7263063CD004BF4EE /* moc_templateinfosenderbuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_templateinfosenderbuilder.cpp; sourceTree = "<group>"; };
8718CBA8263063CD004BF4EE /* moc_tcpclientinfosender.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_tcpclientinfosender.cpp; sourceTree = "<group>"; };
8718CBA9263063CE004BF4EE /* moc_templateinfosender.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_templateinfosender.cpp; sourceTree = "<group>"; };
8718CBAA263063CE004BF4EE /* moc_soleelliptical.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_soleelliptical.cpp; sourceTree = "<group>"; };
871B9FD0265E6A8800DB41F4 /* powerzonepack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = powerzonepack.h; path = ../src/powerzonepack.h; sourceTree = "<group>"; };
871B9FD1265E6A8800DB41F4 /* powerzonepack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = powerzonepack.cpp; path = ../src/powerzonepack.cpp; sourceTree = "<group>"; };
871B9FD3265E6A9A00DB41F4 /* moc_powerzonepack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_powerzonepack.cpp; sourceTree = "<group>"; };
871E4CD025A6FB5A00E18D6D /* BLEPeripheralManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BLEPeripheralManager.swift; path = ../src/ios/BLEPeripheralManager.swift; sourceTree = "<group>"; };
872BAB4D261750EE006A59AB /* libQt5Charts.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQt5Charts.a; path = ../../Qt/5.15.2/ios/lib/libQt5Charts.a; sourceTree = "<group>"; };
872BAB4F261751FB006A59AB /* libqtchartsqml2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libqtchartsqml2.a; path = ../../Qt/5.15.2/ios/qml/QtCharts/libqtchartsqml2.a; sourceTree = "<group>"; };
873063BC259DF20000DA0F44 /* heartratebelt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = heartratebelt.cpp; path = ../src/heartratebelt.cpp; sourceTree = "<group>"; };
873063BD259DF20000DA0F44 /* heartratebelt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = heartratebelt.h; path = ../src/heartratebelt.h; sourceTree = "<group>"; };
873063BF259DF2C500DA0F44 /* moc_heartratebelt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_heartratebelt.cpp; sourceTree = "<group>"; };
87310B1A266FBB54008BA0D6 /* homefitnessbuddy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = homefitnessbuddy.h; path = ../src/homefitnessbuddy.h; sourceTree = "<group>"; };
87310B1B266FBB54008BA0D6 /* smartrowrower.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = smartrowrower.cpp; path = ../src/smartrowrower.cpp; sourceTree = "<group>"; };
87310B1C266FBB57008BA0D6 /* homefitnessbuddy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = homefitnessbuddy.cpp; path = ../src/homefitnessbuddy.cpp; sourceTree = "<group>"; };
87310B1D266FBB58008BA0D6 /* smartrowrower.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = smartrowrower.h; path = ../src/smartrowrower.h; sourceTree = "<group>"; };
87310B20266FBB6E008BA0D6 /* moc_homefitnessbuddy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_homefitnessbuddy.cpp; sourceTree = "<group>"; };
87310B21266FBB77008BA0D6 /* moc_smartrowrower.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_smartrowrower.cpp; sourceTree = "<group>"; };
87318AAB2683799100770F13 /* echelonstride.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = echelonstride.cpp; path = ../src/echelonstride.cpp; sourceTree = "<group>"; };
87318AAC2683799100770F13 /* echelonstride.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = echelonstride.h; path = ../src/echelonstride.h; sourceTree = "<group>"; };
87318AAE2683799C00770F13 /* moc_echelonstride.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_echelonstride.cpp; sourceTree = "<group>"; };
87318AB026837AA500770F13 /* libQt5WebSockets.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQt5WebSockets.a; path = ../../Qt/5.15.2/ios/lib/libQt5WebSockets.a; sourceTree = "<group>"; };
87368824259C602800C71C7E /* watchAppStart.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = watchAppStart.swift; path = ../src/ios/watchAppStart.swift; sourceTree = "<group>"; };
87420DF5269D770F000C5EC6 /* libQt5WebView.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQt5WebView.a; path = ../../Qt/5.15.2/ios/lib/libQt5WebView.a; sourceTree = "<group>"; };
87420DF7269D7CE1000C5EC6 /* libqtwebview_darwin.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libqtwebview_darwin.a; path = ../../Qt/5.15.2/ios/plugins/webview/libqtwebview_darwin.a; sourceTree = "<group>"; };
87420DF9269D7F43000C5EC6 /* libdeclarative_webview.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libdeclarative_webview.a; path = ../../Qt/5.15.2/ios/qml/QtWebView/libdeclarative_webview.a; sourceTree = "<group>"; };
87440FBB2640291700E4DC0B /* fitplusbike.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = fitplusbike.h; path = ../src/fitplusbike.h; sourceTree = "<group>"; };
87440FBC2640291700E4DC0B /* fitplusbike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fitplusbike.cpp; path = ../src/fitplusbike.cpp; sourceTree = "<group>"; };
87440FBE2640292900E4DC0B /* moc_fitplusbike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_fitplusbike.cpp; sourceTree = "<group>"; };
87586A3F25B8340D00A243C4 /* proformbike.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = proformbike.h; path = ../src/proformbike.h; sourceTree = "<group>"; };
87586A4025B8340E00A243C4 /* proformbike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = proformbike.cpp; path = ../src/proformbike.cpp; sourceTree = "<group>"; };
87586A4225B8341B00A243C4 /* moc_proformbike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_proformbike.cpp; sourceTree = "<group>"; };
875F69B726342E8D0009FD78 /* spirittreadmill.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = spirittreadmill.h; path = ../src/spirittreadmill.h; sourceTree = "<group>"; };
875F69B826342E8D0009FD78 /* spirittreadmill.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = spirittreadmill.cpp; path = ../src/spirittreadmill.cpp; sourceTree = "<group>"; };
875F69BA26342E9A0009FD78 /* moc_spirittreadmill.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_spirittreadmill.cpp; sourceTree = "<group>"; };
8762D50B2601F7EA00F6F049 /* M3iNS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = M3iNS.mm; path = ../src/ios/M3iNS.mm; sourceTree = "<group>"; };
8762D50C2601F7EA00F6F049 /* M3iNSQT.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = M3iNSQT.cpp; path = ../src/ios/M3iNSQT.cpp; sourceTree = "<group>"; };
8762D50D2601F7EA00F6F049 /* M3iNS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = M3iNS.h; path = ../src/ios/M3iNS.h; sourceTree = "<group>"; };
@@ -559,6 +673,11 @@
8772A0E425E43AD90080718C /* trxappgateusbbike.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = trxappgateusbbike.h; path = ../src/trxappgateusbbike.h; sourceTree = "<group>"; };
8772A0E525E43ADA0080718C /* trxappgateusbbike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = trxappgateusbbike.cpp; path = ../src/trxappgateusbbike.cpp; sourceTree = "<group>"; };
8772A0E725E43AE70080718C /* moc_trxappgateusbbike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_trxappgateusbbike.cpp; sourceTree = "<group>"; };
877A7606269D8E0F0024DD2C /* libqtwebview_darwin_debug.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libqtwebview_darwin_debug.a; path = ../../Qt/5.15.2/ios/plugins/webview/libqtwebview_darwin_debug.a; sourceTree = "<group>"; };
877A7608269D8E9F0024DD2C /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
8780D945264FB8AB00192D41 /* smartspin2k.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = smartspin2k.h; path = ../src/smartspin2k.h; sourceTree = "<group>"; };
8780D946264FB8AB00192D41 /* smartspin2k.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = smartspin2k.cpp; path = ../src/smartspin2k.cpp; sourceTree = "<group>"; };
8780D948264FB8B800192D41 /* moc_smartspin2k.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_smartspin2k.cpp; sourceTree = "<group>"; };
8781907C2615089D0085E656 /* peloton.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = peloton.cpp; path = ../src/peloton.cpp; sourceTree = "<group>"; };
8781907D2615089D0085E656 /* peloton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = peloton.h; path = ../src/peloton.h; sourceTree = "<group>"; };
8781907F261508B10085E656 /* moc_peloton.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_peloton.cpp; sourceTree = "<group>"; };
@@ -571,9 +690,27 @@
878A331725AB4FF800BD13E1 /* yesoulbike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = yesoulbike.cpp; path = ../src/yesoulbike.cpp; sourceTree = "<group>"; };
878A331825AB4FF800BD13E1 /* yesoulbike.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = yesoulbike.h; path = ../src/yesoulbike.h; sourceTree = "<group>"; };
878A331B25AB50C200BD13E1 /* moc_yesoulbike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_yesoulbike.cpp; sourceTree = "<group>"; };
87900DC4268B672E000CB351 /* renphobike.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = renphobike.h; path = ../src/renphobike.h; sourceTree = "<group>"; };
87900DC5268B672E000CB351 /* renphobike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = renphobike.cpp; path = ../src/renphobike.cpp; sourceTree = "<group>"; };
87900DC7268B673C000CB351 /* moc_renphobike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_renphobike.cpp; sourceTree = "<group>"; };
8791A8A725C8602A003B50B2 /* inspirebike.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = inspirebike.h; path = ../src/inspirebike.h; sourceTree = "<group>"; };
8791A8A825C8602A003B50B2 /* inspirebike.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = inspirebike.cpp; path = ../src/inspirebike.cpp; sourceTree = "<group>"; };
8791A8A925C8603F003B50B2 /* moc_inspirebike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_inspirebike.cpp; sourceTree = "<group>"; };
87A0C4B7262329A600121A76 /* npecablebike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = npecablebike.cpp; path = ../src/npecablebike.cpp; sourceTree = "<group>"; };
87A0C4B8262329A600121A76 /* cscbike.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cscbike.h; path = ../src/cscbike.h; sourceTree = "<group>"; };
87A0C4B9262329A600121A76 /* cscbike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cscbike.cpp; path = ../src/cscbike.cpp; sourceTree = "<group>"; };
87A0C4BA262329A600121A76 /* npecablebike.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = npecablebike.h; path = ../src/npecablebike.h; sourceTree = "<group>"; };
87A0C4BD262329B500121A76 /* moc_cscbike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_cscbike.cpp; sourceTree = "<group>"; };
87A0C4BE262329B500121A76 /* moc_npecablebike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_npecablebike.cpp; sourceTree = "<group>"; };
87A18F052660D5C0002D7C96 /* ftmsrower.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ftmsrower.cpp; path = ../src/ftmsrower.cpp; sourceTree = "<group>"; };
87A18F062660D5C1002D7C96 /* ftmsrower.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ftmsrower.h; path = ../src/ftmsrower.h; sourceTree = "<group>"; };
87A18F082660D5D9002D7C96 /* moc_ftmsrower.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_ftmsrower.cpp; sourceTree = "<group>"; };
87A3BC1E2656429300D302E3 /* echelonrower.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = echelonrower.h; path = ../src/echelonrower.h; sourceTree = "<group>"; };
87A3BC1F2656429400D302E3 /* rower.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = rower.cpp; path = ../src/rower.cpp; sourceTree = "<group>"; };
87A3BC202656429400D302E3 /* echelonrower.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = echelonrower.cpp; path = ../src/echelonrower.cpp; sourceTree = "<group>"; };
87A3BC212656429400D302E3 /* rower.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rower.h; path = ../src/rower.h; sourceTree = "<group>"; };
87A3BC24265642A200D302E3 /* moc_rower.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_rower.cpp; sourceTree = "<group>"; };
87A3BC25265642A200D302E3 /* moc_echelonrower.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_echelonrower.cpp; sourceTree = "<group>"; };
87A3EBB925D2CFED0040EB4C /* sportstechbike.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = sportstechbike.h; path = ../src/sportstechbike.h; sourceTree = "<group>"; };
87A3EBBA25D2CFED0040EB4C /* sportstechbike.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = sportstechbike.cpp; path = ../src/sportstechbike.cpp; sourceTree = "<group>"; };
87A4B75F25AF27CB0027EF3C /* metric.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = metric.cpp; path = ../src/metric.cpp; sourceTree = "<group>"; };
@@ -588,6 +725,49 @@
87B617EF25F260140094A1CB /* moc_fitshowtreadmill.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_fitshowtreadmill.cpp; sourceTree = "<group>"; };
87B617F025F260140094A1CB /* moc_snodebike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_snodebike.cpp; sourceTree = "<group>"; };
87B617F125F260150094A1CB /* moc_screencapture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_screencapture.cpp; sourceTree = "<group>"; };
87BB1773269E983200F46A1C /* moc_webserverinfosender.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_webserverinfosender.cpp; sourceTree = "<group>"; };
87BB1775269E987000F46A1C /* libQt5HttpServer.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQt5HttpServer.a; path = ../../Qt/5.15.2/ios/lib/libQt5HttpServer.a; sourceTree = "<group>"; };
87C5F09726285E5A0067A1B5 /* mimemessage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = mimemessage.cpp; path = ../src/smtpclient/src/mimemessage.cpp; sourceTree = "<group>"; };
87C5F09826285E5A0067A1B5 /* mimecontentformatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mimecontentformatter.h; path = ../src/smtpclient/src/mimecontentformatter.h; sourceTree = "<group>"; };
87C5F09926285E5B0067A1B5 /* smtpclient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = smtpclient.h; path = ../src/smtpclient/src/smtpclient.h; sourceTree = "<group>"; };
87C5F09A26285E5B0067A1B5 /* quotedprintable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = quotedprintable.cpp; path = ../src/smtpclient/src/quotedprintable.cpp; sourceTree = "<group>"; };
87C5F09B26285E5B0067A1B5 /* mimecontentformatter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = mimecontentformatter.cpp; path = ../src/smtpclient/src/mimecontentformatter.cpp; sourceTree = "<group>"; };
87C5F09C26285E5B0067A1B5 /* stagesbike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stagesbike.cpp; path = ../src/stagesbike.cpp; sourceTree = "<group>"; };
87C5F09D26285E5B0067A1B5 /* stagesbike.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stagesbike.h; path = ../src/stagesbike.h; sourceTree = "<group>"; };
87C5F09E26285E5B0067A1B5 /* mimefile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mimefile.h; path = ../src/smtpclient/src/mimefile.h; sourceTree = "<group>"; };
87C5F09F26285E5B0067A1B5 /* mimeattachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mimeattachment.h; path = ../src/smtpclient/src/mimeattachment.h; sourceTree = "<group>"; };
87C5F0A026285E5C0067A1B5 /* mimehtml.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = mimehtml.cpp; path = ../src/smtpclient/src/mimehtml.cpp; sourceTree = "<group>"; };
87C5F0A126285E5C0067A1B5 /* mimefile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = mimefile.cpp; path = ../src/smtpclient/src/mimefile.cpp; sourceTree = "<group>"; };
87C5F0A226285E5C0067A1B5 /* mimehtml.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mimehtml.h; path = ../src/smtpclient/src/mimehtml.h; sourceTree = "<group>"; };
87C5F0A326285E5C0067A1B5 /* smtpexports.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = smtpexports.h; path = ../src/smtpclient/src/smtpexports.h; sourceTree = "<group>"; };
87C5F0A426285E5C0067A1B5 /* mimetext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = mimetext.cpp; path = ../src/smtpclient/src/mimetext.cpp; sourceTree = "<group>"; };
87C5F0A526285E5C0067A1B5 /* SmtpMime */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = SmtpMime; path = ../src/smtpclient/src/SmtpMime; sourceTree = "<group>"; };
87C5F0A626285E5D0067A1B5 /* mimemessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mimemessage.h; path = ../src/smtpclient/src/mimemessage.h; sourceTree = "<group>"; };
87C5F0A726285E5D0067A1B5 /* chronobike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = chronobike.cpp; path = ../src/chronobike.cpp; sourceTree = "<group>"; };
87C5F0A826285E5D0067A1B5 /* quotedprintable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = quotedprintable.h; path = ../src/smtpclient/src/quotedprintable.h; sourceTree = "<group>"; };
87C5F0A926285E5D0067A1B5 /* mimemultipart.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = mimemultipart.cpp; path = ../src/smtpclient/src/mimemultipart.cpp; sourceTree = "<group>"; };
87C5F0AA26285E5D0067A1B5 /* chronobike.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = chronobike.h; path = ../src/chronobike.h; sourceTree = "<group>"; };
87C5F0AB26285E5D0067A1B5 /* emailaddress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = emailaddress.h; path = ../src/smtpclient/src/emailaddress.h; sourceTree = "<group>"; };
87C5F0AC26285E5D0067A1B5 /* smtpclient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = smtpclient.cpp; path = ../src/smtpclient/src/smtpclient.cpp; sourceTree = "<group>"; };
87C5F0AD26285E5D0067A1B5 /* mimepart.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = mimepart.cpp; path = ../src/smtpclient/src/mimepart.cpp; sourceTree = "<group>"; };
87C5F0AE26285E5D0067A1B5 /* mimeattachment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = mimeattachment.cpp; path = ../src/smtpclient/src/mimeattachment.cpp; sourceTree = "<group>"; };
87C5F0AF26285E5E0067A1B5 /* emailaddress.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = emailaddress.cpp; path = ../src/smtpclient/src/emailaddress.cpp; sourceTree = "<group>"; };
87C5F0B026285E5E0067A1B5 /* mimeinlinefile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mimeinlinefile.h; path = ../src/smtpclient/src/mimeinlinefile.h; sourceTree = "<group>"; };
87C5F0B126285E5E0067A1B5 /* mimepart.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mimepart.h; path = ../src/smtpclient/src/mimepart.h; sourceTree = "<group>"; };
87C5F0B226285E5E0067A1B5 /* mimemultipart.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mimemultipart.h; path = ../src/smtpclient/src/mimemultipart.h; sourceTree = "<group>"; };
87C5F0B326285E5E0067A1B5 /* mimeinlinefile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = mimeinlinefile.cpp; path = ../src/smtpclient/src/mimeinlinefile.cpp; sourceTree = "<group>"; };
87C5F0B426285E5E0067A1B5 /* mimetext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mimetext.h; path = ../src/smtpclient/src/mimetext.h; sourceTree = "<group>"; };
87C5F0C426285E7D0067A1B5 /* moc_mimepart.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_mimepart.cpp; sourceTree = "<group>"; };
87C5F0C526285E7D0067A1B5 /* moc_smtpclient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_smtpclient.cpp; sourceTree = "<group>"; };
87C5F0C626285E7D0067A1B5 /* moc_stagesbike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_stagesbike.cpp; sourceTree = "<group>"; };
87C5F0C726285E7D0067A1B5 /* moc_mimemultipart.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_mimemultipart.cpp; sourceTree = "<group>"; };
87C5F0C826285E7D0067A1B5 /* moc_mimecontentformatter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_mimecontentformatter.cpp; sourceTree = "<group>"; };
87C5F0C926285E7D0067A1B5 /* moc_chronobike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_chronobike.cpp; sourceTree = "<group>"; };
87C5F0CA26285E7E0067A1B5 /* moc_mimehtml.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_mimehtml.cpp; sourceTree = "<group>"; };
87C5F0CB26285E7E0067A1B5 /* moc_emailaddress.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_emailaddress.cpp; sourceTree = "<group>"; };
87C5F0CC26285E7E0067A1B5 /* moc_mimefile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_mimefile.cpp; sourceTree = "<group>"; };
87C5F0CD26285E7E0067A1B5 /* moc_quotedprintable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_quotedprintable.cpp; sourceTree = "<group>"; };
87C5F0CE26285E7E0067A1B5 /* moc_mimeattachment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_mimeattachment.cpp; sourceTree = "<group>"; };
87CC3B9B25A08812001EC5A8 /* moc_domyoselliptical.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_domyoselliptical.cpp; sourceTree = "<group>"; };
87CC3B9C25A08812001EC5A8 /* moc_elliptical.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_elliptical.cpp; sourceTree = "<group>"; };
87CC3B9F25A0885D001EC5A8 /* domyoselliptical.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = domyoselliptical.cpp; path = ../src/domyoselliptical.cpp; sourceTree = "<group>"; };
@@ -600,6 +780,7 @@
87D2699D25F535180076AA48 /* skandikawiribike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = skandikawiribike.cpp; path = ../src/skandikawiribike.cpp; sourceTree = "<group>"; };
87D269A125F535300076AA48 /* moc_skandikawiribike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_skandikawiribike.cpp; sourceTree = "<group>"; };
87D269A225F535300076AA48 /* moc_m3ibike.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_m3ibike.cpp; sourceTree = "<group>"; };
87D44180269DE979003263D5 /* webserverinfosender.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = webserverinfosender.cpp; path = ../src/webserverinfosender.cpp; sourceTree = "<group>"; };
87DF68B625E2673600FCDA46 /* eslinkertreadmill.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = eslinkertreadmill.cpp; path = ../src/eslinkertreadmill.cpp; sourceTree = "<group>"; };
87DF68B725E2673600FCDA46 /* eslinkertreadmill.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = eslinkertreadmill.h; path = ../src/eslinkertreadmill.h; sourceTree = "<group>"; };
87DF68BA25E2675100FCDA46 /* moc_eslinkertreadmill.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_eslinkertreadmill.cpp; sourceTree = "<group>"; };
@@ -614,6 +795,9 @@
87EFB56D25BD703C0039DD5A /* proformtreadmill.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = proformtreadmill.h; path = ../src/proformtreadmill.h; sourceTree = "<group>"; };
87EFB56F25BD704A0039DD5A /* moc_proformtreadmill.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_proformtreadmill.cpp; sourceTree = "<group>"; };
87FD05DDC378E9BAD82A818F /* fit_ohr_settings_mesg_listener.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = fit_ohr_settings_mesg_listener.hpp; path = "/Users/cagnulein/qdomyos-zwift/src/fit-sdk/fit_ohr_settings_mesg_listener.hpp"; sourceTree = "<absolute>"; };
87FE5BAD2692F3130056EFC8 /* tacxneo2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tacxneo2.cpp; path = ../src/tacxneo2.cpp; sourceTree = "<group>"; };
87FE5BAE2692F3130056EFC8 /* tacxneo2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tacxneo2.h; path = ../src/tacxneo2.h; sourceTree = "<group>"; };
87FE5BB02692F31E0056EFC8 /* moc_tacxneo2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moc_tacxneo2.cpp; sourceTree = "<group>"; };
8865E12618F8B1C6C0E68392 /* fit_magnetometer_data_mesg_listener.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = fit_magnetometer_data_mesg_listener.hpp; path = "/Users/cagnulein/qdomyos-zwift/src/fit-sdk/fit_magnetometer_data_mesg_listener.hpp"; sourceTree = "<absolute>"; };
888A6DE1E4CF07F80E80394B /* fit_climb_pro_mesg.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = fit_climb_pro_mesg.hpp; path = "/Users/cagnulein/qdomyos-zwift/src/fit-sdk/fit_climb_pro_mesg.hpp"; sourceTree = "<absolute>"; };
89342BA50B7537C46D310A9D /* moc_gpx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_gpx.cpp; path = "/Users/cagnulein/qdomyos-zwift/build-qdomyos-zwift-Qt_5_15_2_for_iOS-Debug/moc_gpx.cpp"; sourceTree = "<absolute>"; };
@@ -824,6 +1008,11 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
87BB1776269E987100F46A1C /* libQt5HttpServer.a in Link Binary With Libraries */,
87420DF6269D770F000C5EC6 /* libQt5WebView.a in Link Binary With Libraries */,
87318AB126837C7600770F13 /* libQt5WebSockets.a in Link Binary With Libraries */,
872BAB50261751FB006A59AB /* libqtchartsqml2.a in Link Binary With Libraries */,
872BAB4E261750EE006A59AB /* libQt5Charts.a in Link Binary With Libraries */,
8781908526150C8E0085E656 /* libqtlabsplatformplugin.a in Link Binary With Libraries */,
38B66B7A90741F136A02EDEB /* qios in Link Binary With Libraries */,
B460F624007324313696BE86 /* QuartzCore.framework in Link Binary With Libraries */,
@@ -847,6 +1036,7 @@
CB4712349D96726A75F70643 /* CoreLocation.framework in Link Binary With Libraries */,
772295D025B09DF590D77745 /* qtposition_positionpoll in Link Binary With Libraries */,
6E6F464EA774C04145F65971 /* qmldbg_debugger in Link Binary With Libraries */,
87420DFA269D7F44000C5EC6 /* libdeclarative_webview.a in Link Binary With Libraries */,
8FF7ED75180A8827C6B6AF63 /* qmldbg_inspector in Link Binary With Libraries */,
409582A461395DCAEA1D8782 /* qmldbg_local in Link Binary With Libraries */,
868B65D0AB5114A4A0D5479E /* qmldbg_messages in Link Binary With Libraries */,
@@ -881,6 +1071,7 @@
7167B22320D1DE063C3DF45E /* windowplugin in Link Binary With Libraries */,
F55B541DFCF9C73160D34905 /* qtquick2plugin in Link Binary With Libraries */,
A8D776D53866CE53322CD19B /* Qt5QmlWorkerScript in Link Binary With Libraries */,
877A7609269D8E9F0024DD2C /* WebKit.framework in Link Binary With Libraries */,
03909ECE1BEBAF9388D44088 /* qtquicktemplates2plugin in Link Binary With Libraries */,
D7D72477443E32C7447EF906 /* qtquickcontrols2plugin in Link Binary With Libraries */,
5A4A6C1B12D4D769431E876E /* qtquickcontrols2materialstyleplugin in Link Binary With Libraries */,
@@ -903,6 +1094,7 @@
15364689D2AB5A30E87A689F /* Security.framework in Link Binary With Libraries */,
D4639595C3BCF2A39D88DF6E /* SystemConfiguration.framework in Link Binary With Libraries */,
906D4B242F504925A3CF2DBB /* GSS.framework in Link Binary With Libraries */,
87F1179E26A5FBDE00541B3A /* libqtwebview_darwin.a in Link Binary With Libraries */,
A2512002BCC1BFB4FC6D60C1 /* Qt5Core in Link Binary With Libraries */,
F8B465CE34D8DF87AAE95913 /* CoreFoundation.framework in Link Binary With Libraries */,
F26454630C80841CBDCFE1CA /* Foundation.framework in Link Binary With Libraries */,
@@ -918,6 +1110,7 @@
0FF051564C679F373AD93E32 /* ios */ = {
isa = PBXGroup;
children = (
2F0E70F726316F3600E11F3A /* virtualbike_zwift.swift */,
871E4CD025A6FB5A00E18D6D /* BLEPeripheralManager.swift */,
876E4E4E259479EE00BD5714 /* APIFetcher.swift */,
876E4E52259479EE00BD5714 /* AppDelegate.swift */,
@@ -937,6 +1130,36 @@
25B08E2869634E9BCBA333A2 /* Generated Sources */ = {
isa = PBXGroup;
children = (
87BB1773269E983200F46A1C /* moc_webserverinfosender.cpp */,
87FE5BB02692F31E0056EFC8 /* moc_tacxneo2.cpp */,
87900DC7268B673C000CB351 /* moc_renphobike.cpp */,
87318AAE2683799C00770F13 /* moc_echelonstride.cpp */,
87310B20266FBB6E008BA0D6 /* moc_homefitnessbuddy.cpp */,
87310B21266FBB77008BA0D6 /* moc_smartrowrower.cpp */,
87A18F082660D5D9002D7C96 /* moc_ftmsrower.cpp */,
871B9FD3265E6A9A00DB41F4 /* moc_powerzonepack.cpp */,
87A3BC25265642A200D302E3 /* moc_echelonrower.cpp */,
87A3BC24265642A200D302E3 /* moc_rower.cpp */,
8780D948264FB8B800192D41 /* moc_smartspin2k.cpp */,
87440FBE2640292900E4DC0B /* moc_fitplusbike.cpp */,
875F69BA26342E9A0009FD78 /* moc_spirittreadmill.cpp */,
8718CBAA263063CE004BF4EE /* moc_soleelliptical.cpp */,
8718CBA8263063CD004BF4EE /* moc_tcpclientinfosender.cpp */,
8718CBA9263063CE004BF4EE /* moc_templateinfosender.cpp */,
8718CBA7263063CD004BF4EE /* moc_templateinfosenderbuilder.cpp */,
87C5F0C926285E7D0067A1B5 /* moc_chronobike.cpp */,
87C5F0CB26285E7E0067A1B5 /* moc_emailaddress.cpp */,
87C5F0CE26285E7E0067A1B5 /* moc_mimeattachment.cpp */,
87C5F0C826285E7D0067A1B5 /* moc_mimecontentformatter.cpp */,
87C5F0CC26285E7E0067A1B5 /* moc_mimefile.cpp */,
87C5F0CA26285E7E0067A1B5 /* moc_mimehtml.cpp */,
87C5F0C726285E7D0067A1B5 /* moc_mimemultipart.cpp */,
87C5F0C426285E7D0067A1B5 /* moc_mimepart.cpp */,
87C5F0CD26285E7E0067A1B5 /* moc_quotedprintable.cpp */,
87C5F0C526285E7D0067A1B5 /* moc_smtpclient.cpp */,
87C5F0C626285E7D0067A1B5 /* moc_stagesbike.cpp */,
87A0C4BD262329B500121A76 /* moc_cscbike.cpp */,
87A0C4BE262329B500121A76 /* moc_npecablebike.cpp */,
8781907F261508B10085E656 /* moc_peloton.cpp */,
87D269A225F535300076AA48 /* moc_m3ibike.cpp */,
87D269A125F535300076AA48 /* moc_skandikawiribike.cpp */,
@@ -985,6 +1208,76 @@
2EB56BE3C2D93CDAB0C52E67 /* Sources */ = {
isa = PBXGroup;
children = (
87D44180269DE979003263D5 /* webserverinfosender.cpp */,
87FE5BAD2692F3130056EFC8 /* tacxneo2.cpp */,
87FE5BAE2692F3130056EFC8 /* tacxneo2.h */,
87900DC5268B672E000CB351 /* renphobike.cpp */,
87900DC4268B672E000CB351 /* renphobike.h */,
87318AAB2683799100770F13 /* echelonstride.cpp */,
87318AAC2683799100770F13 /* echelonstride.h */,
87310B1C266FBB57008BA0D6 /* homefitnessbuddy.cpp */,
87310B1A266FBB54008BA0D6 /* homefitnessbuddy.h */,
87310B1B266FBB54008BA0D6 /* smartrowrower.cpp */,
87310B1D266FBB58008BA0D6 /* smartrowrower.h */,
87083D9526678EFA0072410D /* zwiftworkout.cpp */,
87083D9426678EFA0072410D /* zwiftworkout.h */,
87A18F052660D5C0002D7C96 /* ftmsrower.cpp */,
87A18F062660D5C1002D7C96 /* ftmsrower.h */,
871B9FD1265E6A8800DB41F4 /* powerzonepack.cpp */,
871B9FD0265E6A8800DB41F4 /* powerzonepack.h */,
87A3BC202656429400D302E3 /* echelonrower.cpp */,
87A3BC1E2656429300D302E3 /* echelonrower.h */,
87A3BC1F2656429400D302E3 /* rower.cpp */,
87A3BC212656429400D302E3 /* rower.h */,
8780D946264FB8AB00192D41 /* smartspin2k.cpp */,
8780D945264FB8AB00192D41 /* smartspin2k.h */,
87440FBC2640291700E4DC0B /* fitplusbike.cpp */,
87440FBB2640291700E4DC0B /* fitplusbike.h */,
875F69B826342E8D0009FD78 /* spirittreadmill.cpp */,
875F69B726342E8D0009FD78 /* spirittreadmill.h */,
8718CB9A263063BC004BF4EE /* soleelliptical.cpp */,
8718CB9C263063BC004BF4EE /* soleelliptical.h */,
8718CB9F263063BD004BF4EE /* tcpclientinfosender.cpp */,
8718CB98263063BB004BF4EE /* tcpclientinfosender.h */,
8718CB9B263063BC004BF4EE /* templateinfosender.cpp */,
8718CB99263063BB004BF4EE /* templateinfosender.h */,
8718CB9D263063BC004BF4EE /* templateinfosenderbuilder.cpp */,
8718CB9E263063BC004BF4EE /* templateinfosenderbuilder.h */,
8718CBA1263063BD004BF4EE /* webserverinfosender.h */,
87C5F0A726285E5D0067A1B5 /* chronobike.cpp */,
87C5F0AA26285E5D0067A1B5 /* chronobike.h */,
87C5F0AF26285E5E0067A1B5 /* emailaddress.cpp */,
87C5F0AB26285E5D0067A1B5 /* emailaddress.h */,
87C5F0AE26285E5D0067A1B5 /* mimeattachment.cpp */,
87C5F09F26285E5B0067A1B5 /* mimeattachment.h */,
87C5F09B26285E5B0067A1B5 /* mimecontentformatter.cpp */,
87C5F09826285E5A0067A1B5 /* mimecontentformatter.h */,
87C5F0A126285E5C0067A1B5 /* mimefile.cpp */,
87C5F09E26285E5B0067A1B5 /* mimefile.h */,
87C5F0A026285E5C0067A1B5 /* mimehtml.cpp */,
87C5F0A226285E5C0067A1B5 /* mimehtml.h */,
87C5F0B326285E5E0067A1B5 /* mimeinlinefile.cpp */,
87C5F0B026285E5E0067A1B5 /* mimeinlinefile.h */,
87C5F09726285E5A0067A1B5 /* mimemessage.cpp */,
87C5F0A626285E5D0067A1B5 /* mimemessage.h */,
87C5F0A926285E5D0067A1B5 /* mimemultipart.cpp */,
87C5F0B226285E5E0067A1B5 /* mimemultipart.h */,
87C5F0AD26285E5D0067A1B5 /* mimepart.cpp */,
87C5F0B126285E5E0067A1B5 /* mimepart.h */,
87C5F0A426285E5C0067A1B5 /* mimetext.cpp */,
87C5F0B426285E5E0067A1B5 /* mimetext.h */,
87C5F09A26285E5B0067A1B5 /* quotedprintable.cpp */,
87C5F0A826285E5D0067A1B5 /* quotedprintable.h */,
87C5F0AC26285E5D0067A1B5 /* smtpclient.cpp */,
87C5F09926285E5B0067A1B5 /* smtpclient.h */,
87C5F0A326285E5C0067A1B5 /* smtpexports.h */,
87C5F0A526285E5C0067A1B5 /* SmtpMime */,
87C5F09C26285E5B0067A1B5 /* stagesbike.cpp */,
87C5F09D26285E5B0067A1B5 /* stagesbike.h */,
87A0C4B9262329A600121A76 /* cscbike.cpp */,
87A0C4B8262329A600121A76 /* cscbike.h */,
87A0C4B7262329A600121A76 /* npecablebike.cpp */,
87A0C4BA262329A600121A76 /* npecablebike.h */,
8781907C2615089D0085E656 /* peloton.cpp */,
8781907D2615089D0085E656 /* peloton.h */,
8762D5112601F89500F6F049 /* scanrecordresult.cpp */,
@@ -1157,6 +1450,15 @@
AF39DD055C3EF8226FBE929D /* Frameworks */ = {
isa = PBXGroup;
children = (
87BB1775269E987000F46A1C /* libQt5HttpServer.a */,
877A7608269D8E9F0024DD2C /* WebKit.framework */,
877A7606269D8E0F0024DD2C /* libqtwebview_darwin_debug.a */,
87420DF9269D7F43000C5EC6 /* libdeclarative_webview.a */,
87420DF7269D7CE1000C5EC6 /* libqtwebview_darwin.a */,
87420DF5269D770F000C5EC6 /* libQt5WebView.a */,
87318AB026837AA500770F13 /* libQt5WebSockets.a */,
872BAB4F261751FB006A59AB /* libqtchartsqml2.a */,
872BAB4D261750EE006A59AB /* libQt5Charts.a */,
8781908326150C5B0085E656 /* libqtlabsplatformplugin_debug.a */,
8781908126150B490085E656 /* libqtlabsplatformplugin.a */,
2D4A13931169E5681CE465F0 /* Qt5NetworkAuth */,
@@ -1639,6 +1941,7 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
87C5F0BC26285E5F0067A1B5 /* SmtpMime in Copy Bundle Resources */,
2188AA0A52E9CD610922F82E /* Default-568h@2x.png in Copy Bundle Resources */,
23FA86F306CFF9E704521C39 /* LaunchScreen.storyboard in Copy Bundle Resources */,
AE8CD574A5B60EF037ACA8F8 /* Images.xcassets in Copy Bundle Resources */,
@@ -1711,81 +2014,128 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
87C5F0BB26285E5F0067A1B5 /* mimetext.cpp in Compile Sources */,
2F0E70F826316F3600E11F3A /* virtualbike_zwift.swift in Compile Sources */,
8772A0E825E43AE70080718C /* moc_trxappgateusbbike.cpp in Compile Sources */,
87062646259480B200D06586 /* ViewController.swift in Compile Sources */,
87D269A425F535340076AA48 /* moc_m3ibike.cpp in Compile Sources */,
EA780CE97E201242E33E6EEE /* bike.cpp in Compile Sources */,
87C5F0D926285E7E0067A1B5 /* moc_mimeattachment.cpp in Compile Sources */,
87B617F225F260150094A1CB /* moc_fitshowtreadmill.cpp in Compile Sources */,
8556B13A3D02D52A21FC5E3E /* bluetooth.cpp in Compile Sources */,
87586A4125B8340E00A243C4 /* proformbike.cpp in Compile Sources */,
87C5F0C126285E5F0067A1B5 /* mimeattachment.cpp in Compile Sources */,
87440FBD2640291700E4DC0B /* fitplusbike.cpp in Compile Sources */,
878A331A25AB4FF800BD13E1 /* yesoulbike.cpp in Compile Sources */,
871E4CD125A6FB5A00E18D6D /* BLEPeripheralManager.swift in Compile Sources */,
20A50533946A39CBD2C89104 /* bluetoothdevice.cpp in Compile Sources */,
87C5F0D126285E7E0067A1B5 /* moc_stagesbike.cpp in Compile Sources */,
87E5D2C625E69F3100BDBE6C /* horizontreadmill.cpp in Compile Sources */,
87E5D2C825E69F4700BDBE6C /* moc_horizontreadmill.cpp in Compile Sources */,
F1F4043967BC815770C8BEEA /* domyostreadmill.cpp in Compile Sources */,
87C5F0BF26285E5F0067A1B5 /* smtpclient.cpp in Compile Sources */,
87C5F0D826285E7E0067A1B5 /* moc_quotedprintable.cpp in Compile Sources */,
62D26402BFE7552BD542F6DF /* echelonconnectsport.cpp in Compile Sources */,
8718CBA5263063BD004BF4EE /* tcpclientinfosender.cpp in Compile Sources */,
87318AAF2683799C00770F13 /* moc_echelonstride.cpp in Compile Sources */,
E858A5D7A16BAF2837B51B61 /* fit.cpp in Compile Sources */,
87DF68BD25E2675100FCDA46 /* moc_eslinkertreadmill.cpp in Compile Sources */,
8718CBAD263063CE004BF4EE /* moc_templateinfosender.cpp in Compile Sources */,
87C5F0D326285E7E0067A1B5 /* moc_mimecontentformatter.cpp in Compile Sources */,
8718CBAB263063CE004BF4EE /* moc_templateinfosenderbuilder.cpp in Compile Sources */,
C6B3CD471768392E18F85819 /* fit_accumulated_field.cpp in Compile Sources */,
3D7395B0A17915A06361C7F3 /* fit_accumulator.cpp in Compile Sources */,
2A61806454201575EDB3F94F /* fit_buffer_encode.cpp in Compile Sources */,
BE93C6EF2C2A6BFEEC9EA565 /* fit_buffered_mesg_broadcaster.cpp in Compile Sources */,
87B617EE25F25FED0094A1CB /* snodebike.cpp in Compile Sources */,
87C5F0B526285E5F0067A1B5 /* mimemessage.cpp in Compile Sources */,
873063C0259DF2C500DA0F44 /* moc_heartratebelt.cpp in Compile Sources */,
DD5ED224478CB82859C61B9F /* fit_buffered_record_mesg_broadcaster.cpp in Compile Sources */,
87368825259C602800C71C7E /* watchAppStart.swift in Compile Sources */,
876ED21925C3E9000065F3DC /* moc_ftmsbike.cpp in Compile Sources */,
87C5F0BD26285E5F0067A1B5 /* chronobike.cpp in Compile Sources */,
87900DC8268B673C000CB351 /* moc_renphobike.cpp in Compile Sources */,
87CC3B9E25A08812001EC5A8 /* moc_elliptical.cpp in Compile Sources */,
E7F190E59DC975BA4CA65F0C /* fit_crc.cpp in Compile Sources */,
87A18F092660D5D9002D7C96 /* moc_ftmsrower.cpp in Compile Sources */,
DA1DC0B761BD7A3004BCF43D /* fit_date_time.cpp in Compile Sources */,
87A3BC232656429600D302E3 /* echelonrower.cpp in Compile Sources */,
87CC3B9D25A08812001EC5A8 /* moc_domyoselliptical.cpp in Compile Sources */,
87900DC6268B672E000CB351 /* renphobike.cpp in Compile Sources */,
DF1FD9718B75FA591A7E3D80 /* fit_decode.cpp in Compile Sources */,
878A331D25AB50C300BD13E1 /* moc_yesoulbike.cpp in Compile Sources */,
952DBD14DF6369E885020EF4 /* fit_developer_field.cpp in Compile Sources */,
8718CBA2263063BD004BF4EE /* soleelliptical.cpp in Compile Sources */,
871B9FD2265E6A8800DB41F4 /* powerzonepack.cpp in Compile Sources */,
876ED21525C3E8DE0065F3DC /* ftmsbike.cpp in Compile Sources */,
87318AAD2683799100770F13 /* echelonstride.cpp in Compile Sources */,
87C5F0C326285E5F0067A1B5 /* mimeinlinefile.cpp in Compile Sources */,
87C5F0D226285E7E0067A1B5 /* moc_mimemultipart.cpp in Compile Sources */,
A4BD6DF51CFFF867B7B5AED4 /* fit_developer_field_definition.cpp in Compile Sources */,
8762D5132601F89500F6F049 /* scanrecordresult.cpp in Compile Sources */,
3015F9B9FF4CA6D653D46CCA /* fit_developer_field_description.cpp in Compile Sources */,
87310B22266FBB78008BA0D6 /* moc_homefitnessbuddy.cpp in Compile Sources */,
87CC3BA425A0885F001EC5A8 /* elliptical.cpp in Compile Sources */,
4AD2C93A2B8FD5855E521630 /* fit_encode.cpp in Compile Sources */,
8772A0E625E43ADB0080718C /* trxappgateusbbike.cpp in Compile Sources */,
87C5F0BE26285E5F0067A1B5 /* mimemultipart.cpp in Compile Sources */,
87C5F0D426285E7E0067A1B5 /* moc_chronobike.cpp in Compile Sources */,
BBBE7689F5792CB3FD1997EC /* fit_factory.cpp in Compile Sources */,
876ED21625C3E8DE0065F3DC /* schwinnic4bike.cpp in Compile Sources */,
87D269A325F535340076AA48 /* moc_skandikawiribike.cpp in Compile Sources */,
87C5F0C226285E5F0067A1B5 /* emailaddress.cpp in Compile Sources */,
25F2400F80DAFBD41FE5CC75 /* fit_field.cpp in Compile Sources */,
87A3BC27265642A300D302E3 /* moc_echelonrower.cpp in Compile Sources */,
87EFB56E25BD703D0039DD5A /* proformtreadmill.cpp in Compile Sources */,
87FE5BAF2692F3130056EFC8 /* tacxneo2.cpp in Compile Sources */,
8718CBAC263063CE004BF4EE /* moc_tcpclientinfosender.cpp in Compile Sources */,
333C629F93DB3941862924F7 /* fit_field_base.cpp in Compile Sources */,
EEC10275DF646075E08DDC9B /* fit_field_definition.cpp in Compile Sources */,
87062645259480AB00D06586 /* LocalNotificationHelper.swift in Compile Sources */,
8718CBA4263063BD004BF4EE /* templateinfosenderbuilder.cpp in Compile Sources */,
87E6A85B25B5C8B900371D28 /* flywheelbike.cpp in Compile Sources */,
48BA9CE9D6F256A15E8FB25D /* fit_mesg.cpp in Compile Sources */,
DD2E0091F3318F053D2995AA /* fit_mesg_broadcaster.cpp in Compile Sources */,
FE77C778768741F1A161682E /* fit_mesg_definition.cpp in Compile Sources */,
875F69B926342E8D0009FD78 /* spirittreadmill.cpp in Compile Sources */,
87DF68B825E2673B00FCDA46 /* eslinkertreadmill.cpp in Compile Sources */,
8781907E2615089D0085E656 /* peloton.cpp in Compile Sources */,
2B800DC34C91D8B080DEFBE8 /* fit_mesg_with_event_broadcaster.cpp in Compile Sources */,
6DC5D7C695B8763F9E2E029F /* fit_profile.cpp in Compile Sources */,
87C5F0B726285E5F0067A1B5 /* mimecontentformatter.cpp in Compile Sources */,
23191C28CB29474279752FD3 /* fit_protocol_validator.cpp in Compile Sources */,
275D55B5D956B2E5F1B7E46E /* fit_unicode.cpp in Compile Sources */,
ACB47DC464A2BC9D39C544AD /* gpx.cpp in Compile Sources */,
6361329E515248BB41640C07 /* homeform.cpp in Compile Sources */,
87A18F072660D5C1002D7C96 /* ftmsrower.cpp in Compile Sources */,
87C5F0D026285E7E0067A1B5 /* moc_smtpclient.cpp in Compile Sources */,
7CF08714869DA569C2EA551C /* keepawakehelper.cpp in Compile Sources */,
87310B1E266FBB59008BA0D6 /* smartrowrower.cpp in Compile Sources */,
87A3BC222656429600D302E3 /* rower.cpp in Compile Sources */,
C719682D8D421AF6B2DAAEA9 /* main.cpp in Compile Sources */,
87BB1774269E983200F46A1C /* moc_webserverinfosender.cpp in Compile Sources */,
25FCD41CCCAF49293B9369E8 /* qfit.cpp in Compile Sources */,
87C5F0B926285E5F0067A1B5 /* mimehtml.cpp in Compile Sources */,
27E452D452B62D0948DF0755 /* sessionline.cpp in Compile Sources */,
E40895A73216AC52D35083D9 /* signalhandler.cpp in Compile Sources */,
87DF68BF25E2675100FCDA46 /* moc_schwinnic4bike.cpp in Compile Sources */,
BE1D17BBF32F04829E1B3767 /* toorxtreadmill.cpp in Compile Sources */,
4697729B15991E98D6A2533D /* treadmill.cpp in Compile Sources */,
20AA270C9F447F42F5DC2FF2 /* trainprogram.cpp in Compile Sources */,
87C5F0C026285E5F0067A1B5 /* mimepart.cpp in Compile Sources */,
47E45EE0BB22C1E4332F1D1D /* trxappgateusbtreadmill.cpp in Compile Sources */,
8780D949264FB8B800192D41 /* moc_smartspin2k.cpp in Compile Sources */,
6943DA124B60175E1F9EBD1B /* virtualbike.cpp in Compile Sources */,
8780D947264FB8AC00192D41 /* smartspin2k.cpp in Compile Sources */,
87C5F0CF26285E7E0067A1B5 /* moc_mimepart.cpp in Compile Sources */,
0317752B0C295CAB82D37E45 /* virtualtreadmill.cpp in Compile Sources */,
87819080261508B10085E656 /* moc_peloton.cpp in Compile Sources */,
7EC1321DD83EAAFAA2B7109C /* domyosbike.cpp in Compile Sources */,
614192CB787D12C3E98ADE55 /* lockscreen.mm in Compile Sources */,
87A0C4BB262329A600121A76 /* npecablebike.cpp in Compile Sources */,
87A3BC26265642A300D302E3 /* moc_rower.cpp in Compile Sources */,
0F974CB18B3E792B42270F19 /* FitDecode.mm in Compile Sources */,
87440FBF2640292900E4DC0B /* moc_fitplusbike.cpp in Compile Sources */,
87B617EC25F25FED0094A1CB /* screencapture.cpp in Compile Sources */,
FB2566376FE0FB17ED3DE94D /* FitDeveloperField.mm in Compile Sources */,
43FA2D5EA73D9C89F1A333B6 /* FitEncode.mm in Compile Sources */,
@@ -1794,12 +2144,14 @@
87062643259480A200D06586 /* AppDelegate.swift in Compile Sources */,
2B42755BF45173E11E2110CB /* FitFieldDefinition.mm in Compile Sources */,
DF373364C5474D877506CB26 /* FitMesg.mm in Compile Sources */,
87FE5BB12692F31E0056EFC8 /* moc_tacxneo2.cpp in Compile Sources */,
8791A8AA25C8603F003B50B2 /* moc_inspirebike.cpp in Compile Sources */,
03F49BBCF19B73B18385B13D /* FitMesgDefinition.mm in Compile Sources */,
2D4684BE88B9B0456A50B3F0 /* qdomyoszwift_plugin_import.cpp in Compile Sources */,
8783153C25E8DAFD0007817C /* sportstechbike.cpp in Compile Sources */,
210F6A0A7E2FA7CDD3CA0084 /* qdomyoszwift_qml_plugin_import.cpp in Compile Sources */,
87062644259480A600D06586 /* APIFetcher.swift in Compile Sources */,
87C5F0D626285E7E0067A1B5 /* moc_emailaddress.cpp in Compile Sources */,
39FAA19B9285AB16AE3A39BA /* qrc_icons.cpp in Compile Sources */,
87D2699F25F535200076AA48 /* m3ibike.cpp in Compile Sources */,
7352E0F0EE5366AC809B9D64 /* qrc_qml.cpp in Compile Sources */,
@@ -1814,27 +2166,43 @@
9D9484EED654597C394345DE /* moc_echelonconnectsport.cpp in Compile Sources */,
7DEEAF0C3D671FBFD84ACFCE /* moc_homeform.cpp in Compile Sources */,
934A3E33459C9220F257B271 /* moc_qfit.cpp in Compile Sources */,
8718CBAE263063CE004BF4EE /* moc_soleelliptical.cpp in Compile Sources */,
E62DA5FF2436135448C94671 /* moc_toorxtreadmill.cpp in Compile Sources */,
87586A4325B8341B00A243C4 /* moc_proformbike.cpp in Compile Sources */,
87CC3BA325A0885F001EC5A8 /* domyoselliptical.cpp in Compile Sources */,
87B617F325F260150094A1CB /* moc_snodebike.cpp in Compile Sources */,
87C5F0D726285E7E0067A1B5 /* moc_mimefile.cpp in Compile Sources */,
8762D5102601F7EA00F6F049 /* M3iNSQT.cpp in Compile Sources */,
8718CBA3263063BD004BF4EE /* templateinfosender.cpp in Compile Sources */,
E8B499F921FB0AB55C7A8A8B /* moc_gpx.cpp in Compile Sources */,
87E6A85825B5C88E00371D28 /* moc_flywheelbike.cpp in Compile Sources */,
87310B1F266FBB59008BA0D6 /* homefitnessbuddy.cpp in Compile Sources */,
140BAAA8823E05940EF35A38 /* moc_treadmill.cpp in Compile Sources */,
87C5F0BA26285E5F0067A1B5 /* mimefile.cpp in Compile Sources */,
87B617F425F260150094A1CB /* moc_screencapture.cpp in Compile Sources */,
87B617ED25F25FED0094A1CB /* fitshowtreadmill.cpp in Compile Sources */,
87A0C4BC262329A600121A76 /* cscbike.cpp in Compile Sources */,
692540CF811B06A8710A0A52 /* moc_mainwindow.cpp in Compile Sources */,
87D269A025F535200076AA48 /* skandikawiribike.cpp in Compile Sources */,
8791A8AB25C861BD003B50B2 /* inspirebike.cpp in Compile Sources */,
87D44181269DE979003263D5 /* webserverinfosender.cpp in Compile Sources */,
87062647259480B400D06586 /* WatchKitConnection.swift in Compile Sources */,
AFEC086E92015064EB841234 /* moc_trainprogram.cpp in Compile Sources */,
87A0C4C0262329B500121A76 /* moc_npecablebike.cpp in Compile Sources */,
8762D50F2601F7EA00F6F049 /* M3iNS.mm in Compile Sources */,
87C5F0B626285E5F0067A1B5 /* quotedprintable.cpp in Compile Sources */,
87310B23266FBB78008BA0D6 /* moc_smartrowrower.cpp in Compile Sources */,
EE29228550794460E7654533 /* moc_trxappgateusbtreadmill.cpp in Compile Sources */,
3DB7B5F0CE1E2390CEFFC1E8 /* moc_virtualbike.cpp in Compile Sources */,
5FE99682776C1DE51F508F6B /* moc_virtualtreadmill.cpp in Compile Sources */,
74C43649C9C4E2E5F9378019 /* moc_domyosbike.cpp in Compile Sources */,
87083D9626678EFA0072410D /* zwiftworkout.cpp in Compile Sources */,
87C5F0B826285E5F0067A1B5 /* stagesbike.cpp in Compile Sources */,
87C5F0D526285E7E0067A1B5 /* moc_mimehtml.cpp in Compile Sources */,
871B9FD4265E6A9A00DB41F4 /* moc_powerzonepack.cpp in Compile Sources */,
87A0C4BF262329B500121A76 /* moc_cscbike.cpp in Compile Sources */,
8783153B25E8D81E0007817C /* moc_sportstechbike.cpp in Compile Sources */,
875F69BB26342E9A0009FD78 /* moc_spirittreadmill.cpp in Compile Sources */,
);
name = "Compile Sources";
runOnlyForDeploymentPostprocessing = 0;
@@ -2180,7 +2548,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = "../src/ios/qdomyos-zwift.entitlements";
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 2.5.16;
CURRENT_PROJECT_VERSION = 2.8.4;
DEVELOPMENT_TEAM = 6335M7T29D;
ENABLE_BITCODE = YES;
HEADER_SEARCH_PATHS = (
@@ -2197,11 +2565,13 @@
../../Qt/5.15.2/ios/include/QtPositioning,
../../Qt/5.15.2/ios/include/QtQmlModels,
../../Qt/5.15.2/ios/include/QtQml,
../../Qt/5.15.2/ios/include/QtCharts,
../../Qt/5.15.2/ios/include/QtNetwork,
../../Qt/5.15.2/ios/include/QtCore,
.,
"../../Qt/5.15.2/ios/mkspecs/macx-ios-clang",
../../Qt/5.15.2/ios/include/QtNetworkAuth,
../../Qt/5.15.2/ios/include/QtHttpServer,
);
LIBRARY_SEARCH_PATHS = (
/Users/cagnulein/Qt/5.15.2/ios/plugins/platforms,
@@ -2233,8 +2603,63 @@
/Users/cagnulein/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Universal,
/Users/cagnulein/Qt/5.15.2/ios/qml/QtGraphicalEffects,
/Users/cagnulein/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Imagine,
/Users/cagnulein/Qt/5.15.2/ios/qml/QtCharts,
/Users/cagnulein/Qt/5.15.2/ios/plugins/webview,
/Users/cagnulein/Qt/5.15.2/ios/qml/QtWebView,
);
MARKETING_VERSION = 2.8;
OTHER_CFLAGS = (
"-pipe",
"-g",
"-fobjc-nonfragile-abi",
"-fobjc-legacy-dispatch",
"-Wall",
"-Wextra",
"-fPIC",
"-DQT_COMPILER_SUPPORTS_SSE2",
"-DQT_DEPRECATED_WARNINGS",
"-DQT_QML_DEBUG",
"-DQT_WIDGETS_LIB",
"-DQT_QUICK_LIB",
"-DQT_GUI_LIB",
"-DQT_BLUETOOTH_LIB",
"-DQT_XML_LIB",
"-DQT_POSITIONING_LIB",
"-DQT_QMLMODELS_LIB",
"-DQT_QML_LIB",
"-DQT_NETWORKAUTH_LIB",
"-DQT_NETWORK_LIB",
"-DQT_CORE_LIB",
"-DQ_HTTPSERVER",
);
OTHER_CPLUSPLUSFLAGS = (
"-pipe",
"-stdlib=libc++",
"-g",
"-std=gnu++14",
"-fobjc-nonfragile-abi",
"-fobjc-legacy-dispatch",
"-Wall",
"-Wextra",
"-fPIC",
"-DQT_COMPILER_SUPPORTS_SSE2",
"-DQT_DEPRECATED_WARNINGS",
"-DQT_QML_DEBUG",
"-DQT_WIDGETS_LIB",
"-DQT_QUICK_LIB",
"-DQT_GUI_LIB",
"-DQT_BLUETOOTH_LIB",
"-DQT_XML_LIB",
"-DQT_POSITIONING_LIB",
"-DQT_QMLMODELS_LIB",
"-DQT_QML_LIB",
"-DQT_NETWORKAUTH_LIB",
"-DQT_NETWORK_LIB",
"-DQT_CORE_LIB",
"-DQ_HTTPSERVER",
"-DQT_WEBSOCKETS_LIB",
"-DCHARTJS",
);
MARKETING_VERSION = 2.5;
PRODUCT_BUNDLE_IDENTIFIER = "org.cagnulein.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = qdomyoszwift;
QMAKE_FULL_VERSION = 1.7.0;
@@ -2263,7 +2688,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = "../src/ios/qdomyos-zwift.entitlements";
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 2.5.16;
CURRENT_PROJECT_VERSION = 2.8.4;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = 6335M7T29D;
ENABLE_BITCODE = YES;
@@ -2282,11 +2707,13 @@
../../Qt/5.15.2/ios/include/QtPositioning,
../../Qt/5.15.2/ios/include/QtQmlModels,
../../Qt/5.15.2/ios/include/QtQml,
../../Qt/5.15.2/ios/include/QtCharts,
../../Qt/5.15.2/ios/include/QtNetwork,
../../Qt/5.15.2/ios/include/QtCore,
.,
"../../Qt/5.15.2/ios/mkspecs/macx-ios-clang",
../../Qt/5.15.2/ios/include/QtNetworkAuth,
../../Qt/5.15.2/ios/include/QtHttpServer,
);
LIBRARY_SEARCH_PATHS = (
/Users/cagnulein/Qt/5.15.2/ios/plugins/platforms,
@@ -2318,9 +2745,64 @@
/Users/cagnulein/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Universal,
/Users/cagnulein/Qt/5.15.2/ios/qml/QtGraphicalEffects,
/Users/cagnulein/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Imagine,
/Users/cagnulein/Qt/5.15.2/ios/qml/QtCharts,
/Users/cagnulein/Qt/5.15.2/ios/plugins/webview,
/Users/cagnulein/Qt/5.15.2/ios/qml/QtWebView,
);
MARKETING_VERSION = 2.5;
MARKETING_VERSION = 2.8;
ONLY_ACTIVE_ARCH = YES;
OTHER_CFLAGS = (
"-pipe",
"-g",
"-fobjc-nonfragile-abi",
"-fobjc-legacy-dispatch",
"-Wall",
"-Wextra",
"-fPIC",
"-DQT_COMPILER_SUPPORTS_SSE2",
"-DQT_DEPRECATED_WARNINGS",
"-DQT_QML_DEBUG",
"-DQT_WIDGETS_LIB",
"-DQT_QUICK_LIB",
"-DQT_GUI_LIB",
"-DQT_BLUETOOTH_LIB",
"-DQT_XML_LIB",
"-DQT_POSITIONING_LIB",
"-DQT_QMLMODELS_LIB",
"-DQT_QML_LIB",
"-DQT_NETWORKAUTH_LIB",
"-DQT_NETWORK_LIB",
"-DQT_CORE_LIB",
"-DQ_HTTPSERVER",
);
OTHER_CPLUSPLUSFLAGS = (
"-pipe",
"-stdlib=libc++",
"-g",
"-std=gnu++14",
"-fobjc-nonfragile-abi",
"-fobjc-legacy-dispatch",
"-Wall",
"-Wextra",
"-fPIC",
"-DQT_COMPILER_SUPPORTS_SSE2",
"-DQT_DEPRECATED_WARNINGS",
"-DQT_QML_DEBUG",
"-DQT_WIDGETS_LIB",
"-DQT_QUICK_LIB",
"-DQT_GUI_LIB",
"-DQT_BLUETOOTH_LIB",
"-DQT_XML_LIB",
"-DQT_POSITIONING_LIB",
"-DQT_QMLMODELS_LIB",
"-DQT_QML_LIB",
"-DQT_NETWORKAUTH_LIB",
"-DQT_NETWORK_LIB",
"-DQT_CORE_LIB",
"-DQ_HTTPSERVER",
"-DQT_WEBSOCKETS_LIB",
"-DCHARTJS",
);
PRODUCT_BUNDLE_IDENTIFIER = "org.cagnulein.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = qdomyoszwift;
QMAKE_FULL_VERSION = 1.7.0;
@@ -2382,7 +2864,7 @@
CODE_SIGN_ENTITLEMENTS = "watchkit Extension/WatchKit Extension.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2.5.16;
CURRENT_PROJECT_VERSION = 2.8.4;
DEVELOPMENT_TEAM = 6335M7T29D;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
@@ -2402,7 +2884,7 @@
IBSC_MODULE = watchkit_Extension;
INFOPLIST_FILE = watchkit/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
MARKETING_VERSION = 2.5;
MARKETING_VERSION = 2.8;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
OTHER_LDFLAGS = (
@@ -2472,7 +2954,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_ENTITLEMENTS = "watchkit Extension/WatchKit Extension.entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2.5.16;
CURRENT_PROJECT_VERSION = 2.8.4;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = 6335M7T29D;
ENABLE_NS_ASSERTIONS = NO;
@@ -2488,7 +2970,7 @@
IBSC_MODULE = watchkit_Extension;
INFOPLIST_FILE = watchkit/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
MARKETING_VERSION = 2.5;
MARKETING_VERSION = 2.8;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
OTHER_LDFLAGS = (
@@ -2556,7 +3038,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_ENTITLEMENTS = "watchkit Extension/WatchKit Extension.entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2.5.16;
CURRENT_PROJECT_VERSION = 2.8.4;
DEVELOPMENT_ASSET_PATHS = "\"watchkit Extension/Preview Content\"";
ENABLE_PREVIEWS = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES;
@@ -2576,7 +3058,7 @@
GCC_WARN_UNUSED_VARIABLE = YES;
INFOPLIST_FILE = "watchkit Extension/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
MARKETING_VERSION = 2.5;
MARKETING_VERSION = 2.8;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
OTHER_LDFLAGS = (
@@ -2643,7 +3125,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_ENTITLEMENTS = "watchkit Extension/WatchKit Extension.entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2.5.16;
CURRENT_PROJECT_VERSION = 2.8.4;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_ASSET_PATHS = "\"watchkit Extension/Preview Content\"";
ENABLE_NS_ASSERTIONS = NO;
@@ -2659,7 +3141,7 @@
GCC_WARN_UNUSED_VARIABLE = YES;
INFOPLIST_FILE = "watchkit Extension/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
MARKETING_VERSION = 2.5;
MARKETING_VERSION = 2.8;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
OTHER_LDFLAGS = (

View File

@@ -59,10 +59,19 @@ extension MainController {
}
extension MainController: WorkoutTrackingDelegate {
func didReceiveHealthKitDistanceCycling(_ distanceCycling: Double) {
}
func didReceiveHealthKitActiveEnergyBurned(_ activeEnergyBurned: Double) {
}
func didReceiveHealthKitHeartRate(_ heartRate: Double) {
heartRateLabel.setText("\(heartRate) BPM")
WatchKitConnection.shared.sendMessage(message: ["heartRate":
"\(heartRate)" as AnyObject])
WorkoutTracking.distance = WatchKitConnection.distance
WorkoutTracking.kcal = WatchKitConnection.kcal
}
func didReceiveHealthKitStepCounts(_ stepCounts: Double) {

View File

@@ -21,6 +21,8 @@ protocol WatchKitConnectionProtocol {
class WatchKitConnection: NSObject {
static let shared = WatchKitConnection()
public static var distance = 0.0
public static var kcal = 0.0
weak var delegate: WatchKitConnectionDelegate?
private override init() {
@@ -59,6 +61,10 @@ extension WatchKitConnection: WatchKitConnectionProtocol {
{
validReachableSession?.sendMessage(message, replyHandler: { (result) in
print(result)
let dDistance = Double(result["distance"] as! Double)
WatchKitConnection.distance = dDistance
let dKcal = Double(result["kcal"] as! Double)
WatchKitConnection.kcal = dKcal
}, errorHandler: { (error) in
print(error)
})

View File

@@ -1,199 +1,255 @@
//
// WatchWorkoutTracking.swift
// ElecDemo WatchKit Extension
//
// Created by NhatHM on 8/12/19.
// Copyright © 2019 GST.PID. All rights reserved.
//
import Foundation
import HealthKit
protocol WorkoutTrackingDelegate: class {
func didReceiveHealthKitHeartRate(_ heartRate: Double)
func didReceiveHealthKitStepCounts(_ stepCounts: Double)
}
protocol WorkoutTrackingProtocol {
static func authorizeHealthKit()
func startWorkOut()
func stopWorkOut()
func fetchStepCounts()
}
class WorkoutTracking: NSObject {
static let shared = WorkoutTracking()
let healthStore = HKHealthStore()
let configuration = HKWorkoutConfiguration()
var workoutSession: HKWorkoutSession!
var workoutBuilder: HKLiveWorkoutBuilder!
weak var delegate: WorkoutTrackingDelegate?
override init() {
super.init()
}
}
extension WorkoutTracking {
private func handleSendStatisticsData(_ statistics: HKStatistics) {
switch statistics.quantityType {
case HKQuantityType.quantityType(forIdentifier: .heartRate):
let heartRateUnit = HKUnit.count().unitDivided(by: HKUnit.minute())
let value = statistics.mostRecentQuantity()?.doubleValue(for: heartRateUnit)
let roundedValue = Double( round( 1 * value! ) / 1 )
delegate?.didReceiveHealthKitHeartRate(roundedValue)
case HKQuantityType.quantityType(forIdentifier: .stepCount):
guard let stepCounts = HKQuantityType.quantityType(forIdentifier: .stepCount) else {
return
}
let startOfDay = Calendar.current.startOfDay(for: Date())
let predicate = HKQuery.predicateForSamples(withStart: startOfDay, end: Date(), options: .strictStartDate)
let query = HKStatisticsQuery(quantityType: stepCounts, quantitySamplePredicate: predicate, options: .cumulativeSum) { [weak self] (_, result, error) in
guard let weakSelf = self else {
return
}
var resultCount = 0.0
guard let result = result else {
print("Failed to fetch steps rate")
return
}
if let sum = result.sumQuantity() {
resultCount = sum.doubleValue(for: HKUnit.count())
weakSelf.delegate?.didReceiveHealthKitStepCounts(resultCount)
} else {
print("Failed to fetch steps rate 2")
}
}
healthStore.execute(query)
return
default:
return
}
}
private func configWorkout() {
configuration.activityType = .cycling
configuration.locationType = .indoor
do {
workoutSession = try HKWorkoutSession(healthStore: healthStore, configuration: configuration)
workoutBuilder = workoutSession?.associatedWorkoutBuilder()
} catch {
return
}
workoutSession.delegate = self
workoutBuilder.delegate = self
workoutBuilder.dataSource = HKLiveWorkoutDataSource(healthStore: healthStore, workoutConfiguration: configuration)
}
}
extension WorkoutTracking: WorkoutTrackingProtocol {
static func authorizeHealthKit() {
if HKHealthStore.isHealthDataAvailable() {
let infoToRead = Set([
HKSampleType.quantityType(forIdentifier: .stepCount)!,
HKSampleType.quantityType(forIdentifier: .heartRate)!,
HKSampleType.workoutType()
])
let infoToShare = Set([
HKSampleType.quantityType(forIdentifier: .stepCount)!,
HKSampleType.quantityType(forIdentifier: .heartRate)!,
HKSampleType.workoutType()
])
HKHealthStore().requestAuthorization(toShare: infoToShare, read: infoToRead) { (success, error) in
if success {
print("Authorization healthkit success")
} else if let error = error {
print(error)
}
}
} else {
print("HealthKit not avaiable")
}
}
func startWorkOut() {
print("Start workout")
configWorkout()
workoutSession.startActivity(with: Date())
workoutBuilder.beginCollection(withStart: Date()) { (success, error) in
print(success)
if let error = error {
print(error)
}
}
}
func stopWorkOut() {
print("Stop workout")
workoutSession.stopActivity(with: Date())
workoutSession.end()
workoutBuilder.endCollection(withEnd: Date()) { (success, error) in
}
}
func fetchStepCounts() {
guard let stepCounts = HKQuantityType.quantityType(forIdentifier: .stepCount) else {
return
}
let startOfDay = Calendar.current.startOfDay(for: Date())
let predicate = HKQuery.predicateForSamples(withStart: startOfDay, end: Date(), options: .strictStartDate)
let query = HKStatisticsQuery(quantityType: stepCounts, quantitySamplePredicate: predicate, options: .cumulativeSum) { [weak self] (_, result, error) in
guard let weakSelf = self else {
return
}
var resultCount = 0.0
guard let result = result else {
print("Failed to fetch steps rate")
return
}
if let sum = result.sumQuantity() {
resultCount = sum.doubleValue(for: HKUnit.count())
weakSelf.delegate?.didReceiveHealthKitStepCounts(resultCount)
} else {
print("Failed to fetch steps rate 2")
}
}
healthStore.execute(query)
}
}
extension WorkoutTracking: HKLiveWorkoutBuilderDelegate {
func workoutBuilder(_ workoutBuilder: HKLiveWorkoutBuilder, didCollectDataOf collectedTypes: Set<HKSampleType>) {
print("GET DATA: \(Date())")
for type in collectedTypes {
guard let quantityType = type as? HKQuantityType else {
return
}
if let statistics = workoutBuilder.statistics(for: quantityType) {
handleSendStatisticsData(statistics)
}
}
}
func workoutBuilderDidCollectEvent(_ workoutBuilder: HKLiveWorkoutBuilder) {
}
}
extension WorkoutTracking: HKWorkoutSessionDelegate {
func workoutSession(_ workoutSession: HKWorkoutSession, didChangeTo toState: HKWorkoutSessionState, from fromState: HKWorkoutSessionState, date: Date) {
}
func workoutSession(_ workoutSession: HKWorkoutSession, didFailWithError error: Error) {
}
}
//
// WatchWorkoutTracking.swift
// ElecDemo WatchKit Extension
//
// Created by NhatHM on 8/12/19.
// Copyright © 2019 GST.PID. All rights reserved.
//
import Foundation
import HealthKit
protocol WorkoutTrackingDelegate: class {
func didReceiveHealthKitHeartRate(_ heartRate: Double)
func didReceiveHealthKitStepCounts(_ stepCounts: Double)
func didReceiveHealthKitDistanceCycling(_ distanceCycling: Double)
func didReceiveHealthKitActiveEnergyBurned(_ activeEnergyBurned: Double)
}
protocol WorkoutTrackingProtocol {
static func authorizeHealthKit()
func startWorkOut()
func stopWorkOut()
func fetchStepCounts()
}
class WorkoutTracking: NSObject {
static let shared = WorkoutTracking()
public static var distance = Double()
public static var kcal = Double()
let healthStore = HKHealthStore()
let configuration = HKWorkoutConfiguration()
var workoutSession: HKWorkoutSession!
var workoutBuilder: HKLiveWorkoutBuilder!
weak var delegate: WorkoutTrackingDelegate?
override init() {
super.init()
}
}
extension WorkoutTracking {
private func handleSendStatisticsData(_ statistics: HKStatistics) {
switch statistics.quantityType {
case HKQuantityType.quantityType(forIdentifier: .distanceCycling):
let distanceUnit = HKUnit.mile()
let value = statistics.mostRecentQuantity()?.doubleValue(for: distanceUnit)
let roundedValue = Double( round( 1 * value! ) / 1 )
delegate?.didReceiveHealthKitDistanceCycling(roundedValue)
case HKQuantityType.quantityType(forIdentifier: .activeEnergyBurned):
let energyUnit = HKUnit.kilocalorie()
let value = statistics.mostRecentQuantity()?.doubleValue(for: energyUnit)
let roundedValue = Double( round( 1 * value! ) / 1 )
delegate?.didReceiveHealthKitActiveEnergyBurned(roundedValue)
case HKQuantityType.quantityType(forIdentifier: .heartRate):
let heartRateUnit = HKUnit.count().unitDivided(by: HKUnit.minute())
let value = statistics.mostRecentQuantity()?.doubleValue(for: heartRateUnit)
let roundedValue = Double( round( 1 * value! ) / 1 )
delegate?.didReceiveHealthKitHeartRate(roundedValue)
case HKQuantityType.quantityType(forIdentifier: .stepCount):
guard let stepCounts = HKQuantityType.quantityType(forIdentifier: .stepCount) else {
return
}
let startOfDay = Calendar.current.startOfDay(for: Date())
let predicate = HKQuery.predicateForSamples(withStart: startOfDay, end: Date(), options: .strictStartDate)
let query = HKStatisticsQuery(quantityType: stepCounts, quantitySamplePredicate: predicate, options: .cumulativeSum) { [weak self] (_, result, error) in
guard let weakSelf = self else {
return
}
var resultCount = 0.0
guard let result = result else {
print("Failed to fetch steps rate")
return
}
if let sum = result.sumQuantity() {
resultCount = sum.doubleValue(for: HKUnit.count())
weakSelf.delegate?.didReceiveHealthKitStepCounts(resultCount)
} else {
print("Failed to fetch steps rate 2")
}
}
healthStore.execute(query)
return
default:
return
}
}
private func configWorkout() {
configuration.activityType = .cycling
configuration.locationType = .indoor
do {
workoutSession = try HKWorkoutSession(healthStore: healthStore, configuration: configuration)
workoutBuilder = workoutSession?.associatedWorkoutBuilder()
} catch {
return
}
workoutSession.delegate = self
workoutBuilder.delegate = self
workoutBuilder.dataSource = HKLiveWorkoutDataSource(healthStore: healthStore, workoutConfiguration: configuration)
}
}
extension WorkoutTracking: WorkoutTrackingProtocol {
static func authorizeHealthKit() {
if HKHealthStore.isHealthDataAvailable() {
let infoToRead = Set([
HKSampleType.quantityType(forIdentifier: .stepCount)!,
HKSampleType.quantityType(forIdentifier: .heartRate)!,
/*HKSampleType.quantityType(forIdentifier: .distanceCycling)!,
HKSampleType.quantityType(forIdentifier: .activeEnergyBurned)!,*/
HKSampleType.workoutType()
])
let infoToShare = Set([
HKSampleType.quantityType(forIdentifier: .stepCount)!,
HKSampleType.quantityType(forIdentifier: .heartRate)!,
HKSampleType.quantityType(forIdentifier: .distanceCycling)!,
HKSampleType.quantityType(forIdentifier: .activeEnergyBurned)!,
HKSampleType.workoutType()
])
HKHealthStore().requestAuthorization(toShare: infoToShare, read: infoToRead) { (success, error) in
if success {
print("Authorization healthkit success")
} else if let error = error {
print(error)
}
}
} else {
print("HealthKit not avaiable")
}
}
func startWorkOut() {
print("Start workout")
configWorkout()
workoutSession.startActivity(with: Date())
workoutBuilder.beginCollection(withStart: Date()) { (success, error) in
print(success)
if let error = error {
print(error)
}
}
}
func stopWorkOut() {
print("Stop workout")
workoutSession.stopActivity(with: Date())
workoutSession.end()
guard let quantityType = HKQuantityType.quantityType(
forIdentifier: .activeEnergyBurned) else {
return
}
let unit = HKUnit.kilocalorie()
let totalEnergyBurned = WorkoutTracking.kcal
let quantity = HKQuantity(unit: unit,
doubleValue: totalEnergyBurned)
let sample = HKCumulativeQuantitySeriesSample(type: quantityType,
quantity: quantity,
start: workoutSession.startDate!,
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
}
}
func fetchStepCounts() {
guard let stepCounts = HKQuantityType.quantityType(forIdentifier: .stepCount) else {
return
}
let startOfDay = Calendar.current.startOfDay(for: Date())
let predicate = HKQuery.predicateForSamples(withStart: startOfDay, end: Date(), options: .strictStartDate)
let query = HKStatisticsQuery(quantityType: stepCounts, quantitySamplePredicate: predicate, options: .cumulativeSum) { [weak self] (_, result, error) in
guard let weakSelf = self else {
return
}
var resultCount = 0.0
guard let result = result else {
print("Failed to fetch steps rate")
return
}
if let sum = result.sumQuantity() {
resultCount = sum.doubleValue(for: HKUnit.count())
weakSelf.delegate?.didReceiveHealthKitStepCounts(resultCount)
} else {
print("Failed to fetch steps rate 2")
}
}
healthStore.execute(query)
}
}
extension WorkoutTracking: HKLiveWorkoutBuilderDelegate {
func workoutBuilder(_ workoutBuilder: HKLiveWorkoutBuilder, didCollectDataOf collectedTypes: Set<HKSampleType>) {
print("GET DATA: \(Date())")
for type in collectedTypes {
guard let quantityType = type as? HKQuantityType else {
return
}
if let statistics = workoutBuilder.statistics(for: quantityType) {
handleSendStatisticsData(statistics)
}
}
}
func workoutBuilderDidCollectEvent(_ workoutBuilder: HKLiveWorkoutBuilder) {
}
}
extension WorkoutTracking: HKWorkoutSessionDelegate {
func workoutSession(_ workoutSession: HKWorkoutSession, didChangeTo toState: HKWorkoutSessionState, from fromState: HKWorkoutSessionState, date: Date) {
}
func workoutSession(_ workoutSession: HKWorkoutSession, didFailWithError error: Error) {
}
}

View File

@@ -104,6 +104,7 @@ This operation takes a moment to complete.
`git clone https://github.com/cagnulein/qdomyos-zwift.git`
`cd qdomyos-zwift`
`git submodule update --init src/smtpclient/`
`cd src`
`qmake`
`make`

View File

@@ -0,0 +1,220 @@
<?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="Rower Data" type="org.bluetooth.characteristic.rower_data"
uuid="2AD1" last-modified="2017-02-14" approved="No">
<InformativeText>
<Summary>The Rower Data characteristic is used to send
training-related data to the Client from a rower
(Server).</Summary>
</InformativeText>
<Value>
<Field name="Flags">
<Requirement>Mandatory</Requirement>
<Format>16bit</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 Stroke 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="Instantaneous Pace present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C4" />
</Enumerations>
</Bit>
<Bit index="4" size="1" name="Average Pace Present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C5" />
</Enumerations>
</Bit>
<Bit index="5" size="1" name="Instantaneous Power present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C6" />
</Enumerations>
</Bit>
<Bit index="6" size="1" name="Average Power 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="Expended Energy present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C9" />
</Enumerations>
</Bit>
<Bit index="9" size="1" name="Heart Rate present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C10" />
</Enumerations>
</Bit>
<Bit index="10" size="1"
name="Metabolic Equivalent present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C11" />
</Enumerations>
</Bit>
<Bit index="11" size="1" name="Elapsed Time present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C12" />
</Enumerations>
</Bit>
<Bit index="12" size="1" name="Remaining Time present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C13" />
</Enumerations>
</Bit>
<ReservedForFutureUse index="13" size="3" />
</BitField>
</Field>
<Field name="Stroke Rate">
<InformativeText>stroke/minute with a resolution of
0.5</InformativeText>
<Requirement>C1</Requirement>
<Format>uint8</Format>
<BinaryExponent>-1</BinaryExponent>
<Unit>org.bluetooth.unit.stroke_per_minute</Unit>
</Field>
<Field name="Stroke Count">
<InformativeText>Unitless with a resolution of
1</InformativeText>
<Requirement>C1</Requirement>
<Format>uint16</Format>
<Unit>org.bluetooth.unit.unitless</Unit>
</Field>
<Field name="Average Stroke Rate">
<InformativeText>1/minute with a resolution of
0.5</InformativeText>
<Requirement>C2</Requirement>
<Format>uint8</Format>
<BinaryExponent>-1</BinaryExponent>
<Unit>org.bluetooth.unit.stroke_per_minute</Unit>
</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="Instantaneous Pace">
<InformativeText>Second with a resolution of
1</InformativeText>
<Requirement>C4</Requirement>
<Format>uint16</Format>
<Unit>org.bluetooth.unit.time.second</Unit>
</Field>
<Field name="Average Pace">
<InformativeText>Second with a resolution of
1</InformativeText>
<Requirement>C5</Requirement>
<Format>uint16</Format>
<Unit>org.bluetooth.unit.time.second</Unit>
</Field>
<Field name="Instantaneous Power">
<InformativeText>Watts with a resolution of
1</InformativeText>
<Requirement>C6</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>C7</Requirement>
<Format>sint16</Format>
<Unit>org.bluetooth.unit.power.watt</Unit>
</Field>
<Field name="Resistance Level">
<InformativeText>Unitless with a resolution of
1</InformativeText>
<Requirement>C8</Requirement>
<Format>sint16</Format>
<Unit>org.bluetooth.unit.unitless</Unit>
</Field>
<Field name="Total Energy">
<InformativeText>Kilo Calorie with a resolution of
1</InformativeText>
<Requirement>C9</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>C9</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>C9</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>C10</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>C11</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>C12</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>C13</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: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 KiB

View File

@@ -0,0 +1 @@
#include "../../../../../../qthttpserver/src/httpserver/qabstracthttpserver_p.h"

View File

@@ -0,0 +1 @@
#include "../../../../../../qthttpserver/src/httpserver/qhttpserver_p.h"

View File

@@ -0,0 +1 @@
#include "../../../../../../qthttpserver/src/httpserver/qhttpserverliterals_p.h"

View File

@@ -0,0 +1 @@
#include "../../../../../../qthttpserver/src/httpserver/qhttpserverrequest_p.h"

View File

@@ -0,0 +1 @@
#include "../../../../../../qthttpserver/src/httpserver/qhttpserverresponder_p.h"

View File

@@ -0,0 +1 @@
#include "../../../../../../qthttpserver/src/httpserver/qhttpserverresponse_p.h"

View File

@@ -0,0 +1 @@
#include "../../../../../../qthttpserver/src/httpserver/qhttpserverrouter_p.h"

View File

@@ -0,0 +1 @@
#include "../../../../../../qthttpserver/src/httpserver/qhttpserverrouterrule_p.h"

View File

@@ -0,0 +1 @@
#include "qabstracthttpserver.h"

View File

@@ -0,0 +1 @@
#include "qhttpserverfutureresponse.h"

View File

@@ -0,0 +1 @@
#include "qhttpserver.h"

View File

@@ -0,0 +1 @@
#include "qhttpserverviewtraits.h"

View File

@@ -0,0 +1 @@
#include "qhttpserverfutureresponse.h"

View File

@@ -0,0 +1 @@
#include "qhttpserverrequest.h"

View File

@@ -0,0 +1 @@
#include "qhttpserverresponder.h"

View File

@@ -0,0 +1 @@
#include "qhttpserverresponse.h"

View File

@@ -0,0 +1 @@
#include "qhttpserverrouter.h"

View File

@@ -0,0 +1 @@
#include "qhttpserverrouterrule.h"

View File

@@ -0,0 +1 @@
#include "qhttpserverrouterviewtraits.h"

View File

@@ -0,0 +1,16 @@
#ifndef QT_QTHTTPSERVER_MODULE_H
#define QT_QTHTTPSERVER_MODULE_H
#include <QtHttpServer/QtHttpServerDepends>
#include "qthttpserverglobal.h"
#include "qabstracthttpserver.h"
#include "qhttpserver.h"
#include "qhttpserverfutureresponse.h"
#include "qhttpserverrequest.h"
#include "qhttpserverresponder.h"
#include "qhttpserverresponse.h"
#include "qhttpserverrouter.h"
#include "qhttpserverrouterrule.h"
#include "qhttpserverrouterviewtraits.h"
#include "qhttpserverviewtraits.h"
#include "qthttpserverversion.h"
#endif

View File

@@ -0,0 +1,8 @@
/* This file was generated by qmake with the info from <root>/src/httpserver/httpserver.pro. */
#ifdef __cplusplus /* create empty PCH in C mode */
#include <QtNetwork/QtNetwork>
#include <QtCore/QtCore>
#include <QtWebSockets/QtWebSockets>
#include <QtSslServer/QtSslServer>
#include <QtConcurrent/QtConcurrent>
#endif

View File

@@ -0,0 +1 @@
#include "qthttpserverversion.h"

View File

@@ -0,0 +1,6 @@
SYNCQT.HEADER_FILES = qabstracthttpserver.h qhttpserver.h qhttpserverfutureresponse.h qhttpserverrequest.h qhttpserverresponder.h qhttpserverresponse.h qhttpserverrouter.h qhttpserverrouterrule.h qhttpserverrouterviewtraits.h qhttpserverviewtraits.h qhttpserverviewtraits_impl.h qthttpserverglobal.h
SYNCQT.GENERATED_HEADER_FILES = QAbstractHttpServer QHttpServer QFutureInterface QHttpServerFutureResponse QHttpServerRequest QHttpServerResponder QHttpServerResponse QHttpServerRouter QHttpServerRouterRule QHttpServerRouterViewTraits QHttpServerAfterRequestViewTraits qthttpserverversion.h QtHttpServerVersion QtHttpServer
SYNCQT.PRIVATE_HEADER_FILES = qabstracthttpserver_p.h qhttpserver_p.h qhttpserverliterals_p.h qhttpserverrequest_p.h qhttpserverresponder_p.h qhttpserverresponse_p.h qhttpserverrouter_p.h qhttpserverrouterrule_p.h
SYNCQT.QPA_HEADER_FILES =
SYNCQT.CLEAN_HEADER_FILES = qabstracthttpserver.h qhttpserver.h qhttpserverfutureresponse.h qhttpserverrequest.h qhttpserverresponder.h qhttpserverresponse.h qhttpserverrouter.h qhttpserverrouterrule.h qhttpserverrouterviewtraits.h qhttpserverviewtraits.h qhttpserverviewtraits_impl.h qthttpserverglobal.h
SYNCQT.INJECTIONS =

View File

@@ -0,0 +1 @@
#include "../../../qthttpserver/src/httpserver/qabstracthttpserver.h"

View File

@@ -0,0 +1 @@
#include "../../../qthttpserver/src/httpserver/qhttpserver.h"

View File

@@ -0,0 +1 @@
#include "../../../qthttpserver/src/httpserver/qhttpserverfutureresponse.h"

View File

@@ -0,0 +1 @@
#include "../../../qthttpserver/src/httpserver/qhttpserverrequest.h"

View File

@@ -0,0 +1 @@
#include "../../../qthttpserver/src/httpserver/qhttpserverresponder.h"

View File

@@ -0,0 +1 @@
#include "../../../qthttpserver/src/httpserver/qhttpserverresponse.h"

View File

@@ -0,0 +1 @@
#include "../../../qthttpserver/src/httpserver/qhttpserverrouter.h"

View File

@@ -0,0 +1 @@
#include "../../../qthttpserver/src/httpserver/qhttpserverrouterrule.h"

View File

@@ -0,0 +1 @@
#include "../../../qthttpserver/src/httpserver/qhttpserverrouterviewtraits.h"

View File

@@ -0,0 +1 @@
#include "../../../qthttpserver/src/httpserver/qhttpserverviewtraits.h"

View File

@@ -0,0 +1 @@
#include "../../../qthttpserver/src/httpserver/qhttpserverviewtraits_impl.h"

View File

@@ -0,0 +1 @@
#include "../../../qthttpserver/src/httpserver/qthttpserverglobal.h"

View File

@@ -0,0 +1,9 @@
/* This file was generated by syncqt. */
#ifndef QT_QTHTTPSERVER_VERSION_H
#define QT_QTHTTPSERVER_VERSION_H
#define QTHTTPSERVER_VERSION_STR "5.12.0"
#define QTHTTPSERVER_VERSION 0x050C00
#endif // QT_QTHTTPSERVER_VERSION_H

View File

@@ -0,0 +1 @@
#include "../../../../../../qthttpserver/src/sslserver/qsslserver_p.h"

View File

@@ -0,0 +1 @@
#include "qsslserver.h"

View File

@@ -0,0 +1,7 @@
#ifndef QT_QTSSLSERVER_MODULE_H
#define QT_QTSSLSERVER_MODULE_H
#include <QtSslServer/QtSslServerDepends>
#include "qtsslserverglobal.h"
#include "qsslserver.h"
#include "qtsslserverversion.h"
#endif

View File

@@ -0,0 +1,5 @@
/* This file was generated by qmake with the info from <root>/src/sslserver/sslserver.pro. */
#ifdef __cplusplus /* create empty PCH in C mode */
#include <QtNetwork/QtNetwork>
#include <QtCore/QtCore>
#endif

View File

@@ -0,0 +1 @@
#include "qtsslserverversion.h"

View File

@@ -0,0 +1,6 @@
SYNCQT.HEADER_FILES = qsslserver.h qtsslserverglobal.h
SYNCQT.GENERATED_HEADER_FILES = QSslServer qtsslserverversion.h QtSslServerVersion QtSslServer
SYNCQT.PRIVATE_HEADER_FILES = qsslserver_p.h
SYNCQT.QPA_HEADER_FILES =
SYNCQT.CLEAN_HEADER_FILES = qsslserver.h qtsslserverglobal.h
SYNCQT.INJECTIONS =

View File

@@ -0,0 +1 @@
#include "../../../qthttpserver/src/sslserver/qsslserver.h"

View File

@@ -0,0 +1 @@
#include "../../../qthttpserver/src/sslserver/qtsslserverglobal.h"

View File

@@ -0,0 +1,9 @@
/* This file was generated by syncqt. */
#ifndef QT_QTSSLSERVER_VERSION_H
#define QT_QTSSLSERVER_VERSION_H
#define QTSSLSERVER_VERSION_STR "5.12.0"
#define QTSSLSERVER_VERSION 0x050C00
#endif // QT_QTSSLSERVER_VERSION_H

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,5 @@
QMAKE_PRL_BUILD_DIR = D:/Dati/GoogleDrive/cpp/build-qthttpserver-Desktop_Qt_5_15_2_MSVC2015_64bit-Debug/src/httpserver
QMAKE_PRO_INPUT = httpserver.pro
QMAKE_PRL_TARGET = Qt5HttpServer.lib
QMAKE_PRL_CONFIG = lex yacc depend_includepath testcase_targets import_plugins import_qpa_plugin windows prepare_docs qt_docs_targets qt_build_extra file_copies qmake_use qt warn_on release link_prl flat debug_and_release precompile_header autogen_precompile_source embed_manifest_dll embed_manifest_exe shared shared release no_plugin_manifest win32 msvc copy_dir_files sse2 aesni sse3 ssse3 sse4_1 sse4_2 avx avx2 compile_examples f16c force_debug_info largefile precompile_header rdrnd rdseed shani x86SimdAlways prefix_build force_independent utf8_source create_prl link_prl no_private_qt_headers_warning QTDIR_build qt_example_installs exceptions_off testcase_exceptions release ReleaseBuild Release build_pass c++11 win32-msvc2015 qml_debug release ReleaseBuild Release build_pass relative_qt_rpath git_build target_qt c++11 strict_c++ qt_install_headers need_fwd_pri qt_install_module debug_and_release build_all create_cmake skip_target_version_ext release ReleaseBuild Release build_pass have_target dll exclusive_builds debug_info no_autoqmake thread moc resources
QMAKE_PRL_VERSION = 5.12.0

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,5 @@
QMAKE_PRL_BUILD_DIR = D:/Dati/GoogleDrive/cpp/build-qthttpserver-Desktop_Qt_5_15_2_MSVC2015_64bit-Debug/src/httpserver
QMAKE_PRO_INPUT = httpserver.pro
QMAKE_PRL_TARGET = Qt5HttpServerd.lib
QMAKE_PRL_CONFIG = lex yacc debug depend_includepath testcase_targets import_plugins import_qpa_plugin windows prepare_docs qt_docs_targets qt_build_extra file_copies qmake_use qt warn_on link_prl flat debug_and_release precompile_header autogen_precompile_source embed_manifest_dll embed_manifest_exe shared shared no_plugin_manifest win32 msvc copy_dir_files sse2 aesni sse3 ssse3 sse4_1 sse4_2 avx avx2 compile_examples f16c force_debug_info largefile precompile_header rdrnd rdseed shani x86SimdAlways prefix_build force_independent utf8_source create_prl link_prl no_private_qt_headers_warning QTDIR_build qt_example_installs exceptions_off testcase_exceptions debug DebugBuild Debug build_pass c++11 win32-msvc2015 debug qml_debug debug DebugBuild Debug build_pass relative_qt_rpath git_build target_qt c++11 strict_c++ qt_install_headers need_fwd_pri qt_install_module debug_and_release build_all create_cmake skip_target_version_ext debug DebugBuild Debug build_pass have_target dll no_plist exclusive_builds debug_info no_autoqmake thread moc resources
QMAKE_PRL_VERSION = 5.12.0

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,5 @@
QMAKE_PRL_BUILD_DIR = D:/Dati/GoogleDrive/cpp/build-qthttpserver-Desktop_Qt_5_15_2_MSVC2015_64bit-Debug/src/sslserver
QMAKE_PRO_INPUT = sslserver.pro
QMAKE_PRL_TARGET = Qt5SslServer.lib
QMAKE_PRL_CONFIG = lex yacc depend_includepath testcase_targets import_plugins import_qpa_plugin windows prepare_docs qt_docs_targets qt_build_extra file_copies qmake_use qt warn_on release link_prl flat debug_and_release autogen_precompile_source embed_manifest_dll embed_manifest_exe shared shared release no_plugin_manifest win32 msvc copy_dir_files sse2 aesni sse3 ssse3 sse4_1 sse4_2 avx avx2 compile_examples f16c force_debug_info largefile rdrnd rdseed shani x86SimdAlways prefix_build force_independent utf8_source create_prl link_prl no_private_qt_headers_warning QTDIR_build qt_example_installs exceptions_off testcase_exceptions release ReleaseBuild Release build_pass c++11 win32-msvc2015 qml_debug release ReleaseBuild Release build_pass relative_qt_rpath git_build target_qt c++11 strict_c++ qt_install_headers need_fwd_pri qt_install_module debug_and_release build_all create_cmake skip_target_version_ext release ReleaseBuild Release build_pass have_target dll exclusive_builds debug_info no_autoqmake thread moc resources
QMAKE_PRL_VERSION = 5.12.0

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,5 @@
QMAKE_PRL_BUILD_DIR = D:/Dati/GoogleDrive/cpp/build-qthttpserver-Desktop_Qt_5_15_2_MSVC2015_64bit-Debug/src/sslserver
QMAKE_PRO_INPUT = sslserver.pro
QMAKE_PRL_TARGET = Qt5SslServerd.lib
QMAKE_PRL_CONFIG = lex yacc debug depend_includepath testcase_targets import_plugins import_qpa_plugin windows prepare_docs qt_docs_targets qt_build_extra file_copies qmake_use qt warn_on link_prl flat debug_and_release autogen_precompile_source embed_manifest_dll embed_manifest_exe shared shared no_plugin_manifest win32 msvc copy_dir_files sse2 aesni sse3 ssse3 sse4_1 sse4_2 avx avx2 compile_examples f16c force_debug_info largefile rdrnd rdseed shani x86SimdAlways prefix_build force_independent utf8_source create_prl link_prl no_private_qt_headers_warning QTDIR_build qt_example_installs exceptions_off testcase_exceptions debug DebugBuild Debug build_pass c++11 win32-msvc2015 debug qml_debug debug DebugBuild Debug build_pass relative_qt_rpath git_build target_qt c++11 strict_c++ qt_install_headers need_fwd_pri qt_install_module debug_and_release build_all create_cmake skip_target_version_ext debug DebugBuild Debug build_pass have_target dll no_plist exclusive_builds debug_info no_autoqmake thread moc resources
QMAKE_PRL_VERSION = 5.12.0

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