Compare commits
970 Commits
Author | SHA1 | Date | |
---|---|---|---|
74691914fb | |||
9bf184129e | |||
1667569560 | |||
01119436a9 | |||
344a52ae97 | |||
1accafa145 | |||
e54f5e21c3 | |||
01700b0d49 | |||
a96a2ff44c | |||
cc7930caf3 | |||
ac21c9336b | |||
fd509c7d79 | |||
287250b32d | |||
758b49f51d | |||
2a1af1399a | |||
4de9734f0a | |||
9bfda4219d | |||
dddba3e8a4 | |||
500e14663b | |||
fcb36276b7 | |||
7f7fdb8441 | |||
f8a105adbf | |||
ba43986f82 | |||
6e2355ce9a | |||
4a90e2c4be | |||
1adea8ecf1 | |||
011013e800 | |||
b4d4a215a2 | |||
2eb6ebd3bd | |||
dc97adf578 | |||
181b5f17ea | |||
90bf469245 | |||
85b5c8a64e | |||
422592f993 | |||
fa1c1f3aa4 | |||
b11ad2d170 | |||
d62d9f22cd | |||
dec976e971 | |||
fcf2278553 | |||
b3300d5724 | |||
003ca2169f | |||
0586775ffc | |||
053cf15495 | |||
3d8b732158 | |||
db3b0c39bf | |||
d2c4747251 | |||
8b5cdae4ca | |||
2384fbb218 | |||
212c67fdd0 | |||
ca15860cc3 | |||
cce8ab43e6 | |||
255d6cbe86 | |||
db721845db | |||
53bc249b75 | |||
639f99691b | |||
6e095826d3 | |||
0d2541270e | |||
e34863f223 | |||
27f34face1 | |||
563c72be2c | |||
9bd5e78472 | |||
81c5962220 | |||
bf856c5fca | |||
1040b4e51f | |||
1713d44a4b | |||
5ff625eaf4 | |||
9d63545d44 | |||
06b9e7b6f2 | |||
45773fac80 | |||
ee4efb3d6a | |||
abced2fdbb | |||
537f7e111d | |||
8b49943025 | |||
a6f517d2c1 | |||
d26bde1825 | |||
ef30ab6fb2 | |||
9206480b9c | |||
d81639d715 | |||
08451d98cd | |||
ad81ea55e1 | |||
bd8e22f125 | |||
04dc6df429 | |||
453a6eae0e | |||
d325ae1fda | |||
98ea1c615a | |||
511d796fc2 | |||
58888fc49b | |||
19bf570561 | |||
922c8f628c | |||
3b6812ff36 | |||
e3dde0e390 | |||
68f54d1c59 | |||
5f4e8b18e5 | |||
5d356917cc | |||
1ceb784252 | |||
e9679e0982 | |||
c6386269ef | |||
f03f967a38 | |||
5fda514544 | |||
9fe9d4aec2 | |||
cd7815aa07 | |||
1563c71c5f | |||
3b7eb9afc2 | |||
d7bc084565 | |||
3d702a6e64 | |||
cd30c7d71f | |||
ed71aa029d | |||
7ffe895374 | |||
a427d6ebe5 | |||
83e62aabba | |||
d94a6d00fb | |||
14a3924fb2 | |||
7935ef1622 | |||
a0af1c01bd | |||
7ce8dc3434 | |||
33c123420a | |||
21eb2de086 | |||
5e72c4febd | |||
428bac360b | |||
a0518976c6 | |||
bdacb6c640 | |||
ce6a095079 | |||
701a25261f | |||
6719168a20 | |||
2002904faa | |||
7d0dccf9ed | |||
bfe548ac45 | |||
3c36aa1624 | |||
64777bd0ef | |||
1fefdcbdf1 | |||
8765416016 | |||
26317cbd2a | |||
f358b2e16d | |||
619da95553 | |||
3585761ecf | |||
ca04996524 | |||
6b19482ceb | |||
d3bfebeca0 | |||
60a3f6cd7e | |||
5e9d9f4e66 | |||
a56485f288 | |||
d0b5a98952 | |||
36cbca05bb | |||
f6ab1fb451 | |||
9c4a4d0ff0 | |||
5cc8c90251 | |||
a24f8209bc | |||
e8823dd74e | |||
b8ee0cf22d | |||
14fc909400 | |||
0db47c7528 | |||
aeb120c284 | |||
ab20e34c59 | |||
d0d89b579d | |||
6db7dfd3d9 | |||
36237ae596 | |||
9e20268bb8 | |||
77abd94682 | |||
7323b58b61 | |||
cb6427b22e | |||
fe133d7454 | |||
52274d8b10 | |||
0af62a6992 | |||
6a6eaa1b71 | |||
3fc672a19f | |||
69bd77dd30 | |||
9421cdaf30 | |||
fb779ecd6a | |||
3cd61b56f8 | |||
56ddb441d4 | |||
8d38bd0bcc | |||
1f1c303937 | |||
f567f282ae | |||
5ab01e5a65 | |||
b56095a3ff | |||
b20a5f1d68 | |||
c3297bcc55 | |||
4513a8ad09 | |||
ae60a92963 | |||
eba82a1c73 | |||
b7dda9021f | |||
d7b8fac41b | |||
1079baf2fd | |||
b925f13bac | |||
78d940aaf5 | |||
3d837284fd | |||
b8af35a797 | |||
1eb9e7b9dc | |||
1617b03d3d | |||
da49741527 | |||
f86e812f13 | |||
f84973b0e4 | |||
b0ac4b5da2 | |||
0566b4f995 | |||
a1db1b423b | |||
f29141087e | |||
fbbc0de6fb | |||
427dd6e851 | |||
4f5b4d5886 | |||
8345687ab9 | |||
bea94a70b2 | |||
a4db81c15f | |||
c7aa1b1f8a | |||
8e54381216 | |||
9081c35f53 | |||
88c11fb1cf | |||
9e3c72a547 | |||
2f2b502813 | |||
6b4a3e1fd0 | |||
c50dd16d82 | |||
7866e54e8d | |||
b00e81dfce | |||
cc6ba3be6d | |||
a564258fb0 | |||
03cb2ec362 | |||
f4e5a5109f | |||
dc49f36e83 | |||
5516faca38 | |||
74cbc25f21 | |||
1ea36c6f89 | |||
38351cbe6e | |||
d4d29307a2 | |||
b4e4e9ae89 | |||
a2855c5e72 | |||
667a8fdb49 | |||
04e91db166 | |||
6c8f82901c | |||
5f27c5515f | |||
48e6d4bcfa | |||
4e70ed4973 | |||
3159005aa3 | |||
5a62602a11 | |||
0bc1930cf5 | |||
ef74a7b137 | |||
f991bcf915 | |||
6cbddff31a | |||
ff42bd390f | |||
b4d2a2e1f2 | |||
b44995da74 | |||
3af7cccb93 | |||
021c003ca8 | |||
2e5fbd0d54 | |||
2cab79b4c2 | |||
ab730038fd | |||
b8835958e2 | |||
ea1df1b178 | |||
85c602d524 | |||
8147a89cb7 | |||
20d5c50725 | |||
138c5af5f8 | |||
6793c892ed | |||
76f7abb112 | |||
1e5b755b99 | |||
a79d8abfcd | |||
4b8b75b19b | |||
2bae3931b9 | |||
5fd2d9c439 | |||
c45e493b1b | |||
4985cf4b00 | |||
7afd1f3fc1 | |||
83cb6dc2fd | |||
dc7e33558e | |||
0406258466 | |||
2ceb6a9d8d | |||
fbf68d1dd8 | |||
a5a66e9e17 | |||
07f6ffb0a4 | |||
ebdb4f10d1 | |||
3d74ea9820 | |||
f6c56be5e4 | |||
cfe63bf7b6 | |||
1f82757c64 | |||
be2e8d7c76 | |||
3aad8e367f | |||
45b83502a1 | |||
9cfd1a9679 | |||
fb6627083b | |||
42c59e98ab | |||
ea669ddfc6 | |||
4f30959a43 | |||
2455938691 | |||
5e3263e2e2 | |||
58846ba68a | |||
a21db7ca78 | |||
40fb6f5d75 | |||
2595c0b623 | |||
c7185739dc | |||
945a6d4828 | |||
19bcbc7c42 | |||
323905a215 | |||
3e59323abb | |||
59c6b28cdd | |||
b17a3b34b7 | |||
8b9267c253 | |||
78a159594b | |||
8eed56fda0 | |||
647d9b44a9 | |||
749952f7e3 | |||
d3e0ae5771 | |||
a81b1836a3 | |||
c7389d0cb6 | |||
fb86dc5cec | |||
98f400e326 | |||
b0625e11f1 | |||
60cfe88e37 | |||
ad1cc81c0d | |||
4a6492af0a | |||
488ea234d5 | |||
fba8139416 | |||
45738d0b93 | |||
52810cef77 | |||
f02fa1fdf1 | |||
f8766cccdc | |||
4bea93163d | |||
8b0d1b2b3d | |||
7e2ae96c1f | |||
181823cb20 | |||
11f9154ce0 | |||
018e09e5b2 | |||
984391eb64 | |||
9bf954071b | |||
448ee39c7f | |||
8dac9f7356 | |||
fcca8ada45 | |||
2e0efd6690 | |||
c878283c44 | |||
b81be93411 | |||
3ad25f65c8 | |||
97e7f74a8f | |||
66d688bc90 | |||
84f795e453 | |||
58c800e246 | |||
48a8d3e0cc | |||
1fe9b9eb1d | |||
04edb9be04 | |||
55e8076988 | |||
9db2d57de3 | |||
de49bb0e42 | |||
93595bcd35 | |||
7260c78c33 | |||
197b56003c | |||
f133b6eb4c | |||
cb62f06197 | |||
a2e4fb5d7a | |||
36b0e1dce0 | |||
03e72e02f8 | |||
6613dea552 | |||
ef173ebeaf | |||
5a6fb122ec | |||
8462e8ce52 | |||
1647f572ff | |||
56f7e97536 | |||
3aaafdcecf | |||
99651d2239 | |||
c586cd5177 | |||
fc3a884024 | |||
a91f1e5095 | |||
2314bc2f59 | |||
af2281057a | |||
e85c98062b | |||
c1cde01424 | |||
54cda32a94 | |||
2e36b8dc21 | |||
f4a5c9a391 | |||
08ff50067a | |||
cff584d8b9 | |||
abb9c91320 | |||
a03d0c7e95 | |||
231a1f1b43 | |||
c313e3ae69 | |||
f2503c6167 | |||
7a7b8324b4 | |||
057fa03723 | |||
f64c710c12 | |||
32921ff2b1 | |||
6c7928fc92 | |||
fd29a7409e | |||
61c95088af | |||
24bda4741c | |||
172124f20a | |||
17dbadfe9f | |||
e71ae67b4e | |||
e00ee9b777 | |||
0f015354ef | |||
3ed6e09f20 | |||
0dbfa06359 | |||
2fda38f7b1 | |||
ec1828f2bc | |||
3e6ec5087b | |||
a3b4d466d7 | |||
1ddd325e18 | |||
3d453811fb | |||
67b0b9b219 | |||
502b928aff | |||
a9cb0718fe | |||
a1dac4228a | |||
6e2587576d | |||
f8179328cf | |||
dae5c67c02 | |||
eb2ff59fe5 | |||
b36eb487eb | |||
bc61e9f86b | |||
61175740f6 | |||
a41f59984f | |||
0bab36a95a | |||
ff88313462 | |||
3f5c357971 | |||
d2e11d6f11 | |||
3e82dd8d0a | |||
4f5030ecf7 | |||
784e8a3eb8 | |||
7fbe71102a | |||
6f34162ac5 | |||
46ab65a344 | |||
d8cf4c82a5 | |||
ab14f4f82e | |||
56cbeb6183 | |||
6efe6916ba | |||
ea544e8391 | |||
0c46dd28be | |||
d493c015fd | |||
1e3797ec48 | |||
6effb25bd6 | |||
796f188cb3 | |||
e0bc9573d4 | |||
5733918a2f | |||
6740932c47 | |||
9fb0ca3466 | |||
d6ce082274 | |||
3587162611 | |||
2f1bad1c29 | |||
443888825f | |||
3872259687 | |||
14f80e779e | |||
8965d56c93 | |||
8614cb322a | |||
4390c30be8 | |||
fcf2b9c6aa | |||
89c9239798 | |||
062a7cb826 | |||
d614719d1d | |||
cbe7b64a97 | |||
f893613e99 | |||
5bc5379640 | |||
f537a5cd4c | |||
54c2c8db76 | |||
33b508110e | |||
ed52f0e5cb | |||
3772c807b4 | |||
d6f756a174 | |||
60c9e76bcc | |||
65a19d1779 | |||
1079cb7cdd | |||
bfbbb04065 | |||
7d6a755908 | |||
6727843477 | |||
aa8b2c5774 | |||
35394cee19 | |||
b633ecf97f | |||
d36499eac8 | |||
45c279f2eb | |||
a742459248 | |||
1a31085cce | |||
517f6c1e88 | |||
c8d0aee873 | |||
5547d99609 | |||
3d63b80c97 | |||
597b2a6f70 | |||
59d10e81ab | |||
d776edbab2 | |||
4ca399845f | |||
4759d70541 | |||
34b28928de | |||
94da23a1fd | |||
abfe85ab7d | |||
7271d4f5c4 | |||
c7ed54d037 | |||
b1d999e70b | |||
124a9eb41d | |||
479a9553f6 | |||
31c4f470fe | |||
53b58225a4 | |||
ae0d99369b | |||
bcdaccf68d | |||
a6aa972c1c | |||
67bd592ed9 | |||
dea82728af | |||
98f4bcde31 | |||
bb59d5db7a | |||
3abd3a5ee9 | |||
9bb485367a | |||
769b31e0ec | |||
52540a678a | |||
78182278cc | |||
3998cdfb1e | |||
969a25cf0d | |||
a2864d3559 | |||
4ab6873a42 | |||
7b0dce0992 | |||
57bab4f9df | |||
4f4bd2937a | |||
8c55b54969 | |||
4f53c9c43a | |||
94fe1174c6 | |||
f9d0e4621b | |||
3d535b5dec | |||
97204cfc31 | |||
d8dc267fef | |||
13704fffe0 | |||
2ceee8bf26 | |||
6c93816a77 | |||
20890aa2fb | |||
c95af93490 | |||
60815f034d | |||
357018109f | |||
de96a3d327 | |||
78482791c1 | |||
2168b404bd | |||
ff897e84eb | |||
f0cd7843c7 | |||
aedd3fa4e3 | |||
e4ac7c4a13 | |||
aba51d10c7 | |||
999eca4598 | |||
44d31a3dfd | |||
66913cdb20 | |||
424ff42b29 | |||
afc4e508d5 | |||
f5cd50f7ba | |||
018b731fab | |||
6592cf58d3 | |||
28aacaade6 | |||
fffcc2970e | |||
b5d3ab895b | |||
950f4bf4ad | |||
544d76e6ff | |||
99c59361a7 | |||
92039921b1 | |||
bbd8483b65 | |||
5ed438bc6b | |||
2daed538b4 | |||
14d45b89af | |||
08c116947a | |||
2854302757 | |||
51830a0953 | |||
22779337c8 | |||
8d40ca6f10 | |||
a2e80fcc29 | |||
7d1976e819 | |||
c6e87d8c16 | |||
d3471816ba | |||
65fd9804ea | |||
8c7065ed09 | |||
9a024f1aa1 | |||
475a4aa48a | |||
666d7c8459 | |||
d1258797b0 | |||
3f09b4ee0c | |||
72eebf5b6d | |||
aa94a8bd06 | |||
a48bd35893 | |||
b9090753db | |||
76867d8db3 | |||
343bfa2148 | |||
999702e6be | |||
045782b202 | |||
90feee05aa | |||
9c164b8b9e | |||
ecba83edc5 | |||
5dcdc2f9cc | |||
c3fbdb9e33 | |||
55bf019411 | |||
2ace28a75f | |||
d26b9a03d6 | |||
b3eb36ee47 | |||
4cc8adbec5 | |||
bba42e748c | |||
fa77863b13 | |||
f0d9ac8fd6 | |||
f9dc9cc4e8 | |||
ab5fc3f203 | |||
6c45773b36 | |||
be1c21c3f0 | |||
04b9e19eeb | |||
b937f1ae3e | |||
ca29e0a307 | |||
30c8efa3b6 | |||
b1421659c5 | |||
2a7e9d9cb9 | |||
47eaf93e4d | |||
ce1e2fd606 | |||
2a3485cf98 | |||
8bf92be1ab | |||
bdaf952e91 | |||
1d2b85418e | |||
cbd9dd7a2c | |||
c7aec0b291 | |||
2ac8f8f6ef | |||
897b0a48c6 | |||
6da2d5047d | |||
3567e079f9 | |||
a3354dca0d | |||
a327872241 | |||
68fcd45873 | |||
2555aec888 | |||
e9192d14c2 | |||
08a81356da | |||
234d166c84 | |||
5e6fdb5c30 | |||
a6a405be31 | |||
0866fb880a | |||
2376d853e7 | |||
bc65345cf3 | |||
f071ebe0ca | |||
78f25b0157 | |||
dfac49ede0 | |||
6abf66ddbc | |||
1ffbcd59ad | |||
c2b42842e4 | |||
7be414fa5b | |||
b10e108977 | |||
28e5f1ca6e | |||
3707e359f4 | |||
3b4e9da7c6 | |||
6a315f817d | |||
d70eef06ac | |||
34a55d7eae | |||
83344a63c5 | |||
6dd8358d2f | |||
a5048d20fd | |||
d2bdb8836c | |||
35df0fa9d7 | |||
4b47f6e84b | |||
f47bc7e5a7 | |||
edcedae0e4 | |||
9ebe68ec0c | |||
18c21f0bc7 | |||
d7a389a358 | |||
44f866f924 | |||
17ecaf522a | |||
6428f43599 | |||
e714b0eb24 | |||
0963b5e140 | |||
76a81c09f2 | |||
a2e7609263 | |||
1e45d8e712 | |||
d932fa606f | |||
c5b86d3637 | |||
1e49c43e7a | |||
82a0d4b6b0 | |||
687f0188ca | |||
3a989a5ed3 | |||
728e01c582 | |||
f98a257ed5 | |||
d827e58997 | |||
8d931fbf74 | |||
5b4edc8631 | |||
90019cdc62 | |||
cdfdbc3678 | |||
b218d01248 | |||
dec2e8eacc | |||
9b3befd6f2 | |||
b243290a36 | |||
1cf3f43db0 | |||
090035bf1d | |||
77be6adf6d | |||
828d3b928e | |||
1d0284abaf | |||
8f2238835e | |||
ca506f9fab | |||
56a01322b5 | |||
4bb077e70b | |||
317ad35180 | |||
e3ba0d7b0a | |||
c46dc401d4 | |||
78baaa9dc1 | |||
4a80a216c7 | |||
b1fa94f1e3 | |||
4e89284a37 | |||
72c957e700 | |||
df302ff5db | |||
bffecdae89 | |||
07b904e8f1 | |||
dcccf2d0c8 | |||
ae83074f6f | |||
5fac6e9811 | |||
8ece990ce9 | |||
8ba8890887 | |||
02147dfe4b | |||
9544b7789d | |||
6ee89da4ba | |||
2203d0b906 | |||
ec067857c5 | |||
5b6b7c479a | |||
49d5c2de34 | |||
7f30553a51 | |||
1e7f1f7cf2 | |||
af1acd6be7 | |||
8388a2867a | |||
55c8ec0395 | |||
7bb661d31b | |||
816a3055f4 | |||
fa4dabf173 | |||
5c16dd44a7 | |||
9f12002d7a | |||
e54d48f407 | |||
f53d8e79cc | |||
2725342c19 | |||
ff55f641a2 | |||
e1648d7ec7 | |||
fd028e2f05 | |||
3834b92c51 | |||
1792eb9cfe | |||
fbbf56a49d | |||
da0071ae71 | |||
2aa24162c3 | |||
970d6a083f | |||
d380658b40 | |||
de66c8de56 | |||
518d80cdcd | |||
925260a234 | |||
276ba67583 | |||
eeb370556f | |||
db021fa970 | |||
2bffccf839 | |||
ce6cd0a19f | |||
ae10518a0f | |||
5f3b88b00a | |||
49ce602808 | |||
e2b3cbc0f1 | |||
dc932b61e7 | |||
577894851b | |||
6fe96b2195 | |||
8f969d42f4 | |||
10d1975bc2 | |||
0aa3d59487 | |||
3810e7f2cb | |||
92615f0637 | |||
23e47fa3b9 | |||
f0dd5f9530 | |||
afd560ccdc | |||
74f00c8a55 | |||
f50ab24bb3 | |||
7bd7e80b2e | |||
27a3a90d1f | |||
b4c265005f | |||
9dcef6d7bb | |||
2ff5dc16aa | |||
15ee2dd0ff | |||
f13216752e | |||
1f3d074261 | |||
780500ac0a | |||
fab4c26238 | |||
fad4accfcc | |||
b03676222c | |||
db7d6d7f5f | |||
6a0a7b6159 | |||
0ebb7e0417 | |||
44b9ce2bdf | |||
12c290de70 | |||
e0e9405634 | |||
73be07df74 | |||
b25cecd315 | |||
0b9407356d | |||
d5cccba5d1 | |||
cb353600ec | |||
995734642e | |||
aaaee7e422 | |||
025ce478be | |||
da321e43f5 | |||
ae7b2ad04f | |||
06b48d8e07 | |||
328b7638ad | |||
809292630f | |||
fec3f22765 | |||
a665b5d6f1 | |||
ba33366d45 | |||
c9792b4e62 | |||
de342a5502 | |||
a4e590ae3a | |||
6aef5868af | |||
a8b85ff93b | |||
e0bdba5478 | |||
09659c62f3 | |||
de70ed8694 | |||
2fce7369f4 | |||
47c79086f2 | |||
951f0e0866 | |||
d9cc2812c4 | |||
2886e6946f | |||
02829cf43d | |||
ddf32f9cb7 | |||
063abf7163 | |||
6f19f28add | |||
90079b8d10 | |||
5832f4e3b7 | |||
12ecd6fa14 | |||
092a455172 | |||
d307376abc | |||
6135e932e4 | |||
a853733f61 | |||
e005ec4624 | |||
11d5d6f424 | |||
5448e72975 | |||
9cda72b077 | |||
30989d9b7c | |||
93e0100049 | |||
d269b3200d | |||
7c41db4c83 | |||
6642ee9eef | |||
db1ca3d08a | |||
1ac1760691 | |||
4bae8bfa20 | |||
121caf0829 | |||
3494bd2008 | |||
509cc3a6d3 | |||
7d40425391 | |||
df390358f2 | |||
40e0595892 | |||
f53fab80fd | |||
0c63500b36 | |||
2eb0047643 | |||
38a14eb068 | |||
9784f6e6ab | |||
8d3e29a695 | |||
fb2fbbd95e | |||
2aa6610645 | |||
69754c283f | |||
99700d7d1f | |||
29adee8435 | |||
1812e214df | |||
d9130671d7 | |||
6c6c16256b | |||
07c3bf5f25 | |||
19caf37088 | |||
405dab1725 | |||
9d48301402 | |||
83e2b3f800 | |||
86cd7771cd | |||
ee59c17081 | |||
3544e4b2ad | |||
4dc4461004 | |||
fb8dd8ad85 | |||
f00de88f97 | |||
496cd1c632 | |||
6a4c27841d | |||
8ed6dc60a5 | |||
a70ca3b70d | |||
4333869b7b | |||
ed15b1042d | |||
6e8b0dd038 | |||
2a8bbb0b8c | |||
0ef81a3b1c | |||
2d1ff0e318 | |||
0b7547231f | |||
02156d11c8 | |||
66d39af6c5 | |||
98f26235db | |||
878ca55385 | |||
27ccb57987 | |||
eca9ed95c8 | |||
a1620271f2 | |||
df4706e3b1 | |||
811b33936b | |||
09248d4dc4 | |||
535230084e | |||
49d25b1791 | |||
42cde580bf | |||
c170b01fc2 | |||
0a8f46a506 | |||
be8336d0e8 | |||
03cca53d2a | |||
da50225566 | |||
c3d5b95576 | |||
39e6065046 | |||
237f9cc36d | |||
40172142b3 | |||
5bbdc148c6 | |||
751b0f1fe0 | |||
a1abab8909 | |||
0ff9c7afcc | |||
6fa68db79f | |||
8504830c52 | |||
cb37c87467 | |||
e04a6fbcaa | |||
2a743df91d | |||
fc8374fe5e | |||
0bc2f04b4e | |||
7bb5fd8ec7 | |||
801209678b | |||
c5369315e9 | |||
931c8e8814 | |||
c34939cfb4 | |||
ce928907eb | |||
b53881a8d6 | |||
9ab215b6fd | |||
ea7b7a23fa | |||
03318b3c4d | |||
726e40d6c5 | |||
e3bdef0ef0 | |||
8174b6c59b | |||
474a6f82a3 | |||
cebc339d91 | |||
b2ffcdd9ea | |||
e91b69230c | |||
5477321ce7 | |||
ac9cd1afa3 | |||
96a8bf7e06 | |||
2ea12da8b8 | |||
685adc561b | |||
fd54745cc0 | |||
4bf30df933 | |||
44b1ff7f75 | |||
e9da4719fb | |||
fc776ba3a3 | |||
8e11768a51 | |||
3bea0233bc | |||
b1da85f437 | |||
875c39ab85 | |||
397af51d7c | |||
79e8a261ba | |||
da59216663 | |||
13814f78d8 | |||
c211f4ba1a | |||
a6b7522b18 | |||
30ae8070c6 | |||
67d2cb6428 | |||
a07663045b | |||
befba8c18d | |||
e7a32b9882 | |||
d0999cf778 | |||
81e1fd281c | |||
4aa51c0edb | |||
bbb7aa5a39 | |||
d97ce2378b | |||
d44eb0b751 | |||
5f2b525ee4 | |||
af6272941a | |||
97bc6bbc20 | |||
47c332bf6f | |||
1d49b4c3f4 | |||
c1ec85ee81 | |||
b347f47406 | |||
d15bf86157 | |||
93a8603686 | |||
0ef50b8be2 | |||
88bf6956fe | |||
961c33ad48 | |||
7580465f6b | |||
88eaced5a2 | |||
b8e1b5850c | |||
e3177c260c | |||
3ed11d7c37 | |||
52198840b8 | |||
cb9d8e2339 | |||
02fb40f058 | |||
cbe211c8cf | |||
94a49a8f36 | |||
2aeb9ddea3 | |||
6d239b9f63 | |||
ee2d398bfa | |||
50fd1d7478 | |||
e7d811e4df | |||
03fa37b130 | |||
b5066c3d55 | |||
30187ba5f9 | |||
4eb6c4e19d | |||
0ea310ac71 | |||
5c4de1b926 | |||
59a66b41bb |
122
.clang-format
Normal file
@ -0,0 +1,122 @@
|
||||
Language: Cpp
|
||||
|
||||
# Access modifiers in the middle
|
||||
AccessModifierOffset: -2
|
||||
|
||||
# Align escaped newlines as far left as possible
|
||||
AlignEscapedNewlinesLeft: true
|
||||
|
||||
# Align all trailing comments
|
||||
AlignTrailingComments: true
|
||||
|
||||
# Don't allow parameters to be placed on the next line, even though BinPackParameters is false
|
||||
AllowAllParametersOfDeclarationOnNextLine: false
|
||||
|
||||
# Do not allow short functions/if statements/loops on a single line
|
||||
AllowShortFunctionsOnASingleLine: false
|
||||
AllowShortIfStatementsOnASingleLine: false
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
|
||||
# Don't force breaks before multiline strings
|
||||
AlwaysBreakBeforeMultilineStrings: false
|
||||
|
||||
# Don't force breaks before template declarations
|
||||
AlwaysBreakTemplateDeclarations: false
|
||||
|
||||
# Force breaks after definition return type
|
||||
AlwaysBreakAfterDefinitionReturnType: true
|
||||
|
||||
# Arguments and parameters are either on one line or on one line each
|
||||
BinPackArguments: false
|
||||
BinPackParameters: false
|
||||
|
||||
# Do not break before binary operators
|
||||
BreakBeforeBinaryOperators: None
|
||||
|
||||
# Use the linux brace breaking style: Attach braces to context except for braces on functions,
|
||||
# namespaces and class definitions
|
||||
BreakBeforeBraces: Linux
|
||||
|
||||
# Do not place ternary operators after line breaks
|
||||
BreakBeforeTernaryOperators: false
|
||||
|
||||
# In the constructor initializers do not align the comma with the colon
|
||||
BreakConstructorInitializersBeforeComma: false
|
||||
|
||||
# Force columns to be less than 100 characters
|
||||
ColumnLimit: 100
|
||||
|
||||
# Constructor initializer all in one line or all on their own line
|
||||
ConstructorInitializerAllOnOneLineOrOnePerLine: true
|
||||
|
||||
# Indent constructor initializers
|
||||
ConstructorInitializerIndentWidth: 8
|
||||
|
||||
# Do not indent continuations
|
||||
ContinuationIndentWidth: 0
|
||||
|
||||
# Do not use braced lists in c++11 style
|
||||
Cpp11BracedListStyle: false
|
||||
|
||||
# Do not derive pointer alignment
|
||||
DerivePointerAlignment: false
|
||||
|
||||
# Case labes are indented
|
||||
IndentCaseLabels: true
|
||||
|
||||
# Do not indent function declarations
|
||||
IndentFunctionDeclarationAfterType: false
|
||||
|
||||
# Indentation is 4 characters
|
||||
IndentWidth: 4
|
||||
|
||||
# Do not keep empty lines at start of blocks
|
||||
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||
|
||||
# Keep at most 2 consecutive empty lines
|
||||
MaxEmptyLinesToKeep: 2
|
||||
|
||||
# Do not indent namespaces
|
||||
NamespaceIndentation: None
|
||||
|
||||
# Spaces for ObjC properties and protocol lists
|
||||
ObjCSpaceAfterProperty: true
|
||||
ObjCSpaceBeforeProtocolList: true
|
||||
|
||||
# Penalties
|
||||
PenaltyBreakBeforeFirstCallParameter: 100
|
||||
PenaltyBreakComment: 10
|
||||
PenaltyBreakFirstLessLess: 0
|
||||
PenaltyBreakString: 100
|
||||
PenaltyExcessCharacter: 20
|
||||
PenaltyReturnTypeOnItsOwnLine: 20
|
||||
|
||||
# Force pointers to typename (i.e. char* a instead of char *a)
|
||||
PointerAlignment: Left
|
||||
|
||||
# Spaces after C-style casts and before assignments
|
||||
SpaceAfterCStyleCast: true
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
|
||||
# Only space before parentheses if they are control statements
|
||||
SpaceBeforeParens: ControlStatements
|
||||
|
||||
# Single space before trailing comments
|
||||
SpacesBeforeTrailingComments: 1
|
||||
|
||||
# No spaces in parentheses, angles, or square brackets
|
||||
SpaceInEmptyParentheses: false
|
||||
SpacesInAngles: false
|
||||
SpacesInCStyleCastParentheses: false
|
||||
SpacesInParentheses: false
|
||||
SpacesInSquareBrackets: false
|
||||
|
||||
# Use c++11 as the language standard
|
||||
Standard: Cpp11
|
||||
|
||||
# Tabs are 4 characters wide
|
||||
TabWidth: 4
|
||||
|
||||
# Don't use tabs for indentation :-(
|
||||
UseTab: Never
|
||||
|
21
.travis.yml
Normal file
@ -0,0 +1,21 @@
|
||||
language: cpp
|
||||
compiler:
|
||||
- gcc
|
||||
- clang
|
||||
install:
|
||||
- sudo add-apt-repository --yes ppa:kalakris/cmake
|
||||
- sudo add-apt-repository --yes ppa:fenics-packages/fenics-exp/swig
|
||||
- sudo apt-get update -qq
|
||||
- sudo apt-get install -y -qq swig3.0 python git cmake
|
||||
- sudo ln -s /usr/bin/swig3.0 /usr/bin/swig
|
||||
- sudo update-java-alternatives -s java-8-oracle
|
||||
before_script:
|
||||
- if [ "$CC" = "gcc" ]; then export BUILDJAVA=ON; else export BUILDJAVA=OFF; fi
|
||||
- export JAVA_HOME=/usr/lib/jvm/java-8-oracle
|
||||
script:
|
||||
- git clone --branch=master https://github.com/intel-iot-devkit/mraa.git
|
||||
- cd mraa && mkdir build && cd build && cmake -DBUILDSWIGJAVA=$BUILDJAVA -DENABLEEXAMPLES=OFF -DCMAKE_INSTALL_PREFIX:PATH=. -DNODE_ROOT_DIR:PATH=/home/travis/.nvm/v0.10.36/include .. && make && make install
|
||||
- export PKG_CONFIG_PATH=$PWD/lib/pkgconfig:$PWD/lib/x86_64-linux-gnu/pkgconfig
|
||||
- export CPLUS_INCLUDE_PATH=$PWD/include
|
||||
- export LIBRARY_PATH=$PWD/lib:$PWD/lib/x86_64-linux-gnu
|
||||
- cd ../.. && mkdir build && cd build && cmake -DBUILDSWIGJAVA=$BUILDJAVA -DNODE_ROOT_DIR:PATH=/home/travis/.nvm/v0.10.36/include -DBUILDEXAMPLES=ON .. && make
|
170
CMakeLists.txt
@ -1,31 +1,36 @@
|
||||
cmake_minimum_required (VERSION 2.8.11)
|
||||
project (upm)
|
||||
|
||||
find_package (SWIG)
|
||||
if (SWIG_FOUND)
|
||||
include (${SWIG_USE_FILE})
|
||||
if ("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
|
||||
message("WARNING: building into sources dir can be risky, prefer other directory")
|
||||
endif ()
|
||||
|
||||
find_package (Threads REQUIRED)
|
||||
find_package (PkgConfig REQUIRED)
|
||||
# force the libmraa version to be the required version
|
||||
pkg_check_modules (MRAA REQUIRED mraa>=0.4.0)
|
||||
message (INFO " found libmraa version: ${MRAA_VERSION}")
|
||||
|
||||
# Force a libmraa search and minimum required version every time a config is generated
|
||||
unset(MRAA_FOUND CACHE)
|
||||
pkg_check_modules (MRAA REQUIRED mraa>=0.8.0)
|
||||
message (INFO " found mraa version: ${MRAA_VERSION}")
|
||||
|
||||
# Appends the cmake/modules path to MAKE_MODULE_PATH variable.
|
||||
set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH})
|
||||
set (LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}" CACHE PATH "Installation path for libraries")
|
||||
|
||||
# Set CMAKE_LIB_INSTALL_DIR if not defined
|
||||
include(GNUInstallDirs)
|
||||
|
||||
# Make a version file containing the current version from git.
|
||||
include (GetGitRevisionDescription)
|
||||
git_describe (VERSION "--tags")
|
||||
if ("x_${VERSION}" STREQUAL "x_GIT-NOTFOUND")
|
||||
message (WARNING " - Install git to compile a production libmraa!")
|
||||
set (VERSION "v0.1.7-dirty")
|
||||
if ("x_${VERSION}" STREQUAL "x_GIT-NOTFOUND" OR "x_${VERSION}" STREQUAL "x_-128-NOTFOUND")
|
||||
message (WARNING " - Install git to compile a production UPM!")
|
||||
set (VERSION "v0.4.1-dirty")
|
||||
endif ()
|
||||
|
||||
message (INFO " - UPM Version ${VERSION}")
|
||||
|
||||
#parse the version information into pieces.
|
||||
# Parse the version information into pieces.
|
||||
string (REGEX REPLACE "^v([0-9]+)\\..*" "\\1" VERSION_MAJOR "${VERSION}")
|
||||
string (REGEX REPLACE "^v[0-9]+\\.([0-9]+).*" "\\1" VERSION_MINOR "${VERSION}")
|
||||
string (REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" VERSION_PATCH "${VERSION}")
|
||||
@ -43,32 +48,114 @@ set (upm_VERSION_STRING ${upm_VERSION_MAJOR}.${upm_VERSION_MINOR}.${upm_VERSION_
|
||||
|
||||
set (CMAKE_SWIG_FLAGS "")
|
||||
|
||||
option (IPK "Generate IPK using CPack" OFF)
|
||||
option (BUILDDOC "Build all doc." OFF)
|
||||
option (BUILDSWIG "Build swig modules." ON)
|
||||
option (BUILDSWIGPYTHON "Build swig python modules." ON)
|
||||
option (BUILDSWIGNODE "Build swig node modules." ON)
|
||||
option (BUILDEXAMPLES "Build C++ example binaries" OFF)
|
||||
option (BUILDSWIGJAVA "Build swig java modules" OFF)
|
||||
option (IPK "Generate IPK using CPack" OFF)
|
||||
option (RPM "Generate RPM using CPack" OFF)
|
||||
|
||||
if (BUILDDOC)
|
||||
# add a target to generate API documentation with Doxygen
|
||||
find_package (Doxygen)
|
||||
if (DOXYGEN_FOUND)
|
||||
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
|
||||
add_custom_target (doc
|
||||
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMENT "Generating API documentation with Doxygen" VERBATIM
|
||||
)
|
||||
endif (DOXYGEN_FOUND)
|
||||
# Find swig
|
||||
if (BUILDSWIG)
|
||||
if (BUILDSWIGNODE)
|
||||
find_package (SWIG 3.0.5 REQUIRED)
|
||||
else ()
|
||||
find_package (SWIG REQUIRED)
|
||||
endif ()
|
||||
if (SWIG_FOUND)
|
||||
include (${SWIG_USE_FILE})
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
if (IPK)
|
||||
# Detect arch
|
||||
include (TargetArch)
|
||||
target_architecture (DETECTED_ARCH)
|
||||
message( INFO " - Target arch is ${DETECTED_ARCH}")
|
||||
|
||||
set(CPACK_GENERATOR "DEB")
|
||||
set(OPKG_ARCH ${DETECTED_ARCH})
|
||||
if (BUILDDOC)
|
||||
# Add a target to generate API documentation with Doxygen
|
||||
find_package (Doxygen)
|
||||
if (DOXYGEN_FOUND)
|
||||
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/doxy/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
|
||||
if (BUILDSWIGJAVA)
|
||||
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/doxy/Doxyfile.java.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile-java @ONLY)
|
||||
endif()
|
||||
file(GLOB PNG_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/docs docs/icons/*.png)
|
||||
foreach(PNG_FILE ${PNG_FILES})
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docs/${PNG_FILE} ${CMAKE_CURRENT_BINARY_DIR}/html/docs/${PNG_FILE} COPYONLY)
|
||||
endforeach()
|
||||
add_custom_target (doc
|
||||
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
|
||||
COMMAND tar -czf html/xml.tar.gz -C xml .
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMENT "Generating API documentation with Doxygen" VERBATIM
|
||||
)
|
||||
endif (DOXYGEN_FOUND)
|
||||
# Check if Sphinx is installed and add target to generate API documentation
|
||||
find_package (Sphinx)
|
||||
if(SPHINX_FOUND AND BUILDSWIG AND BUILDSWIGPYTHON)
|
||||
# Python required for Sphinx build
|
||||
find_package (PythonLibs)
|
||||
string (REPLACE "." ";" PYTHON_VERSION_LIST ${PYTHONLIBS_VERSION_STRING})
|
||||
list (GET PYTHON_VERSION_LIST 0 PYTHON_VERSION_MAJOR)
|
||||
list (GET PYTHON_VERSION_LIST 1 PYTHON_VERSION_MINOR)
|
||||
set (SITE_PACKAGES ${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages)
|
||||
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/doxy/conf.py.in ${CMAKE_CURRENT_BINARY_DIR}/pydoc/conf.py @ONLY)
|
||||
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/doxy/index.rst ${CMAKE_CURRENT_BINARY_DIR}/pydoc/index.rst COPYONLY)
|
||||
add_custom_target (pydoc ALL
|
||||
COMMAND rm -r -f ${CMAKE_BINARY_DIR}/pyupm && mkdir -p ${CMAKE_BINARY_DIR}/pyupm
|
||||
COMMAND find ${CMAKE_BINARY_DIR}/src -name "_pyupm_*.so" -exec cp {} ${CMAKE_BINARY_DIR}/pyupm \;
|
||||
COMMAND find ${CMAKE_BINARY_DIR}/src -name "pyupm_*.py" -exec cp {} ${CMAKE_BINARY_DIR}/pyupm \;
|
||||
COMMAND ${SPHINX_API_EXECUTABLE} -f -o pydoc ${CMAKE_BINARY_DIR}/pyupm
|
||||
# TODO: use a separate cmake FILE module for string replacement instead
|
||||
COMMAND ${SPHINX_EXECUTABLE} -b html pydoc html/python
|
||||
COMMAND sed -i.bak s|\">pyupm_|\">|g html/python/index.html html/python/modules.html
|
||||
COMMAND sed -i.bak s|[[:space:]][mM]odule</a>|</a>|g html/python/index.html html/python/modules.html
|
||||
DEPENDS doc
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMENT "Generating API documentation with Sphinx" VERBATIM
|
||||
)
|
||||
endif ()
|
||||
# Check if Yuidoc is installed and add target for API documentation
|
||||
find_package(Yuidoc)
|
||||
if(YUIDOC_FOUND AND BUILDSWIGNODE)
|
||||
# Node required for Yuidoc documentation
|
||||
find_package(Node)
|
||||
file(GLOB_RECURSE JSDOC_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/doxy/node doxy/node/*)
|
||||
foreach(JSDOC_FILE ${JSDOC_FILES})
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doxy/node/${JSDOC_FILE} ${CMAKE_CURRENT_BINARY_DIR}/${JSDOC_FILE} COPYONLY)
|
||||
endforeach()
|
||||
add_custom_target(jsdoc ALL
|
||||
COMMAND ${NODE_EXECUTABLE} docgen -m upm -i xml -t ${CMAKE_CURRENT_SOURCE_DIR}/src -g ../../
|
||||
COMMAND ${YUIDOC_EXECUTABLE} -C --no-sort --helpers generators/yuidoc/helper.js --themedir generators/yuidoc/tmpl -o html/node jsdoc/yuidoc/upm
|
||||
COMMAND ${NODE_EXECUTABLE} tolower -i html/node
|
||||
DEPENDS doc
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMENT "Generating API documentation with Yuidoc" VERBATIM
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (IPK)
|
||||
|
||||
# Get target package arch from Yocto ADT sysroot if set or host OS, mapping to Ubuntu name if necessary
|
||||
if (DEFINED ENV{OECORE_TARGET_SYSROOT})
|
||||
GET_FILENAME_COMPONENT (DETECTED_SYSROOT $ENV{OECORE_TARGET_SYSROOT} NAME)
|
||||
string (REGEX REPLACE "-poky-linux" "" TARGET_ARCH "${DETECTED_SYSROOT}")
|
||||
else ()
|
||||
# Debian uses amd64 to denote x86_64
|
||||
if (DETECTED_ARCH STREQUAL "x86_64")
|
||||
set (TARGET_ARCH "amd64")
|
||||
else ()
|
||||
set (TARGET_ARCH ${DETECTED_ARCH})
|
||||
endif ()
|
||||
endif ()
|
||||
message (INFO " - Package arch is ${TARGET_ARCH}")
|
||||
|
||||
set(CPACK_GENERATOR "DEB" "TGZ")
|
||||
set(OPKG_ARCH ${TARGET_ARCH})
|
||||
set(CPACK_BINARY_DIR ${CMAKE_BINARY_DIR})
|
||||
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Intel IoT-Devkit") #required
|
||||
set(upm_PACKAGE_ON_TAG ".")
|
||||
@ -79,9 +166,9 @@ if (IPK)
|
||||
"${upm_VERSION_MAJOR}.${upm_VERSION_MINOR}.${upm_VERSION_PATCH}${upm_PACKAGE_ON_TAG}${VERSION_COMMIT}")
|
||||
set(CPACK_PACKAGE_NAME "upm")
|
||||
set(CPACK_DEBIAN_PACKAGE_SECTION "libs")
|
||||
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${DETECTED_ARCH})
|
||||
set(CPACK_SYSTEM_NAME ${DETECTED_ARCH})
|
||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libmraa0 (>= ${MRAA_VERSION})")
|
||||
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${TARGET_ARCH})
|
||||
set(CPACK_SYSTEM_NAME ${TARGET_ARCH})
|
||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS "mraa (>= ${MRAA_VERSION})")
|
||||
set(CPACK_DEBIAN_PACKAGE_PROVIDES "upm-dev, upm-dbg, upm-doc")
|
||||
set(CPACK_DEBIAN_PACKAGE_REPLACES ${CPACK_DEBIAN_PACKAGE_PROVIDES})
|
||||
set(CPACK_DEBIAN_PACKAGE_CONFLICTS ${CPACK_DEBIAN_PACKAGE_PROVIDES})
|
||||
@ -89,5 +176,30 @@ if (IPK)
|
||||
include (CPack)
|
||||
endif()
|
||||
|
||||
if (RPM)
|
||||
message (INFO " - RPM packaging enabled for ${DETECTED_ARCH}")
|
||||
set(CPACK_PACKAGE_VERSION ${VERSION})
|
||||
set(CPACK_GENERATOR "RPM")
|
||||
set(CPACK_PACKAGE_NAME "libupm${upm_VERSION_MAJOR}")
|
||||
set(CPACK_PACKAGE_RELEASE 1)
|
||||
set(CPACK_PACKAGE_VERSION
|
||||
"${upm_VERSION_MAJOR}.${upm_VERSION_MINOR}.${upm_VERSION_PATCH}-${upm_PACKAGE_ON_TAG}${VERSION_COMMIT}")
|
||||
set(CPACK_PACKAGE_CONTACT "Intel IoT-Devkit")
|
||||
set(CPACK_PACKAGE_VENDOR "Intel IoT-Devkit")
|
||||
set(CPACK_RPM_PACKAGE_REQUIRES "mraa >= ${MRAA_VERSION}")
|
||||
set(CPACK_RPM_PACKAGE_PROVIDES "${CPACK_PACKAGE_NAME}-devel")
|
||||
EXECUTE_PROCESS(COMMAND rpm --showrc
|
||||
COMMAND grep -E "dist[[:space:]]*\\."
|
||||
COMMAND sed -e "s/^.*dist\\s*\\.//"
|
||||
COMMAND tr \\n \\t
|
||||
COMMAND sed -e s/\\t//
|
||||
OUTPUT_VARIABLE DIST_TAG)
|
||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_RELEASE}.${DIST_TAG}.${DETECTED_ARCH}")
|
||||
include(CPack)
|
||||
endif()
|
||||
|
||||
add_subdirectory (src)
|
||||
add_subdirectory (examples)
|
||||
|
||||
if(BUILDEXAMPLES)
|
||||
add_subdirectory (examples/c++)
|
||||
endif()
|
||||
|
@ -1,4 +1,4 @@
|
||||
Copyright © 2014 Intel Corporation
|
||||
Copyright © 2014-2015 Intel Corporation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
103
README.md
@ -1,12 +1,12 @@
|
||||
UPM - Sensor/Actuator repository for Mraa
|
||||
UPM (Useful Packages & Modules) Sensor/Actuator repository for MRAA
|
||||
==============
|
||||
|
||||
UPM is a high level repository for sensors that use mraa. Each sensor links to
|
||||
libmraa and are not meant to be interlinked although some groups of sensors may
|
||||
be. Each sensor contains a header which allows to interface with it. Typically
|
||||
a sensor is represented as a class and instanciated.
|
||||
UPM is a high level repository for sensors that use MRAA. Each sensor links
|
||||
to MRAA and are not meant to be interlinked although some groups of sensors
|
||||
may be. Each sensor contains a header which allows to interface with it.
|
||||
Typically a sensor is represented as a class and instantiated.
|
||||
|
||||
The constructor is expected to initialise the sensor and paramters may be used
|
||||
The constructor is expected to initialise the sensor and parameters may be used
|
||||
to provide identification/pin location on the board.
|
||||
|
||||
Typically an update() function will be called in order to get new data from the
|
||||
@ -14,18 +14,97 @@ sensor in order to reduce load when doing multiple reads to sensor data.
|
||||
|
||||
### Example
|
||||
|
||||
A sensor/acturo is expected to work as such (here is the servo ES08A api):
|
||||
@snippet es08a.cxx Interesting
|
||||
A sensor/actuator is expected to work as such (here is the MMA7660 accelerometer API):
|
||||
```C++
|
||||
// Instantiate an MMA7660 on I2C bus 0
|
||||
upm::MMA7660 *accel = new upm::MMA7660(MMA7660_I2C_BUS,
|
||||
MMA7660_DEFAULT_I2C_ADDR);
|
||||
|
||||
However implementation and API design is compeltely up to the developer, some
|
||||
enumerable sensors for example may provide much clever instanciation. Displays
|
||||
// place device in standby mode so we can write registers
|
||||
accel->setModeStandby();
|
||||
|
||||
// enable 64 samples per second
|
||||
accel->setSampleRate(upm::MMA7660::AUTOSLEEP_64);
|
||||
|
||||
// place device into active mode
|
||||
accel->setModeActive();
|
||||
|
||||
while (shouldRun)
|
||||
{
|
||||
int x, y, z;
|
||||
|
||||
accel->getRawValues(&x, &y, &z);
|
||||
cout << "Raw values: x = " << x
|
||||
<< " y = " << y
|
||||
<< " z = " << z
|
||||
<< endl;
|
||||
|
||||
float ax, ay, az;
|
||||
|
||||
accel->getAcceleration(&ax, &ay, &az);
|
||||
cout << "Acceleration: x = " << ax
|
||||
<< "g y = " << ay
|
||||
<< "g z = " << az
|
||||
<< "g" << endl;
|
||||
|
||||
usleep(500000);
|
||||
}
|
||||
```
|
||||
|
||||
However implementation and API design is completely up to the developer, some
|
||||
enumerable sensors for example may provide much clever instantiation. Displays
|
||||
may also create more complex structures in order to interface with them.
|
||||
|
||||
Browse through the list of all [examples](https://github.com/intel-iot-devkit/upm/tree/master/examples).
|
||||
|
||||
Multi-sensor samples for the starter and specialized kits can be found in the
|
||||
[iot-devkit-samples](https://github.com/intel-iot-devkit/iot-devkit-samples) repository.
|
||||
|
||||
### Supported Sensors
|
||||
|
||||
Supported [sensor list](http://iotdk.intel.com/docs/master/upm/modules.html) from API documentation.
|
||||
|
||||
You can also refer to the [Intel® IoT Developer Zone](https://software.intel.com/iot/sensors).
|
||||
|
||||
### IDE Integration
|
||||
|
||||
If you would like to create projects and run the UPM samples using an Intel recommended IDE,
|
||||
please refer to the Intel Developer Zone IDE page.
|
||||
|
||||
<a href="https://software.intel.com/iot/software/ide"><img src="docs/icons/allides.png"/></a>
|
||||
|
||||
### Building UPM
|
||||
|
||||
See @ref building
|
||||
See building documentation [here](docs/building.md).
|
||||
|
||||
### Making your own UPM module
|
||||
|
||||
@ref porting has more information on making new UPM modules
|
||||
Porting [link](docs/porting.md) has more information on making new UPM modules.
|
||||
|
||||
There is also an example available for max31855 [sensor](docs/max31855.md).
|
||||
|
||||
### Naming conventions and rules for new UPM contributions
|
||||
|
||||
Before you begin development, take a look at our naming [conventions](docs/naming.md).
|
||||
|
||||
Also, please read the guidelines for contributions [to UPM](docs/contributions.md).
|
||||
|
||||
Don't forget to check the documentation [section](docs/documentation.md).
|
||||
|
||||
Make sure you add yourself as an author on every new code file submitted.
|
||||
If you are providing a fix with significant changes, feel free to add yourself
|
||||
as a contributor. Signing-off your commits is mandatory.
|
||||
|
||||
API Documentation
|
||||
==============
|
||||
|
||||
<a href="http://iotdk.intel.com/docs/master/upm"><img src="docs/icons/c++.png"/></a>
|
||||
<a href="http://iotdk.intel.com/docs/master/upm/java"><img src="docs/icons/java.png"/></a>
|
||||
<a href="http://iotdk.intel.com/docs/master/upm/python"><img src="docs/icons/python.png"/></a>
|
||||
<a href="http://iotdk.intel.com/docs/master/upm/node"><img src="docs/icons/node.png"/></a>
|
||||
|
||||
### Changelog
|
||||
Version changelog [here](docs/changelog.md).
|
||||
|
||||
### Known Limitations
|
||||
List of known limitations [here](docs/knownlimitations.md).
|
||||
|
25
cmake/Toolchains/oe-sdk_cross.cmake
Normal file
@ -0,0 +1,25 @@
|
||||
# this toolchain file comes from gnuradio project
|
||||
|
||||
set( CMAKE_SYSTEM_NAME Linux )
|
||||
#set( CMAKE_C_COMPILER $ENV{CC} )
|
||||
#set( CMAKE_CXX_COMPILER $ENV{CXX} )
|
||||
string(REGEX MATCH "sysroots/([a-zA-Z0-9]+)" CMAKE_SYSTEM_PROCESSOR $ENV{SDKTARGETSYSROOT})
|
||||
string(REGEX REPLACE "sysroots/" "" CMAKE_SYSTEM_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR})
|
||||
set( CMAKE_CXX_FLAGS $ENV{CXXFLAGS} CACHE STRING "" FORCE )
|
||||
set( CMAKE_C_FLAGS $ENV{CFLAGS} CACHE STRING "" FORCE ) #same flags for C sources
|
||||
set( CMAKE_LDFLAGS_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "" FORCE ) #same flags for C sources
|
||||
set( CMAKE_LIBRARY_PATH ${OECORE_TARGET_SYSROOT}/usr/lib )
|
||||
set( CMAKE_FIND_ROOT_PATH $ENV{OECORE_TARGET_SYSROOT} $ENV{OECORE_NATIVE_SYSROOT} )
|
||||
set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )
|
||||
set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
|
||||
set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )
|
||||
set( CMAKE_INSTALL_PREFIX $ENV{OECORE_TARGET_SYSROOT}/usr CACHE STRING "" FORCE)
|
||||
set( ORC_INCLUDE_DIRS $ENV{OECORE_TARGET_SYSROOT}/usr/include/orc-0.4 )
|
||||
set( ORC_LIBRARY_DIRS $ENV{OECORE_TARGET_SYSROOT}/usr/lib )
|
||||
|
||||
# for java
|
||||
set( JAVA_AWT_INCLUDE_PATH $ENV{JAVA_HOME}/include CACHE PATH "" FORCE)
|
||||
set( JAVA_AWT_LIBRARY $ENV{JAVA_HOME}/jre/lib/amd64/libjawt.so CACHE FILEPATH "" FORCE)
|
||||
set( JAVA_INCLUDE_PATH $ENV{JAVA_HOME}/include CACHE PATH "" FORCE)
|
||||
set( JAVA_INCLUDE_PATH2 $ENV{JAVA_HOME}/include/linux CACHE PATH "" FORCE)
|
||||
set( JAVA_JVM_LIBRARY $ENV{JAVA_HOME}/jre/lib/amd64/libjvm.so CACHE FILEPATH "" FORCE)
|
61
cmake/modules/FindNode.cmake
Normal file
@ -0,0 +1,61 @@
|
||||
find_program (NODE_EXECUTABLE NAMES node
|
||||
HINTS
|
||||
$ENV{NODE_DIR}
|
||||
PATH_SUFFIXES bin
|
||||
DOC "Node.js interpreter"
|
||||
)
|
||||
|
||||
include (FindPackageHandleStandardArgs)
|
||||
|
||||
find_path (NODE_ROOT_DIR "node/node.h" "src/node.h"
|
||||
PATHS /usr/include/nodejs /usr/local/include/nodejs)
|
||||
|
||||
set (NODE_INCLUDE_DIRS
|
||||
${NODE_ROOT_DIR}/src
|
||||
${NODE_ROOT_DIR}/node
|
||||
${NODE_ROOT_DIR}/deps/v8/include
|
||||
${NODE_ROOT_DIR}/deps/uv/include
|
||||
)
|
||||
|
||||
find_package_handle_standard_args (Node DEFAULT_MSG
|
||||
NODE_EXECUTABLE
|
||||
NODE_INCLUDE_DIRS
|
||||
)
|
||||
|
||||
if (NODE_EXECUTABLE)
|
||||
execute_process(COMMAND ${NODE_EXECUTABLE} --version
|
||||
OUTPUT_VARIABLE _VERSION
|
||||
RESULT_VARIABLE _NODE_VERSION_RESULT)
|
||||
execute_process(COMMAND ${NODE_EXECUTABLE} -e "console.log(process.versions.v8)"
|
||||
OUTPUT_VARIABLE _V8_VERSION
|
||||
RESULT_VARIABLE _V8_RESULT)
|
||||
if (NOT _NODE_VERSION_RESULT AND NOT _V8_RESULT)
|
||||
string (REPLACE "v" "" NODE_VERSION_STRING "${_VERSION}")
|
||||
string (REPLACE "." ";" _VERSION_LIST "${NODE_VERSION_STRING}")
|
||||
list (GET _VERSION_LIST 0 NODE_VERSION_MAJOR)
|
||||
list (GET _VERSION_LIST 1 NODE_VERSION_MINOR)
|
||||
list (GET _VERSION_LIST 2 NODE_VERSION_PATCH)
|
||||
set (V8_VERSION_STRING ${_V8_VERSION})
|
||||
string (REPLACE "." ";" _V8_VERSION_LIST "${_V8_VERSION}")
|
||||
string (REPLACE "." "" V8_DEFINE_STRING "${_V8_VERSION}")
|
||||
string (STRIP ${V8_DEFINE_STRING} V8_DEFINE_STRING)
|
||||
list (GET _V8_VERSION_LIST 0 V8_VERSION_MAJOR)
|
||||
list (GET _V8_VERSION_LIST 1 V8_VERSION_MINOR)
|
||||
list (GET _V8_VERSION_LIST 2 V8_VERSION_PATCH)
|
||||
# we end up with a nasty newline so strip everything that isn't a number
|
||||
string (REGEX MATCH "^[0-9]*" V8_VERSION_PATCH ${V8_VERSION_PATCH})
|
||||
else ()
|
||||
set (NODE_VERSION_STRING "0.10.30")
|
||||
set (NODE_VERSION_MAJOR "0")
|
||||
set (NODE_VERSION_MINOR "10")
|
||||
set (NODE_VERSION_PATCH "30")
|
||||
set (V8_VERSION_MAJOR "3")
|
||||
set (V8_VERSION_MINOR "28")
|
||||
set (V8_VERSION_PATCH "72")
|
||||
set (V8_VERSION_STRING "3.28.72")
|
||||
message ("defaulted to node 0.10.30")
|
||||
endif ()
|
||||
message ("INFO - Node version is " ${NODE_VERSION_STRING} "INFO - Node using v8 " ${V8_VERSION_STRING})
|
||||
endif ()
|
||||
|
||||
mark_as_advanced (NODE_EXECUTABLE)
|
31
cmake/modules/FindSphinx.cmake
Normal file
@ -0,0 +1,31 @@
|
||||
find_program (SPHINX_EXECUTABLE NAMES sphinx-build
|
||||
HINTS $ENV{SPHINX_DIR}
|
||||
PATH_SUFFIXES bin
|
||||
DOC "Sphinx documentation html generator"
|
||||
)
|
||||
|
||||
find_program (SPHINX_API_EXECUTABLE NAMES sphinx-apidoc
|
||||
HINTS $ENV{SPHINX_DIR}
|
||||
PATH_SUFFIXES bin
|
||||
DOC "Sphinx documentation rst generator"
|
||||
)
|
||||
|
||||
include (FindPackageHandleStandardArgs)
|
||||
|
||||
find_package_handle_standard_args (Sphinx DEFAULT_MSG
|
||||
SPHINX_EXECUTABLE
|
||||
SPHINX_API_EXECUTABLE
|
||||
)
|
||||
|
||||
# Get Sphinx version
|
||||
if (SPHINX_EXECUTABLE)
|
||||
execute_process(COMMAND ${SPHINX_EXECUTABLE} --version
|
||||
OUTPUT_VARIABLE SPHINX_VERSION)
|
||||
if(SPHINX_VERSION)
|
||||
string(REGEX MATCH "([0-9]\\.[0-9]\\.[0-9])" SPHINX_VERSION_STR ${SPHINX_VERSION})
|
||||
message ("INFO - Sphinx version is " ${SPHINX_VERSION_STR})
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
mark_as_advanced (SPHINX_EXECUTABLE)
|
||||
mark_as_advanced (SPHINX_API_EXECUTABLE)
|
23
cmake/modules/FindYuidoc.cmake
Normal file
@ -0,0 +1,23 @@
|
||||
find_program (YUIDOC_EXECUTABLE NAMES yuidoc
|
||||
HINTS $ENV{YUIDOC_DIR}
|
||||
PATHS usr usr/local
|
||||
PATH_SUFFIXES bin
|
||||
DOC "Yuidoc documentation generator"
|
||||
)
|
||||
|
||||
include (FindPackageHandleStandardArgs)
|
||||
|
||||
find_package_handle_standard_args (Yuidoc DEFAULT_MSG
|
||||
YUIDOC_EXECUTABLE
|
||||
)
|
||||
|
||||
# Get Yuidoc version
|
||||
if (YUIDOC_EXECUTABLE)
|
||||
execute_process(COMMAND ${YUIDOC_EXECUTABLE} --version
|
||||
ERROR_VARIABLE YUIDOC_VERSION)
|
||||
if(YUIDOC_VERSION)
|
||||
message ("INFO - Yuidoc version is " ${YUIDOC_VERSION})
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
mark_as_advanced (YUIDOC_EXECUTABLE)
|
@ -5,6 +5,13 @@ UPM uses cmake in order to make compilation relatively painless. Cmake runs
|
||||
build out of tree so the recommended way is to clone from git and make a build/
|
||||
directory.
|
||||
|
||||
This project depends on libmraa, so that needs to be installed first. Use the
|
||||
following environment variables to configure the paths:
|
||||
|
||||
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:.../mraa/build/lib/pkgconfig
|
||||
CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:.../mraa/build/include
|
||||
LIBRARY_PATH=$LIBRARY_PATH:.../mraa/build/lib
|
||||
|
||||
UPM will attempt to build all directories inside src/ and they must contain
|
||||
individual CMakeLists.txt files.
|
||||
|
||||
@ -13,26 +20,75 @@ mkdir build
|
||||
cd build
|
||||
cmake ..
|
||||
make
|
||||
make install
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Our cmake configure has a number of options, `cmake -i` will ask you all sorts
|
||||
of interesting questions, you can disable swig modules, build documentation
|
||||
etc...
|
||||
The last command will create the include/ and lib/ directories with a copy of
|
||||
the headers and library objects respectively in your build location. Note that
|
||||
doing an out-of-source build may cause issues when rebuilding later on.
|
||||
|
||||
Our cmake configure has a number of options, *cmake-gui* or *ccmake* can show
|
||||
you all the options. The interesting ones are detailed below:
|
||||
|
||||
Few recommended options:
|
||||
Changing install path from /usr/local to /usr
|
||||
~~~~~~~~~~~~~
|
||||
-DCMAKE_INSTALL_PREFIX:PATH=/usr
|
||||
|
||||
~~~~~~~~~~~~~
|
||||
Building debug build:
|
||||
~~~~~~~~~~~~~
|
||||
-DCMAKE_BUILD_TYPE=DEBUG
|
||||
|
||||
~~~~~~~~~~~~~
|
||||
Using clang instead of gcc:
|
||||
-DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang
|
||||
~~~~~~~~~~~~~
|
||||
-DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++
|
||||
~~~~~~~~~~~~~
|
||||
Cross-compiling on a different system:
|
||||
~~~~~~~~~~~~~
|
||||
-DCMAKE_CXX_FLAGS:STRING=-m32 -march=i586
|
||||
-DCMAKE_C_FLAGS:STRING=-m32 -march=i586
|
||||
~~~~~~~~~~~~~
|
||||
Building with an older version of swig (swig 2.0+) requires the disabling of javascript:
|
||||
~~~~~~~~~~~~~
|
||||
-DBUILDSWIGNODE=OFF
|
||||
~~~~~~~~~~~~~
|
||||
Disabling python module building
|
||||
~~~~~~~~~~~~~
|
||||
-DBUILDSWIGPYTHON=OFF
|
||||
~~~~~~~~~~~~~
|
||||
Setting the python library to use:
|
||||
~~~~~~~~~~~~~
|
||||
-DPYTHON_LIBRARY:FILEPATH=/usr/lib/libpython2.7.so.1.0
|
||||
~~~~~~~~~~~~~
|
||||
Building doxygen doc
|
||||
~~~~~~~~~~~~~
|
||||
-DBUILDDOC=ON
|
||||
~~~~~~~~~~~~~
|
||||
Build C++ example binaries
|
||||
~~~~~~~~~~~~~
|
||||
-DBUILDEXAMPLES=ON
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
If you intend to turn on all the options and build everything at once (C++,
|
||||
Node, Python and Documentation) you will have to edit the src/doxy2swig.py file
|
||||
and change the line endings from Windows style to Linux format. This has to be
|
||||
repeated every time to sync with the master branch since our Github repository
|
||||
stores files using CR LF line breaks.
|
||||
|
||||
You can also generate the include and lib directories containing all the sensor
|
||||
headers and library files respectively with *make install*. Further, you may
|
||||
choose to generate these only for a specific sensor you modified, and this can
|
||||
be achieved by building from the individual makefile of the sensor. Assuming
|
||||
you're in the build directory, to make the lcd module you would:
|
||||
|
||||
~~~~~~~~~~~~~
|
||||
cd src/lcd
|
||||
make install
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Often developers are only interested in building one module or even just the
|
||||
python/node module to do some quick testing using scripting. In order to do
|
||||
this you need to use the target name for the python or node module you want to
|
||||
rebuild. For example the lcd module target name is i2clcd. Therfore the python
|
||||
rebuild. For example the lcd module target name is i2clcd. Therefore the python
|
||||
module target name will be prefixed by _pyupm_. Just do the following to build
|
||||
only that module. Modules not using the UPM cmake macros may have different
|
||||
naming.
|
||||
@ -42,12 +98,12 @@ make _pyupm_i2clcd
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Sometimes you want to build a small C++ example against an installed library.
|
||||
This is fairly easy if installed systemwide. Just link against the correct
|
||||
librar (in this case libupm-tm1637) and then add /usr/include/upm to the loader
|
||||
path:
|
||||
This is fairly easy if installed system-wide. Just link against the correct
|
||||
library (in this case libupm-i2clcd) and then add /usr/include/upm to the
|
||||
loader path:
|
||||
|
||||
~~~~~~~~~~~~
|
||||
g++ test.cxx -lupm_tm1637 -I/usr/include/upm
|
||||
g++ test.cxx -lupm-i2clcd -I/usr/include/upm
|
||||
~~~~~~~~~~~~
|
||||
|
||||
You can also use pkg-config to return the information to you, which is
|
||||
@ -55,5 +111,5 @@ considered the correct way if including UPM in a build system like cmake or
|
||||
autotools on linux.
|
||||
|
||||
~~~~~~~~~~~
|
||||
pkg-config --cflags --libs upm-tm1637
|
||||
pkg-config --cflags --libs upm-i2clcd
|
||||
~~~~~~~~~~~
|
||||
|
146
docs/changelog.md
Normal file
@ -0,0 +1,146 @@
|
||||
Changelog {#changelog}
|
||||
===============
|
||||
|
||||
Here's a list summarizing some of the key undergoing changes to our library
|
||||
from earlier versions:
|
||||
|
||||
### v0.4.1
|
||||
|
||||
* Over 150 supported sensor drivers including some industrial grade devices
|
||||
* Improved the JAVA bindings, added a large number of examples for sensors,
|
||||
enabled JAVA builds in Travis CI, and introduced automatic loading for the
|
||||
JAVA shared libraries
|
||||
* Continued to improve existing sensor drivers and to enhance them with the
|
||||
new C++ coding style and exception types
|
||||
* Several cmake improvements to allow building on various Linux distributions
|
||||
and with a newer version of Node.JS
|
||||
* Simplified adding and building of C++ sensor examples via cmake
|
||||
* New sensors: micsv89, xbee, urm37, adxrs610, bma220, dfrph, mcp9808, sx1276,
|
||||
groveultrasonic, ozw
|
||||
|
||||
### v0.4.0
|
||||
|
||||
* Fully functional and documented JAVA language bindings for sensors with
|
||||
several examples also available
|
||||
* Added standardized exception handling support across all language bindings
|
||||
and updated sensors to use this feature
|
||||
* Sensor drivers are now available and can be installed individually using NPM
|
||||
for Node.js users
|
||||
* Continuous Integration with Travis CI ensures new contributions are built
|
||||
automatically once they are received
|
||||
* API rewrite and improvements for hcsr04, sm130, eboled, loudness
|
||||
* Documentation improvements and code style changes from C to C++
|
||||
* New sensors: hyld9767, mg811, wheelencoder, grovegprs, mpu9250, ssd1306,
|
||||
es9257, lm35, mq4, mq6, mq7, mq8
|
||||
|
||||
### v0.3.2
|
||||
|
||||
* Introduced RPM package generation feature from cmake via cpack
|
||||
* Performed a thorough documentation review and merged resulting changes,
|
||||
includes last remaining images and grouping sensors by kits
|
||||
* Added support for Sparkfun Sensor Blocks (OLED & IMU)
|
||||
* Fully reworked API for at42qt1070, mpu9150 and lcd classes, while
|
||||
maintaining backwards compatibility for existing lcd displays.
|
||||
* Extended doxygen tags for better integration with automated documentation
|
||||
generators
|
||||
* New sensors: rgbringcoder, hp20x, pn532, sainsmartks, lsm9ds0, eboled
|
||||
|
||||
### v0.3.1
|
||||
|
||||
* Updated index pages for API documentation and cross-linked them
|
||||
* More images were added for Grove, Adafruit and Sparkfun sensors along with
|
||||
licensing information
|
||||
* Applied a set of patches to improve code robustness
|
||||
* Added support for Grove NFC Tag sensor
|
||||
* Fixed several typos in library and sensor names
|
||||
* New sensor: m24lr64e
|
||||
|
||||
### v0.3.0
|
||||
|
||||
* Provided automated, updated and comprehensive sensor API documentation for
|
||||
C++, Python and JavaScript
|
||||
* Edited sensor names, library descriptions and doxygen tags for consistency
|
||||
* Fixed the TH02 sensor driver and made major improvements to i2clcd driver
|
||||
* Added new and updated images for numerous new and existing sensors
|
||||
* Started this changelog
|
||||
* New sensors: sx6119, si114x, maxsonarez, hm11, ht9170, h3lis331dl, ad8232,
|
||||
grovescam
|
||||
|
||||
### v0.2.0
|
||||
|
||||
* Passed 100 supported sensor drivers
|
||||
* Updated header files with new doxygen tags for improved API documentation
|
||||
generation
|
||||
* Added python examples for sensors
|
||||
* Fixed the buzzer and servo drivers for the Intel Edison
|
||||
* Renamed bmp and gp2y sensor classes to be more generic
|
||||
* Completely revamped implementation for tm1637
|
||||
* New sensors: mma7660, cjq4435, adxl335, hmtrp, nunchuck, otp538u, l298,
|
||||
groveelectromagnet, grovecollision, adis16448, at42qt1070, grovemd, ina132,
|
||||
grovegsr, groveo2, groveemg, pca9685, pca9685ss, adafruitms1438, hx711, flex,
|
||||
groveeldriver, mhz16, apds9002, waterlevel, zfm20, uln200xa, grovewfs, isd1820
|
||||
|
||||
### v0.1.9
|
||||
|
||||
* Passed 50 supported sensor drivers
|
||||
* Starter Kit and Additional Roadshow and Hackaton sensors added
|
||||
* Several examples and documentation updates submitted
|
||||
* Wrote new proper SWIG typemaps for arrays
|
||||
* Fixed the i2clcd write function, improved several other sensors
|
||||
* New sensors: rpr220, rotaryencoder, biss0001, rfr359f, grovespeaker, mq303a,
|
||||
ppd42ns, wt5001, yg1006, ublox6, mpr121, groveloudness, guvas12d, grovewater,
|
||||
grovevdiv, grovelinefinder, ta12200, groveehr, grovemoisture, gp2y0a, a110x,
|
||||
ds1307, adc121c021, enc03r, ttp223, itg3200, am2315, tp401, ldt0028, htu21d,
|
||||
mpl3115a2, lsm303, joystick12, tsl2561, groverotary, groveslider, adxl345,
|
||||
grovebutton, lol, groverelay
|
||||
|
||||
### v0.1.8
|
||||
|
||||
* Added MQ series gas sensors and a few others
|
||||
* Generated Doxygen layout file to improve API look and feel
|
||||
* Several sensor documentation updates
|
||||
|
||||
### v0.1.7
|
||||
|
||||
* Fixed SWIG node build issues
|
||||
* Added lpd8806 digital led strip
|
||||
|
||||
### v0.1.6
|
||||
|
||||
* Fixed SWIG python builds
|
||||
* Extended i2clcd devices with new functions
|
||||
* Made SWIG interface improvements and added extra types
|
||||
* Added nrf8001 BLE support
|
||||
* Few other sensor additions and fixes
|
||||
|
||||
### v0.1.5
|
||||
|
||||
* New drivers for microphone and mpu9150
|
||||
* Added generic driver for stepper motors
|
||||
* Updated all code to use MRAA and version dependency
|
||||
|
||||
### v0.1.4
|
||||
|
||||
* Added new bmp/gy pressure sensor and updated servo
|
||||
* Started UPM documentation and related pages
|
||||
* Updated MRAA dependencies
|
||||
|
||||
### v0.1.3
|
||||
|
||||
* Updated SWIG support for some sensors
|
||||
* New sensor support for mma7455 accelerometer
|
||||
|
||||
### v0.1.2
|
||||
|
||||
* Several new sensors added
|
||||
* Documentation fixes
|
||||
* IPK generation
|
||||
|
||||
### v0.1.1
|
||||
|
||||
* Updated MRAA dependency
|
||||
|
||||
### v0.1.0
|
||||
|
||||
* Initial release with some basic grove sensors and hmc5883
|
||||
* Doxygen and SWIG support implemented
|
@ -2,33 +2,95 @@ Contributing a module {#contributions}
|
||||
=====================
|
||||
|
||||
Here are the rules of contribution:
|
||||
- Your module must have an example that builds against your UPM library
|
||||
- Commits must have a sign-off line by everyone who reviewed them
|
||||
- Commits must be named <file/module>: Some decent description
|
||||
- Your new module must have an example that builds against your UPM library.
|
||||
- Each commit must have a sign-off line by everyone who authored or reviewed
|
||||
them.
|
||||
- Commits must be named `<file/module>: Some decent description`.
|
||||
- You must license your module under a FOSS license. The recommended license
|
||||
is MIT but any permissive license is fine. Please consider that people using
|
||||
UPM may want to write proprietary programs with your sensors so we like to
|
||||
avoid GPL. (LGPL is fine). If your license is not MIT please include a
|
||||
LICENSE file in src/<mymodule>/
|
||||
avoid GPL. If your license is not MIT please include a LICENSE file in
|
||||
src/mymodule/.
|
||||
- The top of each source file must contain a comment block containing the
|
||||
license information.
|
||||
- Please test your module builds before contributing and make sure it works on
|
||||
the latest version of mraa. If you tested on a specific board/platform please
|
||||
tell us what this was in your PR.
|
||||
the latest version of libmraa. If you tested on a specific board/platform
|
||||
please tell us what this was in your PR.
|
||||
- Try not to break master. In any commit.
|
||||
- Attempt to have some decent API documentation below are the explicit rules on documentation:
|
||||
- Attempt to have some decent API documentation as described in the the @ref
|
||||
documentation [guide](documentation.md).
|
||||
|
||||
Documentation
|
||||
=============
|
||||
Including the MIT license
|
||||
=========================
|
||||
Choosing the [MIT license](http://opensource.org/licenses/MIT) is preferred for
|
||||
the UPM repository. Below is the comment block needed at the top each source
|
||||
file:
|
||||
|
||||
- Try to have no warnings in doxygen, this is generally fairly easy
|
||||
- Have the specific sensor manufacturer/model & version that you used, if you
|
||||
support multiple versions please list
|
||||
- Comments do not need full stops
|
||||
- Stick to <80 chars per line even in comments
|
||||
- No text is allowed on the same line as the start or end of a comment /** */
|
||||
- All classes should have a "@brief" and a "@snippet"
|
||||
/*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Author: <your full name>
|
||||
* Copyright (c) <year> <copyright holder>
|
||||
*
|
||||
* Author: <contributing author full name - if applicable>
|
||||
* Copyright (c) <year> <copyright holder>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
The example should have an 'Interesting' section which will be highlighted as a
|
||||
code sample in doxygen. Everything in between such tags will show up in the
|
||||
class documentation when the following is put at the end of a class docstring
|
||||
as show above.
|
||||
|
||||
Code signing
|
||||
============
|
||||
|
||||
The sign-off is a simple line at the end of the explanation for the
|
||||
patch, which certifies that you wrote it or otherwise have the right to pass it
|
||||
on as an open-source patch. The rules are pretty simple: if you can certify
|
||||
the below:
|
||||
|
||||
Developer's Certificate of Origin 1.1
|
||||
|
||||
By making a contribution to this project, I certify that:
|
||||
|
||||
(a) The contribution was created in whole or in part by me and I
|
||||
have the right to submit it under the open source license
|
||||
indicated in the file; or
|
||||
|
||||
(b) The contribution is based upon previous work that, to the best
|
||||
of my knowledge, is covered under an appropriate open source
|
||||
license and I have the right under that license to submit that
|
||||
work with modifications, whether created in whole or in part
|
||||
by me, under the same open source license (unless I am
|
||||
permitted to submit under a different license), as indicated
|
||||
in the file; or
|
||||
|
||||
(c) The contribution was provided directly to me by some other
|
||||
person who certified (a), (b) or (c) and I have not modified
|
||||
it.
|
||||
|
||||
(d) I understand and agree that this project and the contribution
|
||||
are public and that a record of the contribution (including all
|
||||
personal information I submit with it, including my sign-off) is
|
||||
maintained indefinitely and may be redistributed consistent with
|
||||
this project or the open source license(s) involved.
|
||||
|
||||
then you just add a line to each of your commits with `--signoff` saying
|
||||
|
||||
Signed-off-by: Random J Developer <random@developer.example.org>
|
||||
|
||||
using your real name (sorry, no pseudonyms or anonymous contributions.)
|
||||
Unsigned commits will not be accepted.
|
||||
|
115
docs/documentation.md
Normal file
@ -0,0 +1,115 @@
|
||||
Writing sensor documentation {#documentation}
|
||||
=====================
|
||||
|
||||
It is highly encouraged to provide at least some basic documentation for the
|
||||
sensors that you want to add to UPM:
|
||||
|
||||
- If you don't add documentation, the code review will take very long and
|
||||
your contribution could be rejected.
|
||||
- Try to have no warnings in doxygen, this is generally fairly easy.
|
||||
- Have the specific sensor manufacturer/model & version that you used, if you
|
||||
support multiple versions please list.
|
||||
- Simple comments do not need full stops.
|
||||
- Stick to <80 chars per line even in comments.
|
||||
- No text is allowed on the same line as the start or end of a comment /** */.
|
||||
|
||||
####The sensor block
|
||||
|
||||
This is added just before the class declaration in your header(.h) file and has
|
||||
mandatory fields. For single sensor libraries, this block will actually
|
||||
follow immediately after the library block. If you have multiple physical
|
||||
sensors, add this to every one.
|
||||
Here's an example (disregard the "@verbatim" tags in your actual code):
|
||||
|
||||
```
|
||||
@verbatim
|
||||
/**
|
||||
* @library <lib-name>
|
||||
* @sensor <chip-id>
|
||||
* @comname <component-name>
|
||||
* @altname <alt-name>
|
||||
* @altid <alt-id>
|
||||
* @type <component-category>
|
||||
* @man <component-manufacturer>
|
||||
* @web <component-weblinks>
|
||||
* @con <connection-type>
|
||||
* @kit <component-kit>
|
||||
*
|
||||
* @brief Short class/sensor description
|
||||
*
|
||||
* Then add a longer
|
||||
* description here.
|
||||
*
|
||||
* @image html <component-img.jpeg>
|
||||
* @snippet <example-name.cxx> Interesting
|
||||
*/
|
||||
@endverbatim
|
||||
```
|
||||
|
||||
- `<lib-name>` When adding to an existing library this needs to match that
|
||||
library's "@defgroup", otherwise this is a new library name, generally the
|
||||
same as chip id. *Mandatory*
|
||||
- `<chip-id>` Usually the chip number used by the sensor. When this is not
|
||||
available or relevant, use a unique descriptor that makes sense. *Mandatory*
|
||||
- `<component-name>` A short name for your sensor, can include manufacturer
|
||||
name. *Mandatory*
|
||||
- `<alt-name>` Alternative names that your sensor driver might have. *Optional*
|
||||
- `<alt-id>` Alternative chip-ids that your sensor driver supports. *Optional*
|
||||
- `<component-category>` Mention one or more categories the sensor fits in. Can
|
||||
be 'other'. *Mandatory*
|
||||
- `<component-manufacturer>` Sensor manufacturer. Can be 'generic'. *Mandatory*
|
||||
- `<component-weblinks>` Links to vendors or data-sheets. *Optional*
|
||||
- `<connection-type>` Specifies how does the sensor connect to the board
|
||||
*Mandatory*
|
||||
- `<component-kit>` Specifies if the sensor is part of a kit. *Optional*
|
||||
|
||||
Existing groups that can be used for the manufacturer, connection, category and
|
||||
kit tags are found in the src/upm.h file.
|
||||
|
||||
Optionally, a small representative image can be placed in the "docs/images"
|
||||
subfolder and linked with the "@image" tag.
|
||||
**Please do not use existing, copyrighted images with your sensors!**
|
||||
|
||||
The example should have an 'Interesting' section which will be highlighted as
|
||||
a code sample in doxygen. Everything in between such tags will show up in the
|
||||
class documentation when "@snippet" is added at the end of a class docstring.
|
||||
Tags use this format (in "example-name.cxx"):
|
||||
|
||||
```
|
||||
@verbatim
|
||||
//! [Interesting]
|
||||
|
||||
...example code here...
|
||||
|
||||
//! [Interesting]
|
||||
@endverbatim
|
||||
```
|
||||
|
||||
For more examples take a look at the existing headers in our github repository.
|
||||
|
||||
####The library block
|
||||
|
||||
New libraries must have the "@brief", "@defgroup" and "@ingroup" tags in one
|
||||
block. This usually follows the namespace and it is common to have one sensor
|
||||
per library.
|
||||
|
||||
You should end up with something like this:
|
||||
|
||||
```
|
||||
@verbatim
|
||||
/**
|
||||
* @brief Short description for entire library
|
||||
*
|
||||
* Optional longer description.
|
||||
*
|
||||
* @defgroup <lib-name> libupm-<lib-name>
|
||||
* @ingroup <manufacturer> <connection> <category> (<kit>)
|
||||
*/
|
||||
@endverbatim
|
||||
```
|
||||
|
||||
In "@defgroup" use the same `<lib-name>` used in the sensor block. Multiple
|
||||
sensors can be added to the same library this way.
|
||||
For "@ingroup" add the same values as in the sensor block for manufacturer,
|
||||
category, connection type and kit. If you have multiple classes or sensors
|
||||
per library, only use the "@ingroup" tags that are common for all of them.
|
BIN
docs/icons/allides.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
docs/icons/c++.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
docs/icons/eclipse.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
docs/icons/java.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
docs/icons/node.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
docs/icons/python.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
docs/icons/wyliodrin.png
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
docs/icons/xdk.png
Normal file
After Width: | Height: | Size: 5.1 KiB |
361
docs/images/LICENSE_CC_3_0.txt
Normal file
@ -0,0 +1,361 @@
|
||||
Creative Commons Legal Code
|
||||
|
||||
Attribution-NonCommercial-ShareAlike 3.0 Unported
|
||||
|
||||
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
|
||||
LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
|
||||
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
|
||||
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
|
||||
REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
|
||||
DAMAGES RESULTING FROM ITS USE.
|
||||
|
||||
License
|
||||
|
||||
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
|
||||
COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
|
||||
COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
|
||||
AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
|
||||
|
||||
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
|
||||
TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
|
||||
BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
|
||||
CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
|
||||
CONDITIONS.
|
||||
|
||||
1. Definitions
|
||||
|
||||
a. "Adaptation" means a work based upon the Work, or upon the Work and
|
||||
other pre-existing works, such as a translation, adaptation,
|
||||
derivative work, arrangement of music or other alterations of a
|
||||
literary or artistic work, or phonogram or performance and includes
|
||||
cinematographic adaptations or any other form in which the Work may be
|
||||
recast, transformed, or adapted including in any form recognizably
|
||||
derived from the original, except that a work that constitutes a
|
||||
Collection will not be considered an Adaptation for the purpose of
|
||||
this License. For the avoidance of doubt, where the Work is a musical
|
||||
work, performance or phonogram, the synchronization of the Work in
|
||||
timed-relation with a moving image ("synching") will be considered an
|
||||
Adaptation for the purpose of this License.
|
||||
b. "Collection" means a collection of literary or artistic works, such as
|
||||
encyclopedias and anthologies, or performances, phonograms or
|
||||
broadcasts, or other works or subject matter other than works listed
|
||||
in Section 1(g) below, which, by reason of the selection and
|
||||
arrangement of their contents, constitute intellectual creations, in
|
||||
which the Work is included in its entirety in unmodified form along
|
||||
with one or more other contributions, each constituting separate and
|
||||
independent works in themselves, which together are assembled into a
|
||||
collective whole. A work that constitutes a Collection will not be
|
||||
considered an Adaptation (as defined above) for the purposes of this
|
||||
License.
|
||||
c. "Distribute" means to make available to the public the original and
|
||||
copies of the Work or Adaptation, as appropriate, through sale or
|
||||
other transfer of ownership.
|
||||
d. "License Elements" means the following high-level license attributes
|
||||
as selected by Licensor and indicated in the title of this License:
|
||||
Attribution, Noncommercial, ShareAlike.
|
||||
e. "Licensor" means the individual, individuals, entity or entities that
|
||||
offer(s) the Work under the terms of this License.
|
||||
f. "Original Author" means, in the case of a literary or artistic work,
|
||||
the individual, individuals, entity or entities who created the Work
|
||||
or if no individual or entity can be identified, the publisher; and in
|
||||
addition (i) in the case of a performance the actors, singers,
|
||||
musicians, dancers, and other persons who act, sing, deliver, declaim,
|
||||
play in, interpret or otherwise perform literary or artistic works or
|
||||
expressions of folklore; (ii) in the case of a phonogram the producer
|
||||
being the person or legal entity who first fixes the sounds of a
|
||||
performance or other sounds; and, (iii) in the case of broadcasts, the
|
||||
organization that transmits the broadcast.
|
||||
g. "Work" means the literary and/or artistic work offered under the terms
|
||||
of this License including without limitation any production in the
|
||||
literary, scientific and artistic domain, whatever may be the mode or
|
||||
form of its expression including digital form, such as a book,
|
||||
pamphlet and other writing; a lecture, address, sermon or other work
|
||||
of the same nature; a dramatic or dramatico-musical work; a
|
||||
choreographic work or entertainment in dumb show; a musical
|
||||
composition with or without words; a cinematographic work to which are
|
||||
assimilated works expressed by a process analogous to cinematography;
|
||||
a work of drawing, painting, architecture, sculpture, engraving or
|
||||
lithography; a photographic work to which are assimilated works
|
||||
expressed by a process analogous to photography; a work of applied
|
||||
art; an illustration, map, plan, sketch or three-dimensional work
|
||||
relative to geography, topography, architecture or science; a
|
||||
performance; a broadcast; a phonogram; a compilation of data to the
|
||||
extent it is protected as a copyrightable work; or a work performed by
|
||||
a variety or circus performer to the extent it is not otherwise
|
||||
considered a literary or artistic work.
|
||||
h. "You" means an individual or entity exercising rights under this
|
||||
License who has not previously violated the terms of this License with
|
||||
respect to the Work, or who has received express permission from the
|
||||
Licensor to exercise rights under this License despite a previous
|
||||
violation.
|
||||
i. "Publicly Perform" means to perform public recitations of the Work and
|
||||
to communicate to the public those public recitations, by any means or
|
||||
process, including by wire or wireless means or public digital
|
||||
performances; to make available to the public Works in such a way that
|
||||
members of the public may access these Works from a place and at a
|
||||
place individually chosen by them; to perform the Work to the public
|
||||
by any means or process and the communication to the public of the
|
||||
performances of the Work, including by public digital performance; to
|
||||
broadcast and rebroadcast the Work by any means including signs,
|
||||
sounds or images.
|
||||
j. "Reproduce" means to make copies of the Work by any means including
|
||||
without limitation by sound or visual recordings and the right of
|
||||
fixation and reproducing fixations of the Work, including storage of a
|
||||
protected performance or phonogram in digital form or other electronic
|
||||
medium.
|
||||
|
||||
2. Fair Dealing Rights. Nothing in this License is intended to reduce,
|
||||
limit, or restrict any uses free from copyright or rights arising from
|
||||
limitations or exceptions that are provided for in connection with the
|
||||
copyright protection under copyright law or other applicable laws.
|
||||
|
||||
3. License Grant. Subject to the terms and conditions of this License,
|
||||
Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
|
||||
perpetual (for the duration of the applicable copyright) license to
|
||||
exercise the rights in the Work as stated below:
|
||||
|
||||
a. to Reproduce the Work, to incorporate the Work into one or more
|
||||
Collections, and to Reproduce the Work as incorporated in the
|
||||
Collections;
|
||||
b. to create and Reproduce Adaptations provided that any such Adaptation,
|
||||
including any translation in any medium, takes reasonable steps to
|
||||
clearly label, demarcate or otherwise identify that changes were made
|
||||
to the original Work. For example, a translation could be marked "The
|
||||
original work was translated from English to Spanish," or a
|
||||
modification could indicate "The original work has been modified.";
|
||||
c. to Distribute and Publicly Perform the Work including as incorporated
|
||||
in Collections; and,
|
||||
d. to Distribute and Publicly Perform Adaptations.
|
||||
|
||||
The above rights may be exercised in all media and formats whether now
|
||||
known or hereafter devised. The above rights include the right to make
|
||||
such modifications as are technically necessary to exercise the rights in
|
||||
other media and formats. Subject to Section 8(f), all rights not expressly
|
||||
granted by Licensor are hereby reserved, including but not limited to the
|
||||
rights described in Section 4(e).
|
||||
|
||||
4. Restrictions. The license granted in Section 3 above is expressly made
|
||||
subject to and limited by the following restrictions:
|
||||
|
||||
a. You may Distribute or Publicly Perform the Work only under the terms
|
||||
of this License. You must include a copy of, or the Uniform Resource
|
||||
Identifier (URI) for, this License with every copy of the Work You
|
||||
Distribute or Publicly Perform. You may not offer or impose any terms
|
||||
on the Work that restrict the terms of this License or the ability of
|
||||
the recipient of the Work to exercise the rights granted to that
|
||||
recipient under the terms of the License. You may not sublicense the
|
||||
Work. You must keep intact all notices that refer to this License and
|
||||
to the disclaimer of warranties with every copy of the Work You
|
||||
Distribute or Publicly Perform. When You Distribute or Publicly
|
||||
Perform the Work, You may not impose any effective technological
|
||||
measures on the Work that restrict the ability of a recipient of the
|
||||
Work from You to exercise the rights granted to that recipient under
|
||||
the terms of the License. This Section 4(a) applies to the Work as
|
||||
incorporated in a Collection, but this does not require the Collection
|
||||
apart from the Work itself to be made subject to the terms of this
|
||||
License. If You create a Collection, upon notice from any Licensor You
|
||||
must, to the extent practicable, remove from the Collection any credit
|
||||
as required by Section 4(d), as requested. If You create an
|
||||
Adaptation, upon notice from any Licensor You must, to the extent
|
||||
practicable, remove from the Adaptation any credit as required by
|
||||
Section 4(d), as requested.
|
||||
b. You may Distribute or Publicly Perform an Adaptation only under: (i)
|
||||
the terms of this License; (ii) a later version of this License with
|
||||
the same License Elements as this License; (iii) a Creative Commons
|
||||
jurisdiction license (either this or a later license version) that
|
||||
contains the same License Elements as this License (e.g.,
|
||||
Attribution-NonCommercial-ShareAlike 3.0 US) ("Applicable License").
|
||||
You must include a copy of, or the URI, for Applicable License with
|
||||
every copy of each Adaptation You Distribute or Publicly Perform. You
|
||||
may not offer or impose any terms on the Adaptation that restrict the
|
||||
terms of the Applicable License or the ability of the recipient of the
|
||||
Adaptation to exercise the rights granted to that recipient under the
|
||||
terms of the Applicable License. You must keep intact all notices that
|
||||
refer to the Applicable License and to the disclaimer of warranties
|
||||
with every copy of the Work as included in the Adaptation You
|
||||
Distribute or Publicly Perform. When You Distribute or Publicly
|
||||
Perform the Adaptation, You may not impose any effective technological
|
||||
measures on the Adaptation that restrict the ability of a recipient of
|
||||
the Adaptation from You to exercise the rights granted to that
|
||||
recipient under the terms of the Applicable License. This Section 4(b)
|
||||
applies to the Adaptation as incorporated in a Collection, but this
|
||||
does not require the Collection apart from the Adaptation itself to be
|
||||
made subject to the terms of the Applicable License.
|
||||
c. You may not exercise any of the rights granted to You in Section 3
|
||||
above in any manner that is primarily intended for or directed toward
|
||||
commercial advantage or private monetary compensation. The exchange of
|
||||
the Work for other copyrighted works by means of digital file-sharing
|
||||
or otherwise shall not be considered to be intended for or directed
|
||||
toward commercial advantage or private monetary compensation, provided
|
||||
there is no payment of any monetary compensation in con-nection with
|
||||
the exchange of copyrighted works.
|
||||
d. If You Distribute, or Publicly Perform the Work or any Adaptations or
|
||||
Collections, You must, unless a request has been made pursuant to
|
||||
Section 4(a), keep intact all copyright notices for the Work and
|
||||
provide, reasonable to the medium or means You are utilizing: (i) the
|
||||
name of the Original Author (or pseudonym, if applicable) if supplied,
|
||||
and/or if the Original Author and/or Licensor designate another party
|
||||
or parties (e.g., a sponsor institute, publishing entity, journal) for
|
||||
attribution ("Attribution Parties") in Licensor's copyright notice,
|
||||
terms of service or by other reasonable means, the name of such party
|
||||
or parties; (ii) the title of the Work if supplied; (iii) to the
|
||||
extent reasonably practicable, the URI, if any, that Licensor
|
||||
specifies to be associated with the Work, unless such URI does not
|
||||
refer to the copyright notice or licensing information for the Work;
|
||||
and, (iv) consistent with Section 3(b), in the case of an Adaptation,
|
||||
a credit identifying the use of the Work in the Adaptation (e.g.,
|
||||
"French translation of the Work by Original Author," or "Screenplay
|
||||
based on original Work by Original Author"). The credit required by
|
||||
this Section 4(d) may be implemented in any reasonable manner;
|
||||
provided, however, that in the case of a Adaptation or Collection, at
|
||||
a minimum such credit will appear, if a credit for all contributing
|
||||
authors of the Adaptation or Collection appears, then as part of these
|
||||
credits and in a manner at least as prominent as the credits for the
|
||||
other contributing authors. For the avoidance of doubt, You may only
|
||||
use the credit required by this Section for the purpose of attribution
|
||||
in the manner set out above and, by exercising Your rights under this
|
||||
License, You may not implicitly or explicitly assert or imply any
|
||||
connection with, sponsorship or endorsement by the Original Author,
|
||||
Licensor and/or Attribution Parties, as appropriate, of You or Your
|
||||
use of the Work, without the separate, express prior written
|
||||
permission of the Original Author, Licensor and/or Attribution
|
||||
Parties.
|
||||
e. For the avoidance of doubt:
|
||||
|
||||
i. Non-waivable Compulsory License Schemes. In those jurisdictions in
|
||||
which the right to collect royalties through any statutory or
|
||||
compulsory licensing scheme cannot be waived, the Licensor
|
||||
reserves the exclusive right to collect such royalties for any
|
||||
exercise by You of the rights granted under this License;
|
||||
ii. Waivable Compulsory License Schemes. In those jurisdictions in
|
||||
which the right to collect royalties through any statutory or
|
||||
compulsory licensing scheme can be waived, the Licensor reserves
|
||||
the exclusive right to collect such royalties for any exercise by
|
||||
You of the rights granted under this License if Your exercise of
|
||||
such rights is for a purpose or use which is otherwise than
|
||||
noncommercial as permitted under Section 4(c) and otherwise waives
|
||||
the right to collect royalties through any statutory or compulsory
|
||||
licensing scheme; and,
|
||||
iii. Voluntary License Schemes. The Licensor reserves the right to
|
||||
collect royalties, whether individually or, in the event that the
|
||||
Licensor is a member of a collecting society that administers
|
||||
voluntary licensing schemes, via that society, from any exercise
|
||||
by You of the rights granted under this License that is for a
|
||||
purpose or use which is otherwise than noncommercial as permitted
|
||||
under Section 4(c).
|
||||
f. Except as otherwise agreed in writing by the Licensor or as may be
|
||||
otherwise permitted by applicable law, if You Reproduce, Distribute or
|
||||
Publicly Perform the Work either by itself or as part of any
|
||||
Adaptations or Collections, You must not distort, mutilate, modify or
|
||||
take other derogatory action in relation to the Work which would be
|
||||
prejudicial to the Original Author's honor or reputation. Licensor
|
||||
agrees that in those jurisdictions (e.g. Japan), in which any exercise
|
||||
of the right granted in Section 3(b) of this License (the right to
|
||||
make Adaptations) would be deemed to be a distortion, mutilation,
|
||||
modification or other derogatory action prejudicial to the Original
|
||||
Author's honor and reputation, the Licensor will waive or not assert,
|
||||
as appropriate, this Section, to the fullest extent permitted by the
|
||||
applicable national law, to enable You to reasonably exercise Your
|
||||
right under Section 3(b) of this License (right to make Adaptations)
|
||||
but not otherwise.
|
||||
|
||||
5. Representations, Warranties and Disclaimer
|
||||
|
||||
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING AND TO THE
|
||||
FULLEST EXTENT PERMITTED BY APPLICABLE LAW, LICENSOR OFFERS THE WORK AS-IS
|
||||
AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE
|
||||
WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT
|
||||
LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||
ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT
|
||||
DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED
|
||||
WARRANTIES, SO THIS EXCLUSION MAY NOT APPLY TO YOU.
|
||||
|
||||
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
|
||||
LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
|
||||
ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
|
||||
ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
|
||||
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
7. Termination
|
||||
|
||||
a. This License and the rights granted hereunder will terminate
|
||||
automatically upon any breach by You of the terms of this License.
|
||||
Individuals or entities who have received Adaptations or Collections
|
||||
from You under this License, however, will not have their licenses
|
||||
terminated provided such individuals or entities remain in full
|
||||
compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
|
||||
survive any termination of this License.
|
||||
b. Subject to the above terms and conditions, the license granted here is
|
||||
perpetual (for the duration of the applicable copyright in the Work).
|
||||
Notwithstanding the above, Licensor reserves the right to release the
|
||||
Work under different license terms or to stop distributing the Work at
|
||||
any time; provided, however that any such election will not serve to
|
||||
withdraw this License (or any other license that has been, or is
|
||||
required to be, granted under the terms of this License), and this
|
||||
License will continue in full force and effect unless terminated as
|
||||
stated above.
|
||||
|
||||
8. Miscellaneous
|
||||
|
||||
a. Each time You Distribute or Publicly Perform the Work or a Collection,
|
||||
the Licensor offers to the recipient a license to the Work on the same
|
||||
terms and conditions as the license granted to You under this License.
|
||||
b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
|
||||
offers to the recipient a license to the original Work on the same
|
||||
terms and conditions as the license granted to You under this License.
|
||||
c. If any provision of this License is invalid or unenforceable under
|
||||
applicable law, it shall not affect the validity or enforceability of
|
||||
the remainder of the terms of this License, and without further action
|
||||
by the parties to this agreement, such provision shall be reformed to
|
||||
the minimum extent necessary to make such provision valid and
|
||||
enforceable.
|
||||
d. No term or provision of this License shall be deemed waived and no
|
||||
breach consented to unless such waiver or consent shall be in writing
|
||||
and signed by the party to be charged with such waiver or consent.
|
||||
e. This License constitutes the entire agreement between the parties with
|
||||
respect to the Work licensed here. There are no understandings,
|
||||
agreements or representations with respect to the Work not specified
|
||||
here. Licensor shall not be bound by any additional provisions that
|
||||
may appear in any communication from You. This License may not be
|
||||
modified without the mutual written agreement of the Licensor and You.
|
||||
f. The rights granted under, and the subject matter referenced, in this
|
||||
License were drafted utilizing the terminology of the Berne Convention
|
||||
for the Protection of Literary and Artistic Works (as amended on
|
||||
September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
|
||||
Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996
|
||||
and the Universal Copyright Convention (as revised on July 24, 1971).
|
||||
These rights and subject matter take effect in the relevant
|
||||
jurisdiction in which the License terms are sought to be enforced
|
||||
according to the corresponding provisions of the implementation of
|
||||
those treaty provisions in the applicable national law. If the
|
||||
standard suite of rights granted under applicable copyright law
|
||||
includes additional rights not granted under this License, such
|
||||
additional rights are deemed to be included in the License; this
|
||||
License is not intended to restrict the license of any rights under
|
||||
applicable law.
|
||||
|
||||
|
||||
Creative Commons Notice
|
||||
|
||||
Creative Commons is not a party to this License, and makes no warranty
|
||||
whatsoever in connection with the Work. Creative Commons will not be
|
||||
liable to You or any party on any legal theory for any damages
|
||||
whatsoever, including without limitation any general, special,
|
||||
incidental or consequential damages arising in connection to this
|
||||
license. Notwithstanding the foregoing two (2) sentences, if Creative
|
||||
Commons has expressly identified itself as the Licensor hereunder, it
|
||||
shall have all rights and obligations of Licensor.
|
||||
|
||||
Except for the limited purpose of indicating to the public that the
|
||||
Work is licensed under the CCPL, Creative Commons does not authorize
|
||||
the use by either party of the trademark "Creative Commons" or any
|
||||
related trademark or logo of Creative Commons without the prior
|
||||
written consent of Creative Commons. Any permitted use will be in
|
||||
compliance with Creative Commons' then-current trademark usage
|
||||
guidelines, as may be published on its website or otherwise made
|
||||
available upon request from time to time. For the avoidance of doubt,
|
||||
this trademark restriction does not form part of this License.
|
||||
|
||||
Creative Commons may be contacted at https://creativecommons.org/.
|
||||
|
BIN
docs/images/a110x.jpg
Executable file
After Width: | Height: | Size: 22 KiB |
BIN
docs/images/ad8232.jpg
Executable file
After Width: | Height: | Size: 222 KiB |
BIN
docs/images/adafruitms1438.jpg
Executable file
After Width: | Height: | Size: 168 KiB |
BIN
docs/images/adafruitss.jpg
Executable file
After Width: | Height: | Size: 173 KiB |
BIN
docs/images/adc121c021.jpg
Executable file
After Width: | Height: | Size: 15 KiB |
BIN
docs/images/adxl335.jpg
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
docs/images/adxl345.jpeg
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
docs/images/am2315.jpeg
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
docs/images/apds9002.jpg
Executable file
After Width: | Height: | Size: 22 KiB |
BIN
docs/images/at42qt1070.jpg
Executable file
After Width: | Height: | Size: 178 KiB |
BIN
docs/images/biss0001.jpg
Executable file
After Width: | Height: | Size: 31 KiB |
BIN
docs/images/bmp085.jpeg
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
docs/images/buzzer.jpg
Executable file
After Width: | Height: | Size: 9.7 KiB |
BIN
docs/images/cjq4435.jpg
Executable file
After Width: | Height: | Size: 110 KiB |
BIN
docs/images/ds1307.jpg
Executable file
After Width: | Height: | Size: 28 KiB |
BIN
docs/images/ecs1030.jpg
Executable file
After Width: | Height: | Size: 69 KiB |
BIN
docs/images/enc03r.jpg
Executable file
After Width: | Height: | Size: 23 KiB |
BIN
docs/images/es08a.jpg
Normal file
After Width: | Height: | Size: 166 KiB |
BIN
docs/images/flex.jpg
Executable file
After Width: | Height: | Size: 12 KiB |
BIN
docs/images/gp2y0a.jpg
Executable file
After Width: | Height: | Size: 44 KiB |
BIN
docs/images/grovebutton.jpg
Executable file
After Width: | Height: | Size: 164 KiB |
BIN
docs/images/grovecircularled.jpg
Executable file
After Width: | Height: | Size: 52 KiB |
BIN
docs/images/grovecollision.jpg
Executable file
After Width: | Height: | Size: 27 KiB |
BIN
docs/images/groveehr.jpg
Executable file
After Width: | Height: | Size: 83 KiB |
BIN
docs/images/groveeldriver.jpg
Executable file
After Width: | Height: | Size: 10 KiB |
BIN
docs/images/groveelectromagnet.jpg
Executable file
After Width: | Height: | Size: 6.6 KiB |
BIN
docs/images/groveemg.jpg
Executable file
After Width: | Height: | Size: 41 KiB |
BIN
docs/images/grovegsr.jpg
Executable file
After Width: | Height: | Size: 15 KiB |
BIN
docs/images/groveled.jpg
Executable file
After Width: | Height: | Size: 138 KiB |
BIN
docs/images/grovelight.jpg
Executable file
After Width: | Height: | Size: 22 KiB |
BIN
docs/images/grovelinefinder.jpg
Executable file
After Width: | Height: | Size: 77 KiB |
BIN
docs/images/groveloudness.jpg
Executable file
After Width: | Height: | Size: 9.4 KiB |
BIN
docs/images/grovemd.jpg
Executable file
After Width: | Height: | Size: 167 KiB |
BIN
docs/images/grovemoisture.jpg
Executable file
After Width: | Height: | Size: 3.3 KiB |
BIN
docs/images/groveo2.jpg
Executable file
After Width: | Height: | Size: 79 KiB |
BIN
docs/images/groverelay.jpg
Executable file
After Width: | Height: | Size: 18 KiB |
BIN
docs/images/grovergblcd.jpg
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
docs/images/groverotary.jpeg
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
docs/images/grovescam.jpg
Executable file
After Width: | Height: | Size: 135 KiB |
BIN
docs/images/groveslide.jpeg
Normal file
After Width: | Height: | Size: 8.7 KiB |
BIN
docs/images/grovespeaker.jpg
Executable file
After Width: | Height: | Size: 97 KiB |
BIN
docs/images/grovetemp.jpg
Executable file
After Width: | Height: | Size: 21 KiB |
BIN
docs/images/grovevdiv.jpg
Executable file
After Width: | Height: | Size: 105 KiB |
BIN
docs/images/grovewater.jpg
Executable file
After Width: | Height: | Size: 11 KiB |
BIN
docs/images/grovewfs.jpg
Executable file
After Width: | Height: | Size: 90 KiB |
BIN
docs/images/guvas12d.jpg
Executable file
After Width: | Height: | Size: 100 KiB |
BIN
docs/images/h3lis331dl.jpg
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
docs/images/hm11.jpg
Executable file
After Width: | Height: | Size: 32 KiB |
BIN
docs/images/hmc5883l.jpeg
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
docs/images/hmtrp.jpg
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
docs/images/hp20x.jpg
Executable file
After Width: | Height: | Size: 929 KiB |
BIN
docs/images/ht9170.jpg
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
docs/images/htu21d.jpeg
Normal file
After Width: | Height: | Size: 134 KiB |
BIN
docs/images/hx711.jpeg
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
docs/images/ina132.jpg
Executable file
After Width: | Height: | Size: 14 KiB |
BIN
docs/images/isd1820.jpg
Executable file
After Width: | Height: | Size: 10 KiB |
BIN
docs/images/itg3200.jpeg
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
docs/images/joystick12.jpg
Executable file
After Width: | Height: | Size: 22 KiB |
BIN
docs/images/l298.jpg
Executable file
After Width: | Height: | Size: 169 KiB |
BIN
docs/images/lcm1602.jpeg
Normal file
After Width: | Height: | Size: 194 KiB |
BIN
docs/images/ldt0028.jpg
Executable file
After Width: | Height: | Size: 108 KiB |
BIN
docs/images/lolshield.jpg
Normal file
After Width: | Height: | Size: 140 KiB |
BIN
docs/images/lpd8806.jpg
Executable file
After Width: | Height: | Size: 52 KiB |
BIN
docs/images/lsm303.jpeg
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
docs/images/m24lr64e.jpg
Executable file
After Width: | Height: | Size: 24 KiB |
BIN
docs/images/max31855.jpg
Executable file
After Width: | Height: | Size: 196 KiB |
BIN
docs/images/maxsonarez.jpg
Executable file
After Width: | Height: | Size: 60 KiB |
BIN
docs/images/mcp9808.jpg
Normal file
After Width: | Height: | Size: 49 KiB |
BIN
docs/images/mhz16.jpg
Executable file
After Width: | Height: | Size: 16 KiB |
BIN
docs/images/mic.jpg
Normal file
After Width: | Height: | Size: 46 KiB |
BIN
docs/images/micsv89.jpg
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
docs/images/mlx90614.jpg
Executable file
After Width: | Height: | Size: 170 KiB |
BIN
docs/images/mma7455.jpg
Executable file
After Width: | Height: | Size: 67 KiB |
BIN
docs/images/mma7660.jpg
Executable file
After Width: | Height: | Size: 12 KiB |
BIN
docs/images/mpl3115a2.jpg
Normal file
After Width: | Height: | Size: 142 KiB |
BIN
docs/images/mpr121.jpg
Normal file
After Width: | Height: | Size: 95 KiB |
BIN
docs/images/mpu9150.jpg
Normal file
After Width: | Height: | Size: 124 KiB |
BIN
docs/images/mq2-5.jpeg
Normal file
After Width: | Height: | Size: 33 KiB |