Compare commits
1418 Commits
build_ios_
...
qthttpserv
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d1bf9c227d | ||
|
|
73e5e8164e | ||
|
|
35230d3d42 | ||
|
|
e04eecec5f | ||
|
|
724af51807 | ||
|
|
ce470dfc6a | ||
|
|
b1c3b06df8 | ||
|
|
0c7e66715f | ||
|
|
aa938e11af | ||
|
|
38662f6b36 | ||
|
|
f9c9428928 | ||
|
|
432a389f70 | ||
|
|
64e29f9bb9 | ||
|
|
aa358764d5 | ||
|
|
fd86b4cdac | ||
|
|
941f86ee56 | ||
|
|
88bdd03145 | ||
|
|
6d983c38b4 | ||
|
|
39154a1a5d | ||
|
|
b760e53468 | ||
|
|
3c8f8a5e00 | ||
|
|
2320a048b4 | ||
|
|
60cb240faf | ||
|
|
07e1585f85 | ||
|
|
8d4ddf128b | ||
|
|
7c96e758a7 | ||
|
|
c6be5d52f3 | ||
|
|
19fafe9d43 | ||
|
|
59fa3f9861 | ||
|
|
e7b31a09b8 | ||
|
|
c01db89c54 | ||
|
|
88e8fe4d66 | ||
|
|
03af7a803a | ||
|
|
92322102e0 | ||
|
|
236b159533 | ||
|
|
737425dd4e | ||
|
|
41e315fb7a | ||
|
|
591560b747 | ||
|
|
a5bff8f1c4 | ||
|
|
837a486b8d | ||
|
|
950de8f81a | ||
|
|
eba968b48f | ||
|
|
429279d5dd | ||
|
|
0fd31d8015 | ||
|
|
56e6721625 | ||
|
|
63e4d34e68 | ||
|
|
b57171f9ae | ||
|
|
31523786d3 | ||
|
|
60c3d94660 | ||
|
|
2f6bf8d05a | ||
|
|
bec71aad26 | ||
|
|
a78ec1aeb7 | ||
|
|
f5eb789d64 | ||
|
|
944a5661bd | ||
|
|
12afa4531b | ||
|
|
68db10712f | ||
|
|
5f44f9e5b4 | ||
|
|
89ae34893d | ||
|
|
67a07d7ac0 | ||
|
|
a786977214 | ||
|
|
eb7fa75e68 | ||
|
|
16f9ef5775 | ||
|
|
efb81495cc | ||
|
|
7b13d0e69b | ||
|
|
93d628f581 | ||
|
|
6561014e82 | ||
|
|
ee9b040f96 | ||
|
|
74327f1d25 | ||
|
|
6a4b051406 | ||
|
|
9303d6042f | ||
|
|
3efe139da9 | ||
|
|
cf593a11e6 | ||
|
|
816b612352 | ||
|
|
f510d0dec5 | ||
|
|
8d07e3e924 | ||
|
|
4d22e6f6d5 | ||
|
|
71dc9875db | ||
|
|
46a0695428 | ||
|
|
475f5911c6 | ||
|
|
7351e5859e | ||
|
|
7d27d3d92c | ||
|
|
2d4a9d3a80 | ||
|
|
8e53a7f6a8 | ||
|
|
f54d211911 | ||
|
|
a1d2d6c33c | ||
|
|
eda84c23cb | ||
|
|
e313fdc710 | ||
|
|
3aeb41aecf | ||
|
|
2e6edbce0e | ||
|
|
15d2b3e36a | ||
|
|
8182bd24a0 | ||
|
|
511fc1d74a | ||
|
|
71c5a9ffbb | ||
|
|
093ba1cc38 | ||
|
|
da9e644ecd | ||
|
|
b03cc3bc4e | ||
|
|
8ae702247f | ||
|
|
ecdf6bbeac | ||
|
|
0f1088cd73 | ||
|
|
a39ccbadc4 | ||
|
|
0dbcd90125 | ||
|
|
4917cad8a9 | ||
|
|
0d3691cfa4 | ||
|
|
1418067957 | ||
|
|
258e9b95b1 | ||
|
|
744d20e39c | ||
|
|
f6c9354717 | ||
|
|
d650ad0916 | ||
|
|
d5b8c6224f | ||
|
|
3b5369a489 | ||
|
|
c35c23e2c5 | ||
|
|
87e65e61c2 | ||
|
|
7ab6284574 | ||
|
|
de50a5af05 | ||
|
|
5d9103244b | ||
|
|
9d45fcc263 | ||
|
|
d9001edf3c | ||
|
|
63284d4df8 | ||
|
|
f0d1e510de | ||
|
|
b56cd8e51f | ||
|
|
d50c6e5a09 | ||
|
|
f83f362131 | ||
|
|
2dc1d33874 | ||
|
|
3c3435c69d | ||
|
|
d35f63f8ea | ||
|
|
1cda750421 | ||
|
|
59b5927710 | ||
|
|
808294f9c9 | ||
|
|
8e28481ee0 | ||
|
|
7541f8b9f7 | ||
|
|
a59231da4e | ||
|
|
8d1f225a60 | ||
|
|
8576d4b207 | ||
|
|
18f8707338 | ||
|
|
6090ec0193 | ||
|
|
3f0bda127c | ||
|
|
2c3c051b9e | ||
|
|
0261dd46e5 | ||
|
|
94657779b7 | ||
|
|
7a3543ac4a | ||
|
|
6699c1d1ce | ||
|
|
285cd87a8f | ||
|
|
60a27c3519 | ||
|
|
190fb3de80 | ||
|
|
3d673f6b51 | ||
|
|
e4528ec9b1 | ||
|
|
9035c65072 | ||
|
|
6ce3dcd193 | ||
|
|
ca90e765c5 | ||
|
|
5558fb4288 | ||
|
|
949485729b | ||
|
|
f0e53afaae | ||
|
|
b71013d306 | ||
|
|
97b859451f | ||
|
|
aa005614ad | ||
|
|
355f8a5c1d | ||
|
|
16fe25df18 | ||
|
|
c515f5f1ad | ||
|
|
d22ad924ec | ||
|
|
6cc4a984ee | ||
|
|
10d7644dd9 | ||
|
|
5b0b8a776f | ||
|
|
2b3b9d30c0 | ||
|
|
5e77af695b | ||
|
|
c603da2ebc | ||
|
|
87a9b54693 | ||
|
|
94cb089737 | ||
|
|
9e02c03b4a | ||
|
|
7cd0543aa3 | ||
|
|
66ba115462 | ||
|
|
abb4c33152 | ||
|
|
406d11209e | ||
|
|
bb4323d7fd | ||
|
|
e4c418be19 | ||
|
|
dc61b55461 | ||
|
|
11f5286302 | ||
|
|
521c583984 | ||
|
|
cccda9ac90 | ||
|
|
d4d5a0bc7f | ||
|
|
b3d5e984e6 | ||
|
|
57d1b29d5c | ||
|
|
3848316641 | ||
|
|
412fada4ea | ||
|
|
29454352d5 | ||
|
|
d7b9bd5cc8 | ||
|
|
ad6c59f96d | ||
|
|
bfb7b74779 | ||
|
|
d92f137617 | ||
|
|
2a5f13d220 | ||
|
|
1254593fd1 | ||
|
|
d144a21980 | ||
|
|
9c0328f6b7 | ||
|
|
e78dc46c6f | ||
|
|
d53aecf5b4 | ||
|
|
370208844f | ||
|
|
91044a2c5b | ||
|
|
97e0efefdf | ||
|
|
3cf1c5490f | ||
|
|
d3df4274be | ||
|
|
e15474fcab | ||
|
|
dc4d854e5c | ||
|
|
4330badaf6 | ||
|
|
8010830d07 | ||
|
|
d3272ffa57 | ||
|
|
fe499b6526 | ||
|
|
d17d923455 | ||
|
|
fc0c0614d5 | ||
|
|
1491731a65 | ||
|
|
8adfc889d2 | ||
|
|
c386127749 | ||
|
|
da883ed2b8 | ||
|
|
09f93ff8ce | ||
|
|
7c11c1e45a | ||
|
|
2490c7fd27 | ||
|
|
a42d6d4466 | ||
|
|
1df7c8250f | ||
|
|
14cac49def | ||
|
|
775cb9e69f | ||
|
|
0a6ffb4b3e | ||
|
|
d84162d013 | ||
|
|
f79b4751d4 | ||
|
|
43420aa008 | ||
|
|
d08daf0573 | ||
|
|
6565178254 | ||
|
|
0e6f792e85 | ||
|
|
ea02e1709f | ||
|
|
67051b2105 | ||
|
|
306797191a | ||
|
|
958750f2ad | ||
|
|
7591cea089 | ||
|
|
ea735e0e9c | ||
|
|
777d801284 | ||
|
|
f066ceecbd | ||
|
|
82ea75ff62 | ||
|
|
90f6b6ee66 | ||
|
|
e8e972ff7a | ||
|
|
eff07d39ec | ||
|
|
d54ce91e07 | ||
|
|
9762fb2809 | ||
|
|
d62981b12b | ||
|
|
e42be4e50c | ||
|
|
b045fff288 | ||
|
|
b7d1e9b92b | ||
|
|
90dd1fbe34 | ||
|
|
16d7a5e65d | ||
|
|
d6d1e7536a | ||
|
|
604d61d339 | ||
|
|
6dbc1f71ae | ||
|
|
f4252e00d9 | ||
|
|
02a3d9d6ac | ||
|
|
4a2faf9e1b | ||
|
|
00cde22da8 | ||
|
|
35e49df5a5 | ||
|
|
f13138e107 | ||
|
|
6d2394603c | ||
|
|
15db70f2dd | ||
|
|
a23fd7ae1b | ||
|
|
4b4c20a2ef | ||
|
|
503edb51b1 | ||
|
|
49288ebb08 | ||
|
|
aaf4e386ab | ||
|
|
2d837f7ed6 | ||
|
|
ff2d0ff6d0 | ||
|
|
0aa062409c | ||
|
|
644ca82cd8 | ||
|
|
b510a8151d | ||
|
|
793d5d233a | ||
|
|
ce623ad270 | ||
|
|
baf9d3ebbd | ||
|
|
4e9848c72d | ||
|
|
1a3d55e8b9 | ||
|
|
285b333a4d | ||
|
|
771c9d6fe1 | ||
|
|
1f66f66831 | ||
|
|
5e5e488f02 | ||
|
|
b6d401d0e0 | ||
|
|
07626bb0b6 | ||
|
|
3da3b554ad | ||
|
|
93a3ea04f3 | ||
|
|
6c2ec9962e | ||
|
|
c8c71be11b | ||
|
|
abe85e0ba9 | ||
|
|
49ef60b828 | ||
|
|
e0cfa60531 | ||
|
|
0b23259541 | ||
|
|
b7d150b3b6 | ||
|
|
d8ecbbe426 | ||
|
|
47287daacc | ||
|
|
073cc46595 | ||
|
|
7fa640e294 | ||
|
|
ca1ab54561 | ||
|
|
c14c583512 | ||
|
|
a387bed4a3 | ||
|
|
5a8c2a6354 | ||
|
|
d39939b52e | ||
|
|
5177ec28b5 | ||
|
|
aa3ef9a5ab | ||
|
|
3ce93dfcff | ||
|
|
d83ddd348e | ||
|
|
cb2088606b | ||
|
|
22dadaddc5 | ||
|
|
4a47c96e27 | ||
|
|
4f74d145a3 | ||
|
|
7c45960889 | ||
|
|
d900815837 | ||
|
|
9d6f778624 | ||
|
|
501b16fb87 | ||
|
|
2796cd7ce8 | ||
|
|
47f23ce8b7 | ||
|
|
1b8edeaad8 | ||
|
|
c82d132a9d | ||
|
|
4fcb762f3c | ||
|
|
0513ef64c6 | ||
|
|
8d42d2f78d | ||
|
|
c3b6442c70 | ||
|
|
0b01d37604 | ||
|
|
e9e52c3da8 | ||
|
|
c8b0f9a7bd | ||
|
|
9835d2ae4a | ||
|
|
2db03e3c77 | ||
|
|
54aa797c34 | ||
|
|
2dd9d6cdcd | ||
|
|
11369ba1f8 | ||
|
|
8c7ad0cf96 | ||
|
|
58d0f7cc08 | ||
|
|
9069d7c14a | ||
|
|
90660b98e9 | ||
|
|
0aab57a243 | ||
|
|
08407cff6b | ||
|
|
661305b7f0 | ||
|
|
888736f095 | ||
|
|
fc1c246e8c | ||
|
|
bdd4b952de | ||
|
|
3805b45a71 | ||
|
|
c6b40848e3 | ||
|
|
b9c743dff8 | ||
|
|
e6b5133e4e | ||
|
|
302dcf80de | ||
|
|
d97094e383 | ||
|
|
02f08f387e | ||
|
|
4cff6b2936 | ||
|
|
b6723ffd8b | ||
|
|
a290b34563 | ||
|
|
0bd5915e53 | ||
|
|
07e653111c | ||
|
|
1f6b925f68 | ||
|
|
6d37d5759c | ||
|
|
cc693cc3ea | ||
|
|
bcd903685e | ||
|
|
214698d410 | ||
|
|
9222527020 | ||
|
|
05019e2e39 | ||
|
|
22170ff4c1 | ||
|
|
09950204bf | ||
|
|
c7bba9aef9 | ||
|
|
2c6503d85d | ||
|
|
7105dfa50b | ||
|
|
ba8982280d | ||
|
|
ddfd4ccd92 | ||
|
|
3e4538508e | ||
|
|
1f4661612f | ||
|
|
e95d9f94ac | ||
|
|
cdf1734e2a | ||
|
|
053119ad82 | ||
|
|
5c1ec25386 | ||
|
|
527663c387 | ||
|
|
b2f8aaab55 | ||
|
|
5290a70f27 | ||
|
|
c3344c8db7 | ||
|
|
ca442acbc2 | ||
|
|
5393a5db35 | ||
|
|
90f6f1ae64 | ||
|
|
390b03e334 | ||
|
|
3705222690 | ||
|
|
0f0700731c | ||
|
|
321b65e3da | ||
|
|
dd60e6eb5f | ||
|
|
5b1f443b71 | ||
|
|
e0f7ba438b | ||
|
|
cd49516389 | ||
|
|
9e8550473a | ||
|
|
27e7b35dbf | ||
|
|
cf223d2f05 | ||
|
|
a250a2d557 | ||
|
|
b863e2ebd1 | ||
|
|
2443a4da37 | ||
|
|
f6262276e7 | ||
|
|
125c038040 | ||
|
|
ceb2b68a6b | ||
|
|
57ff2e9425 | ||
|
|
12100250e0 | ||
|
|
35ae6a1027 | ||
|
|
c06be822f9 | ||
|
|
281a9e0eae | ||
|
|
1d1f2d4603 | ||
|
|
e6bf8cc51a | ||
|
|
8e12f2d074 | ||
|
|
7db71b4087 | ||
|
|
9198541ded | ||
|
|
09c961a2e8 | ||
|
|
6bc5e6b6e8 | ||
|
|
1adf637026 | ||
|
|
186d5eb8a6 | ||
|
|
ceec63bf57 | ||
|
|
40e9afee2d | ||
|
|
0ce2cc865e | ||
|
|
e7296f3bd7 | ||
|
|
275b2afc2d | ||
|
|
ce7ad4aa83 | ||
|
|
06bdc67c84 | ||
|
|
f2e95e6584 | ||
|
|
6d373bbda4 | ||
|
|
51eca9f100 | ||
|
|
88d1469d48 | ||
|
|
7d600c0761 | ||
|
|
5fcdd187e3 | ||
|
|
b0dc898818 | ||
|
|
462fd2f6fa | ||
|
|
d81d6c84c0 | ||
|
|
3aa20281ae | ||
|
|
ada1225759 | ||
|
|
e9d853b06a | ||
|
|
2b962a64e9 | ||
|
|
babfa86f60 | ||
|
|
910936dc58 | ||
|
|
f222dc7ed8 | ||
|
|
fa697f73ec | ||
|
|
9cb5372961 | ||
|
|
9ffa682f87 | ||
|
|
f93eb05ed8 | ||
|
|
c3b9f9f37e | ||
|
|
b6c40ebd0b | ||
|
|
ac51a6ccd5 | ||
|
|
0ec1958e9e | ||
|
|
dce10819e6 | ||
|
|
e6bf4bbcdd | ||
|
|
9a8c89910c | ||
|
|
d91920a8ce | ||
|
|
51e3bc7a2e | ||
|
|
32d8caaf4e | ||
|
|
95259cb408 | ||
|
|
54dd6aac83 | ||
|
|
241c5995b6 | ||
|
|
fd46afe9c3 | ||
|
|
e43cbc7bab | ||
|
|
ee4139e2f6 | ||
|
|
23a66eff6b | ||
|
|
482cb510c2 | ||
|
|
0908074c70 | ||
|
|
1e44bd1bfa | ||
|
|
a7c2804144 | ||
|
|
13df364d9b | ||
|
|
4b23716dea | ||
|
|
736d4e97ea | ||
|
|
167773d365 | ||
|
|
37b4392319 | ||
|
|
2338a5b73c | ||
|
|
2df59e9058 | ||
|
|
a817b21492 | ||
|
|
55038f5ca4 | ||
|
|
92122984fc | ||
|
|
2fa7b1ce80 | ||
|
|
76e50a18f0 | ||
|
|
fc487d2a3a | ||
|
|
2128597592 | ||
|
|
e4c06d186f | ||
|
|
c001363e3d | ||
|
|
d6da58e2c1 | ||
|
|
0c42a39e42 | ||
|
|
31aa2d18f2 | ||
|
|
f1a50f2f1e | ||
|
|
8253ad1886 | ||
|
|
cd34ba3b1b | ||
|
|
29223d7c5e | ||
|
|
1e29b729bf | ||
|
|
90f43465f3 | ||
|
|
66088caef1 | ||
|
|
61e7f282a0 | ||
|
|
21eef75c3f | ||
|
|
f701705127 | ||
|
|
15c104fefb | ||
|
|
0742d39b81 | ||
|
|
55260f6382 | ||
|
|
451e66f3ee | ||
|
|
71c3819ab6 | ||
|
|
831343892b | ||
|
|
6b6d01e5f3 | ||
|
|
d85831aeb1 | ||
|
|
bc22016313 | ||
|
|
82e411220c | ||
|
|
7bfa30a4ca | ||
|
|
7733a308c2 | ||
|
|
c6ffceb391 | ||
|
|
612c8ec766 | ||
|
|
56a25b11a4 | ||
|
|
9a315a104f | ||
|
|
9f5ecda75a | ||
|
|
01e8bc5301 | ||
|
|
67b63971b0 | ||
|
|
f80d026591 | ||
|
|
1e04e62027 | ||
|
|
825e93911c | ||
|
|
f43501a1f6 | ||
|
|
0e7bab0905 | ||
|
|
4da9a30709 | ||
|
|
3dcaee7422 | ||
|
|
025ee9b1ef | ||
|
|
3ca6d46132 | ||
|
|
ffefc5743f | ||
|
|
86616424e1 | ||
|
|
1ecfa31712 | ||
|
|
17bf544475 | ||
|
|
e0bf8d0c1f | ||
|
|
55afec2c54 | ||
|
|
eb43c085a8 | ||
|
|
658a4365ce | ||
|
|
02da446843 | ||
|
|
d98ee23d6f | ||
|
|
bda9090b3d | ||
|
|
8da8394405 | ||
|
|
92683a9974 | ||
|
|
1df2cb12c7 | ||
|
|
7d7a419f18 | ||
|
|
b8b6095708 | ||
|
|
eff71933a7 | ||
|
|
e0f93fd0ee | ||
|
|
5bb1af7eab | ||
|
|
25e40de014 | ||
|
|
1ceb9f339f | ||
|
|
a488d78830 | ||
|
|
143e81d5c4 | ||
|
|
9bc6cf3201 | ||
|
|
28bb77cf85 | ||
|
|
9d021f1fdb | ||
|
|
c5211c26b2 | ||
|
|
b670948db6 | ||
|
|
9dc43d0c49 | ||
|
|
3bb5d9a4dd | ||
|
|
3a837e2781 | ||
|
|
e85f509e7f | ||
|
|
ebbdee8424 | ||
|
|
8c587bc57b | ||
|
|
59304c26d0 | ||
|
|
ef68948df4 | ||
|
|
51e42267cb | ||
|
|
fc0f7bf7c2 | ||
|
|
deb26a9a57 | ||
|
|
db51fddb76 | ||
|
|
ca7d98af5e | ||
|
|
c14b9474a3 | ||
|
|
067072a5db | ||
|
|
f8f278a5d5 | ||
|
|
7137b5d636 | ||
|
|
f546b32ba7 | ||
|
|
f0418cffb4 | ||
|
|
bcee9f2026 | ||
|
|
e96aa6f19c | ||
|
|
8de1d17391 | ||
|
|
28fbd75e96 | ||
|
|
e78bf6d5dc | ||
|
|
dc8da3f45a | ||
|
|
6a814a2cf2 | ||
|
|
5a07d5b958 | ||
|
|
04badb1d40 | ||
|
|
e39ca23d4c | ||
|
|
1595a4e13a | ||
|
|
1aa05852ae | ||
|
|
1dc2f2fa19 | ||
|
|
0d6a58e188 | ||
|
|
4cc7c5b2c1 | ||
|
|
e026c975c2 | ||
|
|
93ada11a61 | ||
|
|
70ae42ec29 | ||
|
|
8732e925d4 | ||
|
|
f258f99c62 | ||
|
|
45d2b17469 | ||
|
|
936df23bfb | ||
|
|
8358890bb1 | ||
|
|
5a60162b51 | ||
|
|
0a0e41d8fc | ||
|
|
3c6880ee98 | ||
|
|
174d821f4e | ||
|
|
c2235ffc74 | ||
|
|
086856c66c | ||
|
|
7726f47b54 | ||
|
|
ec5de70a31 | ||
|
|
2d7d67572f | ||
|
|
7db54b8ab9 | ||
|
|
5da0b26701 | ||
|
|
cb8ce08d46 | ||
|
|
ff2e2d2c04 | ||
|
|
c91c31543b | ||
|
|
e2df8e0261 | ||
|
|
4cce33098d | ||
|
|
7238138540 | ||
|
|
61f7121a51 | ||
|
|
d27eafae82 | ||
|
|
3e55f04617 | ||
|
|
09f9eed9b4 | ||
|
|
5f97a08f42 | ||
|
|
e7ee2e0416 | ||
|
|
f32dbf9129 | ||
|
|
5cd1150bbc | ||
|
|
cd20d4d939 | ||
|
|
b5ceafdd1d | ||
|
|
547704545f | ||
|
|
929b0b4bb6 | ||
|
|
b8465ec7d7 | ||
|
|
0e71cc3973 | ||
|
|
d71378cdf5 | ||
|
|
c642c68a7a | ||
|
|
0765bf1dc3 | ||
|
|
f07dc253ab | ||
|
|
457e29b645 | ||
|
|
16406622df | ||
|
|
0dd76bd8f9 | ||
|
|
0c75f4405b | ||
|
|
af1e5b9a1d | ||
|
|
f100c98d94 | ||
|
|
c4b08f0523 | ||
|
|
4afa70a0e6 | ||
|
|
35975ccea0 | ||
|
|
520d9add35 | ||
|
|
fef4c45c8f | ||
|
|
e4da29ddaa | ||
|
|
ee678b328a | ||
|
|
758e5c95e2 | ||
|
|
12356cd5df | ||
|
|
e271b95f60 | ||
|
|
b4bbbe3cbe | ||
|
|
03fd70ea7a | ||
|
|
2ae0104bc0 | ||
|
|
3fb3ccb3cb | ||
|
|
f052bc26e0 | ||
|
|
436a1ebe37 | ||
|
|
dd87019988 | ||
|
|
c8d107f66f | ||
|
|
a3385c678d | ||
|
|
f0271947bc | ||
|
|
51bf6aeaca | ||
|
|
31270ff90b | ||
|
|
3523702f8a | ||
|
|
353f876b59 | ||
|
|
f723ed364e | ||
|
|
b3b349274a | ||
|
|
77376b75fd | ||
|
|
bc50f33dd5 | ||
|
|
a5bc33f0f4 | ||
|
|
99c6e92bb2 | ||
|
|
ae31c76040 | ||
|
|
feed443f1a | ||
|
|
6ded19d01d | ||
|
|
8ea9017752 | ||
|
|
edaeac372b | ||
|
|
7bf07bff2e | ||
|
|
0dd8d4c15e | ||
|
|
ee2cbc669e | ||
|
|
0a99499340 | ||
|
|
7364613b06 | ||
|
|
50f644e0dd | ||
|
|
5736e37ac4 | ||
|
|
f09aa4061a | ||
|
|
3ebd15ef22 | ||
|
|
1b81e286b4 | ||
|
|
0c51d0687b | ||
|
|
9cd4a228ac | ||
|
|
23e3ecf7a6 | ||
|
|
4375d74007 | ||
|
|
3424eb04bd | ||
|
|
df6dfcab5a | ||
|
|
eeaaf31aaf | ||
|
|
d5941ab190 | ||
|
|
3a76595794 | ||
|
|
be982e294f | ||
|
|
691b8964d7 | ||
|
|
e65a6bfb44 | ||
|
|
020fd33f72 | ||
|
|
588f8f0ba0 | ||
|
|
841f203b99 | ||
|
|
76b456cbcc | ||
|
|
cc28d29b83 | ||
|
|
b0488128f5 | ||
|
|
798a19bebf | ||
|
|
a12fab4aba | ||
|
|
dcdd1b5e70 | ||
|
|
fc471d78b0 | ||
|
|
d4955b8ade | ||
|
|
b96cf47848 | ||
|
|
c159575200 | ||
|
|
31a7591b2b | ||
|
|
2c9f1ba3da | ||
|
|
13a285e223 | ||
|
|
dd9526631e | ||
|
|
32f3b92948 | ||
|
|
ee6cb30ab3 | ||
|
|
4ffda5bd26 | ||
|
|
18e3ff23dc | ||
|
|
b7760098eb | ||
|
|
45fb0ea9b8 | ||
|
|
0c667e9b5b | ||
|
|
509ffdcc79 | ||
|
|
513b205107 | ||
|
|
3cf2715cf2 | ||
|
|
e4364f5b8b | ||
|
|
349c2f8eea | ||
|
|
c7320e4223 | ||
|
|
7e5e6ba449 | ||
|
|
eff5c86601 | ||
|
|
c4ecaa1e2a | ||
|
|
fab776c8c7 | ||
|
|
73070b382c | ||
|
|
a1ce154294 | ||
|
|
5bf7864efb | ||
|
|
cc1055bd29 | ||
|
|
b9961bc6bc | ||
|
|
72cb2fbaf0 | ||
|
|
dc44b86cbd | ||
|
|
46d0b625ab | ||
|
|
163c074372 | ||
|
|
06692cd902 | ||
|
|
8da031797a | ||
|
|
4cf613fccc | ||
|
|
7baada88d3 | ||
|
|
c005a623f6 | ||
|
|
e210bb8acc | ||
|
|
2e306ccfd6 | ||
|
|
5d5bde34bf | ||
|
|
984141c6e2 | ||
|
|
81001cbbdd | ||
|
|
c150dd4d2a | ||
|
|
29990ff840 | ||
|
|
24da48f265 | ||
|
|
715b1a847f | ||
|
|
73bf1c04a2 | ||
|
|
f7a6a1982f | ||
|
|
8239073592 | ||
|
|
35935d8ada | ||
|
|
21d26f326a | ||
|
|
aa9ca3de4b | ||
|
|
5e96e6dad3 | ||
|
|
6172301846 | ||
|
|
67902625c7 | ||
|
|
0cf7999198 | ||
|
|
4dffbc27b3 | ||
|
|
090ea3ebc9 | ||
|
|
9048eea17a | ||
|
|
3da7d544c9 | ||
|
|
0a8f9a6742 | ||
|
|
daa7e1174f | ||
|
|
99bf7610da | ||
|
|
b0054df5ae | ||
|
|
82c6f67631 | ||
|
|
98bb01f5b4 | ||
|
|
afe6ef3755 | ||
|
|
92020edf76 | ||
|
|
7809e5176f | ||
|
|
e25a93ea4f | ||
|
|
035b46b973 | ||
|
|
27889d1b84 | ||
|
|
477284c1e6 | ||
|
|
acd4532e30 | ||
|
|
5f683023de | ||
|
|
a8935e11f1 | ||
|
|
0b8c6e54f1 | ||
|
|
81ace335ab | ||
|
|
d6dd8ec10c | ||
|
|
1510eddba1 | ||
|
|
9a289e593e | ||
|
|
af5caf1f8a | ||
|
|
8217b7a7ea | ||
|
|
098818706d | ||
|
|
157153116b | ||
|
|
f46ce80228 | ||
|
|
99b793d713 | ||
|
|
ea18896c9e | ||
|
|
8e9057d4de | ||
|
|
ce55f95cf4 | ||
|
|
819aeb6452 | ||
|
|
5ff7b36e93 | ||
|
|
5278059093 | ||
|
|
47626f923f | ||
|
|
bee99d2400 | ||
|
|
813ce1c8b5 | ||
|
|
bbe6197fa7 | ||
|
|
d520bc42f9 | ||
|
|
44bd9a4c7a | ||
|
|
c1cb0a12c2 | ||
|
|
1ecc2563f8 | ||
|
|
0aa0ea4614 | ||
|
|
b3988e7922 | ||
|
|
4f11a83820 | ||
|
|
d203c1de8b | ||
|
|
2cdbd079e0 | ||
|
|
dc81d9b51f | ||
|
|
59e6a9c167 | ||
|
|
7dfd879188 | ||
|
|
70c94f931f | ||
|
|
b6c4620381 | ||
|
|
c337ae63d8 | ||
|
|
6bd9592c37 | ||
|
|
5dfd7ab688 | ||
|
|
d0eb72efc9 | ||
|
|
fe2590286d | ||
|
|
575fa4499a | ||
|
|
b6d6813b4f | ||
|
|
201d888599 | ||
|
|
49f283d2ca | ||
|
|
7e01fb4425 | ||
|
|
0faae303d3 | ||
|
|
c4ebf7f962 | ||
|
|
9a8b64ed89 | ||
|
|
b35adb3b8d | ||
|
|
2eed5132fa | ||
|
|
d98e4bbe6a | ||
|
|
12d72c1c11 | ||
|
|
e610ccfbe7 | ||
|
|
04b5238207 | ||
|
|
16f48c3c23 | ||
|
|
c848683575 | ||
|
|
2881a564a5 | ||
|
|
943a27e7d5 | ||
|
|
226e687570 | ||
|
|
add8ee3efc | ||
|
|
79022a6560 | ||
|
|
dcd05e9580 | ||
|
|
d5bc202865 | ||
|
|
9383ca3f10 | ||
|
|
e1acdb24c1 | ||
|
|
1565e87766 | ||
|
|
3a7280cf37 | ||
|
|
4e564c01ca | ||
|
|
3700d8262d | ||
|
|
b964301d4b | ||
|
|
64938a87d1 | ||
|
|
bf96c64dad | ||
|
|
eff1483b86 | ||
|
|
4840ffb06f | ||
|
|
46c296fae7 | ||
|
|
fe025ce039 | ||
|
|
b2c476d481 | ||
|
|
1183c58cd6 | ||
|
|
beabcdc526 | ||
|
|
f92e37ac1a | ||
|
|
1f556508f8 | ||
|
|
215c0f436d | ||
|
|
d0e774a3da | ||
|
|
00873f3b16 | ||
|
|
78bb4f8bd2 | ||
|
|
ca38c7299b | ||
|
|
9cbb87750d | ||
|
|
f7dc3a3bcf | ||
|
|
2d16630dfb | ||
|
|
8a3ad5305c | ||
|
|
a21d962760 | ||
|
|
3b7e740f12 | ||
|
|
46b901ed20 | ||
|
|
9a92bed5a7 | ||
|
|
0cddfa69b7 | ||
|
|
b1c07aae39 | ||
|
|
07e73b3d4f | ||
|
|
cce32cfa48 | ||
|
|
e5d897923c | ||
|
|
0831bf6197 | ||
|
|
88f9d8e4b1 | ||
|
|
6cff1b5a22 | ||
|
|
f7d37a53f8 | ||
|
|
38083cfb4a | ||
|
|
8f78d806f1 | ||
|
|
56573db029 | ||
|
|
dc3a399d82 | ||
|
|
4d5bcfc92c | ||
|
|
f83522a7ea | ||
|
|
6d7ddd5052 | ||
|
|
8340efef51 | ||
|
|
c6bc073cd5 | ||
|
|
4319995c67 | ||
|
|
faa12f5fb1 | ||
|
|
dfeb1a21c3 | ||
|
|
4c504c7eaf | ||
|
|
a891f95cd8 | ||
|
|
7f4dc41eb0 | ||
|
|
94580bcb53 | ||
|
|
2d2e130631 | ||
|
|
5e76cd61fd | ||
|
|
b8f2846419 | ||
|
|
3dde451fb2 | ||
|
|
037101f317 | ||
|
|
044ad996c7 | ||
|
|
046f73a431 | ||
|
|
ae79cbb5e2 | ||
|
|
f380978bd1 | ||
|
|
0b9af8f543 | ||
|
|
b832a8ecfa | ||
|
|
afadc9e352 | ||
|
|
b5562199e6 | ||
|
|
3911337666 | ||
|
|
8c182d0f0a | ||
|
|
e0be81b50b | ||
|
|
37144c6b51 | ||
|
|
518f881a4d | ||
|
|
53580bc9ac | ||
|
|
6d19ef42d6 | ||
|
|
e8da049ec7 | ||
|
|
7801db0d1d | ||
|
|
488a7e078a | ||
|
|
2e6ed34e96 | ||
|
|
7d202faf48 | ||
|
|
61e9841375 | ||
|
|
07cf50b124 | ||
|
|
cb37687f0b | ||
|
|
28241daf45 | ||
|
|
b408dd2071 | ||
|
|
3d7c41d54a | ||
|
|
81e8bc7061 | ||
|
|
ad025c53d4 | ||
|
|
19f721112c | ||
|
|
bd85d96bc3 | ||
|
|
bdf48c11d6 | ||
|
|
6abeea9b17 | ||
|
|
128b7a8a22 | ||
|
|
9123230dab | ||
|
|
828ee3dbba | ||
|
|
ada040f4b8 | ||
|
|
934222c6ab | ||
|
|
7483a60765 | ||
|
|
29b8922a35 | ||
|
|
900fbafc55 | ||
|
|
e2b8cc6e8c | ||
|
|
59e262581a | ||
|
|
28be132c8e | ||
|
|
7f957bbfea | ||
|
|
8c85c9da1c | ||
|
|
f5e562a13b | ||
|
|
70bcbe4385 | ||
|
|
97c32181e7 | ||
|
|
7501ddee7d | ||
|
|
f4c2bea575 | ||
|
|
7c9aea76f6 | ||
|
|
15de92a8e8 | ||
|
|
bba1f03206 | ||
|
|
6af3bd1bad | ||
|
|
77ef273046 | ||
|
|
cb030c1bf2 | ||
|
|
ef31268755 | ||
|
|
9997b2caf6 | ||
|
|
0ab90cea38 | ||
|
|
7ff78587d2 | ||
|
|
cc412cf2df | ||
|
|
f46b7e0ade | ||
|
|
8bdf0e79f4 | ||
|
|
77c0af738e | ||
|
|
9244019ffa | ||
|
|
76d7dbc3fa | ||
|
|
8d85a328f7 | ||
|
|
b625ffb2d5 | ||
|
|
991b8158da | ||
|
|
570de82a40 | ||
|
|
3fc10b5cac | ||
|
|
4b20fbace2 | ||
|
|
356f2ef74e | ||
|
|
5248915cf2 | ||
|
|
e5e035bac8 | ||
|
|
96b24e9efb | ||
|
|
e48384766a | ||
|
|
02d04e66c4 | ||
|
|
0a19faae97 | ||
|
|
9204814253 | ||
|
|
6719c63988 | ||
|
|
d00a7e28dd | ||
|
|
4af6c13e8d | ||
|
|
9b51d4ad7a | ||
|
|
6e0e0a83cb | ||
|
|
d5ff9c7d54 | ||
|
|
9021ce09ee | ||
|
|
c3d37341f7 | ||
|
|
8138793f0c | ||
|
|
00f2d0d346 | ||
|
|
dc3bf136f4 | ||
|
|
b6584df35e | ||
|
|
4a0037a7ea | ||
|
|
a879d88de4 | ||
|
|
d26d0b9143 | ||
|
|
f6ed1f2222 | ||
|
|
558e8f04e8 | ||
|
|
b0e6b9c2d2 | ||
|
|
030bfabc03 | ||
|
|
75f646f16c | ||
|
|
0a72b53709 | ||
|
|
b106423172 | ||
|
|
df3d64c157 | ||
|
|
112a1d89ba | ||
|
|
8396a93c78 | ||
|
|
a18db100d8 | ||
|
|
0ab0640ca1 | ||
|
|
738923112d | ||
|
|
6dec1eda02 | ||
|
|
fc49bd4cb4 | ||
|
|
e23ee931d9 | ||
|
|
237fdad849 | ||
|
|
e686b0eb86 | ||
|
|
e5168660c2 | ||
|
|
f2a36fdb87 | ||
|
|
720c7281e5 | ||
|
|
b54bdbf63b | ||
|
|
5ee67336e9 | ||
|
|
b879b2c77b | ||
|
|
a3da393867 | ||
|
|
94208393d0 | ||
|
|
d9ccc96c21 | ||
|
|
d4b1f43490 | ||
|
|
3709eff914 | ||
|
|
920f190312 | ||
|
|
c71be122f3 | ||
|
|
7197c52aa3 | ||
|
|
420bc7bcaa | ||
|
|
89e926398d | ||
|
|
a3b6f7fb24 | ||
|
|
042bef7fb5 | ||
|
|
1ba4537895 | ||
|
|
b6072b7292 | ||
|
|
c9ee2ff7bd | ||
|
|
538dc24720 | ||
|
|
df838eb43a | ||
|
|
cfaeb29532 | ||
|
|
fb6da934b6 | ||
|
|
ec4ca01925 | ||
|
|
4621798e21 | ||
|
|
82302a2433 | ||
|
|
78f82e3242 | ||
|
|
8c33989ef1 | ||
|
|
7172b4923a | ||
|
|
910dddacfe | ||
|
|
205643455f | ||
|
|
05fc8f33d1 | ||
|
|
ee7e1a58bf | ||
|
|
dad035b3a6 | ||
|
|
ffaf599ba1 | ||
|
|
47fd5e6292 | ||
|
|
ba853da6d4 | ||
|
|
94628587b0 | ||
|
|
92a0796377 | ||
|
|
7285411626 | ||
|
|
394579959f | ||
|
|
4ac19cae05 | ||
|
|
68d6b9b135 | ||
|
|
a14004dedb | ||
|
|
0784d86937 | ||
|
|
d92a3a7275 | ||
|
|
8d52318999 | ||
|
|
318273518a | ||
|
|
506d938163 | ||
|
|
5e3c59e387 | ||
|
|
391b08709f | ||
|
|
080454bff5 | ||
|
|
b2ebaad1d0 | ||
|
|
6f6d455221 | ||
|
|
94a2881e20 | ||
|
|
232b80107d | ||
|
|
2163c3d378 | ||
|
|
86971a4e41 | ||
|
|
a1c00de35a | ||
|
|
77552e0712 | ||
|
|
b2447ea662 | ||
|
|
c75a974631 | ||
|
|
57e0028102 | ||
|
|
e19ed7024c | ||
|
|
595a6c67e1 | ||
|
|
cc36ec311a | ||
|
|
1d40b4380d | ||
|
|
4bd1abd56c | ||
|
|
83b5308362 | ||
|
|
0ba33f9ca5 | ||
|
|
538d6a2268 | ||
|
|
0e9eae9a82 | ||
|
|
ba58071860 | ||
|
|
009a5f4d5e | ||
|
|
f28bfb4510 | ||
|
|
d34f623351 | ||
|
|
6e4314199e | ||
|
|
3f5d546330 | ||
|
|
cca7cbf3ca | ||
|
|
748efbbfa7 | ||
|
|
7126dd3aad | ||
|
|
438d2ae692 | ||
|
|
0820dbaa9b | ||
|
|
7003238b9f | ||
|
|
a6c4a6149e | ||
|
|
72c3ae9e0c | ||
|
|
dc1f1d4708 | ||
|
|
02e2cfba89 | ||
|
|
0880d74d59 | ||
|
|
6b0d80eaa9 | ||
|
|
702377a51b | ||
|
|
b856266541 | ||
|
|
e41e3b6da0 | ||
|
|
355bbdf142 | ||
|
|
5635ca7578 | ||
|
|
c7540800f7 | ||
|
|
a5aabd55a9 | ||
|
|
df6d2a35ff | ||
|
|
32a7b6c17d | ||
|
|
a77a92050a | ||
|
|
3ea4b7bf4b | ||
|
|
b6c8f2b1e9 | ||
|
|
a10c21308a | ||
|
|
9d8f892281 | ||
|
|
67ab0819d8 | ||
|
|
5cef83e154 | ||
|
|
78ac1a1796 | ||
|
|
28d8004c48 | ||
|
|
de3180eda1 | ||
|
|
498fc7dd75 | ||
|
|
8bed45c5f7 | ||
|
|
fde62a4ea5 | ||
|
|
8e08c6f1a9 | ||
|
|
2e38126db7 | ||
|
|
a9c15dc01b | ||
|
|
b5abd12f0b | ||
|
|
3992db23a3 | ||
|
|
ea37fc9a95 | ||
|
|
48ab156806 | ||
|
|
1fd360890a | ||
|
|
2a4bdf3e5d | ||
|
|
48dff276d4 | ||
|
|
a63df2d7df | ||
|
|
58e55f93c7 | ||
|
|
5ce5064a5c | ||
|
|
2c19c8d6d0 | ||
|
|
4ea1438fca | ||
|
|
7d41a96a4d | ||
|
|
704474abfa | ||
|
|
1dfe4703ad | ||
|
|
4555128053 | ||
|
|
14c0558a20 | ||
|
|
4746946fd4 | ||
|
|
45598f1eec | ||
|
|
806ff8fb87 | ||
|
|
c1a316ca92 | ||
|
|
af66a2b721 | ||
|
|
bfdeb68547 | ||
|
|
3a8890e7d3 | ||
|
|
02d1710d0b | ||
|
|
c9389b5695 | ||
|
|
35012c5a27 | ||
|
|
d91422e941 | ||
|
|
fbfcd27d24 | ||
|
|
8921df2456 | ||
|
|
ea04cfcf3c | ||
|
|
4ac88d9a6b | ||
|
|
ce40298233 | ||
|
|
08609ba15e | ||
|
|
c715ecd338 | ||
|
|
e2f5cd1d64 | ||
|
|
f5cfc652a0 | ||
|
|
474fc20f57 | ||
|
|
366d630624 | ||
|
|
d224e0d080 | ||
|
|
3b81361985 | ||
|
|
864b77cb82 | ||
|
|
383375cf32 | ||
|
|
260a15a7cd | ||
|
|
d5f76a0f63 | ||
|
|
f539205b80 | ||
|
|
35ec3f98eb | ||
|
|
745e668a65 | ||
|
|
ae09fce946 | ||
|
|
9c326df399 | ||
|
|
a5b925102b | ||
|
|
8c6ba43c68 | ||
|
|
6bf6418d40 | ||
|
|
94605bb43a | ||
|
|
79d0624aa9 | ||
|
|
d876aa1ef1 | ||
|
|
61008fee00 | ||
|
|
d01c574b2a | ||
|
|
5158019b71 | ||
|
|
787f7a7224 | ||
|
|
583a96eac0 | ||
|
|
146dd36057 | ||
|
|
9ad12425a4 | ||
|
|
9370ef5a96 | ||
|
|
feecaa2903 | ||
|
|
eae02cde6c | ||
|
|
76e538b409 | ||
|
|
3b32acdea8 | ||
|
|
88df1c21cf | ||
|
|
6fa069f01e | ||
|
|
3615b8803d | ||
|
|
9cea2af9e5 | ||
|
|
75a7eb091d | ||
|
|
b6ad3d4e53 | ||
|
|
7c6ac30901 | ||
|
|
ba675eec53 | ||
|
|
1a053da9d2 | ||
|
|
043287e35a | ||
|
|
edf9506add | ||
|
|
3708ce4221 | ||
|
|
bbb480dc4c | ||
|
|
02bd338313 | ||
|
|
cca373feac | ||
|
|
22a83fbd6d | ||
|
|
54adf49e54 | ||
|
|
0ca579bf79 | ||
|
|
aef9b14a94 | ||
|
|
9fcd10af8f | ||
|
|
8c1a7748c1 | ||
|
|
227336a4e1 | ||
|
|
08572901d4 | ||
|
|
f3e6dd7d1d | ||
|
|
e4fe5b5b8a | ||
|
|
74fdfc0708 | ||
|
|
238e53eb6e | ||
|
|
c80ea07744 | ||
|
|
ff2ae76704 | ||
|
|
8679c97056 | ||
|
|
e78b0075b1 | ||
|
|
2bb5a588c6 | ||
|
|
f99beb2d0b | ||
|
|
7528b50859 | ||
|
|
2d51f0f97f | ||
|
|
9e77ee43e2 | ||
|
|
e7b2b38bcb | ||
|
|
20c4c910d8 | ||
|
|
06e429dfc3 | ||
|
|
6aee0fc9d5 | ||
|
|
b9cd9174ae | ||
|
|
ccfccc5e44 | ||
|
|
7c12e2517d | ||
|
|
48514d291b | ||
|
|
18bed54d22 | ||
|
|
45a1e9b3e0 | ||
|
|
2cb1af8a7e | ||
|
|
919334b760 | ||
|
|
55cc618b49 | ||
|
|
74a4197633 | ||
|
|
9557371eb5 | ||
|
|
040c1186ca | ||
|
|
a1ddfb9ad2 | ||
|
|
2aab5d4cb1 | ||
|
|
87c7467a86 | ||
|
|
039c3d4898 | ||
|
|
d40cd62561 | ||
|
|
48a6d01bfc | ||
|
|
005ae5811a | ||
|
|
ceb8624714 | ||
|
|
3ef3a10644 | ||
|
|
f1daca6c8b | ||
|
|
da9db072b2 | ||
|
|
619c4315cd | ||
|
|
a59e168fdf | ||
|
|
ddb5d33958 | ||
|
|
dfe51dcd20 | ||
|
|
7548ef10a0 | ||
|
|
45a5865cf4 | ||
|
|
19fe6f5358 | ||
|
|
46fb18164c | ||
|
|
c7c7598372 | ||
|
|
9d80eaeaa5 | ||
|
|
f23a8d4d42 | ||
|
|
fb4a071ed6 | ||
|
|
f7f96a1576 | ||
|
|
7642019bf7 | ||
|
|
216440520f | ||
|
|
4d17d622ae | ||
|
|
0e7e97392c | ||
|
|
214552fd62 | ||
|
|
ad4ba14de4 | ||
|
|
ea1b5bde3a | ||
|
|
2de08020d6 | ||
|
|
16a1930c5a | ||
|
|
cfa591c554 | ||
|
|
57d76426f8 | ||
|
|
5ef2244e1e | ||
|
|
ebb22ca471 | ||
|
|
80888d28dd | ||
|
|
f0851029d4 | ||
|
|
0898857774 | ||
|
|
93c52bc6d8 | ||
|
|
2f4ebe9be6 | ||
|
|
0de592fd08 | ||
|
|
fd00c7403b | ||
|
|
4a6f000d29 | ||
|
|
f6f52e51dc | ||
|
|
191aae3f52 | ||
|
|
3439f35f8b | ||
|
|
ec31bd7866 | ||
|
|
1274c4eb95 | ||
|
|
bb2b9a68fe | ||
|
|
c2c8b5ecac | ||
|
|
18c75e85b9 | ||
|
|
b34cf53081 | ||
|
|
e87a7a1ead | ||
|
|
33c8475c0a | ||
|
|
5d4c6f9a01 | ||
|
|
6ff36286d9 | ||
|
|
53bdf4212a | ||
|
|
9908ac7826 | ||
|
|
325ebba4bb | ||
|
|
a044a678af | ||
|
|
eca2c24baf | ||
|
|
075098a5cf | ||
|
|
466b65f19b | ||
|
|
a7ccdddd0f | ||
|
|
df20418f55 | ||
|
|
2bb88d57c8 | ||
|
|
d026338c35 | ||
|
|
95f72ac42d | ||
|
|
323b513506 | ||
|
|
44d627ff0c | ||
|
|
22a1ec1dae | ||
|
|
93ff403026 | ||
|
|
8631920c87 | ||
|
|
4a08813385 | ||
|
|
7a19facf9c | ||
|
|
5562cbcc77 | ||
|
|
40b18c4812 | ||
|
|
6453810d10 | ||
|
|
1cf924bbb8 | ||
|
|
dffd40ebf1 | ||
|
|
551af58c33 | ||
|
|
c6f95fab7e | ||
|
|
8e79672ae7 | ||
|
|
46dac997fa | ||
|
|
b22f8f18e7 | ||
|
|
11faeb3e4d | ||
|
|
a9251e1b24 | ||
|
|
435c7ec43b | ||
|
|
bc897d8af3 | ||
|
|
f4f155705d | ||
|
|
c5d9b5fc1f | ||
|
|
8629f10f6c | ||
|
|
587b342569 | ||
|
|
77dfe4189a | ||
|
|
8e7482c900 | ||
|
|
bed8bdd374 | ||
|
|
a1fa1a2e3c | ||
|
|
bbeb9daeb4 | ||
|
|
0aa151cc42 | ||
|
|
1626124e97 | ||
|
|
27f382f27f | ||
|
|
6d3e2d62a5 | ||
|
|
50991b7873 | ||
|
|
0ca2bf3454 | ||
|
|
c7fbcbb936 | ||
|
|
0dc6d9cd78 | ||
|
|
02595aef9d | ||
|
|
96ba44c307 | ||
|
|
2a34efb80c | ||
|
|
9938033b23 | ||
|
|
9af290951e | ||
|
|
ad95d66493 | ||
|
|
81a8b5a5a7 | ||
|
|
a411abfbfd | ||
|
|
4bd3b9f681 | ||
|
|
206c7243fd | ||
|
|
c7d8274bcb | ||
|
|
0cf7a428f7 | ||
|
|
38cf157431 | ||
|
|
3cfaa407e8 | ||
|
|
098db6c2e2 | ||
|
|
40067c31a0 | ||
|
|
472b3b0ba5 | ||
|
|
998c2b9975 | ||
|
|
32a044d2a1 | ||
|
|
c37a962f27 | ||
|
|
4c274f42a8 | ||
|
|
fe56376510 | ||
|
|
25e20017e4 | ||
|
|
efd558b390 | ||
|
|
4684ece812 | ||
|
|
67ce88dd5d | ||
|
|
780dd28810 | ||
|
|
cec40fe20c | ||
|
|
0e3cbe546b | ||
|
|
a97a0656cc | ||
|
|
cbef476e84 | ||
|
|
51f520d655 | ||
|
|
969a4d2964 | ||
|
|
e29225e451 | ||
|
|
99918571d3 | ||
|
|
75b5aa9a3f | ||
|
|
572743203f | ||
|
|
6c95df9155 | ||
|
|
e26f1613e7 | ||
|
|
a29c0818ed | ||
|
|
f1764681a8 | ||
|
|
5ba2060672 | ||
|
|
7366020800 | ||
|
|
9c421368a2 | ||
|
|
b858072e76 | ||
|
|
0a4a16cd45 | ||
|
|
a9fb6bbc0d | ||
|
|
52467a3ab6 | ||
|
|
b2ef9b31a2 | ||
|
|
07898eeb8b | ||
|
|
1f908ca202 | ||
|
|
179cf4fbc5 | ||
|
|
4d49a2b2c7 | ||
|
|
63aabb70e7 | ||
|
|
f58259f1b2 | ||
|
|
ce45c71fe8 | ||
|
|
bf628b4fc8 | ||
|
|
920dcca45a | ||
|
|
c7d410617c | ||
|
|
b5258b1793 | ||
|
|
88f399248d | ||
|
|
a166004204 | ||
|
|
c7588619dd | ||
|
|
3f3013f86a | ||
|
|
d8c4e14fd4 | ||
|
|
46b646a6da | ||
|
|
ef46bf0e23 | ||
|
|
476b1d6689 | ||
|
|
77493fae47 | ||
|
|
39ea444a3d | ||
|
|
6fe7892ae5 | ||
|
|
cf2967ece5 | ||
|
|
7d5847057d |
5
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -32,5 +32,10 @@ If applicable, add screenshots to help explain your problem.
|
||||
- OS: [e.g. iOS8.1]
|
||||
- Version [e.g. 22]
|
||||
|
||||
**Append a debug log**
|
||||
|
||||
Follow this guide https://github.com/cagnulein/qdomyos-zwift/wiki/How-do-i-get-the-debug-log-in-case-something-doesn't-work%3F
|
||||
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
|
||||
17
.github/stale.yml
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
# Number of days of inactivity before an issue becomes stale
|
||||
daysUntilStale: 15
|
||||
# Number of days of inactivity before a stale issue is closed
|
||||
daysUntilClose: 7
|
||||
# Issues with these labels will never be considered stale
|
||||
exemptLabels:
|
||||
- pinned
|
||||
- security
|
||||
# Label to use when marking an issue as stale
|
||||
staleLabel: wontfix
|
||||
# Comment to post when marking an issue as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This issue has been automatically marked as stale because it has not had
|
||||
recent activity. It will be closed if no further activity occurs. Thank you
|
||||
for your contributions.
|
||||
# Comment to post when closing a stale issue. Set to `false` to disable
|
||||
#closeComment: false
|
||||
43
.github/workflows/build_ios.yml
vendored
@@ -1,43 +0,0 @@
|
||||
# This is a basic workflow to help you get started with Actions
|
||||
|
||||
name: build-ios
|
||||
|
||||
# Controls when the workflow will run
|
||||
on:
|
||||
# Triggers the workflow on push or pull request events but only for the master branch
|
||||
#push:
|
||||
# branches: [ master ]
|
||||
#pull_request:
|
||||
# branches: [ master ]
|
||||
|
||||
# Allows you to run this workflow manually from the Actions tab
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build: # make sure build/ci work properly
|
||||
runs-on: macOS-latest
|
||||
timeout-minutes: 90
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: Apple-Actions/import-codesign-certs@v1
|
||||
with:
|
||||
p12-file-base64: ${{ secrets.CERTIFICATES_FILE_BASE64 }}
|
||||
p12-password: ${{ secrets.CERTIFICATES_PASSWORD }}
|
||||
- uses: Apple-Actions/download-provisioning-profiles@v1
|
||||
with:
|
||||
bundle-id: org.cagnulein.qdomyoszwift
|
||||
issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
|
||||
api-key-id: ${{ secrets.APPSTORE_KEY_ID }}
|
||||
api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }}
|
||||
- name: "#️⃣ Generate Build Number"
|
||||
id: buildnumber
|
||||
uses: einaregilsson/build-number@v2
|
||||
with:
|
||||
token: ${{ secrets.github_token }}
|
||||
- run: ./Build
|
||||
# - uses: Apple-Actions/upload-testflight-build@master
|
||||
# with:
|
||||
# app-path: .build/Artifacts/Example-iOS.ipa/Example-iOS.ipa
|
||||
# issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
|
||||
# api-key-id: ${{ secrets.APPSTORE_KEY_ID }}
|
||||
# api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }}
|
||||
113
.github/workflows/main.yml
vendored
@@ -8,6 +8,7 @@ env:
|
||||
# Controls when the action will run. Triggers the workflow on push or pull request
|
||||
# events but only for the master branch
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches: [ master, github-workflow-playground ]
|
||||
pull_request:
|
||||
@@ -17,6 +18,86 @@ on:
|
||||
|
||||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
||||
jobs:
|
||||
window-build:
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Checkout submodule repo
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: bluetiger9/SmtpClient-for-Qt
|
||||
path: "src/smtpclient/"
|
||||
ref: 3fa4a0fe5797070339422cf18b5e9ed8dcb91f9c
|
||||
|
||||
- uses: actions/checkout@v2
|
||||
- name: Checkout submodule repo
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: cagnulein/qmdnsengine
|
||||
path: "src/qmdnsengine/"
|
||||
ref: "zwift"
|
||||
|
||||
- uses: actions/checkout@v2
|
||||
- name: Checkout submodule repo
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: microsoft/MSIX-Toolkit
|
||||
path: "src/MSIX-Toolkit/"
|
||||
ref: b82af826d29e93e4c85d34fad8a405b6c49905e7
|
||||
|
||||
- uses: msys2/setup-msys2@v2
|
||||
with:
|
||||
install: mingw-w64-x86_64-toolchain
|
||||
msystem: mingw64
|
||||
release: false
|
||||
|
||||
- name: Setup cmake
|
||||
uses: jwlawson/actions-setup-cmake@v1.9
|
||||
with:
|
||||
cmake-version: '3.20.x'
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v2
|
||||
with:
|
||||
version: '5.15.2'
|
||||
host: 'windows'
|
||||
modules: 'qtnetworkauth qtcharts'
|
||||
target: "desktop"
|
||||
arch: win64_mingw81
|
||||
dir: "${{github.workspace}}/qt/"
|
||||
install-deps: "true"
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
cd src
|
||||
qmake
|
||||
echo "#define STRAVA_SECRET_KEY ${{ secrets.strava_secret_key }}" > secret.h
|
||||
echo "#define SMTP_USERNAME ${{ secrets.smtp_username }}" >> secret.h
|
||||
echo "#define SMTP_PASSWORD ${{ secrets.smtp_password }}" >> secret.h
|
||||
echo "#define SMTP_SERVER ${{ secrets.smtp_server }}" >> secret.h
|
||||
make -j8
|
||||
cd debug
|
||||
mkdir output
|
||||
mkdir appx
|
||||
cp qdomyos-zwift.exe output/
|
||||
cd output
|
||||
windeployqt --qmldir ../../ qdomyos-zwift.exe
|
||||
cp "${{github.workspace}}/qt/Qt/5.15.2/mingw81_64/bin/libwinpthread-1.dll" .
|
||||
cp "${{github.workspace}}/qt/Qt/5.15.2/mingw81_64/bin/libgcc_s_seh-1.dll" .
|
||||
cp "${{github.workspace}}/qt/Qt/5.15.2/mingw81_64/bin/libstdc++-6.dll" .
|
||||
cp ../../../icons/iOS/iTunesArtwork@2x.png .
|
||||
cp ../../AppxManifest.xml .
|
||||
cd ..
|
||||
cd appx
|
||||
#../../MSIX-Toolkit/WindowsSDK/10/10.0.20348.0/x64/makeappx.exe pack /d ../output/ /p qz
|
||||
|
||||
- name: Archive windows binary
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: windows-binary
|
||||
path: src/debug/output
|
||||
|
||||
# This workflow contains a single job called "build"
|
||||
build:
|
||||
# The type of runner that the job will run on
|
||||
@@ -50,9 +131,25 @@ jobs:
|
||||
with:
|
||||
repository: bluetiger9/SmtpClient-for-Qt
|
||||
path: "src/smtpclient/"
|
||||
ref: 3fa4a0fe5797070339422cf18b5e9ed8dcb91f9c
|
||||
|
||||
- uses: actions/checkout@v2
|
||||
- name: Checkout submodule repo
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: cagnulein/qmdnsengine
|
||||
path: "src/qmdnsengine/"
|
||||
ref: "zwift"
|
||||
|
||||
- name: Install packages required to run QZ inside workflow
|
||||
run: sudo apt-get install -y qt5-default libqt5bluetooth5 libqt5widgets5 libqt5positioning5 libqt5xml5 qtconnectivity5-dev qtpositioning5-dev libqt5charts5-dev libqt5charts5 qt5-default libqt5networkauth5-dev libqt5websockets5* libxcb-randr0-dev libxcb-xtest0-dev libxcb-xinerama0-dev libxcb-shape0-dev libxcb-xkb-dev
|
||||
run: sudo apt update -y && sudo apt-get install -y qt5-default qtquickcontrols2-5-dev libqt5bluetooth5 libqt5widgets5 libqt5positioning5 libqt5xml5 qtconnectivity5-dev qtpositioning5-dev libqt5charts5-dev libqt5charts5 qt5-default libqt5networkauth5-dev libqt5websockets5* libxcb-randr0-dev libxcb-xtest0-dev libxcb-xinerama0-dev libxcb-shape0-dev libxcb-xkb-dev
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v2
|
||||
with:
|
||||
version: '5.15.2'
|
||||
host: 'linux'
|
||||
modules: 'qtnetworkauth qtcharts'
|
||||
|
||||
- name: Compile Linux Desktop
|
||||
run: cd src; qmake; make -j8
|
||||
@@ -63,14 +160,14 @@ jobs:
|
||||
name: linux-desktop-binary
|
||||
path: src/qdomyos-zwift
|
||||
|
||||
- name: Test Peloton API
|
||||
if: github.event_name == 'push' || github.event_name == 'schedule'
|
||||
run: cd /home/runner/work/qdomyos-zwift/qdomyos-zwift/src/; ./qdomyos-zwift -test-peloton -peloton-username ${{ secrets.peloton_username }} -peloton-password ${{ secrets.peloton_password }}
|
||||
timeout-minutes: 2
|
||||
# - name: Test Peloton API
|
||||
# if: github.event_name == 'push' || github.event_name == 'schedule'
|
||||
# run: cd /home/runner/work/qdomyos-zwift/qdomyos-zwift/src/; ./qdomyos-zwift -test-peloton -peloton-username ${{ secrets.peloton_username }} -peloton-password ${{ secrets.peloton_password }}
|
||||
# timeout-minutes: 2
|
||||
|
||||
- name: Test Home Fitness Buddy API
|
||||
run: cd /home/runner/work/qdomyos-zwift/qdomyos-zwift/src/; ./qdomyos-zwift -test-hfb
|
||||
timeout-minutes: 2
|
||||
# - name: Test Home Fitness Buddy API
|
||||
# run: cd /home/runner/work/qdomyos-zwift/qdomyos-zwift/src/; ./qdomyos-zwift -test-hfb
|
||||
# timeout-minutes: 2
|
||||
|
||||
# - uses: actions/checkout@v2
|
||||
# with:
|
||||
|
||||
12
.gitignore
vendored
@@ -18,9 +18,15 @@ src/build/*
|
||||
|
||||
src/debug-*
|
||||
|
||||
src/secret.h
|
||||
|
||||
*.swo
|
||||
*.swp
|
||||
|
||||
build-qdomyos-zwift-Android_Qt_5_15_2_Clang_Multi_Abi-Debug/*
|
||||
**/node_modules/*
|
||||
*.pro.user
|
||||
|
||||
template-examples/youtube-viewer/node_modules/*
|
||||
template-examples/youtube-viewer/*.json
|
||||
template-examples/youtube-viewer/.eslintrc.js
|
||||
@@ -33,3 +39,9 @@ template-examples/train-program-saver/*.json
|
||||
template-examples/train-program-saver/.eslintrc.js
|
||||
template-examples/train-program-saver/.jshintrc
|
||||
template-examples/train-program-saver/debug.js
|
||||
|
||||
# Qt-es
|
||||
*.pro.user
|
||||
*build-*
|
||||
!build-qdomyos-zwift-Qt_*_for_iOS-Debug # Needed for Apple Watch
|
||||
src/inner_templates/googlemaps/cesium-key.js
|
||||
|
||||
7
.gitmodules
vendored
@@ -3,4 +3,9 @@
|
||||
url = https://github.com/KDAB/android_openssl.git
|
||||
[submodule "src/smtpclient"]
|
||||
path = src/smtpclient
|
||||
url = https://github.com/bluetiger9/SmtpClient-for-Qt.git
|
||||
url = https://github.com/cagnulein/SmtpClient-for-Qt.git
|
||||
branch = cagnulein-patch-2
|
||||
[submodule "src/qmdnsengine"]
|
||||
path = src/qmdnsengine
|
||||
url = https://github.com/cagnulein/qmdnsengine.git
|
||||
branch = zwift
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# qdomyos-zwift
|
||||
Zwift bridge for Treadmills and Bike!
|
||||
|
||||
## QZ is not affiliated with or endorsed by any subscription service or maker of exercise equipment.
|
||||
|
||||
[<img src="docs/img/google_play.png">](https://play.google.com/store/apps/details?id=org.cagnulen.qdomyoszwift&fbclid=IwAR3CVoYb0scvGf7gb0Y20VFh5Na5fDWwe7VACk-2c45Tm0x5s8sXpIGhGyw)
|
||||
[<img src="docs/img/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>
|
||||
|
||||
@@ -54,8 +54,10 @@
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<RemoteRunnable
|
||||
runnableDebuggingMode = "2"
|
||||
BundleIdentifier = "com.apple.Carousel"
|
||||
RemotePath = "/qdomyoszwift">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "876E4E102594747F00BD5714"
|
||||
@@ -63,7 +65,7 @@
|
||||
BlueprintName = "watchkit"
|
||||
ReferencedContainer = "container:qdomyoszwift.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</RemoteRunnable>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
@@ -71,8 +73,10 @@
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<RemoteRunnable
|
||||
runnableDebuggingMode = "2"
|
||||
BundleIdentifier = "com.apple.Carousel"
|
||||
RemotePath = "/qdomyoszwift">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "876E4E102594747F00BD5714"
|
||||
@@ -80,7 +84,16 @@
|
||||
BlueprintName = "watchkit"
|
||||
ReferencedContainer = "container:qdomyoszwift.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</RemoteRunnable>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "876E4E102594747F00BD5714"
|
||||
BuildableName = "watchkit.app"
|
||||
BlueprintName = "watchkit"
|
||||
ReferencedContainer = "container:qdomyoszwift.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
|
||||
@@ -193,6 +193,38 @@
|
||||
endingLineNumber = "57"
|
||||
landmarkName = "BLEPeripheralManager"
|
||||
landmarkType = "3">
|
||||
<Locations>
|
||||
<Location
|
||||
uuid = "16D24B27-D0FB-4EC3-BAE8-56101FE7949B - 1c798ec95ff8d4b7"
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "qdomyoszwift.BLEPeripheralManager.crankRevolutions.modify : Swift.Optional<Swift.UInt16>"
|
||||
moduleName = "qdomyoszwift"
|
||||
usesParentBreakpointCondition = "Yes"
|
||||
urlString = "file:///Users/cagnulein/qdomyos-zwift/build-qdomyos-zwift-Qt_5_15_2_for_iOS-Debug/%3Ccompiler-generated%3E"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "0"
|
||||
endingLineNumber = "0"
|
||||
offsetFromSymbolStart = "16">
|
||||
</Location>
|
||||
<Location
|
||||
uuid = "16D24B27-D0FB-4EC3-BAE8-56101FE7949B - 5ebbef0dc9913f07"
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "qdomyoszwift.BLEPeripheralManager.init() -> qdomyoszwift.BLEPeripheralManager"
|
||||
moduleName = "qdomyoszwift"
|
||||
usesParentBreakpointCondition = "Yes"
|
||||
urlString = "file:///Users/cagnulein/qdomyos-zwift/src/ios/BLEPeripheralManager.swift"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "57"
|
||||
endingLineNumber = "57"
|
||||
offsetFromSymbolStart = "132">
|
||||
</Location>
|
||||
</Locations>
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
@@ -335,7 +367,7 @@
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "38"
|
||||
endingLineNumber = "38"
|
||||
landmarkName = "lockscreen::virtualbike_setHeartRate(heartRate)"
|
||||
landmarkName = "lockscreen::stepCadence()"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
@@ -343,7 +375,7 @@
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
uuid = "FE5697FF-F44C-43C2-A98D-C400EE56F047"
|
||||
shouldBeEnabled = "Yes"
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "../src/ios/lockscreen.mm"
|
||||
@@ -351,8 +383,8 @@
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "44"
|
||||
endingLineNumber = "44"
|
||||
landmarkName = "lockscreen::virtualbike_setCadence(crankRevolutions, lastCrankEventTime)"
|
||||
landmarkType = "7">
|
||||
landmarkName = "unknown"
|
||||
landmarkType = "0">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
@@ -367,7 +399,7 @@
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "37"
|
||||
endingLineNumber = "37"
|
||||
landmarkName = "lockscreen::virtualbike_setHeartRate(heartRate)"
|
||||
landmarkName = "lockscreen::stepCadence()"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
@@ -375,7 +407,7 @@
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
uuid = "3DBE0495-050A-4979-85D4-28B78676F212"
|
||||
shouldBeEnabled = "Yes"
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "../src/ios/lockscreen.mm"
|
||||
@@ -383,7 +415,7 @@
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "43"
|
||||
endingLineNumber = "43"
|
||||
landmarkName = "lockscreen::virtualbike_setCadence(crankRevolutions, lastCrankEventTime)"
|
||||
landmarkName = "lockscreen::setKcal(kcal)"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
@@ -399,7 +431,7 @@
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "32"
|
||||
endingLineNumber = "32"
|
||||
landmarkName = "lockscreen::virtualbike_ios()"
|
||||
landmarkName = "lockscreen::heartRate()"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
@@ -431,7 +463,7 @@
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "35"
|
||||
endingLineNumber = "35"
|
||||
offsetFromSymbolStart = "22">
|
||||
offsetFromSymbolStart = "32">
|
||||
</Location>
|
||||
<Location
|
||||
uuid = "18F27065-9FB2-44A2-99D0-7D41061141A3 - 4daffae51fb2d733"
|
||||
@@ -446,7 +478,7 @@
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "35"
|
||||
endingLineNumber = "35"
|
||||
offsetFromSymbolStart = "28">
|
||||
offsetFromSymbolStart = "36">
|
||||
</Location>
|
||||
</Locations>
|
||||
</BreakpointContent>
|
||||
|
||||
62
build-qdomyos-zwift-Qt_5_15_2_for_iOS-Debug/qz.storekit
Normal file
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"identifier" : "2816EB89",
|
||||
"nonRenewingSubscriptions" : [
|
||||
|
||||
],
|
||||
"products" : [
|
||||
|
||||
],
|
||||
"settings" : {
|
||||
|
||||
},
|
||||
"subscriptionGroups" : [
|
||||
{
|
||||
"id" : "F012E388",
|
||||
"localizations" : [
|
||||
|
||||
],
|
||||
"name" : "Swag Bag",
|
||||
"subscriptions" : [
|
||||
{
|
||||
"adHocOffers" : [
|
||||
|
||||
],
|
||||
"codeOffers" : [
|
||||
|
||||
],
|
||||
"displayPrice" : "1.99",
|
||||
"familyShareable" : false,
|
||||
"groupNumber" : 1,
|
||||
"internalID" : "F108BD35",
|
||||
"introductoryOffer" : null,
|
||||
"localizations" : [
|
||||
{
|
||||
"description" : "Swag Bag",
|
||||
"displayName" : "Swag Bag",
|
||||
"locale" : "en_US"
|
||||
},
|
||||
{
|
||||
"description" : "Swag Bag",
|
||||
"displayName" : "Swag Bag",
|
||||
"locale" : "en_GB"
|
||||
},
|
||||
{
|
||||
"description" : "Swag Bag",
|
||||
"displayName" : "Swag Bag",
|
||||
"locale" : "it"
|
||||
}
|
||||
],
|
||||
"productID" : "org.cagnulein.qdomyoszwift.swagbag",
|
||||
"recurringSubscriptionPeriod" : "P1M",
|
||||
"referenceName" : "SwagBag",
|
||||
"subscriptionGroupID" : "F012E388",
|
||||
"type" : "RecurringSubscription"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"version" : {
|
||||
"major" : 1,
|
||||
"minor" : 2
|
||||
}
|
||||
}
|
||||
@@ -1,21 +1,25 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "circular38mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : "<=145"
|
||||
},
|
||||
{
|
||||
"filename" : "circular40mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">161"
|
||||
},
|
||||
{
|
||||
"filename" : "circular42mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">145"
|
||||
},
|
||||
{
|
||||
"filename" : "circular44mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">183"
|
||||
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
@@ -1,21 +1,25 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "extra-large38mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : "<=145"
|
||||
},
|
||||
{
|
||||
"filename" : "extra-large40mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">161"
|
||||
},
|
||||
{
|
||||
"filename" : "extra-large42mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">145"
|
||||
},
|
||||
{
|
||||
"filename" : "extra-large44mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">183"
|
||||
|
||||
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 15 KiB |
@@ -1,11 +1,13 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "graphic-bezel40mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">161"
|
||||
},
|
||||
{
|
||||
"filename" : "graphic-bezel44mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">183"
|
||||
|
||||
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
@@ -1,11 +1,13 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "graphic-circular40mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">161"
|
||||
},
|
||||
{
|
||||
"filename" : "graphic-circular44mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">183"
|
||||
|
||||
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
@@ -1,11 +1,13 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "graphic-corner40mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">161"
|
||||
},
|
||||
{
|
||||
"filename" : "graphic-corner44mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">183"
|
||||
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
@@ -1,21 +1,25 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "graphic-extra-large38mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : "<=145"
|
||||
},
|
||||
{
|
||||
"filename" : "graphic-extra-large40mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">161"
|
||||
},
|
||||
{
|
||||
"filename" : "graphic-extra-large42mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">145"
|
||||
},
|
||||
{
|
||||
"filename" : "graphic-extra-large44mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">183"
|
||||
|
||||
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 18 KiB |
@@ -1,11 +1,13 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "graphic-large-rectangular40mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">161"
|
||||
},
|
||||
{
|
||||
"filename" : "graphic-large-rectangular44mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">183"
|
||||
|
||||
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 9.3 KiB |
@@ -1,21 +1,25 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "modular38mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : "<=145"
|
||||
},
|
||||
{
|
||||
"filename" : "modular40mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">161"
|
||||
},
|
||||
{
|
||||
"filename" : "modular42mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">145"
|
||||
},
|
||||
{
|
||||
"filename" : "modular44mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">183"
|
||||
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
@@ -1,21 +1,25 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "utility38mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : "<=145"
|
||||
},
|
||||
{
|
||||
"filename" : "utility40mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">161"
|
||||
},
|
||||
{
|
||||
"filename" : "utility42mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">145"
|
||||
},
|
||||
{
|
||||
"filename" : "utility44mm@2x.png",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"screen-width" : ">183"
|
||||
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
@@ -13,6 +13,59 @@ class ComplicationController: NSObject, CLKComplicationDataSource {
|
||||
|
||||
// MARK: - Timeline Configuration
|
||||
|
||||
private func templateForComplication(complication: CLKComplication) -> CLKComplicationTemplate? {
|
||||
// Init default output:
|
||||
var template: CLKComplicationTemplate? = nil
|
||||
|
||||
// Graphic Complications are only availably since watchOS 5.0:
|
||||
if #available(watchOSApplicationExtension 5.0, *) {
|
||||
// NOTE: Watch faces that support graphic templates are available only on Apple Watch Series 4 or later. So the binary on older devices (e.g. Watch Series 3) will not contain the images.
|
||||
if complication.family == .graphicCircular {
|
||||
let imageTemplate = CLKComplicationTemplateGraphicCircularImage()
|
||||
// Check if asset exists, to prevent crash on non-supported devices:
|
||||
if let fullColorImage = UIImage(named: "Complication/Graphic Circular") {
|
||||
let imageProvider = CLKFullColorImageProvider.init(fullColorImage: fullColorImage)
|
||||
imageTemplate.imageProvider = imageProvider
|
||||
template = imageTemplate
|
||||
}
|
||||
}
|
||||
else if complication.family == .graphicCorner {
|
||||
let imageTemplate = CLKComplicationTemplateGraphicCornerCircularImage()
|
||||
// Check if asset exists, to prevent crash on non-supported devices:
|
||||
if let fullColorImage = UIImage(named: "Complication/Graphic Corner") {
|
||||
let imageProvider = CLKFullColorImageProvider.init(fullColorImage: fullColorImage)
|
||||
imageTemplate.imageProvider = imageProvider
|
||||
template = imageTemplate
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// For all watchOS versions:
|
||||
if complication.family == .circularSmall {
|
||||
let imageTemplate = CLKComplicationTemplateCircularSmallSimpleImage()
|
||||
let imageProvider = CLKImageProvider(onePieceImage: UIImage(named: "Complication/Circular")!)
|
||||
imageProvider.tintColor = UIColor.blue
|
||||
imageTemplate.imageProvider = imageProvider
|
||||
template = imageTemplate
|
||||
}
|
||||
else if complication.family == .modularSmall {
|
||||
let imageTemplate = CLKComplicationTemplateModularSmallSimpleImage()
|
||||
let imageProvider = CLKImageProvider(onePieceImage: UIImage(named: "Complication/Modular")!)
|
||||
imageProvider.tintColor = UIColor.blue
|
||||
imageTemplate.imageProvider = imageProvider
|
||||
template = imageTemplate
|
||||
}
|
||||
else if complication.family == .utilitarianSmall {
|
||||
let imageTemplate = CLKComplicationTemplateUtilitarianSmallSquare()
|
||||
let imageProvider = CLKImageProvider(onePieceImage: UIImage(named: "Complication/Utilitarian")!)
|
||||
imageProvider.tintColor = UIColor.blue
|
||||
imageTemplate.imageProvider = imageProvider
|
||||
template = imageTemplate
|
||||
}
|
||||
|
||||
return template
|
||||
}
|
||||
|
||||
func getSupportedTimeTravelDirections(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimeTravelDirections) -> Void) {
|
||||
handler([.forward, .backward])
|
||||
}
|
||||
@@ -33,7 +86,9 @@ class ComplicationController: NSObject, CLKComplicationDataSource {
|
||||
|
||||
func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void) {
|
||||
// Call the handler with the current timeline entry
|
||||
handler(nil)
|
||||
let template = templateForComplication(complication: complication)
|
||||
let timelineEntry = CLKComplicationTimelineEntry(date: Date(), complicationTemplate: template!)
|
||||
handler(timelineEntry)
|
||||
}
|
||||
|
||||
func getTimelineEntries(for complication: CLKComplication, before date: Date, limit: Int, withHandler handler: @escaping ([CLKComplicationTimelineEntry]?) -> Void) {
|
||||
@@ -46,11 +101,15 @@ class ComplicationController: NSObject, CLKComplicationDataSource {
|
||||
handler(nil)
|
||||
}
|
||||
|
||||
func getPlaceholderTemplate(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTemplate?) -> Void) {
|
||||
// This method will be called once per supported complication, and the results will be cached
|
||||
handler(templateForComplication(complication: complication))
|
||||
}
|
||||
// MARK: - Placeholder Templates
|
||||
|
||||
func getLocalizableSampleTemplate(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTemplate?) -> Void) {
|
||||
// This method will be called once per supported complication, and the results will be cached
|
||||
handler(nil)
|
||||
handler(templateForComplication(complication: complication))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
<string>watchkit Extension</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>NSMotionUsageDescription</key>
|
||||
<string>access to step cadence in order to show it in the application</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
@@ -22,6 +24,21 @@
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>CLKComplicationPrincipalClass</key>
|
||||
<string>$(PRODUCT_MODULE_NAME).ComplicationController</string>
|
||||
<key>CLKComplicationSupportedFamilies</key>
|
||||
<array>
|
||||
<string>CLKComplicationFamilyModularSmall</string>
|
||||
<string>CLKComplicationFamilyModularLarge</string>
|
||||
<string>CLKComplicationFamilyUtilitarianSmall</string>
|
||||
<string>CLKComplicationFamilyUtilitarianSmallFlat</string>
|
||||
<string>CLKComplicationFamilyUtilitarianLarge</string>
|
||||
<string>CLKComplicationFamilyCircularSmall</string>
|
||||
<string>CLKComplicationFamilyExtraLarge</string>
|
||||
<string>CLKComplicationFamilyGraphicCorner</string>
|
||||
<string>CLKComplicationFamilyGraphicBezel</string>
|
||||
<string>CLKComplicationFamilyGraphicCircular</string>
|
||||
<string>CLKComplicationFamilyGraphicRectangular</string>
|
||||
<string>CLKComplicationFamilyGraphicExtraLarge</string>
|
||||
</array>
|
||||
<key>NSExtension</key>
|
||||
<dict>
|
||||
<key>NSExtensionAttributes</key>
|
||||
|
||||
@@ -8,13 +8,17 @@
|
||||
|
||||
import WatchKit
|
||||
import HealthKit
|
||||
import CoreMotion
|
||||
|
||||
class MainController: WKInterfaceController {
|
||||
@IBOutlet weak var userNameLabel: WKInterfaceLabel!
|
||||
@IBOutlet weak var stepCountsLabel: WKInterfaceLabel!
|
||||
@IBOutlet weak var caloriesLabel: WKInterfaceLabel!
|
||||
@IBOutlet weak var distanceLabel: WKInterfaceLabel!
|
||||
@IBOutlet weak var heartRateLabel: WKInterfaceLabel!
|
||||
@IBOutlet weak var startButton: WKInterfaceButton!
|
||||
static var start: Bool! = false
|
||||
let pedometer = CMPedometer()
|
||||
|
||||
override func awake(withContext context: Any?) {
|
||||
super.awake(withContext: context)
|
||||
@@ -28,6 +32,15 @@ class MainController: WKInterfaceController {
|
||||
super.willActivate()
|
||||
print("WILL ACTIVE")
|
||||
WorkoutTracking.shared.fetchStepCounts()
|
||||
if CMPedometer.isStepCountingAvailable() {
|
||||
pedometer.startUpdates(from: Date()) { pedometerData, error in
|
||||
guard let pedometerData = pedometerData, error == nil else { return }
|
||||
self.stepCountsLabel.setText("\(Int(((pedometerData.currentCadence?.doubleValue ?? 0) * 60.0 / 2.0))) STEP CAD.")
|
||||
WatchKitConnection.stepCadence = Int(((pedometerData.currentCadence?.doubleValue ?? 0) * 60.0 / 2.0))
|
||||
WatchKitConnection.shared.sendMessage(message: ["stepCadence":
|
||||
"\(WatchKitConnection.stepCadence)" as AnyObject])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override func didDeactivate() {
|
||||
@@ -59,6 +72,7 @@ extension MainController {
|
||||
}
|
||||
|
||||
extension MainController: WorkoutTrackingDelegate {
|
||||
|
||||
func didReceiveHealthKitDistanceCycling(_ distanceCycling: Double) {
|
||||
|
||||
}
|
||||
@@ -72,10 +86,17 @@ extension MainController: WorkoutTrackingDelegate {
|
||||
"\(heartRate)" as AnyObject])
|
||||
WorkoutTracking.distance = WatchKitConnection.distance
|
||||
WorkoutTracking.kcal = WatchKitConnection.kcal
|
||||
|
||||
self.distanceLabel.setText("Distance \(Double(WorkoutTracking.distance))")
|
||||
self.caloriesLabel.setText("KCal \(Int(WorkoutTracking.kcal))")
|
||||
//WorkoutTracking.cadenceSteps = pedometer.
|
||||
}
|
||||
|
||||
func didReceiveHealthKitStepCounts(_ stepCounts: Double) {
|
||||
stepCountsLabel.setText("\(stepCounts) STEPS")
|
||||
//stepCountsLabel.setText("\(stepCounts) STEPS")
|
||||
}
|
||||
func didReceiveHealthKitStepCadence(_ stepCadence: Double) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ class WatchKitConnection: NSObject {
|
||||
static let shared = WatchKitConnection()
|
||||
public static var distance = 0.0
|
||||
public static var kcal = 0.0
|
||||
public static var stepCadence = 0
|
||||
weak var delegate: WatchKitConnectionDelegate?
|
||||
|
||||
private override init() {
|
||||
|
||||
@@ -12,6 +12,7 @@ import HealthKit
|
||||
protocol WorkoutTrackingDelegate: class {
|
||||
func didReceiveHealthKitHeartRate(_ heartRate: Double)
|
||||
func didReceiveHealthKitStepCounts(_ stepCounts: Double)
|
||||
func didReceiveHealthKitStepCadence(_ stepCadence: Double)
|
||||
func didReceiveHealthKitDistanceCycling(_ distanceCycling: Double)
|
||||
func didReceiveHealthKitActiveEnergyBurned(_ activeEnergyBurned: Double)
|
||||
}
|
||||
@@ -27,6 +28,9 @@ class WorkoutTracking: NSObject {
|
||||
static let shared = WorkoutTracking()
|
||||
public static var distance = Double()
|
||||
public static var kcal = Double()
|
||||
public static var cadenceTimeStamp = NSDate().timeIntervalSince1970
|
||||
public static var cadenceLastSteps = Double()
|
||||
public static var cadenceSteps = 0
|
||||
let healthStore = HKHealthStore()
|
||||
let configuration = HKWorkoutConfiguration()
|
||||
var workoutSession: HKWorkoutSession!
|
||||
@@ -79,7 +83,13 @@ extension WorkoutTracking {
|
||||
|
||||
if let sum = result.sumQuantity() {
|
||||
resultCount = sum.doubleValue(for: HKUnit.count())
|
||||
let now = NSDate().timeIntervalSince1970
|
||||
let deltaT = now - WorkoutTracking.cadenceTimeStamp
|
||||
let deltaC = resultCount - WorkoutTracking.cadenceLastSteps
|
||||
WorkoutTracking.cadenceLastSteps = resultCount
|
||||
WorkoutTracking.cadenceTimeStamp = now
|
||||
weakSelf.delegate?.didReceiveHealthKitStepCounts(resultCount)
|
||||
weakSelf.delegate?.didReceiveHealthKitStepCadence((deltaC / deltaT) * 60)
|
||||
} else {
|
||||
print("Failed to fetch steps rate 2")
|
||||
}
|
||||
@@ -195,6 +205,7 @@ extension WorkoutTracking: WorkoutTrackingProtocol {
|
||||
workoutBuilder.endCollection(withEnd: Date()) { (success, error) in
|
||||
|
||||
}
|
||||
workoutBuilder.finishWorkout{ (success, error) in }
|
||||
}
|
||||
|
||||
func fetchStepCounts() {
|
||||
|
||||
@@ -26,6 +26,13 @@
|
||||
"scale" : "3x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"idiom" : "watch",
|
||||
"role" : "notificationCenter",
|
||||
"scale" : "2x",
|
||||
"size" : "33x33",
|
||||
"subtype" : "45mm"
|
||||
},
|
||||
{
|
||||
"idiom" : "watch",
|
||||
"role" : "appLauncher",
|
||||
@@ -40,6 +47,13 @@
|
||||
"size" : "44x44",
|
||||
"subtype" : "40mm"
|
||||
},
|
||||
{
|
||||
"idiom" : "watch",
|
||||
"role" : "appLauncher",
|
||||
"scale" : "2x",
|
||||
"size" : "46x46",
|
||||
"subtype" : "41mm"
|
||||
},
|
||||
{
|
||||
"idiom" : "watch",
|
||||
"role" : "appLauncher",
|
||||
@@ -47,6 +61,13 @@
|
||||
"size" : "50x50",
|
||||
"subtype" : "44mm"
|
||||
},
|
||||
{
|
||||
"idiom" : "watch",
|
||||
"role" : "appLauncher",
|
||||
"scale" : "2x",
|
||||
"size" : "51x51",
|
||||
"subtype" : "45mm"
|
||||
},
|
||||
{
|
||||
"idiom" : "watch",
|
||||
"role" : "quickLook",
|
||||
@@ -68,6 +89,13 @@
|
||||
"size" : "108x108",
|
||||
"subtype" : "44mm"
|
||||
},
|
||||
{
|
||||
"idiom" : "watch",
|
||||
"role" : "quickLook",
|
||||
"scale" : "2x",
|
||||
"size" : "117x117",
|
||||
"subtype" : "45mm"
|
||||
},
|
||||
{
|
||||
"idiom" : "watch-marketing",
|
||||
"scale" : "1x",
|
||||
|
||||
|
Before Width: | Height: | Size: 68 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 8.1 KiB |
|
Before Width: | Height: | Size: 8.1 KiB |
|
Before Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 7.7 KiB |
|
Before Width: | Height: | Size: 7.7 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 9.0 KiB |
|
Before Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 7.4 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 9.9 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 16 KiB |
@@ -103,7 +103,7 @@
|
||||
"size" : "83.5x83.5"
|
||||
},
|
||||
{
|
||||
"filename" : "iTunesArtwork@2x.png",
|
||||
"filename" : "ItunesArtwork-1.png",
|
||||
"idiom" : "ios-marketing",
|
||||
"scale" : "1x",
|
||||
"size" : "1024x1024"
|
||||
@@ -138,6 +138,13 @@
|
||||
"scale" : "3x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"idiom" : "watch",
|
||||
"role" : "notificationCenter",
|
||||
"scale" : "2x",
|
||||
"size" : "33x33",
|
||||
"subtype" : "45mm"
|
||||
},
|
||||
{
|
||||
"filename" : "80x80-1.png",
|
||||
"idiom" : "watch",
|
||||
@@ -154,6 +161,13 @@
|
||||
"size" : "44x44",
|
||||
"subtype" : "40mm"
|
||||
},
|
||||
{
|
||||
"idiom" : "watch",
|
||||
"role" : "appLauncher",
|
||||
"scale" : "2x",
|
||||
"size" : "46x46",
|
||||
"subtype" : "41mm"
|
||||
},
|
||||
{
|
||||
"filename" : "50@2x-1.png",
|
||||
"idiom" : "watch",
|
||||
@@ -162,6 +176,13 @@
|
||||
"size" : "50x50",
|
||||
"subtype" : "44mm"
|
||||
},
|
||||
{
|
||||
"idiom" : "watch",
|
||||
"role" : "appLauncher",
|
||||
"scale" : "2x",
|
||||
"size" : "51x51",
|
||||
"subtype" : "45mm"
|
||||
},
|
||||
{
|
||||
"filename" : "86@2x-1.png",
|
||||
"idiom" : "watch",
|
||||
@@ -186,6 +207,13 @@
|
||||
"size" : "108x108",
|
||||
"subtype" : "44mm"
|
||||
},
|
||||
{
|
||||
"idiom" : "watch",
|
||||
"role" : "quickLook",
|
||||
"scale" : "2x",
|
||||
"size" : "117x117",
|
||||
"subtype" : "45mm"
|
||||
},
|
||||
{
|
||||
"filename" : "1024@1x.png",
|
||||
"idiom" : "watch-marketing",
|
||||
|
||||
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB |
@@ -1,10 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder.WatchKit.Storyboard" version="3.0" toolsVersion="17506" targetRuntime="watchKit" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="Tpn-rd-UUX">
|
||||
<document type="com.apple.InterfaceBuilder.WatchKit.Storyboard" version="3.0" toolsVersion="19529" targetRuntime="watchKit" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="Tpn-rd-UUX">
|
||||
<device id="watch38"/>
|
||||
<dependencies>
|
||||
<deployment identifier="watchOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17505"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBWatchKitPlugin" version="17500"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19519"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBWatchKitPlugin" version="19514"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--Main-->
|
||||
@@ -12,16 +12,20 @@
|
||||
<objects>
|
||||
<controller identifier="Main" hidesWhenLoading="NO" id="Tpn-rd-UUX" customClass="MainController" customModule="watchkit_Extension">
|
||||
<items>
|
||||
<label width="136" alignment="left" text="qdomyos-zwift" textAlignment="center" id="SlU-M7-WGB"/>
|
||||
<label width="136" alignment="left" text="Heart Rate" id="Nda-m1-XRw"/>
|
||||
<label width="136" alignment="left" text="Step Counts" id="HpA-e9-6YV"/>
|
||||
<label width="136" alignment="left" text="QZ Fitness" textAlignment="center" id="SlU-M7-WGB"/>
|
||||
<button width="1" alignment="left" title="Start" id="vZg-X8-uY5">
|
||||
<connections>
|
||||
<action selector="startWorkout" destination="Tpn-rd-UUX" id="UaW-pR-tn6"/>
|
||||
</connections>
|
||||
</button>
|
||||
<label width="136" alignment="left" text="Heart Rate" id="Nda-m1-XRw"/>
|
||||
<label width="136" alignment="left" text="Step Counts" id="HpA-e9-6YV"/>
|
||||
<label width="136" alignment="left" text="Calories" id="Szi-Jp-J3S"/>
|
||||
<label width="136" alignment="left" text="Distance" id="eRf-NJ-6If"/>
|
||||
</items>
|
||||
<connections>
|
||||
<outlet property="caloriesLabel" destination="Szi-Jp-J3S" id="trd-YS-bJy"/>
|
||||
<outlet property="distanceLabel" destination="eRf-NJ-6If" id="ZE2-OB-jqN"/>
|
||||
<outlet property="heartRateLabel" destination="Nda-m1-XRw" id="1la-8R-3jG"/>
|
||||
<outlet property="startButton" destination="vZg-X8-uY5" id="pJc-09-kfV"/>
|
||||
<outlet property="stepCountsLabel" destination="HpA-e9-6YV" id="Z88-ej-6oG"/>
|
||||
|
||||
@@ -1,10 +1,24 @@
|
||||
FROM debian:stable
|
||||
FROM ubuntu:latest
|
||||
MAINTAINER cagnulein
|
||||
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
ENV TZ=Europe/Moscow
|
||||
ENV MAKEFLAGS -j8
|
||||
WORKDIR /usr/local/src
|
||||
|
||||
# utils
|
||||
RUN apt-get update && apt-get install -y tzdata
|
||||
RUN apt -y update
|
||||
RUN apt -y upgrade
|
||||
RUN apt -y install git libqt5bluetooth5 libqt5widgets5 libqt5positioning5 libqt5xml5 qtconnectivity5-dev qtpositioning5-dev libqt5charts5-dev libqt5charts5 qt5-default
|
||||
RUN apt update -y && apt-get install -y git qt5-default libqt5bluetooth5 libqt5widgets5 libqt5positioning5 libqt5xml5 qtconnectivity5-dev qtpositioning5-dev libqt5charts5-dev libqt5charts5 qt5-default libqt5networkauth5-dev libqt5websockets5* libxcb-randr0-dev libxcb-xtest0-dev libxcb-xinerama0-dev libxcb-shape0-dev libxcb-xkb-dev build-essential
|
||||
|
||||
RUN git clone https://github.com/cagnulein/qdomyos-zwift.git
|
||||
WORKDIR /usr/local/src/qdomyos-zwift
|
||||
|
||||
RUN git submodule update --init src/smtpclient/
|
||||
RUN git submodule update --init src/qmdnsengine/
|
||||
WORKDIR /usr/local/src/qdomyos-zwift/src
|
||||
RUN qmake
|
||||
RUN make -j4
|
||||
|
||||
WORKDIR /usr/local/src/qdomyos-zwift/src
|
||||
CMD ["./qdomyos-zwift","-no-gui"]
|
||||
|
||||
@@ -8,9 +8,11 @@ Once you've installed QDomyos-Zwift, you can access the [operation guide](30_usa
|
||||
|
||||
```buildoutcfg
|
||||
$ 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 libqt5networkauth5-dev
|
||||
$ sudo apt install git qtquickcontrols2-5-dev libqt5bluetooth5 libqt5widgets5 libqt5positioning5 libqt5xml5 qtconnectivity5-dev qtpositioning5-dev libqt5charts5-dev libqt5charts5 qt5-assistant libqt5networkauth5-dev libqt5websockets5-dev qml-module* libqt5texttospeech5-dev libqt5texttospeech5 libqt5location5-plugins qtlocation5-dev
|
||||
$ git clone https://github.com/cagnulein/qdomyos-zwift.git
|
||||
$ cd qdomyos-zwift
|
||||
$ git submodule update --init src/smtpclient/
|
||||
$ git submodule update --init src/qmdnsengine/
|
||||
$ cd src
|
||||
$ qmake
|
||||
$ make -j4
|
||||
@@ -100,13 +102,14 @@ This operation takes a moment to complete.
|
||||
|
||||
#### Install qdomyos-zwift from sources
|
||||
|
||||
`sudo apt install git libqt5bluetooth5 libqt5widgets5 libqt5positioning5 libqt5xml5 qtconnectivity5-dev qtpositioning5-dev libqt5charts5-dev libqt5charts5 qt5-default libqt5networkauth5-dev`
|
||||
`sudo apt install git libqt5bluetooth5 libqt5widgets5 libqt5positioning5 libqt5xml5 qtconnectivity5-dev qtpositioning5-dev libqt5charts5-dev libqt5charts5 qt5-assistant libqt5networkauth5-dev libqt5websockets5-dev`
|
||||
|
||||
`git clone https://github.com/cagnulein/qdomyos-zwift.git`
|
||||
`cd qdomyos-zwift`
|
||||
`git submodule update --init src/smtpclient/`
|
||||
`cd src`
|
||||
`qmake`
|
||||
`git submodule update --init src/smtpclient/`
|
||||
`git submodule update --init src/qmdnsengine/`
|
||||
`cd src`
|
||||
`qmake`
|
||||
`make`
|
||||
|
||||
Please note :
|
||||
|
||||
@@ -11,26 +11,12 @@ This list is not exhaustive. Please report any application known to be working w
|
||||
|[Fulgaz](21_applications_detail.md#fulgaz)||  |Yes|Yes|Yes|Yes, no FTMS support (see note)|Yes (see note) |
|
||||
|
||||
# Supported devices
|
||||
Check the full list https://github.com/cagnulein/qdomyos-zwift/wiki/Equipment-Compatibility
|
||||
|
||||
This list is not exhaustive.
|
||||
Try the qdomyos app with your fitness appliance and report how it is going.
|
||||
If it's not working, you can [ask for your device to be supported](#ask-for-device-support)
|
||||
|
||||
## Supported bikes
|
||||
|
||||
|Manufacturer|Model|Speed|RPM|Power|HRM|Resistence Control|
|
||||
|------------|-----|------------|---|-----|---|------------------|
|
||||
|[Echelon](22_devices_detail.md#echelon)|Connect Sport|Yes|Yes|Yes|Yes|N/A|
|
||||
|[Sportstech](22_devices_detail.md#sportstech)|ESX500|Yes|Yes|Yes|Yes|Yes|
|
||||
|
||||
## Supported treadmills
|
||||
|
||||
|Manufacturer|Model|Speed|HRM|Inclinaison Control| Speed control|
|
||||
|------------|-----|------------|---|-------------------|--------------|
|
||||
|Domyos|Intense Run|Yes|Yes|Yes|Yes|
|
||||
|Domyos|T900c|Yes|Yes|Yes|Yes|
|
||||
|Toorx|TRX Route Key|Yes|Yes|Yes|Yes|
|
||||
|
||||
|
||||
# Ask for device support
|
||||
|
||||
You can ask for supporting a device by opening an issue and following these steps.
|
||||
|
||||
@@ -21,32 +21,33 @@ Please refer to this article for more information under [QML Operations](https:/
|
||||
This is the list of settings available in the application. These settings needs to be appended to the binary command line.
|
||||
*Example :* `sudo ./qdomyos-zwift -no-gui` for disabling any graphical interface.
|
||||
|
||||
| **Option** | **Type** | **Default** | **Function** |
|
||||
|:------------------------|:---------|:------------|:-----------------------------------------------------------------------------|
|
||||
| -no-gui | Boolean | False | Disable GUI |
|
||||
| -qml | Boolean | False | Enables the QML interface |
|
||||
| -miles | Boolean | False | Swithes to Imperial Units System |
|
||||
| -no-console | Boolean | False | Not in use |
|
||||
| -test-resistance | Boolean | False | |
|
||||
| -no-log | Boolean | False | Disable Logging |
|
||||
| -no-write-resistance | Boolean | False | Disable resistance instructions from QZ to your fitness equipment |
|
||||
| -no-heart-service | Boolean | False | Do not simulate external HR monitor, use only FTMS |
|
||||
| -heart-service | Boolean | True | Simulate HR service (required for applications not reading FTMS) |
|
||||
| -only-virtualbike | Boolean | False | |
|
||||
| -only-virtualtreadmill | Boolean | False | |
|
||||
| -no-reconnection | Boolean | False | QZ will not try to reconnect your fitness equipement if enabled |
|
||||
| -bluetooth-relaxed | Boolean | False | In case of deconnections from QZ to your fitness equipement |
|
||||
| -bike-cadence-sensor | Boolean | False | |
|
||||
| -bike-power-sensor | Boolean | False | |
|
||||
| -battery-service | Boolean | False | |
|
||||
| -service-changed | Boolean | False | |
|
||||
| -bike-wheel-revs | Boolean | False | |
|
||||
| -run-cadence-sensor | Boolean | False | |
|
||||
| -train | String | | Force training program |
|
||||
| -name | String | | Force bluetooth device name (if QZ struggles finding your fitness equipment) |
|
||||
| -poll-device-time | Int | 200 (ms) | Frequency to refresh informations from QZ to Fitness equipment |
|
||||
| -bike-resistance-gain | Int | | Adjust resistance from the fitness application |
|
||||
| -bike-resistance-offset | Int | | Set another resistance point than default |
|
||||
| **Option** | **Type** | **Default** | **Function** |
|
||||
|:------------------------------|:---------|:------------|:-----------------------------------------------------------------------------|
|
||||
| -no-gui | Boolean | False | Disable GUI |
|
||||
| -qml | Boolean | False | Enables the QML interface |
|
||||
| -miles | Boolean | False | Swithes to Imperial Units System |
|
||||
| -no-console | Boolean | False | Not in use |
|
||||
| -test-resistance | Boolean | False | |
|
||||
| -no-log | Boolean | False | Disable Logging |
|
||||
| -no-write-resistance | Boolean | False | Disable resistance instructions from QZ to your fitness equipment |
|
||||
| -no-heart-service | Boolean | False | Do not simulate external HR monitor, use only FTMS |
|
||||
| -heart-service | Boolean | True | Simulate HR service (required for applications not reading FTMS) |
|
||||
| -only-virtualbike | Boolean | False | |
|
||||
| -only-virtualtreadmill | Boolean | False | |
|
||||
| -no-reconnection | Boolean | False | QZ will not try to reconnect your fitness equipement if enabled |
|
||||
| -bluetooth-relaxed | Boolean | False | In case of deconnections from QZ to your fitness equipement |
|
||||
| -bike-cadence-sensor | Boolean | False | |
|
||||
| -bike-power-sensor | Boolean | False | |
|
||||
| -battery-service | Boolean | False | |
|
||||
| -service-changed | Boolean | False | |
|
||||
| -bike-wheel-revs | Boolean | False | |
|
||||
| -run-cadence-sensor | Boolean | False | |
|
||||
| -nordictrack-10-treadmill | Boolean | False | Enable NordicTrack compatibility mode |
|
||||
| -train | String | | Force training program |
|
||||
| -name | String | | Force bluetooth device name (if QZ struggles finding your fitness equipment) |
|
||||
| -poll-device-time | Int | 200 (ms) | Frequency to refresh informations from QZ to Fitness equipment |
|
||||
| -bike-resistance-gain | Int | | Adjust resistance from the fitness application |
|
||||
| -bike-resistance-offset | Int | | Set another resistance point than default |
|
||||
|
||||
|
||||
|
||||
|
||||
365
docs/40_web_socket_api.md
Normal file
@@ -0,0 +1,365 @@
|
||||
# QDomyos-Zwift WebSocket API Installation & Operation guide
|
||||
|
||||
# Installation
|
||||
## About
|
||||
|
||||
The QDomyos-Zwift WebSocket API can be installed from source on Linux, Raspberry Pi (4, 3, zero W), macOS, Android and IOS.
|
||||
|
||||
However, this guide will only focus on the Linux (Debian 11) Installation and Raspberry Pi cause there are the most useful case in headless control.
|
||||
|
||||
If you already install the Web Socket, feel free to [skip to the Usage section](#usage).
|
||||
|
||||
## Requirement
|
||||
|
||||
To Install QDomyos-Zwift with WebSocket API you will need Qt 5.12.2+ and the following modules :
|
||||
- Qt Bluetooth
|
||||
- Qt Widgets
|
||||
- Qt Positioning
|
||||
- Qt XML
|
||||
- Qt Charts
|
||||
- Qt Network
|
||||
- Qt Network Authorization
|
||||
- Qt WebSockets
|
||||
- Qt Assistant
|
||||
|
||||
Unfortunately under Debian 11 (or Raspbian 11) the Qt 5 packages are not recent enough for compilation however this guide will explain how to manually compile the latest version of Qt (5.12.12)
|
||||
|
||||
If you already had Qt 5.12.2 or more, feel free to [skip to Install Qt Httpserver](#install-qt-httpserver).
|
||||
|
||||
## Install Qt 5.12.2
|
||||
|
||||
*If you compile for a Raspberry Pi Zero, it's* ***faster and easy*** *to do all the Raspberry Pi task on a Raspberry Pi 4 and after copy compiled binary files toe the Raspberry Pi Zero*
|
||||
|
||||
For more info on the steps [please refer to the source](#source)
|
||||
|
||||
Before do anything. Make sure all your packages are updated :
|
||||
|
||||
```bash
|
||||
apt update && apt upgrade # this is very important on raspberry pi: you need the bluetooth firmware updated!
|
||||
```
|
||||
|
||||
After download last version of Qt Source and extract them :
|
||||
```bash
|
||||
wget https://download.qt.io/official_releases/qt/5.12/5.12.12/single/qt-everywhere-src-5.12.12.tar.xz
|
||||
```
|
||||
|
||||
If you compile for a Raspberry Pi you will need the Raspberry Pi Qt Configuration for raspberry pi and install it in the source :
|
||||
|
||||
```bash
|
||||
git clone https://github.com/oniongarlic/qt-raspberrypi-configuration.git
|
||||
cd qt-raspberrypi-configuration && make install DESTDIR=../qt-everywhere-src-5.12.12
|
||||
```
|
||||
|
||||
Install the bare minimum required development packages for building Qt 5 with apt :
|
||||
```bash
|
||||
apt install build-essential libfontconfig1-dev libdbus-1-dev libfreetype6-dev libicu-dev libinput-dev libxkbcommon-dev libsqlite3-dev libssl-dev libpng-dev libjpeg-dev libglib2.0-dev libraspberrypi-dev
|
||||
```
|
||||
|
||||
*For raspberry Pi install `libraspberrypi-dev` package* :
|
||||
```bash
|
||||
apt install libraspberrypi-dev
|
||||
```
|
||||
|
||||
|
||||
Now install all required development packages for building all Qt 5 modules:
|
||||
```bash
|
||||
apt install bluez libgbm-dev
|
||||
apt install libudev-dev libinput-dev libts-dev libxcb-xinerama0-dev libxcb-xinerama0 gdbserver
|
||||
apt install libegl1-mesa libegl1-mesa-dev libgles2-mesa libgles2-mesa-dev
|
||||
apt install wiringpi libnfc-bin libnfc-dev fonts-texgyre libts-dev
|
||||
apt install libbluetooth-dev bluez-tools gstreamer1.0-plugins* libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libopenal-data libopenal1 libopenal-dev pulseaudio
|
||||
apt install libgstreamer*-dev
|
||||
apt install gstreamer*-dev
|
||||
apt install libasound2-dev libavcodec-dev libavformat-dev libswscale-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev gstreamer-tools libgstreamer-plugins-*
|
||||
apt install qtdeclarative5-dev
|
||||
apt install libvlc-dev
|
||||
```
|
||||
|
||||
On Raspbian Stretch/Buster/Bullseye the OpenGL library files have been renamed so that they wouldn't conflict with Mesa installed ones. Unfortunately Qt configure script is still looking for the old names.
|
||||
So ***on your target Raspberry Pi*** you need to symlink those file to make sure Qt run correctly.
|
||||
```bash
|
||||
ln -s /usr/lib/arm-linux-gnueabihf/libGLESv2.so /usr/lib/libbrcmGLESv2.so
|
||||
ln -s /usr/lib/arm-linux-gnueabihf/libEGL.so /usr/lib/libbrcmEGL.so
|
||||
```
|
||||
|
||||
Now all dependency are installed. It's time to create build folder and compiled.
|
||||
```bash
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
# For Raspberry Pi Zero or 3
|
||||
PKG_CONFIG_LIBDIR=/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/share/pkgconfig ../qt-everywhere-src-5.12.12/configure -platform linux-rpi-g++ -v -opengl es2 -eglfs -no-gtk -opensource -confirm-license -release -reduce-exports -force-pkg-config -nomake examples -no-compile-examples -skip qtwayland -skip qtwebengine -no-feature-geoservices_mapboxgl -qt-pcre -no-pch -ssl -evdev -system-freetype -fontconfig -glib -prefix /opt/Qt/5.12.12 -qpa eglfs
|
||||
CFLAGS="-march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp" make -j3 # Remove -j3 if you compiled directly on Raspberry Pi Zero
|
||||
|
||||
# For Raspberry Pi 4
|
||||
PKG_CONFIG_LIBDIR=/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/share/pkgconfig ../qt-everywhere-src-5.12.12/configure -platform linux-rpi4-v3d-g++ -v -opengl es2 -eglfs -no-gtk -opensource -confirm-license -release -reduce-exports -force-pkg-config -nomake examples -no-compile-examples -skip qtwayland -skip qtwebengine -no-feature-geoservices_mapboxgl -qt-pcre -no-pch -ssl -evdev -system-freetype -fontconfig -glib -prefix /opt/Qt/5.12.12 -qpa eglfs
|
||||
CFLAGS="-march=armv8-a -mtune=cortex-a72 -mfpu=crypto-neon-fp-armv8" make -j3
|
||||
|
||||
# For Debian 11 x64 (Not tested)
|
||||
../qt-everywhere-src-5.12.12/configure -v -opengl es2 -eglfs -no-gtk -opensource -confirm-license -release -reduce-exports -force-pkg-config -nomake examples -no-compile-examples -skip qtwayland -skip qtwebengine -no-feature-geoservices_mapboxgl -qt-pcre -no-pch -ssl -evdev -system-freetype -fontconfig -glib -prefix /opt/Qt/5.12.12 -qpa eglfs
|
||||
make
|
||||
```
|
||||
|
||||
Finally, if you cross compiled you can transfer the build folder to other machine and then just run as root in the build folder :
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
# Install Qt Httpserver
|
||||
|
||||
Like explain in PR #252, to make work the Http Server you will need to manually compile `qthttpserver` module.
|
||||
|
||||
For that just run following commands in your home directory :
|
||||
```bash
|
||||
cd ~
|
||||
git clone https://github.com/qt-labs/qthttpserver
|
||||
cd ~/qthttpserver/src/3rdparty/http-parser
|
||||
wget https://raw.githubusercontent.com/nodejs/http-parser/main/http_parser.h
|
||||
wget https://raw.githubusercontent.com/nodejs/http-parser/main/http_parser.c
|
||||
cd ~/qthttpserver/src
|
||||
qmake # Please note if you compiled Qt you need to specify /opt/Qt/5.12.12/bin/qmake
|
||||
make
|
||||
# Wait...
|
||||
sudo make install
|
||||
```
|
||||
|
||||
***You have successfully installed Qt Httpserver***
|
||||
|
||||
# Install QDomyos-Zwift
|
||||
|
||||
If you already compile QDomyos-Zwift and you just compiled a new version of Qt.
|
||||
Please delete the whole QDomyos-Zwift folder and restart from scratch to prevent linking issues.
|
||||
|
||||
```bash
|
||||
cd ~
|
||||
git clone https://github.com/cagnulein/qdomyos-zwift.git
|
||||
cd ~/qdomyos-zwift
|
||||
git submodule update --init ~/qdomyos-zwift/src/smtpclient/
|
||||
cd ~/qdomyos-zwift/src
|
||||
qmake # Please note if you compiled Qt you need to specify /opt/Qt/5.12.12/bin/qmake
|
||||
make -j4 # Remove -j4 if you compiled on Raspberry Pi Zero
|
||||
```
|
||||
|
||||
Now installed you need to compile like say in PR #252 and issue #572 template/debug in the same directory of source file of QDomyos-Zwift.
|
||||
```bash
|
||||
cp -r ~/qdomyos-zwift/src/templates/debug ~/qdomyos-zwift/src/.
|
||||
cp -r ~/qdomyos-zwift/src/templates/debug/* ~/qdomyos-zwift/src/.
|
||||
```
|
||||
|
||||
Last if you can't run QML version (probably because you don't had a X11 Server.) you need to manually edit the configuration file in `/root/.config/Roberto Viola/qDomyos-Zwift.conf` and add :
|
||||
```
|
||||
template_inner_QZWS_enabled=true
|
||||
template_inner_QZWS_folders=:/inner_templates//chartjs
|
||||
template_inner_QZWS_ips=192.168.1.42
|
||||
template_inner_QZWS_port=34107
|
||||
template_inner_QZWS_type=WebServer
|
||||
```
|
||||
|
||||
In this config file we open an HTTP Server on port 34107 with bind to 192.168.1.42 but feel free to change these values.
|
||||
|
||||
Finally, ***do not move `qdomyos-zwift` from src folder*** and run it as Root
|
||||
|
||||
# Usage
|
||||
|
||||
The way that [WebSocket](https://developer.mozilla.org/docs/Web/API/WebSockets_API) work in QDomyos-Zwift is by sending commands and listen events.
|
||||
|
||||
## Workout Event
|
||||
|
||||
The workout Event is the default message send almost every second by QDomyos-Zwift to inform you which state is your equipment.
|
||||
|
||||
Here what is look like :
|
||||
```json
|
||||
{
|
||||
"BIKE_TYPE": 2,
|
||||
"ELLIPTICAL_TYPE": 4,
|
||||
"ROWING_TYPE": 3,
|
||||
"TREADMILL_TYPE": 1,
|
||||
"UNKNOWN_TYPE": 0,
|
||||
"deviceId": "0B:54:49:D1:BC:DA",
|
||||
"deviceName": "Domyos-TC-0314",
|
||||
"deviceRSSI": 0,
|
||||
"deviceType": 1,
|
||||
"deviceConnected": false,
|
||||
"devicePaused": false,
|
||||
"elapsed_s": 0,
|
||||
"elapsed_m": 0,
|
||||
"elapsed_h": 0,
|
||||
"pace_s": 0,
|
||||
"pace_m": 0,
|
||||
"pace_h": 0,
|
||||
"moving_s": 0,
|
||||
"moving_m": 0,
|
||||
"moving_h": 0,
|
||||
"speed": 0,
|
||||
"speed_avg": 0,
|
||||
"calories": 0,
|
||||
"distance": 0,
|
||||
"heart": 0,
|
||||
"heart_avg": 0,
|
||||
"heart_max": 0,
|
||||
"jouls": 0,
|
||||
"elevation": 0,
|
||||
"difficult": 1,
|
||||
"watts": 0,
|
||||
"watts_avg": 0,
|
||||
"watts_max": 0,
|
||||
"kgwatts": 0,
|
||||
"kgwatts_avg": 0,
|
||||
"kgwatts_max": 0,
|
||||
"workoutName": "",
|
||||
"workoutStartDate": "",
|
||||
"instructorName": "",
|
||||
"latitude": null,
|
||||
"longitude": null,
|
||||
"nickName": "N/A",
|
||||
"inclination": 0,
|
||||
"inclination_avg": 0
|
||||
}
|
||||
```
|
||||
|
||||
## Commands
|
||||
|
||||
To send commands you will need to send a socket message in JSON format like :
|
||||
```json
|
||||
{
|
||||
"msg": "pause"
|
||||
}
|
||||
```
|
||||
|
||||
which `msg` is always the name of the command. Command also return on WebSocket message like to acknowledge command :
|
||||
```json
|
||||
{
|
||||
"msg": "R_pause"
|
||||
}
|
||||
```
|
||||
|
||||
Here is a list of the most "useful" commands
|
||||
|
||||
### Start
|
||||
#### Description :
|
||||
Allows you to start the bike / treadmill (Reset Timer if bike / treadmill is stopped)
|
||||
|
||||
#### Send :
|
||||
```json
|
||||
{
|
||||
"msg": "start"
|
||||
}
|
||||
```
|
||||
#### Response :
|
||||
```json
|
||||
{
|
||||
"msg": "R_start"
|
||||
}
|
||||
```
|
||||
|
||||
### Pause
|
||||
#### Description :
|
||||
Allows you to stop (pause) the bike / treadmill without reset timer.
|
||||
|
||||
#### Send :
|
||||
```json
|
||||
{
|
||||
"msg": "pause"
|
||||
}
|
||||
```
|
||||
#### Response :
|
||||
```json
|
||||
{
|
||||
"msg": "R_pause"
|
||||
}
|
||||
```
|
||||
|
||||
### Stop
|
||||
#### Description :
|
||||
Allows you to stop the bike / treadmill and reset timer.
|
||||
|
||||
#### Send :
|
||||
```json
|
||||
{
|
||||
"msg": "stop"
|
||||
}
|
||||
```
|
||||
#### Response :
|
||||
```json
|
||||
{
|
||||
"msg": "R_stop"
|
||||
}
|
||||
```
|
||||
|
||||
### SetSpeed
|
||||
#### Description :
|
||||
Allows you to control the treadmill speed.
|
||||
|
||||
#### Send :
|
||||
```json
|
||||
{
|
||||
"msg": "setspeed",
|
||||
"content": {
|
||||
"value": 8.0
|
||||
}
|
||||
}
|
||||
```
|
||||
#### Response :
|
||||
```json
|
||||
{
|
||||
"msg": "R_setspeed",
|
||||
"content": {
|
||||
"value": 8.0
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### SetResistance
|
||||
#### Description :
|
||||
Allows you to control the resistance bike or the treadmill incline.
|
||||
|
||||
#### Send :
|
||||
```json
|
||||
{
|
||||
"msg": "setresistance",
|
||||
"content": {
|
||||
"value": 8.0
|
||||
}
|
||||
}
|
||||
```
|
||||
#### Response :
|
||||
```json
|
||||
{
|
||||
"msg": "R_setresistance",
|
||||
"content": {
|
||||
"value": 8.0
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### SetFanSpeed
|
||||
#### Description :
|
||||
Allows you to control the fan bike / treadmill speed.
|
||||
|
||||
#### Send :
|
||||
```json
|
||||
{
|
||||
"msg": "setfanspeed",
|
||||
"content": {
|
||||
"value": 8.0
|
||||
}
|
||||
}
|
||||
```
|
||||
#### Response :
|
||||
```json
|
||||
{
|
||||
"msg": "R_setfanspeed",
|
||||
"content": {
|
||||
"value": 8.0
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
# Source
|
||||
How compile Qt 5.12.10 on Raspberry Pi : https://www.tal.org/tutorials/building-qt-512-raspberry-pi
|
||||
|
||||
How cross compile Qt 5.12.5 on Raspberry Pi (in French) : https://wiki.logre.eu/index.php/Cross-compilation_Qt_5.12.5_pour_Raspberry_Pi
|
||||
|
||||
Issue [REQ] Add to qdomyos an API for remote access to treadmill #572
|
||||
|
||||
PR "Templated" connections and Web server #252
|
||||
87
docs/specs/org.bluetooth.characteristic.rsc_measurement.xml
Normal file
@@ -0,0 +1,87 @@
|
||||
<?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="RSC Measurement"
|
||||
type="org.bluetooth.characteristic.rsc_measurement" uuid="2A53"
|
||||
last-modified="2012-09-29" approved="Yes">
|
||||
<InformativeText>
|
||||
<Summary>The RSC Measurement characteristic (RSC refers to
|
||||
Running Speed and Cadence) is a variable length structure
|
||||
containing a Flags field, an Instantaneous Speed field and an
|
||||
Instantaneous Cadence field and, based on the contents of the
|
||||
Flags field, may contain a Stride Length field and a Total
|
||||
Distance field.</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="Instantaneous Stride Length Present">
|
||||
<Enumerations>
|
||||
<Enumeration key="0" value="False" />
|
||||
<Enumeration key="1" value="True" requires="C1" />
|
||||
</Enumerations>
|
||||
</Bit>
|
||||
<Bit index="1" size="1" name="Total Distance Present">
|
||||
<Enumerations>
|
||||
<Enumeration key="0" value="False" />
|
||||
<Enumeration key="1" value="True" requires="C2" />
|
||||
</Enumerations>
|
||||
</Bit>
|
||||
<Bit index="2" size="1"
|
||||
name="Walking or Running Status bits">
|
||||
<Enumerations>
|
||||
<Enumeration key="0" value="Walking" />
|
||||
<Enumeration key="1" value="Running" />
|
||||
</Enumerations>
|
||||
</Bit>
|
||||
<ReservedForFutureUse index="3" size="5" />
|
||||
</BitField>
|
||||
</Field>
|
||||
<Field name="Instantaneous Speed">
|
||||
<InformativeText>Unit is in m/s with a resolution of 1/256
|
||||
s</InformativeText>
|
||||
<Requirement>Mandatory</Requirement>
|
||||
<Format>uint16</Format>
|
||||
<Unit>org.bluetooth.unit.velocity.metres_per_second</Unit>
|
||||
</Field>
|
||||
<Field name="Instantaneous Cadence">
|
||||
<InformativeText>Unit is in 1/minute (or RPM) with a
|
||||
resolutions of 1 1/min (or 1 RPM)</InformativeText>
|
||||
<Requirement>Mandatory</Requirement>
|
||||
<Format>uint8</Format>
|
||||
<Unit>
|
||||
org.bluetooth.unit.angular_velocity.revolution_per_minute</Unit>
|
||||
</Field>
|
||||
<Field name="Instantaneous Stride Length">
|
||||
<InformativeText>
|
||||
<p>C1: Field exists if the key of bit 0 of the Flags field
|
||||
is set to 1.</p>
|
||||
<p>- Unit is in meter with a resolution of 1/100 m (or
|
||||
centimeter).</p>
|
||||
</InformativeText>
|
||||
<Requirement>C1</Requirement>
|
||||
<Format>uint16</Format>
|
||||
<Unit>org.bluetooth.unit.length.meter</Unit>
|
||||
</Field>
|
||||
<Field name="Total Distance">
|
||||
<InformativeText>
|
||||
<p>C2: Field exists if the key of bit 1 of the Flags field
|
||||
is set to 1.</p>
|
||||
<p>- Unit is in meter with a resolution of 1/10 m (or
|
||||
decimeter).</p>
|
||||
</InformativeText>
|
||||
<Requirement>C2</Requirement>
|
||||
<Format>uint32</Format>
|
||||
<Unit>org.bluetooth.unit.length.meter</Unit>
|
||||
</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>
|
||||
161
docs/specs/org.bluetooth.service.running_speed_and_cadence.xml
Normal file
@@ -0,0 +1,161 @@
|
||||
<?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="Running Speed and Cadence"
|
||||
type="org.bluetooth.service.running_speed_and_cadence" uuid="1814"
|
||||
last-modified="2012-3-26" approved="Yes">
|
||||
<InformativeText>
|
||||
<Abstract>This service exposes speed, cadence and other data
|
||||
from a Running Speed and Cadence Sensor intended for fitness
|
||||
applications.</Abstract>
|
||||
<Summary>The Running Speed and Cadence (RSC) Service exposes
|
||||
speed, cadence and other data related to fitness applications
|
||||
such as the stride length and the total distance the user has
|
||||
traveled while using the Speed and Cadence Sensor
|
||||
(Server).</Summary>
|
||||
</InformativeText>
|
||||
<Dependencies>
|
||||
<Dependency>This service has no dependencies on other
|
||||
GATT-based 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="RSC Measurement"
|
||||
type="org.bluetooth.characteristic.rsc_measurement">
|
||||
<InformativeText>The RSC Measurement characteristic is used
|
||||
to send speed and cadence measurements.</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="RSC Feature"
|
||||
type="org.bluetooth.characteristic.rsc_feature">
|
||||
<InformativeText>The RSC Feature characteristic is used to
|
||||
describe the supported features of the Server. Reserved for
|
||||
Future Use (RFU) bits in the SC 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 Calibration Procedure, Total Distance 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>
|
||||
|
After Width: | Height: | Size: 107 KiB |
|
After Width: | Height: | Size: 116 KiB |
|
After Width: | Height: | Size: 93 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
After Width: | Height: | Size: 124 KiB |
6
generate_appx_windows_store.bat
Normal file
@@ -0,0 +1,6 @@
|
||||
copy icons\iOS\iTunesArtwork@2x.png build-qdomyos-zwift-Qt_5_15_2_for_UWP_64bit_MSVC_2019-Release\release
|
||||
del build-qdomyos-zwift-Qt_5_15_2_for_UWP_64bit_MSVC_2019-Release\release\qz.appx
|
||||
cd build-qdomyos-zwift-Qt_5_15_2_for_UWP_64bit_MSVC_2019-Release\release
|
||||
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64\makeappx.exe" pack /d . /p qz
|
||||
explorer build-qdomyos-zwift-Qt_5_15_2_for_UWP_64bit_MSVC_2019-Release\release
|
||||
pause
|
||||