mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-20 08:00:31 +00:00
Compare commits
1374 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fc0a60e191 | ||
|
|
e190c4e2bc | ||
|
|
4a3489887a | ||
|
|
79458ae7c5 | ||
|
|
d01aa2d08a | ||
|
|
8f621c3ed7 | ||
|
|
d915c20899 | ||
|
|
047b54da19 | ||
|
|
9ddae27cf1 | ||
|
|
fbd5fff7b0 | ||
|
|
4d1705e3a5 | ||
|
|
faae3c8cd5 | ||
|
|
7e7fd3c4d5 | ||
|
|
2beac6fed7 | ||
|
|
8dd3a2bdc4 | ||
|
|
98b5faae47 | ||
|
|
6322010e0a | ||
|
|
6da4265876 | ||
|
|
2e5f0a07c7 | ||
|
|
4b9f58c085 | ||
|
|
d413de0ad7 | ||
|
|
61234aae05 | ||
|
|
1fa317733c | ||
|
|
b4a48e199e | ||
|
|
1b1f941e3c | ||
|
|
5502026ae1 | ||
|
|
8846260bdf | ||
|
|
26d4ad2bb6 | ||
|
|
761a77fad0 | ||
|
|
5fefa11234 | ||
|
|
6087ede004 | ||
|
|
5afc71f382 | ||
|
|
c090015741 | ||
|
|
e3d39a0192 | ||
|
|
bf926e3546 | ||
|
|
f1e8bff3ec | ||
|
|
cc47fbed90 | ||
|
|
b09a281b09 | ||
|
|
311f439a6a | ||
|
|
0ed42440ab | ||
|
|
c78351c20e | ||
|
|
1a04ba5bfc | ||
|
|
f96491577f | ||
|
|
2516216d14 | ||
|
|
73723a56aa | ||
|
|
49f86b0aa9 | ||
|
|
6d3fb2dca0 | ||
|
|
0289b51969 | ||
|
|
256c5ab060 | ||
|
|
599ba826a8 | ||
|
|
f1f31a7861 | ||
|
|
783667552e | ||
|
|
ac54521aed | ||
|
|
ba11d72b63 | ||
|
|
ccfe5a0472 | ||
|
|
3d14d5716a | ||
|
|
5c60764408 | ||
|
|
8420dce1aa | ||
|
|
667b9f1a88 | ||
|
|
75040edfdb | ||
|
|
424c1b502a | ||
|
|
549a0b61b4 | ||
|
|
1f9ab059f9 | ||
|
|
747372685a | ||
|
|
00f45ec9f5 | ||
|
|
cf208d4192 | ||
|
|
dd44c82760 | ||
|
|
1d8bec80a0 | ||
|
|
737c3e8ae1 | ||
|
|
493110af7a | ||
|
|
beaeea740d | ||
|
|
f80f1f617d | ||
|
|
84bd5bd665 | ||
|
|
a85a341cae | ||
|
|
d6fdbb4da5 | ||
|
|
748a0790c9 | ||
|
|
df3ebacd88 | ||
|
|
6abbf040be | ||
|
|
c407cdba2d | ||
|
|
b49fd36c15 | ||
|
|
ac6f09eb2f | ||
|
|
1f487d6757 | ||
|
|
6d7a1a1623 | ||
|
|
6e269b363b | ||
|
|
854d2dfbda | ||
|
|
0404f5f3ba | ||
|
|
9b428e5e2f | ||
|
|
a9d6e04cf2 | ||
|
|
8e6cc01905 | ||
|
|
6bfc0d63b4 | ||
|
|
c9b8dfabb1 | ||
|
|
7cf40fe877 | ||
|
|
210754c034 | ||
|
|
b8235ff707 | ||
|
|
3b824c9067 | ||
|
|
5d778a5cec | ||
|
|
43d12970a2 | ||
|
|
71cbdf2a56 | ||
|
|
e1f19b6c61 | ||
|
|
ed1714aa63 | ||
|
|
79b7b8ad0f | ||
|
|
a9d0bec8bc | ||
|
|
1485cbda77 | ||
|
|
2c9867ff5b | ||
|
|
60d10c0a9e | ||
|
|
09e683a3be | ||
|
|
2abe404847 | ||
|
|
4e10d5a9e5 | ||
|
|
e52c57b894 | ||
|
|
10a63f3d05 | ||
|
|
4e7f9312f8 | ||
|
|
4685536b8c | ||
|
|
f2cb406bfb | ||
|
|
a993c9588f | ||
|
|
c97e054691 | ||
|
|
0c6015cfa5 | ||
|
|
6eed836f76 | ||
|
|
d31ad04cc2 | ||
|
|
b21b2dada3 | ||
|
|
a2d04934c4 | ||
|
|
52d4771324 | ||
|
|
ed4b2b74e2 | ||
|
|
30f8ed2da5 | ||
|
|
70e30375eb | ||
|
|
95f46eef23 | ||
|
|
ade874e753 | ||
|
|
8b662d7ec9 | ||
|
|
ccfbe647aa | ||
|
|
60d96354ff | ||
|
|
af6bf08bc1 | ||
|
|
8c22204a6c | ||
|
|
502e450973 | ||
|
|
7fb01d4ea9 | ||
|
|
072d9d4350 | ||
|
|
d88b72498d | ||
|
|
14b2827cec | ||
|
|
b5a36dd90c | ||
|
|
16eb450927 | ||
|
|
68d9bae1ae | ||
|
|
539c8de27d | ||
|
|
30abbdf826 | ||
|
|
4ceb5916ca | ||
|
|
4843960fed | ||
|
|
42667d6a2a | ||
|
|
682823d5b8 | ||
|
|
28707a6948 | ||
|
|
4aa1a41edc | ||
|
|
e6936f1b7c | ||
|
|
d46dd64f7e | ||
|
|
f2e20c8071 | ||
|
|
4d07eb1255 | ||
|
|
3d44973c0f | ||
|
|
a5ab75e1f3 | ||
|
|
bc9c587b48 | ||
|
|
fe64b14185 | ||
|
|
53907d3739 | ||
|
|
aae10bf0c2 | ||
|
|
7ce0e45db3 | ||
|
|
d09a0a2a5d | ||
|
|
7e9bff372d | ||
|
|
c91d68ae37 | ||
|
|
ada735527a | ||
|
|
c1dae3d38f | ||
|
|
e750248252 | ||
|
|
6c00bd1aec | ||
|
|
3e27fc89fd | ||
|
|
e2ec5451a7 | ||
|
|
3e86d30b82 | ||
|
|
55a9054ec5 | ||
|
|
efe1ccf5e5 | ||
|
|
cc79250fcc | ||
|
|
acca14b2ba | ||
|
|
7ea7891b67 | ||
|
|
3135647219 | ||
|
|
d75dc39a32 | ||
|
|
ac18ff67ca | ||
|
|
32786cc7f7 | ||
|
|
e6bf9698ed | ||
|
|
293bcf1316 | ||
|
|
94fd0e8320 | ||
|
|
4ac5d5f8d7 | ||
|
|
6c5deb41fd | ||
|
|
b421d467ad | ||
|
|
91f312ebde | ||
|
|
dbb20c23fa | ||
|
|
0fccd99446 | ||
|
|
0b5be18c8a | ||
|
|
55a39eb2f3 | ||
|
|
d2249d5c56 | ||
|
|
362f584d66 | ||
|
|
cdca16f655 | ||
|
|
1fb76157c8 | ||
|
|
6f812f7003 | ||
|
|
761bf3c4c2 | ||
|
|
8575b151fc | ||
|
|
78e0a53d03 | ||
|
|
a945f85d6f | ||
|
|
41d16f1696 | ||
|
|
a35865b749 | ||
|
|
cdcc1d54f4 | ||
|
|
35f34bbdcc | ||
|
|
121da9468e | ||
|
|
e3cc82b9fe | ||
|
|
0daf79bfc8 | ||
|
|
f38572b444 | ||
|
|
622b919b37 | ||
|
|
30e11cbf53 | ||
|
|
c866677a8f | ||
|
|
592bcf3867 | ||
|
|
5df5b70909 | ||
|
|
0293141817 | ||
|
|
c5fd670803 | ||
|
|
9c167fc3bf | ||
|
|
d7096758aa | ||
|
|
f962c2e371 | ||
|
|
7b650ef1b9 | ||
|
|
f374544418 | ||
|
|
fc283a321f | ||
|
|
5c0ea2b446 | ||
|
|
7356082754 | ||
|
|
828077c2de | ||
|
|
faa111ecc0 | ||
|
|
41f864ef09 | ||
|
|
ec6236f8c7 | ||
|
|
af4b4c3fe5 | ||
|
|
a9eb51f177 | ||
|
|
b360afd018 | ||
|
|
b219be2e6d | ||
|
|
17b9a9e917 | ||
|
|
ad98f5aa9e | ||
|
|
309ca06685 | ||
|
|
f7466b0e1a | ||
|
|
2fbb26789f | ||
|
|
ebc8cbf4e0 | ||
|
|
8633d6c2df | ||
|
|
9e4f700aae | ||
|
|
2ed9a48d6e | ||
|
|
5917cdaff8 | ||
|
|
1661294de5 | ||
|
|
030a345258 | ||
|
|
3ed32a77d0 | ||
|
|
4c2c1a3631 | ||
|
|
96db5ea596 | ||
|
|
f5be2be550 | ||
|
|
10c9d899bb | ||
|
|
8d5901c815 | ||
|
|
a2f37668f1 | ||
|
|
a738eeade4 | ||
|
|
1fc67381f4 | ||
|
|
8ee3f3b353 | ||
|
|
09a43fae25 | ||
|
|
80c80bb5fe | ||
|
|
cd686fc09a | ||
|
|
89ad7c70d5 | ||
|
|
b61a2e0efe | ||
|
|
ae884afe24 | ||
|
|
767606f9f2 | ||
|
|
d56525c807 | ||
|
|
a64bcb1408 | ||
|
|
04b5954f96 | ||
|
|
aae302f15e | ||
|
|
b5eec87e75 | ||
|
|
ed145f5799 | ||
|
|
a2cf0a2295 | ||
|
|
8da1c4b5bb | ||
|
|
bcdb62e140 | ||
|
|
4ac34f7c7c | ||
|
|
40e42c4c2d | ||
|
|
33e242de6a | ||
|
|
bf7eb25cf5 | ||
|
|
0b332b5536 | ||
|
|
cb637c033c | ||
|
|
232f56b9e6 | ||
|
|
08b8b3142d | ||
|
|
4deeb083fc | ||
|
|
9adfa48de8 | ||
|
|
28171c1aa7 | ||
|
|
ef87ec519e | ||
|
|
d102d96431 | ||
|
|
a8ae85f6ca | ||
|
|
0da6027438 | ||
|
|
bc2a93183d | ||
|
|
2e559d8237 | ||
|
|
fdae0065ac | ||
|
|
d951795ae4 | ||
|
|
5d936f3518 | ||
|
|
f364d13ddf | ||
|
|
85ac4e4648 | ||
|
|
0b4b2dda14 | ||
|
|
a10a29b576 | ||
|
|
00158f85d9 | ||
|
|
3f1e218a01 | ||
|
|
727782a04a | ||
|
|
ff9f54e187 | ||
|
|
dd8eb2903e | ||
|
|
71d7fcb016 | ||
|
|
037da40423 | ||
|
|
adbb533de6 | ||
|
|
9566187ab3 | ||
|
|
f152ddaa5e | ||
|
|
9be3a02fb9 | ||
|
|
4aed32e786 | ||
|
|
fadb9b8378 | ||
|
|
b7b13de36a | ||
|
|
ce29fca6b6 | ||
|
|
39e74bc8ab | ||
|
|
a45fbd0fae | ||
|
|
68c72ac012 | ||
|
|
e10dd54a9b | ||
|
|
09fe0bdc24 | ||
|
|
2826ceea00 | ||
|
|
6194ef4831 | ||
|
|
9542e8a8f9 | ||
|
|
3c56a7edc5 | ||
|
|
804a9a0630 | ||
|
|
9eb6d6a4ec | ||
|
|
0ef58f685a | ||
|
|
7580d021d3 | ||
|
|
71ea13fa4b | ||
|
|
9ddaf93eab | ||
|
|
d23697aef3 | ||
|
|
4d58025ded | ||
|
|
a5d540260e | ||
|
|
413df163d8 | ||
|
|
00242daa6b | ||
|
|
e48247f9eb | ||
|
|
633fda9a6e | ||
|
|
df691a2034 | ||
|
|
60c4b5ecd7 | ||
|
|
a08a4f4efb | ||
|
|
cc41eb9dd8 | ||
|
|
c9de7cfe6d | ||
|
|
0617062560 | ||
|
|
bc0f099091 | ||
|
|
0a92f6ff41 | ||
|
|
8c6bd1d5be | ||
|
|
d7e5e3193c | ||
|
|
56743415f9 | ||
|
|
32a330a4a4 | ||
|
|
c5d321cb6f | ||
|
|
c2a5199f0d | ||
|
|
7a8aa100b0 | ||
|
|
f2607d336a | ||
|
|
ea39c866de | ||
|
|
32b636d77a | ||
|
|
0cc838702a | ||
|
|
1029a62208 | ||
|
|
82545b8265 | ||
|
|
10ad08db41 | ||
|
|
b67847c9cf | ||
|
|
31ef9b5203 | ||
|
|
324e6501d6 | ||
|
|
8758d3d4cf | ||
|
|
9bef36f23a | ||
|
|
16acea57cc | ||
|
|
a6f98a8b28 | ||
|
|
c98339e104 | ||
|
|
2237b431c2 | ||
|
|
c15a9a8294 | ||
|
|
f3914c74f0 | ||
|
|
312fad1293 | ||
|
|
87eb459823 | ||
|
|
65c845ea67 | ||
|
|
b74f10a878 | ||
|
|
8e57a58dd6 | ||
|
|
9cf288f6f3 | ||
|
|
685464c204 | ||
|
|
dd7691ec60 | ||
|
|
8625a8672a | ||
|
|
abf30c20b1 | ||
|
|
667bfb0173 | ||
|
|
fe350d5b6f | ||
|
|
d79c186a13 | ||
|
|
8160f8a23f | ||
|
|
c08bd6ba9c | ||
|
|
dcfdd76113 | ||
|
|
9d65f4dd09 | ||
|
|
94dd884325 | ||
|
|
f6693af628 | ||
|
|
4eefaffb47 | ||
|
|
5e323eefa2 | ||
|
|
dd07d878a3 | ||
|
|
430a8c4e11 | ||
|
|
099b7f2ac6 | ||
|
|
0023d448f7 | ||
|
|
ce08fa8e9e | ||
|
|
15bb39704a | ||
|
|
f12350ce62 | ||
|
|
9cd3e2e887 | ||
|
|
11006597c9 | ||
|
|
0f42d5a344 | ||
|
|
9eaee53bb6 | ||
|
|
0bb229451a | ||
|
|
2d97b777b6 | ||
|
|
06f2889b2d | ||
|
|
9107d2831b | ||
|
|
d0b5d6539b | ||
|
|
3d4ba1a3b0 | ||
|
|
ad6d0ac59e | ||
|
|
893f36e81e | ||
|
|
899d150621 | ||
|
|
adb3b25c67 | ||
|
|
34c6805f7a | ||
|
|
98a7a16ead | ||
|
|
bdaef7956d | ||
|
|
261353680c | ||
|
|
5904734d99 | ||
|
|
f2f79a1647 | ||
|
|
966291029d | ||
|
|
8d787768c4 | ||
|
|
3fcdec1ad7 | ||
|
|
ceb13b8aa4 | ||
|
|
3c6e206e97 | ||
|
|
cd7e479fc7 | ||
|
|
63a18b8193 | ||
|
|
780c7b03ba | ||
|
|
bdcc8ecf66 | ||
|
|
655859b865 | ||
|
|
5e149161b7 | ||
|
|
7854030b90 | ||
|
|
46da64063b | ||
|
|
b7b057a162 | ||
|
|
ca2c8357c9 | ||
|
|
8163d78ce3 | ||
|
|
98cbcf619b | ||
|
|
59e9e2e85f | ||
|
|
c124e32ab5 | ||
|
|
fc4d03d419 | ||
|
|
a63c53530a | ||
|
|
2f398d311e | ||
|
|
b42aed9ed9 | ||
|
|
20a2bfd109 | ||
|
|
2e86a60982 | ||
|
|
89292a763d | ||
|
|
ab907918b0 | ||
|
|
58aa9f1f52 | ||
|
|
5498741f0b | ||
|
|
63b10db645 | ||
|
|
2e8d01f36b | ||
|
|
fd618f4357 | ||
|
|
965aa5e6ef | ||
|
|
94f880ad23 | ||
|
|
fbcc9a2393 | ||
|
|
38abafed2e | ||
|
|
10113a3517 | ||
|
|
f50ea1b14c | ||
|
|
01b1101288 | ||
|
|
61033059c4 | ||
|
|
6f02decf7a | ||
|
|
8f75878544 | ||
|
|
e7f1cf4238 | ||
|
|
666ae5d0e1 | ||
|
|
316f6aba9e | ||
|
|
c36c04537a | ||
|
|
a032502713 | ||
|
|
49006696ac | ||
|
|
bb4131b33d | ||
|
|
3c7c61a46c | ||
|
|
2437d0fbd0 | ||
|
|
37c71e5a02 | ||
|
|
c207df8b0e | ||
|
|
99280926ed | ||
|
|
81215a2461 | ||
|
|
72c387987b | ||
|
|
26f06f35fe | ||
|
|
0a33a1d3e7 | ||
|
|
2af0ef847b | ||
|
|
740d3f647d | ||
|
|
b7762c6a7d | ||
|
|
9814de0570 | ||
|
|
02bfef2184 | ||
|
|
9af7f280b7 | ||
|
|
9a464ca077 | ||
|
|
ca0ff4b51f | ||
|
|
adf920b6a9 | ||
|
|
f65150aa64 | ||
|
|
40f9b9f4e0 | ||
|
|
002b9b0f65 | ||
|
|
0487631c76 | ||
|
|
8d88bae9e8 | ||
|
|
2660ac0570 | ||
|
|
924c421beb | ||
|
|
4fea65a265 | ||
|
|
4a2f9d2571 | ||
|
|
040957c1d4 | ||
|
|
9e78b40d2e | ||
|
|
66c5892c9e | ||
|
|
e6798f5b96 | ||
|
|
5dfdec6c25 | ||
|
|
fa0b8668fb | ||
|
|
a0f40fd02b | ||
|
|
800f66b3d4 | ||
|
|
1213521c30 | ||
|
|
a77082c1ed | ||
|
|
b6991ab2e0 | ||
|
|
e05a417cd2 | ||
|
|
78bf45f3f3 | ||
|
|
5485f131c3 | ||
|
|
af8ce457f3 | ||
|
|
4e3acb6a5d | ||
|
|
fc5c876a81 | ||
|
|
75aff99bf6 | ||
|
|
fec6832122 | ||
|
|
c54cb41805 | ||
|
|
b8c4365479 | ||
|
|
5db0548af0 | ||
|
|
b5a03474bf | ||
|
|
6448738e9b | ||
|
|
583123e042 | ||
|
|
53bb6a8c2c | ||
|
|
d296abb8d0 | ||
|
|
5345b160fc | ||
|
|
045132ba6e | ||
|
|
4080a63938 | ||
|
|
f754e31ead | ||
|
|
7a6709a24e | ||
|
|
676ca5c3a0 | ||
|
|
dfcbeff0d4 | ||
|
|
181eb532e1 | ||
|
|
bc10722013 | ||
|
|
60efa62dc8 | ||
|
|
7c7022a198 | ||
|
|
89c60dacfd | ||
|
|
34c303efb5 | ||
|
|
e9d88a101d | ||
|
|
e5c5185eda | ||
|
|
e268611bec | ||
|
|
4a6e433b21 | ||
|
|
b95ff08295 | ||
|
|
cfac326c00 | ||
|
|
c01d9dc1f0 | ||
|
|
99b521901c | ||
|
|
6977429706 | ||
|
|
ac437d3d12 | ||
|
|
d2098da06c | ||
|
|
71fde41477 | ||
|
|
b3d9e19899 | ||
|
|
aaac4894c9 | ||
|
|
92ee6017cd | ||
|
|
7514e7139a | ||
|
|
048f07f67f | ||
|
|
3ce5f50755 | ||
|
|
a3f7ceb395 | ||
|
|
1789b3de59 | ||
|
|
e82c6764f9 | ||
|
|
bf3a4f6464 | ||
|
|
d8627b5e3f | ||
|
|
2291f4ebec | ||
|
|
216cd0bf02 | ||
|
|
8dd8a97c34 | ||
|
|
11856c6b00 | ||
|
|
774452bbbb | ||
|
|
4fcb6272f4 | ||
|
|
cff9149920 | ||
|
|
89f747a218 | ||
|
|
238b22e5b5 | ||
|
|
fe0b84ddaf | ||
|
|
b88fec2304 | ||
|
|
23109e1a82 | ||
|
|
9d2a4717d0 | ||
|
|
6219ddc581 | ||
|
|
9d3eed3b43 | ||
|
|
48d7a1ef3a | ||
|
|
7685cf1811 | ||
|
|
668d7af7d2 | ||
|
|
79c304a24a | ||
|
|
ca0d8a445e | ||
|
|
98efcd5220 | ||
|
|
93c1315bbd | ||
|
|
1677e8f847 | ||
|
|
e2d46f8040 | ||
|
|
b596ede727 | ||
|
|
bd17343334 | ||
|
|
d0a51bec01 | ||
|
|
e2350103f4 | ||
|
|
1218cc8f65 | ||
|
|
7ffc20426b | ||
|
|
5014b84c30 | ||
|
|
f2e9e3f2dc | ||
|
|
41dda3d3de | ||
|
|
fd1e01579c | ||
|
|
d86c5a9092 | ||
|
|
1e2f952a9c | ||
|
|
b835f63956 | ||
|
|
a92ed31914 | ||
|
|
2011c7d689 | ||
|
|
1c57eadd33 | ||
|
|
2a44ae639e | ||
|
|
7847143610 | ||
|
|
a19a27ff33 | ||
|
|
19bd4d8cf7 | ||
|
|
7f9b19cce8 | ||
|
|
c13d5c21f3 | ||
|
|
639d2eefc6 | ||
|
|
faa5e07af8 | ||
|
|
b440abef33 | ||
|
|
b2bda9498c | ||
|
|
c6581031d5 | ||
|
|
4ae599990a | ||
|
|
d5a9334306 | ||
|
|
353334f69b | ||
|
|
20b420bb84 | ||
|
|
415201c3dc | ||
|
|
950c1c060e | ||
|
|
fc6dec9edd | ||
|
|
01530385f1 | ||
|
|
65f49f9ffd | ||
|
|
f5aa0135b1 | ||
|
|
40fa3e076c | ||
|
|
18f628848c | ||
|
|
b4f8219170 | ||
|
|
bf71c6f01e | ||
|
|
1e193853eb | ||
|
|
752b305270 | ||
|
|
28a50c15e9 | ||
|
|
c1da605f6d | ||
|
|
cf9727c4be | ||
|
|
dabf833c10 | ||
|
|
488933eddc | ||
|
|
4a331c6fb3 | ||
|
|
3a43c08ae3 | ||
|
|
bd4898222f | ||
|
|
bd3394f528 | ||
|
|
a500b2b293 | ||
|
|
21481c4a6a | ||
|
|
0e78513b5a | ||
|
|
cec9cb7662 | ||
|
|
b82b7781ee | ||
|
|
a194009e00 | ||
|
|
947e50f33d | ||
|
|
e5908bfdaa | ||
|
|
14d927d414 | ||
|
|
263b7aa07a | ||
|
|
fe5fd2494c | ||
|
|
8e8fec1e19 | ||
|
|
9fd0f35134 | ||
|
|
112b3719e4 | ||
|
|
83a045ec83 | ||
|
|
e709933695 | ||
|
|
132018a136 | ||
|
|
39c7e629fb | ||
|
|
c135dd611b | ||
|
|
e14f3677e5 | ||
|
|
02f3298a58 | ||
|
|
e704a3155c | ||
|
|
a587e35a9d | ||
|
|
340d05eebf | ||
|
|
7f24927c43 | ||
|
|
e6cd9873cd | ||
|
|
0ce73b4d0e | ||
|
|
8e022654dc | ||
|
|
4abc1d21e3 | ||
|
|
7f60e38fee | ||
|
|
83b311beac | ||
|
|
28c009a072 | ||
|
|
212dff253f | ||
|
|
19a2337c99 | ||
|
|
4342595ea8 | ||
|
|
7c7172ca18 | ||
|
|
305ebf5c4b | ||
|
|
9dd65f2801 | ||
|
|
05fe029a62 | ||
|
|
3d1e01e283 | ||
|
|
bb8c6b2c52 | ||
|
|
3dc1963a2d | ||
|
|
42b834d64c | ||
|
|
ba55fcac27 | ||
|
|
ff6d41b6e8 | ||
|
|
b218eea839 | ||
|
|
ce1ac08b19 | ||
|
|
b5ab7267c2 | ||
|
|
fd5932c544 | ||
|
|
477a171fbc | ||
|
|
dc960a6043 | ||
|
|
b45e9a68a8 | ||
|
|
5c375d3ae8 | ||
|
|
6504013077 | ||
|
|
709b1fd299 | ||
|
|
c1e460183b | ||
|
|
05f89b3922 | ||
|
|
1b1270e847 | ||
|
|
f94835becf | ||
|
|
94229ca593 | ||
|
|
b2c57f42fc | ||
|
|
e1293616d6 | ||
|
|
684ca32e9b | ||
|
|
52006fc6ea | ||
|
|
74e2cf77fa | ||
|
|
7d649f432b | ||
|
|
2e9dfe0fbb | ||
|
|
0a46cc56a2 | ||
|
|
25f35fbbb4 | ||
|
|
2edbcbdf66 | ||
|
|
3d8fb53073 | ||
|
|
5c0f42a277 | ||
|
|
b1bf9db8fa | ||
|
|
2ef3dd8ff7 | ||
|
|
b81ee87f4d | ||
|
|
bf6a3b522d | ||
|
|
3a7fd01f22 | ||
|
|
daa308c33a | ||
|
|
465ab00bc5 | ||
|
|
fa9b91ad1d | ||
|
|
2c238010a7 | ||
|
|
aac9c6119d | ||
|
|
60b83d84ea | ||
|
|
abfeb4ef06 | ||
|
|
c17e81b2aa | ||
|
|
2f4fcb5ecc | ||
|
|
dcb48081a0 | ||
|
|
0030635237 | ||
|
|
34ca9a7f93 | ||
|
|
b0d468c0f7 | ||
|
|
068ce4ca55 | ||
|
|
46b37aaa31 | ||
|
|
e98c3e8143 | ||
|
|
38771f270b | ||
|
|
339353a96c | ||
|
|
c8e642494b | ||
|
|
ea858d54fa | ||
|
|
b82e7c1a88 | ||
|
|
39f26e945e | ||
|
|
e62f569b5d | ||
|
|
f9b5dafe29 | ||
|
|
603c84c700 | ||
|
|
96dc12ccce | ||
|
|
37bc075cb2 | ||
|
|
74afbf84f4 | ||
|
|
baeb930397 | ||
|
|
053704b5c2 | ||
|
|
ac7c0df520 | ||
|
|
7c11cf9646 | ||
|
|
122953d986 | ||
|
|
e3186c1741 | ||
|
|
f58c7b1be9 | ||
|
|
76574a1ac0 | ||
|
|
1b417979e9 | ||
|
|
eadcba956e | ||
|
|
3dd1faadd4 | ||
|
|
10a50563eb | ||
|
|
9a5d17d967 | ||
|
|
9535e7a276 | ||
|
|
e7e48144e1 | ||
|
|
31c85b22ea | ||
|
|
71af8ce824 | ||
|
|
70c84ef835 | ||
|
|
ba6d140445 | ||
|
|
bcfeb7af32 | ||
|
|
36bd7e1d75 | ||
|
|
1f3b1ff8ff | ||
|
|
f92bd91544 | ||
|
|
be0541aa8c | ||
|
|
6f6f9acb52 | ||
|
|
fbe109a66c | ||
|
|
6397e66c29 | ||
|
|
63c0ed7042 | ||
|
|
7d9945e884 | ||
|
|
7b36af0597 | ||
|
|
7c4630057f | ||
|
|
637fd846b0 | ||
|
|
bfa8a28ccb | ||
|
|
23c7547698 | ||
|
|
d65d91ddcc | ||
|
|
f52a42eda5 | ||
|
|
4ecdfa05f1 | ||
|
|
6c789a36bc | ||
|
|
09139ab018 | ||
|
|
2dc9dc0316 | ||
|
|
1a591da2bc | ||
|
|
614d6bbe2a | ||
|
|
f66f6e49cb | ||
|
|
9ecae1837c | ||
|
|
b904ce7978 | ||
|
|
14aa96787a | ||
|
|
aefb958a6f | ||
|
|
5805215227 | ||
|
|
e88d1e739e | ||
|
|
d930378e13 | ||
|
|
cd6ac4529d | ||
|
|
6ba07564af | ||
|
|
8d7c06b194 | ||
|
|
4d8e41100a | ||
|
|
82403ed1dd | ||
|
|
fa432bdd26 | ||
|
|
b2b1dc9f18 | ||
|
|
442bb79bd0 | ||
|
|
7fd46420d9 | ||
|
|
cd1bd0467c | ||
|
|
b325d0a1f7 | ||
|
|
9e55f8ebcd | ||
|
|
0bcee1e40e | ||
|
|
8f7b6391a5 | ||
|
|
c5f400e9d3 | ||
|
|
fc46dcff36 | ||
|
|
80f47817d9 | ||
|
|
a75cfd9073 | ||
|
|
9bf108c227 | ||
|
|
012d333c8e | ||
|
|
94e039ac87 | ||
|
|
91e12a9724 | ||
|
|
2bf1180884 | ||
|
|
ce14050bb4 | ||
|
|
0ada1e9e32 | ||
|
|
ae674104b3 | ||
|
|
b9e03cf251 | ||
|
|
b31282ae30 | ||
|
|
3c191c26f3 | ||
|
|
62bcd5edf9 | ||
|
|
3e77251f96 | ||
|
|
e400b5e709 | ||
|
|
234acfea7f | ||
|
|
9c6cb96baf | ||
|
|
393fe86563 | ||
|
|
80eaec1d5c | ||
|
|
51b23b4061 | ||
|
|
157707b042 | ||
|
|
5c09741fac | ||
|
|
7e13688e80 | ||
|
|
6b81ddf611 | ||
|
|
ce465e503a | ||
|
|
d3b4251053 | ||
|
|
b44c49bc30 | ||
|
|
4661138d87 | ||
|
|
d3af6f1f36 | ||
|
|
e0b8998def | ||
|
|
39bdc2bce8 | ||
|
|
ab2c1fcc8e | ||
|
|
0cd250bc50 | ||
|
|
d1d4bb9f0c | ||
|
|
274030c4d5 | ||
|
|
483822d427 | ||
|
|
e2ae88de23 | ||
|
|
bb5ee76ad8 | ||
|
|
31dde6129c | ||
|
|
8250ecd794 | ||
|
|
024af3e730 | ||
|
|
0e687fb765 | ||
|
|
79242aaf54 | ||
|
|
41a261266a | ||
|
|
39ec1f7071 | ||
|
|
bebc2a1088 | ||
|
|
b55d80ffd2 | ||
|
|
883310d88d | ||
|
|
358e6926ca | ||
|
|
d72294b966 | ||
|
|
a3427bf85b | ||
|
|
ea6fb5c481 | ||
|
|
d141195ea3 | ||
|
|
90cb9d6cb8 | ||
|
|
7b1cbfc326 | ||
|
|
723510f684 | ||
|
|
094ac2f3ea | ||
|
|
00ebfbb0bc | ||
|
|
c935da6414 | ||
|
|
9f33d0904b | ||
|
|
163c37a5a3 | ||
|
|
0a91243ca5 | ||
|
|
73dded9a21 | ||
|
|
e45f26e48e | ||
|
|
6d6e1c8687 | ||
|
|
03a39ccae2 | ||
|
|
29cc22bd18 | ||
|
|
0e42ffa2a0 | ||
|
|
5551c5e596 | ||
|
|
66b93704e2 | ||
|
|
2d8ae33544 | ||
|
|
03bf3a6dc5 | ||
|
|
bb903e8d4f | ||
|
|
452b63fc36 | ||
|
|
dd9778924d | ||
|
|
90fbbe7ef4 | ||
|
|
a51c30f459 | ||
|
|
6337bc77b1 | ||
|
|
f1d4f4b93c | ||
|
|
7b64eae285 | ||
|
|
4eae34a9d8 | ||
|
|
61b3de99cb | ||
|
|
02148c7950 | ||
|
|
afb60b8500 | ||
|
|
9224d36176 | ||
|
|
dc5f420d88 | ||
|
|
0c13a37517 | ||
|
|
d1ef731728 | ||
|
|
11b3e6dfbb | ||
|
|
53e416be0b | ||
|
|
106f31524b | ||
|
|
f6e42ce9e4 | ||
|
|
c62b54a030 | ||
|
|
1cd46a75d7 | ||
|
|
b9407c40cf | ||
|
|
471a7d7d10 | ||
|
|
b98bb25fba | ||
|
|
d34a8019b2 | ||
|
|
c84f68cefc | ||
|
|
e88561e90d | ||
|
|
974e5beebc | ||
|
|
60eddd2c8f | ||
|
|
0dd076a37a | ||
|
|
a33a3ead22 | ||
|
|
26d99fae5d | ||
|
|
422c06c932 | ||
|
|
d2e02ee2e6 | ||
|
|
8bff2cff3e | ||
|
|
b3ded7799a | ||
|
|
a731de2f13 | ||
|
|
3fdcf5b676 | ||
|
|
3d0fbc00a1 | ||
|
|
30fde6bfe2 | ||
|
|
e439a24f03 | ||
|
|
d8aa8d4a64 | ||
|
|
95503ffd52 | ||
|
|
747cea249b | ||
|
|
af4027660b | ||
|
|
6c588589ac | ||
|
|
bf699414d1 | ||
|
|
86c8d0f95a | ||
|
|
51c7753526 | ||
|
|
1b54e18a47 | ||
|
|
8d36213f6f | ||
|
|
459a6ec372 | ||
|
|
c86b437eb3 | ||
|
|
fcb857e508 | ||
|
|
5c8410c56f | ||
|
|
7fe8d45d6a | ||
|
|
f03e2dbc0e | ||
|
|
eeb44860e9 | ||
|
|
ef2dee59d4 | ||
|
|
8461a56aa1 | ||
|
|
8ae72d1cf1 | ||
|
|
e2dc453b62 | ||
|
|
292535fe06 | ||
|
|
804595d483 | ||
|
|
33b2d11fc2 | ||
|
|
fe2193ba75 | ||
|
|
17d155325a | ||
|
|
c4707bd8b7 | ||
|
|
b43c6cbfdd | ||
|
|
8bc36c3b96 | ||
|
|
260e696c8b | ||
|
|
5fc045644c | ||
|
|
45fccb0203 | ||
|
|
9af3599153 | ||
|
|
e36aee0b7f | ||
|
|
dcf35b2af1 | ||
|
|
5367d5dc3f | ||
|
|
1ca4d551b8 | ||
|
|
8d34217ce4 | ||
|
|
556d5a65e9 | ||
|
|
fcf2444ee1 | ||
|
|
64e296ed67 | ||
|
|
38d7adc7e3 | ||
|
|
c7a36ec6d2 | ||
|
|
e6daacf7ea | ||
|
|
a99e1a95af | ||
|
|
53fa94785a | ||
|
|
5ab2fccf2f | ||
|
|
26538bb9e2 | ||
|
|
5b90bcbd25 | ||
|
|
b33b4df006 | ||
|
|
ec889250a5 | ||
|
|
c875b44958 | ||
|
|
60032f57b4 | ||
|
|
289f1ea971 | ||
|
|
46438c7cd9 | ||
|
|
404c346182 | ||
|
|
607f0ca377 | ||
|
|
83e1dc9ed0 | ||
|
|
9a33bca200 | ||
|
|
ef05c1d900 | ||
|
|
491f299bf2 | ||
|
|
5899af2efd | ||
|
|
576bbd252c | ||
|
|
7340b5e071 | ||
|
|
2d7f557ae9 | ||
|
|
5665b05c7c | ||
|
|
809be889a7 | ||
|
|
f99e5e1ff0 | ||
|
|
84fa851dfa | ||
|
|
7ff4939da6 | ||
|
|
73937668f0 | ||
|
|
e6b5e1c34d | ||
|
|
844a8af418 | ||
|
|
55364a8860 | ||
|
|
223247ceb0 | ||
|
|
4742178aee | ||
|
|
d4de8aaf0f | ||
|
|
ee82aed182 | ||
|
|
2ee6ae11df | ||
|
|
7c8dbbdb25 | ||
|
|
2d8cf88884 | ||
|
|
b4cbddb970 | ||
|
|
3835f10659 | ||
|
|
3df061b540 | ||
|
|
7a2984e8ae | ||
|
|
d0476cb02b | ||
|
|
68ff688b71 | ||
|
|
7aa57b4d84 | ||
|
|
2045a49313 | ||
|
|
101d28e9da | ||
|
|
e84a00174b | ||
|
|
37a18b2530 | ||
|
|
af67618095 | ||
|
|
69c8b8a933 | ||
|
|
74d07a70f6 | ||
|
|
e6f3c9b899 | ||
|
|
da0cbaf86c | ||
|
|
f7fb0280a0 | ||
|
|
a0f19a7265 | ||
|
|
a6219153d9 | ||
|
|
da75a07870 | ||
|
|
c824eea074 | ||
|
|
c3c2b774d6 | ||
|
|
0d3fa21187 | ||
|
|
428c2212aa | ||
|
|
c1fee62473 | ||
|
|
a5d5a21ddb | ||
|
|
89445da9eb | ||
|
|
c33afccb1b | ||
|
|
2a1d1134e9 | ||
|
|
56241235cf | ||
|
|
2c578f350a | ||
|
|
390085c377 | ||
|
|
27a1101a58 | ||
|
|
b77694e89c | ||
|
|
5933f21882 | ||
|
|
38b387794e | ||
|
|
05d02c43ec | ||
|
|
e0c7479122 | ||
|
|
6b45e869e1 | ||
|
|
0695828e4c | ||
|
|
b0b5cb21e5 | ||
|
|
1224cf44ae | ||
|
|
dce5191542 | ||
|
|
773afc1490 | ||
|
|
12cc35932a | ||
|
|
adbc609bbf | ||
|
|
550759231d | ||
|
|
a5e6690ded | ||
|
|
ab57b0ddd3 | ||
|
|
8a9ef14e4f | ||
|
|
fdbab0e856 | ||
|
|
67e53e72ab | ||
|
|
84b61f2264 | ||
|
|
9fc584d173 | ||
|
|
dc8190dc6a | ||
|
|
73920f3f6e | ||
|
|
dec41a2a99 | ||
|
|
0af4c17000 | ||
|
|
97db12c9f2 | ||
|
|
8be18c360b | ||
|
|
2da964bb2d | ||
|
|
84c61990b7 | ||
|
|
4c78c177db | ||
|
|
6fd41105c9 | ||
|
|
9ee29fb0b2 | ||
|
|
0f47f01cae | ||
|
|
848f78465b | ||
|
|
ff11cf5f23 | ||
|
|
fe2446b7e3 | ||
|
|
c6a2cf042a | ||
|
|
c88ec0bd81 | ||
|
|
31cbb18f0e | ||
|
|
490492cbfa | ||
|
|
7edff5fe0b | ||
|
|
adfaa6d9f3 | ||
|
|
90015dfb35 | ||
|
|
5715de89f2 | ||
|
|
ab7a3e8e9c | ||
|
|
d5a6817887 | ||
|
|
ccdb80efbc | ||
|
|
801a2e5de7 | ||
|
|
669aa1fbcf | ||
|
|
237da58846 | ||
|
|
396d59ff22 | ||
|
|
c70e705aa4 | ||
|
|
89cff54730 | ||
|
|
00b7568ed2 | ||
|
|
9df4a4910d | ||
|
|
d36e4e4c85 | ||
|
|
a36ccb97a2 | ||
|
|
22942608fa | ||
|
|
f45256c66b | ||
|
|
f2f32f5340 | ||
|
|
3ec3d2a6b1 | ||
|
|
f3b84e7495 | ||
|
|
cb67d586a4 | ||
|
|
8d3368b79d | ||
|
|
bfecb5e54a | ||
|
|
9162c069d1 | ||
|
|
78efb33243 | ||
|
|
f16fe1423e | ||
|
|
637e2f0793 | ||
|
|
2a6274338d | ||
|
|
c1360397ed | ||
|
|
6e9a28b1a7 | ||
|
|
5575fed27b | ||
|
|
14d28e2dbd | ||
|
|
d31634c358 | ||
|
|
de8ab34d85 | ||
|
|
0e919b9913 | ||
|
|
328731af18 | ||
|
|
40add2d572 | ||
|
|
4f235bb83e | ||
|
|
1f95f48f41 | ||
|
|
3f4a993e9f | ||
|
|
b29f6bc7e5 | ||
|
|
e05bf365be | ||
|
|
217eba6b6e | ||
|
|
de665ee4e3 | ||
|
|
ce9b316da2 | ||
|
|
02ecf9fd45 | ||
|
|
6bba411e1b | ||
|
|
4bdd700a38 | ||
|
|
4fe2d6d724 | ||
|
|
2e7c28a591 | ||
|
|
23fc8fdb26 | ||
|
|
a190005316 | ||
|
|
28d16f4a91 | ||
|
|
e66338669e | ||
|
|
e466b2c1bc | ||
|
|
219016e7a4 | ||
|
|
8effdc36a7 | ||
|
|
59d0cf1c54 | ||
|
|
1d331c0bf8 | ||
|
|
93a244cfaf | ||
|
|
2612df9ef2 | ||
|
|
2507933c82 | ||
|
|
975342399d | ||
|
|
3b44919d0b | ||
|
|
cedde4ad1f | ||
|
|
db4b77ebd2 | ||
|
|
12ed6c21f1 | ||
|
|
6f9ba77bd8 | ||
|
|
759f5f751f | ||
|
|
a1f25f073c | ||
|
|
f24068c2a4 | ||
|
|
6b79dc9ac3 | ||
|
|
dfc537ff3d | ||
|
|
a513f8bc39 | ||
|
|
dabdf7933b | ||
|
|
afeb256604 | ||
|
|
8673fa8415 | ||
|
|
3dabb5447a | ||
|
|
210cbd60ef | ||
|
|
8d2bb6cbc2 | ||
|
|
127f1a9438 | ||
|
|
619d34d781 | ||
|
|
d9255b5c72 | ||
|
|
378020ce97 | ||
|
|
15a1af31db | ||
|
|
d11a22aa8d | ||
|
|
fce9f0b5d5 | ||
|
|
18c3a32321 | ||
|
|
7e4e63ae64 | ||
|
|
108cf6bff0 | ||
|
|
b0766d7074 | ||
|
|
54057dce28 | ||
|
|
7be5af4c09 | ||
|
|
76ee52a635 | ||
|
|
0717c18ccb | ||
|
|
1255cf856f | ||
|
|
0b254522c9 | ||
|
|
eb82608878 | ||
|
|
688fe7bcf8 | ||
|
|
cfc308dd4c | ||
|
|
8aa61a1d29 | ||
|
|
490b695b3d | ||
|
|
8678be1692 | ||
|
|
2774702108 | ||
|
|
3b9869187b | ||
|
|
29d6400210 | ||
|
|
ad9a246043 | ||
|
|
afe698db10 | ||
|
|
bea768660b | ||
|
|
8cfd5f29f6 | ||
|
|
03eb2c498d | ||
|
|
fe10da2642 | ||
|
|
f1bd8ba02a | ||
|
|
4b64879072 | ||
|
|
eb854b8e6a | ||
|
|
8bc94223b4 | ||
|
|
46b0c0fea5 | ||
|
|
77486af848 | ||
|
|
4429a6a601 | ||
|
|
085718ae8b | ||
|
|
e3bf5fe068 | ||
|
|
adb0e77d39 | ||
|
|
8df3f84fc4 | ||
|
|
a4bdaddaaf | ||
|
|
780e213dcc | ||
|
|
3e838ca675 | ||
|
|
f02c1f20e4 | ||
|
|
63c68100f3 | ||
|
|
5869ec9633 | ||
|
|
7c3531d39a | ||
|
|
09a2fa65e3 | ||
|
|
7a6ef377b5 | ||
|
|
8cb78dc4d5 | ||
|
|
8369af0964 | ||
|
|
1fcc78375c | ||
|
|
20b0aae98b | ||
|
|
e0314d8b75 | ||
|
|
958c66c6db | ||
|
|
79bd3ea7d4 | ||
|
|
f974ec264e | ||
|
|
d9b32975c9 | ||
|
|
6fe8c9acec | ||
|
|
afbab21a54 | ||
|
|
963ccb9bad | ||
|
|
22609539b0 | ||
|
|
9c65225869 | ||
|
|
630e39aea3 | ||
|
|
b018a3bbe9 | ||
|
|
2d963f5330 | ||
|
|
45184c769c | ||
|
|
7b39d594d5 | ||
|
|
bc7df9f5c4 | ||
|
|
90e3931e4e | ||
|
|
17e8a047b3 | ||
|
|
e156079e33 | ||
|
|
ddb959991d | ||
|
|
af9c77d09f | ||
|
|
11db1d89bb | ||
|
|
5e1d462aa9 | ||
|
|
727cdb4a87 | ||
|
|
3c7ec4e416 | ||
|
|
db8c2a0537 | ||
|
|
64116b90e1 | ||
|
|
5affbe3848 | ||
|
|
f1abf1a775 | ||
|
|
08499a69e2 | ||
|
|
25ab1c35ee | ||
|
|
8c37787e23 | ||
|
|
9b9a7e50b4 | ||
|
|
3e81e8c86b | ||
|
|
f62063276a | ||
|
|
e202953ccb | ||
|
|
7e6b0c34d2 | ||
|
|
094f439626 | ||
|
|
54bce4155c | ||
|
|
856bb3abe9 | ||
|
|
577d62c63a | ||
|
|
5fda011043 | ||
|
|
ecdf87f1ea | ||
|
|
17a828e80f | ||
|
|
b635612305 | ||
|
|
f7989c5ce9 | ||
|
|
c2e106fe86 | ||
|
|
7098429e3a | ||
|
|
4d49b5d22b | ||
|
|
d19b10ae06 | ||
|
|
ce15e0e97b | ||
|
|
8cc39130e0 | ||
|
|
4e8e707951 | ||
|
|
aa69c550e3 | ||
|
|
b8e9e188c1 | ||
|
|
51e8e0ade7 | ||
|
|
c63abc0842 | ||
|
|
199434b92c | ||
|
|
66f494cbd7 | ||
|
|
c4f8163246 | ||
|
|
cc9a5ede96 | ||
|
|
5615a75413 | ||
|
|
2b213a0ccc | ||
|
|
41d973df1b | ||
|
|
459913de55 | ||
|
|
663a5f44f5 | ||
|
|
f5c798e48c | ||
|
|
5416a6f8d7 | ||
|
|
25796d27a1 | ||
|
|
978a7a627e | ||
|
|
6eea200c35 | ||
|
|
291a7f1752 | ||
|
|
127fa9ae37 | ||
|
|
4573c0b962 | ||
|
|
c7828888ab | ||
|
|
160f5e0786 | ||
|
|
cd17018ec7 | ||
|
|
cdbc4baa58 | ||
|
|
20cc8bc9f6 | ||
|
|
1843ef7928 | ||
|
|
c1f4953008 | ||
|
|
b46c6b700b | ||
|
|
7f645f9f34 | ||
|
|
d988214e01 | ||
|
|
04b07f8bd3 | ||
|
|
0022ccf790 | ||
|
|
dbf587a515 | ||
|
|
193ab717fa | ||
|
|
f922b493a6 | ||
|
|
bca0b40679 | ||
|
|
9410e89310 | ||
|
|
c453384e97 | ||
|
|
c7d2bbe513 | ||
|
|
56c660dbe9 | ||
|
|
e60c6e3f84 | ||
|
|
dcf4473284 | ||
|
|
b6ac32b0db | ||
|
|
071db178eb | ||
|
|
f703b8e1c5 | ||
|
|
f415d7118d | ||
|
|
98b91e1d4c | ||
|
|
7b5165c70a | ||
|
|
b00f64ed56 | ||
|
|
10e8d30699 | ||
|
|
fa315a3115 | ||
|
|
e2d13c9762 | ||
|
|
aaccaf9796 | ||
|
|
83324945ad | ||
|
|
cbd30e62fa | ||
|
|
432a889cc0 | ||
|
|
5e1e8a58a7 | ||
|
|
e5a94ee6dd | ||
|
|
42eeb9d65e | ||
|
|
e4dec0771c | ||
|
|
388452f1bc | ||
|
|
73382b8284 | ||
|
|
a5f9c92507 | ||
|
|
d0fac35f68 | ||
|
|
bbb369a937 | ||
|
|
42eb48faa7 | ||
|
|
b80a6660bf | ||
|
|
3521765b62 | ||
|
|
80cb191214 | ||
|
|
3262bfa66e | ||
|
|
4031335617 | ||
|
|
7a8e3a421c | ||
|
|
73c76d1456 | ||
|
|
fa64a12850 | ||
|
|
ef3991d461 | ||
|
|
6e839bf82c | ||
|
|
404814f706 | ||
|
|
eeaf2c1596 | ||
|
|
fe702e469d | ||
|
|
170291413d | ||
|
|
9c41f88a56 | ||
|
|
b21b87df28 | ||
|
|
e44851306d | ||
|
|
513ed46e56 | ||
|
|
877d7b3bf9 | ||
|
|
1673ba3dfb | ||
|
|
d6503bdd47 | ||
|
|
c2460ee36a | ||
|
|
51af1a19f0 | ||
|
|
2b41586884 | ||
|
|
7ad4dcd3a1 | ||
|
|
05fd086418 | ||
|
|
0d9f417f7b | ||
|
|
20a6f9785b | ||
|
|
d765d1f2ab | ||
|
|
9695420fce | ||
|
|
7f34328b24 | ||
|
|
790ba35688 | ||
|
|
6df0e46245 | ||
|
|
55c1f58192 | ||
|
|
d56adbf3c1 | ||
|
|
7d27d45d02 | ||
|
|
8d85ca9c78 | ||
|
|
cce0b45f97 | ||
|
|
e24847b130 | ||
|
|
992b32a969 | ||
|
|
6143779c63 | ||
|
|
0c5a731f23 | ||
|
|
11dc7d2b81 | ||
|
|
000e60c193 | ||
|
|
13752a6768 | ||
|
|
a9c3b9b483 | ||
|
|
cf2b532a79 | ||
|
|
f6e750fb66 | ||
|
|
9576283381 | ||
|
|
c26f9fea3d | ||
|
|
9bd28ec137 | ||
|
|
4e9670b5aa | ||
|
|
857fd74e1b |
@@ -1,38 +1,17 @@
|
||||
job1:
|
||||
script:
|
||||
- echo $PWD
|
||||
- echo $USER
|
||||
- echo $OAI_USER
|
||||
- echo $OAI_EXTRA_ARGS
|
||||
- echo $NFS_SHARE_DIR
|
||||
- echo $EXTERNAL_SHARE_DIR
|
||||
- echo $SHELL
|
||||
- echo $OAI_TEST_CASE_GROUP
|
||||
- echo $MACHINELIST
|
||||
- echo $MACHINELISTGENERIC
|
||||
- git rev-parse --abbrev-ref HEAD
|
||||
- git_repo=`git config --get remote.origin.url`
|
||||
- git_head=`git rev-parse HEAD`
|
||||
- echo $git_head
|
||||
- tmp=`git show-ref --head | grep $git_head`
|
||||
- tmp=(${tmp///// })
|
||||
- git_branch=${tmp[@]:(-1)}
|
||||
- echo $git_branch
|
||||
- source oaienv
|
||||
- echo $OPENAIR_DIR
|
||||
- NFS_TEST_RESULTS_DIR=$NFS_SHARE_DIR/$git_branch/$git_head
|
||||
- EXTERNAL_SHARE_RESULTS_DIR=$EXTERNAL_SHARE_DIR/$git_branch/$git_head
|
||||
- echo $NFS_TEST_RESULTS_DIR
|
||||
- echo $EXTERNAL_SHARE_RESULTS_DIR
|
||||
- echo $NRUNS_LTE_SOFTMODEM
|
||||
- echo $TIMEOUT_CMD
|
||||
- mkdir -p $OPENAIR_DIR/cmake_targets/autotests/log
|
||||
- python $OPENAIR_DIR/cmake_targets/autotests/run_exec_lte-softmodem_tests.py -c -5GRepo $git_repo -MachineList "$MACHINELIST" -MachineListGeneric "$MACHINELISTGENERIC" -5GRepoHeadVersion $git_head -n $NFS_SHARE_DIR -u $OAI_USER -p $OAI_PASS $OAI_EXTRA_ARGS -g "$OAI_TEST_CASE_GROUP">& $OPENAIR_DIR/cmake_targets/autotests/python_autotest_cleanup.log
|
||||
- python $OPENAIR_DIR/cmake_targets/autotests/run_exec_lte-softmodem_tests.py -r -5GRepo $git_repo -MachineList "$MACHINELIST" -MachineListGeneric "$MACHINELISTGENERIC" -5GRepoHeadVersion $git_head -n $NFS_SHARE_DIR -u $OAI_USER -p $OAI_PASS `echo $OAI_EXTRA_ARGS` -g "$OAI_TEST_CASE_GROUP" --nrun_lte_softmodem $NRUNS_LTE_SOFTMODEM --timeout_cmd $TIMEOUT_CMD >& $OPENAIR_DIR/cmake_targets/autotests/python_autotest.log
|
||||
- mv $OPENAIR_DIR/cmake_targets/autotests/python_autotest.log $OPENAIR_DIR/cmake_targets/autotests/log/python_autotest.log
|
||||
- mv $OPENAIR_DIR/cmake_targets/autotests/python_autotest_cleanup.log $OPENAIR_DIR/cmake_targets/autotests/log/python_autotest_cleanup.log
|
||||
- sshpass -p "$OAI_PASS" rsync -az -e "ssh -o StrictHostKeyChecking=no " --rsync-path="mkdir -p $NFS_TEST_RESULTS_DIR && rsync" $OPENAIR_DIR/cmake_targets/autotests/log $OAI_USER@localhost:$NFS_TEST_RESULTS_DIR
|
||||
- sshpass -p "$OAI_PASS" rsync -az -e "ssh -o StrictHostKeyChecking=no " --rsync-path="mkdir -p $EXTERNAL_SHARE_DIR && rsync" $OPENAIR_DIR/cmake_targets/autotests/log $OAI_USER@localhost:$EXTERNAL_SHARE_DIR
|
||||
- cat $OPENAIR_DIR/cmake_targets/autotests/log/results_autotests.xml
|
||||
- date
|
||||
- pwd
|
||||
- echo $OAI_TEST_CASE_GROUP
|
||||
- echo $MACHINELIST
|
||||
- echo $MACHINELISTGENERIC
|
||||
- echo $RESULT_DIR
|
||||
- echo $NRUNS_LTE_SOFTMODEM
|
||||
- source oaienv
|
||||
- rm -rf cmake_targets/autotests/log
|
||||
- mkdir cmake_targets/autotests/log
|
||||
- cd cmake_targets/autotests/v2
|
||||
- python main.py
|
||||
- date
|
||||
only:
|
||||
- triggers
|
||||
- triggers
|
||||
|
||||
208
LICENSE
208
LICENSE
@@ -1,94 +1,200 @@
|
||||
OAI PUBLIC LICENSE V1.0
|
||||
The OpenAirInterface Software Alliance (OSA)
|
||||
OAI Public License (Version 1.1)
|
||||
|
||||
Copyright (C) 2016 OpenAirInterface Software Alliance, Inc. <http://www.openairinterface.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
LICENSE TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION OF OPENAIR 5G SOFTWARE.
|
||||
|
||||
Definitions.
|
||||
“License” shall mean the terms and conditions for use, reproduction, and distribution set forth in this document.
|
||||
1. Definitions.
|
||||
|
||||
“License” shall mean the terms and conditions for use, reproduction, and distribution set forth
|
||||
in this document.
|
||||
|
||||
“Licensor” shall mean the OpenAirInterface Software Alliance.
|
||||
|
||||
“Legal Entity” shall mean the union, at the time an acting entity joins the Alliance, of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, “control” means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
“Legal Entity” shall mean the union, at the time an acting entity joins the Alliance, of the
|
||||
acting entity and all other entities that control, are controlled by, or are under common control
|
||||
with that entity. For the purposes of this definition, “control” means (i) the power, direct or
|
||||
indirect, to cause the direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii)
|
||||
beneficial ownership of such entity.
|
||||
|
||||
“You” (or “Your”) shall mean an individual or Legal Entity exercising permissions granted by this License.
|
||||
“You” (or “Your”) shall mean an individual or Legal Entity exercising permissions granted by
|
||||
this License.
|
||||
|
||||
“Source” form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
|
||||
“Source” form shall mean the preferred form for making modifications, including but not
|
||||
limited to software source code, documentation source, and configuration files.
|
||||
|
||||
“Object” form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
|
||||
“Object” form shall mean any form resulting from mechanical transformation or translation of
|
||||
a Source form, including but not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
“OpenAirInterface Software Alliance” shall mean the endowment fund established at the initiative of Eurecom, an educational and research establishment located at Campus Sophia Tech, 450 Route des Chappes, 06410 Biot, France, which statutes were signed on 18 November 2014.
|
||||
“OpenAirInterface Software Alliance” shall mean the endowment fund established at the
|
||||
initiative of Eurecom, an educational and research establishment located at Campus Sophia
|
||||
Tech, 450 Route des Chappes, 06410 Biot, France, which statutes were signed on 18
|
||||
November 2014.
|
||||
|
||||
“ “Work” shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
|
||||
“Work” shall mean the work of authorship, whether in Source or Object form, made available
|
||||
under the License, as indicated by a copyright notice that is included in or attached to the
|
||||
work (an example is provided in the Appendix below).
|
||||
|
||||
“Derivative Works” shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
|
||||
“Derivative Works” shall mean any work, whether in Source or Object form, that is based on
|
||||
(or derived from) the Work and for which the editorial revisions, annotations, elaborations, or
|
||||
other modifications represent, as a whole, an original work of authorship. For the purposes of
|
||||
this License, Derivative Works shall not include works that remain separable from, or merely
|
||||
link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
|
||||
|
||||
“Contribution” shall mean any work of authorship that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, “submitted” means any form of electronic, , or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work “Contributor License Agreement” shall mean the agreement signed by any Contributor setting forth the terms and conditions applicable to its Contribution. “Contributor” shall mean any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
|
||||
“Contribution” shall mean any work of authorship that is intentionally submitted to Licensor
|
||||
for inclusion in the Work by the copyright owner or by an individual or Legal Entity
|
||||
authorized to submit on behalf of the copyright owner. For the purposes of this definition,
|
||||
“submitted” means any form of electronic, , or written communication sent to the Licensor or
|
||||
its representatives, including but not limited to communication on electronic mailing lists,
|
||||
source code control systems, and issue tracking systems that are managed by, or on behalf of,
|
||||
the Licensor for the purpose of discussing and improving the Work
|
||||
|
||||
Grant of Copyright License.
|
||||
Subject to the terms and conditions of this License, Licensor and each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form
|
||||
“Contributor License Agreement” shall mean the agreement signed by any Contributor setting
|
||||
forth the terms and conditions applicable to its Contribution.
|
||||
|
||||
3. Grant of Patent License.
|
||||
“Contributor” shall mean any individual or Legal Entity on behalf of whom a Contribution
|
||||
has been received by Licensor and subsequently incorporated within the Work.
|
||||
|
||||
3.1 Grant of Patent License for non-commercial purposes:
|
||||
2. Grant of Copyright License.
|
||||
Subject to the terms and conditions of this License, Licensor and each Contributor hereby
|
||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of, publicly display, publicly
|
||||
perform, and distribute the Work and such Derivative Works in Source or Object form
|
||||
|
||||
Subject to the terms and conditions of this License, Licensor and each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, import, and otherwise transfer the Work, for non-commercial purposes, where such license applies only to those patent claims licensable by such Contributor or Licensor that are necessarily infringed by the Work and/or their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted.
|
||||
3. Grant of Patent License.
|
||||
|
||||
3.2 Grant of Patent License for commercial purposes:
|
||||
3.1 Grant of Patent License for study, testing and research purposes:
|
||||
Subject to the terms and conditions of this License, Licensor and each Contributor hereby
|
||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made, use, and otherwise
|
||||
transfer (excluding selling) the Work, solely for study, testing and research purposes, where
|
||||
such license applies only to those patent claims licensable by Licensor or such Contributor
|
||||
that are necessarily infringed respectively by the Work and/or the said Contributor
|
||||
Contribution(s) alone or by combination of their Contribution(s) with the Work to which
|
||||
such Contribution(s) was submitted (“Essential Patents”).
|
||||
|
||||
For commercial purposes, and subject to the terms and conditions of this License, You commits to be prepared to negotiate a patent license with each Contributor and/or the Licensor on Fair, Reasonable and Non-Discriminatory (“FRAND”) terms and conditions for the Work or Contribution(s) incorporated within the Work.
|
||||
|
||||
Licensor and/or each Contributor, by submitting a Contribution, will identify any patent it owns related to the Work and/or its Contribution.
|
||||
3.2 Grant of Patent License for purposes other than study and research:
|
||||
For purposes other than study, testing and research, and subject to the terms and conditions of
|
||||
this License, You commit to be prepared to negotiate a non-exclusive, non-transferable, non-
|
||||
assignable license of Essential Patents with each Contributor and/or the Licensor on Fair,
|
||||
Reasonable and Non-Discriminatory (“FRAND”) terms and conditions for the use of the
|
||||
Work or Contribution(s) incorporated within the Work.
|
||||
Licensor and/or each Contributor, by submitting a Contribution, will identify any of its known
|
||||
Essential Patent it owns related to the Work and/or its Contribution.
|
||||
|
||||
3.3 Patent Litigation
|
||||
If You institute patent litigation against any entity making use of the Work solely for study,
|
||||
testing and research purposes (including a cross-claim or counterclaim in a lawsuit) alleging
|
||||
that the Work or a Contribution incorporated within the Work constitutes direct or
|
||||
contributory patent infringement, then the patent licenses granted to You under section 3.1 of
|
||||
this License for that Work shall terminate as of the date such litigation is filed.
|
||||
|
||||
If You institute patent litigation against any entity making non-commercial use of the Work (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
|
||||
4. Sublicensing
|
||||
You may grant sublicenses under the licenses granted under sections 2 and 3.1 provided that
|
||||
the sublicense is subject to and inclusive of all the terms of and rights under this License to
|
||||
which the Work is or was distributed by the OpenAirInterface Software Alliance.
|
||||
|
||||
4. Redistibution
|
||||
5. Redistribution
|
||||
Subject to terms and conditions set forth in sections 2 and 3, You may reproduce and
|
||||
distribute copies of the Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You meet the following
|
||||
conditions:
|
||||
|
||||
Subject to terms and conditions set forth in articles 2 and 3, You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
|
||||
1. You must give any other recipients of the Work or Derivative Works a copy of this
|
||||
License; and
|
||||
|
||||
2. You must cause any modified files by You to carry prominent notices stating that You
|
||||
changed the files; and
|
||||
|
||||
3. You must retain, in the Source form of any Derivative Works that You distribute, all
|
||||
copyright, patent, trademark, and attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of the Derivative Works; and
|
||||
|
||||
4. If the Work includes a “NOTICE” text file as part of its distribution, then any Derivative
|
||||
Works that You distribute must include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not pertain to any part of the
|
||||
Derivative Works, in at least one of the following places: within a NOTICE text file
|
||||
distributed as part of the Derivative Works; within the Source form or documentation, if
|
||||
provided along with the Derivative Works; or, within a display generated by the Derivative
|
||||
Works, if and wherever such third-party notices normally appear. The contents of the
|
||||
NOTICE file are for informational purposes only and do not modify the License. You may
|
||||
add Your own attribution notices within Derivative Works that You distribute, alongside or as
|
||||
an addendum to the NOTICE text from the Work, provided that such additional attribution
|
||||
notices cannot be construed as modifying the License.
|
||||
You may add Your own copyright statement to Your modifications and may provide
|
||||
additional or different license terms and conditions for use, reproduction, or distribution of
|
||||
Your modifications, or for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with the conditions stated in
|
||||
this License.
|
||||
|
||||
1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
|
||||
6. Submission of Contributions.
|
||||
Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be
|
||||
under the terms and conditions of this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify the terms of any
|
||||
separate license agreement such as the Contributor License Agreement You may have
|
||||
executed with Licensor regarding such Contributions.
|
||||
|
||||
2. You must cause any modified files by You to carry prominent notices stating that You changed the files; and
|
||||
7. Trademarks.
|
||||
This License does not grant permission to use the trade names, trademarks, service marks, or
|
||||
product names of the Licensor, except as required for reasonable and customary use in
|
||||
describing the origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
|
||||
8. Disclaimer of Warranty.
|
||||
Unless required by applicable law or agreed to in writing, Licensor provides the Work (and
|
||||
each Contributor provides its Contributions) on an “AS IS” BASIS, WITHOUT
|
||||
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including,
|
||||
without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT,
|
||||
MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely
|
||||
responsible for determining the appropriateness of using or redistributing the Work and
|
||||
assume any risks associated with your exercise of permissions under this License.
|
||||
|
||||
4. If the Work includes a “NOTICE” text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
|
||||
9. Limitation of Liability.
|
||||
In no event and under no legal theory, whether in tort (including negligence), contract, or
|
||||
otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or
|
||||
agreed to in writing, shall Licensor and any Contributor, as such, be liable to You for
|
||||
damages, including any direct, indirect, special, incidental, or consequential damages of any
|
||||
character arising as a result of this License or out of Your use or inability to use the Work
|
||||
(including but not limited to damages for loss of goodwill, work stoppage, computer failure or
|
||||
malfunction, or any and all other commercial damages or losses), even if such Contributor has
|
||||
been advised of the possibility of such damages.
|
||||
|
||||
10. Accepting Warranty or Additional Liability.
|
||||
While redistributing the Work or Derivative Works thereof, You may choose to offer, and
|
||||
charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations
|
||||
and/or rights consistent with this License. However, in accepting such obligations, You may
|
||||
act only on Your own behalf and on Your sole responsibility, not on behalf of any other
|
||||
Contributor and/or the Licensor, and only if You agree to indemnify, defend, and hold each
|
||||
Contributor and/or the Licensor harmless for any liability incurred by, or claims asserted
|
||||
against, such Contributor and/or Licensor by reason of Your accepting any such warranty or
|
||||
additional liability.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement such as the Contributor License Agreement You may have executed with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall Licensor and any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor and/or the Licensor,and only if You agree to indemnify, defend, and hold each Contributor and/or the Licensor harmless for any liability incurred by, or claims asserted against, such Contributor and/or Licensor by reason of Your accepting any such warranty or additional liability.
|
||||
|
||||
10. Applicable law. The present license shall be governed by the laws of France.
|
||||
11. Applicable law.
|
||||
The present license shall be governed by the laws of France.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the PRESENT OPENAIR 5G License to your work
|
||||
To apply the present License to your work, attach the following boilerplate notice, with the fields enclosed by brackets “[]” replaced with your own identifying information. (Don’t include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same “printed page” as the copyright notice for easier identification within third-party archives.
|
||||
1. APPENDIX: How to apply the PRESENT OPENAIR 5G License to your work
|
||||
To apply the present License to your work, attach the following boilerplate notice, with the
|
||||
fields enclosed by brackets “[]” replaced with your own identifying information. (Don’t
|
||||
include the brackets!) The text should be enclosed in the appropriate comment syntax for the
|
||||
file format. We also recommend that a file or class name and description of purpose be
|
||||
included on the same “printed page” as the copyright notice for easier identification within
|
||||
third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
Licensed under the License terms and conditions for use, reproduction, and distribution of OPENAIR 5G software (the “License”);
|
||||
|
||||
you may not use this file except in compliance with the License.You may obtain a copy of the License at
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
Licensed under the License terms and conditions for use, reproduction, and distribution of
|
||||
OPENAIR 5G software (the “License”);
|
||||
|
||||
distributed under the License is distributed on an “AS IS” BASIS,
|
||||
you may not use this file except in compliance with the License. You may obtain a copy of
|
||||
the License at
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the
|
||||
License is distributed on an “AS IS” BASIS,
|
||||
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
See the License for the specific language governing permissions and
|
||||
See the License for the specific language governing permissions and limitations under the
|
||||
License.
|
||||
|
||||
limitations under the License.
|
||||
|
||||
@@ -39,3 +39,8 @@ v0.3 -> Last stable commit on develop branch before the merge of feature-131-new
|
||||
v0.4 -> Merge of feature-131-new-license. It closes issue#131 and changes the license to OAI Public License V1.0
|
||||
v0.5 -> Merge of enhancement-10-harmony-lts. It includes fixes for Ubuntu 16.04 support
|
||||
v0.5.1 -> Merge of bugfix-137-uplink-fixes. It includes stablity fixes for eNB
|
||||
v0.5.2 -> Last version with old code for oaisim (abstraction mode works)
|
||||
v0.6 -> RRH functionality, UE greatly improved, better TDD support,
|
||||
a lot of bugs fixed. WARNING: oaisim in PHY abstraction mode does not
|
||||
work, you need to use v0.5.2 for that.
|
||||
v0.6.1 -> Mostly bugfixes. This is the last version without NFAPI.
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
@@ -27,6 +27,8 @@ cmake_minimum_required (VERSION 2.8)
|
||||
# Base directories, compatible with legacy OAI building
|
||||
################################################
|
||||
set (OPENAIR_DIR $ENV{OPENAIR_DIR})
|
||||
#set (NFAPI_DIR $ENV{NFAPI_DIR})
|
||||
set (NFAPI_DIR ${OPENAIR_DIR}/nfapi)
|
||||
set (OPENAIR1_DIR ${OPENAIR_DIR}/openair1)
|
||||
set (OPENAIR2_DIR ${OPENAIR_DIR}/openair2)
|
||||
set (OPENAIR3_DIR ${OPENAIR_DIR}/openair3)
|
||||
@@ -37,11 +39,6 @@ set (OPENAIR_BIN_DIR ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY})
|
||||
|
||||
project (OpenAirInterface)
|
||||
|
||||
#add_definitions("-DEMIT_ASN_DEBUG=1")
|
||||
add_subdirectory(${OPENAIR_TARGETS}/ARCH/LMSSDR/USERSPACE/LIB/lms7002m lms7002m)
|
||||
add_subdirectory(${OPENAIR_TARGETS}/ARCH/LMSSDR/USERSPACE/LIB/lmsSDR lmsSDR)
|
||||
add_subdirectory(${OPENAIR_TARGETS}/ARCH/LMSSDR/USERSPACE/LIB/Si5351C Si5351C)
|
||||
|
||||
###########################################
|
||||
# macros to define options as there is numerous options in oai
|
||||
################################################
|
||||
@@ -119,6 +116,7 @@ endmacro(add_list_string_option)
|
||||
####################################################
|
||||
# compilation flags
|
||||
#############################################
|
||||
|
||||
#set(CMAKE_BUILD_TYPE "Debug")
|
||||
if (CMAKE_BUILD_TYPE STREQUAL "")
|
||||
set(CMAKE_BUILD_TYPE "RelWithDebInfo")
|
||||
@@ -134,6 +132,9 @@ else (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l")
|
||||
file(STRINGS "/proc/cpuinfo" CPUINFO REGEX flags LIMIT_COUNT 1)
|
||||
if (CPUINFO MATCHES "avx2")
|
||||
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -mavx2")
|
||||
set(COMPILATION_AVX2 "True")
|
||||
else()
|
||||
set(COMPILATION_AVX2 "False")
|
||||
endif()
|
||||
if (CPUINFO MATCHES "sse4_1")
|
||||
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -msse4.1")
|
||||
@@ -175,7 +176,7 @@ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath -Wl,${CMAKE_CU
|
||||
# these changes are related to hardcoded path to include .h files
|
||||
add_definitions(-DCMAKER)
|
||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} -g -DMALLOC_CHECK_=3")
|
||||
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS} -g -DMALLOC_CHECK_=3 -O2")
|
||||
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS} -g -DMALLOC_CHECK_=3 -O2")
|
||||
|
||||
|
||||
set(GIT_BRANCH "UNKNOWN")
|
||||
@@ -200,7 +201,7 @@ if(GIT_FOUND)
|
||||
OUTPUT_VARIABLE GIT_COMMIT_HASH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
|
||||
# Get the latest commit date of the working branch
|
||||
execute_process(
|
||||
COMMAND git log -1 --format=%cd
|
||||
@@ -228,15 +229,18 @@ add_boolean_option(DISABLE_XER_PRINT False "print XER Format")
|
||||
add_boolean_option(XER_PRINT False "print XER Format")
|
||||
add_boolean_option(RRC_MSG_PRINT False "print RRC messages")
|
||||
add_boolean_option(PDCP_MSG_PRINT False "print PDCP messages to /tmp/pdcp.log")
|
||||
add_boolean_option(DEBUG_PDCP_PAYLOAD False "print PDCP PDU to stdout") # if true, make sure that global and PDCP log levels are trace
|
||||
add_boolean_option(DEBUG_MAC_INTERFACE False "print MAC-RLC PDU exchange to stdout") # if true, make sure that global and PDCP log levels are trace
|
||||
add_boolean_option(TRACE_RLC_PAYLOAD False "print RLC PDU to stdout") # if true, make sure that global and PDCP log levels are trace
|
||||
add_boolean_option(DEBUG_PDCP_PAYLOAD False "print PDCP PDU to stdout") # if true, make sure that global and PDCP log levels are trace
|
||||
add_boolean_option(DEBUG_MAC_INTERFACE False "print MAC-RLC PDU exchange to stdout") # if true, make sure that global and PDCP log levels are trace
|
||||
add_boolean_option(TRACE_RLC_PAYLOAD False "print RLC PDU to stdout") # if true, make sure that global and PDCP log levels are trace
|
||||
add_boolean_option(TEST_OMG False "???")
|
||||
add_boolean_option(DEBUG_OMG False "???")
|
||||
add_boolean_option(XFORMS False "This adds the possibility to see the signal oscilloscope")
|
||||
add_boolean_option(PRINT_STATS False "This adds the possibility to see the status")
|
||||
add_boolean_option(T_TRACER False "Activate the T tracer, a debugging/monitoring framework" )
|
||||
add_boolean_option(UE_AUTOTEST_TRACE False "Activate UE autotest specific logs")
|
||||
add_boolean_option(UE_DEBUG_TRACE False "Activate UE debug trace")
|
||||
add_boolean_option(UE_TIMING_TRACE False "Activate UE timing trace")
|
||||
add_boolean_option(DISABLE_LOG_X False "Deactivate all LOG_* macros")
|
||||
|
||||
add_boolean_option(DEBUG_CONSOLE False "makes debugging easier, disables stdout/stderr buffering")
|
||||
|
||||
@@ -284,8 +288,10 @@ if (${RRC_ASN1_VERSION} STREQUAL "Rel8")
|
||||
set (RRC_GRAMMAR ${OPENAIR2_DIR}/RRC/LITE/MESSAGES/asn1c/ASN1_files/EUTRA-RRC-Definitions-86.asn)
|
||||
elseif (${RRC_ASN1_VERSION} STREQUAL "CBA")
|
||||
set (RRC_GRAMMAR ${OPENAIR2_DIR}/RRC/LITE/MESSAGES/asn1c/ASN1_files/EUTRA-RRC-Definitions-a20-lola.asn)
|
||||
else()
|
||||
elseif (${RRC_ASN1_VERSION} STREQUAL "Rel10")
|
||||
set (RRC_GRAMMAR ${OPENAIR2_DIR}/RRC/LITE/MESSAGES/asn1c/ASN1_files/EUTRA-RRC-Definitions-a20.asn)
|
||||
else()
|
||||
set (RRC_GRAMMAR ${OPENAIR2_DIR}/RRC/LITE/MESSAGES/asn1c/ASN1_files/RRC-e30.asn)
|
||||
endif (${RRC_ASN1_VERSION} STREQUAL "Rel8")
|
||||
|
||||
set (RRC_FULL_DIR ${asn1_generated_dir}/${RRC_ASN1_VERSION})
|
||||
@@ -306,11 +312,11 @@ if (NOT ${ret} STREQUAL 0)
|
||||
message(FATAL_ERROR "${fix_asn1c_call}: error")
|
||||
endif (NOT ${ret} STREQUAL 0)
|
||||
file(GLOB rrc_source ${RRC_FULL_DIR}/*.c)
|
||||
set(rrc_source ${rrc_source} ${OPENAIR2_DIR}/RRC/LITE/MESSAGES/asn1_msg.c)
|
||||
file(GLOB rrc_h ${RRC_FULL_DIR}/*.h)
|
||||
set(rrc_h ${rrc_h} ${RRC_FULL_DIR}/asn1_constants.h)
|
||||
set_source_files_properties(${rrc_source} PROPERTIES COMPILE_FLAGS -w) # suppress warnings from generated code
|
||||
add_library(RRC_LIB ${rrc_h} ${rrc_source})
|
||||
add_library(RRC_LIB ${rrc_h} ${rrc_source}
|
||||
${OPENAIR2_DIR}/RRC/LITE/MESSAGES/asn1_msg.c)
|
||||
include_directories ("${RRC_FULL_DIR}")
|
||||
|
||||
# add the command to generate the source code
|
||||
@@ -483,115 +489,90 @@ add_list1_option(NB_ANTENNAS_TXRX "2" "Number of antennas in ????" "1" "2" "4")
|
||||
add_list2_option(RF_BOARD "EXMIMO" "RF head type" "None" "EXMIMO" "OAI_USRP" "OAI_BLADERF" "CPRIGW" "OAI_LMSSDR")
|
||||
|
||||
add_list2_option(TRANSP_PRO "None" "Transport protocol type" "None" "ETHERNET")
|
||||
|
||||
|
||||
#NOKIA config enhancement
|
||||
set (CONFIG_ROOTDIR
|
||||
${OPENAIR_DIR}/common/config
|
||||
)
|
||||
set (CONFIG_SOURCES
|
||||
${CONFIG_ROOTDIR}/config_load_configmodule.c
|
||||
${CONFIG_ROOTDIR}/config_userapi.c
|
||||
${CONFIG_ROOTDIR}/config_cmdline.c
|
||||
)
|
||||
set (CONFIG_LIBCONFIG_SOURCES
|
||||
${CONFIG_ROOTDIR}/libconfig/config_libconfig.c
|
||||
)
|
||||
add_library(params_libconfig MODULE ${CONFIG_LIBCONFIG_SOURCES} )
|
||||
target_link_libraries(params_libconfig config)
|
||||
# shared library loader
|
||||
set (SHLIB_LOADER_SOURCES
|
||||
${OPENAIR_DIR}/common/utils/load_module_shlib.c
|
||||
)
|
||||
# include RF devices / transport protocols library modules
|
||||
######################################################################
|
||||
|
||||
include_directories("${OPENAIR_TARGETS}/ARCH/EXMIMO/USERSPACE/LIB/")
|
||||
include_directories ("${OPENAIR_TARGETS}/ARCH/EXMIMO/DEFS/")
|
||||
#set (option_HWEXMIMOLIB_lib "-l ")
|
||||
set(HWLIB_EXMIMO_SOURCE
|
||||
set(HWLIB_EXMIMO_SOURCE
|
||||
${OPENAIR_TARGETS}/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.c
|
||||
# ${OPENAIR_TARGETS}/ARCH/EXMIMO/USERSPACE/LIB/gain_control.c
|
||||
)
|
||||
add_library(oai_exmimodevif MODULE ${HWLIB_EXMIMO_SOURCE} )
|
||||
|
||||
include_directories("${OPENAIR_TARGETS}/ARCH/USRP/USERSPACE/LIB/")
|
||||
set (option_HWUSRPLIB_lib "-l uhd")
|
||||
set(HWLIB_USRP_SOURCE
|
||||
set(HWLIB_USRP_SOURCE
|
||||
${OPENAIR_TARGETS}/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
|
||||
)
|
||||
add_library(oai_usrpdevif MODULE ${HWLIB_USRP_SOURCE} )
|
||||
target_link_libraries(oai_usrpdevif uhd)
|
||||
|
||||
include_directories("${OPENAIR_TARGETS}/ARCH/BLADERF/USERSPACE/LIB/")
|
||||
set (option_HWBLADERFLIB_lib "-l bladerf")
|
||||
set(HWLIB_BLADERF_SOURCE
|
||||
set(HWLIB_BLADERF_SOURCE
|
||||
${OPENAIR_TARGETS}/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c
|
||||
)
|
||||
add_library(oai_bladerfdevif MODULE ${HWLIB_BLADERF_SOURCE} )
|
||||
target_link_libraries(oai_bladerfdevif bladeRF)
|
||||
|
||||
include_directories("${OPENAIR_TARGETS}/ARCH/LMSSDR/USERSPACE/LIB/")
|
||||
set (option_HWLMSSDRLIB_lib "-l LMS_SDR -l LMS7002M -l Si5351C")
|
||||
set(HWLIB_LMSSDR_SOURCE
|
||||
|
||||
set(HWLIB_LMSSDR_SOURCE
|
||||
${OPENAIR_TARGETS}/ARCH/LMSSDR/USERSPACE/LIB/lms_lib.cpp
|
||||
)
|
||||
add_library(oai_lmssdrdevif MODULE ${HWLIB_LMSSDR_SOURCE} )
|
||||
target_include_directories(oai_lmssdrdevif PRIVATE /usr/local/include/lime)
|
||||
target_link_libraries(oai_lmssdrdevif LimeSuite )
|
||||
|
||||
include_directories("${OPENAIR_TARGETS}/ARCH/ETHERNET/USERSPACE/LIB/")
|
||||
set(TPLIB_ETHERNET_SOURCE
|
||||
set(TPLIB_ETHERNET_SOURCE
|
||||
${OPENAIR_TARGETS}/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c
|
||||
${OPENAIR_TARGETS}/ARCH/ETHERNET/USERSPACE/LIB/eth_udp.c
|
||||
${OPENAIR_TARGETS}/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c
|
||||
)
|
||||
add_library(oai_eth_transpro MODULE ${TPLIB_ETHERNET_SOURCE} )
|
||||
|
||||
include_directories("${OPENAIR_TARGETS}/ARCH/mobipass/")
|
||||
set(TPLIB_MOBIPASS_SOURCE
|
||||
${OPENAIR_TARGETS}/ARCH/mobipass/interface.c
|
||||
${OPENAIR_TARGETS}/ARCH/mobipass/mobipass.c
|
||||
${OPENAIR_TARGETS}/ARCH/mobipass/queues.c
|
||||
)
|
||||
add_library(oai_mobipass MODULE ${TPLIB_MOBIPASS_SOURCE} )
|
||||
|
||||
# RF devices / transport protocols settings
|
||||
######################################################################
|
||||
if (${RF_BOARD} STREQUAL "EXMIMO")
|
||||
set(DRIVER2013)
|
||||
include_directories ("${OPENAIR_TARGETS}/ARCH/EXMIMO/USERSPACE/LIB/")
|
||||
include_directories ("${OPENAIR_TARGETS}/ARCH/EXMIMO/DEFS/")
|
||||
set(HW_SOURCE ${HW_SOURCE}
|
||||
${OPENAIR_TARGETS}/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.c)
|
||||
# ${OPENAIR_TARGETS}/ARCH/EXMIMO/USERSPACE/LIB/gain_control.c)
|
||||
set(option_HW_lib "-rdynamic -ldl")
|
||||
# Hide all functions/variables in the mobipass library.
|
||||
# Use __attribute__((__visibility__("default")))
|
||||
# in the source code to unhide a function/variable.
|
||||
get_target_property(mobipas_cflags oai_mobipass COMPILE_FLAGS)
|
||||
set_target_properties(oai_mobipass PROPERTIES COMPILE_FLAGS "${mobipass_cflags} -fvisibility=hidden")
|
||||
|
||||
elseif (${RF_BOARD} STREQUAL "OAI_USRP")
|
||||
include_directories("${OPENAIR_TARGETS}/ARCH/USRP/USERSPACE/LIB/")
|
||||
include_directories("/opt/include/uhd")
|
||||
set(HW_SOURCE ${HW_SOURCE}
|
||||
${OPENAIR_TARGETS}/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp)
|
||||
LINK_DIRECTORIES("/opt/lib")
|
||||
set(option_HW_lib "-luhd -rdynamic -ldl -lboost_system")
|
||||
set(HWLIB_TCP_BRIDGE_SOURCE
|
||||
${OPENAIR_TARGETS}/ARCH/tcp_bridge/tcp_bridge.c
|
||||
)
|
||||
add_library(oai_tcp_bridge MODULE ${HWLIB_TCP_BRIDGE_SOURCE} )
|
||||
|
||||
elseif (${RF_BOARD} STREQUAL "OAI_BLADERF")
|
||||
include_directories("${OPENAIR_TARGETS}/ARCH/BLADERF/USERSPACE/LIB/")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/LOG")
|
||||
include_directories("/usr/include")
|
||||
set(HW_SOURCE ${HW_SOURCE}
|
||||
${OPENAIR_TARGETS}/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c
|
||||
)
|
||||
LINK_DIRECTORIES("/usr/lib/x86_64-linux-gnu")
|
||||
#get_target_property(tcp_bridge_cflags oai_tcp_bridge COMPILE_FLAGS)
|
||||
#set_target_properties(oai_tcp_bridge PROPERTIES COMPILE_FLAGS "${tcp_bridge_cflags} -fvisibility=hidden")
|
||||
set_target_properties(oai_tcp_bridge PROPERTIES COMPILE_FLAGS "-fvisibility=hidden")
|
||||
|
||||
set(option_HW_lib "bladeRF -rdynamic -ldl")
|
||||
|
||||
elseif (${RF_BOARD} STREQUAL "OAI_LMSSDR")
|
||||
include_directories("${OPENAIR_TARGETS}/ARCH/LMSSDR/USERSPACE/LIB")
|
||||
include_directories("${OPENAIR_TARGETS}/ARCH/LMSSDR/USERSPACE/LIB/lmsSDR")
|
||||
include_directories("${OPENAIR_TARGETS}/ARCH/LMSSDR/USERSPACE/LIB/lms7002m")
|
||||
include_directories("${OPENAIR_TARGETS}/ARCH/LMSSDR/USERSPACE/LIB/Si5351C")
|
||||
include_directories("${OPENAIR_TARGETS}/ARCH/LMSSDR/USERSPACE/LIB/lmsSDR/LMS_StreamBoard")
|
||||
LINK_DIRECTORIES("/usr/lib/x86_64-linux-gnu")
|
||||
LINK_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}/lmsSDR")
|
||||
LINK_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}/lms7002m")
|
||||
LINK_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}/Si5351C")
|
||||
set(HW_SOURCE ${HW_SOURCE} ${OPENAIR_TARGETS}/ARCH/LMSSDR/USERSPACE/LIB/lms_lib.cpp)
|
||||
set(option_HW_lib "-lLMS_SDR -lLMS7002M -lSi5351C -rdynamic -ldl")
|
||||
|
||||
elseif (${RF_BOARD} STREQUAL "CPRIGW")
|
||||
set(HW_SOURCE ${HW_SOURCE}
|
||||
${OPENAIR_TARGETS}/ARCH/CPRIGW/USERSPACE/LIB/cprigw_lib.c
|
||||
)
|
||||
include_directories("${OPENAIR_TARGETS}/ARCH/CPRIGW/USERSPACE/LIB/")
|
||||
set(option_HW_lib "-rdynamic dl")
|
||||
|
||||
endif (${RF_BOARD} STREQUAL "EXMIMO")
|
||||
|
||||
|
||||
if (${TRANSP_PRO} STREQUAL "ETHERNET")
|
||||
|
||||
include_directories ("${OPENAIR_TARGETS}/ARCH/ETHERNET/USERSPACE/LIB")
|
||||
set(TRANSPORT_SOURCE ${TRANSPORT_SOURCE}
|
||||
${OPENAIR_TARGETS}/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c
|
||||
${OPENAIR_TARGETS}/ARCH/ETHERNET/USERSPACE/LIB/eth_udp.c
|
||||
${OPENAIR_TARGETS}/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c
|
||||
)
|
||||
set(option_TP_lib "-rdynamic -ldl")
|
||||
|
||||
|
||||
endif (${TRANSP_PRO} STREQUAL "ETHERNET")
|
||||
##########################################################
|
||||
|
||||
include_directories ("${OPENAIR_TARGETS}/ARCH/COMMON")
|
||||
@@ -787,6 +768,7 @@ else()
|
||||
include_directories("${OPENAIR2_DIR}/UTIL")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/LOG")
|
||||
endif()
|
||||
include_directories("${NFAPI_DIR}")
|
||||
include_directories("${OPENAIR1_DIR}")
|
||||
include_directories("${OPENAIR2_DIR}/NAS")
|
||||
include_directories("${OPENAIR2_DIR}")
|
||||
@@ -844,13 +826,13 @@ include_directories("${OPENAIR_DIR}")
|
||||
if (FLEXRAN_AGENT_SB_IF)
|
||||
# set the version of protobuf messages, V3 not supported yet
|
||||
add_list1_option(FLPT_VERSION V2 "FLPT MSG protobuf grammar version" V2 V3)
|
||||
|
||||
|
||||
if (${FLPT_VERSION} STREQUAL "V2")
|
||||
set (FLPTDIR V2)
|
||||
elseif (${FLPT_VERSION} STREQUAL "V3")
|
||||
set (FLPTDIR V3)
|
||||
endif(${FLPT_VERSION} STREQUAL "V2")
|
||||
|
||||
|
||||
set(FLPT_MSG_DIR ${OPENAIR2_DIR}/ENB_APP/MESSAGES/${FLPTDIR} )
|
||||
set(FLPT_MSG_FILES
|
||||
${FLPT_MSG_DIR}/header.proto
|
||||
@@ -881,10 +863,10 @@ if (FLEXRAN_AGENT_SB_IF)
|
||||
${FLPT_C_DIR}/config_common.pb-c.c
|
||||
${FLPT_C_DIR}/control_delegation.pb-c.c
|
||||
)
|
||||
|
||||
|
||||
file(GLOB flpt_h ${FLPT_C_DIR}/*.h)
|
||||
set(flpt_h ${flpt_h} )
|
||||
|
||||
|
||||
add_library(FLPT_MSG
|
||||
${FLPT_OAI_generated}
|
||||
${FLPT_source}
|
||||
@@ -915,12 +897,12 @@ if (FLEXRAN_AGENT_SB_IF)
|
||||
)
|
||||
set(FLEXRAN_AGENT_LIB FLEXRAN_AGENT)
|
||||
#include_directories(${OPENAIR2_DIR}/ENB_APP)
|
||||
|
||||
|
||||
set(PROTOBUF_LIB "protobuf-c")
|
||||
|
||||
|
||||
FIND_PATH(LIBYAML_INCLUDE_DIR NAMES yaml.h)
|
||||
FIND_LIBRARY(LIBYAML_LIBRARIES NAMES yaml libyaml)
|
||||
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Yaml DEFAULT_MSG LIBYAML_LIBRARIES LIBYAML_INCLUDE_DIR)
|
||||
MARK_AS_ADVANCED(LIBYAML_INCLUDE_DIR LIBYAML_LIBRARIES)
|
||||
@@ -936,9 +918,9 @@ add_library(HASHTABLE
|
||||
include_directories(${OPENAIR_DIR}/common/utils/hashtable)
|
||||
|
||||
if (MESSAGE_CHART_GENERATOR)
|
||||
add_library(MSC
|
||||
add_library(MSC
|
||||
${OPENAIR_DIR}/common/utils/msc/msc.c
|
||||
)
|
||||
)
|
||||
set(MSC_LIB MSC)
|
||||
endif()
|
||||
include_directories(${OPENAIR_DIR}/common/utils/msc)
|
||||
@@ -1015,11 +997,13 @@ add_library(SECU_CN ${SECU_CN_SRC})
|
||||
|
||||
# Scheduler
|
||||
################################"
|
||||
set(SCHED_SRC
|
||||
set(SCHED_SRC
|
||||
${OPENAIR1_DIR}/SCHED/fapi_l1.c
|
||||
${OPENAIR1_DIR}/SCHED/phy_procedures_lte_eNb.c
|
||||
${OPENAIR1_DIR}/SCHED/phy_procedures_lte_ue.c
|
||||
${OPENAIR1_DIR}/SCHED/phy_procedures_lte_common.c
|
||||
${OPENAIR1_DIR}/SCHED/phy_mac_stub.c
|
||||
${OPENAIR1_DIR}/SCHED/ru_procedures.c
|
||||
# ${OPENAIR1_DIR}/SCHED/phy_mac_stub.c
|
||||
${OPENAIR1_DIR}/SCHED/pucch_pc.c
|
||||
${OPENAIR1_DIR}/SCHED/pusch_pc.c
|
||||
${OPENAIR1_DIR}/SCHED/srs_pc.c
|
||||
@@ -1048,6 +1032,7 @@ set(PHY_SRC
|
||||
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/lte_mcs.c
|
||||
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/pbch.c
|
||||
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dci.c
|
||||
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/edci.c
|
||||
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/phich.c
|
||||
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/pcfich.c
|
||||
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/pucch.c
|
||||
@@ -1100,13 +1085,13 @@ set(PHY_SRC
|
||||
${OPENAIR1_DIR}/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
|
||||
${OPENAIR1_DIR}/PHY/CODING/3gpplte_turbo_decoder_avx2_16bit.c
|
||||
${OPENAIR1_DIR}/PHY/CODING/lte_rate_matching.c
|
||||
${OPENAIR1_DIR}/PHY/CODING/rate_matching.c
|
||||
${OPENAIR1_DIR}/PHY/CODING/viterbi.c
|
||||
${OPENAIR1_DIR}/PHY/CODING/viterbi_lte.c
|
||||
${OPENAIR1_DIR}/PHY/INIT/lte_init.c
|
||||
${OPENAIR1_DIR}/PHY/INIT/lte_parms.c
|
||||
${OPENAIR1_DIR}/PHY/INIT/lte_param_init.c
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/file_output.c
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/cadd_vv.c
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/lte_dfts.c
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/log2_approx.c
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/cmult_sv.c
|
||||
@@ -1121,11 +1106,17 @@ set(PHY_SRC
|
||||
if (${SMBV})
|
||||
set(PHY_SRC "${PHY_SRC} ${OPENAIR1_DIR}/PHY/TOOLS/smbv.c")
|
||||
endif (${SMBV})
|
||||
|
||||
if (${COMPILATION_AVX2} STREQUAL "True")
|
||||
set(PHY_SRC ${PHY_SRC} ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dlsch_llr_computation_avx2.c)
|
||||
endif ()
|
||||
|
||||
add_library(PHY ${PHY_SRC})
|
||||
|
||||
#Layer 2 library
|
||||
#####################
|
||||
set(MAC_DIR ${OPENAIR2_DIR}/LAYER2/MAC)
|
||||
set(PHY_INTERFACE_DIR ${OPENAIR2_DIR}/PHY_INTERFACE)
|
||||
set(RLC_DIR ${OPENAIR2_DIR}/LAYER2/RLC)
|
||||
set(RLC_UM_DIR ${OPENAIR2_DIR}/LAYER2/RLC/UM_v9.3.0)
|
||||
set(RLC_AM_DIR ${OPENAIR2_DIR}/LAYER2/RLC/AM_v9.3.0)
|
||||
@@ -1176,7 +1167,7 @@ set(L2_SRC
|
||||
${RRC_DIR}/L2_interface.c
|
||||
)
|
||||
set (MAC_SRC
|
||||
${MAC_DIR}/lte_transport_init.c
|
||||
${PHY_INTERFACE_DIR}/IF_Module.c
|
||||
${MAC_DIR}/main.c
|
||||
${MAC_DIR}/ue_procedures.c
|
||||
${MAC_DIR}/ra_procedures.c
|
||||
@@ -1308,7 +1299,7 @@ set(libnas_api_OBJS
|
||||
${NAS_SRC}COMMON/API/NETWORK/nas_message.c
|
||||
${NAS_SRC}COMMON/API/NETWORK/network_api.c
|
||||
)
|
||||
|
||||
|
||||
set(libnas_emm_msg_OBJS
|
||||
${NAS_SRC}COMMON/EMM/MSG/AttachAccept.c
|
||||
${NAS_SRC}COMMON/EMM/MSG/AttachComplete.c
|
||||
@@ -1341,7 +1332,7 @@ set(libnas_emm_msg_OBJS
|
||||
${NAS_SRC}COMMON/EMM/MSG/TrackingAreaUpdateRequest.c
|
||||
${NAS_SRC}COMMON/EMM/MSG/UplinkNasTransport.c
|
||||
)
|
||||
|
||||
|
||||
set(libnas_esm_msg_OBJS
|
||||
${NAS_SRC}COMMON/ESM/MSG/ActivateDedicatedEpsBearerContextAccept.c
|
||||
${NAS_SRC}COMMON/ESM/MSG/ActivateDedicatedEpsBearerContextReject.c
|
||||
@@ -1461,7 +1452,7 @@ set (libnas_utils_OBJS
|
||||
${NAS_SRC}COMMON/UTIL/OctetString.c
|
||||
)
|
||||
|
||||
if(NAS_UE)
|
||||
if(NAS_UE)
|
||||
set(libnas_ue_api_OBJS
|
||||
${NAS_SRC}UE/API/USER/at_command.c
|
||||
${NAS_SRC}UE/API/USER/at_error.c
|
||||
@@ -1611,6 +1602,7 @@ ${OPENAIR1_DIR}/SIMULATION/TOOLS/multipath_tv_channel.c
|
||||
${OPENAIR1_DIR}/SIMULATION/RF/rf.c
|
||||
${OPENAIR1_DIR}/SIMULATION/RF/dac.c
|
||||
${OPENAIR1_DIR}/SIMULATION/RF/adc.c
|
||||
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
|
||||
)
|
||||
|
||||
add_library(SIMU_ETH
|
||||
@@ -1618,7 +1610,7 @@ ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
|
||||
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/multicast_link.c
|
||||
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/socket.c
|
||||
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/bypass_session_layer.c
|
||||
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/emu_transport.c
|
||||
#${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/emu_transport.c
|
||||
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/pgm_link.c
|
||||
)
|
||||
|
||||
@@ -1689,9 +1681,25 @@ else()
|
||||
endif()
|
||||
|
||||
# Atlas is required by some packages, but not found in pkg-config
|
||||
if(EXISTS "/usr/include/atlas/cblas.h")
|
||||
# So, here are some hacks here. Hope this gets fixed in future!
|
||||
if(EXISTS "/usr/include/atlas/cblas.h" OR EXISTS "/usr/include/cblas.h")
|
||||
include_directories("/usr/include/atlas")
|
||||
list(APPEND ATLAS_LIBRARIES lapack cblas atlas)
|
||||
LINK_DIRECTORIES("/usr/lib64")
|
||||
LINK_DIRECTORIES("/usr/lib64/atlas") #Added because atlas libraries in CentOS 7 are here!
|
||||
|
||||
if(EXISTS "/usr/lib64/libblas.so" OR EXISTS "/usr/lib/libblas.so") #Case for CentOS7
|
||||
list(APPEND ATLAS_LIBRARIES blas)
|
||||
else() # Case for Ubuntu
|
||||
list(APPEND ATLAS_LIBRARIES cblas)
|
||||
endif()
|
||||
|
||||
if(EXISTS "/usr/lib/atlas/libtatlas.so" OR EXISTS "/usr/lib64/atlas/libtatlas.so") #Case for CentOS7
|
||||
list(APPEND ATLAS_LIBRARIES tatlas)
|
||||
else()
|
||||
list(APPEND ATLAS_LIBRARIES atlas) #Case for Ubuntu
|
||||
endif()
|
||||
|
||||
list(APPEND ATLAS_LIBRARIES lapack)
|
||||
else()
|
||||
message("No Blas/Atlas libs found, some targets will fail")
|
||||
endif()
|
||||
@@ -1757,6 +1765,7 @@ add_executable(lte-softmodem
|
||||
${OPENAIR_TARGETS}/RT/USER/rt_wrapper.c
|
||||
${OPENAIR_TARGETS}/RT/USER/lte-ue.c
|
||||
${OPENAIR_TARGETS}/RT/USER/lte-enb.c
|
||||
${OPENAIR_TARGETS}/RT/USER/lte-ru.c
|
||||
${OPENAIR_TARGETS}/RT/USER/lte-softmodem.c
|
||||
${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c
|
||||
${OPENAIR_TARGETS}/SIMU/USER/init_lte.c
|
||||
@@ -1764,22 +1773,24 @@ add_executable(lte-softmodem
|
||||
${OPENAIR_TARGETS}/ARCH/COMMON/common_lib.c
|
||||
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
|
||||
${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
|
||||
${OPENAIR_DIR}/common/utils/utils.c
|
||||
${OPENAIR_DIR}/common/utils/system.c
|
||||
${GTPU_need_ITTI}
|
||||
${HW_SOURCE}
|
||||
${TRANSPORT_SOURCE}
|
||||
${RTAI_SOURCE}
|
||||
${XFORMS_SOURCE}
|
||||
${XFORMS_SOURCE_SOFTMODEM}
|
||||
${T_SOURCE}
|
||||
${CONFIG_SOURCES}
|
||||
${SHLIB_LOADER_SOURCES}
|
||||
)
|
||||
|
||||
target_link_libraries (lte-softmodem -ldl
|
||||
target_link_libraries (lte-softmodem -ldl
|
||||
-Wl,--start-group
|
||||
RRC_LIB S1AP_LIB S1AP_ENB GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS L2 ${MSC_LIB} ${RAL_LIB} ${NAS_UE_LIB} ${ITTI_LIB} ${MIH_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} ${FLEXRAN_AGENT_LIB} LFDS7
|
||||
-Wl,--end-group )
|
||||
|
||||
target_link_libraries (lte-softmodem ${LIBXML2_LIBRARIES})
|
||||
target_link_libraries (lte-softmodem pthread m ${CONFIG_LIBRARIES} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} sctp ${option_HW_lib} ${option_TP_lib} ${XFORMS_LIBRARIES} ${PROTOBUF_LIB} ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES})
|
||||
target_link_libraries (lte-softmodem pthread m ${CONFIG_LIBRARIES} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} sctp ${XFORMS_LIBRARIES} ${PROTOBUF_LIB} ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES})
|
||||
target_link_libraries (lte-softmodem ${LIB_LMS_LIBRARIES})
|
||||
target_link_libraries (lte-softmodem ${T_LIB})
|
||||
|
||||
@@ -1800,12 +1811,13 @@ add_executable(lte-softmodem-nos1
|
||||
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
|
||||
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
|
||||
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
|
||||
${HW_SOURCE}
|
||||
${TRANSPORT_SOURCE}
|
||||
${OPENAIR_DIR}/common/utils/system.c
|
||||
${RTAI_SOURCE}
|
||||
${XFORMS_SOURCE}
|
||||
${XFORMS_SOURCE_SOFTMODEM}
|
||||
${T_SOURCE}
|
||||
${CONFIG_SOURCES}
|
||||
${SHLIB_LOADER_SOURCES}
|
||||
)
|
||||
target_link_libraries (lte-softmodem-nos1
|
||||
-Wl,--start-group
|
||||
@@ -1813,7 +1825,7 @@ target_link_libraries (lte-softmodem-nos1
|
||||
-Wl,--end-group )
|
||||
|
||||
target_link_libraries (lte-softmodem-nos1 ${LIBXML2_LIBRARIES})
|
||||
target_link_libraries (lte-softmodem-nos1 pthread m ${CONFIG_LIBRARIES} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${option_HW_lib} ${option_TP_lib} ${XFORMS_LIBRARIES} ${PROTOBUF_LIB} ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES})
|
||||
target_link_libraries (lte-softmodem-nos1 pthread m ${CONFIG_LIBRARIES} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${XFORMS_LIBRARIES} ${PROTOBUF_LIB} ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES})
|
||||
target_link_libraries (lte-softmodem-nos1 ${LIB_LMS_LIBRARIES})
|
||||
target_link_libraries (lte-softmodem-nos1 ${T_LIB})
|
||||
|
||||
@@ -1825,33 +1837,18 @@ add_executable(rrh_gw
|
||||
${OPENAIR_TARGETS}/RT/USER/eNB_transport_IQ.c
|
||||
${OPENAIR_TARGETS}/RT/USER/UE_transport_IQ.c
|
||||
${OPENAIR_TARGETS}/RT/USER/rt_wrapper.c
|
||||
${OPENAIR_TARGETS}/ARCH/COMMON/common_lib.c
|
||||
${HW_SOURCE}
|
||||
${TRANSPORT_SOURCE}
|
||||
${OPENAIR_TARGETS}/ARCH/COMMON/common_lib.c
|
||||
${T_SOURCE}
|
||||
)
|
||||
target_include_directories(rrh_gw PRIVATE ${OPENAIR_DIR}/common/utils/itti)
|
||||
target_link_libraries(rrh_gw
|
||||
-Wl,--start-group
|
||||
UTIL LFDS
|
||||
UTIL LFDS -ldl
|
||||
-Wl,--end-group )
|
||||
target_link_libraries (rrh_gw rt pthread m )
|
||||
target_link_libraries (rrh_gw ${option_HW_lib} ${option_TP_lib})
|
||||
target_link_libraries (rrh_gw ${LIB_LMS_LIBRARIES})
|
||||
target_link_libraries (rrh_gw ${T_LIB})
|
||||
|
||||
Message("-- option_HW_lib=${option_HW_lib}")
|
||||
Message("-- HW_SOURCE=${HW_SOURCE}")
|
||||
Message("-- option_TP_lib=${option_TP_lib}")
|
||||
Message("-- TRANSPORT_SOURCE=${TRANSPORT_SOURCE}")
|
||||
|
||||
if (${RF_BOARD} STREQUAL "OAI_LMSSDR")
|
||||
add_dependencies(lte-softmodem LMS7002M LMS_SDR Si5351C)
|
||||
add_dependencies(lte-softmodem-nos1 LMS7002M LMS_SDR Si5351C)
|
||||
add_dependencies(rrh_gw LMS7002M LMS_SDR Si5351C)
|
||||
endif (${RF_BOARD} STREQUAL "OAI_LMSSDR")
|
||||
|
||||
|
||||
|
||||
# USIM process
|
||||
#################
|
||||
@@ -1888,7 +1885,7 @@ add_executable(oaisim
|
||||
${x2ap_h}
|
||||
${OPENAIR_BIN_DIR}/messages_xml.h
|
||||
${OPENAIR_TARGETS}/RT/USER/lte-ue.c
|
||||
${OPENAIR_TARGETS}/RT/USER/lte-enb.c
|
||||
${OPENAIR_TARGETS}/RT/USER/lte-ru.c
|
||||
${OPENAIR_TARGETS}/RT/USER/rt_wrapper.c
|
||||
${OPENAIR_TARGETS}/SIMU/USER/channel_sim.c
|
||||
${OPENAIR_TARGETS}/SIMU/USER/init_lte.c
|
||||
@@ -1898,26 +1895,29 @@ add_executable(oaisim
|
||||
${OPENAIR_TARGETS}/SIMU/USER/oaisim_functions.c
|
||||
${OPENAIR_TARGETS}/SIMU/USER/event_handler.c
|
||||
${OPENAIR_TARGETS}/SIMU/USER/oaisim.c
|
||||
${OPENAIR_TARGETS}/ARCH/COMMON/common_lib.c
|
||||
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
|
||||
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
|
||||
${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
|
||||
${OPENAIR_DIR}/common/utils/utils.c
|
||||
${OPENAIR_DIR}/common/utils/system.c
|
||||
${GTPU_need_ITTI}
|
||||
${OPENAIR_TARGETS}/COMMON/create_tasks.c
|
||||
${HW_SOURCE}
|
||||
${TRANSPORT_SOURCE}
|
||||
${XFORMS_SOURCE}
|
||||
${T_SOURCE}
|
||||
${CONFIG_SOURCES}
|
||||
${SHLIB_LOADER_SOURCES}
|
||||
)
|
||||
|
||||
|
||||
target_include_directories(oaisim PUBLIC ${OPENAIR_TARGETS}/SIMU/USER)
|
||||
target_link_libraries (oaisim
|
||||
-Wl,--start-group
|
||||
RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB GTPV1U SECU_CN UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS ${MSC_LIB} L2 ${RAL_LIB} LIB_NAS_UE SIMU SIMU_ETH SECU_OSA ${ITTI_LIB} ${MIH_LIB}
|
||||
-Wl,-ldl,--start-group
|
||||
RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB GTPV1U SECU_CN UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS ${MSC_LIB} L2 ${RAL_LIB} LIB_NAS_UE SIMU SECU_OSA ${ITTI_LIB} ${MIH_LIB}
|
||||
-Wl,--end-group )
|
||||
|
||||
target_link_libraries (oaisim ${LIBXML2_LIBRARIES} ${LAPACK_LIBRARIES})
|
||||
target_link_libraries (oaisim pthread m ${CONFIG_LIBRARIES} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} sctp ${option_HW_lib} ${option_TP_lib}
|
||||
target_link_libraries (oaisim pthread m ${CONFIG_LIBRARIES} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} sctp
|
||||
${ATLAS_LIBRARIES} ${XFORMS_LIBRARIES} ${OPENPGM_LIBRARIES})
|
||||
#Force link with forms, regardless XFORMS option
|
||||
target_link_libraries (oaisim forms)
|
||||
@@ -1943,22 +1943,24 @@ add_executable(oaisim_nos1
|
||||
${OPENAIR_TARGETS}/SIMU/USER/oaisim_functions.c
|
||||
${OPENAIR_TARGETS}/SIMU/USER/event_handler.c
|
||||
${OPENAIR_TARGETS}/SIMU/USER/oaisim.c
|
||||
${OPENAIR_TARGETS}/ARCH/COMMON/common_lib.c
|
||||
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
|
||||
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
|
||||
${OPENAIR_TARGETS}/COMMON/create_tasks.c
|
||||
${HW_SOURCE}
|
||||
${TRANSPORT_SOURCE}
|
||||
${OPENAIR_DIR}/common/utils/system.c
|
||||
${XFORMS_SOURCE}
|
||||
${T_SOURCE}
|
||||
${CONFIG_SOURCES}
|
||||
${SHLIB_LOADER_SOURCES}
|
||||
)
|
||||
target_include_directories(oaisim_nos1 PUBLIC ${OPENAIR_TARGETS}/SIMU/USER)
|
||||
target_link_libraries (oaisim_nos1
|
||||
-Wl,--start-group
|
||||
RRC_LIB X2AP_LIB SECU_CN UTIL HASHTABLE SCHED_LIB PHY LFDS ${MSC_LIB} L2 ${RAL_LIB} SIMU SIMU_ETH SECU_OSA ${ITTI_LIB} ${MIH_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} ${FLEXRAN_AGENT_LIB} LFDS7
|
||||
RRC_LIB X2AP_LIB SECU_CN UTIL HASHTABLE SCHED_LIB PHY LFDS ${MSC_LIB} L2 ${RAL_LIB} SIMU SECU_OSA ${ITTI_LIB} ${MIH_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} ${FLEXRAN_AGENT_LIB} LFDS7
|
||||
-Wl,--end-group )
|
||||
|
||||
target_link_libraries (oaisim_nos1 ${LIBXML2_LIBRARIES} ${LAPACK_LIBRARIES})
|
||||
target_link_libraries (oaisim_nos1 pthread m ${CONFIG_LIBRARIES} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${option_HW_lib} ${option_TP_lib}
|
||||
target_link_libraries (oaisim_nos1 pthread m ${CONFIG_LIBRARIES} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES}
|
||||
${ATLAS_LIBRARIES} ${XFORMS_LIBRARIES} ${OPENPGM_LIBRARIES} ${PROTOBUF_LIB} ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES})
|
||||
#Force link with forms, regardless XFORMS option
|
||||
target_link_libraries (oaisim_nos1 forms)
|
||||
@@ -1971,7 +1973,20 @@ target_link_libraries (oaisim_nos1 ${T_LIB})
|
||||
# Unitary tests for each piece of L1: example, mbmssim is MBMS L1 simulator
|
||||
#####################################
|
||||
|
||||
#special case for dlim TM4, which uses its own version of phy_scope code
|
||||
add_executable(dlsim_tm4
|
||||
${OPENAIR_BIN_DIR}/messages_xml.h
|
||||
${OPENAIR1_DIR}/SIMULATION/LTE_PHY/dlsim_tm4.c
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/lte_phy_scope_tm4.c
|
||||
${T_SOURCE}
|
||||
)
|
||||
target_link_libraries (dlsim_tm4
|
||||
-Wl,--start-group SIMU UTIL SCHED_LIB PHY LFDS ${ITTI_LIB} -Wl,--end-group
|
||||
pthread m rt ${CONFIG_LIBRARIES} ${ATLAS_LIBRARIES} ${XFORMS_LIBRARIES} ${T_LIB}
|
||||
)
|
||||
|
||||
foreach(myExe dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim syncsim)
|
||||
|
||||
add_executable(${myExe}
|
||||
${OPENAIR_BIN_DIR}/messages_xml.h
|
||||
${OPENAIR1_DIR}/SIMULATION/LTE_PHY/${myExe}.c
|
||||
@@ -1996,7 +2011,7 @@ add_executable(test_epc_generate_scenario
|
||||
${OPENAIR_BIN_DIR}/messages_xml.h
|
||||
)
|
||||
target_link_libraries (test_epc_generate_scenario
|
||||
-Wl,--start-group RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB GTPV1U LIB_NAS_UE SECU_CN UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS ${ITTI_LIB} ${MSC_LIB} L2 -Wl,--end-group pthread m rt crypt sctp ${LIBXML2_LIBRARIES} ${LIBXSLT_LIBRARIES} ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES}
|
||||
-Wl,--start-group RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB GTPV1U LIB_NAS_UE SECU_CN UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS ${ITTI_LIB} ${MSC_LIB} L2 -Wl,--end-group pthread m rt crypt sctp ${LIBXML2_LIBRARIES} ${LIBXSLT_LIBRARIES} ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES}
|
||||
)
|
||||
|
||||
add_executable(test_epc_play_scenario
|
||||
@@ -2017,7 +2032,7 @@ add_executable(test_epc_play_scenario
|
||||
)
|
||||
target_include_directories(test_epc_play_scenario PUBLIC /usr/local/share/asn1c)
|
||||
target_link_libraries (test_epc_play_scenario
|
||||
-Wl,--start-group RRC_LIB S1AP_LIB X2AP_LIB GTPV1U LIB_NAS_UE SECU_CN UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS ${ITTI_LIB} ${MSC_LIB} -Wl,--end-group pthread m rt crypt sctp ${LIBXML2_LIBRARIES} ${LIBXSLT_LIBRARIES} ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES}
|
||||
-Wl,--start-group RRC_LIB S1AP_LIB X2AP_LIB GTPV1U LIB_NAS_UE SECU_CN UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS ${ITTI_LIB} ${MSC_LIB} -Wl,--end-group pthread m rt crypt sctp ${LIBXML2_LIBRARIES} ${LIBXSLT_LIBRARIES} ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES}
|
||||
)
|
||||
|
||||
|
||||
@@ -2037,7 +2052,7 @@ foreach(myExe s1ap
|
||||
${OPENAIR3_DIR}/TEST/test_${myExe}.c
|
||||
)
|
||||
target_link_libraries (test_${myExe}
|
||||
-Wl,--start-group SECU_CN UTIL LFDS -Wl,--end-group m rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES}
|
||||
-Wl,--start-group SECU_CN UTIL LFDS -Wl,--end-group m rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES}
|
||||
)
|
||||
endforeach(myExe)
|
||||
|
||||
@@ -2047,21 +2062,22 @@ endforeach(myExe)
|
||||
|
||||
#ensure that the T header files are generated before targets depending on them
|
||||
if (${T_TRACER})
|
||||
add_dependencies(lte-softmodem generate_T)
|
||||
add_dependencies(lte-softmodem-nos1 generate_T)
|
||||
add_dependencies(rrh_gw generate_T)
|
||||
add_dependencies(oaisim generate_T)
|
||||
add_dependencies(oaisim_nos1 generate_T)
|
||||
add_dependencies(dlsim generate_T)
|
||||
add_dependencies(dlsim_tm7 generate_T)
|
||||
add_dependencies(ulsim generate_T)
|
||||
add_dependencies(pbchsim generate_T)
|
||||
add_dependencies(scansim generate_T)
|
||||
add_dependencies(mbmssim generate_T)
|
||||
add_dependencies(pdcchsim generate_T)
|
||||
add_dependencies(pucchsim generate_T)
|
||||
add_dependencies(prachsim generate_T)
|
||||
add_dependencies(syncsim generate_T)
|
||||
foreach(i
|
||||
#all "add_executable" definitions (except tests, rb_tool, updatefw)
|
||||
lte-softmodem lte-softmodem-nos1 rrh_gw oaisim oaisim_nos1
|
||||
dlsim_tm4 dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim
|
||||
pdcchsim pucchsim prachsim syncsim
|
||||
#all "add_library" definitions
|
||||
ITTI RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB
|
||||
oai_exmimodevif oai_usrpdevif oai_bladerfdevif oai_lmssdrdevif
|
||||
oai_eth_transpro
|
||||
FLPT_MSG ASYNC_IF FLEXRAN_AGENT HASHTABLE MSC UTIL OMG_SUMO SECU_OSA
|
||||
SECU_CN SCHED_LIB PHY L2 default_sched remote_sched RAL MIH CN_UTILS
|
||||
GTPV1U SCTP_CLIENT UDP LIB_NAS_UE LFDS LFDS7 SIMU OPENAIR0_LIB)
|
||||
if (TARGET ${i})
|
||||
add_dependencies(${i} generate_T)
|
||||
endif()
|
||||
endforeach(i)
|
||||
endif (${T_TRACER})
|
||||
|
||||
##################################################
|
||||
@@ -2086,11 +2102,16 @@ endforeach()
|
||||
# force castxml and clang compilation with gnu89 standard
|
||||
# we can't use cXX standard as pthread_rwlock_t is gnu standard
|
||||
list(APPEND itti_compiler_options "-std=gnu89")
|
||||
|
||||
set (ITTI_H ${ITTI_DIR}/intertask_interface_types.h)
|
||||
if(EXISTS /usr/bin/gccxml)
|
||||
set(xml_command gccxml ${itti_compiler_options} -fxml=${OPENAIR_BIN_DIR}/messages.xml ${ITTI_H})
|
||||
else()
|
||||
set(xml_command castxml --castxml-gccxml ${itti_compiler_options} ${ITTI_H} -o ${OPENAIR_BIN_DIR}/messages.xml)
|
||||
endif()
|
||||
|
||||
add_custom_command (
|
||||
OUTPUT ${OPENAIR_BIN_DIR}/messages.xml
|
||||
COMMAND gccxml ${itti_compiler_options} -fxml=${OPENAIR_BIN_DIR}/messages.xml ${ITTI_H}
|
||||
COMMAND ${xml_command}
|
||||
DEPENDS ${S1AP_OAI_generated} ${RRC_FULL_DIR}/asn1_constants.h
|
||||
)
|
||||
|
||||
@@ -2200,16 +2221,16 @@ make_driver(ue_ip ${OPENAIR2_DIR}/NETWORK_DRIVER/UE_IP ${ue_ip_src})
|
||||
# OCTAVE tools
|
||||
###############
|
||||
set(OCT_INCL -I${OPENAIR_TARGETS}/ARCH/EXMIMO/DEFS -I${OPENAIR_TARGETS}/ARCH/EXMIMO/USERSPACE/LIB -I${OPENAIR_TARGETS}/ARCH/COMMON)
|
||||
set(OCT_LIBS -L${CMAKE_CURRENT_BINARY_DIR} -lm -lOPENAIR0_LIB)
|
||||
set(OCT_LIBS -L${CMAKE_CURRENT_BINARY_DIR} -lm -lOPENAIR0_LIB)
|
||||
set(OCT_FLAGS -DEXMIMO)
|
||||
set(OCT_DIR ${OPENAIR_TARGETS}/ARCH/EXMIMO/USERSPACE/OCTAVE)
|
||||
set(OCT_FILES
|
||||
oarf_config_exmimo.oct
|
||||
oarf_config_exmimo.oct
|
||||
oarf_get_frame.oct
|
||||
oarf_stop.oct
|
||||
oarf_send_frame.oct
|
||||
oarf_get_num_detected_cards.oct
|
||||
oarf_config_exmimo.oct
|
||||
oarf_get_frame.oct
|
||||
oarf_stop.oct
|
||||
oarf_send_frame.oct
|
||||
oarf_get_num_detected_cards.oct
|
||||
oarf_stop_without_reset.oct
|
||||
)
|
||||
|
||||
@@ -2219,7 +2240,7 @@ foreach(file IN ITEMS ${OCT_FILES})
|
||||
OUTPUT ${file}
|
||||
DEPENDS ${OCT_DIR}/${src} OPENAIR0_LIB
|
||||
COMMAND mkoctfile
|
||||
ARGS ${OCT_FLAGS} ${OCT_INCL} ${OCT_LIBS}
|
||||
ARGS ${OCT_FLAGS} ${OCT_INCL} ${OCT_LIBS}
|
||||
ARGS -o ${file} ${OCT_DIR}/${src}
|
||||
COMMENT "Generating ${file}"
|
||||
VERBATIM
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
@@ -88,31 +88,47 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.2 -std=gnu99 -Wall -Wstrict-prototype
|
||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ggdb -DMALLOC_CHECK_=3")
|
||||
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -ggdb -DMALLOC_CHECK_=3 -O2")
|
||||
|
||||
#This is to detect nettle version changes between Ubuntu 14.04/16.04
|
||||
set ( nettle_cmd "nettle-hash" )
|
||||
set ( nettle_arg "-V" )
|
||||
execute_process(COMMAND ${nettle_cmd} ${nettle_arg} RESULT_VARIABLE rv OUTPUT_VARIABLE ov ERROR_VARIABLE ev)
|
||||
|
||||
string(REGEX MATCH "[+-]?[0-9]+([.][0-9]+)?" nv ${ov})
|
||||
|
||||
message("NETTLE_VERSION = ${nv}")
|
||||
|
||||
# we need to remove decimal as floating point arithematic does not work properly with C preprocessor
|
||||
STRING(REGEX REPLACE "[.]" "" nv ${nv})
|
||||
|
||||
if ("${nv}" STREQUAL "")
|
||||
message( FATAL_ERROR "The nettle version not detected properly. Try to run build_oai -I again" )
|
||||
endif()
|
||||
|
||||
set (NETTLE_VERSION "${nv}")
|
||||
add_definitions("-DNETTLE_VERSION=${NETTLE_VERSION}")
|
||||
##This is to detect nettle version changes between Ubuntu 14.04/16.04
|
||||
#set ( nettle_cmd "nettle-hash" )
|
||||
#set ( nettle_arg "-V" )
|
||||
#execute_process(COMMAND ${nettle_cmd} ${nettle_arg} RESULT_VARIABLE rv OUTPUT_VARIABLE ov ERROR_VARIABLE ev)
|
||||
#
|
||||
#string(REGEX MATCH "[+-]?[0-9]+([.][0-9]+)?" nv ${ov})
|
||||
#
|
||||
#message("NETTLE_VERSION = ${nv}")
|
||||
#
|
||||
## we need to remove decimal as floating point arithematic does not work properly with C preprocessor
|
||||
#STRING(REGEX REPLACE "[.]" "" nv ${nv})
|
||||
#
|
||||
#if ("${nv}" STREQUAL "")
|
||||
# message( FATAL_ERROR "The nettle version not detected properly. Try to run build_oai -I again" )
|
||||
#endif()
|
||||
#
|
||||
#set (NETTLE_VERSION "${nv}")
|
||||
#add_definitions("-DNETTLE_VERSION=${NETTLE_VERSION}")
|
||||
|
||||
include(FindPkgConfig)
|
||||
|
||||
INCLUDE(FindNettle)
|
||||
IF( NOT NETTLE_FOUND )
|
||||
MESSAGE( SEND_ERROR "Nettle is required" )
|
||||
ENDIF( NOT NETTLE_FOUND )
|
||||
pkg_search_module(NETTLE nettle)
|
||||
if(NOT ${NETTLE_FOUND})
|
||||
message( FATAL_ERROR "PACKAGE nettle not found: some targets will fail. Run build_oai -I again!")
|
||||
else()
|
||||
include_directories(${NETTLE_INCLUDE_DIRS})
|
||||
endif()
|
||||
|
||||
message ("NETTLE VERSION_INSTALLED = ${NETTLE_VERSION}")
|
||||
|
||||
string(REGEX REPLACE "([0-9]+).*" "\\1" NETTLE_VERSION_MAJOR ${NETTLE_VERSION})
|
||||
string(REGEX REPLACE "[0-9]+\\.([0-9]+).*" "\\1" NETTLE_VERSION_MINOR ${NETTLE_VERSION})
|
||||
message ("NETTLE_VERSION_MAJOR = ${NETTLE_VERSION_MAJOR}")
|
||||
message ("NETTLE_VERSION_MINOR = ${NETTLE_VERSION_MINOR}")
|
||||
|
||||
if ("${NETTLE_VERSION_MAJOR}" STREQUAL "" OR "${NETTLE_VERSION_MINOR}" STREQUAL "")
|
||||
message( FATAL_ERROR "The nettle version not detected properly. Try to run build_oai -I again" )
|
||||
endif()
|
||||
|
||||
add_definitions("-DNETTLE_VERSION_MAJOR=${NETTLE_VERSION_MAJOR}")
|
||||
add_definitions("-DNETTLE_VERSION_MINOR=${NETTLE_VERSION_MINOR}")
|
||||
|
||||
|
||||
pkg_search_module(OPENSSL openssl REQUIRED)
|
||||
@@ -215,8 +231,8 @@ set(api_user_HDR
|
||||
|
||||
add_library(api_user ${api_user_SRC} ${api_user_HDR})
|
||||
target_include_directories(api_user PRIVATE ${OPENAIR_NAS_DIR}/UE/API/USER
|
||||
${OPENAIR_NAS_DIR}/UE
|
||||
${OPENAIR_NAS_DIR}/COMMON
|
||||
${OPENAIR_NAS_DIR}/UE
|
||||
)
|
||||
|
||||
################################################################################
|
||||
@@ -397,6 +413,7 @@ target_include_directories(emm PRIVATE
|
||||
${OPENAIR_DIR}/common/utils/msc
|
||||
${OPENAIR_DIR}/common/utils
|
||||
${OPENAIR_DIR}/openair2/COMMON
|
||||
${OPENAIR_NAS_DIR}/UE
|
||||
${OPENAIR_NAS_DIR}/UE/API/USIM
|
||||
${OPENAIR_NAS_DIR}/UE/EMM
|
||||
${OPENAIR_NAS_DIR}/COMMON/EMM/MSG
|
||||
@@ -409,7 +426,6 @@ target_include_directories(emm PRIVATE
|
||||
# esm LIB
|
||||
################################################################################
|
||||
set(esm_SRC
|
||||
${OPENAIR_NAS_DIR}/UE/ESM/esm_main.c
|
||||
${OPENAIR_NAS_DIR}/UE/ESM/DedicatedEpsBearerContextActivation.c
|
||||
${OPENAIR_NAS_DIR}/UE/ESM/DefaultEpsBearerContextActivation.c
|
||||
${OPENAIR_NAS_DIR}/UE/ESM/EpsBearerContextDeactivation.c
|
||||
@@ -452,6 +468,7 @@ set(esm_SRC
|
||||
)
|
||||
|
||||
set(esm_HDR
|
||||
${OPENAIR_TARGETS}/COMMON/openairinterface5g_limits.h
|
||||
${OPENAIR_NAS_DIR}/UE/ESM/esm_main.h
|
||||
${OPENAIR_NAS_DIR}/COMMON/ESM/MSG/ActivateDedicatedEpsBearerContextAccept.h
|
||||
${OPENAIR_NAS_DIR}/COMMON/ESM/MSG/ActivateDedicatedEpsBearerContextReject.h
|
||||
@@ -481,13 +498,17 @@ set(esm_HDR
|
||||
${OPENAIR_NAS_DIR}/UE/ESM/SAP/esm_recv.h
|
||||
${OPENAIR_NAS_DIR}/UE/ESM/SAP/esm_sap.h
|
||||
${OPENAIR_NAS_DIR}/UE/ESM/SAP/esm_send.h
|
||||
${OPENAIR_DIR}/common/utils/utils.h
|
||||
)
|
||||
|
||||
add_library(esm ${esm_SRC} ${esm_HDR})
|
||||
|
||||
target_include_directories(esm PRIVATE
|
||||
${OPENAIR_DIR}/common/utils
|
||||
${OPENAIR_NAS_DIR}/UE
|
||||
${OPENAIR_NAS_DIR}/UE/API/USER
|
||||
${OPENAIR_NAS_DIR}/UE/ESM
|
||||
${OPENAIR_TARGETS}/COMMON
|
||||
${OPENAIR_NAS_DIR}/COMMON/ESM/MSG
|
||||
${OPENAIR_NAS_DIR}/UE/ESM/SAP
|
||||
${OPENAIR_NAS_DIR}/COMMON/IES
|
||||
@@ -670,6 +691,9 @@ target_include_directories(ies PRIVATE
|
||||
# EXECUTABLE at_nas_ue
|
||||
################################################################################
|
||||
include_directories(
|
||||
${OPENAIR_TARGETS}/COMMON
|
||||
${OPENAIR_NAS_DIR}/UE
|
||||
${OPENAIR_DIR}/common/utils
|
||||
${OPENAIR_DIR}/common/utils/msc
|
||||
${OPENAIR3_DIR}/COMMON
|
||||
${OPENAIR3_DIR}/SECU
|
||||
@@ -691,6 +715,8 @@ ADD_EXECUTABLE(at_nas_ue ${OPENAIR_NAS_DIR}/UE/UEprocess.c
|
||||
${OPENAIR_NAS_DIR}/UE/nas_parser.c
|
||||
${OPENAIR_NAS_DIR}/UE/nas_proc.c
|
||||
${OPENAIR_NAS_DIR}/UE/nas_user.c
|
||||
${OPENAIR_DIR}/common/utils/utils.c
|
||||
${OPENAIR_DIR}/common/utils/system.c
|
||||
)
|
||||
|
||||
target_link_libraries (at_nas_ue
|
||||
|
||||
@@ -101,6 +101,19 @@ Obj.# Case# Test# Description
|
||||
01 51 04 pdcchsim (TBD)
|
||||
01 51 05 pbchsim (TBD)
|
||||
01 51 06 mbmssim (TBD)
|
||||
01 51 10 dlsim_tm4 test cases (Test 1: 10 MHz, R2.FDD (MCS 5), EVA5, -1dB),
|
||||
(Test 5: 1.4 MHz, R4.FDD (MCS 4), EVA5, 0dB (70%)),
|
||||
(Test 6: 10 MHz, R3.FDD (MCS 15), EVA5, 6.7dB (70%)),
|
||||
(Test 6b: 5 MHz, R3-1.FDD (MCS 15), EVA5, 6.7dB (70%)),
|
||||
(Test 7: 5 MHz, R3-1.FDD (MCS 15), EVA5, 6.7dB (30%)),
|
||||
(Test 7b: 5 MHz, R3-1.FDD (MCS 15), ETU70, 1.4 dB (30%)),
|
||||
(Test 10: 5 MHz, R6.FDD (MCS 25), EVA5, 17.4 dB (70%)),
|
||||
(Test 10b: 5 MHz, R6-1.FDD (MCS 24,18 PRB), EVA5, 17.5dB (70%)),
|
||||
(Test 11: 10 MHz, R7.FDD (MCS 25), EVA5, 17.7dB (70%))
|
||||
(TM2 Test 1 10 MHz, R.11 FDD (MCS 14), EVA5, 6.8 dB (70%)),
|
||||
(TM2 Test 1b 20 MHz, R.11-2 FDD (MCS 13), EVA5, 5.9 dB (70%)),
|
||||
|
||||
|
||||
|
||||
|
||||
01 55 lte-softmodem tests with USRP B210 RF as eNB and ALU EPC w/ Bandrich COTS UE for 1TX/1RX (TM1), 2TX/2RX (TM2)
|
||||
@@ -200,7 +213,7 @@ Obj.# Case# Test# Description
|
||||
01 63 04 Band 7 FDD 10MHz DL Throughput for 300 sec for 1TX/1RX
|
||||
01 63 05 Band 7 FDD 20MHz DL Throughput for 300 sec for 1TX/1RX
|
||||
|
||||
01 65 00 lte-softmodem tests with BladeRF RF as eNB and ALU EPC w/ Bandrich COTS UE for 1TX/1RX
|
||||
01 65 lte-softmodem tests with BladeRF RF as eNB and ALU EPC w/ Bandrich COTS UE for 1TX/1RX
|
||||
01 65 00 Band 7 FDD 5MHz UL Throughput for 300 sec for 1TX/1RX
|
||||
01 65 01 Band 7 FDD 10MHz UL Throughput for 300 sec for 1TX/1RX
|
||||
01 65 02 Band 7 FDD 20MHz UL Throughput for 300 sec for 1TX/1RX
|
||||
@@ -209,7 +222,7 @@ Obj.# Case# Test# Description
|
||||
01 65 05 Band 7 FDD 20MHz DL Throughput for 300 sec for 1TX/1RX
|
||||
|
||||
|
||||
01 70 00 lte-softmodem tests with SoDeRa RF as eNB and ALU EPC w/ Bandrich COTS UE for TX/1RX
|
||||
01 70 lte-softmodem tests with SoDeRa RF as eNB and ALU EPC w/ Bandrich COTS UE for TX/1RX
|
||||
01 70 00 Band 7 FDD 5MHz UL Throughput for 300 sec for 1TX/1RX
|
||||
01 70 01 Band 7 FDD 10MHz UL Throughput for 300 sec for 1TX/1RX
|
||||
01 70 02 Band 7 FDD 20MHz UL Throughput for 300 sec for 1TX/1RX
|
||||
@@ -218,7 +231,7 @@ Obj.# Case# Test# Description
|
||||
01 70 05 Band 7 FDD 20MHz DL Throughput for 300 sec for 1TX/1RX
|
||||
|
||||
|
||||
01 75 00 lte-softmodem + RRU (NGFI IF4P5, RAW) tests with B210 RF as eNB and ALU EPC w/ Bandrich COTS UE for TX/1RX
|
||||
01 75 lte-softmodem + RRU (NGFI IF4P5, RAW) tests with B210 RF as eNB and ALU EPC w/ Bandrich COTS UE for TX/1RX
|
||||
01 75 00 Band 7 FDD 5MHz UL Throughput for 300 sec for 1TX/1RX
|
||||
01 75 01 Band 7 FDD 10MHz UL Throughput for 300 sec for 1TX/1RX
|
||||
01 75 02 Band 7 FDD 20MHz UL Throughput for 300 sec for 1TX/1RX
|
||||
@@ -226,7 +239,21 @@ Obj.# Case# Test# Description
|
||||
01 75 04 Band 7 FDD 10MHz DL Throughput for 300 sec for 1TX/1RX
|
||||
01 75 05 Band 7 FDD 20MHz DL Throughput for 300 sec for 1TX/1RX
|
||||
|
||||
01 80 00 lte-softmodem + RRU (NGFI) tests with BladeRF RF as eNB and ALU EPC w/ Bandrich COTS UE for TX/1RX
|
||||
01 76 lte-softmodem + RRU (NGFI IF4P5, UDP) tests with B210 RF as eNB and ALU EPC w/ Bandrich COTS UE for TX/1RX
|
||||
01 76 00 Band 7 FDD 5MHz UL Throughput (UDP) for 300 sec for 1TX/1RX
|
||||
01 76 01 Band 7 FDD 10MHz UL Throughput (UDP) for 300 sec for 1TX/1RX
|
||||
01 76 02 Band 7 FDD 20MHz UL Throughput (UDP) for 300 sec for 1TX/1RX
|
||||
01 76 03 Band 7 FDD 5MHz DL Throughput (UDP) for 300 sec for 1TX/1RX
|
||||
01 76 04 Band 7 FDD 10MHz DL Throughput (UDP) for 300 sec for 1TX/1RX
|
||||
01 76 05 Band 7 FDD 20MHz DL Throughput (UDP) for 300 sec for 1TX/1RX
|
||||
01 76 06 Band 7 FDD 5MHz UL Throughput (TCP) for 300 sec for 1TX/1RX
|
||||
01 76 07 Band 7 FDD 10MHz UL Throughput (TCP) for 300 sec for 1TX/1RX
|
||||
01 76 08 Band 7 FDD 20MHz UL Throughput (TCP) for 300 sec for 1TX/1RX
|
||||
01 76 09 Band 7 FDD 5MHz DL Throughput (TCP) for 300 sec for 1TX/1RX
|
||||
01 76 10 Band 7 FDD 10MHz DL Throughput (TCP) for 300 sec for 1TX/1RX
|
||||
01 76 11 Band 7 FDD 20MHz DL Throughput (TCP) for 300 sec for 1TX/1RX
|
||||
|
||||
01 80 lte-softmodem + RRU (NGFI) tests with BladeRF RF as eNB and ALU EPC w/ Bandrich COTS UE for TX/1RX
|
||||
01 80 00 Band 7 FDD 5MHz UL Throughput for 300 sec for 1TX/1RX
|
||||
01 80 01 Band 7 FDD 10MHz UL Throughput for 300 sec for 1TX/1RX
|
||||
01 80 02 Band 7 FDD 20MHz UL Throughput for 300 sec for 1TX/1RX
|
||||
@@ -234,7 +261,7 @@ Obj.# Case# Test# Description
|
||||
01 80 04 Band 7 FDD 10MHz DL Throughput for 300 sec for 1TX/1RX
|
||||
01 80 05 Band 7 FDD 20MHz DL Throughput for 300 sec for 1TX/1RX
|
||||
|
||||
01 85 00 lte-softmodem + RRU (NGFI) tests with USRP X310 RF as eNB and ALU EPC w/ Bandrich COTS UE for TX/1RX
|
||||
01 85 lte-softmodem + RRU (NGFI) tests with USRP X310 RF as eNB and ALU EPC w/ Bandrich COTS UE for TX/1RX
|
||||
01 85 00 Band 7 FDD 5MHz UL Throughput for 300 sec for 1TX/1RX
|
||||
01 85 01 Band 7 FDD 10MHz UL Throughput for 300 sec for 1TX/1RX
|
||||
01 85 02 Band 7 FDD 20MHz UL Throughput for 300 sec for 1TX/1RX
|
||||
@@ -242,6 +269,32 @@ Obj.# Case# Test# Description
|
||||
01 85 04 Band 7 FDD 10MHz DL Throughput for 300 sec for 1TX/1RX
|
||||
01 85 05 Band 7 FDD 20MHz DL Throughput for 300 sec for 1TX/1RX
|
||||
|
||||
01 86 lte-softmodem tests with USRP B210 RF as eNB and ALU EPC w/ Huawei e3276 COTS UE for 1TX/1RX (TM1), 2TX/2RX (TM2)
|
||||
01 86 00 Band 38 TDD 5MHz UL Throughput (UDP) for 300 sec for 1TX/1RX
|
||||
01 86 01 Band 38 TDD 10MHz UL Throughput (UDP) for 300 sec for 1TX/1RX
|
||||
01 86 02 Band 38 TDD 20MHz UL Throughput (UDP) for 300 sec for 1TX/1RX
|
||||
01 86 03 Band 38 TDD 5MHz DL Throughput (UDP) for 300 sec for 1TX/1RX
|
||||
01 86 04 Band 38 TDD 10MHz DL Throughput (UDP) for 300 sec for 1TX/1RX
|
||||
01 86 05 Band 38 TDD 20MHz DL Throughput (UDP) for 300 sec for 1TX/1RX
|
||||
01 86 06 Band 38 TDD 5MHz UL Throughput (UDP) for 300 sec for 2TX/2RX (TM2)
|
||||
01 86 07 Band 38 TDD 10MHz UL Throughput (UDP) for 300 sec for 2TX/2RX (TM2)
|
||||
01 86 08 Band 38 TDD 20MHz UL Throughput (UDP) for 300 sec for 2TX/2RX (TM2)
|
||||
01 86 09 Band 38 TDD 5MHz DL Throughput (UDP) for 300 sec for 2TX/2RX (TM2)
|
||||
01 86 10 Band 38 TDD 10MHz DL Throughput (UDP) for 300 sec for 2TX/2RX (TM2)
|
||||
01 86 11 Band 38 TDD 20MHz DL Throughput (UDP) for 300 sec for 2TX/2RX (TM2)
|
||||
01 86 12 Band 38 TDD 5MHz UL Throughput (TCP) for 300 sec for 1TX/1RX
|
||||
01 86 13 Band 38 TDD 10MHz UL Throughput (TCP) for 300 sec for 1TX/1RX
|
||||
01 86 14 Band 38 TDD 20MHz UL Throughput (TCP) for 300 sec for 1TX/1RX
|
||||
01 86 15 Band 38 TDD 5MHz DL Throughput (TCP) for 300 sec for 1TX/1RX
|
||||
01 86 16 Band 38 TDD 10MHz DL Throughput (TCP) for 300 sec for 1TX/1RX
|
||||
01 86 17 Band 38 TDD 20MHz DL Throughput (TCP) for 300 sec for 1TX/1RX
|
||||
01 86 18 Band 38 TDD 5MHz UL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
|
||||
01 86 19 Band 38 TDD 10MHz UL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
|
||||
01 86 20 Band 38 TDD 20MHz UL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
|
||||
01 86 21 Band 38 TDD 5MHz DL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
|
||||
01 86 22 Band 38 TDD 10MHz DL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
|
||||
01 86 23 Band 38 TDD 20MHz DL Throughput (TCP) for 300 sec for 2TX/2RX (TM2)
|
||||
|
||||
02 55 lte-softmodem tests with USRP B210 RF as eNB and ALU EPC w/ Sony Experia M4 COTS UE for 1TX/1RX and 2TX/2RX (TM2)
|
||||
02 55 00 Band 7 FDD 5MHz UL Throughput (UDP) for 300 sec for 1TX/1RX
|
||||
02 55 01 Band 7 FDD 10MHz UL Throughput (UDP) for 300 sec for 1TX/1RX
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<Timeout_execution>36000</Timeout_execution>
|
||||
<TestCaseExclusionList>010141 0102+ 010301 010303 010304 010305 0104+ 015508 015511 015520 015523 015518 015519 015520 015521 015522 015523 015602 015605 015818 015819 015820 015821 015822 015823 016102 016105 016502 016505 017002 017005 018002 018005 018502 018505 025514 025517 025520 025523 025518 025519 025520 025521 025522 025523</TestCaseExclusionList>
|
||||
<nruns_lte-softmodem>3</nruns_lte-softmodem>
|
||||
<MachineListGeneric>amerique mozart hutch starsky stevens calisson superserver </MachineListGeneric>
|
||||
<MachineListGeneric>nano mozart hutch starsky stevens calisson superserver </MachineListGeneric>
|
||||
<testCase id="010101" >
|
||||
<class>compilation</class>
|
||||
<desc>Build oaisim.Rel8</desc>
|
||||
@@ -62,8 +62,7 @@
|
||||
<compile_prog_args>--oaisim -r Rel10 --noS1 -c </compile_prog_args>
|
||||
<compile_prog_out>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1
|
||||
$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/rb_tool
|
||||
$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/CMakeFiles/nasmesh/nasmesh.ko
|
||||
$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/CMakeFiles/oai_nw_drv/oai_nw_drv.ko</compile_prog_out>
|
||||
$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/CMakeFiles/nasmesh/nasmesh.ko</compile_prog_out>
|
||||
<pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash</pre_exec>
|
||||
<pre_exec_args></pre_exec_args>
|
||||
<main_exec></main_exec>
|
||||
@@ -942,9 +941,14 @@
|
||||
(Test 7b, 5 MHz, R3-1.FDD (MCS 15), ETU70, 1.4 dB (30%)),
|
||||
(Test 10, 5 MHz, R6.FDD (MCS 25), EVA5, 17.4 dB (70%)),
|
||||
(Test 10b, 5 MHz, R6-1.FDD (MCS 24,18 PRB), EVA5, 17.5dB (70%)),
|
||||
(Test 11, 10 MHz, R7.FDD (MCS 25), EVA5, 17.7dB (70%))
|
||||
(Test 11, 10 MHz, R7.FDD (MCS 25), EVA5, 17.7dB (70%)),
|
||||
(Test 11b, 10 MHz, R7-1.FDD (MCS 25), EVA5, 16.7dB (70%)),
|
||||
(Test 15, 20 MHz, R.9 FDD (MCS 26), EVA5, 17.6dB (70%)),
|
||||
(Test 15b, 20 MHz, R.9-2 FDD (MCS 26, 17PRB), EVA5, 17.3dB (70%)),
|
||||
(Test 15c, 20 MHz, R.9-1 FDD (MCS 26, 83 PRB), EVA5, 16.6dB (70%)),
|
||||
|
||||
(TM2 Test 1 10 MHz, R.11 FDD (MCS 14), EVA5, 6.8 dB (70%)),
|
||||
(TM2 Test 1b 20 MHz, R.11-2 FDD (MCS 13), EVA5, 5.9 dB (70%)),
|
||||
(TM2 Test 1b 5 MHz, R.11-2 FDD (MCS 13), EVA5, 5.9 dB (70%)),
|
||||
</desc>
|
||||
<pre_compile_prog></pre_compile_prog>
|
||||
<compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
|
||||
@@ -961,6 +965,9 @@
|
||||
-m25 -gF -s17.4 -w1.0 -f.2 -n500 -B25 -c3 -z2 -O70
|
||||
-m25 -gF -s17.5 -w1.0 -f.2 -n500 -B25 -c3 -z2 -r1022 -O70
|
||||
-m26 -gF -s17.7 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O70
|
||||
-m26 -gF -s17.6 -w1.0 -f.2 -n500 -B100 -c2 -z2 -O70
|
||||
-m26 -gF -s17.3 -w1.0 -f.2 -n500 -B100 -c2 -z2 -r1600 -O70
|
||||
-m26 -gF -s16.6 -w1.0 -f.2 -n500 -B100 -c2 -z2 -r1899 -O70
|
||||
-m14 -gF -s6.8 -w1.0 -f.2 -n500 -B50 -c2 -x2 -y2 -z2 -O70
|
||||
-m13 -gF -s5.9 -w1.0 -f.2 -n500 -B25 -c3 -x2 -y2 -z2 -O70</main_exec_args>
|
||||
<tags>dlsim.test1 dlsim.test5 dlsim.test6 dlsim.test6b dlsim.test7 dlsim.test7b dlsim.test10 dlsim.test10b dlsim.test11 dlsim.TM2_test1 dlsim.TM2_test1b</tags>
|
||||
@@ -995,6 +1002,43 @@
|
||||
<nruns>3</nruns>
|
||||
</testCase>
|
||||
|
||||
<testCase id="015110">
|
||||
<class>execution</class>
|
||||
<desc>dlsim_tm4 test cases (Test 1: 10 MHz, R2.FDD (MCS 5), EVA5, -1dB),
|
||||
(Test 5: 1.4 MHz, R4.FDD (MCS 4), EVA5, 0dB (70%)),
|
||||
(Test 6, 10 MHz, R3.FDD (MCS 15), EVA5, 6.7dB (70%)),
|
||||
(Test 6b, 5 MHz, R3-1.FDD (MCS 15), EVA5, 6.7dB (70%)),
|
||||
(Test 7, 5 MHz, R3-1.FDD (MCS 15), EVA5, 6.7dB (30%)),
|
||||
(Test 7b, 5 MHz, R3-1.FDD (MCS 15), ETU70, 1.4 dB (30%)),
|
||||
(Test 10, 5 MHz, R6.FDD (MCS 25), EVA5, 17.4 dB (70%)),
|
||||
(Test 10b, 5 MHz, R6-1.FDD (MCS 24,18 PRB), EVA5, 17.5dB (70%)),
|
||||
(Test 11, 10 MHz, R7.FDD (MCS 25), EVA5, 17.7dB (70%))
|
||||
(TM2 Test 1 10 MHz, R.11 FDD (MCS 14), EVA5, 6.8 dB (70%)),
|
||||
(TM2 Test 1b 20 MHz, R.11-2 FDD (MCS 13), EVA5, 5.9 dB (70%)),
|
||||
</desc>
|
||||
<pre_compile_prog></pre_compile_prog>
|
||||
<compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
|
||||
<compile_prog_args> --phy_simulators -c </compile_prog_args>
|
||||
<pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash</pre_exec>
|
||||
<pre_exec_args></pre_exec_args>
|
||||
<main_exec> $OPENAIR_DIR/cmake_targets/lte-simulators/build/dlsim_tm4</main_exec>
|
||||
<main_exec_args> -m5 -gF -s-1 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O70
|
||||
-m4 -gF -s0 -w1.0 -f.2 -n500 -B6 -c4 -z2 -O70
|
||||
-m15 -gF -s6.7 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O70
|
||||
-m14 -gF -s6.7 -w1.0 -f.2 -n500 -B25 -c3 -z2 -O70
|
||||
-m15 -gG -s6.7 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O30
|
||||
-m14 -gG -s1.4 -w1.0 -f.2 -n500 -B25 -c3 -z2 -O30
|
||||
-m25 -gF -s17.4 -w1.0 -f.2 -n500 -B25 -c3 -z2 -O70
|
||||
-m25 -gF -s17.5 -w1.0 -f.2 -n500 -B25 -c3 -z2 -r1022 -O70
|
||||
-m26 -gF -s17.7 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O70
|
||||
-m14 -gF -s6.8 -w1.0 -f.2 -n500 -B50 -c2 -x2 -y2 -z2 -O70
|
||||
-m13 -gF -s5.9 -w1.0 -f.2 -n500 -B25 -c3 -x2 -y2 -z2 -O70</main_exec_args>
|
||||
<tags>dlsim_tm4.test1 dlsim_tm4.test5 dlsim_tm4.test6 dlsim_tm4.test6b dlsim_tm4.test7 dlsim_tm4.test7b dlsim_tm4.test10 dlsim_tm4.test10b dlsim_tm4.test11 dlsim_tm4.TM2_test1 dlsim_tm4.TM2_test1b</tags>
|
||||
<search_expr_true>"passed"</search_expr_true>
|
||||
<search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
|
||||
<nruns>3</nruns>
|
||||
</testCase>
|
||||
|
||||
<testCase id="015500" >
|
||||
<class>lte-softmodem</class>
|
||||
<desc></desc>
|
||||
@@ -8628,6 +8672,43 @@ c
|
||||
<nruns>10</nruns>
|
||||
</testCase>
|
||||
|
||||
<testCase id="017600"></testCase>
|
||||
<testCase id="017601"></testCase>
|
||||
<testCase id="017602"></testCase>
|
||||
<testCase id="017603"></testCase>
|
||||
<testCase id="017604"></testCase>
|
||||
<testCase id="017605"></testCase>
|
||||
<testCase id="017606"></testCase>
|
||||
<testCase id="017607"></testCase>
|
||||
<testCase id="017608"></testCase>
|
||||
<testCase id="017609"></testCase>
|
||||
<testCase id="017610"></testCase>
|
||||
<testCase id="017611"></testCase>
|
||||
|
||||
<testCase id="018600"></testCase>
|
||||
<testCase id="018601"></testCase>
|
||||
<testCase id="018602"></testCase>
|
||||
<testCase id="018603"></testCase>
|
||||
<testCase id="018604"></testCase>
|
||||
<testCase id="018605"></testCase>
|
||||
<testCase id="018606"></testCase>
|
||||
<testCase id="018607"></testCase>
|
||||
<testCase id="018608"></testCase>
|
||||
<testCase id="018609"></testCase>
|
||||
<testCase id="018610"></testCase>
|
||||
<testCase id="018611"></testCase>
|
||||
<testCase id="018612"></testCase>
|
||||
<testCase id="018613"></testCase>
|
||||
<testCase id="018614"></testCase>
|
||||
<testCase id="018615"></testCase>
|
||||
<testCase id="018616"></testCase>
|
||||
<testCase id="018617"></testCase>
|
||||
<testCase id="018618"></testCase>
|
||||
<testCase id="018619"></testCase>
|
||||
<testCase id="018620"></testCase>
|
||||
<testCase id="018621"></testCase>
|
||||
<testCase id="018622"></testCase>
|
||||
<testCase id="018623"></testCase>
|
||||
|
||||
<testCase id="025500" >
|
||||
<class>lte-softmodem</class>
|
||||
@@ -10486,7 +10567,7 @@ c
|
||||
<UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai --eNB --UE -w USRP -c -x </UE_compile_prog>
|
||||
<UE_branch>develop1B</UE_branch>
|
||||
<UE_compile_prog_args></UE_compile_prog_args>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip; sudo rmmod oai_nw_drv</UE_pre_exec>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip</UE_pre_exec>
|
||||
<UE_pre_exec_args></UE_pre_exec_args>
|
||||
<UE_main_exec>sleep 50; cd $OPENAIR_DIR/cmake_targets/lte_build_oai/build ; sudo -E $OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 90 --ue-rxgain 125 </UE_main_exec>
|
||||
<UE_main_exec_args></UE_main_exec_args>
|
||||
@@ -10586,7 +10667,7 @@ c
|
||||
<UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai --eNB --UE -w USRP -c -x </UE_compile_prog>
|
||||
<UE_branch>develop1B</UE_branch>
|
||||
<UE_compile_prog_args></UE_compile_prog_args>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip; sudo rmmod oai_nw_drv</UE_pre_exec>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip</UE_pre_exec>
|
||||
<UE_pre_exec_args></UE_pre_exec_args>
|
||||
<UE_main_exec>sleep 50; cd $OPENAIR_DIR/cmake_targets/lte_build_oai/build ; sudo -E $OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem -U -C2660000000 -r50 --ue-scan-carrier --ue-txgain 90 --ue-rxgain 125 </UE_main_exec>
|
||||
<UE_main_exec_args></UE_main_exec_args>
|
||||
@@ -10686,7 +10767,7 @@ c
|
||||
<UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai --eNB --UE -w USRP -c -x </UE_compile_prog>
|
||||
<UE_branch>develop1B</UE_branch>
|
||||
<UE_compile_prog_args></UE_compile_prog_args>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip; sudo rmmod oai_nw_drv</UE_pre_exec>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip</UE_pre_exec>
|
||||
<UE_pre_exec_args></UE_pre_exec_args>
|
||||
<UE_main_exec>sleep 50; cd $OPENAIR_DIR/cmake_targets/lte_build_oai/build ; sudo -E $OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem -U -C2660000000 -r100 --ue-scan-carrier --ue-txgain 90 --ue-rxgain 125 </UE_main_exec>
|
||||
<UE_main_exec_args></UE_main_exec_args>
|
||||
@@ -10787,7 +10868,7 @@ c
|
||||
<UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai --eNB --UE -w USRP -c -x </UE_compile_prog>
|
||||
<UE_branch>develop1B</UE_branch>
|
||||
<UE_compile_prog_args></UE_compile_prog_args>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip; sudo rmmod oai_nw_drv</UE_pre_exec>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip</UE_pre_exec>
|
||||
<UE_pre_exec_args></UE_pre_exec_args>
|
||||
<UE_main_exec>sleep 50; cd $OPENAIR_DIR/cmake_targets/lte_build_oai/build ; sudo -E $OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 90 --ue-rxgain 125 </UE_main_exec>
|
||||
<UE_main_exec_args></UE_main_exec_args>
|
||||
@@ -10887,7 +10968,7 @@ c
|
||||
<UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai --eNB --UE -w USRP -c -x </UE_compile_prog>
|
||||
<UE_branch>develop1B</UE_branch>
|
||||
<UE_compile_prog_args></UE_compile_prog_args>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip; sudo rmmod oai_nw_drv</UE_pre_exec>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip</UE_pre_exec>
|
||||
<UE_pre_exec_args></UE_pre_exec_args>
|
||||
<UE_main_exec>sleep 50; cd $OPENAIR_DIR/cmake_targets/lte_build_oai/build ; sudo -E $OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem -U -C2660000000 -r50 --ue-scan-carrier --ue-txgain 90 --ue-rxgain 125 </UE_main_exec>
|
||||
<UE_main_exec_args></UE_main_exec_args>
|
||||
@@ -10989,7 +11070,7 @@ c
|
||||
<UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai --eNB --UE -w USRP -c -x </UE_compile_prog>
|
||||
<UE_branch>develop1B</UE_branch>
|
||||
<UE_compile_prog_args></UE_compile_prog_args>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip; sudo rmmod oai_nw_drv</UE_pre_exec>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip</UE_pre_exec>
|
||||
<UE_pre_exec_args></UE_pre_exec_args>
|
||||
<UE_main_exec>sleep 50; cd $OPENAIR_DIR/cmake_targets/lte_build_oai/build ; sudo -E $OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem -U -C2660000000 -r100 --ue-scan-carrier --ue-txgain 90 --ue-rxgain 125 </UE_main_exec>
|
||||
<UE_main_exec_args></UE_main_exec_args>
|
||||
|
||||
@@ -3208,6 +3208,316 @@
|
||||
|
||||
|
||||
|
||||
<!--20 MHz test -->
|
||||
|
||||
<testCase id="039400" >
|
||||
<class>lte-softmodem-noS1</class>
|
||||
<desc></desc>
|
||||
<eNB>imb182-desktop</eNB>
|
||||
<UE>yanbo-M4HM87P-00</UE>
|
||||
<TimeOut_cmd>300</TimeOut_cmd>
|
||||
<eNB_working_dir>/tmp</eNB_working_dir>
|
||||
<eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf downlink_frequency 2680000000L</eNB_config_file>
|
||||
<eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
|
||||
<eNB_compile_prog_args>-c -w USRP --eNB --noS1</eNB_compile_prog_args>
|
||||
<eNB_pre_exec>source $OPENAIR_DIR/cmake_targets/tools/init_nas_nos1 eNB</eNB_pre_exec>
|
||||
<eNB_pre_exec_args></eNB_pre_exec_args>
|
||||
<eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1</eNB_main_exec>
|
||||
<eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf -m 28 --single-thread-disable --phy-test</eNB_main_exec_args>
|
||||
<eNB_traffic_exec></eNB_traffic_exec>
|
||||
<eNB_traffic_exec_args></eNB_traffic_exec_args>
|
||||
<eNB_search_expr_true></eNB_search_expr_true>
|
||||
<eNB_search_expr_false></eNB_search_expr_false>
|
||||
<eNB_terminate_missing_procs>False</eNB_terminate_missing_procs>
|
||||
|
||||
<UE_working_dir>/tmp</UE_working_dir>
|
||||
<UE_config_file></UE_config_file>
|
||||
<UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
|
||||
<UE_compile_prog_args>-c --UE -w USRP --noS1 --eNB --ue-autotest-trace </UE_compile_prog_args>
|
||||
<UE_pre_exec>source ./targets/bin/init_nas_nos1 UE</UE_pre_exec>
|
||||
<UE_pre_exec_args></UE_pre_exec_args>
|
||||
<UE_main_exec>sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2680000000 -r100 --ue-scan-carrier --ue-txgain 85 --ue-rxgain 100 -S --phy-test</UE_main_exec>
|
||||
<UE_main_exec_args></UE_main_exec_args>
|
||||
<UE_traffic_exec></UE_traffic_exec>
|
||||
<UE_traffic_exec_args></UE_traffic_exec_args>
|
||||
<UE_search_expr_true></UE_search_expr_true>
|
||||
<UE_search_expr_false></UE_search_expr_false>
|
||||
<UE_terminate_missing_procs>False</UE_terminate_missing_procs>
|
||||
<UE_metric id="UE_DLSCH_BITRATE"
|
||||
description="UE downlink physical throughput"
|
||||
regex='(UE_DLSCH_BITRATE) =\s+(\d+\.\d+) kbps.+frame = (\d+)\)'
|
||||
unit_of_meas = "kbps"
|
||||
pass_fail_stat = "mean_value"
|
||||
min_limit = "55008"/>
|
||||
<UE_metric id="UE_FREQ_OFFSET"
|
||||
description="UE downlink frequency channel offset"
|
||||
regex='(UE_FREQ_OFFSET) =\s+(-?\d+) Hz.+frame = (\d+)\)'
|
||||
unit_of_meas = "Hz"/>
|
||||
<UE_metric id="UE_RX_OFFSET"
|
||||
description="UE downlink rx sample offset"
|
||||
regex='(UE_RX_OFFSET) =\s+(-?\d+).+frame = (\d+)\)'
|
||||
unit_of_meas = ""/>
|
||||
<tags>UE_USRP.NOS1.PHYTEST_PERF.BAND7.20MHZ.MCS28</tags>
|
||||
<nruns>3</nruns><max_ntries>6</max_ntries>
|
||||
</testCase>
|
||||
|
||||
|
||||
<testCase id="036600" >
|
||||
<class>lte-softmodem-noS1</class>
|
||||
<desc></desc>
|
||||
<eNB>imb182-desktop</eNB>
|
||||
<UE>yanbo-M4HM87P-00</UE>
|
||||
<TimeOut_cmd>300</TimeOut_cmd>
|
||||
<eNB_working_dir>/tmp</eNB_working_dir>
|
||||
<eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf downlink_frequency 2680000000L</eNB_config_file>
|
||||
<eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
|
||||
<eNB_compile_prog_args>-c -w USRP --eNB --noS1</eNB_compile_prog_args>
|
||||
<eNB_pre_exec>source $OPENAIR_DIR/cmake_targets/tools/init_nas_nos1 eNB</eNB_pre_exec>
|
||||
<eNB_pre_exec_args></eNB_pre_exec_args>
|
||||
<eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1</eNB_main_exec>
|
||||
<eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf -m 0 --single-thread-disable --phy-test</eNB_main_exec_args>
|
||||
<eNB_traffic_exec></eNB_traffic_exec>
|
||||
<eNB_traffic_exec_args></eNB_traffic_exec_args>
|
||||
<eNB_search_expr_true></eNB_search_expr_true>
|
||||
<eNB_search_expr_false></eNB_search_expr_false>
|
||||
<eNB_terminate_missing_procs>False</eNB_terminate_missing_procs>
|
||||
|
||||
<UE_working_dir>/tmp</UE_working_dir>
|
||||
<UE_config_file></UE_config_file>
|
||||
<UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
|
||||
<UE_compile_prog_args>-c --UE -w USRP --noS1 --eNB --ue-autotest-trace </UE_compile_prog_args>
|
||||
<UE_pre_exec>source ./targets/bin/init_nas_nos1 UE</UE_pre_exec>
|
||||
<UE_pre_exec_args></UE_pre_exec_args>
|
||||
<UE_main_exec>sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2680000000 -r100 --ue-scan-carrier --ue-txgain 85 --ue-rxgain 100 -S --phy-test</UE_main_exec>
|
||||
<UE_main_exec_args></UE_main_exec_args>
|
||||
<UE_traffic_exec></UE_traffic_exec>
|
||||
<UE_traffic_exec_args></UE_traffic_exec_args>
|
||||
<UE_search_expr_true></UE_search_expr_true>
|
||||
<UE_search_expr_false></UE_search_expr_false>
|
||||
<UE_terminate_missing_procs>False</UE_terminate_missing_procs>
|
||||
<UE_metric id="UE_DLSCH_BITRATE"
|
||||
description="UE downlink physical throughput"
|
||||
regex='(UE_DLSCH_BITRATE) =\s+(\d+\.\d+) kbps.+frame = (\d+)\)'
|
||||
unit_of_meas = "kbps"
|
||||
pass_fail_stat = "mean_value"
|
||||
min_limit = "2040"/>
|
||||
<UE_metric id="UE_FREQ_OFFSET"
|
||||
description="UE downlink frequency channel offset"
|
||||
regex='(UE_FREQ_OFFSET) =\s+(-?\d+) Hz.+frame = (\d+)\)'
|
||||
unit_of_meas = "Hz"/>
|
||||
<UE_metric id="UE_RX_OFFSET"
|
||||
description="UE downlink rx sample offset"
|
||||
regex='(UE_RX_OFFSET) =\s+(-?\d+).+frame = (\d+)\)'
|
||||
unit_of_meas = ""/>
|
||||
<tags>UE_USRP.NOS1.PHYTEST_PERF.BAND7.20MHZ.MCS0</tags>
|
||||
<nruns>3</nruns><max_ntries>6</max_ntries>
|
||||
</testCase>
|
||||
|
||||
|
||||
<testCase id="038400" >
|
||||
<class>lte-softmodem-noS1</class>
|
||||
<desc></desc>
|
||||
<eNB>imb182-desktop</eNB>
|
||||
<UE>yanbo-M4HM87P-00</UE>
|
||||
<TimeOut_cmd>300</TimeOut_cmd>
|
||||
<eNB_working_dir>/tmp</eNB_working_dir>
|
||||
<eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf downlink_frequency 2680000000L</eNB_config_file>
|
||||
<eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
|
||||
<eNB_compile_prog_args>-c -w USRP --eNB --noS1</eNB_compile_prog_args>
|
||||
<eNB_pre_exec>source $OPENAIR_DIR/cmake_targets/tools/init_nas_nos1 eNB</eNB_pre_exec>
|
||||
<eNB_pre_exec_args></eNB_pre_exec_args>
|
||||
<eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1</eNB_main_exec>
|
||||
<eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf -m 18 --single-thread-disable --phy-test</eNB_main_exec_args>
|
||||
<eNB_traffic_exec></eNB_traffic_exec>
|
||||
<eNB_traffic_exec_args></eNB_traffic_exec_args>
|
||||
<eNB_search_expr_true></eNB_search_expr_true>
|
||||
<eNB_search_expr_false></eNB_search_expr_false>
|
||||
<eNB_terminate_missing_procs>False</eNB_terminate_missing_procs>
|
||||
|
||||
<UE_working_dir>/tmp</UE_working_dir>
|
||||
<UE_config_file></UE_config_file>
|
||||
<UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
|
||||
<UE_compile_prog_args>-c --UE -w USRP --noS1 --eNB --ue-autotest-trace </UE_compile_prog_args>
|
||||
<UE_pre_exec>source ./targets/bin/init_nas_nos1 UE</UE_pre_exec>
|
||||
<UE_pre_exec_args></UE_pre_exec_args>
|
||||
<UE_main_exec>sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2680000000 -r100 --ue-scan-carrier --ue-txgain 85 --ue-rxgain 100 -S --phy-test</UE_main_exec>
|
||||
<UE_main_exec_args></UE_main_exec_args>
|
||||
<UE_traffic_exec></UE_traffic_exec>
|
||||
<UE_traffic_exec_args></UE_traffic_exec_args>
|
||||
<UE_search_expr_true></UE_search_expr_true>
|
||||
<UE_search_expr_false></UE_search_expr_false>
|
||||
<UE_terminate_missing_procs>False</UE_terminate_missing_procs>
|
||||
<UE_metric id="UE_DLSCH_BITRATE"
|
||||
description="UE downlink physical throughput"
|
||||
regex='(UE_DLSCH_BITRATE) =\s+(\d+\.\d+) kbps.+frame = (\d+)\)'
|
||||
unit_of_meas = "kbps"
|
||||
pass_fail_stat = "mean_value"
|
||||
min_limit = "23976"/>
|
||||
<UE_metric id="UE_FREQ_OFFSET"
|
||||
description="UE downlink frequency channel offset"
|
||||
regex='(UE_FREQ_OFFSET) =\s+(-?\d+) Hz.+frame = (\d+)\)'
|
||||
unit_of_meas = "Hz"/>
|
||||
<UE_metric id="UE_RX_OFFSET"
|
||||
description="UE downlink rx sample offset"
|
||||
regex='(UE_RX_OFFSET) =\s+(-?\d+).+frame = (\d+)\)'
|
||||
unit_of_meas = ""/>
|
||||
<tags>UE_USRP.NOS1.PHYTEST_PERF.BAND7.20MHZ.MCS18</tags>
|
||||
<nruns>3</nruns><max_ntries>6</max_ntries>
|
||||
</testCase>
|
||||
|
||||
|
||||
|
||||
<testCase id="036630" >
|
||||
<class>lte-softmodem-noS1</class>
|
||||
<desc></desc>
|
||||
<eNB>imb182-desktop</eNB>
|
||||
<UE>yanbo-M4HM87P-00</UE>
|
||||
<TimeOut_cmd>700</TimeOut_cmd>
|
||||
<eNB_working_dir>/tmp</eNB_working_dir>
|
||||
<eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf downlink_frequency 2680000000L</eNB_config_file>
|
||||
<eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
|
||||
<eNB_compile_prog_args>-c -w USRP --eNB --noS1</eNB_compile_prog_args>
|
||||
<eNB_pre_exec>source $OPENAIR_DIR/cmake_targets/tools/init_nas_nos1 eNB</eNB_pre_exec>
|
||||
<eNB_pre_exec_args></eNB_pre_exec_args>
|
||||
<eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1</eNB_main_exec>
|
||||
<eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf -m 0</eNB_main_exec_args>
|
||||
<eNB_traffic_exec>sleep 80;iperf -c 10.0.1.9 -i 1 -u -b 2M</eNB_traffic_exec>
|
||||
<eNB_traffic_exec_args></eNB_traffic_exec_args>
|
||||
<eNB_search_expr_true></eNB_search_expr_true>
|
||||
<eNB_search_expr_false></eNB_search_expr_false>
|
||||
<eNB_terminate_missing_procs>False</eNB_terminate_missing_procs>
|
||||
|
||||
<UE_working_dir>/tmp</UE_working_dir>
|
||||
<UE_config_file></UE_config_file>
|
||||
<UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
|
||||
<UE_compile_prog_args>-c --UE -w USRP --noS1 --eNB --ue-autotest-trace </UE_compile_prog_args>
|
||||
<UE_pre_exec>source ./targets/bin/init_nas_nos1 UE</UE_pre_exec>
|
||||
<UE_pre_exec_args></UE_pre_exec_args>
|
||||
<UE_main_exec>sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2680000000 -r100 --ue-scan-carrier --ue-txgain 85 --ue-rxgain 100 </UE_main_exec>
|
||||
<UE_main_exec_args></UE_main_exec_args>
|
||||
<UE_traffic_exec>iperf -s -i 1 -u</UE_traffic_exec>
|
||||
<UE_traffic_exec_args></UE_traffic_exec_args>
|
||||
<UE_search_expr_true>600</UE_search_expr_true>
|
||||
<UE_search_expr_false></UE_search_expr_false>
|
||||
<UE_terminate_missing_procs>False</UE_terminate_missing_procs>
|
||||
<UE_metric id="UE_DLSCH_BITRATE"
|
||||
description="UE downlink physical throughput"
|
||||
regex='(UE_DLSCH_BITRATE) =\s+(\d+\.\d+) kbps.+frame = (\d+)\)'
|
||||
unit_of_meas = "kbps"/>
|
||||
<UE_metric id="UE_FREQ_OFFSET"
|
||||
description="UE downlink frequency channel offset"
|
||||
regex='(UE_FREQ_OFFSET) =\s+(-?\d+) Hz.+frame = (\d+)\)'
|
||||
unit_of_meas = "Hz"/>
|
||||
<UE_metric id="UE_RX_OFFSET"
|
||||
description="UE downlink rx sample offset"
|
||||
regex='(UE_RX_OFFSET) =\s+(-?\d+).+frame = (\d+)\)'
|
||||
unit_of_meas = ""/>
|
||||
<tags>UE_USRP.NOS1.DATA_IPERF_DL.BAND7.20MHZ.MCS0</tags>
|
||||
<nruns>3</nruns><max_ntries>6</max_ntries>
|
||||
</testCase>
|
||||
|
||||
|
||||
<testCase id="038430" >
|
||||
<class>lte-softmodem-noS1</class>
|
||||
<desc></desc>
|
||||
<eNB>imb182-desktop</eNB>
|
||||
<UE>yanbo-M4HM87P-00</UE>
|
||||
<TimeOut_cmd>700</TimeOut_cmd>
|
||||
<eNB_working_dir>/tmp</eNB_working_dir>
|
||||
<eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf downlink_frequency 2680000000L</eNB_config_file>
|
||||
<eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
|
||||
<eNB_compile_prog_args>-c -w USRP --eNB --noS1</eNB_compile_prog_args>
|
||||
<eNB_pre_exec>source $OPENAIR_DIR/cmake_targets/tools/init_nas_nos1 eNB</eNB_pre_exec>
|
||||
<eNB_pre_exec_args></eNB_pre_exec_args>
|
||||
<eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1</eNB_main_exec>
|
||||
<eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf -m 18</eNB_main_exec_args>
|
||||
<eNB_traffic_exec>sleep 80;iperf -c 10.0.1.9 -i 1 -u -b 24M</eNB_traffic_exec>
|
||||
<eNB_traffic_exec_args></eNB_traffic_exec_args>
|
||||
<eNB_search_expr_true></eNB_search_expr_true>
|
||||
<eNB_search_expr_false></eNB_search_expr_false>
|
||||
<eNB_terminate_missing_procs>False</eNB_terminate_missing_procs>
|
||||
|
||||
<UE_working_dir>/tmp</UE_working_dir>
|
||||
<UE_config_file></UE_config_file>
|
||||
<UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
|
||||
<UE_compile_prog_args>-c --UE -w USRP --noS1 --eNB --ue-autotest-trace </UE_compile_prog_args>
|
||||
<UE_pre_exec>source ./targets/bin/init_nas_nos1 UE</UE_pre_exec>
|
||||
<UE_pre_exec_args></UE_pre_exec_args>
|
||||
<UE_main_exec>sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2680000000 -r100 --ue-scan-carrier --ue-txgain 85 --ue-rxgain 100 </UE_main_exec>
|
||||
<UE_main_exec_args></UE_main_exec_args>
|
||||
<UE_traffic_exec>iperf -s -i 1 -u</UE_traffic_exec>
|
||||
<UE_traffic_exec_args></UE_traffic_exec_args>
|
||||
<UE_search_expr_true>600</UE_search_expr_true>
|
||||
<UE_search_expr_false></UE_search_expr_false>
|
||||
<UE_terminate_missing_procs>False</UE_terminate_missing_procs>
|
||||
<UE_metric id="UE_DLSCH_BITRATE"
|
||||
description="UE downlink physical throughput"
|
||||
regex='(UE_DLSCH_BITRATE) =\s+(\d+\.\d+) kbps.+frame = (\d+)\)'
|
||||
unit_of_meas = "kbps"/>
|
||||
<UE_metric id="UE_FREQ_OFFSET"
|
||||
description="UE downlink frequency channel offset"
|
||||
regex='(UE_FREQ_OFFSET) =\s+(-?\d+) Hz.+frame = (\d+)\)'
|
||||
unit_of_meas = "Hz"/>
|
||||
<UE_metric id="UE_RX_OFFSET"
|
||||
description="UE downlink rx sample offset"
|
||||
regex='(UE_RX_OFFSET) =\s+(-?\d+).+frame = (\d+)\)'
|
||||
unit_of_meas = ""/>
|
||||
<tags>UE_USRP.NOS1.DATA_IPERF_DL.BAND7.20MHZ.MCS18</tags>
|
||||
<nruns>3</nruns><max_ntries>6</max_ntries>
|
||||
</testCase>
|
||||
|
||||
|
||||
|
||||
<testCase id="039430" >
|
||||
<class>lte-softmodem-noS1</class>
|
||||
<desc></desc>
|
||||
<eNB>imb182-desktop</eNB>
|
||||
<UE>yanbo-M4HM87P-00</UE>
|
||||
<TimeOut_cmd>700</TimeOut_cmd>
|
||||
<eNB_working_dir>/tmp</eNB_working_dir>
|
||||
<eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf downlink_frequency 2680000000L</eNB_config_file>
|
||||
<eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
|
||||
<eNB_compile_prog_args>-c -w USRP --eNB --noS1</eNB_compile_prog_args>
|
||||
<eNB_pre_exec>source $OPENAIR_DIR/cmake_targets/tools/init_nas_nos1 eNB</eNB_pre_exec>
|
||||
<eNB_pre_exec_args></eNB_pre_exec_args>
|
||||
<eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1</eNB_main_exec>
|
||||
<eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf -m 28</eNB_main_exec_args>
|
||||
<eNB_traffic_exec>sleep 80;iperf -c 10.0.1.9 -i 1 -u -b 55M</eNB_traffic_exec> <!-- PHY max TP 73.334Mbps -> 75% = 55Mbps -->
|
||||
<eNB_traffic_exec_args></eNB_traffic_exec_args>
|
||||
<eNB_search_expr_true></eNB_search_expr_true>
|
||||
<eNB_search_expr_false></eNB_search_expr_false>
|
||||
<eNB_terminate_missing_procs>False</eNB_terminate_missing_procs>
|
||||
|
||||
<UE_working_dir>/tmp</UE_working_dir>
|
||||
<UE_config_file></UE_config_file>
|
||||
<UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
|
||||
<UE_compile_prog_args>-c --UE -w USRP --noS1 --eNB --ue-autotest-trace </UE_compile_prog_args>
|
||||
<UE_pre_exec>source ./targets/bin/init_nas_nos1 UE</UE_pre_exec>
|
||||
<UE_pre_exec_args></UE_pre_exec_args>
|
||||
<UE_main_exec>sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2680000000 -r100 --ue-scan-carrier --ue-txgain 85 --ue-rxgain 100 </UE_main_exec>
|
||||
<UE_main_exec_args></UE_main_exec_args>
|
||||
<UE_traffic_exec>iperf -s -i 1 -u</UE_traffic_exec>
|
||||
<UE_traffic_exec_args></UE_traffic_exec_args>
|
||||
<UE_search_expr_true>600</UE_search_expr_true>
|
||||
<UE_search_expr_false></UE_search_expr_false>
|
||||
<UE_terminate_missing_procs>False</UE_terminate_missing_procs>
|
||||
<UE_metric id="UE_DLSCH_BITRATE"
|
||||
description="UE downlink physical throughput"
|
||||
regex='(UE_DLSCH_BITRATE) =\s+(\d+\.\d+) kbps.+frame = (\d+)\)'
|
||||
unit_of_meas = "kbps"/>
|
||||
<UE_metric id="UE_FREQ_OFFSET"
|
||||
description="UE downlink frequency channel offset"
|
||||
regex='(UE_FREQ_OFFSET) =\s+(-?\d+) Hz.+frame = (\d+)\)'
|
||||
unit_of_meas = "Hz"/>
|
||||
<UE_metric id="UE_RX_OFFSET"
|
||||
description="UE downlink rx sample offset"
|
||||
regex='(UE_RX_OFFSET) =\s+(-?\d+).+frame = (\d+)\)'
|
||||
unit_of_meas = ""/>
|
||||
<tags>UE_USRP.NOS1.DATA_IPERF_DL.BAND7.20MHZ.MCS28</tags>
|
||||
<nruns>3</nruns><max_ntries>6</max_ntries>
|
||||
</testCase>
|
||||
|
||||
|
||||
|
||||
|
||||
</testCaseList>
|
||||
|
||||
3812
cmake_targets/autotests/testsuite_ue_noS1_TCL.xml
Normal file
3812
cmake_targets/autotests/testsuite_ue_noS1_TCL.xml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
13
cmake_targets/autotests/v2/actions/3276.txt
Normal file
13
cmake_targets/autotests/v2/actions/3276.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
When running lsusb, if you have:
|
||||
|
||||
Bus 001 Device 002: ID 12d1:14fe Huawei Technologies Co., Ltd. Modem (Mass Storage Mode)
|
||||
|
||||
You need to run:
|
||||
|
||||
usb_modeswitch -v 12d1 -p 14fe -M '55534243123456780000000000000011062000000100000000000000000000'
|
||||
|
||||
After what, running lsusb should give:
|
||||
|
||||
Bus 001 Device 004: ID 12d1:1506 Huawei Technologies Co., Ltd. Modem/Networkcard
|
||||
|
||||
Values of 'Bus' and 'Device' may differ of course.
|
||||
2
cmake_targets/autotests/v2/actions/alu_epc.bash
Normal file
2
cmake_targets/autotests/v2/actions/alu_epc.bash
Normal file
@@ -0,0 +1,2 @@
|
||||
sudo /opt/ltebox/tools/stop_ltebox || true
|
||||
sudo /opt/ltebox/tools/start_ltebox
|
||||
1
cmake_targets/autotests/v2/actions/alu_epc_stop.bash
Normal file
1
cmake_targets/autotests/v2/actions/alu_epc_stop.bash
Normal file
@@ -0,0 +1 @@
|
||||
sudo /opt/ltebox/tools/stop_ltebox
|
||||
5
cmake_targets/autotests/v2/actions/alu_hss.bash
Normal file
5
cmake_targets/autotests/v2/actions/alu_hss.bash
Normal file
@@ -0,0 +1,5 @@
|
||||
sudo rmmod nasmesh || true
|
||||
sudo rmmod ue_ip || true
|
||||
sudo /opt/ltebox/tools/stop_ltebox || true
|
||||
sudo killall -9 hss_sim || true
|
||||
sudo /opt/hss_sim0609/starthss_real
|
||||
146
cmake_targets/autotests/v2/actions/bandrich.txt
Normal file
146
cmake_targets/autotests/v2/actions/bandrich.txt
Normal file
@@ -0,0 +1,146 @@
|
||||
The configuration for the bandrich in the test setup is a bit hackish.
|
||||
|
||||
Here come some notes explaining what we do here.
|
||||
|
||||
To get /dev/bandrich.data and /dev/bandrich.control (so that you don't need
|
||||
to look for which /dev/ttyUSBx are used by your dongle, and always use
|
||||
the same files, no matter what), add a udev file:
|
||||
|
||||
/etc/udev/rules.d/bandrich.rules
|
||||
|
||||
containing lines:
|
||||
|
||||
SUBSYSTEM=="tty", ENV{ID_VENDOR_ID}=="1a8d", ENV{ID_MODEL_ID}=="100d", ENV{ID_SERIAL_SHORT}=="357473040068155", ENV{ID_USB_INTERFACE_NUM}=="00", SYMLINK+="bandrich.data", MODE="0666"
|
||||
SUBSYSTEM=="tty", ENV{ID_VENDOR_ID}=="1a8d", ENV{ID_MODEL_ID}=="100d", ENV{ID_SERIAL_SHORT}=="357473040068155", ENV{ID_USB_INTERFACE_NUM}=="02", SYMLINK+="bandrich.control", MODE="0666"
|
||||
|
||||
To avoid NetworkManager to play with the bandrich, add also the line:
|
||||
|
||||
ENV{ID_VENDOR_ID}=="1a8d", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||
|
||||
Maybe also add; , ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||
to the two other lines.
|
||||
|
||||
Then run: udevadm control --reload-rules
|
||||
And: service network-manager restart
|
||||
|
||||
Change vendor_id/model_id/serial/interface num to match yours.
|
||||
Use lsusb -v to find values.
|
||||
|
||||
At first we used /dev/ttyUSB2 linked to /dev/bandrich for both data (in
|
||||
the wvdial configuration file) and control (in the python code, opening
|
||||
/dev/bandrich the standard unix way and read and write into it, with no
|
||||
special libusb commands).
|
||||
|
||||
But it turned out that using /dev/ttyUSB2 for data gives bad throughput
|
||||
results. We tested downlink UDP at 15Mb/s but the maximum throughput for
|
||||
a 5MHz cell was around 13, and we had a lot of packets lost at the iperf's
|
||||
UDP level. Radio was looking fine (all packets acked correctly), so it was
|
||||
not a radio problem. The dongle in a windows machine was working fine,
|
||||
15Mbs/s. Using the wvdial configuration file from test setup v1 gave also
|
||||
good results. The only difference was the use of /dev/ttyUSB0 instead of
|
||||
/dev/ttyUSB2. Using /dev/ttyUSB0 solved the throughput issue.
|
||||
|
||||
But using /dev/ttyUSB0 for control in the pyton code did not work. The
|
||||
output was incorrect.
|
||||
|
||||
So we decided to have /dev/bandrich.data linked to /dev/ttyUSB0 for data
|
||||
(wvdial) and /dev/bandrich.control linked to /dev/ttyUSB2 for control
|
||||
(in python code).
|
||||
|
||||
It may not be the correct way to go, but it seems to do the trick so far.
|
||||
|
||||
Your device may need some other solution.
|
||||
|
||||
Here, we get, as result of lsusb -v:
|
||||
|
||||
[SNIP]
|
||||
Bus 003 Device 009: ID 1a8d:100d BandRich, Inc. 4G LTE adapter
|
||||
Device Descriptor:
|
||||
bLength 18
|
||||
bDescriptorType 1
|
||||
bcdUSB 2.00
|
||||
bDeviceClass 0 (Defined at Interface level)
|
||||
bDeviceSubClass 0
|
||||
bDeviceProtocol 0
|
||||
bMaxPacketSize0 64
|
||||
idVendor 0x1a8d BandRich, Inc.
|
||||
idProduct 0x100d 4G LTE adapter
|
||||
bcdDevice 0.00
|
||||
iManufacturer 10 BandRich, Inc.
|
||||
iProduct 9 BandLuxe HSPA-LTE Adapter
|
||||
iSerial 11 357473040068155
|
||||
[SNIP]
|
||||
|
||||
You can also run:
|
||||
|
||||
udevadm monitor
|
||||
|
||||
and unplug/replug the dongle. It will print some information.
|
||||
|
||||
The command:
|
||||
|
||||
udevadm info --export-db
|
||||
|
||||
is also important to get the right identifier to put in ENV{}. (It also
|
||||
gives the correct value.)
|
||||
|
||||
Here is extracted what we have for our dongle:
|
||||
|
||||
P: /devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1.2/3-1.2:1.2/ttyUSB2/tty/ttyUSB2
|
||||
N: ttyUSB2
|
||||
S: bandrich
|
||||
S: serial/by-id/usb-BandRich__Inc._BandLuxe_HSPA-LTE_Adapter_357473040068155-if02-port0
|
||||
S: serial/by-path/pci-0000:00:1a.0-usb-0:1.2:1.2-port0
|
||||
E: DEVLINKS=/dev/bandrich /dev/serial/by-id/usb-BandRich__Inc._BandLuxe_HSPA-LTE_Adapter_357473040068155-if02-port0 /dev/serial/by-path/pci-0000:00:1a.0-usb-0:1.2:1.2-port0
|
||||
E: DEVNAME=/dev/ttyUSB2
|
||||
E: DEVPATH=/devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1.2/3-1.2:1.2/ttyUSB2/tty/ttyUSB2
|
||||
E: ID_BUS=usb
|
||||
E: ID_MM_CANDIDATE=1
|
||||
E: ID_MODEL=BandLuxe_HSPA-LTE_Adapter
|
||||
E: ID_MODEL_ENC=BandLuxe\x20HSPA-LTE\x20Adapter
|
||||
E: ID_MODEL_FROM_DATABASE=4G LTE adapter
|
||||
E: ID_MODEL_ID=100d
|
||||
E: ID_PATH=pci-0000:00:1a.0-usb-0:1.2:1.2
|
||||
E: ID_PATH_TAG=pci-0000_00_1a_0-usb-0_1_2_1_2
|
||||
E: ID_REVISION=0000
|
||||
E: ID_SERIAL=BandRich__Inc._BandLuxe_HSPA-LTE_Adapter_357473040068155
|
||||
E: ID_SERIAL_SHORT=357473040068155
|
||||
E: ID_TYPE=generic
|
||||
E: ID_USB_DRIVER=option
|
||||
E: ID_USB_INTERFACES=:ffffff:020600:0a0000:080650:
|
||||
E: ID_USB_INTERFACE_NUM=02
|
||||
E: ID_VENDOR=BandRich__Inc.
|
||||
E: ID_VENDOR_ENC=BandRich\x2c\x20Inc.
|
||||
E: ID_VENDOR_FROM_DATABASE=BandRich, Inc.
|
||||
E: ID_VENDOR_ID=1a8d
|
||||
E: MAJOR=188
|
||||
E: MINOR=2
|
||||
E: SUBSYSTEM=tty
|
||||
E: USEC_INITIALIZED=672068596
|
||||
|
||||
You can also run:
|
||||
|
||||
udevadm info -a -p /sys/bus/usb-serial/devices/ttyUSB0
|
||||
udevadm info -a -p /sys/bus/usb-serial/devices/ttyUSB2
|
||||
|
||||
Note: after creating the udev files, you need to unplug/replug your
|
||||
dongle for /dev/bandrich.data and /dev/bandrich.control to appear.
|
||||
|
||||
Note: the mode 0666 is for everyone to access the dongle (no need for
|
||||
root privileges). If you prefer you can set it to 0600 (only root)
|
||||
or 0660 (root and group).
|
||||
|
||||
Then you need to configure pppd, to get correct 'route' information when
|
||||
you run wvdial.
|
||||
|
||||
The file /etc/ppp/peers/wvdial should have the following content:
|
||||
|
||||
noauth
|
||||
name wvdial
|
||||
usepeerdns
|
||||
defaultroute
|
||||
replacedefaultroute
|
||||
|
||||
The file wvdial.bandrich.conf has been created by copying some information
|
||||
found on the Internet. Its content may not be fully correct. Adapt to your
|
||||
situation. It seems to work here.
|
||||
2
cmake_targets/autotests/v2/actions/client_tcp.bash
Normal file
2
cmake_targets/autotests/v2/actions/client_tcp.bash
Normal file
@@ -0,0 +1,2 @@
|
||||
echo $SERVER_IP
|
||||
timeout -s 9 20s iperf -c $SERVER_IP -i1
|
||||
3
cmake_targets/autotests/v2/actions/client_udp.bash
Normal file
3
cmake_targets/autotests/v2/actions/client_udp.bash
Normal file
@@ -0,0 +1,3 @@
|
||||
echo $SERVER_IP
|
||||
echo $UDP_BANDWIDTH
|
||||
timeout -s 9 20s iperf -c $SERVER_IP -i1 -u -b $UDP_BANDWIDTH
|
||||
6
cmake_targets/autotests/v2/actions/clone_repository.bash
Normal file
6
cmake_targets/autotests/v2/actions/clone_repository.bash
Normal file
@@ -0,0 +1,6 @@
|
||||
sudo rm -rf /tmp/oai_test_setup
|
||||
mkdir /tmp/oai_test_setup
|
||||
cd /tmp/oai_test_setup
|
||||
git clone $REPOSITORY_URL oai
|
||||
cd oai
|
||||
git checkout $COMMIT_ID
|
||||
9
cmake_targets/autotests/v2/actions/compilation.bash
Normal file
9
cmake_targets/autotests/v2/actions/compilation.bash
Normal file
@@ -0,0 +1,9 @@
|
||||
cd /tmp/oai_test_setup/oai
|
||||
source oaienv
|
||||
cd cmake_targets
|
||||
rm -rf log
|
||||
mkdir -p log
|
||||
echo $BUILD_ARGUMENTS
|
||||
./build_oai $BUILD_ARGUMENTS
|
||||
echo $BUILD_OUTPUT
|
||||
ls $BUILD_OUTPUT
|
||||
4
cmake_targets/autotests/v2/actions/execution.bash
Normal file
4
cmake_targets/autotests/v2/actions/execution.bash
Normal file
@@ -0,0 +1,4 @@
|
||||
cd /tmp/oai_test_setup/oai
|
||||
source oaienv
|
||||
echo $EXEC $EXEC_ARGS
|
||||
$EXEC $EXEC_ARGS
|
||||
13
cmake_targets/autotests/v2/actions/execution_compile.bash
Normal file
13
cmake_targets/autotests/v2/actions/execution_compile.bash
Normal file
@@ -0,0 +1,13 @@
|
||||
cd /tmp/oai_test_setup/oai
|
||||
source oaienv
|
||||
sudo rmmod nasmesh || true
|
||||
sudo rmmod ue_ip || true
|
||||
cd cmake_targets
|
||||
rm -rf log
|
||||
mkdir -p log
|
||||
echo $PRE_BUILD
|
||||
bash -c "$PRE_BUILD"
|
||||
echo $BUILD_PROG $BUILD_ARGUMENTS
|
||||
$BUILD_PROG $BUILD_ARGUMENTS
|
||||
echo $PRE_EXEC
|
||||
bash -c "$PRE_EXEC"
|
||||
103
cmake_targets/autotests/v2/actions/modem.py
Normal file
103
cmake_targets/autotests/v2/actions/modem.py
Normal file
@@ -0,0 +1,103 @@
|
||||
import sys, os, select, re, time
|
||||
|
||||
def quit(r):
|
||||
sys.stdout.flush()
|
||||
os._exit(r)
|
||||
|
||||
class ModemResponse:
|
||||
def __init__(self, retcode, retstring):
|
||||
self.ret = retcode
|
||||
self.data = retstring
|
||||
|
||||
class Modem:
|
||||
def open(self):
|
||||
self.i = os.open(self.devname, os.O_RDONLY)
|
||||
self.o = os.open(self.devname, os.O_WRONLY)
|
||||
#clear output of modem, if any is pending (not sure of this)
|
||||
while True:
|
||||
(ri, ro, re) = select.select([self.i], [], [self.i], 0)
|
||||
if len(ri) == 0:
|
||||
break
|
||||
l = os.read(self.i, 65536)
|
||||
print "WARNING: modem had unread data: '" + \
|
||||
l.replace('\r', '\\r') + "'"
|
||||
|
||||
def __init__(self, devname):
|
||||
self.devname = devname
|
||||
self.i = -1
|
||||
self.o = -1
|
||||
self.open()
|
||||
|
||||
def send(self, s):
|
||||
print "DEBUG: SEND TO MODEM: '" + s + "'"
|
||||
os.write(self.o, s+"\r")
|
||||
|
||||
def recv(self):
|
||||
return os.read(self.i, 65536)
|
||||
|
||||
def wait(self):
|
||||
ok = '\r\nOK\r\n'
|
||||
error = '\r\nERROR\r\n'
|
||||
cme_error = '\r\nCME ERROR:[^\r]*\r\n'
|
||||
no_carrier = '\r\nNO CARRIER\r\n'
|
||||
l = ''
|
||||
while True:
|
||||
l = l + self.recv()
|
||||
print "DEBUG: CURRENT MODEM RESPONSE: '" + \
|
||||
l.replace('\r','\\r').replace('\n','\\n') + "'"
|
||||
|
||||
#AT returned 'things' are "\r\nXXXX\r\n", look for that.
|
||||
#Check if last one matches 'ok', 'error' or 'cme_error'.
|
||||
#(Hopefully this is enough and no other reply is possible.)
|
||||
#This code accepts invalid responses from modem, ie. all
|
||||
#that does not fit in the 'findall' is thrashed away, maybe
|
||||
#we want to do something in this case?
|
||||
|
||||
res = re.findall('\r\n[^\r]*\r\n', l)
|
||||
if len(res) == 0:
|
||||
print "DEBUG: NO MATCH: wait for more input from modem"
|
||||
continue
|
||||
last_res = res[len(res)-1]
|
||||
print "DEBUG: CURRENT LAST LINE: '" + \
|
||||
last_res.replace('\r','\\r').replace('\n','\\n')+"'"
|
||||
if re.match(ok, last_res) != None:
|
||||
return ModemResponse(True, l)
|
||||
if ( re.match(error, last_res) != None or
|
||||
re.match(cme_error, last_res) != None or
|
||||
re.match(no_carrier, last_res) != None):
|
||||
return ModemResponse(False, l)
|
||||
#TODO purge?
|
||||
#re.purge()
|
||||
|
||||
def modem_reset_cycle(self):
|
||||
#close all
|
||||
os.close(self.i)
|
||||
os.close(self.o)
|
||||
self.i = -1
|
||||
self.o = -1
|
||||
|
||||
print "DEBUG: RESET CYCLE: wait for modem to go away"
|
||||
#wait for file descriptor to go away
|
||||
while True:
|
||||
try:
|
||||
test = os.open(self.devname, os.O_RDONLY)
|
||||
os.close(test)
|
||||
time.sleep(0.1)
|
||||
except BaseException, e:
|
||||
break
|
||||
print "DEBUG: RESET CYCLE: modem has gone away"
|
||||
|
||||
print "DEBUG: RESET CYCLE: wait for modem to come back"
|
||||
#wait for file descriptor to be back, try to open it over and over
|
||||
#TODO: use inotify here? (it's not in basic python as it seems)
|
||||
while True:
|
||||
try:
|
||||
test = os.open(self.devname, os.O_RDONLY)
|
||||
os.close(test)
|
||||
break
|
||||
except BaseException, e:
|
||||
time.sleep(0.1)
|
||||
print "DEBUG: RESET CYCLE: modem is back"
|
||||
|
||||
#back to business
|
||||
self.open()
|
||||
12
cmake_targets/autotests/v2/actions/run_enb.bash
Normal file
12
cmake_targets/autotests/v2/actions/run_enb.bash
Normal file
@@ -0,0 +1,12 @@
|
||||
#enable control+C reception (to be refined if it does not work)
|
||||
stty isig intr ^C
|
||||
|
||||
cd /tmp/oai_test_setup/oai
|
||||
source oaienv
|
||||
sudo rmmod nasmesh || true
|
||||
sudo rmmod ue_ip || true
|
||||
cd cmake_targets/lte_build_oai/build
|
||||
ulimit -c unlimited
|
||||
sudo rm -f core
|
||||
#sudo -E ./lte-softmodem -O $OPENAIR_DIR/cmake_targets/autotests/v2/config/enb.band7.tm1.usrpb210.conf
|
||||
sudo -E ./lte-softmodem -O /tmp/enb.conf
|
||||
4
cmake_targets/autotests/v2/actions/server_tcp.bash
Normal file
4
cmake_targets/autotests/v2/actions/server_tcp.bash
Normal file
@@ -0,0 +1,4 @@
|
||||
stty isig intr ^C
|
||||
|
||||
#timeout -s 9 20s iperf -s -i1
|
||||
iperf -s -i1
|
||||
4
cmake_targets/autotests/v2/actions/server_udp.bash
Normal file
4
cmake_targets/autotests/v2/actions/server_udp.bash
Normal file
@@ -0,0 +1,4 @@
|
||||
stty isig intr ^C
|
||||
|
||||
#timeout -s 9 20s iperf -s -i1 -u
|
||||
iperf -s -i1 -u
|
||||
13
cmake_targets/autotests/v2/actions/start_3276.bash
Normal file
13
cmake_targets/autotests/v2/actions/start_3276.bash
Normal file
@@ -0,0 +1,13 @@
|
||||
#enable control+C reception (to be refined if it does not work)
|
||||
stty isig intr ^C
|
||||
|
||||
cd /tmp/oai_test_setup/oai
|
||||
source oaienv
|
||||
sudo rmmod nasmesh || true
|
||||
sudo rmmod ue_ip || true
|
||||
cd cmake_targets/autotests/v2/actions
|
||||
sudo python start_3276.py
|
||||
|
||||
sudo wvdial -C wvdial.3276.conf || true
|
||||
|
||||
sudo python stop_3276.py
|
||||
59
cmake_targets/autotests/v2/actions/start_3276.py
Normal file
59
cmake_targets/autotests/v2/actions/start_3276.py
Normal file
@@ -0,0 +1,59 @@
|
||||
import time
|
||||
|
||||
from modem import quit, Modem
|
||||
|
||||
try:
|
||||
modem = Modem("/dev/ttyUSB0")
|
||||
|
||||
#test that modem is there
|
||||
print "INFO: check modem's presence"
|
||||
modem.send('AT')
|
||||
if modem.wait().ret != True:
|
||||
print "ERROR: no modem?"
|
||||
quit(1)
|
||||
|
||||
#first deactivate
|
||||
print "INFO: deactivate the modem"
|
||||
modem.send('AT+CFUN=0')
|
||||
if modem.wait().ret != True:
|
||||
print "ERROR: failed deactivating the modem"
|
||||
quit(1)
|
||||
|
||||
#activate the modem
|
||||
print "INFO: activate the modem"
|
||||
modem.send('AT+CFUN=1')
|
||||
if modem.wait().ret != True:
|
||||
print "ERROR: failed asking modem for activation"
|
||||
quit(1)
|
||||
|
||||
#wait for modem to be connected
|
||||
#timeout after one minute
|
||||
print "INFO: wait for modem to be connected (timeout: one minute)"
|
||||
start_time = time.time()
|
||||
while True:
|
||||
modem.send('AT+CGATT?')
|
||||
r = modem.wait()
|
||||
if r.ret != True:
|
||||
print "ERROR: failed checking attachment status of modem"
|
||||
quit(1)
|
||||
if "+CGATT: 1" in r.data:
|
||||
break
|
||||
if not "CGATT: 0" in r.data:
|
||||
print "ERROR: bad data when checking attachment status of modem"
|
||||
quit(1)
|
||||
time.sleep(0.1)
|
||||
if time.time() > start_time + 60:
|
||||
print "ERROR: modem not connected after one minute, close modem"
|
||||
modem.send('AT+CFUN=0')
|
||||
r = modem.wait()
|
||||
if r.ret != True:
|
||||
print "ERROR: closing modem failed"
|
||||
quit(1)
|
||||
|
||||
print "INFO: modem is connected"
|
||||
|
||||
except BaseException, e:
|
||||
print "ERROR: " + str(e)
|
||||
quit(1)
|
||||
|
||||
quit(0)
|
||||
26
cmake_targets/autotests/v2/actions/start_bandrich.bash
Normal file
26
cmake_targets/autotests/v2/actions/start_bandrich.bash
Normal file
@@ -0,0 +1,26 @@
|
||||
#enable control+C reception (to be refined if it does not work)
|
||||
stty isig intr ^C
|
||||
|
||||
#If /dev/bandrich is not present when we start the test, what to do?
|
||||
#The following commented lines are an attempt at solving this.
|
||||
#This is not satisfying, so we rather do nothing.
|
||||
|
||||
##the UE got stuck once, I had to run usb_modeswitch by hand.
|
||||
##So at this point, if /dev/bandrich does not exist, maybe the UE is
|
||||
##stuck for whatever reason. Let's forcefully run usb_modeswitch.
|
||||
#if [ ! -e /dev/bandrich ]; then sudo usb_modeswitch -v 1a8d -p 1000 -I -W -K; true; fi
|
||||
#
|
||||
##wait for /dev/bandrich (TODO: use inotify?)
|
||||
##may fail if the bandrich is in a bad state
|
||||
#while [ ! -e /dev/bandrich ]; do sleep 1; done
|
||||
|
||||
cd /tmp/oai_test_setup/oai
|
||||
source oaienv
|
||||
sudo rmmod nasmesh || true
|
||||
sudo rmmod ue_ip || true
|
||||
cd cmake_targets/autotests/v2/actions
|
||||
python start_bandrich.py
|
||||
|
||||
sudo wvdial -C wvdial.bandrich.conf || true
|
||||
|
||||
python stop_bandrich.py
|
||||
55
cmake_targets/autotests/v2/actions/start_bandrich.py
Normal file
55
cmake_targets/autotests/v2/actions/start_bandrich.py
Normal file
@@ -0,0 +1,55 @@
|
||||
import time
|
||||
|
||||
from modem import quit, Modem
|
||||
|
||||
try:
|
||||
modem = Modem("/dev/bandrich.control")
|
||||
|
||||
#test that modem is there
|
||||
print "INFO: check modem's presence"
|
||||
modem.send('AT')
|
||||
if modem.wait().ret != True:
|
||||
print "ERROR: no modem?"
|
||||
quit(1)
|
||||
|
||||
#activate the modem, be brutal and reset it too!
|
||||
print "INFO: reset and activate the modem"
|
||||
modem.send('AT+CFUN=1,1')
|
||||
if modem.wait().ret != True:
|
||||
print "ERROR: failed asking modem for activation"
|
||||
quit(1)
|
||||
|
||||
#modem has gone! wait for it to pop up again
|
||||
modem.modem_reset_cycle()
|
||||
|
||||
#wait for modem to be connected
|
||||
#timeout after one minute
|
||||
print "INFO: wait for modem to be connected (timeout: one minute)"
|
||||
start_time = time.time()
|
||||
while True:
|
||||
modem.send('AT+CGATT?')
|
||||
r = modem.wait()
|
||||
if r.ret != True:
|
||||
print "ERROR: failed checking attachment status of modem"
|
||||
quit(1)
|
||||
if "+CGATT: 1" in r.data:
|
||||
break
|
||||
if not "CGATT: 0" in r.data:
|
||||
print "ERROR: bad data when checking attachment status of modem"
|
||||
quit(1)
|
||||
time.sleep(0.1)
|
||||
if time.time() > start_time + 60:
|
||||
print "ERROR: modem not connected after one minute, close modem"
|
||||
modem.send('AT+CFUN=4')
|
||||
r = modem.wait()
|
||||
if r.ret != True:
|
||||
print "ERROR: closing modem failed"
|
||||
quit(1)
|
||||
|
||||
print "INFO: modem is connected"
|
||||
|
||||
except BaseException, e:
|
||||
print "ERROR: " + str(e)
|
||||
quit(1)
|
||||
|
||||
quit(0)
|
||||
29
cmake_targets/autotests/v2/actions/stop_3276.py
Normal file
29
cmake_targets/autotests/v2/actions/stop_3276.py
Normal file
@@ -0,0 +1,29 @@
|
||||
import time
|
||||
|
||||
from modem import quit, Modem
|
||||
|
||||
try:
|
||||
modem = Modem("/dev/ttyUSB0")
|
||||
|
||||
#test that modem is there
|
||||
print "INFO: check modem's presence"
|
||||
modem.send('AT')
|
||||
r = modem.wait()
|
||||
if r.ret != True and "NO CARRIER" not in r.data:
|
||||
print "ERROR: no modem?"
|
||||
quit(1)
|
||||
if "NO CARRIER" in r.data:
|
||||
print "WARNING: 'NO CARRIER' detected, not sure if handled correctly"
|
||||
|
||||
#deactivate the modem
|
||||
print "INFO: deactivate the modem"
|
||||
modem.send('AT+CFUN=0')
|
||||
if modem.wait().ret != True:
|
||||
print "ERROR: failed asking modem for deactivation"
|
||||
quit(1)
|
||||
|
||||
except BaseException, e:
|
||||
print "ERROR: " + str(e)
|
||||
quit(1)
|
||||
|
||||
quit(0)
|
||||
29
cmake_targets/autotests/v2/actions/stop_bandrich.py
Normal file
29
cmake_targets/autotests/v2/actions/stop_bandrich.py
Normal file
@@ -0,0 +1,29 @@
|
||||
import time
|
||||
|
||||
from modem import quit, Modem
|
||||
|
||||
try:
|
||||
modem = Modem("/dev/bandrich.control")
|
||||
|
||||
#test that modem is there
|
||||
print "INFO: check modem's presence"
|
||||
modem.send('AT')
|
||||
r = modem.wait()
|
||||
if r.ret != True and "NO CARRIER" not in r.data:
|
||||
print "ERROR: no modem?"
|
||||
quit(1)
|
||||
if "NO CARRIER" in r.data:
|
||||
print "WARNING: 'NO CARRIER' detected, not sure if handled correctly"
|
||||
|
||||
#deactivate the modem
|
||||
print "INFO: deactivate the modem"
|
||||
modem.send('AT+CFUN=4')
|
||||
if modem.wait().ret != True:
|
||||
print "ERROR: failed asking modem for deactivation"
|
||||
quit(1)
|
||||
|
||||
except BaseException, e:
|
||||
print "ERROR: " + str(e)
|
||||
quit(1)
|
||||
|
||||
quit(0)
|
||||
27
cmake_targets/autotests/v2/actions/wvdial.3276.conf
Normal file
27
cmake_targets/autotests/v2/actions/wvdial.3276.conf
Normal file
@@ -0,0 +1,27 @@
|
||||
[Dialer Defaults]
|
||||
Modem = /dev/ttyUSB0
|
||||
ISDN = off
|
||||
Modem Type = Analog Modem
|
||||
Baud = 9600
|
||||
Init1 = ATZ
|
||||
Init2 = AT&F &D2 &C1
|
||||
Init3 = AT+CGDCONT=1,"IP","oai.ipv4"
|
||||
Phone = *99#
|
||||
Phone1 =
|
||||
Phone2 =
|
||||
Phone3 =
|
||||
Phone4 =
|
||||
Ask Password = off
|
||||
Password = ''
|
||||
Username = ImaginLab
|
||||
Auto Reconnect = off
|
||||
Abort on Busy = off
|
||||
Carrier Check = on
|
||||
Check Def Route = on
|
||||
Abort on No Dialtone = on
|
||||
Stupid Mode = on
|
||||
Idle Seconds = 0
|
||||
Auto DNS = on
|
||||
;Minimize = off
|
||||
;Dock = off
|
||||
;Do NOT edit this file by hand!
|
||||
36
cmake_targets/autotests/v2/actions/wvdial.bandrich.conf
Normal file
36
cmake_targets/autotests/v2/actions/wvdial.bandrich.conf
Normal file
@@ -0,0 +1,36 @@
|
||||
[Dialer Defaults]
|
||||
Modem = /dev/bandrich.data
|
||||
ISDN = off
|
||||
Modem Type = Analog Modem
|
||||
Baud = 9600
|
||||
Init = ATZ
|
||||
Init2 = AT+CPIN?
|
||||
Init3 = AT+CGREG?
|
||||
Init4 = AT+COPS?
|
||||
Init5 = AT+CSQ
|
||||
Init6 =
|
||||
Init7 = AT+CGATT=1
|
||||
Init8 =
|
||||
Init9 =
|
||||
Phone = *99***1#
|
||||
Phone1 =
|
||||
Phone2 =
|
||||
Phone3 =
|
||||
Phone4 =
|
||||
Dial Prefix =
|
||||
Dial Attempts = 1
|
||||
Dial Command = ATM1L3DT
|
||||
Ask Password = off
|
||||
Password = ''
|
||||
Username = ImaginLab
|
||||
Auto Reconnect = off
|
||||
Abort on Busy = off
|
||||
Carrier Check = on
|
||||
Check Def Route = on
|
||||
Abort on No Dialtone = on
|
||||
Stupid Mode = on
|
||||
Idle Seconds = 0
|
||||
Auto DNS = on
|
||||
;Minimize = off
|
||||
;Dock = off
|
||||
;Do NOT edit this file by hand!
|
||||
551
cmake_targets/autotests/v2/alu_test.py
Normal file
551
cmake_targets/autotests/v2/alu_test.py
Normal file
@@ -0,0 +1,551 @@
|
||||
import threading, os, re
|
||||
|
||||
from utils import quickshell, log, TestFailed, do_tests
|
||||
from task import Task, WAITLOG_SUCCESS
|
||||
|
||||
class alu_test:
|
||||
def __init__(self,
|
||||
epc, enb, ue,
|
||||
openair,
|
||||
user, password,
|
||||
log_subdir,
|
||||
env,
|
||||
enb_rru = "",
|
||||
enb_rcc = ""):
|
||||
self.epc_machine = epc
|
||||
self.enb_machine = enb
|
||||
self.ue_machine = ue
|
||||
self.openair_dir = openair
|
||||
self.oai_user = user
|
||||
self.oai_password = password
|
||||
self.env = env
|
||||
self.enb_rru_machine = enb_rru
|
||||
self.enb_rcc_machine = enb_rcc
|
||||
|
||||
self.task_hss = None
|
||||
self.task_enb = None
|
||||
self.task_ue = None
|
||||
self.task_rru_enb = None
|
||||
self.task_rcc_enb = None
|
||||
|
||||
self.logdir = openair + '/cmake_targets/autotests/log/' + log_subdir
|
||||
quickshell('mkdir -p ' + self.logdir)
|
||||
|
||||
#event object used to wait for several tasks at once
|
||||
self.event = threading.Event()
|
||||
|
||||
##########################################################################
|
||||
# finish
|
||||
##########################################################################
|
||||
def finish(self):
|
||||
#brutally kill tasks still running
|
||||
#TODO: call 'wait', some processes may still be there as zombies
|
||||
if self.task_hss != None and self.task_hss.alive():
|
||||
self.task_hss.kill()
|
||||
if self.task_enb != None and self.task_enb.alive():
|
||||
self.task_enb.kill()
|
||||
if self.task_ue != None and self.task_ue.alive():
|
||||
self.task_ue.kill()
|
||||
if self.task_rru_enb != None and self.task_rru_enb.alive():
|
||||
self.task_rru_enb.kill()
|
||||
if self.task_rcc_enb != None and self.task_rcc_enb.alive():
|
||||
self.task_rcc_enb.kill()
|
||||
|
||||
##########################################################################
|
||||
# start_epc
|
||||
##########################################################################
|
||||
def start_epc(self):
|
||||
#launch HSS, wait for prompt
|
||||
log("INFO: ALU test: run HSS")
|
||||
self.task_hss = Task("actions/alu_hss.bash",
|
||||
"alu_hss",
|
||||
self.epc_machine,
|
||||
self.oai_user,
|
||||
self.oai_password,
|
||||
self.env,
|
||||
self.logdir + "/alu_hss." + self.epc_machine,
|
||||
event=self.event)
|
||||
self.task_hss.waitlog('S6AS_SIM-> ')
|
||||
|
||||
#then launch EPC, wait for connection on HSS side
|
||||
log("INFO: ALU test: run EPC")
|
||||
task_epc = Task("actions/alu_epc.bash",
|
||||
"ALU EPC",
|
||||
self.epc_machine,
|
||||
self.oai_user,
|
||||
self.oai_password,
|
||||
self.env,
|
||||
self.logdir + "/alu_epc." + self.epc_machine)
|
||||
ret = task_epc.wait()
|
||||
if ret != 0:
|
||||
log("ERROR: EPC start failure");
|
||||
raise TestFailed()
|
||||
self.task_hss.waitlog('Connected\n')
|
||||
|
||||
##########################################################################
|
||||
# stop_epc
|
||||
##########################################################################
|
||||
def stop_epc(self):
|
||||
#stop EPC, wait for disconnection on HSS side
|
||||
log("INFO: ALU test: stop EPC")
|
||||
task_epc = Task("actions/alu_epc_stop.bash",
|
||||
"alu_epc_stop",
|
||||
self.epc_machine,
|
||||
self.oai_user,
|
||||
self.oai_password,
|
||||
self.env,
|
||||
self.logdir + "/alu_epc_stop." + self.epc_machine)
|
||||
ret = task_epc.wait()
|
||||
if ret != 0:
|
||||
log("ERROR: ALU test: ALU EPC stop failed")
|
||||
raise TestFailed()
|
||||
self.task_hss.waitlog('Disconnected\n')
|
||||
|
||||
log("INFO: ALU test: stop HSS")
|
||||
self.task_hss.sendnow("exit\n")
|
||||
ret = self.task_hss.wait()
|
||||
if ret != 0:
|
||||
log("ERROR: ALU test: ALU HSS failed")
|
||||
raise TestFailed()
|
||||
|
||||
##########################################################################
|
||||
# compile_enb
|
||||
##########################################################################
|
||||
def compile_enb(self, build_arguments, log_suffix=""):
|
||||
log("INFO: ALU test: compile softmodem on " + self.enb_machine)
|
||||
envcomp = list(self.env)
|
||||
envcomp.append('BUILD_ARGUMENTS="' + build_arguments + '"')
|
||||
#we don't care about BUILD_OUTPUT but required (TODO: change that)
|
||||
envcomp.append('BUILD_OUTPUT=/')
|
||||
logdir = self.logdir + "/compile_log"
|
||||
remote_files = "'/tmp/oai_test_setup/oai/cmake_targets/log/*'"
|
||||
post_action = "mkdir -p "+ logdir + \
|
||||
" && sshpass -p " + self.oai_password + \
|
||||
" scp -r " + self.oai_user + \
|
||||
"@" + self.enb_machine + ":" + remote_files + " " + logdir + \
|
||||
" || true"
|
||||
task = Task("actions/compilation.bash",
|
||||
"compile_softmodem",
|
||||
self.enb_machine,
|
||||
self.oai_user,
|
||||
self.oai_password,
|
||||
envcomp,
|
||||
self.logdir + "/compile_softmodem." + log_suffix + \
|
||||
self.enb_machine,
|
||||
post_action=post_action)
|
||||
ret = task.wait()
|
||||
if ret != 0:
|
||||
log("ERROR: softmodem compilation failure");
|
||||
raise TestFailed()
|
||||
task.postaction()
|
||||
|
||||
##########################################################################
|
||||
# start_enb
|
||||
##########################################################################
|
||||
def start_enb(self, config_file):
|
||||
#copy wanted configuration file
|
||||
quickshell("sshpass -p " + self.oai_password +
|
||||
" scp config/" + config_file + " " +
|
||||
self.oai_user + "@" + self.enb_machine + ":/tmp/enb.conf")
|
||||
|
||||
#run softmodem
|
||||
log("INFO: ALU test: run softmodem with configuration file " +
|
||||
config_file)
|
||||
self.task_enb = Task("actions/run_enb.bash",
|
||||
"run_softmodem",
|
||||
self.enb_machine,
|
||||
self.oai_user,
|
||||
self.oai_password,
|
||||
self.env,
|
||||
self.logdir + "/run_softmodem." + self.enb_machine,
|
||||
event=self.event)
|
||||
self.task_enb.waitlog('got sync')
|
||||
|
||||
##########################################################################
|
||||
# stop_enb
|
||||
##########################################################################
|
||||
def stop_enb(self):
|
||||
log("INFO: ALU test: stop softmodem")
|
||||
self.task_enb.sendnow("%c" % 3)
|
||||
ret = self.task_enb.wait()
|
||||
if ret != 0:
|
||||
log("ERROR: ALU test: softmodem failed")
|
||||
#not sure if we have to quit here or not
|
||||
#os._exit(1)
|
||||
|
||||
##########################################################################
|
||||
# start_enb_rru_rcc
|
||||
##########################################################################
|
||||
def start_enb_rru_rcc(self, rru_config_file, rcc_config_file):
|
||||
#copy wanted configuration files
|
||||
quickshell("sshpass -p " + self.oai_password +
|
||||
" scp config/" + rru_config_file + " " +
|
||||
self.oai_user + "@" + self.enb_rru_machine+":/tmp/enb.conf")
|
||||
quickshell("sshpass -p " + self.oai_password +
|
||||
" scp config/" + rcc_config_file + " " +
|
||||
self.oai_user + "@" + self.enb_rcc_machine+":/tmp/enb.conf")
|
||||
|
||||
#run RRU/RCC softmodem
|
||||
log("INFO: ALU test: run RRU softmodem with configuration file " +
|
||||
rru_config_file)
|
||||
self.task_rru_enb = Task("actions/run_enb.bash",
|
||||
"run_RRU_softmodem",
|
||||
self.enb_rru_machine,
|
||||
self.oai_user,
|
||||
self.oai_password,
|
||||
self.env,
|
||||
self.logdir + "/run_softmodem." + self.enb_rru_machine,
|
||||
event=self.event)
|
||||
self.task_rru_enb.waitlog('[RRH] binding to')
|
||||
log("INFO: ALU test: run RCC softmodem with configuration file " +
|
||||
rcc_config_file)
|
||||
self.task_rcc_enb = Task("actions/run_enb.bash",
|
||||
"run_RCC_softmodem",
|
||||
self.enb_rcc_machine,
|
||||
self.oai_user,
|
||||
self.oai_password,
|
||||
self.env,
|
||||
self.logdir + "/run_softmodem." + self.enb_rcc_machine,
|
||||
event=self.event)
|
||||
self.task_rcc_enb.waitlog('[BBU] local ip addr')
|
||||
#wait for RRU and RCC to be connected
|
||||
self.task_rru_enb.waitlog('devices ok (eNB_thread_asynch_rx)')
|
||||
|
||||
##########################################################################
|
||||
# stop_enb_rru_rcc
|
||||
##########################################################################
|
||||
def stop_enb_rru_rcc(self):
|
||||
log("INFO: ALU test: stop RRU/RCC softmodem")
|
||||
self.task_rru_enb.sendnow("%c" % 3)
|
||||
ret = self.task_rru_enb.wait()
|
||||
if ret != 0:
|
||||
log("ERROR: ALU test: RRU softmodem failed")
|
||||
#not sure if we have to quit here or not
|
||||
#os._exit(1)
|
||||
self.task_rcc_enb.sendnow("%c" % 3)
|
||||
ret = self.task_rcc_enb.wait()
|
||||
if ret != 0:
|
||||
log("ERROR: ALU test: RCC softmodem failed")
|
||||
#not sure if we have to quit here or not
|
||||
#os._exit(1)
|
||||
|
||||
##########################################################################
|
||||
# start_ue
|
||||
##########################################################################
|
||||
def start_ue(self, ue):
|
||||
log("INFO: ALU test: start " + ue + " UE")
|
||||
self.task_ue = Task("actions/start_" + ue + ".bash",
|
||||
"start_" + ue,
|
||||
self.ue_machine,
|
||||
self.oai_user,
|
||||
self.oai_password,
|
||||
self.env,
|
||||
self.logdir + "/start_" + ue + "." + self.ue_machine,
|
||||
event=self.event)
|
||||
self.task_ue.waitlog("local IP address", event=self.event)
|
||||
self.event.wait()
|
||||
|
||||
#at this point one task has died or we have the line in the log
|
||||
if self.task_ue.waitlog_state != WAITLOG_SUCCESS:
|
||||
log("ERROR: ALU test: " + ue + " UE did not connect")
|
||||
raise TestFailed()
|
||||
|
||||
self.event.clear()
|
||||
|
||||
if ( (self.task_enb != None and not self.task_enb.alive()) or
|
||||
(self.task_rru_enb!=None and not self.task_rru_enb.alive()) or
|
||||
(self.task_rcc_enb!=None and not self.task_rcc_enb.alive()) or
|
||||
not self.task_hss.alive() or
|
||||
not self.task_ue.alive()):
|
||||
log("ERROR: ALU test: eNB, HSS or UE task died")
|
||||
raise TestFailed()
|
||||
|
||||
#get UE IP
|
||||
l = open(self.task_ue.logfile, "r").read()
|
||||
self.ue_ip = re.search("local IP address (.*)\n", l) \
|
||||
.groups()[0]
|
||||
log("INFO: ALU test: " + ue + " UE IP address: " + self.ue_ip)
|
||||
|
||||
##########################################################################
|
||||
# stop_ue
|
||||
##########################################################################
|
||||
def stop_ue(self, ue):
|
||||
log("INFO: ALU test: stop " + ue + " UE")
|
||||
self.task_ue.sendnow("%c" % 3)
|
||||
ret = self.task_ue.wait()
|
||||
if ret != 0:
|
||||
log("ERROR: ALU test: task " + ue + " UE failed")
|
||||
#not sure if we have to quit here or not
|
||||
#os._exit(1)
|
||||
|
||||
##########################################################################
|
||||
# _do_traffic (internal function, do not call out of the class)
|
||||
##########################################################################
|
||||
def _do_traffic(self, name,
|
||||
server_code, server_machine, server_ip,
|
||||
client_code, client_machine,
|
||||
waitlog,
|
||||
server_logfile, client_logfile,
|
||||
udp_bandwidth=None):
|
||||
log("INFO: ALU test: run traffic: " + name)
|
||||
|
||||
log("INFO: ALU test: launch server")
|
||||
task_traffic_server = Task("actions/" + server_code + ".bash",
|
||||
server_logfile,
|
||||
server_machine,
|
||||
self.oai_user,
|
||||
self.oai_password,
|
||||
self.env,
|
||||
self.logdir + "/" + server_logfile + "." + server_machine,
|
||||
event=self.event)
|
||||
task_traffic_server.waitlog(waitlog)
|
||||
|
||||
env = list(self.env)
|
||||
if udp_bandwidth != None:
|
||||
env.append("UDP_BANDWIDTH=" + udp_bandwidth)
|
||||
env.append("SERVER_IP=" + server_ip)
|
||||
|
||||
log("INFO: ALU test: launch client")
|
||||
task_traffic_client = Task("actions/" + client_code + ".bash",
|
||||
client_logfile,
|
||||
client_machine,
|
||||
self.oai_user,
|
||||
self.oai_password,
|
||||
env,
|
||||
self.logdir + "/" + client_logfile + "." + client_machine,
|
||||
event=self.event)
|
||||
log("INFO: ALU test: wait for client to finish (or some error)")
|
||||
|
||||
self.event.wait()
|
||||
log("DEBUG: event.wait() done")
|
||||
|
||||
if ( (self.task_enb != None and not self.task_enb.alive()) or
|
||||
(self.task_rru_enb!=None and not self.task_rru_enb.alive()) or
|
||||
(self.task_rcc_enb!=None and not self.task_rcc_enb.alive()) or
|
||||
not self.task_hss.alive() or
|
||||
not self.task_ue.alive()):
|
||||
log("ERROR: unexpected task exited, test failed, kill all")
|
||||
if task_traffic_client.alive():
|
||||
task_traffic_client.kill()
|
||||
if (self.task_enb != None and self.task_enb.alive()):
|
||||
self.task_enb.kill()
|
||||
if (self.task_rru_enb != None and self.task_rru_enb.alive()):
|
||||
self.task_rru_enb.kill()
|
||||
if (self.task_rcc_enb != None and self.task_rcc_enb.alive()):
|
||||
self.task_rcc_enb.kill()
|
||||
if self.task_ue.alive():
|
||||
self.task_ue.kill()
|
||||
|
||||
ret = task_traffic_client.wait()
|
||||
if ret != 0:
|
||||
log("ERROR: ALU test: downlink traffic failed")
|
||||
#not sure if we have to quit here or not
|
||||
#os._exit(1)
|
||||
|
||||
#stop downlink server
|
||||
#log("INFO: ALU test: stop server (kill ssh connection)")
|
||||
#task_traffic_server.kill()
|
||||
log("INFO: ALU test: stop server (ctrl+z then kill -9 %1)")
|
||||
task_traffic_server.sendnow("%ckill -9 %%1 || true\n" % 26)
|
||||
log("INFO: ALU test: wait for server to quit")
|
||||
task_traffic_server.wait()
|
||||
|
||||
self.event.clear()
|
||||
|
||||
if ( (self.task_enb != None and not self.task_enb.alive()) or
|
||||
(self.task_rru_enb!=None and not self.task_rru_enb.alive()) or
|
||||
(self.task_rcc_enb!=None and not self.task_rcc_enb.alive()) or
|
||||
not self.task_hss.alive() or
|
||||
not self.task_ue.alive()):
|
||||
log("ERROR: ALU test: eNB, HSS or UE task died")
|
||||
raise TestFailed()
|
||||
|
||||
##########################################################################
|
||||
# dl_tcp
|
||||
##########################################################################
|
||||
def dl_tcp(self, ue):
|
||||
self._do_traffic(ue + " downlink TCP",
|
||||
"server_tcp", self.ue_machine, self.ue_ip,
|
||||
"client_tcp", self.epc_machine,
|
||||
"Server listening on TCP port 5001",
|
||||
ue + "_downlink_tcp_server",
|
||||
ue + "_downlink_tcp_client")
|
||||
|
||||
##########################################################################
|
||||
# ul_tcp
|
||||
##########################################################################
|
||||
def ul_tcp(self, ue):
|
||||
self._do_traffic(ue + " uplink TCP",
|
||||
"server_tcp", self.epc_machine, "192.172.0.1",
|
||||
"client_tcp", self.ue_machine,
|
||||
"Server listening on TCP port 5001",
|
||||
ue + "_uplink_tcp_server",
|
||||
ue + "_uplink_tcp_client")
|
||||
|
||||
##########################################################################
|
||||
# dl_udp
|
||||
##########################################################################
|
||||
def dl_udp(self, ue, bandwidth):
|
||||
self._do_traffic(ue + " downlink UDP",
|
||||
"server_udp", self.ue_machine, self.ue_ip,
|
||||
"client_udp", self.epc_machine,
|
||||
"Server listening on UDP port 5001",
|
||||
ue + "_downlink_udp_server",
|
||||
ue + "_downlink_udp_client",
|
||||
udp_bandwidth=bandwidth)
|
||||
|
||||
##########################################################################
|
||||
# ul_udp
|
||||
##########################################################################
|
||||
def ul_udp(self, ue, bandwidth):
|
||||
self._do_traffic(ue + " uplink UDP",
|
||||
"server_udp", self.epc_machine, "192.172.0.1",
|
||||
"client_udp", self.ue_machine,
|
||||
"Server listening on UDP port 5001",
|
||||
ue + "_uplink_udp_server",
|
||||
ue + "_uplink_udp_client",
|
||||
udp_bandwidth=bandwidth)
|
||||
|
||||
##############################################################################
|
||||
# run_b210_alu
|
||||
##############################################################################
|
||||
|
||||
def run_b210_alu(tests, openair_dir, oai_user, oai_password, env):
|
||||
|
||||
#compile eNB (two cases: one for FDD and one for TDD)
|
||||
|
||||
if do_tests(tests['b210']['alu']['fdd']):
|
||||
alu = alu_test(epc='amerique', enb='hutch', ue='stevens',
|
||||
openair=openair_dir,
|
||||
user=oai_user, password=oai_password,
|
||||
log_subdir='enb_tests/b210_alu/compile_enb_fdd',
|
||||
env=env)
|
||||
|
||||
try:
|
||||
alu.compile_enb("--eNB -w USRP -x -c --disable-cpu-affinity")
|
||||
except BaseException, e:
|
||||
log("ERROR: ALU test failed: eNB compilation failed: " + str(e))
|
||||
return
|
||||
|
||||
if do_tests(tests['b210']['alu']['tdd']):
|
||||
alu = alu_test(epc='amerique', enb='calisson', ue='mozart',
|
||||
openair=openair_dir,
|
||||
user=oai_user, password=oai_password,
|
||||
log_subdir='enb_tests/b210_alu/compile_enb_tdd',
|
||||
env=env)
|
||||
|
||||
try:
|
||||
alu.compile_enb("--eNB -w USRP -x -c --disable-cpu-affinity")
|
||||
except BaseException, e:
|
||||
log("ERROR: ALU test failed: eNB compilation failed: " + str(e))
|
||||
return
|
||||
|
||||
#compile RRU/RCC eNB
|
||||
|
||||
if do_tests(tests['remote b210']['alu']['fdd']):
|
||||
#RRU
|
||||
alu = alu_test(epc='amerique', ue='stevens',
|
||||
openair=openair_dir,
|
||||
user=oai_user, password=oai_password,
|
||||
log_subdir='enb_tests/remote_b210_alu/compile_enb_rru',
|
||||
env=env,
|
||||
#hack: set 'enb' to reuse 'compile_enb'
|
||||
enb = 'superserver',
|
||||
enb_rru = 'superserver', enb_rcc = 'starsky')
|
||||
|
||||
try:
|
||||
alu.compile_enb("--eNB -x -c -w USRP -t ETHERNET",
|
||||
log_suffix='rru.')
|
||||
except BaseException, e:
|
||||
log("ERROR: ALU test failed: RRU eNB compilation failed: "+str(e))
|
||||
return
|
||||
|
||||
#RCC
|
||||
alu = alu_test(epc='amerique', ue='stevens',
|
||||
openair=openair_dir,
|
||||
user=oai_user, password=oai_password,
|
||||
log_subdir='enb_tests/remote_b210_alu/compile_enb_rcc',
|
||||
env=env,
|
||||
#hack: set 'enb' to reuse 'compile_enb'
|
||||
enb = 'starsky',
|
||||
enb_rru = 'superserver', enb_rcc = 'starsky')
|
||||
|
||||
try:
|
||||
alu.compile_enb("--eNB -w None -t ETHERNET",
|
||||
log_suffix='rcc.')
|
||||
except BaseException, e:
|
||||
log("ERROR: ALU test failed: RCC eNB compilation failed: "+str(e))
|
||||
return
|
||||
|
||||
|
||||
#run tests
|
||||
|
||||
udp_dl_bandwidth = { "5" : "15M",
|
||||
"10" : "30M",
|
||||
"20" : "60M" }
|
||||
|
||||
udp_ul_bandwidth = { "5" : "7M",
|
||||
"10" : "15M",
|
||||
"20" : "15M" }
|
||||
|
||||
ue_machine = { "fdd" : "stevens",
|
||||
"tdd" : "mozart" }
|
||||
|
||||
enb_machine = { "fdd" : "hutch",
|
||||
"tdd" : "calisson" }
|
||||
|
||||
band = { "fdd" : "7",
|
||||
"tdd" : "38" }
|
||||
|
||||
for mode in ('fdd', 'tdd'):
|
||||
for bw in ('5', '10', '20'):
|
||||
if do_tests(tests['b210']['alu'][mode][bw]):
|
||||
log("INFO: ALU test: run tests for bandwidth " + bw + " MHz")
|
||||
ctest = tests['b210']['alu'][mode][bw]
|
||||
alu = alu_test(epc='amerique', enb=enb_machine[mode], ue=ue_machine[mode],
|
||||
openair=openair_dir,
|
||||
user=oai_user, password=oai_password,
|
||||
log_subdir='enb_tests/b210_alu/' + mode + "/" + bw,
|
||||
env=env)
|
||||
try:
|
||||
alu.start_epc()
|
||||
alu.start_enb("enb.band" + band[mode] + ".tm1.usrpb210." + mode + "." + bw + "MHz.conf")
|
||||
for ue in ('bandrich', '3276'):
|
||||
if ue in ctest and do_tests(ctest[ue]):
|
||||
alu.start_ue(ue)
|
||||
if do_tests(ctest[ue]['tcp']['dl']): alu.dl_tcp(ue)
|
||||
if do_tests(ctest[ue]['tcp']['ul']): alu.ul_tcp(ue)
|
||||
if do_tests(ctest[ue]['udp']['dl']): alu.dl_udp(ue, udp_dl_bandwidth[bw])
|
||||
if do_tests(ctest[ue]['udp']['ul']): alu.ul_udp(ue, udp_ul_bandwidth[bw])
|
||||
alu.stop_ue(ue)
|
||||
alu.stop_enb()
|
||||
alu.stop_epc()
|
||||
except BaseException, e:
|
||||
log("ERROR: ALU test failed: " + str(e))
|
||||
alu.finish()
|
||||
if do_tests(tests['remote b210']['alu'][mode][bw]):
|
||||
log("INFO: ALU test: run RRU/RCC tests for bandwidth " + bw + " MHz")
|
||||
ctest = tests['remote b210']['alu'][mode][bw]
|
||||
alu = alu_test(epc='amerique', enb='', ue=ue_machine[mode],
|
||||
openair=openair_dir,
|
||||
user=oai_user, password=oai_password,
|
||||
log_subdir='enb_tests/remote_b210_alu/' + bw,
|
||||
env=env,
|
||||
enb_rru='superserver', enb_rcc='starsky')
|
||||
try:
|
||||
alu.start_epc()
|
||||
alu.start_enb_rru_rcc("rru.band7.tm1.if4p5." + bw + "MHz.udp.usrpb210.conf",
|
||||
"rcc.band7.tm1.if4p5." + bw + "MHz.conf")
|
||||
for ue in ('bandrich', '3276'):
|
||||
if ue in ctest and do_tests(ctest[ue]):
|
||||
alu.start_ue(ue)
|
||||
if do_tests(ctest[ue]['tcp']['dl']): alu.dl_tcp(ue)
|
||||
if do_tests(ctest[ue]['tcp']['ul']): alu.ul_tcp(ue)
|
||||
if do_tests(ctest[ue]['udp']['dl']): alu.dl_udp(ue, udp_dl_bandwidth[bw])
|
||||
if do_tests(ctest[ue]['udp']['ul']): alu.ul_udp(ue, udp_ul_bandwidth[bw])
|
||||
alu.stop_ue(ue)
|
||||
alu.stop_enb_rru_rcc()
|
||||
alu.stop_epc()
|
||||
except BaseException, e:
|
||||
log("ERROR: ALU test failed: " + str(e))
|
||||
alu.finish()
|
||||
@@ -17,7 +17,7 @@ eNBs =
|
||||
|
||||
mobile_country_code = "208";
|
||||
|
||||
mobile_network_code = "95";
|
||||
mobile_network_code = "92";
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
@@ -26,15 +26,15 @@ eNBs =
|
||||
node_function = "eNodeB_3GPP";
|
||||
node_timing = "synch_to_ext_device";
|
||||
node_synch_ref = 0;
|
||||
frame_type = "FDD";
|
||||
frame_type = "TDD";
|
||||
tdd_config = 3;
|
||||
tdd_config_s = 0;
|
||||
prefix_type = "NORMAL";
|
||||
eutra_band = 7;
|
||||
downlink_frequency = 2660000000L;
|
||||
uplink_frequency_offset = -120000000;
|
||||
eutra_band = 38;
|
||||
downlink_frequency = 2580000000L;
|
||||
uplink_frequency_offset = 0;
|
||||
Nid_cell = 0;
|
||||
N_RB_DL = 25;
|
||||
N_RB_DL = 50;
|
||||
Nid_cell_mbsfn = 0;
|
||||
nb_antenna_ports = 1;
|
||||
nb_antennas_tx = 1;
|
||||
@@ -47,7 +47,7 @@ eNBs =
|
||||
prach_zero_correlation = 1;
|
||||
prach_freq_offset = 2;
|
||||
pucch_delta_shift = 1;
|
||||
pucch_nRB_CQI = 1;
|
||||
pucch_nRB_CQI = 0;
|
||||
pucch_nCS_AN = 0;
|
||||
pucch_n1_AN = 32;
|
||||
pdsch_referenceSignalPower = -24;
|
||||
@@ -68,9 +68,9 @@ eNBs =
|
||||
srs_ackNackST =;
|
||||
srs_MaxUpPts =;*/
|
||||
|
||||
pusch_p0_Nominal = -96;
|
||||
pusch_p0_Nominal = -90;
|
||||
pusch_alpha = "AL1";
|
||||
pucch_p0_Nominal = -103;
|
||||
pucch_p0_Nominal = -96;
|
||||
msg3_delta_Preamble = 6;
|
||||
pucch_deltaF_Format1 = "deltaF2";
|
||||
pucch_deltaF_Format1b = "deltaF3";
|
||||
@@ -136,8 +136,9 @@ eNBs =
|
||||
};
|
||||
|
||||
////////// MME parameters:
|
||||
mme_ip_address = ( { ipv4 = "192.168.100.101";
|
||||
ipv6 = "192:168:100::17";
|
||||
|
||||
mme_ip_address = ( { ipv4 = "192.168.12.26";
|
||||
ipv6 = "192:168:30::17";
|
||||
active = "yes";
|
||||
preference = "ipv4";
|
||||
}
|
||||
@@ -145,22 +146,14 @@ eNBs =
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.100.106/24";
|
||||
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.100.106/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eth6";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.82/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "eth6";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.82/24";
|
||||
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
|
||||
NETWORK_CONTROLLER :
|
||||
{
|
||||
FLEXRAN_AGENT_INTERFACE_NAME = "eth1";
|
||||
FLEXRAN_AGENT_IPV4_ADDRESS = "10.0.2.5/30";
|
||||
FLEXRAN_AGENT_PORT = 2210;
|
||||
FLEXRAN_AGENT_CACHE = "/mnt/oai_agent_cache";
|
||||
};
|
||||
|
||||
log_config :
|
||||
{
|
||||
global_log_level ="info";
|
||||
@@ -16,6 +16,7 @@ eNBs =
|
||||
tracking_area_code = "1";
|
||||
|
||||
mobile_country_code = "208";
|
||||
|
||||
mobile_network_code = "92";
|
||||
|
||||
////////// Physical parameters:
|
||||
@@ -23,33 +24,33 @@ eNBs =
|
||||
component_carriers = (
|
||||
{
|
||||
node_function = "eNodeB_3GPP";
|
||||
node_timing = "synch_to_ext_device";
|
||||
node_synch_ref = 0;
|
||||
frame_type = "FDD";
|
||||
node_timing = "synch_to_ext_device";
|
||||
node_synch_ref = 0;
|
||||
frame_type = "TDD";
|
||||
tdd_config = 3;
|
||||
tdd_config_s = 0;
|
||||
prefix_type = "NORMAL";
|
||||
eutra_band = 7;
|
||||
downlink_frequency = 2660000000L;
|
||||
uplink_frequency_offset = -120000000;
|
||||
eutra_band = 38;
|
||||
downlink_frequency = 2580000000L;
|
||||
uplink_frequency_offset = 0;
|
||||
Nid_cell = 0;
|
||||
N_RB_DL = 100;
|
||||
Nid_cell_mbsfn = 0;
|
||||
nb_antenna_ports = 1;
|
||||
nb_antennas_tx = 1;
|
||||
nb_antennas_rx = 1;
|
||||
tx_gain = 32;
|
||||
rx_gain = 116;
|
||||
tx_gain = 90;
|
||||
rx_gain = 125;
|
||||
prach_root = 0;
|
||||
prach_config_index = 0;
|
||||
prach_high_speed = "DISABLE";
|
||||
prach_zero_correlation = 1;
|
||||
prach_freq_offset = 2;
|
||||
pucch_delta_shift = 1;
|
||||
pucch_nRB_CQI = 1;
|
||||
pucch_nRB_CQI = 0;
|
||||
pucch_nCS_AN = 0;
|
||||
pucch_n1_AN = 32;
|
||||
pdsch_referenceSignalPower = -23;
|
||||
pdsch_referenceSignalPower = -24;
|
||||
pdsch_p_b = 0;
|
||||
pusch_n_SB = 1;
|
||||
pusch_enable64QAM = "DISABLE";
|
||||
@@ -62,14 +63,14 @@ eNBs =
|
||||
phich_duration = "NORMAL";
|
||||
phich_resource = "ONESIXTH";
|
||||
srs_enable = "DISABLE";
|
||||
/* srs_BandwidthConfig =;
|
||||
/* srs_BandwidthConfig =;
|
||||
srs_SubframeConfig =;
|
||||
srs_ackNackST =;
|
||||
srs_MaxUpPts =;*/
|
||||
|
||||
pusch_p0_Nominal = -90;
|
||||
pusch_alpha = "AL1";
|
||||
pucch_p0_Nominal = -108;
|
||||
pucch_p0_Nominal = -96;
|
||||
msg3_delta_Preamble = 6;
|
||||
pucch_deltaF_Format1 = "deltaF2";
|
||||
pucch_deltaF_Format1b = "deltaF3";
|
||||
@@ -79,13 +80,13 @@ eNBs =
|
||||
|
||||
rach_numberOfRA_Preambles = 64;
|
||||
rach_preamblesGroupAConfig = "DISABLE";
|
||||
/*
|
||||
/*
|
||||
rach_sizeOfRA_PreamblesGroupA = ;
|
||||
rach_messageSizeGroupA = ;
|
||||
rach_messagePowerOffsetGroupB = ;
|
||||
*/
|
||||
*/
|
||||
rach_powerRampingStep = 4;
|
||||
rach_preambleInitialReceivedTargetPower = -108;
|
||||
rach_preambleInitialReceivedTargetPower = -104;
|
||||
rach_preambleTransMax = 10;
|
||||
rach_raResponseWindowSize = 10;
|
||||
rach_macContentionResolutionTimer = 48;
|
||||
@@ -100,11 +101,11 @@ eNBs =
|
||||
ue_TimersAndConstants_t311 = 10000;
|
||||
ue_TimersAndConstants_n310 = 20;
|
||||
ue_TimersAndConstants_n311 = 1;
|
||||
ue_TransmissionMode = 1;
|
||||
|
||||
ue_TransmissionMode = 1;
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
srb1_parameters :
|
||||
{
|
||||
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
|
||||
@@ -135,6 +136,7 @@ eNBs =
|
||||
};
|
||||
|
||||
////////// MME parameters:
|
||||
|
||||
mme_ip_address = ( { ipv4 = "192.168.12.26";
|
||||
ipv6 = "192:168:30::17";
|
||||
active = "yes";
|
||||
@@ -144,17 +146,17 @@ eNBs =
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24";
|
||||
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eth6";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.82/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "eth6";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.82/24";
|
||||
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
|
||||
log_config :
|
||||
{
|
||||
global_log_level ="debug";
|
||||
global_log_level ="info";
|
||||
global_log_verbosity ="medium";
|
||||
hw_log_level ="info";
|
||||
hw_log_verbosity ="medium";
|
||||
@@ -169,6 +171,5 @@ eNBs =
|
||||
rrc_log_level ="info";
|
||||
rrc_log_verbosity ="medium";
|
||||
};
|
||||
|
||||
}
|
||||
);
|
||||
@@ -17,7 +17,7 @@ eNBs =
|
||||
|
||||
mobile_country_code = "208";
|
||||
|
||||
mobile_network_code = "94";
|
||||
mobile_network_code = "92";
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
@@ -26,19 +26,19 @@ eNBs =
|
||||
node_function = "eNodeB_3GPP";
|
||||
node_timing = "synch_to_ext_device";
|
||||
node_synch_ref = 0;
|
||||
frame_type = "FDD";
|
||||
frame_type = "TDD";
|
||||
tdd_config = 3;
|
||||
tdd_config_s = 0;
|
||||
prefix_type = "NORMAL";
|
||||
eutra_band = 7;
|
||||
downlink_frequency = 2660000000L;
|
||||
uplink_frequency_offset = -120000000;
|
||||
eutra_band = 38;
|
||||
downlink_frequency = 2580000000L;
|
||||
uplink_frequency_offset = 0;
|
||||
Nid_cell = 0;
|
||||
N_RB_DL = 25;
|
||||
Nid_cell_mbsfn = 0;
|
||||
nb_antenna_ports = 2;
|
||||
nb_antennas_tx = 2;
|
||||
nb_antennas_rx = 2;
|
||||
nb_antenna_ports = 1;
|
||||
nb_antennas_tx = 1;
|
||||
nb_antennas_rx = 1;
|
||||
tx_gain = 90;
|
||||
rx_gain = 125;
|
||||
prach_root = 0;
|
||||
@@ -47,11 +47,11 @@ eNBs =
|
||||
prach_zero_correlation = 1;
|
||||
prach_freq_offset = 2;
|
||||
pucch_delta_shift = 1;
|
||||
pucch_nRB_CQI = 1;
|
||||
pucch_nRB_CQI = 0;
|
||||
pucch_nCS_AN = 0;
|
||||
pucch_n1_AN = 32;
|
||||
pdsch_referenceSignalPower = -24;
|
||||
pdsch_p_b = 1;
|
||||
pdsch_p_b = 0;
|
||||
pusch_n_SB = 1;
|
||||
pusch_enable64QAM = "DISABLE";
|
||||
pusch_hoppingMode = "interSubFrame";
|
||||
@@ -102,7 +102,7 @@ eNBs =
|
||||
ue_TimersAndConstants_n310 = 20;
|
||||
ue_TimersAndConstants_n311 = 1;
|
||||
|
||||
ue_TransmissionMode = 2;
|
||||
ue_TransmissionMode = 1;
|
||||
}
|
||||
);
|
||||
|
||||
@@ -136,7 +136,8 @@ eNBs =
|
||||
};
|
||||
|
||||
////////// MME parameters:
|
||||
mme_ip_address = ( { ipv4 = "192.168.12.70";
|
||||
|
||||
mme_ip_address = ( { ipv4 = "192.168.12.26";
|
||||
ipv6 = "192:168:30::17";
|
||||
active = "yes";
|
||||
preference = "ipv4";
|
||||
@@ -146,10 +147,10 @@ eNBs =
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eth1";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.147/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "eth1";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.147/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eth6";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.82/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "eth6";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.82/24";
|
||||
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
|
||||
@@ -159,7 +160,7 @@ eNBs =
|
||||
global_log_verbosity ="medium";
|
||||
hw_log_level ="info";
|
||||
hw_log_verbosity ="medium";
|
||||
phy_log_level ="debug";
|
||||
phy_log_level ="info";
|
||||
phy_log_verbosity ="medium";
|
||||
mac_log_level ="info";
|
||||
mac_log_verbosity ="high";
|
||||
@@ -16,6 +16,7 @@ eNBs =
|
||||
tracking_area_code = "1";
|
||||
|
||||
mobile_country_code = "208";
|
||||
|
||||
mobile_network_code = "92";
|
||||
|
||||
////////// Physical parameters:
|
||||
@@ -23,8 +24,8 @@ eNBs =
|
||||
component_carriers = (
|
||||
{
|
||||
node_function = "eNodeB_3GPP";
|
||||
node_timing = "synch_to_ext_device";
|
||||
node_synch_ref = 0;
|
||||
node_timing = "synch_to_ext_device";
|
||||
node_synch_ref = 0;
|
||||
frame_type = "FDD";
|
||||
tdd_config = 3;
|
||||
tdd_config_s = 0;
|
||||
@@ -33,23 +34,23 @@ eNBs =
|
||||
downlink_frequency = 2660000000L;
|
||||
uplink_frequency_offset = -120000000;
|
||||
Nid_cell = 0;
|
||||
N_RB_DL = 25;
|
||||
N_RB_DL = 50;
|
||||
Nid_cell_mbsfn = 0;
|
||||
nb_antenna_ports = 1;
|
||||
nb_antennas_tx = 1;
|
||||
nb_antennas_rx = 1;
|
||||
tx_gain = 32;
|
||||
rx_gain = 116;
|
||||
tx_gain = 90;
|
||||
rx_gain = 125;
|
||||
prach_root = 0;
|
||||
prach_config_index = 0;
|
||||
prach_high_speed = "DISABLE";
|
||||
prach_zero_correlation = 1;
|
||||
prach_freq_offset = 2;
|
||||
pucch_delta_shift = 1;
|
||||
pucch_nRB_CQI = 1;
|
||||
pucch_nRB_CQI = 0;
|
||||
pucch_nCS_AN = 0;
|
||||
pucch_n1_AN = 32;
|
||||
pdsch_referenceSignalPower = -16;
|
||||
pdsch_referenceSignalPower = -24;
|
||||
pdsch_p_b = 0;
|
||||
pusch_n_SB = 1;
|
||||
pusch_enable64QAM = "DISABLE";
|
||||
@@ -62,14 +63,14 @@ eNBs =
|
||||
phich_duration = "NORMAL";
|
||||
phich_resource = "ONESIXTH";
|
||||
srs_enable = "DISABLE";
|
||||
/* srs_BandwidthConfig =;
|
||||
/* srs_BandwidthConfig =;
|
||||
srs_SubframeConfig =;
|
||||
srs_ackNackST =;
|
||||
srs_MaxUpPts =;*/
|
||||
|
||||
pusch_p0_Nominal = -90;
|
||||
pusch_p0_Nominal = -96;
|
||||
pusch_alpha = "AL1";
|
||||
pucch_p0_Nominal = -108;
|
||||
pucch_p0_Nominal = -103;
|
||||
msg3_delta_Preamble = 6;
|
||||
pucch_deltaF_Format1 = "deltaF2";
|
||||
pucch_deltaF_Format1b = "deltaF3";
|
||||
@@ -79,13 +80,13 @@ eNBs =
|
||||
|
||||
rach_numberOfRA_Preambles = 64;
|
||||
rach_preamblesGroupAConfig = "DISABLE";
|
||||
/*
|
||||
/*
|
||||
rach_sizeOfRA_PreamblesGroupA = ;
|
||||
rach_messageSizeGroupA = ;
|
||||
rach_messagePowerOffsetGroupB = ;
|
||||
*/
|
||||
*/
|
||||
rach_powerRampingStep = 4;
|
||||
rach_preambleInitialReceivedTargetPower = -108;
|
||||
rach_preambleInitialReceivedTargetPower = -104;
|
||||
rach_preambleTransMax = 10;
|
||||
rach_raResponseWindowSize = 10;
|
||||
rach_macContentionResolutionTimer = 48;
|
||||
@@ -105,7 +106,6 @@ eNBs =
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
srb1_parameters :
|
||||
{
|
||||
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
|
||||
@@ -136,6 +136,7 @@ eNBs =
|
||||
};
|
||||
|
||||
////////// MME parameters:
|
||||
|
||||
mme_ip_address = ( { ipv4 = "192.168.12.26";
|
||||
ipv6 = "192:168:30::17";
|
||||
active = "yes";
|
||||
@@ -145,17 +146,17 @@ eNBs =
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24";
|
||||
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.19/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.19/24";
|
||||
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
|
||||
log_config :
|
||||
{
|
||||
global_log_level ="debug";
|
||||
global_log_level ="info";
|
||||
global_log_verbosity ="medium";
|
||||
hw_log_level ="info";
|
||||
hw_log_verbosity ="medium";
|
||||
@@ -170,6 +171,5 @@ eNBs =
|
||||
rrc_log_level ="info";
|
||||
rrc_log_verbosity ="medium";
|
||||
};
|
||||
|
||||
}
|
||||
);
|
||||
@@ -17,7 +17,7 @@ eNBs =
|
||||
|
||||
mobile_country_code = "208";
|
||||
|
||||
mobile_network_code = "93";
|
||||
mobile_network_code = "92";
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
@@ -36,7 +36,7 @@ eNBs =
|
||||
Nid_cell = 0;
|
||||
N_RB_DL = 100;
|
||||
Nid_cell_mbsfn = 0;
|
||||
nb_antenna_ports = 1;
|
||||
nb_antenna_ports = 1;
|
||||
nb_antennas_tx = 1;
|
||||
nb_antennas_rx = 1;
|
||||
tx_gain = 90;
|
||||
@@ -47,10 +47,10 @@ eNBs =
|
||||
prach_zero_correlation = 1;
|
||||
prach_freq_offset = 2;
|
||||
pucch_delta_shift = 1;
|
||||
pucch_nRB_CQI = 1;
|
||||
pucch_nRB_CQI = 0;
|
||||
pucch_nCS_AN = 0;
|
||||
pucch_n1_AN = 32;
|
||||
pdsch_referenceSignalPower = -30;
|
||||
pdsch_referenceSignalPower = -24;
|
||||
pdsch_p_b = 0;
|
||||
pusch_n_SB = 1;
|
||||
pusch_enable64QAM = "DISABLE";
|
||||
@@ -70,7 +70,7 @@ eNBs =
|
||||
|
||||
pusch_p0_Nominal = -96;
|
||||
pusch_alpha = "AL1";
|
||||
pucch_p0_Nominal = -100;
|
||||
pucch_p0_Nominal = -103;
|
||||
msg3_delta_Preamble = 6;
|
||||
pucch_deltaF_Format1 = "deltaF2";
|
||||
pucch_deltaF_Format1b = "deltaF3";
|
||||
@@ -102,7 +102,7 @@ eNBs =
|
||||
ue_TimersAndConstants_n310 = 20;
|
||||
ue_TimersAndConstants_n311 = 1;
|
||||
|
||||
ue_TransmissionMode = 1;
|
||||
ue_TransmissionMode = 1;
|
||||
}
|
||||
);
|
||||
|
||||
@@ -136,7 +136,8 @@ eNBs =
|
||||
};
|
||||
|
||||
////////// MME parameters:
|
||||
mme_ip_address = ( { ipv4 = "127.0.0.3";
|
||||
|
||||
mme_ip_address = ( { ipv4 = "192.168.12.26";
|
||||
ipv6 = "192:168:30::17";
|
||||
active = "yes";
|
||||
preference = "ipv4";
|
||||
@@ -145,11 +146,11 @@ eNBs =
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "lo";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.2/24";
|
||||
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "lo";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.4/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.19/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.19/24";
|
||||
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
|
||||
@@ -17,7 +17,7 @@ eNBs =
|
||||
|
||||
mobile_country_code = "208";
|
||||
|
||||
mobile_network_code = "94";
|
||||
mobile_network_code = "92";
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
@@ -47,7 +47,7 @@ eNBs =
|
||||
prach_zero_correlation = 1;
|
||||
prach_freq_offset = 2;
|
||||
pucch_delta_shift = 1;
|
||||
pucch_nRB_CQI = 1;
|
||||
pucch_nRB_CQI = 0;
|
||||
pucch_nCS_AN = 0;
|
||||
pucch_n1_AN = 32;
|
||||
pdsch_referenceSignalPower = -24;
|
||||
@@ -68,9 +68,9 @@ eNBs =
|
||||
srs_ackNackST =;
|
||||
srs_MaxUpPts =;*/
|
||||
|
||||
pusch_p0_Nominal = -90;
|
||||
pusch_p0_Nominal = -96;
|
||||
pusch_alpha = "AL1";
|
||||
pucch_p0_Nominal = -96;
|
||||
pucch_p0_Nominal = -103;
|
||||
msg3_delta_Preamble = 6;
|
||||
pucch_deltaF_Format1 = "deltaF2";
|
||||
pucch_deltaF_Format1b = "deltaF3";
|
||||
@@ -137,7 +137,7 @@ eNBs =
|
||||
|
||||
////////// MME parameters:
|
||||
|
||||
mme_ip_address = ( { ipv4 = "192.168.12.70";
|
||||
mme_ip_address = ( { ipv4 = "192.168.12.26";
|
||||
ipv6 = "192:168:30::17";
|
||||
active = "yes";
|
||||
preference = "ipv4";
|
||||
@@ -147,10 +147,10 @@ eNBs =
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eth1";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.147/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "eth1";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.147/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.19/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.19/24";
|
||||
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
|
||||
@@ -17,15 +17,15 @@ eNBs =
|
||||
|
||||
mobile_country_code = "208";
|
||||
|
||||
mobile_network_code = "93";
|
||||
mobile_network_code = "92";
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
component_carriers = (
|
||||
{
|
||||
node_function = "NGFI_RRU_IF4p5";
|
||||
node_timing = "synch_to_ext_device";
|
||||
node_synch_ref = 0;
|
||||
node_function = "NGFI_RCC_IF4p5";
|
||||
node_timing = "synch_to_ext_device";
|
||||
node_synch_ref = 0;
|
||||
frame_type = "FDD";
|
||||
tdd_config = 3;
|
||||
tdd_config_s = 0;
|
||||
@@ -36,7 +36,7 @@ eNBs =
|
||||
Nid_cell = 0;
|
||||
N_RB_DL = 50;
|
||||
Nid_cell_mbsfn = 0;
|
||||
nb_antenna_ports =1 ;
|
||||
nb_antenna_ports = 1;
|
||||
nb_antennas_tx = 1;
|
||||
nb_antennas_rx = 1;
|
||||
tx_gain = 90;
|
||||
@@ -47,7 +47,7 @@ eNBs =
|
||||
prach_zero_correlation = 1;
|
||||
prach_freq_offset = 2;
|
||||
pucch_delta_shift = 1;
|
||||
pucch_nRB_CQI = 1;
|
||||
pucch_nRB_CQI = 0;
|
||||
pucch_nCS_AN = 0;
|
||||
pucch_n1_AN = 32;
|
||||
pdsch_referenceSignalPower = -29;
|
||||
@@ -68,9 +68,9 @@ eNBs =
|
||||
srs_ackNackST =;
|
||||
srs_MaxUpPts =;*/
|
||||
|
||||
pusch_p0_Nominal = -90;
|
||||
pusch_p0_Nominal = -96;
|
||||
pusch_alpha = "AL1";
|
||||
pucch_p0_Nominal = -96;
|
||||
pucch_p0_Nominal = -104;
|
||||
msg3_delta_Preamble = 6;
|
||||
pucch_deltaF_Format1 = "deltaF2";
|
||||
pucch_deltaF_Format1b = "deltaF3";
|
||||
@@ -101,8 +101,7 @@ eNBs =
|
||||
ue_TimersAndConstants_t311 = 10000;
|
||||
ue_TimersAndConstants_n310 = 20;
|
||||
ue_TimersAndConstants_n311 = 1;
|
||||
|
||||
ue_TransmissionMode = 1;
|
||||
ue_TransmissionMode = 1;
|
||||
}
|
||||
);
|
||||
|
||||
@@ -138,7 +137,7 @@ eNBs =
|
||||
|
||||
|
||||
////////// MME parameters:
|
||||
mme_ip_address = ( { ipv4 = "192.168.12.155";
|
||||
mme_ip_address = ( { ipv4 = "192.168.12.26";
|
||||
ipv6 = "192:168:30::17";
|
||||
active = "yes";
|
||||
preference = "ipv4";
|
||||
@@ -149,25 +148,26 @@ eNBs =
|
||||
{
|
||||
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.155/24";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.18/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.155/24";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.18/24";
|
||||
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
|
||||
rrh_gw_config = (
|
||||
{
|
||||
local_if_name = "eth0";
|
||||
remote_address = "90:e2:ba:c5:fc:04";
|
||||
local_address = "00:13:95:1f:a0:af";
|
||||
{
|
||||
local_if_name = "eth1";
|
||||
remote_address = "10.10.10.157";
|
||||
local_address = "10.10.10.18";
|
||||
local_port = 50000; #for raw option local port must be the same to remote
|
||||
remote_port = 50000;
|
||||
rrh_gw_active = "yes";
|
||||
tr_preference = "raw_if4p5";
|
||||
tr_preference = "udp_if4p5";
|
||||
rf_preference = "usrp_b200";
|
||||
iq_txshift = 4;
|
||||
tx_sample_advance = 80;
|
||||
tx_scheduling_advance = 9;
|
||||
tx_scheduling_advance = 9;
|
||||
if_compression = "alaw";
|
||||
}
|
||||
);
|
||||
|
||||
@@ -17,7 +17,7 @@ eNBs =
|
||||
|
||||
mobile_country_code = "208";
|
||||
|
||||
mobile_network_code = "93";
|
||||
mobile_network_code = "92";
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
@@ -36,6 +36,7 @@ eNBs =
|
||||
Nid_cell = 0;
|
||||
N_RB_DL = 100;
|
||||
Nid_cell_mbsfn = 0;
|
||||
nb_antenna_ports = 1;
|
||||
nb_antennas_tx = 1;
|
||||
nb_antennas_rx = 1;
|
||||
tx_gain = 90;
|
||||
@@ -46,7 +47,7 @@ eNBs =
|
||||
prach_zero_correlation = 1;
|
||||
prach_freq_offset = 2;
|
||||
pucch_delta_shift = 1;
|
||||
pucch_nRB_CQI = 1;
|
||||
pucch_nRB_CQI = 0;
|
||||
pucch_nCS_AN = 0;
|
||||
pucch_n1_AN = 32;
|
||||
pdsch_referenceSignalPower = -29;
|
||||
@@ -67,9 +68,9 @@ eNBs =
|
||||
srs_ackNackST =;
|
||||
srs_MaxUpPts =;*/
|
||||
|
||||
pusch_p0_Nominal = -90;
|
||||
pusch_p0_Nominal = -96;
|
||||
pusch_alpha = "AL1";
|
||||
pucch_p0_Nominal = -96;
|
||||
pucch_p0_Nominal = -104;
|
||||
msg3_delta_Preamble = 6;
|
||||
pucch_deltaF_Format1 = "deltaF2";
|
||||
pucch_deltaF_Format1b = "deltaF3";
|
||||
@@ -100,7 +101,7 @@ eNBs =
|
||||
ue_TimersAndConstants_t311 = 10000;
|
||||
ue_TimersAndConstants_n310 = 20;
|
||||
ue_TimersAndConstants_n311 = 1;
|
||||
|
||||
ue_TransmissionMode = 1;
|
||||
}
|
||||
);
|
||||
|
||||
@@ -136,7 +137,7 @@ eNBs =
|
||||
|
||||
|
||||
////////// MME parameters:
|
||||
mme_ip_address = ( { ipv4 = "127.0.0.3";
|
||||
mme_ip_address = ( { ipv4 = "192.168.12.26";
|
||||
ipv6 = "192:168:30::17";
|
||||
active = "yes";
|
||||
preference = "ipv4";
|
||||
@@ -146,26 +147,27 @@ eNBs =
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "lo";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.2/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "lo";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.4/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.18/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.18/24";
|
||||
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
|
||||
rrh_gw_config = (
|
||||
{
|
||||
local_if_name = "eth0";
|
||||
remote_address = "74:d4:35:cc:8d:15";
|
||||
local_address = "34:e6:d7:3c:ae:fc";
|
||||
{
|
||||
local_if_name = "eth1";
|
||||
remote_address = "10.10.10.157";
|
||||
local_address = "10.10.10.18";
|
||||
local_port = 50000; #for raw option local port must be the same to remote
|
||||
remote_port = 50000;
|
||||
rrh_gw_active = "yes";
|
||||
tr_preference = "raw_if4p5";
|
||||
tr_preference = "udp_if4p5";
|
||||
rf_preference = "usrp_b200";
|
||||
iq_txshift = 4;
|
||||
tx_sample_advance = 80;
|
||||
tx_scheduling_advance = 9;
|
||||
tx_scheduling_advance = 9;
|
||||
if_compression = "alaw";
|
||||
}
|
||||
);
|
||||
|
||||
@@ -188,4 +190,3 @@ eNBs =
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
@@ -17,7 +17,7 @@ eNBs =
|
||||
|
||||
mobile_country_code = "208";
|
||||
|
||||
mobile_network_code = "93";
|
||||
mobile_network_code = "92";
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
@@ -36,6 +36,7 @@ eNBs =
|
||||
Nid_cell = 0;
|
||||
N_RB_DL = 25;
|
||||
Nid_cell_mbsfn = 0;
|
||||
nb_antenna_ports = 1;
|
||||
nb_antennas_tx = 1;
|
||||
nb_antennas_rx = 1;
|
||||
tx_gain = 90;
|
||||
@@ -46,7 +47,7 @@ eNBs =
|
||||
prach_zero_correlation = 1;
|
||||
prach_freq_offset = 2;
|
||||
pucch_delta_shift = 1;
|
||||
pucch_nRB_CQI = 1;
|
||||
pucch_nRB_CQI = 0;
|
||||
pucch_nCS_AN = 0;
|
||||
pucch_n1_AN = 32;
|
||||
pdsch_referenceSignalPower = -29;
|
||||
@@ -67,9 +68,9 @@ eNBs =
|
||||
srs_ackNackST =;
|
||||
srs_MaxUpPts =;*/
|
||||
|
||||
pusch_p0_Nominal = -90;
|
||||
pusch_p0_Nominal = -96;
|
||||
pusch_alpha = "AL1";
|
||||
pucch_p0_Nominal = -96;
|
||||
pucch_p0_Nominal = -104;
|
||||
msg3_delta_Preamble = 6;
|
||||
pucch_deltaF_Format1 = "deltaF2";
|
||||
pucch_deltaF_Format1b = "deltaF3";
|
||||
@@ -100,7 +101,7 @@ eNBs =
|
||||
ue_TimersAndConstants_t311 = 10000;
|
||||
ue_TimersAndConstants_n310 = 20;
|
||||
ue_TimersAndConstants_n311 = 1;
|
||||
|
||||
ue_TransmissionMode = 1;
|
||||
}
|
||||
);
|
||||
|
||||
@@ -136,7 +137,7 @@ eNBs =
|
||||
|
||||
|
||||
////////// MME parameters:
|
||||
mme_ip_address = ( { ipv4 = "127.0.0.3";
|
||||
mme_ip_address = ( { ipv4 = "192.168.12.26";
|
||||
ipv6 = "192:168:30::17";
|
||||
active = "yes";
|
||||
preference = "ipv4";
|
||||
@@ -146,26 +147,27 @@ eNBs =
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "lo";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.2/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "lo";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.4/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.18/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.18/24";
|
||||
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
|
||||
rrh_gw_config = (
|
||||
{
|
||||
local_if_name = "eth0";
|
||||
remote_address = "74:d4:35:cc:8d:15";
|
||||
local_address = "34:e6:d7:3c:ae:fc";
|
||||
{
|
||||
local_if_name = "eth1";
|
||||
remote_address = "10.10.10.157";
|
||||
local_address = "10.10.10.18";
|
||||
local_port = 50000; #for raw option local port must be the same to remote
|
||||
remote_port = 50000;
|
||||
rrh_gw_active = "yes";
|
||||
tr_preference = "raw_if4p5";
|
||||
tr_preference = "udp_if4p5";
|
||||
rf_preference = "usrp_b200";
|
||||
iq_txshift = 4;
|
||||
tx_sample_advance = 80;
|
||||
tx_scheduling_advance = 9;
|
||||
tx_scheduling_advance = 9;
|
||||
if_compression = "alaw";
|
||||
}
|
||||
);
|
||||
|
||||
@@ -17,7 +17,7 @@ eNBs =
|
||||
|
||||
mobile_country_code = "208";
|
||||
|
||||
mobile_network_code = "93";
|
||||
mobile_network_code = "92";
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
@@ -34,11 +34,11 @@ eNBs =
|
||||
downlink_frequency = 2660000000L;
|
||||
uplink_frequency_offset = -120000000;
|
||||
Nid_cell = 0;
|
||||
N_RB_DL = 25;
|
||||
N_RB_DL = 50;
|
||||
Nid_cell_mbsfn = 0;
|
||||
nb_antenna_ports = 1;
|
||||
nb_antennas_tx = 1;
|
||||
nb_antennas_rx = 1;
|
||||
nb_antenna_ports = 1;
|
||||
tx_gain = 90;
|
||||
rx_gain = 125;
|
||||
prach_root = 0;
|
||||
@@ -47,7 +47,7 @@ eNBs =
|
||||
prach_zero_correlation = 1;
|
||||
prach_freq_offset = 2;
|
||||
pucch_delta_shift = 1;
|
||||
pucch_nRB_CQI = 1;
|
||||
pucch_nRB_CQI = 0;
|
||||
pucch_nCS_AN = 0;
|
||||
pucch_n1_AN = 32;
|
||||
pdsch_referenceSignalPower = -29;
|
||||
@@ -68,9 +68,9 @@ eNBs =
|
||||
srs_ackNackST =;
|
||||
srs_MaxUpPts =;*/
|
||||
|
||||
pusch_p0_Nominal = -90;
|
||||
pusch_p0_Nominal = -96;
|
||||
pusch_alpha = "AL1";
|
||||
pucch_p0_Nominal = -96;
|
||||
pucch_p0_Nominal = -104;
|
||||
msg3_delta_Preamble = 6;
|
||||
pucch_deltaF_Format1 = "deltaF2";
|
||||
pucch_deltaF_Format1b = "deltaF3";
|
||||
@@ -86,7 +86,7 @@ eNBs =
|
||||
rach_messagePowerOffsetGroupB = ;
|
||||
*/
|
||||
rach_powerRampingStep = 4;
|
||||
rach_preambleInitialReceivedTargetPower = -108;
|
||||
rach_preambleInitialReceivedTargetPower = -104;
|
||||
rach_preambleTransMax = 10;
|
||||
rach_raResponseWindowSize = 10;
|
||||
rach_macContentionResolutionTimer = 48;
|
||||
@@ -101,7 +101,9 @@ eNBs =
|
||||
ue_TimersAndConstants_t311 = 10000;
|
||||
ue_TimersAndConstants_n310 = 20;
|
||||
ue_TimersAndConstants_n311 = 1;
|
||||
ue_TransmissionMode = 1;
|
||||
|
||||
ue_TransmissionMode = 1;
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
@@ -156,17 +158,18 @@ eNBs =
|
||||
|
||||
rrh_gw_config = (
|
||||
{
|
||||
local_if_name = "eth0";
|
||||
remote_address = "34:e6:d7:3c:ae:fc";
|
||||
local_address = "74:d4:35:cc:8d:15";
|
||||
local_if_name = "eth3";
|
||||
remote_address = "10.10.10.18";
|
||||
local_address = "10.10.10.157";
|
||||
local_port = 50000; #for raw option local port must be the same to remote
|
||||
remote_port = 50000;
|
||||
rrh_gw_active = "yes";
|
||||
tr_preference = "raw_if4p5";
|
||||
tr_preference = "udp_if4p5";
|
||||
rf_preference = "usrp_b200";
|
||||
iq_txshift = 4;
|
||||
tx_sample_advance = 80;
|
||||
tx_scheduling_advance = 9;
|
||||
if_compression = "alaw";
|
||||
}
|
||||
);
|
||||
|
||||
@@ -17,7 +17,7 @@ eNBs =
|
||||
|
||||
mobile_country_code = "208";
|
||||
|
||||
mobile_network_code = "93";
|
||||
mobile_network_code = "92";
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
@@ -36,6 +36,7 @@ eNBs =
|
||||
Nid_cell = 0;
|
||||
N_RB_DL = 100;
|
||||
Nid_cell_mbsfn = 0;
|
||||
nb_antenna_ports = 1;
|
||||
nb_antennas_tx = 1;
|
||||
nb_antennas_rx = 1;
|
||||
tx_gain = 90;
|
||||
@@ -46,7 +47,7 @@ eNBs =
|
||||
prach_zero_correlation = 1;
|
||||
prach_freq_offset = 2;
|
||||
pucch_delta_shift = 1;
|
||||
pucch_nRB_CQI = 1;
|
||||
pucch_nRB_CQI = 0;
|
||||
pucch_nCS_AN = 0;
|
||||
pucch_n1_AN = 32;
|
||||
pdsch_referenceSignalPower = -29;
|
||||
@@ -67,9 +68,9 @@ eNBs =
|
||||
srs_ackNackST =;
|
||||
srs_MaxUpPts =;*/
|
||||
|
||||
pusch_p0_Nominal = -90;
|
||||
pusch_p0_Nominal = -96;
|
||||
pusch_alpha = "AL1";
|
||||
pucch_p0_Nominal = -96;
|
||||
pucch_p0_Nominal = -104;
|
||||
msg3_delta_Preamble = 6;
|
||||
pucch_deltaF_Format1 = "deltaF2";
|
||||
pucch_deltaF_Format1b = "deltaF3";
|
||||
@@ -85,7 +86,7 @@ eNBs =
|
||||
rach_messagePowerOffsetGroupB = ;
|
||||
*/
|
||||
rach_powerRampingStep = 4;
|
||||
rach_preambleInitialReceivedTargetPower = -108;
|
||||
rach_preambleInitialReceivedTargetPower = -104;
|
||||
rach_preambleTransMax = 10;
|
||||
rach_raResponseWindowSize = 10;
|
||||
rach_macContentionResolutionTimer = 48;
|
||||
@@ -101,6 +102,8 @@ eNBs =
|
||||
ue_TimersAndConstants_n310 = 20;
|
||||
ue_TimersAndConstants_n311 = 1;
|
||||
|
||||
ue_TransmissionMode = 1;
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
@@ -155,17 +158,18 @@ eNBs =
|
||||
|
||||
rrh_gw_config = (
|
||||
{
|
||||
local_if_name = "eth0";
|
||||
remote_address = "34:e6:d7:3c:ae:fc";
|
||||
local_address = "74:d4:35:cc:8d:15";
|
||||
local_if_name = "eth3";
|
||||
remote_address = "10.10.10.18";
|
||||
local_address = "10.10.10.157";
|
||||
local_port = 50000; #for raw option local port must be the same to remote
|
||||
remote_port = 50000;
|
||||
rrh_gw_active = "yes";
|
||||
tr_preference = "raw_if4p5";
|
||||
tr_preference = "udp_if4p5";
|
||||
rf_preference = "usrp_b200";
|
||||
iq_txshift = 4;
|
||||
tx_sample_advance = 80;
|
||||
tx_scheduling_advance = 9;
|
||||
if_compression = "alaw";
|
||||
}
|
||||
);
|
||||
|
||||
@@ -36,9 +36,9 @@ eNBs =
|
||||
Nid_cell = 0;
|
||||
N_RB_DL = 25;
|
||||
Nid_cell_mbsfn = 0;
|
||||
nb_antenna_ports = 1;
|
||||
nb_antennas_tx = 1;
|
||||
nb_antennas_rx = 1;
|
||||
nb_antenna_ports = 1;
|
||||
tx_gain = 90;
|
||||
rx_gain = 125;
|
||||
prach_root = 0;
|
||||
@@ -47,7 +47,7 @@ eNBs =
|
||||
prach_zero_correlation = 1;
|
||||
prach_freq_offset = 2;
|
||||
pucch_delta_shift = 1;
|
||||
pucch_nRB_CQI = 1;
|
||||
pucch_nRB_CQI = 0;
|
||||
pucch_nCS_AN = 0;
|
||||
pucch_n1_AN = 32;
|
||||
pdsch_referenceSignalPower = -29;
|
||||
@@ -68,9 +68,9 @@ eNBs =
|
||||
srs_ackNackST =;
|
||||
srs_MaxUpPts =;*/
|
||||
|
||||
pusch_p0_Nominal = -90;
|
||||
pusch_p0_Nominal = -96;
|
||||
pusch_alpha = "AL1";
|
||||
pucch_p0_Nominal = -96;
|
||||
pucch_p0_Nominal = -104;
|
||||
msg3_delta_Preamble = 6;
|
||||
pucch_deltaF_Format1 = "deltaF2";
|
||||
pucch_deltaF_Format1b = "deltaF3";
|
||||
@@ -86,7 +86,7 @@ eNBs =
|
||||
rach_messagePowerOffsetGroupB = ;
|
||||
*/
|
||||
rach_powerRampingStep = 4;
|
||||
rach_preambleInitialReceivedTargetPower = -108;
|
||||
rach_preambleInitialReceivedTargetPower = -104;
|
||||
rach_preambleTransMax = 10;
|
||||
rach_raResponseWindowSize = 10;
|
||||
rach_macContentionResolutionTimer = 48;
|
||||
@@ -101,7 +101,9 @@ eNBs =
|
||||
ue_TimersAndConstants_t311 = 10000;
|
||||
ue_TimersAndConstants_n310 = 20;
|
||||
ue_TimersAndConstants_n311 = 1;
|
||||
ue_TransmissionMode = 1;
|
||||
|
||||
ue_TransmissionMode = 1;
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
@@ -156,17 +158,18 @@ eNBs =
|
||||
|
||||
rrh_gw_config = (
|
||||
{
|
||||
local_if_name = "eth0";
|
||||
remote_address = "90:e2:ba:c5:fc:04";
|
||||
local_address = "00:13:95:1f:a0:af";
|
||||
local_if_name = "eth3";
|
||||
remote_address = "10.10.10.18";
|
||||
local_address = "10.10.10.157";
|
||||
local_port = 50000; #for raw option local port must be the same to remote
|
||||
remote_port = 50000;
|
||||
rrh_gw_active = "yes";
|
||||
tr_preference = "raw_if4p5";
|
||||
tr_preference = "udp_if4p5";
|
||||
rf_preference = "usrp_b200";
|
||||
iq_txshift = 4;
|
||||
tx_sample_advance = 80;
|
||||
tx_scheduling_advance = 9;
|
||||
if_compression = "alaw";
|
||||
}
|
||||
);
|
||||
|
||||
104
cmake_targets/autotests/v2/connection.py
Normal file
104
cmake_targets/autotests/v2/connection.py
Normal file
@@ -0,0 +1,104 @@
|
||||
import os, subprocess, time, fcntl, termios, tty, signal, thread
|
||||
|
||||
from utils import log
|
||||
|
||||
class connection:
|
||||
def __init__(self, description, host, user, password):
|
||||
self.description = description
|
||||
self.host = host
|
||||
self.user = user
|
||||
self.password = password
|
||||
self.sendlock = thread.allocate_lock()
|
||||
|
||||
try:
|
||||
(pid, fd) = os.forkpty()
|
||||
except BaseException, e:
|
||||
log("ERROR: forkpty for '" + description + "': " + e)
|
||||
(pid, fd) = (-1, -1)
|
||||
|
||||
if pid == -1:
|
||||
log("ERROR: creating connection for '" + description + "'")
|
||||
os._exit(1)
|
||||
|
||||
# child process, run ssh
|
||||
if pid == 0:
|
||||
try:
|
||||
os.execvp('sshpass', ['sshpass', '-p', password,
|
||||
'ssh', user + '@' + host])
|
||||
except BaseException, e:
|
||||
log("ERROR: execvp for '" + description + "': " + e)
|
||||
log("ERROR: execvp failed for '" + description + "'")
|
||||
os._exit(1)
|
||||
|
||||
# parent process
|
||||
# make the TTY raw to avoid getting input printed and no ^M
|
||||
try:
|
||||
tty.setraw(fd, termios.TCSANOW)
|
||||
except BaseException, e:
|
||||
log("ERROR: failed configuring TTY: " + str(e))
|
||||
os._exit(1)
|
||||
|
||||
# try:
|
||||
# fcntl.fcntl(fd, fcntl.F_SETFL,
|
||||
# fcntl.fcntl(fd, fcntl.F_GETFL) | os.O_NONBLOCK)
|
||||
# except:
|
||||
# log("ERROR: fcntl failed for '" + description + "'")
|
||||
# os._exit(1)
|
||||
|
||||
self.pid = pid
|
||||
self.fd = fd
|
||||
self.active = True
|
||||
self.retcode = -1
|
||||
|
||||
def send(self, string):
|
||||
if self.active == False:
|
||||
log("ERROR: send: child is dead for '" + self.description + "'")
|
||||
return -1
|
||||
|
||||
try:
|
||||
(pid, out) = os.waitpid(self.pid, os.WNOHANG)
|
||||
except BaseException, e:
|
||||
log("ERROR: send: waitpid failed for '" + self.description +
|
||||
"': " + str(e))
|
||||
(pid, out) = (self.pid, 1)
|
||||
if pid != 0:
|
||||
log("ERROR: send: child process dead for '" +
|
||||
self.description + "'")
|
||||
try:
|
||||
os.close(self.fd)
|
||||
except BaseException, e:
|
||||
#we don't care about errors at this point
|
||||
pass
|
||||
self.active = False
|
||||
self.retcode = out
|
||||
return -1
|
||||
|
||||
self.sendlock.acquire()
|
||||
|
||||
length = len(string)
|
||||
while length != 0:
|
||||
try:
|
||||
ret = os.write(self.fd, string)
|
||||
except BaseException, e:
|
||||
log("ERROR: send fails for '" + self.description + "': " +
|
||||
str(e))
|
||||
os._exit(1)
|
||||
|
||||
if ret == 0:
|
||||
log("ERROR: send: write returns 0 for '" +
|
||||
self.description + "'")
|
||||
os._exit(1)
|
||||
|
||||
length = length - ret
|
||||
string = string[ret:]
|
||||
|
||||
self.sendlock.release()
|
||||
|
||||
return 0
|
||||
|
||||
def kill(self, signal=signal.SIGTERM):
|
||||
log("INFO: kill connection '" + self.description + "'")
|
||||
try:
|
||||
os.kill(self.pid, signal)
|
||||
except BaseException, e:
|
||||
log("ERROR: connection.kill: " + str(e))
|
||||
79
cmake_targets/autotests/v2/machine_list.py
Normal file
79
cmake_targets/autotests/v2/machine_list.py
Normal file
@@ -0,0 +1,79 @@
|
||||
import threading, os
|
||||
|
||||
from utils import log
|
||||
|
||||
class MachineWaiterThread(threading.Thread):
|
||||
def __init__(self, machine, tasks):
|
||||
threading.Thread.__init__(self)
|
||||
self.machine = machine
|
||||
self.tasks = tasks
|
||||
|
||||
def run(self):
|
||||
try:
|
||||
for task in self.tasks:
|
||||
ret = task.wait()
|
||||
if ret != 0:
|
||||
log("ERROR: task '" + task.description + "' failed " +
|
||||
"on machine " + self.machine.name)
|
||||
task.postaction()
|
||||
self.machine.unbusy()
|
||||
except BaseException, e:
|
||||
log("ERROR: MachineWaiterThread: " + str(e))
|
||||
os._exit(1)
|
||||
|
||||
class Machine():
|
||||
def __init__(self, machine, cond):
|
||||
self.name = machine
|
||||
self.free = True
|
||||
self.cond = cond
|
||||
def busy(self, tasks):
|
||||
waiter = MachineWaiterThread(self, tasks)
|
||||
waiter.start()
|
||||
def unbusy(self):
|
||||
self.cond.acquire()
|
||||
self.free = True
|
||||
self.cond.notify()
|
||||
self.cond.release()
|
||||
|
||||
class MachineList():
|
||||
def __init__(self, list):
|
||||
self.list = []
|
||||
self.cond = threading.Condition()
|
||||
for m in list:
|
||||
self.list.append(Machine(m, self.cond))
|
||||
|
||||
def get_free_machine(self):
|
||||
try:
|
||||
self.cond.acquire()
|
||||
while True:
|
||||
free_machine = None
|
||||
for m in self.list:
|
||||
if m.free == True:
|
||||
free_machine = m
|
||||
break
|
||||
if free_machine != None:
|
||||
break
|
||||
self.cond.wait()
|
||||
free_machine.free = False
|
||||
self.cond.release()
|
||||
except BaseException, e:
|
||||
log("ERROR: machine_list: " + str(e))
|
||||
os._exit(1)
|
||||
return free_machine
|
||||
|
||||
def wait_all_free(self):
|
||||
try:
|
||||
self.cond.acquire()
|
||||
while True:
|
||||
all_free = True
|
||||
for m in self.list:
|
||||
if m.free == False:
|
||||
all_free = False
|
||||
break
|
||||
if all_free == True:
|
||||
break
|
||||
self.cond.wait()
|
||||
self.cond.release()
|
||||
except BaseException, e:
|
||||
log("ERROR: machine_list: " + str(e))
|
||||
os._exit(1)
|
||||
705
cmake_targets/autotests/v2/main.py
Normal file
705
cmake_targets/autotests/v2/main.py
Normal file
@@ -0,0 +1,705 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import os, re, sys, time, threading, thread
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
from utils import test_in_list, quickshell, log
|
||||
from task import Task, WAITLOG_SUCCESS, WAITLOG_FAILURE
|
||||
from machine_list import MachineList
|
||||
|
||||
oai_user = os.environ.get('OAI_USER')
|
||||
oai_password = os.environ.get('OAI_PASS')
|
||||
requested_tests = os.environ.get('OAI_TEST_CASE_GROUP')
|
||||
machines = os.environ.get('MACHINELIST')
|
||||
generic_machines = os.environ.get('MACHINELISTGENERIC')
|
||||
result_dir = os.environ.get('RESULT_DIR')
|
||||
nruns_softmodem = os.environ.get('NRUNS_LTE_SOFTMODEM')
|
||||
openair_dir = os.environ.get('OPENAIR_DIR')
|
||||
|
||||
some_undef = False
|
||||
if (oai_user == None) :
|
||||
log("variable OAI_USER is not defined")
|
||||
some_undef = True
|
||||
if (oai_password == None) :
|
||||
log("variable OAI_PASS is not defined")
|
||||
some_undef = True
|
||||
if (requested_tests == None) :
|
||||
log("variable OAI_TEST_CASE_GROUP is not defined")
|
||||
some_undef = True
|
||||
if (machines == None) :
|
||||
log("variable MACHINELIST is not defined")
|
||||
some_undef = True
|
||||
if (generic_machines == None) :
|
||||
log("variable MACHINELISTGENERIC is not defined")
|
||||
some_undef = True
|
||||
if (result_dir == None) :
|
||||
log("variable RESULT_DIR is not defined")
|
||||
some_undef = True
|
||||
if (nruns_softmodem == None) :
|
||||
log("variable NRUNS_LTE_SOFTMODEM is not defined")
|
||||
some_undef = True
|
||||
if (openair_dir == None) :
|
||||
log("variable OPENAIR_DIR is not defined")
|
||||
some_undef = True
|
||||
if (some_undef == True):
|
||||
os._exit(1)
|
||||
|
||||
requested_tests = requested_tests .replace('"','')
|
||||
machines = machines .replace('"','')
|
||||
generic_machines = generic_machines .replace('"','')
|
||||
|
||||
xml_test_file = os.environ.get('OPENAIR_DIR') + \
|
||||
"/cmake_targets/autotests/test_case_list.xml"
|
||||
|
||||
xmlTree = ET.parse(xml_test_file)
|
||||
xmlRoot = xmlTree.getroot()
|
||||
|
||||
exclusion_tests=xmlRoot.findtext('TestCaseExclusionList',default='')
|
||||
all_tests=xmlRoot.findall('testCase')
|
||||
|
||||
exclusion_tests=exclusion_tests.split()
|
||||
requested_tests=requested_tests.split()
|
||||
|
||||
#check that exclusion tests are well formatted
|
||||
#(6 digits or less than 6 digits followed by +)
|
||||
for test in exclusion_tests:
|
||||
if (not re.match('^[0-9]{6}$', test) and
|
||||
not re.match('^[0-9]{1,5}\+$', test)):
|
||||
log("ERROR: exclusion test is invalidly formatted: " + test)
|
||||
os._exit(1)
|
||||
|
||||
#check that requested tests are well formatted
|
||||
#(6 digits or less than 6 digits followed by +)
|
||||
#be verbose
|
||||
for test in requested_tests:
|
||||
if (re.match('^[0-9]{6}$', test) or
|
||||
re.match('^[0-9]{1,5}\+$', test)):
|
||||
log("INFO: test group/case requested: " + test)
|
||||
else:
|
||||
log("ERROR: requested test is invalidly formatted: " + test)
|
||||
os._exit(1)
|
||||
|
||||
#get the list of tests to be done
|
||||
todo_tests=[]
|
||||
for test in all_tests:
|
||||
if (test_in_list(test.get('id'), requested_tests) and
|
||||
not test_in_list(test.get('id'), exclusion_tests)):
|
||||
log("INFO: test will be run: " + test.get('id'))
|
||||
todo_tests.append(test)
|
||||
else:
|
||||
log("INFO: test will be skipped: " + test.get('id'))
|
||||
|
||||
#get commit ID to use
|
||||
commit_id = quickshell("git rev-parse --verify HEAD").replace('\n','')
|
||||
if (len(commit_id) != 20*2):
|
||||
log("ERROR: bad commit '" + commit_id + "'")
|
||||
log("INFO: test for commit " + commit_id)
|
||||
|
||||
#get repository URL
|
||||
repository_url = quickshell("git config remote.origin.url").replace('\n','')
|
||||
log("INFO: repository URL: " + repository_url)
|
||||
|
||||
#prepare environment for tasks
|
||||
env = []
|
||||
env.append("REPOSITORY_URL=" + repository_url)
|
||||
env.append("COMMIT_ID=" + commit_id)
|
||||
|
||||
#clone repository on all machines in the test setup
|
||||
tasks=[]
|
||||
for machine in machines.split():
|
||||
tasks.append(Task("actions/clone_repository.bash",
|
||||
"clone repository on " + machine,
|
||||
machine,
|
||||
oai_user,
|
||||
oai_password,
|
||||
env,
|
||||
openair_dir + "/cmake_targets/autotests/log/clone." \
|
||||
+ machine))
|
||||
for task in tasks:
|
||||
log("INFO: wait for task: " + task.description)
|
||||
ret = task.wait()
|
||||
if ret != 0 or not "TEST_SETUP_SUCCESS" in open(task.logfile).read():
|
||||
log("ERROR: task failed: " + task.description)
|
||||
os._exit(1)
|
||||
|
||||
##############################################################################
|
||||
# run compilation tests #
|
||||
##############################################################################
|
||||
|
||||
machine_list = MachineList(generic_machines.split())
|
||||
|
||||
for test in todo_tests:
|
||||
action = test.findtext('class')
|
||||
if action != 'compilation':
|
||||
continue
|
||||
id = test.get('id')
|
||||
machine = machine_list.get_free_machine()
|
||||
log("INFO: start " + action + " test " + id + " on machine " +
|
||||
machine.name)
|
||||
tasks = []
|
||||
runenv = list(env)
|
||||
runenv.append('OPENAIR_DIR=/tmp/oai_test_setup/oai')
|
||||
runenv.append('BUILD_ARGUMENTS="'
|
||||
+ test.findtext('compile_prog_args')
|
||||
+ '"')
|
||||
runenv.append('BUILD_OUTPUT="'
|
||||
+ test.findtext('compile_prog_out')
|
||||
.replace('\n','')
|
||||
+ '"')
|
||||
logdir = openair_dir +"/cmake_targets/autotests/log/"+ id +"/compile_log"
|
||||
remote_files = "'/tmp/oai_test_setup/oai/cmake_targets/log/*'"
|
||||
post_action = "mkdir -p "+ logdir + \
|
||||
" && sshpass -p " + oai_password + " scp -r " + oai_user + \
|
||||
"@" + machine.name + ":" + remote_files + " " + logdir + \
|
||||
" || true"
|
||||
tasks.append(Task("actions/" + action + ".bash",
|
||||
action + " of test " + id + " on " + machine.name,
|
||||
machine.name,
|
||||
oai_user,
|
||||
oai_password,
|
||||
runenv,
|
||||
openair_dir + "/cmake_targets/autotests/log/"
|
||||
+ id + "."
|
||||
+ machine.name,
|
||||
post_action=post_action))
|
||||
machine.busy(tasks)
|
||||
|
||||
##############################################################################
|
||||
# run execution tests #
|
||||
##############################################################################
|
||||
|
||||
class ExecutionThread(threading.Thread):
|
||||
def __init__(self, id, machine, test):
|
||||
threading.Thread.__init__(self)
|
||||
self.machine = machine
|
||||
self.id = id
|
||||
self.test = test
|
||||
|
||||
def run(self):
|
||||
id = self.id
|
||||
machine = self.machine
|
||||
test = self.test
|
||||
|
||||
# step 1: compile
|
||||
|
||||
log("INFO: start compilation of test " + id + " on machine " +
|
||||
machine.name)
|
||||
tasks = []
|
||||
runenv = list(env)
|
||||
runenv.append('OPENAIR_DIR=/tmp/oai_test_setup/oai')
|
||||
runenv.append('PRE_BUILD="'
|
||||
+ test.findtext('pre_compile_prog')
|
||||
+ '"')
|
||||
runenv.append('BUILD_PROG="'
|
||||
+ test.findtext('compile_prog')
|
||||
+ '"')
|
||||
runenv.append('BUILD_ARGUMENTS="'
|
||||
+ test.findtext('compile_prog_args')
|
||||
+ '"')
|
||||
runenv.append('PRE_EXEC="'
|
||||
+ test.findtext('pre_exec') + " "
|
||||
+ test.findtext('pre_exec_args')
|
||||
+ '"')
|
||||
logdir = openair_dir +"/cmake_targets/autotests/log/"+ id + \
|
||||
"/compile_log"
|
||||
remote_files = "'/tmp/oai_test_setup/oai/cmake_targets/log/*'"
|
||||
post_action = "mkdir -p "+ logdir + \
|
||||
" && sshpass -p " + oai_password + \
|
||||
" scp -r " + oai_user + "@" + machine.name + ":" + \
|
||||
remote_files + " " + logdir + \
|
||||
" || true"
|
||||
task = Task("actions/execution_compile.bash",
|
||||
"compilation of test " + id + " on " + machine.name,
|
||||
machine.name,
|
||||
oai_user,
|
||||
oai_password,
|
||||
runenv,
|
||||
openair_dir + "/cmake_targets/autotests/log/"
|
||||
+ id + "_compile."
|
||||
+ machine.name,
|
||||
post_action=post_action)
|
||||
ret = task.wait()
|
||||
task.postaction()
|
||||
if ret != 0:
|
||||
log("ERROR: compilation of test " + id + " failed: " + str(ret))
|
||||
machine.unbusy()
|
||||
return
|
||||
|
||||
#step 2: run all tests
|
||||
|
||||
nruns = test.findtext('nruns')
|
||||
args = test.findtext('main_exec_args')
|
||||
i = 0
|
||||
for arg in args.splitlines():
|
||||
i = i+1
|
||||
runenv2 = list(runenv)
|
||||
runenv2.append('OPENAIR_TARGETS=/tmp/oai_test_setup/oai/targets')
|
||||
runenv2.append('EXEC="'
|
||||
+ test.findtext('main_exec')
|
||||
+ '"')
|
||||
runenv2.append('EXEC_ARGS="' + arg + '"')
|
||||
for run in range(int(nruns)):
|
||||
log("INFO: start execution of test " + id + " case " +
|
||||
str(i) + " run " + str(run) + " on machine " +
|
||||
machine.name)
|
||||
task =Task("actions/execution.bash",
|
||||
"execution of test " + id + " on " + machine.name,
|
||||
machine.name,
|
||||
oai_user,
|
||||
oai_password,
|
||||
runenv2,
|
||||
openair_dir + "/cmake_targets/autotests/log/"
|
||||
+ id + "_case_" + str(i) + "_run_" + str(run)
|
||||
+ "." + machine.name)
|
||||
ret = task.wait()
|
||||
if ret != 0:
|
||||
log("ERROR: execution of test " +id+ " failed: " +
|
||||
str(ret))
|
||||
|
||||
machine.unbusy()
|
||||
|
||||
for test in todo_tests:
|
||||
action = test.findtext('class')
|
||||
if action != 'execution':
|
||||
continue
|
||||
id = test.get('id')
|
||||
machine = machine_list.get_free_machine()
|
||||
ExecutionThread(id, machine, test).start()
|
||||
|
||||
#wait for compilation/execution tests to be finished
|
||||
#log only if some compilation/execution tests are actually done
|
||||
for test in todo_tests:
|
||||
action = test.findtext('class')
|
||||
if action == 'execution' or action == 'compilation':
|
||||
log("INFO: requested compilation/execution tests " +
|
||||
"have been launched, waiting for completion")
|
||||
break
|
||||
machine_list.wait_all_free()
|
||||
|
||||
##############################################################################
|
||||
# run eNB softmodem tests #
|
||||
##############################################################################
|
||||
|
||||
tests = {}
|
||||
for a in { 'b210', 'remote b210', 'x310', 'exmimo2' }:
|
||||
tests[a] = {}
|
||||
for b in { 'alu', 'openair-cn' }:
|
||||
tests[a][b] = {}
|
||||
for c in { 'fdd', 'tdd' }:
|
||||
tests[a][b][c] = {}
|
||||
for d in { '5', '10', '20' }:
|
||||
tests[a][b][c][d] = {}
|
||||
for e in { 'bandrich', 'sony', '3276' }:
|
||||
tests[a][b][c][d][e] = {}
|
||||
for f in { 'tcp', 'udp' }:
|
||||
tests[a][b][c][d][e][f] = {}
|
||||
for g in { 'dl', 'ul' }:
|
||||
tests[a][b][c][d][e][f][g] = False
|
||||
|
||||
todo_tests_ids = []
|
||||
for test in todo_tests:
|
||||
todo_tests_ids.append(test.get('id'))
|
||||
|
||||
for test in todo_tests_ids:
|
||||
if test=='015500':tests['b210']['alu']['fdd'][ '5']['bandrich']['udp']['ul']=True
|
||||
if test=='015501':tests['b210']['alu']['fdd']['10']['bandrich']['udp']['ul']=True
|
||||
if test=='015502':tests['b210']['alu']['fdd']['20']['bandrich']['udp']['ul']=True
|
||||
if test=='015503':tests['b210']['alu']['fdd'][ '5']['bandrich']['udp']['dl']=True
|
||||
if test=='015504':tests['b210']['alu']['fdd']['10']['bandrich']['udp']['dl']=True
|
||||
if test=='015505':tests['b210']['alu']['fdd']['20']['bandrich']['udp']['dl']=True
|
||||
if test=='015506':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015507':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015508':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015509':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015510':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015511':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015512':tests['b210']['alu']['fdd'][ '5']['bandrich']['tcp']['ul']=True
|
||||
if test=='015513':tests['b210']['alu']['fdd']['10']['bandrich']['tcp']['ul']=True
|
||||
if test=='015514':tests['b210']['alu']['fdd']['20']['bandrich']['tcp']['ul']=True
|
||||
if test=='015515':tests['b210']['alu']['fdd'][ '5']['bandrich']['tcp']['dl']=True
|
||||
if test=='015516':tests['b210']['alu']['fdd']['10']['bandrich']['tcp']['dl']=True
|
||||
if test=='015517':tests['b210']['alu']['fdd']['20']['bandrich']['tcp']['dl']=True
|
||||
if test=='015518':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015519':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015520':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015521':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015522':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015523':log('WARNING: skip test ' + test) #TODO
|
||||
|
||||
if test=='015600':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015601':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015602':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015603':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015604':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015605':log('WARNING: skip test ' + test) #TODO
|
||||
|
||||
if test=='015700':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015701':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015702':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015703':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015704':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015705':log('WARNING: skip test ' + test) #TODO
|
||||
|
||||
if test=='015800':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015801':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015802':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015803':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015804':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015805':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015806':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015807':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015808':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015809':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015810':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015811':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015812':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015813':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015814':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015815':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015816':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015817':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015818':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015819':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015820':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015821':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015822':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='015823':log('WARNING: skip test ' + test) #TODO
|
||||
|
||||
if test=='016000':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='016001':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='016002':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='016003':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='016004':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='016005':log('WARNING: skip test ' + test) #TODO
|
||||
|
||||
if test=='016100':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='016101':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='016102':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='016103':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='016104':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='016105':log('WARNING: skip test ' + test) #TODO
|
||||
|
||||
if test=='016300':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='016301':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='016302':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='016303':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='016304':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='016305':log('WARNING: skip test ' + test) #TODO
|
||||
|
||||
if test=='016500':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='016501':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='016502':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='016503':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='016504':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='016505':log('WARNING: skip test ' + test) #TODO
|
||||
|
||||
if test=='017000':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='017001':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='017002':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='017003':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='017004':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='017005':log('WARNING: skip test ' + test) #TODO
|
||||
|
||||
if test=='017500':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='017501':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='017502':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='017503':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='017504':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='017505':log('WARNING: skip test ' + test) #TODO
|
||||
|
||||
if test=='017600':tests['remote b210']['alu']['fdd'][ '5']['bandrich']['udp']['ul']=True
|
||||
if test=='017601':tests['remote b210']['alu']['fdd']['10']['bandrich']['udp']['ul']=True
|
||||
if test=='017602':tests['remote b210']['alu']['fdd']['20']['bandrich']['udp']['ul']=True
|
||||
if test=='017603':tests['remote b210']['alu']['fdd'][ '5']['bandrich']['udp']['dl']=True
|
||||
if test=='017604':tests['remote b210']['alu']['fdd']['10']['bandrich']['udp']['dl']=True
|
||||
if test=='017605':tests['remote b210']['alu']['fdd']['20']['bandrich']['udp']['dl']=True
|
||||
if test=='017606':tests['remote b210']['alu']['fdd'][ '5']['bandrich']['tcp']['ul']=True
|
||||
if test=='017607':tests['remote b210']['alu']['fdd']['10']['bandrich']['tcp']['ul']=True
|
||||
if test=='017608':tests['remote b210']['alu']['fdd']['20']['bandrich']['tcp']['ul']=True
|
||||
if test=='017609':tests['remote b210']['alu']['fdd'][ '5']['bandrich']['tcp']['dl']=True
|
||||
if test=='017610':tests['remote b210']['alu']['fdd']['10']['bandrich']['tcp']['dl']=True
|
||||
if test=='017611':tests['remote b210']['alu']['fdd']['20']['bandrich']['tcp']['dl']=True
|
||||
|
||||
if test=='018000':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='018001':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='018002':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='018003':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='018004':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='018005':log('WARNING: skip test ' + test) #TODO
|
||||
|
||||
if test=='018500':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='018501':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='018502':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='018503':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='018504':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='018505':log('WARNING: skip test ' + test) #TODO
|
||||
|
||||
if test=='018600':tests['b210']['alu']['tdd'][ '5']['3276']['udp']['ul']=True
|
||||
if test=='018601':tests['b210']['alu']['tdd']['10']['3276']['udp']['ul']=True
|
||||
if test=='018602':tests['b210']['alu']['tdd']['20']['3276']['udp']['ul']=True
|
||||
if test=='018603':tests['b210']['alu']['tdd'][ '5']['3276']['udp']['dl']=True
|
||||
if test=='018604':tests['b210']['alu']['tdd']['10']['3276']['udp']['dl']=True
|
||||
if test=='018605':tests['b210']['alu']['tdd']['20']['3276']['udp']['dl']=True
|
||||
if test=='018606':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='018607':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='018608':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='018609':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='018610':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='018611':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='018612':tests['b210']['alu']['tdd'][ '5']['3276']['tcp']['ul']=True
|
||||
if test=='018613':tests['b210']['alu']['tdd']['10']['3276']['tcp']['ul']=True
|
||||
if test=='018614':tests['b210']['alu']['tdd']['20']['3276']['tcp']['ul']=True
|
||||
if test=='018615':tests['b210']['alu']['tdd'][ '5']['3276']['tcp']['dl']=True
|
||||
if test=='018616':tests['b210']['alu']['tdd']['10']['3276']['tcp']['dl']=True
|
||||
if test=='018617':tests['b210']['alu']['tdd']['20']['3276']['tcp']['dl']=True
|
||||
if test=='018618':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='018619':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='018620':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='018621':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='018622':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='018623':log('WARNING: skip test ' + test) #TODO
|
||||
|
||||
if test=='025500':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025501':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025502':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025503':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025504':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025505':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025506':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025507':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025508':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025509':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025510':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025511':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025512':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025513':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025514':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025515':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025516':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025517':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025518':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025519':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025520':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025521':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025522':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025523':log('WARNING: skip test ' + test) #TODO
|
||||
|
||||
if test=='025700':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025701':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025702':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025703':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025704':log('WARNING: skip test ' + test) #TODO
|
||||
if test=='025705':log('WARNING: skip test ' + test) #TODO
|
||||
|
||||
from alu_test import run_b210_alu
|
||||
|
||||
#B210 ALU tests
|
||||
|
||||
run_b210_alu(tests, openair_dir, oai_user, oai_password, env)
|
||||
|
||||
#for test in todo_tests:
|
||||
# action = test.findtext('class')
|
||||
# if action != 'lte-softmodem':
|
||||
# continue
|
||||
# if not "start_ltebox" in test.findtext('EPC_main_exec'):
|
||||
# continue
|
||||
# id = test.get('id')
|
||||
# log("INFO: Running ALU test " + id)
|
||||
# logdir = openair_dir + "/cmake_targets/autotests/log/" + id
|
||||
# quickshell("mkdir -p " + logdir)
|
||||
# epc_machine = test.findtext('EPC')
|
||||
# enb_machine = test.findtext('eNB')
|
||||
# ue_machine = test.findtext('UE')
|
||||
#
|
||||
# #event object used to wait for several tasks at once
|
||||
# event = threading.Event()
|
||||
#
|
||||
# #launch HSS, wait for prompt
|
||||
# log("INFO: " + id + ": run HSS")
|
||||
# task_hss = Task("actions/alu_hss.bash",
|
||||
# "ALU HSS",
|
||||
# epc_machine,
|
||||
# oai_user,
|
||||
# oai_password,
|
||||
# env,
|
||||
# logdir + "/alu_hss." + epc_machine, event=event)
|
||||
# task_hss.waitlog('S6AS_SIM-> ')
|
||||
#
|
||||
# #then launch EPC, wait for connection on HSS side
|
||||
# log("INFO: " + id + ": run EPC")
|
||||
# task = Task("actions/alu_epc.bash",
|
||||
# "ALU EPC",
|
||||
# epc_machine,
|
||||
# oai_user,
|
||||
# oai_password,
|
||||
# env,
|
||||
# logdir + "/alu_epc." + epc_machine)
|
||||
# ret = task.wait()
|
||||
# if ret != 0:
|
||||
# log("ERROR: EPC start failure");
|
||||
# os._exit(1)
|
||||
# task_hss.waitlog('Connected\n')
|
||||
#
|
||||
# #compile softmodem
|
||||
# log("INFO: " + id + ": compile softmodem")
|
||||
# envcomp = list(env)
|
||||
# envcomp.append('BUILD_ARGUMENTS="' +
|
||||
# test.findtext('eNB_compile_prog_args') + '"')
|
||||
# #we don't care about BUILD_OUTPUT but it's required (TODO: change that)
|
||||
# envcomp.append('BUILD_OUTPUT=/')
|
||||
# task = Task("actions/compilation.bash",
|
||||
# "compile softmodem",
|
||||
# enb_machine,
|
||||
# oai_user,
|
||||
# oai_password,
|
||||
# envcomp,
|
||||
# logdir + "/compile_softmodem." + enb_machine)
|
||||
# ret = task.wait()
|
||||
# if ret != 0:
|
||||
# log("ERROR: softmodem compilation failure");
|
||||
# os._exit(1)
|
||||
#
|
||||
## #copy wanted configuration file
|
||||
## quickshell("sshpass -p " + oai_password +
|
||||
## " scp config/enb.band7.tm1.usrpb210.conf " +
|
||||
## oai_user + "@" + enb_machine + ":/tmp/enb.conf")
|
||||
#
|
||||
# #run softmodem
|
||||
# log("INFO: " + id + ": run softmodem")
|
||||
# task_enb = Task("actions/run_enb.bash",
|
||||
# "run softmodem",
|
||||
# enb_machine,
|
||||
# oai_user,
|
||||
# oai_password,
|
||||
# env,
|
||||
# logdir + "/run_softmodem." + enb_machine, event=event)
|
||||
# task_enb.waitlog('got sync')
|
||||
#
|
||||
# #start UE
|
||||
# log("INFO: " + id + ": start bandrich UE")
|
||||
# task_ue = Task("actions/start_bandrich.bash",
|
||||
# "start bandrich UE",
|
||||
# ue_machine,
|
||||
# oai_user,
|
||||
# oai_password,
|
||||
# env,
|
||||
# logdir + "/start_bandrich." + ue_machine, event=event)
|
||||
# task_ue.waitlog("local IP address", event=event)
|
||||
#
|
||||
# event.wait()
|
||||
#
|
||||
# #at this point one task has died or we have the line in the log
|
||||
# if task_ue.waitlog_state != WAITLOG_SUCCESS:
|
||||
# log("ERROR: " + id + ": bandrich UE did not connect")
|
||||
# os._exit(1)
|
||||
#
|
||||
# event.clear()
|
||||
#
|
||||
# if ( not task_enb.alive() or
|
||||
# not task_hss.alive() or
|
||||
# not task_ue.alive()):
|
||||
# log("ERROR: " + id + ": eNB or UE tasks died")
|
||||
# os._exit(1)
|
||||
#
|
||||
# #get bandrich UE IP
|
||||
# l = open(task_ue.logfile, "r").read()
|
||||
# ue_ip = re.search("local IP address (.*)\n", l).groups()[0]
|
||||
# log("INFO: " + id + ": bandrich UE IP address: " + ue_ip)
|
||||
#
|
||||
# #run traffic
|
||||
# log("INFO: " + id + ": run downlink TCP traffic")
|
||||
#
|
||||
# log("INFO: " + id + ": launch server")
|
||||
# task_traffic_ue = Task("actions/downlink_bandrich.bash",
|
||||
# "start iperf on bandrich UE as server",
|
||||
# ue_machine,
|
||||
# oai_user,
|
||||
# oai_password,
|
||||
# env,
|
||||
# logdir + "/downlink_bandrich." + ue_machine,
|
||||
# event=event)
|
||||
# task_traffic_ue.waitlog("Server listening on TCP port 5001")
|
||||
#
|
||||
# log("INFO: " + id + ": launch client")
|
||||
# envepc = list(env)
|
||||
# envepc.append("UE_IP=" + ue_ip)
|
||||
# task = Task("actions/downlink_epc.bash",
|
||||
# "start iperf on EPC as client",
|
||||
# epc_machine,
|
||||
# oai_user,
|
||||
# oai_password,
|
||||
# envepc,
|
||||
# logdir + "/downlink_epc." + epc_machine, event=event)
|
||||
# log("INFO: " + id + ": wait for client (or some error)")
|
||||
#
|
||||
# event.wait()
|
||||
# log("DEBUG: event.wait() done")
|
||||
#
|
||||
# if ( not task_enb.alive() or
|
||||
# not task_hss.alive() or
|
||||
# not task_ue.alive()):
|
||||
# log("ERROR: unexpected task exited, test failed, kill all")
|
||||
# if task.alive():
|
||||
# task.kill()
|
||||
# if task_enb.alive():
|
||||
# task_enb.kill()
|
||||
# if task_ue.alive():
|
||||
# task_ue.kill()
|
||||
#
|
||||
# ret = task.wait()
|
||||
# if ret != 0:
|
||||
# log("ERROR: " + id + ": downlink traffic failed")
|
||||
# #not sure if we have to quit here or not
|
||||
# #os._exit(1)
|
||||
#
|
||||
# #stop downlink server
|
||||
# log("INFO: " + id + ": stop server (kill ssh connection)")
|
||||
# task_traffic_ue.kill()
|
||||
# log("INFO: " + id + ": wait for server to quit")
|
||||
# task_traffic_ue.wait()
|
||||
#
|
||||
# #stop UE
|
||||
# log("INFO: " + id + ": stop bandrich UE")
|
||||
# task_ue.sendnow("%c" % 3)
|
||||
# ret = task_ue.wait()
|
||||
# if ret != 0:
|
||||
# log("ERROR: " + id + ": task bandrich UE failed")
|
||||
# #not sure if we have to quit here or not
|
||||
# #os._exit(1)
|
||||
#
|
||||
# #stop softmodem
|
||||
# log("INFO: " + id + ": stop softmodem")
|
||||
# task_enb.sendnow("%c" % 3)
|
||||
# ret = task_enb.wait()
|
||||
# if ret != 0:
|
||||
# log("ERROR: " + id + ": softmodem failed")
|
||||
# #not sure if we have to quit here or not
|
||||
# #os._exit(1)
|
||||
#
|
||||
# #stop EPC, wait for disconnection on HSS side
|
||||
# log("INFO: " + id + ": stop EPC")
|
||||
# task = Task("actions/alu_epc_stop.bash",
|
||||
# "ALU EPC stop",
|
||||
# epc_machine,
|
||||
# oai_user,
|
||||
# oai_password,
|
||||
# env,
|
||||
# logdir + "/alu_epc_stop." + epc_machine)
|
||||
# ret = task.wait()
|
||||
# if ret != 0:
|
||||
# log("ERROR: " + id + ": ALU EPC stop failed")
|
||||
# os._exit(1)
|
||||
# task_hss.waitlog('Disconnected\n')
|
||||
#
|
||||
# log("INFO: " + id + ": stop HSS")
|
||||
# task_hss.sendnow("exit\n")
|
||||
# ret = task_hss.wait()
|
||||
# if ret != 0:
|
||||
# log("ERROR: " + id + ": ALU HSS failed")
|
||||
# os._exit(1)
|
||||
|
||||
import utils
|
||||
log(utils.GREEN + "GOODBYE" + utils.RESET)
|
||||
#os._exit(0)
|
||||
|
||||
#run lte softmodem tests
|
||||
370
cmake_targets/autotests/v2/task.py
Normal file
370
cmake_targets/autotests/v2/task.py
Normal file
@@ -0,0 +1,370 @@
|
||||
import os, time, threading, sys, os, errno, select
|
||||
from connection import connection
|
||||
|
||||
import utils
|
||||
from utils import log
|
||||
|
||||
#this class is to communicate between reader and sender threads
|
||||
#the reader increments a count each time it receives the prompt
|
||||
#and wakes up the sender
|
||||
#it also indicates when it exits so the sender can exit too
|
||||
#the sender (calling get) waits for the count to be greated than passed
|
||||
#argument or if reader exited
|
||||
#it returns argument+1 if things okay, -1 if reader exited
|
||||
class Counter:
|
||||
def __init__(self):
|
||||
self.count = 0
|
||||
self.cond = threading.Condition()
|
||||
|
||||
def inc(self):
|
||||
self.cond.acquire()
|
||||
self.count = self.count + 1
|
||||
self.cond.notify()
|
||||
self.cond.release()
|
||||
|
||||
def set(self, value):
|
||||
self.cond.acquire()
|
||||
self.count = value
|
||||
self.cond.notify()
|
||||
self.cond.release()
|
||||
|
||||
def get(self, current):
|
||||
self.cond.acquire()
|
||||
while True:
|
||||
if self.count == -1:
|
||||
ret = -1
|
||||
break
|
||||
if self.count >= current + 1:
|
||||
ret = current + 1
|
||||
break
|
||||
self.cond.wait()
|
||||
self.cond.release()
|
||||
return ret
|
||||
|
||||
#this class is used for the main application to wait for some specific
|
||||
#output from the remote program (typically the ALU HSS prompt, indicating
|
||||
#it is ready and we can proceed further)
|
||||
#(too much classes...)
|
||||
class ProducerConsumer:
|
||||
def __init__(self):
|
||||
self.count = 0
|
||||
self.cond = threading.Condition()
|
||||
|
||||
def add(self, v):
|
||||
self.cond.acquire()
|
||||
self.count = self.count + v
|
||||
self.cond.notify()
|
||||
self.cond.release()
|
||||
|
||||
def set(self, v):
|
||||
self.cond.acquire()
|
||||
self.count = v
|
||||
self.cond.notify()
|
||||
self.cond.release()
|
||||
|
||||
def get(self, old):
|
||||
self.cond.acquire()
|
||||
while True:
|
||||
if self.count == -1:
|
||||
ret = -1
|
||||
break
|
||||
if self.count > old:
|
||||
ret = self.count
|
||||
break
|
||||
self.cond.wait()
|
||||
self.cond.release()
|
||||
return ret
|
||||
|
||||
#this thread gets input from the child process of the task
|
||||
#it removes the prompts it gets (be carefully to use a prompt
|
||||
#that will not be output of any command otherwise you dead)
|
||||
class ReaderThread(threading.Thread):
|
||||
def __init__(self, fdin, logfile, prompt, prompt_counter, producer):
|
||||
threading.Thread.__init__(self)
|
||||
self.fdin = fdin
|
||||
self.logfile = logfile
|
||||
self.prompt_counter = prompt_counter
|
||||
self.prompt = prompt
|
||||
self.promptsize = len(prompt)
|
||||
self.stack = ""
|
||||
self.stacksize = 0
|
||||
self.producer = producer
|
||||
|
||||
def run(self):
|
||||
try:
|
||||
outfile = open(self.logfile, "w")
|
||||
except BaseException, e:
|
||||
log("ERROR: ReaderThread: " + self.logfile + ": " + str(e))
|
||||
os._exit(1)
|
||||
while True:
|
||||
try:
|
||||
(a, b, c) = select.select([ self.fdin ], [], [ self.fdin ])
|
||||
except BaseException, e:
|
||||
log("ERROR: ReaderThread: " + self.logfile +
|
||||
": select failed: " + str(e))
|
||||
os._exit(1)
|
||||
try:
|
||||
z = os.read(self.fdin, 1024)
|
||||
except OSError, e:
|
||||
if e.errno == errno.EIO:
|
||||
#pipe has died, quit the thread
|
||||
break
|
||||
else:
|
||||
log("ERROR: ReaderThread: " + self.logfile +
|
||||
": unhandled error: " + str(e))
|
||||
except BaseException, e:
|
||||
log("ERROR: ReaderThread: " + self.logfile +
|
||||
": unhandled error: " + str(e))
|
||||
break
|
||||
try:
|
||||
produced = 0
|
||||
#this part is to remove the prompt
|
||||
for x in z:
|
||||
if x == self.prompt[self.stacksize]:
|
||||
self.stack = self.stack + x
|
||||
self.stacksize = self.stacksize + 1
|
||||
if self.stacksize == self.promptsize:
|
||||
self.prompt_counter.inc()
|
||||
self.stack = ""
|
||||
self.stacksize = 0
|
||||
else:
|
||||
outfile.write(self.stack)
|
||||
outfile.write(x)
|
||||
produced = produced + len(self.stack) + len(x)
|
||||
self.stack = ""
|
||||
self.stacksize = 0
|
||||
outfile.flush()
|
||||
self.producer.add(produced)
|
||||
except BaseException, e:
|
||||
log("ERROR: ReaderThread: " + self.logfile + ": " + str(e))
|
||||
os._exit(1)
|
||||
try:
|
||||
outfile.close()
|
||||
except BaseException, e:
|
||||
log("ERROR: ReaderThread: " + self.logfile + ": " + str(e))
|
||||
os._exit(1)
|
||||
#close the pipe, don't care about errors
|
||||
try:
|
||||
os.close(self.fdin)
|
||||
except:
|
||||
pass
|
||||
#signal sender to quit
|
||||
self.prompt_counter.set(-1)
|
||||
self.producer.set(-1)
|
||||
|
||||
class SenderQuit(Exception):
|
||||
pass
|
||||
|
||||
#this thread sends commands to the child process of the task
|
||||
#it waits for the prompt between each command
|
||||
#'event' is used for the main thread to wait for one of several tasks
|
||||
#to quit, meaning error or end-of-test
|
||||
class SenderThread(threading.Thread):
|
||||
def __init__(self, fdout, prompt_counter, connection, env, action,
|
||||
description, prompt, event=None):
|
||||
threading.Thread.__init__(self)
|
||||
self.fdin = fdout
|
||||
self.prompt_counter = prompt_counter
|
||||
self.connection = connection
|
||||
self.env = env
|
||||
self.action = action
|
||||
self.description = description
|
||||
self.prompt = prompt
|
||||
self.count = 0
|
||||
self.event = event
|
||||
self.alive = True
|
||||
|
||||
def wait_prompt(self):
|
||||
self.count = self.prompt_counter.get(self.count)
|
||||
if self.count == -1:
|
||||
raise SenderQuit()
|
||||
|
||||
def _run(self):
|
||||
self.connection.send('export PS1=' + self.prompt + '\n')
|
||||
self.wait_prompt()
|
||||
self.connection.send('set +o emacs\n')
|
||||
self.wait_prompt()
|
||||
self.connection.send('echo\n')
|
||||
self.wait_prompt()
|
||||
self.connection.send('echo\n')
|
||||
self.wait_prompt()
|
||||
self.connection.send("echo -e '" + utils.GREEN +
|
||||
'---------------------------------------------'
|
||||
+ utils.RESET + "'\n")
|
||||
self.wait_prompt()
|
||||
self.connection.send('echo\n')
|
||||
self.wait_prompt()
|
||||
self.connection.send("echo -n -e '" + utils.YELLOW +
|
||||
"COMMANDS START: " +
|
||||
utils.RESET + "'\n")
|
||||
self.wait_prompt()
|
||||
self.connection.send('date\n')
|
||||
self.wait_prompt()
|
||||
|
||||
for l in self.env:
|
||||
self.connection.send('export ' + l + '\n')
|
||||
self.wait_prompt()
|
||||
|
||||
with open(self.action) as f:
|
||||
for line in f:
|
||||
self.connection.send("echo -n -e '" + utils.GREEN +
|
||||
"RUNNING: " + utils.RESET + "'\n")
|
||||
self.wait_prompt()
|
||||
self.connection.send("echo '" +
|
||||
line.replace('\n','')
|
||||
.replace("'", "'\\''") + "'\n")
|
||||
self.wait_prompt()
|
||||
self.connection.send(line)
|
||||
self.wait_prompt()
|
||||
self.connection.send("if [ $? != 0 ]; then " +
|
||||
"echo -e '" + utils.RED +
|
||||
"TEST_SETUP_ERROR: " + utils.RESET +
|
||||
"last command failed, exiting'; " +
|
||||
"date; exit 1; fi\n")
|
||||
self.wait_prompt()
|
||||
|
||||
self.connection.send("echo -n -e '" + utils.YELLOW +
|
||||
"COMMANDS DONE: " +
|
||||
utils.RESET + "'\n")
|
||||
self.wait_prompt()
|
||||
self.connection.send('date\n')
|
||||
self.wait_prompt()
|
||||
self.connection.send("echo -e '" + utils.GREEN +
|
||||
"TEST_SETUP_SUCCESS" + utils.RESET + "'\n")
|
||||
self.wait_prompt()
|
||||
self.connection.send('exit\n')
|
||||
|
||||
def run(self):
|
||||
try:
|
||||
self._run()
|
||||
except SenderQuit:
|
||||
log("WARNING: '" + self.description + "' exits too early?")
|
||||
pass
|
||||
except BaseException, e:
|
||||
log("ERROR: task failed: " + str(e))
|
||||
log("ERROR: action is: " + self.action)
|
||||
log("ERROR: description is: " + self.description)
|
||||
os._exit(1)
|
||||
|
||||
self.alive = False
|
||||
|
||||
if self.event != None:
|
||||
self.event.set()
|
||||
|
||||
WAITLOG_RUNNING = 0
|
||||
WAITLOG_SUCCESS = 1
|
||||
WAITLOG_FAILURE = 2
|
||||
|
||||
class WaitlogFailed(Exception):
|
||||
pass
|
||||
|
||||
#'event' is used by main thread to wait for any of several threads to quit.
|
||||
#'Task' passes it the 'SenderThread' above, which sets it when it finishes.
|
||||
class Task:
|
||||
def __init__(self, action, description, machine, user, password, env,
|
||||
logfile, post_action = None, event=None):
|
||||
self.action = action
|
||||
self.description = description
|
||||
self.machine = machine
|
||||
self.user = user
|
||||
self.password = password
|
||||
self.post_action = post_action
|
||||
self.producer = ProducerConsumer()
|
||||
self.logfile = logfile
|
||||
|
||||
prompt = "__OAI_TEST_SETUP_PROMPT__:"
|
||||
prompt_counter = Counter()
|
||||
|
||||
self.connection = connection(description, machine, user, password)
|
||||
|
||||
self.reader = ReaderThread(self.connection.fd, logfile, prompt,
|
||||
prompt_counter, self.producer)
|
||||
self.reader.start()
|
||||
|
||||
self.sender = SenderThread(self.connection.fd, prompt_counter,
|
||||
self.connection, env, action, description,
|
||||
prompt, event)
|
||||
self.sender.start()
|
||||
|
||||
def wait(self, timeout=-1):
|
||||
if self.connection.active == False:
|
||||
return self.connection.retcode
|
||||
try:
|
||||
(pid, ret) = os.waitpid(self.connection.pid, 0)
|
||||
except KeyboardInterrupt, e:
|
||||
log("ERROR: ctrl+c catched! " + str(e))
|
||||
os._exit(1)
|
||||
except BaseException, e:
|
||||
log("ERROR: " + str(e))
|
||||
os._exit(1)
|
||||
self.sender.join()
|
||||
self.reader.join()
|
||||
return ret
|
||||
|
||||
#this function should not be called, it is used internally by 'waitlog'
|
||||
#in mode 'background thread'
|
||||
#TODO: join() the thread at some point
|
||||
def _waitlog_thread(self, task, s):
|
||||
consumed = 0
|
||||
while True:
|
||||
consumed = task.producer.get(consumed)
|
||||
if consumed == -1:
|
||||
log("ERROR: string '" + s + "' not found in logfile " +
|
||||
task.logfile)
|
||||
task.waitlog_state = WAITLOG_FAILURE
|
||||
task.waitlog_event.set()
|
||||
return
|
||||
if s in open(task.logfile).read():
|
||||
task.waitlog_state = WAITLOG_SUCCESS
|
||||
task.waitlog_event.set()
|
||||
return
|
||||
|
||||
#two ways to wait for a string in the log file:
|
||||
# - blocking way
|
||||
# - background thread, using an Event to signal success/failure
|
||||
def waitlog(self, s, event=None):
|
||||
if event != None:
|
||||
self.waitlog_state = WAITLOG_RUNNING
|
||||
self.waitlog_event = event
|
||||
self.waitlog_thread = \
|
||||
threading.Thread(target=self._waitlog_thread,
|
||||
args=(self, s))
|
||||
self.waitlog_thread.start()
|
||||
return
|
||||
|
||||
#TODO: optimize, do not process all the file at each wakeup
|
||||
consumed = 0
|
||||
while True:
|
||||
consumed = self.producer.get(consumed)
|
||||
if consumed == -1:
|
||||
log("ERROR: string '" + s + "' not found in logfile " +
|
||||
self.logfile)
|
||||
raise WaitlogFailed()
|
||||
if s in open(self.logfile).read():
|
||||
return
|
||||
|
||||
def sendnow(self, x):
|
||||
self.connection.send(x)
|
||||
|
||||
def alive(self):
|
||||
return self.sender.alive
|
||||
|
||||
def kill(self):
|
||||
self.connection.kill()
|
||||
#put some error log in logfile, for verbosity
|
||||
try:
|
||||
f = open(self.logfile, "a+")
|
||||
f.write("\n\n" + utils.RED + "TEST_SETUP_ERROR: " + utils.RESET +
|
||||
"task killed by test setup\n\n");
|
||||
close(f)
|
||||
except BaseException, e:
|
||||
pass
|
||||
|
||||
def postaction(self):
|
||||
if self.post_action != None:
|
||||
out = utils.quickshell(self.post_action)
|
||||
if len(out):
|
||||
log("INFO: task '" + self.description +
|
||||
"' post_action '" + self.post_action + "' says: ")
|
||||
for l in out.splitlines():
|
||||
log("INFO: " + l)
|
||||
84
cmake_targets/autotests/v2/utils.py
Normal file
84
cmake_targets/autotests/v2/utils.py
Normal file
@@ -0,0 +1,84 @@
|
||||
import subprocess, os, thread, sys, time
|
||||
|
||||
#logging facitiliy
|
||||
#TODO: simplify (a first version redefined stdout, then we replaced 'print'
|
||||
#instead, keeping stuff as is)
|
||||
class Logger:
|
||||
def __init__(self, stream):
|
||||
self.stream = stream
|
||||
self.start_of_line = True
|
||||
self.lock = thread.allocate_lock()
|
||||
openair_dir = os.environ.get('OPENAIR_DIR')
|
||||
if openair_dir == None:
|
||||
print "FATAL: no OPENAIR_DIR"
|
||||
os._exit(1)
|
||||
try:
|
||||
self.logfile = open(openair_dir +
|
||||
"/cmake_targets/autotests/log/python.stdout", "w")
|
||||
except BaseException, e:
|
||||
print "FATAL: cannot create log file"
|
||||
print e
|
||||
os._exit(1)
|
||||
def put(self, data):
|
||||
self.stream.write(data)
|
||||
self.logfile.write(data)
|
||||
def write(self, data):
|
||||
self.lock.acquire()
|
||||
for c in data:
|
||||
if self.start_of_line:
|
||||
self.start_of_line = False
|
||||
t = time.strftime("%H:%M:%S", time.localtime()) + ": "
|
||||
self.stream.write(t)
|
||||
self.logfile.write(t)
|
||||
self.put(c)
|
||||
if c == '\n':
|
||||
self.start_of_line = True
|
||||
self.stream.flush()
|
||||
self.logfile.flush()
|
||||
self.lock.release()
|
||||
logger = Logger(sys.stdout)
|
||||
def log(x):
|
||||
logger.write(x + "\n")
|
||||
|
||||
#check if given test is in list
|
||||
#it is in list if one of the strings in 'list' is at the beginning of 'test'
|
||||
def test_in_list(test, list):
|
||||
for check in list:
|
||||
check=check.replace('+','')
|
||||
if (test.startswith(check)):
|
||||
return True
|
||||
return False
|
||||
|
||||
#run a local command in a shell
|
||||
def quickshell(command):
|
||||
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT)
|
||||
(retout, reterr) = process.communicate()
|
||||
if (process.returncode != 0):
|
||||
log("ERROR: shell command failed: " + command)
|
||||
if len(retout):
|
||||
log("ERROR: command says: ")
|
||||
for l in retout.splitlines():
|
||||
log("ERROR: " + l)
|
||||
os._exit(1)
|
||||
return retout
|
||||
|
||||
RED="\x1b[31m"
|
||||
GREEN="\x1b[32m"
|
||||
YELLOW="\x1b[33m"
|
||||
RESET="\x1b[m"
|
||||
|
||||
#an exception raised when a test fails
|
||||
class TestFailed(Exception):
|
||||
pass
|
||||
|
||||
#this function returns True if a test in 'x' is set to True
|
||||
#to be used as: if do_tests(tests['b210']['alu']) ...
|
||||
def do_tests(x):
|
||||
if type(x) == list:
|
||||
for v in x:
|
||||
if do_tests(v): return True
|
||||
return False
|
||||
if type(x) == dict: return do_tests(x.values())
|
||||
if x == True: return True
|
||||
return False
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
@@ -33,6 +33,13 @@ ORIGIN_PATH=$PWD
|
||||
THIS_SCRIPT_PATH=$(dirname $(readlink -f $0))
|
||||
source $THIS_SCRIPT_PATH/tools/build_helper
|
||||
|
||||
# set environment variables (OPENAIR_HOME, ...)
|
||||
set_openair_env
|
||||
|
||||
#variables for UE data generation
|
||||
gen_nvram_path=$OPENAIR_DIR/targets/bin
|
||||
conf_nvram_path=$OPENAIR_DIR/openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf
|
||||
|
||||
MSC_GEN="False"
|
||||
XFORMS="True"
|
||||
FLEXRAN_AGENT_SB_IF="True"
|
||||
@@ -41,7 +48,7 @@ VCD_TIMING="False"
|
||||
DEADLINE_SCHEDULER_FLAG_USER="False"
|
||||
FORCE_DEADLINE_SCHEDULER_FLAG_USER=""
|
||||
CPU_AFFINITY_FLAG_USER="False" #Only valid when lowlatecy flag is set to False
|
||||
REL="Rel10"
|
||||
REL="Rel14"
|
||||
HW="None"
|
||||
TP="None"
|
||||
NOS1=0
|
||||
@@ -54,20 +61,25 @@ BUILD_DOXYGEN=0
|
||||
T_TRACER="False"
|
||||
DISABLE_HARDWARE_DEPENDENCY="False"
|
||||
CMAKE_BUILD_TYPE=""
|
||||
CMAKE_CMD="$CMAKE"
|
||||
UE_AUTOTEST_TRACE="False"
|
||||
UE_DEBUG_TRACE="False"
|
||||
UE_TIMING_TRACE="False"
|
||||
DISABLE_LOG_X="False"
|
||||
BUILD_ECLIPSE=0
|
||||
trap handle_ctrl_c INT
|
||||
|
||||
function print_help() {
|
||||
echo_info '
|
||||
echo_info "
|
||||
This program installs OpenAirInterface Software
|
||||
You should have ubuntu 14.xx, updated, and the Linux kernel >= 3.14
|
||||
Options
|
||||
-h
|
||||
This help
|
||||
-c | --clean
|
||||
Erase all files to make a rebuild from start"
|
||||
Erase all files to make a rebuild from start
|
||||
-C | --clean-all
|
||||
Erase all files made by previous compilations, installations"
|
||||
Erase all files made by previous compilations, installations
|
||||
--clean-kernel
|
||||
Erase previously installed features in kernel: iptables, drivers, ...
|
||||
-I | --install-external-packages
|
||||
@@ -82,14 +94,19 @@ Options
|
||||
--eNB
|
||||
Makes the LTE softmodem
|
||||
--UE
|
||||
Makes the UE specific parts (ue_ip, usim, nvram)
|
||||
Makes the UE specific parts (ue_ip, usim, nvram) from the given configuration file
|
||||
--UE-conf-nvram [configuration file]
|
||||
Specify conf_nvram_path (default \"$conf_nvram_path\")
|
||||
--UE-gen-nvram [output path]
|
||||
Specify gen_nvram_path (default \"$gen_nvram_path\")
|
||||
--RRH
|
||||
Makes the RRH
|
||||
-a | --agent
|
||||
Enables agent for software-defined control of the eNB
|
||||
-r | --3gpp-release
|
||||
default is Rel10,
|
||||
default is Rel14,
|
||||
Rel8 limits the implementation to 3GPP Release 8 version
|
||||
Rel10 limits the implementation to 3GPP Release 10 version
|
||||
-w | --hardware
|
||||
EXMIMO, USRP, BLADERF, ETHERNET, LMSSDR, None (Default)
|
||||
Adds this RF board support (in external packages installation and in compilation)
|
||||
@@ -97,7 +114,7 @@ Options
|
||||
ETHERNET , None
|
||||
Adds this trasport protocol support in compilation
|
||||
--oaisim
|
||||
Makes the oaisim simulator. Hardware will be defaulted to "None".
|
||||
Makes the oaisim simulator. Hardware will be defaulted to \"None\".
|
||||
--phy_simulators
|
||||
Makes the unitary tests Layer 1 simulators
|
||||
--core_simulators
|
||||
@@ -133,6 +150,14 @@ Options
|
||||
Disable HW dependency during installation
|
||||
--ue-autotest-trace
|
||||
Enable specific traces for UE autotest framework
|
||||
--ue-trace
|
||||
Enable traces for UE debugging
|
||||
--ue-timing
|
||||
Enable traces for timing
|
||||
--disable-log
|
||||
Disable all LOG_* macros
|
||||
--build-eclipse
|
||||
Build eclipse project files. Paths are auto corrected by fixprj.sh
|
||||
Usage (first build):
|
||||
oaisim (eNB + UE): ./build_oai -I --oaisim -x --install-system-files
|
||||
Eurecom EXMIMO + COTS UE : ./build_oai -I --eNB -x --install-system-files
|
||||
@@ -140,11 +165,12 @@ Usage (first build):
|
||||
Usage (Regular):
|
||||
oaisim : ./build_oai --oaisim -x
|
||||
Eurecom EXMIMO + OAI ENB : ./build_oai --eNB -x
|
||||
NI/ETTUS B201 + OAI ENB : ./build_oai --eNB -x -w USRP'
|
||||
NI/ETTUS B201 + OAI ENB : ./build_oai --eNB -x -w USRP"
|
||||
}
|
||||
|
||||
|
||||
function main() {
|
||||
|
||||
until [ -z "$1" ]
|
||||
do
|
||||
case "$1" in
|
||||
@@ -170,6 +196,7 @@ function main() {
|
||||
GDB=1
|
||||
CMAKE_BUILD_TYPE="Debug"
|
||||
echo_info "Will Compile with gdb symbols and disable compiler optimization"
|
||||
CMAKE_CMD="$CMAKE_CMD -DCMAKE_BUILD_TYPE=Debug"
|
||||
shift;;
|
||||
--eNB)
|
||||
eNB=1
|
||||
@@ -183,6 +210,12 @@ function main() {
|
||||
UE=1
|
||||
echo_info "Will compile UE"
|
||||
shift;;
|
||||
--UE-conf-nvram)
|
||||
conf_nvram_path=$(readlink -f "$1")
|
||||
shift 2;;
|
||||
--UE-gen-nvram)
|
||||
gen_nvram_path=$(readlink -f $2)
|
||||
shift 2;;
|
||||
--RRH)
|
||||
RRH=1
|
||||
echo_info "Will compile RRH"
|
||||
@@ -292,6 +325,31 @@ function main() {
|
||||
UE_AUTOTEST_TRACE="True"
|
||||
echo_info "Enabling autotest specific trace for UE"
|
||||
shift 1;;
|
||||
--ue-trace)
|
||||
UE_DEBUG_TRACE="True"
|
||||
echo_info "Enabling UE trace for debug"
|
||||
shift 1;;
|
||||
--ue-timing)
|
||||
UE_TIMING_TRACE="True"
|
||||
echo_info "Enabling UE timing trace"
|
||||
shift 1;;
|
||||
--disable-log)
|
||||
DISABLE_LOG_X="True"
|
||||
echo_info "Disabling all LOG_* traces"
|
||||
shift 1;;
|
||||
--uhd-images-dir)
|
||||
UHD_IMAGES_DIR=$2
|
||||
echo_info "Downloading UHD images in the indicated location"
|
||||
shift 2;;
|
||||
--build-eclipse)
|
||||
BUILD_ECLIPSE=1
|
||||
CMAKE_CMD="$CMAKE_CMD"' -DCMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT=TRUE -G"Eclipse CDT4 - Unix Makefiles"'
|
||||
echo_info "Enabling build eclipse project support"
|
||||
shift 1;;
|
||||
--build-telnetsrv)
|
||||
BUILD_TELNETSRV=1
|
||||
echo_info "Build embedded telnet server"
|
||||
shift ;;
|
||||
-h | --help)
|
||||
print_help
|
||||
exit 1;;
|
||||
@@ -302,6 +360,9 @@ function main() {
|
||||
esac
|
||||
done
|
||||
|
||||
CMAKE_CMD="$CMAKE_CMD .."
|
||||
echo_info "CMAKE_CMD=$CMAKE_CMD"
|
||||
|
||||
#########################################################
|
||||
# check validity of HW and TP parameters for RRH and eNB
|
||||
#########################################################
|
||||
@@ -362,13 +423,16 @@ function main() {
|
||||
echo_info "Flags for Deadline scheduler: $DEADLINE_SCHEDULER_FLAG_USER"
|
||||
echo_info "Flags for CPU Affinity: $CPU_AFFINITY_FLAG_USER"
|
||||
|
||||
if [ -n "$UHD_IMAGES_DIR" ] && [ -z "$INSTALL_EXTERNAL" ]; then
|
||||
echo_error "UHD images download settings will not be applied without -I present"
|
||||
exit
|
||||
fi
|
||||
############################################
|
||||
# setting and printing OAI envs, we should check here
|
||||
############################################
|
||||
|
||||
echo_info "2. Setting the OAI PATHS ..."
|
||||
|
||||
set_openair_env
|
||||
cecho "OPENAIR_DIR = $OPENAIR_DIR" $green
|
||||
|
||||
# for conf files copy in this bash script
|
||||
@@ -399,7 +463,7 @@ function main() {
|
||||
echo_info "installing packages for USRP support"
|
||||
check_install_usrp_uhd_driver
|
||||
if [ ! "$DISABLE_HARDWARE_DEPENDENCY" == "True" ]; then
|
||||
install_usrp_uhd_driver
|
||||
install_usrp_uhd_driver $UHD_IMAGES_DIR
|
||||
fi
|
||||
fi
|
||||
if [ "$HW" == "OAI_BLADERF" ] ; then
|
||||
@@ -409,6 +473,11 @@ function main() {
|
||||
flash_firmware_bladerf
|
||||
fi
|
||||
fi
|
||||
if [ "$FLEXRAN_AGENT" == "1" ] ; then
|
||||
echo_info "installing protobuf/protobuf-c for flexran agent support"
|
||||
install_protobuf_from_source
|
||||
install_protobuf_c_from_source
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$INSTALL_OPTIONAL" = "1" ] ; then
|
||||
@@ -418,9 +487,9 @@ function main() {
|
||||
|
||||
if [ "$oaisim" = "1" ] ; then
|
||||
#to be discussed
|
||||
# there is no RF device and no transport protocol
|
||||
# there is no RF device transport protocol
|
||||
HW="None"
|
||||
TP="None"
|
||||
TP="ETHERNET"
|
||||
|
||||
if [ "$XFORMS" == "True" ] ; then
|
||||
PRINT_STATS="True"
|
||||
@@ -439,6 +508,9 @@ function main() {
|
||||
lte_exec=lte-softmodem
|
||||
fi
|
||||
|
||||
# configuration module libraries, one currently available, using libconfig
|
||||
config_libconfig_shlib=params_libconfig
|
||||
|
||||
# first generate the CMakefile in the right directory
|
||||
if [ "$eNB" = "1" -o "$UE" = "1" -o "$HW" = "EXMIMO" ] ; then
|
||||
|
||||
@@ -465,9 +537,17 @@ function main() {
|
||||
echo "set (CPU_AFFINITY \"${CPU_AFFINITY_FLAG_USER}\" )" >>$cmake_file
|
||||
echo "set ( T_TRACER $T_TRACER )" >> $cmake_file
|
||||
echo "set (UE_AUTOTEST_TRACE $UE_AUTOTEST_TRACE)" >> $cmake_file
|
||||
echo "set (UE_DEBUG_TRACE $UE_DEBUG_TRACE)" >> $cmake_file
|
||||
echo "set (UE_TIMING_TRACE $UE_TIMING_TRACE)" >> $cmake_file
|
||||
echo "set (DISABLE_LOG_X $DISABLE_LOG_X)" >> $cmake_file
|
||||
if [ "$UE" = 1 -a "$NOS1" = "0" ] ; then
|
||||
echo_info "Compiling UE S1 build : enabling Linux and NETLINK"
|
||||
echo "set (LINUX True )" >> $cmake_file
|
||||
echo "set (PDCP_USE_NETLINK True )" >> $cmake_file
|
||||
fi
|
||||
echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file
|
||||
cd $DIR/$lte_build_dir/build
|
||||
cmake ..
|
||||
eval $CMAKE_CMD
|
||||
fi
|
||||
|
||||
if [ "$eNB" = "1" -o "$UE" = "1" ] ; then
|
||||
@@ -476,6 +556,11 @@ function main() {
|
||||
$lte_build_dir $lte_exec \
|
||||
$lte_exec $dbin/$lte_exec.$REL
|
||||
|
||||
# mandatory shared lib
|
||||
compilations \
|
||||
$lte_build_dir $config_libconfig_shlib \
|
||||
lib$config_libconfig_shlib.so $dbin/lib$config_libconfig_shlib.so
|
||||
|
||||
if [ "$NOS1" = "1" ] ; then
|
||||
compilations \
|
||||
$lte_build_dir nasmesh \
|
||||
@@ -496,7 +581,7 @@ function main() {
|
||||
|
||||
# mkdir -p $DIR/at_commands/build
|
||||
# cd $DIR/at_commands/build
|
||||
# cmake ..
|
||||
# eval $CMAKE_CMD
|
||||
# compilations \
|
||||
# at_commands at_nas_ue \
|
||||
# at_nas_ue $dbin/at_nas_ue
|
||||
@@ -505,22 +590,24 @@ function main() {
|
||||
mkdir -p $DIR/nas_sim_tools/build
|
||||
cd $DIR/nas_sim_tools/build
|
||||
|
||||
cmake ..
|
||||
eval $CMAKE_CMD
|
||||
compilations \
|
||||
nas_sim_tools usim \
|
||||
usim $dbin/usim
|
||||
compilations \
|
||||
nas_sim_tools nvram \
|
||||
nvram $dbin/nvram
|
||||
compilations \
|
||||
nas_sim_tools conf2uedata \
|
||||
conf2uedata $dbin/conf2uedata
|
||||
|
||||
# generate USIM data
|
||||
if [ -f $dbin/nvram ]; then
|
||||
install_nas_tools $dbin $dconf
|
||||
if [ -f $dbin/conf2uedata ]; then
|
||||
install_nas_tools $conf_nvram_path $gen_nvram_path
|
||||
echo_info "Copying UE specific part to $DIR/$lte_build_dir/build"
|
||||
cp -Rvf $dbin/.ue_emm.nvram $DIR/$lte_build_dir/build
|
||||
cp -Rvf $dbin/.ue.nvram $DIR/$lte_build_dir/build
|
||||
cp -Rvf $dbin/.usim.nvram $DIR/$lte_build_dir/build
|
||||
|
||||
cp -Rvf $dbin/.ue_emm.nvram0 $DIR/$lte_build_dir/build
|
||||
cp -Rvf $dbin/.ue.nvram0 $DIR/$lte_build_dir/build
|
||||
cp -Rvf $dbin/.usim.nvram0 $DIR/$lte_build_dir/build
|
||||
else
|
||||
echo_warning "not generated UE NAS files: binaries not found"
|
||||
fi
|
||||
@@ -532,13 +619,13 @@ function main() {
|
||||
mkdir -p build
|
||||
cd build
|
||||
rm -f *sim
|
||||
cmake ..
|
||||
eval $CMAKE_CMD
|
||||
fi
|
||||
|
||||
if [ "$SIMUS_PHY" = "1" ] ; then
|
||||
# lte unitary simulators compilation
|
||||
echo_info "Compiling unitary tests simulators"
|
||||
simlist="dlsim ulsim pucchsim prachsim pdcchsim pbchsim mbmssim"
|
||||
simlist="dlsim_tm4 dlsim ulsim pucchsim prachsim pdcchsim pbchsim mbmssim"
|
||||
for f in $simlist ; do
|
||||
compilations \
|
||||
lte-simulators $f \
|
||||
@@ -610,7 +697,7 @@ function main() {
|
||||
[ "$CLEAN" = "1" ] && rm -rf $DIR/$oaisim_build_dir/build
|
||||
mkdir -p $DIR/$oaisim_build_dir/build
|
||||
cd $DIR/$oaisim_build_dir/build
|
||||
cmake ..
|
||||
eval $CMAKE_CMD
|
||||
compilations \
|
||||
$oaisim_build_dir $oaisim_exec \
|
||||
$oaisim_exec $dbin/$oaisim_exec.$REL
|
||||
@@ -621,7 +708,7 @@ function main() {
|
||||
echo_info "Compiling at_nas_ue"
|
||||
mkdir -p $DIR/at_commands/build
|
||||
cd $DIR/at_commands/build
|
||||
cmake ..
|
||||
eval $CMAKE_CMD
|
||||
compilations \
|
||||
at_commands at_nas_ue \
|
||||
at_nas_ue $dbin/at_nas_ue
|
||||
@@ -635,17 +722,20 @@ function main() {
|
||||
[ "$CLEAN" = "1" ] && rm -rf $DIR/nas_sim_tools/build
|
||||
mkdir -p $DIR/nas_sim_tools/build
|
||||
cd $DIR/nas_sim_tools/build
|
||||
cmake ..
|
||||
eval $CMAKE_CMD
|
||||
compilations \
|
||||
nas_sim_tools usim \
|
||||
usim $dbin/usim
|
||||
compilations \
|
||||
nas_sim_tools nvram \
|
||||
nvram $dbin/nvram
|
||||
compilations \
|
||||
nas_sim_tools conf2uedata \
|
||||
conf2uedata $dbin/conf2uedata
|
||||
|
||||
# generate USIM data
|
||||
if [ -f $dbin/nvram ]; then
|
||||
install_nas_tools $dbin $dconf
|
||||
if [ -f $dbin/conf2uedata ]; then
|
||||
install_nas_tools $conf_nvram_path $gen_nvram_path
|
||||
else
|
||||
echo_warning "not generated UE NAS files: binaries not found"
|
||||
fi
|
||||
@@ -661,11 +751,20 @@ function main() {
|
||||
CMakeFiles/nasmesh/nasmesh.ko $dbin/nasmesh.ko
|
||||
|
||||
#oai_nw_drv
|
||||
compilations \
|
||||
$oaisim_build_dir oai_nw_drv \
|
||||
CMakeFiles/oai_nw_drv/oai_nw_drv.ko $dbin/oai_nw_drv.ko
|
||||
#compilations \
|
||||
# $oaisim_build_dir oai_nw_drv \
|
||||
# CMakeFiles/oai_nw_drv/oai_nw_drv.ko $dbin/oai_nw_drv.ko
|
||||
fi
|
||||
|
||||
if [ "$TP" == "ETHERNET" ] ; then
|
||||
compilations \
|
||||
$oaisim_build_dir oai_eth_transpro \
|
||||
liboai_eth_transpro.so $dbin/liboai_eth_transpro.so.$REL
|
||||
ln -sf liboai_eth_transpro.so liboai_transpro.so
|
||||
ln -sf $dbin/liboai_eth_transpro.so.$REL $dbin/liboai_transpro.so
|
||||
echo_info "liboai_transpro.so is linked with ETHERNET library"
|
||||
fi
|
||||
|
||||
cmake_file=$DIR/oaisim_mme_build_oai/CMakeLists.txt
|
||||
cp $DIR/oaisim_mme_build_oai/CMakeLists.template $cmake_file
|
||||
echo "set ( CMAKE_BUILD_TYPE $CMAKE_BUILD_TYPE )" >> $cmake_file
|
||||
@@ -680,7 +779,7 @@ function main() {
|
||||
#[ "$CLEAN" = "1" ] && rm -rf $DIR/oaisim_mme_build_oai/build
|
||||
#mkdir -p $DIR/oaisim_mme_build_oai/build
|
||||
#cd $DIR/oaisim_mme_build_oai/build
|
||||
#cmake ..
|
||||
#eval $CMAKE_CMD
|
||||
#compilations \
|
||||
# oaisim_mme_build_oai oaisim_mme \
|
||||
# oaisim_mme $dbin/oaisim_mme.$REL
|
||||
@@ -710,47 +809,59 @@ function main() {
|
||||
echo "set ( T_TRACER $T_TRACER )" >> $cmake_file
|
||||
echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file
|
||||
cd $DIR/$rrh_build_dir/build
|
||||
cmake ..
|
||||
eval $CMAKE_CMD
|
||||
compilations \
|
||||
rrh_gw rrh_gw \
|
||||
rrh_gw $dbin/rrh_gw
|
||||
|
||||
fi
|
||||
|
||||
# Telnet server compilation
|
||||
#####################
|
||||
if [ "$BUILD_TELNETSRV" = "1" ] ; then
|
||||
|
||||
telnetsrv_build_dir=telnetsrv
|
||||
mkdir -p $DIR/$telnetsrv_build_dir/build
|
||||
cd $DIR/$telnetsrv_build_dir/build
|
||||
echo_info "Compiling telnet server library ..."
|
||||
|
||||
[ "$CLEAN" = "1" ] && rm -rf $DIR/$telnetsrv_build_dir
|
||||
cmake_file=$OPENAIR_DIR/common/utils/$telnetsrv_build_dir/CMakeLists.txt
|
||||
cd $DIR/$telnetsrv_build_dir/build
|
||||
eval "$CMAKE_CMD $OPENAIR_DIR/common/utils/$telnetsrv_build_dir/"
|
||||
make
|
||||
|
||||
fi
|
||||
# build RF device and transport protocol libraries
|
||||
#####################################
|
||||
if [ "$eNB" = "1" -o "$RRH" = "1" ] ; then
|
||||
if [ "$eNB" = "1" -o "$UE" = "1" -o "$RRH" = "1" ] ; then
|
||||
|
||||
if [ "$eNB" = "1" ] ; then
|
||||
if [ "$eNB" = "1" -o "$UE" = "1" ] ; then
|
||||
build_dir=$lte_build_dir
|
||||
else
|
||||
build_dir=$rrh_build_dir
|
||||
fi
|
||||
|
||||
# build RF device libraries (currently EXMIMO is not complied with the rest of HW targets)
|
||||
# build RF device libraries
|
||||
if [ "$HW" != "None" ] ; then
|
||||
rm -f liboai_device.so
|
||||
rm -f $dbin/liboai_device.so
|
||||
|
||||
|
||||
# link liboai_device.so with the selected RF device library
|
||||
if [ "$HW" == "EXMIMO" ] ; then
|
||||
|
||||
#add exmimo compilation
|
||||
#TODO EXMIMO library support
|
||||
compilations \
|
||||
$build_dir oai_exmimodevif \
|
||||
liboai_exmimodevif.so $dbin/liboai_exmimodevif.so.$REL
|
||||
|
||||
ln -sf liboai_exmimodevif.so liboai_device.so
|
||||
ln -sf $dbin/liboai_exmimodevif.so.$REL $dbin/liboai_device.so
|
||||
echo_info "liboai_device.so is linked to EXMIMO device library"
|
||||
elif [ "$HW" == "OAI_USRP" ] ; then
|
||||
if [ -d "/usr/include/uhd" ] ; then
|
||||
compilations \
|
||||
$build_dir oai_usrpdevif \
|
||||
liboai_usrpdevif.so $dbin/liboai_usrpdevif.so.$REL
|
||||
fi
|
||||
compilations \
|
||||
$build_dir oai_usrpdevif \
|
||||
liboai_usrpdevif.so $dbin/liboai_usrpdevif.so.$REL
|
||||
|
||||
ln -s liboai_usrpdevif.so liboai_device.so
|
||||
ln -s $dbin/liboai_usrpdevif.so.$REL $dbin/liboai_device.so
|
||||
ln -sf liboai_usrpdevif.so liboai_device.so
|
||||
ln -sf $dbin/liboai_usrpdevif.so.$REL $dbin/liboai_device.so
|
||||
echo_info "liboai_device.so is linked to USRP device library"
|
||||
elif [ "$HW" == "OAI_BLADERF" ] ; then
|
||||
if [ -f "/usr/include/libbladeRF.h" ] ; then
|
||||
@@ -759,8 +870,8 @@ function main() {
|
||||
liboai_bladerfdevif.so $dbin/liboai_bladerfdevif.so.$REL
|
||||
fi
|
||||
|
||||
ln -s liboai_bladerfdevif.so liboai_device.so
|
||||
ln -s $dbin/liboai_bladerfdevif.so.$REL $dbin/liboai_device.so
|
||||
ln -sf liboai_bladerfdevif.so liboai_device.so
|
||||
ln -sf $dbin/liboai_bladerfdevif.so.$REL $dbin/liboai_device.so
|
||||
echo_info "liboai_device.so is linked to BLADERF device library"
|
||||
elif [ "$HW" == "OAI_LMSSDR" ] ; then
|
||||
# if [ -f "/usr/include/libbladeRF.h" ] ; then
|
||||
@@ -769,8 +880,8 @@ function main() {
|
||||
liboai_lmssdrdevif.so $dbin/liboai_lmssdrdevif.so.$REL
|
||||
# fi
|
||||
|
||||
ln -s liboai_lmssdrdevif.so liboai_device.so
|
||||
ln -s $dbin/liboai_lmssdrdevif.so.$REL $dbin/liboai_device.so
|
||||
ln -sf liboai_lmssdrdevif.so liboai_device.so
|
||||
ln -sf $dbin/liboai_lmssdrdevif.so.$REL $dbin/liboai_device.so
|
||||
echo_info "liboai_device.so is linked to LMSSDR device library"
|
||||
else
|
||||
echo_info "liboai_device.so is not linked to any device library"
|
||||
@@ -786,8 +897,8 @@ function main() {
|
||||
compilations \
|
||||
$build_dir oai_eth_transpro \
|
||||
liboai_eth_transpro.so $dbin/liboai_eth_transpro.so.$REL
|
||||
ln -s liboai_eth_transpro.so liboai_transpro.so
|
||||
ln -s $dbin/liboai_eth_transpro.so.$REL $dbin/liboai_transpro.so
|
||||
ln -sf liboai_eth_transpro.so liboai_transpro.so
|
||||
ln -sf $dbin/liboai_eth_transpro.so.$REL $dbin/liboai_transpro.so
|
||||
echo_info "liboai_transpro.so is linked with ETHERNET library"
|
||||
fi
|
||||
fi
|
||||
@@ -805,7 +916,7 @@ fi
|
||||
[ "$CLEAN" = "1" ] && rm -rf $OPENAIR_DIR/cmake_targets/doxygen/build
|
||||
mkdir -p $OPENAIR_DIR/cmake_targets/doxygen/build
|
||||
cd $OPENAIR_DIR/cmake_targets/doxygen/build
|
||||
cmake ..
|
||||
eval $CMAKE_CMD
|
||||
make doc
|
||||
) >& $doxygen_log
|
||||
fi
|
||||
|
||||
6
cmake_targets/build_ue
Normal file
6
cmake_targets/build_ue
Normal file
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
#sudo ./build_oai -c -C -I --install-optional-packages --install-system-files --UE -w USRP -V
|
||||
#sudo ./build_oai -c -C -I --install-optional-packages --UE -w USRP -V
|
||||
#sudo ./build_oai -c -C --UE -w USRP -V
|
||||
sudo ./build_oai -c -C --UE -w USRP
|
||||
#sudo ./build_oai -c -C --UE -w USRP --build-eclipse
|
||||
@@ -3,12 +3,12 @@ set(PACKAGE_NAME "unitary_tests_simulators")
|
||||
set(PHYSIM True)
|
||||
set(RF_BOARD None)
|
||||
set(XFORMS True)
|
||||
|
||||
set(ENABLE_ITTI False)
|
||||
set(DEBUG_PHY False)
|
||||
set(MU_RECIEVER False)
|
||||
set(RANDOM_BF False)
|
||||
set(PBS_SIM False)
|
||||
set(PERFECT_CE False)
|
||||
set(PERFECT_CE True)
|
||||
set(NAS_UE False)
|
||||
set(MESSAGE_CHART_GENERATOR False)
|
||||
|
||||
|
||||
@@ -2,70 +2,89 @@ cmake_minimum_required(VERSION 2.8)
|
||||
|
||||
project(NAS_SIM_TOOLS)
|
||||
|
||||
include(FindPkgConfig)
|
||||
pkg_search_module(CONFIG libconfig REQUIRED)
|
||||
include_directories(${CONFIG_INCLUDE_DIRS})
|
||||
add_definitions(-std=gnu99)
|
||||
|
||||
ENABLE_LANGUAGE(C)
|
||||
#Sends the -std=c99 flag to the gcc compiler
|
||||
add_definitions(-std=c99)
|
||||
add_definitions(-DNAS_UE)
|
||||
|
||||
set(CMAKE_C_FLAGS
|
||||
"${CMAKE_C_FLAGS} ${C_FLAGS_PROCESSOR} -Werror -Wall -Wstrict-prototypes -Wno-packed-bitfield-compat -g")
|
||||
|
||||
set(OPENAIR_DIR $ENV{OPENAIR_DIR})
|
||||
set(OPENAIR1_DIR $ENV{OPENAIR_DIR}/openair1)
|
||||
set(OPENAIR2_DIR $ENV{OPENAIR_DIR}/openair2)
|
||||
set(OPENAIR3_DIR $ENV{OPENAIR_DIR}/openair3)
|
||||
set(OPENAIR3_DIR $ENV{OPENAIR_DIR}/openair3)
|
||||
set(OPENAIR_TARGETS $ENV{OPENAIR_DIR}/targets)
|
||||
|
||||
#set(EXECUTABLE_OUTPUT_PATH ${OPENAIR_DIR}/targets/bin)
|
||||
|
||||
|
||||
# Add .h files for dependancies
|
||||
set(usim_SRC
|
||||
${OPENAIR_DIR}/openair3/NAS/TOOLS/usim_data.c
|
||||
set(CONF2UEDATA_LIB_SRC
|
||||
${OPENAIR_DIR}/openair3/NAS/TOOLS/conf_emm.c
|
||||
${OPENAIR_DIR}/openair3/NAS/TOOLS/conf_user_data.c
|
||||
${OPENAIR_DIR}/openair3/NAS/TOOLS/conf_usim.c
|
||||
${OPENAIR_DIR}/openair3/NAS/TOOLS/conf_network.c
|
||||
${OPENAIR_DIR}/openair3/NAS/TOOLS/conf_user_plmn.c
|
||||
${OPENAIR_DIR}/openair3/NAS/TOOLS/conf_parser.c
|
||||
${OPENAIR_DIR}/openair3/NAS/TOOLS/fs.c
|
||||
${OPENAIR_DIR}/openair3/NAS/TOOLS/display.c
|
||||
${OPENAIR_DIR}/openair3/NAS/UE/API/USIM/usim_api.c
|
||||
${OPENAIR_DIR}/openair3/NAS/UE/API/USIM/aka_functions.c
|
||||
${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/memory.c
|
||||
${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/nas_log.c
|
||||
${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/OctetString.c
|
||||
${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/TLVEncoder.c
|
||||
${OPENAIR_DIR}/common/utils/utils.c
|
||||
)
|
||||
set(usim_HDR
|
||||
${OPENAIR_DIR}/openair3/NAS/TOOLS/network.h
|
||||
|
||||
set(conf2uedata_HDR
|
||||
${OPENAIR_DIR}/openair3/NAS/TOOLS/conf2uedata.h
|
||||
${OPENAIR_DIR}/openair3/NAS/TOOLS/conf_emm.h
|
||||
${OPENAIR_DIR}/openair3/NAS/UE/API/USIM/usim_api.h
|
||||
${OPENAIR_DIR}/openair3/NAS/UE/API/USIM/aka_functions.h
|
||||
${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/memory.h
|
||||
${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/nas_log.h
|
||||
${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/OctetString.h
|
||||
${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/TLVEncoder.h
|
||||
${OPENAIR_DIR}/common/utils/utils.h
|
||||
)
|
||||
|
||||
include_directories(
|
||||
${OPENAIR_DIR}/common/utils
|
||||
${OPENAIR_DIR}/openair3/NAS/UE
|
||||
${OPENAIR_DIR}/openair3/NAS/COMMON
|
||||
${OPENAIR_DIR}/openair3/NAS/UE/API/USER
|
||||
${OPENAIR_DIR}/openair3/NAS/UE/API/USIM
|
||||
${OPENAIR_DIR}/openair3/NAS/UE/EMM/
|
||||
${OPENAIR_DIR}/openair3/NAS/UE/ESM/
|
||||
${OPENAIR_DIR}/openair3/NAS/COMMON/IES/
|
||||
${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL
|
||||
)
|
||||
ADD_EXECUTABLE(usim ${usim_SRC} ${usim_HDR})
|
||||
|
||||
# conf2uedata binary
|
||||
|
||||
set(conf2uedata_SRC
|
||||
${OPENAIR_DIR}/openair3/NAS/TOOLS/conf2uedata.c
|
||||
${CONF2UEDATA_LIB_SRC}
|
||||
)
|
||||
|
||||
add_executable(conf2uedata ${conf2uedata_SRC} ${conf2uedata_HDR} )
|
||||
target_link_libraries(conf2uedata ${CONFIG_LIBRARIES})
|
||||
|
||||
# usim binary
|
||||
|
||||
set(usim_SRC
|
||||
${OPENAIR_DIR}/openair3/NAS/TOOLS/usim.c
|
||||
${CONF2UEDATA_LIB_SRC}
|
||||
)
|
||||
|
||||
|
||||
add_executable(usim ${usim_SRC} ${conf2uedata_HDR} )
|
||||
target_link_libraries(usim ${CONFIG_LIBRARIES})
|
||||
|
||||
# nvram binary
|
||||
|
||||
set(nvram_SRC
|
||||
${OPENAIR_DIR}/openair3/NAS/TOOLS/ue_data.c
|
||||
${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/memory.c
|
||||
${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/nas_log.c
|
||||
${OPENAIR_DIR}/openair3/NAS/TOOLS/nvram.c
|
||||
${CONF2UEDATA_LIB_SRC}
|
||||
)
|
||||
|
||||
set(nvram_HDR
|
||||
${OPENAIR_DIR}/openair3/NAS/UE/EMM/emmData.h
|
||||
${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/memory.h
|
||||
${OPENAIR_DIR}/openair3/NAS/COMMON/userDef.h
|
||||
)
|
||||
|
||||
ADD_EXECUTABLE(nvram ${nvram_SRC} ${nvram_HDR})
|
||||
|
||||
#install (TARGETS usim DESTINATION ${EXECUTABLE_OUTPUT_PATH})
|
||||
#install (TARGETS nvram DESTINATION ${EXECUTABLE_OUTPUT_PATH})
|
||||
|
||||
#install(CODE "EXECUTE_PROCESS (COMMAND ${OPENAIR_TARGETS}/bin/nvram --gen WORKING_DIRECTORY ${OPENAIR_TARGETS}/bin)")
|
||||
#install(CODE "EXECUTE_PROCESS (COMMAND ${OPENAIR_TARGETS}/bin/usim --gen WORKING_DIRECTORY ${OPENAIR_TARGETS}/bin)")
|
||||
add_executable(nvram ${nvram_SRC} ${conf2uedata_HDR} )
|
||||
target_link_libraries(nvram ${CONFIG_LIBRARIES})
|
||||
|
||||
3
cmake_targets/snap_environment.sh
Executable file
3
cmake_targets/snap_environment.sh
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
export UHD_IMAGES_DIR=$SNAP/uhd_images
|
||||
exec $@
|
||||
@@ -38,7 +38,7 @@ def outputHeaderToFile(f, filename):
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The OpenAirInterface Software Alliance licenses this file to You under
|
||||
* the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
@@ -24,6 +24,22 @@
|
||||
# authors Laurent Thomas, Lionel GAUTHIER
|
||||
#
|
||||
#######################################
|
||||
if [ ! -f /etc/os-release ]; then
|
||||
echo "No /etc/os-release file found. You're likely on an unsupported distro."
|
||||
exit -1
|
||||
fi
|
||||
OS_DISTRO=$(grep "^ID=" /etc/os-release | sed "s/ID=//" | sed "s/\"//g")
|
||||
OS_RELEASE=$(grep "^VERSION_ID=" /etc/os-release | sed "s/VERSION_ID=//" | sed "s/\"//g")
|
||||
case "$OS_DISTRO" in
|
||||
fedora) OS_BASEDISTRO="fedora"; INSTALLER="dnf"; CMAKE="cmake" ;;
|
||||
rhel) OS_BASEDISTRO="fedora"; INSTALLER="yum"; CMAKE="cmake3" ;;
|
||||
centos) OS_BASEDISTRO="fedora"; INSTALLER="yum"; CMAKE="cmake3" ;;
|
||||
debian) OS_BASEDISTRO="debian"; INSTALLER="apt-get"; CMAKE="cmake" ;;
|
||||
ubuntu) OS_BASEDISTRO="debian"; INSTALLER="apt-get"; CMAKE="cmake" ;;
|
||||
esac
|
||||
KERNEL_VERSION=$(uname -r | cut -d '.' -f1)
|
||||
KERNEL_MAJOR=$(uname -r | cut -d '.' -f2)
|
||||
|
||||
SUDO='sudo -E'
|
||||
|
||||
###############################
|
||||
@@ -66,12 +82,11 @@ echo_info() { cecho "$*" $blue ;}
|
||||
# If we can't check the distribution, it returns "Unknown"
|
||||
# This function return always true as exit code by design
|
||||
# Examples:
|
||||
# Ubuntu16.04
|
||||
# Debian8.5
|
||||
# ubuntu16.04
|
||||
# debian8.5
|
||||
get_distribution_release() {
|
||||
local distributor
|
||||
if distributor=$(lsb_release -si 2>/dev/null) ; then
|
||||
echo $distributor$(lsb_release -sr)
|
||||
if [[ ! -z "$OS_DISTRO$OS_RELEASE" ]]; then
|
||||
echo "$OS_DISTRO$OS_RELEASE"
|
||||
else
|
||||
echo Unknown
|
||||
fi
|
||||
@@ -80,8 +95,11 @@ get_distribution_release() {
|
||||
check_supported_distribution() {
|
||||
local distribution=$(get_distribution_release)
|
||||
case "$distribution" in
|
||||
"Ubuntu16.04") return 0 ;;
|
||||
"Ubuntu14.04") return 0 ;;
|
||||
"ubuntu16.04") return 0 ;;
|
||||
"ubuntu14.04") return 0 ;;
|
||||
"fedora24") return 0 ;;
|
||||
"rhel7") return 0 ;;
|
||||
"centos7") return 0 ;;
|
||||
esac
|
||||
return 1
|
||||
}
|
||||
@@ -136,6 +154,20 @@ clean_all_files() {
|
||||
# Compilers
|
||||
###################################
|
||||
|
||||
#check_warnings:
|
||||
# print error message if the compilation had warnings
|
||||
#argument:
|
||||
# $1: log file
|
||||
check_warnings() {
|
||||
#we look for 'warning:' in the compilation log file
|
||||
#this is how gcc starts a warning
|
||||
#this is not perfect, we may get false positive
|
||||
warning_count=`grep "warning:" "$1"|wc -l`
|
||||
if [ $warning_count -gt 0 ]; then
|
||||
echo_error "WARNING: $warning_count warnings. See $1"
|
||||
fi
|
||||
}
|
||||
|
||||
compilations() {
|
||||
cd $OPENAIR_DIR/cmake_targets/$1/build
|
||||
set +e
|
||||
@@ -153,6 +185,7 @@ compilations() {
|
||||
if [ -s $3 ] ; then
|
||||
cp $3 $4
|
||||
echo_success "$2 compiled"
|
||||
check_warnings "$dlog/$2.$REL.txt"
|
||||
else
|
||||
echo_error "$2 compilation failed"
|
||||
exit 1
|
||||
@@ -169,10 +202,14 @@ install_protobuf_from_source(){
|
||||
(
|
||||
cd /tmp
|
||||
echo "Downloading protobuf"
|
||||
rm -rf /tmp/protobuf-2.6.1.tar.gz* /tmp/protobuf-2.6.1
|
||||
wget https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz
|
||||
tar -xzvf protobuf-2.6.1.tar.gz
|
||||
cd protobuf-2.6.1/
|
||||
#rm -rf /tmp/protobuf-2.6.1.tar.gz* /tmp/protobuf-2.6.1
|
||||
#wget https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz
|
||||
#tar -xzvf protobuf-2.6.1.tar.gz --owner $USER --group $USER --no-same-owner
|
||||
#cd protobuf-2.6.1/
|
||||
rm -rf /tmp/protobuf-cpp-3.3.0.tar.gz* /tmp/protobuf-3.3.0
|
||||
wget https://github.com/google/protobuf/releases/download/v3.3.0/protobuf-cpp-3.3.0.tar.gz
|
||||
tar -xzvf protobuf-cpp-3.3.0.tar.gz --owner $USER --group $USER --no-same-owner
|
||||
cd protobuf-3.3.0/
|
||||
./configure
|
||||
echo "Compiling protobuf"
|
||||
make -j`nproc`
|
||||
@@ -185,6 +222,9 @@ install_protobuf_c_from_source(){
|
||||
protobuf_c_install_log=$OPENAIR_DIR/cmake_targets/log/protobuf_c_install_log.txt
|
||||
echo_info "\nInstalling Google Protobuf_C from sources. The log file for Protobuf_C installation is here: $protobuf_c_install_log "
|
||||
(
|
||||
if [[ "$OS_DISTRO" == "rhel" ]] || [[ "$OS_DISTRO" == "centos" ]]; then
|
||||
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
|
||||
fi
|
||||
cd /tmp
|
||||
echo "Downloading protobuf-c"
|
||||
rm -rf /tmp/protobuf-c
|
||||
@@ -199,7 +239,29 @@ install_protobuf_c_from_source(){
|
||||
) >& $protobuf_c_install_log
|
||||
}
|
||||
|
||||
install_usrp_uhd_driver_from_source(){
|
||||
uhd_install_log=$OPENAIR_DIR/cmake_targets/log/uhd_install_log.txt
|
||||
echo_info "\nInstalling UHD driver from sources. The log file for UHD driver installation is here: $uhd_install_log "
|
||||
(
|
||||
cd /tmp
|
||||
echo "Downloading UHD driver"
|
||||
rm -rf /tmp/uhd
|
||||
git clone git://github.com/EttusResearch/uhd.git
|
||||
cd uhd
|
||||
git checkout tags/release_003_010_001_001
|
||||
mkdir -p host/build
|
||||
cd host/build
|
||||
$CMAKE ../
|
||||
echo "Compiling UHD"
|
||||
make
|
||||
make test
|
||||
$SUDO make install
|
||||
$SUDO ldconfig
|
||||
) >& $uhd_install_log
|
||||
}
|
||||
|
||||
check_install_usrp_uhd_driver(){
|
||||
if [[ "$OS_DISTRO" == "ubuntu" ]]; then
|
||||
#first we remove old installation
|
||||
$SUDO apt-get remove -y uhd || true
|
||||
$SUDO apt-get remove libuhd-dev libuhd003 uhd-host -y
|
||||
@@ -208,34 +270,99 @@ check_install_usrp_uhd_driver(){
|
||||
#The new USRP repository
|
||||
$SUDO add-apt-repository ppa:ettusresearch/uhd -y
|
||||
$SUDO apt-get update
|
||||
$SUDO apt-get -y install python python-tk libboost-all-dev libusb-1.0-0-dev
|
||||
$SUDO apt-get -y install libuhd-dev libuhd003 uhd-host
|
||||
$SUDO apt-get -y --allow-unauthenticated install python python-tk libboost-all-dev libusb-1.0-0-dev
|
||||
$SUDO apt-get -y --allow-unauthenticated install libuhd-dev libuhd003 uhd-host
|
||||
elif [[ "$OS_BASEDISTRO" == "fedora" ]]; then
|
||||
$SUDO $INSTALLER -y install python boost libusb-devel libusbx-devel boost-devel python-mako python-docutils cmake
|
||||
if [[ "$OS_DISTRO" == "rhel" ]] || [[ "$OS_DISTRO" == "centos" ]]; then
|
||||
# until EPEL repo hasn't bumped UHD driver to >=3.10 in EPEL, build driver from source
|
||||
$SUDO $INSTALLER -y remove uhd uhd-devel uhd-firmware
|
||||
install_ursp_uhd_driver_from_source
|
||||
else
|
||||
$SUDO $INSTALLER -y install uhd uhd-devel uhd-firmware
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
install_usrp_uhd_driver() {
|
||||
if [[ "$OS_DISTRO" == "ubuntu" ]]; then
|
||||
# We move uhd-host apart because it depends on linux kernel version
|
||||
# On newer kernels, it fails to install
|
||||
$SUDO apt-get -y install uhd-host
|
||||
$SUDO uhd_images_downloader
|
||||
fi
|
||||
if [ -z $1 ]; then
|
||||
$SUDO uhd_images_downloader
|
||||
else
|
||||
$SUDO uhd_images_downloader -i $1
|
||||
fi
|
||||
}
|
||||
|
||||
install_bladerf_driver_from_source(){
|
||||
bladerf_install_log=$OPENAIR_DIR/cmake_targets/log/bladerf_install_log.txt
|
||||
echo_info "\nInstalling BladeRF driver from sources. The log file for BladeRF driver installation is here: $bladerf_install_log "
|
||||
(
|
||||
cd /tmp
|
||||
echo "Downloading BladeRF driver"
|
||||
rm -rf /tmp/bladeRF
|
||||
git clone https://github.com/Nuand/bladeRF.git
|
||||
cd bladeRF
|
||||
git checkout tags/2016.06
|
||||
mkdir -p build
|
||||
cd build
|
||||
$CMAKE ../
|
||||
echo "Compiling BladeRF driver"
|
||||
make
|
||||
$SUDO make install
|
||||
$SUDO ldconfig
|
||||
echo "Downloading FPGA and firmware images"
|
||||
cd /tmp/bladeRF
|
||||
wget https://www.nuand.com/fx3/bladeRF_fw_latest.img
|
||||
wget https://www.nuand.com/fpga/hostedx40-latest.rbf
|
||||
sudo mkdir -p /usr/share/Nuand/bladeRF
|
||||
sudo mv bladeRF_fw_latest.img /usr/share/Nuand/bladeRF/bladeRF_fw.img
|
||||
sudo mv hostedx40-latest.rbf /usr/share/Nuand/bladeRF/hostedx40.rbf
|
||||
) >& $bladerf_install_log
|
||||
}
|
||||
|
||||
check_install_bladerf_driver(){
|
||||
if [ "$(get_distribution_release)" == "Ubuntu14.04" ] ; then
|
||||
$SUDO add-apt-repository -y ppa:bladerf/bladerf
|
||||
$SUDO apt-get update
|
||||
fi
|
||||
$SUDO apt-get install -y bladerf libbladerf-dev
|
||||
$SUDO apt-get install -y bladerf-firmware-fx3
|
||||
$SUDO apt-get install -y bladerf-fpga-hostedx40
|
||||
if [[ "$OS_DISTRO" == "ubuntu" ]]; then
|
||||
if [ "$(get_distribution_release)" == "ubuntu14.04" ] ; then
|
||||
$SUDO add-apt-repository -y ppa:bladerf/bladerf
|
||||
$SUDO apt-get update
|
||||
fi
|
||||
$SUDO apt-get install -y --allow-unauthenticated bladerf libbladerf-dev
|
||||
$SUDO apt-get install -y --allow-unauthenticated bladerf-firmware-fx3
|
||||
$SUDO apt-get install -y --allow-unauthenticated bladerf-fpga-hostedx40
|
||||
elif [[ "$OS_BASEDISTRO" == "fedora" ]]; then
|
||||
install_bladerf_driver_from_source
|
||||
else
|
||||
echo_error "BladeRF Installer for OAI does not support automatic build. Install BladeRF compiling sources manually from BladeRF website"
|
||||
fi
|
||||
}
|
||||
|
||||
flash_firmware_bladerf() {
|
||||
$SUDO bladeRF-cli --flash-firmware /usr/share/Nuand/bladeRF/bladeRF_fw.img
|
||||
}
|
||||
|
||||
check_install_lmssdr_driver(){
|
||||
if ( [ -d "/usr/local/include/lime" ] &&
|
||||
[ -f "/usr/local/include/lime/LimeSuite.h" ] )
|
||||
then
|
||||
echo_success "Found lmssdr drivers and tools installed from source"
|
||||
else
|
||||
echo_error "lmssdr support implies installing lmssdr drivers and tools" \
|
||||
" from sources. check:"
|
||||
echo_info "https://open-cells.com/index.php/2017/05/10/limesdr-installation/"
|
||||
echo_fatal "Cannot compile lmssdr device"
|
||||
fi
|
||||
|
||||
|
||||
}
|
||||
|
||||
check_install_additional_tools (){
|
||||
$SUDO apt-get update
|
||||
$SUDO apt-get install -y \
|
||||
$SUDO $INSTALLER update -y
|
||||
if [[ "$OS_DISTRO" == "ubuntu" ]]; then
|
||||
PACKAGE_LIST="\
|
||||
check \
|
||||
dialog \
|
||||
dkms \
|
||||
@@ -264,13 +391,73 @@ check_install_additional_tools (){
|
||||
bc \
|
||||
ntp \
|
||||
python-scipy \
|
||||
python-matplotlib
|
||||
|
||||
$SUDO pip install paramiko
|
||||
$SUDO pip install pyroute2 colorama
|
||||
python-matplotlib"
|
||||
elif [[ "$OS_DISTRO" == "rhel" ]] || [[ "$OS_DISTRO" == "centos" ]]; then
|
||||
PACKAGE_LIST="\
|
||||
check \
|
||||
dialog \
|
||||
dkms \
|
||||
gawk \
|
||||
boost-devel \
|
||||
openvpn \
|
||||
pkgconfig \
|
||||
pexpect \
|
||||
sshfs \
|
||||
swig \
|
||||
wireshark \
|
||||
unzip \
|
||||
valgrind \
|
||||
vconfig \
|
||||
ctags \
|
||||
ntpdate \
|
||||
iperf3 \
|
||||
wvdial \
|
||||
numpy \
|
||||
sshpass \
|
||||
nscd \
|
||||
python2-paramiko \
|
||||
python-pyroute2 \
|
||||
python-netifaces \
|
||||
scipy \
|
||||
python-matplotlib"
|
||||
elif [[ "$OS_DISTRO" == "fedora" ]]; then
|
||||
PACKAGE_LIST=" \
|
||||
check \
|
||||
dialog \
|
||||
dkms \
|
||||
gawk \
|
||||
boost-devel \
|
||||
openvpn \
|
||||
pkgconfig \
|
||||
python-pexpect \
|
||||
sshfs \
|
||||
swig \
|
||||
wireshark \
|
||||
unzip \
|
||||
valgrind \
|
||||
vconfig \
|
||||
ctags \
|
||||
ntpdate \
|
||||
iperf3 \
|
||||
wvdial \
|
||||
python-numpy \
|
||||
sshpass \
|
||||
nscd \
|
||||
python2-paramiko \
|
||||
python-pyroute2 \
|
||||
python-netifaces \
|
||||
python2-scipy \
|
||||
python2-matplotlib"
|
||||
fi
|
||||
$SUDO $INSTALLER install -y $PACKAGE_LIST
|
||||
|
||||
$SUDO rm -fr /opt/ssh
|
||||
$SUDO GIT_SSL_NO_VERIFY=true git clone https://gitlab.eurecom.fr/oai/ssh.git /opt/ssh
|
||||
|
||||
|
||||
#The packages below are already installed for Redhat distros (RHEL, CentOS, Fedora)
|
||||
if [[ "$OS_DISTRO" == "ubuntu" ]]; then
|
||||
$SUDO pip install paramiko
|
||||
$SUDO pip install pyroute2 colorama
|
||||
log_netiface=$OPENAIR_DIR/cmake_targets/log/netiface_install_log.txt
|
||||
echo_info "Installing Netinterfaces package. The logfile for installation is in $log_netiface"
|
||||
(
|
||||
@@ -281,6 +468,7 @@ check_install_additional_tools (){
|
||||
$SUDO python setup.py install
|
||||
cd -
|
||||
) >& $log_netiface
|
||||
fi
|
||||
}
|
||||
|
||||
check_install_oai_software() {
|
||||
@@ -289,16 +477,17 @@ check_install_oai_software() {
|
||||
echo_error "Your distribution $(get_distribution_release) is not supported by oai !"
|
||||
exit 1
|
||||
fi
|
||||
$SUDO apt-get update
|
||||
$SUDO $INSTALLER update -y
|
||||
if [[ "$OS_DISTRO" == "ubuntu" ]]; then
|
||||
$SUDO apt install -y software-properties-common
|
||||
case "$(get_distribution_release)" in
|
||||
"Ubuntu14.04")
|
||||
"ubuntu14.04")
|
||||
specific_packages="libtasn1-3-dev"
|
||||
# For iperf3
|
||||
$SUDO add-apt-repository "deb http://archive.ubuntu.com/ubuntu trusty-backports universe"
|
||||
$SUDO apt-get update
|
||||
;;
|
||||
"Ubuntu16.04")
|
||||
"ubuntu16.04")
|
||||
specific_packages="libtasn1-6-dev"
|
||||
;;
|
||||
esac
|
||||
@@ -361,73 +550,97 @@ check_install_oai_software() {
|
||||
python-pip \
|
||||
pydb \
|
||||
libyaml-dev \
|
||||
wget
|
||||
wget \
|
||||
libxpm-dev
|
||||
|
||||
$SUDO update-alternatives --set liblapack.so /usr/lib/atlas-base/atlas/liblapack.so
|
||||
|
||||
#Remove old gnutls/nettle installation that was done from sources
|
||||
remove_nettle_from_source
|
||||
|
||||
$SUDO apt-get install -y nettle-dev nettle-bin
|
||||
remove_gnutls_from_source
|
||||
|
||||
$SUDO apt-get install -y libgnutls-dev
|
||||
elif [[ "$OS_BASEDISTRO" == "fedora" ]]; then
|
||||
if [[ "$OS_DISTRO" == "rhel" ]] || [[ "$OS_DISTRO" == "centos" ]]; then
|
||||
if rpm -q epel-release > /dev/null; then
|
||||
echo "EPEL repos already present. Good."
|
||||
else
|
||||
echo "EPEL repos not present. Installing them."
|
||||
$SUDO $INSTALLER install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
|
||||
fi
|
||||
$SUDO $INSTALLER install -y python-epdb
|
||||
$SUDO $INSTALLER install -y gccxml
|
||||
else
|
||||
$SUDO $INSTALLER install -y mscgen pydb
|
||||
# Fedora repos already contain gccxml's successor castxml.
|
||||
$SUDO $INSTALLER install -y castxml
|
||||
fi
|
||||
|
||||
$SUDO $INSTALLER install -y \
|
||||
autoconf \
|
||||
automake \
|
||||
bc \
|
||||
bison \
|
||||
$CMAKE \
|
||||
doxygen \
|
||||
ethtool \
|
||||
flex \
|
||||
gdb \
|
||||
git \
|
||||
graphviz \
|
||||
gtkwave \
|
||||
guile-devel \
|
||||
iperf \
|
||||
iproute \
|
||||
iptables \
|
||||
iptables-devel \
|
||||
atlas-devel \
|
||||
blas-devel \
|
||||
libconfig-devel \
|
||||
libffi-devel \
|
||||
xforms \
|
||||
xforms-devel \
|
||||
libgcrypt-devel \
|
||||
gmp-devel \
|
||||
gtk3-devel \
|
||||
libidn2-devel \
|
||||
libidn-devel \
|
||||
mariadb-devel \
|
||||
octave-devel \
|
||||
openpgm-devel \
|
||||
lksctp-tools \
|
||||
lksctp-tools-devel \
|
||||
openssl-devel \
|
||||
libtasn1 \
|
||||
libtool \
|
||||
libusb-devel \
|
||||
libxml2 \
|
||||
libxml2-devel \
|
||||
libxslt-devel \
|
||||
octave \
|
||||
octave-signal \
|
||||
openssh-clients \
|
||||
openssh-server \
|
||||
openssl \
|
||||
patch \
|
||||
psmisc \
|
||||
python \
|
||||
subversion \
|
||||
xmlstarlet \
|
||||
python-pip \
|
||||
wget \
|
||||
kernel-headers \
|
||||
kernel-devel \
|
||||
nettle-devel \
|
||||
gnutls-devel \
|
||||
libXpm-devel \
|
||||
lapack \
|
||||
lapack-devel \
|
||||
blas \
|
||||
blas-devel
|
||||
fi
|
||||
|
||||
install_asn1c_from_source
|
||||
$SUDO rm -fr /opt/ssh
|
||||
$SUDO git clone https://gist.github.com/2190472.git /opt/ssh
|
||||
install_protobuf_from_source
|
||||
install_protobuf_c_from_source
|
||||
}
|
||||
|
||||
### Remove Nettle installation which was done from sources
|
||||
remove_nettle_from_source() {
|
||||
nettle_uninstall_log=$OPENAIR_DIR/cmake_targets/log/nettle_uninstall_log.txt
|
||||
echo_info "\nUn-Installing Nettle from sources. The log file for nettle un-installation is here: $nettle_uninstall_log "
|
||||
(
|
||||
$SUDO apt-get remove -y nettle-dev nettle-bin
|
||||
cd /tmp
|
||||
echo "Downloading nettle archive"
|
||||
$SUDO rm -rf /tmp/nettle-2.5.tar.gz* /tmp/nettle-2.5
|
||||
wget https://ftp.gnu.org/gnu/nettle/nettle-2.5.tar.gz
|
||||
if [ $? -ne 0 ]; then
|
||||
wget ftp://ftp.lysator.liu.se/pub/security/lsh/nettle-2.5.tar.gz
|
||||
fi
|
||||
if [ ! -f nettle-2.5.tar.gz ]; then
|
||||
echo_error "Could not download nettle source files"
|
||||
cd -
|
||||
return
|
||||
fi
|
||||
tar -xzf nettle-2.5.tar.gz
|
||||
cd nettle-2.5/
|
||||
./configure --disable-openssl --enable-shared --prefix=/usr
|
||||
$SUDO make uninstall || true
|
||||
$SUDO ldconfig
|
||||
) >& $nettle_uninstall_log
|
||||
}
|
||||
|
||||
### Remove Gnutls from source
|
||||
remove_gnutls_from_source(){
|
||||
gnutls_uninstall_log=$OPENAIR_DIR/cmake_targets/log/gnutls_uninstall_log.txt
|
||||
echo_info "\nUn-Installing Gnutls. The log file for Gnutls un-installation is here: $gnutls_uninstall_log "
|
||||
(
|
||||
$SUDO apt-get remove -y libgnutls-dev
|
||||
cd /tmp
|
||||
echo "Downloading gnutls archive"
|
||||
$SUDO rm -rf /tmp/gnutls-3.1.23.tar.xz* /tmp/gnutls-3.1.23
|
||||
wget http://mirrors.dotsrc.org/gcrypt/gnutls/v3.1/gnutls-3.1.23.tar.xz || \
|
||||
wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.1/gnutls-3.1.23.tar.xz
|
||||
if [ ! -f gnutls-3.1.23.tar.xz ]; then
|
||||
echo_error "Could not download gnutls source files"
|
||||
cd -
|
||||
return
|
||||
fi
|
||||
tar -xJf gnutls-3.1.23.tar.xz
|
||||
cd gnutls-3.1.23/
|
||||
./configure --prefix=/usr
|
||||
$SUDO make uninstall || true
|
||||
$SUDO ldconfig
|
||||
)>& $gnutls_uninstall_log
|
||||
}
|
||||
|
||||
install_asn1c_from_source(){
|
||||
@@ -450,19 +663,18 @@ install_asn1c_from_source(){
|
||||
################################################
|
||||
|
||||
install_nas_tools() {
|
||||
cd $1
|
||||
if [ ! -f .ue.nvram ]; then
|
||||
if [ ! -f .ue.nvram0 ]; then
|
||||
echo_success "generate .ue_emm.nvram .ue.nvram"
|
||||
./nvram --gen
|
||||
./nvram --gen -c $1 -o $2
|
||||
else
|
||||
[ ./nvram -nt .ue.nvram -o ./nvram -nt .ue_emm.nvram ] && ./nvram --gen
|
||||
[ ./nvram -nt .ue.nvram0 -o ./nvram -nt .ue_emm.nvram0 ] && ./nvram --gen -c $1 -o $2
|
||||
fi
|
||||
|
||||
if [ ! -f .usim.nvram ]; then
|
||||
if [ ! -f .usim.nvram0 ]; then
|
||||
echo_success "generate .usim.nvram"
|
||||
./usim --gen
|
||||
./usim --gen -c $1 -o $2
|
||||
else
|
||||
[ ./usim -nt .usim.nvram ] && ./usim --gen
|
||||
[ ./usim -nt .usim.nvram0 ] && ./usim --gen -c $1 -o $2
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -3,19 +3,16 @@
|
||||
# in those arrays, each line is:
|
||||
# <file> <sha1sum of file (without line 4 which changes depending on the location of the files)> <patch to apply to file>
|
||||
|
||||
RRC_Rel14=(
|
||||
"SystemInformation-r8-IEs.h" 4df485c5ddf2540eca271876cdc512caa19b0890 "fix_asn1.data/RRC.rel14/SystemInformation-r8-IEs.h.diff"
|
||||
)
|
||||
|
||||
RRC_Rel10=(
|
||||
"SystemInformation-r8-IEs.h" 603cd6615cff36ec7020692d72c0d6de7c4859cb "fix_asn1.data/RRC.rel10/SystemInformation-r8-IEs.h.diff"
|
||||
)
|
||||
|
||||
X2AP_Rel11_2=(
|
||||
"X2ap-CriticalityDiagnostics-IE-List.h" ae96308b37fcbcbf39da5012e42968135fc5f27b "fix_asn1.data/X2AP.rel11.2/X2ap-CriticalityDiagnostics-IE-List.h.diff"
|
||||
"NativeInteger.c" 1a55f5402fd363318cf5444ffe1f67530dcf66ff "fix_asn1.data/X2AP.rel11.2/NativeInteger.c.diff"
|
||||
"constr_SET_OF.c" 808cbbdf19b118c0bdb04e3acf2cbe6e4133be2b "fix_asn1.data/X2AP.rel11.2/constr_SET_OF.c.diff"
|
||||
)
|
||||
|
||||
S1AP_Rel10_5=(
|
||||
"NativeInteger.c" 1a55f5402fd363318cf5444ffe1f67530dcf66ff "fix_asn1.data/S1AP.rel10.5/NativeInteger.c.diff"
|
||||
"constr_SET_OF.c" 808cbbdf19b118c0bdb04e3acf2cbe6e4133be2b "fix_asn1.data/S1AP.rel10.5/constr_SET_OF.c.diff"
|
||||
)
|
||||
|
||||
red_color="$(tput setaf 1)"
|
||||
@@ -94,6 +91,10 @@ function patch_rrc()
|
||||
local version="$2"
|
||||
|
||||
case "$version" in
|
||||
Rel14 )
|
||||
echo "patching RRC files release 14"
|
||||
apply_patches "$directory" RRC_Rel14 ${#RRC_Rel14[*]}
|
||||
;;
|
||||
Rel10 )
|
||||
echo "patching RRC files release 10"
|
||||
apply_patches "$directory" RRC_Rel10 ${#RRC_Rel10[*]}
|
||||
@@ -130,8 +131,7 @@ function patch_s1ap()
|
||||
|
||||
case "$version" in
|
||||
R10 )
|
||||
echo "patching S1AP files release 10.5"
|
||||
apply_patches "$directory" S1AP_Rel10_5 ${#S1AP_Rel10_5[*]}
|
||||
#nothing to do anymore (fixes went to asn1c)
|
||||
;;
|
||||
* )
|
||||
error unknwon/unhandled S1AP version \'"$version"\'
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
73,77d72
|
||||
< /* SystemInformation-r8-IEs */
|
||||
< typedef struct SystemInformation_r8_IEs {
|
||||
< struct SystemInformation_r8_IEs__sib_TypeAndInfo {
|
||||
< A_SEQUENCE_OF(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member {
|
||||
< SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR present;
|
||||
103c98,102
|
||||
< } choice;
|
||||
---
|
||||
> };
|
||||
>
|
||||
> struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member {
|
||||
> SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR present;
|
||||
> union SystemInformation_r8_IEs__sib_TypeAndInfo__Member_u choice;
|
||||
107c106,111
|
||||
< } ) list;
|
||||
---
|
||||
> };
|
||||
>
|
||||
> /* SystemInformation-r8-IEs */
|
||||
> typedef struct SystemInformation_r8_IEs {
|
||||
> struct SystemInformation_r8_IEs__sib_TypeAndInfo {
|
||||
> A_SEQUENCE_OF(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member) list;
|
||||
@@ -1,8 +0,0 @@
|
||||
283c283
|
||||
< int dynamic = 0;
|
||||
---
|
||||
> //int dynamic = 0;
|
||||
290c290
|
||||
< dynamic = 1;
|
||||
---
|
||||
> //dynamic = 1;
|
||||
@@ -1,4 +0,0 @@
|
||||
1007c1007
|
||||
< (int)nelems, (int)ct ? ct->effective_bits : -1);
|
||||
---
|
||||
> (int)nelems, ct ? ct->effective_bits : -1);
|
||||
@@ -1,8 +0,0 @@
|
||||
283c283
|
||||
< int dynamic = 0;
|
||||
---
|
||||
> //int dynamic = 0;
|
||||
290c290
|
||||
< dynamic = 1;
|
||||
---
|
||||
> //dynamic = 1;
|
||||
@@ -1,4 +0,0 @@
|
||||
1007c1007
|
||||
< (int)nelems, (int)ct ? ct->effective_bits : -1);
|
||||
---
|
||||
> (int)nelems, ct ? ct->effective_bits : -1);
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
71
cmake_targets/tools/init_nas_s1
Normal file
71
cmake_targets/tools/init_nas_s1
Normal file
@@ -0,0 +1,71 @@
|
||||
#!/bin/bash
|
||||
|
||||
#WARNING: this file may not work properly, be sure to know what you
|
||||
#do when using it
|
||||
|
||||
#/*
|
||||
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
# * http://www.openairinterface.org/?page_id=698
|
||||
# *
|
||||
# * Unless required by applicable law or agreed to in writing, software
|
||||
# * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# * See the License for the specific language governing permissions and
|
||||
# * limitations under the License.
|
||||
# *-------------------------------------------------------------------------------
|
||||
# * For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
# * contact@openairinterface.org
|
||||
# */
|
||||
|
||||
################################################################################
|
||||
# file init_nas_s1
|
||||
# brief loads the ue_ip module and sets up IP for the UE
|
||||
# you may want to edit it to fit your settings (replace oip0 by oipX for
|
||||
# instance)
|
||||
# author Florian Kaltenberger
|
||||
#
|
||||
#######################################
|
||||
|
||||
LTEIF=oip1
|
||||
#OPENAIR_DIR=/home/oai/svn-oai/openair4G
|
||||
|
||||
load_module() {
|
||||
mod_name=${1##*/}
|
||||
mod_name=${mod_name%.*}
|
||||
if awk "/$mod_name/ {found=1 ;exit} END {if (found!=1) exit 1}" /proc/modules
|
||||
then
|
||||
echo "module $mod_name already loaded: I remove it first"
|
||||
sudo rmmod $mod_name
|
||||
fi
|
||||
echo loading $mod_name
|
||||
sudo insmod $1
|
||||
}
|
||||
|
||||
load_module ../../targets/bin/ue_ip.ko
|
||||
|
||||
if [ "$1" = "UE" ]; then
|
||||
echo "bring up $LTEIF interface for UE"
|
||||
ifconfig $LTEIF up
|
||||
fi
|
||||
|
||||
ip route flush cache
|
||||
sleep 1
|
||||
sysctl -w net.ipv4.conf.all.log_martians=1
|
||||
echo "Disabling reverse path filtering"
|
||||
sysctl -w net.ipv4.conf.all.rp_filter=0
|
||||
ip route flush cache
|
||||
|
||||
# Check table 200 lte in /etc/iproute2/rt_tables
|
||||
fgrep lte /etc/iproute2/rt_tables > /dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "200 lte " >> /etc/iproute2/rt_tables
|
||||
fi
|
||||
ip rule add fwmark 1 table lte
|
||||
ip route add default dev $LTEIF table lte
|
||||
@@ -3,7 +3,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
@@ -150,7 +150,7 @@ function main()
|
||||
# -u | --num-ue )
|
||||
|
||||
-V | --vcd)
|
||||
"setting gtk-wave output"
|
||||
echo "setting gtk-wave output"
|
||||
exe_arguments="$exe_arguments -V /tmp/oai_gtk_wave.vcd"
|
||||
shift ;
|
||||
;;
|
||||
@@ -164,6 +164,11 @@ function main()
|
||||
exe_arguments="$exe_arguments -n $2"
|
||||
shift 2;
|
||||
;;
|
||||
-x | --xforms)
|
||||
echo "running with xforms"
|
||||
exe_arguments="$exe_arguments --xforms"
|
||||
shift 1;
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option $1"
|
||||
help
|
||||
@@ -212,11 +217,11 @@ function main()
|
||||
fi
|
||||
|
||||
if [ $run_gdb -eq 0 ]; then
|
||||
exec $SUDO $OPENAIR_DIR/targets/bin/oaisim_nos1.Rel10 $exe_arguments | tee /tmp/enb_ue_nos1.log.txt
|
||||
exec $SUDO $OPENAIR_DIR/targets/bin/oaisim_nos1.Rel14 $exe_arguments | tee /tmp/enb_ue_nos1.log.txt
|
||||
else
|
||||
touch ~/.gdb_enb_ue_nos1
|
||||
chmod 777 ~/.gdb_enb_ue_nos1
|
||||
echo "file $OPENAIR_DIR/targets/bin/oaisim_nos1.Rel10" > ~/.gdb_enb_ue_nos1
|
||||
echo "file $OPENAIR_DIR/targets/bin/oaisim_nos1.Rel14" > ~/.gdb_enb_ue_nos1
|
||||
echo "set args $exe_arguments" >> ~/.gdb_enb_ue_nos1
|
||||
echo "run" >> ~/.gdb_enb_ue_nos1
|
||||
cat ~/.gdb_enb_ue_nos1
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
@@ -174,7 +174,7 @@ function main()
|
||||
;;
|
||||
|
||||
-V | --vcd)
|
||||
"setting gtk-wave output"
|
||||
echo "setting gtk-wave output"
|
||||
exe_arguments="$exe_arguments -V /tmp/oai_gtk_wave.vcd"
|
||||
shift ;
|
||||
;;
|
||||
@@ -183,6 +183,11 @@ function main()
|
||||
exe_arguments="$exe_arguments -P wireshark"
|
||||
shift 2;
|
||||
;;
|
||||
-x | --xforms)
|
||||
echo "running with xforms"
|
||||
exe_arguments="$exe_arguments --xforms"
|
||||
shift 1;
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option $1"
|
||||
help
|
||||
@@ -247,12 +252,6 @@ function main()
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "200 lte " >> /etc/iproute2/rt_tables
|
||||
fi
|
||||
ip rule add fwmark 1 table lte
|
||||
ifconfig oip1 up
|
||||
ip route add default dev oip1 table lte
|
||||
# the actual IP address depends on the EPC/MME config file for address pool
|
||||
ip route add from 192.188.0.0/24 table lte
|
||||
ip route add to 192.188.0.0/24 table lte
|
||||
|
||||
exe_arguments="$exe_arguments -s15 -AAWGN -y1 -b1 -u1 -Q0"
|
||||
|
||||
@@ -264,11 +263,11 @@ function main()
|
||||
fi
|
||||
|
||||
if [ $run_gdb -eq 0 ]; then
|
||||
exec $OPENAIR_DIR/targets/bin/oaisim.Rel10 $exe_arguments | tee /tmp/enb_ue_s1.log.txt
|
||||
exec $OPENAIR_DIR/targets/bin/oaisim.Rel14 $exe_arguments | tee /tmp/enb_ue_s1.log.txt
|
||||
else
|
||||
touch ~/.gdb_enb_ue_s1
|
||||
chmod 777 ~/.gdb_enb_ue_s1
|
||||
echo "file $OPENAIR_DIR/targets/bin/oaisim.Rel10" > ~/.gdb_enb_ue_s1
|
||||
echo "file $OPENAIR_DIR/targets/bin/oaisim.Rel14" > ~/.gdb_enb_ue_s1
|
||||
echo "set args $exe_arguments" >> ~/.gdb_enb_ue_s1
|
||||
echo "run" >> ~/.gdb_enb_ue_s1
|
||||
cat ~/.gdb_enb_ue_s1
|
||||
|
||||
33
cmake_targets/tools/run_ue_s1
Normal file
33
cmake_targets/tools/run_ue_s1
Normal file
@@ -0,0 +1,33 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Carrier frequency in Hz
|
||||
#FREQ=2660000000 #FDD
|
||||
FREQ=2350000000 #TDD
|
||||
NRB=50
|
||||
TA=0
|
||||
|
||||
#9:trace, 8/7:debug, 6:info, 4:warn, 3:error
|
||||
LOGLEVEL=6
|
||||
|
||||
#enable or disable soft scope
|
||||
#SCOPE=''
|
||||
SCOPE='-d'
|
||||
|
||||
#enable or disable VCD logging
|
||||
VCD=''
|
||||
#VCD='-V'
|
||||
|
||||
ISTDD='-T'
|
||||
#ISTDD=''
|
||||
|
||||
#use external clock
|
||||
ECLK="--external-clock"
|
||||
#ECLK=""
|
||||
|
||||
#UE scan carrier
|
||||
#ISSCAN="--ue-scan-carrier"
|
||||
ISSCAN=""
|
||||
|
||||
sudo sh -c './init_nas_s1 UE'
|
||||
cd ../../targets/bin/
|
||||
sudo -E ./lte-softmodem.Rel10 -U -C$FREQ -r$NRB $ISSCAN --ue-txgain 70 --ue-rxgain 80 -A $TA $ECLK -W $ISTDD -g $LOGLEVEL $SCOPE 2>&1 | sudo tee /tmp/UE.log
|
||||
@@ -4,7 +4,7 @@
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
|
||||
163
common/config/config_cmdline.c
Normal file
163
common/config/config_cmdline.c
Normal file
@@ -0,0 +1,163 @@
|
||||
/*
|
||||
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The OpenAirInterface Software Alliance licenses this file to You under
|
||||
* the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.openairinterface.org/?page_id=698
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*-------------------------------------------------------------------------------
|
||||
* For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
* contact@openairinterface.org
|
||||
*/
|
||||
|
||||
/*! \file common/config/cmdline/config_libconfig.c
|
||||
* \brief configuration module, command line parsing implementation
|
||||
* \author Francois TABURET
|
||||
* \date 2017
|
||||
* \version 0.1
|
||||
* \company NOKIA BellLabs France
|
||||
* \email: francois.taburet@nokia-bell-labs.com
|
||||
* \note
|
||||
* \warning
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include "config_userapi.h"
|
||||
|
||||
int processoption(paramdef_t *cfgoptions, char *value)
|
||||
{
|
||||
char *tmpval = value;
|
||||
int optisset=0;
|
||||
char defbool[2]="1";
|
||||
|
||||
if ( value == NULL) {
|
||||
if( (cfgoptions->paramflags &PARAMFLAG_BOOL) == 0 ) { /* not a boolean, argument required */
|
||||
fprintf(stderr,"[CONFIG] command line, option %s requires an argument\n",cfgoptions->optname);
|
||||
return 0;
|
||||
} else { /* boolean value option without argument, set value to true*/
|
||||
tmpval = defbool;
|
||||
}
|
||||
}
|
||||
switch(cfgoptions->type)
|
||||
{
|
||||
case TYPE_STRING:
|
||||
config_check_valptr(cfgoptions, (char **)(cfgoptions->strptr), sizeof(char *));
|
||||
config_check_valptr(cfgoptions, cfgoptions->strptr, strlen(tmpval+1));
|
||||
sprintf(*(cfgoptions->strptr), "%s",tmpval);
|
||||
printf_cmdl("[CONFIG] %s set to %s from command line\n", cfgoptions->optname, tmpval);
|
||||
optisset=1;
|
||||
break;
|
||||
|
||||
case TYPE_STRINGLIST:
|
||||
break;
|
||||
case TYPE_UINT32:
|
||||
case TYPE_INT32:
|
||||
case TYPE_UINT16:
|
||||
case TYPE_INT16:
|
||||
case TYPE_UINT8:
|
||||
case TYPE_INT8:
|
||||
config_check_valptr(cfgoptions, (char **)&(cfgoptions->iptr),sizeof(int32_t));
|
||||
config_assign_int(cfgoptions,cfgoptions->optname,(int32_t)strtol(tmpval,NULL,0));
|
||||
optisset=1;
|
||||
break;
|
||||
case TYPE_UINT64:
|
||||
case TYPE_INT64:
|
||||
config_check_valptr(cfgoptions, (char **)&(cfgoptions->i64ptr),sizeof(uint64_t));
|
||||
*(cfgoptions->i64ptr)=strtoll(tmpval,NULL,0);
|
||||
printf_cmdl("[CONFIG] %s set to %lli from command line\n", cfgoptions->optname, (long long)*(cfgoptions->i64ptr));
|
||||
optisset=1;
|
||||
break;
|
||||
case TYPE_UINTARRAY:
|
||||
case TYPE_INTARRAY:
|
||||
|
||||
break;
|
||||
case TYPE_DOUBLE:
|
||||
config_check_valptr(cfgoptions, (char **)&(cfgoptions->dblptr),sizeof(double));
|
||||
*(cfgoptions->dblptr) = strtof(tmpval,NULL);
|
||||
printf_cmdl("[CONFIG] %s set to %lf from command line\n", cfgoptions->optname, *(cfgoptions->dblptr));
|
||||
optisset=1;
|
||||
break;
|
||||
|
||||
case TYPE_IPV4ADDR:
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
fprintf(stderr,"[CONFIG] command line, %s type %i not supported\n",cfgoptions->optname, cfgoptions->type);
|
||||
break;
|
||||
} /* switch on param type */
|
||||
if (optisset == 1) {
|
||||
cfgoptions->paramflags = cfgoptions->paramflags | PARAMFLAG_PARAMSET;
|
||||
}
|
||||
|
||||
return optisset;
|
||||
}
|
||||
|
||||
int config_process_cmdline(paramdef_t *cfgoptions,int numoptions, char *prefix)
|
||||
{
|
||||
char **p = config_get_if()->argv;
|
||||
int c = config_get_if()->argc;
|
||||
int j;
|
||||
char *pp;
|
||||
char *cfgpath;
|
||||
|
||||
j = (prefix ==NULL) ? 0 : strlen(prefix);
|
||||
cfgpath = malloc( j + MAX_OPTNAME_SIZE +1);
|
||||
if (cfgpath == NULL) {
|
||||
fprintf(stderr,"[CONFIG] %s %i malloc error, %s\n", __FILE__, __LINE__,strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
j=0;
|
||||
p++;
|
||||
c--;
|
||||
while (c > 0 && *p != NULL) {
|
||||
if (strcmp(*p, "-h") == 0 || strcmp(*p, "--help") == 0 ) {
|
||||
config_printhelp(cfgoptions,numoptions);
|
||||
}
|
||||
|
||||
if (*p[0] == '-') {
|
||||
for(int i=0;i<numoptions;i++) {
|
||||
if ( ( cfgoptions[i].paramflags & PARAMFLAG_DISABLECMDLINE) != 0) {
|
||||
continue;
|
||||
}
|
||||
if (prefix != NULL) {
|
||||
sprintf(cfgpath,"%s.%s",prefix,cfgoptions[i].optname);
|
||||
} else {
|
||||
sprintf(cfgpath,"%s",cfgoptions[i].optname);
|
||||
}
|
||||
|
||||
if ( ((strlen(*p) == 2) && (strcmp(*p + 1,cfgpath) == 0)) ||
|
||||
((strlen(*p) > 2) && (strcmp(*p + 2,cfgpath ) == 0 )) ) {
|
||||
pp = *(p+1);
|
||||
if ( ( pp != NULL ) && (c>1) && (pp[0]!= '-') ) {
|
||||
|
||||
j += processoption(&(cfgoptions[i]), pp);
|
||||
} else {
|
||||
j += processoption(&(cfgoptions[i]), NULL);
|
||||
}
|
||||
break;
|
||||
}
|
||||
} /* for */
|
||||
} /* if (*p[0] == '-') */
|
||||
p++;
|
||||
c--;
|
||||
} /* fin du while */
|
||||
printf_cmdl("[CONFIG] %s %i options set from command line\n",((prefix == NULL) ? "":prefix),j);
|
||||
free(cfgpath);
|
||||
return j;
|
||||
} /* parse_cmdline*/
|
||||
|
||||
|
||||
|
||||
226
common/config/config_load_configmodule.c
Normal file
226
common/config/config_load_configmodule.c
Normal file
@@ -0,0 +1,226 @@
|
||||
/*
|
||||
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The OpenAirInterface Software Alliance licenses this file to You under
|
||||
* the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.openairinterface.org/?page_id=698
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*-------------------------------------------------------------------------------
|
||||
* For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
* contact@openairinterface.org
|
||||
*/
|
||||
|
||||
/*! \file common/config/config_load_configmodule.c
|
||||
* \brief configuration module, load the shared library implementing the configuration module
|
||||
* \author Francois TABURET
|
||||
* \date 2017
|
||||
* \version 0.1
|
||||
* \company NOKIA BellLabs France
|
||||
* \email: francois.taburet@nokia-bell-labs.com
|
||||
* \note
|
||||
* \warning
|
||||
*/
|
||||
#define _GNU_SOURCE
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <dlfcn.h>
|
||||
|
||||
#define CONFIG_LOADCONFIG_MAIN
|
||||
#include "config_load_configmodule.h"
|
||||
#include "config_userapi.h"
|
||||
#define CONFIG_SHAREDLIBFORMAT "libparams_%s.so"
|
||||
|
||||
int load_config_sharedlib(configmodule_interface_t *cfgptr)
|
||||
{
|
||||
void *lib_handle;
|
||||
char fname[128];
|
||||
char libname[FILENAME_MAX];
|
||||
int st;
|
||||
|
||||
st=0;
|
||||
sprintf(libname,CONFIG_SHAREDLIBFORMAT,cfgptr->cfgmode);
|
||||
|
||||
lib_handle = dlopen(libname,RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE);
|
||||
if (!lib_handle) {
|
||||
fprintf(stderr,"[CONFIG] %s %d Error calling dlopen(%s): %s\n",__FILE__, __LINE__, libname,dlerror());
|
||||
st = -1;
|
||||
} else {
|
||||
sprintf (fname,"config_%s_init",cfgptr->cfgmode);
|
||||
cfgptr->init = dlsym(lib_handle,fname);
|
||||
|
||||
if (cfgptr->init == NULL ) {
|
||||
printf("[CONFIG] %s %d no function %s for config mode %s\n",
|
||||
__FILE__, __LINE__,fname, cfgptr->cfgmode);
|
||||
} else {
|
||||
st=cfgptr->init(cfgptr->cfgP,cfgptr->num_cfgP);
|
||||
printf("[CONFIG] function %s returned %i\n",
|
||||
fname, st);
|
||||
}
|
||||
|
||||
sprintf (fname,"config_%s_get",cfgptr->cfgmode);
|
||||
cfgptr->get = dlsym(lib_handle,fname);
|
||||
if (cfgptr->get == NULL ) {
|
||||
printf("[CONFIG] %s %d no function %s for config mode %s\n",
|
||||
__FILE__, __LINE__,fname, cfgptr->cfgmode);
|
||||
st = -1;
|
||||
}
|
||||
|
||||
sprintf (fname,"config_%s_getlist",cfgptr->cfgmode);
|
||||
cfgptr->getlist = dlsym(lib_handle,fname);
|
||||
if (cfgptr->getlist == NULL ) {
|
||||
printf("[CONFIG] %s %d no function %s for config mode %s\n",
|
||||
__FILE__, __LINE__,fname, cfgptr->cfgmode);
|
||||
st = -1;
|
||||
}
|
||||
|
||||
sprintf (fname,"config_%s_end",cfgptr->cfgmode);
|
||||
cfgptr->end = dlsym(lib_handle,fname);
|
||||
if (cfgptr->getlist == NULL ) {
|
||||
printf("[CONFIG] %s %d no function %s for config mode %s\n",
|
||||
__FILE__, __LINE__,fname, cfgptr->cfgmode);
|
||||
}
|
||||
}
|
||||
|
||||
return st;
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
/* from here: interface implementtion of the configuration module */
|
||||
|
||||
|
||||
configmodule_interface_t *load_configmodule(int argc, char **argv)
|
||||
{
|
||||
char *cfgparam=NULL;
|
||||
char *modeparams=NULL;
|
||||
char *cfgmode=NULL;
|
||||
char *strtokctx=NULL;
|
||||
char *atoken;
|
||||
uint32_t tmpflags=0;
|
||||
int i;
|
||||
|
||||
/* first parse the command line to look for the -O option */
|
||||
opterr=0;
|
||||
for (i = 0;i<argc;i++) {
|
||||
if (strlen(argv[i]) < 2) continue;
|
||||
if ( argv[i][1] == 'O' && i < (argc -1)) {
|
||||
cfgparam = argv[i+1];
|
||||
}
|
||||
if ( argv[i][1] == 'h' ) {
|
||||
tmpflags = CONFIG_HELP;
|
||||
}
|
||||
}
|
||||
optind=1;
|
||||
|
||||
/* look for the OAI_CONFIGMODULE environement variable */
|
||||
if ( cfgparam == NULL ) {
|
||||
cfgparam = getenv("OAI_CONFIGMODULE");
|
||||
}
|
||||
|
||||
/* default */
|
||||
if (cfgparam == NULL) {
|
||||
cfgparam = "libconfig:oaisoftmodem.conf";
|
||||
}
|
||||
/* parse the config parameters to set the config source */
|
||||
i = sscanf(cfgparam,"%m[^':']:%ms",&cfgmode,&modeparams);
|
||||
if (i< 0) {
|
||||
fprintf(stderr,"[CONFIG] %s, %d, sscanf error parsing config source %s: %s\n", __FILE__, __LINE__,cfgparam, strerror(errno));
|
||||
cfgmode=strdup("libconfig");
|
||||
modeparams = strdup("oaisoftmodem.conf");
|
||||
}
|
||||
else if ( i == 1 ) {
|
||||
/* -O argument doesn't contain ":" separator, assume -O <conf file> option, default cfgmode to libconfig
|
||||
with one parameter, the path to the configuration file */
|
||||
modeparams=cfgmode;
|
||||
cfgmode=strdup("libconfig");
|
||||
}
|
||||
|
||||
cfgptr = malloc(sizeof(configmodule_interface_t));
|
||||
memset(cfgptr,0,sizeof(configmodule_interface_t));
|
||||
|
||||
cfgptr->rtflags = cfgptr->rtflags | tmpflags;
|
||||
cfgptr->argc = argc;
|
||||
cfgptr->argv = argv;
|
||||
cfgptr->cfgmode=strdup(cfgmode);
|
||||
|
||||
cfgptr->num_cfgP=0;
|
||||
atoken=strtok_r(modeparams,":",&strtokctx);
|
||||
while ( cfgptr->num_cfgP< CONFIG_MAX_OOPT_PARAMS && atoken != NULL) {
|
||||
/* look for debug level in the config parameters, it is commom to all config mode
|
||||
and will be removed frome the parameter array passed to the shared module */
|
||||
char *aptr;
|
||||
aptr=strcasestr(atoken,"dbgl");
|
||||
if (aptr != NULL) {
|
||||
cfgptr->rtflags = cfgptr->rtflags | strtol(aptr+4,NULL,0);
|
||||
|
||||
} else {
|
||||
cfgptr->cfgP[cfgptr->num_cfgP] = strdup(atoken);
|
||||
cfgptr->num_cfgP++;
|
||||
}
|
||||
atoken = strtok_r(NULL,":",&strtokctx);
|
||||
}
|
||||
|
||||
|
||||
printf("[CONFIG] get parameters from %s ",cfgmode);
|
||||
for (i=0;i<cfgptr->num_cfgP; i++) {
|
||||
printf("%s ",cfgptr->cfgP[i]);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
|
||||
i=load_config_sharedlib(cfgptr);
|
||||
if (i< 0) {
|
||||
fprintf(stderr,"[CONFIG] %s %d config module %s couldn't be loaded\n", __FILE__, __LINE__,cfgmode);
|
||||
cfgptr->rtflags = cfgptr->rtflags | CONFIG_HELP | CONFIG_ABORT;
|
||||
} else {
|
||||
printf("[CONFIG] config module %s loaded\n",cfgmode);
|
||||
Config_Params[CONFIGPARAM_DEBUGFLAGS_IDX].uptr=&(cfgptr->rtflags);
|
||||
config_get(Config_Params,CONFIG_PARAMLENGTH(Config_Params), CONFIG_SECTIONNAME );
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (modeparams != NULL) free(modeparams);
|
||||
if (cfgmode != NULL) free(cfgmode);
|
||||
if (CONFIG_ISFLAGSET(CONFIG_ABORT)) config_printhelp(Config_Params,CONFIG_PARAMLENGTH(Config_Params));
|
||||
return cfgptr;
|
||||
}
|
||||
|
||||
void end_configmodule()
|
||||
{
|
||||
if (cfgptr != NULL) {
|
||||
if (cfgptr->end != NULL) {
|
||||
printf ("[CONFIG] calling config module end function...\n");
|
||||
cfgptr->end();
|
||||
}
|
||||
if( cfgptr->cfgmode != NULL) free(cfgptr->cfgmode);
|
||||
printf ("[CONFIG] free %u config parameter pointers\n",cfgptr->num_cfgP);
|
||||
for (int i=0; i<cfgptr->num_cfgP; i++) {
|
||||
if ( cfgptr->cfgP[i] != NULL) free(cfgptr->cfgP[i]);
|
||||
}
|
||||
printf ("[CONFIG] free %u config value pointers\n",cfgptr->numptrs);
|
||||
for(int i=0; i<cfgptr->numptrs ; i++) {
|
||||
if (cfgptr->ptrs[i] != NULL) {
|
||||
free(cfgptr->ptrs[i]);
|
||||
}
|
||||
cfgptr->ptrs[i]=NULL;
|
||||
}
|
||||
|
||||
free(cfgptr);
|
||||
cfgptr=NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
103
common/config/config_load_configmodule.h
Normal file
103
common/config/config_load_configmodule.h
Normal file
@@ -0,0 +1,103 @@
|
||||
/*
|
||||
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The OpenAirInterface Software Alliance licenses this file to You under
|
||||
* the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.openairinterface.org/?page_id=698
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*-------------------------------------------------------------------------------
|
||||
* For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
* contact@openairinterface.org
|
||||
*/
|
||||
|
||||
/*! \file common/config/config_load_configmodule.h
|
||||
* \brief: configuration module, include file to be used by the source code calling the
|
||||
* configuration module initialization
|
||||
* \author Francois TABURET
|
||||
* \date 2017
|
||||
* \version 0.1
|
||||
* \company NOKIA BellLabs France
|
||||
* \email: francois.taburet@nokia-bell-labs.com
|
||||
* \note
|
||||
* \warning
|
||||
*/
|
||||
#ifndef INCLUDE_CONFIG_LOADCONFIGMODULE_H
|
||||
#define INCLUDE_CONFIG_LOADCONFIGMODULE_H
|
||||
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include "common/config/config_paramdesc.h"
|
||||
#define CONFIG_MAX_OOPT_PARAMS 10 // maximum number of parameters in the -O option (-O <cfgmode>:P1:P2...
|
||||
#define CONFIG_MAX_ALLOCATEDPTRS 1024 // maximum number of parameters that can be dynamicaly allocated in the config module
|
||||
|
||||
/* rtflags bit position definitions */
|
||||
#define CONFIG_PRINTPARAMS 1 // print parameters values while processing
|
||||
#define CONFIG_DEBUGPTR 2 // print memory allocation/free debug messages
|
||||
#define CONFIG_DEBUGCMDLINE 4 // print command line processing messages
|
||||
#define CONFIG_HELP 8 // print help message
|
||||
#define CONFIG_ABORT 16 // config failed,abort execution
|
||||
|
||||
|
||||
typedef int(*configmodule_initfunc_t)(char *cfgP[],int numP);
|
||||
typedef int(*configmodule_getfunc_t)(paramdef_t *,int numparams, char *prefix);
|
||||
typedef int(*configmodule_getlistfunc_t)(paramlist_def_t *, paramdef_t *,int numparams, char *prefix);
|
||||
typedef void(*configmodule_endfunc_t)(void);
|
||||
typedef struct configmodule_interface
|
||||
{
|
||||
int argc;
|
||||
char **argv;
|
||||
char *cfgmode;
|
||||
int num_cfgP;
|
||||
char *cfgP[CONFIG_MAX_OOPT_PARAMS];
|
||||
configmodule_initfunc_t init;
|
||||
configmodule_getfunc_t get;
|
||||
configmodule_getlistfunc_t getlist;
|
||||
configmodule_endfunc_t end;
|
||||
uint32_t numptrs;
|
||||
uint32_t rtflags;
|
||||
char *ptrs[CONFIG_MAX_ALLOCATEDPTRS];
|
||||
} configmodule_interface_t;
|
||||
|
||||
#ifdef CONFIG_LOADCONFIG_MAIN
|
||||
configmodule_interface_t *cfgptr=NULL;
|
||||
|
||||
static char config_helpstr [] = "\n lte-softmodem -O [config mode]<:dbg[debugflags]> \n \
|
||||
debugflags can also be defined in the config_libconfig section of the config file\n \
|
||||
debugflags: mask, 1->print parameters, 2->print memory allocations debug messages\n \
|
||||
4->print command line processing debug messages\n ";
|
||||
|
||||
#define CONFIG_SECTIONNAME "config"
|
||||
#define CONFIGPARAM_DEBUGFLAGS_IDX 0
|
||||
|
||||
|
||||
static paramdef_t Config_Params[] = {
|
||||
/*-----------------------------------------------------------------------------------------------------------------------*/
|
||||
/* config parameters for config module */
|
||||
/* optname helpstr paramflags XXXptr defXXXval type numelt */
|
||||
/*-----------------------------------------------------------------------------------------------------------------------*/
|
||||
{"debugflags", config_helpstr, 0, uptr:NULL, defintval:0, TYPE_MASK, 0},
|
||||
};
|
||||
|
||||
#else
|
||||
extern configmodule_interface_t *cfgptr;
|
||||
#endif
|
||||
|
||||
|
||||
#define printf_params(...) if ( (cfgptr->rtflags & CONFIG_PRINTPARAMS) != 0 ) { printf ( __VA_ARGS__ ); }
|
||||
#define printf_ptrs(...) if ( (cfgptr->rtflags & CONFIG_DEBUGPTR) != 0 ) { printf ( __VA_ARGS__ ); }
|
||||
#define printf_cmdl(...) if ( (cfgptr->rtflags & CONFIG_DEBUGCMDLINE) != 0 ) { printf ( __VA_ARGS__ ); }
|
||||
|
||||
extern configmodule_interface_t *load_configmodule(int argc, char **argv);
|
||||
extern void end_configmodule(void);
|
||||
|
||||
#endif /* INCLUDE_CONFIG_LOADCONFIGMODULE_H */
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user