Compare commits

...

361 Commits
android ... ant

Author SHA1 Message Date
Roberto Viola
e78830c5b5 added ant setting and linked to the cadence value on the homeform 2021-02-03 11:06:59 +01:00
Roberto Viola
31d9af07a5 compilation is ok now :) 2021-02-03 10:36:10 +01:00
Roberto Viola
1c388aa3ca added android_antlib_4-14-0.jar 2021-02-03 09:32:50 +01:00
Roberto Viola
030d33e8b6 porting other stuff about ANT+ 2021-02-03 08:40:25 +01:00
Roberto Viola
fdff25facc starting working on ANT+ 2021-02-03 08:29:11 +01:00
Roberto Viola
ca7d3f2d3a inspirebike added some notification 2021-02-02 08:52:54 +01:00
Roberto Viola
c110e899c0 start and pause text disabled if the top bar is disabled 2021-02-02 08:10:28 +01:00
Roberto Viola
7e599050db disabled rfcomm security on toorxtreadmill 2021-02-01 09:57:50 +01:00
Roberto Viola
37272be0b9 top bar text fixed when top bar is disabled 2021-02-01 08:28:02 +01:00
Roberto Viola
e1b8e59d5e compatibility added with RGT Cycling 2021-01-31 15:32:49 +01:00
Roberto Viola
784bb15f3c change behaviour from pause-stop to start-pause on UI 2021-01-31 06:56:58 +01:00
Roberto Viola
4e6e4dbaae ftmsbike trying to change the 16 bit uuid service to a 128bit one for
the schwinn bike
2021-01-30 12:37:11 +01:00
Roberto Viola
932699df6e reverting the heartratebelt disconnection modification 2021-01-30 12:36:29 +01:00
Roberto Viola
bede6301e9 wheel ratio setting on proformbike added 2021-01-29 16:14:24 +01:00
Roberto Viola
e597e13f8c fixing filter device 2021-01-29 10:39:35 +01:00
Roberto Viola
bcadec84d7 inspirebike added, trying to fixing disconnection from the
heartratebelt, added 5 seconds to delay to schwinnbike
2021-01-29 10:28:00 +01:00
Roberto Viola
d65b4286e8 added filter on bad data on proformtreadmill 2021-01-28 11:14:01 +01:00
Roberto Viola
7cca39e2b4 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-01-28 08:55:21 +01:00
Roberto Viola
95c30726f4 fixed calories on proform devices 2021-01-28 08:52:55 +01:00
Roberto Viola
7a55640fdc toorxtreadmill connection fixed 2021-01-27 21:07:38 +01:00
Roberto Viola
56e09db023 avoiding calculate average,max and min during pause 2021-01-27 18:30:55 +01:00
Roberto Viola
e142b67368 watt avg and max on the second line of the tile 2021-01-27 14:38:37 +01:00
Roberto Viola
089fd43b5d stop button bliniking when in pause 2021-01-27 11:40:02 +01:00
Roberto Viola
771f1c4b9c managing the pause event inside the machineries 2021-01-27 10:08:06 +01:00
Roberto Viola
480115bef1 schwinnIC4bike added 2021-01-27 08:38:56 +01:00
Roberto Viola
37aeed51a6 some stats comes very odd after the clearStats 2021-01-27 05:25:02 +01:00
Roberto Viola
aff43e083a added version to the UI 2021-01-26 10:19:19 +01:00
Roberto Viola
3291faf003 redraw the start and stop button only if the top bar is enabled 2021-01-26 09:37:42 +01:00
Roberto Viola
770ba1bc75 added an option to disable the wakelock for older android devices
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-26 08:29:12 +01:00
Roberto Viola
e584bc4f1e added some debug print to start and stop button
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-26 06:54:56 +01:00
Roberto Viola
f203da8690 added setting for trx route key
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-25 17:35:21 +01:00
Roberto Viola
9e54e85173 Delete build-qdomyos-zwift-Desktop_Qt_5_15_1_MinGW_32_bit-Debug directory 2021-01-25 16:52:48 +01:00
Roberto Viola
8ca2a4fc07 Update issue templates 2021-01-25 16:51:52 +01:00
Roberto Viola
67ef89463d distance on console settings, managed also on domyosbike
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-25 16:47:09 +01:00
Roberto Viola
b91e9c6f69 fit file saved when the user press stop
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-25 14:44:34 +01:00
Roberto Viola
a7b45a1bff start, pause and stop managed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-25 14:42:34 +01:00
Roberto Viola
370f79b6f0 virtualbike resistance controlled by zwift improved
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-25 09:43:55 +01:00
Roberto Viola
eb23778142 watt formula improved for the domyosbike
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-25 09:24:58 +01:00
Roberto Viola
cc88b7b8eb added an option to disable the distance on the console of the
domyostreadmill

Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-25 08:30:19 +01:00
Roberto Viola
b11899b6ce Update README.md 2021-01-25 08:16:47 +01:00
Roberto Viola
d989e5e00d fixed casting issues on proformbike, proformtreadmill and yesoulbike
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-24 09:54:19 +01:00
Roberto Viola
e31e9ce5a5 fixed iconsole+ name
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-23 11:24:42 +01:00
Roberto Viola
95b705a37a i-console+ compatibility added
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-23 06:50:13 +01:00
Roberto Viola
c1c67585ba fixed resistance values on proformbike and filtered out some strange
values

Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-23 06:44:51 +01:00
Roberto Viola
da2e6d80ba fixed casting on cadence on display on domyosbike
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-22 16:17:28 +01:00
Roberto Viola
23c9ae490c JK fitness treadmill compatibility added
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-22 14:27:10 +01:00
Roberto Viola
ad123cdfc1 proformbike filter on watts
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-22 10:30:38 +01:00
Roberto Viola
174f5bfefa elapsed time fixed on flywheelbike
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-21 16:15:20 +01:00
Roberto Viola
77f8c48040 speed changed in the proformbike
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-21 11:36:26 +01:00
Roberto Viola
ed67fbadc6 proformtreadmill added (just the protocol)
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-21 11:34:54 +01:00
Roberto Viola
b2c6356685 version 2.2.5
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-20 09:31:55 +01:00
Roberto Viola
2624c61775 workaround for flywheelbike (elapsed time and jouls)
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-20 09:17:33 +01:00
Roberto Viola
7fbd678957 trying to fix notification error on yesoulbike
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-20 09:08:50 +01:00
Roberto Viola
399116476d trying to stabilize proformbike
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-19 20:39:04 +01:00
Roberto Viola
8aca057474 flywheelbike casting fixed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-19 17:30:51 +01:00
Roberto Viola
53d375def2 telink multiplier on display added
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-19 16:06:46 +01:00
Roberto Viola
00062428de first proformbike version
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-19 14:17:14 +01:00
Roberto Viola
37b2e13b0c fixed casting issue on cadence and heart rate 2021-01-19 07:08:53 +01:00
Roberto Viola
23089c4b1f fixing flywheelbike name
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-17 21:51:36 +01:00
Roberto Viola
4d475b13e3 flywheel first implementation
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-17 19:12:47 +01:00
Roberto Viola
73f8de5037 toorx 3.0 compatibility added
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-17 08:42:56 +01:00
Roberto Viola
cf0bf8a4b3 bluetooth connection improved; timeout on heartratebelt added; trying to
fix some cadence issue on iOS

Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-15 08:50:03 +01:00
Roberto Viola
275deb5542 discovery mode only for LE
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-14 16:13:53 +01:00
Roberto Viola
632e817e1d fixed strava UI message
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-14 14:54:17 +01:00
Roberto Viola
25adc74a61 Update main.yml 2021-01-14 14:41:39 +01:00
Roberto Viola
7a3e1c9fb6 Merge branch 'strava_autoupload' 2021-01-14 14:34:07 +01:00
Roberto Viola
0fd2370d1b strava popup fixed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-14 14:30:11 +01:00
Roberto Viola
df4c4977de Merge branch 'strava_autoupload' of https://github.com/cagnulein/qdomyos-zwift into strava_autoupload 2021-01-14 14:25:43 +01:00
Roberto Viola
f5dcec7c34 avg watt fixed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-14 14:25:34 +01:00
Roberto Viola
338f63aa40 removed entitlement on iOS that cause issue from yesterday 2021-01-14 11:35:50 +01:00
Roberto Viola
d475877d6b Merge branch 'strava_autoupload' of https://github.com/cagnulein/qdomyos-zwift into strava_autoupload 2021-01-13 20:55:41 +01:00
Roberto Viola
1d39c434a7 first android version with auto upload to strava
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-13 20:49:24 +01:00
Roberto Viola
21078aa9b2 some strava UI
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-13 19:39:40 +01:00
Roberto Viola
efc8e71ff7 ignore secret.h 2021-01-13 18:47:40 +01:00
Roberto Viola
4acb97c93c added secret.h 2021-01-13 18:40:50 +01:00
Roberto Viola
4c91fd95d0 Merge branch 'strava_autoupload' of https://github.com/cagnulein/qdomyos-zwift into strava_autoupload 2021-01-13 18:27:01 +01:00
Roberto Viola
c50eb06abd Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-01-13 18:26:24 +01:00
Roberto Viola
eb909723de removed stupid control on packet received
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-13 18:25:57 +01:00
Roberto Viola
f648c3ae91 removed stupid control on packet received
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-13 18:25:27 +01:00
Roberto Viola
8148376558 ios build fixed 2021-01-13 15:49:25 +01:00
Roberto Viola
2476f77c44 ios build fix 2021-01-13 14:14:29 +01:00
Roberto Viola
9c9972adde altitude fixed in the FIT file
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-13 11:52:54 +01:00
Roberto Viola
8d36b32aea Merge branch 'master' into strava_autoupload 2021-01-13 11:42:38 +01:00
Roberto Viola
bcc831cac8 android openssl added 2021-01-13 11:31:30 +01:00
Roberto Viola
c8970442af android 2.1.1 version
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-13 10:26:32 +01:00
Roberto Viola
d9c2d7217e Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-01-13 08:24:51 +01:00
Roberto Viola
468a543c90 ios build fixed 2021-01-13 08:24:26 +01:00
Roberto Viola
2762452e7b fit file now compatibile with garmin connect
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-13 08:15:08 +01:00
Roberto Viola
c03996560d fixed watt overflow on yesoulbike
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-12 16:15:46 +01:00
Roberto Viola
43ed26e822 removed filter about same packets received: it causes miss data on the
stats

Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-12 16:01:32 +01:00
Roberto Viola
78356ecf4b better management of reconnect event for all devices
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-12 11:46:09 +01:00
Roberto Viola
136896ea53 fassitreadmill filter on wrong inclination numbers
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-12 08:15:59 +01:00
Roberto Viola
6a8512e623 fassitreadmill crash fixed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-11 16:18:02 +01:00
Roberto Viola
20dad1b0f1 added metric class. I need to do some test about this
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-11 11:48:08 +01:00
Roberto Viola
062f405601 changed to lighter icons on apple watch 2021-01-10 22:21:07 +01:00
Roberto Viola
5339afa449 iOS project updated with new devices 2021-01-10 16:14:25 +01:00
Roberto Viola
d7f7dc9de6 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-01-10 16:03:12 +01:00
Roberto Viola
073772d14c trying to fix crash when the user select a wrong heart rate belt
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-10 08:43:21 +01:00
Roberto Viola
b4ea3a2fa6 cadence bluetooth values fixed if the cadence is 0
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-10 08:37:27 +01:00
Roberto Viola
93200fc9a8 added resistance to yesoulbike
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-10 08:31:48 +01:00
Roberto Viola
f964763bc1 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-01-09 19:16:14 +01:00
Roberto Viola
374fef75e2 yesoulbike first commit
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-09 19:15:27 +01:00
Roberto Viola
afbb8db8f4 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift
# Conflicts:
#	src/main.cpp
2021-01-09 19:10:36 +01:00
Roberto Viola
99cb6315ec trying to understand strange behaviout on fassitreadmill
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-09 17:05:34 +01:00
Roberto Viola
9dfd192e15 fassitreadmill UUID fixed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-09 13:57:52 +01:00
Roberto Viola
13a4f65ccb fassi treadmill first commit
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-09 11:13:44 +01:00
Roberto Viola
2b10dd445e trying toggling the update of the iOS services 2021-01-09 07:43:58 +01:00
Roberto Viola
bd8b7462f9 enabling by default the iOS workaround, better than nothing 2021-01-08 21:55:40 +01:00
Roberto Viola
92cc332008 trying again a fix on iOS workaround 2021-01-08 21:49:06 +01:00
Roberto Viola
a03d1bf690 very dirty strava upload implementation, but it works!
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-08 16:32:46 +01:00
Roberto Viola
8310aa2017 crash fixed on iOS workaround 2021-01-08 08:46:49 +01:00
Roberto Viola
881bc6e9a5 add cadence to iOS workaround 2021-01-07 21:30:31 +01:00
Roberto Viola
2441d2908a working again on iOS workaround. Almost done
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-07 17:38:03 +01:00
Roberto Viola
bf4ab9571d ok hold on this, i have to fix the cadence 0 issue
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-07 16:44:13 +01:00
Roberto Viola
30921940e6 adding strava auth
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-07 16:05:07 +01:00
Roberto Viola
dcb4d3971d heart rate workaround is working! 2021-01-07 15:50:24 +01:00
Roberto Viola
df0a0c98d2 first try to ios cadence 0 workaround 2021-01-07 11:18:02 +01:00
Roberto Viola
78ca3c35f3 ble ios workaround starts from here 2021-01-07 09:17:53 +01:00
Roberto Viola
3618f5c986 preparing the way for the iOS workaround for cadence 0 issue
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-07 09:04:29 +01:00
Roberto Viola
4bdcf9a5fd avgpelotonresistance, avgresistance, maxresistance and
maxpelotonresistance added

Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-07 08:51:15 +01:00
Roberto Viola
bfe4c450c4 domyostreadmill console sidebar buttons managed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-07 08:17:03 +01:00
Roberto Viola
094ba4a0f7 added help label
Signed-off-by: Roberto Viola <roberto.viola83@gmail.com>
2021-01-06 12:16:46 +01:00
Roberto Viola
b5c7846550 watt issue on FIT
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-05 20:08:32 +01:00
Roberto Viola
83889cf0ae secret key added
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-05 20:07:30 +01:00
Roberto Viola
045d3d3336 watt fixed on fit export
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-05 19:52:21 +01:00
Roberto Viola
ac937f6f16 networkauth is better :)
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-05 19:49:53 +01:00
Roberto Viola
6f49d0e490 playing with qwebview
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-05 09:50:53 +01:00
Roberto Viola
e309c39f93 fixed workout type on apple watch 2021-01-05 08:51:31 +01:00
Roberto Viola
f4e1d61980 fixed float accuracy on domyos treadmill buttons events 2021-01-05 08:50:57 +01:00
Roberto Viola
59344f74a8 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-01-04 17:38:27 +01:00
Roberto Viola
986d9a7d55 trying to fixing layout issue on rotation
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-04 17:37:47 +01:00
Roberto Viola
2e26d40c47 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-01-04 16:13:07 +01:00
Roberto Viola
8f23c6a471 layout fixed when the user changes the orientation
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-04 15:36:32 +01:00
Roberto Viola
45c1d6ff0a double tiles fixed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-04 15:26:35 +01:00
Roberto Viola
c3d6affd93 hiding toolbar when the tiles scrolls
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-04 15:10:37 +01:00
Roberto Viola
0f6646321a domyostreadmill buttons managed and option added
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-04 15:02:34 +01:00
Roberto Viola
7de5bf533f Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-01-03 11:57:32 +01:00
Roberto Viola
b608755230 fixed viewport on settings page
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-03 11:55:22 +01:00
Roberto Viola
c484ac50f8 add a topBar setting to hide it
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-03 11:26:08 +01:00
Roberto Viola
625d022ca6 when the heartRate belt disconnects it doesn't have to stop the
connection to the machinery
2021-01-03 08:30:42 +01:00
Roberto Viola
532420bb5b apple watch disclaimer on the settings page 2021-01-03 08:21:42 +01:00
Roberto Viola
e627cae245 cadence label fixed 2021-01-03 08:02:45 +01:00
Roberto Viola
32a4609740 virtual_device_enabled setting added to debug issue on some android
devices

Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-02 21:42:53 +01:00
Roberto Viola
b09299c23d Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-01-02 18:30:57 +01:00
Roberto Viola
671c27f7ba ios 1.11.0 2021-01-02 18:30:43 +01:00
Roberto Viola
4196b99b8c secondLine added to QML for FTP %
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-02 18:27:17 +01:00
Roberto Viola
27858ccc95 android icons 2021-01-02 17:24:07 +01:00
Roberto Viola
1fcec6a9e1 version 1.11.0 on android
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-02 12:42:58 +01:00
Roberto Viola
dc5159e608 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2021-01-02 12:29:18 +01:00
Roberto Viola
ae73026ee0 elliptical files added to iOS build 2021-01-02 12:29:01 +01:00
Roberto Viola
5401d84c2a ftp tile added
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-02 12:26:48 +01:00
Roberto Viola
d99098cf0f refresh_bluetooth_devices_clicked tested on real android
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-02 11:34:49 +01:00
Roberto Viola
4cb9e434d8 semaphore added to bluetooth discovery process on settings page
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-02 10:03:14 +01:00
Roberto Viola
1302ecf56e elliptical experimental support 2021-01-02 08:24:56 +01:00
Roberto Viola
36c3f039ef refresh bluetooth devices added to the setting page 2021-01-02 06:59:45 +01:00
Roberto Viola
e38f0073a1 ignoring qt user file 2021-01-02 06:57:03 +01:00
Roberto Viola
4200cea55a fix typo on running cadence sensor
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-01 14:06:29 +01:00
Roberto Viola
36ae5b1732 running speed and cadence sensor support added
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2021-01-01 14:00:22 +01:00
Roberto Viola
9a19203426 ios build fixed 2020-12-31 12:53:37 +01:00
Roberto Viola
4111c5af2b combobox added to QML to heartRate belt setting
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-31 12:24:15 +01:00
Roberto Viola
f937565ebd text field fixed on heart rate belt setting
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-30 19:29:27 +01:00
Roberto Viola
b668f0e1e5 version 1.9.0
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-30 19:28:06 +01:00
Roberto Viola
89d5154d26 fixed concurrent connection on heartrate and machine on android
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-30 19:26:27 +01:00
Roberto Viola
d6c9e84fe9 heart rate belt supported! need more test of course :) 2020-12-30 17:00:04 +01:00
Roberto Viola
4eb15236f2 heartratebelt template added 2020-12-30 13:47:07 +01:00
Roberto Viola
4e4e551f59 fixed build on older qt version
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-30 11:53:53 +01:00
Roberto Viola
8296c1f380 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2020-12-30 11:42:24 +01:00
Roberto Viola
e27b1529d1 iOS: apple watch app open automatically when the app opens on the phone 2020-12-30 11:42:10 +01:00
Roberto Viola
afc7cf9cc9 added deviceUpdated event in order to catch the HRM devices
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-30 11:29:33 +01:00
Roberto Viola
cebdd8120a fixed services list on virtualbike
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-29 10:11:35 +01:00
Roberto Viola
a4524a60ad fixed math in wheel revs
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-29 10:04:18 +01:00
Roberto Viola
2b23478216 trying wheel revs (NOT TESTED YET)
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-29 09:46:51 +01:00
Roberto Viola
c91b87d9cf added -service-changed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-28 21:49:50 +01:00
Roberto Viola
ce5e99f2c8 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2020-12-28 12:24:38 +01:00
Roberto Viola
283d6eada2 ios build improvement (remember always to revert xcode project after building from qtcreator) 2020-12-28 12:21:14 +01:00
Roberto Viola
6d48e05927 fixed init bike_power_sensor
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-28 10:08:20 +01:00
Roberto Viola
789d8f9c12 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2020-12-28 10:00:42 +01:00
Roberto Viola
bd40dc2a78 -bike-power-sensor added
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-28 10:00:12 +01:00
Roberto Viola
106b648273 added battery service setting to QML 2020-12-27 17:56:48 +01:00
Roberto Viola
3afab888e5 cadence sensor on domyosbike fixed
Signed-off-by: Roberto Viola <roberto.viola83@gmail.com>
2020-12-27 16:20:59 +01:00
Roberto Viola
eff45e53d0 fixed typo on merging
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-27 12:13:38 +01:00
Roberto Viola
f3352edf88 Merge branch 'applewatch' of https://github.com/cagnulein/qdomyos-zwift into applewatch
# Conflicts:
#	src/ios/Info.plist
#	src/main.cpp
#	src/qdomyos-zwift.pro
#	src/qfit.cpp
2020-12-27 12:10:00 +01:00
Roberto Viola
27b0352e45 fix typo
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-27 11:56:46 +01:00
Roberto Viola
0e9dee1b03 added -battery_service and -bluetooth_relaxed options
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-27 11:48:41 +01:00
Roberto Viola
fa3d1c425a 1.8.5 android version released
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-26 17:52:57 +01:00
Roberto Viola
5ec0133a35 added services terminator to virtualbike and virtualtreadmill for
watched compatibility

Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-26 16:12:33 +01:00
Roberto Viola
a969fc277d -bike-cadence-sensor added
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-26 14:48:12 +01:00
Roberto Viola
0f9a0519e9 fixed elapsed time greater than 1h
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-26 14:44:18 +01:00
Roberto Viola
395f5939b6 fixed fit file distance
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-25 09:11:56 +01:00
Roberto Viola
b1de9c958a fixed fit distance and bumped version to 1.8.5 2020-12-25 09:09:26 +01:00
Roberto Viola
865da62c8d removed notification from apple watch and allow to run on background! 2020-12-24 19:09:12 +01:00
Roberto Viola
ba0f46da61 icons updated 2020-12-24 17:06:55 +01:00
Roberto Viola
4e94a6b3e9 add watch icons 2020-12-24 09:32:43 +01:00
Roberto Viola
2ea73d79b3 running version after mac crash 2020-12-24 09:17:38 +01:00
Roberto Viola
7c29822153 fix path on entitlement file 2020-12-24 09:05:56 +01:00
Roberto Viola
df7926692b add apple bureaucracy in the plist files 2020-12-24 09:04:18 +01:00
Roberto Viola
0dabe17ed3 add swift option to project 2020-12-24 08:56:32 +01:00
Roberto Viola
17443e34ca added swift files to project 2020-12-24 08:30:26 +01:00
Roberto Viola
0cd76a1c73 restoring work from yesterday 2020-12-24 08:21:36 +01:00
Roberto Viola
de670c6742 continuing adding files 2020-12-24 08:07:59 +01:00
Roberto Viola
c6661a8b6e add watchkit storyboard 2020-12-24 07:57:51 +01:00
Roberto Viola
69c143cad2 add missing files to repo 2020-12-24 07:52:44 +01:00
Roberto Viola
32df14937c fix apple burocracy 2020-12-23 15:55:37 +01:00
Roberto Viola
1bcbdccf2c version 1.8.0 2020-12-23 14:37:47 +01:00
Roberto Viola
3e5af0313c ready for the first real try on an apple watch! 2020-12-23 14:16:14 +01:00
Roberto Viola
f81ab2cb04 authorization request for access to healthkit 2020-12-23 13:40:33 +01:00
Roberto Viola
fe6caca5de add swift files to project, built and run! 2020-12-23 11:28:35 +01:00
Roberto Viola
5c493fe2a7 add swift files to app 2020-12-23 11:01:46 +01:00
Roberto Viola
50850479fd entitlmentes added to qdomyos-zwift 2020-12-23 10:55:52 +01:00
Roberto Viola
6922eb20f9 entitlmentes added to qdomyos-zwift 2020-12-23 10:54:55 +01:00
Roberto Viola
ab692b674a entitlements added 2020-12-23 10:49:52 +01:00
Roberto Viola
ef66ecbc38 first build without swift main 2020-12-23 10:41:19 +01:00
Roberto Viola
dc283acc0a first build with WatchKit 2020-12-23 09:30:55 +01:00
Roberto Viola
7fb578f66e xcode project without applewatch 2020-12-23 08:26:00 +01:00
Roberto Viola
f9c9fd156c -no-reconnection fixed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-23 05:06:26 +01:00
Roberto Viola
bfc80125c1 added avgwatt tile
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-22 09:03:22 +01:00
Roberto Viola
e005fe804d fit export fixed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-22 08:40:55 +01:00
Roberto Viola
e1bc9f707b removed sleep from init phase of trxappgateusbtreadmill when the device
is not a irunning

Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-21 15:18:38 +01:00
Roberto Viola
c2fb05617c ios build fixed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-21 10:05:18 +01:00
Roberto Viola
03cdfe35eb Merge branch 'fit'
# Conflicts:
#	src/main.cpp
#	src/qdomyos-zwift.pro
2020-12-21 09:27:07 +01:00
Roberto Viola
77a1981da9 FIT export statically tested
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-21 09:20:04 +01:00
Roberto Viola
5ae2fbef45 -no-reconnection added
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-21 07:35:44 +01:00
Roberto Viola
93db34cf38 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2020-12-21 07:25:07 +01:00
Roberto Viola
889a57ed7b added relaxed bluetooth for samsung s10
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-21 07:18:52 +01:00
Roberto Viola
25eb9b0990 first fit commit 2020-12-20 17:35:40 +01:00
Roberto Viola
9bf3cab830 fixing ios build
Signed-off-by: Roberto Viola <cagnulein@gmail.com>
2020-12-18 15:14:35 +01:00
Roberto Viola
d53af5ce90 trying to avoid screen off on iOS
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-18 15:09:32 +01:00
Roberto Viola
688cafd3d6 iOS log and GPX enabled 2020-12-18 12:49:50 +01:00
Roberto Viola
b4d2197fd4 added buttons to confirm text settings
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-18 08:02:57 +01:00
Roberto Viola
0a8ecbe4b6 V-RUN experimental support
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-18 08:02:08 +01:00
Roberto Viola
cf9bc0696e tiles visibilty customizable
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-17 11:56:45 +01:00
Roberto Viola
944f2c5f1d android version 1.6.1
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-17 08:36:31 +01:00
Roberto Viola
2db2de48dc calories added to echelonconnectsport
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-17 08:17:04 +01:00
Roberto Viola
8641efb7a2 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2020-12-16 21:36:54 +01:00
Roberto Viola
e5507e5202 added start frame to trxappgateusbtreadmill
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-16 21:36:44 +01:00
Roberto Viola
b3f6d57696 gpx speed converted to meter/seconds
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-16 21:36:15 +01:00
Roberto Viola
a613473a05 negative pedelon resistance filtered out
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-16 21:35:44 +01:00
Roberto Viola
3ece71e60b power and speed added to gpx export (NOT TESTED)
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-16 18:27:32 +01:00
Roberto Viola
7b69d00451 1.6.0 iOS 2020-12-16 18:13:00 +01:00
Roberto Viola
e0c78d5a10 added peloton resistance to UI
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-16 15:55:11 +01:00
Roberto Viola
3e26693e2a try to fixing init phase on i-running
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-15 16:41:08 +01:00
Roberto Viola
a9e45008e0 android build fixed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-15 15:10:12 +01:00
Roberto Viola
e3251d0091 tested gpx on strava with a simulate run
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-15 14:45:06 +01:00
Roberto Viola
620f62e9f3 quick and dirty gpx saving function
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-15 12:16:28 +01:00
Roberto Viola
b07e7255db adding some sleep on init phase on trxappgateusbtreadmill
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-15 09:33:56 +01:00
Roberto Viola
9dd797587b i-running init phase improved
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-15 08:48:30 +01:00
Roberto Viola
f36deaca13 i-running added packetReceived signal
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-14 15:57:42 +01:00
Roberto Viola
4e201675f6 i-running characteristics fixed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-14 15:46:34 +01:00
Roberto Viola
35c0f32787 carnielli (i-running) treadmill experimental support
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-14 14:50:58 +01:00
Roberto Viola
44ce147e1a carnielli log added
Vel a 4
Incl 1
A 1’45 vel 6
2’30 incl 4
3 ‘stop
2020-12-14 12:22:56 +01:00
Roberto Viola
79b0018c11 added weight to the settings
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-14 10:23:18 +01:00
Roberto Viola
9cc4e7dda8 description value font size on iOS fixed 2020-12-14 08:47:19 +01:00
Roberto Viola
a5ae6e17de tested elapsed UI on android (just a static run)
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-14 08:16:12 +01:00
Roberto Viola
00737a9252 UI labelFontSize dynamic (need to test the correct size on android and
iOS)

Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-14 05:58:54 +01:00
Roberto Viola
31b461b3e6 added elapsedTime to QML UI
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-14 05:42:00 +01:00
Roberto Viola
e30bb3fc84 removed a decimal point from the speed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-14 05:16:01 +01:00
Roberto Viola
2a711ce5a6 filtering only DomyosBr (some android devices cut the name off)
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-14 05:15:31 +01:00
Roberto Viola
e41a88edbc Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2020-12-12 18:43:56 +01:00
Roberto Viola
f9b1627aaa fan on domyostreadmill synced finally!
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-12 18:43:23 +01:00
Roberto Viola
12656af6e0 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2020-12-11 09:40:54 +01:00
Roberto Viola
a812be8cd0 store icon reduced 2020-12-11 08:54:33 +01:00
Roberto Viola
fa15fbfe3a app store and google play icons added 2020-12-11 08:50:20 +01:00
Roberto Viola
2da3bb145f echelon ex1 compability added (UNTESTED)
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-11 08:09:13 +01:00
Roberto Viola
12359dc9f7 version 1.5.0
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-10 22:53:10 +01:00
Roberto Viola
c058da7eaf relaxing times on domyostreadmill and check all uncomplete packets
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-10 12:22:13 +01:00
Roberto Viola
235748cd68 removed static variables from domyosbike and domyostreadmill
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-10 08:49:01 +01:00
Roberto Viola
e6af34a095 removed location from UIBackgroundModes
Signed-off-by: Roberto Viola <cagnulein@gmail.com>
2020-12-10 06:59:58 +01:00
Roberto Viola
ca06203d88 removed static variable from trxappgateusbtreadmill
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-09 18:22:20 +01:00
Roberto Viola
7aec2104b6 support for old android device
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-09 15:50:22 +01:00
Roberto Viola
3b489fda3f crash fixed when a bluetooth device disconnects
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-09 15:16:30 +01:00
Roberto Viola
8ebe1b9d81 gpx and trainProgram now work on Android
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-09 14:30:26 +01:00
Roberto Viola
52d1ba5914 added full android ABIs
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-09 12:23:30 +01:00
Roberto Viola
dfebfc41ef qdebug prints also on the console (with android debug is very useful)
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-09 12:23:04 +01:00
Roberto Viola
8a99d76736 android build fixed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-08 14:31:45 +01:00
Roberto Viola
363a4d0860 version 1.4.6 released on play store
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-08 14:00:56 +01:00
Roberto Viola
299ec399e2 log enabled on mac and ios
Signed-off-by: Roberto Viola <cagnulein@gmail.com>
2020-12-08 11:00:16 +01:00
Roberto Viola
2949162e12 echelonconnectsport resistance fixed on iOS
Signed-off-by: Roberto Viola <cagnulein@gmail.com>
2020-12-07 23:17:02 +01:00
Roberto Viola
dddb76fba0 avoid checking bluetooth on ios
Signed-off-by: Roberto Viola <cagnulein@gmail.com>
2020-12-07 22:46:06 +01:00
Roberto Viola
187535d68a ios description stuff 2020-12-07 15:19:08 +01:00
Roberto Viola
6a134255de new iconset ios
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-07 14:37:51 +01:00
Roberto Viola
20558196f7 fix ios infos
Signed-off-by: Roberto Viola <cagnulein@Robertos-iPro.lan>
2020-12-07 14:18:55 +01:00
Roberto Viola
4049b31636 ios icons added
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-07 12:29:30 +01:00
Roberto Viola
7b45aef29c lockScreen on mac solved
Signed-off-by: Roberto Viola <cagnulein@Robertos-iPro.lan>
2020-12-07 11:12:39 +01:00
Roberto Viola
945b7eec76 trying to avoid macos sleep
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-07 10:32:15 +01:00
Roberto Viola
b3e16e1290 setting noheartservice default for android >= 10
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-07 10:17:29 +01:00
Roberto Viola
da6fadbb1e fix compilation issue
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-07 10:07:49 +01:00
Roberto Viola
80c53bfe45 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2020-12-07 09:49:50 +01:00
Roberto Viola
005e6fba99 built under iOS
Signed-off-by: Roberto Viola <cagnulein@Robertos-iPro.lan>
2020-12-07 09:49:08 +01:00
Roberto Viola
d59a862b76 added KJouls to QML UI 2020-12-06 16:00:53 +01:00
Roberto Viola
c8f89d27ae removed static virtualbike variable from domyosbike 2020-12-06 12:50:26 +01:00
Roberto Viola
0eaa352cd0 destroy virtualbike when domyosbike dies 2020-12-06 12:03:04 +01:00
Roberto Viola
8b7593fe53 fixed cadence unstability on echelonconnectsport 2020-12-06 11:33:13 +01:00
Roberto Viola
91ff0fbada increased cadence average for echelonconnectsport
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-06 08:37:35 +01:00
Roberto Viola
dd21ed2635 relaxing timing for domyosbike #61
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-06 08:36:54 +01:00
Roberto Viola
481e256621 trying to stabilize cadence on echelonconnectsport
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-05 10:44:44 +01:00
Roberto Viola
2e94a16889 restoring correct fitness machine feature bytearray on virtualbike
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-04 11:13:48 +01:00
Roberto Viola
b4c4b194b2 elevation gain fixed on domyostreadmill #67
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-04 10:39:08 +01:00
Roberto Viola
5da8440086 toggling bluetooth icon on connecting on QML
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-04 10:35:32 +01:00
Roberto Viola
d5424a38fa fixed adv parameter on future zwift connections. added cadence support
for virtualbike

Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-04 09:58:28 +01:00
Roberto Viola
1947473b2c wait the stop of the discovery before starting the virtualtreadmill and
virtualbike

Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-04 09:57:39 +01:00
Roberto Viola
1b38c1f400 fixed typo on wakelock on android 2020-12-04 09:55:45 +01:00
Roberto Viola
51f7580d06 setting HR to primary back on virtualbike (windows 10 doesn't see it
with secondary)

Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-03 22:32:23 +01:00
Roberto Viola
e6b2a17bee miles added to argument
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-03 17:05:11 +01:00
Roberto Viola
95338bb35e fixed wake lock on android #59
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-03 16:59:34 +01:00
Roberto Viola
f4138820cf speed and distance implemented on echelonconnectsport #62
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-03 16:18:02 +01:00
Roberto Viola
f446dac1db add android 64 bit and minlevelsdk 29 2020-12-03 16:01:00 +01:00
Roberto Viola
2967fc1ab4 compiling for android release 2020-12-03 15:12:26 +01:00
Roberto Viola
ed3ab8b0f1 peloton compatibility added (UNTESTED)
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-03 11:43:45 +01:00
Roberto Viola
884b9a9a8c added miles option to QML #66
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-03 11:13:47 +01:00
Roberto Viola
aac169b834 heartrate on virtualbike put as secondaryservice
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-02 18:28:23 +01:00
Roberto Viola
601d9cb20e pace icon changed 2020-12-02 16:15:58 +01:00
Roberto Viola
90034c3746 working on trainProgram on QML, they don't work yet
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-02 15:15:20 +01:00
Roberto Viola
97a2e7d8c9 swap order of heartrate service on virtualbike 2020-12-02 13:50:42 +01:00
Roberto Viola
bccd5522d1 drop shadow on QML and purpling everything :D
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-02 10:37:18 +01:00
Roberto Viola
07c5dc247a watt calculation improved for echelonconnectsport
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-02 10:05:47 +01:00
Roberto Viola
005834588a fixed parameters on main
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-02 08:16:35 +01:00
Roberto Viola
a2fa9a4843 timeout added to writeCharacteristic to domyosbike and domyostreadmill
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-01 22:24:28 +01:00
Roberto Viola
1d8f473e4c removed ugly and useless workaround on virtualtreadmill ( https://
github.com/cagnulein/qdomyos-zwift/issues/60#issuecomment-736587560 )

Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-01 16:37:26 +01:00
Roberto Viola
4dc48fca2b popup on train program loaded on QML
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-01 16:15:36 +01:00
Roberto Viola
7eb0176e0c train prorgam and gpx added to QML (untested)
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-01 15:58:37 +01:00
Roberto Viola
974396672a built version 1.2.1
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-01 14:03:38 +01:00
Roberto Viola
1758255399 fixed heart rate service in QML
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-01 12:26:34 +01:00
Roberto Viola
1506839f54 Update README.md 2020-12-01 11:34:29 +01:00
Roberto Viola
636c4c8185 bikeResistanceOffset and bikeResistanceGain added to parameter and QML
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-01 11:29:38 +01:00
Roberto Viola
9d0fd94a23 fixed issue on -qml parameter
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-01 09:29:35 +01:00
Roberto Viola
251c00cefb added -qml parameter to force the qml on Desktop too (useful for debug)
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-01 08:59:49 +01:00
Roberto Viola
4949e8d816 version 1.1.5
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-01 08:37:11 +01:00
Roberto Viola
e57b0834c6 trying force heart rate service enabled on virtualbike ( https://
github.com/cagnulein/qdomyos-zwift/issues/61#issuecomment-735999248 )

Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-01 08:32:07 +01:00
Roberto Viola
bb3f9d0bb4 indoorbike xml was wrong!
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-01 08:22:43 +01:00
Roberto Viola
2a8b8d6584 resistance doubled in virtualbike
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-01 08:03:55 +01:00
Roberto Viola
ea58b92fed sync write display added to domyosbike
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-12-01 08:02:19 +01:00
Roberto Viola
d6f5ce405e added watt table to echelonconnectsport
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-30 19:50:40 +01:00
Roberto Viola
34ffafb55f distance fixed on echelonconnectsport
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-30 19:23:55 +01:00
Roberto Viola
e6d9f5d847 fixed typo on echelonconnectsport resistance parser
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-30 19:11:01 +01:00
Roberto Viola
c3bfaffcf1 init echelonconnectsport fixed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-30 16:10:26 +01:00
Roberto Viola
f5eac6d6a1 linux build fixed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-30 15:55:42 +01:00
Roberto Viola
19c3a90bf4 storage permission on android for the logs
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-30 15:52:19 +01:00
Roberto Viola
705baaa37c odometer on echelonconnectsport fixed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-30 15:37:06 +01:00
Roberto Viola
e302e90066 logs on android restored
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-30 15:36:38 +01:00
Roberto Viola
9d9800d4e6 Merge branch 'master' of https://github.com/cagnulein/qdomyos-zwift 2020-11-30 14:04:09 +01:00
Roberto Viola
5c00a959f4 echelonconnectsport service UUID fixed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-30 14:03:39 +01:00
Roberto Viola
54501760d3 cache dropped 2020-11-30 13:49:59 +01:00
Roberto Viola
2f4b76014f android compatibility issue fixed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-30 11:44:23 +01:00
Roberto Viola
7de4bac932 fixed elevation gain on domyostreadmill
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-30 11:15:10 +01:00
Roberto Viola
d992959792 android build commented 2020-11-30 10:25:14 +01:00
Roberto Viola
1ce77629ff echelonconnectsport added (NOT TESTED)
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-30 10:16:06 +01:00
Roberto Viola
908c1536f6 signal icon added to QML
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-30 08:09:49 +01:00
Roberto Viola
b8948c6d8f bluetoothdeviceinfo move to bluetoothdevice to get signal strength
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-30 07:32:39 +01:00
Roberto Viola
1ab448f7cc ugly workaround for zwift virtualtreadmill on raspberry 2020-11-29 17:13:11 +01:00
Roberto Viola
38ea3f5c80 fixed cadence on UI 2020-11-29 17:09:30 +01:00
Roberto Viola
a87e818d9a virtual treadmill created when the domyostreadmill has finished its init
Signed-off-by: Roberto Viola <roberto.viola83@gmail.com>
2020-11-28 17:47:17 +01:00
Roberto Viola
d852bd44fe added root check 2020-11-28 17:14:55 +01:00
Roberto Viola
5f7d7e01b8 speed and inclination not synced in the state file fixed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-27 16:01:52 +01:00
Roberto Viola
548fa9d8d6 android qml: show relevant icons only
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-27 15:56:10 +01:00
Roberto Viola
3a725d71b5 linux compilation fixed
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-25 15:17:28 +01:00
Roberto Viola
a304963dc5 decimal point fixed on the state file
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-25 09:45:22 +01:00
Roberto Viola
bf9fb4537b restore from previous values on domyostreadmill
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-25 09:37:15 +01:00
Roberto Viola
838fe8c96e xml state file written for domyostreadmill (untested)
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-25 06:08:59 +01:00
Roberto Viola
77b204d9fd SIGINT handled
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-25 05:55:04 +01:00
Roberto Viola
8a6e8e9c9d youtube video added 2020-11-23 14:41:18 +01:00
Roberto Viola
123df9db6b saving speed and inclination for future session on domyostreadmill
Signed-off-by: Roberto Viola <roberto.viola@systemceramics.com>
2020-11-23 10:40:25 +01:00
466 changed files with 88543 additions and 1196 deletions

36
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,36 @@
---
name: Bug report
about: Create a report to help us improve
title: "[BUG]"
labels: bug
assignees: cagnulein
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.

View File

@@ -19,19 +19,19 @@ jobs:
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- name: Cache Qt Linux Desktop
id: cache-qt-linux-desktop
uses: actions/cache@v1
with:
path: '${{ github.workspace }}/output/linux-desktop/'
key: ${{ runner.os }}-QtCache-Linux-Desktop
# - name: Cache Qt Linux Desktop
# id: cache-qt-linux-desktop
# uses: actions/cache@v1
# with:
# path: '${{ github.workspace }}/output/linux-desktop/'
# key: ${{ runner.os }}-QtCache-Linux-Desktop
- name: Cache Qt Linux Android
id: cache-qt-android
uses: actions/cache@v1
with:
path: '${{ github.workspace }}/output/android/'
key: ${{ runner.os }}-QtCache-Android
# - name: Cache Qt Linux Android
# id: cache-qt-android
# uses: actions/cache@v1
# with:
# path: '${{ github.workspace }}/output/android/'
# key: ${{ runner.os }}-QtCache-Android
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
@@ -43,9 +43,9 @@ jobs:
version: '5.12.9'
host: 'linux'
target: 'desktop'
modules: 'qtcharts debug_info'
modules: 'qtcharts debug_info qtnetworkauth'
dir: '${{ github.workspace }}/output/linux-desktop/'
cached: ${{ steps.cache-qt-linux-desktop.outputs.cache-hit }}
# cached: ${{ steps.cache-qt-linux-desktop.outputs.cache-hit }}
- name: Compile Linux Desktop
run: cd src; qmake; make -j4
@@ -56,39 +56,39 @@ jobs:
name: linux-desktop-binary
path: src/qdomyos-zwift
- uses: actions/checkout@v2
with:
repository: nttld/setup-ndk
path: setup-ndk
# - uses: actions/checkout@v2
# with:
# repository: nttld/setup-ndk
# path: setup-ndk
# The packages.json in nttld/setup-ndk has already been updated,
# https://github.com/nttld/setup-ndk/commit/831db5b02a0f0cab80614619efe461a3dcc140e6
# but `dist/*` has not been rebuilt yet. Build it.
# https://github.com/nttld/setup-ndk/tree/main/dist
- name: Locally rebuilt setup-ndk
run: |
npm -prefix ./setup-ndk install
npm -prefix ./setup-ndk run all
# - name: Locally rebuilt setup-ndk
# run: |
# npm -prefix ./setup-ndk install
# npm -prefix ./setup-ndk run all
# Install using locally rebuilt setup-ndk
- name: Setup Android NDK r21d
uses: ./setup-ndk
# - name: Setup Android NDK r21d
# uses: ./setup-ndk
#- uses: nttld/setup-ndk@v1
with:
ndk-version: r21d
# with:
# ndk-version: r21d
# waiting github.com/jurplel/install-qt-action/issues/63
- name: Install Qt Android
uses: jurplel/install-qt-action@v2
with:
version: '5.12.9'
host: 'linux'
target: 'android'
arch: 'android_armv7'
modules: 'qtcharts debug_info'
dir: '${{ github.workspace }}/output/android/'
cached: ${{ steps.cache-qt-android.outputs.cache-hit }}
# - name: Install Qt Android
# uses: jurplel/install-qt-action@v2
# with:
# version: '5.12.9'
# host: 'linux'
# target: 'android'
# arch: 'android_armv7'
# modules: 'qtcharts debug_info'
# dir: '${{ github.workspace }}/output/android/'
# cached: ${{ steps.cache-qt-android.outputs.cache-hit }}
- name: Compile Android
run: cd src; qmake; make -j4
# - name: Compile Android
# run: cd src; qmake; make -j4
# - name: Install Qt MacOS
# uses: jurplel/install-qt-action@v2

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "android_openssl"]
path = android_openssl
url = https://github.com/KDAB/android_openssl.git

View File

@@ -1,10 +1,14 @@
# qdomyos-zwift
Zwift bridge for Treadmills and Bike!
[<img src="docs/google_play.png">](https://play.google.com/store/apps/details?id=org.cagnulen.qdomyoszwift&fbclid=IwAR3CVoYb0scvGf7gb0Y20VFh5Na5fDWwe7VACk-2c45Tm0x5s8sXpIGhGyw)
[<img src="docs/app_store.png">](https://apps.apple.com/app/id1543684531?fbclid=IwAR10H6y3mEgwkTlGJON3e8voYOh2wt3kLFOpFzoIXaYZ_N0y0pDvKxHMUaM)
<a href="https://www.buymeacoffee.com/cagnulein" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;" ></a>
![UI](docs/treadmill-bridge-schema.png)
[![Video](https://img.youtube.com/vi/GgG3dMhmo2Y/0.jpg)](https://www.youtube.com/watch?v=GgG3dMhmo2Y)
![UI](docs/ui.png)
![UI](docs/realtime-chart.png)
@@ -17,12 +21,13 @@ UI on MacOS
### Features
1. Domyos compatible
2. Toorx TRX Route Key comaptible
3. Zwift compatible
4. Create, load and save train programs
5. Measure distance, elevation gain and watts
6. Gpx import (with difficulty slider)
7. Realtime Charts
2. Toorx TRX Route Key compatible
3. Echelon Connect Sport compatible
4. Zwift compatible
5. Create, load and save train programs
6. Measure distance, elevation gain and watts
7. Gpx import (with difficulty slider)
8. Realtime Charts
![First Success](docs/first_success.jpg)
@@ -30,7 +35,7 @@ UI on MacOS
$ sudo apt update && sudo apt upgrade # this is very important on raspberry pi: you need the bluetooth firmware updated!
$ sudo apt install git libqt5bluetooth5 libqt5widgets5 libqt5positioning5 libqt5xml5 qtconnectivity5-dev qtpositioning5-dev libqt5charts5-dev libqt5charts5 qt5-default
$ sudo apt install git libqt5bluetooth5 libqt5widgets5 libqt5positioning5 libqt5xml5 qtconnectivity5-dev qtpositioning5-dev libqt5charts5-dev libqt5charts5 qt5-default libqt5networkauth5-dev
$ git clone https://github.com/cagnulein/qdomyos-zwift.git
@@ -59,6 +64,8 @@ Download and install http://download.qt.io/official_releases/qt/5.12/5.12.9/qt-o
- Raspberry 3b+ and Toorx TRX Route Key
- Android Pixel 2 and Echelon Connect Sport
### Your machine is not compatible?

1
android_openssl Submodule

Submodule android_openssl added at fb472b74cb

BIN
btlogs/carnielli.cfa Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

View File

@@ -0,0 +1,4 @@
//
// Use this file to import your target's public headers that you would like to expose to Swift.
//

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13142" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12042"/>
<capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<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="375" height="667"/>
<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="626.5" width="375" height="20.5"/>
<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>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="qdomyoszwift" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="GJd-Yh-RWb">
<rect key="frame" x="0.0" y="202" width="375" height="43"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" 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="Bcu-3y-fUS" firstAttribute="centerX" secondItem="GJd-Yh-RWb" secondAttribute="centerX" id="Q3B-4B-g5h"/>
<constraint firstItem="obG-Y5-kRd" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" constant="20" symbolic="YES" id="SfN-ll-jLj"/>
<constraint firstAttribute="bottom" secondItem="obG-Y5-kRd" secondAttribute="bottom" constant="20" id="Y44-ml-fuU"/>
<constraint firstItem="GJd-Yh-RWb" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="bottom" multiplier="1/3" constant="1" id="moa-c2-u7t"/>
<constraint firstItem="GJd-Yh-RWb" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" constant="20" symbolic="YES" id="x7j-FC-K8j"/>
</constraints>
<viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
</document>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildSystemType</key>
<string>Original</string>
<key>IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded</key>
<false/>
</dict>
</plist>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildLocationStyle</key>
<string>UseTargetSettings</string>
</dict>
</plist>

View File

@@ -0,0 +1,632 @@
#############################################################################
# Makefile for building: qdomyoszwift.app/Contents/MacOS/qdomyoszwift
# Generated by qmake (3.1) (Qt 5.15.2)
# Project: ../src/qdomyos-zwift.pro
# Template: app
# Command: /Users/cagnulein/Qt/5.15.2/ios/bin/qmake -o qdomyoszwift.xcodeproj/project.pbxproj ../src/qdomyos-zwift.pro -spec macx-xcode CONFIG+=iphoneos CONFIG+=device CONFIG+=qml_debug -after
#############################################################################
MAKEFILE = project.pbxproj
EQ = =
QMAKE = /Users/cagnulein/Qt/5.15.2/ios/bin/qmake
qdomyoszwift.xcodeproj/project.pbxproj: ../src/qdomyos-zwift.pro ../../Qt/5.15.2/ios/mkspecs/macx-ios-clang/qmake.conf ../../Qt/5.15.2/ios/mkspecs/features/spec_pre.prf \
../../Qt/5.15.2/ios/mkspecs/qdevice.pri \
../../Qt/5.15.2/ios/mkspecs/features/device_config.prf \
../../Qt/5.15.2/ios/mkspecs/common/unix.conf \
../../Qt/5.15.2/ios/mkspecs/common/mac.conf \
../../Qt/5.15.2/ios/mkspecs/common/uikit.conf \
../../Qt/5.15.2/ios/mkspecs/common/ios.conf \
../../Qt/5.15.2/ios/mkspecs/common/sanitize.conf \
../../Qt/5.15.2/ios/mkspecs/common/gcc-base.conf \
../../Qt/5.15.2/ios/mkspecs/common/gcc-base-mac.conf \
../../Qt/5.15.2/ios/mkspecs/common/clang.conf \
../../Qt/5.15.2/ios/mkspecs/common/clang-mac.conf \
../../Qt/5.15.2/ios/mkspecs/common/uikit/clang.conf \
../../Qt/5.15.2/ios/mkspecs/common/uikit/qmake.conf \
../../Qt/5.15.2/ios/mkspecs/qconfig.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3danimation.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3danimation_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dcore.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dcore_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dextras.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dextras_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dinput.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dinput_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dlogic.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dlogic_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquick.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquick_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquickanimation.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquickanimation_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquickextras.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquickextras_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquickinput.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquickinput_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquickrender.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquickrender_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquickscene2d.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquickscene2d_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3drender.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3drender_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_accessibility_support_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_bluetooth.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_bluetooth_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_bootstrap_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_clipboard_support_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_concurrent.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_concurrent_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_core.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_core_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_edid_support_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_fb_support_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_gamepad.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_gamepad_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_graphics_support_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_gui.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_gui_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_help.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_help_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_location.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_location_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_macextras.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_macextras_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_multimedia.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_multimedia_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_multimediawidgets.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_multimediawidgets_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_network.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_network_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_networkauth.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_networkauth_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_nfc.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_nfc_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_opengl.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_opengl_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_openglextensions.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_openglextensions_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_packetprotocol_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_positioning.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_positioning_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_positioningquick.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_positioningquick_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qml.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qml_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qmldebug_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qmldevtools_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qmlmodels.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qmlmodels_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qmltest.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qmltest_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qmlworkerscript.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qmlworkerscript_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_quick.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_quick_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_quickcontrols2.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_quickcontrols2_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_quickparticles_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_quickshapes_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_quicktemplates2.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_quicktemplates2_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_quickwidgets.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_quickwidgets_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_remoteobjects.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_remoteobjects_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_repparser.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_repparser_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_scxml.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_scxml_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_sensors.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_sensors_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_sql.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_sql_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_svg.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_svg_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_testlib.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_testlib_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_texttospeech.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_texttospeech_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_theme_support_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_uiplugin.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_uitools.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_uitools_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_webchannel.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_webchannel_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_websockets.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_websockets_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_webview.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_webview_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_widgets.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_widgets_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_xml.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_xml_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_xmlpatterns.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_xmlpatterns_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_zlib_private.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_darwingamepad.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_defaultgeometryloader.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_gltfgeometryloader.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_gltfsceneexport.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_gltfsceneimport.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_openglrenderer.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qavfcamera.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qavfmediaplayer.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qgenericbearer.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qgif.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qicns.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qico.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qios.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qiosnsphotolibrarysupport.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qjpeg.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmacheif.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmacjp2.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qminimal.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_debugger.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_inspector.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_local.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_messages.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_native.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_nativedebugger.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_preview.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_profiler.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_quickprofiler.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_server.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_tcp.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qoffscreen.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qsqlite.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qsvg.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qsvgicon.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtexttospeech_speechios.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtga.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtgeoservices_esri.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtgeoservices_itemsoverlay.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtgeoservices_mapbox.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtgeoservices_mapboxgl.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtgeoservices_nokia.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtgeoservices_osm.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtiff.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtposition_cl.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtsensors_generic.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtsensors_ios.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtuiotouchplugin.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtwebview_darwin.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qwbmp.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qwebp.pri \
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_scene2d.pri \
../../Qt/5.15.2/ios/mkspecs/features/qt_functions.prf \
../../Qt/5.15.2/ios/mkspecs/features/qt_config.prf \
../../Qt/5.15.2/ios/mkspecs/macx-ios-clang/qmake.conf \
../../Qt/5.15.2/ios/mkspecs/macx-xcode/qmake.conf \
../../Qt/5.15.2/ios/mkspecs/features/spec_post.prf \
.qmake.stash \
../../Qt/5.15.2/ios/mkspecs/features/exclusive_builds.prf \
../../Qt/5.15.2/ios/mkspecs/features/mac/sdk.prf \
../../Qt/5.15.2/ios/mkspecs/features/uikit/sdk.prf \
../../Qt/5.15.2/ios/mkspecs/features/toolchain.prf \
../../Qt/5.15.2/ios/mkspecs/features/mac/toolchain.prf \
../../Qt/5.15.2/ios/mkspecs/features/default_pre.prf \
../../Qt/5.15.2/ios/mkspecs/features/mac/default_pre.prf \
../../Qt/5.15.2/ios/mkspecs/features/uikit/default_pre.prf \
../../Qt/5.15.2/ios/mkspecs/features/resolve_config.prf \
../../Qt/5.15.2/ios/mkspecs/features/uikit/resolve_config.prf \
../../Qt/5.15.2/ios/mkspecs/features/default_post.prf \
../../Qt/5.15.2/ios/mkspecs/features/mac/default_post.prf \
../../Qt/5.15.2/ios/mkspecs/features/uikit/default_post.prf \
../../Qt/5.15.2/ios/mkspecs/macx-ios-clang/features/default_post.prf \
../../Qt/5.15.2/ios/mkspecs/features/mac/objective_c.prf \
../../Qt/5.15.2/ios/mkspecs/features/qml_debug.prf \
../../Qt/5.15.2/ios/mkspecs/features/mac/mac.prf \
../../Qt/5.15.2/ios/mkspecs/features/uikit/bitcode.prf \
../../Qt/5.15.2/ios/mkspecs/features/warn_on.prf \
../../Qt/5.15.2/ios/plugins/platforms/libqios_debug.prl \
../../Qt/5.15.2/ios/mkspecs/features/qt.prf \
../../Qt/5.15.2/ios/mkspecs/features/uikit/qt.prf \
../../Qt/5.15.2/ios/mkspecs/features/uikit/gc_binaries.prf \
../../Qt/5.15.2/ios/mkspecs/features/resources_functions.prf \
../../Qt/5.15.2/ios/mkspecs/features/resources.prf \
../../Qt/5.15.2/ios/mkspecs/features/moc.prf \
../../Qt/5.15.2/ios/mkspecs/features/unix/opengl.prf \
../../Qt/5.15.2/ios/mkspecs/features/uic.prf \
../../Qt/5.15.2/ios/mkspecs/features/unix/thread.prf \
../../Qt/5.15.2/ios/mkspecs/features/qmake_use.prf \
../../Qt/5.15.2/ios/mkspecs/features/file_copies.prf \
../../Qt/5.15.2/ios/mkspecs/features/mac/rez.prf \
../../Qt/5.15.2/ios/mkspecs/features/resolve_target.prf \
../../Qt/5.15.2/ios/mkspecs/features/mac/asset_catalogs.prf \
../../Qt/5.15.2/ios/mkspecs/features/testcase_targets.prf \
../../Qt/5.15.2/ios/mkspecs/features/uikit/testcase_targets.prf \
../../Qt/5.15.2/ios/mkspecs/features/exceptions.prf \
../../Qt/5.15.2/ios/mkspecs/features/yacc.prf \
../../Qt/5.15.2/ios/mkspecs/features/lex.prf \
../src/qdomyos-zwift.pro \
../../Qt/5.15.2/ios/mkspecs/macx-ios-clang/Default-568h@2x.png \
../../Qt/5.15.2/ios/mkspecs/macx-ios-clang/LaunchScreen.storyboard \
../src/icons.qrc \
../src/qml.qrc \
../../Qt/5.15.2/ios/lib/libQt5FontDatabaseSupport_debug.prl \
../../Qt/5.15.2/ios/lib/libqtfreetype_debug.prl \
../../Qt/5.15.2/ios/lib/libQt5GraphicsSupport_debug.prl \
../../Qt/5.15.2/ios/lib/libQt5ClipboardSupport_debug.prl \
../../Qt/5.15.2/ios/lib/libQt5Gui_debug.prl \
../../Qt/5.15.2/ios/lib/libqtlibpng_debug.prl \
../../Qt/5.15.2/ios/lib/libqtharfbuzz_debug.prl \
../../Qt/5.15.2/ios/lib/libQt5Core_debug.prl \
../../Qt/5.15.2/ios/lib/libqtpcre2_debug.prl \
../../Qt/5.15.2/ios/plugins/imageformats/libqgif_debug.prl \
../../Qt/5.15.2/ios/plugins/imageformats/libqicns_debug.prl \
../../Qt/5.15.2/ios/plugins/imageformats/libqico_debug.prl \
../../Qt/5.15.2/ios/plugins/imageformats/libqjpeg_debug.prl \
../../Qt/5.15.2/ios/plugins/imageformats/libqmacheif_debug.prl \
../../Qt/5.15.2/ios/plugins/imageformats/libqmacjp2_debug.prl \
../../Qt/5.15.2/ios/plugins/imageformats/libqtga_debug.prl \
../../Qt/5.15.2/ios/plugins/imageformats/libqtiff_debug.prl \
../../Qt/5.15.2/ios/plugins/imageformats/libqwbmp_debug.prl \
../../Qt/5.15.2/ios/plugins/imageformats/libqwebp_debug.prl \
../../Qt/5.15.2/ios/plugins/position/libqtposition_cl_debug.prl \
../../Qt/5.15.2/ios/plugins/position/libqtposition_positionpoll_debug.prl \
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_debugger_debug.prl \
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_inspector_debug.prl \
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_local_debug.prl \
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_messages_debug.prl \
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_native_debug.prl \
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_nativedebugger_debug.prl \
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_preview_debug.prl \
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_profiler_debug.prl \
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_quickprofiler_debug.prl \
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_server_debug.prl \
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_tcp_debug.prl \
../../Qt/5.15.2/ios/plugins/bearer/libqgenericbearer_debug.prl \
../../Qt/5.15.2/ios/lib/libQt5Widgets_debug.prl \
../../Qt/5.15.2/ios/lib/libQt5Quick_debug.prl \
../../Qt/5.15.2/ios/lib/libQt5Bluetooth_debug.prl \
../../Qt/5.15.2/ios/lib/libQt5Xml_debug.prl \
../../Qt/5.15.2/ios/lib/libQt5Positioning_debug.prl \
../../Qt/5.15.2/ios/lib/libQt5QmlModels_debug.prl \
../../Qt/5.15.2/ios/lib/libQt5Qml_debug.prl \
../../Qt/5.15.2/ios/lib/libQt5NetworkAuth_debug.prl \
../../Qt/5.15.2/ios/lib/libQt5Network_debug.prl \
../../Qt/5.15.2/ios/qml/QtQuick.2/libqtquick2plugin_debug.prl \
../../Qt/5.15.2/ios/qml/QtQuick/Controls.2/libqtquickcontrols2plugin_debug.prl \
../../Qt/5.15.2/ios/qml/QtQuick/Controls.2/Material/libqtquickcontrols2materialstyleplugin_debug.prl \
../../Qt/5.15.2/ios/qml/QtGraphicalEffects/libqtgraphicaleffectsplugin_debug.prl \
../../Qt/5.15.2/ios/qml/QtQuick/Window.2/libwindowplugin_debug.prl \
../../Qt/5.15.2/ios/qml/QtQml/libqmlplugin_debug.prl \
../../Qt/5.15.2/ios/qml/QtQuick/Templates.2/libqtquicktemplates2plugin_debug.prl \
../../Qt/5.15.2/ios/qml/QtGraphicalEffects/private/libqtgraphicaleffectsprivate_debug.prl \
../../Qt/5.15.2/ios/qml/QtQml/Models.2/libmodelsplugin_debug.prl \
../../Qt/5.15.2/ios/qml/QtQml/WorkerScript.2/libworkerscriptplugin_debug.prl \
../../Qt/5.15.2/ios/qml/QtQuick/Dialogs/libdialogplugin_debug.prl \
../../Qt/5.15.2/ios/qml/Qt/labs/folderlistmodel/libqmlfolderlistmodelplugin_debug.prl \
../../Qt/5.15.2/ios/qml/Qt/labs/settings/libqmlsettingsplugin_debug.prl \
../../Qt/5.15.2/ios/qml/QtQuick/Dialogs/Private/libdialogsprivateplugin_debug.prl \
../../Qt/5.15.2/ios/qml/QtQuick/Controls/libqtquickcontrolsplugin_debug.prl \
../../Qt/5.15.2/ios/qml/QtQuick/PrivateWidgets/libwidgetsplugin_debug.prl \
../../Qt/5.15.2/ios/qml/QtQuick/Layouts/libqquicklayoutsplugin_debug.prl \
../../Qt/5.15.2/ios/qml/QtQuick/Controls.2/Fusion/libqtquickcontrols2fusionstyleplugin_debug.prl \
../../Qt/5.15.2/ios/qml/QtQuick/Controls.2/Universal/libqtquickcontrols2universalstyleplugin_debug.prl \
../../Qt/5.15.2/ios/qml/QtQuick/Controls.2/Imagine/libqtquickcontrols2imaginestyleplugin_debug.prl
$(QMAKE) -o qdomyoszwift.xcodeproj/project.pbxproj ../src/qdomyos-zwift.pro -spec macx-xcode CONFIG+=iphoneos CONFIG+=device CONFIG+=qml_debug -after
@echo 'warning: Xcode project has been regenerated, custom settings have been lost. Use CONFIG+=no_autoqmake to prevent this behavior in the future, at the cost of requiring manual project change tracking.'
../../Qt/5.15.2/ios/mkspecs/features/spec_pre.prf:
../../Qt/5.15.2/ios/mkspecs/qdevice.pri:
../../Qt/5.15.2/ios/mkspecs/features/device_config.prf:
../../Qt/5.15.2/ios/mkspecs/common/unix.conf:
../../Qt/5.15.2/ios/mkspecs/common/mac.conf:
../../Qt/5.15.2/ios/mkspecs/common/uikit.conf:
../../Qt/5.15.2/ios/mkspecs/common/ios.conf:
../../Qt/5.15.2/ios/mkspecs/common/sanitize.conf:
../../Qt/5.15.2/ios/mkspecs/common/gcc-base.conf:
../../Qt/5.15.2/ios/mkspecs/common/gcc-base-mac.conf:
../../Qt/5.15.2/ios/mkspecs/common/clang.conf:
../../Qt/5.15.2/ios/mkspecs/common/clang-mac.conf:
../../Qt/5.15.2/ios/mkspecs/common/uikit/clang.conf:
../../Qt/5.15.2/ios/mkspecs/common/uikit/qmake.conf:
../../Qt/5.15.2/ios/mkspecs/qconfig.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3danimation.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3danimation_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dcore.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dcore_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dextras.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dextras_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dinput.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dinput_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dlogic.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dlogic_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquick.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquick_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquickanimation.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquickanimation_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquickextras.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquickextras_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquickinput.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquickinput_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquickrender.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquickrender_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquickscene2d.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3dquickscene2d_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3drender.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_3drender_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_accessibility_support_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_bluetooth.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_bluetooth_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_bootstrap_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_clipboard_support_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_concurrent.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_concurrent_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_core.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_core_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_devicediscovery_support_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_edid_support_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_fb_support_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_fontdatabase_support_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_gamepad.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_gamepad_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_graphics_support_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_gui.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_gui_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_help.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_help_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_location.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_location_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_macextras.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_macextras_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_multimedia.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_multimedia_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_multimediawidgets.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_multimediawidgets_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_network.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_network_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_networkauth.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_networkauth_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_nfc.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_nfc_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_opengl.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_opengl_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_openglextensions.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_openglextensions_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_packetprotocol_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_platformcompositor_support_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_positioning.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_positioning_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_positioningquick.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_positioningquick_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qml.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qml_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qmldebug_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qmldevtools_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qmlmodels.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qmlmodels_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qmltest.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qmltest_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qmlworkerscript.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qmlworkerscript_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_quick.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_quick_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_quickcontrols2.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_quickcontrols2_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_quickparticles_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_quickshapes_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_quicktemplates2.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_quicktemplates2_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_quickwidgets.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_quickwidgets_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_remoteobjects.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_remoteobjects_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_repparser.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_repparser_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_scxml.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_scxml_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_sensors.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_sensors_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_sql.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_sql_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_svg.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_svg_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_testlib.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_testlib_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_texttospeech.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_texttospeech_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_theme_support_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_uiplugin.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_uitools.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_uitools_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_webchannel.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_webchannel_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_websockets.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_websockets_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_webview.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_webview_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_widgets.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_widgets_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_xml.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_xml_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_xmlpatterns.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_xmlpatterns_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_lib_zlib_private.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_darwingamepad.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_defaultgeometryloader.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_gltfgeometryloader.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_gltfsceneexport.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_gltfsceneimport.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_openglrenderer.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qavfcamera.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qavfmediaplayer.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qgenericbearer.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qgif.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qicns.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qico.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qios.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qiosnsphotolibrarysupport.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qjpeg.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmacheif.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmacjp2.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qminimal.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_debugger.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_inspector.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_local.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_messages.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_native.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_nativedebugger.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_preview.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_profiler.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_quickprofiler.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_server.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qmldbg_tcp.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qoffscreen.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qsqlite.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qsvg.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qsvgicon.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtexttospeech_speechios.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtga.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtgeoservices_esri.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtgeoservices_itemsoverlay.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtgeoservices_mapbox.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtgeoservices_mapboxgl.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtgeoservices_nokia.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtgeoservices_osm.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtiff.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtposition_cl.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtsensors_generic.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtsensors_ios.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtuiotouchplugin.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qtwebview_darwin.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qwbmp.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_qwebp.pri:
../../Qt/5.15.2/ios/mkspecs/modules/qt_plugin_scene2d.pri:
../../Qt/5.15.2/ios/mkspecs/features/qt_functions.prf:
../../Qt/5.15.2/ios/mkspecs/features/qt_config.prf:
../../Qt/5.15.2/ios/mkspecs/macx-ios-clang/qmake.conf:
../../Qt/5.15.2/ios/mkspecs/macx-xcode/qmake.conf:
../../Qt/5.15.2/ios/mkspecs/features/spec_post.prf:
.qmake.stash:
../../Qt/5.15.2/ios/mkspecs/features/exclusive_builds.prf:
../../Qt/5.15.2/ios/mkspecs/features/mac/sdk.prf:
../../Qt/5.15.2/ios/mkspecs/features/uikit/sdk.prf:
../../Qt/5.15.2/ios/mkspecs/features/toolchain.prf:
../../Qt/5.15.2/ios/mkspecs/features/mac/toolchain.prf:
../../Qt/5.15.2/ios/mkspecs/features/default_pre.prf:
../../Qt/5.15.2/ios/mkspecs/features/mac/default_pre.prf:
../../Qt/5.15.2/ios/mkspecs/features/uikit/default_pre.prf:
../../Qt/5.15.2/ios/mkspecs/features/resolve_config.prf:
../../Qt/5.15.2/ios/mkspecs/features/uikit/resolve_config.prf:
../../Qt/5.15.2/ios/mkspecs/features/default_post.prf:
../../Qt/5.15.2/ios/mkspecs/features/mac/default_post.prf:
../../Qt/5.15.2/ios/mkspecs/features/uikit/default_post.prf:
../../Qt/5.15.2/ios/mkspecs/macx-ios-clang/features/default_post.prf:
../../Qt/5.15.2/ios/mkspecs/features/mac/objective_c.prf:
../../Qt/5.15.2/ios/mkspecs/features/qml_debug.prf:
../../Qt/5.15.2/ios/mkspecs/features/mac/mac.prf:
../../Qt/5.15.2/ios/mkspecs/features/uikit/bitcode.prf:
../../Qt/5.15.2/ios/mkspecs/features/warn_on.prf:
../../Qt/5.15.2/ios/plugins/platforms/libqios_debug.prl:
../../Qt/5.15.2/ios/mkspecs/features/qt.prf:
../../Qt/5.15.2/ios/mkspecs/features/uikit/qt.prf:
../../Qt/5.15.2/ios/mkspecs/features/uikit/gc_binaries.prf:
../../Qt/5.15.2/ios/mkspecs/features/resources_functions.prf:
../../Qt/5.15.2/ios/mkspecs/features/resources.prf:
../../Qt/5.15.2/ios/mkspecs/features/moc.prf:
../../Qt/5.15.2/ios/mkspecs/features/unix/opengl.prf:
../../Qt/5.15.2/ios/mkspecs/features/uic.prf:
../../Qt/5.15.2/ios/mkspecs/features/unix/thread.prf:
../../Qt/5.15.2/ios/mkspecs/features/qmake_use.prf:
../../Qt/5.15.2/ios/mkspecs/features/file_copies.prf:
../../Qt/5.15.2/ios/mkspecs/features/mac/rez.prf:
../../Qt/5.15.2/ios/mkspecs/features/resolve_target.prf:
../../Qt/5.15.2/ios/mkspecs/features/mac/asset_catalogs.prf:
../../Qt/5.15.2/ios/mkspecs/features/testcase_targets.prf:
../../Qt/5.15.2/ios/mkspecs/features/uikit/testcase_targets.prf:
../../Qt/5.15.2/ios/mkspecs/features/exceptions.prf:
../../Qt/5.15.2/ios/mkspecs/features/yacc.prf:
../../Qt/5.15.2/ios/mkspecs/features/lex.prf:
../src/qdomyos-zwift.pro:
../../Qt/5.15.2/ios/mkspecs/macx-ios-clang/Default-568h@2x.png:
../../Qt/5.15.2/ios/mkspecs/macx-ios-clang/LaunchScreen.storyboard:
../src/icons.qrc:
../src/qml.qrc:
../../Qt/5.15.2/ios/lib/libQt5FontDatabaseSupport_debug.prl:
../../Qt/5.15.2/ios/lib/libqtfreetype_debug.prl:
../../Qt/5.15.2/ios/lib/libQt5GraphicsSupport_debug.prl:
../../Qt/5.15.2/ios/lib/libQt5ClipboardSupport_debug.prl:
../../Qt/5.15.2/ios/lib/libQt5Gui_debug.prl:
../../Qt/5.15.2/ios/lib/libqtlibpng_debug.prl:
../../Qt/5.15.2/ios/lib/libqtharfbuzz_debug.prl:
../../Qt/5.15.2/ios/lib/libQt5Core_debug.prl:
../../Qt/5.15.2/ios/lib/libqtpcre2_debug.prl:
../../Qt/5.15.2/ios/plugins/imageformats/libqgif_debug.prl:
../../Qt/5.15.2/ios/plugins/imageformats/libqicns_debug.prl:
../../Qt/5.15.2/ios/plugins/imageformats/libqico_debug.prl:
../../Qt/5.15.2/ios/plugins/imageformats/libqjpeg_debug.prl:
../../Qt/5.15.2/ios/plugins/imageformats/libqmacheif_debug.prl:
../../Qt/5.15.2/ios/plugins/imageformats/libqmacjp2_debug.prl:
../../Qt/5.15.2/ios/plugins/imageformats/libqtga_debug.prl:
../../Qt/5.15.2/ios/plugins/imageformats/libqtiff_debug.prl:
../../Qt/5.15.2/ios/plugins/imageformats/libqwbmp_debug.prl:
../../Qt/5.15.2/ios/plugins/imageformats/libqwebp_debug.prl:
../../Qt/5.15.2/ios/plugins/position/libqtposition_cl_debug.prl:
../../Qt/5.15.2/ios/plugins/position/libqtposition_positionpoll_debug.prl:
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_debugger_debug.prl:
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_inspector_debug.prl:
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_local_debug.prl:
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_messages_debug.prl:
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_native_debug.prl:
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_nativedebugger_debug.prl:
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_preview_debug.prl:
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_profiler_debug.prl:
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_quickprofiler_debug.prl:
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_server_debug.prl:
../../Qt/5.15.2/ios/plugins/qmltooling/libqmldbg_tcp_debug.prl:
../../Qt/5.15.2/ios/plugins/bearer/libqgenericbearer_debug.prl:
../../Qt/5.15.2/ios/lib/libQt5Widgets_debug.prl:
../../Qt/5.15.2/ios/lib/libQt5Quick_debug.prl:
../../Qt/5.15.2/ios/lib/libQt5Bluetooth_debug.prl:
../../Qt/5.15.2/ios/lib/libQt5Xml_debug.prl:
../../Qt/5.15.2/ios/lib/libQt5Positioning_debug.prl:
../../Qt/5.15.2/ios/lib/libQt5QmlModels_debug.prl:
../../Qt/5.15.2/ios/lib/libQt5Qml_debug.prl:
../../Qt/5.15.2/ios/lib/libQt5NetworkAuth_debug.prl:
../../Qt/5.15.2/ios/lib/libQt5Network_debug.prl:
../../Qt/5.15.2/ios/qml/QtQuick.2/libqtquick2plugin_debug.prl:
../../Qt/5.15.2/ios/qml/QtQuick/Controls.2/libqtquickcontrols2plugin_debug.prl:
../../Qt/5.15.2/ios/qml/QtQuick/Controls.2/Material/libqtquickcontrols2materialstyleplugin_debug.prl:
../../Qt/5.15.2/ios/qml/QtGraphicalEffects/libqtgraphicaleffectsplugin_debug.prl:
../../Qt/5.15.2/ios/qml/QtQuick/Window.2/libwindowplugin_debug.prl:
../../Qt/5.15.2/ios/qml/QtQml/libqmlplugin_debug.prl:
../../Qt/5.15.2/ios/qml/QtQuick/Templates.2/libqtquicktemplates2plugin_debug.prl:
../../Qt/5.15.2/ios/qml/QtGraphicalEffects/private/libqtgraphicaleffectsprivate_debug.prl:
../../Qt/5.15.2/ios/qml/QtQml/Models.2/libmodelsplugin_debug.prl:
../../Qt/5.15.2/ios/qml/QtQml/WorkerScript.2/libworkerscriptplugin_debug.prl:
../../Qt/5.15.2/ios/qml/QtQuick/Dialogs/libdialogplugin_debug.prl:
../../Qt/5.15.2/ios/qml/Qt/labs/folderlistmodel/libqmlfolderlistmodelplugin_debug.prl:
../../Qt/5.15.2/ios/qml/Qt/labs/settings/libqmlsettingsplugin_debug.prl:
../../Qt/5.15.2/ios/qml/QtQuick/Dialogs/Private/libdialogsprivateplugin_debug.prl:
../../Qt/5.15.2/ios/qml/QtQuick/Controls/libqtquickcontrolsplugin_debug.prl:
../../Qt/5.15.2/ios/qml/QtQuick/PrivateWidgets/libwidgetsplugin_debug.prl:
../../Qt/5.15.2/ios/qml/QtQuick/Layouts/libqquicklayoutsplugin_debug.prl:
../../Qt/5.15.2/ios/qml/QtQuick/Controls.2/Fusion/libqtquickcontrols2fusionstyleplugin_debug.prl:
../../Qt/5.15.2/ios/qml/QtQuick/Controls.2/Universal/libqtquickcontrols2universalstyleplugin_debug.prl:
../../Qt/5.15.2/ios/qml/QtQuick/Controls.2/Imagine/libqtquickcontrols2imaginestyleplugin_debug.prl:
qmake: FORCE
@$(QMAKE) -o qdomyoszwift.xcodeproj/project.pbxproj ../src/qdomyos-zwift.pro -spec macx-xcode CONFIG+=iphoneos CONFIG+=device CONFIG+=qml_debug -after
qmake_all: FORCE

View File

@@ -0,0 +1,515 @@
#############################################################################
# Makefile for building: qdomyoszwift.app/Contents/MacOS/qdomyoszwift
# Generated by qmake (3.1) (Qt 5.15.2)
# Project: ../src/qdomyos-zwift.pro
# Template: app
# Command: /Users/cagnulein/Qt/5.15.2/ios/bin/qmake -o qdomyoszwift.xcodeproj/project.pbxproj ../src/qdomyos-zwift.pro -spec macx-xcode CONFIG+=iphoneos CONFIG+=device CONFIG+=qml_debug -after
#############################################################################
MAKEFILE = project.pbxproj
EQ = =
MOC = /Users/cagnulein/Qt/5.15.2/ios/bin/moc
UIC = /Users/cagnulein/Qt/5.15.2/ios/bin/uic
LEX = flex
LEXFLAGS =
YACC = yacc
YACCFLAGS = -d
DEFINES = -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_NETWORK_LIB -DQT_CORE_LIB
INCPATH = -I../src -I. -I../../Qt/5.15.2/ios/mkspecs/common/uikit -I../src/fit-sdk -I../../Qt/5.15.2/ios/include -I../../Qt/5.15.2/ios/include/QtWidgets -I../../Qt/5.15.2/ios/include/QtQuick -I../../Qt/5.15.2/ios/include/QtGui -I../../Qt/5.15.2/ios/include/QtBluetooth -I../../Qt/5.15.2/ios/include/QtXml -I../../Qt/5.15.2/ios/include/QtPositioning -I../../Qt/5.15.2/ios/include/QtQmlModels -I../../Qt/5.15.2/ios/include/QtQml -I../../Qt/5.15.2/ios/include/QtNetwork -I../../Qt/5.15.2/ios/include/QtCore -I. -I../../Qt/5.15.2/ios/mkspecs/macx-ios-clang
DEL_FILE = rm -f
MOVE = mv -f
preprocess: compilers
clean preprocess_clean: compiler_clean
mocclean: compiler_moc_header_clean compiler_moc_objc_header_clean compiler_moc_source_clean
mocables: compiler_moc_header_make_all compiler_moc_objc_header_make_all compiler_moc_source_make_all
check: first
benchmark: first
compilers: qrc_icons.cpp qrc_qml.cpp moc_bike.cpp moc_bluetooth.cpp moc_bluetoothdevice.cpp\
moc_domyostreadmill.cpp moc_echelonconnectsport.cpp moc_homeform.cpp\
moc_qfit.cpp moc_toorxtreadmill.cpp moc_gpx.cpp\
moc_treadmill.cpp moc_mainwindow.cpp moc_trainprogram.cpp\
moc_trxappgateusbtreadmill.cpp moc_virtualbike.cpp moc_virtualtreadmill.cpp\
moc_domyosbike.cpp
compiler_rcc_make_all: qrc_icons.cpp qrc_qml.cpp
compiler_rcc_clean:
-$(DEL_FILE) qrc_icons.cpp qrc_qml.cpp
qrc_icons.cpp: ../src/icons.qrc \
../../Qt/5.15.2/ios/bin/rcc \
../src/icons/signal-0.png \
../src/icons/speed.png \
../src/icons/signal-1.png \
../src/icons/inclination.png \
../src/icons/signal-2.png \
../src/icons/signal-3.png \
../src/icons/watt.png \
../src/icons/heart_red.png \
../src/icons/weight.png \
../src/icons/start.png \
../src/icons/icon.png \
../src/icons/zwift-on.png \
../src/icons/kcal.png \
../src/icons/chart.png \
../src/icons/joul.png \
../src/icons/bluetooth-icon.png \
../src/icons/resistance.png \
../src/icons/odometer.png \
../src/icons/clock.png \
../src/icons/cadence.png \
../src/icons/fan.png \
../src/icons/elevationgain.png \
../src/icons/stop.png \
../src/icons/pace.png
/Users/cagnulein/Qt/5.15.2/ios/bin/rcc -name icons ../src/icons.qrc -o qrc_icons.cpp
qrc_qml.cpp: ../src/qml.qrc \
../../Qt/5.15.2/ios/bin/rcc \
../src/Page1Form.ui.qml \
../src/Page2Form.ui.qml \
../src/HomeForm.ui.qml \
../src/qtquickcontrols2.conf \
../src/main.qml \
../src/Home.qml \
../src/settings.qml
/Users/cagnulein/Qt/5.15.2/ios/bin/rcc -name qml ../src/qml.qrc -o qrc_qml.cpp
compiler_moc_header_make_all: moc_bike.cpp moc_bluetooth.cpp moc_bluetoothdevice.cpp moc_domyostreadmill.cpp moc_echelonconnectsport.cpp moc_homeform.cpp moc_qfit.cpp moc_toorxtreadmill.cpp moc_gpx.cpp moc_treadmill.cpp moc_mainwindow.cpp moc_trainprogram.cpp moc_trxappgateusbtreadmill.cpp moc_virtualbike.cpp moc_virtualtreadmill.cpp moc_domyosbike.cpp
compiler_moc_header_clean:
-$(DEL_FILE) moc_bike.cpp moc_bluetooth.cpp moc_bluetoothdevice.cpp moc_domyostreadmill.cpp moc_echelonconnectsport.cpp moc_homeform.cpp moc_qfit.cpp moc_toorxtreadmill.cpp moc_gpx.cpp moc_treadmill.cpp moc_mainwindow.cpp moc_trainprogram.cpp moc_trxappgateusbtreadmill.cpp moc_virtualbike.cpp moc_virtualtreadmill.cpp moc_domyosbike.cpp
moc_bike.cpp: ../src/bike.h \
../../Qt/5.15.2/ios/include/QtCore/QObject \
../src/bluetoothdevice.h \
../../Qt/5.15.2/ios/include/QtCore/QTimer \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceInfo \
../../Qt/5.15.2/ios/bin/moc
/Users/cagnulein/Qt/5.15.2/ios/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -D__APPLE_CC__ -D__cplusplus=199711L -D__APPLE_CC__=6000 -D__clang__ -D__clang_major__=12 -D__clang_minor__=0 -D__clang_patchlevel__=0 -D__GNUC__=4 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=1 -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/macx-ios-clang -I/Users/cagnulein/qdomyos-zwift/src -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/common/uikit -I/Users/cagnulein/qdomyos-zwift/src/fit-sdk -I/Users/cagnulein/Qt/5.15.2/ios/include -I/Users/cagnulein/Qt/5.15.2/ios/include/QtWidgets -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQuick -I/Users/cagnulein/Qt/5.15.2/ios/include/QtGui -I/Users/cagnulein/Qt/5.15.2/ios/include/QtBluetooth -I/Users/cagnulein/Qt/5.15.2/ios/include/QtXml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtPositioning -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQmlModels -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtNetwork -I/Users/cagnulein/Qt/5.15.2/ios/include/QtCore -I. -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include ../src/bike.h -o moc_bike.cpp
moc_bluetooth.cpp: ../src/bluetooth.h \
../../Qt/5.15.2/ios/include/QtCore/QObject \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingparameters.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristic.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristicdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergydescriptordata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycontroller.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservice.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservicedata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceDiscoveryAgent \
../../Qt/5.15.2/ios/include/QtCore/qbytearray.h \
../../Qt/5.15.2/ios/include/QtCore/qloggingcategory.h \
../../Qt/5.15.2/ios/include/QtCore/QFile \
../src/treadmill.h \
../src/bluetoothdevice.h \
../../Qt/5.15.2/ios/include/QtCore/QTimer \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceInfo \
../src/domyostreadmill.h \
../../Qt/5.15.2/ios/include/QtCore/qcoreapplication.h \
../../Qt/5.15.2/ios/include/QtGui/qguiapplication.h \
../../Qt/5.15.2/ios/include/QtCore/qlist.h \
../../Qt/5.15.2/ios/include/QtCore/qscopedpointer.h \
../../Qt/5.15.2/ios/include/QtCore/qtimer.h \
../../Qt/5.15.2/ios/include/QtCore/qmutex.h \
../../Qt/5.15.2/ios/include/QtCore/QDateTime \
../src/virtualtreadmill.h \
../src/domyosbike.h \
../../Qt/5.15.2/ios/include/QtCore/QString \
../src/virtualbike.h \
../src/bike.h \
../src/trxappgateusbtreadmill.h \
../../Qt/5.15.2/ios/include/QtCore/QTime \
../src/toorxtreadmill.h \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothServiceDiscoveryAgent \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothSocket \
../src/echelonconnectsport.h \
../src/signalhandler.h \
../../Qt/5.15.2/ios/bin/moc
/Users/cagnulein/Qt/5.15.2/ios/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -D__APPLE_CC__ -D__cplusplus=199711L -D__APPLE_CC__=6000 -D__clang__ -D__clang_major__=12 -D__clang_minor__=0 -D__clang_patchlevel__=0 -D__GNUC__=4 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=1 -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/macx-ios-clang -I/Users/cagnulein/qdomyos-zwift/src -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/common/uikit -I/Users/cagnulein/qdomyos-zwift/src/fit-sdk -I/Users/cagnulein/Qt/5.15.2/ios/include -I/Users/cagnulein/Qt/5.15.2/ios/include/QtWidgets -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQuick -I/Users/cagnulein/Qt/5.15.2/ios/include/QtGui -I/Users/cagnulein/Qt/5.15.2/ios/include/QtBluetooth -I/Users/cagnulein/Qt/5.15.2/ios/include/QtXml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtPositioning -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQmlModels -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtNetwork -I/Users/cagnulein/Qt/5.15.2/ios/include/QtCore -I. -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include ../src/bluetooth.h -o moc_bluetooth.cpp
moc_bluetoothdevice.cpp: ../src/bluetoothdevice.h \
../../Qt/5.15.2/ios/include/QtCore/QObject \
../../Qt/5.15.2/ios/include/QtCore/QTimer \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceInfo \
../../Qt/5.15.2/ios/bin/moc
/Users/cagnulein/Qt/5.15.2/ios/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -D__APPLE_CC__ -D__cplusplus=199711L -D__APPLE_CC__=6000 -D__clang__ -D__clang_major__=12 -D__clang_minor__=0 -D__clang_patchlevel__=0 -D__GNUC__=4 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=1 -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/macx-ios-clang -I/Users/cagnulein/qdomyos-zwift/src -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/common/uikit -I/Users/cagnulein/qdomyos-zwift/src/fit-sdk -I/Users/cagnulein/Qt/5.15.2/ios/include -I/Users/cagnulein/Qt/5.15.2/ios/include/QtWidgets -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQuick -I/Users/cagnulein/Qt/5.15.2/ios/include/QtGui -I/Users/cagnulein/Qt/5.15.2/ios/include/QtBluetooth -I/Users/cagnulein/Qt/5.15.2/ios/include/QtXml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtPositioning -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQmlModels -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtNetwork -I/Users/cagnulein/Qt/5.15.2/ios/include/QtCore -I. -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include ../src/bluetoothdevice.h -o moc_bluetoothdevice.cpp
moc_domyostreadmill.cpp: ../src/domyostreadmill.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingparameters.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristic.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristicdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergydescriptordata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycontroller.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservice.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservicedata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceDiscoveryAgent \
../../Qt/5.15.2/ios/include/QtCore/qbytearray.h \
../../Qt/5.15.2/ios/include/QtCore/qcoreapplication.h \
../../Qt/5.15.2/ios/include/QtGui/qguiapplication.h \
../../Qt/5.15.2/ios/include/QtCore/qlist.h \
../../Qt/5.15.2/ios/include/QtCore/qscopedpointer.h \
../../Qt/5.15.2/ios/include/QtCore/qtimer.h \
../../Qt/5.15.2/ios/include/QtCore/qmutex.h \
../../Qt/5.15.2/ios/include/QtCore/QObject \
../../Qt/5.15.2/ios/include/QtCore/QDateTime \
../src/virtualtreadmill.h \
../../Qt/5.15.2/ios/include/QtCore/qloggingcategory.h \
../src/treadmill.h \
../src/bluetoothdevice.h \
../../Qt/5.15.2/ios/include/QtCore/QTimer \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceInfo \
../../Qt/5.15.2/ios/bin/moc
/Users/cagnulein/Qt/5.15.2/ios/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -D__APPLE_CC__ -D__cplusplus=199711L -D__APPLE_CC__=6000 -D__clang__ -D__clang_major__=12 -D__clang_minor__=0 -D__clang_patchlevel__=0 -D__GNUC__=4 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=1 -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/macx-ios-clang -I/Users/cagnulein/qdomyos-zwift/src -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/common/uikit -I/Users/cagnulein/qdomyos-zwift/src/fit-sdk -I/Users/cagnulein/Qt/5.15.2/ios/include -I/Users/cagnulein/Qt/5.15.2/ios/include/QtWidgets -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQuick -I/Users/cagnulein/Qt/5.15.2/ios/include/QtGui -I/Users/cagnulein/Qt/5.15.2/ios/include/QtBluetooth -I/Users/cagnulein/Qt/5.15.2/ios/include/QtXml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtPositioning -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQmlModels -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtNetwork -I/Users/cagnulein/Qt/5.15.2/ios/include/QtCore -I. -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include ../src/domyostreadmill.h -o moc_domyostreadmill.cpp
moc_echelonconnectsport.cpp: ../src/echelonconnectsport.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingparameters.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristic.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristicdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergydescriptordata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycontroller.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservice.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservicedata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceDiscoveryAgent \
../../Qt/5.15.2/ios/include/QtCore/qbytearray.h \
../../Qt/5.15.2/ios/include/QtCore/qcoreapplication.h \
../../Qt/5.15.2/ios/include/QtGui/qguiapplication.h \
../../Qt/5.15.2/ios/include/QtCore/qlist.h \
../../Qt/5.15.2/ios/include/QtCore/qscopedpointer.h \
../../Qt/5.15.2/ios/include/QtCore/qtimer.h \
../../Qt/5.15.2/ios/include/QtCore/qmutex.h \
../../Qt/5.15.2/ios/include/QtCore/QObject \
../../Qt/5.15.2/ios/include/QtCore/QString \
../../Qt/5.15.2/ios/include/QtCore/QDateTime \
../src/virtualbike.h \
../../Qt/5.15.2/ios/include/QtCore/qloggingcategory.h \
../src/bike.h \
../src/bluetoothdevice.h \
../../Qt/5.15.2/ios/include/QtCore/QTimer \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceInfo \
../../Qt/5.15.2/ios/bin/moc
/Users/cagnulein/Qt/5.15.2/ios/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -D__APPLE_CC__ -D__cplusplus=199711L -D__APPLE_CC__=6000 -D__clang__ -D__clang_major__=12 -D__clang_minor__=0 -D__clang_patchlevel__=0 -D__GNUC__=4 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=1 -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/macx-ios-clang -I/Users/cagnulein/qdomyos-zwift/src -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/common/uikit -I/Users/cagnulein/qdomyos-zwift/src/fit-sdk -I/Users/cagnulein/Qt/5.15.2/ios/include -I/Users/cagnulein/Qt/5.15.2/ios/include/QtWidgets -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQuick -I/Users/cagnulein/Qt/5.15.2/ios/include/QtGui -I/Users/cagnulein/Qt/5.15.2/ios/include/QtBluetooth -I/Users/cagnulein/Qt/5.15.2/ios/include/QtXml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtPositioning -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQmlModels -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtNetwork -I/Users/cagnulein/Qt/5.15.2/ios/include/QtCore -I. -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include ../src/echelonconnectsport.h -o moc_echelonconnectsport.cpp
moc_homeform.cpp: ../src/homeform.h \
../../Qt/5.15.2/ios/include/QtQuick/QQuickItem \
../../Qt/5.15.2/ios/include/QtQml/QQmlApplicationEngine \
../src/bluetooth.h \
../../Qt/5.15.2/ios/include/QtCore/QObject \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingparameters.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristic.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristicdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergydescriptordata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycontroller.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservice.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservicedata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceDiscoveryAgent \
../../Qt/5.15.2/ios/include/QtCore/qbytearray.h \
../../Qt/5.15.2/ios/include/QtCore/qloggingcategory.h \
../../Qt/5.15.2/ios/include/QtCore/QFile \
../src/treadmill.h \
../src/bluetoothdevice.h \
../../Qt/5.15.2/ios/include/QtCore/QTimer \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceInfo \
../src/domyostreadmill.h \
../../Qt/5.15.2/ios/include/QtCore/qcoreapplication.h \
../../Qt/5.15.2/ios/include/QtGui/qguiapplication.h \
../../Qt/5.15.2/ios/include/QtCore/qlist.h \
../../Qt/5.15.2/ios/include/QtCore/qscopedpointer.h \
../../Qt/5.15.2/ios/include/QtCore/qtimer.h \
../../Qt/5.15.2/ios/include/QtCore/qmutex.h \
../../Qt/5.15.2/ios/include/QtCore/QDateTime \
../src/virtualtreadmill.h \
../src/domyosbike.h \
../../Qt/5.15.2/ios/include/QtCore/QString \
../src/virtualbike.h \
../src/bike.h \
../src/trxappgateusbtreadmill.h \
../../Qt/5.15.2/ios/include/QtCore/QTime \
../src/toorxtreadmill.h \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothServiceDiscoveryAgent \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothSocket \
../src/echelonconnectsport.h \
../src/signalhandler.h \
../src/sessionline.h \
../src/trainprogram.h \
../../Qt/5.15.2/ios/bin/moc
/Users/cagnulein/Qt/5.15.2/ios/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -D__APPLE_CC__ -D__cplusplus=199711L -D__APPLE_CC__=6000 -D__clang__ -D__clang_major__=12 -D__clang_minor__=0 -D__clang_patchlevel__=0 -D__GNUC__=4 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=1 -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/macx-ios-clang -I/Users/cagnulein/qdomyos-zwift/src -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/common/uikit -I/Users/cagnulein/qdomyos-zwift/src/fit-sdk -I/Users/cagnulein/Qt/5.15.2/ios/include -I/Users/cagnulein/Qt/5.15.2/ios/include/QtWidgets -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQuick -I/Users/cagnulein/Qt/5.15.2/ios/include/QtGui -I/Users/cagnulein/Qt/5.15.2/ios/include/QtBluetooth -I/Users/cagnulein/Qt/5.15.2/ios/include/QtXml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtPositioning -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQmlModels -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtNetwork -I/Users/cagnulein/Qt/5.15.2/ios/include/QtCore -I. -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include ../src/homeform.h -o moc_homeform.cpp
moc_qfit.cpp: ../src/qfit.h \
../../Qt/5.15.2/ios/include/QtCore/QObject \
../../Qt/5.15.2/ios/include/QtCore/QFile \
../../Qt/5.15.2/ios/include/QtCore/QTime \
../../Qt/5.15.2/ios/include/QtPositioning/QGeoCoordinate \
../src/sessionline.h \
../../Qt/5.15.2/ios/include/QtCore/QTimer \
../../Qt/5.15.2/ios/include/QtCore/QDateTime \
../src/bluetoothdevice.h \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceInfo \
../../Qt/5.15.2/ios/bin/moc
/Users/cagnulein/Qt/5.15.2/ios/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -D__APPLE_CC__ -D__cplusplus=199711L -D__APPLE_CC__=6000 -D__clang__ -D__clang_major__=12 -D__clang_minor__=0 -D__clang_patchlevel__=0 -D__GNUC__=4 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=1 -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/macx-ios-clang -I/Users/cagnulein/qdomyos-zwift/src -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/common/uikit -I/Users/cagnulein/qdomyos-zwift/src/fit-sdk -I/Users/cagnulein/Qt/5.15.2/ios/include -I/Users/cagnulein/Qt/5.15.2/ios/include/QtWidgets -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQuick -I/Users/cagnulein/Qt/5.15.2/ios/include/QtGui -I/Users/cagnulein/Qt/5.15.2/ios/include/QtBluetooth -I/Users/cagnulein/Qt/5.15.2/ios/include/QtXml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtPositioning -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQmlModels -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtNetwork -I/Users/cagnulein/Qt/5.15.2/ios/include/QtCore -I. -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include ../src/qfit.h -o moc_qfit.cpp
moc_toorxtreadmill.cpp: ../src/toorxtreadmill.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingparameters.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristic.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristicdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergydescriptordata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycontroller.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservice.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservicedata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceDiscoveryAgent \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothServiceDiscoveryAgent \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothSocket \
../../Qt/5.15.2/ios/include/QtCore/qbytearray.h \
../../Qt/5.15.2/ios/include/QtCore/qcoreapplication.h \
../../Qt/5.15.2/ios/include/QtGui/qguiapplication.h \
../../Qt/5.15.2/ios/include/QtCore/qlist.h \
../../Qt/5.15.2/ios/include/QtCore/qscopedpointer.h \
../../Qt/5.15.2/ios/include/QtCore/qtimer.h \
../../Qt/5.15.2/ios/include/QtCore/qmutex.h \
../../Qt/5.15.2/ios/include/QtCore/QObject \
../src/virtualtreadmill.h \
../../Qt/5.15.2/ios/include/QtCore/qloggingcategory.h \
../src/treadmill.h \
../src/bluetoothdevice.h \
../../Qt/5.15.2/ios/include/QtCore/QTimer \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceInfo \
../../Qt/5.15.2/ios/bin/moc
/Users/cagnulein/Qt/5.15.2/ios/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -D__APPLE_CC__ -D__cplusplus=199711L -D__APPLE_CC__=6000 -D__clang__ -D__clang_major__=12 -D__clang_minor__=0 -D__clang_patchlevel__=0 -D__GNUC__=4 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=1 -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/macx-ios-clang -I/Users/cagnulein/qdomyos-zwift/src -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/common/uikit -I/Users/cagnulein/qdomyos-zwift/src/fit-sdk -I/Users/cagnulein/Qt/5.15.2/ios/include -I/Users/cagnulein/Qt/5.15.2/ios/include/QtWidgets -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQuick -I/Users/cagnulein/Qt/5.15.2/ios/include/QtGui -I/Users/cagnulein/Qt/5.15.2/ios/include/QtBluetooth -I/Users/cagnulein/Qt/5.15.2/ios/include/QtXml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtPositioning -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQmlModels -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtNetwork -I/Users/cagnulein/Qt/5.15.2/ios/include/QtCore -I. -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include ../src/toorxtreadmill.h -o moc_toorxtreadmill.cpp
moc_gpx.cpp: ../src/gpx.h \
../../Qt/5.15.2/ios/include/QtCore/QObject \
../../Qt/5.15.2/ios/include/QtCore/QFile \
../../Qt/5.15.2/ios/include/QtCore/QTime \
../../Qt/5.15.2/ios/include/QtPositioning/QGeoCoordinate \
../src/sessionline.h \
../../Qt/5.15.2/ios/include/QtCore/QTimer \
../../Qt/5.15.2/ios/include/QtCore/QDateTime \
../../Qt/5.15.2/ios/bin/moc
/Users/cagnulein/Qt/5.15.2/ios/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -D__APPLE_CC__ -D__cplusplus=199711L -D__APPLE_CC__=6000 -D__clang__ -D__clang_major__=12 -D__clang_minor__=0 -D__clang_patchlevel__=0 -D__GNUC__=4 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=1 -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/macx-ios-clang -I/Users/cagnulein/qdomyos-zwift/src -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/common/uikit -I/Users/cagnulein/qdomyos-zwift/src/fit-sdk -I/Users/cagnulein/Qt/5.15.2/ios/include -I/Users/cagnulein/Qt/5.15.2/ios/include/QtWidgets -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQuick -I/Users/cagnulein/Qt/5.15.2/ios/include/QtGui -I/Users/cagnulein/Qt/5.15.2/ios/include/QtBluetooth -I/Users/cagnulein/Qt/5.15.2/ios/include/QtXml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtPositioning -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQmlModels -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtNetwork -I/Users/cagnulein/Qt/5.15.2/ios/include/QtCore -I. -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include ../src/gpx.h -o moc_gpx.cpp
moc_treadmill.cpp: ../src/treadmill.h \
../../Qt/5.15.2/ios/include/QtCore/QObject \
../src/bluetoothdevice.h \
../../Qt/5.15.2/ios/include/QtCore/QTimer \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceInfo \
../../Qt/5.15.2/ios/bin/moc
/Users/cagnulein/Qt/5.15.2/ios/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -D__APPLE_CC__ -D__cplusplus=199711L -D__APPLE_CC__=6000 -D__clang__ -D__clang_major__=12 -D__clang_minor__=0 -D__clang_patchlevel__=0 -D__GNUC__=4 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=1 -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/macx-ios-clang -I/Users/cagnulein/qdomyos-zwift/src -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/common/uikit -I/Users/cagnulein/qdomyos-zwift/src/fit-sdk -I/Users/cagnulein/Qt/5.15.2/ios/include -I/Users/cagnulein/Qt/5.15.2/ios/include/QtWidgets -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQuick -I/Users/cagnulein/Qt/5.15.2/ios/include/QtGui -I/Users/cagnulein/Qt/5.15.2/ios/include/QtBluetooth -I/Users/cagnulein/Qt/5.15.2/ios/include/QtXml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtPositioning -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQmlModels -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtNetwork -I/Users/cagnulein/Qt/5.15.2/ios/include/QtCore -I. -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include ../src/treadmill.h -o moc_treadmill.cpp
moc_mainwindow.cpp: ../src/mainwindow.h \
../../Qt/5.15.2/ios/include/QtWidgets/QDialog \
../../Qt/5.15.2/ios/include/QtCore/QTimer \
../../Qt/5.15.2/ios/include/QtCore/QTime \
../../Qt/5.15.2/ios/include/QtCore/QDebug \
../../Qt/5.15.2/ios/include/QtWidgets/QTableWidgetItem \
../src/trainprogram.h \
../../Qt/5.15.2/ios/include/QtCore/QObject \
../src/bluetooth.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingparameters.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristic.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristicdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergydescriptordata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycontroller.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservice.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservicedata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceDiscoveryAgent \
../../Qt/5.15.2/ios/include/QtCore/qbytearray.h \
../../Qt/5.15.2/ios/include/QtCore/qloggingcategory.h \
../../Qt/5.15.2/ios/include/QtCore/QFile \
../src/treadmill.h \
../src/bluetoothdevice.h \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceInfo \
../src/domyostreadmill.h \
../../Qt/5.15.2/ios/include/QtCore/qcoreapplication.h \
../../Qt/5.15.2/ios/include/QtGui/qguiapplication.h \
../../Qt/5.15.2/ios/include/QtCore/qlist.h \
../../Qt/5.15.2/ios/include/QtCore/qscopedpointer.h \
../../Qt/5.15.2/ios/include/QtCore/qtimer.h \
../../Qt/5.15.2/ios/include/QtCore/qmutex.h \
../../Qt/5.15.2/ios/include/QtCore/QDateTime \
../src/virtualtreadmill.h \
../src/domyosbike.h \
../../Qt/5.15.2/ios/include/QtCore/QString \
../src/virtualbike.h \
../src/bike.h \
../src/trxappgateusbtreadmill.h \
../src/toorxtreadmill.h \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothServiceDiscoveryAgent \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothSocket \
../src/echelonconnectsport.h \
../src/signalhandler.h \
../src/sessionline.h \
../../Qt/5.15.2/ios/bin/moc
/Users/cagnulein/Qt/5.15.2/ios/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -D__APPLE_CC__ -D__cplusplus=199711L -D__APPLE_CC__=6000 -D__clang__ -D__clang_major__=12 -D__clang_minor__=0 -D__clang_patchlevel__=0 -D__GNUC__=4 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=1 -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/macx-ios-clang -I/Users/cagnulein/qdomyos-zwift/src -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/common/uikit -I/Users/cagnulein/qdomyos-zwift/src/fit-sdk -I/Users/cagnulein/Qt/5.15.2/ios/include -I/Users/cagnulein/Qt/5.15.2/ios/include/QtWidgets -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQuick -I/Users/cagnulein/Qt/5.15.2/ios/include/QtGui -I/Users/cagnulein/Qt/5.15.2/ios/include/QtBluetooth -I/Users/cagnulein/Qt/5.15.2/ios/include/QtXml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtPositioning -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQmlModels -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtNetwork -I/Users/cagnulein/Qt/5.15.2/ios/include/QtCore -I. -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include ../src/mainwindow.h -o moc_mainwindow.cpp
moc_trainprogram.cpp: ../src/trainprogram.h \
../../Qt/5.15.2/ios/include/QtCore/QTime \
../../Qt/5.15.2/ios/include/QtCore/QTimer \
../../Qt/5.15.2/ios/include/QtCore/QObject \
../src/bluetooth.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingparameters.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristic.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristicdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergydescriptordata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycontroller.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservice.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservicedata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceDiscoveryAgent \
../../Qt/5.15.2/ios/include/QtCore/qbytearray.h \
../../Qt/5.15.2/ios/include/QtCore/qloggingcategory.h \
../../Qt/5.15.2/ios/include/QtCore/QFile \
../src/treadmill.h \
../src/bluetoothdevice.h \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceInfo \
../src/domyostreadmill.h \
../../Qt/5.15.2/ios/include/QtCore/qcoreapplication.h \
../../Qt/5.15.2/ios/include/QtGui/qguiapplication.h \
../../Qt/5.15.2/ios/include/QtCore/qlist.h \
../../Qt/5.15.2/ios/include/QtCore/qscopedpointer.h \
../../Qt/5.15.2/ios/include/QtCore/qtimer.h \
../../Qt/5.15.2/ios/include/QtCore/qmutex.h \
../../Qt/5.15.2/ios/include/QtCore/QDateTime \
../src/virtualtreadmill.h \
../src/domyosbike.h \
../../Qt/5.15.2/ios/include/QtCore/QString \
../src/virtualbike.h \
../src/bike.h \
../src/trxappgateusbtreadmill.h \
../src/toorxtreadmill.h \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothServiceDiscoveryAgent \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothSocket \
../src/echelonconnectsport.h \
../src/signalhandler.h \
../../Qt/5.15.2/ios/bin/moc
/Users/cagnulein/Qt/5.15.2/ios/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -D__APPLE_CC__ -D__cplusplus=199711L -D__APPLE_CC__=6000 -D__clang__ -D__clang_major__=12 -D__clang_minor__=0 -D__clang_patchlevel__=0 -D__GNUC__=4 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=1 -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/macx-ios-clang -I/Users/cagnulein/qdomyos-zwift/src -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/common/uikit -I/Users/cagnulein/qdomyos-zwift/src/fit-sdk -I/Users/cagnulein/Qt/5.15.2/ios/include -I/Users/cagnulein/Qt/5.15.2/ios/include/QtWidgets -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQuick -I/Users/cagnulein/Qt/5.15.2/ios/include/QtGui -I/Users/cagnulein/Qt/5.15.2/ios/include/QtBluetooth -I/Users/cagnulein/Qt/5.15.2/ios/include/QtXml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtPositioning -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQmlModels -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtNetwork -I/Users/cagnulein/Qt/5.15.2/ios/include/QtCore -I. -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include ../src/trainprogram.h -o moc_trainprogram.cpp
moc_trxappgateusbtreadmill.cpp: ../src/trxappgateusbtreadmill.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingparameters.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristic.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristicdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergydescriptordata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycontroller.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservice.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservicedata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceDiscoveryAgent \
../../Qt/5.15.2/ios/include/QtCore/qbytearray.h \
../../Qt/5.15.2/ios/include/QtCore/qcoreapplication.h \
../../Qt/5.15.2/ios/include/QtGui/qguiapplication.h \
../../Qt/5.15.2/ios/include/QtCore/qlist.h \
../../Qt/5.15.2/ios/include/QtCore/qscopedpointer.h \
../../Qt/5.15.2/ios/include/QtCore/qtimer.h \
../../Qt/5.15.2/ios/include/QtCore/qmutex.h \
../../Qt/5.15.2/ios/include/QtCore/QObject \
../../Qt/5.15.2/ios/include/QtCore/QTime \
../src/virtualtreadmill.h \
../../Qt/5.15.2/ios/include/QtCore/qloggingcategory.h \
../src/treadmill.h \
../src/bluetoothdevice.h \
../../Qt/5.15.2/ios/include/QtCore/QTimer \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceInfo \
../../Qt/5.15.2/ios/bin/moc
/Users/cagnulein/Qt/5.15.2/ios/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -D__APPLE_CC__ -D__cplusplus=199711L -D__APPLE_CC__=6000 -D__clang__ -D__clang_major__=12 -D__clang_minor__=0 -D__clang_patchlevel__=0 -D__GNUC__=4 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=1 -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/macx-ios-clang -I/Users/cagnulein/qdomyos-zwift/src -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/common/uikit -I/Users/cagnulein/qdomyos-zwift/src/fit-sdk -I/Users/cagnulein/Qt/5.15.2/ios/include -I/Users/cagnulein/Qt/5.15.2/ios/include/QtWidgets -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQuick -I/Users/cagnulein/Qt/5.15.2/ios/include/QtGui -I/Users/cagnulein/Qt/5.15.2/ios/include/QtBluetooth -I/Users/cagnulein/Qt/5.15.2/ios/include/QtXml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtPositioning -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQmlModels -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtNetwork -I/Users/cagnulein/Qt/5.15.2/ios/include/QtCore -I. -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include ../src/trxappgateusbtreadmill.h -o moc_trxappgateusbtreadmill.cpp
moc_virtualbike.cpp: ../src/virtualbike.h \
../../Qt/5.15.2/ios/include/QtCore/QObject \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingparameters.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristic.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristicdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergydescriptordata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycontroller.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservice.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservicedata.h \
../../Qt/5.15.2/ios/include/QtCore/qbytearray.h \
../../Qt/5.15.2/ios/include/QtCore/qcoreapplication.h \
../../Qt/5.15.2/ios/include/QtGui/qguiapplication.h \
../../Qt/5.15.2/ios/include/QtCore/qlist.h \
../../Qt/5.15.2/ios/include/QtCore/qloggingcategory.h \
../../Qt/5.15.2/ios/include/QtCore/qscopedpointer.h \
../../Qt/5.15.2/ios/include/QtCore/qtimer.h \
../src/bike.h \
../src/bluetoothdevice.h \
../../Qt/5.15.2/ios/include/QtCore/QTimer \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceInfo \
../../Qt/5.15.2/ios/bin/moc
/Users/cagnulein/Qt/5.15.2/ios/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -D__APPLE_CC__ -D__cplusplus=199711L -D__APPLE_CC__=6000 -D__clang__ -D__clang_major__=12 -D__clang_minor__=0 -D__clang_patchlevel__=0 -D__GNUC__=4 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=1 -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/macx-ios-clang -I/Users/cagnulein/qdomyos-zwift/src -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/common/uikit -I/Users/cagnulein/qdomyos-zwift/src/fit-sdk -I/Users/cagnulein/Qt/5.15.2/ios/include -I/Users/cagnulein/Qt/5.15.2/ios/include/QtWidgets -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQuick -I/Users/cagnulein/Qt/5.15.2/ios/include/QtGui -I/Users/cagnulein/Qt/5.15.2/ios/include/QtBluetooth -I/Users/cagnulein/Qt/5.15.2/ios/include/QtXml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtPositioning -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQmlModels -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtNetwork -I/Users/cagnulein/Qt/5.15.2/ios/include/QtCore -I. -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include ../src/virtualbike.h -o moc_virtualbike.cpp
moc_virtualtreadmill.cpp: ../src/virtualtreadmill.h \
../../Qt/5.15.2/ios/include/QtCore/QObject \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingparameters.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristic.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristicdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergydescriptordata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycontroller.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservice.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservicedata.h \
../../Qt/5.15.2/ios/include/QtCore/qbytearray.h \
../../Qt/5.15.2/ios/include/QtCore/qcoreapplication.h \
../../Qt/5.15.2/ios/include/QtGui/qguiapplication.h \
../../Qt/5.15.2/ios/include/QtCore/qlist.h \
../../Qt/5.15.2/ios/include/QtCore/qloggingcategory.h \
../../Qt/5.15.2/ios/include/QtCore/qscopedpointer.h \
../../Qt/5.15.2/ios/include/QtCore/qtimer.h \
../src/treadmill.h \
../src/bluetoothdevice.h \
../../Qt/5.15.2/ios/include/QtCore/QTimer \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceInfo \
../../Qt/5.15.2/ios/bin/moc
/Users/cagnulein/Qt/5.15.2/ios/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -D__APPLE_CC__ -D__cplusplus=199711L -D__APPLE_CC__=6000 -D__clang__ -D__clang_major__=12 -D__clang_minor__=0 -D__clang_patchlevel__=0 -D__GNUC__=4 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=1 -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/macx-ios-clang -I/Users/cagnulein/qdomyos-zwift/src -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/common/uikit -I/Users/cagnulein/qdomyos-zwift/src/fit-sdk -I/Users/cagnulein/Qt/5.15.2/ios/include -I/Users/cagnulein/Qt/5.15.2/ios/include/QtWidgets -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQuick -I/Users/cagnulein/Qt/5.15.2/ios/include/QtGui -I/Users/cagnulein/Qt/5.15.2/ios/include/QtBluetooth -I/Users/cagnulein/Qt/5.15.2/ios/include/QtXml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtPositioning -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQmlModels -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtNetwork -I/Users/cagnulein/Qt/5.15.2/ios/include/QtCore -I. -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include ../src/virtualtreadmill.h -o moc_virtualtreadmill.cpp
moc_domyosbike.cpp: ../src/domyosbike.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyadvertisingparameters.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristic.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycharacteristicdata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergydescriptordata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergycontroller.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservice.h \
../../Qt/5.15.2/ios/include/QtBluetooth/qlowenergyservicedata.h \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceDiscoveryAgent \
../../Qt/5.15.2/ios/include/QtCore/qbytearray.h \
../../Qt/5.15.2/ios/include/QtCore/qcoreapplication.h \
../../Qt/5.15.2/ios/include/QtGui/qguiapplication.h \
../../Qt/5.15.2/ios/include/QtCore/qlist.h \
../../Qt/5.15.2/ios/include/QtCore/qscopedpointer.h \
../../Qt/5.15.2/ios/include/QtCore/qtimer.h \
../../Qt/5.15.2/ios/include/QtCore/qmutex.h \
../../Qt/5.15.2/ios/include/QtCore/QObject \
../../Qt/5.15.2/ios/include/QtCore/QString \
../../Qt/5.15.2/ios/include/QtCore/QDateTime \
../src/virtualbike.h \
../../Qt/5.15.2/ios/include/QtCore/qloggingcategory.h \
../src/bike.h \
../src/bluetoothdevice.h \
../../Qt/5.15.2/ios/include/QtCore/QTimer \
../../Qt/5.15.2/ios/include/QtBluetooth/QBluetoothDeviceInfo \
../../Qt/5.15.2/ios/bin/moc
/Users/cagnulein/Qt/5.15.2/ios/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -D__APPLE_CC__ -D__cplusplus=199711L -D__APPLE_CC__=6000 -D__clang__ -D__clang_major__=12 -D__clang_minor__=0 -D__clang_patchlevel__=0 -D__GNUC__=4 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=1 -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/macx-ios-clang -I/Users/cagnulein/qdomyos-zwift/src -I/Users/cagnulein/Qt/5.15.2/ios/mkspecs/common/uikit -I/Users/cagnulein/qdomyos-zwift/src/fit-sdk -I/Users/cagnulein/Qt/5.15.2/ios/include -I/Users/cagnulein/Qt/5.15.2/ios/include/QtWidgets -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQuick -I/Users/cagnulein/Qt/5.15.2/ios/include/QtGui -I/Users/cagnulein/Qt/5.15.2/ios/include/QtBluetooth -I/Users/cagnulein/Qt/5.15.2/ios/include/QtXml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtPositioning -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQmlModels -I/Users/cagnulein/Qt/5.15.2/ios/include/QtQml -I/Users/cagnulein/Qt/5.15.2/ios/include/QtNetwork -I/Users/cagnulein/Qt/5.15.2/ios/include/QtCore -I. -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include ../src/domyosbike.h -o moc_domyosbike.cpp
compiler_moc_objc_header_make_all:
compiler_moc_objc_header_clean:
compiler_moc_source_make_all:
compiler_moc_source_clean:
compiler_uic_make_all:
compiler_uic_clean:
compiler_rez_source_make_all:
compiler_rez_source_clean:
compiler_yacc_decl_make_all:
compiler_yacc_decl_clean:
compiler_yacc_impl_make_all:
compiler_yacc_impl_clean:
compiler_lex_make_all:
compiler_lex_clean:
compiler_clean: compiler_rcc_clean compiler_moc_header_clean

View File

@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0610"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "799833E5566DEFFC37E4BF1E"
BuildableName = "qdomyoszwift.app"
BlueprintName = "qdomyoszwift"
ReferencedContainer = "container:qdomyoszwift.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "NO"
disableMainThreadChecker = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "799833E5566DEFFC37E4BF1E"
BuildableName = "qdomyoszwift.app"
BlueprintName = "qdomyoszwift"
ReferencedContainer = "container:qdomyoszwift.xcodeproj">
</BuildableReference>
</MacroExpansion>
<CommandLineArguments>
<CommandLineArgument
argument = "$(TESTARGS)"
isEnabled = "YES">
</CommandLineArgument>
</CommandLineArguments>
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "9E73BA301EF4580BE706E2EC"
BuildableName = "Qt Test"
BlueprintName = "Qt Test"
ReferencedContainer = "container:qdomyoszwift.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
disableMainThreadChecker = "YES"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "NO"
debugServiceExtension = "internal"
enableGPUFrameCaptureMode = "3"
enableGPUValidationMode = "1"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "799833E5566DEFFC37E4BF1E"
BuildableName = "qdomyoszwift.app"
BlueprintName = "qdomyoszwift"
ReferencedContainer = "container:qdomyoszwift.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<EnvironmentVariables>
<EnvironmentVariable
key = "DYLD_IMAGE_SUFFIX"
value = "$(QT_LIBRARY_SUFFIX)"
isEnabled = "YES">
</EnvironmentVariable>
</EnvironmentVariables>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "NO">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "799833E5566DEFFC37E4BF1E"
BuildableName = "qdomyoszwift.app"
BlueprintName = "qdomyoszwift"
ReferencedContainer = "container:qdomyoszwift.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1220"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "876E4E102594747F00BD5714"
BuildableName = "watchkit.app"
BlueprintName = "watchkit"
ReferencedContainer = "container:qdomyoszwift.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "799833E5566DEFFC37E4BF1E"
BuildableName = "qdomyoszwift.app"
BlueprintName = "qdomyoszwift"
ReferencedContainer = "container:qdomyoszwift.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<RemoteRunnable
runnableDebuggingMode = "2"
BundleIdentifier = "com.apple.Carousel"
RemotePath = "/qdomyoszwift">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "876E4E102594747F00BD5714"
BuildableName = "watchkit.app"
BlueprintName = "watchkit"
ReferencedContainer = "container:qdomyoszwift.xcodeproj">
</BuildableReference>
</RemoteRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<RemoteRunnable
runnableDebuggingMode = "2"
BundleIdentifier = "com.apple.Carousel"
RemotePath = "/qdomyoszwift">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "876E4E102594747F00BD5714"
BuildableName = "watchkit.app"
BlueprintName = "watchkit"
ReferencedContainer = "container:qdomyoszwift.xcodeproj">
</BuildableReference>
</RemoteRunnable>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "876E4E102594747F00BD5714"
BuildableName = "watchkit.app"
BlueprintName = "watchkit"
ReferencedContainer = "container:qdomyoszwift.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@@ -0,0 +1,631 @@
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
uuid = "6397C888-2938-4ABC-BC07-73BACD8E46BA"
type = "1"
version = "2.0">
<Breakpoints>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "50EB432C-A681-4A19-8144-54461AAFBC5A"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/main.cpp"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "163"
endingLineNumber = "163"
landmarkName = "createApplication(argc, argv)"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "721796D3-13DB-421B-86C2-5E2328FA9E38"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/main.cpp"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "161"
endingLineNumber = "161"
landmarkName = "createApplication(argc, argv)"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "E1BF66E4-BB4F-4936-9D45-AB7A82D14FDE"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/main.cpp"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "159"
endingLineNumber = "159"
landmarkName = "createApplication(argc, argv)"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "80103083-98C3-439A-85EF-582852EACE58"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/WatchKitConnection.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "102"
endingLineNumber = "102"
landmarkName = "session(_:didReceiveMessage:replyHandler:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "3DD3927F-A606-4B89-B21F-832D2076D23D"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/WatchKitConnection.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "96"
endingLineNumber = "96"
landmarkName = "session(_:didReceiveMessage:replyHandler:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "7070D0F5-BD79-43DC-AE17-7B4D43FC5637"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "watchkit Extension/MainController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "56"
endingLineNumber = "56"
landmarkName = "didReceiveHealthKitHeartRate(_:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "329EF26B-A7BA-4771-A121-BA4060E60201"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "watchkit Extension/WatchWorkoutTracking.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "40"
endingLineNumber = "40"
landmarkName = "handleSendStatisticsData(_:)"
landmarkType = "7">
<Locations>
<Location
uuid = "329EF26B-A7BA-4771-A121-BA4060E60201 - 7dd9506ded50816f"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "watchkit_Extension.WorkoutTracking.(handleSendStatisticsData in _D3E6F9F3FAAAA099E0A09AA45CD92075)(__C.HKStatistics) -&gt; ()"
moduleName = "watchkit Extension"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/cagnulein/qdomyos-zwift/build-qdomyos-zwift-Qt_5_15_2_for_iOS-Debug/watchkit%20Extension/WatchWorkoutTracking.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "40"
endingLineNumber = "40"
offsetFromSymbolStart = "260">
</Location>
<Location
uuid = "329EF26B-A7BA-4771-A121-BA4060E60201 - 7dd9506ded50816f"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "watchkit_Extension.WorkoutTracking.(handleSendStatisticsData in _D3E6F9F3FAAAA099E0A09AA45CD92075)(__C.HKStatistics) -&gt; ()"
moduleName = "watchkit Extension"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/cagnulein/qdomyos-zwift/build-qdomyos-zwift-Qt_5_15_2_for_iOS-Debug/watchkit%20Extension/WatchWorkoutTracking.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "40"
endingLineNumber = "40"
offsetFromSymbolStart = "321">
</Location>
<Location
uuid = "329EF26B-A7BA-4771-A121-BA4060E60201 - 7dd9506ded50816f"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "watchkit_Extension.WorkoutTracking.(handleSendStatisticsData in _D3E6F9F3FAAAA099E0A09AA45CD92075)(__C.HKStatistics) -&gt; ()"
moduleName = "watchkit Extension"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/cagnulein/qdomyos-zwift/build-qdomyos-zwift-Qt_5_15_2_for_iOS-Debug/watchkit%20Extension/WatchWorkoutTracking.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "40"
endingLineNumber = "40"
offsetFromSymbolStart = "1477">
</Location>
</Locations>
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "0F197A10-7E1F-458D-9DC1-A0B21E9F6E8A"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "48"
endingLineNumber = "48"
landmarkName = "BLEPeripheralManager"
landmarkType = "3">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "16D24B27-D0FB-4EC3-BAE8-56101FE7949B"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "57"
endingLineNumber = "57"
landmarkName = "BLEPeripheralManager"
landmarkType = "3">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "6073E105-CED1-4C4B-B002-D650F7F70E32"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "78"
endingLineNumber = "78"
landmarkName = "peripheralManagerDidUpdateState(_:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "AB0DB5FF-979B-4DC7-A83B-AE2053909675"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "101"
endingLineNumber = "101"
landmarkName = "peripheralManagerDidUpdateState(_:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "45607ECF-89AE-45D1-B0FD-CE94793C160D"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "92"
endingLineNumber = "92"
landmarkName = "peripheralManagerDidUpdateState(_:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "167ADF3B-EFCD-475C-9373-8CE22DDE0BDA"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "110"
endingLineNumber = "110"
landmarkName = "peripheralManagerDidUpdateState(_:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "0264A627-97AD-4A72-83E4-AD224F128C57"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "114"
endingLineNumber = "114"
landmarkName = "peripheralManagerDidUpdateState(_:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "98E0B050-6B1A-452C-B36D-FF3B539B1DD6"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "119"
endingLineNumber = "119"
landmarkName = "peripheralManagerDidUpdateState(_:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "A080A38F-4140-4C2A-A0CF-9DD6BB41CBBA"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "123"
endingLineNumber = "123"
landmarkName = "peripheralManagerDidUpdateState(_:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "7067E1E1-E0C5-43B9-B9A6-0654990324F3"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "130"
endingLineNumber = "130"
landmarkName = "peripheralManager(_:didAdd:error:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "4503166F-EDC7-4ED3-AC2F-584ADF0E3FA5"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/lockscreen.mm"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "38"
endingLineNumber = "38"
landmarkName = "lockscreen::virtualbike_setHeartRate(heartRate)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "FE5697FF-F44C-43C2-A98D-C400EE56F047"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/lockscreen.mm"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "44"
endingLineNumber = "44"
landmarkName = "lockscreen::virtualbike_setCadence(crankRevolutions, lastCrankEventTime)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "E8938847-29A7-4789-B7F5-B65386A6C6A0"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/lockscreen.mm"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "37"
endingLineNumber = "37"
landmarkName = "lockscreen::virtualbike_setHeartRate(heartRate)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "3DBE0495-050A-4979-85D4-28B78676F212"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/lockscreen.mm"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "43"
endingLineNumber = "43"
landmarkName = "lockscreen::virtualbike_setCadence(crankRevolutions, lastCrankEventTime)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "F3A2C1ED-B1A6-4772-913E-09143C997B67"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/lockscreen.mm"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "32"
endingLineNumber = "32"
landmarkName = "lockscreen::virtualbike_ios()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "18F27065-9FB2-44A2-99D0-7D41061141A3"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "35"
endingLineNumber = "35"
landmarkName = "updateHeartRate(HeartRate:)"
landmarkType = "7">
<Locations>
<Location
uuid = "18F27065-9FB2-44A2-99D0-7D41061141A3 - 7d1f106582667437"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "qdomyoszwift.virtualbike_ios_swift.updateHeartRate(HeartRate: Swift.UInt8) -&gt; ()"
moduleName = "qdomyoszwift"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/cagnulein/qdomyos-zwift/src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "35"
endingLineNumber = "35"
offsetFromSymbolStart = "22">
</Location>
<Location
uuid = "18F27065-9FB2-44A2-99D0-7D41061141A3 - 4daffae51fb2d733"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "@objc qdomyoszwift.virtualbike_ios_swift.updateHeartRate(HeartRate: Swift.UInt8) -&gt; ()"
moduleName = "qdomyoszwift"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/cagnulein/qdomyos-zwift/src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "35"
endingLineNumber = "35"
offsetFromSymbolStart = "28">
</Location>
</Locations>
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "1BED435D-636C-4FD8-9F5E-AB4351DAEC8F"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "40"
endingLineNumber = "40"
landmarkName = "updateCadence(CrankRevolutions:LastCrankEventTime:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "AD1E4F54-E0A3-464A-A052-1102A8B5B78B"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "178"
endingLineNumber = "178"
landmarkName = "startSendingDataToSubscribers()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "F9205200-7498-4DFA-8FBC-5FC639A5CFB2"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/main.cpp"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "298"
endingLineNumber = "298"
landmarkName = "main(argc, argv)"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "C5748784-E678-46D9-B468-4FF24FC6C730"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "203"
endingLineNumber = "203"
landmarkName = "updateSubscribers()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "5A7118FF-F9B1-415F-974F-695C9F9913ED"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "188"
endingLineNumber = "188"
landmarkName = "calculateHeartRate()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "98876BA3-9A90-4900-B574-32EB7D5E72CE"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "197"
endingLineNumber = "197"
landmarkName = "calculateCadence()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "48566803-1327-43D7-9C71-F2DAAC4785FA"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "196"
endingLineNumber = "196"
landmarkName = "calculateCadence()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "468E0408-A96A-4030-BFEE-D78B82F16296"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "13"
endingLineNumber = "13"
landmarkName = "unknown"
landmarkType = "0">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "DEB74A74-1486-45AC-83DD-258153AFE711"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "179"
endingLineNumber = "179"
landmarkName = "startSendingDataToSubscribers()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "C594A173-6845-4E66-8F36-DD7CD3689752"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/ios/BLEPeripheralManager.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "68"
endingLineNumber = "68"
landmarkName = "init()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "6CCF9CEA-E010-4E21-8D36-DB6058B91998"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "../src/main.cpp"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "299"
endingLineNumber = "299"
landmarkName = "main(argc, argv)"
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>

View File

@@ -0,0 +1,28 @@
{
"images" : [
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : "<=145"
},
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">161"
},
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">145"
},
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">183"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,53 @@
{
"assets" : [
{
"filename" : "Circular.imageset",
"idiom" : "watch",
"role" : "circular"
},
{
"filename" : "Extra Large.imageset",
"idiom" : "watch",
"role" : "extra-large"
},
{
"filename" : "Graphic Bezel.imageset",
"idiom" : "watch",
"role" : "graphic-bezel"
},
{
"filename" : "Graphic Circular.imageset",
"idiom" : "watch",
"role" : "graphic-circular"
},
{
"filename" : "Graphic Corner.imageset",
"idiom" : "watch",
"role" : "graphic-corner"
},
{
"filename" : "Graphic Extra Large.imageset",
"idiom" : "watch",
"role" : "graphic-extra-large"
},
{
"filename" : "Graphic Large Rectangular.imageset",
"idiom" : "watch",
"role" : "graphic-large-rectangular"
},
{
"filename" : "Modular.imageset",
"idiom" : "watch",
"role" : "modular"
},
{
"filename" : "Utilitarian.imageset",
"idiom" : "watch",
"role" : "utilitarian"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,28 @@
{
"images" : [
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : "<=145"
},
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">161"
},
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">145"
},
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">183"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,18 @@
{
"images" : [
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">161"
},
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">183"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,18 @@
{
"images" : [
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">161"
},
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">183"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,18 @@
{
"images" : [
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">161"
},
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">183"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,28 @@
{
"images" : [
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : "<=145"
},
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">161"
},
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">145"
},
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">183"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,18 @@
{
"images" : [
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">161"
},
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">183"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,28 @@
{
"images" : [
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : "<=145"
},
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">161"
},
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">145"
},
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">183"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,28 @@
{
"images" : [
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : "<=145"
},
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">161"
},
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">145"
},
{
"idiom" : "watch",
"scale" : "2x",
"screen-width" : ">183"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,56 @@
//
// ComplicationController.swift
// ElecDemo WatchKit Extension
//
// Created by NhatHM on 8/9/19.
// Copyright © 2019 GST.PID. All rights reserved.
//
import ClockKit
class ComplicationController: NSObject, CLKComplicationDataSource {
// MARK: - Timeline Configuration
func getSupportedTimeTravelDirections(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimeTravelDirections) -> Void) {
handler([.forward, .backward])
}
func getTimelineStartDate(for complication: CLKComplication, withHandler handler: @escaping (Date?) -> Void) {
handler(nil)
}
func getTimelineEndDate(for complication: CLKComplication, withHandler handler: @escaping (Date?) -> Void) {
handler(nil)
}
func getPrivacyBehavior(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationPrivacyBehavior) -> Void) {
handler(.showOnLockScreen)
}
// MARK: - Timeline Population
func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void) {
// Call the handler with the current timeline entry
handler(nil)
}
func getTimelineEntries(for complication: CLKComplication, before date: Date, limit: Int, withHandler handler: @escaping ([CLKComplicationTimelineEntry]?) -> Void) {
// Call the handler with the timeline entries prior to the given date
handler(nil)
}
func getTimelineEntries(for complication: CLKComplication, after date: Date, limit: Int, withHandler handler: @escaping ([CLKComplicationTimelineEntry]?) -> Void) {
// Call the handler with the timeline entries after to the given date
handler(nil)
}
// MARK: - Placeholder Templates
func getLocalizableSampleTemplate(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTemplate?) -> Void) {
// This method will be called once per supported complication, and the results will be cached
handler(nil)
}
}

View File

@@ -0,0 +1,56 @@
//
// ExtensionDelegate.swift
// ElecDemo WatchKit Extension
//
// Created by NhatHM on 8/9/19.
// Copyright © 2019 GST.PID. All rights reserved.
//
import WatchKit
class ExtensionDelegate: NSObject, WKExtensionDelegate {
func applicationDidFinishLaunching() {
// Perform any final initialization of your application.
}
func applicationDidBecomeActive() {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}
func applicationWillResignActive() {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, etc.
}
func handle(_ backgroundTasks: Set<WKRefreshBackgroundTask>) {
// Sent when the system needs to launch the application in the background to process tasks. Tasks arrive in a set, so loop through and process each one.
for task in backgroundTasks {
// Use a switch statement to check the task type
switch task {
case let backgroundTask as WKApplicationRefreshBackgroundTask:
// Be sure to complete the background task once youre done.
backgroundTask.setTaskCompletedWithSnapshot(false)
case let snapshotTask as WKSnapshotRefreshBackgroundTask:
// Snapshot tasks have a unique completion call, make sure to set your expiration date
snapshotTask.setTaskCompleted(restoredDefaultState: true, estimatedSnapshotExpiration: Date.distantFuture, userInfo: nil)
case let connectivityTask as WKWatchConnectivityRefreshBackgroundTask:
// Be sure to complete the connectivity task once youre done.
connectivityTask.setTaskCompletedWithSnapshot(false)
case let urlSessionTask as WKURLSessionRefreshBackgroundTask:
// Be sure to complete the URL session task once youre done.
urlSessionTask.setTaskCompletedWithSnapshot(false)
case let relevantShortcutTask as WKRelevantShortcutRefreshBackgroundTask:
// Be sure to complete the relevant-shortcut task once you're done.
relevantShortcutTask.setTaskCompletedWithSnapshot(false)
case let intentDidRunTask as WKIntentDidRunRefreshBackgroundTask:
// Be sure to complete the intent-did-run task once you're done.
intentDidRunTask.setTaskCompletedWithSnapshot(false)
default:
// make sure to complete unhandled task types
task.setTaskCompletedWithSnapshot(false)
}
}
}
}

View File

@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>watchkit Extension</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>CLKComplicationPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).ComplicationController</string>
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>WKAppBundleIdentifier</key>
<string>org.cagnulein.qdomyoszwift.watchkitapp</string>
</dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.watchkit</string>
</dict>
<key>NSHealthShareUsageDescription</key>
<string>access to heartbeat in order to show it in the application</string>
<key>NSHealthUpdateUsageDescription</key>
<string>access to heartbeat in order to show it in the application</string>
<key>UIBackgroundModes</key>
<array/>
<key>WKBackgroundModes</key>
<array>
<string>self-care</string>
<string>workout-processing</string>
</array>
</dict>
</plist>

View File

@@ -0,0 +1,70 @@
//
// MainController.swift
// ElecDemo WatchKit Extension
//
// Created by NhatHM on 8/12/19.
// Copyright © 2019 GST.PID. All rights reserved.
//
import WatchKit
import HealthKit
class MainController: WKInterfaceController {
@IBOutlet weak var userNameLabel: WKInterfaceLabel!
@IBOutlet weak var stepCountsLabel: WKInterfaceLabel!
@IBOutlet weak var heartRateLabel: WKInterfaceLabel!
override func awake(withContext context: Any?) {
super.awake(withContext: context)
// Configure interface objects here.
print("AWAKE")
WorkoutTracking.authorizeHealthKit()
WorkoutTracking.shared.startWorkOut()
WorkoutTracking.shared.delegate = self
WatchKitConnection.shared.delegate = self
WatchKitConnection.shared.startSession()
}
override func willActivate() {
// This method is called when watch view controller is about to be visible to user
super.willActivate()
print("WILL ACTIVE")
WorkoutTracking.shared.fetchStepCounts()
}
override func didDeactivate() {
// This method is called when watch view controller is no longer visible
super.didDeactivate()
print("DID DEACTIVE")
}
}
extension MainController {
@IBAction func startWorkout() {
WorkoutTracking.shared.startWorkOut()
}
@IBAction func stopWorkout() {
WorkoutTracking.shared.stopWorkOut()
}
}
extension MainController: WorkoutTrackingDelegate {
func didReceiveHealthKitHeartRate(_ heartRate: Double) {
heartRateLabel.setText("\(heartRate) BPM")
WatchKitConnection.shared.sendMessage(message: ["heartRate":
"\(heartRate)" as AnyObject])
}
func didReceiveHealthKitStepCounts(_ stepCounts: Double) {
stepCountsLabel.setText("\(stepCounts) STEPS")
}
}
extension MainController: WatchKitConnectionDelegate {
func didReceiveUserName(_ userName: String) {
userNameLabel.setText(userName)
}
}

View File

@@ -0,0 +1,38 @@
//
// NotificationController.swift
// ElecDemo WatchKit Extension
//
// Created by NhatHM on 8/9/19.
// Copyright © 2019 GST.PID. All rights reserved.
//
import WatchKit
import Foundation
import UserNotifications
class NotificationController: WKUserNotificationInterfaceController {
override init() {
// Initialize variables here.
super.init()
// Configure interface objects here.
}
override func willActivate() {
// This method is called when watch view controller is about to be visible to user
super.willActivate()
}
override func didDeactivate() {
// This method is called when watch view controller is no longer visible
super.didDeactivate()
}
override func didReceive(_ notification: UNNotification) {
// This method is called when a notification needs to be presented.
// Implement it if you use a dynamic notification interface.
// Populate your dynamic notification interface as quickly as possible.
}
}

View File

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,20 @@
{
"aps": {
"alert": {
"body": "Test message",
"title": "Optional title",
"subtitle": "Optional subtitle"
},
"category": "myCategory",
"thread-id": "5280"
},
"WatchKit Simulator Actions": [
{
"title": "First Button",
"identifier": "firstButtonAction"
}
],
"customKey": "Use this file to define a testing payload for your notifications. The aps dictionary specifies the category, alert text and title. The WatchKit Simulator Actions array can provide info for one or more action buttons in addition to the standard Dismiss button. Any other top level keys are custom payload. If you have multiple such JSON files in your project, you'll be able to select them when choosing to debug the notification interface of your Watch App."
}

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.healthkit</key>
<true/>
</dict>
</plist>

View File

@@ -0,0 +1,80 @@
//
// WatchKitConnection.swift
// ElecDemo
//
// Created by NhatHM on 8/12/19.
// Copyright © 2019 GST.PID. All rights reserved.
//
import Foundation
import WatchConnectivity
protocol WatchKitConnectionDelegate: class {
func didReceiveUserName(_ userName: String)
}
protocol WatchKitConnectionProtocol {
func startSession()
func sendMessage(message: [String : AnyObject], replyHandler: (([String : AnyObject]) -> Void)?, errorHandler: ((NSError) -> Void)?)
}
class WatchKitConnection: NSObject {
static let shared = WatchKitConnection()
weak var delegate: WatchKitConnectionDelegate?
private override init() {
super.init()
}
private let session: WCSession? = WCSession.isSupported() ? WCSession.default : nil
private var validSession: WCSession? {
#if os(iOS)
if let session = session, session.isPaired, session.isWatchAppInstalled {
return session
}
#elseif os(watchOS)
return session
#endif
}
private var validReachableSession: WCSession? {
if let session = validSession, session.isReachable {
return session
}
return nil
}
}
extension WatchKitConnection: WatchKitConnectionProtocol {
func startSession() {
session?.delegate = self
session?.activate()
}
func sendMessage(message: [String : AnyObject],
replyHandler: (([String : AnyObject]) -> Void)? = nil,
errorHandler: ((NSError) -> Void)? = nil)
{
validReachableSession?.sendMessage(message, replyHandler: { (result) in
print(result)
}, errorHandler: { (error) in
print(error)
})
}
}
extension WatchKitConnection: WCSessionDelegate {
func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
print("activationDidCompleteWith")
}
func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) {
guard let userName = message.values.first as? String else {
return
}
delegate?.didReceiveUserName(userName)
}
}

View File

@@ -0,0 +1,199 @@
//
// 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) {
}
}

