Compare commits
755 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7978c9e6fa | ||
|
|
4237192802 | ||
|
|
3caa6796b6 | ||
|
|
fcf9b6b909 | ||
|
|
572d8dc55f | ||
|
|
6f473816a1 | ||
|
|
6701c17332 | ||
|
|
89cee43d38 | ||
|
|
c17dde8f8f | ||
|
|
6e1aa44f2d | ||
|
|
660d26bbce | ||
|
|
7e7cb1c085 | ||
|
|
2aef7fbfba | ||
|
|
76347bf4cc | ||
|
|
280a0003ed | ||
|
|
74a1e1cbee | ||
|
|
2099c75fa8 | ||
|
|
cbb19271bf | ||
|
|
6fc2f952ce | ||
|
|
62c22d3539 | ||
|
|
83ea7b8f54 | ||
|
|
52fbe86e0f | ||
|
|
d000f81356 | ||
|
|
e815c14070 | ||
|
|
8b4b7221b5 | ||
|
|
6c025d84ad | ||
|
|
ed08f41065 | ||
|
|
71e8d74160 | ||
|
|
6261ff9da5 | ||
|
|
f507923cb1 | ||
|
|
8017904261 | ||
|
|
9a4d467d9f | ||
|
|
640781f381 | ||
|
|
b255de4627 | ||
|
|
bb9ece650f | ||
|
|
415689d725 | ||
|
|
1b66508df7 | ||
|
|
12c431f87c | ||
|
|
00a506cfdf | ||
|
|
e13ca40a75 | ||
|
|
3a2ea23822 | ||
|
|
fd4afdfc84 | ||
|
|
ec757e3418 | ||
|
|
efd9d82131 | ||
|
|
affd349ee9 | ||
|
|
2ae1c1dfaa | ||
|
|
bc6f066804 | ||
|
|
1f5f814f42 | ||
|
|
fc9b33b698 | ||
|
|
1ed4221d9f | ||
|
|
fe7f29b76f | ||
|
|
a165a4817c | ||
|
|
e35a7fe108 | ||
|
|
f91b7742c3 | ||
|
|
5065ca8c3b | ||
|
|
3a2b8bd1f4 | ||
|
|
837c7af7ee | ||
|
|
6c9103835f | ||
|
|
d16a27c891 | ||
|
|
834e21aaf0 | ||
|
|
7260433a91 | ||
|
|
c4bfff69f4 | ||
|
|
e71515ee3e | ||
|
|
2372824122 | ||
|
|
521baaa652 | ||
|
|
8df037d1ad | ||
|
|
afdbe7ba7a | ||
|
|
852308c78d | ||
|
|
020f3b6259 | ||
|
|
4fdcb32044 | ||
|
|
d55e7ed404 | ||
|
|
4e38266101 | ||
|
|
330e3f92b4 | ||
|
|
72ea0daeec | ||
|
|
b938b28076 | ||
|
|
5bb818332a | ||
|
|
85a7db1b56 | ||
|
|
972abc6277 | ||
|
|
5fdf22afc3 | ||
|
|
80669d7e2f | ||
|
|
74157b4901 | ||
|
|
a42f631bf4 | ||
|
|
47648cd57f | ||
|
|
eec5b9c9b2 | ||
|
|
61544c2099 | ||
|
|
afa3523cb2 | ||
|
|
8c6af93fd1 | ||
|
|
3dd5747b3c | ||
|
|
2901234d9c | ||
|
|
595e67a928 | ||
|
|
fa817d9f80 | ||
|
|
72b20f8c94 | ||
|
|
6dc0bd5cc5 | ||
|
|
da9eb7d0ba | ||
|
|
18f973ce00 | ||
|
|
469542416d | ||
|
|
fb6b96fa5b | ||
|
|
98f0b57eb6 | ||
|
|
4f8956829f | ||
|
|
9c6991e9d7 | ||
|
|
59b2c3895c | ||
|
|
ccef57f311 | ||
|
|
c25a752b20 | ||
|
|
9ecf10ea43 | ||
|
|
1238107b13 | ||
|
|
55fc7493c9 | ||
|
|
5959f7cbcc | ||
|
|
25ab5933a2 | ||
|
|
2e019c136f | ||
|
|
1d91f2800d | ||
|
|
66b879ebb7 | ||
|
|
e47824b1ff | ||
|
|
0e791c7bf7 | ||
|
|
4a02d27e35 | ||
|
|
224d09be9f | ||
|
|
f236db3392 | ||
|
|
ee88d7d6bf | ||
|
|
273310f915 | ||
|
|
405b956b06 | ||
|
|
ef88fcbfd3 | ||
|
|
c98913000c | ||
|
|
85d765e5e7 | ||
|
|
1406229b11 | ||
|
|
9c3a8627b5 | ||
|
|
a548fcafa8 | ||
|
|
b029054946 | ||
|
|
bcab7a9b15 | ||
|
|
5cf7e86d33 | ||
|
|
c0cd53c733 | ||
|
|
45743ca6ac | ||
|
|
54048922fa | ||
|
|
2b1fd00ca0 | ||
|
|
ccc5a12320 | ||
|
|
c828effd23 | ||
|
|
d7e6629567 | ||
|
|
b6a06c62d1 | ||
|
|
cea91bd082 | ||
|
|
a9e5270acd | ||
|
|
3f5b856310 | ||
|
|
7595971f96 | ||
|
|
1ecc2774d7 | ||
|
|
7e47914abe | ||
|
|
ef204e0a54 | ||
|
|
8e1015f64e | ||
|
|
ec9d7ab22f | ||
|
|
8cc9a916c4 | ||
|
|
0d1c1bfec2 | ||
|
|
90debd91ba | ||
|
|
bccecbbc88 | ||
|
|
850afc6688 | ||
|
|
3bffcba4de | ||
|
|
0fc319c2af | ||
|
|
3434f6963e | ||
|
|
482d47a48c | ||
|
|
0ce4714f8e | ||
|
|
1d27febf6a | ||
|
|
290301115b | ||
|
|
81ef67787a | ||
|
|
815bebf6f2 | ||
|
|
1f29d4c0ec | ||
|
|
4eaf8c87c5 | ||
|
|
234b377ceb | ||
|
|
23ba569e48 | ||
|
|
6e364009e3 | ||
|
|
b1f79c1903 | ||
|
|
0cb23e600c | ||
|
|
04b22af49d | ||
|
|
1e0589b3ed | ||
|
|
214224101c | ||
|
|
d574adbc3f | ||
|
|
1c77d030d9 | ||
|
|
0410246918 | ||
|
|
a86e662c1e | ||
|
|
c68fb8883c | ||
|
|
7dd0779f69 | ||
|
|
98ad1cdba8 | ||
|
|
386c88a8f4 | ||
|
|
5accc55e93 | ||
|
|
756e50d3ac | ||
|
|
d8c4b452c5 | ||
|
|
1430968566 | ||
|
|
13fcc3c20a | ||
|
|
8b7c20b40c | ||
|
|
f7b58c9e6d | ||
|
|
2adb329ece | ||
|
|
a5cdb9dc00 | ||
|
|
c971b1b00c | ||
|
|
85bbd15bd0 | ||
|
|
dc597c9299 | ||
|
|
b85b8a978a | ||
|
|
b27ad9d395 | ||
|
|
671de1a799 | ||
|
|
2565997fb6 | ||
|
|
8baba02f98 | ||
|
|
fbbfdd54e8 | ||
|
|
a09bc7156a | ||
|
|
5922619605 | ||
|
|
2bd9e119f8 | ||
|
|
a52faadbef | ||
|
|
5751184c46 | ||
|
|
d7418e80c2 | ||
|
|
d9578d3c32 | ||
|
|
66b09ee99a | ||
|
|
8b213d6103 | ||
|
|
2f584fd2d7 | ||
|
|
9cf8357c4f | ||
|
|
3f53de0832 | ||
|
|
59e6f33e9f | ||
|
|
24edace814 | ||
|
|
5da1125ecd | ||
|
|
8566c2ccbd | ||
|
|
d3acb298e8 | ||
|
|
3827bb4210 | ||
|
|
e71519d358 | ||
|
|
4c2a881407 | ||
|
|
a67179105c | ||
|
|
e092cec215 | ||
|
|
4f8e9019af | ||
|
|
4d68f77368 | ||
|
|
a05ae6cafe | ||
|
|
1283219c51 | ||
|
|
de30d0d09f | ||
|
|
ab5df9f725 | ||
|
|
613fe1639c | ||
|
|
4de6468393 | ||
|
|
c4f4c9a81a | ||
|
|
5a22dce8d4 | ||
|
|
bea4f3044c | ||
|
|
f8018aab68 | ||
|
|
a9d9adc25f | ||
|
|
e04cb7cb6a | ||
|
|
8539ff8430 | ||
|
|
8b60d2c61d | ||
|
|
5590e64e0a | ||
|
|
8379f8ac6a | ||
|
|
fcd6d41586 | ||
|
|
c72b04a413 | ||
|
|
342bf0caed | ||
|
|
850b18ab35 | ||
|
|
f2437b4722 | ||
|
|
595d84fb7c | ||
|
|
26246e3ef7 | ||
|
|
70196d69ad | ||
|
|
5f6ba57b33 | ||
|
|
749d465556 | ||
|
|
f143a94426 | ||
|
|
916ad43f4e | ||
|
|
4850d03825 | ||
|
|
8c72eb65ff | ||
|
|
be2ffe7580 | ||
|
|
a0a54716b8 | ||
|
|
386c85c01b | ||
|
|
908a7bfcc0 | ||
|
|
a2e0e483b5 | ||
|
|
f84e6d4598 | ||
|
|
5e5247aee1 | ||
|
|
2e27485e3b | ||
|
|
67cb2f1c8f | ||
|
|
f2ff6eaa4a | ||
|
|
2367709b2e | ||
|
|
3fc266a061 | ||
|
|
a008f6b57c | ||
|
|
27ef8da039 | ||
|
|
e45665502f | ||
|
|
c6297469d7 | ||
|
|
b419b400ba | ||
|
|
e7a7a87e48 | ||
|
|
61cb198893 | ||
|
|
dc02747f87 | ||
|
|
676c3d6b79 | ||
|
|
e32ed43c29 | ||
|
|
b4fabf70c2 | ||
|
|
e0af232f76 | ||
|
|
bdd9997bb5 | ||
|
|
950503d231 | ||
|
|
20a6275ae8 | ||
|
|
ef187ed37e | ||
|
|
11f6818663 | ||
|
|
41ef3b1d22 | ||
|
|
1ddec5f97b | ||
|
|
9ddd4a63bb | ||
|
|
3f1d9e3be0 | ||
|
|
fa7c5ee40d | ||
|
|
10ee12bfcd | ||
|
|
a43e5861d7 | ||
|
|
1724dcc8ff | ||
|
|
aca11bdb40 | ||
|
|
862ee9a2d0 | ||
|
|
a1f29738ab | ||
|
|
b03919ed86 | ||
|
|
d5c6c67f11 | ||
|
|
07d33798a0 | ||
|
|
27a748c6a6 | ||
|
|
9c839854fa | ||
|
|
fb2ea36c4b | ||
|
|
6ae4d63c30 | ||
|
|
ae3ef67825 | ||
|
|
751412e639 | ||
|
|
c73921af4f | ||
|
|
ab9106f902 | ||
|
|
aad6940ca7 | ||
|
|
470e4264b2 | ||
|
|
72e76638ff | ||
|
|
af1388a067 | ||
|
|
8205a7c33f | ||
|
|
f532372535 | ||
|
|
a2a34a4e2f | ||
|
|
6f96c9e3ff | ||
|
|
9aca12e0a5 | ||
|
|
ead55fe0e3 | ||
|
|
f2820471bc | ||
|
|
fb7885ada2 | ||
|
|
f9f4dc5a92 | ||
|
|
ffe4f562cc | ||
|
|
a906428734 | ||
|
|
abc7e6fec1 | ||
|
|
3b01cf3782 | ||
|
|
53d616fb16 | ||
|
|
8168c1f201 | ||
|
|
a0e1e032d6 | ||
|
|
77eca7578f | ||
|
|
d13badca50 | ||
|
|
acf4f84cae | ||
|
|
c24d135815 | ||
|
|
0d64476b04 | ||
|
|
091e110afd | ||
|
|
de8ba52643 | ||
|
|
8a2bb6eb32 | ||
|
|
ed649fd1b1 | ||
|
|
4cd4b99ae0 | ||
|
|
c903afa09d | ||
|
|
8aeb11f771 | ||
|
|
ed51b826a0 | ||
|
|
bb84eeb35e | ||
|
|
8a9fd2a97c | ||
|
|
3b49f9a67f | ||
|
|
2a4faedf67 | ||
|
|
82f7f82f54 | ||
|
|
276922104c | ||
|
|
3bd4a6673f | ||
|
|
1909feceba | ||
|
|
e585341933 | ||
|
|
e87054f0d3 | ||
|
|
6b0bd77d49 | ||
|
|
77f4cbcdd3 | ||
|
|
928c5938e9 | ||
|
|
03500d70af | ||
|
|
2c30a5361f | ||
|
|
c59d31fc21 | ||
|
|
5115ba6d8a | ||
|
|
4daab3d286 | ||
|
|
34512e5e49 | ||
|
|
0fddd90e1f | ||
|
|
29b6a58769 | ||
|
|
549b2e3815 | ||
|
|
88ef7d7eca | ||
|
|
d70c3f92ad | ||
|
|
4a25fed9d5 | ||
|
|
6fb4d43500 | ||
|
|
76dca88b62 | ||
|
|
bc7fb94d63 | ||
|
|
2bedc6cd31 | ||
|
|
c0f748756b | ||
|
|
181a8aeb1b | ||
|
|
c45f7b8148 | ||
|
|
1d21665c16 | ||
|
|
b87d3c612b | ||
|
|
d6757d67f8 | ||
|
|
376e44ec6c | ||
|
|
94402d96ad | ||
|
|
d3a1bf7eb6 | ||
|
|
beb9370fc5 | ||
|
|
8dc4e6e0b9 | ||
|
|
360ce5c77b | ||
|
|
4b6d630f5c | ||
|
|
47d4b3d8a8 | ||
|
|
162d9d05cc | ||
|
|
4f114184bf | ||
|
|
b2bc692cc2 | ||
|
|
810e44563c | ||
|
|
704aaf163c | ||
|
|
55988650a6 | ||
|
|
eb499512ee | ||
|
|
794310550c | ||
|
|
280db083b4 | ||
|
|
d5353a5bef | ||
|
|
fc428d45b9 | ||
|
|
19181facdb | ||
|
|
8813fce63f | ||
|
|
ac8090ae8b | ||
|
|
53e644a5f7 | ||
|
|
a325156e71 | ||
|
|
05e1875eec | ||
|
|
98d1ad8494 | ||
|
|
ef6b8727b9 | ||
|
|
d7ced0f9c4 | ||
|
|
d76ef207fe | ||
|
|
fdf6eadfcd | ||
|
|
4e4f02404f | ||
|
|
42c942514f | ||
|
|
a6b0ac43e9 | ||
|
|
0893eb85bc | ||
|
|
e817e3c7a5 | ||
|
|
32f98fa70e | ||
|
|
66bdffc747 | ||
|
|
5d353125d2 | ||
|
|
7f2d4344e3 | ||
|
|
4736871524 | ||
|
|
bcd88d6d4d | ||
|
|
8ffe74b772 | ||
|
|
57ae4c304f | ||
|
|
8be77ab7d9 | ||
|
|
8c193b913f | ||
|
|
4fac517a1e | ||
|
|
4f7061351f | ||
|
|
decc5ecae6 | ||
|
|
f06fae6885 | ||
|
|
8d46f51c66 | ||
|
|
601ef0848d | ||
|
|
3b0dd46ca6 | ||
|
|
16b2e1903a | ||
|
|
36d7a95d34 | ||
|
|
1d82e195ec | ||
|
|
78cae0c69a | ||
|
|
2b46ee27f2 | ||
|
|
de44400749 | ||
|
|
55e40bd6c3 | ||
|
|
124950d7e4 | ||
|
|
199104ca83 | ||
|
|
e5552e0a4b | ||
|
|
bfb0aa7961 | ||
|
|
44d83bdcf8 | ||
|
|
d960e57cf9 | ||
|
|
30ec03ef4d | ||
|
|
c2c27b1577 | ||
|
|
c0449ccf59 | ||
|
|
ea933ce3d1 | ||
|
|
327666385b | ||
|
|
8ea511b293 | ||
|
|
c510fe5cf0 | ||
|
|
dab70937f5 | ||
|
|
fec4859cfe | ||
|
|
63ecc3b713 | ||
|
|
d3a08c60d7 | ||
|
|
322eb1e255 | ||
|
|
22d4f3c3e7 | ||
|
|
008750b1d9 | ||
|
|
506767f32f | ||
|
|
aaa673de92 | ||
|
|
43237d8ff4 | ||
|
|
9681fc9a87 | ||
|
|
76c3e96f76 | ||
|
|
1e66afa6a4 | ||
|
|
41c59e8e49 | ||
|
|
225e3d7936 | ||
|
|
204dd97b00 | ||
|
|
27bfecc737 | ||
|
|
8cdb131a19 | ||
|
|
c9042588f0 | ||
|
|
342eaec49a | ||
|
|
77b3d28e3b | ||
|
|
357b38b5e7 | ||
|
|
a99a1c7540 | ||
|
|
6742ba332a | ||
|
|
c5916fea7c | ||
|
|
7a4958f8e9 | ||
|
|
b71a96faee | ||
|
|
24e79f0169 | ||
|
|
76e887407a | ||
|
|
0d0c8e54f4 | ||
|
|
06a01f7e32 | ||
|
|
f564d20c5b | ||
|
|
85afded6b4 | ||
|
|
7e84853c37 | ||
|
|
c3c324158f | ||
|
|
1e2fd40c05 | ||
|
|
6a7f78a218 | ||
|
|
0b637e56d7 | ||
|
|
63f44a5a3f | ||
|
|
83ce14e31b | ||
|
|
8162357ce6 | ||
|
|
ba0e9cf9c5 | ||
|
|
8d1072d97d | ||
|
|
ffd4fdf2dc | ||
|
|
d279f04a1f | ||
|
|
77e8c858a0 | ||
|
|
f6edf15011 | ||
|
|
b50c34b19c | ||
|
|
874f206e2a | ||
|
|
fd262fdb6a | ||
|
|
2cb17985d4 | ||
|
|
2daa6f108a | ||
|
|
2e0d92c0d5 | ||
|
|
1a0d61af7c | ||
|
|
eb9fc6140b | ||
|
|
b0d72030fa | ||
|
|
db27d422ae | ||
|
|
d6ec597fe2 | ||
|
|
0fe319f430 | ||
|
|
2616b49e82 | ||
|
|
c2fd26db56 | ||
|
|
71bd59fe3d | ||
|
|
5b84fe63dd | ||
|
|
40782063c4 | ||
|
|
580eb2400c | ||
|
|
4666e443cb | ||
|
|
d52c1701e4 | ||
|
|
4a543c75f7 | ||
|
|
0b15f4ffd5 | ||
|
|
0f6e24d07f | ||
|
|
7110ef1420 | ||
|
|
a56cef65d5 | ||
|
|
f58be1ff6f | ||
|
|
b1a788864c | ||
|
|
fe468d911b | ||
|
|
ef8e1c0478 | ||
|
|
710c4fb33e | ||
|
|
3ef8656bcd | ||
|
|
251e15f503 | ||
|
|
eb2f9d9c2b | ||
|
|
dfcd3ea693 | ||
|
|
7260128dfd | ||
|
|
d4e783c96f | ||
|
|
c57a342053 | ||
|
|
9ed9af2d04 | ||
|
|
295b9c98d1 | ||
|
|
8f4de0e08f | ||
|
|
8f53301b79 | ||
|
|
6372ef8c22 | ||
|
|
a91f9e5a6b | ||
|
|
6b74f75616 | ||
|
|
9cd9babb83 | ||
|
|
380c14da56 | ||
|
|
32c1c18af2 | ||
|
|
b7077339a1 | ||
|
|
52fd505ffc | ||
|
|
b911b7a3dd | ||
|
|
9b38d5135e | ||
|
|
0346c48546 | ||
|
|
212c6ca5ac | ||
|
|
361c89d016 | ||
|
|
b0cbc67799 | ||
|
|
18cfb08054 | ||
|
|
66121e6d5d | ||
|
|
a4841de17e | ||
|
|
84aef97e37 | ||
|
|
f14e1976e7 | ||
|
|
8c9acc98fb | ||
|
|
bd36428bd4 | ||
|
|
7f7276e34a | ||
|
|
460761ef68 | ||
|
|
9fefc6428e | ||
|
|
ffe4423c10 | ||
|
|
3f02919cd9 | ||
|
|
3075badf33 | ||
|
|
29d66ee264 | ||
|
|
846ec3a430 | ||
|
|
a65a50ffd3 | ||
|
|
c945bb9d03 | ||
|
|
3dc9575c9e | ||
|
|
f901167009 | ||
|
|
8519a6c6a4 | ||
|
|
d8fc2c088f | ||
|
|
679cd37ec6 | ||
|
|
40be77f9c3 | ||
|
|
1a0d762c4e | ||
|
|
a7e0032225 | ||
|
|
0b9df02faa | ||
|
|
0dcf7d1520 | ||
|
|
b146057ca7 | ||
|
|
2628d912cd | ||
|
|
2e75d531a6 | ||
|
|
be7607bc17 | ||
|
|
5bd724141e | ||
|
|
7b5538c104 | ||
|
|
462e7d6ffe | ||
|
|
68a32e036e | ||
|
|
dba5b63230 | ||
|
|
26efccb110 | ||
|
|
e0516663aa | ||
|
|
d737d91bc2 | ||
|
|
1b10d59188 | ||
|
|
a9ca13c55d | ||
|
|
57fbe9cc09 | ||
|
|
061b225690 | ||
|
|
27189d559a | ||
|
|
d9e0c94797 | ||
|
|
e2e719a12e | ||
|
|
52ec97f11f | ||
|
|
d094386c4d | ||
|
|
515777bd96 | ||
|
|
d56d0dfaaf | ||
|
|
60b22d0df8 | ||
|
|
0072bf8330 | ||
|
|
f36b4546a9 | ||
|
|
c0a97fd263 | ||
|
|
46932e4adf | ||
|
|
0c2675ec28 | ||
|
|
f4e5d7978a | ||
|
|
cc7ba566c5 | ||
|
|
d47e3f6bbf | ||
|
|
2335c74b55 | ||
|
|
ca4bab7bf8 | ||
|
|
d4d84ea422 | ||
|
|
f985e07be4 | ||
|
|
bab62cf374 | ||
|
|
4eb988c34d | ||
|
|
3006d7e32e | ||
|
|
3e9b7426bf | ||
|
|
e8f93782e0 | ||
|
|
839a8b4102 | ||
|
|
89a1b81ea2 | ||
|
|
6306af3c4a | ||
|
|
910b24c460 | ||
|
|
5dc580c76b | ||
|
|
c0705222f5 | ||
|
|
b51e8add55 | ||
|
|
873785bb53 | ||
|
|
86211df4b3 | ||
|
|
5ef5c6b641 | ||
|
|
5b96253146 | ||
|
|
54111504ac | ||
|
|
bc2a2895e0 | ||
|
|
80833486cd | ||
|
|
e92c59bf25 | ||
|
|
d511b2f65c | ||
|
|
921785c29d | ||
|
|
1db42fd268 | ||
|
|
6313cc8135 | ||
|
|
7abf7de71b | ||
|
|
c5628cecc0 | ||
|
|
5212d3bfe5 | ||
|
|
bed317a05b | ||
|
|
7644e29f71 | ||
|
|
3245d5fcf5 | ||
|
|
9dbce4d08b | ||
|
|
84a046ce82 | ||
|
|
d5c5a8723a | ||
|
|
67051b21a0 | ||
|
|
f646f003c1 | ||
|
|
ad1a3925ff | ||
|
|
5ae686ac5f | ||
|
|
6a1429c2eb | ||
|
|
4645c0bc13 | ||
|
|
51e5fa3b03 | ||
|
|
c3ff38a310 | ||
|
|
a547aacfa9 | ||
|
|
06fc6ceeb6 | ||
|
|
e8c3153ff5 | ||
|
|
84ac98cfe1 | ||
|
|
9579342e95 | ||
|
|
04ed4996e7 | ||
|
|
f22b4cd39a | ||
|
|
4d2ea5478d | ||
|
|
8ca722165a | ||
|
|
88a14a753e | ||
|
|
01bc387134 | ||
|
|
c692f4d393 | ||
|
|
fe9df2c34f | ||
|
|
a1968467de | ||
|
|
875698c926 | ||
|
|
f035d37243 | ||
|
|
3f7dec4d79 | ||
|
|
3d59c78ad8 | ||
|
|
d6b664e2f6 | ||
|
|
a387783287 | ||
|
|
a2d610133a | ||
|
|
62fb15e58f | ||
|
|
05c22bb839 | ||
|
|
08eae11f25 | ||
|
|
fb90bc8c1f | ||
|
|
0c275dce98 | ||
|
|
97b8eb435a | ||
|
|
7ebc57b659 | ||
|
|
2036e7e3ec | ||
|
|
bf054ef9f5 | ||
|
|
26e67edafe | ||
|
|
5ab31f5133 | ||
|
|
2ec6930099 | ||
|
|
4aa8f3f5dc | ||
|
|
2506c8420f | ||
|
|
90a04c04d2 | ||
|
|
48c800fd5a | ||
|
|
dafce44c0a | ||
|
|
a70885ad18 | ||
|
|
b5110d9df3 | ||
|
|
1391ffa2a5 | ||
|
|
ce8b52f684 | ||
|
|
0256deef66 | ||
|
|
f05a47d636 | ||
|
|
db4d84e1c0 | ||
|
|
adfde391ab | ||
|
|
512b4c2e09 | ||
|
|
e56143c508 | ||
|
|
f9aa441ce8 | ||
|
|
37e0185d25 | ||
|
|
29070efc06 | ||
|
|
3ddd37b843 | ||
|
|
409b603530 | ||
|
|
0458de2fb0 | ||
|
|
7c74ce3212 | ||
|
|
624162a3ec | ||
|
|
612b222887 | ||
|
|
d4efa58388 | ||
|
|
04ba342542 | ||
|
|
3105ce109c | ||
|
|
757b829a17 | ||
|
|
ea16ef847e | ||
|
|
294ccfe3f9 | ||
|
|
6ef5298b8b | ||
|
|
d31b41ed9e | ||
|
|
2100ca222c | ||
|
|
2dcb929089 | ||
|
|
7a95cbdf62 | ||
|
|
1ab251af6a | ||
|
|
d1c5e847da | ||
|
|
dc501bb2e6 | ||
|
|
e3e722a972 | ||
|
|
f7b47afae7 | ||
|
|
74d1eeca24 | ||
|
|
fa8f5ba41e | ||
|
|
1ee279bc5a | ||
|
|
d724f93e36 | ||
|
|
96783c1ee2 | ||
|
|
db5c6d0865 | ||
|
|
5f6df5569e | ||
|
|
661a121d6f | ||
|
|
25856e4675 | ||
|
|
cedf3f8364 | ||
|
|
0a66d3f3e3 | ||
|
|
10251c3c43 | ||
|
|
3cd9973fc1 | ||
|
|
2c68dd1a31 | ||
|
|
34cfb3548a | ||
|
|
fc3e98bdc6 | ||
|
|
bb6226f420 | ||
|
|
79c4d0d128 | ||
|
|
571c12061e | ||
|
|
786dd72b82 | ||
|
|
e53d318e22 | ||
|
|
2d0e06f22c | ||
|
|
f544c32d6d | ||
|
|
c56b1040d4 | ||
|
|
51e4cbef32 | ||
|
|
8a60e4e467 | ||
|
|
bb792206cc | ||
|
|
6448e6b928 | ||
|
|
7b7d53c97a | ||
|
|
431b97a011 | ||
|
|
5ccf4fac48 | ||
|
|
ba21ed7cf9 | ||
|
|
1db6453fd2 | ||
|
|
713b2fef0d | ||
|
|
05aa5cc8c1 | ||
|
|
9e5eec4e3b |
13
.editorconfig
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = true
|
||||||
|
charset = utf-8
|
||||||
|
|
||||||
|
[*.{py,swift,launch}]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
|
|
||||||
|
[*.{js,html}]
|
||||||
|
indent_style = tab
|
||||||
2
.gitattributes
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
apps/ios/cleverrc/roslib.js linguist-vendored
|
||||||
|
apps/ios/cleverrc/BinUtils.swift linguist-vendored
|
||||||
3
.gitignore
vendored
@@ -1,2 +1,3 @@
|
|||||||
/deploy/ros_lib/
|
|
||||||
*.pyc
|
*.pyc
|
||||||
|
*.DS_Store
|
||||||
|
/images
|
||||||
4
.gitmodules
vendored
@@ -1,4 +0,0 @@
|
|||||||
[submodule "clever/static"]
|
|
||||||
path = clever/static
|
|
||||||
url = https://github.com/CopterExpress/clever-rc.git
|
|
||||||
branch = build
|
|
||||||
22
.markdownlint.json
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"MD003": false,
|
||||||
|
"MD013": false,
|
||||||
|
"MD033": false,
|
||||||
|
"MD034": false,
|
||||||
|
"MD044": {
|
||||||
|
"names": [
|
||||||
|
"MAVLink",
|
||||||
|
"ROS",
|
||||||
|
"Python",
|
||||||
|
"C++",
|
||||||
|
"PX4",
|
||||||
|
"WireShark",
|
||||||
|
"Wi-Fi",
|
||||||
|
"Raspberry Pi",
|
||||||
|
"Pixhawk",
|
||||||
|
"Pixracer",
|
||||||
|
"ArUco"
|
||||||
|
],
|
||||||
|
"code_blocks": false
|
||||||
|
}
|
||||||
|
}
|
||||||
35
.travis.yml
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
sudo: required
|
||||||
|
language: generic
|
||||||
|
services:
|
||||||
|
- docker
|
||||||
|
env:
|
||||||
|
global:
|
||||||
|
- DOCKER="smirart/img-tool:v0.1"
|
||||||
|
- TARGET_REPO="https://github.com/${TRAVIS_REPO_SLUG}.git"
|
||||||
|
- if [[ -z ${TRAVIS_TAG} ]]; then IMAGE_VERSION="${TRAVIS_COMMIT}}"; else IMAGE_VERSION="${TRAVIS_TAG}"; fi
|
||||||
|
- IMAGE_NAME="$(basename -s '.git' ${TARGET_REPO})_${IMAGE_VERSION}.img"
|
||||||
|
git:
|
||||||
|
depth: 1
|
||||||
|
before_script:
|
||||||
|
- docker pull ${DOCKER}
|
||||||
|
script:
|
||||||
|
- docker run --privileged --rm -v /dev:/dev -v $(pwd):/builder/repo -e TRAVIS_TAG="${TRAVIS_TAG}" ${DOCKER}
|
||||||
|
before_deploy:
|
||||||
|
# Set up git user name and tag this commit
|
||||||
|
- git config --local user.name "urpylka"
|
||||||
|
- git config --local user.email "urpylka@gmail.com"
|
||||||
|
- sudo chmod -R 777 *
|
||||||
|
- cd images && zip ${IMAGE_NAME}.zip ${IMAGE_NAME}
|
||||||
|
deploy:
|
||||||
|
provider: releases
|
||||||
|
api_key: ${GITHUB_OAUTH_TOKEN}
|
||||||
|
file: ${IMAGE_NAME}.zip
|
||||||
|
skip_cleanup: true
|
||||||
|
on:
|
||||||
|
tags: true
|
||||||
|
|
||||||
|
# More info there
|
||||||
|
# https://github.com/travis-ci/travis-ci/issues/6893
|
||||||
|
# https://docs.travis-ci.com/user/customizing-the-build/
|
||||||
|
# https://docs.travis-ci.com/user/deployment/releases
|
||||||
|
# https://docs.travis-ci.com/user/environment-variables/
|
||||||
21
LICENSE.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2018 Copter Express Technologies
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
55
README.md
@@ -1,62 +1,69 @@
|
|||||||
Клевер
|
# CLEVER
|
||||||
======
|
|
||||||
|
|
||||||
<img src="assets/clever.jpg" align="right" width="300px" alt="Клевер">
|
<img src="docs/assets/clever3.png" align="right" width="300px" alt="CLEVER drone">
|
||||||
|
|
||||||
«Клевер» — это учебный конструктор программируемого квадрокоптера, состоящего из популярных открытых компонентов, а также набор необходимой документации и библиотек для работы с ним.
|
CLEVER is an educational programmable drone kit consisting of an unassembled quadcopter, open source software and documentation. The kit includes Pixhawk/Pixracer autopilot running PX4 firmware, Raspberry Pi 3 as companion computer, a camera for computer vision navigation as well as additional sensors and peripheral devices.
|
||||||
|
|
||||||
Набор включает в себя полетный контроллер PixHawk/PixRacer с полетным стеком PX4, Raspberry Pi 3 в качестве управлящего бортового компьютера, модуль камеры для реализации полетов с использованием компьютерного зрения, а также набор различных датчиков и другой периферии.
|
Copter Express has implemented a large number of different autonomous drone projects using exactly the same platform: [automated pizza delivery](https://www.youtube.com/watch?v=hmkAoZOtF58) in Samara and Kazan, coffee delivery in Skolkovo Innovation Center, [autonomous quadcopter with charging station](https://www.youtube.com/watch?v=RjX6nUqw1mI) for site monitoring and security, winning drones on [Robocross-2016](https://www.youtube.com/watch?v=dGbDaz_VmYU) and [Robocross-2017](https://youtu.be/AQnd2CRczbQ) competitions and many others.
|
||||||
|
|
||||||
На базе точно такой же платформы были созданы многие «большие» проекты компании Copter Express, например, дроны для [пиар-акций по автономной доставке пиццы](https://www.youtube.com/watch?v=hmkAoZOtF58) (Самара, Казань); дрон-доставщик кофе в Сколково, мониторинговый дрон с зарядной станцией, дроны-победители на полевых испытаниях «[Робокросс-2016](https://www.youtube.com/watch?v=dGbDaz_VmYU)», «[Робокросс-2017](https://youtu.be/AQnd2CRczbQ)» и многие другие.
|
**The main documentation in Russian is available [on our Gitbook](https://clever.copterexpress.com/).**
|
||||||
|
|
||||||
Для того, чтобы научиться собирать, настраивать, пилотировать и программировать автономный дрон «Клевер», воспользуйтесь этим учебником.
|
Use it to learn how to assemble, configure, pilot and program autonomous CLEVER drone.
|
||||||
|
|
||||||
Основная документация
|
## Preconfigured RPi 3 image
|
||||||
---------------------
|
|
||||||
|
|
||||||
https://copterexpress.gitbooks.io/clever/content/
|
**Preconfigured image for Raspberry Pi 3 with installed and configured software, ready to fly, is available [in the Releases section](https://github.com/CopterExpress/clever/releases).**
|
||||||
|
|
||||||
**Готовый образ ОС** для RPi 3 с предустановленным и преднастроенным ПО можно скачать [здесь](https://copterexpress.gitbooks.io/clever/content/docs/microsd_images.html).
|
[](https://travis-ci.org/urpylka/clever)
|
||||||
|
|
||||||
[Описание API](https://copterexpress.gitbooks.io/clever/content/docs/simple_offboard.html) для автономных полетов.
|
Image includes:
|
||||||
|
|
||||||
Ручная установка
|
* Raspbian Stretch
|
||||||
---------
|
* ROS Kinetic
|
||||||
|
* Configured networking
|
||||||
|
* OpenCV
|
||||||
|
* mavros
|
||||||
|
* CLEVER software bundle for autonomous drone control
|
||||||
|
|
||||||
Склонировать репозиторий в папку `/home/pi/catkin_ws/src/clever` (**важно**):
|
API description (in Russian) for autonomous flights is available [on GitBook](https://copterexpress.gitbooks.io/clever/simple_offboard.html).
|
||||||
|
|
||||||
|
## Manual installation
|
||||||
|
|
||||||
|
Install ROS Kinetic according to the [documentation](http://wiki.ros.org/kinetic/Installation).
|
||||||
|
|
||||||
|
Clone repo to directory `/home/pi/catkin_ws/src/clever`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/catkin_ws/src
|
cd ~/catkin_ws/src
|
||||||
git clone https://github.com/CopterExpress/clever_bundle.git clever
|
git clone https://github.com/CopterExpress/clever.git clever
|
||||||
```
|
```
|
||||||
|
|
||||||
Пересобрать ROS-пакеты:
|
Build ROS packages:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/catkin_ws
|
cd ~/catkin_ws
|
||||||
catkin_make -j1
|
catkin_make -j1
|
||||||
```
|
```
|
||||||
|
|
||||||
Включить сервис roscore (если он не включен):
|
Enable systemd service `roscore` (if not enabled):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo systemctl enable /home/pi/catkin_ws/src/clever/deploy/roscore.service
|
sudo systemctl enable /home/pi/catkin_ws/src/clever/deploy/roscore.service
|
||||||
sudo systemctl start roscore
|
sudo systemctl start roscore
|
||||||
```
|
```
|
||||||
|
|
||||||
Включить сервис clever:
|
Enable systemd service `clever`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo systemctl enable /home/pi/catkin_ws/src/clever/deploy/clever.service
|
sudo systemctl enable /home/pi/catkin_ws/src/clever/deploy/clever.service
|
||||||
sudo systemctl start clever
|
sudo systemctl start clever
|
||||||
```
|
```
|
||||||
|
|
||||||
Зависимости
|
### Dependencies
|
||||||
-----------
|
|
||||||
|
|
||||||
[ROS Kinetic](http://wiki.ros.org/kinetic).
|
[ROS Kinetic](http://wiki.ros.org/kinetic).
|
||||||
|
|
||||||
Необходимые для работы ROS-пакеты:
|
Necessary ROS packages:
|
||||||
|
|
||||||
* `opencv3`
|
* `opencv3`
|
||||||
* `mavros`
|
* `mavros`
|
||||||
@@ -65,8 +72,6 @@ sudo systemctl start clever
|
|||||||
* `cv_camera`
|
* `cv_camera`
|
||||||
* `nodelet`
|
* `nodelet`
|
||||||
* `dynamic_reconfigure`
|
* `dynamic_reconfigure`
|
||||||
* `bondcpp`, ветка `master`
|
* `bondcpp`, branch `master`
|
||||||
* `roslint`
|
* `roslint`
|
||||||
* `rosserial`
|
* `rosserial`
|
||||||
|
|
||||||
TODO: внести в package.xml
|
|
||||||
|
|||||||
44
SUMMARY.md
@@ -1,44 +0,0 @@
|
|||||||
# Summary
|
|
||||||
|
|
||||||
* [Введение](README.md)
|
|
||||||
* [Сборка](docs/assemble.md)
|
|
||||||
* [Первоначальная настройка](docs/setup.md)
|
|
||||||
* [Полетные режимы](docs/modes.md)
|
|
||||||
* [Raspberry Pi](docs/raspberry.md)
|
|
||||||
* [Образ операционной системы на RPi](docs/microsd_images.md)
|
|
||||||
* [Подключение Raspberry Pi к PixHawk](docs/connection.md)
|
|
||||||
* [Подключение по Wi-Fi](docs/wifi.md)
|
|
||||||
* [Работа с QGroundControl через Wi-Fi](docs/gcs_bridge.md)
|
|
||||||
* [SSH-доступ](docs/ssh.md)
|
|
||||||
* [Неисправности радиоаппаратуры](docs/radioerrors.md)
|
|
||||||
* [Безопасность](docs/safety.md)
|
|
||||||
* [Техника безопасности по пайке](docs/tb.md)
|
|
||||||
* [Просмотр видеострима с камер](docs/web_video_server.md)
|
|
||||||
* [Работа с ROS](docs/ros.md)
|
|
||||||
* [MAVROS](docs/mavros.md)
|
|
||||||
* [Автономный полет в OFFBOARD](docs/simple_offboard.md)
|
|
||||||
* [Навигация по ArUco-маркерам](docs/aruco.md)
|
|
||||||
* [Взаимодействие с Arduino](docs/arduino.md)
|
|
||||||
* [Системы координат](docs/frames.md)
|
|
||||||
* [Работа с камерой \(компьютерное зрение\)](docs/camera.md)
|
|
||||||
* [Ориентация камеры](docs/camera_frame.md)
|
|
||||||
* [Визуализация с помощью rviz](docs/rviz.md)
|
|
||||||
* [Работа с SITL](docs/sitl.md)
|
|
||||||
* [Подключение GPS](docs/gps.md)
|
|
||||||
* [Использование 3G-модема](docs/3g.md)
|
|
||||||
* [Примеры программ](primeri-programm.md)
|
|
||||||
* Учебник
|
|
||||||
* [Урок 1](docs/les1.md)
|
|
||||||
* [Урок 2](docs/les2.md)
|
|
||||||
* [Урок 7](docs/les7.md)
|
|
||||||
* [Урок 8](docs/les8.md)
|
|
||||||
* [Урок 9](docs/les9.md)
|
|
||||||
* [Урок 11](docs/les11.md)
|
|
||||||
* [Урок 13](docs/les13.md)
|
|
||||||
* [Урок 15](docs/les15.md)
|
|
||||||
* [Урок 16](docs/les16.md)
|
|
||||||
* Другое
|
|
||||||
* [CopterHack-2017](docs/copterhack2017.md)
|
|
||||||
* [Прошивка ESC контроллеров с помощью Arduino](docs/esc_firmware.md)
|
|
||||||
* [Полезные ссылки](docs/links.md)
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
theme: jekyll-theme-cayman
|
|
||||||
tagline: Конструктор программируемого квадрокоптера
|
|
||||||
17
apps/ios/.gitignore
vendored
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# Xcode
|
||||||
|
.DS_Store
|
||||||
|
build/
|
||||||
|
*.pbxuser
|
||||||
|
!default.pbxuser
|
||||||
|
*.mode1v3
|
||||||
|
!default.mode1v3
|
||||||
|
*.mode2v3
|
||||||
|
!default.mode2v3
|
||||||
|
*.perspectivev3
|
||||||
|
!default.perspectivev3
|
||||||
|
!default.xcworkspace
|
||||||
|
xcuserdata
|
||||||
|
profile
|
||||||
|
*.moved-aside
|
||||||
|
DerivedData
|
||||||
|
Pods/
|
||||||
13
apps/ios/Podfile
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
project 'cleverrc.xcodeproj/'
|
||||||
|
|
||||||
|
# Uncomment the next line to define a global platform for your project
|
||||||
|
# platform :ios, '9.0'
|
||||||
|
|
||||||
|
target 'cleverrc' do
|
||||||
|
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
|
||||||
|
use_frameworks!
|
||||||
|
|
||||||
|
# Pods for cleverrc
|
||||||
|
pod 'SwiftSocket', '~> 2.0'
|
||||||
|
|
||||||
|
end
|
||||||
12
apps/ios/Podfile.lock
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
PODS:
|
||||||
|
- SwiftSocket (2.0.2)
|
||||||
|
|
||||||
|
DEPENDENCIES:
|
||||||
|
- SwiftSocket (~> 2.0)
|
||||||
|
|
||||||
|
SPEC CHECKSUMS:
|
||||||
|
SwiftSocket: 6f4c9c63fbc5c1d61188936bb3c599fd546f40ae
|
||||||
|
|
||||||
|
PODFILE CHECKSUM: 2044f57d00f536792fbc38c63ded4fa78dcc135c
|
||||||
|
|
||||||
|
COCOAPODS: 1.4.0
|
||||||
10
apps/ios/README.md
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
iOS-приложение для управления Клевером
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
Для установки зависимостей необходим [CocoaPods](https://cocoapods.org):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pod install
|
||||||
|
```
|
||||||
|
|
||||||
|
Для разработки и сборки откройте в XCode файл `cleverrc.xcworkspace`.
|
||||||
444
apps/ios/cleverrc.xcodeproj/project.pbxproj
Normal file
@@ -0,0 +1,444 @@
|
|||||||
|
// !$*UTF8*$!
|
||||||
|
{
|
||||||
|
archiveVersion = 1;
|
||||||
|
classes = {
|
||||||
|
};
|
||||||
|
objectVersion = 48;
|
||||||
|
objects = {
|
||||||
|
|
||||||
|
/* Begin PBXBuildFile section */
|
||||||
|
7C0AB7AB202A744400BAED27 /* BinUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C0AB7AA202A744400BAED27 /* BinUtils.swift */; };
|
||||||
|
7C51654120139237004D1F4D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C51654020139237004D1F4D /* AppDelegate.swift */; };
|
||||||
|
7C51654320139237004D1F4D /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C51654220139237004D1F4D /* ViewController.swift */; };
|
||||||
|
7C51654620139237004D1F4D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7C51654420139237004D1F4D /* Main.storyboard */; };
|
||||||
|
7C51654820139237004D1F4D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7C51654720139237004D1F4D /* Assets.xcassets */; };
|
||||||
|
7C51654B20139237004D1F4D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7C51654920139237004D1F4D /* LaunchScreen.storyboard */; };
|
||||||
|
7C516553201526BA004D1F4D /* index.html in Resources */ = {isa = PBXBuildFile; fileRef = 7C516552201526BA004D1F4D /* index.html */; };
|
||||||
|
7C51655520153180004D1F4D /* main.js in Resources */ = {isa = PBXBuildFile; fileRef = 7C51655420153180004D1F4D /* main.js */; };
|
||||||
|
7C7DECC2203CBCC4000C1C51 /* roslib.js in Resources */ = {isa = PBXBuildFile; fileRef = 7C45DCE9203A75A2009C73F5 /* roslib.js */; };
|
||||||
|
7CA401E22033CE17009FAA3B /* main.css in Resources */ = {isa = PBXBuildFile; fileRef = 7CA401E12033CE17009FAA3B /* main.css */; };
|
||||||
|
7CA401E42033FA34009FAA3B /* telemetry.js in Resources */ = {isa = PBXBuildFile; fileRef = 7CA401E32033FA34009FAA3B /* telemetry.js */; };
|
||||||
|
7CA401E6203471D9009FAA3B /* clever.svg in Resources */ = {isa = PBXBuildFile; fileRef = 7CA401E5203471D8009FAA3B /* clever.svg */; };
|
||||||
|
C25141CAF1A7125F3CE29DDC /* Pods_cleverrc.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C38C04523251039FF13DDCD /* Pods_cleverrc.framework */; };
|
||||||
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
|
/* Begin PBXFileReference section */
|
||||||
|
5C38C04523251039FF13DDCD /* Pods_cleverrc.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_cleverrc.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
7C0AB7AA202A744400BAED27 /* BinUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BinUtils.swift; sourceTree = "<group>"; };
|
||||||
|
7C45DCE9203A75A2009C73F5 /* roslib.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = roslib.js; sourceTree = "<group>"; };
|
||||||
|
7C51653D20139237004D1F4D /* cleverrc.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = cleverrc.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
7C51654020139237004D1F4D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||||
|
7C51654220139237004D1F4D /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
|
||||||
|
7C51654520139237004D1F4D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||||
|
7C51654720139237004D1F4D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||||
|
7C51654A20139237004D1F4D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||||
|
7C51654C20139237004D1F4D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
|
7C516552201526BA004D1F4D /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index.html; sourceTree = "<group>"; };
|
||||||
|
7C51655420153180004D1F4D /* main.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = main.js; sourceTree = "<group>"; };
|
||||||
|
7CA401E12033CE17009FAA3B /* main.css */ = {isa = PBXFileReference; lastKnownFileType = text.css; path = main.css; sourceTree = "<group>"; };
|
||||||
|
7CA401E32033FA34009FAA3B /* telemetry.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = telemetry.js; sourceTree = "<group>"; };
|
||||||
|
7CA401E5203471D8009FAA3B /* clever.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = clever.svg; sourceTree = "<group>"; };
|
||||||
|
AAC9195BF3A9BF6942EF4D0B /* Pods-cleverrc.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-cleverrc.release.xcconfig"; path = "Pods/Target Support Files/Pods-cleverrc/Pods-cleverrc.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
CB200F4B933204EA97E0E2E4 /* Pods-cleverrc.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-cleverrc.debug.xcconfig"; path = "Pods/Target Support Files/Pods-cleverrc/Pods-cleverrc.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
7C51653A20139237004D1F4D /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
C25141CAF1A7125F3CE29DDC /* Pods_cleverrc.framework in Frameworks */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXGroup section */
|
||||||
|
4FA3968F2242239E15A656D2 /* Pods */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
CB200F4B933204EA97E0E2E4 /* Pods-cleverrc.debug.xcconfig */,
|
||||||
|
AAC9195BF3A9BF6942EF4D0B /* Pods-cleverrc.release.xcconfig */,
|
||||||
|
);
|
||||||
|
name = Pods;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
66C638F0021EBE07741B26F3 /* Frameworks */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
5C38C04523251039FF13DDCD /* Pods_cleverrc.framework */,
|
||||||
|
);
|
||||||
|
name = Frameworks;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
7C51653420139237004D1F4D = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
66C638F0021EBE07741B26F3 /* Frameworks */,
|
||||||
|
4FA3968F2242239E15A656D2 /* Pods */,
|
||||||
|
7C51653E20139237004D1F4D /* Products */,
|
||||||
|
7C51653F20139237004D1F4D /* cleverrc */,
|
||||||
|
);
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
7C51653E20139237004D1F4D /* Products */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
7C51653D20139237004D1F4D /* cleverrc.app */,
|
||||||
|
);
|
||||||
|
name = Products;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
7C51653F20139237004D1F4D /* cleverrc */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
7C45DCE9203A75A2009C73F5 /* roslib.js */,
|
||||||
|
7C51654020139237004D1F4D /* AppDelegate.swift */,
|
||||||
|
7C51654720139237004D1F4D /* Assets.xcassets */,
|
||||||
|
7C0AB7AA202A744400BAED27 /* BinUtils.swift */,
|
||||||
|
7C51654C20139237004D1F4D /* Info.plist */,
|
||||||
|
7C51654920139237004D1F4D /* LaunchScreen.storyboard */,
|
||||||
|
7C51654420139237004D1F4D /* Main.storyboard */,
|
||||||
|
7C51654220139237004D1F4D /* ViewController.swift */,
|
||||||
|
7CA401E5203471D8009FAA3B /* clever.svg */,
|
||||||
|
7C516552201526BA004D1F4D /* index.html */,
|
||||||
|
7CA401E12033CE17009FAA3B /* main.css */,
|
||||||
|
7C51655420153180004D1F4D /* main.js */,
|
||||||
|
7CA401E32033FA34009FAA3B /* telemetry.js */,
|
||||||
|
);
|
||||||
|
path = cleverrc;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
/* End PBXGroup section */
|
||||||
|
|
||||||
|
/* Begin PBXNativeTarget section */
|
||||||
|
7C51653C20139237004D1F4D /* cleverrc */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = 7C51654F20139237004D1F4D /* Build configuration list for PBXNativeTarget "cleverrc" */;
|
||||||
|
buildPhases = (
|
||||||
|
9F096121C4A02BCE9D4FD1B9 /* [CP] Check Pods Manifest.lock */,
|
||||||
|
7C51653920139237004D1F4D /* Sources */,
|
||||||
|
7C51653A20139237004D1F4D /* Frameworks */,
|
||||||
|
7C51653B20139237004D1F4D /* Resources */,
|
||||||
|
A37DBBAD5E44E632F8A8A204 /* [CP] Embed Pods Frameworks */,
|
||||||
|
9BAB41D26FC0095C7C86B9DE /* [CP] Copy Pods Resources */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
);
|
||||||
|
name = cleverrc;
|
||||||
|
productName = cleverrc;
|
||||||
|
productReference = 7C51653D20139237004D1F4D /* cleverrc.app */;
|
||||||
|
productType = "com.apple.product-type.application";
|
||||||
|
};
|
||||||
|
/* End PBXNativeTarget section */
|
||||||
|
|
||||||
|
/* Begin PBXProject section */
|
||||||
|
7C51653520139237004D1F4D /* Project object */ = {
|
||||||
|
isa = PBXProject;
|
||||||
|
attributes = {
|
||||||
|
LastSwiftUpdateCheck = 0920;
|
||||||
|
LastUpgradeCheck = 0930;
|
||||||
|
ORGANIZATIONNAME = "Copter Express";
|
||||||
|
TargetAttributes = {
|
||||||
|
7C51653C20139237004D1F4D = {
|
||||||
|
CreatedOnToolsVersion = 9.2;
|
||||||
|
ProvisioningStyle = Automatic;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
buildConfigurationList = 7C51653820139237004D1F4D /* Build configuration list for PBXProject "cleverrc" */;
|
||||||
|
compatibilityVersion = "Xcode 8.0";
|
||||||
|
developmentRegion = en;
|
||||||
|
hasScannedForEncodings = 0;
|
||||||
|
knownRegions = (
|
||||||
|
en,
|
||||||
|
Base,
|
||||||
|
);
|
||||||
|
mainGroup = 7C51653420139237004D1F4D;
|
||||||
|
productRefGroup = 7C51653E20139237004D1F4D /* Products */;
|
||||||
|
projectDirPath = "";
|
||||||
|
projectRoot = "";
|
||||||
|
targets = (
|
||||||
|
7C51653C20139237004D1F4D /* cleverrc */,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
/* End PBXProject section */
|
||||||
|
|
||||||
|
/* Begin PBXResourcesBuildPhase section */
|
||||||
|
7C51653B20139237004D1F4D /* Resources */ = {
|
||||||
|
isa = PBXResourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
7C51654B20139237004D1F4D /* LaunchScreen.storyboard in Resources */,
|
||||||
|
7CA401E6203471D9009FAA3B /* clever.svg in Resources */,
|
||||||
|
7CA401E42033FA34009FAA3B /* telemetry.js in Resources */,
|
||||||
|
7C7DECC2203CBCC4000C1C51 /* roslib.js in Resources */,
|
||||||
|
7C516553201526BA004D1F4D /* index.html in Resources */,
|
||||||
|
7C51654820139237004D1F4D /* Assets.xcassets in Resources */,
|
||||||
|
7CA401E22033CE17009FAA3B /* main.css in Resources */,
|
||||||
|
7C51654620139237004D1F4D /* Main.storyboard in Resources */,
|
||||||
|
7C51655520153180004D1F4D /* main.js in Resources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXShellScriptBuildPhase section */
|
||||||
|
9BAB41D26FC0095C7C86B9DE /* [CP] Copy Pods Resources */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
);
|
||||||
|
name = "[CP] Copy Pods Resources";
|
||||||
|
outputPaths = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-cleverrc/Pods-cleverrc-resources.sh\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
|
9F096121C4A02BCE9D4FD1B9 /* [CP] Check Pods Manifest.lock */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||||
|
"${PODS_ROOT}/Manifest.lock",
|
||||||
|
);
|
||||||
|
name = "[CP] Check Pods Manifest.lock";
|
||||||
|
outputPaths = (
|
||||||
|
"$(DERIVED_FILE_DIR)/Pods-cleverrc-checkManifestLockResult.txt",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
|
A37DBBAD5E44E632F8A8A204 /* [CP] Embed Pods Frameworks */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
"${SRCROOT}/Pods/Target Support Files/Pods-cleverrc/Pods-cleverrc-frameworks.sh",
|
||||||
|
"${BUILT_PRODUCTS_DIR}/SwiftSocket/SwiftSocket.framework",
|
||||||
|
);
|
||||||
|
name = "[CP] Embed Pods Frameworks";
|
||||||
|
outputPaths = (
|
||||||
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftSocket.framework",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-cleverrc/Pods-cleverrc-frameworks.sh\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
7C51653920139237004D1F4D /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
7C51654320139237004D1F4D /* ViewController.swift in Sources */,
|
||||||
|
7C51654120139237004D1F4D /* AppDelegate.swift in Sources */,
|
||||||
|
7C0AB7AB202A744400BAED27 /* BinUtils.swift in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXSourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXVariantGroup section */
|
||||||
|
7C51654420139237004D1F4D /* Main.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
7C51654520139237004D1F4D /* Base */,
|
||||||
|
);
|
||||||
|
name = Main.storyboard;
|
||||||
|
path = .;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
7C51654920139237004D1F4D /* LaunchScreen.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
7C51654A20139237004D1F4D /* Base */,
|
||||||
|
);
|
||||||
|
name = LaunchScreen.storyboard;
|
||||||
|
path = .;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
/* End PBXVariantGroup section */
|
||||||
|
|
||||||
|
/* Begin XCBuildConfiguration section */
|
||||||
|
7C51654D20139237004D1F4D /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||||
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||||
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_COMMA = YES;
|
||||||
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||||
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||||
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
|
COPY_PHASE_STRIP = NO;
|
||||||
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
ENABLE_TESTABILITY = YES;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
|
"DEBUG=1",
|
||||||
|
"$(inherited)",
|
||||||
|
);
|
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 11.2;
|
||||||
|
MTL_ENABLE_DEBUG_INFO = YES;
|
||||||
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
|
SDKROOT = iphoneos;
|
||||||
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||||
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
7C51654E20139237004D1F4D /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||||
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||||
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_COMMA = YES;
|
||||||
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||||
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||||
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
|
COPY_PHASE_STRIP = NO;
|
||||||
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 11.2;
|
||||||
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
|
SDKROOT = iphoneos;
|
||||||
|
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||||
|
VALIDATE_PRODUCT = YES;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
7C51655020139237004D1F4D /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = CB200F4B933204EA97E0E2E4 /* Pods-cleverrc.debug.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
DEVELOPMENT_TEAM = M8TDN3PAH2;
|
||||||
|
INFOPLIST_FILE = cleverrc/Info.plist;
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = coex.cleverrc;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SWIFT_VERSION = 4.0;
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
7C51655120139237004D1F4D /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = AAC9195BF3A9BF6942EF4D0B /* Pods-cleverrc.release.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
DEVELOPMENT_TEAM = M8TDN3PAH2;
|
||||||
|
INFOPLIST_FILE = cleverrc/Info.plist;
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = coex.cleverrc;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SWIFT_VERSION = 4.0;
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
|
/* Begin XCConfigurationList section */
|
||||||
|
7C51653820139237004D1F4D /* Build configuration list for PBXProject "cleverrc" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
7C51654D20139237004D1F4D /* Debug */,
|
||||||
|
7C51654E20139237004D1F4D /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
7C51654F20139237004D1F4D /* Build configuration list for PBXNativeTarget "cleverrc" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
7C51655020139237004D1F4D /* Debug */,
|
||||||
|
7C51655120139237004D1F4D /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
/* End XCConfigurationList section */
|
||||||
|
};
|
||||||
|
rootObject = 7C51653520139237004D1F4D /* Project object */;
|
||||||
|
}
|
||||||
7
apps/ios/cleverrc.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Workspace
|
||||||
|
version = "1.0">
|
||||||
|
<FileRef
|
||||||
|
location = "self:cleverrc.xcodeproj">
|
||||||
|
</FileRef>
|
||||||
|
</Workspace>
|
||||||
10
apps/ios/cleverrc.xcworkspace/contents.xcworkspacedata
generated
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Workspace
|
||||||
|
version = "1.0">
|
||||||
|
<FileRef
|
||||||
|
location = "group:cleverrc.xcodeproj">
|
||||||
|
</FileRef>
|
||||||
|
<FileRef
|
||||||
|
location = "group:Pods/Pods.xcodeproj">
|
||||||
|
</FileRef>
|
||||||
|
</Workspace>
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>IDEDidComputeMac32BitWarning</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
46
apps/ios/cleverrc/AppDelegate.swift
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
//
|
||||||
|
// AppDelegate.swift
|
||||||
|
// cleverrc
|
||||||
|
//
|
||||||
|
// Created by Oleg Kalachev on 20.01.2018.
|
||||||
|
// Copyright © 2018 Copter Express Technologies. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
@UIApplicationMain
|
||||||
|
class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||||
|
|
||||||
|
var window: UIWindow?
|
||||||
|
|
||||||
|
|
||||||
|
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
|
||||||
|
// Override point for customization after application launch.
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func applicationWillResignActive(_ application: UIApplication) {
|
||||||
|
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
|
||||||
|
// Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
|
||||||
|
}
|
||||||
|
|
||||||
|
func applicationDidEnterBackground(_ application: UIApplication) {
|
||||||
|
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
|
||||||
|
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
|
||||||
|
}
|
||||||
|
|
||||||
|
func applicationWillEnterForeground(_ application: UIApplication) {
|
||||||
|
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
|
||||||
|
}
|
||||||
|
|
||||||
|
func applicationDidBecomeActive(_ application: UIApplication) {
|
||||||
|
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
|
||||||
|
}
|
||||||
|
|
||||||
|
func applicationWillTerminate(_ application: UIApplication) {
|
||||||
|
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,178 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"size" : "20x20",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"filename" : "Icon-App-20x20@2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "20x20",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"filename" : "Icon-App-20x20@3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "29x29",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"filename" : "Icon-App-29x29@2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "29x29",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"filename" : "Icon-App-29x29@3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "40x40",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"filename" : "Icon-App-40x40@2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "40x40",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"filename" : "Icon-App-40x40@3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "60x60",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"filename" : "Icon-App-60x60@2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "60x60",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"filename" : "Icon-App-60x60@3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "20x20",
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"filename" : "Icon-App-20x20@1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "20x20",
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"filename" : "Icon-App-20x20@2x-1.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "29x29",
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"filename" : "Icon-App-29x29@1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "29x29",
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"filename" : "Icon-App-29x29@2x-1.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "40x40",
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"filename" : "Icon-App-40x40@1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "40x40",
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"filename" : "Icon-App-40x40@2x-1.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "76x76",
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"filename" : "Icon-App-76x76@1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "76x76",
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"filename" : "Icon-App-76x76@2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "83.5x83.5",
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"filename" : "Icon-App-83.5x83.5@2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "1024x1024",
|
||||||
|
"idiom" : "ios-marketing",
|
||||||
|
"filename" : "ItunesArtwork@2x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "24x24",
|
||||||
|
"idiom" : "watch",
|
||||||
|
"scale" : "2x",
|
||||||
|
"role" : "notificationCenter",
|
||||||
|
"subtype" : "38mm"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "27.5x27.5",
|
||||||
|
"idiom" : "watch",
|
||||||
|
"scale" : "2x",
|
||||||
|
"role" : "notificationCenter",
|
||||||
|
"subtype" : "42mm"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "29x29",
|
||||||
|
"idiom" : "watch",
|
||||||
|
"role" : "companionSettings",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "29x29",
|
||||||
|
"idiom" : "watch",
|
||||||
|
"role" : "companionSettings",
|
||||||
|
"scale" : "3x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "40x40",
|
||||||
|
"idiom" : "watch",
|
||||||
|
"scale" : "2x",
|
||||||
|
"role" : "appLauncher",
|
||||||
|
"subtype" : "38mm"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "44x44",
|
||||||
|
"idiom" : "watch",
|
||||||
|
"scale" : "2x",
|
||||||
|
"role" : "longLook",
|
||||||
|
"subtype" : "42mm"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "86x86",
|
||||||
|
"idiom" : "watch",
|
||||||
|
"scale" : "2x",
|
||||||
|
"role" : "quickLook",
|
||||||
|
"subtype" : "38mm"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "98x98",
|
||||||
|
"idiom" : "watch",
|
||||||
|
"scale" : "2x",
|
||||||
|
"role" : "quickLook",
|
||||||
|
"subtype" : "42mm"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "watch-marketing",
|
||||||
|
"size" : "1024x1024",
|
||||||
|
"scale" : "1x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
},
|
||||||
|
"properties" : {
|
||||||
|
"pre-rendered" : true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 638 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 4.5 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 9.6 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 26 KiB |
6
apps/ios/cleverrc/Assets.xcassets/Contents.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
29
apps/ios/cleverrc/Base.lproj/LaunchScreen.storyboard
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||||
|
<device id="retina4_7" orientation="portrait">
|
||||||
|
<adaptation id="fullscreen"/>
|
||||||
|
</device>
|
||||||
|
<dependencies>
|
||||||
|
<deployment identifier="iOS"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
|
||||||
|
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
|
</dependencies>
|
||||||
|
<scenes>
|
||||||
|
<!--View Controller-->
|
||||||
|
<scene sceneID="EHf-IW-A2E">
|
||||||
|
<objects>
|
||||||
|
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
||||||
|
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<color key="backgroundColor" red="0.10586584359407425" green="0.10589186102151871" blue="0.10586420446634293" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
|
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
|
||||||
|
</view>
|
||||||
|
</viewController>
|
||||||
|
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
|
</objects>
|
||||||
|
<point key="canvasLocation" x="53" y="375"/>
|
||||||
|
</scene>
|
||||||
|
</scenes>
|
||||||
|
</document>
|
||||||
46
apps/ios/cleverrc/Base.lproj/Main.storyboard
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
|
||||||
|
<device id="retina4_7" orientation="landscape">
|
||||||
|
<adaptation id="fullscreen"/>
|
||||||
|
</device>
|
||||||
|
<dependencies>
|
||||||
|
<deployment identifier="iOS"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
|
||||||
|
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
|
</dependencies>
|
||||||
|
<scenes>
|
||||||
|
<!--View Controller-->
|
||||||
|
<scene sceneID="tne-QT-ifu">
|
||||||
|
<objects>
|
||||||
|
<viewController id="BYZ-38-t0r" customClass="ViewController" customModule="cleverrc" customModuleProvider="target" sceneMemberID="viewController">
|
||||||
|
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="667" height="375"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<wkWebView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="dtJ-LN-BYT">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="667" height="375"/>
|
||||||
|
<color key="backgroundColor" red="0.12939286231994629" green="0.12942266464233398" blue="0.12939092516899109" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
|
<wkWebViewConfiguration key="configuration">
|
||||||
|
<audiovisualMediaTypes key="mediaTypesRequiringUserActionForPlayback" none="YES"/>
|
||||||
|
<wkPreferences key="preferences"/>
|
||||||
|
</wkWebViewConfiguration>
|
||||||
|
</wkWebView>
|
||||||
|
</subviews>
|
||||||
|
<color key="backgroundColor" red="0.1097869947552681" green="0.10981365293264389" blue="0.10978532582521439" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="dtJ-LN-BYT" firstAttribute="height" secondItem="8bC-Xf-vdC" secondAttribute="height" id="KRn-ag-67x"/>
|
||||||
|
<constraint firstItem="dtJ-LN-BYT" firstAttribute="width" secondItem="8bC-Xf-vdC" secondAttribute="width" id="qOr-gg-e4M"/>
|
||||||
|
</constraints>
|
||||||
|
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
|
||||||
|
</view>
|
||||||
|
<connections>
|
||||||
|
<outlet property="webView" destination="dtJ-LN-BYT" id="bQ3-jy-o6E"/>
|
||||||
|
</connections>
|
||||||
|
</viewController>
|
||||||
|
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
|
||||||
|
</objects>
|
||||||
|
<point key="canvasLocation" x="138.0809595202399" y="124"/>
|
||||||
|
</scene>
|
||||||
|
</scenes>
|
||||||
|
</document>
|
||||||
453
apps/ios/cleverrc/BinUtils.swift
vendored
Normal file
@@ -0,0 +1,453 @@
|
|||||||
|
//
|
||||||
|
// BinUtils.swift
|
||||||
|
// BinUtils
|
||||||
|
//
|
||||||
|
// Created by Nicolas Seriot on 12/03/16.
|
||||||
|
// Copyright © 2016 Nicolas Seriot. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import CoreFoundation
|
||||||
|
|
||||||
|
// MARK: protocol UnpackedType
|
||||||
|
|
||||||
|
public protocol Unpackable {}
|
||||||
|
|
||||||
|
extension NSString: Unpackable {}
|
||||||
|
extension Bool: Unpackable {}
|
||||||
|
extension Int: Unpackable {}
|
||||||
|
extension Double: Unpackable {}
|
||||||
|
|
||||||
|
// MARK: protocol DataConvertible
|
||||||
|
|
||||||
|
protocol DataConvertible {}
|
||||||
|
|
||||||
|
extension DataConvertible {
|
||||||
|
|
||||||
|
init?(data: Data) {
|
||||||
|
guard data.count == MemoryLayout<Self>.size else { return nil }
|
||||||
|
self = data.withUnsafeBytes { $0.pointee }
|
||||||
|
}
|
||||||
|
|
||||||
|
init?(bytes: [UInt8]) {
|
||||||
|
let data = Data(bytes:bytes)
|
||||||
|
self.init(data:data)
|
||||||
|
}
|
||||||
|
|
||||||
|
var data: Data {
|
||||||
|
var value = self
|
||||||
|
return Data(buffer: UnsafeBufferPointer(start: &value, count: 1))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension Bool : DataConvertible { }
|
||||||
|
|
||||||
|
extension Int8 : DataConvertible { }
|
||||||
|
extension Int16 : DataConvertible { }
|
||||||
|
extension Int32 : DataConvertible { }
|
||||||
|
extension Int64 : DataConvertible { }
|
||||||
|
|
||||||
|
extension UInt8 : DataConvertible { }
|
||||||
|
extension UInt16 : DataConvertible { }
|
||||||
|
extension UInt32 : DataConvertible { }
|
||||||
|
extension UInt64 : DataConvertible { }
|
||||||
|
|
||||||
|
extension Float32 : DataConvertible { }
|
||||||
|
extension Float64 : DataConvertible { }
|
||||||
|
|
||||||
|
// MARK: String extension
|
||||||
|
|
||||||
|
extension String {
|
||||||
|
subscript (from:Int, to:Int) -> String {
|
||||||
|
return NSString(string: self).substring(with: NSMakeRange(from, to-from))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: Data extension
|
||||||
|
|
||||||
|
extension Data {
|
||||||
|
var bytes : [UInt8] {
|
||||||
|
return self.withUnsafeBytes {
|
||||||
|
[UInt8](UnsafeBufferPointer(start: $0, count: self.count))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: functions
|
||||||
|
|
||||||
|
public func hexlify(_ data:Data) -> String {
|
||||||
|
|
||||||
|
// similar to hexlify() in Python's binascii module
|
||||||
|
// https://docs.python.org/2/library/binascii.html
|
||||||
|
|
||||||
|
var s = String()
|
||||||
|
var byte: UInt8 = 0
|
||||||
|
|
||||||
|
for i in 0 ..< data.count {
|
||||||
|
NSData(data: data).getBytes(&byte, range: NSMakeRange(i, 1))
|
||||||
|
s = s.appendingFormat("%02x", byte)
|
||||||
|
}
|
||||||
|
|
||||||
|
return s as String
|
||||||
|
}
|
||||||
|
|
||||||
|
public func unhexlify(_ string:String) -> Data? {
|
||||||
|
|
||||||
|
// similar to unhexlify() in Python's binascii module
|
||||||
|
// https://docs.python.org/2/library/binascii.html
|
||||||
|
|
||||||
|
let s = string.uppercased().replacingOccurrences(of: " ", with: "")
|
||||||
|
|
||||||
|
let nonHexCharacterSet = CharacterSet(charactersIn: "0123456789ABCDEF").inverted
|
||||||
|
if let range = s.rangeOfCharacter(from: nonHexCharacterSet) {
|
||||||
|
print("-- found non hex character at range \(range)")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var data = Data(capacity: s.count / 2)
|
||||||
|
|
||||||
|
for i in stride(from: 0, to:s.count, by:2) {
|
||||||
|
let byteString = s[i, i+2]
|
||||||
|
let byte = UInt8(byteString.withCString { strtoul($0, nil, 16) })
|
||||||
|
data.append([byte] as [UInt8], count: 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
|
||||||
|
func readIntegerType<T:DataConvertible>(_ type:T.Type, bytes:[UInt8], loc:inout Int) -> T {
|
||||||
|
let size = MemoryLayout<T>.size
|
||||||
|
let sub = Array(bytes[loc..<(loc+size)])
|
||||||
|
loc += size
|
||||||
|
return T(bytes: sub)!
|
||||||
|
}
|
||||||
|
|
||||||
|
func readFloatingPointType<T:DataConvertible>(_ type:T.Type, bytes:[UInt8], loc:inout Int, isBigEndian:Bool) -> T {
|
||||||
|
let size = MemoryLayout<T>.size
|
||||||
|
let sub = Array(bytes[loc..<(loc+size)])
|
||||||
|
loc += size
|
||||||
|
let sub_ = isBigEndian ? sub.reversed() : sub
|
||||||
|
return T(bytes: sub_)!
|
||||||
|
}
|
||||||
|
|
||||||
|
func isBigEndianFromMandatoryByteOrderFirstCharacter(_ format:String) -> Bool {
|
||||||
|
|
||||||
|
guard let firstChar = format.first else { assertionFailure("empty format"); return false }
|
||||||
|
|
||||||
|
let s = NSString(string: String(firstChar))
|
||||||
|
let c = s.substring(to: 1)
|
||||||
|
|
||||||
|
if c == "@" { assertionFailure("native size and alignment is unsupported") }
|
||||||
|
|
||||||
|
if c == "=" || c == "<" { return false }
|
||||||
|
if c == ">" || c == "!" { return true }
|
||||||
|
|
||||||
|
assertionFailure("format '\(format)' first character must be among '=<>!'")
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// akin to struct.calcsize(fmt)
|
||||||
|
func numberOfBytesInFormat(_ format:String) -> Int {
|
||||||
|
|
||||||
|
var numberOfBytes = 0
|
||||||
|
|
||||||
|
var n = 0 // repeat counter
|
||||||
|
|
||||||
|
var mutableFormat = format
|
||||||
|
|
||||||
|
while !mutableFormat.isEmpty {
|
||||||
|
|
||||||
|
let c = mutableFormat.remove(at: mutableFormat.startIndex)
|
||||||
|
|
||||||
|
if let i = Int(String(c)) , 0...9 ~= i {
|
||||||
|
if n > 0 { n *= 10 }
|
||||||
|
n += i
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if c == "s" {
|
||||||
|
numberOfBytes += max(n,1)
|
||||||
|
n = 0
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
for _ in 0..<max(n,1) {
|
||||||
|
|
||||||
|
switch(c) {
|
||||||
|
|
||||||
|
case "@", "<", "=", ">", "!", " ":
|
||||||
|
()
|
||||||
|
case "c", "b", "B", "x", "?":
|
||||||
|
numberOfBytes += 1
|
||||||
|
case "h", "H":
|
||||||
|
numberOfBytes += 2
|
||||||
|
case "i", "l", "I", "L", "f":
|
||||||
|
numberOfBytes += 4
|
||||||
|
case "q", "Q", "d":
|
||||||
|
numberOfBytes += 8
|
||||||
|
case "P":
|
||||||
|
numberOfBytes += MemoryLayout<Int>.size
|
||||||
|
default:
|
||||||
|
assertionFailure("-- unsupported format \(c)")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
n = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
return numberOfBytes
|
||||||
|
}
|
||||||
|
|
||||||
|
func formatDoesMatchDataLength(_ format:String, data:Data) -> Bool {
|
||||||
|
let sizeAccordingToFormat = numberOfBytesInFormat(format)
|
||||||
|
let dataLength = data.count
|
||||||
|
if sizeAccordingToFormat != dataLength {
|
||||||
|
print("format \"\(format)\" expects \(sizeAccordingToFormat) bytes but data is \(dataLength) bytes")
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
pack() and unpack() should behave as Python's struct module https://docs.python.org/2/library/struct.html BUT:
|
||||||
|
- native size and alignment '@' is not supported
|
||||||
|
- as a consequence, the byte order specifier character is mandatory and must be among "=<>!"
|
||||||
|
- native byte order '=' assumes a little-endian system (eg. Intel x86)
|
||||||
|
- Pascal strings 'p' and native pointers 'P' are not supported
|
||||||
|
*/
|
||||||
|
|
||||||
|
public enum BinUtilsError: Error {
|
||||||
|
case formatDoesMatchDataLength(format:String, dataSize:Int)
|
||||||
|
case unsupportedFormat(character:Character)
|
||||||
|
}
|
||||||
|
|
||||||
|
public func pack(_ format:String, _ objects:[Any], _ stringEncoding:String.Encoding=String.Encoding.windowsCP1252) -> Data {
|
||||||
|
|
||||||
|
var objectsQueue = objects
|
||||||
|
|
||||||
|
var mutableFormat = format
|
||||||
|
|
||||||
|
var mutableData = Data()
|
||||||
|
|
||||||
|
var isBigEndian = false
|
||||||
|
|
||||||
|
let firstCharacter = mutableFormat.remove(at: mutableFormat.startIndex)
|
||||||
|
|
||||||
|
switch(firstCharacter) {
|
||||||
|
case "<", "=":
|
||||||
|
isBigEndian = false
|
||||||
|
case ">", "!":
|
||||||
|
isBigEndian = true
|
||||||
|
case "@":
|
||||||
|
assertionFailure("native size and alignment '@' is unsupported'")
|
||||||
|
default:
|
||||||
|
assertionFailure("unsupported format chacracter'")
|
||||||
|
}
|
||||||
|
|
||||||
|
var n = 0 // repeat counter
|
||||||
|
|
||||||
|
while !mutableFormat.isEmpty {
|
||||||
|
|
||||||
|
let c = mutableFormat.remove(at: mutableFormat.startIndex)
|
||||||
|
|
||||||
|
if let i = Int(String(c)) , 0...9 ~= i {
|
||||||
|
if n > 0 { n *= 10 }
|
||||||
|
n += i
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
var o : Any = 0
|
||||||
|
|
||||||
|
if c == "s" {
|
||||||
|
o = objectsQueue.remove(at: 0)
|
||||||
|
|
||||||
|
guard let stringData = (o as! String).data(using: .utf8) else { assertionFailure(); return Data() }
|
||||||
|
var bytes = stringData.bytes
|
||||||
|
|
||||||
|
let expectedSize = max(1, n)
|
||||||
|
|
||||||
|
// pad ...
|
||||||
|
while bytes.count < expectedSize { bytes.append(0x00) }
|
||||||
|
|
||||||
|
// ... or trunk
|
||||||
|
if bytes.count > expectedSize { bytes = Array(bytes[0..<expectedSize]) }
|
||||||
|
|
||||||
|
assert(bytes.count == expectedSize)
|
||||||
|
|
||||||
|
if isBigEndian { bytes = bytes.reversed() }
|
||||||
|
|
||||||
|
mutableData.append(bytes, count: bytes.count)
|
||||||
|
|
||||||
|
n = 0
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
for _ in 0..<max(n,1) {
|
||||||
|
|
||||||
|
var bytes : [UInt8] = []
|
||||||
|
|
||||||
|
if c != "x" {
|
||||||
|
o = objectsQueue.removeFirst()
|
||||||
|
}
|
||||||
|
|
||||||
|
switch(c) {
|
||||||
|
case "?":
|
||||||
|
bytes = (o as! Bool) ? [0x01] : [0x00]
|
||||||
|
case "c":
|
||||||
|
let charAsString = (o as! NSString).substring(to: 1)
|
||||||
|
guard let data = charAsString.data(using: stringEncoding) else {
|
||||||
|
assertionFailure("cannot decode character \(charAsString) using encoding \(stringEncoding)")
|
||||||
|
return Data()
|
||||||
|
}
|
||||||
|
bytes = data.bytes
|
||||||
|
case "b":
|
||||||
|
bytes = Int8(truncatingIfNeeded:o as! Int).data.bytes
|
||||||
|
case "h":
|
||||||
|
bytes = Int16(truncatingIfNeeded:o as! Int).data.bytes
|
||||||
|
case "i", "l":
|
||||||
|
bytes = Int32(truncatingIfNeeded:o as! Int).data.bytes
|
||||||
|
case "q", "Q":
|
||||||
|
bytes = Int64(o as! Int).data.bytes
|
||||||
|
case "B":
|
||||||
|
bytes = UInt8(truncatingIfNeeded:o as! Int).data.bytes
|
||||||
|
case "H":
|
||||||
|
bytes = UInt16(truncatingIfNeeded:o as! Int).data.bytes
|
||||||
|
case "I", "L":
|
||||||
|
bytes = UInt32(truncatingIfNeeded:o as! Int).data.bytes
|
||||||
|
case "f":
|
||||||
|
bytes = Float32(o as! Double).data.bytes
|
||||||
|
case "d":
|
||||||
|
bytes = Float64(o as! Double).data.bytes
|
||||||
|
case "x":
|
||||||
|
bytes = [0x00]
|
||||||
|
default:
|
||||||
|
assertionFailure("Unsupported packing format: \(c)")
|
||||||
|
}
|
||||||
|
|
||||||
|
if isBigEndian { bytes = bytes.reversed() }
|
||||||
|
let data = Data(bytes)
|
||||||
|
mutableData.append(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
n = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
return mutableData
|
||||||
|
}
|
||||||
|
|
||||||
|
public func unpack(_ format:String, _ data:Data, _ stringEncoding:String.Encoding=String.Encoding.windowsCP1252) throws -> [Unpackable] {
|
||||||
|
|
||||||
|
assert(CFByteOrderGetCurrent() == 1 /* CFByteOrderLittleEndian */, "\(#file) assumes little endian, but host is big endian")
|
||||||
|
|
||||||
|
let isBigEndian = isBigEndianFromMandatoryByteOrderFirstCharacter(format)
|
||||||
|
|
||||||
|
if formatDoesMatchDataLength(format, data: data) == false {
|
||||||
|
throw BinUtilsError.formatDoesMatchDataLength(format:format, dataSize:data.count)
|
||||||
|
}
|
||||||
|
|
||||||
|
var a : [Unpackable] = []
|
||||||
|
|
||||||
|
var loc = 0
|
||||||
|
|
||||||
|
let bytes = data.bytes
|
||||||
|
|
||||||
|
var n = 0 // repeat counter
|
||||||
|
|
||||||
|
var mutableFormat = format
|
||||||
|
|
||||||
|
mutableFormat.remove(at: mutableFormat.startIndex) // consume byte-order specifier
|
||||||
|
|
||||||
|
while !mutableFormat.isEmpty {
|
||||||
|
|
||||||
|
let c = mutableFormat.remove(at: mutableFormat.startIndex)
|
||||||
|
|
||||||
|
if let i = Int(String(c)) , 0...9 ~= i {
|
||||||
|
if n > 0 { n *= 10 }
|
||||||
|
n += i
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if c == "s" {
|
||||||
|
let length = max(n,1)
|
||||||
|
let sub = Array(bytes[loc..<loc+length])
|
||||||
|
|
||||||
|
guard let s = NSString(bytes: sub, length: length, encoding: stringEncoding.rawValue) else {
|
||||||
|
assertionFailure("-- not a string: \(sub)")
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
|
||||||
|
a.append(s)
|
||||||
|
|
||||||
|
loc += length
|
||||||
|
|
||||||
|
n = 0
|
||||||
|
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
for _ in 0..<max(n,1) {
|
||||||
|
|
||||||
|
var o : Unpackable?
|
||||||
|
|
||||||
|
switch(c) {
|
||||||
|
|
||||||
|
case "c":
|
||||||
|
let optionalString = NSString(bytes: [bytes[loc]], length: 1, encoding: String.Encoding.utf8.rawValue)
|
||||||
|
loc += 1
|
||||||
|
guard let s = optionalString else { assertionFailure(); return [] }
|
||||||
|
o = s
|
||||||
|
case "b":
|
||||||
|
let r = readIntegerType(Int8.self, bytes:bytes, loc:&loc)
|
||||||
|
o = Int(r)
|
||||||
|
case "B":
|
||||||
|
let r = readIntegerType(UInt8.self, bytes:bytes, loc:&loc)
|
||||||
|
o = Int(r)
|
||||||
|
case "?":
|
||||||
|
let r = readIntegerType(Bool.self, bytes:bytes, loc:&loc)
|
||||||
|
o = r ? true : false
|
||||||
|
case "h":
|
||||||
|
let r = readIntegerType(Int16.self, bytes:bytes, loc:&loc)
|
||||||
|
o = Int(isBigEndian ? Int16(bigEndian: r) : r)
|
||||||
|
case "H":
|
||||||
|
let r = readIntegerType(UInt16.self, bytes:bytes, loc:&loc)
|
||||||
|
o = Int(isBigEndian ? UInt16(bigEndian: r) : r)
|
||||||
|
case "i":
|
||||||
|
fallthrough
|
||||||
|
case "l":
|
||||||
|
let r = readIntegerType(Int32.self, bytes:bytes, loc:&loc)
|
||||||
|
o = Int(isBigEndian ? Int32(bigEndian: r) : r)
|
||||||
|
case "I":
|
||||||
|
fallthrough
|
||||||
|
case "L":
|
||||||
|
let r = readIntegerType(UInt32.self, bytes:bytes, loc:&loc)
|
||||||
|
o = Int(isBigEndian ? UInt32(bigEndian: r) : r)
|
||||||
|
case "q":
|
||||||
|
let r = readIntegerType(Int64.self, bytes:bytes, loc:&loc)
|
||||||
|
o = Int(isBigEndian ? Int64(bigEndian: r) : r)
|
||||||
|
case "Q":
|
||||||
|
let r = readIntegerType(UInt64.self, bytes:bytes, loc:&loc)
|
||||||
|
o = Int(isBigEndian ? UInt64(bigEndian: r) : r)
|
||||||
|
case "f":
|
||||||
|
let r = readFloatingPointType(Float32.self, bytes:bytes, loc:&loc, isBigEndian:isBigEndian)
|
||||||
|
o = Double(r)
|
||||||
|
case "d":
|
||||||
|
let r = readFloatingPointType(Float64.self, bytes:bytes, loc:&loc, isBigEndian:isBigEndian)
|
||||||
|
o = Double(r)
|
||||||
|
case "x":
|
||||||
|
loc += 1
|
||||||
|
case " ":
|
||||||
|
()
|
||||||
|
default:
|
||||||
|
throw BinUtilsError.unsupportedFormat(character:c)
|
||||||
|
}
|
||||||
|
|
||||||
|
if let o = o { a.append(o) }
|
||||||
|
}
|
||||||
|
|
||||||
|
n = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
return a
|
||||||
|
}
|
||||||
46
apps/ios/cleverrc/Info.plist
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||||
|
<key>CFBundleDisplayName</key>
|
||||||
|
<string>CLEVER RC</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>$(EXECUTABLE_NAME)</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>$(PRODUCT_NAME)</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>1.1</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>6</string>
|
||||||
|
<key>LSRequiresIPhoneOS</key>
|
||||||
|
<true/>
|
||||||
|
<key>UILaunchStoryboardName</key>
|
||||||
|
<string>LaunchScreen</string>
|
||||||
|
<key>UIMainStoryboardFile</key>
|
||||||
|
<string>Main</string>
|
||||||
|
<key>UIRequiredDeviceCapabilities</key>
|
||||||
|
<array>
|
||||||
|
<string>armv7</string>
|
||||||
|
</array>
|
||||||
|
<key>UISupportedInterfaceOrientations</key>
|
||||||
|
<array>
|
||||||
|
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||||
|
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||||
|
</array>
|
||||||
|
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||||
|
<array>
|
||||||
|
<string>UIInterfaceOrientationPortrait</string>
|
||||||
|
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||||
|
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||||
|
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
10
apps/ios/cleverrc/README.md
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
iOS-приложение для управления Клевером
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
Для установки зависимостей необходим [CocoaPods](https://cocoapods.org):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pod install
|
||||||
|
```
|
||||||
|
|
||||||
|
Для разработки и сборки откройте в XCode файл `cleverrc.xcworkspace`.
|
||||||
85
apps/ios/cleverrc/ViewController.swift
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
//
|
||||||
|
// ViewController.swift
|
||||||
|
// cleverrc
|
||||||
|
//
|
||||||
|
// Created by Oleg Kalachev on 20.01.2018.
|
||||||
|
// Copyright © 2018 Copter Express Technologies. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
import WebKit
|
||||||
|
import SwiftSocket
|
||||||
|
import AudioToolbox.AudioServices
|
||||||
|
|
||||||
|
class ViewController: UIViewController, WKScriptMessageHandler {
|
||||||
|
@IBOutlet weak var webView: WKWebView!
|
||||||
|
let impactGenerator = UIImpactFeedbackGenerator(style: .medium)
|
||||||
|
let notificationGenerator = UINotificationFeedbackGenerator()
|
||||||
|
let udpSocket = UDPClient(address: "255.255.255.255", port: 35602)
|
||||||
|
|
||||||
|
override func viewDidLoad() {
|
||||||
|
super.viewDidLoad()
|
||||||
|
|
||||||
|
// Don't lock screen
|
||||||
|
UIApplication.shared.isIdleTimerDisabled = true
|
||||||
|
|
||||||
|
// Setup webview event handlers
|
||||||
|
webView.scrollView.bounces = false;
|
||||||
|
webView.configuration.userContentController.add(self, name: "control")
|
||||||
|
webView.configuration.userContentController.add(self, name: "controlStart")
|
||||||
|
webView.configuration.userContentController.add(self, name: "lowBattery")
|
||||||
|
webView.configuration.userContentController.add(self, name: "notification")
|
||||||
|
|
||||||
|
// Load the main page
|
||||||
|
let url = Bundle.main.url(forResource: "index", withExtension: "html")
|
||||||
|
let requestObj = URLRequest(url: url!)
|
||||||
|
webView.load(requestObj)
|
||||||
|
|
||||||
|
// Setup UDP broadcasting
|
||||||
|
udpSocket.enableBroadcast()
|
||||||
|
|
||||||
|
// Set UDP broadcasting interface
|
||||||
|
var wifiInterface = if_nametoindex("en0");
|
||||||
|
setsockopt(udpSocket.fd!, IPPROTO_IP, IP_BOUND_IF, &wifiInterface, socklen_t(MemoryLayout<UInt32>.size));
|
||||||
|
}
|
||||||
|
|
||||||
|
override func didReceiveMemoryWarning() {
|
||||||
|
super.didReceiveMemoryWarning()
|
||||||
|
// Dispose of any resources that can be recreated.
|
||||||
|
}
|
||||||
|
|
||||||
|
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
|
||||||
|
if (message.name == "control") {
|
||||||
|
// Send UDP control message
|
||||||
|
let m = message.body as! NSDictionary;
|
||||||
|
let d = pack("<hhhh", [m["x"]!, m["y"]!, m["z"]!, m["r"]!])
|
||||||
|
_ = udpSocket.send(data: d)
|
||||||
|
} else if (message.name == "lowBattery") {
|
||||||
|
// Got low battery notification
|
||||||
|
print("Low battery notification")
|
||||||
|
tapticNotify()
|
||||||
|
} else if (message.name == "notification") {
|
||||||
|
// Got notification message
|
||||||
|
print(message)
|
||||||
|
tapticNotify()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func tapticNotify() {
|
||||||
|
if let feedbackSupportLevel = UIDevice.current.value(forKey: "_feedbackSupportLevel") as? Int {
|
||||||
|
switch feedbackSupportLevel {
|
||||||
|
case 2:
|
||||||
|
// 2nd Generation Taptic Engine w/ Haptic Feedback (iPhone 7/7+)
|
||||||
|
notificationGenerator.notificationOccurred(.warning)
|
||||||
|
case 1:
|
||||||
|
// 1st Generation Taptic Engine (iPhone 6S/6S+)
|
||||||
|
let peek = SystemSoundID(1519)
|
||||||
|
AudioServicesPlaySystemSound(peek)
|
||||||
|
case 0:
|
||||||
|
// No Taptic Engine
|
||||||
|
break
|
||||||
|
default: break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
57
apps/ios/cleverrc/clever.svg
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 69.988266 69.987198"
|
||||||
|
height="69.987198"
|
||||||
|
width="69.988266"
|
||||||
|
xml:space="preserve"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1"><metadata
|
||||||
|
id="metadata8"><rdf:RDF><cc:Work
|
||||||
|
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
|
||||||
|
id="defs6"><clipPath
|
||||||
|
id="clipPath18"
|
||||||
|
clipPathUnits="userSpaceOnUse"><path
|
||||||
|
id="path16"
|
||||||
|
d="M 0,52.49 H 52.491 V 0 H 0 Z" /></clipPath></defs><g
|
||||||
|
transform="matrix(1.3333333,0,0,-1.3333333,0,69.9872)"
|
||||||
|
id="g10"><g
|
||||||
|
id="g12"><g
|
||||||
|
clip-path="url(#clipPath18)"
|
||||||
|
id="g14"><g
|
||||||
|
transform="translate(35.6531,35.3361)"
|
||||||
|
id="g20"><path
|
||||||
|
id="path22"
|
||||||
|
style="fill:white;fill-opacity:0.5;fill-rule:nonzero;stroke:none"
|
||||||
|
d="M 0,0 C 0.279,0.322 0.5,0.686 0.657,1.081 0.827,1.513 0.914,1.968 0.917,2.434 0.92,2.924 0.829,3.403 0.647,3.857 0.458,4.329 0.165,4.77 -0.2,5.13 -0.587,5.512 -1.061,5.812 -1.571,5.995 -2.138,6.198 -2.756,6.262 -3.358,6.18 -3.821,6.115 -4.263,5.967 -4.671,5.739 -4.886,5.618 -5.094,5.472 -5.291,5.305 L -5.467,5.151 C -5.527,5.099 -5.587,5.049 -5.649,5.003 -5.775,4.909 -5.906,4.827 -6.04,4.759 -6.173,4.691 -6.314,4.633 -6.458,4.586 -6.575,4.549 -6.696,4.519 -6.819,4.496 -6.917,4.478 -7.017,4.465 -7.115,4.457 c -0.623,-0.052 -1.281,0.082 -1.9,0.385 -0.224,0.111 -0.439,0.241 -0.64,0.387 -0.042,0.03 -0.084,0.063 -0.127,0.095 -0.039,0.031 -0.069,0.054 -0.102,0.09 -0.023,0.025 -0.043,0.05 -0.061,0.077 -0.056,0.082 -0.093,0.176 -0.107,0.271 -0.004,0.022 -0.005,0.044 -0.006,0.066 l -0.002,6.486 c -0.534,0.589 -1.115,1.136 -1.728,1.626 -0.913,0.73 -1.913,1.352 -2.971,1.845 -0.867,0.405 -1.779,0.725 -2.711,0.952 -0.851,0.208 -1.731,0.34 -2.617,0.391 -0.912,0.053 -1.834,0.023 -2.741,-0.092 -0.741,-0.094 -1.479,-0.246 -2.194,-0.453 -1.274,-0.365 -2.494,-0.905 -3.628,-1.604 -0.824,-0.507 -1.603,-1.101 -2.316,-1.764 -0.687,-0.64 -1.317,-1.35 -1.871,-2.109 -0.505,-0.692 -0.951,-1.432 -1.327,-2.2 -0.375,-0.764 -0.684,-1.566 -0.919,-2.383 -0.201,-0.7 -0.351,-1.423 -0.446,-2.147 -0.12,-0.919 -0.153,-1.858 -0.099,-2.79 0.05,-0.838 0.171,-1.673 0.359,-2.482 0.201,-0.856 0.481,-1.7 0.833,-2.507 0.546,-1.253 1.265,-2.423 2.136,-3.479 0.317,-0.384 0.654,-0.753 1.002,-1.098 0.158,-0.157 0.32,-0.31 0.485,-0.459 h 6.121 c 0.051,0.08 0.099,0.161 0.143,0.245 0.037,0.071 0.072,0.144 0.104,0.218 0.026,0.062 0.05,0.128 0.073,0.193 0.132,0.394 0.159,0.784 0.077,1.127 -0.013,0.052 -0.028,0.105 -0.046,0.157 -0.024,0.068 -0.053,0.136 -0.087,0.201 -0.048,0.09 -0.105,0.174 -0.169,0.249 -0.035,0.041 -0.07,0.079 -0.107,0.116 l -0.024,0.026 c -0.025,0.029 -0.046,0.053 -0.066,0.079 -0.014,0.02 -0.02,0.029 -0.027,0.038 l -0.079,0.096 c -0.109,0.134 -0.212,0.277 -0.304,0.42 -0.207,0.318 -0.378,0.659 -0.506,1.013 -0.118,0.32 -0.202,0.651 -0.252,0.985 -0.085,0.571 -0.073,1.146 0.035,1.71 0.098,0.509 0.273,0.999 0.521,1.454 0.258,0.475 0.588,0.903 0.98,1.272 0.419,0.394 0.895,0.711 1.415,0.942 0.557,0.249 1.15,0.393 1.762,0.428 0.659,0.035 1.298,-0.05 1.914,-0.258 0.653,-0.221 1.268,-0.585 1.78,-1.05 0.541,-0.492 0.977,-1.106 1.261,-1.776 0.151,-0.357 0.26,-0.729 0.324,-1.106 0.072,-0.415 0.092,-0.843 0.058,-1.272 -0.031,-0.388 -0.108,-0.773 -0.227,-1.144 -0.11,-0.341 -0.257,-0.673 -0.441,-0.988 -0.103,-0.177 -0.216,-0.347 -0.335,-0.503 -0.037,-0.051 -0.077,-0.1 -0.117,-0.151 l -0.033,-0.04 -0.005,0.002 -0.049,-0.07 c -0.022,-0.028 -0.043,-0.054 -0.066,-0.08 l -0.076,-0.08 c -0.028,-0.03 -0.055,-0.062 -0.081,-0.094 -0.05,-0.063 -0.095,-0.131 -0.134,-0.202 -0.035,-0.064 -0.066,-0.131 -0.09,-0.199 -0.019,-0.053 -0.035,-0.105 -0.049,-0.158 -0.085,-0.34 -0.062,-0.729 0.066,-1.123 0.021,-0.066 0.045,-0.13 0.071,-0.193 0.03,-0.073 0.063,-0.145 0.1,-0.215 0.045,-0.088 0.096,-0.176 0.156,-0.269 h 7.162 l 0.002,7.527 c 10e-4,0.022 0.002,0.043 0.006,0.065 0.008,0.061 0.027,0.124 0.057,0.187 0.03,0.06 0.067,0.114 0.111,0.161 0.034,0.037 0.065,0.062 0.102,0.09 l 0.062,0.048 c 0.087,0.065 0.173,0.126 0.262,0.183 0.487,0.316 1.027,0.526 1.563,0.608 0.154,0.024 0.312,0.037 0.482,0.04 0.037,0.001 0.076,0 0.113,-0.001 0.062,-0.002 0.124,-0.005 0.186,-0.01 0.123,-0.011 0.247,-0.029 0.367,-0.053 0.338,-0.071 0.654,-0.2 0.939,-0.383 0.11,-0.07 0.214,-0.149 0.31,-0.231 0.031,-0.026 0.061,-0.053 0.09,-0.081 l 0.029,-0.028 -0.07,-0.106 c 0.003,-0.003 0.007,-0.007 0.01,-0.01 l 0.071,0.101 0.215,-0.169 c 0.13,-0.101 0.243,-0.179 0.358,-0.25 0.24,-0.146 0.497,-0.266 0.763,-0.355 0.656,-0.219 1.363,-0.253 2.04,-0.097 0.374,0.086 0.731,0.229 1.059,0.424 C -0.581,-0.571 -0.268,-0.309 0,0" /></g><g
|
||||||
|
transform="translate(41.5882,22.8337)"
|
||||||
|
id="g24"><path
|
||||||
|
id="path26"
|
||||||
|
style="fill:white;fill-opacity:0.5;fill-rule:nonzero;stroke:none"
|
||||||
|
d="M 0,0 V 0 L 0.053,0.044 0.013,0.018 Z" /></g><g
|
||||||
|
transform="translate(28.5515,3.2736)"
|
||||||
|
id="g28"><path
|
||||||
|
id="path30"
|
||||||
|
style="fill:white;fill-opacity:0.5;fill-rule:nonzero;stroke:none"
|
||||||
|
d="m 0,0 c 0.934,-0.757 1.959,-1.398 3.045,-1.906 0.84,-0.39 1.72,-0.702 2.615,-0.927 0.883,-0.222 1.796,-0.362 2.714,-0.416 0.944,-0.054 1.897,-0.019 2.832,0.106 0.707,0.094 1.414,0.242 2.102,0.439 1.276,0.368 2.496,0.908 3.628,1.605 0.798,0.492 1.556,1.065 2.251,1.704 0.724,0.666 1.384,1.408 1.962,2.205 0.468,0.646 0.886,1.334 1.242,2.044 0.409,0.815 0.742,1.672 0.99,2.547 0.179,0.628 0.316,1.274 0.409,1.921 0.14,0.979 0.182,1.98 0.123,2.973 -0.048,0.819 -0.165,1.638 -0.348,2.433 -0.2,0.872 -0.484,1.732 -0.843,2.556 -0.538,1.234 -1.247,2.392 -2.106,3.442 -0.313,0.381 -0.648,0.752 -0.998,1.1 l -0.52,0.493 H 12.982 L 12.831,22.068 C 12.797,22.003 12.763,21.931 12.732,21.857 12.705,21.794 12.681,21.73 12.659,21.665 12.527,21.268 12.5,20.878 12.582,20.536 c 0.012,-0.053 0.027,-0.105 0.045,-0.156 0.024,-0.069 0.054,-0.137 0.088,-0.202 0.046,-0.086 0.103,-0.171 0.169,-0.251 0.027,-0.032 0.056,-0.062 0.086,-0.093 l 0.045,-0.048 c 0.023,-0.025 0.044,-0.051 0.065,-0.078 l -0.046,-0.082 0.061,0.057 0.003,-0.002 0.022,-0.028 -10e-4,-10e-4 0.01,-0.015 0.004,0.003 0.05,-0.062 c 0.171,-0.212 0.322,-0.433 0.451,-0.659 0.275,-0.478 0.469,-0.996 0.575,-1.538 0.141,-0.718 0.124,-1.472 -0.05,-2.181 -0.152,-0.623 -0.431,-1.228 -0.807,-1.751 -0.303,-0.42 -0.667,-0.79 -1.082,-1.1 C 11.868,12.048 11.425,11.81 10.954,11.64 10.456,11.461 9.935,11.362 9.406,11.345 8.955,11.331 8.505,11.376 8.07,11.48 c -0.494,0.118 -0.965,0.308 -1.399,0.565 -0.509,0.301 -0.958,0.685 -1.333,1.14 -0.393,0.477 -0.692,1.014 -0.89,1.596 -0.218,0.645 -0.305,1.348 -0.25,2.031 0.029,0.355 0.095,0.704 0.194,1.037 0.114,0.383 0.273,0.751 0.474,1.095 0.095,0.164 0.207,0.334 0.334,0.503 0.038,0.051 0.078,0.102 0.118,0.151 L 5.45,19.56 v 0 l -0.101,0.074 0.055,0.073 c 0.023,0.028 0.045,0.054 0.066,0.078 l 0.076,0.08 c 0.03,0.031 0.057,0.062 0.082,0.095 0.05,0.063 0.095,0.131 0.135,0.203 0.034,0.063 0.065,0.13 0.09,0.199 0.019,0.052 0.034,0.103 0.047,0.156 0.086,0.341 0.063,0.73 -0.065,1.124 -0.021,0.065 -0.044,0.129 -0.071,0.193 -0.033,0.082 -0.071,0.162 -0.113,0.24 -0.044,0.084 -0.092,0.165 -0.143,0.244 h -7.162 l -0.002,-7.532 c -0.001,-0.02 -0.003,-0.041 -0.006,-0.06 -0.015,-0.099 -0.052,-0.192 -0.107,-0.272 -0.018,-0.027 -0.039,-0.052 -0.061,-0.076 -0.035,-0.037 -0.064,-0.061 -0.102,-0.09 -0.02,-0.016 -0.042,-0.033 -0.065,-0.05 -0.122,-0.091 -0.254,-0.181 -0.393,-0.264 -0.619,-0.37 -1.29,-0.565 -1.942,-0.565 -0.093,-0.003 -0.179,0.003 -0.268,0.011 -0.11,0.01 -0.221,0.025 -0.33,0.046 -0.36,0.071 -0.709,0.213 -1.008,0.411 -0.109,0.072 -0.213,0.152 -0.309,0.237 -0.029,0.026 -0.058,0.052 -0.085,0.079 h -0.026 l -0.022,0.042 -0.036,0.027 c -0.035,0.03 -0.061,0.051 -0.087,0.072 l -0.073,0.059 c -0.212,0.162 -0.427,0.296 -0.648,0.404 -0.416,0.204 -0.861,0.328 -1.324,0.367 -0.345,0.028 -0.695,0.012 -1.037,-0.053 -0.259,-0.05 -0.511,-0.126 -0.75,-0.228 -0.498,-0.211 -0.954,-0.534 -1.32,-0.936 -0.345,-0.381 -0.614,-0.838 -0.779,-1.322 -0.154,-0.455 -0.218,-0.933 -0.191,-1.421 0.026,-0.462 0.136,-0.909 0.326,-1.327 0.175,-0.386 0.412,-0.738 0.706,-1.047 0.283,-0.296 0.609,-0.543 0.97,-0.734 0.319,-0.168 0.661,-0.289 1.015,-0.36 0.449,-0.089 0.906,-0.095 1.357,-0.021 0.246,0.041 0.49,0.108 0.725,0.198 0.254,0.098 0.499,0.225 0.727,0.377 0.113,0.075 0.229,0.161 0.343,0.257 l 0.068,0.054 0.016,0.046 0.041,0.002 c 0.012,0.013 0.02,0.02 0.029,0.028 l 0.055,0.052 c 0.051,0.043 0.1,0.084 0.151,0.124 0.104,0.08 0.212,0.151 0.322,0.213 0.28,0.159 0.589,0.268 0.917,0.324 0.152,0.026 0.31,0.04 0.48,0.043 h 0.109 C -4.1,9.429 -3.938,9.414 -3.782,9.389 -3.261,9.303 -2.734,9.095 -2.256,8.787 -2.167,8.73 -2.08,8.668 -1.996,8.604 l 0.053,-0.04 c 0.048,-0.037 0.077,-0.061 0.111,-0.097 0.047,-0.05 0.084,-0.104 0.113,-0.162 0.029,-0.062 0.048,-0.125 0.057,-0.187 0.003,-0.02 0.005,-0.04 0.006,-0.06 L -1.654,8.021 V 1.566 C -1.142,1.001 -0.585,0.474 0,0" /></g><g
|
||||||
|
transform="translate(22.2707,17.571)"
|
||||||
|
id="g32"><path
|
||||||
|
id="path34"
|
||||||
|
style="fill:white;fill-opacity:0.5;fill-rule:nonzero;stroke:none"
|
||||||
|
d="m 0,0 v -0.008 l 0.011,0.019 v 0 z" /></g><g
|
||||||
|
transform="translate(40.657,22.3049)"
|
||||||
|
id="g36"><path
|
||||||
|
id="path38"
|
||||||
|
style="fill:white;fill-opacity:0.5;fill-rule:nonzero;stroke:none"
|
||||||
|
d="M 0,0 Z" /></g><g
|
||||||
|
transform="translate(49.1867,28.5134)"
|
||||||
|
id="g40"><path
|
||||||
|
id="path42"
|
||||||
|
style="fill:white;fill-opacity:0.5;fill-rule:nonzero;stroke:none"
|
||||||
|
d="m 0,0 c 0.721,0.884 1.337,1.848 1.832,2.865 0.359,0.739 0.659,1.516 0.89,2.311 0.244,0.839 0.413,1.706 0.503,2.579 0.173,1.678 0.063,3.352 -0.329,4.976 -0.323,1.339 -0.834,2.625 -1.518,3.823 -0.416,0.728 -0.898,1.425 -1.432,2.072 -0.597,0.724 -1.268,1.394 -1.993,1.994 -0.636,0.525 -1.32,0.999 -2.034,1.409 -0.75,0.431 -1.539,0.796 -2.345,1.086 -1,0.359 -2.041,0.609 -3.095,0.743 -0.401,0.051 -0.808,0.086 -1.209,0.104 -0.205,0.009 -0.41,0.014 -0.615,0.015 h -0.098 c -0.479,-0.003 -0.943,-0.026 -1.379,-0.069 -0.825,-0.08 -1.65,-0.231 -2.451,-0.45 -0.861,-0.235 -1.705,-0.551 -2.509,-0.941 -0.765,-0.371 -1.502,-0.811 -2.191,-1.308 -0.571,-0.411 -1.115,-0.866 -1.618,-1.352 -0.236,-0.227 -0.471,-0.469 -0.698,-0.72 v -6.121 c 0.079,-0.052 0.161,-0.1 0.245,-0.144 0.07,-0.037 0.143,-0.071 0.216,-0.102 0.064,-0.027 0.13,-0.051 0.195,-0.074 0.394,-0.132 0.784,-0.158 1.127,-0.077 0.053,0.012 0.105,0.027 0.156,0.045 0.069,0.024 0.136,0.054 0.201,0.088 0.088,0.047 0.173,0.104 0.251,0.169 0.04,0.034 0.078,0.071 0.116,0.107 l 0.029,0.028 c 0.035,0.029 0.055,0.046 0.077,0.063 l 0.107,0.085 c 0.164,0.132 0.314,0.24 0.466,0.338 0.319,0.205 0.662,0.373 1.018,0.502 0.317,0.115 0.649,0.198 0.987,0.245 0.56,0.082 1.126,0.068 1.681,-0.038 0.51,-0.098 1,-0.273 1.455,-0.521 0.473,-0.257 0.901,-0.587 1.272,-0.981 0.394,-0.418 0.711,-0.894 0.942,-1.414 0.248,-0.558 0.392,-1.151 0.427,-1.762 0.037,-0.645 -0.052,-1.307 -0.258,-1.914 -0.22,-0.652 -0.583,-1.267 -1.049,-1.781 -0.491,-0.54 -1.105,-0.976 -1.776,-1.26 -0.352,-0.149 -0.724,-0.259 -1.106,-0.325 -0.421,-0.072 -0.849,-0.091 -1.272,-0.057 -0.371,0.03 -0.739,0.1 -1.09,0.21 -0.365,0.113 -0.716,0.267 -1.042,0.458 -0.167,0.096 -0.336,0.209 -0.503,0.334 -0.051,0.039 -0.102,0.078 -0.151,0.118 l -0.108,0.086 c -0.028,0.022 -0.053,0.043 -0.079,0.065 -0.03,0.028 -0.056,0.054 -0.082,0.079 -0.029,0.026 -0.061,0.054 -0.094,0.081 -0.064,0.05 -0.132,0.095 -0.201,0.133 -0.064,0.035 -0.132,0.065 -0.201,0.091 -0.051,0.018 -0.101,0.034 -0.154,0.046 C -20.829,6.024 -21.219,6 -21.613,5.873 -21.677,5.852 -21.742,5.828 -21.806,5.802 -21.887,5.768 -21.967,5.73 -22.045,5.689 -22.129,5.645 -22.21,5.598 -22.289,5.546 v -7.162 l 7.532,-0.003 c 0.02,-0.001 0.04,-0.002 0.06,-0.005 0.098,-0.015 0.192,-0.052 0.272,-0.107 0.026,-0.018 0.053,-0.039 0.076,-0.062 0.035,-0.033 0.058,-0.061 0.085,-0.096 l 0.053,-0.068 c 0.094,-0.125 0.184,-0.257 0.267,-0.395 0.362,-0.608 0.557,-1.269 0.563,-1.912 0.002,-0.099 -0.002,-0.198 -0.01,-0.298 -0.009,-0.11 -0.025,-0.221 -0.046,-0.33 -0.072,-0.362 -0.213,-0.711 -0.41,-1.008 -0.074,-0.11 -0.153,-0.214 -0.238,-0.309 -0.026,-0.029 -0.053,-0.057 -0.08,-0.086 l -0.025,-0.026 v 10e-4 l -0.18,-0.227 c -0.083,-0.106 -0.161,-0.219 -0.23,-0.334 -0.143,-0.233 -0.26,-0.483 -0.349,-0.744 -0.223,-0.654 -0.261,-1.359 -0.109,-2.037 0.084,-0.378 0.229,-0.742 0.429,-1.083 0.208,-0.351 0.47,-0.665 0.779,-0.932 0.323,-0.28 0.687,-0.5 1.081,-0.656 0.429,-0.17 0.884,-0.257 1.352,-0.26 h 0.026 c 0.482,0 0.951,0.09 1.397,0.269 0.473,0.19 0.913,0.483 1.274,0.848 0.383,0.388 0.682,0.862 0.865,1.371 0.203,0.566 0.267,1.184 0.184,1.786 -0.066,0.477 -0.221,0.931 -0.461,1.349 -0.117,0.204 -0.256,0.4 -0.413,0.584 l -0.073,0.089 0.005,0.01 -0.002,0.006 0.007,0.002 0.017,0.033 0.035,0.065 -0.091,-0.085 -0.053,0.057 c -0.051,0.06 -0.101,0.12 -0.148,0.182 -0.091,0.121 -0.173,0.253 -0.243,0.391 -0.067,0.13 -0.125,0.27 -0.172,0.417 -0.038,0.116 -0.068,0.239 -0.091,0.363 -0.018,0.097 -0.031,0.196 -0.039,0.294 -0.052,0.624 0.082,1.281 0.385,1.901 0.109,0.221 0.239,0.436 0.386,0.639 0.031,0.043 0.064,0.085 0.096,0.127 0.032,0.041 0.055,0.069 0.09,0.102 0.025,0.023 0.051,0.045 0.078,0.063 0.079,0.054 0.172,0.091 0.27,0.106 0.02,0.003 0.04,0.004 0.06,0.005 l 0.038,0.003 h 6.454 C -0.981,-1.113 -0.465,-0.57 0,0" /></g>
|
||||||
|
</g></g></g></svg>
|
||||||
|
After Width: | Height: | Size: 13 KiB |
24
apps/ios/cleverrc/index.html
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, minimal-ui">
|
||||||
|
<link rel="stylesheet" href="main.css">
|
||||||
|
<script src="roslib.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="telemetry"><span class="mode">DISCONNECTED</span></div>
|
||||||
|
<div class="battery"></div>
|
||||||
|
<div class="logo"></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="stick stick-left">
|
||||||
|
<div class="stick-pointer"></div>
|
||||||
|
</div>
|
||||||
|
<div class="stick stick-right">
|
||||||
|
<div class="stick-pointer"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="notifications"></div>
|
||||||
|
<script src="main.js" type="text/javascript"></script>
|
||||||
|
<script src="telemetry.js" type="text/javascript"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
125
apps/ios/cleverrc/main.css
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
html, body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
user-select: none;
|
||||||
|
font-family: sans-serif;
|
||||||
|
background: #212121;
|
||||||
|
color: rgba(255, 255, 255, 0.9);
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stick {
|
||||||
|
border-radius: 50%;
|
||||||
|
width: 5cm;
|
||||||
|
height: 5cm;
|
||||||
|
position: relative;
|
||||||
|
transform: translateZ(0);
|
||||||
|
border: 4px solid rgba(255,255,255,.4);
|
||||||
|
box-shadow: 0 0 0 1px rgba(0,0,0,.2), inset 0 0 0 1px rgba(0,0,0,.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.stick-pointer {
|
||||||
|
position: absolute;
|
||||||
|
border-radius: 50%;
|
||||||
|
background-color: rgba(255,255,255,.25);
|
||||||
|
box-shadow: 0 0 10px rgba(0,0,0,.3);
|
||||||
|
width: 3cm;
|
||||||
|
height: 3cm;
|
||||||
|
margin-left: -1.5cm;
|
||||||
|
margin-top: -1.5cm;
|
||||||
|
top: 2.5cm;
|
||||||
|
left: 2.5cm;
|
||||||
|
pointer-events: none;
|
||||||
|
transform: translateZ(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.telemetry {
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
width: 100%;
|
||||||
|
top: 30px;
|
||||||
|
font-size: 20px;
|
||||||
|
user-select: none;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.armed .telemetry .mode {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes scale {
|
||||||
|
0% { transform: scale(1.0); }
|
||||||
|
50% { transform: scale(1.2); }
|
||||||
|
100% { transform: scale(1.0); }
|
||||||
|
}
|
||||||
|
|
||||||
|
.battery {
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
width: 100%;
|
||||||
|
bottom: 30px;
|
||||||
|
font-size: 20px;
|
||||||
|
user-select: none;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.low-battery .battery {
|
||||||
|
color: #ff554b;
|
||||||
|
animation: scale 0.3s 1 ease-in-out
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
position: absolute;
|
||||||
|
background: url(clever.svg);
|
||||||
|
-webkit-background-size: 50px;
|
||||||
|
background-size: 50px;
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
margin-top: -25px;
|
||||||
|
margin-left: -25px;
|
||||||
|
font-size: 20px;
|
||||||
|
user-select: none;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notifications {
|
||||||
|
pointer-events: none;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notifications.hidden {
|
||||||
|
transform: translateY(-100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.notifications.anim {
|
||||||
|
transition: transform 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notifications .item {
|
||||||
|
font-size: 4mm;
|
||||||
|
-webkit-text-size-adjust: none;
|
||||||
|
background: #fca83a;
|
||||||
|
padding: 3mm;
|
||||||
|
padding-bottom: 1.5mm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notifications .item:last-child {
|
||||||
|
padding-bottom: 3mm;
|
||||||
|
}
|
||||||
126
apps/ios/cleverrc/main.js
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
function throttle(func, ms) {
|
||||||
|
var isThrottled = false,
|
||||||
|
savedArgs,
|
||||||
|
savedThis;
|
||||||
|
|
||||||
|
function wrapper() {
|
||||||
|
if (isThrottled) {
|
||||||
|
savedArgs = arguments;
|
||||||
|
savedThis = this;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
func.apply(this, arguments);
|
||||||
|
isThrottled = true;
|
||||||
|
setTimeout(function() {
|
||||||
|
isThrottled = false;
|
||||||
|
if (savedArgs) {
|
||||||
|
wrapper.apply(savedThis, savedArgs);
|
||||||
|
savedArgs = savedThis = null;
|
||||||
|
}
|
||||||
|
}, ms);
|
||||||
|
}
|
||||||
|
return wrapper;
|
||||||
|
}
|
||||||
|
|
||||||
|
function callNativeApp(name, msg) {
|
||||||
|
try {
|
||||||
|
webkit.messageHandlers[name].postMessage(msg);
|
||||||
|
return true;
|
||||||
|
} catch(err) {
|
||||||
|
console.warn('The native context does not exist yet');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var rcLastPublish = null;
|
||||||
|
|
||||||
|
function rcPublish() {
|
||||||
|
callNativeApp('control', controlMessage);
|
||||||
|
rcLastPublish = new Date();
|
||||||
|
}
|
||||||
|
|
||||||
|
rcPublishThrottled = throttle(rcPublish, 30);
|
||||||
|
|
||||||
|
setInterval(function() {
|
||||||
|
if (rcLastPublish !== null && new Date() - rcLastPublish > 800) {
|
||||||
|
rcPublishThrottled();
|
||||||
|
}
|
||||||
|
}, 50);
|
||||||
|
|
||||||
|
var body = document.querySelector('body');
|
||||||
|
var stickLeft = document.querySelector('.stick-left');
|
||||||
|
var stickRight = document.querySelector('.stick-right');
|
||||||
|
|
||||||
|
var controlMessage = { x: 0, y: 0, z: 0, r: 0 };
|
||||||
|
|
||||||
|
function onStickTouchMove(touch) {
|
||||||
|
var target = touch.target;
|
||||||
|
var targetRect = target.getBoundingClientRect();
|
||||||
|
var stickPointer = target.querySelector('.stick-pointer');
|
||||||
|
|
||||||
|
var offsetX = touch.clientX - targetRect.left;
|
||||||
|
var offsetY = touch.clientY - targetRect.top;
|
||||||
|
|
||||||
|
var x = 2 * offsetX / targetRect.width;
|
||||||
|
var y = 2 * offsetY / targetRect.height;
|
||||||
|
|
||||||
|
x = Math.max(0, x);
|
||||||
|
x = Math.min(2, x);
|
||||||
|
y = Math.max(0, y);
|
||||||
|
y = Math.min(2, y);
|
||||||
|
|
||||||
|
stickPointer.style.left = (x * 50) + '%';
|
||||||
|
stickPointer.style.top = (y * 50) + '%';
|
||||||
|
|
||||||
|
x -= 1;
|
||||||
|
y = 1 - y;
|
||||||
|
|
||||||
|
if (target.matches('.stick-left')) {
|
||||||
|
controlMessage.z = Math.round((y + 1) * 500);
|
||||||
|
controlMessage.r = Math.round(x * 1000);
|
||||||
|
} else if (target.matches('.stick-right')) {
|
||||||
|
controlMessage.x = Math.round(y * 1000);
|
||||||
|
controlMessage.y = Math.round(x * 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body.addEventListener('touchmove', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
});
|
||||||
|
|
||||||
|
function stickTouchStart(e) {
|
||||||
|
setControlMode();
|
||||||
|
callNativeApp('controlStart');
|
||||||
|
onStickTouchMove(e.changedTouches[0]);
|
||||||
|
rcPublishThrottled();
|
||||||
|
e.stopPropagation();
|
||||||
|
e.preventDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
function stickTouchMove(e) {
|
||||||
|
onStickTouchMove(e.changedTouches[0]);
|
||||||
|
rcPublishThrottled();
|
||||||
|
e.stopPropagation();
|
||||||
|
e.preventDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
function stickTouchEnd(e) {
|
||||||
|
var pointer = e.target.querySelector('.stick-pointer');
|
||||||
|
if (e.target.matches('.stick-left')) {
|
||||||
|
controlMessage.r = 0;
|
||||||
|
pointer.style.left = '50%';
|
||||||
|
} else if (e.target.matches('.stick-right')) {
|
||||||
|
controlMessage.x = 0;
|
||||||
|
controlMessage.y = 0;
|
||||||
|
pointer.style.left = '50%';
|
||||||
|
pointer.style.top = '50%';
|
||||||
|
}
|
||||||
|
rcPublishThrottled();
|
||||||
|
}
|
||||||
|
|
||||||
|
stickLeft.addEventListener('touchmove', stickTouchMove);
|
||||||
|
stickRight.addEventListener('touchmove', stickTouchMove);
|
||||||
|
stickLeft.addEventListener('touchstart', stickTouchStart);
|
||||||
|
stickRight.addEventListener('touchstart', stickTouchStart);
|
||||||
|
stickLeft.addEventListener('touchend', stickTouchEnd);
|
||||||
|
stickRight.addEventListener('touchend', stickTouchEnd);
|
||||||
3693
apps/ios/cleverrc/roslib.js
vendored
Normal file
115
apps/ios/cleverrc/telemetry.js
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
var url = 'ws://192.168.11.1:9090';
|
||||||
|
var modeEl = document.querySelector('.telemetry .mode');
|
||||||
|
var batteryEl = document.querySelector('.battery');
|
||||||
|
var notificationsEl = document.querySelector('.notifications');
|
||||||
|
|
||||||
|
var ros = new ROSLIB.Ros({ url: url });
|
||||||
|
|
||||||
|
ros.on('connection', function () {
|
||||||
|
body.classList.add('connected');
|
||||||
|
});
|
||||||
|
|
||||||
|
ros.on('close', function () {
|
||||||
|
body.classList.remove('connected');
|
||||||
|
modeEl.classList.remove('armed');
|
||||||
|
modeEl.innerHTML = 'DISCONNECTED';
|
||||||
|
batteryEl.innerHTML = '';
|
||||||
|
setTimeout(function() {
|
||||||
|
modeEl.innerHTML = 'RECONNECTING';
|
||||||
|
ros.connect(url);
|
||||||
|
}, 2000);
|
||||||
|
});
|
||||||
|
|
||||||
|
var fcuState;
|
||||||
|
|
||||||
|
new ROSLIB.Topic({
|
||||||
|
ros: ros,
|
||||||
|
name: '/state_latched',
|
||||||
|
messageType: 'mavros_msgs/State'
|
||||||
|
}).subscribe(function(message) {
|
||||||
|
body.classList.toggle('fcu-disconnected', !message.connected);
|
||||||
|
body.classList.toggle('armed', message.armed);
|
||||||
|
fcuState = message;
|
||||||
|
modeEl.classList.toggle('armed', fcuState.armed);
|
||||||
|
modeEl.innerHTML = message.connected ? fcuState.mode : 'DISCONNECTED FROM FCU';
|
||||||
|
console.log('state', message);
|
||||||
|
});
|
||||||
|
|
||||||
|
function notifyLowBattery() {
|
||||||
|
console.log('low battery');
|
||||||
|
callNativeApp('lowBattery');
|
||||||
|
body.classList.remove('low-battery');
|
||||||
|
void body.offsetWidth; // trick for repeating animation
|
||||||
|
body.classList.add('low-battery');
|
||||||
|
}
|
||||||
|
|
||||||
|
notifyLowBatteryThrottled = throttle(notifyLowBattery, 15000);
|
||||||
|
|
||||||
|
new ROSLIB.Topic({
|
||||||
|
ros: ros,
|
||||||
|
name: '/mavros/battery',
|
||||||
|
messageType: 'sensor_msgs/BatteryState',
|
||||||
|
throttle_rate: 5000
|
||||||
|
}).subscribe(function(message) {
|
||||||
|
var LOW_BATTERY = 3.8;
|
||||||
|
batteryEl.innerHTML = (message.cell_voltage[0].toFixed(2) + ' V') || '';
|
||||||
|
|
||||||
|
if (message.cell_voltage[0] < LOW_BATTERY) {
|
||||||
|
notifyLowBatteryThrottled();
|
||||||
|
} else {
|
||||||
|
body.classList.remove('low-battery');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var notificationHideTimer;
|
||||||
|
|
||||||
|
function notify(text, severity) {
|
||||||
|
var item = document.createElement('div');
|
||||||
|
item.innerHTML = text;
|
||||||
|
item.classList.add('item');
|
||||||
|
notificationsEl.prepend(item);
|
||||||
|
var itemHeight = item.offsetHeight;
|
||||||
|
notificationsEl.classList.remove('anim');
|
||||||
|
notificationsEl.style.transform = 'translateY(' + -itemHeight + 'px)';
|
||||||
|
setTimeout(function() {
|
||||||
|
notificationsEl.classList.add('anim');
|
||||||
|
notificationsEl.style.transform = 'translateY(0)';
|
||||||
|
}, 0);
|
||||||
|
clearTimeout(notificationHideTimer);
|
||||||
|
notificationHideTimer = setTimeout(function() {
|
||||||
|
notificationsEl.style.transform = '';
|
||||||
|
notificationsEl.classList.add('hidden');
|
||||||
|
setTimeout(function() {
|
||||||
|
notificationsEl.innerHTML = '';
|
||||||
|
}, 210);
|
||||||
|
}, 4000);
|
||||||
|
}
|
||||||
|
|
||||||
|
new ROSLIB.Topic({
|
||||||
|
ros: ros,
|
||||||
|
name: '/mavros/statustext/recv',
|
||||||
|
messageType: 'mavros_msgs/StatusText'
|
||||||
|
}).subscribe(function(message) {
|
||||||
|
var BLACKLIST = ['CMD: ', 'PR: ', 'DROPPED', 'Clock skew detected', 'MANUAL CONTROL LOST'];
|
||||||
|
if (message.severity <= 4) {
|
||||||
|
if (BLACKLIST.some(function(e) {
|
||||||
|
return message.text.indexOf(e) != -1;
|
||||||
|
})) {
|
||||||
|
console.log('Filtered out message ' + message.text);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
notify(message.text, message.severity);
|
||||||
|
callNativeApp('notification', message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var setMode = new ROSLIB.Service({
|
||||||
|
ros: ros,
|
||||||
|
name : '/mavros/set_mode',
|
||||||
|
serviceType : 'mavros_msgs/SetMode'
|
||||||
|
});
|
||||||
|
|
||||||
|
function setControlMode() {
|
||||||
|
var CONTROL_MODE = 'STABILIZED';
|
||||||
|
setMode.callService(new ROSLIB.ServiceRequest({ custom_mode: CONTROL_MODE }));
|
||||||
|
}
|
||||||
@@ -4,59 +4,32 @@
|
|||||||
<version>0.0.0</version>
|
<version>0.0.0</version>
|
||||||
<description>ArUco maps precise pose estimation nodelet</description>
|
<description>ArUco maps precise pose estimation nodelet</description>
|
||||||
|
|
||||||
<!-- One maintainer tag required, multiple allowed, one person per tag -->
|
|
||||||
<!-- Example: -->
|
|
||||||
<!-- <maintainer email="jane.doe@example.com">Jane Doe</maintainer> -->
|
|
||||||
<maintainer email="okalachev@gmail.com">Oleg Kalachev</maintainer>
|
<maintainer email="okalachev@gmail.com">Oleg Kalachev</maintainer>
|
||||||
|
<license>MIT</license>
|
||||||
|
|
||||||
|
<!--url type="website">http://wiki.ros.org/aruco_pose</url-->
|
||||||
|
<author email="okalachev@gmail.com">Oleg Kalachev</author>
|
||||||
|
<author email="urpylka@gmail.com">Artem Smirnov</author>
|
||||||
|
|
||||||
<!-- One license tag required, multiple allowed, one license per tag -->
|
|
||||||
<!-- Commonly used license strings: -->
|
|
||||||
<!-- BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->
|
|
||||||
<license>TODO</license>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Url tags are optional, but multiple are allowed, one per tag -->
|
|
||||||
<!-- Optional attribute type can be: website, bugtracker, or repository -->
|
|
||||||
<!-- Example: -->
|
|
||||||
<!-- <url type="website">http://wiki.ros.org/aruco_pose</url> -->
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Author tags are optional, multiple are allowed, one per tag -->
|
|
||||||
<!-- Authors do not have to be maintainers, but could be -->
|
|
||||||
<!-- Example: -->
|
|
||||||
<!-- <author email="jane.doe@example.com">Jane Doe</author> -->
|
|
||||||
|
|
||||||
|
|
||||||
<!-- The *_depend tags are used to specify dependencies -->
|
|
||||||
<!-- Dependencies can be catkin packages or system dependencies -->
|
|
||||||
<!-- Examples: -->
|
|
||||||
<!-- Use build_depend for packages you need at compile time: -->
|
<!-- Use build_depend for packages you need at compile time: -->
|
||||||
<!-- <build_depend>message_generation</build_depend> -->
|
|
||||||
<!-- Use buildtool_depend for build tool packages: -->
|
|
||||||
<!-- <buildtool_depend>catkin</buildtool_depend> -->
|
|
||||||
<!-- Use run_depend for packages you need at runtime: -->
|
|
||||||
<!-- <run_depend>message_runtime</run_depend> -->
|
|
||||||
<!-- Use test_depend for packages you need only for testing: -->
|
|
||||||
<!-- <test_depend>gtest</test_depend> -->
|
|
||||||
<buildtool_depend>catkin</buildtool_depend>
|
|
||||||
|
|
||||||
<build_depend>nodelet</build_depend>
|
<build_depend>nodelet</build_depend>
|
||||||
<build_depend>roscpp</build_depend>
|
<build_depend>roscpp</build_depend>
|
||||||
<build_depend>image_transport</build_depend>
|
<build_depend>image_transport</build_depend>
|
||||||
<build_depend>cv_bridge</build_depend>
|
<build_depend>cv_bridge</build_depend>
|
||||||
<build_depend>tf</build_depend>
|
<build_depend>tf</build_depend>
|
||||||
|
<!-- Use buildtool_depend for build tool packages: -->
|
||||||
|
<buildtool_depend>catkin</buildtool_depend>
|
||||||
|
<!-- Use run_depend for packages you need at runtime: -->
|
||||||
<run_depend>nodelet</run_depend>
|
<run_depend>nodelet</run_depend>
|
||||||
<run_depend>roscpp</run_depend>
|
<run_depend>roscpp</run_depend>
|
||||||
<run_depend>image_transport</run_depend>
|
<run_depend>image_transport</run_depend>
|
||||||
<run_depend>cv_bridge</run_depend>
|
<run_depend>cv_bridge</run_depend>
|
||||||
<build_depend>tf</build_depend>
|
<!-- Use test_depend for packages you need only for testing: -->
|
||||||
|
<!-- <test_depend>gtest</test_depend> -->
|
||||||
|
|
||||||
<!-- The export tag contains other, unspecified, tags -->
|
<!-- The export tag contains other, unspecified, tags -->
|
||||||
<export>
|
<export>
|
||||||
<nodelet plugin="${prefix}/nodelet_plugins.xml" />
|
<nodelet plugin="${prefix}/nodelet_plugins.xml" />
|
||||||
<!-- Other tools can request additional information be placed here -->
|
<!-- Other tools can request additional information be placed here -->
|
||||||
|
|
||||||
</export>
|
</export>
|
||||||
</package>
|
</package>
|
||||||
|
|||||||
@@ -16,6 +16,11 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <tf/transform_broadcaster.h>
|
#include <tf/transform_broadcaster.h>
|
||||||
|
|
||||||
|
#include "util.h"
|
||||||
|
|
||||||
|
using std::vector;
|
||||||
|
using std::string;
|
||||||
|
|
||||||
namespace aruco_pose {
|
namespace aruco_pose {
|
||||||
|
|
||||||
class ArucoPose : public nodelet::Nodelet {
|
class ArucoPose : public nodelet::Nodelet {
|
||||||
@@ -100,6 +105,45 @@ cv::Ptr<cv::aruco::Board> createCustomGridBoard(int markersX, int markersY, floa
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cv::Ptr<cv::aruco::Board> createCustomBoard(std::map<string, string> markers, const cv::Ptr<cv::aruco::Dictionary> &dictionary) {
|
||||||
|
cv::Ptr<cv::aruco::Board> res = cv::makePtr<cv::aruco::Board>();
|
||||||
|
|
||||||
|
res->dictionary = dictionary;
|
||||||
|
|
||||||
|
size_t total_markers = markers.size();
|
||||||
|
res->ids.reserve(total_markers);
|
||||||
|
res->objPoints.reserve(total_markers);
|
||||||
|
|
||||||
|
// Generate ids and objPoints
|
||||||
|
for(auto const &marker : markers) {
|
||||||
|
res->ids.push_back(std::stoi(marker.first));
|
||||||
|
|
||||||
|
vector<string> parts;
|
||||||
|
parts = strSplit(marker.second, " ");
|
||||||
|
|
||||||
|
float size = std::stof(parts.at(0));
|
||||||
|
float x = std::stof(parts.at(1));
|
||||||
|
float y = std::stof(parts.at(2));
|
||||||
|
float z = std::stof(parts.at(3));
|
||||||
|
float yaw = std::stof(parts.at(4));
|
||||||
|
float pitch = std::stof(parts.at(5));
|
||||||
|
float roll = std::stof(parts.at(6));
|
||||||
|
|
||||||
|
vector<cv::Point3f> corners;
|
||||||
|
corners.resize(4);
|
||||||
|
corners[0] = cv::Point3f(x - size / 2, y + size / 2, 0);
|
||||||
|
corners[1] = corners[0] + cv::Point3f(size, 0, 0);
|
||||||
|
corners[2] = corners[0] + cv::Point3f(size, -size, 0);
|
||||||
|
corners[3] = corners[0] + cv::Point3f(0, -size, 0);
|
||||||
|
|
||||||
|
// TODO: process yaw, pitch, roll
|
||||||
|
|
||||||
|
res->objPoints.push_back(corners);
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
#include "fix.cpp"
|
#include "fix.cpp"
|
||||||
|
|
||||||
void ArucoPose::createBoard()
|
void ArucoPose::createBoard()
|
||||||
@@ -178,8 +222,22 @@ void ArucoPose::createBoard()
|
|||||||
}
|
}
|
||||||
else if (type == "custom")
|
else if (type == "custom")
|
||||||
{
|
{
|
||||||
// Not implemented yet
|
ROS_INFO("Initialize a custom board");
|
||||||
ROS_FATAL("Custom boards are not implemented yet.");
|
|
||||||
|
std::map<string, string> markers;
|
||||||
|
nh_priv_.getParam("markers", markers);
|
||||||
|
|
||||||
|
board = createCustomBoard(markers, dictionary);
|
||||||
|
|
||||||
|
ROS_INFO("Draw a custom board");
|
||||||
|
// Publish map image for debugging
|
||||||
|
_drawPlanarBoard(board, cv::Size(2000, 2000), map_image, 50, 1);
|
||||||
|
|
||||||
|
cv::cvtColor(map_image, map_image, CV_GRAY2BGR);
|
||||||
|
|
||||||
|
map_image_msg.encoding = sensor_msgs::image_encodings::BGR8;
|
||||||
|
map_image_msg.image = map_image;
|
||||||
|
map_image_pub.publish(map_image_msg.toImageMsg());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -214,10 +272,12 @@ void ArucoPose::detect(const sensor_msgs::ImageConstPtr& msg, const sensor_msgs:
|
|||||||
cv::Mat distCoeffs(8, 1, CV_64F);
|
cv::Mat distCoeffs(8, 1, CV_64F);
|
||||||
parseCameraInfo(cinfo, cameraMatrix, distCoeffs);
|
parseCameraInfo(cinfo, cameraMatrix, distCoeffs);
|
||||||
|
|
||||||
|
int valid = 0;
|
||||||
|
cv::Mat rvec, tvec, objPoints;
|
||||||
|
|
||||||
if (markerIds.size() > 0) {
|
if (markerIds.size() > 0) {
|
||||||
|
|
||||||
cv::Mat rvec, tvec, objPoints;
|
valid = _estimatePoseBoard(markerCorners, markerIds, board, cameraMatrix, distCoeffs,
|
||||||
int valid = _estimatePoseBoard(markerCorners, markerIds, board, cameraMatrix, distCoeffs,
|
|
||||||
rvec, tvec, false, objPoints);
|
rvec, tvec, false, objPoints);
|
||||||
|
|
||||||
if (valid) {
|
if (valid) {
|
||||||
@@ -243,18 +303,16 @@ void ArucoPose::detect(const sensor_msgs::ImageConstPtr& msg, const sensor_msgs:
|
|||||||
ref_transform.setOrigin(ref_vector3);
|
ref_transform.setOrigin(ref_vector3);
|
||||||
ref_transform.setRotation(q);
|
ref_transform.setRotation(q);
|
||||||
br.sendTransform(ref_transform);
|
br.sendTransform(ref_transform);
|
||||||
|
|
||||||
if(img_pub.getNumSubscribers() > 0)
|
|
||||||
{
|
|
||||||
// Publish debug image
|
|
||||||
cv::aruco::drawDetectedMarkers(image, markerCorners, markerIds);
|
|
||||||
cv::aruco::drawAxis(image, cameraMatrix, distCoeffs, rvec, tvec, 0.3);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (img_pub.getNumSubscribers() > 0)
|
if (img_pub.getNumSubscribers() > 0)
|
||||||
{
|
{
|
||||||
|
cv::aruco::drawDetectedMarkers(image, markerCorners, markerIds); // draw markers
|
||||||
|
if (valid)
|
||||||
|
{
|
||||||
|
cv::aruco::drawAxis(image, cameraMatrix, distCoeffs, rvec, tvec, 0.3); // draw board axis
|
||||||
|
}
|
||||||
cv_bridge::CvImage out_msg;
|
cv_bridge::CvImage out_msg;
|
||||||
out_msg.header.frame_id = msg->header.frame_id;
|
out_msg.header.frame_id = msg->header.frame_id;
|
||||||
out_msg.header.stamp = msg->header.stamp;
|
out_msg.header.stamp = msg->header.stamp;
|
||||||
|
|||||||
20
aruco_pose/src/util.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
std::vector<std::string> strSplit(const std::string& str, const std::string& delim)
|
||||||
|
{
|
||||||
|
std::vector<std::string> tokens;
|
||||||
|
size_t prev = 0, pos = 0;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
pos = str.find(delim, prev);
|
||||||
|
if (pos == std::string::npos) pos = str.length();
|
||||||
|
std::string token = str.substr(prev, pos-prev);
|
||||||
|
if (!token.empty()) tokens.push_back(token);
|
||||||
|
prev = pos + delim.length();
|
||||||
|
}
|
||||||
|
while (pos < str.length() && prev < str.length());
|
||||||
|
return tokens;
|
||||||
|
}
|
||||||
|
Before Width: | Height: | Size: 4.8 MiB |
|
Before Width: | Height: | Size: 1.7 MiB |
|
Before Width: | Height: | Size: 6.5 MiB |
|
Before Width: | Height: | Size: 2.4 MiB |
|
Before Width: | Height: | Size: 363 KiB |
|
Before Width: | Height: | Size: 257 KiB |
|
Before Width: | Height: | Size: 467 KiB |
|
Before Width: | Height: | Size: 404 KiB |
|
Before Width: | Height: | Size: 265 KiB |
|
Before Width: | Height: | Size: 475 KiB |
|
Before Width: | Height: | Size: 3.1 MiB |
|
Before Width: | Height: | Size: 518 KiB |
|
Before Width: | Height: | Size: 210 KiB |
|
Before Width: | Height: | Size: 332 KiB |
|
Before Width: | Height: | Size: 326 KiB |
|
Before Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 237 KiB |
|
Before Width: | Height: | Size: 414 KiB |
|
Before Width: | Height: | Size: 552 KiB |
|
Before Width: | Height: | Size: 246 KiB |
|
Before Width: | Height: | Size: 425 KiB |
|
Before Width: | Height: | Size: 279 KiB |
|
Before Width: | Height: | Size: 203 KiB |
|
Before Width: | Height: | Size: 327 KiB |
|
Before Width: | Height: | Size: 251 KiB |
|
Before Width: | Height: | Size: 408 KiB |
|
Before Width: | Height: | Size: 339 KiB |
|
Before Width: | Height: | Size: 294 KiB |
|
Before Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 329 KiB |
|
Before Width: | Height: | Size: 848 KiB |
|
Before Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 335 KiB |
|
Before Width: | Height: | Size: 772 KiB |
|
Before Width: | Height: | Size: 334 KiB |
|
Before Width: | Height: | Size: 305 KiB |
|
Before Width: | Height: | Size: 321 KiB |
19
book.json
@@ -3,5 +3,20 @@
|
|||||||
"description": "Конструктор квадрокоптера «Клевер»",
|
"description": "Конструктор квадрокоптера «Клевер»",
|
||||||
"author": "Copter Express",
|
"author": "Copter Express",
|
||||||
"language": "ru",
|
"language": "ru",
|
||||||
"plugins": ["youtube", "richquotes"]
|
"root": "docs/",
|
||||||
}
|
"plugins": ["youtube", "richquotes", "versions", "yametrika"],
|
||||||
|
"pluginsConfig": {
|
||||||
|
"disqus": {
|
||||||
|
"shortName": "coex-clever"
|
||||||
|
},
|
||||||
|
"versions": {
|
||||||
|
"type": "tags"
|
||||||
|
},
|
||||||
|
"yametrika": {
|
||||||
|
"id": 49359238
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"structure": {
|
||||||
|
"glossary": "_GLOSSARY.md"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
6
builder/assets/butterfly.service
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Butterfly Terminal Server
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/usr/local/bin/butterfly.server.py --host="0.0.0.0" --unsecure
|
||||||
|
User=pi
|
||||||
5
builder/assets/butterfly.socket
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
[Socket]
|
||||||
|
ListenStream=57575
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=sockets.target
|
||||||
@@ -4,7 +4,7 @@ Requires=roscore.service
|
|||||||
After=roscore.service
|
After=roscore.service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
EnvironmentFile=/home/pi/catkin_ws/src/clever/deploy/roscore.env
|
EnvironmentFile=/lib/systemd/system/roscore.env
|
||||||
ExecStart=/opt/ros/kinetic/bin/roslaunch clever clever.launch --wait
|
ExecStart=/opt/ros/kinetic/bin/roslaunch clever clever.launch --wait
|
||||||
Restart=on-abort
|
Restart=on-abort
|
||||||
|
|
||||||
78
builder/assets/hardware_setup.sh
Executable file
@@ -0,0 +1,78 @@
|
|||||||
|
#! /usr/bin/env bash
|
||||||
|
|
||||||
|
#
|
||||||
|
# Script for build the image. Used builder script of the target repo
|
||||||
|
# For build: docker run --privileged -it --rm -v /dev:/dev -v $(pwd):/builder/repo smirart/builder
|
||||||
|
#
|
||||||
|
# Copyright (C) 2018 Copter Express Technologies
|
||||||
|
#
|
||||||
|
# Author: Artem Smirnov <urpylka@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
set -e # Exit immidiately on non-zero result
|
||||||
|
|
||||||
|
echo_stamp() {
|
||||||
|
# TEMPLATE: echo_stamp <TEXT> <TYPE>
|
||||||
|
# TYPE: SUCCESS, ERROR, INFO
|
||||||
|
|
||||||
|
# More info there https://www.shellhacks.com/ru/bash-colors/
|
||||||
|
|
||||||
|
TEXT="$(date '+[%Y-%m-%d %H:%M:%S]') $1"
|
||||||
|
TEXT="\e[1m$TEXT\e[0m" # BOLD
|
||||||
|
|
||||||
|
case "$2" in
|
||||||
|
SUCCESS)
|
||||||
|
TEXT="\e[32m${TEXT}\e[0m";; # GREEN
|
||||||
|
ERROR)
|
||||||
|
TEXT="\e[31m${TEXT}\e[0m";; # RED
|
||||||
|
*)
|
||||||
|
TEXT="\e[34m${TEXT}\e[0m";; # BLUE
|
||||||
|
esac
|
||||||
|
echo -e ${TEXT}
|
||||||
|
}
|
||||||
|
|
||||||
|
##################################################
|
||||||
|
# Configure hardware interfaces
|
||||||
|
##################################################
|
||||||
|
|
||||||
|
# 1. Enable sshd
|
||||||
|
echo_stamp "#1 Turn on sshd"
|
||||||
|
touch /boot/ssh
|
||||||
|
# /usr/bin/raspi-config nonint do_ssh 0
|
||||||
|
|
||||||
|
# 2. Enable GPIO
|
||||||
|
echo_stamp "#2 GPIO enabled by default"
|
||||||
|
|
||||||
|
# 3. Enable I2C
|
||||||
|
echo_stamp "#3 Turn on I2C"
|
||||||
|
/usr/bin/raspi-config nonint do_i2c 0
|
||||||
|
|
||||||
|
# 4. Enable SPI
|
||||||
|
echo_stamp "#4 Turn on SPI"
|
||||||
|
/usr/bin/raspi-config nonint do_spi 0
|
||||||
|
|
||||||
|
# 5. Enable raspicam
|
||||||
|
echo_stamp "#5 Turn on raspicam"
|
||||||
|
/usr/bin/raspi-config nonint do_camera 0
|
||||||
|
|
||||||
|
# 6. Enable hardware UART
|
||||||
|
echo_stamp "#6 Turn on UART"
|
||||||
|
# Temporary solution
|
||||||
|
# https://github.com/RPi-Distro/raspi-config/pull/75
|
||||||
|
/usr/bin/raspi-config nonint do_serial 1
|
||||||
|
/usr/bin/raspi-config nonint set_config_var enable_uart 1 /boot/config.txt
|
||||||
|
/usr/bin/raspi-config nonint set_config_var dtoverlay pi3-disable-bt /boot/config.txt
|
||||||
|
systemctl disable hciuart.service
|
||||||
|
|
||||||
|
# After adding to Raspbian OS
|
||||||
|
# https://github.com/RPi-Distro/raspi-config/commit/d6d9ecc0d9cbe4aaa9744ae733b9cb239e79c116
|
||||||
|
#/usr/bin/raspi-config nonint do_serial 2
|
||||||
|
|
||||||
|
# 7. Enable V4L driver http://robocraft.ru/blog/electronics/3158.html
|
||||||
|
#echo "bcm2835-v4l2" >> /etc/modules
|
||||||
|
echo_stamp "#7 Turn on v4l2 driver"
|
||||||
|
if ! grep -q "^bcm2835-v4l2" /etc/modules;
|
||||||
|
then printf "bcm2835-v4l2\n" >> /etc/modules
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo_stamp "#8 End of configure hardware interfaces"
|
||||||
13
builder/assets/index.html
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<h1>CLEVER Drone Kit Tools</h1>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<!-- <li><a href="">View user reference</a> (<a href="http://clever.copterexpress.com">http://clever.copterexpress.com</a> snapshot)</li> -->
|
||||||
|
<li><a href="" id="wvs">View image topics</a> (<code>web_video_server</code>)</li>
|
||||||
|
<li><a href="" id="butterfly">Open web terminal</a> (<code>Butterfly</code>)</li>
|
||||||
|
<!-- <li><a href="viz.html">View 3D visualization</a> (<code>ros3djs</code>)</li> -->
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
document.querySelector("#wvs").href = location.origin + ':8080';
|
||||||
|
document.querySelector("#butterfly").href = location.origin + ':57575';
|
||||||
|
</script>
|
||||||
43
builder/assets/init_rpi.sh
Executable file
@@ -0,0 +1,43 @@
|
|||||||
|
#! /usr/bin/env bash
|
||||||
|
|
||||||
|
#
|
||||||
|
# Script for build the image. Used builder script of the target repo
|
||||||
|
# For build: docker run --privileged -it --rm -v /dev:/dev -v $(pwd):/builder/repo smirart/builder
|
||||||
|
#
|
||||||
|
# Copyright (C) 2018 Copter Express Technologies
|
||||||
|
#
|
||||||
|
# Author: Artem Smirnov <urpylka@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
set -e # Exit immidiately on non-zero result
|
||||||
|
|
||||||
|
echo_stamp() {
|
||||||
|
# TEMPLATE: echo_stamp <TEXT> <TYPE>
|
||||||
|
# TYPE: SUCCESS, ERROR, INFO
|
||||||
|
|
||||||
|
# More info there https://www.shellhacks.com/ru/bash-colors/
|
||||||
|
|
||||||
|
TEXT="$(date '+[%Y-%m-%d %H:%M:%S]') $1"
|
||||||
|
TEXT="\e[1m$TEXT\e[0m" # BOLD
|
||||||
|
|
||||||
|
case "$2" in
|
||||||
|
SUCCESS)
|
||||||
|
TEXT="\e[32m${TEXT}\e[0m";; # GREEN
|
||||||
|
ERROR)
|
||||||
|
TEXT="\e[31m${TEXT}\e[0m";; # RED
|
||||||
|
*)
|
||||||
|
TEXT="\e[34m${TEXT}\e[0m";; # BLUE
|
||||||
|
esac
|
||||||
|
echo -e ${TEXT}
|
||||||
|
}
|
||||||
|
|
||||||
|
echo_stamp "Rename SSID"
|
||||||
|
sudo sed -i.OLD "s/CLEVER/CLEVER-$(head -c 100 /dev/urandom | xxd -ps -c 100 | sed -e 's/[^0-9]//g' | cut -c 1-4)/g" /etc/wpa_supplicant/wpa_supplicant.conf
|
||||||
|
|
||||||
|
echo_stamp "Harware setup"
|
||||||
|
/root/hardware_setup.sh
|
||||||
|
|
||||||
|
echo_stamp "Remove init scripts"
|
||||||
|
rm /root/init_rpi.sh /root/hardware_setup.sh
|
||||||
|
|
||||||
|
echo_stamp "End of initialization of the image"
|
||||||
676
builder/assets/kinetic-ros-clever.rosinstall
Normal file
@@ -0,0 +1,676 @@
|
|||||||
|
- tar:
|
||||||
|
local-name: catkin
|
||||||
|
uri: https://github.com/ros-gbp/catkin-release/archive/release/kinetic/catkin/0.7.11-0.tar.gz
|
||||||
|
version: catkin-release-release-kinetic-catkin-0.7.11-0
|
||||||
|
- tar:
|
||||||
|
local-name: cmake_modules
|
||||||
|
uri: https://github.com/ros-gbp/cmake_modules-release/archive/release/kinetic/cmake_modules/0.4.1-0.tar.gz
|
||||||
|
version: cmake_modules-release-release-kinetic-cmake_modules-0.4.1-0
|
||||||
|
- tar:
|
||||||
|
local-name: gencpp
|
||||||
|
uri: https://github.com/ros-gbp/gencpp-release/archive/release/kinetic/gencpp/0.6.0-0.tar.gz
|
||||||
|
version: gencpp-release-release-kinetic-gencpp-0.6.0-0
|
||||||
|
- tar:
|
||||||
|
local-name: geneus
|
||||||
|
uri: https://github.com/tork-a/geneus-release/archive/release/kinetic/geneus/2.2.6-0.tar.gz
|
||||||
|
version: geneus-release-release-kinetic-geneus-2.2.6-0
|
||||||
|
- tar:
|
||||||
|
local-name: genlisp
|
||||||
|
uri: https://github.com/ros-gbp/genlisp-release/archive/release/kinetic/genlisp/0.4.16-0.tar.gz
|
||||||
|
version: genlisp-release-release-kinetic-genlisp-0.4.16-0
|
||||||
|
- tar:
|
||||||
|
local-name: genmsg
|
||||||
|
uri: https://github.com/ros-gbp/genmsg-release/archive/release/kinetic/genmsg/0.5.10-0.tar.gz
|
||||||
|
version: genmsg-release-release-kinetic-genmsg-0.5.10-0
|
||||||
|
- tar:
|
||||||
|
local-name: gennodejs
|
||||||
|
uri: https://github.com/RethinkRobotics-release/gennodejs-release/archive/release/kinetic/gennodejs/2.0.1-0.tar.gz
|
||||||
|
version: gennodejs-release-release-kinetic-gennodejs-2.0.1-0
|
||||||
|
- tar:
|
||||||
|
local-name: genpy
|
||||||
|
uri: https://github.com/ros-gbp/genpy-release/archive/release/kinetic/genpy/0.6.7-0.tar.gz
|
||||||
|
version: genpy-release-release-kinetic-genpy-0.6.7-0
|
||||||
|
- tar:
|
||||||
|
local-name: message_generation
|
||||||
|
uri: https://github.com/ros-gbp/message_generation-release/archive/release/kinetic/message_generation/0.4.0-0.tar.gz
|
||||||
|
version: message_generation-release-release-kinetic-message_generation-0.4.0-0
|
||||||
|
- tar:
|
||||||
|
local-name: message_runtime
|
||||||
|
uri: https://github.com/ros-gbp/message_runtime-release/archive/release/kinetic/message_runtime/0.4.12-0.tar.gz
|
||||||
|
version: message_runtime-release-release-kinetic-message_runtime-0.4.12-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/mk
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/mk/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-mk-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/ros
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/ros/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-ros-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/rosbash
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/rosbash/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-rosbash-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/rosboost_cfg
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/rosboost_cfg/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-rosboost_cfg-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/rosbuild
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/rosbuild/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-rosbuild-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/rosclean
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/rosclean/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-rosclean-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/roscreate
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/roscreate/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-roscreate-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/roslang
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/roslang/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-roslang-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/roslib
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/roslib/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-roslib-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/rosmake
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/rosmake/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-rosmake-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/rosunit
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/rosunit/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-rosunit-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/message_filters
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/message_filters/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-message_filters-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/ros_comm
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/ros_comm/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-ros_comm-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rosbag
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosbag/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rosbag-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rosbag_storage
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosbag_storage/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rosbag_storage-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rosconsole
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosconsole/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rosconsole-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/roscpp
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/roscpp/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-roscpp-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rosgraph
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosgraph/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rosgraph-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/roslaunch
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/roslaunch/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-roslaunch-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/roslz4
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/roslz4/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-roslz4-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rosmaster
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosmaster/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rosmaster-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rosmsg
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosmsg/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rosmsg-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rosnode
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosnode/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rosnode-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rosout
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosout/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rosout-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rosparam
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosparam/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rosparam-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rospy
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rospy/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rospy-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rosservice
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosservice/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rosservice-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rostest
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rostest/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rostest-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rostopic
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rostopic/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rostopic-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/roswtf
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/roswtf/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-roswtf-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/topic_tools
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/topic_tools/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-topic_tools-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/xmlrpcpp
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/xmlrpcpp/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-xmlrpcpp-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm_msgs/rosgraph_msgs
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm_msgs-release/archive/release/kinetic/rosgraph_msgs/1.11.2-0.tar.gz
|
||||||
|
version: ros_comm_msgs-release-release-kinetic-rosgraph_msgs-1.11.2-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm_msgs/std_srvs
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm_msgs-release/archive/release/kinetic/std_srvs/1.11.2-0.tar.gz
|
||||||
|
version: ros_comm_msgs-release-release-kinetic-std_srvs-1.11.2-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_environment
|
||||||
|
uri: https://github.com/ros-gbp/ros_environment-release/archive/release/kinetic/ros_environment/1.0.0-0.tar.gz
|
||||||
|
version: ros_environment-release-release-kinetic-ros_environment-1.0.0-0
|
||||||
|
- tar:
|
||||||
|
local-name: roscpp_core/cpp_common
|
||||||
|
uri: https://github.com/ros-gbp/roscpp_core-release/archive/release/kinetic/cpp_common/0.6.9-0.tar.gz
|
||||||
|
version: roscpp_core-release-release-kinetic-cpp_common-0.6.9-0
|
||||||
|
- tar:
|
||||||
|
local-name: roscpp_core/roscpp_serialization
|
||||||
|
uri: https://github.com/ros-gbp/roscpp_core-release/archive/release/kinetic/roscpp_serialization/0.6.9-0.tar.gz
|
||||||
|
version: roscpp_core-release-release-kinetic-roscpp_serialization-0.6.9-0
|
||||||
|
- tar:
|
||||||
|
local-name: roscpp_core/roscpp_traits
|
||||||
|
uri: https://github.com/ros-gbp/roscpp_core-release/archive/release/kinetic/roscpp_traits/0.6.9-0.tar.gz
|
||||||
|
version: roscpp_core-release-release-kinetic-roscpp_traits-0.6.9-0
|
||||||
|
- tar:
|
||||||
|
local-name: roscpp_core/rostime
|
||||||
|
uri: https://github.com/ros-gbp/roscpp_core-release/archive/release/kinetic/rostime/0.6.9-0.tar.gz
|
||||||
|
version: roscpp_core-release-release-kinetic-rostime-0.6.9-0
|
||||||
|
- tar:
|
||||||
|
local-name: roslisp
|
||||||
|
uri: https://github.com/ros-gbp/roslisp-release/archive/release/kinetic/roslisp/1.9.21-0.tar.gz
|
||||||
|
version: roslisp-release-release-kinetic-roslisp-1.9.21-0
|
||||||
|
- tar:
|
||||||
|
local-name: rospack
|
||||||
|
uri: https://github.com/ros-gbp/rospack-release/archive/release/kinetic/rospack/2.4.4-0.tar.gz
|
||||||
|
version: rospack-release-release-kinetic-rospack-2.4.4-0
|
||||||
|
- tar:
|
||||||
|
local-name: std_msgs
|
||||||
|
uri: https://github.com/ros-gbp/std_msgs-release/archive/release/kinetic/std_msgs/0.5.11-0.tar.gz
|
||||||
|
version: std_msgs-release-release-kinetic-std_msgs-0.5.11-0
|
||||||
|
- tar:
|
||||||
|
local-name: actionlib
|
||||||
|
uri: https://github.com/ros-gbp/actionlib-release/archive/release/kinetic/actionlib/1.11.13-0.tar.gz
|
||||||
|
version: actionlib-release-release-kinetic-actionlib-1.11.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: angles
|
||||||
|
uri: https://github.com/ros-gbp/geometry_angles_utils-release/archive/release/kinetic/angles/1.9.11-0.tar.gz
|
||||||
|
version: geometry_angles_utils-release-release-kinetic-angles-1.9.11-0
|
||||||
|
- tar:
|
||||||
|
local-name: async_web_server_cpp
|
||||||
|
uri: https://github.com/gt-rail-release/async_web_server_cpp-release/archive/release/kinetic/async_web_server_cpp/0.0.3-0.tar.gz
|
||||||
|
version: async_web_server_cpp-release-release-kinetic-async_web_server_cpp-0.0.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: bond_core/bond
|
||||||
|
uri: https://github.com/ros-gbp/bond_core-release/archive/release/kinetic/bond/1.8.1-0.tar.gz
|
||||||
|
version: bond_core-release-release-kinetic-bond-1.8.1-0
|
||||||
|
- tar:
|
||||||
|
local-name: bond_core/bond_core
|
||||||
|
uri: https://github.com/ros-gbp/bond_core-release/archive/release/kinetic/bond_core/1.8.1-0.tar.gz
|
||||||
|
version: bond_core-release-release-kinetic-bond_core-1.8.1-0
|
||||||
|
- tar:
|
||||||
|
local-name: bond_core/bondcpp
|
||||||
|
uri: https://github.com/ros-gbp/bond_core-release/archive/release/kinetic/bondcpp/1.8.1-0.tar.gz
|
||||||
|
version: bond_core-release-release-kinetic-bondcpp-1.8.1-0
|
||||||
|
- tar:
|
||||||
|
local-name: bond_core/bondpy
|
||||||
|
uri: https://github.com/ros-gbp/bond_core-release/archive/release/kinetic/bondpy/1.8.1-0.tar.gz
|
||||||
|
version: bond_core-release-release-kinetic-bondpy-1.8.1-0
|
||||||
|
- tar:
|
||||||
|
local-name: bond_core/smclib
|
||||||
|
uri: https://github.com/ros-gbp/bond_core-release/archive/release/kinetic/smclib/1.8.1-0.tar.gz
|
||||||
|
version: bond_core-release-release-kinetic-smclib-1.8.1-0
|
||||||
|
- tar:
|
||||||
|
local-name: catkin
|
||||||
|
uri: https://github.com/ros-gbp/catkin-release/archive/release/kinetic/catkin/0.7.11-0.tar.gz
|
||||||
|
version: catkin-release-release-kinetic-catkin-0.7.11-0
|
||||||
|
- tar:
|
||||||
|
local-name: class_loader
|
||||||
|
uri: https://github.com/ros-gbp/class_loader-release/archive/release/kinetic/class_loader/0.3.9-0.tar.gz
|
||||||
|
version: class_loader-release-release-kinetic-class_loader-0.3.9-0
|
||||||
|
- tar:
|
||||||
|
local-name: cmake_modules
|
||||||
|
uri: https://github.com/ros-gbp/cmake_modules-release/archive/release/kinetic/cmake_modules/0.4.1-0.tar.gz
|
||||||
|
version: cmake_modules-release-release-kinetic-cmake_modules-0.4.1-0
|
||||||
|
- tar:
|
||||||
|
local-name: common_msgs/actionlib_msgs
|
||||||
|
uri: https://github.com/ros-gbp/common_msgs-release/archive/release/kinetic/actionlib_msgs/1.12.6-0.tar.gz
|
||||||
|
version: common_msgs-release-release-kinetic-actionlib_msgs-1.12.6-0
|
||||||
|
- tar:
|
||||||
|
local-name: common_msgs/diagnostic_msgs
|
||||||
|
uri: https://github.com/ros-gbp/common_msgs-release/archive/release/kinetic/diagnostic_msgs/1.12.6-0.tar.gz
|
||||||
|
version: common_msgs-release-release-kinetic-diagnostic_msgs-1.12.6-0
|
||||||
|
- tar:
|
||||||
|
local-name: common_msgs/geometry_msgs
|
||||||
|
uri: https://github.com/ros-gbp/common_msgs-release/archive/release/kinetic/geometry_msgs/1.12.6-0.tar.gz
|
||||||
|
version: common_msgs-release-release-kinetic-geometry_msgs-1.12.6-0
|
||||||
|
- tar:
|
||||||
|
local-name: common_msgs/nav_msgs
|
||||||
|
uri: https://github.com/ros-gbp/common_msgs-release/archive/release/kinetic/nav_msgs/1.12.6-0.tar.gz
|
||||||
|
version: common_msgs-release-release-kinetic-nav_msgs-1.12.6-0
|
||||||
|
- tar:
|
||||||
|
local-name: common_msgs/sensor_msgs
|
||||||
|
uri: https://github.com/ros-gbp/common_msgs-release/archive/release/kinetic/sensor_msgs/1.12.6-0.tar.gz
|
||||||
|
version: common_msgs-release-release-kinetic-sensor_msgs-1.12.6-0
|
||||||
|
- tar:
|
||||||
|
local-name: common_msgs/stereo_msgs
|
||||||
|
uri: https://github.com/ros-gbp/common_msgs-release/archive/release/kinetic/stereo_msgs/1.12.6-0.tar.gz
|
||||||
|
version: common_msgs-release-release-kinetic-stereo_msgs-1.12.6-0
|
||||||
|
- tar:
|
||||||
|
local-name: common_msgs/trajectory_msgs
|
||||||
|
uri: https://github.com/ros-gbp/common_msgs-release/archive/release/kinetic/trajectory_msgs/1.12.6-0.tar.gz
|
||||||
|
version: common_msgs-release-release-kinetic-trajectory_msgs-1.12.6-0
|
||||||
|
- tar:
|
||||||
|
local-name: common_msgs/visualization_msgs
|
||||||
|
uri: https://github.com/ros-gbp/common_msgs-release/archive/release/kinetic/visualization_msgs/1.12.6-0.tar.gz
|
||||||
|
version: common_msgs-release-release-kinetic-visualization_msgs-1.12.6-0
|
||||||
|
- tar:
|
||||||
|
local-name: cv_camera
|
||||||
|
uri: https://github.com/OTL/cv_camera-release/archive/release/kinetic/cv_camera/0.3.0-0.tar.gz
|
||||||
|
version: cv_camera-release-release-kinetic-cv_camera-0.3.0-0
|
||||||
|
- tar:
|
||||||
|
local-name: diagnostics/diagnostic_updater
|
||||||
|
uri: https://github.com/ros-gbp/diagnostics-release/archive/release/kinetic/diagnostic_updater/1.9.3-0.tar.gz
|
||||||
|
version: diagnostics-release-release-kinetic-diagnostic_updater-1.9.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: dynamic_reconfigure
|
||||||
|
uri: https://github.com/ros-gbp/dynamic_reconfigure-release/archive/release/kinetic/dynamic_reconfigure/1.5.49-0.tar.gz
|
||||||
|
version: dynamic_reconfigure-release-release-kinetic-dynamic_reconfigure-1.5.49-0
|
||||||
|
- tar:
|
||||||
|
local-name: gencpp
|
||||||
|
uri: https://github.com/ros-gbp/gencpp-release/archive/release/kinetic/gencpp/0.6.0-0.tar.gz
|
||||||
|
version: gencpp-release-release-kinetic-gencpp-0.6.0-0
|
||||||
|
- tar:
|
||||||
|
local-name: geneus
|
||||||
|
uri: https://github.com/tork-a/geneus-release/archive/release/kinetic/geneus/2.2.6-0.tar.gz
|
||||||
|
version: geneus-release-release-kinetic-geneus-2.2.6-0
|
||||||
|
- tar:
|
||||||
|
local-name: genlisp
|
||||||
|
uri: https://github.com/ros-gbp/genlisp-release/archive/release/kinetic/genlisp/0.4.16-0.tar.gz
|
||||||
|
version: genlisp-release-release-kinetic-genlisp-0.4.16-0
|
||||||
|
- tar:
|
||||||
|
local-name: genmsg
|
||||||
|
uri: https://github.com/ros-gbp/genmsg-release/archive/release/kinetic/genmsg/0.5.10-0.tar.gz
|
||||||
|
version: genmsg-release-release-kinetic-genmsg-0.5.10-0
|
||||||
|
- tar:
|
||||||
|
local-name: gennodejs
|
||||||
|
uri: https://github.com/RethinkRobotics-release/gennodejs-release/archive/release/kinetic/gennodejs/2.0.1-0.tar.gz
|
||||||
|
version: gennodejs-release-release-kinetic-gennodejs-2.0.1-0
|
||||||
|
- tar:
|
||||||
|
local-name: genpy
|
||||||
|
uri: https://github.com/ros-gbp/genpy-release/archive/release/kinetic/genpy/0.6.7-0.tar.gz
|
||||||
|
version: genpy-release-release-kinetic-genpy-0.6.7-0
|
||||||
|
- tar:
|
||||||
|
local-name: geographic_info/geographic_msgs
|
||||||
|
uri: https://github.com/ros-geographic-info/geographic_info-release/archive/release/kinetic/geographic_msgs/0.5.2-0.tar.gz
|
||||||
|
version: geographic_info-release-release-kinetic-geographic_msgs-0.5.2-0
|
||||||
|
- tar:
|
||||||
|
local-name: geometry/eigen_conversions
|
||||||
|
uri: https://github.com/ros-gbp/geometry-release/archive/release/kinetic/eigen_conversions/1.11.9-0.tar.gz
|
||||||
|
version: geometry-release-release-kinetic-eigen_conversions-1.11.9-0
|
||||||
|
- tar:
|
||||||
|
local-name: geometry/tf
|
||||||
|
uri: https://github.com/ros-gbp/geometry-release/archive/release/kinetic/tf/1.11.9-0.tar.gz
|
||||||
|
version: geometry-release-release-kinetic-tf-1.11.9-0
|
||||||
|
- tar:
|
||||||
|
local-name: geometry2/geometry2
|
||||||
|
uri: https://github.com/ros-gbp/geometry2-release/archive/release/kinetic/geometry2/0.5.17-0.tar.gz
|
||||||
|
version: geometry2-release-release-kinetic-geometry2-0.5.17-0
|
||||||
|
- tar:
|
||||||
|
local-name: geometry2/tf2
|
||||||
|
uri: https://github.com/ros-gbp/geometry2-release/archive/release/kinetic/tf2/0.5.17-0.tar.gz
|
||||||
|
version: geometry2-release-release-kinetic-tf2-0.5.17-0
|
||||||
|
- tar:
|
||||||
|
local-name: geometry2/tf2_bullet
|
||||||
|
uri: https://github.com/ros-gbp/geometry2-release/archive/release/kinetic/tf2_bullet/0.5.17-0.tar.gz
|
||||||
|
version: geometry2-release-release-kinetic-tf2_bullet-0.5.17-0
|
||||||
|
- tar:
|
||||||
|
local-name: geometry2/tf2_eigen
|
||||||
|
uri: https://github.com/ros-gbp/geometry2-release/archive/release/kinetic/tf2_eigen/0.5.17-0.tar.gz
|
||||||
|
version: geometry2-release-release-kinetic-tf2_eigen-0.5.17-0
|
||||||
|
- tar:
|
||||||
|
local-name: geometry2/tf2_geometry_msgs
|
||||||
|
uri: https://github.com/ros-gbp/geometry2-release/archive/release/kinetic/tf2_geometry_msgs/0.5.17-0.tar.gz
|
||||||
|
version: geometry2-release-release-kinetic-tf2_geometry_msgs-0.5.17-0
|
||||||
|
- tar:
|
||||||
|
local-name: geometry2/tf2_kdl
|
||||||
|
uri: https://github.com/ros-gbp/geometry2-release/archive/release/kinetic/tf2_kdl/0.5.17-0.tar.gz
|
||||||
|
version: geometry2-release-release-kinetic-tf2_kdl-0.5.17-0
|
||||||
|
- tar:
|
||||||
|
local-name: geometry2/tf2_msgs
|
||||||
|
uri: https://github.com/ros-gbp/geometry2-release/archive/release/kinetic/tf2_msgs/0.5.17-0.tar.gz
|
||||||
|
version: geometry2-release-release-kinetic-tf2_msgs-0.5.17-0
|
||||||
|
- tar:
|
||||||
|
local-name: geometry2/tf2_py
|
||||||
|
uri: https://github.com/ros-gbp/geometry2-release/archive/release/kinetic/tf2_py/0.5.17-0.tar.gz
|
||||||
|
version: geometry2-release-release-kinetic-tf2_py-0.5.17-0
|
||||||
|
- tar:
|
||||||
|
local-name: geometry2/tf2_ros
|
||||||
|
uri: https://github.com/ros-gbp/geometry2-release/archive/release/kinetic/tf2_ros/0.5.17-0.tar.gz
|
||||||
|
version: geometry2-release-release-kinetic-tf2_ros-0.5.17-0
|
||||||
|
- tar:
|
||||||
|
local-name: geometry2/tf2_sensor_msgs
|
||||||
|
uri: https://github.com/ros-gbp/geometry2-release/archive/release/kinetic/tf2_sensor_msgs/0.5.17-0.tar.gz
|
||||||
|
version: geometry2-release-release-kinetic-tf2_sensor_msgs-0.5.17-0
|
||||||
|
- tar:
|
||||||
|
local-name: geometry2/tf2_tools
|
||||||
|
uri: https://github.com/ros-gbp/geometry2-release/archive/release/kinetic/tf2_tools/0.5.17-0.tar.gz
|
||||||
|
version: geometry2-release-release-kinetic-tf2_tools-0.5.17-0
|
||||||
|
- tar:
|
||||||
|
local-name: image_common/camera_calibration_parsers
|
||||||
|
uri: https://github.com/ros-gbp/image_common-release/archive/release/kinetic/camera_calibration_parsers/1.11.13-0.tar.gz
|
||||||
|
version: image_common-release-release-kinetic-camera_calibration_parsers-1.11.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: image_common/camera_info_manager
|
||||||
|
uri: https://github.com/ros-gbp/image_common-release/archive/release/kinetic/camera_info_manager/1.11.13-0.tar.gz
|
||||||
|
version: image_common-release-release-kinetic-camera_info_manager-1.11.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: image_common/image_transport
|
||||||
|
uri: https://github.com/ros-gbp/image_common-release/archive/release/kinetic/image_transport/1.11.13-0.tar.gz
|
||||||
|
version: image_common-release-release-kinetic-image_transport-1.11.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: mavlink
|
||||||
|
uri: https://github.com/mavlink/mavlink-gbp-release/archive/release/kinetic/mavlink/2018.6.6-0.tar.gz
|
||||||
|
version: mavlink-gbp-release-release-kinetic-mavlink-2018.6.6-0
|
||||||
|
- tar:
|
||||||
|
local-name: mavros/libmavconn
|
||||||
|
uri: https://github.com/mavlink/mavros-release/archive/release/kinetic/libmavconn/0.26.0-0.tar.gz
|
||||||
|
version: mavros-release-release-kinetic-libmavconn-0.26.0-0
|
||||||
|
- tar:
|
||||||
|
local-name: mavros/mavros
|
||||||
|
uri: https://github.com/mavlink/mavros-release/archive/release/kinetic/mavros/0.26.0-0.tar.gz
|
||||||
|
version: mavros-release-release-kinetic-mavros-0.26.0-0
|
||||||
|
- tar:
|
||||||
|
local-name: mavros/mavros_extras
|
||||||
|
uri: https://github.com/mavlink/mavros-release/archive/release/kinetic/mavros_extras/0.26.0-0.tar.gz
|
||||||
|
version: mavros-release-release-kinetic-mavros_extras-0.26.0-0
|
||||||
|
- tar:
|
||||||
|
local-name: mavros/mavros_msgs
|
||||||
|
uri: https://github.com/mavlink/mavros-release/archive/release/kinetic/mavros_msgs/0.26.0-0.tar.gz
|
||||||
|
version: mavros-release-release-kinetic-mavros_msgs-0.26.0-0
|
||||||
|
- tar:
|
||||||
|
local-name: message_generation
|
||||||
|
uri: https://github.com/ros-gbp/message_generation-release/archive/release/kinetic/message_generation/0.4.0-0.tar.gz
|
||||||
|
version: message_generation-release-release-kinetic-message_generation-0.4.0-0
|
||||||
|
- tar:
|
||||||
|
local-name: message_runtime
|
||||||
|
uri: https://github.com/ros-gbp/message_runtime-release/archive/release/kinetic/message_runtime/0.4.12-0.tar.gz
|
||||||
|
version: message_runtime-release-release-kinetic-message_runtime-0.4.12-0
|
||||||
|
- tar:
|
||||||
|
local-name: nodelet_core/nodelet
|
||||||
|
uri: https://github.com/ros-gbp/nodelet_core-release/archive/release/kinetic/nodelet/1.9.14-0.tar.gz
|
||||||
|
version: nodelet_core-release-release-kinetic-nodelet-1.9.14-0
|
||||||
|
- tar:
|
||||||
|
local-name: orocos_kinematics_dynamics/orocos_kdl
|
||||||
|
uri: https://github.com/smits/orocos-kdl-release/archive/release/kinetic/orocos_kdl/1.3.1-0.tar.gz
|
||||||
|
version: orocos-kdl-release-release-kinetic-orocos_kdl-1.3.1-0
|
||||||
|
- tar:
|
||||||
|
local-name: orocos_kinematics_dynamics/python_orocos_kdl
|
||||||
|
uri: https://github.com/smits/orocos-kdl-release/archive/release/kinetic/python_orocos_kdl/1.3.1-0.tar.gz
|
||||||
|
version: orocos-kdl-release-release-kinetic-python_orocos_kdl-1.3.1-0
|
||||||
|
- tar:
|
||||||
|
local-name: pluginlib
|
||||||
|
uri: https://github.com/ros-gbp/pluginlib-release/archive/release/kinetic/pluginlib/1.11.3-0.tar.gz
|
||||||
|
version: pluginlib-release-release-kinetic-pluginlib-1.11.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/mk
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/mk/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-mk-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/ros
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/ros/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-ros-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/rosbash
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/rosbash/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-rosbash-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/rosboost_cfg
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/rosboost_cfg/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-rosboost_cfg-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/rosbuild
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/rosbuild/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-rosbuild-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/rosclean
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/rosclean/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-rosclean-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/roscreate
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/roscreate/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-roscreate-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/roslang
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/roslang/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-roslang-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/roslib
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/roslib/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-roslib-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/rosmake
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/rosmake/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-rosmake-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros/rosunit
|
||||||
|
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/rosunit/1.14.3-0.tar.gz
|
||||||
|
version: ros-release-release-kinetic-rosunit-1.14.3-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/message_filters
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/message_filters/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-message_filters-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/ros_comm
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/ros_comm/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-ros_comm-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rosbag
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosbag/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rosbag-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rosbag_storage
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosbag_storage/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rosbag_storage-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rosconsole
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosconsole/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rosconsole-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/roscpp
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/roscpp/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-roscpp-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rosgraph
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosgraph/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rosgraph-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/roslaunch
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/roslaunch/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-roslaunch-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/roslz4
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/roslz4/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-roslz4-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rosmaster
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosmaster/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rosmaster-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rosmsg
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosmsg/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rosmsg-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rosnode
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosnode/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rosnode-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rosout
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosout/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rosout-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rosparam
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosparam/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rosparam-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rospy
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rospy/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rospy-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rosservice
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosservice/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rosservice-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rostest
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rostest/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rostest-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/rostopic
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rostopic/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-rostopic-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/roswtf
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/roswtf/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-roswtf-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/topic_tools
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/topic_tools/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-topic_tools-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm/xmlrpcpp
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/xmlrpcpp/1.12.13-0.tar.gz
|
||||||
|
version: ros_comm-release-release-kinetic-xmlrpcpp-1.12.13-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm_msgs/rosgraph_msgs
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm_msgs-release/archive/release/kinetic/rosgraph_msgs/1.11.2-0.tar.gz
|
||||||
|
version: ros_comm_msgs-release-release-kinetic-rosgraph_msgs-1.11.2-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_comm_msgs/std_srvs
|
||||||
|
uri: https://github.com/ros-gbp/ros_comm_msgs-release/archive/release/kinetic/std_srvs/1.11.2-0.tar.gz
|
||||||
|
version: ros_comm_msgs-release-release-kinetic-std_srvs-1.11.2-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_environment
|
||||||
|
uri: https://github.com/ros-gbp/ros_environment-release/archive/release/kinetic/ros_environment/1.0.0-0.tar.gz
|
||||||
|
version: ros_environment-release-release-kinetic-ros_environment-1.0.0-0
|
||||||
|
- tar:
|
||||||
|
local-name: ros_tutorials/rospy_tutorials
|
||||||
|
uri: https://github.com/ros-gbp/ros_tutorials-release/archive/release/kinetic/rospy_tutorials/0.7.1-0.tar.gz
|
||||||
|
version: ros_tutorials-release-release-kinetic-rospy_tutorials-0.7.1-0
|
||||||
|
- tar:
|
||||||
|
local-name: rosauth
|
||||||
|
uri: https://github.com/gt-rail-release/rosauth-release/archive/release/kinetic/rosauth/0.1.7-0.tar.gz
|
||||||
|
version: rosauth-release-release-kinetic-rosauth-0.1.7-0
|
||||||
|
- tar:
|
||||||
|
local-name: rosbag_migration_rule
|
||||||
|
uri: https://github.com/ros-gbp/rosbag_migration_rule-release/archive/release/kinetic/rosbag_migration_rule/1.0.0-0.tar.gz
|
||||||
|
version: rosbag_migration_rule-release-release-kinetic-rosbag_migration_rule-1.0.0-0
|
||||||
|
- tar:
|
||||||
|
local-name: rosbridge_suite/rosapi
|
||||||
|
uri: https://github.com/RobotWebTools-release/rosbridge_suite-release/archive/release/kinetic/rosapi/0.9.0-0.tar.gz
|
||||||
|
version: rosbridge_suite-release-release-kinetic-rosapi-0.9.0-0
|
||||||
|
- tar:
|
||||||
|
local-name: rosbridge_suite/rosbridge_library
|
||||||
|
uri: https://github.com/RobotWebTools-release/rosbridge_suite-release/archive/release/kinetic/rosbridge_library/0.9.0-0.tar.gz
|
||||||
|
version: rosbridge_suite-release-release-kinetic-rosbridge_library-0.9.0-0
|
||||||
|
- tar:
|
||||||
|
local-name: rosbridge_suite/rosbridge_server
|
||||||
|
uri: https://github.com/RobotWebTools-release/rosbridge_suite-release/archive/release/kinetic/rosbridge_server/0.9.0-0.tar.gz
|
||||||
|
version: rosbridge_suite-release-release-kinetic-rosbridge_server-0.9.0-0
|
||||||
|
- tar:
|
||||||
|
local-name: rosbridge_suite/rosbridge_suite
|
||||||
|
uri: https://github.com/RobotWebTools-release/rosbridge_suite-release/archive/release/kinetic/rosbridge_suite/0.9.0-0.tar.gz
|
||||||
|
version: rosbridge_suite-release-release-kinetic-rosbridge_suite-0.9.0-0
|
||||||
|
- tar:
|
||||||
|
local-name: rosconsole_bridge
|
||||||
|
uri: https://github.com/ros-gbp/rosconsole_bridge-release/archive/release/kinetic/rosconsole_bridge/0.5.1-0.tar.gz
|
||||||
|
version: rosconsole_bridge-release-release-kinetic-rosconsole_bridge-0.5.1-0
|
||||||
|
- tar:
|
||||||
|
local-name: roscpp_core/cpp_common
|
||||||
|
uri: https://github.com/ros-gbp/roscpp_core-release/archive/release/kinetic/cpp_common/0.6.9-0.tar.gz
|
||||||
|
version: roscpp_core-release-release-kinetic-cpp_common-0.6.9-0
|
||||||
|
- tar:
|
||||||
|
local-name: roscpp_core/roscpp_serialization
|
||||||
|
uri: https://github.com/ros-gbp/roscpp_core-release/archive/release/kinetic/roscpp_serialization/0.6.9-0.tar.gz
|
||||||
|
version: roscpp_core-release-release-kinetic-roscpp_serialization-0.6.9-0
|
||||||
|
- tar:
|
||||||
|
local-name: roscpp_core/roscpp_traits
|
||||||
|
uri: https://github.com/ros-gbp/roscpp_core-release/archive/release/kinetic/roscpp_traits/0.6.9-0.tar.gz
|
||||||
|
version: roscpp_core-release-release-kinetic-roscpp_traits-0.6.9-0
|
||||||
|
- tar:
|
||||||
|
local-name: roscpp_core/rostime
|
||||||
|
uri: https://github.com/ros-gbp/roscpp_core-release/archive/release/kinetic/rostime/0.6.9-0.tar.gz
|
||||||
|
version: roscpp_core-release-release-kinetic-rostime-0.6.9-0
|
||||||
|
- tar:
|
||||||
|
local-name: roslint
|
||||||
|
uri: https://github.com/ros-gbp/roslint-release/archive/release/kinetic/roslint/0.11.0-0.tar.gz
|
||||||
|
version: roslint-release-release-kinetic-roslint-0.11.0-0
|
||||||
|
- tar:
|
||||||
|
local-name: roslisp
|
||||||
|
uri: https://github.com/ros-gbp/roslisp-release/archive/release/kinetic/roslisp/1.9.21-0.tar.gz
|
||||||
|
version: roslisp-release-release-kinetic-roslisp-1.9.21-0
|
||||||
|
- tar:
|
||||||
|
local-name: rospack
|
||||||
|
uri: https://github.com/ros-gbp/rospack-release/archive/release/kinetic/rospack/2.4.4-0.tar.gz
|
||||||
|
version: rospack-release-release-kinetic-rospack-2.4.4-0
|
||||||
|
- tar:
|
||||||
|
local-name: rosserial/rosserial
|
||||||
|
uri: https://github.com/ros-gbp/rosserial-release/archive/release/kinetic/rosserial/0.7.7-0.tar.gz
|
||||||
|
version: rosserial-release-release-kinetic-rosserial-0.7.7-0
|
||||||
|
- tar:
|
||||||
|
local-name: rosserial/rosserial_client
|
||||||
|
uri: https://github.com/ros-gbp/rosserial-release/archive/release/kinetic/rosserial_client/0.7.7-0.tar.gz
|
||||||
|
version: rosserial-release-release-kinetic-rosserial_client-0.7.7-0
|
||||||
|
- tar:
|
||||||
|
local-name: rosserial/rosserial_msgs
|
||||||
|
uri: https://github.com/ros-gbp/rosserial-release/archive/release/kinetic/rosserial_msgs/0.7.7-0.tar.gz
|
||||||
|
version: rosserial-release-release-kinetic-rosserial_msgs-0.7.7-0
|
||||||
|
- tar:
|
||||||
|
local-name: rosserial/rosserial_python
|
||||||
|
uri: https://github.com/ros-gbp/rosserial-release/archive/release/kinetic/rosserial_python/0.7.7-0.tar.gz
|
||||||
|
version: rosserial-release-release-kinetic-rosserial_python-0.7.7-0
|
||||||
|
- tar:
|
||||||
|
local-name: std_msgs
|
||||||
|
uri: https://github.com/ros-gbp/std_msgs-release/archive/release/kinetic/std_msgs/0.5.11-0.tar.gz
|
||||||
|
version: std_msgs-release-release-kinetic-std_msgs-0.5.11-0
|
||||||
|
- tar:
|
||||||
|
local-name: unique_identifier/uuid_msgs
|
||||||
|
uri: https://github.com/ros-geographic-info/unique_identifier-release/archive/release/kinetic/uuid_msgs/1.0.5-0.tar.gz
|
||||||
|
version: unique_identifier-release-release-kinetic-uuid_msgs-1.0.5-0
|
||||||
|
- tar:
|
||||||
|
local-name: urdf/urdf
|
||||||
|
uri: https://github.com/ros-gbp/urdf-release/archive/release/kinetic/urdf/1.12.12-0.tar.gz
|
||||||
|
version: urdf-release-release-kinetic-urdf-1.12.12-0
|
||||||
|
- tar:
|
||||||
|
local-name: urdf/urdf_parser_plugin
|
||||||
|
uri: https://github.com/ros-gbp/urdf-release/archive/release/kinetic/urdf_parser_plugin/1.12.12-0.tar.gz
|
||||||
|
version: urdf-release-release-kinetic-urdf_parser_plugin-1.12.12-0
|
||||||
|
- tar:
|
||||||
|
local-name: usb_cam
|
||||||
|
uri: https://github.com/ros-gbp/usb_cam-release/archive/release/kinetic/usb_cam/0.3.5-0.tar.gz
|
||||||
|
version: usb_cam-release-release-kinetic-usb_cam-0.3.5-0
|
||||||
|
- tar:
|
||||||
|
local-name: vision_opencv/cv_bridge
|
||||||
|
uri: https://github.com/ros-gbp/vision_opencv-release/archive/release/kinetic/cv_bridge/1.12.8-0.tar.gz
|
||||||
|
version: vision_opencv-release-release-kinetic-cv_bridge-1.12.8-0
|
||||||
|
- tar:
|
||||||
|
local-name: web_video_server
|
||||||
|
uri: https://github.com/RobotWebTools-release/web_video_server-release/archive/release/kinetic/web_video_server/0.1.0-0.tar.gz
|
||||||
|
version: web_video_server-release-release-kinetic-web_video_server-0.1.0-0
|
||||||
528
builder/assets/kinetic-rosdep-clever.yaml
Normal file
@@ -0,0 +1,528 @@
|
|||||||
|
actionlib:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-actionlib]
|
||||||
|
actionlib_msgs:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-actionlib-msgs]
|
||||||
|
angles:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-angles]
|
||||||
|
async_web_server_cpp:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-async-web-server-cpp]
|
||||||
|
bond:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-bond]
|
||||||
|
bondcpp:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-bondcpp]
|
||||||
|
bondpy:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-bondpy]
|
||||||
|
camera_calibration_parsers:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-camera-calibration-parsers]
|
||||||
|
camera_info_manager:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-camera-info-manager]
|
||||||
|
catkin:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-catkin]
|
||||||
|
class_loader:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-class-loader]
|
||||||
|
cmake_modules:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-cmake-modules]
|
||||||
|
cpp_common:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-cpp-common]
|
||||||
|
cv_bridge:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-cv-bridge]
|
||||||
|
cv_camera:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-cv-camera=0.3.1-0stretch]
|
||||||
|
diagnostic_msgs:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-diagnostic-msgs]
|
||||||
|
diagnostic_updater:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-diagnostic-updater]
|
||||||
|
eigen_conversions:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-eigen-conversions]
|
||||||
|
gencpp:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-gencpp]
|
||||||
|
geneus:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-geneus]
|
||||||
|
genlisp:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-genlisp]
|
||||||
|
genmsg:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-genmsg]
|
||||||
|
gennodejs:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-gennodejs]
|
||||||
|
genpy:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-genpy]
|
||||||
|
geographic_msgs:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-geographic-msgs]
|
||||||
|
geometry_msgs:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-geometry-msgs]
|
||||||
|
image_transport:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-image-transport]
|
||||||
|
libmavconn:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-libmavconn]
|
||||||
|
lxml:
|
||||||
|
debian:
|
||||||
|
stretch: [python-lxml=3.7.1-1]
|
||||||
|
mavlink:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-mavlink]
|
||||||
|
mavros:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-mavros]
|
||||||
|
mavros_msgs:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-mavros-msgs]
|
||||||
|
mavros_extras:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-mavros-extras]
|
||||||
|
message_filters:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-message-filters]
|
||||||
|
message_generation:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-message-generation]
|
||||||
|
message_runtime:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-message-runtime]
|
||||||
|
mjpg-streamer:
|
||||||
|
debian:
|
||||||
|
stretch: [mjpg-streamer=2.0]
|
||||||
|
mk:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-mk]
|
||||||
|
nav_msgs:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-nav-msgs]
|
||||||
|
nodelet:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-nodelet]
|
||||||
|
opencv3:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-opencv3]
|
||||||
|
orocos_kdl:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-orocos-kdl]
|
||||||
|
pluginlib:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-pluginlib]
|
||||||
|
python_orocos_kdl:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-python-orocos-kdl]
|
||||||
|
ros:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-ros]
|
||||||
|
ros_comm:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-ros-comm]
|
||||||
|
ros_environment:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-ros-environment]
|
||||||
|
rosapi:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosapi]
|
||||||
|
rosauth:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosauth]
|
||||||
|
rosbag:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosbag]
|
||||||
|
rosbag_migration_rule:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosbag-migration-rule]
|
||||||
|
rosbag_storage:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosbag-storage]
|
||||||
|
rosbash:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosbash]
|
||||||
|
rosboost_cfg:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosboost-cfg]
|
||||||
|
rosbridge_library:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosbridge-library]
|
||||||
|
rosbridge_server:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosbridge-server]
|
||||||
|
rosbuild:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosbuild]
|
||||||
|
rosclean:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosclean]
|
||||||
|
rosconsole:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosconsole]
|
||||||
|
rosconsole_bridge:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosconsole-bridge]
|
||||||
|
roscpp:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-roscpp]
|
||||||
|
roscpp_serialization:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-roscpp-serialization]
|
||||||
|
roscpp_traits:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-roscpp-traits]
|
||||||
|
roscreate:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-roscreate]
|
||||||
|
rosgraph:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosgraph]
|
||||||
|
rosgraph_msgs:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosgraph-msgs]
|
||||||
|
roslang:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-roslang]
|
||||||
|
roslaunch:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-roslaunch]
|
||||||
|
roslib:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-roslib]
|
||||||
|
roslint:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-roslint]
|
||||||
|
roslisp:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-roslisp]
|
||||||
|
roslz4:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-roslz4]
|
||||||
|
rosmake:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosmake]
|
||||||
|
rosmaster:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosmaster]
|
||||||
|
rosmsg:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosmsg]
|
||||||
|
rosnode:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosnode]
|
||||||
|
rosout:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosout]
|
||||||
|
rospack:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rospack]
|
||||||
|
rosparam:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosparam]
|
||||||
|
rospy:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rospy]
|
||||||
|
rospy_tutorials:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rospy-tutorials]
|
||||||
|
rosserial_client:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosserial-client]
|
||||||
|
rosserial_msgs:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosserial-msgs]
|
||||||
|
rosserial_python:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosserial-python]
|
||||||
|
rosservice:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosservice]
|
||||||
|
rostest:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rostest]
|
||||||
|
rostime:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rostime]
|
||||||
|
rostopic:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rostopic]
|
||||||
|
rosunit:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-rosunit]
|
||||||
|
roswtf:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-roswtf]
|
||||||
|
sensor_msgs:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-sensor-msgs]
|
||||||
|
smclib:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-smclib]
|
||||||
|
std_msgs:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-std-msgs]
|
||||||
|
std_srvs:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-std-srvs]
|
||||||
|
stereo_msgs:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-stereo-msgs]
|
||||||
|
tf2:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-tf2]
|
||||||
|
tf2_bullet:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-tf2-bullet]
|
||||||
|
tf2_eigen:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-tf2-eigen]
|
||||||
|
tf2_geometry_msgs:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-tf2-geometry-msgs]
|
||||||
|
tf2_kdl:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-tf2-kdl]
|
||||||
|
tf2_msgs:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-tf2-msgs]
|
||||||
|
tf2_py:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-tf2-py]
|
||||||
|
tf2_ros:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-tf2-ros]
|
||||||
|
tf2_sensor_msgs:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-tf2-sensor-msgs]
|
||||||
|
tf2_tools:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-tf2-tools]
|
||||||
|
tf:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-tf]
|
||||||
|
topic_tools:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-topic-tools]
|
||||||
|
trajectory_msgs:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-trajectory-msgs]
|
||||||
|
urdf:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-urdf]
|
||||||
|
urdf_parser_plugin:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-urdf-parser-plugin]
|
||||||
|
uuid_msgs:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-uuid-msgs]
|
||||||
|
visualization_msgs:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-visualization-msgs]
|
||||||
|
xmlrpcpp:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-xmlrpcpp]
|
||||||
|
boost:
|
||||||
|
debian:
|
||||||
|
stretch: [libboost-all-dev]
|
||||||
|
bullet:
|
||||||
|
debian:
|
||||||
|
stretch: [libbullet-dev]
|
||||||
|
bzip2:
|
||||||
|
debian:
|
||||||
|
stretch: [libbz2-dev]
|
||||||
|
cmake:
|
||||||
|
debian:
|
||||||
|
stretch: [cmake]
|
||||||
|
cppunit:
|
||||||
|
debian:
|
||||||
|
stretch: [libcppunit-dev]
|
||||||
|
eigen:
|
||||||
|
debian:
|
||||||
|
stretch: [libeigen3-dev]
|
||||||
|
geographiclib-tools:
|
||||||
|
debian:
|
||||||
|
stretch: [geographiclib-tools]
|
||||||
|
geographiclib:
|
||||||
|
debian:
|
||||||
|
stretch: [libgeographic-dev]
|
||||||
|
google-mock:
|
||||||
|
debian:
|
||||||
|
stretch: [google-mock]
|
||||||
|
graphviz:
|
||||||
|
debian:
|
||||||
|
stretch: [graphviz]
|
||||||
|
gtest:
|
||||||
|
debian:
|
||||||
|
stretch: [libgtest-dev]
|
||||||
|
libconsole-bridge-dev:
|
||||||
|
debian:
|
||||||
|
stretch: [libconsole-bridge-dev]
|
||||||
|
libjpeg:
|
||||||
|
debian:
|
||||||
|
stretch: [libjpeg-dev]
|
||||||
|
libpng-dev:
|
||||||
|
debian:
|
||||||
|
stretch: [libpng-dev]
|
||||||
|
libpoco-dev:
|
||||||
|
debian:
|
||||||
|
stretch: [libpoco-dev]
|
||||||
|
libssl-dev:
|
||||||
|
debian:
|
||||||
|
stretch: [libssl-dev]
|
||||||
|
libtiff-dev:
|
||||||
|
debian:
|
||||||
|
stretch: [libtiff5-dev]
|
||||||
|
liburdfdom-dev:
|
||||||
|
debian:
|
||||||
|
stretch: [liburdfdom-dev]
|
||||||
|
liburdfdom-headers-dev:
|
||||||
|
debian:
|
||||||
|
stretch: [liburdfdom-headers-dev]
|
||||||
|
libv4l-dev:
|
||||||
|
debian:
|
||||||
|
stretch: [libv4l-dev]
|
||||||
|
libvtk-qt:
|
||||||
|
debian:
|
||||||
|
stretch: [libvtk6-qt-dev]
|
||||||
|
libwebp-dev:
|
||||||
|
debian:
|
||||||
|
stretch: [libwebp-dev]
|
||||||
|
log4cxx:
|
||||||
|
debian:
|
||||||
|
stretch: [liblog4cxx-dev]
|
||||||
|
lz4:
|
||||||
|
debian:
|
||||||
|
stretch: [liblz4-dev]
|
||||||
|
pkg-config:
|
||||||
|
debian:
|
||||||
|
stretch: [pkg-config]
|
||||||
|
protobuf:
|
||||||
|
debian:
|
||||||
|
stretch: [libprotobuf10]
|
||||||
|
python-bson:
|
||||||
|
debian:
|
||||||
|
stretch: [python-bson]
|
||||||
|
python-catkin-pkg:
|
||||||
|
debian:
|
||||||
|
stretch: [python-catkin-pkg]
|
||||||
|
python-coverage:
|
||||||
|
debian:
|
||||||
|
stretch: [python-coverage]
|
||||||
|
python-defusedxml:
|
||||||
|
debian:
|
||||||
|
stretch: [python-defusedxml]
|
||||||
|
python-empy:
|
||||||
|
debian:
|
||||||
|
stretch: [python-empy]
|
||||||
|
python-future:
|
||||||
|
debian:
|
||||||
|
stretch: [python-future]
|
||||||
|
python-imaging:
|
||||||
|
debian:
|
||||||
|
stretch: [python-imaging]
|
||||||
|
python-lxml:
|
||||||
|
debian:
|
||||||
|
stretch: [python-lxml]
|
||||||
|
python-mock:
|
||||||
|
debian:
|
||||||
|
stretch: [python-mock]
|
||||||
|
python-netifaces:
|
||||||
|
debian:
|
||||||
|
stretch: [python-netifaces]
|
||||||
|
python-nose:
|
||||||
|
debian:
|
||||||
|
stretch: [python-nose]
|
||||||
|
python-numpy:
|
||||||
|
debian:
|
||||||
|
stretch: [python-numpy]
|
||||||
|
python-paramiko:
|
||||||
|
debian:
|
||||||
|
stretch: [python-paramiko]
|
||||||
|
python-rosdep:
|
||||||
|
debian:
|
||||||
|
stretch: [python-rosdep]
|
||||||
|
python-rospkg:
|
||||||
|
debian:
|
||||||
|
stretch: [python-rospkg]
|
||||||
|
python-serial:
|
||||||
|
debian:
|
||||||
|
stretch: [python-serial]
|
||||||
|
python-setuptools:
|
||||||
|
debian:
|
||||||
|
stretch: [python-setuptools]
|
||||||
|
python-sip:
|
||||||
|
debian:
|
||||||
|
stretch: [python-sip-dev]
|
||||||
|
python-tornado:
|
||||||
|
debian:
|
||||||
|
stretch: [python-tornado]
|
||||||
|
python-twisted-core:
|
||||||
|
debian:
|
||||||
|
stretch: [python-twisted-core]
|
||||||
|
python-websocket:
|
||||||
|
debian:
|
||||||
|
stretch: [python-websocket]
|
||||||
|
python-wxtools:
|
||||||
|
debian:
|
||||||
|
stretch: [python-wxtools]
|
||||||
|
python-yaml:
|
||||||
|
debian:
|
||||||
|
stretch: [python-yaml]
|
||||||
|
python:
|
||||||
|
debian:
|
||||||
|
stretch: [python-dev]
|
||||||
|
sbcl:
|
||||||
|
debian:
|
||||||
|
stretch: [sbcl]
|
||||||
|
tinyxml2:
|
||||||
|
debian:
|
||||||
|
stretch: [libtinyxml2-dev]
|
||||||
|
tinyxml:
|
||||||
|
debian:
|
||||||
|
stretch: [libtinyxml-dev]
|
||||||
|
uuid:
|
||||||
|
debian:
|
||||||
|
stretch: [uuid-dev]
|
||||||
|
web_video_server:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-web-video-server]
|
||||||
|
v4l-utils:
|
||||||
|
debian:
|
||||||
|
stretch: [v4l-utils]
|
||||||
|
yaml-cpp:
|
||||||
|
debian:
|
||||||
|
stretch: [libyaml-cpp-dev]
|
||||||
|
zlib:
|
||||||
|
debian:
|
||||||
|
stretch: [zlib1g-dev]
|
||||||
|
compressed_depth_image_transport:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-compressed-depth-image-transport]
|
||||||
|
compressed_image_transport:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-compressed-image-transport]
|
||||||
|
dynamic_reconfigure:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-dynamic-reconfigure]
|
||||||
|
theora_image_transport:
|
||||||
|
debian:
|
||||||
|
stretch: [ros-kinetic-theora-image-transport]
|
||||||
|
libogg:
|
||||||
|
debian:
|
||||||
|
stretch: [libtheora0=1.1.1+dfsg.1-14]
|
||||||