View File

@@ -0,0 +1,22 @@
//
// qdomyoszwiftApp.swift
// watchkit Extension
//
// Created by Roberto Viola on 24/12/2020.
//
import SwiftUI
/*
@main
struct qdomyoszwiftApp: App {
@SceneBuilder var body: some Scene {
WindowGroup {
NavigationView {
ContentView()
}
}
WKNotificationScene(controller: NotificationController.self, category: "myCategory")
}
}
*/

View File

@@ -0,0 +1,4 @@
//
// Use this file to import your target's public headers that you would like to expose to Swift.
//

View File

@@ -0,0 +1,11 @@
{
"colors" : [
{
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,81 @@
{
"images" : [
{
"idiom" : "watch",
"role" : "notificationCenter",
"scale" : "2x",
"size" : "24x24",
"subtype" : "38mm"
},
{
"idiom" : "watch",
"role" : "notificationCenter",
"scale" : "2x",
"size" : "27.5x27.5",
"subtype" : "42mm"
},
{
"idiom" : "watch",
"role" : "companionSettings",
"scale" : "2x",
"size" : "29x29"
},
{
"idiom" : "watch",
"role" : "companionSettings",
"scale" : "3x",
"size" : "29x29"
},
{
"idiom" : "watch",
"role" : "appLauncher",
"scale" : "2x",
"size" : "40x40",
"subtype" : "38mm"
},
{
"idiom" : "watch",
"role" : "appLauncher",
"scale" : "2x",
"size" : "44x44",
"subtype" : "40mm"
},
{
"idiom" : "watch",
"role" : "appLauncher",
"scale" : "2x",
"size" : "50x50",
"subtype" : "44mm"
},
{
"idiom" : "watch",
"role" : "quickLook",
"scale" : "2x",
"size" : "86x86",
"subtype" : "38mm"
},
{
"idiom" : "watch",
"role" : "quickLook",
"scale" : "2x",
"size" : "98x98",
"subtype" : "42mm"
},
{
"idiom" : "watch",
"role" : "quickLook",
"scale" : "2x",
"size" : "108x108",
"subtype" : "44mm"
},
{
"idiom" : "watch-marketing",
"scale" : "1x",
"size" : "1024x1024"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,200 @@
{
"images" : [
{
"filename" : "Icon-App-20x20@2x.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "20x20"
},
{
"filename" : "Icon-App-20x20@3x.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "20x20"
},
{
"filename" : "Icon-App-29x29@2x.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "29x29"
},
{
"filename" : "Icon-App-29x29@3x.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "29x29"
},
{
"filename" : "Icon-App-40x40@2x.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "40x40"
},
{
"filename" : "Icon-App-40x40@3x.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "40x40"
},
{
"filename" : "Icon-App-60x60@2x.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "60x60"
},
{
"filename" : "Icon-App-60x60@3x.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "60x60"
},
{
"filename" : "Icon-App-20x20@1x.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "20x20"
},
{
"filename" : "Icon-App-20x20@2x-1.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "20x20"
},
{
"filename" : "Icon-App-29x29@1x.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "29x29"
},
{
"filename" : "Icon-App-29x29@2x-1.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "29x29"
},
{
"filename" : "Icon-App-40x40@1x.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "40x40"
},
{
"filename" : "Icon-App-40x40@2x-1.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "40x40"
},
{
"filename" : "Icon-App-76x76@1x.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "76x76"
},
{
"filename" : "Icon-App-76x76@2x.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "76x76"
},
{
"filename" : "Icon-App-83.5x83.5@2x.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "83.5x83.5"
},
{
"filename" : "ItunesArtwork@2x.png",
"idiom" : "ios-marketing",
"scale" : "1x",
"size" : "1024x1024"
},
{
"filename" : "48.png",
"idiom" : "watch",
"role" : "notificationCenter",
"scale" : "2x",
"size" : "24x24",
"subtype" : "38mm"
},
{
"filename" : "55.png",
"idiom" : "watch",
"role" : "notificationCenter",
"scale" : "2x",
"size" : "27.5x27.5",
"subtype" : "42mm"
},
{
"filename" : "58.png",
"idiom" : "watch",
"role" : "companionSettings",
"scale" : "2x",
"size" : "29x29"
},
{
"filename" : "87.png",
"idiom" : "watch",
"role" : "companionSettings",
"scale" : "3x",
"size" : "29x29"
},
{
"filename" : "80.png",
"idiom" : "watch",
"role" : "appLauncher",
"scale" : "2x",
"size" : "40x40",
"subtype" : "38mm"
},
{
"filename" : "88.png",
"idiom" : "watch",
"role" : "appLauncher",
"scale" : "2x",
"size" : "44x44",
"subtype" : "40mm"
},
{
"filename" : "Icon100.png",
"idiom" : "watch",
"role" : "appLauncher",
"scale" : "2x",
"size" : "50x50",
"subtype" : "44mm"
},
{
"filename" : "172.png",
"idiom" : "watch",
"role" : "quickLook",
"scale" : "2x",
"size" : "86x86",
"subtype" : "38mm"
},
{
"filename" : "196.png",
"idiom" : "watch",
"role" : "quickLook",
"scale" : "2x",
"size" : "98x98",
"subtype" : "42mm"
},
{
"filename" : "216.png",
"idiom" : "watch",
"role" : "quickLook",
"scale" : "2x",
"size" : "108x108",
"subtype" : "44mm"
},
{
"filename" : "Icon1024.png",
"idiom" : "watch-marketing",
"scale" : "1x",
"size" : "1024x1024"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 990 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

View File

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>qdomyoszwift</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
</array>
<key>WKCompanionAppBundleIdentifier</key>
<string>org.cagnulein.qdomyoszwift</string>
<key>WKWatchKitApp</key>
<true/>
</dict>
</plist>

View File

@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder.WatchKit.Storyboard" version="3.0" toolsVersion="17506" targetRuntime="watchKit" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="Tpn-rd-UUX">
<device id="watch38"/>
<dependencies>
<deployment identifier="watchOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17505"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBWatchKitPlugin" version="17500"/>
</dependencies>
<scenes>
<!--Main-->
<scene sceneID="2gh-qF-IkA">
<objects>
<controller identifier="Main" hidesWhenLoading="NO" id="Tpn-rd-UUX" customClass="MainController" customModule="watchkit_Extension">
<items>
<label width="136" alignment="left" text="qdomyos-zwift" textAlignment="center" id="SlU-M7-WGB"/>
<label width="136" alignment="left" text="Heart Rate" id="Nda-m1-XRw"/>
<label width="136" alignment="left" text="Step Counts" id="HpA-e9-6YV"/>
<button width="1" alignment="left" title="Start" id="vZg-X8-uY5">
<connections>
<action selector="startWorkout" destination="Tpn-rd-UUX" id="UaW-pR-tn6"/>
</connections>
</button>
<button width="1" alignment="left" title="Stop" id="mVg-K9-PI9">
<connections>
<action selector="stopWorkout" destination="Tpn-rd-UUX" id="Jy7-gN-USZ"/>
</connections>
</button>
</items>
<connections>
<outlet property="heartRateLabel" destination="Nda-m1-XRw" id="1la-8R-3jG"/>
<outlet property="stepCountsLabel" destination="HpA-e9-6YV" id="Z88-ej-6oG"/>
<outlet property="userNameLabel" destination="SlU-M7-WGB" id="Y2O-Lg-bDx"/>
</connections>
</controller>
</objects>
<point key="canvasLocation" x="220" y="345"/>
</scene>
<!--Static Notification Interface Controller-->
<scene sceneID="AEw-b0-oYE">
<objects>
<notificationController id="YCC-NB-fut">
<items>
<label alignment="left" text="Alert Label" numberOfLines="0" id="IdU-wH-bcW"/>
</items>
<notificationCategory key="notificationCategory" identifier="myCategory" id="JfB-70-Muf"/>
<connections>
<outlet property="notificationAlertLabel" destination="IdU-wH-bcW" id="JKC-fr-R95"/>
<segue destination="4sK-HA-Art" kind="relationship" relationship="dynamicNotificationInterface" id="kXh-Jw-8B1"/>
<segue destination="eXb-UN-Cd0" kind="relationship" relationship="dynamicInteractiveNotificationInterface" id="mpB-YA-K8N"/>
</connections>
</notificationController>
</objects>
<point key="canvasLocation" x="220" y="643"/>
</scene>
<!--Notification Controller-->
<scene sceneID="ZPc-GJ-vnh">
<objects>
<controller id="4sK-HA-Art" customClass="NotificationController" customModule="watchkit" customModuleProvider="target"/>
</objects>
<point key="canvasLocation" x="468" y="643"/>
</scene>
<!--Notification Controller-->
<scene sceneID="Niz-AI-uX2">
<objects>
<controller id="eXb-UN-Cd0" customClass="NotificationController" customModule="watchkit" customModuleProvider="target"/>
</objects>
<point key="canvasLocation" x="468" y="345"/>
</scene>
</scenes>
</document>

BIN
docs/app_store.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

BIN
docs/google_play.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--Copyright 2011 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="CSC Measurement" type="org.bluetooth.characteristic.csc_measurement" uuid="2A5B" last-modified="2012-04-12" approved="Yes">
<InformativeText>
<Summary>
The CSC Measurement characteristic (CSC refers to Cycling Speed and Cadence) is a variable length structure containing a Flags field and, based on the contents of the Flags field, may contain one or more additional fields as shown in the tables below.
</Summary>
</InformativeText>
<Value>
<Field name="Flags">
<InformativeText>These flags define which data fields are present in the Characteristic value.</InformativeText>
<Requirement>Mandatory</Requirement>
<Format>8bit</Format>
<BitField>
<Bit index="0" size="1" name="Wheel Revolution Data Present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C1" />
</Enumerations>
</Bit>
<Bit index="1" size="1" name="Crank Revolution Data Present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C2" />
</Enumerations>
</Bit>
<ReservedForFutureUse index="2" size="6" />
</BitField>
</Field>
<Field name="Cumulative Wheel Revolutions">
<InformativeText>
C1: Field exists if the key of bit 0 of the Flags field is set to 1.
</InformativeText>
<Requirement>C1</Requirement>
<Format>uint32</Format>
<Unit>org.bluetooth.unit.unitless</Unit>
</Field>
<Field name="Last Wheel Event Time">
<InformativeText>
Unit has a resolution of 1/1024s.
<br>C1: Field exists if the key of bit 0 of the Flags field is set to 1.</br>
</InformativeText>
<Requirement>C1</Requirement>
<Format>uint16</Format>
<Unit>org.bluetooth.unit.time.second</Unit>
<BinaryExponent>-10</BinaryExponent>
</Field>
<Field name="Cumulative Crank Revolutions">
<InformativeText>
C2: Field exists if the key of bit 1 of the Flags field is set to 1.
</InformativeText>
<Requirement>C2</Requirement>
<Format>uint16</Format>
<Unit>org.bluetooth.unit.unitless</Unit>
</Field>
<Field name="Last Crank Event Time">
<InformativeText>C2: Field exists if the key of bit 1 of the Flags field is set to 1.
<br>Unit has a resolution of 1/1024s.</br>
</InformativeText>
<Requirement>C2</Requirement>
<Format>uint16</Format>
<Unit>org.bluetooth.unit.time.second</Unit>
<BinaryExponent>-10</BinaryExponent>
</Field>
</Value>
<Note>
The fields in the above table are in the order of LSO to MSO. Where LSO = Least Significant Octet and MSO = Most Significant Octet.
</Note>
</Characteristic>

View File

@@ -1,14 +1,8 @@
<?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="Indoor Bike Data"
type="org.bluetooth.characteristic.indoor_bike_data" uuid="2AD2"
last-modified="2017-02-14" approved="Yes">
<Characteristic xsi:noNamespaceSchemaLocation="http://schemas.bluetooth.org/Documents/characteristic.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Indoor Bike Data" type="org.bluetooth.characteristic.indoor_bike_data" uuid="2AD2" last-modified="2017-02-14" approved="Yes">
<InformativeText>
<Summary>The Indoor Bike Data characteristic is used to send
training-related data to the Client from an indoor bike
(Server).</Summary>
<Summary>The Indoor Bike Data characteristic is used to send training-related data to the Client from an indoor bike (Server).</Summary>
</InformativeText>
<Value>
<Field name="Flags">
@@ -17,203 +11,200 @@ last-modified="2017-02-14" approved="Yes">
<BitField>
<Bit index="0" size="1" name="More Data">
<Enumerations>
<Enumeration key="0" value="False" requires="C1" />
<Enumeration key="0" value="False" requires="C1"/>
<Enumeration key="1" value="True" />
</Enumerations>
</Bit>
<Bit index="1" size="1"
name="Instantaneous Cadence present">
<Bit index="1" size="1" name="Average Speed present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C2" />
<Enumeration key="1" value="True" requires="C2" />
</Enumerations>
</Bit>
<Bit index="2" size="1" name="Average Speed present">
<Bit index="2" size="1" name="Instantaneous Cadence present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C3" />
<Enumeration key="1" value="True" requires="C3"/>
</Enumerations>
</Bit>
<Bit index="3" size="1" name="Average Candence present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C4" />
<Enumeration key="1" value="True" requires="C4" />
</Enumerations>
</Bit>
<Bit index="4" size="1" name="Total Distance Present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C5" />
<Enumeration key="1" value="True" requires="C5" />
</Enumerations>
</Bit>
<Bit index="5" size="1" name="Resistance Level present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C6" />
<Enumeration key="1" value="True" requires="C6" />
</Enumerations>
</Bit>
<Bit index="6" size="1" name="Instantaneous Power present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C7" />
<Enumeration key="1" value="True" requires="C7" />
</Enumerations>
</Bit>
<Bit index="7" size="1" name="Average Power present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C8" />
<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" />
<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" />
<Enumeration key="1" value="True" requires="C10" />
</Enumerations>
</Bit>
<Bit index="10" size="1"
name="Metabolic Equivalent present">
<Bit index="10" size="1" name="Metabolic Equivalent present">
<Enumerations>
<Enumeration key="0" value="False" />
<Enumeration key="1" value="True" requires="C11" />
<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" />
<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" />
<Enumeration key="1" value="True" requires="C13" />
</Enumerations>
</Bit>
<ReservedForFutureUse index="13" size="3" />
</BitField>
</Field>
<Field name="Instantaneous Speed">
<InformativeText>Kilometer per hour with a resolution of
0.01</InformativeText>
<InformativeText>Kilometer per hour with a resolution of 0.01</InformativeText>
<Requirement>C1</Requirement>
<Format>uint16</Format>
<DecimalExponent>-2</DecimalExponent>
<Unit>org.bluetooth.unit.velocity.kilometre_per_hour</Unit>
</Field>
<Field name="Average Speed">
<InformativeText>Kilometer per hour with a resolution of
0.01</InformativeText>
<InformativeText>Kilometer per hour with a resolution of 0.01</InformativeText>
<Requirement>C2</Requirement>
<Format>uint16</Format>
<DecimalExponent>-2</DecimalExponent>
<Unit>org.bluetooth.unit.velocity.kilometre_per_hour</Unit>
</Field>
<Field name="Instantaneous Cadence">
<InformativeText>1/minute with a resolution of
0.5</InformativeText>
<InformativeText>1/minute with a resolution of 0.5</InformativeText>
<Requirement>C3</Requirement>
<BinaryExponent>-1</BinaryExponent>
<Format>uint16</Format>
<Unit>
org.bluetooth.unit.angular_velocity.revolution_per_minute</Unit>
<Unit>org.bluetooth.unit.angular_velocity.revolution_per_minute</Unit>
</Field>
<Field name="Average Cadence">
<InformativeText>1/minute with a resolution of
0.5</InformativeText>
<InformativeText>1/minute with a resolution of 0.5</InformativeText>
<Requirement>C4</Requirement>
<BinaryExponent>-1</BinaryExponent>
<Format>uint16</Format>
<Unit>
org.bluetooth.unit.angular_velocity.revolution_per_minute</Unit>
<Unit>org.bluetooth.unit.angular_velocity.revolution_per_minute</Unit>
</Field>
<Field name="Total Distance">
<InformativeText>Meters with a resolution of
1</InformativeText>
<InformativeText>Meters with a resolution of 1</InformativeText>
<Requirement>C5</Requirement>
<Format>uint24</Format>
<Unit>org.bluetooth.unit.length.metre</Unit>
</Field>
<Field name="Resistance Level">
<InformativeText>Unitless with a resolution of
1</InformativeText>
<InformativeText>Unitless with a resolution of 1</InformativeText>
<Requirement>C6</Requirement>
<Format>sint16</Format>
<Unit>org.bluetooth.unit.unitless</Unit>
</Field>
<Field name="Instantaneous Power">
<InformativeText>Watts with a resolution of
1</InformativeText>
<InformativeText>Watts with a resolution of 1</InformativeText>
<Requirement>C7</Requirement>
<Format>sint16</Format>
<Unit>org.bluetooth.unit.power.watt</Unit>
</Field>
<Field name="Average Power">
<InformativeText>Watts with a resolution of
1</InformativeText>
<InformativeText>Watts with a resolution of 1</InformativeText>
<Requirement>C8</Requirement>
<Format>sint16</Format>
<Unit>org.bluetooth.unit.power.watt</Unit>
</Field>
</Field>
<Field name="Total Energy">
<InformativeText>Kilo Calorie with a resolution of
1</InformativeText>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>

View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2011 Bluetooth SIG, Inc. All rights reserved. -->
<Service xsi:noNamespaceSchemaLocation="http://schemas.bluetooth.org/Documents/service.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Cycling Speed and Cadence" type="org.bluetooth.service.cycling_speed_and_cadence" uuid="1816" last-modified="2012-04-05" approved="Yes">
<InformativeText>
<Abstract>
This service exposes speed-related and cadence-related data from a Cycling Speed and Cadence sensor intended for fitness applications.
</Abstract>
<Summary>
The Cycling Speed and Cadence (CSC) Service exposes speed-related data and/or cadence-related data while using the Cycling Speed and Cadence sensor (Server).
</Summary>
</InformativeText>
<Dependencies>
<Dependency>This service is not dependent upon any other services.</Dependency>
</Dependencies>
<GATTRequirements>
<Requirement subProcedure="Write Characteristic Values">C1</Requirement>
<Requirement subProcedure="Notifications">Mandatory</Requirement>
<Requirement subProcedure="Indications">C1</Requirement>
<Requirement subProcedure="Read Characteristic Descriptors">Mandatory</Requirement>
<Requirement subProcedure="Write Characteristic Descriptors">Mandatory</Requirement>
</GATTRequirements>
<Note>C1: Mandatory if the SC Control Point characteristic is supported, otherwise excluded for this service.</Note>
<Transports>
<Classic>true</Classic>
<LowEnergy>true</LowEnergy>
</Transports>
<ErrorCodes>
<ErrorCode name="Procedure Already in Progress" code="0x80">A SC Control Point request cannot be serviced because a previously triggered SC Control Point operation is still in progress.</ErrorCode>
<ErrorCode name="Client Characteristic Configuration descriptor improperly configured" code="0x81">The Client Characteristic Configuration descriptor is not configured according to the requirements of the service.</ErrorCode>
</ErrorCodes>
<Characteristics>
<Characteristic name="CSC Measurement" type="org.bluetooth.characteristic.csc_measurement">
<InformativeText>
The CSC Measurement characteristic is used to send speed-related data and/or cadence-related data.
</InformativeText>
<Requirement>Mandatory</Requirement>
<Properties>
<Read>Excluded</Read>
<Write>Excluded</Write>
<WriteWithoutResponse>Excluded</WriteWithoutResponse>
<SignedWrite>Excluded</SignedWrite>
<ReliableWrite>Excluded</ReliableWrite>
<Notify>Mandatory</Notify>
<Indicate>Excluded</Indicate>
<WritableAuxiliaries>Excluded</WritableAuxiliaries>
<Broadcast>Excluded</Broadcast>
</Properties>
<Descriptors>
<Descriptor name="Client Characteristic Configuration" type="org.bluetooth.descriptor.gatt.client_characteristic_configuration">
<Requirement>Mandatory</Requirement>
<Properties>
<Read>Mandatory</Read>
<Write>Mandatory</Write>
</Properties>
</Descriptor>
</Descriptors>
</Characteristic>
<Characteristic name="CSC Feature" type="org.bluetooth.characteristic.csc_feature">
<InformativeText>
The CSC Feature characteristic is used to describe the supported features of the Server. Reserved for Future Use (RFU) bits in the CSC Feature characteristic value are set to 0.
</InformativeText>
<Requirement>Mandatory</Requirement>
<Properties>
<Read>Mandatory</Read>
<Write>Excluded</Write>
<WriteWithoutResponse>Excluded</WriteWithoutResponse>
<SignedWrite>Excluded</SignedWrite>
<ReliableWrite>Excluded</ReliableWrite>
<Notify>Excluded</Notify>
<Indicate>Excluded</Indicate>
<WritableAuxiliaries>Excluded</WritableAuxiliaries>
<Broadcast>Excluded</Broadcast>
</Properties>
</Characteristic>
<Characteristic name="Sensor Location" type="org.bluetooth.characteristic.sensor_location">
<InformativeText>
<p>The Sensor Location characteristic of the device is used to describe the physical location of the Server when correctly fitted.</p>
<p><b>C1:</b> Mandatory if the Multiple Sensor Location feature is supported, otherwise optional.</p>
</InformativeText>
<Requirement>C1</Requirement>
<Properties>
<Read>Mandatory</Read>
<Write>Excluded</Write>
<WriteWithoutResponse>Excluded</WriteWithoutResponse>
<SignedWrite>Excluded</SignedWrite>
<ReliableWrite>Excluded</ReliableWrite>
<Notify>Excluded</Notify>
<Indicate>Excluded</Indicate>
<WritableAuxiliaries>Excluded</WritableAuxiliaries>
<Broadcast>Excluded</Broadcast>
</Properties>
</Characteristic>
<Characteristic name="SC Control Point" type="org.bluetooth.characteristic.sc_control_point">
<InformativeText>
<p>If the SC Control Point is supported, profiles utilizing this service are required to ensure that the Client configures the SC Control Point characteristic for indications (i.e. via the Client Characteristic Configuration descriptor) at the first connection.</p>
<p>Support for this characteristic is mandatory if the Server supports Wheel Revolution Data or Multiple Sensor Locations features, otherwise it is excluded.</p>
<p><b>C2:</b> Mandatory if at least one SC Control Point procedure is supported, otherwise excluded.</p>
</InformativeText>
<Requirement>C2</Requirement>
<Properties>
<Read>Excluded</Read>
<Write>Mandatory</Write>
<WriteWithoutResponse>Excluded</WriteWithoutResponse>
<SignedWrite>Excluded</SignedWrite>
<ReliableWrite>Excluded</ReliableWrite>
<Notify>Excluded</Notify>
<Indicate>Mandatory</Indicate>
<WritableAuxiliaries>Excluded</WritableAuxiliaries>
<Broadcast>Excluded</Broadcast>
</Properties>
<Descriptors>
<Descriptor name="Client Characteristic Configuration" type="org.bluetooth.descriptor.gatt.client_characteristic_configuration">
<Requirement>if_characteristic_supported</Requirement>
<Properties>
<Read>Mandatory</Read>
<Write>Mandatory</Write>
</Properties>
</Descriptor>
</Descriptors>
</Characteristic>
</Characteristics>
</Service>

View File

@@ -2,6 +2,7 @@ import QtQuick 2.12
import QtQuick.Controls 2.5
import QtQuick.Controls.Material 2.12
import QtGraphicalEffects 1.12
import QtQuick.Window 2.12
HomeForm{
objectName: "home"
@@ -13,19 +14,25 @@ HomeForm{
start.onClicked: { start_clicked(); }
stop.onClicked: { stop_clicked(); }
Component.onCompleted: { console.log("completed"); }
Component.onCompleted: { console.log("completed"); }
GridView {
anchors.horizontalCenter: parent.horizontalCenter
anchors.fill: parent
cellWidth: 175
cellHeight: 125
cellHeight: 130
focus: true
model: appModel
leftMargin: { (parent.width % 175) / 2; }
anchors.topMargin: 150
leftMargin: { (parent.width % cellWidth) / 2 }
anchors.topMargin: rootItem.topBarHeight + 30
id: gridView
objectName: "gridview"
onMovementEnded: { headerToolbar.visible = (contentY == 0); }
onWidthChanged: gridView.leftMargin = (parent.width % cellWidth) / 2;
Screen.orientationUpdateMask: Qt.LandscapeOrientation | Qt.PortraitOrientation
Screen.onPrimaryOrientationChanged:{
gridView.leftMargin = (parent.width % cellWidth) / 2;
}
// highlight: Rectangle {
// width: 150
@@ -34,24 +41,38 @@ HomeForm{
// }
delegate: Item {
id: id1
width: 175
width: 170
height: 125
visible: visibleItem
Component.onCompleted: console.log("completed " + objectName)
Rectangle {
width: 173
width: 168
height: 123
radius: 3
border.width: 1
border.color: "purple"
color: Material.backgroundColor
id: rect
}
DropShadow {
anchors.fill: rect
cached: true
horizontalOffset: 3
verticalOffset: 3
radius: 8.0
samples: 16
color: Material.color(Material.Purple)
source: rect
}
Image {
id: myIcon
x: 5
anchors {
top: myValue.bottom
bottom: id1.bottom
}
width: 48
height: 48
@@ -60,22 +81,37 @@ HomeForm{
Text {
objectName: "value"
id: myValue
color: Material.textSelectionColor
color: valueFontColor
y: 0
anchors {
horizontalCenter: parent.horizontalCenter
}
text: value
horizontalAlignment: Text.AlignHCenter
font.pointSize: 48
font.pointSize: valueFontSize
font.bold: true
}
Text {
objectName: "secondLine"
id: secondLineText
color: "white"
y: myValue.bottom
anchors {
top: myValue.bottom
horizontalCenter: parent.horizontalCenter
}
text: secondLine
horizontalAlignment: Text.AlignHCenter
font.pointSize: 8
font.bold: false
}
Text {
id: myText
anchors {
top: myIcon.top
}
font.bold: true
font.pointSize: labelFontSize
color: "white"
text: name
anchors.left: parent.left

View File

@@ -14,78 +14,115 @@ Page {
Item {
width: parent.width
height: 120
height: rootItem.topBarHeight
id: topBar
Row {
id: row
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
height: 100
height: topBar.height - 20
spacing: 5
padding: 5
Rectangle {
width: 50
height: 100
height: row.height
color: Material.backgroundColor
Image {
Column {
id: column
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
id: treadmill_connection
width: 48
height: 48
source: "icons/icons/bluetooth-icon.png"
enabled: rootItem.device
smooth: true
}
ColorOverlay {
anchors.fill: treadmill_connection
source: treadmill_connection
color: treadmill_connection.enabled ? "#00000000" : "#B0D3d3d3"
width: parent.width
height: row.height
spacing: 0
padding: 0
Rectangle {
width: 50
height: row.height
color: Material.backgroundColor
Image {
anchors.verticalCenter: parent.verticalCenter
id: treadmill_connection
width: 48
height: row.height - 52
source: "icons/icons/bluetooth-icon.png"
enabled: rootItem.device
smooth: true
}
ColorOverlay {
anchors.fill: treadmill_connection
source: treadmill_connection
color: treadmill_connection.enabled ? "#00000000" : "#B0D3d3d3"
}
}
Image {
anchors.horizontalCenter: parent.horizontalCenter
id: treadmill_signal
width: 24
height: row.height - 76
source: rootItem.signal
smooth: true
}
}
}
Rectangle {
width: 120
height: 100
height: row.height
color: Material.backgroundColor
RoundButton {
icon.source: "icons/icons/start.png"
icon.height: 46
icon.source: rootItem.startIcon
icon.height: row.height - 54
icon.width: 46
text: "Start"
text: rootItem.startText
enabled: true
id: start
width: 120
height: 96
height: row.height - 4
}
ColorOverlay {
anchors.fill: start
source: start
color: rootItem.startColor
enabled: rootItem.startColor === "red" ? true : false
}
}
Rectangle {
width: 120
height: 100
height: row.height
color: Material.backgroundColor
RoundButton {
icon.source: "icons/icons/stop.png"
icon.height: 46
icon.source: rootItem.stopIcon
icon.height: row.height - 54
icon.width: 46
text: "Stop"
text: rootItem.stopText
enabled: true
id: stop
width: 120
height: 96
height: row.height - 4
}
ColorOverlay {
anchors.fill: stop
source: stop
color: rootItem.stopColor
enabled: rootItem.stopColor === "red" ? true : false
}
}
Rectangle {
id: item2
width: 50
height: 100
height: row.height
color: Material.backgroundColor
Image {
anchors.verticalCenter: parent.verticalCenter
id: zwift_connection
width: 48
height: 48
height: row.height - 52
source: "icons/icons/zwift-on.png"
enabled: rootItem.zwift
smooth: true
@@ -106,9 +143,20 @@ Page {
Label {
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
text: rootItem.info
}
}
Label {
id: lblHelp
width: parent.width
anchors.top: row1.bottom
anchors.topMargin: 30
text: "This app should automatically connects to your bike/treadmill. <b>If it doesn't, please check</b>:<br>1) your Echelon/Domyos App MUST be closed while qdomyos-zwift is running;<br>2) bluetooth and bluetooth permission MUST be on<br>3) your bike/treadmill should be turned on BEFORE starting this app<br>4) try to restart your device<br><br>If your bike/treadmill disconnects every 30 seconds try to disable the 'virtual device' setting on the left bar.<br><br>In case of issue, please, feel free to contact me to roberto.viola83@gmail.com.<br><br><b>Have a nice ride!</b><br>Roberto Viola"
wrapMode: Label.WordWrap
visible: rootItem.labelHelp
}
}
}

View File

@@ -1,5 +1,5 @@
<?xml version="1.0"?>
<manifest package="org.cagnulen.qdomyoszwift" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.0" android:versionCode="1" android:installLocation="auto">
<manifest package="org.cagnulen.qdomyoszwift" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="2.3.7" android:versionCode="63" android:installLocation="auto">
<!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application.
Remove the comment if you do not require these default permissions. -->
<!-- %%INSERT_PERMISSIONS -->
@@ -9,7 +9,7 @@
<!-- %%INSERT_FEATURES -->
<supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/>
<application android:hardwareAccelerated="true" android:debuggable="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="qdomyos-zwift" android:extractNativeLibs="true" android:icon="@drawable/icon">
<application android:requestLegacyExternalStorage="true" 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"/>
@@ -54,7 +54,7 @@
application still try to draw after
"applicationStateChanged(Qt::ApplicationSuspended)"
signal is sent! -->
<meta-data android:name="android.app.background_running" android:value="false"/>
<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"/>
@@ -69,11 +69,14 @@
<meta-data android:name="android.app.extract_android_style" android:value="default"/>
<!-- extract android style -->
</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.WRITE_EXTERNAL_STORAGE"/>
<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"/>
</manifest>

View File

@@ -36,7 +36,7 @@ android {
compileSdkVersion androidCompileSdkVersion.toInteger()
buildToolsVersion '28.0.3'
buildToolsVersion '29.0.2'
sourceSets {
main {
@@ -53,6 +53,7 @@ android {
lintOptions {
abortOnError false
checkReleaseBuilds false
}
// Do not compress Qt binary resources file
@@ -62,7 +63,7 @@ android {
defaultConfig {
resConfig "en"
minSdkVersion = qtMinSdkVersion
targetSdkVersion = qtTargetSdkVersion
minSdkVersion = 21
targetSdkVersion = 29
}
}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@@ -0,0 +1,262 @@
/*
* Copyright 2012 Dynastream Innovations Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.cagnulen.qdomyoszwift;
import com.dsi.ant.AntService;
import com.dsi.ant.channel.AntChannel;
import com.dsi.ant.channel.AntChannelProvider;
import com.dsi.ant.channel.ChannelNotAvailableException;
import com.dsi.ant.channel.PredefinedNetwork;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.os.Binder;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
import android.util.SparseArray;
import java.util.ArrayList;
public class ChannelService extends Service {
private static final String TAG = "ChannelService";
private boolean mAntRadioServiceBound;
private AntService mAntRadioService = null;
private AntChannelProvider mAntChannelProvider = null;
private boolean mAllowAddChannel = false;
PowerChannelController powerChannelController = null;
SpeedChannelController speedChannelController = null;
private ServiceConnection mAntRadioServiceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// Must pass in the received IBinder object to correctly construct an AntService object
mAntRadioService = new AntService(service);
try {
// Getting a channel provider in order to acquire channels
mAntChannelProvider = mAntRadioService.getChannelProvider();
// Initial check for number of channels available
boolean mChannelAvailable = mAntChannelProvider.getNumChannelsAvailable() > 0;
// Initial check for if legacy interface is in use. If the
// legacy interface is in use, applications can free the ANT
// radio by attempting to acquire a channel.
boolean legacyInterfaceInUse = mAntChannelProvider.isLegacyInterfaceInUse();
// If there are channels OR legacy interface in use, allow adding channels
if (mChannelAvailable || legacyInterfaceInUse) {
mAllowAddChannel = true;
} else {
// If no channels available AND legacy interface is not in use, disallow adding channels
mAllowAddChannel = false;
}
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onServiceDisconnected(ComponentName name) {
die("Binder Died");
mAntChannelProvider = null;
mAntRadioService = null;
mAllowAddChannel = false;
}
};
/**
* The interface used to communicate with the ChannelService
*/
public class ChannelServiceComm extends Binder {
void setSpeed(double speed) {
if (null != speedChannelController) {
speedChannelController.speed = speed;
}
}
void setPower(int power) {
if (null != powerChannelController) {
powerChannelController.power = power;
}
}
void setCadence(int cadence) {
if (null != powerChannelController) {
powerChannelController.cadence = cadence;
}
}
/**
* Closes all channels currently added.
*/
void clearAllChannels() {
closeAllChannels();
}
}
public void openAllChannels() throws ChannelNotAvailableException {
powerChannelController = new PowerChannelController(acquireChannel());
speedChannelController = new SpeedChannelController(acquireChannel());
}
private void closeAllChannels() {
powerChannelController.close();
speedChannelController.close();
powerChannelController = null;
speedChannelController = null;
}
AntChannel acquireChannel() throws ChannelNotAvailableException {
AntChannel mAntChannel = null;
if (null != mAntChannelProvider) {
try {
/*
* If applications require a channel with specific capabilities
* (event buffering, background scanning etc.), a Capabilities
* object should be created and then the specific capabilities
* required set to true. Applications can specify both required
* and desired Capabilities with both being passed in
* acquireChannel(context, PredefinedNetwork,
* requiredCapabilities, desiredCapabilities).
*/
mAntChannel = mAntChannelProvider.acquireChannel(this, PredefinedNetwork.ANT_PLUS_1);
/*
NetworkKey mNK = new NetworkKey(new byte[] { (byte)0xb9, (byte)0xa5, (byte)0x21, (byte)0xfb,
(byte)0xbd, (byte)0x72, (byte)0xc3, (byte)0x45 });
Log.v(TAG, mNK.toString());
mAntChannel = mAntChannelProvider.acquireChannelOnPrivateNetwork(this, mNK);
*/
} catch (RemoteException e) {
die("ACP Remote Ex");
}
}
return mAntChannel;
}
@Override
public IBinder onBind(Intent arg0) {
return new ChannelServiceComm();
}
/**
* Receives AntChannelProvider state changes being sent from ANT Radio Service
*/
private final BroadcastReceiver mChannelProviderStateChangedReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (AntChannelProvider.ACTION_CHANNEL_PROVIDER_STATE_CHANGED.equals(intent.getAction())) {
boolean update = false;
// Retrieving the data contained in the intent
int numChannels = intent.getIntExtra(AntChannelProvider.NUM_CHANNELS_AVAILABLE, 0);
boolean legacyInterfaceInUse = intent.getBooleanExtra(AntChannelProvider.LEGACY_INTERFACE_IN_USE, false);
if (mAllowAddChannel) {
// Was a acquire channel allowed
// If no channels available AND legacy interface is not in use, disallow acquiring of channels
if (0 == numChannels && !legacyInterfaceInUse) {
mAllowAddChannel = false;
update = true;
closeAllChannels();
}
} else {
// Acquire channels not allowed
// If there are channels OR legacy interface in use, allow acquiring of channels
if (numChannels > 0 || legacyInterfaceInUse) {
mAllowAddChannel = true;
update = true;
try {
openAllChannels();
} catch (ChannelNotAvailableException exception) {
Log.e(TAG, "Channel not available!!");
}
}
}
}
}
};
private void doBindAntRadioService() {
if (BuildConfig.DEBUG) Log.v(TAG, "doBindAntRadioService");
// Start listing for channel available intents
registerReceiver(mChannelProviderStateChangedReceiver, new IntentFilter(AntChannelProvider.ACTION_CHANNEL_PROVIDER_STATE_CHANGED));
// Creating the intent and calling context.bindService() is handled by
// the static bindService() method in AntService
mAntRadioServiceBound = AntService.bindService(this, mAntRadioServiceConnection);
}
private void doUnbindAntRadioService() {
if (BuildConfig.DEBUG) Log.v(TAG, "doUnbindAntRadioService");
// Stop listing for channel available intents
try {
unregisterReceiver(mChannelProviderStateChangedReceiver);
} catch (IllegalArgumentException exception) {
if (BuildConfig.DEBUG)
Log.d(TAG, "Attempting to unregister a never registered Channel Provider State Changed receiver.");
}
if (mAntRadioServiceBound) {
try {
unbindService(mAntRadioServiceConnection);
} catch (IllegalArgumentException e) {
// Not bound, that's what we want anyway
}
mAntRadioServiceBound = false;
}
}
@Override
public void onCreate() {
super.onCreate();
mAntRadioServiceBound = false;
doBindAntRadioService();
}
@Override
public void onDestroy() {
closeAllChannels();
doUnbindAntRadioService();
mAntChannelProvider = null;
super.onDestroy();
}
static void die(String error) {
Log.e(TAG, "DIE: " + error);
}
}

View File

@@ -1,8 +1,114 @@
package org.cagnulen.qdomyoszwift;
import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.NumberPicker;
import android.widget.TextView;
import android.widget.Toast;
import android.util.Log;
import android.content.Intent;
public class MyActivity extends org.qtproject.qt5.android.bindings.QtActivity {
private static ChannelService.ChannelServiceComm mChannelService;
private static boolean mChannelServiceBound = false;
private static final String TAG = "MyActivity";
private static MyActivity activity_;
public MyActivity()
{
activity_ = this;
}
@Override
public void onCreate(android.os.Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.getWindow().addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
public static void antStart() {
if(!mChannelServiceBound) doBindChannelService();
}
private static ServiceConnection mChannelServiceConnection = new ServiceConnection()
{
@Override
public void onServiceConnected(ComponentName name, IBinder serviceBinder)
{
Log.v(TAG, "mChannelServiceConnection.onServiceConnected...");
mChannelService = (ChannelService.ChannelServiceComm) serviceBinder;
Log.v(TAG, "...mChannelServiceConnection.onServiceConnected");
}
@Override
public void onServiceDisconnected(ComponentName arg0)
{
Log.v(TAG, "mChannelServiceConnection.onServiceDisconnected...");
// Clearing and disabling when disconnecting from ChannelService
mChannelService = null;
Log.v(TAG, "...mChannelServiceConnection.onServiceDisconnected");
}
};
private static void doBindChannelService()
{
Log.v(TAG, "doBindChannelService...");
// Binds to ChannelService. ChannelService binds and manages connection between the
// app and the ANT Radio Service
mChannelServiceBound = activity_.bindService(new Intent(activity_, ChannelService.class), mChannelServiceConnection , Context.BIND_AUTO_CREATE);
if(!mChannelServiceBound) //If the bind returns false, run the unbind method to update the GUI
doUnbindChannelService();
Log.i(TAG, " Channel Service binding = "+ mChannelServiceBound);
Log.v(TAG, "...doBindChannelService");
}
private static void doUnbindChannelService()
{
Log.v(TAG, "doUnbindChannelService...");
if(mChannelServiceBound)
{
activity_.unbindService(mChannelServiceConnection);
mChannelServiceBound = false;
}
Log.v(TAG, "...doUnbindChannelService");
}
public static void setCadenceSpeedPower(float speed, int power, int cadence)
{
mChannelService.setSpeed(speed / 10.0);
mChannelService.setPower(power / 10);
mChannelService.setCadence(cadence);
}
}

View File

@@ -0,0 +1,293 @@
/*
* Copyright 2012 Dynastream Innovations Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.cagnulen.qdomyoszwift;
import android.os.RemoteException;
import android.util.Log;
import com.dsi.ant.channel.AntChannel;
import com.dsi.ant.channel.AntCommandFailedException;
import com.dsi.ant.channel.IAntChannelEventHandler;
import com.dsi.ant.message.ChannelId;
import com.dsi.ant.message.ChannelType;
import com.dsi.ant.message.EventCode;
import com.dsi.ant.message.fromant.AcknowledgedDataMessage;
import com.dsi.ant.message.fromant.ChannelEventMessage;
import com.dsi.ant.message.fromant.MessageFromAntType;
import com.dsi.ant.message.ipc.AntMessageParcel;
import java.util.Random;
public class PowerChannelController {
public static final int POWER_SENSOR_ID = 0x9e3d4b66;
// The device type and transmission type to be part of the channel ID message
private static final int CHANNEL_POWER_DEVICE_TYPE = 0x0B;
private static final int CHANNEL_POWER_TRANSMISSION_TYPE = 5;
// The period and frequency values the channel will be configured to
private static final int CHANNEL_POWER_PERIOD = 8182; // 1 Hz
private static final int CHANNEL_POWER_FREQUENCY = 57;
private static final String TAG = PowerChannelController.class.getSimpleName();
private static Random randGen = new Random();
int power = 0;
int cadence = 0;
private AntChannel mAntChannel;
private ChannelEventCallback mChannelEventCallback = new ChannelEventCallback();
private boolean mIsOpen;
public PowerChannelController(AntChannel antChannel) {
mAntChannel = antChannel;
openChannel();
}
boolean openChannel() {
if (null != mAntChannel) {
if (mIsOpen) {
Log.w(TAG, "Channel was already open");
} else {
// Channel ID message contains device number, type and transmission type. In
// order for master (TX) channels and slave (RX) channels to connect, they
// must have the same channel ID, or wildcard (0) is used.
ChannelId channelId = new ChannelId(POWER_SENSOR_ID & 0xFFFF,
CHANNEL_POWER_DEVICE_TYPE, CHANNEL_POWER_TRANSMISSION_TYPE);
try {
// Setting the channel event handler so that we can receive messages from ANT
mAntChannel.setChannelEventHandler(mChannelEventCallback);
// Performs channel assignment by assigning the type to the channel. Additional
// features (such as, background scanning and frequency agility) can be enabled
// by passing an ExtendedAssignment object to assign(ChannelType, ExtendedAssignment).
mAntChannel.assign(ChannelType.BIDIRECTIONAL_MASTER);
/*
* Configures the channel ID, messaging period and rf frequency after assigning,
* then opening the channel.
*
* For any additional ANT features such as proximity search or background scanning, refer to
* the ANT Protocol Doc found at:
* http://www.thisisant.com/resources/ant-message-protocol-and-usage/
*/
mAntChannel.setChannelId(channelId);
mAntChannel.setPeriod(CHANNEL_POWER_PERIOD);
mAntChannel.setRfFrequency(CHANNEL_POWER_FREQUENCY);
mAntChannel.open();
mIsOpen = true;
Log.d(TAG, "Opened channel with device number: " + POWER_SENSOR_ID);
} catch (RemoteException e) {
channelError(e);
} catch (AntCommandFailedException e) {
// This will release, and therefore unassign if required
channelError("Open failed", e);
}
}
} else {
Log.w(TAG, "No channel available");
}
return mIsOpen;
}
void channelError(RemoteException e) {
String logString = "Remote service communication failed.";
Log.e(TAG, logString);
}
void channelError(String error, AntCommandFailedException e) {
StringBuilder logString;
if (e.getResponseMessage() != null) {
String initiatingMessageId = "0x" + Integer.toHexString(
e.getResponseMessage().getInitiatingMessageId());
String rawResponseCode = "0x" + Integer.toHexString(
e.getResponseMessage().getRawResponseCode());
logString = new StringBuilder(error)
.append(". Command ")
.append(initiatingMessageId)
.append(" failed with code ")
.append(rawResponseCode);
} else {
String attemptedMessageId = "0x" + Integer.toHexString(
e.getAttemptedMessageType().getMessageId());
String failureReason = e.getFailureReason().toString();
logString = new StringBuilder(error)
.append(". Command ")
.append(attemptedMessageId)
.append(" failed with reason ")
.append(failureReason);
}
Log.e(TAG, logString.toString());
mAntChannel.release();
}
public void close() {
// TODO kill all our resources
if (null != mAntChannel) {
mIsOpen = false;
// Releasing the channel to make it available for others.
// After releasing, the AntChannel instance cannot be reused.
mAntChannel.release();
mAntChannel = null;
}
Log.e(TAG, "Channel Closed");
}
/**
* Implements the Channel Event Handler Interface so that messages can be
* received and channel death events can be handled.
*/
public class ChannelEventCallback implements IAntChannelEventHandler {
int cnt = 0;
int eventCount = 0;
int cumulativePower = 0;
@Override
public void onChannelDeath() {
// Display channel death message when channel dies
Log.e(TAG, "Channel Death");
}
@Override
public void onReceiveMessage(MessageFromAntType messageType, AntMessageParcel antParcel) {
Log.d(TAG, "Rx: " + antParcel);
Log.d(TAG, "Message Type: " + messageType);
byte[] payload = new byte[8];
// Switching on message type to handle different types of messages
switch (messageType) {
// If data message, construct from parcel and update channel data
case BROADCAST_DATA:
// Rx Data
//updateData(new BroadcastDataMessage(antParcel).getPayload());
break;
case ACKNOWLEDGED_DATA:
// Rx Data
//updateData(new AcknowledgedDataMessage(antParcel).getPayload());
payload = new AcknowledgedDataMessage(antParcel).getPayload();
Log.d(TAG, "AcknowledgedDataMessage: " + payload);
if ((payload[0] == 0) && (payload[1] == 1) && (payload[2] == (byte)0xAA)) {
payload[0] = (byte) 0x01;
payload[1] = (byte) 0xAC;
payload[2] = (byte) 0xFF;
payload[3] = (byte) 0xFF;
payload[4] = (byte) 0xFF;
payload[5] = (byte) 0xFF;
payload[6] = (byte) 0x00;
payload[7] = (byte) 0x00;
try {
// Setting the data to be broadcast on the next channel period
mAntChannel.setBroadcastData(payload);
} catch (RemoteException e) {
channelError(e);
}
}
break;
case CHANNEL_EVENT:
// Constructing channel event message from parcel
ChannelEventMessage eventMessage = new ChannelEventMessage(antParcel);
EventCode code = eventMessage.getEventCode();
Log.d(TAG, "Event Code: " + code);
// Switching on event code to handle the different types of channel events
switch (code) {
case TX:
cnt += 1;
if (cnt % 61 == 15) {
payload[0] = (byte) 0x50;
payload[1] = (byte) 0xFF;
payload[2] = (byte) 0xFF;
payload[3] = (byte) 0x01;
payload[4] = (byte) 0xFF;
payload[5] = (byte) 0x00;
payload[6] = (byte) 0x01;
payload[7] = (byte) 0x00;
} else if (cnt % 61 == 30) {
payload[0] = (byte) 0x51;
payload[1] = (byte) 0xFF;
payload[2] = (byte) 0xFF;
payload[3] = (byte) 0x01;
payload[4] = (byte) ((POWER_SENSOR_ID) & 0xFF);
payload[5] = (byte) ((POWER_SENSOR_ID >> 8) & 0xFF);
payload[6] = (byte) ((POWER_SENSOR_ID >> 16) & 0xFF);
payload[7] = (byte) ((POWER_SENSOR_ID >> 24) & 0xFF);
} else {
eventCount = (eventCount + 1) & 0xFF;
cumulativePower = (cumulativePower + power) & 0xFFFF;
payload[0] = (byte) 0x10;
payload[1] = (byte) eventCount;
payload[2] = (byte) 0xFF;
payload[3] = (byte) cadence;
payload[4] = (byte) ((cumulativePower) & 0xFF);
payload[5] = (byte) ((cumulativePower >> 8) & 0xFF);
payload[6] = (byte) ((power) & 0xFF);
payload[7] = (byte) ((power >> 8) & 0xFF);
}
if (mIsOpen) {
try {
// Setting the data to be broadcast on the next channel period
mAntChannel.setBroadcastData(payload);
} catch (RemoteException e) {
channelError(e);
}
}
break;
case CHANNEL_COLLISION:
cnt += 1;
break;
case RX_SEARCH_TIMEOUT:
// TODO May want to keep searching
Log.e(TAG, "No Device Found");
break;
case CHANNEL_CLOSED:
case RX_FAIL:
case RX_FAIL_GO_TO_SEARCH:
case TRANSFER_RX_FAILED:
case TRANSFER_TX_COMPLETED:
case TRANSFER_TX_FAILED:
case TRANSFER_TX_START:
case UNKNOWN:
// TODO More complex communication will need to handle these events
break;
}
break;
case ANT_VERSION:
case BURST_TRANSFER_DATA:
case CAPABILITIES:
case CHANNEL_ID:
case CHANNEL_RESPONSE:
case CHANNEL_STATUS:
case SERIAL_NUMBER:
case OTHER:
// TODO More complex communication will need to handle these message types
break;
}
}
}
}

View File

@@ -0,0 +1,306 @@
/*
* Copyright 2012 Dynastream Innovations Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.cagnulen.qdomyoszwift;
import android.os.RemoteException;
import android.util.Log;
import com.dsi.ant.channel.AntChannel;
import com.dsi.ant.channel.AntCommandFailedException;
import com.dsi.ant.channel.IAntChannelEventHandler;
import com.dsi.ant.message.ChannelId;
import com.dsi.ant.message.ChannelType;
import com.dsi.ant.message.EventCode;
import com.dsi.ant.message.fromant.ChannelEventMessage;
import com.dsi.ant.message.fromant.MessageFromAntType;
import com.dsi.ant.message.ipc.AntMessageParcel;
import java.util.Random;
public class SpeedChannelController {
// The device type and transmission type to be part of the channel ID message
private static final int CHANNEL_SPEED_DEVICE_TYPE = 0x7B;
private static final int CHANNEL_SPEED_TRANSMISSION_TYPE = 1;
// The period and frequency values the channel will be configured to
private static final int CHANNEL_SPEED_PERIOD = 8118; // 1 Hz
private static final int CHANNEL_SPEED_FREQUENCY = 57;
private static final String TAG = SpeedChannelController.class.getSimpleName();
public static final int SPEED_SENSOR_ID = 0x9e3d4b65;
private static Random randGen = new Random();
private AntChannel mAntChannel;
private ChannelEventCallback mChannelEventCallback = new ChannelEventCallback();
private boolean mIsOpen;
double speed = 0.0;
public SpeedChannelController(AntChannel antChannel) {
mAntChannel = antChannel;
openChannel();
}
boolean openChannel() {
if (null != mAntChannel) {
if (mIsOpen) {
Log.w(TAG, "Channel was already open");
} else {
// Channel ID message contains device number, type and transmission type. In
// order for master (TX) channels and slave (RX) channels to connect, they
// must have the same channel ID, or wildcard (0) is used.
ChannelId channelId = new ChannelId(SPEED_SENSOR_ID & 0xFFFF,
CHANNEL_SPEED_DEVICE_TYPE, CHANNEL_SPEED_TRANSMISSION_TYPE);
try {
// Setting the channel event handler so that we can receive messages from ANT
mAntChannel.setChannelEventHandler(mChannelEventCallback);
// Performs channel assignment by assigning the type to the channel. Additional
// features (such as, background scanning and frequency agility) can be enabled
// by passing an ExtendedAssignment object to assign(ChannelType, ExtendedAssignment).
mAntChannel.assign(ChannelType.BIDIRECTIONAL_MASTER);
/*
* Configures the channel ID, messaging period and rf frequency after assigning,
* then opening the channel.
*
* For any additional ANT features such as proximity search or background scanning, refer to
* the ANT Protocol Doc found at:
* http://www.thisisant.com/resources/ant-message-protocol-and-usage/
*/
mAntChannel.setChannelId(channelId);
mAntChannel.setPeriod(CHANNEL_SPEED_PERIOD);
mAntChannel.setRfFrequency(CHANNEL_SPEED_FREQUENCY);
mAntChannel.open();
mIsOpen = true;
Log.d(TAG, "Opened channel with device number: " + SPEED_SENSOR_ID);
} catch (RemoteException e) {
channelError(e);
} catch (AntCommandFailedException e) {
// This will release, and therefore unassign if required
channelError("Open failed", e);
}
}
} else {
Log.w(TAG, "No channel available");
}
return mIsOpen;
}
void channelError(RemoteException e) {
String logString = "Remote service communication failed.";
Log.e(TAG, logString);
}
void channelError(String error, AntCommandFailedException e) {
StringBuilder logString;
if (e.getResponseMessage() != null) {
String initiatingMessageId = "0x" + Integer.toHexString(
e.getResponseMessage().getInitiatingMessageId());
String rawResponseCode = "0x" + Integer.toHexString(
e.getResponseMessage().getRawResponseCode());
logString = new StringBuilder(error)
.append(". Command ")
.append(initiatingMessageId)
.append(" failed with code ")
.append(rawResponseCode);
} else {
String attemptedMessageId = "0x" + Integer.toHexString(
e.getAttemptedMessageType().getMessageId());
String failureReason = e.getFailureReason().toString();
logString = new StringBuilder(error)
.append(". Command ")
.append(attemptedMessageId)
.append(" failed with reason ")
.append(failureReason);
}
Log.e(TAG, logString.toString());
mAntChannel.release();
Log.e(TAG, "ANT Command Failed");
}
public void close() {
// TODO kill all our resources
if (null != mAntChannel) {
mIsOpen = false;
// Releasing the channel to make it available for others.
// After releasing, the AntChannel instance cannot be reused.
mAntChannel.release();
mAntChannel = null;
}
Log.e(TAG, "Channel Closed");
}
/**
* Implements the Channel Event Handler Interface so that messages can be
* received and channel death events can be handled.
*/
public class ChannelEventCallback implements IAntChannelEventHandler {
int revCounts = 0;
int ucMessageCount = 0;
byte ucPageChange = 0;
byte ucExtMesgType = 1;
long lastTime = 0;
double way;
int rev;
double remWay;
double wheel = 0.1;
@Override
public void onChannelDeath() {
// Display channel death message when channel dies
Log.e(TAG, "Channel Death");
}
@Override
public void onReceiveMessage(MessageFromAntType messageType, AntMessageParcel antParcel) {
Log.d(TAG, "Rx: " + antParcel);
Log.d(TAG, "Message Type: " + messageType);
// Switching on message type to handle different types of messages
switch (messageType) {
// If data message, construct from parcel and update channel data
case BROADCAST_DATA:
// Rx Data
//updateData(new BroadcastDataMessage(antParcel).getPayload());
break;
case ACKNOWLEDGED_DATA:
// Rx Data
//updateData(new AcknowledgedDataMessage(antParcel).getPayload());
break;
case CHANNEL_EVENT:
// Constructing channel event message from parcel
ChannelEventMessage eventMessage = new ChannelEventMessage(antParcel);
EventCode code = eventMessage.getEventCode();
Log.d(TAG, "Event Code: " + code);
// Switching on event code to handle the different types of channel events
switch (code) {
case TX:
long unixTime = System.currentTimeMillis() / 1000L;
if (lastTime != 0) {
way = speed * (unixTime - lastTime) / 3.6 + remWay;
rev = (int)(way / wheel + 0.5);
remWay = way - rev * wheel;
revCounts += rev;
}
lastTime = unixTime;
ucPageChange += 0x20;
ucPageChange &= 0xF0;
ucMessageCount += 1;
byte[] payload = new byte[8];
if (ucMessageCount >= 65) {
if (ucExtMesgType >= 4)
ucExtMesgType = 1;
if (ucExtMesgType == 1) {
int halfunixTime = (int) (unixTime / 2L);
payload[0] = (byte) ((byte) 0x01 | (byte) (ucPageChange & (byte) 0x80));
payload[1] = (byte) (halfunixTime & 0xFF);
payload[2] = (byte) ((halfunixTime >> 8) & 0xFF);
payload[3] = (byte) ((halfunixTime >> 16) & 0xFF);
}
else if (ucExtMesgType == 2) {
payload[0] = (byte) ((byte) 0x02 | (byte) (ucPageChange & (byte) 0x80));
payload[1] = (byte) 0xFF;
payload[2] = (byte) ((SPEED_SENSOR_ID >> 16) & 0xFF);
payload[3] = (byte) ((SPEED_SENSOR_ID >> 24) & 0xFF);
}
else if (ucExtMesgType == 3) {
payload[0] = (byte) ((byte) 0x03 | (byte) (ucPageChange & (byte) 0x80));
payload[1] = (byte) 0x01;
payload[2] = (byte) 0x01;
payload[3] = (byte) 0x01;
}
if (ucMessageCount >= 68) {
ucMessageCount = 0;
ucExtMesgType += 1;
}
} else {
payload[0] = (byte) (ucPageChange & 0x80);
payload[1] = (byte) 0xFF;
payload[2] = (byte) 0xFF;
payload[3] = (byte) 0xFF;
}
int unixTime1024 = (int) (unixTime * 1024);
payload[4] = (byte) (unixTime1024 & 0xFF);
payload[5] = (byte) ((unixTime1024 >> 8) & 0xFF);
payload[6] = (byte) (revCounts & 0xFF);
payload[7] = (byte) ((revCounts >> 8) & 0xFF);
if (mIsOpen) {
try {
// Setting the data to be broadcast on the next channel period
mAntChannel.setBroadcastData(payload);
} catch (RemoteException e) {
channelError(e);
}
}
break;
case CHANNEL_COLLISION:
ucPageChange += 0x20;
ucPageChange &= 0xF0;
ucMessageCount += 1;
break;
case RX_SEARCH_TIMEOUT:
// TODO May want to keep searching
Log.e(TAG, "No Device Found");
break;
case CHANNEL_CLOSED:
case RX_FAIL:
case RX_FAIL_GO_TO_SEARCH:
case TRANSFER_RX_FAILED:
case TRANSFER_TX_COMPLETED:
case TRANSFER_TX_FAILED:
case TRANSFER_TX_START:
case UNKNOWN:
// TODO More complex communication will need to handle these events
break;
}
break;
case ANT_VERSION:
case BURST_TRANSFER_DATA:
case CAPABILITIES:
case CHANNEL_ID:
case CHANNEL_RESPONSE:
case CHANNEL_STATUS:
case SERIAL_NUMBER:
case OTHER:
// TODO More complex communication will need to handle these message types
break;
}
}
}
}

View File

@@ -0,0 +1,40 @@
package com.dsi.ant.channel;
/**
* Created by harald on 24.04.17.
*/
public enum PredefinedNetwork {
INVALID(-1),
PUBLIC(0),
ANT_PLUS_1(1),
ANT_FS(2);
private final int mRawValue;
private static final PredefinedNetwork[] sValues = values();
private PredefinedNetwork(int rawValue) {
this.mRawValue = rawValue;
}
int getRawValue() {
return this.mRawValue;
}
private boolean equals(int rawValue) {
return rawValue == this.mRawValue;
}
static PredefinedNetwork create(int rawValue) {
PredefinedNetwork code = INVALID;
for(int i = 0; i < sValues.length; ++i) {
if(sValues[i].equals(rawValue)) {
code = sValues[i];
break;
}
}
return code;
}
}

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