Compare commits

...

1273 Commits

Author SHA1 Message Date
Melissa Elkadi
fcaa47a3ab Updaing branch with 5G SL README 2023-11-10 15:26:46 +00:00
Melissa
2d29eda8f0 Merge branch 'episys/david/fixing_buffer_overflow' into 'episys/master-sl'
Episys/david/fixing buffer overflow

See merge request aburger/openairinterface5g!248
2023-10-12 00:51:48 +00:00
Deokseong "David" Kim
deaa186855 Episys/david/fixing buffer overflow 2023-10-12 00:51:48 +00:00
Deokseong "David" Kim
004c0c8a39 Merge branch 'episys/david/usrp_gain_adj' into 'episys/master-sl'
Episys/david/usrp gain adj

See merge request aburger/openairinterface5g!247
2023-10-05 20:38:59 +00:00
Deokseong "David" Kim
426ba799c0 Episys/david/usrp gain adj 2023-10-05 20:38:59 +00:00
Deokseong "David" Kim
0695bb62c7 Merge branch 'episys/json_configurations' into 'episys/master-sl'
Added network JSON configuration and its parsing function in python script

See merge request aburger/openairinterface5g!246
2023-09-29 23:04:35 +00:00
Ejaz Ahmed
ecd900bef3 Added network JSON configuration and its parsing function in python script 2023-09-29 23:04:35 +00:00
Deokseong "David" Kim
d9355406e5 Merge branch 'episys/sl_msg_processing' into 'episys/master-sl'
Script update to run multiple types of USRP  to send multiple strings

See merge request aburger/openairinterface5g!245
2023-09-26 23:55:26 +00:00
Deokseong "David" Kim
1e7fb04ac2 Script update to run multiple types of USRP to send multiple strings 2023-09-26 23:55:26 +00:00
Melissa
feec7ef4f4 Merge branch 'episys/relay_UE_role_change' into 'episys/master-sl'
Setup Relay UE between SyncRef UE and Nearby UE, and then forwarding packets from SyncRef UE to Nearby UE.

See merge request aburger/openairinterface5g!244
2023-09-18 21:33:16 +00:00
Deokseong "David" Kim
a87a38a8d3 Setup Relay UE between SyncRef UE and Nearby UE, and then forwarding packets from SyncRef UE to Nearby UE. 2023-09-18 21:33:15 +00:00
Melissa
a606a6ff80 Merge branch 'episys/ej/added_snr_in_script' into 'episys/master-sl'
Added SNR in the launch scripts and implemented in 5G SL rfsim

See merge request aburger/openairinterface5g!242
2023-09-11 17:48:28 +00:00
Ejaz Ahmed
af7a895478 Added SNR in the launch scripts and implemented in 5G SL rfsim 2023-09-11 17:48:28 +00:00
Melissa
83ee05c0e1 Merge branch 'episys/sl_demodulation_update_for_16QAM' into 'episys/master-sl'
Update 16QAM operation for mcs 10 to 16

See merge request aburger/openairinterface5g!243
2023-09-11 17:32:56 +00:00
Deokseong "David" Kim
b8d49eacf9 Update 16QAM operation for mcs 10 to 16 2023-09-11 17:32:56 +00:00
Melissa
d2febea8c6 Merge branch 'episys/david/sl-tb-update' into 'episys/master-sl'
Transport block size update per mcs value for sidelink.

See merge request aburger/openairinterface5g!241
2023-08-23 17:47:37 +00:00
Deokseong "David" Kim
75afd14b6a Transport block size update per mcs value for sidelink. 2023-08-23 17:47:37 +00:00
Melissa
0f6043d814 Merge branch 'mel-testing-fo' into 'episys/master-sl'
Mel testing fo

See merge request aburger/openairinterface5g!237
2023-08-03 19:17:28 +00:00
Melissa
ad4e3e876b Mel testing fo 2023-08-03 19:17:28 +00:00
Melissa
9982bc6069 Merge branch 'episys/david/update_for_psbchsim' into 'episys/master-sl'
Fixed crash issue in PSBCH sim.

See merge request aburger/openairinterface5g!234
2023-06-29 23:28:35 +00:00
Deokseong "David" Kim
c525759c0a Fixed crash issue in PSBCH sim. 2023-06-29 23:28:34 +00:00
Melissa
8cc9148829 Merge branch 'episys/sync_is_working' into 'episys/master-sl'
Slot Synchronization is working.

See merge request aburger/openairinterface5g!233
2023-06-28 18:46:30 +00:00
Moein Sadeghi
2270d99dca Slot Synchronization is working. 2023-06-28 18:46:30 +00:00
Melissa
51a299acec Merge branch 'episys/david/initial_frame_sync' into 'episys/master-sl'
Initial sync in frame and slot level in sidelink.

See merge request aburger/openairinterface5g!231
2023-06-20 20:55:06 +00:00
Deokseong "David" Kim
1e48050986 Initial sync in frame and slot level in sidelink. 2023-06-20 20:55:05 +00:00
Melissa
b7bb0acee8 Merge branch 'episys/david/feedback_update_from_log' into 'episys/master-sl'
Feedback fix in script and sl bandwith setting fix.

See merge request aburger/openairinterface5g!229
2023-06-14 22:16:26 +00:00
David Kim
33b51dbd76 Feedback fix in script and sl bandwith setting fix. 2023-06-14 14:51:25 -07:00
Deokseong "David" Kim
5785c9cd70 Merge branch 'episys/david/setting_sl_bandwidth' into 'episys/master-sl'
Setting sl bandwidth

See merge request aburger/openairinterface5g!228
2023-06-13 22:25:45 +00:00
Deokseong "David" Kim
5401a2c8e2 Setting sl bandwidth 2023-06-13 22:25:45 +00:00
Melissa
52512b6045 Merge branch 'episys/david/function_call_fix_in_sl' into 'episys/master-sl'
Compile error fix in sidelink.

See merge request aburger/openairinterface5g!227
2023-06-12 16:30:33 +00:00
Deokseong "David" Kim
f827f87c06 Compile error fix in sidelink. 2023-06-12 16:30:32 +00:00
Melissa
6b5034c8c8 Merge branch 'episys/david/sl_test_script_update' into 'episys/master-sl'
Sidelink test scripts update.

See merge request aburger/openairinterface5g!226
2023-06-09 21:50:44 +00:00
Deokseong "David" Kim
3351ba67e0 Sidelink test scripts update. 2023-06-09 21:50:44 +00:00
Deokseong "David" Kim
774c3914a7 Merge branch 'episys/david/adjusting_sync_offset' into 'episys/master-sl'
Adjusted sync offset

See merge request aburger/openairinterface5g!225
2023-06-07 21:27:31 +00:00
Deokseong "David" Kim
0f8bfd9b16 Adjusted sync offset 2023-06-07 21:27:31 +00:00
Melissa Elkadi
b22b11f1b7 Merge branch 'episys/master-sl' of gitlab.int-episci.com:aburger/openairinterface5g into episys/master-sl 2023-06-05 08:19:07 -07:00
Melissa
f4b83add19 Merge branch 'episys/adjust_sync_nr_ue' into 'episys/master-sl'
Enabling sample adjustment based on RSRP

See merge request aburger/openairinterface5g!224
2023-05-17 17:20:06 +00:00
Melissa
02084ccf63 Enabling sample adjustment based on RSRP 2023-05-17 17:20:05 +00:00
Melissa Elkadi
6235a4d47a Enabling sample adjustment based on RSRP
This commit will enalbe the UE sync adjustment procedure.
For every slot, it will take the DFT, conduct channel estimation,
calculate RSRP, assume a PSBCH was recieved (since we cannot
guarentee the slot alignment when NOT in RFSIM) and will
adjust the sync position if the RSRP is better than the initial/
previously saved SSB RSRP. This procedure has not effected
RFSIM functionality.
2023-05-17 06:44:31 -07:00
Melissa
7ada0bf205 Merge branch 'episys/pssch_sync_and_decoding_from_SyncRef_to_Nearby' into 'episys/master-sl'
Sidelink initial sync and PSSCH decoding from SyncRef UE to Nearby UE.

See merge request aburger/openairinterface5g!223
2023-05-12 21:05:05 +00:00
Deokseong "David" Kim
592fb5990a Sidelink initial sync and PSSCH decoding from SyncRef UE to Nearby UE. 2023-05-12 21:05:05 +00:00
Melissa
d3735b25bc Merge branch 'episys/fixing-SSB-sync' into 'episys/master-sl'
SSB Sync is working.

See merge request aburger/openairinterface5g!222
2023-05-12 20:53:15 +00:00
Melissa
5deac71113 SSB Sync is working. 2023-05-12 20:53:15 +00:00
Melissa
dc6bbfeb58 Merge branch 'episys/pssch_decoding_properly_rfsim' into 'episys/master-sl'
PSSCH decoding in RFSIM from SyncRef to NearBy

See merge request aburger/openairinterface5g!221
2023-05-09 20:03:34 +00:00
Ejaz Ahmed
24c1a29edd PSSCH decoding in RFSIM from SyncRef to NearBy 2023-05-09 20:03:34 +00:00
Melissa
4273ab299f Merge branch 'episys/moe_slot_issue' into 'episys/master-sl'
psschsim is working for slots other than 0

See merge request aburger/openairinterface5g!218
2023-04-20 18:48:25 +00:00
Moein Sadeghi
d8986dab25 psschsim is working for slots other than 0 2023-04-20 11:37:48 -07:00
Melissa Elkadi
bccc4d4c30 We are changing proc to be passed in as a pointer
The proc variable is a large struct, and by not
passing it in as a pointer so that the actual
proc instance is used rather than a copy of the
large struct.
2023-04-18 12:34:41 -07:00
Melissa
b318b1ece4 Merge branch 'WIP_ch_comp' into 'episys/master-sl'
SNR curve ready

See merge request aburger/openairinterface5g!216
2023-04-05 17:07:35 +00:00
Moein Sadeghi
36fef8042f SNR curve ready 2023-04-05 17:07:34 +00:00
Melissa
feb87455da Merge branch 'WIP_ch_comp' into 'episys/master-sl'
ch compensation is working

See merge request aburger/openairinterface5g!212
2023-03-30 00:28:29 +00:00
Melissa
a51c9a5ea8 Merge branch 'episys/mel/fixing-chan-est' into 'episys/master-sl'
CH est is ready and working

See merge request aburger/openairinterface5g!211
2023-03-30 00:27:05 +00:00
Moein Sadeghi
314fc5e02d CH est is ready and working 2023-03-30 00:27:04 +00:00
Moein Sadeghi
948819cff0 ch compensation is working 2023-03-29 16:27:40 -07:00
Moein Sadeghi
83e74ab97f comparison 2023-03-29 14:39:44 -07:00
Moein Sadeghi
9cd90d7094 formatting 2023-03-29 11:11:37 -07:00
Moein Sadeghi
cd047d4551 cleanup 2023-03-28 16:05:49 -07:00
Moein Sadeghi
9b7a21ccc8 Merge branch 'episys/master-sl' into episys/mel/fixing-chan-est 2023-03-28 15:28:14 -07:00
Moein Sadeghi
9984770ae7 ch estimation is done and is working 2023-03-28 15:18:16 -07:00
Melissa
85900fd04f Merge branch 'episys/mel/fixing-chan-est' into 'episys/master-sl'
This commit passes in PSSCH params to channel estimates.

See merge request aburger/openairinterface5g!209
2023-03-28 22:06:17 +00:00
Melissa
72e4bbb5ac This commit passes in PSSCH params to channel estimates. 2023-03-28 22:06:17 +00:00
Moein Sadeghi
dc82286396 some updates regarding ch_est_ext indexing 2023-03-28 13:30:36 -07:00
Deokseong "David" Kim
93deb071df Merge branch 'episys/david/fixing_sl_initial_sync' into 'episys/master-sl'
fixing initial sync in PSBCH

See merge request aburger/openairinterface5g!210
2023-03-27 19:32:50 +00:00
Deokseong "David" Kim
226d5ca3c8 fixing initial sync in PSBCH 2023-03-27 19:32:49 +00:00
Melissa Elkadi
90e46fb2ed This commit passes in PSSCH params to channel estimates.
Previously, we were using PDSCH parameters instead of
PSSCH parameters. This was inconsistent and confusing.
The commit also includes some clean up the initialization
function for the PSSCH members.
2023-03-27 09:43:10 -07:00
Melissa
274363b709 Merge branch 'psschsim_integration' into 'episys/master-sl'
CHE is ready

See merge request aburger/openairinterface5g!208
2023-03-24 22:44:59 +00:00
Moein Sadeghi
28610bbcb1 CHE is ready 2023-03-24 22:44:58 +00:00
Melissa
bc05481e5a Merge branch 'episys/mel/ofdm-mod-de-mod' into 'episys/master-sl'
This commit validates OFDM modulation and demoduation.

See merge request aburger/openairinterface5g!207
2023-03-24 20:13:30 +00:00
Melissa Elkadi
6594db8bba Conducting OFDM on all 14 symbols and clean-up 2023-03-24 12:51:21 -07:00
Melissa Elkadi
62957eaf88 This commit validates OFDM modulation and demoduation.
Specifically, we call the nr_ue_pssch_common_procedures(),
which conducts the modulation, and then the gNB common functions
for the rotation and demoduation (nr_slot_fep_ul and
apply_nr_rotation_ul). The demodulation functions were
not changed, and the modulation function was cleaned up,
and modified to take in the num_symbols set in the harq config
rather than being hard coded to 14.
2023-03-23 19:43:54 -07:00
Melissa Elkadi
636b0da177 Revert "This commit validates OFDM modulation and demoduation."
This reverts commit 52a071925e.
2023-03-23 19:43:28 -07:00
Melissa Elkadi
52a071925e This commit validates OFDM modulation and demoduation.
Specifically, we call the nr_ue_pssch_common_procedures(),
which conducts the modulation, and then the gNB common functions
for the rotation and demoduation (nr_slot_fep_ul and
apply_nr_rotation_ul). The demodulation functions were
not changed, and the modulation function was cleaned up,
and modified to take in the num_symbols set in the harq config
rather than being hard coded to 14.
2023-03-23 19:35:40 -07:00
Melissa
4fee3ba2a4 Merge branch 'episys/sidelink_RE_demapping' into 'episys/master-sl'
Sidelink resource demapping

See merge request aburger/openairinterface5g!206
2023-03-23 22:11:29 +00:00
David Kim
e6daf04b78 Further code cleanup. 2023-03-23 14:48:08 -07:00
David Kim
8c240ad33d Further cleanup regarding to channel estimation in sidelink. 2023-03-23 14:39:12 -07:00
David Kim
a454523e2f Removed unused channel estimation in sidelink. 2023-03-23 13:42:31 -07:00
David Kim
3597bd1b3d Removed return value(tx_layers) in PSSCH simulator. 2023-03-23 11:27:39 -07:00
Melissa
2c1d260052 Merge branch 'episys/mel/fixing-compilation-re-mapping' into 'episys/sidelink_RE_demapping'
Episys/mel/fixing compilation re mapping

See merge request aburger/openairinterface5g!205
2023-03-23 17:45:38 +00:00
Melissa
39834e7a33 Episys/mel/fixing compilation re mapping 2023-03-23 17:45:38 +00:00
David Kim
d8f21626d6 Added Resource Elements demapping procedure for sidelink. 2023-03-22 20:36:10 -07:00
Melissa
8e8e9a651a Merge branch 'episys/nr_ue_rx_sl_re_mapping' into 'episys/master-sl'
Episys/nr ue rx sl re mapping

See merge request aburger/openairinterface5g!203
2023-03-16 13:32:13 +00:00
David Kim
533031c466 Resolved memory issue in layer mapping. 2023-03-15 20:35:25 -07:00
Ejaz Ahmed
b9513d7689 Cleaned code, fixed issues 2023-03-15 19:57:48 -07:00
Ejaz Ahmed
1106028fd8 Added layer demapping in SL rx 2023-03-15 15:31:30 -07:00
Ejaz Ahmed
e5b8f71eb4 Merge branch 'episys/master-sl' into episys/nr_ue_rx_sl_re_mapping 2023-03-14 16:43:30 -07:00
Ejaz Ahmed
98b2f41519 Added code to validate resource mapping 2023-03-14 16:22:07 -07:00
Melissa
b3ab3bf121 Merge branch 'psschsim_integration' into 'episys/master-sl'
Psschsim integration

See merge request aburger/openairinterface5g!201
2023-03-14 23:18:49 +00:00
Moein Sadeghi
92b68e0308 added Nidx and take care of number of layers in SCI2 2023-03-14 16:14:48 -07:00
Moein Sadeghi
1517c772d6 Merge branch 'episys/master-sl' into psschsim_integration 2023-03-14 14:56:10 -07:00
Moein Sadeghi
d3b5d5baca minor changes regarding parameters 2023-03-14 14:34:13 -07:00
Ejaz Ahmed
e7477b1e3b Updated extract rb function 2023-03-14 12:50:01 -07:00
Moein Sadeghi
dfa3a4bef9 parent tx function is working up to dmrs modulation 2023-03-14 12:16:28 -07:00
Ejaz Ahmed
27e6267d70 Merge branch 'episys/master-sl' into episys/nr_ue_rx_sl_re_mapping 2023-03-13 17:38:59 -07:00
Ejaz Ahmed
38dcebf582 initial code for rx virtual resource block demapping 2023-03-13 17:37:29 -07:00
Melissa
5725038454 Merge branch 'psschsim_integration' into 'episys/master-sl'
Psschsim integration

See merge request aburger/openairinterface5g!196
2023-03-13 22:06:50 +00:00
Moein Sadeghi
1d945f8a5b Psschsim integration 2023-03-13 22:06:50 +00:00
Moein Sadeghi
898c14b349 solved the merge issues 2023-03-13 14:34:01 -07:00
Ejaz
34c9cbc0e8 Merge branch 'episys/master-sl' of 10.100.4.5:aburger/openairinterface5g into episys/master-sl 2023-03-13 14:15:33 -07:00
Melissa Elkadi
c8540c1fac Fixing whitespace and removing unused local variable 2023-03-13 13:28:53 -07:00
Melissa Elkadi
0e8876dc61 Whitespace clean up and comment removal 2023-03-13 13:04:47 -07:00
Moein Sadeghi
1c9d742f7c test different dmrs length 2023-03-13 11:26:57 -07:00
Moein Sadeghi
2db288597b Merge remote-tracking branch 'origin/episys/master-sl' into psschsim_integration 2023-03-13 10:26:15 -07:00
David Kim
502431fa89 Updated for sidelink rx side resource mapping. 2023-03-10 17:32:06 -08:00
Ejaz Ahmed
b48ac008a7 Merge remote-tracking branch 'origin/episys/master-sl' into episys/nr_ue_rx_sl_re_mapping 2023-03-10 17:08:27 -08:00
Melissa Elkadi
910c2a7c9b Resolving all warning on episys/master-sl
These warnings included incorrect pointer types passed
to nr_modulation(), unused variables, overflowing an int8_t,
and removing duplicated functions.
2023-03-10 16:54:01 -08:00
Melissa
cdc07b31ee Merge branch 'cherry-pick-f81715d3' into 'episys/master-sl'
Merge branch 'episys/ea/precoding_re_mapping' into 'episys/master-sl'

See merge request aburger/openairinterface5g!200
2023-03-11 00:16:14 +00:00
Melissa
9954cbef00 Merge branch 'episys/ea/precoding_re_mapping' into 'episys/master-sl'
Added Resource Mappings for SL

See merge request aburger/openairinterface5g!197

(cherry picked from commit f81715d3155f8e10f4d759be9c6c65ecb0b331ae)

dac16c84 Added virtual resource mapping and physical resource mapping
4d0c1a37 Merge remote-tracking branch...
b5ebb88d Merge branch 'episys/master-sl' into episys/ea/precoding_re_mapping
f5130406 Fixed alignment issue
2023-03-11 00:11:55 +00:00
Melissa
1a29991cc0 Merge branch 'fixing-dlsim-build-errors' into 'episys/master-sl'
Fixing dlsim build errors associated with multiple defs and linker issues

See merge request aburger/openairinterface5g!195
2023-03-10 22:04:46 +00:00
Moein Sadeghi
a92be12214 all blocks are working in psschsim without OFDM moculator 2023-03-10 12:20:13 -08:00
Ejaz Ahmed
f5130406be Fixed alignment issue 2023-03-10 11:25:13 -08:00
Ejaz Ahmed
b5ebb88dd2 Merge branch 'episys/master-sl' into episys/ea/precoding_re_mapping 2023-03-10 09:38:05 -08:00
Melissa Elkadi
4a6e14c870 Merge branch 'episys/master-sl' into fixing-dlsim-build-errors 2023-03-10 07:30:23 -08:00
Melissa Elkadi
ba5e2afa68 Fixing dlsim build errors associated with multiple defs and linker issues 2023-03-10 07:22:09 -08:00
Moein Sadeghi
2d985d8e34 WIP, integration is working in initial stages. simple channel should be added 2023-03-09 17:20:47 -08:00
Melissa
228948a6c2 Merge branch 'episys/pssch_coding_scrambling_modulation' into 'episys/master-sl'
Episys/pssch coding scrambling modulation

See merge request aburger/openairinterface5g!194
2023-03-10 00:30:06 +00:00
Melissa Elkadi
928e0b14e9 Reverting whitespace 2023-03-09 16:28:33 -08:00
Melissa Elkadi
e8cd468b66 Reverting unecessary whitespace changes and unused function 2023-03-09 16:12:49 -08:00
David Kim
d06513e06a Fixed polar code output buffer. 2023-03-09 15:13:47 -08:00
Ejaz Ahmed
4d0c1a3785 Merge remote-tracking branch 'origin/episys/pssch_coding_scrambling_modulation' into episys/ea/precoding_re_mapping 2023-03-09 14:08:39 -08:00
Ejaz Ahmed
dac16c84b8 Added virtual resource mapping and physical resource mapping 2023-03-09 13:34:06 -08:00
David Kim
2cebd95816 Merge remote-tracking branch 'origin/episys/master-sl' into episys/pssch_coding_scrambling_modulation 2023-03-09 12:10:30 -08:00
David Kim
375d464a02 Code cleanup and removed hard coded values in Sidelink. 2023-03-09 11:41:13 -08:00
Moein Sadeghi
142d117359 Merge branch 'episys/adding_pssch_rx_scrambling_modulation' into psschsim_integration 2023-03-09 11:06:10 -08:00
Moein Sadeghi
37bf7fcdfd Merge branch 'slsch_encoder_decoder_multiplexer' into 'episys/master-sl'
Slsch encoder decoder multiplexer

See merge request aburger/openairinterface5g!193
2023-03-09 18:23:09 +00:00
David Kim
a95c1f002f Removed debug log and code cleanup in sidelink. 2023-03-09 09:29:02 -08:00
David Kim
bf00aa6d67 Fixed compile warning. 2023-03-09 09:13:38 -08:00
David Kim
5a5f393960 Merge remote-tracking branch 'origin/episys/master-sl' into episys/pssch_coding_scrambling_modulation 2023-03-09 08:55:34 -08:00
David Kim
58def53df8 Fixed log in scrambling in sidelink. 2023-03-09 08:51:02 -08:00
David Kim
43543d27d4 Merge branch 'slsch_decoder' into episys/pssch_coding_scrambling_modulation 2023-03-09 08:40:56 -08:00
Melissa Elkadi
d13db801e9 Removing new line 2023-03-09 06:30:22 -08:00
Melissa Elkadi
e97d84e6ae We are currently not properly freeing our allocations
In this commit, I am removing the calls to the
dlsch and slsch free functions. The only reason
for this, is to clean up the terminal output.
Currently the output will report all the memory
leaks and it is A LOT. This spams the termianl and can
be difficult to check the state of the development
code. We need to ultimately fix this, but for now,
the code will crash during the free - which doesnt
spam the terminal.
2023-03-09 06:28:22 -08:00
Melissa Elkadi
ec8c0183d6 Cleanup and removing unused variables to fix warnings 2023-03-09 06:26:46 -08:00
Melissa Elkadi
e0959b2d1f Cleanup of #if statments and removing warnings 2023-03-09 06:23:12 -08:00
Melissa Elkadi
49d8880b5a Merge branch 'episys/master-sl' into slsch_encoder_decoder_multiplexer 2023-03-09 06:14:34 -08:00
Melissa Elkadi
3f95deb090 Merge branch 'episys/master-sl' of gitlab.int-episci.com:aburger/openairinterface5g into episys/master-sl 2023-03-09 06:14:07 -08:00
Moein Sadeghi
0426788ccd decoder and encoder are working based on de-multiplexer 2023-03-08 16:52:12 -08:00
Melissa
8c5435075d Merge branch 'slsch_decoder' into 'episys/master-sl'
Slsch decoder. Polar and LDPC encoder/decoder are working.

See merge request aburger/openairinterface5g!192
2023-03-08 23:05:53 +00:00
Moein Sadeghi
28793d4fb1 Slsch decoder. Polar and LDPC encoder/decoder are working. 2023-03-08 23:05:52 +00:00
David Kim
0a2f9f9196 Removed unused files related to sidelink. 2023-03-07 14:24:57 -08:00
David Kim
c98d4a7fa8 Updated unscrambling for multiple layers. 2023-03-07 14:15:45 -08:00
Moein Sadeghi
d72c3360d5 the LDPC decoder-encoder is working for SLSCH 2023-03-07 10:31:02 -08:00
David Kim
2514a59c03 Updated demultiplexing in Rx sidelink. 2023-03-06 18:43:55 -08:00
David Kim
bc012cd278 Updating unscrambling in Rx side for SL. 2023-03-06 12:10:45 -08:00
David Kim
c159fdd0b5 Updating demodulation part in Sidelink. 2023-03-03 20:28:48 -08:00
Moein Sadeghi
81be731d83 Polar decoer and encoder is working for SCI2_A 2023-03-02 14:59:03 -08:00
David Kim
dc8ee7c770 Updated pssch simulator setting. 2023-03-02 09:46:29 -08:00
Moein Sadeghi
d377b6e6c8 converting polar encoder output to uint8 2023-03-01 19:33:14 -08:00
David Kim
854d7481f8 Added DMRS modulation, PTRS init, and layer mapping for SL. 2023-03-01 16:10:08 -08:00
Ejaz Ahmed
aba215e1d9 Updated scrambling, modulation, data and control multiplexing for SL tx. 2023-02-28 18:25:17 -08:00
Moein Sadeghi
cb46f0f9a9 polar encoding and rate matching is done 2023-02-28 17:19:06 -08:00
Moein Sadeghi
3e5c22980c taking care of SCI2 generation and crc addition 2023-02-27 16:38:55 -08:00
David Kim
43ac0e649e Added sidelink tx modulation. 2023-02-24 19:14:50 -08:00
Moein Sadeghi
829311168d initial commit regarding decoder in UE 2023-02-24 15:54:35 -08:00
David Kim
bffe69b269 Added sidelink scrambling. 2023-02-24 11:16:34 -08:00
Ejaz Ahmed
1f0ee701af Merge branch 'episys/mel-cleanup-psschsim' into 'episys/master-sl'
Cleaning up psschsim

See merge request aburger/openairinterface5g!191
2023-02-23 23:18:39 +00:00
Melissa Elkadi
e09ba114c9 Fixing white space and removing sync_ref cond for slsch and slsch_rx allocation 2023-02-23 08:56:52 -08:00
David Kim
97afd6b102 Adding nr_slsch_ue file. 2023-02-22 18:37:48 -08:00
Melissa Elkadi
8349a58273 Fixing tx/rx to be sync ref and neaby 2023-02-22 15:56:52 -08:00
Melissa Elkadi
79cd8b7cfe Trying to properly initialize both rx and tx side for shared channel 2023-02-22 14:04:43 -08:00
Melissa Elkadi
7c5717aa5a Reverting nr_init_ue.c to master-sl 2023-02-22 13:53:02 -08:00
Melissa Elkadi
426128ac29 removing more unnecessary changes 2023-02-22 13:42:59 -08:00
Melissa Elkadi
54814a3ef2 Removing unnecessary changes 2023-02-22 13:42:20 -08:00
Melissa Elkadi
e3fd4fde98 Correctly initializing nrLDPC encoder 2023-02-22 13:39:14 -08:00
Melissa Elkadi
fb08b2a38b Making slsch_rx allocation more obvious based on sl_mode 2023-02-22 13:07:03 -08:00
Melissa Elkadi
5f054e3957 Reverting unnecessary change and fixing sl allocation 2023-02-22 13:05:29 -08:00
Melissa Elkadi
50d8b20317 Resolving merge conflicts in psschsim 2023-02-22 13:03:09 -08:00
Melissa Elkadi
be073d8b37 Merge branch 'episys/master-sl' into episys/mel-cleanup-psschsim 2023-02-22 13:00:17 -08:00
David Kim
654927f9b2 Updated nrUE uplink rx HARQ data type. 2023-02-22 12:58:39 -08:00
Melissa Elkadi
acbe135991 Changing to use original encoder
Also, adding a few struct items for decode.
However, currently the decoder does not properly work.
Additionally, there is a bunch of leaked memory that
needs to be fixed.
2023-02-22 12:50:39 -08:00
Melissa Elkadi
de4cf9bb23 Commenting out RX side
Also, correct the UL, DL and nb_rb variables
2023-02-22 07:53:46 -08:00
David Kim
4cafa71d0a Merge remote-tracking branch 'origin/episys/master-sl' into episys/adding_pssch_decoding 2023-02-21 18:05:35 -08:00
Melissa Elkadi
6f413ed4b7 This commit includes a lot of cleanup and...
It also includes the proper allocation of the slsch_rx
and other UL/DL harq_process.
2023-02-21 16:05:18 -08:00
Ejaz Ahmed
1f5813876b Added further modifications 2023-02-21 14:16:08 -08:00
Melissa
11cfc6c230 Merge branch 'episys/adding_pssch_encoding' into 'episys/master-sl'
Added slsch encoding feature for tx operation.

See merge request aburger/openairinterface5g!190
2023-02-21 21:52:23 +00:00
Deokseong "David" Kim
13b5967d71 Added slsch encoding feature for tx operation. 2023-02-21 21:52:23 +00:00
Melissa Elkadi
7ab02acdac Clean up for MR
Including, adding #define variables, make the
free() and malloc() match for the SLSCH members,
and cleaning up whitespace.
2023-02-21 13:49:59 -08:00
David Kim
e09a165650 Updated decoding for sidelink PSSCH. 2023-02-21 11:59:46 -08:00
David Kim
39162bef3d Code cleanup further. 2023-02-20 16:13:04 -08:00
David Kim
6d7150fdba Code cleanup. 2023-02-20 15:52:56 -08:00
David Kim
9fef7c2447 Added calling function for SLSCH encoding in pssch simulator. 2023-02-20 13:13:18 -08:00
David Kim
4ce918a3f8 Added slsch encoding feature for tx operation.
Integration is to call the encoding function.
2023-02-17 19:32:48 -08:00
Moein Sadeghi
36ca34d773 Merge branch 'psschsim_new_type_def' into 'episys/master-sl'
defining new type and variables for PSSCH

See merge request aburger/openairinterface5g!189
2023-02-17 22:44:59 +00:00
Moein Sadeghi
c4b9e0b0c1 defining new type and variables for PSSCH 2023-02-17 22:44:59 +00:00
Melissa
116705a749 Merge branch 'episys/sl_script_update_for_rfsim' into 'episys/master-sl'
Updated sidelink test script to include rfsim test.

See merge request aburger/openairinterface5g!188
2023-02-17 13:33:13 +00:00
Deokseong "David" Kim
331dec7be4 Updated sidelink test script to include rfsim test. 2023-02-17 13:33:13 +00:00
Melissa
a5aef0d192 Merge branch 'episys/sidelink_frequency_update' into 'episys/master-sl'
Moved sidelink frequency definition from common to nrUE.

See merge request aburger/openairinterface5g!187
2023-02-17 01:09:48 +00:00
Deokseong "David" Kim
454518004d Moved sidelink frequency definition from common to nrUE. 2023-02-17 01:09:48 +00:00
David Kim
92ceb5f98e Sidelink test script update to support rfsim test. 2023-02-16 15:30:53 -08:00
David Kim
2134747312 Updated sidelink test script to include rfsim test.
1. Both usrp commands and rfsim commands are in sl_cmds.txt.
2. To specify test mode, --test [usrp|rfsim] is required. The default value is usrp.
3. Supporting both usrp test and rfsim test.
2023-02-16 14:42:03 -08:00
David Kim
aeb2eaac6d Updated the default sidelink frequency value. 2023-02-16 14:29:20 -08:00
David Kim
28f444ee40 Moved sidelink frequency definition from common to nrUE. 2023-02-16 13:35:41 -08:00
Melissa
8058b7494f Merge branch 'pssch_simulator' into 'episys/master-sl'
Pssch simulator

See merge request aburger/openairinterface5g!186
2023-02-14 23:16:12 +00:00
Moein Sadeghi
e8e44f2263 Pssch simulator 2023-02-14 23:16:12 +00:00
Deokseong "David" Kim
b9b6138497 Merge branch 'episys/ea/sidelink_frequency_update' into 'episys/master-sl'
Exploiting Sidelink carrier frequency for SL

See merge request aburger/openairinterface5g!185
2023-02-13 21:45:18 +00:00
Ejaz Ahmed
2c85aa3b07 Exploiting Sidelink carrier frequency for SL 2023-02-13 21:45:17 +00:00
Melissa
b83b2f6914 Merge branch 'episys/mel/clean-up-inits' into 'episys/master-sl'
Changing the order of calling nr_init_frame_parms_ue.

See merge request aburger/openairinterface5g!184
2023-02-10 01:03:58 +00:00
Melissa Elkadi
9e83d03a6f Changing the order of calling nr_init_frame_parms_ue.
Previously, we were doing the following:
The dl_frequency, ul_frequency, and dl_CarrierFreq
are hardcoded in nr_phy_config_request_sl().
Then, the dl_frequency is passed into nr_init_frame_parms_ue(),
which then updates the dl_CarrierFreq based on this:
fp->dl_CarrierFreq = ((dl_bw_khz>>1) + config->carrier_config.dl_frequency)*1000;
Then, nr_init_frame_parms_ue_sa() is called,
which passes in downlink_frequency[CC_id][0],
which is the passed in command line argument.
This function then sets the dl_CarrierFreq to be the
passed in (command line) downlink frequency set by the -C option.

In order to clean this up, we are now using the original OAI develop
branch code. We will only call nr_init_frame_parms_ue() one time.
We will call it after we conditionally (based on SL mode) configure
the NR UE. And then we use the existing init_frame_parms function
based on SA mode or not.

The next change will implement SL frequency.
2023-02-09 16:55:32 -08:00
Melissa
89f11abe68 Merge branch 'episys/gNB_tdd_config' into 'episys/master-sl'
Episys/gNB_tdd_config

See merge request aburger/openairinterface5g!183
2023-02-07 23:39:43 +00:00
Moein Sadeghi
3362fa991f Episys/gNB_tdd_config 2023-02-07 23:39:43 +00:00
Melissa
6775b577fd Merge branch 'episys/david/counting_tx_sssb_in_tx_log' into 'episys/master-sl'
Adding Tx SSB count and measured RSRP value in the script.

See merge request aburger/openairinterface5g!180
2023-02-06 23:37:25 +00:00
David Kim
1283065946 Fixed delay time computation. 2023-02-06 15:02:16 -08:00
David Kim
50f4890faa Merge remote-tracking branch 'origin/episys/master-sl' into episys/david/counting_tx_sssb_in_tx_log 2023-02-06 10:16:29 -08:00
Melissa
03b75ed679 Merge branch 'episys/ea/sss_rsrp' into 'episys/master-sl'
Episys/ea/sss rsrp

See merge request aburger/openairinterface5g!182
2023-02-06 18:12:43 +00:00
Melissa
a91839e69c Episys/ea/sss rsrp 2023-02-06 18:12:43 +00:00
Melissa
2e34ab0190 Merge branch 'revert-a93da4a8' into 'episys/master-sl'
Revert "Merge branch 'episys/ea/sss_rsrp' into 'episys/master-sl'"

See merge request aburger/openairinterface5g!181
2023-02-06 18:09:11 +00:00
Melissa
e6abb12fb1 Revert "Merge branch 'episys/ea/sss_rsrp' into 'episys/master-sl'" 2023-02-06 18:09:11 +00:00
Melissa
a93da4a886 Merge branch 'episys/ea/sss_rsrp' into 'episys/master-sl'
Added RSRP calculation for SSB

See merge request aburger/openairinterface5g!179
2023-02-06 18:07:38 +00:00
Ejaz Ahmed
27e14a06c2 Added RSRP calculation for SSB 2023-02-06 18:07:38 +00:00
David Kim
028f92a3e2 Code cleanup. 2023-02-06 10:05:43 -08:00
David
bf6b8442f1 Added no-run option for log analysis only. 2023-02-03 12:55:21 -08:00
David
0f90a7c24c Added Sidelink SSB RSRP metric value in the script result. 2023-02-03 12:05:40 -08:00
David
0e84775e29 Merge branch 'episys/ea/sss_rsrp' into episys/david/counting_tx_sssb_in_tx_log 2023-02-02 16:17:42 -08:00
David
0e0fc7eab4 Counting the number tx Sidelink SSB for sync.
1. Parsed tx log file in case that SyncRef UE was found.
2. Counted the number of tx Sidelink SSB until sync.
3. Added average statistics for multiple iternations.
2023-02-02 15:17:31 -08:00
Ejaz
323f52aeb1 Code cleanup in log and format adjustment. 2023-02-02 12:12:11 -08:00
Ejaz
334fbb8879 Fixed symbol_offset and ssb_offset in rsrp measurement method 2023-02-02 11:48:40 -08:00
Melissa Elkadi
39d54215bd Removing whitespace 2023-02-01 16:59:10 -08:00
David
bb580fae58 Adding the time option to logs and removing color
By modifying the reported logs on the rx side, we
can then use the test script to analyze these logs
and figure out the time it took to achieve sync.
2023-02-01 16:38:35 -08:00
Melissa
783e3d0da6 Merge branch 'episys/add-test-metrics' into 'episys/master-sl'
Fixing spacing for test script

See merge request aburger/openairinterface5g!177
2023-02-01 23:20:17 +00:00
Melissa Elkadi
3fc1825e44 Fixing spacing for test script 2023-02-01 15:19:29 -08:00
Ejaz
c0bf78efa0 Separated SyncRef and UE in logs 2023-02-01 14:58:26 -08:00
Ejaz
c4f4a5d793 Merge branch 'episys/master-sl' into episys/ea/sss_rsrp 2023-02-01 14:49:54 -08:00
Ejaz
b6247b075b Fixed ssb index issue 2023-02-01 14:47:30 -08:00
Melissa
cfdfe6aaa7 Merge branch 'episys/david/updating_sl_launch_script' into 'episys/master-sl'
Updated sidelink launching script.

See merge request aburger/openairinterface5g!175
2023-02-01 22:40:45 +00:00
Deokseong "David" Kim
709efd5da5 Updated sidelink launching script. 2023-02-01 22:40:45 +00:00
Ejaz
d9e487359d Merge branch 'episys/master-sl' into episys/ea/for_merging_changes_4m_sss_rsrp 2023-02-01 12:06:05 -08:00
Ejaz
500069fcf0 Added Second SSS in rsrp calculation 2023-02-01 12:05:40 -08:00
Ejaz
99fb046474 Replaced ue->is_synchronized with ue->is_synchronized_sl 2023-02-01 12:05:10 -08:00
Ejaz
c8ace3b540 Added nr_ue_sl_ssb_rsrp_measurements function 2023-02-01 12:04:32 -08:00
Melissa
6fc62b0184 Merge branch 'episys/david/adding_sl_launch_scripts' into 'episys/master-sl'
Added sidelink launch scripts for both SyncRef UE and Nearby UE.

See merge request aburger/openairinterface5g!174
2023-02-01 14:54:29 +00:00
Melissa
085e84dc38 Merge branch 'episys/ea/fixed_nid_sl_calculation' into 'episys/master-sl'
Fixed nid_sl calculation formula

See merge request aburger/openairinterface5g!173
2023-02-01 14:29:49 +00:00
Ejaz Ahmed
b1407040b6 Fixed nid_sl calculation formula 2023-02-01 14:29:49 +00:00
David
88accf144e Fixed typo error in the log. 2023-01-31 18:48:12 -08:00
David
a7c5a0bb29 Indentation was changed to spaces. 2023-01-31 18:20:18 -08:00
David
2949d00083 Added sidelink launch scripts for both SyncRef UE and Nearby UE.
1. run_sl_usrp.py for launching both SyncRef UE and Nearby UE.
2. sl_rx_agent.py will be trigged by run_sl_usrp.py for Nearby UE
3. sl_usrp_cmds.txt for sidelink usrp commands.
2023-01-31 17:58:49 -08:00
Melissa
8378127c2c Merge branch 'episys/fixed_sync_ref_inconsistentency_issue' into 'episys/master-sl'
Replaced synch with sync

See merge request aburger/openairinterface5g!172
2023-01-31 23:51:23 +00:00
Ejaz Ahmed
e1d9d15b2c Replaced synch with sync 2023-01-31 23:51:23 +00:00
Melissa
53eb37e674 Merge branch 'episys/ssb_time_slot' into 'episys/master-sl'
ssb time slot allocation

See merge request aburger/openairinterface5g!171
2023-01-31 23:14:09 +00:00
Melissa Elkadi
682b1be022 Merge branch 'episys/master-sl' into episys/ssb_time_slot 2023-01-31 15:12:56 -08:00
Melissa Elkadi
f4047b7aa4 Removing commented code 2023-01-31 15:11:48 -08:00
Melissa
34d80d4754 Merge branch 'episys/ea/nid_1_nid_2_flags' into 'episys/master-sl'
Added nid1 and nid2 flags

See merge request aburger/openairinterface5g!170
2023-01-31 19:38:20 +00:00
Ejaz Ahmed
5dc3663f16 Added nid1 and nid2 flags 2023-01-31 19:38:20 +00:00
Melissa
de54ec5b8b Merge branch 'episys/fixing-cl-dl-freq' into 'episys/master-sl'
Calling nr_init_frame_parms_ue_sa we can dynamically set the tx/rx freq

See merge request aburger/openairinterface5g!169
2023-01-31 19:34:05 +00:00
Melissa
ce07b567d0 Calling nr_init_frame_parms_ue_sa we can dynamically set the tx/rx freq 2023-01-31 19:34:05 +00:00
Moein Sadeghi
4ee9a6d8c6 last commit was not correct commit. this time it is resolved ! 2023-01-31 10:36:15 -08:00
Moein Sadeghi
39726e3274 resolved merge conflict 2023-01-31 10:30:03 -08:00
David
b431e042fc Calling nr_init_frame_parms_ue_sa we can dynamically set the tx/rx freq
Additionally, there were a few variables defined as PARAMBOOLs
rather than ints in the softmodem-common.h so they were not properly
updated from the CL. Lastly, setting a default value for dl_freq.
2023-01-31 06:51:34 -08:00
Moein Sadeghi
43e8dcd7b6 appropriate formatting 2023-01-30 15:46:34 -08:00
Moein Sadeghi
5ea2e6d029 feature is working in rfsim 2023-01-30 15:01:21 -08:00
Moein Sadeghi
7cdf6847f1 modification regardgin SSB slot allocation 2023-01-27 12:00:22 -08:00
Melissa
77f069c1af Merge branch 'episys/timestamp_sl_debug' into 'episys/master-sl'
Synchronization is working on USRPs OTA!

See merge request aburger/openairinterface5g!168
2023-01-20 22:39:13 +00:00
Melissa Elkadi
6a2f5664b8 Fixing whitespace 2023-01-20 14:38:42 -08:00
Ejaz
6d51179357 Adding/fixing whitespace 2023-01-16 13:03:32 -08:00
Ejaz
720b2669fd Properly updating the SSB start location 2023-01-16 12:55:26 -08:00
Ejaz
9ffe2b7851 Reverting write timestamps since these changes did not effect sync 2023-01-16 11:46:20 -08:00
Ejaz
6befa6b3b0 Reverting check for nr_slot_tx == 20 becasue not possible 2023-01-16 11:28:57 -08:00
Ejaz
d497806c6c Properly setting SSB offset.
Previously, we hackily changed the rx_offset right before
taking the DFT. It is better for us to properly calculate
the SSB offset. This is done by subtracting off the prefix
symbols of every symbol that exists before the correalted
PSS.
2023-01-16 11:14:29 -08:00
Ejaz
475f99195e Reverting hack 2023-01-16 10:25:37 -08:00
Ejaz
e1c152fbcf This rx_offset change is how we are able to get sync 2023-01-16 10:12:24 -08:00
Ejaz
0db28d4f5a Removing unnecessary changes 2023-01-16 09:55:50 -08:00
Ejaz
e344d531f9 Fixing merge conflicts. 2023-01-16 09:53:10 -08:00
Ejaz
433f3d1507 Reverting white space changes and unnecessary check for overflow 2023-01-16 09:50:20 -08:00
Ejaz
7e7b00e58b Merge branch 'episys/timestamp_sl' into episys/timestamp_sl_debug 2023-01-16 09:44:46 -08:00
David
9b03282972 Reverting whitespace change 2023-01-16 09:38:58 -08:00
David
b5a2dab4e9 Reverting more unnecessary changes 2023-01-16 09:38:09 -08:00
David
0f22e2a2d8 Fixing more white space 2023-01-16 09:34:16 -08:00
David
9fe8a273f2 Reverting whitespace change 2023-01-16 09:32:12 -08:00
David
e95d6e28fc Reverting init changes that have no effect on sync 2023-01-16 09:31:40 -08:00
David
71f52d180f Reverting whitespace changes 2023-01-16 09:27:24 -08:00
David
0c048b28bd Merge branch 'episys/master-sl' into episys/timestamp_sl 2023-01-16 09:24:21 -08:00
David
0a38dbb7be Clean up for MR 2023-01-16 09:15:16 -08:00
Ejaz
40a2ee85aa Sync is workinggit add -u! 2023-01-16 08:47:42 -08:00
David
c61ab7fb7e Sync is workinggit add -u! 2023-01-16 08:47:28 -08:00
Melissa Elkadi
9591a5bef5 Adding hex dumps 2023-01-13 13:58:46 -08:00
Melissa
f95c3f92ed Merge branch 'episys/cleanup-ue-thread-sl' into 'episys/master-sl'
UE_thread_sl() clean-up, code simplification, and small bug fix

See merge request aburger/openairinterface5g!166
2023-01-13 18:18:36 +00:00
Melissa
0a6e7eb898 UE_thread_sl() clean-up, code simplification, and small bug fix 2023-01-13 18:18:36 +00:00
Melissa Elkadi
26a52906df Removing 5G code that was incorrectly added, it still exists in nr_initial_sync 2023-01-13 10:15:57 -08:00
Melissa Elkadi
0f8bb964a4 White space clean up 2023-01-13 10:11:35 -08:00
Melissa Elkadi
937c7119ae The nb_prefix_samples0 is dependent on sync status.
By changing the global value of the nb_prefix_samples0
at the top of the thread, we are never able to properly
set the value after sync. To fix this, a local variable
was added in every place we use nb_prefix_samples0 in
the UE_thread_SL. However this commit has quite a few
changes becasue some places where the nb_prefix_samples0
global was used did not have the UE global available, so
we had to update the function footprint to pass in a
sync bool for proeprly setting the local nb_prefix_samples0
variable.
2023-01-13 06:48:07 -08:00
Melissa Elkadi
3e028a43b5 Not writing in the future if this data is not ready yet. 2023-01-12 15:51:11 -08:00
Ejaz
c501e448ca Updated the write_time_stamp value.
Previously this value was based on the slot_tx,
however the slot_tx is in the future and has not
be fully populated at this time (execution of writing
to USRP). So, we should write to USRP in current
slot, but we will fill the buffer in the generation
code in the future.
2023-01-11 14:57:10 -08:00
David
8313896093 Lowering init size of txdata and txdataF to not be ridiculous 2023-01-11 14:39:38 -08:00
Ejaz
87436a1884 Lowering init size of txdata and txdataF buffers to not be ridiculous 2023-01-11 14:38:46 -08:00
David
34d508ae23 Updating write timestamp
The generated SSB frame is in the future,
but what we are transmitting should be the current spot not the future
one.
2023-01-11 13:17:39 -08:00
Melissa Elkadi
ffb6ca5934 Merge branch 'episys/master-sl' into episys/cleanup-ue-thread-sl 2023-01-11 11:57:47 -08:00
Melissa Elkadi
682721cf57 Disabling MAC layer code after sync is achieved. 2023-01-11 11:05:50 -08:00
David
1a627782dd Reverting back to old SL configuration 2023-01-11 07:44:30 -08:00
Ejaz
28688065e2 Reverting back to old SL configuration 2023-01-11 07:43:56 -08:00
Ejaz
21b766912b Updating log messages for sync and adding an exit 2023-01-11 06:06:35 -08:00
Ejaz
774b8ef6e9 Merge remote-tracking branch 'episci/episys/timestamp_sl' into episys/timestamp_sl_debug 2023-01-10 09:56:10 -08:00
David
aefe918f9f Adding logs to show PSS location on TX side 2023-01-09 16:16:03 -08:00
Ejaz
1dbe99316a Changed IP address in conf and Added log in usrp_lib.cpp 2023-01-09 13:46:51 -08:00
David
b0ca489e60 Currently gets rid of LLLLs somewhat thorugh process 2023-01-09 12:07:37 -08:00
David
5d270d63ac Only seeing LLLLs on a few items! 2023-01-09 11:10:32 -08:00
David
22063a35ec Trying to get sync_ref to match gNB 2023-01-09 10:54:54 -08:00
David
d39997d8b0 Added logs to check tx sl timestamp using USRP 2023-01-06 17:19:00 -08:00
Melissa Elkadi
74998221e8 This commit does a lot of clean up.
It includes clean up of the entire UE_thread_sl().
It should also be simplifying a lot of the code and
it now uses UE->rx_offset_sl properly instead of
UE->rx_offset.
2023-01-05 13:18:27 -08:00
Melissa Elkadi
c468bd519b This commit does three things:
1. The dummyWrite is only necessary for the client (!sync_ref)
   UE, since it should write dummy data for timing to the server.
2. There is a typo in one of the logs (pbch -> psbch)
3. The MAC layer is currently disabled. We should not fill the
   RX_IND since it is not even allocated. Later we can re-enable
   this code.
2023-01-05 11:23:22 -08:00
Melissa
385243f521 Merge branch 'episys/validated-tx-on-rfsim' into 'episys/master-sl'
Updating hexdumps for debugging

See merge request aburger/openairinterface5g!165
2023-01-03 19:54:32 +00:00
Melissa
0453ef25dd Updating hexdumps for debugging 2023-01-03 19:54:32 +00:00
Melissa
a909589185 Merge branch 'episys/validated-tx-on-rfsim' into 'episys/master-sl'
TX Data Validation for RFSIM

See merge request aburger/openairinterface5g!164
2023-01-03 19:27:16 +00:00
Melissa
064b05aee8 TX Data Validation for RFSIM 2023-01-03 19:27:16 +00:00
Melissa
4f34b5f97a Merge branch 'episys/mel/preventing-overflow-during-decode' into 'episys/master-sl'
The calculation of -1/1 in decoding was buggy.

See merge request aburger/openairinterface5g!162
2022-12-20 23:58:56 +00:00
Melissa
9c2c8067ef The calculation of -1/1 in decoding was buggy. 2022-12-20 23:58:56 +00:00
Melissa
ca86a8a5ac Merge branch 'episys/mel-modifying-idft-input-output-pointer-locations' into 'episys/master-sl'
Changing the address in which the output of the IDFT starts

See merge request aburger/openairinterface5g!160
2022-12-19 19:27:59 +00:00
Melissa
4708a7d81c Changing the address in which the output of the IDFT starts 2022-12-19 19:27:59 +00:00
Melissa
1d730cd8e2 Merge branch 'episys/rotate-in-freq-domain' into 'episys/master-sl'
Rotating the txdata buffer in the freq domain

See merge request aburger/openairinterface5g!158
2022-12-14 23:33:06 +00:00
Melissa Elkadi
e20bd2edaa Rotating the txdata buffer in the freq domain 2022-12-14 15:22:08 -08:00
Melissa
fc236e4bd3 Merge branch 'episys/mel-debugging-dmrs-correl' into 'episys/master-sl'
Validate the pilot bits and suspect PSBCH channel estimation is problematic.

See merge request aburger/openairinterface5g!155
2022-12-13 23:56:03 +00:00
Melissa Elkadi
2ebef66785 Removing unnecessary change 2022-12-13 15:53:18 -08:00
Melissa Elkadi
4cd71874c0 Adding gold psbch back in to RX side 2022-12-13 15:50:27 -08:00
Melissa Elkadi
c19ffff075 Removing redundant return 2022-12-13 15:44:49 -08:00
Melissa Elkadi
1c50671296 Improved performance by resetting k every symbol 2022-12-13 15:00:41 -08:00
Melissa Elkadi
611c98f6f1 Resetting the k value seems to help channel estimation on DMRS 2022-12-13 13:46:25 -08:00
Melissa Elkadi
a66d7fcafc More whitespcae clean up 2022-12-13 13:23:27 -08:00
Melissa Elkadi
c6a972f65e More code clean up 2022-12-13 13:19:55 -08:00
Melissa Elkadi
28290c792d Clean up for MR 2022-12-13 13:13:20 -08:00
Melissa Elkadi
aa2e0319d0 Adding uncommented code and update to match Ejaz 2022-12-13 11:32:11 -08:00
Melissa Elkadi
0cce63fae9 Code clean up and running DMRS correlation on all PSBCH symbols 2022-12-13 11:21:44 -08:00
Melissa Elkadi
f4bd344b9b This commit has several changes (some hacks) that result in correct first 3 PSBCH decoding
The changes include:
1. The last argument in nr_slot_fep_init_sync() is the
   ssb_offset. This offset was shifting the rxdata buffer
   by PSS location (2368) - # prefix samples (144) = 2224.
   This offset was causing the first PSBCH to be missed and
   the other symbols to be shifted. Now, by setting this
   offset argument to 0, the shift is 144, 144+2048, 144+2048*2, etc.

2. The estimateSz fed to the nr_psbch_channel_estimation should
   be the number of symbols per slot * ofdm sym size * sizeof(int).

3. The nb_prefix_samples was not matching between the TX and RX side.
   The first cp_size is nb_prefix_samples if sync is 0.

Lastly, we can only correlate with the first 3 PSBCH symbols.
Meaning, the 0th, 5th, and 6th symbol index in the SSB.. Not sure why.
2022-12-09 13:45:31 -08:00
Melissa Elkadi
565f6e13b0 Merge branch 'episys/nr_initial_sync_ota_test' into episys/mel-debugging-dmrs-correl 2022-12-09 11:33:05 -08:00
Melissa Elkadi
30e6cc01c6 Hacked the psbch reception in nr_sl_initial_sync without DMRS correlation... and it works! 2022-12-09 11:27:44 -08:00
Melissa Elkadi
f9f8e21b55 Applying rotation to time domain of txdata instead of freq domain 2022-12-09 11:20:55 -08:00
Melissa Elkadi
bb1699e4d6 In this commit, we validated the first set of pilot bits.
The nr_psbch_dmrs_rx() is able to properly generate the
pilot bits used in the PSBCH correaltion. It seems that the
RXdataF is not properly aligned and we cannot correlate
with the pilot bits
2022-12-09 10:29:35 -08:00
Melissa Elkadi
853f2737a4 Reverting incorrect change 2022-12-09 08:24:57 -08:00
Melissa Elkadi
7f3242a2b4 Merge branch 'episys/nr_initial_sync_ota_test' into episys/mel-debugging-dmrs-correl 2022-12-09 08:08:38 -08:00
Melissa Elkadi
f2e678375b Clean up of nr_psbch_detection 2022-12-09 08:03:34 -08:00
David Kim
6444ee9aee Changed dmrs signal index in psbch. 2022-12-08 20:07:43 -08:00
Melissa
5fc0e53cc8 Merge branch 'nr_sl_phy_2' into 'episys/master-sl'
SSS synch working

See merge request aburger/openairinterface5g!154
2022-12-09 00:35:30 +00:00
Melissa Elkadi
147b5af7fe Fixing small whitespace changes and re-assignment of rxdataF 2022-12-08 16:33:43 -08:00
Melissa Elkadi
fa5fb4e49b Cleaning up rx_sss_sl_nr() 2022-12-08 16:29:22 -08:00
Melissa Elkadi
d98f09825f Cleaning up pss_sl_ch_est_nr() 2022-12-08 16:14:15 -08:00
Melissa Elkadi
74c075a751 Cleaning up pss_sss_sl_extract_nr() 2022-12-08 16:07:21 -08:00
Melissa Elkadi
f6815c381a Cleaning up nr_sl_initial_sync() 2022-12-08 15:56:43 -08:00
Prashanth Saidu
7268877512 formatting nr_sl_initial_sync 2022-12-08 15:35:23 -08:00
Prashanth Saidu
9114cd36cd Reverting Correlation threshold to 30K from 60K as results are better at 30K 2022-12-08 14:02:21 -08:00
Prashanth Saidu
530a5a3f01 Cleanup pss_sl_ch_est_nr 2022-12-08 13:46:11 -08:00
Prashanth Saidu
1a9148ae2f Cleaning upnr_sl_initial_sync 2022-12-08 13:23:25 -08:00
Prashanth Saidu
e74d9c8aea Cleaning up pss_sss_sl_extract_nr 1 2022-12-08 11:15:21 -08:00
Prashanth Saidu
662d453bf5 Cleaning up pss_sss_sl_extract_nr 2022-12-08 11:12:49 -08:00
Prashanth Saidu
00885ccfd6 Calling nr_psbch_detection() instead of nr_pbch_detection 2022-12-08 10:55:41 -08:00
Prashanth Saidu
2e17b65004 Removing ref to Nid_cell and adjusting correlation threshold for SL 2022-12-08 08:56:15 -08:00
Prashanth Saidu
df3a7bab95 Fixing spaces in pbchsim.c 2022-12-07 15:06:02 -08:00
Ejaz AHmed
c96851dc0d Updated rx_sync in the psbchsim to handle all psbch symbols 2022-12-07 13:27:04 -08:00
Prashanth Saidu
8c528798ad Merge branch 'episys/master-sl' into nr_sl_phy_2 2022-12-07 12:49:22 -08:00
Ejaz AHmed
c065dc89bb Merge branch 'episys/master-sl' into episys/nr_initial_sync_wplan 2022-12-07 10:45:51 -08:00
Prashanth Saidu
f339b8b1e7 Fixed SSS correlation 2022-12-07 10:16:18 -08:00
Melissa
24cec4d5ba Merge branch 'episys/changed_phy_parameters' into 'episys/master-sl'
Changed PHY parameters in psbchsim

See merge request aburger/openairinterface5g!153
2022-12-06 23:32:19 +00:00
Ejaz AHmed
0d769760fd Changed PHY parameters in psbchsim 2022-12-06 12:18:50 -08:00
Prashanth Saidu
8fb5f5a350 Updated SSS unit test 2022-11-18 11:40:10 -08:00
Ejaz Ahmed
9ffc7359b4 Merge branch 'episys/pss_sync' into 'episys/master-sl'
Some of the rx side functions updated to enable pss initial synchronization

See merge request aburger/openairinterface5g!151
2022-11-18 17:45:40 +00:00
Ejaz Ahmed
e6d200befe Some of the rx side functions updated to enable pss initial synchronization 2022-11-18 17:45:39 +00:00
Prashanth Saidu
e079c43485 Merge branch 'episys/master-sl' into nr_sl_phy_2 2022-11-18 08:49:36 -08:00
Prashanth Saidu
5f200844a4 updated log vectors for SSS and PSS 2022-11-18 08:48:26 -08:00
Melissa
6a4aa58c2e Merge branch 'episys/mel-new-pss-tests' into 'episys/master-sl'
Adding Sidelink PSS and SSS Tests into the PSBCH Simulator.

See merge request aburger/openairinterface5g!150
2022-11-18 16:46:12 +00:00
Melissa Elkadi
679bcc4365 Updating white space 2022-11-18 08:45:45 -08:00
Melissa Elkadi
9f056450d6 Freeing allocated memory regardless of PSS/SSS mode or PSBCH sim mode.
Also, reverting UE->common_vars.eNb_id == pss_sequence_number
comparison for *now* until we merge in updated PSS and SSS
code. In which case, it will be:
UE->common_vars.N2_id == pss_sequence_number
2022-11-18 05:58:22 -08:00
Prashanth Saidu
27994e444d Removing a debug while(1) 2022-11-17 16:10:19 -08:00
Melissa Elkadi
9d11486431 Updating the code to support PSS SL changes 2022-11-17 14:06:32 -08:00
Prashanth Saidu
e6ed641079 SSS metric is lower than floor, needs to be fixed 2022-11-17 13:00:51 -08:00
Melissa Elkadi
99bdc94279 Updating pss_test boolean to be named properly 2022-11-17 09:59:02 -08:00
Melissa Elkadi
a86559bdce Adding sss sl test into the simulator.
The new nr_sss_sl_test.c/h files are used
for the SSS test. These files are simplified
versions of the pss_tests that already exist.

Now that these tests are able to be compiled
and ran, they should explicitly call the SL
specific SSS functions
2022-11-17 09:54:05 -08:00
Melissa Elkadi
971bb3bfc0 Code clean up 2022-11-16 13:56:45 -08:00
Melissa Elkadi
c387aa0f0d Adding pss sl test into the simulator.
The new nr_pss_sl_test.c/h files are used
for the PSS test. These files are simplified
versions of the pss_tests that already exist.

Now that these tests are able to be compiled
and ran, they should explicitly call the SL
specific PSS functions.
2022-11-16 13:44:19 -08:00
Prashanth Saidu
10ec942d67 Enabing nr_sl_initial_sync 2022-11-16 11:31:42 -08:00
Prashanth Saidu
91338a7439 Updated NID SL macro to use Nid_SL 2022-11-16 10:50:49 -08:00
Prashanth Saidu
a5ff057b69 Updated GET_NID macros 2022-11-16 10:38:50 -08:00
Melissa Elkadi
d04291d66d Revert "Merge branch 'episys/master-sl' of gitlab.int-episci.com:aburger/openairinterface5g into episys/master-sl"
This reverts commit 4b9bc61748, reversing
changes made to 12f240c7e5.
2022-11-16 09:49:23 -08:00
Melissa Elkadi
4b9bc61748 Merge branch 'episys/master-sl' of gitlab.int-episci.com:aburger/openairinterface5g into episys/master-sl 2022-11-16 09:30:33 -08:00
Prashanth Saidu
a0a0e32f68 Fixed GET_NID1_SL computation 2022-11-16 08:47:31 -08:00
Prashanth Saidu
8167d64bcb Updated computation of Nid1, Nid2 2022-11-15 12:24:18 -08:00
Prashanth Saidu
e6b101d7da Update SSS with 2nd SSS symnbol computations 2022-11-14 20:02:28 -08:00
Prashanth Saidu
3689def55f Added PSS and SSS sync for Side Link 2022-11-14 09:55:31 -08:00
Prashanth Saidu
a8c79ebf3b Merge branch 'episys/master-sl' into nr_sl_phy_2 2022-11-11 12:31:13 -08:00
Melissa
12f240c7e5 Merge branch 'episys/david/sl_param_and_channel_update' into 'episys/master-sl'
Sidelink Parameter and Channel index update.

See merge request aburger/openairinterface5g!149
2022-11-11 18:19:52 +00:00
Deokseong "David" Kim
e1fc0a4d6b Sidelink Parameter and Channel index update. 2022-11-11 18:19:52 +00:00
Prashanth Saidu
1c602f0e92 Merge branch 'episys/master-sl' into nr_sl_phy_2 2022-11-07 05:46:16 -08:00
Melissa Elkadi
f5ad65cd2e Using the working polar_decoder instead of polar_decode_int16 2022-11-04 17:46:50 -07:00
Deokseong "David" Kim
4fe865a30f Merge branch 'episys/debug_psbchsim' into 'episys/master-sl'
Changed the number of dmrs RE per symbol in psbch.

See merge request aburger/openairinterface5g!147
2022-11-04 23:40:15 +00:00
Ejaz AHmed
4ba390adfc Changed the number of dmrs RE per symbol in psbch. 2022-11-04 16:20:50 -07:00
Prashanth Saidu
ebfa50dce4 Merge branch 'episys/master-sl' into nr_sl_phy_2 2022-11-04 11:20:05 -07:00
Deokseong "David" Kim
3d1631a673 Merge branch 'episys/develop-sl' into 'episys/master-sl'
PSBCH simulator parameter update.

See merge request aburger/openairinterface5g!146
2022-11-04 18:13:24 +00:00
David Kim
7ea1501058 PSBCH simulator parameter update. 2022-11-04 11:02:47 -07:00
Deokseong "David" Kim
6fe163f4c4 Merge branch 'nr_sl_phy_2' into 'episys/master-sl'
Updates to PSBCH DMRS Tx

See merge request aburger/openairinterface5g!145
2022-11-04 16:40:33 +00:00
Prashanth
38cccc73f0 Updates to PSBCH DMRS Tx 2022-11-04 16:40:32 +00:00
Prashanth Saidu
75d0b6116e Removing DMRS mod_count check to let complete DMRS generation 2022-11-03 21:31:56 -07:00
Melissa
acb3a50768 Merge branch 'mel-debugging-psbchsim' into 'episys/master-sl'
Fixing for loop indices for PSBCH

See merge request aburger/openairinterface5g!144
2022-11-04 00:02:40 +00:00
Melissa Elkadi
e51ce1d232 Removing DEBUG_PSBCH definition 2022-11-03 17:02:26 -07:00
Melissa Elkadi
e23e81425c Fixing for loop indices for PSBCH 2022-11-03 17:00:01 -07:00
Melissa
14234e9eca Merge branch 'episys/david/updating_psbch_rx_side' into 'episys/master-sl'
Updating psbch rx side

See merge request aburger/openairinterface5g!143
2022-11-03 23:20:33 +00:00
Deokseong "David" Kim
5dd561743e Updating psbch rx side 2022-11-03 23:20:33 +00:00
Prashanth Saidu
264ab2ddd2 Merge branch 'episys/master-sl' into nr_sl_phy_2 2022-11-03 16:18:58 -07:00
Melissa
1e3932fbe1 Merge branch 'debugging-polar-encoding' into 'episys/master-sl'
HACKY change for NR_POLAR_PSBCH_E.

See merge request aburger/openairinterface5g!142
2022-11-03 22:43:41 +00:00
Melissa Elkadi
51b8271ee9 HACKY change for NR_POLAR_PSBCH_E.
This is going to be a long explaination. The spec says
for polar encoding that N = 512 (input size) - 2^9,
K = 56, and E (encoded size) = 1782. However, the interleaver
will break 512 into 16, 32 bit sections. These 16 sections
are moved around to form the interleaved input. Then
the code does something else and basically, every 16th
bit is modified (or important) and triggers the mingroupsize
to be 16. The mingroupsize is calculated in a for loop and
starts from 0->16 and then resets again at 0. However, the
E size if 1782, which is not divisible by 16, will make
minigroupsize end at 6 (it is incremented until the special
character is found at index 16). The hack is to just
make 1782 large enough so the last bit is found, so we change
it to size 1792.
2022-11-03 15:36:03 -07:00
Prashanth Saidu
c6d13e8d73 Merge branch 'episys/master-sl' into nr_sl_phy_2 2022-11-03 14:35:52 -07:00
Melissa
8a8c5275b0 Merge branch 'episys/convert_payload_to_nrue' into 'episys/master-sl'
Created psbch_nr_sl; Added nr_generated_sl_psbch() function

See merge request aburger/openairinterface5g!141
2022-11-03 20:11:24 +00:00
Ejaz Ahmed
a884e37625 Created psbch_nr_sl; Added nr_generated_sl_psbch() function 2022-11-03 20:11:23 +00:00
Prashanth Saidu
dc84deafea merge to master-sl 2022-11-03 11:38:36 -07:00
Melissa
23adfc132a Merge branch 'update-psbchsim-mode2' into 'episys/master-sl'
Moving nr_sl_common_signal_procedures to nr_psbch.c temporarily

See merge request aburger/openairinterface5g!140
2022-11-03 17:47:15 +00:00
Melissa Elkadi
be8bed3602 Fixing white space and adding new dmrs gen file to UE 2022-11-03 10:45:47 -07:00
Melissa Elkadi
a8cb993e56 This commit moves the DMRS symbol generation to the UE side
In this commit, the code properly builds and is able to
(somehow) generate non-zero values into the txdata buffer.
2022-11-03 10:40:51 -07:00
Melissa Elkadi
43da8296cf Moving nr_sl_common_signal_procedures to nr_psbch.c temporarily
Currently, the psbchsim will build and run correctly without
linking errors. Several solutions have been tried unsuccessfully.
Now that we have a working version, we will save these changes
and try a few more logical places to put this
2022-11-03 10:17:48 -07:00
Melissa
3462053a08 Merge branch 'update-psbchsim-mode2' into 'episys/master-sl'
Moving psbchsim to be only UE dependent

See merge request aburger/openairinterface5g!139
2022-11-03 01:07:53 +00:00
Melissa Elkadi
5e21c904ae This commit adds assert fatals and code clean up 2022-11-02 18:01:50 -07:00
Melissa Elkadi
26395fa2c2 Merge branch 'episys/master-sl' into update-psbchsim-mode2 2022-11-02 16:52:59 -07:00
Melissa
f62ea2b3e0 Merge branch 'adding_sl_common_signal_procedures' into 'episys/master-sl'
Adding sl common signal procedures

See merge request aburger/openairinterface5g!138
2022-11-02 23:52:13 +00:00
Deokseong "David" Kim
f70097d9c9 Adding sl common signal procedures 2022-11-02 23:52:13 +00:00
Melissa Elkadi
47c400da03 Adding hex dumps for debugging tx payloads 2022-11-02 15:59:24 -07:00
Melissa Elkadi
a01a5f06ed Moving psbchsim to be only UE dependent
Also, this commit includes removing the NR_txUE_PSBCH
struct members into the NR_UE_PSBCH struct. At this point,
I cannot see a reason for a seprate struct. Especially
since the NR_txUE_PSBCH is not declared within the PHY_VARS_UE
scope so it is not accessible by the UE PHY layer global
anyways.

Additionally, the changes in psbchsim will allow the
UE to be used instead of the gNB. It configures the
frame parameters and should allocate memory for the
tx and rx buffers used in SL.
2022-11-02 15:50:43 -07:00
Melissa
d8a53795fe Merge branch 'nr_sl_phy_2' into 'episys/master-sl'
NR SL PHY updates 1

See merge request aburger/openairinterface5g!137
2022-11-02 21:08:41 +00:00
Prashanth
42991ff0ca NR SL PHY updates 1 2022-11-02 21:08:40 +00:00
Melissa
087318f333 Merge branch 'new-sl-file-creation' into 'episys/master-sl'
UE frame parameter configuration

See merge request aburger/openairinterface5g!136
2022-11-02 21:06:59 +00:00
Ejaz Ahmed
c2c574f153 UE frame parameter configuration 2022-11-02 21:06:59 +00:00
Prashanth Saidu
96b7930292 Update log for ssb_start_symbol 2022-11-02 13:55:46 -07:00
Prashanth Saidu
789b639bbe removing gNB arguments in SL PSBCH DMRS 2022-11-02 13:49:00 -07:00
Prashanth Saidu
7b5eb7e1b7 SSS PSS deleting gNB arguments 2022-11-02 13:39:45 -07:00
Prashanth Saidu
04d35e8d7e Updating Nid ops from 335 to 336 2022-11-02 13:26:03 -07:00
Prashanth Saidu
bef8362087 Updated Nid for LS SSS 2022-11-02 13:12:27 -07:00
Prashanth Saidu
d80ba9b649 increasing pilot size to accommodate for new size 2022-11-02 12:59:15 -07:00
Prashanth Saidu
fdd75c4a36 moved sl sss generation to separate file 2022-11-02 10:30:52 -07:00
Prashanth Saidu
31beafbd04 Merge branch 'episys/master-sl' into nr_sl_phy_2 2022-11-02 09:56:59 -07:00
Melissa
b203c79d87 Merge branch 'new-sl-file-creation' into 'episys/master-sl'
Adding sidelink functions and files

See merge request aburger/openairinterface5g!135
2022-11-02 01:26:02 +00:00
Melissa Elkadi
18188b6f39 Updating white space 2022-11-01 18:25:08 -07:00
Melissa Elkadi
3e8ad6e26c Updating white space 2022-11-01 18:23:12 -07:00
Melissa Elkadi
6ef808cae1 Updating cmake cache to be correct 2022-11-01 18:20:13 -07:00
Melissa Elkadi
bc2fe3db05 Fixing build and white space errors
A few gNB items were added back into psbchsim to ensure it successfully builds
2022-11-01 18:17:43 -07:00
Prashanth Saidu
400447825a Using psbch sources 2022-11-01 17:59:17 -07:00
Prashanth Saidu
75f52cef4a Added SL_PSBCH to use UE instead of gNb 2022-11-01 17:38:39 -07:00
Melissa Elkadi
4bec2f496d Merge branch 'episys/master-sl' into new-sl-file-creation 2022-11-01 17:27:22 -07:00
Melissa Elkadi
39c6b07820 Defined nr_sl_generate_pss in UE PHY procedures 2022-11-01 17:22:01 -07:00
Melissa
f2cf9f0bd1 Merge branch 'episys/david/porting_nr_sl_generate_pss' into 'episys/master-sl'
Porting nr sl generate pss

See merge request aburger/openairinterface5g!134
2022-11-02 00:17:52 +00:00
Deokseong "David" Kim
38b1b41682 Porting nr sl generate pss 2022-11-02 00:17:51 +00:00
Melissa
68638ae67c Merge branch 'episys/david/adding_phy_procedures_nrUE_SL_TX' into 'episys/master-sl'
Adding phy procedures nr ue sl tx

See merge request aburger/openairinterface5g!133
2022-11-01 23:54:18 +00:00
Deokseong "David" Kim
9000f91f7e Adding phy procedures nr ue sl tx 2022-11-01 23:54:17 +00:00
Prashanth Saidu
46b1cf6dc9 Updated SL functions for Rx 2022-11-01 16:01:11 -07:00
Prashanth Saidu
a74d7fa54f Changed to support PSS for Side Link. 2022-11-01 12:03:02 -07:00
Melissa Elkadi
cdec2dd204 Temporarily using Lmax == 4 for SL 2022-11-01 10:51:59 -07:00
Melissa Elkadi
f98be66eda Updating generat dmrs for psbch 2022-11-01 10:31:27 -07:00
Melissa Elkadi
af5c062638 Updating assert fatals 2022-11-01 10:08:19 -07:00
Melissa Elkadi
6ca28a9931 Removing warnings and calling nr_sl_initial_sync in nr_psbchsim 2022-11-01 08:32:10 -07:00
Melissa Elkadi
ce10596a13 Merge branch 'episys/master-sl' into new-sl-file-creation 2022-11-01 08:19:59 -07:00
Melissa Elkadi
d9a8108a15 Adding sidelink files and structs.
The purpose of this commit is to:
1. Stop using NR functions for SL functions
2. Removing SL functions from NR functions
3. Creating new #define SL values rather than just changing NR #defines
4. Creating new psbchsim.c (which fails)
5. Adding AssertFatals and code clean up

The next steps include:
- Implementing initial_sync for SL
- Validating that the SL values are correct
- Getting psbchsim.c to pass
2022-11-01 08:18:55 -07:00
Melissa Elkadi
1b5005277c Conducting more code clean up and fixing warnings
Also, I have started to add the psbchsim.c.
The next fix should be to update all pbch members
to be psbch.
2022-11-01 06:47:02 -07:00
Melissa Elkadi
ee9b35bec7 Fixing white space 2022-10-31 18:31:25 -07:00
Prashanth Saidu
d82ab58c24 Merge branch 'nr_sl_phy' of gitlab.int-episci.com:aburger/openairinterface5g into nr_sl_phy 2022-10-31 18:29:57 -07:00
Prashanth Saidu
dbcc558f04 Support for SL id on SSS 2022-10-31 18:26:52 -07:00
Prashanth Saidu
54f8add2de Support for SL PSS, SSS on Rx 2022-10-31 18:04:37 -07:00
Melissa Elkadi
6e11362b75 Code clean up and adding more assertions 2022-10-31 17:02:13 -07:00
Prashanth Saidu
59310feb4b updated psbch_e size for scrambling 2022-10-31 13:41:05 -07:00
Melissa Elkadi
8017cb16f3 More code clean up and error checking 2022-10-29 13:35:59 -07:00
Melissa Elkadi
be32f71b1a Updating AssertFatal logs and adding a few more 2022-10-29 13:24:09 -07:00
Melissa Elkadi
193720a376 Adding assert fatals and more code clean up 2022-10-29 13:19:24 -07:00
Melissa Elkadi
865dd7984d Code clean up
This commit consists of simple white space changes,
function alignment and moving local variable declarations
near the first usage.
2022-10-29 13:02:06 -07:00
Prashanth Saidu
d31d050dd5 added psbch ch estimate 2022-10-28 12:36:38 -07:00
Melissa
3ae4e95775 Merge branch 'episys/david/sidelink_thread_update' into 'episys/master-sl'
Episys/david/sidelink thread update

See merge request aburger/openairinterface5g!132
2022-10-28 18:23:20 +00:00
Deokseong "David" Kim
1450ffd015 Episys/david/sidelink thread update 2022-10-28 18:23:20 +00:00
Melissa
0ff5045410 Merge branch 'episys/sidelink_preconfig' into 'episys/master-sl'
Implemented required sidelink preconfigurations, SLSS and MIB-SL for NR

See merge request aburger/openairinterface5g!131
2022-10-28 18:13:30 +00:00
Ejaz Ahmed
e6a68d8cf2 Implemented required sidelink preconfigurations, SLSS and MIB-SL for NR 2022-10-28 18:13:29 +00:00
Prashanth Saidu
a093745aa1 updated psbch ch level and compensation 2022-10-27 15:36:00 -07:00
Prashanth Saidu
0af95f24fc updated PSBCH sizes 2022-10-27 13:39:13 -07:00
Prashanth Saidu
6d1462712c added psbch_dmrs_rx 2022-10-27 11:32:53 -07:00
Prashanth Saidu
048782bbec updated nr_psbch_extract 2022-10-27 08:47:01 -07:00
Prashanth Saidu
7397fca459 added nr_rx_psbch 2022-10-26 12:55:59 -07:00
Prashanth Saidu
3dfb02e876 added ssb frame plus rx functions 2022-10-26 12:06:37 -07:00
Melissa
7e31ec9994 Merge branch 'episys/david/adding_sync_ref_flag' into 'episys/master-sl'
Added sync_ref flag in command line argument to specify SyncRef UE.

See merge request aburger/openairinterface5g!130
2022-10-21 00:25:28 +00:00
Deokseong "David" Kim
594811b9e6 Added sync_ref flag in command line argument to specify SyncRef UE. 2022-10-21 00:25:27 +00:00
Deokseong "David" Kim
c18da15703 Merge branch 'episys/master-sl-cleanup' into 'episys/master-sl'
Fixing camel case vs. underscores to be consistent

See merge request aburger/openairinterface5g!129
2022-10-20 16:48:26 +00:00
Melissa Elkadi
c7c30d26b5 Cleaning up white space 2022-10-20 06:30:07 -07:00
Melissa Elkadi
b2cf3f5270 Fixing camel case vs. underscores to be consistent 2022-10-19 16:55:06 -07:00
Melissa
1ebc4643e9 Merge branch 'episys/david/sidelink_thread_creation' into 'episys/master-sl'
Added sidelink sync flags to check sync status.

See merge request aburger/openairinterface5g!127
2022-10-19 23:09:51 +00:00
David Kim
e77818daf8 Added sidelink sync flags to check sync status. 2022-10-19 13:50:07 -07:00
Melissa
eb6068cc1f Merge branch 'episys/david/adding_SL_thread_placeholder' into 'episys/master-sl'
Added Sidelink thread placeholder.

See merge request aburger/openairinterface5g!126
2022-10-18 19:39:34 +00:00
Deokseong "David" Kim
fbec6c1261 Added Sidelink thread placeholder. 2022-10-18 19:39:34 +00:00
Melissa
2b05e90a57 Merge branch 'nr_sl_phy' into 'episys/master-sl'
Support for Side Link PSBCH Tx and Rx.

See merge request aburger/openairinterface5g!125
2022-10-12 00:23:05 +00:00
Prashanth Saidu
028166428d Fixed MR comments 2022-10-11 17:21:48 -07:00
Prashanth Saidu
fccae8a158 Fixed MR comments 2022-10-11 17:17:29 -07:00
Prashanth Saidu
9e8f3f8c67 Fixing MR comments 2022-10-11 17:11:59 -07:00
Prashanth Saidu
5886bb2b6a Merge branch 'nr_sl_phy' of gitlab.int-episci.com:aburger/openairinterface5g into nr_sl_phy 2022-10-11 17:03:03 -07:00
Prashanth Saidu
a999ce41ce Merge branch 'nr_sl_phy' of gitlab.int-episci.com:aburger/openairinterface5g into nr_sl_phy 2022-10-11 17:02:35 -07:00
Prashanth Saidu
d911c83c56 Merge branch 'nr_sl_phy' of gitlab.int-episci.com:aburger/openairinterface5g into nr_sl_phy 2022-10-11 16:59:59 -07:00
Prashanth Saidu
471df37f73 Merge branch 'nr_sl_phy' of gitlab.int-episci.com:aburger/openairinterface5g into nr_sl_phy 2022-10-11 16:59:43 -07:00
Prashanth Saidu
fab708d74e Merge branch 'nr_sl_phy' of gitlab.int-episci.com:aburger/openairinterface5g into nr_sl_phy 2022-10-11 14:02:42 -07:00
Prashanth Saidu
96583ee109 Merge branch 'nr_sl_phy' of gitlab.int-episci.com:aburger/openairinterface5g into nr_sl_phy 2022-10-11 14:02:24 -07:00
Prashanth Saidu
d3dd8af4cc Merge branch 'nr_sl_phy' of gitlab.int-episci.com:aburger/openairinterface5g into nr_sl_phy 2022-10-11 13:16:25 -07:00
Prashanth Saidu
f9642228af Merge branch 'nr_sl_phy' of gitlab.int-episci.com:aburger/openairinterface5g into nr_sl_phy 2022-10-11 13:16:04 -07:00
Prashanth Saidu
7a30b607e5 Merge branch 'nr_sl_phy' of gitlab.int-episci.com:aburger/openairinterface5g into nr_sl_phy 2022-10-11 13:13:16 -07:00
Prashanth Saidu
042b9e3c85 Merge branch 'nr_sl_phy' of gitlab.int-episci.com:aburger/openairinterface5g into nr_sl_phy 2022-10-11 13:12:48 -07:00
Prashanth Saidu
e57d62184e Merge branch 'nr_sl_phy' of gitlab.int-episci.com:aburger/openairinterface5g into nr_sl_phy 2022-10-11 12:23:26 -07:00
Prashanth Saidu
0139c38786 Merge branch 'episys/master-sl' into nr_sl_phy 2022-10-11 12:22:22 -07:00
Prashanth Saidu
81c5c06414 Merge branch 'episys/master-sl' into nr_sl_phy 2022-10-11 11:56:54 -07:00
Prashanth Saidu
8e702ad0d0 Merge branch 'develop' into episys/master-sl 2022-10-11 11:55:06 -07:00
Prashanth Saidu
8a06717f95 Merge branch 'episys/master-sl' into nr_sl_phy 2022-10-11 11:43:34 -07:00
Prashanth Saidu
123bf7e339 PSBCH Sidelink PHY Tx and Rx working, SSSB frame creation pending 2022-10-07 14:53:58 -07:00
Melissa
0bfaeac94b Merge branch 'adding-new-sl-cl-opt' into 'episys/master-sl'
Adding two new sidelink command line options

See merge request aburger/openairinterface5g!124
2022-10-05 22:29:28 +00:00
Melissa
81a2d3854b Adding two new sidelink command line options 2022-10-05 22:29:27 +00:00
Prashanth Saidu
e6bcd4e559 Added PSBCH payload with bitwise formatting 2022-10-03 16:22:52 -07:00
Robert Schmidt
a1de5e3d11 Merge branch 'integration_2022_wk39' into 'develop'
integration_2022_wk39

See merge request oai/openairinterface5g!1730

MR !1653 NR removing semi_static structures
MR !1690 Fix PDCCH when BWPStart is higher than 0
MR !1706 AMF and NGU mode config cleanup
MR !1721 Moving targets/ARCH to sdr/
MR !1724 Updated README for l2-sim, rf-sim
MR !1725 min_rxtxtime=6 added to docs when building the RFSimulator UE
MR !1729 fix(doc): healthchecks are now embedded in CN5G images
2022-09-28 07:23:49 +00:00
Prashanth Saidu
0d78000ca3 Added PSBCH payload 2022-09-27 17:05:18 -07:00
Robert Schmidt
4d86d8a0db Merge remote-tracking branch 'origin/fix-doc-tutorial' into integration_2022_wk39 2022-09-27 19:13:53 +02:00
Robert Schmidt
e35b454c83 Merge remote-tracking branch 'origin/add_conf_param' into integration_2022_wk39 2022-09-27 19:13:47 +02:00
Robert Schmidt
60f27cbc2e Merge remote-tracking branch 'origin/update_readme_5gcn' into integration_2022_wk39 2022-09-27 19:13:41 +02:00
Robert Schmidt
b2ea7c5f1a Merge remote-tracking branch 'origin/remove_targets_arch' into integration_2022_wk39 2022-09-27 19:13:35 +02:00
Robert Schmidt
d867b4a1c1 Merge remote-tracking branch 'origin/e1-patch-merge2' into integration_2022_wk39 2022-09-27 19:13:28 +02:00
Robert Schmidt
cb1f3ab708 Merge remote-tracking branch 'origin/Fix_PDCCH_when_BWPStart_higher_than_0' into integration_2022_wk39 2022-09-27 19:12:04 +02:00
Raphael Defosseux
bcd4a4bd1b fix(doc): healthchecks are now embedded in CN5G images
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-09-27 14:40:42 +02:00
francescomani
69f8b9d9e8 moving includes to the top 2022-09-27 10:31:41 +02:00
francescomani
f87977b1aa addressing review comments 2022-09-26 19:07:33 +02:00
francescomani
19295d0edb fix physical simulators 2022-09-26 18:54:58 +02:00
francescomani
22b25e8095 fix dlsim compilation 2022-09-26 18:54:58 +02:00
francescomani
f4f2b92779 bugfix in phytest mode 2022-09-26 18:54:58 +02:00
francescomani
07a582a639 finalizing deltaMCS implementation 2022-09-26 18:54:58 +02:00
francescomani
bdbd698912 removing pusch semi-static 2022-09-26 18:46:20 +02:00
francescomani
63327ce31a compute pmi at the same time as layers 2022-09-26 18:32:16 +02:00
francescomani
caa47c7496 removing pdsch semi-static 2022-09-26 18:27:36 +02:00
francescomani
4c2185ebcd remove Makefile.inc 2022-09-26 11:19:15 +02:00
francescomani
539563f03e moving targets/ARCH to sdr/ 2022-09-26 11:17:44 +02:00
mir
bf12d48d46 Added command line argument 2022-09-26 08:57:28 +02:00
Sakthivel Velumani
0248bf2ee5 AMF and NGU mode config cleanup 2022-09-25 13:06:58 -04:00
Robert Schmidt
bb396052a2 Merge branch 'integration_2022_wk38' into 'develop'
integration_2022_wk38

See merge request oai/openairinterface5g!1722

MR !1491 E1ap implementation skeletons
MR !1650 added multiple thread support for ECPRI/IF5 interface.and changed old pthread_cond_XXX mechanisms for RU to use thread-pool. New paramters in RU section to control thread CPU pinning and threadpool size.
MR !1675 NR_UE fixes for odd number of PRBs
MR !1694 Fix ulprbbl based on SRS
MR !1697 chore(ci): putting the Legacy LTE CI bench in order
MR !1703 SSB subcarrier offset from command line at UE
MR !1709 fix encoding error in mbms by regrouping the missing barrier at a single level
MR !1711 Increase log buffer: handle large log messages
MR !1715 Correct set gNB_ID, gNB_CU_ID does not exist
2022-09-24 11:16:27 +00:00
mir
227aa922e9 Added the min_rxtxtime variable 2022-09-23 15:04:43 +02:00
Robert Schmidt
dc5d5f8d99 Merge remote-tracking branch 'origin/fix-gNB-ID-config' into integration_2022_wk38 2022-09-22 18:58:38 +02:00
Robert Schmidt
0d34d79f72 Merge remote-tracking branch 'origin/fix-log-output-len' into integration_2022_wk38 2022-09-22 18:58:26 +02:00
Robert Schmidt
5bef665b2f Merge remote-tracking branch 'origin/fix-lte-mbms' into integration_2022_wk38 2022-09-22 18:58:18 +02:00
Robert Schmidt
e2d9bfcb78 Merge remote-tracking branch 'origin/SSB_offset_command_line_parameter' into integration_2022_wk38 2022-09-22 18:58:10 +02:00
Robert Schmidt
05242ea626 Merge remote-tracking branch 'origin/ci-legacy-4g-lte-bench-back-on' into integration_2022_wk38 2022-09-22 18:58:03 +02:00
Robert Schmidt
0eed353452 Merge remote-tracking branch 'origin/fix_ulprbbl_based_on_srs' into integration_2022_wk38 2022-09-22 18:57:43 +02:00
Robert Schmidt
678b8a23b2 Merge remote-tracking branch 'origin/nr_ue_odd_prb_fixes' into integration_2022_wk38 2022-09-22 18:57:29 +02:00
Robert Schmidt
1273846ca3 Merge remote-tracking branch 'origin/if5_ECPRI_rework' into integration_2022_wk38 2022-09-22 18:56:59 +02:00
Robert Schmidt
bfba0c87ed Remove sudo from cls_physim1 class
We move the execution of the physim to a jumphost without sudo rights.
Therefore, remove sudo from this class.
2022-09-22 15:36:17 +02:00
Robert Schmidt
40b33845f7 Fix thresholds, fixup html table ref name to show tabs correctly 2022-09-22 13:58:06 +02:00
Robert Schmidt
1fedf2e508 Update timing thresholds and add 60MHz case 2022-09-22 07:41:53 +02:00
Robert Schmidt
0bf4f01b91 Resolve warnings 2022-09-21 15:16:33 +02:00
Raphael Defosseux
4f29e64749 chore(ci): clarification on why we can/should install UHD from source
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-09-21 14:37:05 +02:00
luis_pereira87
051fa6ec57 Address review comments 2022-09-21 08:49:18 +01:00
luis_pereira87
2931884d07 Fix ulprbbl based on SRS 2022-09-21 08:38:30 +01:00
francescomani
f62dc020c8 changing ssb subcarrier offset command line parameter to avoid overlap with SNR 2022-09-20 17:48:48 +02:00
Robert Schmidt
a549bc62a9 Correct set gNB_ID, gNB_CU_ID does not exist 2022-09-20 15:13:59 +02:00
laurent
23f49bd013 merge-develop-and-conflicts 2022-09-20 14:03:25 +02:00
laurent
2822415952 remove unused variables 2022-09-20 13:49:43 +02:00
Laurent Thomas
5087982997 fix encoding error in mbms by regrouping the missing barrier at a single level
tmp
2022-09-20 13:49:43 +02:00
Thomas Schlichter
4e024e1f11 remove unnecessary (void*) casts from files nr_dlsch_demodulation.c and nr_ulsch_ue.c 2022-09-20 11:03:40 +02:00
Prashanth Saidu
175579f8e2 PBCH side link phy initial version 2022-09-19 15:34:58 -07:00
Melissa Elkadi
05d2c538ea Merge branch 'episys-lte-handover' into develop 2022-09-19 11:33:21 -07:00
Robert Schmidt
5bf2626c6e Remove hwlat refs in build_oai: targets don't exist anymore 2022-09-19 17:29:42 +02:00
Robert Schmidt
fb69173857 Add E1AP lib 2022-09-19 17:29:42 +02:00
Robert Schmidt
9aade1e0e1 Add E1AP Grammar and build ASN.1 lib at build time 2022-09-19 17:29:42 +02:00
Robert Schmidt
1b4a81637d Accept higher vers. nums in make_version/MAKE_VERSION 2022-09-19 17:29:42 +02:00
Robert Schmidt
cdb18d38bf Move CMakeLists.txt into root 2022-09-19 17:29:42 +02:00
Robert Schmidt
40d8235500 Increase log buffer: handle large log messages 2022-09-19 11:39:09 +02:00
Robert Schmidt
af04fa90c1 Merge branch 'integration_2022_wk37' into 'develop'
integration_2022_wk37

See merge request oai/openairinterface5g!1710

MR !1695 fix bug added in MR1609 improve-nr_ul_channel_estimation branch
MR !1704 remove target/SCRIPTS
MR !1708 Repair cluster-build pipeline
2022-09-19 06:07:23 +00:00
Robert Schmidt
198df43ebe Merge remote-tracking branch 'origin/build-cluster-hotfix' into integration_2022_wk37 2022-09-18 22:28:02 +02:00
Robert Schmidt
2715a705bf Merge remote-tracking branch 'origin/remove_targets_SCRIPTS' into integration_2022_wk37 2022-09-18 22:27:37 +02:00
Robert Schmidt
8d8d43fd95 Merge remote-tracking branch 'origin/regression-fix-ul_estimate' into integration_2022_wk37 2022-09-18 22:27:28 +02:00
Robert Schmidt
b6c2dd7820 Update README for OpenShift deployments using helm 2022-09-18 22:21:50 +02:00
Robert Schmidt
7d20568c09 List all OC images in registry in artifact file 2022-09-18 22:21:50 +02:00
Robert Schmidt
5cb85c3f4a Switch to RHEL8-Cluster-Image-Builder in RAN-Container-Parent 2022-09-18 22:21:50 +02:00
Robert Schmidt
28487ee223 Physim: image is already on openshift image registry 2022-09-18 22:21:50 +02:00
Robert Schmidt
ca5a6deb9d Fix timeout in wait_job_end() 2022-09-18 22:21:35 +02:00
Robert Schmidt
edfb7aca1d Recreate imagestreamtags to not lose image registry image association
Previously, the cluster-build code would recreate imagestreams, which
would drop the association of image streams to images previously
created. To avoid this, the code is updated to never delete
imagestreams, and only recreate imagestreamtags.
2022-09-18 22:21:35 +02:00
laurent
b14b9eda29 fix bug added in MR1609 improve-nr_ul_channel_estimation branch 2022-09-17 11:23:53 +02:00
David Kim
28a78f02a8 Removed duplicated flag __func__ in the logging line. 2022-09-16 18:06:21 -07:00
David Kim
9de72b2e7e Merge remote-tracking branch 'eurocom/develop' into episys-lte-handover 2022-09-16 15:01:08 -07:00
David Kim
c6a892c15d Added explanations for AWGN results files. 2022-09-16 14:51:58 -07:00
David Kim
618ea544c2 Setting pdcp security mode active in LTE handover. 2022-09-16 14:02:19 -07:00
Robert Schmidt
9e3d565c5d Remove tag information from image streams
The tags in the status section simply serves no purpose/is misleading,
as it is not used.
2022-09-16 10:26:24 +02:00
Robert Schmidt
eb15d7332b Remove sudo commands from cluster-related CI scripts 2022-09-16 10:25:24 +02:00
Robert Schmidt
61e65959b0 Correct physim IS filename 2022-09-16 09:17:57 +02:00
Robert Schmidt
e3a9c880e4 Revert "Physim: image is already on openshift image registry"
This reverts commit ebdbb1fc13.

Same as parent commit.
2022-09-15 12:41:22 +02:00
David Kim
4ed69e515e Removed return in gtp_itf.cpp to make ping work in lte mode. 2022-09-14 13:27:16 -07:00
francescomani
b87e86fd30 remove target/SCRIPTS 2022-09-14 11:38:33 +02:00
Robert Schmidt
50dc769827 Revert "Switch to RHEL8-Cluster-Image-Builder in RAN-Container-Parent"
This reverts commit 5008eb4e38.

The RHEL8-Cluster-Image-Builder has problems and is not ready. This
commit reverts the switch, and uses RHEL8-Image-Builder instead.
2022-09-13 17:46:28 +02:00
David Kim
124715d93e Restored entity->is_gnb flag in sdap_data_ind for NR PDCP. 2022-09-12 21:44:59 -07:00
Robert Schmidt
62cea0ef8c Add two file exceptions for suspect license (BSD); remove two GPL'ed files 2022-09-13 05:24:09 +02:00
David Kim
26553dfdad Merge remote-tracking branch 'eurocom/develop' into episys-lte-handover 2022-09-12 16:26:16 -07:00
Robert Schmidt
e3d712f417 Merge branch 'integration_2022_wk36b' into 'develop'
integration_2022_wk36b

See merge request oai/openairinterface5g!1696

MR !1618 update NR MAC/RLC/PDCP stats
MR !1639 NR handling of PHR (preliminary version)
MR !1676 make 5 MHz BW work in SA mode with OAI UE
MR !1687 quick fix for gnb.sa.band41.fr1.106PRB.usrpb210.conf
MR !1688 fix bug gtp-u len and robustify the gtp-u receiver
MR !1691 Fix power calculation based on CSI-RS
MR !1692 nr rlc: fix in process_control_pdu()
MR !1693 Fix to support subscribing event from another thread
MR !1681 Build RHEL8 images on Openshift Cluster
MR !1595 Sanitize NSSAI configuration in the gNB conf file
2022-09-12 20:26:52 +00:00
Raphael Defosseux
28155091ab fix(ci): little typo
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-09-12 18:12:34 +02:00
Robert Schmidt
3dc4736009 Reverting SD changes to make Quectel connect in CI 2022-09-12 14:21:03 +02:00
David Kim
844d683915 Updated docker-compose file to fix node-number value. 2022-09-09 17:53:48 -07:00
Raphael Defosseux
11839724ea fix(ci): typos and scenario adaptations for Legacy LTE CI bench after migration to Ubuntu22 and UHD 4.2.0.1
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-09-09 14:38:15 +02:00
Raphael Defosseux
11315ef602 fix(build): automatically applying UHD TDD patch for LTE
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-09-09 14:35:54 +02:00
Dhanuja Elizabeth Thomas
c9147a9ef5 Updated README for l2-sim, rf-sim 2022-09-09 08:36:23 +02:00
David Kim
47c429e8c3 Merge branch 'episys-lte-handover' of https://gitlab.eurecom.fr/oai/openairinterface5g into episys-lte-handover 2022-09-08 16:08:12 -07:00
Robert Schmidt
0a6075844a Merge remote-tracking branch 'origin/fix-sst-sd' into integration_2022_wk36b 2022-09-08 20:43:37 +02:00
Robert Schmidt
3ac2c5e6f0 Merge remote-tracking branch 'origin/ci-build-cluster' into integration_2022_wk36b 2022-09-08 20:43:25 +02:00
Robert Schmidt
963b8cc2ee Merge remote-tracking branch 'origin/itti-add-event-fix' into integration_2022_wk36b 2022-09-08 20:43:15 +02:00
Robert Schmidt
bbab65f09c Merge remote-tracking branch 'origin/bugfix-nr-rlc-2022-09-05' into integration_2022_wk36b 2022-09-08 20:43:06 +02:00
Robert Schmidt
8f5868dccf Merge remote-tracking branch 'origin/fix_calc_power_csirs' into integration_2022_wk36b 2022-09-08 20:42:54 +02:00
Robert Schmidt
2b69a717c1 Merge remote-tracking branch 'origin/fix-gtp-u-len-bug' into integration_2022_wk36b 2022-09-08 20:42:42 +02:00
Robert Schmidt
1d4d22e37e Merge remote-tracking branch 'origin/astro-develop-patch-97937' into integration_2022_wk36b 2022-09-08 20:42:35 +02:00
Robert Schmidt
8e4c7a1115 Merge remote-tracking branch 'origin/sa_conf_and_fixes_for_mu0' into integration_2022_wk36b 2022-09-08 20:42:21 +02:00
Robert Schmidt
5ee0149064 Merge remote-tracking branch 'origin/ul-phr' into integration_2022_wk36b 2022-09-08 20:16:58 +02:00
Robert Schmidt
4f402e6189 Merge remote-tracking branch 'origin/nr-mac-rlc-pdcp-stats' into integration_2022_wk36b 2022-09-08 20:06:27 +02:00
Robert Schmidt
8eaceae023 Add NSSAI_SD in docker-compose for nFAPI nrUE config 2022-09-08 15:18:52 +02:00
Raphael Defosseux
c4950f41b9 fix(ci): SMF configuration was incomplete for none-SD NSSAI
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-09-08 11:19:52 +02:00
Melissa Elkadi
33d9f68cda Merge branch 'episys-lte-handover-debugging' of gitlab.int-episci.com:aburger/openairinterface5g into episys-lte-handover-debugging 2022-09-07 17:45:39 -07:00
Melissa Elkadi
8618b6ad60 The new changes for exiting nr-softmodem properly broke NSA mode.
In this commit we are sure not to exucute PHY parameters
in emulated mode.
2022-09-07 17:44:41 -07:00
David Kim
893ca2a4cb Removed merge lines in config file. 2022-09-07 17:00:20 -07:00
David Kim
ef09160447 Update NRUE interface config in MACRLC layer.
1. Configuration file update corresponding to NRUE.
2. Compile error fix.
3. Reverting node id to new one.
2022-09-07 14:17:09 -07:00
David Kim
1ab09a6fa8 Handling of exceptional pdu size case for ULSCH Trncated BSR. 2022-09-07 11:59:00 -07:00
Melissa Elkadi
0134d8c914 First attempt to stop using configurations from L1
We need to now configure the NR UE based on MACRLC
similar to how the gNB does. This is started but not
tested in this commit. We only need to update for the
NRUE.
2022-09-07 11:52:46 -07:00
David Kim
ac0ec7b314 Merge remote-tracking branch 'eurocom/develop' into episys-lte-handover 2022-09-07 10:22:42 -07:00
Melissa Elkadi
9350e05ad6 Reverting node_number changes to show SA mode working.
However, currently 6c31639522 and
some other related changes have broken the path for getting the
MIB in emulated SA mode. The full source of these changes has not
been established. This may or may not be a big problem. It seems
that all other connections and the RA procedure are completing
properly. Therefore, we may decide not to worry about this and
simply make the assumption that the MIB configuration information
is hard coded for emulated mode and move on.
2022-09-06 18:10:27 -07:00
Melissa Elkadi
76797a5e86 Merge branch 'eurecom-develop' into episys-lte-handover 2022-09-06 12:29:02 -07:00
Cedric Roux
3b42e46cf0 nr rlc: add enum for rlc mode (am, um, or tm) 2022-09-06 15:58:47 +02:00
laurent
bcba097936 fix nrscope array size len 2022-09-06 13:51:43 +02:00
laurent
bc95466e1e fix check error in config module, for array types 2022-09-06 13:50:38 +02:00
laurent
b36a5b446f fix reject gtp-u incoming with no data 2022-09-06 13:48:00 +02:00
Robert Schmidt
3bb312dce2 Help function for creating repository workspace 2022-09-06 12:05:24 +02:00
Robert Schmidt
d0e5786470 Improve wording in openshift/README.md 2022-09-06 12:05:24 +02:00
Robert Schmidt
c01d846a3a Reintroduce banner in README 2022-09-06 12:05:24 +02:00
Robert Schmidt
68c6a79328 Replace hard-coded (unused) password with a constant
The plan is to migrate the CI to not need any passwords. This constant
can be used to give a dummy password.
2022-09-06 12:05:24 +02:00
luis_pereira87
0cffceddb3 Address review comments and re-formatting the code using clang-format 2022-09-06 10:25:51 +01:00
luis_pereira87
76eaed3bf8 Address review comments by correctly re-formatting a piece of code using clang-format 2022-09-06 10:19:38 +01:00
Robert Schmidt
879d37b2de Enable testing for all files to force ran-base rebuild 2022-09-06 10:21:55 +02:00
Robert Schmidt
c1fb4b6c27 Run oc logout in background to avoid timeout 2022-09-06 09:40:17 +02:00
Robert Schmidt
11d24ff42c Correct copy path for ran-base logs 2022-09-06 09:39:14 +02:00
Sakthivel Velumani
18b3189d4e Fix to support subscribing event from external thread 2022-09-05 15:51:50 -04:00
luis_pereira87
5a32092dc6 Address review comments by re-formatting a piece of code using clang-format 2022-09-05 17:56:33 +01:00
Robert Schmidt
74c639f867 Send NAS NSSAI SD only if configured, show UICC DNN/SST/SD info 2022-09-05 16:30:28 +02:00
Robert Schmidt
015c4265f0 Remove NSSAI_SD from UE conf 2022-09-05 16:30:28 +02:00
Robert Schmidt
b3b4b6dc01 docker-compose files: no SD 2022-09-05 16:30:28 +02:00
Robert Schmidt
09db9c3022 generateTemplate.py: allow multiple replacements in a single line
- especially for plmn_list, will allow to be followed by an MCC/MNC in a
  single line
- tightens regexes to match replacements more accurately, e.g., "val =
  key" (instead of just searching for "key)
- no special rule for SD, which matches SD values (and not the SD
  field). However, currently it is not possible to specify multiple SDs
  (multiple SSTs was already not possible)
2022-09-05 16:30:28 +02:00
Cedric Roux
2c08302c89 nr rlc: fix in process_control_pdu()
the following:

         if (cur_wait_list == entity->wait_end)
           end_wait_list = prev_wait_list;

was done after cur_wait_list is updated to its new value, but the old value
has to be used in this test. So end_wait_list was not set properly.

This was leading to random crashes later on because then entity->wait_list
was NULL but entity->wait_end was not (because of the bug fixed by this
commit).

The new value for cur_wait_list is also now set using prev_wait_list->next
just before the goto, as done in other places in the code.

Also "cur" was removed, for it has no purpose and makes the code harder
to understand.
2022-09-05 16:29:51 +02:00
Robert Schmidt
46bbd3f979 CI: Check that plmn_list matching key has dict type
The loop passes over all keys. For plmn_list, there are subentries mcc,
mnc, mnc_length. The plmn_list if block assumes that the key is a dict,
which was not checked for, leading to a type error.
2022-09-05 16:09:38 +02:00
Robert Schmidt
c859c233f7 Simplify NSSAI configuration in all configuration files 2022-09-05 16:09:38 +02:00
Robert Schmidt
bf853fe3f1 Sanitize NSSAI configuration
Following changes included:
- SD is optional: when value is 0xffffff or not present in config
  (previously: needed to be set to 0)
- Checks SSTs in range [0,255]
- Checks SDs in range [0,0xffffff]
- Correct typo SST defines
2022-09-05 16:09:38 +02:00
Robert Schmidt
6ac9296a12 Update TESTBenches.doc 2022-09-05 15:42:12 +02:00
Robert Schmidt
5008eb4e38 Switch to RHEL8-Cluster-Image-Builder in RAN-Container-Parent 2022-09-05 15:42:12 +02:00
Robert Schmidt
0778367633 Add Jenkinsfile for cluster jobs 2022-09-05 15:42:12 +02:00
Robert Schmidt
41a9ac1119 Python Class for Cluster Building and Deployment 2022-09-05 15:42:12 +02:00
Robert Schmidt
ebdbb1fc13 Physim: image is already on openshift image registry 2022-09-05 15:39:34 +02:00
Robert Schmidt
0e9455b721 Update README.md 2022-09-05 15:39:34 +02:00
Robert Schmidt
01add24bee GetParametersFromXML(): simplify forced_workspace_cleanup reading 2022-09-05 15:29:33 +02:00
Robert Schmidt
668d0865b8 Simplify cls_containerize.BuildImage() and drop allImagesSize class member 2022-09-05 15:29:33 +02:00
Robert Schmidt
d78ccd64ca Help function for analyzing RAN build logs 2022-09-05 15:29:32 +02:00
Robert Schmidt
f77bf44386 Help function for copying RAN build logs to executor 2022-09-05 15:29:32 +02:00
Robert Schmidt
580b2f3263 Create physim BuildConfig and harmonize ImageStream filename 2022-09-05 15:29:32 +02:00
Robert Schmidt
d524bbb0ed Add openshift build-configs and image-streams 2022-09-05 15:29:32 +02:00
Robert Schmidt
02f97a15b4 Drop old OpenShift cluster files 2022-09-05 15:29:32 +02:00
Robert Schmidt
e62662e463 Correct entitlements in base Dockerfile 2022-09-05 15:29:32 +02:00
Robert Schmidt
e2c59441cd Dockerfile: delete artifacts using -c before building 2022-09-05 15:29:32 +02:00
luis_pereira87
4fb78818d2 Fix 16 bit memory alignment on mod_dmrs buffer 2022-09-05 13:48:42 +01:00
francescomani
7a3dea3197 fix at UE for DMRS when there is a bwp start offset 2022-09-05 13:48:42 +01:00
francescomani
0a992c604a Merge remote-tracking branch 'origin/develop' into ul-phr 2022-09-05 14:35:50 +02:00
luis_pereira87
fc10fd3f8c Fix PDCCH decoding when BWPStart is higher than 0 2022-09-05 13:34:29 +01:00
luis_pereira87
6e36b5405a Fix power calculation based on CSI-RS 2022-09-05 13:33:00 +01:00
Robert Schmidt
d1a36c29c2 Limit XML repeatCount to 1 2022-09-05 14:10:04 +02:00
Laurent Thomas
1ef62f5842 fix bug gtp-u len and robustify the gtp-u receiver 2022-09-05 14:10:04 +02:00
Robert Schmidt
474cde3b41 Merge branch 'integration_2022_wk35b' into 'develop'
integration_2022_wk35b

See merge request oai/openairinterface5g!1689

MR !785 Add .clang-format file
MR !1487 LDPC offload on T1 card
MR !1677 NR LBRM for UL
MR !1683 Schedule ULSCH in flexible slots in InitialBWP
MR !1674 Optimize nr_rotation
MR !1685 Fix AssertFatal in Msg3
MR !1684 Implementation of a RA timer to remove UE in the case of Msg4 not be decoded by the UE
MR !1669 Fixes when there is no spCellConfig configured
MR !1648 simplify thread pool configuration
MR !1609 improve-nr_ul_channel_estimation
2022-09-05 12:05:28 +00:00
Robert Schmidt
23459a487d Merge remote-tracking branch 'origin/improve-nr_ul_channel_estimation' into integration_2022_wk35b 2022-09-04 21:46:17 +02:00
Robert Schmidt
203ac17833 Merge remote-tracking branch 'origin/by-core-thread-pool' into integration_2022_wk35b 2022-09-04 21:46:04 +02:00
Robert Schmidt
0b970e9e63 Merge remote-tracking branch 'origin/fixes_when_no_spCellConfig' into integration_2022_wk35b 2022-09-04 21:39:51 +02:00
Robert Schmidt
f8cc843aa7 Merge remote-tracking branch 'origin/Remove_UE_when_Msg4_fails_to_be_decoded' into integration_2022_wk35b 2022-09-04 21:39:37 +02:00
Robert Schmidt
ddeaf445f0 Merge remote-tracking branch 'origin/Fix_AssertFatal_in_Msg3' into integration_2022_wk35b 2022-09-04 21:39:23 +02:00
Robert Schmidt
95dad65c9a Merge remote-tracking branch 'origin/nr_rotation_optimization' into integration_2022_wk35b 2022-09-04 21:39:09 +02:00
Robert Schmidt
c87188191d Merge remote-tracking branch 'origin/Schedule_ULSCH_in_flexible_slots_in_InitialBWP' into integration_2022_wk35b 2022-09-04 21:38:55 +02:00
Robert Schmidt
01a3f9d5f9 Merge remote-tracking branch 'origin/NR_UL_LBRM' into integration_2022_wk35b 2022-09-04 21:38:38 +02:00
Robert Schmidt
609c2716c7 Merge remote-tracking branch 'origin/ldpc_offload_t1_mr' into integration_2022_wk35b 2022-09-04 21:37:44 +02:00
Robert Schmidt
392946f0c1 Merge remote-tracking branch 'origin/feature-support-clang-format' into integration_2022_wk35b 2022-09-04 21:37:28 +02:00
Abdelrahman Astro
f06fc314c6 quick fix for gnb.sa.band41.fr1.106PRB.usrpb210.conf 2022-09-03 09:08:48 +00:00
laurent
6f862c0dfe fix a bug in itti external sockets 2022-09-02 14:25:17 +02:00
laurent
bf2b069d96 let more time for docker compose to start the container 2022-09-02 11:36:47 +02:00
laurent
223ae5c307 remove a forgotten printf() 2022-09-02 11:36:47 +02:00
laurent
9b207834e7 merge conflict fix 2022-09-02 11:36:47 +02:00
laurent
5fcd8b6f9f fix direct memory bugs in lte mbms 2022-09-02 11:36:47 +02:00
laurent
9ee917039a fix non reentrant issue in itti 2022-09-02 11:36:47 +02:00
laurent
abf6801094 fix text typos 2022-09-02 11:36:47 +02:00
laurent
aa2a36768c simplify thread pool configuration
fix segv

fix bug redeclaration of same struct in phy sim

Apply 1 suggestion(s) to 1 file(s)

code reveiw comments
2022-09-02 11:36:47 +02:00
Melissa Elkadi
6163143cfe Merge branch 'eurecom-develop' into episys-lte-handover 2022-09-01 16:11:47 -07:00
Melissa Elkadi
60bcbb230f Reverting these changes as MR 1573 should cover them 2022-09-01 16:10:45 -07:00
Francesco Mani
adea216202 adding a comment 2022-09-01 15:48:31 +00:00
laurent
4c74cc6686 Improve nr_ul_channel_estimation() 2022-09-01 16:35:57 +02:00
Raphael Defosseux
8229f00d0e chore(ci): disable all the 4G Legacy LTE pipelines before we migrate the servers
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-09-01 16:25:49 +02:00
Thomas Schlichter
18500674df improve nr_dlsch_decoding 2022-09-01 12:14:19 +02:00
luis_pereira87
9178648902 Address review comments 2022-09-01 08:34:53 +01:00
luis_pereira87
66369a8a4c Prevent ra_timer to be enabled when running in phy-test mode
When running in this mode there is no RA that will succeed to disable the timer
2022-09-01 08:29:57 +01:00
luis_pereira87
00373ed10b Address review comments 2022-09-01 08:12:26 +01:00
luis_pereira87
8a6d09666d Fix AssertFatal in Msg3 to not Assert when there is a PUCCH (CSI report) already scheduled for that slot 2022-08-31 16:03:36 +01:00
luis_pereira87
13bdcb4743 Implementation of a RA timer to remove UE in the case of Msg4 not be decoded by the UE 2022-08-31 08:52:35 +01:00
Robert Schmidt
622e14ad4f 5G RFsim: increase PRACH threshold to 20dB to avoid misdetections 2022-08-30 17:07:00 +02:00
luis_pereira87
3ea751c3cb Schedule ULSCH in flexible slots in InitialBWP 2022-08-30 14:37:59 +01:00
Thomas Schlichter
1440807e23 increase prach_dtx_threshold to 20 dB to avoid fake PRACH detections 2022-08-30 11:17:34 +02:00
Robert Schmidt
cb3108f4e5 Merge branch 'integration_2022_wk35' into 'develop'
integration_2022_wk35

See merge request oai/openairinterface5g!1682

MR !1571 PHY procedures for SRS MIMO
MR !1666 gzip optim, links for size
MR !1668 Update core images to latest develop for CI
MR !1670 Fix initial_cyclic_shift for pucch-ConfigCommon
MR !1671 Fix unaligned channel processing with odd number of rb
MR !1672 Enable 2 Downlink layers MIMO and other minor improvements in default configuration files
MR !1680 Fix buffer overflow and division by 0 for SRS
2022-08-30 06:23:42 +00:00
Robert Schmidt
2e7533a068 CI: Fix workspace path in LDPC Test 2022-08-29 18:27:25 +02:00
luis_pereira87
e2faa154e7 Merge remote-tracking branch 'origin/develop-SRS-buffer-overflow' into integration_2022_wk35
# Conflicts:
#	openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
2022-08-29 16:50:01 +01:00
Robert Schmidt
89a71a10e0 Create oai_rules_result.txt expected by CI 2022-08-29 17:39:37 +02:00
Robert Schmidt
a3543668f3 Merge remote-tracking branch 'origin/Update_configuration_files' into integration_2022_wk35 2022-08-29 17:25:38 +02:00
Robert Schmidt
a085522128 Merge remote-tracking branch 'origin/fix-unaligned-channel-processing-with-odd-number-of-rb' into integration_2022_wk35 2022-08-29 17:25:25 +02:00
Robert Schmidt
256483a25d Merge remote-tracking branch 'origin/BugFix_in_initial_cyclic_shift_for_pucch-ConfigCommon' into integration_2022_wk35 2022-08-29 17:25:08 +02:00
Robert Schmidt
abd5b2cf79 Merge remote-tracking branch 'origin/update_5gcn_aug2022' into integration_2022_wk35 2022-08-29 17:24:49 +02:00
Robert Schmidt
845eeae92b Merge remote-tracking branch 'origin/optimize-ci-time' into integration_2022_wk35 2022-08-29 17:24:35 +02:00
francescomani
9819268412 Merge remote-tracking branch 'origin/develop' into ul-phr 2022-08-29 17:23:43 +02:00
francescomani
cf6ac388fd addressing review comments 2022-08-29 17:10:08 +02:00
francescomani
1e39dd777d fix physical simulators 2022-08-29 16:45:14 +02:00
francescomani
8e56e14df5 phr config harmonization 2022-08-29 16:25:09 +02:00
Robert Schmidt
c3c6aa8e75 Add Cppcheck_Analysis action, make unknown action no fail 2022-08-29 14:50:57 +02:00
Thomas Schlichter
59cb602161 review changes 2022-08-29 12:43:50 +02:00
Robert Schmidt
8de2578be5 Disable T1 Offload pipeline: avra is offline 2022-08-29 11:41:26 +02:00
Robert Schmidt
e2e62e78fe CI: add unhandled action LicenceAndFormattingCheck 2022-08-29 11:41:25 +02:00
francescomani
54ed3eb4fa test NSA 2022-08-29 08:22:09 +02:00
Robert Schmidt
5ec8a11ec9 Add readme for clang-format 2022-08-28 16:21:43 +02:00
Robert Schmidt
91f2453a57 Update documentation on how to get sources 2022-08-28 16:21:43 +02:00
Robert Schmidt
f3cd2c9aca Remove astyle 2022-08-28 16:21:43 +02:00
Robert Schmidt
e87dd85db1 Bitfield colon spacing after the colon 2022-08-26 20:14:41 +02:00
Cedric Roux
af6059d4ab clang-format: open-brace at column one to start the body of a function 2022-08-26 20:14:40 +02:00
Robert Schmidt
d0079ce554 Add clang-format specific pre-commit hook 2022-08-26 20:14:40 +02:00
Robert Schmidt
030e0c40aa Add .clang-format file 2022-08-26 20:14:40 +02:00
laurent
cfeae9560e merge develop 2022-08-26 18:02:50 +02:00
Robert Schmidt
a4eed55cea Detect DPDK using PkgConfig 2022-08-26 13:55:07 +02:00
Robert Schmidt
da5702e3c9 Use variable for T1 Offload detection 2022-08-26 13:55:07 +02:00
Robert Schmidt
4144abcc6e Update T1 Offload scenario file after option change in ulsim 2022-08-26 13:55:07 +02:00
Roberto Louro Magueta
e026e20186 Avoid division by 0 for low noise scenario 2022-08-26 11:41:23 +01:00
Hongzhi Wang
1124b21657 fix warnings 2022-08-26 12:28:26 +02:00
Roberto Louro Magueta
4e434ecf45 Fix buffer overflow for SRS 2022-08-26 11:04:04 +01:00
Dhanuja Elizabeth Thomas
313a63f52a Update 5gcn images for CI
- in ci-scripts for l2-sim, rf-sim
- in epc.py for OTA tests
2022-08-26 11:01:22 +02:00
francescomani
51483a3223 add option for limited buffer rate-matching for UL 2022-08-26 09:01:48 +02:00
Melissa Elkadi
57824f4f02 Merge branch 'eurecom-develop' into episys-lte-handover 2022-08-25 15:26:19 -07:00
Hongzhi Wang
f1df28637a delete conf file 2022-08-25 23:23:18 +02:00
luis_pereira87
f3781c4353 Add band n77 configuration file for N300 with 100 MHz
Band n78 is widely used by mobile network operators, we want to transmit over the air without interfere with them, so we set the allocation in this configuration file outside of band n78
2022-08-25 16:48:08 +01:00
Thomas Schlichter
11693b1672 5G NR: remove hardcoded modulation order 2022-08-25 14:40:36 +02:00
Thomas Schlichter
e5fad77f47 5G NR DCI improvements 2022-08-25 14:40:36 +02:00
Thomas Schlichter
8f6d084c80 small cleanup in get_type0_PDCCH_CSS_config_parameters() 2022-08-25 14:40:36 +02:00
Thomas Schlichter
7129830555 fix Msg2 scheduling
scheduling when frame number wraps was not handled correctly
2022-08-25 14:40:36 +02:00
Thomas Schlichter
ef46fe8ba8 Add and harmonize configuration files for 5, 10, 40 MHz FDD with USRP X300 2022-08-25 14:40:36 +02:00
Thomas Schlichter
c42304a797 nr_dlsim: also dump rxdataF_ext in case of debugging 2022-08-25 14:40:36 +02:00
Thomas Schlichter
ae2e8060ea update band 66 configuration files for USRP X300 and N300 2022-08-25 14:40:36 +02:00
Thomas Schlichter
9e1edf2957 nr_phy_scope: improve x-axis scaling of channel impulse response and PUSCH LLR 2022-08-25 14:40:36 +02:00
Thomas Schlichter
ea085b5fc1 harmonize initialization of symbol- and timeshift-rotation 2022-08-25 14:40:36 +02:00
Thomas Schlichter
1e36c48cf2 fix application of measured SSS fine frequency offset 2022-08-25 14:40:36 +02:00
luis_pereira87
015a4d945b Enable 2 Downlink layers MIMO and other minor improvements in default configuration files 2022-08-25 13:27:29 +01:00
Thomas Schlichter
f8de623286 NR_UE: use improved version of mult-layer dlsch_extract_rbs(), also correctly handling odd number of PRBs 2022-08-25 12:10:48 +02:00
Thomas Schlichter
421eb65a9a NR_UE: fix ulsch precoding for RB crossing DC (odd number of RB) 2022-08-25 12:10:48 +02:00
Roberto Louro Magueta
d39a772436 Remove tabs 2022-08-25 10:33:38 +01:00
Roberto Louro Magueta
432817d1d5 Merge remote-tracking branch 'origin/develop' into develop-SRS-MIMO 2022-08-25 10:26:35 +01:00
Thomas Schlichter
6310606980 fix alignment issues in case of odd number of PRBs 2022-08-25 11:05:48 +02:00
Thomas Schlichter
3c17573f34 apply nr rotation only on used PRBs instead of complete OFDM symbol 2022-08-25 11:05:48 +02:00
Thomas Schlichter
21ea2f2136 pbchsim: apply nr rotation in frequency domain, like in all other places, instead of time domain 2022-08-25 10:17:59 +02:00
Robert Schmidt
a58b3989d1 Install gdb in RAN images to have stack traces on asserts 2022-08-24 15:51:49 +02:00
Robert Schmidt
4dc26bf575 docker entrypoints: print config, log USRP loader 2022-08-24 15:51:49 +02:00
Robert Schmidt
23cf8059aa Save logs of unhealthy containers during deployment 2022-08-24 15:51:49 +02:00
Robert Schmidt
c1b448cd1a Handle errors in Copy_Image_to_Test_Server() 2022-08-24 15:51:49 +02:00
laurent
3a0a14cf7d gzip optim, links for size 2022-08-24 15:51:49 +02:00
Hongzhi Wang
ea6524c52f update cmakelists and ulsim 2022-08-24 08:27:14 +02:00
Robert Schmidt
0ccb3a2d47 Add T1 Offload test to RAN-Container-Parent 2022-08-23 17:18:07 +02:00
Robert Schmidt
5bd81ae95d Define T1 Offload scenario file 2022-08-23 17:13:03 +02:00
Robert Schmidt
b0e5b6eb9a Add Run_NRulsimTest 2022-08-23 17:13:03 +02:00
Robert Schmidt
aa1cbff597 Improve PhySim build to be shorter 2022-08-23 17:11:51 +02:00
Robert Schmidt
4d85beae73 Rename CI Run_PhySim to Run_LDPCTest 2022-08-23 17:11:48 +02:00
Chieh-Chun Chen
4e4a0b7ba3 use bool and fix indentation 2022-08-23 15:54:03 +02:00
Robert Schmidt
90d4868a43 Isolate PhySim source build XML scenario 2022-08-23 12:45:36 +02:00
Robert Schmidt
e28fccc7fb Hardcode (implicit) physim OC server to use 2022-08-23 10:36:16 +02:00
Hongzhi Wang
1d4ffe42c4 Merge branch 'develop' into ldpc_offload_t1_mr
Conflicts:
	executables/nr-softmodem.h
	executables/softmodem-common.h
	openair1/SCHED_NR/phy_procedures_nr_gNB.c
2022-08-22 20:02:34 +02:00
Roberto Louro Magueta
c6fda387e0 Fix mem_offset after merge 2022-08-22 14:23:12 +01:00
laurent
0475b78ff4 fix unaligned 2022-08-22 12:55:23 +02:00
Roberto Louro Magueta
df0f756c87 Fix build after merge 2022-08-22 11:30:06 +01:00
Roberto Louro Magueta
d04918eb9b Merge remote-tracking branch 'origin/develop' into develop-SRS-MIMO
# Conflicts:
#	openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
#	openair2/RRC/NR/MESSAGES/asn1_msg.c
#	openair2/RRC/NR/nr_rrc_config.c
#	openair2/RRC/NR/nr_rrc_config.h
2022-08-22 10:45:56 +01:00
luis_pereira87
f9f175a6f1 Fix initial_cyclic_shift for pucch-ConfigCommon 2022-08-22 10:31:15 +01:00
luis_pereira87
5ba55a511e Fixes when there is no spCellConfig configured 2022-08-22 10:07:23 +01:00
Robert Schmidt
ad8381a66b Merge branch 'integration_2022_wk33' into 'develop'
integration_2022_wk33

See merge request oai/openairinterface5g!1667

MR !1604 RRC harmonization of multiple BWPs configuration
MR !1657 NR fixes for 100MHz and 2 layers
MR !1646 Add 4G L2simulator test
MR !1662 fix a bug: multi ues in rfsimulator 4G
MR !1559 NR UE multi SSB meas
changes to disable legacy 4G F1 test
MR !1661 fix bugs in config module and config usage
MR !1562 Correctly handle SIGINT/stop signal in nr-softmodem
MR !1659 Fix segFault in SRS for odd number of PRBs
2022-08-21 06:10:51 +00:00
Raymond Knopp
3f790e1504 Merge remote-tracking branch 'origin/develop' into if5_ECPRI_rework 2022-08-20 19:22:31 +02:00
Raymond Knopp
787249fe8a fix for L2 emulator test 2022-08-20 19:20:50 +02:00
Robert Schmidt
2ea9618a8d Limit function name string length for logging output 2022-08-19 18:22:23 +02:00
Robert Schmidt
8aaede906d Do not hard-code default global log level 2022-08-19 18:22:23 +02:00
Robert Schmidt
909b511ed0 Merge remote-tracking branch 'origin/develop-SRS-segFault-51PRBs' into integration_2022_wk33 2022-08-19 18:22:23 +02:00
Robert Schmidt
4674cddb71 Merge remote-tracking branch 'origin/fix-nrsoftmodem-stop' into integration_2022_wk33 2022-08-19 18:22:23 +02:00
Robert Schmidt
5ebe28565e Merge remote-tracking branch 'origin/fix-config-module' into integration_2022_wk33 2022-08-19 18:22:22 +02:00
Robert Schmidt
84f7634874 Disable legacy 4G F1 test and XML scenario files 2022-08-19 18:22:22 +02:00
Roberto Louro Magueta
a0d8009170 Address review comments 2022-08-19 14:31:13 +01:00
Robert Schmidt
f3cdc11269 Merge remote-tracking branch 'origin/NR_UE_multi_SSB_meas' into integration_2022_wk33 2022-08-18 20:53:04 +02:00
Robert Schmidt
db31ddc341 Merge remote-tracking branch 'origin/bug-rfsim-4G-multi-UEs' into integration_2022_wk33 2022-08-18 20:52:21 +02:00
Robert Schmidt
71d0e95f1f Merge remote-tracking branch 'origin/ci-test-4g-l2sim' into integration_2022_wk33 2022-08-18 20:52:04 +02:00
Robert Schmidt
70627a9953 Merge remote-tracking branch 'origin/NR_100MHz_2layers_fixes' into integration_2022_wk33 2022-08-18 20:51:23 +02:00
Robert Schmidt
e0a802df16 Remove irrelevant RU/L1/RFsim config from L2sim gNB config 2022-08-18 20:39:31 +02:00
Robert Schmidt
6c31639522 Only call NR_PHY_config_req when no (n)FAPI 2022-08-18 20:37:06 +02:00
Robert Schmidt
b712e77527 Don't block nr-softmodem in nFAPI mode, not needed 2022-08-18 20:18:18 +02:00
Robert Schmidt
238c8a62b4 Delete dead code in nr-softmodem main() 2022-08-18 20:18:18 +02:00
Robert Schmidt
6bf0f98e7f Skip scheduling of UEs if there are no free HARQs 2022-08-18 19:59:50 +02:00
Roberto Louro Magueta
1638bbba8a Add intermediate variable 2022-08-18 17:00:21 +01:00
Hongzhi Wang
1273ad406c fix compiling issue and removing dead code 2022-08-18 17:44:19 +02:00
Hongzhi Wang
31acfdea58 Merge branch 'develop' into ldpc_offload_t1_mr
Conflicts:
	openair1/SCHED_NR/phy_procedures_nr_gNB.c
2022-08-18 17:38:55 +02:00
Cedric Roux
3e2d88907b use bool, not int 2022-08-18 17:07:04 +02:00
laurent
d6d4d87e0b code review comments 2022-08-18 16:43:26 +02:00
laurent
8b159d6ddc remove unclear function free_configmodule(), as we have end_configmodule() that do the same 2022-08-18 09:47:44 +02:00
Robert Schmidt
a08d78d79d Correctly show proxy build info 2022-08-17 23:50:23 +02:00
Robert Schmidt
c139204ce0 Make one L2sim proxy build scenario file 2022-08-17 23:50:23 +02:00
David Kim
9642337729 Code cleanup. 2022-08-17 10:44:30 -07:00
Robert Schmidt
ab5a67463a Reuse existing files from 4g_rfsimulator_fdd_05MHz 2022-08-17 17:35:44 +02:00
Melissa Elkadi
c265a6ec6a Removing unused variables to resolve added warnings. 2022-08-17 08:27:00 -07:00
Melissa Elkadi
0558d55259 Reverting incorrect change 2022-08-17 07:44:44 -07:00
Melissa Elkadi
c2328793a3 A few more whitespace changes 2022-08-17 07:34:26 -07:00
Melissa Elkadi
e1300914da Fixing whitespace changes for MR-1642 2022-08-17 07:20:36 -07:00
frtabu
983c956b77 Fix config module memory leaks 2022-08-16 17:58:55 +02:00
Cedric Roux
0618812554 T tracer: simplify
- don't call exit() if get_message() fails, simply terminate the thread and
  disable the T tracer
- T_dont_fork disappears, monitor_and_kill() as well, so now it's only 2
  processes: the main (enb/gnb/ue) and the local tracer
2022-08-16 14:44:23 +02:00
Robert Schmidt
5cadafc154 CI: check for final 'Bye.' message 2022-08-16 14:44:23 +02:00
Robert Schmidt
6f40b6190c Stop containers before undeploying 2022-08-16 14:44:23 +02:00
Robert Schmidt
d08ef0490d Correctly call stop functions in nr-softmodem main 2022-08-16 14:44:23 +02:00
Robert Schmidt
1df60139e2 Automatically close GTP sockets at program end 2022-08-16 14:44:22 +02:00
Robert Schmidt
19d83ad21e Make GTPV1U REQ in one allocation to avoid mem leak at GTP 2022-08-16 14:44:22 +02:00
Robert Schmidt
51a7b7bd6e Remove memory leaks in FAPI PUCCH 0-4 PDU handling 2022-08-16 14:44:22 +02:00
Robert Schmidt
2465f1fb51 Don't allocate gNB rxdataF, it is managed at the RU
Removes phy_procedures_gNB_common_RX() (only used in nr_ulsim) + fixes
in pucchsim
2022-08-16 14:44:22 +02:00
Robert Schmidt
9957056f38 Drop empty logging statement 2022-08-16 14:44:22 +02:00
Robert Schmidt
61ead59d13 Check oai_exit in wait_on_condition() and friends, no volatile 2022-08-16 14:44:22 +02:00
Robert Schmidt
fffb2d14de Close rfsimulator sockets 2022-08-16 14:44:22 +02:00
Robert Schmidt
649e059f90 RFsim: Mark FD non-blocking once; show errno on problem 2022-08-16 14:44:22 +02:00
Florian Kaltenberger
7e82f2f4e8 sending small end-of-burst TX packet when exiting softmodem 2022-08-16 14:44:22 +02:00
Robert Schmidt
69cf59f32d Stop USRP write thread if necessary 2022-08-16 14:44:21 +02:00
Robert Schmidt
e28bd9ff2a Free USRP objects in trx_usrp_end() 2022-08-16 14:43:59 +02:00
Robert Schmidt
0ae3d3027d Don't call trx_end_func() at nr-softmodem, is done in ru_thread() 2022-08-16 14:41:02 +02:00
Robert Schmidt
004d6d3bab Correctly stop tx_reorder and L1_stats threads 2022-08-16 14:41:02 +02:00
Robert Schmidt
1512e39e4e Rewrite kill_NR_RU_proc() and reuse functions 2022-08-16 14:41:02 +02:00
Robert Schmidt
9ec3deb5bd Improve thread pool documentation 2022-08-16 14:41:02 +02:00
Robert Schmidt
fafed7d181 Remove unused restrictRNTI variable in Tpool 2022-08-16 14:41:02 +02:00
Robert Schmidt
31dcdf2152 Implement abortNotifiedFIFO() to unlock FIFO waits 2022-08-16 14:41:02 +02:00
Robert Schmidt
dfd9a91b50 Rename abortNotifiedFIFO() to abortNotifiedFIFOJob() 2022-08-16 14:41:02 +02:00
Robert Schmidt
d73e1a4133 Handle NULL return of pullTpool() 2022-08-16 14:41:02 +02:00
Robert Schmidt
178e2773ed Handle abortFIFO in FIFO functions 2022-08-16 14:41:02 +02:00
Robert Schmidt
e63cc03c9d Implement abortTpool()
This stops all ongoing threads (using pthread_join()), and marks FIFOs
to not block anymore. In this case, returned messages will be NULL.
2022-08-16 14:41:02 +02:00
Robert Schmidt
078d6fa15b threadCreate(): don't create detached threads
A detached thread cannot be joined with pthread_join(). However, this
is crucial for correct resetting of the nr-softmodem. Therefore, do not
create threads in detached state.
2022-08-16 14:41:02 +02:00
Robert Schmidt
fc298b77b5 Don't stop nr-softmodem on FEP thread exit cond 2022-08-16 14:41:02 +02:00
Robert Schmidt
76f399cdd6 Threading/memory improvements at nr-softmodem end
- First stop threads then free memory
- Don't call kill_NR_RU_proc() twice (is called in stop_RU())
- Memory allocation optimizations
2022-08-16 14:41:02 +02:00
luis_pereira87
604d52a431 Replace sleep by mutex in itti_wait_tasks_end() 2022-08-16 14:41:01 +02:00
Robert Schmidt
c4a657cc33 Avoid additional malloc() for queues and Tpool 2022-08-16 14:41:01 +02:00
Robert Schmidt
31d5bb6ffd Rename abortTpool() to abortTpoolJob(), fix doc 2022-08-16 14:41:01 +02:00
francescomani
df1f4381a2 fix in sib1 memcpy size 2022-08-16 11:18:00 +02:00
francescomani
166aae35ab fixes to get 100MHz working with 2 layers 2022-08-16 11:18:00 +02:00
Robert Schmidt
70bb1a3858 Add L2sim-4G to RAN-Container-Parent and documentation 2022-08-16 09:59:36 +02:00
laurent
65b399fcd7 fix bugs in config module and config usage
fix bug from this MR

fix bug from this MR

stupid-mistake
2022-08-16 09:22:15 +02:00
laurent
d46a7e40a8 fix a bug: multi ues in rfsimulator 4G 2022-08-16 08:51:37 +02:00
Melissa Elkadi
713f6632f9 Fixing CI/CD build errors 2022-08-15 06:43:07 -07:00
Robert Schmidt
793c8de2ae CI: Add L2sim-4G iperf DL&UL test 2022-08-13 15:17:42 +02:00
Robert Schmidt
71c13d85fc Add 4G L2sim XML scenario files 2022-08-13 15:17:42 +02:00
Robert Schmidt
7f8031f69a Add docker-compose.yml for l2sim-4g 2022-08-13 15:17:42 +02:00
Robert Schmidt
c7f79e71e7 Add more users for dummy CI 4G UE sim configuration 2022-08-13 15:17:42 +02:00
Robert Schmidt
df05475b6b Add eNB L2sim config file for enb container image 2022-08-13 15:17:42 +02:00
Melissa Elkadi
9e8bd87501 Merge branch 'eurecom-develop' into episys-lte-handover 2022-08-12 15:59:25 -07:00
David Kim
b508ea71f8 Removed heap-use-after-free issue. 2022-08-12 10:34:09 -07:00
David Kim
be5a93b29a Removed INHIBIT_REALTIME_SCHEDULER flag. 2022-08-12 10:00:36 -07:00
David Kim
972256cd6e Code cleanup, log level reset, code location adjustment.
1. Code cleanup and format update.
2. Log level reset
3. Channel model related codes moved into NR_Packet_Drop.c or .h file.
2022-08-12 09:57:31 -07:00
francescomani
0289bb5791 SRS for multiple BWPs 2022-08-12 15:39:48 +02:00
francescomani
8403b2c6d5 Merge remote-tracking branch 'origin/develop' into NR_RRC_harmonization_after_BWP 2022-08-12 13:05:11 +02:00
francescomani
2e4f55f6f1 Merge remote-tracking branch 'origin/develop' into ul-phr 2022-08-12 12:22:48 +02:00
Cedric Roux
1b029be058 nr rlc stats: make avg time to tx optional
Introduce the function nr_rlc_activate_avg_time_to_tx() to
activate/deactivate collection of avg time to tx stats (which
may have an impact on realtime processing, so better not compute
them when not needed).

Fix a little bug in time_average_get_average() for when there is not stat.
2022-08-12 12:19:09 +02:00
Chieh-Chun Chen
c0394bc09c Add avg time to tx an sdu for RLC UM & TM mode 2022-08-12 12:19:09 +02:00
Cedric Roux
fad3f23164 Add RLC stats: avg time to tx for an RLC SDU 2022-08-12 12:19:09 +02:00
Robert Schmidt
6a23bcfb42 Add PDCP stats 2022-08-12 12:19:09 +02:00
Robert Schmidt
ec4df27a75 Add RLC stats 2022-08-12 12:19:09 +02:00
Robert Schmidt
bcbf2b38ee Add more MAC stats 2022-08-12 12:19:09 +02:00
Robert Schmidt
61312ca6e2 Merge branch 'integration_2022_wk32' into 'develop'
integration_2022_wk32

See merge request oai/openairinterface5g!1658

MR !1551 Use F1 internally: RRC Message Transfer
MR !1645 fix(ci): Fixes for the legacy LTE bench
MR !1654 Fix for NDI init at UE
MR !1656 ngap: minor fix: access the array correctly
MR !1635 Fix SDAP in RFSIM mode
MR !1643 add asn1c logs
MR !1647 Function to get sample rate and BW
2022-08-12 05:33:12 +00:00
Robert Schmidt
6a0605b000 Merge remote-tracking branch 'origin/get_samplerate_and_bw' into integration_2022_wk32 2022-08-11 18:11:15 +02:00
Robert Schmidt
9c94f86451 Merge remote-tracking branch 'origin/add-asn1c-codec-logs' into integration_2022_wk32 2022-08-11 18:10:55 +02:00
Robert Schmidt
ef526692b5 Merge remote-tracking branch 'origin/fix_sdap' into integration_2022_wk32 2022-08-11 18:04:47 +02:00
francescomani
63a9cbcc66 fixes to correctly configure and schedule CSI-RS in case of multiple BWPs 2022-08-11 15:41:46 +02:00
laurent
eba7dc5c76 Print asn1c encoding logs using OAI logging system 2022-08-11 14:00:43 +02:00
Angelo Athanassopoulos
17aef213a1 Fix: noS1 with SDAP 2022-08-11 11:19:27 +02:00
Robert Schmidt
44f363c63c Merge remote-tracking branch 'origin/minor-fix-bad-sd-flag' into integration_2022_wk32 2022-08-10 20:40:24 +02:00
Robert Schmidt
c607e5c3d6 Merge remote-tracking branch 'origin/NR_phytest_UE_ndi' into integration_2022_wk32 2022-08-10 20:40:03 +02:00
Robert Schmidt
f065de0811 Merge remote-tracking branch 'origin/ci-fix-legacy-bench' into integration_2022_wk32 2022-08-10 20:39:57 +02:00
Raymond Knopp
3ef063194a small modification for performance tracing of RU procedures 2022-08-10 17:27:57 +02:00
francescomani
c0244ee68e fix for conflicting csi resources for multiple ues 2022-08-10 16:51:03 +02:00
Raphael Defosseux
888c4ead0f fix(ci): Fixes for the legacy LTE bench
- Problem with escaping chars
 - Killing properly tshark process on EPC
 - standalone Terminate eNB was failing

Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2022-08-10 15:08:52 +02:00
francescomani
5d39d8125c addressing review comment 2022-08-10 09:38:21 +02:00
Roberto Louro Magueta
0cb014f463 Fix memory alignment in nr_srs_channel_estimation 2022-08-09 17:11:12 +01:00
Robert Schmidt
f1c5378e3b Shorten 5G RFsim tab names 2022-08-09 15:05:58 +02:00
Robert Schmidt
c21f86421e Test SDAP in 5G FDD RFsim test 2022-08-09 15:05:50 +02:00
Cedric Roux
ee7aca5d05 ngap: minor fix: access the array correctly 2022-08-09 12:22:40 +02:00
francescomani
dc531588e9 addressing review comments 2022-08-09 12:01:54 +02:00
Raymond Knopp
8530b9c2c2 fixed issue with default CPU cores for RU in CI (now defaults to 2 TP cores and O/S controlled scheduling) 2022-08-09 08:24:37 +02:00
francescomani
5cfa5ad6f6 fixes for multiple BWPs 2022-08-08 18:32:39 +02:00
Angelo Athanassopoulos
5382227866 Fix SDAP, get QFI & PDUSession ID from CN 2022-08-08 18:09:59 +02:00
francescomani
b749ac12f7 hotfix for UE NDI init 2022-08-08 17:12:12 +02:00
Roberto Louro Magueta
49d60500c0 Change array size from MAX_NUM_NR_SRS_AP to 1<<srs_pdu->num_ant_ports 2022-08-08 13:49:33 +01:00
Roberto Louro Magueta
7e87265a74 Merge remote-tracking branch 'origin/develop' into develop-SRS-MIMO
# Conflicts:
#	openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
#	openair1/SCHED_NR/phy_procedures_nr_gNB.c
2022-08-08 11:54:43 +01:00
francescomani
032879c0c1 Merge remote-tracking branch 'origin/develop' into NR_RRC_harmonization_after_BWP 2022-08-08 12:37:40 +02:00
francescomani
154571e10c Merge remote-tracking branch 'origin/develop' into ul-phr 2022-08-08 12:12:29 +02:00
Raymond Knopp
2ed7e89bd2 Merge remote-tracking branch 'origin/develop' into if5_ECPRI_rework
Conflicts:
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
2022-08-08 07:25:13 +02:00
Raymond Knopp
4e9c9c5864 added configurable half-slot parallelization to RU processing (same as original version) 2022-08-07 22:49:11 +02:00
Robert Schmidt
9622a56bf1 gNB RRC: handle F1AP_UL_RRC_MESSAGE 2022-08-07 20:03:05 +02:00
Robert Schmidt
18a68387c4 Transfer Initial UL RRC Message through internal F1 2022-08-07 20:03:04 +02:00
Robert Schmidt
a126cd1220 Delete ITTI-SIM 2022-08-07 19:58:35 +02:00
Robert Schmidt
52dbc6fe75 Refactor linear allocator from LTE/NR; separate LTE/NR headers 2022-08-07 19:49:08 +02:00
Robert Schmidt
0c9006ec66 Do not initialize MAC multiple times 2022-08-07 19:49:08 +02:00
Robert Schmidt
f52809a8fb Add MAC-RRC UL stubs for F1AP and direct 2022-08-07 19:49:08 +02:00
Robert Schmidt
f75cdbcad7 Use F1 DL RRC message transfer internally for RRCSetup 2022-08-07 19:49:08 +02:00
Robert Schmidt
4154e9e9d5 Merge branch 'integration_2022_wk31b' into 'develop'
integration_2022_wk31b

See merge request oai/openairinterface5g!1649

MR !1624 NR PUCCH2 fix
MR !1627 fix for pusch dtx in phytest mode
MR !1634 Minor optimization in function init_symbol_rotation
MR !1637 gtp: small fix: set E if there is an extension header
MR !1641 Resolve AMF ip address using FQDN
delete files rxsigF0.m, txsig0.m, ldpctest_BG_1_Zc_384_rate_1-3_block_length_8448_maxit_5.txt
MR !1593 Reworking of BWP handling at MAC (initial MR)
MR !1652 fix for 3-digit MNC in asn1_msg.c
2022-08-07 17:47:12 +00:00
Robert Schmidt
4f2e97d91c Merge remote-tracking branch 'origin/nr_sib1_mnc_hotfix' into integration_2022_wk31b 2022-08-07 19:39:15 +02:00
Raymond Knopp
087a97f606 fix for 3-digit MNC in asn1_msg.c 2022-08-06 16:30:59 +02:00
Raymond Knopp
ed972fd6c6 changes to documentation ethernet.md and bug introduced through simplification (sectional of nr_feptx in nr-ru.c) 2022-08-06 16:27:41 +02:00
Raymond Knopp
d517c0c5b2 missing definitiona for build of OAI RU 2022-08-06 14:02:28 +02:00
Raymond Knopp
491d97dee9 removal of IF5_tools.x and old NR RU multi-threaded implementation. Fixes for LTE build 2022-08-06 12:13:16 +02:00
francescomani
d793de5700 some fixes in SSB RSRP 2022-08-06 11:27:49 +02:00
Raymond Knopp
517970a445 warning removal 2022-08-05 07:44:22 +02:00
Raymond Knopp
87a51c9e18 Merge remote-tracking branch 'origin/develop' into if5_ECPRI_rework
Conflicts:
	openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
2022-08-05 07:21:09 +02:00
Raymond Knopp
1b35f0b163 added profiling circular buffer to gNB 2022-08-05 07:18:44 +02:00
Robert Schmidt
ebc55ea206 Merge remote-tracking branch 'origin/NR_BWP_config' into integration_2022_wk31b 2022-08-04 19:13:57 +02:00
Robert Schmidt
ddc6df0bf4 Remove files accidentally added in MR 1382 2022-08-04 18:51:02 +02:00
Robert Schmidt
b0c7a3efe9 Merge remote-tracking branch 'origin/amf-fqdn-support' into integration_2022_wk31b 2022-08-04 18:49:49 +02:00
Robert Schmidt
0c29e5ea5b Merge remote-tracking branch 'origin/gtp-hotfix' into integration_2022_wk31b 2022-08-04 18:49:41 +02:00
Robert Schmidt
cb4e60eed3 Merge remote-tracking branch 'origin/init_symbol_rotation_optimization' into integration_2022_wk31b 2022-08-04 18:49:33 +02:00
Robert Schmidt
0352f98467 Merge remote-tracking branch 'origin/NR_PUSCH_phytest_DTX_fix' into integration_2022_wk31b 2022-08-04 18:49:25 +02:00
francescomani
40442d14cf adding a comment 2022-08-04 18:17:15 +02:00
francescomani
9333f53dc8 adding an assertion in configure_UE_BWP 2022-08-04 17:46:18 +02:00
francescomani
6e2a83856b common function to get sample rate and BW 2022-08-04 17:19:15 +02:00
francescomani
d908779c38 lowercase bwp 2022-08-04 11:34:25 +02:00
francescomani
8c81c70de9 Fix AckNack and SR multiplexing in PUCCH2
- correctly reset HARQ structure for HARQ Ack/Nack/PUCCH0
- reduce max PUCCH2 bits to have room for SR
2022-08-04 10:53:41 +02:00
francescomani
3d804db4b3 minor code refactoring 2022-08-04 09:35:45 +02:00
David Kim
b5c2634151 Merge branch 'eurocom/develop' into episys-lte-handover 2022-08-03 14:11:26 -07:00
Rohan
b64baf144d Resolve AMF ip address using FQDN 2022-08-03 17:27:08 +02:00
Raymond Knopp
afed0cec34 testing with 20 and 50 MHz 2x2 on Jaguar. Adding simple documentation in ethernet.md file. 2022-08-03 17:15:49 +02:00
francescomani
64568b2a9d Merge remote-tracking branch 'origin/develop' into ul-phr 2022-08-03 14:57:54 +02:00
francescomani
5fc23d5864 Merge remote-tracking branch 'origin/develop' into NR_RRC_harmonization_after_BWP 2022-08-03 12:11:37 +02:00
francescomani
cbff9df713 Merge remote-tracking branch 'origin/develop' into NR_BWP_config 2022-08-03 10:59:12 +02:00
Cedric Roux
3155ec6df8 gtp: small fix: set E if there is an extension header 2022-08-03 10:34:12 +02:00
francescomani
3d93d0dfc0 fix for pusch dtx in phytest mode 2022-08-03 09:57:40 +02:00
Robert Schmidt
7f910a2e36 Merge branch 'integration_2022_wk30b' into 'develop'
integration_2022_wk30b

See merge request oai/openairinterface5g!1630

MR !1594 Schedule BWP switching to the first active BWP when RA with Msg3 carrying DCCH or DTCH message
MR !1628 Fix a segmentation fault when there is no spCellConfigDedicated with maxMIMO_Layers parameter
MR !1528 CSI Feedback
MR !1631 Fix floating point for SRS
MR !1632 gtp pgu session header
MR !1633 Improve SIB1 length to support maximum value specified in 3GPP TS 38.331 section 5.2.1
MR !1463 Support arbitrary number of retransmissions (up to 8)
2022-08-03 06:42:38 +00:00
Robert Schmidt
a21c31a6a5 Merge remote-tracking branch 'origin/HARQ_rv_circular_array' into integration_2022_wk30b 2022-08-02 11:04:04 +02:00
Robert Schmidt
f29fe05031 Merge remote-tracking branch 'origin/NR_MAC_SIB1_Improvements' into integration_2022_wk30b 2022-08-02 11:04:04 +02:00
Robert Schmidt
d2a784280d Merge remote-tracking branch 'origin/impl-pdu-session-header' into integration_2022_wk30b 2022-08-02 11:04:04 +02:00
Robert Schmidt
48b045b0b0 Merge remote-tracking branch 'origin/develop-SRS-fix' into integration_2022_wk30b 2022-08-02 11:04:04 +02:00
Robert Schmidt
fc6122759b Merge remote-tracking branch 'origin/develop-CSI-Measurements' into integration_2022_wk30b 2022-08-02 11:04:04 +02:00
Robert Schmidt
eb46f216b1 Upgrade path to AS lteue after simulator upgrade 2022-08-02 11:04:03 +02:00
Robert Schmidt
3e7864eb53 Merge remote-tracking branch 'origin/Fix_segfault_when_no_spCellConfigDedicated' into integration_2022_wk30b 2022-08-02 11:04:03 +02:00
Raymond Knopp
745ef122b8 logging in eth_udp.c to warn about potential missed TX opportunities. 2022-08-02 09:09:07 +02:00
laurent
7a6f9659bc gtp-u pdu session extension header implementation, this extension header is mantadory in 5G 2022-08-01 22:57:52 +02:00
luis_pereira87
fdd79391e9 Call function nr_mac_update_timers when there is a Msg3 carrying a DCCH message 2022-08-01 17:57:50 +01:00
francescomani
840cf403db Make max num of HARQ tx configurable per UL/DL
Contributors
  francescomani <email@francescomani.it>
  Robert Schmidt <robert.schmidt@openairinterface.org>
2022-08-01 16:53:43 +02:00
francescomani
4ad4edb871 Log arbitrary number of HARQ rounds
Contributors
  francescomani <email@francescomani.it>
  Robert Schmidt <robert.schmidt@openairinterface.org>
2022-08-01 16:31:01 +02:00
francescomani
989c22a46c Limit RV to interval of 0..3
Contributors
  francescomani <email@francescomani.it>
  Rodolphe Bertolini <rodolphe.bertolini@cea.fr>
2022-08-01 16:29:58 +02:00
francescomani
9e5a77e6e3 Remove max number of HARQ rounds from L1
Contributors:
  francescomani <email@francescomani.it>
  Rodolphe Bertolini <rodolphe.bertolini@cea.fr>
2022-08-01 15:59:16 +02:00
luis_pereira87
48019c33f4 Minor optimization in function init_symbol_rotation 2022-08-01 11:20:55 +01:00
luis_pereira87
47d604b41f Improve SIB1 length to support maximum value specified in 3GPP TS 38.331 section 5.2.1
The physical layer imposes a limit to the maximum size a SIB can take. The maximum SIB1 or SI message size is 2976 bits.
2022-08-01 10:35:08 +01:00
luis_pereira87
7f38019f7e Remove unused code 2022-08-01 10:26:14 +01:00
Raymond Knopp
cecb9568ad warning removal 2022-08-01 08:51:29 +02:00
Raymond Knopp
10d288e9ab Merge remote-tracking branch 'origin/develop' into if5_ECPRI_rework 2022-07-31 21:25:02 +02:00
Raymond Knopp
3760ffa4af Merge remote-tracking branch 'origin/develop' into if5_ECPRI_rework 2022-07-30 19:36:27 +02:00
francescomani
be0fc1a982 Merge remote-tracking branch 'origin/develop' into NR_UE_multi_SSB_meas 2022-07-30 10:21:58 +02:00
David Kim
992aa392a9 Adding shift in build_oai item. 2022-07-29 17:35:39 -07:00
francescomani
d0e68a2c88 reworking phr
adding assertion
2022-07-29 18:25:59 +02:00
Roberto Louro Magueta
6f67792993 Variable rename 2022-07-29 10:42:55 +01:00
Roberto Louro Magueta
069bebfa48 Fix floating point 2022-07-29 10:05:34 +01:00
Melissa Elkadi
6b751b2874 Merge branch 'eurecom-develop' into release-3.0 2022-07-28 16:51:55 -07:00
Deokseong "David" Kim
034b64c895 Merge branch 'episys/david/lte_handover' into 'release-3.0'
Cleaning  LTE Handover code

See merge request aburger/openairinterface5g!122
2022-07-28 23:04:12 +00:00
Deokseong "David" Kim
61a93c2374 Cleaning LTE Handover code 2022-07-28 23:04:10 +00:00
luis_pereira87
b7b6e8a60f Merge remote-tracking branch 'origin/develop' into develop-CSI-Measurements
# Conflicts:
#	openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
2022-07-28 16:50:04 +01:00
francescomani
e8c637cd32 Merge remote-tracking branch 'origin/develop' into NR_RRC_harmonization_after_BWP 2022-07-28 17:21:04 +02:00
francescomani
d5a086d396 Merge remote-tracking branch 'origin/develop' into NR_BWP_config 2022-07-28 16:12:27 +02:00
francescomani
f44dd6317b nr_process_mac_pdu formatting 2022-07-28 15:31:13 +02:00
francescomani
478ea7ab6c BG at MAC as part of new FAPI version 2022-07-28 15:10:03 +02:00
luis_pereira87
1a77e9ba37 Schedule BWP switching to the first active BWP (previous active BWP before RA with Msg3 carrying DCCH or DTCH message) 2022-07-28 14:49:17 +02:00
luis_pereira87
970bfc92f0 Fix a segmentation fault when there is no spCellConfigDedicated with maxMIMO_Layers parameter 2022-07-28 07:21:36 +01:00
Roberto Louro Magueta
8cd8799981 Update range for reported RSRP 2022-07-27 18:43:47 +01:00
Melissa Elkadi
73c8012b52 Merge branch 'eurecom-develop' into release-3.0 2022-07-26 11:39:36 -07:00
Roberto Louro Magueta
3ca83257cc UE sends the report with the RSRP based on CSI-RS to gNB 2022-07-26 15:45:11 +01:00
Roberto Louro Magueta
1f818b4178 RSRP computation at UE based on CSI-RS 2022-07-26 12:45:30 +01:00
francescomani
5427ec25b6 applying config_srs to all the instances 2022-07-25 15:24:58 +02:00
francescomani
56e73266cb Merge remote-tracking branch 'origin/develop' into NR_RRC_harmonization_after_BWP 2022-07-25 15:02:38 +02:00
Robert Schmidt
04a09c999c Implement delta MCS in UL Power estimation 2022-07-25 13:35:41 +02:00
Robert Schmidt
83149e5100 Base graph selection: create function in nr_common.c 2022-07-25 13:35:41 +02:00
Robert Schmidt
a840559500 Implement PUSCH RBs according to PHR 2022-07-25 13:35:41 +02:00
francescomani
2e4e9f6423 Merge remote-tracking branch 'origin/develop' into NR_BWP_config 2022-07-21 11:35:28 +02:00
Roberto Louro Magueta
2f3f858648 Merge remote-tracking branch 'origin/develop' into develop-SRS-MIMO 2022-07-20 20:16:00 +01:00
Roberto Louro Magueta
6ba60eb181 Merge remote-tracking branch 'origin/develop' into develop-CSI-Measurements
# Conflicts:
#	openair2/RRC/NR/nr_rrc_config.h
2022-07-20 19:59:34 +01:00
Roberto Louro Magueta
b0bcff0da2 Fix build warnings in phy simulators 2022-07-08 11:17:28 +01:00
Roberto Louro Magueta
a574c47e9e Fix memory leak 2022-07-08 10:54:37 +01:00
Roberto Louro Magueta
03bea3150a Fix memory leak 2022-07-07 20:16:54 +01:00
Roberto Louro Magueta
70d7a6687b Merge nr_csi_rs_info_t plus nr_csi_im_info_t into nr_csi_info_t 2022-07-07 18:28:05 +01:00
Roberto Louro Magueta
3025627c06 Remove j, koverline and loverline from nr_csi_rs_info_t 2022-07-07 17:23:18 +01:00
Roberto Louro Magueta
36a9139a66 Remove N_cdm_groups, CDM_group_size, kprime and lprime from nr_csi_rs_info_t 2022-07-07 15:51:02 +01:00
Roberto Louro Magueta
e39be3917b Remove csi_rs_ls_estimated_channel and csi_rs_estimated_channel_freq from nr_csi_rs_info_t 2022-07-07 14:33:40 +01:00
Roberto Louro Magueta
acd4e39566 Remove csi_rs_received_signal from nr_csi_rs_info_t 2022-07-07 11:48:37 +01:00
Roberto Louro Magueta
e0e37d8215 To use cast for c16_t 2022-07-06 21:08:08 +01:00
Roberto Louro Magueta
0c2b3a1eeb Remove some variables from nr_csi_rs_info_t 2022-07-06 20:18:44 +01:00
Roberto Louro Magueta
93f941ecfc Merge remote-tracking branch 'origin/develop-SRS-Measurements' into develop-SRS-MIMO
# Conflicts:
#	openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
2022-07-05 20:11:03 +01:00
Roberto Louro Magueta
e8327ffe74 Change k_0_p to stack allocation 2022-07-05 16:47:41 +01:00
Roberto Louro Magueta
9a3326b63c Fixes after merge 2022-07-05 15:33:35 +01:00
francescomani
39b5d98c1e Merge remote-tracking branch 'origin/develop' into NR_BWP_config 2022-07-05 14:42:34 +02:00
Roberto Louro Magueta
06fa8c6a52 Merge remote-tracking branch 'origin/develop-SRS-Measurements' into develop-SRS-MIMO
# Conflicts:
#	openair1/PHY/INIT/nr_init.c
#	openair1/PHY/INIT/nr_init_ue.c
#	openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
#	openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h
#	openair1/PHY/defs_nr_common.h
#	openair1/SCHED_NR/phy_procedures_nr_gNB.c
2022-07-05 13:29:04 +01:00
Roberto Louro Magueta
85802b828f Merge remote-tracking branch 'origin/develop' into develop-CSI-Measurements
# Conflicts:
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
2022-07-05 10:19:52 +01:00
Roberto Louro Magueta
2b36f2d8f2 Move nr_det_A_MF_2x2, nr_squared_matrix_element and nr_numer_2x2 to csi_rx.c 2022-07-04 14:18:04 +01:00
Roberto Louro Magueta
d864cf9457 Fix indentation 2022-07-04 11:31:33 +01:00
francescomani
38dc925e75 temporary workaround for CQI MCS table 2022-06-29 16:06:58 +02:00
francescomani
605f837eb6 hardcoding the right AL and candidates 2022-06-29 10:00:34 +02:00
David Kim
eca4415287 Inhibit rt scheduler in Ubuntu 20.04. 2022-06-28 17:16:00 -07:00
Robert Schmidt
2849a81c78 Update NOTICE.md 2022-06-28 17:31:24 +02:00
Robert Schmidt
44ad2fe4ff Correct and update license exception list 2022-06-28 17:31:24 +02:00
francescomani
f76ec13b89 some fixes 2022-06-28 15:47:18 +02:00
David Kim
a5c67fac57 Adding mimo config file 2022-06-27 19:09:28 -07:00
Melissa Elkadi
b0d1b9d44f Increasing buffer size for NSA throughput 2022-06-27 19:06:24 -07:00
francescomani
0196dd6dc2 Merge remote-tracking branch 'origin/develop' into NR_RRC_harmonization_after_BWP 2022-06-27 14:44:04 +02:00
Roberto Louro Magueta
c1c6e6142d Merge remote-tracking branch 'origin/develop-SRS-Measurements' into develop-SRS-MIMO 2022-06-27 11:38:28 +01:00
francescomani
e27356500e Merge remote-tracking branch 'origin/develop' into NR_BWP_config 2022-06-27 12:33:41 +02:00
Roberto Louro Magueta
2141d6b5af Merge remote-tracking branch 'origin/develop' into develop-CSI-Measurements
# Conflicts:
#	openair2/RRC/NR/nr_rrc_config.c
#	targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band66.fr1.106PRB.usrpn300.conf
#	targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.24PRB.usrpb210.conf
2022-06-27 10:24:58 +01:00
Melissa Elkadi
4d7958414e This commit fixes UE to UE IP traffic
The bug fixes include, proeprly allocating
for multiple dl_config PDUs for the num_dci_options.
It also includes getting rid of a double free.
It also does not index pdu (from rx_ind) since there
is only one PDU.
It also puts frees back in the check_and_process_dci().
2022-06-24 15:48:45 -07:00
Melissa Elkadi
4d122d5d7c Costmetic change to packing/unpacking 2022-06-24 13:55:25 -07:00
Melissa Elkadi
5228c18981 Removing commented code causing incorrect pack/unpack 2022-06-24 13:05:46 -07:00
Melissa Elkadi
7b39aa61a9 Merge branch 'episys/david/channel_abstraction_on_top_of_MIMO_CSI_Reporting' of gitlab.int-episci.com:aburger/openairinterface5g into episys/david/channel_abstraction_on_top_of_MIMO_CSI_Reporting 2022-06-24 09:51:00 -07:00
David Kim
d785a95a5f Code fix to remove compile warning. 2022-06-23 16:42:33 -07:00
Melissa Elkadi
ff43319fdb TBS + 2 bug fix (not standard compliant for nFAPI header)
Also, added a return 0; for invalid PDU length in the gNB.
This is a bug. We need to understand why the PDU length is
overrun. For now, this avoids indexing past the end of pduP
pointer.
2022-06-23 13:57:19 -07:00
Roberto Louro Magueta
6d7d884881 Merge branch 'develop-SRS-Measurements' into develop-SRS-MIMO
# Conflicts:
#	openair1/PHY/INIT/nr_init.c
#	openair1/PHY/INIT/nr_init_ue.c
#	openair1/PHY/defs_nr_common.h
2022-06-23 18:30:31 +01:00
Roberto Louro Magueta
05dde0a30d Compute CQI using CSI-IM 2022-06-22 20:59:19 +01:00
Roberto Louro Magueta
a1806c92a2 Interference plus noise power computation based on CSI-IM 2022-06-22 20:41:57 +01:00
Roberto Louro Magueta
b9a207a6b4 Call nr_slot_fep for CSI-IM symbols 2022-06-22 18:38:05 +01:00
Roberto Louro Magueta
32ec53baa5 Get CSI-IM pdu at phy layer and add debug logs 2022-06-22 18:10:28 +01:00
Roberto Louro Magueta
420ce60800 Fix flag related to received CSI-IM FAPI pdu at UE 2022-06-22 17:54:34 +01:00
Hongzhi Wang
33fac86bb4 adding license exception 2022-06-22 17:46:04 +02:00
Hongzhi Wang
e8fc4da2b6 update offload decoder license and notes 2022-06-22 17:26:30 +02:00
Hongzhi Wang
fb9be23057 adding bbdev license 2022-06-22 10:03:55 +02:00
Hongzhi Wang
445f1d42a0 Merge branch 'develop' into ldpc_offload_t1_mr
Conflicts:
	openair1/SIMULATION/NR_PHY/ulsim.c
2022-06-22 09:26:58 +02:00
David Kim
4167066f04 Merge remote-tracking branch 'origin/episys/master-sa' into episys/david/channel_abstraction_on_top_of_MIMO_CSI_Reporting 2022-06-21 18:17:15 -07:00
Melissa Elkadi
61232c4557 Merge branch 'eurecom-develop' into episys/master-sa 2022-06-21 17:01:15 -07:00
Melissa Elkadi
5f8b20761b TBS + 2 bug fix (not standard compliant for nFAPI header)
Also, added a return 0; for invalid PDU length in the gNB.
This is a bug. We need to understand why the PDU length is
overrun. For now, this avoids indexing past the end of pduP
pointer.
2022-06-21 16:49:27 -07:00
francescomani
a24be04929 initializing nrofcandidates in dlsim 2022-06-21 09:52:12 +02:00
David Kim
4ad9d66a3c Changed log level. 2022-06-20 18:24:08 -07:00
David Kim
5d4ad105b7 Merge remote-tracking branch 'origin/episys/master-sa' into episys/david/channel_abstraction_on_top_of_MIMO_CSI_Reporting 2022-06-20 11:56:33 -07:00
David Kim
fa8bc0b57c Updated to resolve crash when handling MAC pdus. 2022-06-20 11:26:24 -07:00
francescomani
83a9414258 srs and csi in BWP structures 2022-06-20 18:03:40 +02:00
francescomani
4e69a10cbc change BWP when Msg3_dcch_dtch 2022-06-20 11:41:19 +02:00
francescomani
d71658d373 Merge remote-tracking branch 'origin/develop' into NR_BWP_config 2022-06-20 11:20:19 +02:00
Roberto Louro Magueta
ad5a3e8d94 Fix warning after merge 2022-06-19 03:02:19 +01:00
Roberto Louro Magueta
f4bd7c7529 Merge remote-tracking branch 'origin/develop-SRS-Measurements' into develop-SRS-MIMO
# Conflicts:
#	openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
#	openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h
#	openair1/SCHED_NR/phy_procedures_nr_gNB.c
#	openair2/RRC/NR/nr_rrc_config.c
#	openair2/RRC/NR/nr_rrc_config.h
2022-06-19 02:44:03 +01:00
Roberto Louro Magueta
504ce6d793 Fix after merge 2022-06-19 02:13:33 +01:00
Roberto Louro Magueta
63e30e29cc Merge remote-tracking branch 'origin/develop' into develop-CSI-Measurements
# Conflicts:
#	openair2/LAYER2/NR_MAC_gNB/config.c
2022-06-19 01:59:50 +01:00
francescomani
633370ffc3 further MAC cleanup with BWPs 2022-06-17 18:50:06 +02:00
francescomani
3cd49db442 removing ul active_bwp 2022-06-17 16:34:01 +02:00
Hongzhi Wang
81c402d7ff bug fix after merge 2022-06-17 15:29:53 +02:00
Hongzhi Wang
b7295ab45f Merge branch 'develop' into ldpc_offload_t1_mr
Conflicts:
	executables/nr-gnb.c
	openair1/PHY/CODING/nrLDPC_defs.h
	openair1/PHY/INIT/nr_init.c
	openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
	openair1/SCHED_NR/phy_procedures_nr_gNB.c
	openair1/SIMULATION/NR_PHY/ulsim.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
2022-06-17 14:49:54 +02:00
francescomani
66e2810940 moving few parameters from pusch_semistatic to BWP 2022-06-17 12:18:29 +02:00
David Kim
1341cc35b9 Updated for NR traffic test. 2022-06-16 16:11:34 -07:00
francescomani
40049db9c9 separate dl and ul bwp structures 2022-06-15 18:41:36 +02:00
francescomani
1be8caaf69 removing dl active_bwp 2022-06-14 18:15:42 +02:00
Melissa Elkadi
173b4722fc Merge branch 'eurecom-develop' into episys/master-sa 2022-06-14 06:33:18 -07:00
rmagueta
8c08e2d3ee Merge remote-tracking branch 'origin/develop-SRS-Measurements' into develop-SRS-MIMO 2022-06-13 12:52:56 +01:00
rmagueta
e32d55dff9 Update the feature set for the UE 2022-06-13 11:30:37 +01:00
rmagueta
607561af6c Merge remote-tracking branch 'origin/develop' into develop-CSI-Measurements
# Conflicts:
#	openair2/RRC/NR/MESSAGES/asn1_msg.c
2022-06-13 10:32:21 +01:00
Raymond Knopp
6236fe8e77 changes for thread-core pinning 2022-06-11 08:08:03 +02:00
francescomani
e592045d8f improvements in using genericParameters and other stuff 2022-06-10 18:18:57 +02:00
francescomani
c1c5c68e70 calling get_searchspace/coreset inside BWP function 2022-06-10 13:55:57 +02:00
francescomani
5fa3be8091 Merge remote-tracking branch 'origin/NR_RRC_MAC_CellGroup' into NR_BWP_config 2022-06-10 10:17:00 +02:00
David Kim
515093ca29 Updated SDAP setting to handle with NSA mode. 2022-06-09 10:10:17 -07:00
Roberto Louro Magueta
87d69126af Merge remote-tracking branch 'origin/develop-SRS-Measurements' into develop-SRS-MIMO 2022-06-09 01:13:44 +01:00
Roberto Louro Magueta
55e943c347 Remove obsolete code after merge 2022-06-09 00:48:39 +01:00
Roberto Louro Magueta
d11705260f Merge remote-tracking branch 'origin/develop' into develop-CSI-Measurements
# Conflicts:
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
#	openair2/RRC/NR/MESSAGES/asn1_msg.c
2022-06-09 00:33:12 +01:00
Melissa Elkadi
013e70d22d Bug fix in the NSA tunnel interface command
When the develop branch from OAI was merged,
the NSA tunnel interface command was was causing
a Heap-Buffer-Overflow. The filling of the buffer
was of size 500, but the memcpy in the RRC layer
was not matching the buffer size. Now, all buffer
sizes have been updated to be sufficient for the
content and are consistent.
2022-06-08 09:25:21 -07:00
francescomani
9f4153b55b Merge remote-tracking branch 'origin/develop' into NR_UE_multi_SSB_meas 2022-06-08 14:10:54 +02:00
francescomani
6c69393eda genericParameters in the new structure 2022-06-08 12:22:16 +02:00
francescomani
4d4f7dd616 initial commit for MAC UE BWP structure (bwp id) 2022-06-07 12:11:37 +02:00
David Kim
640ce7beed Updated to execute multiple UEs.
1. Introduced NR_NUM_SINR instead of NUM_SINR for NR case.
2. Extended Max number of UL PDU, Max number of RA Proc, and Max number of mobiles per gNB.
3. Changed log level to anlaysis for nsa and nr.
4. Fixed compiler warning regarding to data type in the logging of rsrp comparison.
2022-06-06 11:03:09 -07:00
francescomani
b5583d47de temporary workaround for RRC passing CG to MAC (forced encoding of message at MAC) 2022-06-06 11:52:12 +02:00
Melissa Elkadi
d704dbec15 Symbol rotation not working properly.
This is a PHY function that we do not
use in our emulate-l1 mode. The previous
develop branch has broken the symbol_rotation
function, which causes the gNB to crash in
NSA mode. For now, we shunt out the functionality,
but an issue will be created in git for the
OAI team to investigate.
2022-06-03 18:07:27 -07:00
Melissa Elkadi
33989c3551 Merge branch 'eurecom-develop' into episys/master-sa 2022-06-03 18:07:13 -07:00
David Kim
6470165730 Fixed compile error when handling usim_data. 2022-06-02 21:56:34 -07:00
Roberto Louro Magueta
b8f68c81fb Merge remote-tracking branch 'origin/develop-SRS-Measurements' into develop-SRS-MIMO 2022-06-01 17:30:33 +01:00
Roberto Louro Magueta
91189bd4f8 Fixes after merge 2022-06-01 14:30:45 +01:00
Roberto Louro Magueta
98f5478f7d Merge remote-tracking branch 'origin/develop-CSI' into develop-CSI-Measurements
# Conflicts:
#	openair2/LAYER2/NR_MAC_gNB/config.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
#	openair2/LAYER2/NR_MAC_gNB/mac_proto.h
2022-06-01 12:29:34 +01:00
David Kim
fc33a75f22 Added AWGN_MIMO2x2 CDLC Bler table.
- Added env variable to refer to this bler table.
- Bler table will be chosen dynamically.
- Area code was used to select proper bler table.
2022-05-30 19:21:19 -07:00
Raymond Knopp
7b8f776246 Merge branch 'if5_ECPRI_rework' of https://gitlab.eurecom.fr/oai/openairinterface5g into if5_ECPRI_rework 2022-05-30 11:49:04 +02:00
Raymond Knopp
c353d47329 removed CBPF rule regarding CPU selection 2022-05-30 11:48:32 +02:00
Raymond Knopp
514462f1df Merge branch 'if5_ECPRI_rework' of https://gitlab.eurecom.fr/oai/openairinterface5g into if5_ECPRI_rework
Conflicts:
	targets/ARCH/ETHERNET/USERSPACE/LIB/eth_udp.c
2022-05-30 11:47:58 +02:00
Raymond Knopp
29f84b815e commit before merge 2022-05-30 10:35:04 +02:00
Raymond Knopp
ca782ef2cb added threadPool to RU entity (FEP and FEP TX) 2022-05-30 07:21:39 +02:00
Raymond Knopp
2b426c0cc9 added threadPool for IF5 TX path 2022-05-28 07:47:41 +02:00
rmagueta
e6446392b2 Merge remote-tracking branch 'origin/develop-SRS-Measurements' into develop-SRS-MIMO 2022-05-27 11:55:31 +01:00
rmagueta
2f3079b808 Merge remote-tracking branch 'origin/develop-CSI' into develop-CSI-Measurements
# Conflicts:
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
#	openair2/RRC/NR/nr_rrc_config.c
2022-05-27 11:13:02 +01:00
David Kim
0645690f3d Handling edge case of channel info. 2022-05-26 18:26:44 -07:00
David Kim
e9a541a096 Updated csi structure members instead of encoding csi values. 2022-05-26 16:41:11 -07:00
David Kim
ec253251bc Merge branch 'episys/david/handover_step2_handover_execution' into episys/david/updating_MIMO_CSI_report_values 2022-05-26 13:43:30 -07:00
David Kim
ae72632b85 Merge remote-tracking branch 'origin/episys/master-sa' into episys/david/updating_MIMO_CSI_report_values 2022-05-26 13:15:42 -07:00
David Kim
b69a4aaa9b Updated rrc status and SINR value after Handover. 2022-05-25 17:43:41 -07:00
Raymond Knopp
c5fc94a3cb Merge branch 'if5_ECPRI_rework' of https://gitlab.eurecom.fr/oai/openairinterface5g into if5_ECPRI_rework 2022-05-25 21:41:56 +02:00
Roberto Louro Magueta
e1198b3d96 Add debug logs and comment update for nrofSRS_Ports 2022-05-25 17:30:17 +01:00
Roberto Louro Magueta
17a3a796b8 Merge remote-tracking branch 'origin/develop-SRS-Measurements' into develop-SRS-MIMO 2022-05-25 11:07:59 +01:00
Roberto Louro Magueta
40f2f54339 Fix memory allocation for SRS 2022-05-24 17:40:55 +01:00
Roberto Louro Magueta
6e5b77baf3 Merge remote-tracking branch 'origin/develop-CSI' into develop-CSI-Measurements
# Conflicts:
#	openair2/RRC/NR/MESSAGES/asn1_msg.c
2022-05-24 14:55:22 +01:00
Raymond Knopp
d0be523f6c corrections for 20 and 40 MHz n38. Some assertions were wrong. 2022-05-23 22:06:23 +02:00
Roberto Louro Magueta
58102d24d8 Configuration of nrofSRS_Ports based on UE capability 2022-05-23 20:33:12 +01:00
Roberto Louro Magueta
d8dbd2159c Merge remote-tracking branch 'origin/develop-SRS-Measurements' into develop-SRS-MIMO
# Conflicts:
#	openair1/PHY/NR_TRANSPORT/srs_rx.c
2022-05-23 13:40:35 +01:00
Raymond Knopp
44a3a60183 commented useless call to function which creates an assert with band n38 2022-05-23 10:57:22 +02:00
Roberto Louro Magueta
8bc5f273bd Improve log 2022-05-21 01:24:02 +01:00
Roberto Louro Magueta
23dab34e7c Fix CSI bitlen for rank = 2 2022-05-21 01:15:26 +01:00
David Kim
fc56972a35 Code cleanup. 2022-05-20 16:35:28 -07:00
Roberto Louro Magueta
c67d3659f1 Fix precoded_sinr_dB computation for rank = 2 2022-05-20 21:12:06 +01:00
Roberto Louro Magueta
4eac17e1c8 Fix in RI computation 2022-05-20 20:51:22 +01:00
David Kim
f898a1724c Merge remote-tracking branch 'origin/episys/master-sa' into episys/david/handover_step2_handover_execution 2022-05-20 12:45:20 -07:00
David Kim
ef37bcf170 Updated pdcp functions to check uplink traffic.
In this commit, we confirm that uplink and downlink IP traffic is working for LTE handover.
The uplink traffic works only up to 3 Mbps, anything more it belongs to  show a lot of loss.
The downlink traffic and pings works well.
The following is additional update in this commit.

1. Used PDCP_COLL_KEY_VALUE to find key using rab_id after handover.
2. Disabled channel modeling in case of handover.
3. Updated rsrq by using rsrp.
2022-05-20 12:07:14 -07:00
francescomani
b57a8622c0 fixes for RRC configuration in SA 2022-05-19 17:41:58 +02:00
Roberto Louro Magueta
7018b7c841 Fixes after merge 2022-05-19 13:38:22 +01:00
Roberto Louro Magueta
9887982e00 Merge remote-tracking branch 'origin/develop-CSI' into develop-CSI-Measurements
# Conflicts:
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
#	openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
#	openair2/RRC/NR/MESSAGES/asn1_msg.c
2022-05-19 13:21:00 +01:00
David Kim
31437e3185 Updated rlc functions to check downlink traffic.
1. Downlink traffic is working.
2. Set default rlc mode to be AM even in drb case.
3. Code cleanup.
2022-05-18 19:07:07 -07:00
Melissa Elkadi
fb98755a48 Adding LOG_As back to OAI code for EpiSci tests 2022-05-18 09:12:23 -07:00
Melissa Elkadi
b2c07b620d Merge branch 'eurecom-develop' into episys/master-sa 2022-05-18 07:25:32 -07:00
Roberto Louro Magueta
e6e6fdedf9 Free allocated variables for SRS 2022-05-17 18:53:05 +01:00
Roberto Louro Magueta
2ef5edd17c Remove sc_list_length and sc_list variables 2022-05-17 18:16:54 +01:00
Roberto Louro Magueta
86874047ac Channel estimation, channel interpolation and SNR per RB computation based on SRS up to 4 antenna ports 2022-05-17 17:42:48 +01:00
francescomani
7a26d75634 other changes required for multiple BWP CSI config 2022-05-17 18:18:15 +02:00
francescomani
075e8c6d8f Merge remote-tracking branch 'origin/develop' into NR_RRC_harmonization_after_BWP 2022-05-17 15:27:12 +02:00
David Kim
d3cda4816d Checking Msg3 size and code cleanup. 2022-05-16 11:20:05 -07:00
francescomani
a67791d18e init ssb rsrp vector 2022-05-16 19:37:16 +02:00
Roberto Louro Magueta
997d52b71d Improvements in nr_get_srs_signal to consider multi-ports and multi-symbols 2022-05-16 18:11:01 +01:00
francescomani
ef20a5c3b2 additional fixes in multi-ssb report at UE 2022-05-16 18:09:29 +02:00
francescomani
2f81e507d7 fixes for pbch detection and measurements on multiple SSBs 2022-05-16 15:11:09 +02:00
francescomani
9277afe327 measureing RSRP on all SSBs 2022-05-16 11:59:39 +02:00
Roberto Louro Magueta
52bc76d904 Fixes and improvements in generate_srs_nr function 2022-05-14 21:01:42 +01:00
Raymond Knopp
bad9c5969f Merge remote-tracking branch 'origin/develop' into if5_ECPRI_rework
Conflicts:
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
2022-05-14 09:27:39 +02:00
Roberto Louro Magueta
f6bc787d1e Add comments in nfapi_nr_srs_pdu_t 2022-05-14 00:38:00 +01:00
David Kim
8aaa384193 Updated sinr to csi to check rsrp. 2022-05-12 08:56:55 -07:00
Roberto Louro Magueta
32de221553 Fix SRS mapping for multiple ports 2022-05-11 19:54:35 +01:00
Roberto Louro Magueta
ccb1e64a38 Merge branch 'bupt-ulmimo-4' into develop-SRS-MIMO 2022-05-11 18:36:50 +01:00
Roberto Louro Magueta
0ddd8c2586 Merge remote-tracking branch 'origin/develop-CSI' into develop-CSI-Measurements
# Conflicts:
#	openair2/RRC/NR/MESSAGES/asn1_msg.c
#	openair2/RRC/NR/nr_rrc_config.h
2022-05-11 14:36:21 +01:00
Raymond Knopp
0f207da28a initial changes for multi-threaded TX for IF5 2022-05-08 18:36:42 +02:00
Raymond Knopp
6bb14205b0 Merge remote-tracking branch 'origin/develop' into if5_ECPRI_rework 2022-05-07 07:36:36 +02:00
David Kim
2eed6f18e4 Updated to use RSRP value to trigger handover. 2022-05-06 18:18:43 -07:00
Roberto Louro Magueta
fc5632eeb9 Merge remote-tracking branch 'origin/develop-CSI' into develop-CSI-Measurements
# Conflicts:
#	openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
#	openair1/PHY/NR_TRANSPORT/nr_dci.c
#	openair1/PHY/NR_TRANSPORT/pucch_rx.c
#	openair2/GNB_APP/gnb_config.c
#	openair2/GNB_APP/gnb_paramdef.h
#	openair2/LAYER2/NR_MAC_gNB/config.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
#	openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
#	openair2/RRC/NR/MESSAGES/asn1_msg.c
#	targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
#	targets/PROJECTS/GENERIC-NR-5GC/CONF/cu_gnb.conf
2022-05-06 13:16:48 +01:00
Raymond Knopp
8e57947067 Merge remote-tracking branch 'origin/NR_RRC_processing_timer' into if5_ECPRI_rework 2022-05-06 09:36:07 +02:00
Raymond Knopp
fe3f513a9d Merge remote-tracking branch 'origin/tdd25period_for_MR' into if5_ECPRI_rework 2022-05-05 20:07:59 +02:00
Roberto Louro Magueta
73a1e92249 Fix memory leaks 2022-05-03 12:09:19 +01:00
David Kim
c79b681480 Added and updated config file for LTE HO.
1. Two eNB config file updated.
2. Removed lte specific node_number variable to get softmodem params.
3. Checking sfn_sf values for all eNBs.
4. Added phy_id member in phy_channel_params to identify source eNB.
2022-05-02 18:31:45 -07:00
Raymond Knopp
f4fc8e3682 Merge remote-tracking branch 'origin/tdd25period_for_MR' into if5_ECPRI_rework 2022-05-02 00:06:08 +02:00
Raymond Knopp
f0e8032b29 Merge remote-tracking branch 'origin/develop' into if5_ECPRI_rework 2022-05-01 14:51:27 +02:00
Raymond Knopp
fc0396f9f4 2x2 20 and 50 MHz tested with AW2S Jaguar with new FW and NR configurations 2022-05-01 13:10:04 +02:00
rmagueta
2f753873bc Fix warning: this ‘if’ clause does not guard... [-Wmisleading-indentation] 2022-04-30 16:12:27 +01:00
rmagueta
751335765f Merge remote-tracking branch 'origin/develop-CSI' into develop-CSI-Measurements
# Conflicts:
#	openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
#	openair1/PHY/NR_TRANSPORT/pucch_rx.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
#	openair2/RRC/NR/nr_rrc_config.c
2022-04-30 15:52:48 +01:00
francescomani
7733ac1857 bwp-based csi configuration (to be verified) 2022-04-27 19:28:22 +02:00
David Kim
15b6259dcc Updated handover RACH Procedure together with code cleanup.
1. Added default case for handling actions in rrc_rlc_config_req.
2. Added a log for analysis purpose for Msg3 in rrc_eNB.
3. Handled RACH procedure to send Msg3 properly from UE.
4. Code cleanup.
2022-04-26 17:10:14 -07:00
David Kim
d3e96c6769 Updated pdcp and rlc layer config to reset for Handover.
1. Config reset in pdcp and rlc layer.
2. Adding new rb for target eNB.
3. eNB RRC layer received RRCConnectionReconfigurationComplete.
4. Need to setup further for NAS.
2022-04-22 10:07:36 -07:00
Melissa Elkadi
eef2fb907b Merge branch 'eurecom-develop' into episys/master-sa 2022-04-19 07:18:57 -07:00
Melissa Elkadi
29a68836fa Merge branch 'episys/master-sa' of gitlab.int-episci.com:aburger/openairinterface5g into episys/master-sa 2022-04-19 06:52:53 -07:00
David Kim
4b5cf91125 Added Msg4 with empty payload and received harq ack. 2022-04-18 15:58:05 -07:00
rmagueta
eb12cb8f10 Fix CI test for FR2 RA 2022-04-18 15:19:29 +01:00
francescomani
10b8e1b34c harmonization of uplink BWPs configuration 2022-04-18 11:59:40 +02:00
rmagueta
a4a5c6ae22 Merge remote-tracking branch 'origin/develop-CSI' into develop-CSI-Measurements 2022-04-18 10:42:04 +01:00
francescomani
28f3997ea6 Merge remote-tracking branch 'origin/NR_PUCCH_RRC_Resources' into NR_RRC_harmonization_after_BWP 2022-04-18 10:06:02 +02:00
francescomani
c791b45adc harmonization of downlink BWPs configuration 2022-04-16 14:34:00 +02:00
francescomani
b62e7be276 adding harmonization of coreset configuration to multiple BWPs 2022-04-16 10:13:02 +02:00
francescomani
6989d4ecba harmonization of coreset configuration 2022-04-16 09:53:06 +02:00
David Kim
e66640f5ab Updated ulsch_buffer for Handover Msg3.
1. Changed ulsch_buffer as static variable.
2. Swapped crnti bytes in eNB.
3. Changed status after sending Msg3 in UE.
2022-04-15 11:45:12 -07:00
francescomani
3a0cb80469 Merge remote-tracking branch 'origin/nr_csirs_rrc_harmonization' into NR_RRC_harmonization_after_BWP 2022-04-15 13:54:25 +02:00
David Kim
01921cf9f0 We receive the RAR and send Msg3. Fixes include:
- Properly providing crnti value to mac_rlc_status_ind() for HO (this
allowed us to be able to get the Msg3 from the RRC -> PDCP ->
RLC -> MAC). We were able to remove the hack we added in
the previous commit for BSR_Bytes.
- The unpacked rnti value from the
mobility info was saved incorrectly (bug fix)
- RX_IND and CRC_IND for msg3 crnti
had to be updated to the correct expected value.
- Currently, the ULSCH header is clearly incorrect.
- We can possibly try to call ue_get_sdu() instead.
2022-04-14 14:33:38 -07:00
David Kim
d30b232aeb Receiving RAR but sending incorrect Msg3.
- We started utilizing the HO case in the ue_get_rach
- We hacked the code to have BSR_Bytes > 0
- The BSR_Bytes is not properly set by RLC
- We then saw RAR received after shunting out RLC handling
- We are building msg3 before RAR
- We are sending "msg 3" = RX_IND after RAR
- The eNB does not like the Msg3 (It is CCCH - should be DCCH)
- The next steps are to look at why the RX is CCCH and not DCCH
- We can look at the RX we build in the UE to make sure its correct
2022-04-13 13:34:55 -07:00
rmagueta
ad3253fef6 Move CSI-RS configuration from fill_initial_SpCellConfig to update_cellGroupConfig 2022-04-13 19:45:10 +01:00
rmagueta
9def6e815d Merge remote-tracking branch 'origin/develop-2x2-segFault' into develop-CSI-Measurements 2022-04-13 17:55:40 +01:00
rmagueta
27bac2f2c4 The RI, PMI and CQI estimated at the UE are sent by the UE and correctly received by the gNB 2022-04-13 15:33:37 +01:00
rmagueta
cd6ee6a01e Fix build after merge 2022-04-13 11:12:49 +01:00
rmagueta
9b1db62f38 Merge remote-tracking branch 'origin/develop-CSI' into develop-CSI-Measurements 2022-04-13 10:40:58 +01:00
David Kim
f9d93403d0 Updated preamble index for handover. 2022-04-12 17:51:27 -07:00
rmagueta
40279dddf3 Get cri_bitlen, ri_bitlen, pmi_bitlen and cqi_bitlen at UE 2022-04-13 01:07:01 +01:00
rmagueta
04b234c878 Send CSI-RS measurements from PHY to MAC at UE 2022-04-12 19:06:02 +01:00
francescomani
1745ffa10f adapting nr_rrc_config_dl_tda for multiple BWPs 2022-04-12 17:36:52 +02:00
rmagueta
1d86347587 Merge remote-tracking branch 'origin/develop-CSI' into develop-CSI-Measurements
# Conflicts:
#	openair1/PHY/INIT/nr_init_ue.c
#	openair1/PHY/NR_TRANSPORT/nr_dci.c
#	openair2/RRC/NR/MESSAGES/asn1_msg.c
2022-04-12 14:48:08 +01:00
Raymond Knopp
05cdd1b4da temporary commit 2022-04-09 15:56:30 +02:00
rmagueta
3969079fcd Merge remote-tracking branch 'origin/develop-CSI' into develop-CSI-Measurements
# Conflicts:
#	openair2/GNB_APP/gnb_paramdef.h
#	openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
2022-04-08 19:49:40 +01:00
David Kim
2c84fdbea3 nFAPI queue reset for handover. 2022-04-07 19:05:34 -07:00
David Kim
61ebbc3403 Detach from source eNB. 2022-04-07 13:56:15 -07:00
rmagueta
8ffecf4bdf CQI computation 2022-04-07 19:58:56 +01:00
rmagueta
d6a155a803 SINR in dB 2022-04-07 19:30:33 +01:00
rmagueta
7286552aa5 Improvements in PMI computation to allow computation CQI more easily 2022-04-07 18:58:18 +01:00
Melissa
4d8615c4fa Merge branch 'episys/rt_sched_or_sanitizer' into 'episys/master-sa'
pthread_create and the RT scheduler together are incompatible in Ubuntu 18.04+

See merge request aburger/openairinterface5g!119
2022-04-06 22:06:41 +00:00
Melissa
55eb112ab0 pthread_create and the RT scheduler together are incompatible in Ubuntu 18.04+ 2022-04-06 22:06:40 +00:00
David Kim
9fa16cd5b9 Inactivating X2U interface. 2022-04-06 11:53:44 -07:00
rmagueta
bf56e881b2 Fix log 2022-04-06 18:43:56 +01:00
rmagueta
6e4bbe8f49 PMI computation for rank=2 case 2022-04-06 18:42:00 +01:00
rmagueta
66b3fffbf0 Minor improvements 2022-04-06 17:44:47 +01:00
rmagueta
8e58e83be6 Remove log 2022-04-06 14:52:34 +01:00
rmagueta
4ee6005a50 Merge remote-tracking branch 'origin/develop-CSI' into develop-CSI-Measurements
# Conflicts:
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
2022-04-06 13:30:04 +01:00
Melissa Elkadi
6101792f4a Merge branch 'episys/master-sa' into episys/rt_sched_or_sanitizer 2022-04-05 14:23:16 -07:00
rmagueta
886b580fac PMI computation for rank=1 case 2022-04-05 19:56:13 +01:00
David Kim
b931c1b008 Updated the 4th byte value of cellIdentitys(28 bits length). 2022-04-04 16:49:34 -07:00
Melissa Elkadi
6aa1ad83a6 pthread_create and the RT scheduler together are incompatible.
When we run with the RT scheduler and the address santizer in
Ubuntu 18.04, pthread_create will hang and never create threads.
2022-04-04 14:55:50 -07:00
rmagueta
4254d59a96 Create nr_csi_rs_pmi_estimation function for PMI computation (still almost empty) 2022-04-04 20:13:33 +01:00
David Kim
634f7dc1e6 Updated to fix asn encoding error. 2022-04-04 10:44:09 -07:00
rmagueta
f12c6ea65b Add log2_maxh for nr_conjch0_mult_ch1 in nr_csi_rs_ri_estimation 2022-04-04 15:55:16 +01:00
rmagueta
03f7bd3468 Remove unused input in nr_csi_rs_ri_estimation 2022-04-04 14:44:22 +01:00
rmagueta
c37e0af9b0 Change LOG levels 2022-04-04 14:42:37 +01:00
rmagueta
ef63aa45e6 Merge remote-tracking branch 'origin/develop-CSI' into develop-CSI-Measurements 2022-04-04 13:51:52 +01:00
Raymond Knopp
8fdf4af6aa added multiple thread support for ECPRI/IF5 interface. Uses SO_REUSEPORT for listening with multiple sockets in different threads 2022-04-03 22:23:33 +02:00
David Kim
80420d7cba Enabled ASAN log and print. 2022-04-01 15:46:23 -07:00
rmagueta
e628c8c2c4 Fix build after merge 2022-04-01 20:13:06 +01:00
rmagueta
2deec7fa09 Merge remote-tracking branch 'origin/develop-CSI' into develop-CSI-Measurements
# Conflicts:
#	openair1/PHY/INIT/nr_init_ue.c
#	openair2/GNB_APP/gnb_config.c
#	openair2/GNB_APP/gnb_paramdef.h
#	openair2/RRC/NR/MESSAGES/asn1_msg.c
#	openair2/RRC/NR/rrc_gNB_reconfig.c
2022-04-01 19:36:57 +01:00
David Kim
b62d2fcf08 Adjusted to one udp interface. 2022-03-31 20:06:03 -07:00
rmagueta
bc2ea375c8 Replace nr_construct_HhH_elements by nr_a_sum_b function in nr_csi_rs_ri_estimation 2022-03-31 20:30:00 +01:00
rmagueta
da1e542a31 Fix dl_antenna_ports after merge 2022-03-30 20:14:57 +01:00
rmagueta
fba2df7557 Fix config files after merge 2022-03-30 19:27:24 +01:00
rmagueta
4c0427ea6c Merge remote-tracking branch 'origin/nr_mimo_precoding_codebook_I' into develop-CSI-Measurements
# Conflicts:
#	openair1/PHY/INIT/nr_init_ue.c
#	openair2/GNB_APP/gnb_config.c
#	openair2/GNB_APP/gnb_paramdef.h
#	targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band41.fr1.106PRB.usrpb210.conf
#	targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
#	targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.162PRB.2x2.usrpn300.conf
2022-03-30 19:23:22 +01:00
David Kim
e5f851b01e Updated config file for handover. 2022-03-30 10:33:46 -07:00
rmagueta
38d0dca0bf Minor fixes 2022-03-30 17:00:25 +01:00
rmagueta
ef4d8ab0c7 Merge remote-tracking branch 'origin/develop' into develop-CSI-Measurements 2022-03-30 16:17:17 +01:00
rmagueta
c7a54269de First version of rank indicator computation at UE 2022-03-30 16:16:58 +01:00
rmagueta
1d1aaa30e7 Merge remote-tracking branch 'origin/develop-CSI' into develop-CSI-Measurements
# Conflicts:
#	openair1/PHY/INIT/nr_init.c
#	openair1/PHY/INIT/nr_init_ue.c
#	openair1/PHY/NR_TRANSPORT/nr_csi_rs.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
2022-03-28 15:06:23 +01:00
David Kim
12cecf668a Enabled mreasurement report. 2022-03-25 09:47:58 -07:00
David Kim
f92a972aa5 Adjusted the delta of port numbering between eNBs. 2022-03-25 09:45:48 -07:00
David Kim
756ff02fb7 Updated eNB config for X2C in lte handover. 2022-03-23 17:42:35 -07:00
David Kim
1acb2fe894 Added additional UDP connection for handover. 2022-03-23 15:46:50 -07:00
Melissa Elkadi
4694664470 Merge branch 'eurecom-develop' into episys/master-sa 2022-03-22 16:59:25 -07:00
David Kim
10c992bb27 Added AssertFatal for operation of eNB node_number. 2022-03-22 16:03:59 -07:00
David Kim
5c443ee7a5 code cleanup when using node_number. 2022-03-22 15:56:11 -07:00
David Kim
2785c83a90 Added vnf p7 port arguement when calling configure_nfapi_vnf. 2022-03-22 15:48:56 -07:00
David Kim
a7f35bba02 code cleanup. 2022-03-22 15:43:10 -07:00
David Kim
cb5f8919e4 Fixed argument format in function. 2022-03-22 15:29:33 -07:00
David Kim
16371a8f5d Updated PDCP config for multiple eNB by using node_number.
Updated target eNB's config for nFAPI connection.
2022-03-22 13:15:58 -07:00
rmagueta
3e664b5eb7 Fix warning 2022-03-22 18:28:49 +00:00
rmagueta
e834acfaf2 Temporary commit to test CSI-RS without core 2022-03-22 18:25:29 +00:00
rmagueta
17504695f8 Fix updated configurations that was reverted in merge 2022-03-22 18:02:12 +00:00
rmagueta
184e151fde Fix build after merge 2022-03-22 17:40:06 +00:00
rmagueta
a47861628b Merge remote-tracking branch 'origin/develop-CSI' into develop-CSI-Measurements
# Conflicts:
#	openair1/PHY/INIT/nr_init.c
#	openair1/PHY/INIT/nr_init_ue.c
#	openair1/PHY/NR_REFSIG/nr_gold.c
#	openair1/PHY/NR_TRANSPORT/nr_csi_rs.c
#	openair1/PHY/defs_nr_common.h
#	openair2/LAYER2/NR_MAC_gNB/config.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
#	openair2/RRC/NR/MESSAGES/asn1_msg.c
#	openair2/RRC/NR/nr_rrc_proto.h
#	openair2/RRC/NR/rrc_gNB_reconfig.c
#	targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
2022-03-22 17:18:22 +00:00
David Kim
98ac49f1bb Adding update from episci/master-sa. 2022-03-15 16:33:45 -07:00
David Kim
5006fd48d8 Adding one more eNB config file for LTE handover. 2022-03-15 16:23:34 -07:00
Raymond Knopp
070b663a54 intermediate commit 2022-03-14 13:29:16 +01:00
Raymond Knopp
e71578e7d0 Merge branch 'tdd25period_for_MR' into tdd2_5period_withRLCupdate
Conflicts:
	openair2/LAYER2/NR_MAC_gNB/config.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
	targets/ARCH/AW2SORI/oaiori.c
2022-03-13 07:30:44 +01:00
Hongzhi Wang
a39c972611 revert commented stats 2022-03-11 11:36:51 +01:00
Hongzhi Wang
89ac71ef25 fix warnings and revert commented logs 2022-03-11 11:31:33 +01:00
Hongzhi Wang
a289d6e2ab Revert "setting reordering to infinity and max rb 50"
This reverts commit 168edeaf73.

Conflicts:
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
2022-03-11 10:21:44 +01:00
Hongzhi Wang
91e9f930f4 revert max_rbsize and tpc default value 2022-03-11 00:33:12 +01:00
Hongzhi Wang
457ee6c049 bugfix build issue 2022-03-10 21:43:28 +01:00
Hongzhi Wang
bf889968f7 set default ul mcs to 9 2022-03-10 19:18:59 +01:00
Hongzhi Wang
22d387e25f bugfix dtx for offload 2022-03-10 11:55:59 +01:00
Hongzhi Wang
51251fe055 fix for loading ldpc_offload 2022-03-10 11:55:17 +01:00
Hongzhi Wang
5c1ab827f4 bugfix after cherry-pick 2022-03-10 11:34:24 +01:00
David Kim
a389eb8fd6 Function reallocation for downlink cqi value. 2022-03-09 12:21:27 -08:00
David Kim
c68640f6f7 Code cleanup by removing some added logs. 2022-03-09 12:02:56 -08:00
David Kim
2695df5f31 Updated cqi value setting. 2022-03-09 11:51:49 -08:00
David Kim
fd4dbbfb35 Updated for MIMO CSI Reporting. 2022-03-09 10:55:10 -08:00
Hongzhi Wang
168edeaf73 setting reordering to infinity and max rb 50 2022-03-09 16:16:07 +01:00
Hongzhi Wang
c4cfbfc845 config file working for mwc 2022-03-09 16:15:54 +01:00
Hongzhi Wang
fc78d01508 adding sa n310 config file 2022-03-09 16:15:14 +01:00
Hongzhi Wang
5254d1d91d update offload harq buffer offset 2022-03-09 16:15:01 +01:00
Hongzhi Wang
a95ffb87de bug fix offload harq round 2022-03-09 16:14:38 +01:00
Hongzhi Wang
380a2a555f bug fix for dtx detected 2022-03-09 16:14:09 +01:00
Hongzhi Wang
1d0a7b3860 removing some log prints 2022-03-09 16:13:52 +01:00
Hongzhi Wang
638b5f7f2a adding ulsch id to offload harq buffer offset for multiple users 2022-03-09 16:13:17 +01:00
Hongzhi Wang
3df0b89525 re-activating HARQ for UL. break loop when one segment is in error 2022-03-09 16:09:50 +01:00
Hongzhi Wang
65b0e7a8ea reducing some logs and fixing some vcd traces 2022-03-09 16:09:35 +01:00
Hongzhi Wang
fe4e1bdb93 adding harq pid to harq buffer offset 2022-03-09 16:07:14 +01:00
Hongzhi Wang
6e3a87a60a Temporiraly fix for centos 2022-03-09 16:05:59 +01:00
Hongzhi Wang
e20df48b02 bug fix on calling nr_fill_indications 2022-03-09 16:03:44 +01:00
Hongzhi Wang
02048ff3c4 using one l1tx thread and changing ul parameters for testing 2022-03-09 16:00:39 +01:00
Hongzhi Wang
6cd313f545 add missing dependency condition 2022-03-09 15:37:00 +01:00
Hongzhi Wang
4f68b5aeb6 Adding a dependency condition for offload 2022-03-09 15:35:58 +01:00
Hongzhi Wang
b6b7bbbdd7 adding dependency condition for ldpc offload 2022-03-09 15:35:50 +01:00
Hongzhi Wang
1749595217 bug fixes and removing warnings 2022-03-09 15:30:54 +01:00
Hongzhi Wang
aeb987bb0a using temporarily one l1tx thread and soft ldpc for small mcs 2022-03-09 15:25:39 +01:00
Hongzhi Wang
637ca97566 add ldpc offload cmdline option for softmodem and remove crc drop flag 2022-03-09 15:17:33 +01:00
Hongzhi Wang
1216eb2e4d adding segment buffer offset and updates 2022-03-09 15:10:21 +01:00
Hongzhi Wang
8c09af6291 Split fill queue function and move mbuf allocation to init step 2022-03-09 15:01:14 +01:00
Florian Kaltenberger
bd2a27f6cc some more error checks + data collection 2022-03-09 14:53:59 +01:00
Hongzhi Wang
d91226f07f Load ldpc_offload lib in softmodem 2022-03-09 14:45:58 +01:00
Hongzhi Wang
8af206c644 adding allocation free function for offload 2022-03-09 14:39:03 +01:00
Florian Kaltenberger
2423996bba adding some error checks 2022-03-09 14:38:41 +01:00
Hongzhi Wang
00ba6b6bb1 add offload on cmdline and bugfix 2022-03-09 14:38:25 +01:00
Hongzhi Wang
a96aeff279 adding post decoding for offload 2022-03-09 14:38:08 +01:00
Hongzhi Wang
1247a02f6d Initializing the device in lib load function 2022-03-09 14:37:45 +01:00
Hongzhi Wang
7b88c36ba6 moving more init functions to device initialization 2022-03-09 14:37:27 +01:00
Hongzhi Wang
6532db1233 moving device init functions out from decoding 2022-03-09 14:36:56 +01:00
Hongzhi Wang
c739337e66 adding offload multiple segments 2022-03-09 14:36:01 +01:00
Hongzhi Wang
52450c449f code cleanup ldpc offload 2022-03-09 14:35:40 +01:00
Hongzhi Wang
4238ff04c5 moving ldpc offload to ulsch decoding function 2022-03-09 14:35:16 +01:00
Hongzhi Wang
aed61728dc removing hardcoded parameters 2022-03-09 14:34:31 +01:00
Hongzhi Wang
6639ad24fc removing test vector config file 2022-03-09 14:34:06 +01:00
Hongzhi Wang
a8bee7ae21 Update ldpc offload decoder input and output 2022-03-09 14:32:49 +01:00
Hongzhi Wang
030aa253e8 adding temporarily bbdev testsuite in ldpc_decoder_offload to check t1 card connection 2022-03-09 14:32:26 +01:00
Hongzhi Wang
ec25a03fbb adding dpdk library and ldpc offload library 2022-03-09 14:25:02 +01:00
David Kim
5902aaf138 Updated pdsch_AntennaPorts = 2. 2022-03-08 17:53:39 -08:00
David Kim
fc2ba4f4bd Removed duplicated semicolon at the end of line. 2022-03-08 17:51:23 -08:00
David Kim
d50dae5005 Cleaned code by removing logs. 2022-03-08 17:50:46 -08:00
David Kim
e883528dd1 Added zero pad in reporting PMI in nrUE. 2022-03-08 17:49:38 -08:00
David Kim
b1f721503e Added CSI report signaling with default values. 2022-03-08 17:43:09 -08:00
David Kim
c0e71341a5 Merge remote-tracking branch 'eurocom/tdd25period_for_MR' into episys/david/merge_develop 2022-03-08 11:22:18 -08:00
Melissa Elkadi
f2b9d369bd Reveting hack that was added to master-sa 2022-03-08 10:56:23 -08:00
Melissa
b1a1d1d0dd Merge branch 'error-checking-ul-tti-req' into 'episys/master-sa'
Clean up to nFAPI and error checking UL_TTI_REQ n_pdus

See merge request aburger/openairinterface5g!115
2022-03-08 16:48:53 +00:00
Melissa Elkadi
51e56f74d8 Merge remote-tracking branch 'eurecom/episys-throughput-updates-and-downlink-siso-cm' into episys/master-sa 2022-03-07 12:16:37 -08:00
Melissa Elkadi
a34ce559a4 Removing untracked/unnecessary conf files 2022-03-07 11:31:17 -08:00
Melissa Elkadi
8bf7e77b0e Merge branch 'episys-throughput-updates-and-downlink-siso-cm' into episys/master-sa
This commit includes resolutions for MR comments from OAI
2022-03-07 11:28:55 -08:00
Melissa Elkadi
7b633b141f Merge branch 'eurecom-develop' into episys/master-sa 2022-03-07 09:09:18 -08:00
Raymond Knopp
401d981584 optimizations for IF5 fronthaul with AW2S 4x4 RU 2022-03-04 19:17:34 +01:00
Melissa Elkadi
95dbe3089e Adding min_rxtxtime to internal proxy conf file 2022-03-01 08:27:59 -08:00
Melissa Elkadi
ee2f7c8a5c Merge branch 'eurecom-develop' into episys/master-sa 2022-03-01 07:45:48 -08:00
Raymond Knopp
963ffe67c1 Merge remote-tracking branch 'origin/bugfix-nr-rlc-2022-w08' into tdd2_5period_withRLCupdate
Conflicts:
	openair2/GNB_APP/gnb_config.c
	openair2/LAYER2/NR_MAC_gNB/config.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
	openair2/RRC/NR/MESSAGES/asn1_msg.c
2022-02-22 22:23:23 +01:00
714 changed files with 46823 additions and 139203 deletions

107
.clang-format Normal file
View File

@@ -0,0 +1,107 @@
---
Language: Cpp
# BasedOnStyle: Google
AccessModifierOffset: -1
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: Left
AlignOperands: true
AlignTrailingComments: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: true
BinPackArguments: false
BinPackParameters: false
BitFieldColonSpacing: After
BraceWrapping:
AfterClass: false
AfterControlStatement: false
AfterEnum: false
AfterFunction: true
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
AfterExternBlock: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakBeforeBinaryOperators: NonAssignment
BreakBeforeBraces: Custom
BreakBeforeInheritanceComma: false
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeColon
BreakStringLiterals: true
ColumnLimit: 200
CommentPragmas: '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: true
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IncludeBlocks: Preserve
IncludeCategories:
- Regex: '^<ext/.*\.h>'
Priority: 1
- Regex: '^<.*\.h>'
Priority: 1
- Regex: '^<.*'
Priority: 1
- Regex: '.*'
Priority: 1
IncludeIsMainRegex: '([-_](test|unittest))?$'
IndentCaseLabels: true
IndentPPDirectives: None
IndentWidth: 2
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 1
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 200
PointerAlignment: Right
ReflowComments: true
SortIncludes: false
SortUsingDeclarations: false
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
TabWidth: 2
UseTab: Never
...

View File

@@ -21,10 +21,10 @@
# Author: laurent THOMAS, Lionel GAUTHIER
cmake_minimum_required (VERSION 2.8)
cmake_minimum_required (VERSION 3.5)
project (OpenAirInterface LANGUAGES C CXX)
include("macros.cmake")
include("cmake_targets/macros.cmake")
# System packages that are required
# We use either the cmake buildin, in ubuntu are in: /usr/share/cmake*/Modules/
@@ -55,17 +55,17 @@ if (${RF_BOARD} STREQUAL "OAI_USRP")
find_package(Boost REQUIRED)
elseif (${RF_BOARD} STREQUAL "OAI_IRIS")
include_directories("${OPENAIR_TARGETS}/ARCH/IRIS/USERSPACE/LIB/")
include_directories("${OPENAIR_DIR}/sdr/IRIS/USERSPACE/LIB/")
set(HW_SOURCE ${HW_SOURCE}
${OPENAIR_TARGETS}/ARCH/IRIS/USERSPACE/LIB/iris_lib.cpp)
${OPENAIR_DIR}/sdr/IRIS/USERSPACE/LIB/iris_lib.cpp)
LINK_DIRECTORIES("/usr/local/lib")
set(option_HW_lib "-lSoapySDR -rdynamic -ldl")
elseif (${RF_BOARD} STREQUAL "OAI_AW2SORI")
include_directories("${OPENAIR_TARGETS}/ARCH/AW2SORI")
include_directories("${OPENAIR_DIR}/sdr/AW2SORI")
set(HW_SOURCE ${HW_SOURCE}
${OPENAIR_TARGETS}/ARCH/AW2SORI/ARCH/AW2SORI/oaiori.c)
${OPENAIR_DIR}/sdr/AW2SORI/ARCH/AW2SORI/oaiori.c)
LINK_DIRECTORIES("/usr/local/lib")
set(openair_HW_lib "-shared -fPIC -msse4 -g -ggdb -lori")
@@ -98,6 +98,7 @@ endif()
add_definitions("-DNETTLE_VERSION_MAJOR=${NETTLE_VERSION_MAJOR}")
add_definitions("-DNETTLE_VERSION_MINOR=${NETTLE_VERSION_MINOR}")
add_definitions("-DPHY_SIDE_LINK")
pkg_search_module(XPM xpm)
if(NOT ${XPM_FOUND})
@@ -334,13 +335,9 @@ add_definitions("-DPACKAGE_BUGREPORT=\"openair4g-devel@lists.eurecom.fr\"")
# Debug related options
#########################################
add_boolean_option(ASN_EMIT_DEBUG False "ASN1 coder/decoder Debug")
add_boolean_option(ASN_THREAD_SAFE True "ASN1 coder/decoder Debug")
add_boolean_option(MSG_PRINT True "print debug messages")
add_boolean_option(DEBUG_ASN1C False "ASN1 coder/decoder Debug traces, see common/utils/config.h, the logs are regular OAI logs, in the log group 'ASN'")
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
@@ -358,6 +355,12 @@ add_library(ITTI
)
add_dependencies(ITTI rrc_flag)
# asn1c skeletons have hardcoded this flag to make customized debug logs
# OAI uses this feature to re-use OAI LOG_I(ASN, ...)
if (DEBUG_ASN1C)
add_definitions(-DHAVE_CONFIG_H)
endif()
##################################################
# ASN.1 grammar C code generation & dependencies #
##################################################
@@ -733,53 +736,53 @@ set (SHLIB_LOADER_SOURCES
######################################################################
set(HWLIB_USRP_SOURCE
${OPENAIR_TARGETS}/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
${OPENAIR_DIR}/sdr/USRP/USERSPACE/LIB/usrp_lib.cpp
)
add_library(oai_usrpdevif MODULE ${HWLIB_USRP_SOURCE} )
target_include_directories(oai_usrpdevif PRIVATE
"${OPENAIR_TARGETS}/ARCH/USRP/USERSPACE/LIB/"
"${OPENAIR_DIR}/sdr/USRP/USERSPACE/LIB/"
${Boost_INCLUDE_DIR}
)
target_link_libraries(oai_usrpdevif uhd)
include_directories("${OPENAIR_TARGETS}/ARCH/BLADERF/USERSPACE/LIB/")
include_directories("${OPENAIR_DIR}/sdr/BLADERF/USERSPACE/LIB/")
set(HWLIB_BLADERF_SOURCE
${OPENAIR_TARGETS}/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c
${OPENAIR_DIR}/sdr/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/")
include_directories("${OPENAIR_DIR}/sdr/LMSSDR/USERSPACE/LIB/")
set(HWLIB_LMSSDR_SOURCE
${OPENAIR_TARGETS}/ARCH/LMSSDR/USERSPACE/LIB/lms_lib.cpp
${OPENAIR_DIR}/sdr/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/")
include_directories("${OPENAIR_DIR}/sdr/ETHERNET/USERSPACE/LIB/")
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
${OPENAIR_DIR}/sdr/ETHERNET/USERSPACE/LIB/ethernet_lib.c
${OPENAIR_DIR}/sdr/ETHERNET/USERSPACE/LIB/eth_udp.c
${OPENAIR_DIR}/sdr/ETHERNET/USERSPACE/LIB/eth_raw.c
)
add_library(oai_eth_transpro MODULE ${TPLIB_ETHERNET_SOURCE} )
include_directories("${OPENAIR_TARGETS}/ARCH/AW2SORI/")
include_directories("${OPENAIR_DIR}/sdr/AW2SORI/")
link_directories("/usr/local/lib")
set(HWLIB_AW2SORI_SOURCE
${OPENAIR_TARGETS}/ARCH/AW2SORI/oaiori.c
${OPENAIR_DIR}/sdr/AW2SORI/oaiori.c
)
add_library(aw2sori_transpro MODULE ${HWLIB_AW2SORI_SOURCE})
target_compile_options(aw2sori_transpro PRIVATE -shared -fPIC -msse4 -g -ggdb -DLITE_COMPILATION)
target_link_libraries(aw2sori_transpro libori.so)
include_directories("${OPENAIR_TARGETS}/ARCH/IRIS/USERSPACE/LIB/")
include_directories("${OPENAIR_DIR}/sdr/IRIS/USERSPACE/LIB/")
set(option_HWIRISLIB_lib "-l SoapySDR")
set(HWLIB_IRIS_SOURCE
${OPENAIR_TARGETS}/ARCH/IRIS/USERSPACE/LIB/iris_lib.cpp
${OPENAIR_DIR}/sdr/IRIS/USERSPACE/LIB/iris_lib.cpp
)
add_library(oai_irisdevif MODULE ${HWLIB_IRIS_SOURCE})
target_include_directories(oai_irisdevif PRIVATE /usr/local/lib/SoapySDR/modules0.7/)
@@ -792,11 +795,11 @@ target_link_libraries(oai_irisdevif SoapySDR)
include_directories ("/usr/include/dpdk")
set(HWLIB_BENETEL_4G_SOURCE
${OPENAIR_TARGETS}/ARCH/ETHERNET/benetel/4g/benetel.c
${OPENAIR_TARGETS}/ARCH/ETHERNET/benetel/4g/shared_buffers.c
${OPENAIR_TARGETS}/ARCH/ETHERNET/benetel/4g/low.c
${OPENAIR_TARGETS}/ARCH/ETHERNET/benetel/4g/low_dpdk.c
${OPENAIR_TARGETS}/ARCH/ETHERNET/benetel/4g/dpdk_driver.c
${OPENAIR_DIR}/sdr/ETHERNET/benetel/4g/benetel.c
${OPENAIR_DIR}/sdr/ETHERNET/benetel/4g/shared_buffers.c
${OPENAIR_DIR}/sdr/ETHERNET/benetel/4g/low.c
${OPENAIR_DIR}/sdr/ETHERNET/benetel/4g/low_dpdk.c
${OPENAIR_DIR}/sdr/ETHERNET/benetel/4g/dpdk_driver.c
)
add_library(benetel_4g MODULE ${HWLIB_BENETEL_4G_SOURCE} )
@@ -810,11 +813,11 @@ TARGET_LINK_LIBRARIES(benetel_4g pthread dl rt m numa)
######################################################################
set(HWLIB_BENETEL_5G_SOURCE
${OPENAIR_TARGETS}/ARCH/ETHERNET/benetel/5g/benetel.c
${OPENAIR_TARGETS}/ARCH/ETHERNET/benetel/5g/shared_buffers.c
${OPENAIR_TARGETS}/ARCH/ETHERNET/benetel/5g/low.c
${OPENAIR_TARGETS}/ARCH/ETHERNET/benetel/5g/low_dpdk.c
${OPENAIR_TARGETS}/ARCH/ETHERNET/benetel/5g/dpdk_driver.c
${OPENAIR_DIR}/sdr/ETHERNET/benetel/5g/benetel.c
${OPENAIR_DIR}/sdr/ETHERNET/benetel/5g/shared_buffers.c
${OPENAIR_DIR}/sdr/ETHERNET/benetel/5g/low.c
${OPENAIR_DIR}/sdr/ETHERNET/benetel/5g/low_dpdk.c
${OPENAIR_DIR}/sdr/ETHERNET/benetel/5g/dpdk_driver.c
)
add_library(benetel_5g MODULE ${HWLIB_BENETEL_5G_SOURCE} )
@@ -826,7 +829,32 @@ TARGET_LINK_LIBRARIES(benetel_5g pthread dl rt m numa)
##########################################################
include_directories ("${OPENAIR_TARGETS}/ARCH/COMMON")
# LDPC offload library
##########################################################
# there is no generic way to test for T1 Offload, it simply comes with the
# shared object
if (EXISTS "/usr/local/lib64/librte_pmd_hpac_sdfec_pmd.so")
set(T1_OFFLOAD_FOUND TRUE)
else()
set(T1_OFFLOAD_FOUND FALSE)
endif()
if(T1_OFFLOAD_FOUND)
message(STATUS "T1 Offload support detected")
set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/usr/local/lib64/pkgconfig/")
pkg_search_module(LIBDPDK REQUIRED libdpdk=20.05.0)
add_library(ldpc_offload MODULE ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c)
set_target_properties(ldpc_offload PROPERTIES COMPILE_FLAGS "-DALLOW_EXPERIMENTAL_API")
target_compile_options(ldpc_offload PRIVATE ${LIBDPDK_CFLAGS})
target_link_libraries(ldpc_offload ${LIBDPDK_LDFLAGS} rte_pmd_hpac_sdfec_pmd "-Wl,-rpath /usr/local/lib64")
else()
message(STATUS "No T1 Offload support detected")
endif ()
##########################################################
include_directories ("${OPENAIR_DIR}/sdr/COMMON")
Message("DEADLINE_SCHEDULER flag is ${DEADLINE_SCHEDULER}")
Message("CPU_Affinity flag is ${CPU_AFFINITY}")
@@ -845,7 +873,6 @@ add_boolean_option(UE_EXPANSION False "enable UE_EXPANSION w
add_boolean_option(PHY_TX_THREAD False "enable UE_EXPANSION with max 256 UE")
add_boolean_option(PRE_SCD_THREAD False "enable UE_EXPANSION with max 256 UE")
add_boolean_option(UESIM_EXPANSION False "enable UESIM_EXPANSION with max 256 UE")
add_boolean_option(ITTI_SIM False "enable itti simulator")
########################
# Include order
@@ -999,7 +1026,7 @@ include_directories("${OPENAIR3_DIR}/ocp-gtpu")
include_directories("${OPENAIR3_DIR}/M3AP")
include_directories("${OPENAIR3_DIR}/MME_APP")
include_directories("${OPENAIR_DIR}/targets/COMMON")
include_directories("${OPENAIR_DIR}/targets/ARCH/COMMON")
include_directories("${OPENAIR_DIR}/sdr/COMMON")
include_directories("${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/PHY")
include_directories("${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/MAC")
include_directories("${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/RRC")
@@ -1215,6 +1242,7 @@ add_library(UTIL
${OPENAIR_DIR}/common/utils/system.c
${OPENAIR_DIR}/common/utils/backtrace.c
${OPENAIR_DIR}/common/utils/time_meas.c
${OPENAIR_DIR}/common/utils/time_stat.c
)
set(SECU_OSA_SRC
@@ -1514,7 +1542,6 @@ set(PHY_SRC
set(PHY_SRC_RU
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/if4_tools.c
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/if5_tools.c
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/drs_modulation.c
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/ulsch_demodulation.c
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
@@ -1578,6 +1605,9 @@ set(PHY_SRC_UE
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_scrambling.c
${OPENAIR1_DIR}/PHY/NR_REFSIG/scrambling_luts.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_transport_common.c
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_sch_llr_computation_common.c
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_sch_demodulation_common.c
)
set(PHY_NR_SRC
@@ -1632,17 +1662,28 @@ set(PHY_SRC_UE
${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_nr.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/pss_nr.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/sss_nr.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/pss_nr_sl.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/sss_nr_sl.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_generate_psbch_dmrs_sl.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/psbch_nr_sl.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/cic_filter_nr.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_ue_rf_helpers.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_pbch.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_psbch.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_slsch_demodulation.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_slsch_llr_computation.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_transport_common.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_slsch_coding.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_slsch_decoding.c
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_tbs_tools.c
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prach_common.c
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_sch_dmrs.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_sch_dmrs_sl.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_prach.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/dci_nr.c
@@ -1651,6 +1692,7 @@ set(PHY_SRC_UE
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/csi_rx.c
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_uci_tools_common.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_slsch_ue.c
${OPENAIR1_DIR}/PHY/NR_REFSIG/ul_ref_seq_nr.c
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_dmrs_rx.c
${OPENAIR1_DIR}/PHY/NR_REFSIG/dmrs_nr.c
@@ -1674,7 +1716,8 @@ set(PHY_SRC_UE
${OPENAIR1_DIR}/PHY/TOOLS/sqrt.c
${OPENAIR1_DIR}/PHY/TOOLS/lut.c
${OPENAIR1_DIR}/PHY/INIT/nr_init_ue.c
# ${OPENAIR1_DIR}/SIMULATION/NR_UE_PHY/unit_tests/src/pucch_uci_test.c
${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_pss_sl_test.c
${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_sss_sl_test.c
${PHY_POLARSRC}
${PHY_SMALLBLOCKSRC}
${PHY_NR_CODINGIF}
@@ -1872,6 +1915,8 @@ set(L2_NR_SRC
${NR_RRC_DIR}/rrc_gNB.c
${NR_RRC_DIR}/nr_rrc_common.c
${NR_RRC_DIR}/L2_nr_interface.c
${NR_RRC_DIR}/mac_rrc_dl_direct.c
${NR_RRC_DIR}/mac_rrc_dl_f1ap.c
${NR_RRC_DIR}/nr_rrc_config.c
${NR_RRC_DIR}/rrc_gNB_nsa.c
${NR_RRC_DIR}/rrc_gNB_internode.c
@@ -1950,6 +1995,9 @@ set (MAC_NR_SRC
${NR_GNB_MAC_DIR}/gNB_scheduler_uci.c
${NR_GNB_MAC_DIR}/gNB_scheduler_srs.c
${NR_GNB_MAC_DIR}/gNB_scheduler_RA.c
${NR_GNB_MAC_DIR}/mac_rrc_dl_handler.c
${NR_GNB_MAC_DIR}/mac_rrc_ul_direct.c
${NR_GNB_MAC_DIR}/mac_rrc_ul_f1ap.c
)
@@ -2501,15 +2549,15 @@ target_link_libraries(nrscope ${XFORMS_LIBRARIES})
add_library(rfsimulator MODULE
${OPENAIR_TARGETS}/ARCH/rfsimulator/simulator.c
${OPENAIR_TARGETS}/ARCH/rfsimulator/apply_channelmod.c
${OPENAIR_TARGETS}/ARCH/rfsimulator/new_channel_sim.c
${OPENAIR_DIR}/sdr/rfsimulator/simulator.c
${OPENAIR_DIR}/sdr/rfsimulator/apply_channelmod.c
${OPENAIR_DIR}/sdr/rfsimulator/new_channel_sim.c
${OPENAIR1_DIR}/PHY/TOOLS/signal_energy.c
)
target_link_libraries(rfsimulator SIMU_COMMON ${ATLAS_LIBRARIES})
add_library(oai_iqplayer MODULE
${OPENAIR_TARGETS}/ARCH/iqplayer/iqplayer_lib.c
${OPENAIR_DIR}/sdr/iqplayer/iqplayer_lib.c
)
set(CMAKE_MODULE_PATH "${OPENAIR_DIR}/cmake_targets/tools/MODULES" "${CMAKE_MODULE_PATH}")
@@ -2570,7 +2618,7 @@ add_executable(nfapi_test
)
add_executable(replay_node
${OPENAIR_TARGETS}/ARCH/rfsimulator/stored_node.c
${OPENAIR_DIR}/sdr/rfsimulator/stored_node.c
)
target_link_libraries (replay_node minimal_lib)
@@ -2597,8 +2645,8 @@ add_executable(lte-softmodem
${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c
${OPENAIR_TARGETS}/COMMON/create_tasks.c
${OPENAIR_TARGETS}/COMMON/create_tasks_mbms.c
${OPENAIR_TARGETS}/ARCH/COMMON/common_lib.c
${OPENAIR_TARGETS}/ARCH/COMMON/record_player.c
${OPENAIR_DIR}/sdr/COMMON/common_lib.c
${OPENAIR_DIR}/sdr/COMMON/record_player.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
${OPENAIR2_DIR}/F1AP/dummy_enb.c
@@ -2637,8 +2685,8 @@ add_executable(ocp-enb
${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c
${OPENAIR_TARGETS}/COMMON/create_tasks.c
${OPENAIR_TARGETS}/COMMON/create_tasks_mbms.c
${OPENAIR_TARGETS}/ARCH/COMMON/common_lib.c
${OPENAIR_TARGETS}/ARCH/COMMON/record_player.c
${OPENAIR_DIR}/sdr/COMMON/common_lib.c
${OPENAIR_DIR}/sdr/COMMON/record_player.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
@@ -2666,8 +2714,8 @@ target_link_libraries (ocp-enb ${LIBXML2_LIBRARIES} pthread m CONFIG_LIB rt cryp
add_executable(oairu
${OPENAIR_TARGETS}/RT/USER/lte-ru.c
${OPENAIR_TARGETS}/RT/USER/ru_control.c
${OPENAIR_TARGETS}/ARCH/COMMON/common_lib.c
${OPENAIR_TARGETS}/ARCH/COMMON/record_player.c
${OPENAIR_DIR}/sdr/COMMON/common_lib.c
${OPENAIR_DIR}/sdr/COMMON/record_player.c
${OPENAIR_DIR}/executables/softmodem-common.c
${OPENAIR_DIR}/openair1/SCHED/phy_procedures_lte_common.c
${OPENAIR_DIR}/executables/main_ru.c
@@ -2692,8 +2740,8 @@ add_executable(lte-uesoftmodem
${OPENAIR_TARGETS}/RT/USER/lte-uesoftmodem.c
${OPENAIR_DIR}/executables/softmodem-common.c
${OPENAIR_TARGETS}/COMMON/create_tasks_ue.c
${OPENAIR_TARGETS}/ARCH/COMMON/common_lib.c
${OPENAIR_TARGETS}/ARCH/COMMON/record_player.c
${OPENAIR_DIR}/sdr/COMMON/common_lib.c
${OPENAIR_DIR}/sdr/COMMON/record_player.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
@@ -2738,8 +2786,8 @@ add_executable(nr-softmodem
${OPENAIR_DIR}/executables/nr-softmodem.c
${OPENAIR_DIR}/executables/softmodem-common.c
${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c
${OPENAIR_TARGETS}/ARCH/COMMON/common_lib.c
${OPENAIR_TARGETS}/ARCH/COMMON/record_player.c
${OPENAIR_DIR}/sdr/COMMON/common_lib.c
${OPENAIR_DIR}/sdr/COMMON/record_player.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
@@ -2766,7 +2814,11 @@ target_link_libraries (nr-softmodem pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRA
target_link_libraries (nr-softmodem ${LIB_LMS_LIBRARIES})
target_link_libraries (nr-softmodem ${T_LIB})
add_dependencies( nr-softmodem ldpc_orig ldpc_optim ldpc_optim8seg ldpc )
add_dependencies( nr-softmodem ldpc_orig ldpc_optim ldpc_optim8seg ldpc)
if(T1_OFFLOAD_FOUND)
add_dependencies( nr-softmodem ldpc_offload)
endif ()
# nr-uesoftmodem is UE implementation
#######################################
@@ -2779,8 +2831,9 @@ add_executable(nr-uesoftmodem
${OPENAIR_DIR}/executables/nr-ue.c
${OPENAIR_DIR}/executables/softmodem-common.c
${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c
${OPENAIR_TARGETS}/ARCH/COMMON/common_lib.c
${OPENAIR_TARGETS}/ARCH/COMMON/record_player.c
${OPENAIR1_DIR}/SIMULATION/TOOLS/rangen_double.c
${OPENAIR_DIR}/sdr/COMMON/common_lib.c
${OPENAIR_DIR}/sdr/COMMON/record_player.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${OPENAIR2_DIR}/LAYER2/NR_MAC_COMMON/nr_mac_common.c
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
@@ -2812,6 +2865,7 @@ if (CUDA_FOUND)
add_dependencies( nr-uesoftmodem ldpc_cuda)
add_dependencies( nr-softmodem ldpc_cuda)
endif (CUDA_FOUND)
###################################"
# Addexecutables for tests
####################################
@@ -2834,7 +2888,7 @@ target_link_libraries (dlsim_tm4
add_executable(rftest
${OPENAIR_DIR}/openair1/PHY/TOOLS/calibration_test.c
${OPENAIR_DIR}/openair1/PHY/TOOLS/calibration_scope.c
${OPENAIR_TARGETS}/ARCH/COMMON/common_lib.c
${OPENAIR_DIR}/sdr/COMMON/common_lib.c
${OPENAIR_DIR}/executables/softmodem-common.c
${SHLIB_LOADER_SOURCES}
)
@@ -2904,7 +2958,28 @@ target_link_libraries(nr_pbchsim
m pthread ${ATLAS_LIBRARIES} ${T_LIB} ITTI dl
)
#PUCCH ---> Prashanth
add_executable(nr_psbchsim
${OPENAIR1_DIR}/SIMULATION/NR_PHY/psbchsim.c
${OPENAIR_DIR}/common/utils/nr/nr_common.c
${T_SOURCE}
${SHLIB_LOADER_SOURCES}
)
target_link_libraries(nr_psbchsim
-Wl,--start-group UTIL SIMU_COMMON SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group
m pthread ${ATLAS_LIBRARIES} ${T_LIB} ITTI dl
)
add_executable(nr_psschsim
${OPENAIR1_DIR}/SIMULATION/NR_PHY/psschsim.c
${OPENAIR_DIR}/common/utils/nr/nr_common.c
${T_SOURCE}
${SHLIB_LOADER_SOURCES}
)
target_link_libraries(nr_psschsim
-Wl,--start-group UTIL SIMU_COMMON SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group
m pthread ${ATLAS_LIBRARIES} ${T_LIB} ITTI dl
)
add_executable(nr_pucchsim
${OPENAIR1_DIR}/SIMULATION/NR_PHY/pucchsim.c
${OPENAIR_DIR}/common/utils/nr/nr_common.c
@@ -2975,6 +3050,11 @@ add_executable(nr_ulsim
${T_SOURCE}
${SHLIB_LOADER_SOURCES}
)
if(T1_OFFLOAD_FOUND)
add_dependencies( nr_ulsim ldpc_offload)
endif ()
target_link_libraries(nr_ulsim
-Wl,--start-group UTIL SIMU_COMMON SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_NR MAC_UE_NR MAC_NR_COMMON RRC_LIB NR_RRC_LIB CONFIG_LIB L2_LTE_NR L2_NR HASHTABLE X2AP_ENB X2AP_LIB SECU_CN NGAP_GNB NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB -lz -Wl,--end-group
m pthread ${ATLAS_LIBRARIES} ${T_LIB} ITTI ${OPENSSL_LIBRARIES} dl
@@ -3029,9 +3109,9 @@ if (${T_TRACER})
foreach(i
#all "add_executable" definitions (except tests, rb_tool, updatefw)
lte-softmodem lte-uesoftmodem nr-softmodem
nr-uesoftmodem dlsim dlsim_tm4 dlsim_tm7 nr-ittisim
nr-uesoftmodem dlsim dlsim_tm4 dlsim_tm7
ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim
syncsim nr_ulsim nr_dlsim nr_dlschsim nr_pbchsim nr_pucchsim
syncsim nr_ulsim nr_dlsim nr_dlschsim nr_pbchsim nr_psbchsim nr_pucchsim
nr_ulschsim ldpctest polartest smallblocktest cu_test du_test
#all "add_library" definitions
ITTI RRC_LIB NR_RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB X2AP_ENB M2AP_LIB M2AP_ENB M3AP_LIB M3AP_ENB F1AP_LIB F1AP
@@ -3115,50 +3195,6 @@ add_executable(rb_tool
)
target_include_directories(rb_tool PRIVATE ${OPENAIR2_DIR}/NETWORK_DRIVER/MESH/)
# nr-ittisim
###################################################
add_executable(nr-ittisim
${rrc_h}
${nr_rrc_h}
${OPENAIR2_DIR}/GNB_APP/gnb_app.c
${OPENAIR2_DIR}/GNB_APP/gnb_config.c
${OPENAIR_DIR}/executables/nr-gnb.c
${OPENAIR_DIR}/executables/nr-ru.c
${OPENAIR2_DIR}/SIMULATION/NR_RRC/itti_sim.c
${OPENAIR_DIR}/executables/softmodem-common.c
${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c
${OPENAIR_TARGETS}/ARCH/COMMON/common_lib.c
${OPENAIR_TARGETS}/ARCH/COMMON/record_player.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
${OPENAIR_DIR}/common/utils/nr/nr_common.c
${OPENAIR_DIR}/common/utils/lte/ue_power.c
${OPENAIR_DIR}/common/utils/lte/prach_utils.c
${OPENAIR2_DIR}/ENB_APP/flexran_agent_ran_api_to_fix.c
${XFORMSINTERFACE_SOURCE}
${T_SOURCE}
${SHLIB_LOADER_SOURCES}
)
target_link_libraries (nr-ittisim
-Wl,--start-group
UTIL HASHTABLE SCTP_CLIENT SCHED_LIB SCHED_RU_LIB SCHED_NR_LIB PHY_NR PHY PHY_COMMON PHY_NR_COMMON PHY_RU GTPV1U SECU_CN SECU_OSA
ITTI ${FLPT_MSG_LIB} ${FLEXRAN_AGENT_LIB} ${RAL_LIB} ${NAS_SIM_LIB} RRC_LIB NR_RRC_LIB
NGAP_LIB NGAP_GNB S1AP_LIB S1AP_ENB L2_LTE_NR L2_NR MAC_NR_COMMON NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
X2AP_LIB X2AP_ENB F1AP_LIB F1AP M2AP_LIB M2AP_ENB M3AP_LIB M3AP_ENB ${FSPT_MSG_LIB}
PHY_NR_UE SCHED_NR_UE_LIB NR_L2_UE
-Wl,--end-group z dl)
target_link_libraries (nr-ittisim ${LIBXML2_LIBRARIES})
target_link_libraries (nr-ittisim pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} sctp ${XFORMS_LIBRARIES} ${PROTOBUF_LIB} ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES} ${ATLAS_LIBRARIES})
target_link_libraries (nr-ittisim ${LIB_LMS_LIBRARIES})
target_link_libraries (nr-ittisim ${T_LIB})
add_dependencies( nr-ittisim ldpc_orig ldpc_optim ldpc_optim8seg ldpc )
# ???
####################
list(APPEND oai_nw_drv_src device.c common.c ioctl.c classifier.c tool.c)
@@ -3196,3 +3232,5 @@ ADD_CUSTOM_TARGET(oarf
include (${OPENAIR_DIR}/common/utils/telnetsrv/telnetsrv_CMakeLists.txt)
include(${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/CMakeLists.txt)
add_subdirectory(openair2)

View File

@@ -21,7 +21,6 @@ The Regents of the University of California: BSD 3-Clause Licence.
Niels Provos <provos@citi.umich.edu>: BSD 2-Clause Licence.
## Credits for source code openair3/GTPV1-U/nw-gtpv1u: ##
Amit Chawre <http://www.amitchawre.net/contact.html>: BSD 2-Clause Licence.
## Credits for source code openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c and nrLDPC_offload.h: ##
Intel Corporation SPDX-License-Identifier: BSD-3-Clause Licence

View File

@@ -0,0 +1,55 @@
# Running 5G Sidelink mode 2 tests
To launch tests, a python script `run_sl_test.py` is provided. It provides 2 test modes: one is launching RFSIM, the other is launching USRP. The configurations of different tests are specified in `sl_net_config.json`.
The python run script and configurations files are located under `~/openairinterface5g/ci-scripts`.
The following examples show three nodes tests for each mode.
## Launching in RFSIM test mode ##
Open a terminal and run the following commands.
```
cd ~/openairinterface5g/ci-scripts
```
To run rfsim test with the net 2 specified in `sl_net_config.json`, the following command is used.
```
python3 run_sl_test.py --test rfsim --net 2
```
## Launching in USRP test mode ##
The following is an example to run remote machine (nearby).
The syncref UE is launched on the current machine, and a single
nearby UE is launched on the machine specified by the `--host` and
`--user` flags. The `-r` will enable this simulation to be repeated
three times.
```
python3 run_sl_test.py --user account --host 10.1.1.68 -r 3 --test usrp
```
The following is an example to run just a Sidelink Nearby UE.
By specifying `-l` nearby, only the nearby UE will be launched
on the machine specified by the `--host` and `--user` flags.
The `-r` will enable this simulation to be repeated two times.
```
python3 run_sl_test.py -l nearby --user account --host 10.1.1.68 -r 2 --test usrp
```
To run usrp test in the net 3 specified in `sl_net_config.json`, the following command is used.
```
python3 run_sl_test.py --test usrp --net 3
```
#
# See `--help` for more information.
#
# Checking launching result #
All results will be logged into log files in home folder by default with the file name following `-l` flag.
In case of above example, the following files will be created after the test.
```
Shell> ls ~/*.log
~/syncref1.log
~/nearby2.log
~/nearby3.log
```

View File

@@ -136,16 +136,16 @@ pipeline {
}
}
}
stage ("RHEL8 Build") {
stage ("RHEL8-Cluster-Image-Builder") {
steps {
script {
triggerSlaveJob ('RAN-RHEL8-Image-Builder', 'RHEL8-Images-Build')
triggerSlaveJob ('RAN-RHEL8-Cluster-Image-Builder', 'RHEL8-Cluster-Image-Builder')
}
}
post {
always {
script {
finalizeSlaveJob('RAN-RHEL8-Image-Builder')
finalizeSlaveJob('RAN-RHEL8-Cluster-Image-Builder')
}
}
failure {
@@ -238,6 +238,26 @@ pipeline {
}
}
}
stage ("4G L2 Simulators") {
when { expression {doMandatoryTests} }
steps {
script {
triggerSlaveJob ('RAN-L2-Sim-Test-4G', 'Test-L2-Sim-Container-4G')
}
}
post {
always {
script {
finalizeSlaveJob('RAN-L2-Sim-Test-4G')
}
}
failure {
script {
currentBuild.result = 'FAILURE'
}
}
}
}
stage ("5G L2 Simulators") {
when { expression {doMandatoryTests} }
steps {
@@ -318,6 +338,27 @@ pipeline {
}
}
}
//avra is offline, re-enable once it is available
//stage ("Test T1 Offload") {
// when { expression {doMandatoryTests} }
// steps {
// script {
// triggerSlaveJob ('RAN-T1-Offload-Test', 'Test-T1-Offload')
// }
// }
// post {
// always {
// script {
// finalizeSlaveJob('RAN-T1-Offload-Test')
// }
// }
// failure {
// script {
// currentBuild.result = 'FAILURE'
// }
// }
// }
//}
}
}
stage ("Images Push to Registries") {

View File

@@ -0,0 +1,254 @@
#!/bin/groovy
/*
* 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
*/
// Location of the executor node
def pythonExecutor = params.pythonExecutor
// Location of the test XML file to be run
def testXMLFile = params.pythonTestXmlFile
def mainPythonAllXmlFiles = ""
def buildStageStatus = true
// Name of the test stage
def testStageName = params.pipelineTestStageName
// Name of the resource
def lockResources = []
if (params.LockResources != null && params.LockResources.trim().length() > 0)
params.LockResources.trim().split(",").each{lockResources += [resource: it.trim()]}
// Global Parameters. Normally they should be populated when the master job
// triggers the slave job with parameters
def eNB_Repository
def eNB_Branch
def eNB_CommitID
def eNB_AllowMergeRequestProcess = false
def eNB_TargetBranch
def directoryExistsGlob(fileNameWithGlob) {
/* if multiple directories match, will join their names and call fileExists() on that */
def dir = sh returnStdout: true, script: 'find . -name \'' + fileNameWithGlob + '\' -type d'
dir = dir.replaceAll("\n", "").trim()
echo "matching '" + fileNameWithGlob + "' found: '" + dir + "'"
if (dir == "")
return false
return fileExists(dir)
}
//-------------------------------------------------------------------------------
// Pipeline start
pipeline {
agent {
label pythonExecutor
}
options {
disableConcurrentBuilds()
timestamps()
ansiColor('xterm')
lock(extra: lockResources)
}
stages {
stage ('Verify Parameters') {
steps {
script {
echo '\u2705 \u001B[32mVerify Parameters\u001B[0m'
JOB_TIMESTAMP = sh returnStdout: true, script: 'date --utc --rfc-3339=seconds | sed -e "s#+00:00##"'
JOB_TIMESTAMP = JOB_TIMESTAMP.trim()
def allParametersPresent = true
// It is already to late to check it
if (params.pythonExecutor != null) {
echo "eNB CI executor node : ${pythonExecutor}"
}
// If not present picking a default Stage Name
if (params.pipelineTestStageName == null) {
// picking default
testStageName = 'Template Test Stage'
}
if (params.LockResources == null) {
echo "no LockResources given"
allParametersPresent = false
}
if (params.eNB_IPAddress == null) {
echo "no eNB_IPAddress given"
allParametersPresent = false
}
if (params.eNB_SourceCodePath == null) {
echo "no eNB_SourceCodePath given"
allParametersPresent = false
}
if (params.eNB_Credentials == null) {
echo "no eNB_Credentials given"
allParametersPresent = false
}
// the following 4 parameters should be pushed by the master trigger
// if not present, take the job GIT variables (used for developing)
if (params.eNB_Repository == null) {
eNB_Repository = env.GIT_URL
} else {
eNB_Repository = params.eNB_Repository
}
echo "eNB_Repository : ${eNB_Repository}"
if (params.eNB_Branch == null) {
eNB_Branch = env.GIT_BRANCH
} else {
eNB_Branch = params.eNB_Branch
}
echo "eNB_Branch : ${eNB_Branch}"
if (params.eNB_CommitID == null) {
eNB_CommitID = env.GIT_COMMIT
} else {
eNB_CommitID = params.eNB_CommitID
}
echo "eNB_CommitID : ${eNB_CommitID}"
if (params.eNB_mergeRequest != null) {
eNB_AllowMergeRequestProcess = params.eNB_mergeRequest
if (eNB_AllowMergeRequestProcess) {
if (params.eNB_TargetBranch != null) {
eNB_TargetBranch = params.eNB_TargetBranch
} else {
eNB_TargetBranch = 'develop'
}
echo "eNB_TargetBranch : ${eNB_TargetBranch}"
}
} else {
echo "no eNB_mergeRequest given - not merging develop"
}
if (params.EPC_IPAddress == null) {
echo "no EPC_IPAddress given"
allParametersPresent = false
}
if (params.EPC_Type == null) {
echo "no EPC_Type given"
allParametersPresent = false
}
if (params.EPC_SourceCodePath == null) {
echo "no EPC_SourceCodePath given"
allParametersPresent = false
}
if (params.EPC_Credentials == null) {
echo "no EPC_Credentials given"
allParametersPresent = false
}
if (params.ADB_IPAddress == null) {
echo "no ADB_IPAddress given"
allParametersPresent = false
}
if (params.ADB_Credentials == null) {
echo "no ADB_IPAddress given"
allParametersPresent = false
}
if (params.OC_Credentials == null) {
echo "no OC_Credentials given"
allParametersPresent = false
}
if (params.OC_ProjectName == null) {
echo "no OC_ProjectName given"
allParametersPresent = false
}
if (params.pythonTestXmlFile == null) {
echo "no pythonTestXmlFile given"
allParametersPresent = false
}
if (allParametersPresent) {
echo "All parameters are present"
if (eNB_AllowMergeRequestProcess) {
sh "git fetch"
sh "./ci-scripts/doGitLabMerge.sh --src-branch ${eNB_Branch} --src-commit ${eNB_CommitID} --target-branch ${eNB_TargetBranch} --target-commit latest"
} else {
sh "git fetch"
sh "git checkout -f ${eNB_CommitID}"
}
} else {
echo "Some parameters are missing"
sh "./ci-scripts/fail.sh"
}
}
}
}
stage ("Deploy and Test") {
steps {
script {
dir ('ci-scripts') {
echo "\u2705 \u001B[32m${testStageName}\u001B[0m"
String[] myXmlTestSuite = testXMLFile.split("\\r?\\n")
for (xmlFile in myXmlTestSuite) {
if (fileExists(xmlFile)) {
mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
echo "Test XML file : ${xmlFile}"
}
}
withCredentials([
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.eNB_Credentials}", usernameVariable: 'eNB_Username', passwordVariable: 'eNB_Password'],
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.EPC_Credentials}", usernameVariable: 'EPC_Username', passwordVariable: 'EPC_Password'],
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.ADB_Credentials}", usernameVariable: 'ADB_Username', passwordVariable: 'ADB_Password'],
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.OC_Credentials}", usernameVariable: 'OC_Username', passwordVariable: 'OC_Password']
]) {
sh "python3 main.py --mode=InitiateHtml --ranRepository=${eNB_Repository} --ranBranch=${eNB_Branch} --ranCommitID=${eNB_CommitID} --ranAllowMerge=${eNB_AllowMergeRequestProcess} --ranTargetBranch=${eNB_TargetBranch} --ADBIPAddress=${params.ADB_IPAddress} --ADBUserName=${ADB_Username} --ADBPassword=${ADB_Password} ${mainPythonAllXmlFiles}"
for (xmlFile in myXmlTestSuite) {
if (fileExists(xmlFile)) {
try {
sh "python3 main.py --mode=TesteNB --eNBIPAddress=${params.eNB_IPAddress} --ranRepository=${eNB_Repository} --ranBranch=${eNB_Branch} --ranCommitID=${eNB_CommitID} --ranAllowMerge=${eNB_AllowMergeRequestProcess} --ranTargetBranch=${eNB_TargetBranch} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password} --eNBSourceCodePath=${params.eNB_SourceCodePath} --EPCIPAddress=${params.EPC_IPAddress} --EPCType=${params.EPC_Type} --EPCUserName=${EPC_Username} --EPCPassword=${EPC_Password} --EPCSourceCodePath=${params.EPC_SourceCodePath} --ADBIPAddress=${params.ADB_IPAddress} --ADBUserName=${ADB_Username} --ADBPassword=${ADB_Password} --XMLTestFile=${xmlFile} --OCUserName=${OC_Username} --OCPassword=${OC_Password} --OCProjectName=${OC_ProjectName}"
} catch (Exception e) {
currentBuild.result = 'FAILURE'
buildStageStatus = false
}
}
}
sh "python3 main.py --mode=FinalizeHtml --finalStatus=${buildStageStatus} --eNBIPAddress=${params.eNB_IPAddress} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password}"
}
}
}
}
}
stage ("Log Collection") {
steps {
script {
dir ('ci-scripts') {
if (directoryExistsGlob("build_log_*")) {
sh "zip -r -qq build_log_${env.BUILD_ID}.zip build_log_*/*"
sh "rm -rf build_log_*/"
archiveArtifacts artifacts: "build_log_${env.BUILD_ID}.zip"
}
if (directoryExistsGlob("test_log_*")) {
sh "zip -r -qq test_log_${env.BUILD_ID}.zip test_log_*/*"
sh "rm -rf test_log_*/"
archiveArtifacts artifacts: "test_log_${env.BUILD_ID}.zip"
}
if (fileExists("test_results.html")) {
sh "mv test_results.html test_results-${env.JOB_NAME}.html"
sh "sed -i -e 's#TEMPLATE_JOB_NAME#${JOB_NAME}#' -e 's@build #TEMPLATE_BUILD_ID@build #${BUILD_ID}@' -e 's#Build-ID: TEMPLATE_BUILD_ID#Build-ID: <a href=\"${BUILD_URL}\">${BUILD_ID}</a>#' -e 's#TEMPLATE_STAGE_NAME#${testStageName}#' test_results-${JOB_NAME}.html"
archiveArtifacts artifacts: "test_results-${env.JOB_NAME}.html"
}
}
}
}
}
}
}

View File

@@ -111,17 +111,7 @@ pipeline {
sh "./ci-scripts/doGitLabMerge.sh --src-branch ${env.gitlabSourceBranch} --src-commit ${env.gitlabMergeRequestLastCommit} --target-branch ${env.gitlabTargetBranch} --target-commit ${GIT_COMMIT}"
sh "zip -r -qq localZip.zip ."
// Running astyle options on the list of modified files by the merge request
// For the moment, there is no fail criteria. Just a notification of number of files that do not follow
sh "./ci-scripts/checkCodingFormattingRules.sh --src-branch ${env.gitlabSourceBranch} --target-branch ${env.gitlabTargetBranch}"
def res=readFile('./oai_rules_result.txt').trim();
if ("0".equals(res)) {
def message = "OAI " + JOB_NAME + " build (" + BUILD_ID + "): All Changed files in Merge Request follow OAI Formatting Rules"
addGitLabMRComment comment: message
} else {
def message = "OAI " + JOB_NAME + " build (" + BUILD_ID + "): Some Changed files in Merge Request DO NOT follow OAI Formatting Rules"
addGitLabMRComment comment: message
}
// here was an astyle formatting check, with corresponding messages. The same could be done with clang-format
} else {
echo "Git Branch is ${GIT_BRANCH}"
echo "Git Commit is ${GIT_COMMIT}"
@@ -132,9 +122,6 @@ pipeline {
sh "git log -n1 --pretty=format:\"%s\" > .git/CI_COMMIT_MSG"
sh "zip -r -qq localZip.zip ."
// Running astyle options on all C/H files in the repository
// For the moment, there is no fail criteria. Just a notification of number of files that do not follow
sh "./ci-scripts/checkCodingFormattingRules.sh"
}
}
}
@@ -187,7 +174,7 @@ pipeline {
}
}
}
}
}
stage ("Variant Builds") {
parallel {
@@ -349,165 +336,6 @@ pipeline {
}
}
}
stage ("Test MONOLITHIC - FDD - Band 7 - B210") {
when {
expression {doFullTestsuite}
}
steps {
script {
triggerSlaveJob ('eNB-CI-FDD-Band7-B210', 'Test-Mono-FDD-Band7')
}
}
post {
always {
script {
finalizeSlaveJob('eNB-CI-FDD-Band7-B210')
}
}
failure {
script {
currentBuild.result = 'FAILURE'
}
}
}
}
stage ("Test MONOLITHIC - TDD - Band 40 - B210") {
when {
expression {doFullTestsuite}
}
steps {
script {
triggerSlaveJob ('eNB-CI-TDD-Band40-B210', 'Test-Mono-TDD-Band40')
}
}
post {
always {
script {
finalizeSlaveJob('eNB-CI-TDD-Band40-B210')
}
}
failure {
script {
currentBuild.result = 'FAILURE'
}
}
}
}
stage ("Test IF4p5 - FDD - Band 7 - B210") {
when {
expression {doFullTestsuite}
}
steps {
script {
sh "sleep 60"
triggerSlaveJob ('eNB-CI-IF4p5-FDD-Band7-B210', 'Test-IF4p5-FDD-Band7')
}
}
post {
always {
script {
finalizeSlaveJob('eNB-CI-IF4p5-FDD-Band7-B210')
}
}
failure {
script {
currentBuild.result = 'FAILURE'
}
}
}
}
stage ("Test F1 - FDD - Band 7 - B210") {
when {
expression {doFullTestsuite}
}
steps {
script {
sh "sleep 60"
triggerSlaveJob ('eNB-CI-F1-FDD-Band7-B210', 'Test-F1-FDD-Band7')
}
}
post {
always {
script {
finalizeSlaveJob('eNB-CI-F1-FDD-Band7-B210')
}
}
failure {
script {
currentBuild.result = 'FAILURE'
}
}
}
}
stage ("Test IF4p5 - TDD - Band 40 - B210") {
when {
expression {doFullTestsuite}
}
steps {
script {
sh "sleep 60"
triggerSlaveJob ('eNB-CI-IF4p5-TDD-Band40-B210', 'Test-IF4p5-TDD-Band40')
}
}
post {
always {
script {
finalizeSlaveJob('eNB-CI-IF4p5-TDD-Band40-B210')
}
}
failure {
script {
currentBuild.result = 'FAILURE'
}
}
}
}
stage ("Test OAI UE - FDD - Band 20 - B200") {
when {
expression {doFullTestsuite}
}
steps {
script {
triggerSlaveJobNoGitLab ('UE-CI-FDD-Band20-B200')
}
}
post {
always {
script {
finalizeSlaveJob('UE-CI-FDD-Band20-B200')
}
}
failure {
script {
currentBuild.result = 'FAILURE'
}
}
}
}
stage ("Test OAI UE - OAI eNB - FDD - Band 7 - B200") {
when {
expression {doFullTestsuite}
}
steps {
script {
// Delayed trigger on slave job, so it is always the last one to run
sh "sleep 240"
triggerSlaveJob ('eNB-UE-CI-MONO-FDD-Band7-B200', 'Test-eNB-OAI-UE-FDD-Band7')
}
}
post {
always {
script {
finalizeSlaveJob('eNB-UE-CI-MONO-FDD-Band7-B200')
}
}
failure {
script {
currentBuild.result = 'FAILURE'
}
}
}
}
}
post {
always {
@@ -583,68 +411,3 @@ OAI CI Team''',
}
}
}
// ---- Slave Job functions
def triggerSlaveJob (jobName, gitlabStatusName) {
// Workaround for the "cancelled" GitLab pipeline notification
// The slave job is triggered with the propagate false so the following commands are executed
// Its status is now PASS/SUCCESS from a stage pipeline point of view
// localStatus variable MUST be analyzed to properly assess the status
localStatus = build job: jobName,
parameters: [
string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)),
string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)),
booleanParam(name: 'eNB_mergeRequest', value: "MERGE".equals(env.gitlabActionType)),
string(name: 'eNB_TargetBranch', value: String.valueOf(env.gitlabTargetBranch))
], propagate: false
localResult = localStatus.getResult()
echo "${jobName} Slave Job status is ${localResult}"
gitlabCommitStatus(name: gitlabStatusName) {
if (localStatus.resultIsBetterOrEqualTo('SUCCESS')) {
echo "${jobName} Slave Job is OK"
} else {
echo "${jobName} Slave Job is KO"
sh "ci-scripts/fail.sh"
}
}
}
def triggerSlaveJobNoGitLab (jobName) {
// Workaround for the "cancelled" GitLab pipeline notification
// The slave job is triggered with the propagate false so the following commands are executed
// Its status is now PASS/SUCCESS from a stage pipeline point of view
// localStatus variable MUST be analyzed to properly assess the status
localStatus = build job: jobName,
parameters: [
string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)),
string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)),
booleanParam(name: 'eNB_mergeRequest', value: "MERGE".equals(env.gitlabActionType)),
string(name: 'eNB_TargetBranch', value: String.valueOf(env.gitlabTargetBranch))
], propagate: false
localResult = localStatus.getResult()
echo "${jobName} Slave Job status is ${localResult}"
if (localStatus.resultIsBetterOrEqualTo('SUCCESS')) {
echo "${jobName} Slave Job is OK"
} else {
echo "${jobName} Slave Job is KO"
sh "ci-scripts/fail.sh"
}
}
def finalizeSlaveJob(jobName) {
// In case of any non-success, we are retrieving the HTML report of the last completed
// slave job. The only drop-back is that we may retrieve the HTML report of a previous build
fileName = "test_results-${jobName}.html"
if (!fileExists(fileName)) {
copyArtifacts(projectName: jobName,
filter: 'test_results*.html',
selector: lastCompleted())
if (fileExists(fileName)) {
sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' ${fileName}"
archiveArtifacts artifacts: fileName
}
}
}

View File

@@ -41,7 +41,7 @@ import constants as CONST
#-----------------------------------------------------------
def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM,CLUSTER):
py_param_file_present = False
@@ -82,6 +82,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
CONTAINERS.ranRepository=matchReg.group(1)
SCA.ranRepository=matchReg.group(1)
PHYSIM.ranRepository=matchReg.group(1)
CLUSTER.ranRepository=matchReg.group(1)
elif re.match('^\-\-eNB_AllowMerge=(.+)$|^\-\-ranAllowMerge=(.+)$', myArgv, re.IGNORECASE):
if re.match('^\-\-eNB_AllowMerge=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNB_AllowMerge=(.+)$', myArgv, re.IGNORECASE)
@@ -96,6 +97,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
CONTAINERS.ranAllowMerge=True
SCA.ranAllowMerge=True
PHYSIM.ranAllowMerge=True
CLUSTER.ranAllowMerge=True
elif re.match('^\-\-eNBBranch=(.+)$|^\-\-ranBranch=(.+)$', myArgv, re.IGNORECASE):
if re.match('^\-\-eNBBranch=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNBBranch=(.+)$', myArgv, re.IGNORECASE)
@@ -108,6 +110,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
CONTAINERS.ranBranch=matchReg.group(1)
SCA.ranBranch=matchReg.group(1)
PHYSIM.ranBranch=matchReg.group(1)
CLUSTER.ranBranch=matchReg.group(1)
elif re.match('^\-\-eNBCommitID=(.*)$|^\-\-ranCommitID=(.*)$', myArgv, re.IGNORECASE):
if re.match('^\-\-eNBCommitID=(.*)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNBCommitID=(.*)$', myArgv, re.IGNORECASE)
@@ -120,6 +123,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
CONTAINERS.ranCommitID=matchReg.group(1)
SCA.ranCommitID=matchReg.group(1)
PHYSIM.ranCommitID=matchReg.group(1)
CLUSTER.ranCommitID=matchReg.group(1)
elif re.match('^\-\-eNBTargetBranch=(.*)$|^\-\-ranTargetBranch=(.*)$', myArgv, re.IGNORECASE):
if re.match('^\-\-eNBTargetBranch=(.*)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNBTargetBranch=(.*)$', myArgv, re.IGNORECASE)
@@ -132,6 +136,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
CONTAINERS.ranTargetBranch=matchReg.group(1)
SCA.ranTargetBranch=matchReg.group(1)
PHYSIM.ranTargetBranch=matchReg.group(1)
CLUSTER.ranTargetBranch=matchReg.group(1)
elif re.match('^\-\-eNBIPAddress=(.+)$|^\-\-eNB[1-2]IPAddress=(.+)$', myArgv, re.IGNORECASE):
if re.match('^\-\-eNBIPAddress=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNBIPAddress=(.+)$', myArgv, re.IGNORECASE)
@@ -140,6 +145,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
CONTAINERS.eNBIPAddress=matchReg.group(1)
SCA.eNBIPAddress=matchReg.group(1)
PHYSIM.eNBIPAddress=matchReg.group(1)
CLUSTER.eNBIPAddress=matchReg.group(1)
elif re.match('^\-\-eNB1IPAddress=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNB1IPAddress=(.+)$', myArgv, re.IGNORECASE)
RAN.eNB1IPAddress=matchReg.group(1)
@@ -156,6 +162,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
CONTAINERS.eNBUserName=matchReg.group(1)
SCA.eNBUserName=matchReg.group(1)
PHYSIM.eNBUserName=matchReg.group(1)
CLUSTER.eNBUserName=matchReg.group(1)
elif re.match('^\-\-eNB1UserName=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNB1UserName=(.+)$', myArgv, re.IGNORECASE)
RAN.eNB1UserName=matchReg.group(1)
@@ -172,6 +179,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
CONTAINERS.eNBPassword=matchReg.group(1)
SCA.eNBPassword=matchReg.group(1)
PHYSIM.eNBPassword=matchReg.group(1)
CLUSTER.eNBPassword=matchReg.group(1)
elif re.match('^\-\-eNB1Password=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNB1Password=(.+)$', myArgv, re.IGNORECASE)
RAN.eNB1Password=matchReg.group(1)
@@ -188,6 +196,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
CONTAINERS.eNBSourceCodePath=matchReg.group(1)
SCA.eNBSourceCodePath=matchReg.group(1)
PHYSIM.eNBSourceCodePath=matchReg.group(1)
CLUSTER.eNBSourceCodePath=matchReg.group(1)
elif re.match('^\-\-eNB1SourceCodePath=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNB1SourceCodePath=(.+)$', myArgv, re.IGNORECASE)
RAN.eNB1SourceCodePath=matchReg.group(1)
@@ -260,12 +269,21 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
elif re.match('^\-\-OCUserName=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-OCUserName=(.+)$', myArgv, re.IGNORECASE)
PHYSIM.OCUserName = matchReg.group(1)
CLUSTER.OCUserName = matchReg.group(1)
elif re.match('^\-\-OCPassword=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-OCPassword=(.+)$', myArgv, re.IGNORECASE)
PHYSIM.OCPassword = matchReg.group(1)
CLUSTER.OCPassword = matchReg.group(1)
elif re.match('^\-\-OCProjectName=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-OCProjectName=(.+)$', myArgv, re.IGNORECASE)
PHYSIM.OCProjectName = matchReg.group(1)
CLUSTER.OCProjectName = matchReg.group(1)
elif re.match('^\-\-OCUrl=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-OCUrl=(.+)$', myArgv, re.IGNORECASE)
CLUSTER.OCUrl = matchReg.group(1)
elif re.match('^\-\-OCRegistry=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-OCRegistry=(.+)$', myArgv, re.IGNORECASE)
CLUSTER.OCRegistry = matchReg.group(1)
elif re.match('^\-\-BuildId=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-BuildId=(.+)$', myArgv, re.IGNORECASE)
RAN.BuildId = matchReg.group(1)

View File

@@ -1,26 +0,0 @@
# OAI is using a style that is similar to the Google style
--style=google
# long options can be written without the preceding '--'
# Convert tabs to spaces
convert-tabs
# Indentation is 2 spaces
indent=spaces=2
# Indent 'switch' blocks so that the 'case X:' statements are indented in the switch block.
indent-switches
# Indent preprocessor blocks at bracket level 0.
indent-preproc-block
# Indent multi-line preprocessor #define statements.
indent-preproc-define
# Indent C++ comments beginning in column one.
indent-col1-comments
# Pad empty lines around header blocks
break-blocks
delete-empty-lines
# Attach a pointer or reference operator (*, &, or ^) to the variable name (right)
align-pointer=name
# The code line length is 200 characters/columns (this is the maximum allowed by astyle)
max-code-length=200
# If the line contains logical conditionals they will be placed first on the new line.
break-after-logical
# Force use of the linux end of line
lineend=linux

View File

@@ -24,8 +24,6 @@ function usage {
echo "OAI Coding / Formatting Guideline Check script"
echo " Original Author: Raphael Defosseux"
echo ""
echo " Requirement: astyle shall be installed"
echo ""
echo " By default (no options) the complete repository will be checked"
echo " In case of merge request, provided source and target branch,"
echo " the script will check only the modified files"
@@ -57,11 +55,10 @@ fi
if [ $# -eq 0 ]
then
echo " ---- Checking the whole repository ----"
echo ""
NB_FILES_TO_FORMAT=`astyle --dry-run --options=ci-scripts/astyle-options.txt --recursive --exclude=ci-scripts --exclude=cmake_targets *.c *.h | grep -c Formatted || true`
echo "Nb Files that do NOT follow OAI rules: $NB_FILES_TO_FORMAT"
echo $NB_FILES_TO_FORMAT > ./oai_rules_result.txt
# in this file we previously had a list of files that were not properly
# formatted. At the time of this MR, the Jenkinsfile expects this file, so
# we simply produce an empty one
touch ./oai_rules_result.txt
# Testing Circular Dependencies protection
awk '/#[ \t]*ifndef/ { gsub("^.*ifndef *",""); if (names[$1]!="") print "files with same {define ", FILENAME, names[$1]; names[$1]=FILENAME } /#[ \t]*define/ { gsub("^.*define *",""); if(names[$1]!=FILENAME) print "error in declaration", FILENAME, $1, names[$1]; nextfile }' `find openair* common targets executables -name *.h |grep -v LFDS` > header-files-w-incorrect-define.txt
@@ -77,7 +74,7 @@ then
IS_NFAPI=`echo $FILE | egrep -c "nfapi/open-nFAPI|nfapi/oai_integration/vendor_ext" || true`
IS_OAI_LICENCE_PRESENT=`egrep -c "OAI Public License" $FILE || true`
IS_BSD_LICENCE_PRESENT=`egrep -c "the terms of the BSD Licence|License-Identifier: BSD-2-Clause" $FILE || true`
IS_EXCEPTION=`echo $FILE | egrep -c "common/utils/collection/tree.h|common/utils/collection/queue.h|common/utils/itti_analyzer/common/queue.h|openair3/UTILS/tree.h|openair3/UTILS/queue.h|openair3/GTPV1-U/nw-gtpv1u|openair2/UTIL/OPT/ws_|openair2/UTIL/OPT/packet-rohc.h|openair3/NAS/COMMON/milenage.h|openair1/PHY/CODING/crc|openair1/PHY/CODING/types.h" || true`
IS_EXCEPTION=`echo $FILE | egrep -c "common/utils/collection/tree.h|common/utils/collection/queue.h|openair2/UTIL/OPT/packet-rohc.h|openair3/NAS/COMMON/milenage.h|openair1/PHY/CODING/crc.h|openair1/PHY/CODING/crcext.h|openair1/PHY/CODING/types.h|openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c|openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_offload.h" || true`
if [ $IS_OAI_LICENCE_PRESENT -eq 0 ] && [ $IS_BSD_LICENCE_PRESENT -eq 0 ]
then
if [ $IS_NFAPI -eq 0 ] && [ $IS_EXCEPTION -eq 0 ]
@@ -151,10 +148,6 @@ echo ""
# Retrieve the list of modified files since the latest develop commit
MODIFIED_FILES=`git log $TARGET_INIT_COMMIT..$MERGE_COMMMIT --oneline --name-status | egrep "^M|^A" | sed -e "s@^M\t*@@" -e "s@^A\t*@@" | sort | uniq`
NB_TO_FORMAT=0
if [ -f oai_rules_result_list.txt ]
then
rm -f oai_rules_result_list.txt
fi
if [ -f header-files-w-incorrect-define.txt ]
then
rm -f header-files-w-incorrect-define.txt
@@ -178,13 +171,6 @@ do
EXT="${filename##*.}"
if [ $EXT = "c" ] || [ $EXT = "h" ] || [ $EXT = "cpp" ] || [ $EXT = "hpp" ]
then
TO_FORMAT=`astyle --dry-run --options=ci-scripts/astyle-options.txt $FULLFILE | grep -c Formatted || true`
NB_TO_FORMAT=$((NB_TO_FORMAT + TO_FORMAT))
if [ $TO_FORMAT -ne 0 ]
then
echo $FULLFILE
echo $FULLFILE >> ./oai_rules_result_list.txt
fi
# Testing if explicit GNU GPL license banner
GNU_EXCEPTION=`echo $FULLFILE | egrep -c "openair3/NAS/COMMON/milenage.h" || true`
if [ $GNU_EXCEPTION -eq 0 ]
@@ -198,7 +184,7 @@ do
IS_NFAPI=`echo $FULLFILE | egrep -c "nfapi/open-nFAPI|nfapi/oai_integration/vendor_ext" || true`
IS_OAI_LICENCE_PRESENT=`egrep -c "OAI Public License" $FULLFILE || true`
IS_BSD_LICENCE_PRESENT=`egrep -c "the terms of the BSD Licence|License-Identifier: BSD-2-Clause" $FULLFILE || true`
IS_EXCEPTION=`echo $FULLFILE | egrep -c "common/utils/collection/tree.h|common/utils/collection/queue.h|common/utils/itti_analyzer/common/queue.h|openair3/UTILS/tree.h|openair3/UTILS/queue.h|openair3/GTPV1-U/nw-gtpv1u|openair2/UTIL/OPT/ws_|openair2/UTIL/OPT/packet-rohc.h|openair3/NAS/COMMON/milenage.h|openair1/PHY/CODING/crc|openair1/PHY/CODING/types.h" || true`
IS_EXCEPTION=`echo $FULLFILE | egrep -c "common/utils/collection/tree.h|common/utils/collection/queue.h|openair2/UTIL/OPT/packet-rohc.h|openair3/NAS/COMMON/milenage.h|openair1/PHY/CODING/crc.h|openair1/PHY/CODING/crcext.h|openair1/PHY/CODING/types.h|openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c|openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_offload.h" || true`
if [ $IS_OAI_LICENCE_PRESENT -eq 0 ] && [ $IS_BSD_LICENCE_PRESENT -eq 0 ]
then
if [ $IS_NFAPI -eq 0 ] && [ $IS_EXCEPTION -eq 0 ]
@@ -215,9 +201,10 @@ do
fi
done
rm -f header-files-w-incorrect-define-tmp.txt
echo ""
echo " ----------------------------------------------------------"
echo "Nb Files that do NOT follow OAI rules: $NB_TO_FORMAT"
echo $NB_TO_FORMAT > ./oai_rules_result.txt
# in this script we previously produced a list of files that were not properly
# formatted. At the time of this MR, the Jenkinsfile expects this file, so
# we simply produce an empty file
touch ./oai_rules_result.txt
exit 0

View File

@@ -50,7 +50,7 @@ amarisoft_ue_1:
WakeupScript : none
DetachScript : none
#end
Cmd : /root/NV17-12-21/ue/lteue
Cmd : /root/NV18-06-2022/ue/lteue
Config : /root/NV17-12-21/ue/config/oaicicd-ue-Ping-SATest.cfg
Duration : 60
Ping : /tmp/test_ue1.log
@@ -71,7 +71,7 @@ amarisoft_ue_2:
WakeupScript : none
DetachScript : none
#end
Cmd : /root/NV17-12-21/ue/lteue
Cmd : /root/NV18-06-2022/ue/lteue
Config : /root/NV17-12-21/ue/config/xxxxxxx.cfg #to be updated for an other scenario
Duration : 60
Ping :

377
ci-scripts/cls_cluster.py Normal file
View File

@@ -0,0 +1,377 @@
#/*
# * 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
# */
#---------------------------------------------------------------------
# Python for CI of OAI-eNB + COTS-UE
#
# Required Python Version
# Python 3.x
#
# Required Python Package
# pexpect
#---------------------------------------------------------------------
#-----------------------------------------------------------
# Import
#-----------------------------------------------------------
import logging
import sshconnection as SSH
import cls_oai_html
#import os
import re
import time
#import subprocess
import sys
import constants as CONST
import helpreadme as HELP
import cls_containerize
class Cluster:
def __init__(self):
self.eNBIPAddress = ""
self.eNBSourceCodePath = ""
self.forcedWorkspaceCleanup = False
self.OCUserName = ""
self.OCPassword = ""
self.OCProjectName = ""
self.OCUrl = "https://api.oai.cs.eurecom.fr:6443"
self.OCRegistry = "default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/"
self.ranRepository = ""
self.ranBranch = ""
self.ranCommitID = ""
self.ranAllowMerge = False
self.ranTargetBranch = ""
def _recreate_entitlements(self, sshSession):
# recreating entitlements, don't care if deletion fails
sshSession.command('oc delete secret etc-pki-entitlement', '\$', 5)
if re.search(r"not found", sshSession.getBefore()):
logging.warning("no secrets etc-pki-entitlement found, recreating")
sshSession.command('ls /etc/pki/entitlement/???????????????????.pem | tail -1', '\$', 5, silent=True)
regres1 = re.search(r"/etc/pki/entitlement/[0-9]+.pem", sshSession.getBefore())
sshSession.command('ls /etc/pki/entitlement/???????????????????-key.pem | tail -1', '\$', 5, silent=True)
regres2 = re.search(r"/etc/pki/entitlement/[0-9]+-key.pem", sshSession.getBefore())
if regres1 is None or regres2 is None:
logging.error("could not find entitlements")
return false
file1 = regres1.group(0)
file2 = regres2.group(0)
sshSession.command(f'oc create secret generic etc-pki-entitlement --from-file {file1} --from-file {file2}', '\$', 5)
regres = re.search(r"secret/etc-pki-entitlement created", sshSession.getBefore())
if regres is None:
logging.error("could not create secret/etc-pki-entitlement")
return False
return True
def _recreate_bc(self, sshSession, name, newTag, filename):
self._retag_image_statement(sshSession, name, name, newTag, filename)
sshSession.command(f'oc delete -f {filename}', '\$', 5)
sshSession.command(f'oc create -f {filename}', '\$', 5)
before = sshSession.getBefore()
if re.search('buildconfig.build.openshift.io/[a-zA-Z\-0-9]+ created', before) is not None:
return True
logging.error('error while creating buildconfig: ' + sshSession.getBefore())
return False
def _recreate_is_tag(self, sshSession, name, newTag, filename):
sshSession.command(f'oc describe is {name}', '\$', 5)
if sshSession.getBefore().count('NotFound') > 0:
sshSession.command(f'oc create -f {filename}', '\$', 5)
before = sshSession.getBefore()
if re.search(f'imagestream.image.openshift.io/{name} created', before) is None:
logging.error('error while creating imagestream: ' + sshSession.getBefore())
return False
else:
logging.debug(f'-> imagestream {name} found')
image = f'{name}:{newTag}'
sshSession.command(f'oc delete istag {image}', '\$', 5) # we don't care if this fails, e.g., if it is missing
sshSession.command(f'oc create istag {image}', '\$', 5)
before = sshSession.getBefore()
if re.search(f'imagestreamtag.image.openshift.io/{image} created', before) is not None:
return True
logging.error('error while creating imagestreamtag: ' + sshSession.getBefore())
return False
def _start_build(self, sshSession, name):
# will return "immediately" but build runs in background
# if multiple builds are started at the same time, this can take some time, however
ret = sshSession.command(f'oc start-build {name} --from-file={self.eNBSourceCodePath}', '\$', 300)
before = sshSession.getBefore()
regres = re.search(r'build.build.openshift.io/(?P<jobname>[a-zA-Z0-9\-]+) started', str(before))
if ret != 0 or before.count('Uploading finished') != 1 or regres is None:
logging.error("error during oc start-build: " + sshSession.getBefore())
self._delete_pod(sshSession, name)
return None
return regres.group('jobname') + '-build'
def _delete_pod(self, sshSession, shortName):
sshSession.command(f"oc get pods | grep {shortName}", '\$', 5)
regres = re.search(rf'{shortName}-[0-9]+-build', sshSession.getBefore())
if regres is not None:
sshSession.command(f"oc delete pod {regres.group(0)}", '\$', 5)
else:
logging.warning(f"no pod found with name {shortName}")
def _wait_build_end(self, sshSession, jobs, timeout_sec, check_interval_sec = 5):
logging.debug(f"waiting for jobs {jobs} to finish building")
while timeout_sec > 0:
# check status
for j in jobs:
sshSession.command(f'oc get pods | grep {j}', '\$', 10, silent = True)
if sshSession.getBefore().count('Completed') > 0: jobs.remove(j)
if sshSession.getBefore().count('Error') > 0:
logging.error(f'error for job {j}: ' + sshSession.getBefore())
return False
if jobs == []:
logging.debug('all jobs completed')
return True
time.sleep(check_interval_sec)
timeout_sec -= check_interval_sec
logging.error(f"timeout while waiting for end of build of {jobs}")
return False
def _retag_image_statement(self, sshSession, oldImage, newImage, newTag, filename):
sshSession.command(f'sed -i -e "s#{oldImage}:latest#{newImage}:{newTag}#" {filename}', '\$', 5)
def _get_image_size(self, sshSession, image, tag):
# get the SHA of the image we built using the image name and its tag
sshSession.command(f'oc describe is {image} | grep -A4 {tag}', '\$', 5)
result = re.search(f'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/(?P<imageSha>{image}@sha256:[a-f0-9]+)', sshSession.getBefore())
if result is None:
return -1
imageSha = result.group("imageSha")
# retrieve the size
sshSession.command(f'oc get -o json isimage {imageSha} | jq -Mc "{{dockerImageSize: .image.dockerImageMetadata.Size}}"', '\$', 5)
result = re.search('{"dockerImageSize":(?P<size>[0-9]+)}', str(sshSession.getBefore()))
if result is None:
return -1
return int(result.group("size"))
def _deploy_pod(self, sshSession, filename, timeout = 30):
sshSession.command(f'oc create -f {filename}', '\$', 10)
result = re.search(f'pod/(?P<pod>[a-zA-Z0-9_\-]+) created', sshSession.getBefore())
if result is None:
logging.error(f'could not deploy pod: {sshSession.getBefore()}')
return None
pod = result.group("pod")
logging.debug(f'checking if pod {pod} is in Running state')
while timeout > 0:
sshSession.command(f'oc get pod {pod} -o json | jq -Mc .status.phase', '\$', 5, silent=True)
if re.search('"Running"', sshSession.getBefore()) is not None: return pod
timeout -= 1
time.sleep(1)
logging.error(f'pod {pod} did not reach Running state')
self._undeploy_pod(sshSession, filename)
return None
def _undeploy_pod(self, sshSession, filename):
# to save time we start this in the background and trust that oc stops correctly
sshSession.command(f'oc delete -f {filename} &', '\$', 5)
def BuildClusterImage(self, HTML):
if self.ranRepository == '' or self.ranBranch == '' or self.ranCommitID == '':
HELP.GenericHelp(CONST.Version)
sys.exit(f'Insufficient Parameter: ranRepository {self.ranRepository} ranBranch {ranBranch} ranCommitID {self.ranCommitID}')
lIpAddr = self.eNBIPAddress
lSourcePath = self.eNBSourceCodePath
if lIpAddr == '' or lSourcePath == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter: no SSH Credentials')
ocUserName = self.OCUserName
ocPassword = self.OCPassword
ocProjectName = self.OCProjectName
if ocUserName == '' or ocPassword == '' or ocProjectName == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter: no OC Credentials')
if self.OCRegistry.startswith("http") and not self.OCRegistry.endswith("/"):
sys.exit(f'ocRegistry {self.OCRegistry} should not start with http:// or https:// and end on a slash /')
logging.debug(f'Building on cluster triggered from server: {lIpAddr}')
mySSH = SSH.SSHConnection()
mySSH.open(lIpAddr, "oaicicd", "SHOULD NOT BE NECESSARY")
self.testCase_id = HTML.testCase_id
# Workaround for some servers, we need to erase completely the workspace
if self.forcedWorkspaceCleanup:
mySSH.command(f'rm -Rf {lSourcePath}', '\$', 15)
cls_containerize.CreateWorkspace(mySSH, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
# we don't necessarily need a forced workspace cleanup, but in
# order to reduce the amount of data send to OpenShift, we
# manually delete all generated files in the workspace
mySSH.command(f'rm -rf {lSourcePath}/cmake_targets/ran_build', '\$', 30);
baseTag = 'develop'
forceBaseImageBuild = False
imageTag = 'develop'
if self.ranAllowMerge: # merging MR branch into develop -> temporary image
imageTag = 'ci-temp'
if self.ranTargetBranch == 'develop':
mySSH.command(f'git diff HEAD..origin/develop -- cmake_targets/build_oai cmake_targets/tools/build_helper docker/Dockerfile.base.rhel8.2 | grep --colour=never -i INDEX', '\$', 5)
result = re.search('index', mySSH.getBefore())
if result is not None:
forceBaseImageBuild = True
baseTag = 'ci-temp'
else:
forceBaseImageBuild = True
# logging to OC Cluster and then switch to corresponding project
mySSH.command(f'oc login -u {ocUserName} -p {ocPassword} --server {self.OCUrl}', '\$', 31)
if mySSH.getBefore().count('Login successful.') == 0:
logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m')
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL)
return False
mySSH.command(f'oc project {ocProjectName}', '\$', 30)
if mySSH.getBefore().count(f'Already on project "{ocProjectName}"') == 0 and mySSH.getBefore().count(f'Now using project "{self.OCProjectName}"') == 0:
logging.error(f'\u001B[1mUnable to access OC project {ocProjectName}\u001B[0m')
mySSH.command('oc logout', '\$', 30)
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_PROJECT_FAIL)
return False
self._recreate_entitlements(mySSH)
status = True # flag to abandon compiling if any image fails
attemptedImages = []
if forceBaseImageBuild:
self._recreate_is_tag(mySSH, 'ran-base', baseTag, 'openshift/ran-base-is.yaml')
self._recreate_bc(mySSH, 'ran-base', baseTag, 'openshift/ran-base-bc.yaml')
ranbase_job = self._start_build(mySSH, 'ran-base')
attemptedImages += ['ran-base']
status = ranbase_job is not None and self._wait_build_end(mySSH, [ranbase_job], 600)
if not status: logging.error('failure during build of ran-base')
mySSH.command(f'oc logs {ranbase_job} > cmake_targets/log/ran-base.log', '\$', 10)
# recover logs by mounting image
self._retag_image_statement(mySSH, 'ran-base', 'ran-base', baseTag, 'openshift/ran-base-log-retrieval.yaml')
pod = self._deploy_pod(mySSH, 'openshift/ran-base-log-retrieval.yaml')
if pod is not None:
mySSH.command(f'mkdir -p cmake_targets/log/ran-base', '\$', 5)
mySSH.command(f'oc rsync {pod}:/oai-ran/cmake_targets/log/ cmake_targets/log/ran-base', '\$', 5)
self._undeploy_pod(mySSH, 'openshift/ran-base-log-retrieval.yaml')
else:
status = False
if status:
self._recreate_is_tag(mySSH, 'oai-physim', imageTag, 'openshift/oai-physim-is.yaml')
self._recreate_bc(mySSH, 'oai-physim', imageTag, 'openshift/oai-physim-bc.yaml')
self._retag_image_statement(mySSH, 'ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.phySim.rhel8.2')
physim_job = self._start_build(mySSH, 'oai-physim')
attemptedImages += ['oai-physim']
self._recreate_is_tag(mySSH, 'ran-build', imageTag, 'openshift/ran-build-is.yaml')
self._recreate_bc(mySSH, 'ran-build', imageTag, 'openshift/ran-build-bc.yaml')
self._retag_image_statement(mySSH, 'ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.build.rhel8.2')
ranbuild_job = self._start_build(mySSH, 'ran-build')
attemptedImages += ['ran-build']
wait = ranbuild_job is not None and physim_job is not None and self._wait_build_end(mySSH, [ranbuild_job, physim_job], 1200)
if not wait: logging.error('error during build of ranbuild_job or physim_job')
status = status and wait
mySSH.command(f'oc logs {ranbuild_job} > cmake_targets/log/ran-build.log', '\$', 10)
mySSH.command(f'oc logs {physim_job} > cmake_targets/log/oai-physim.log', '\$', 10)
if status:
self._recreate_is_tag(mySSH, 'oai-enb', imageTag, 'openshift/oai-enb-is.yaml')
self._recreate_bc(mySSH, 'oai-enb', imageTag, 'openshift/oai-enb-bc.yaml')
self._retag_image_statement(mySSH, 'ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.eNB.rhel8.2')
self._retag_image_statement(mySSH, 'ran-build', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-build', imageTag, 'docker/Dockerfile.eNB.rhel8.2')
enb_job = self._start_build(mySSH, 'oai-enb')
attemptedImages += ['oai-enb']
self._recreate_is_tag(mySSH, 'oai-gnb', imageTag, 'openshift/oai-gnb-is.yaml')
self._recreate_bc(mySSH, 'oai-gnb', imageTag, 'openshift/oai-gnb-bc.yaml')
self._retag_image_statement(mySSH, 'ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.gNB.rhel8.2')
self._retag_image_statement(mySSH, 'ran-build', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-build', imageTag, 'docker/Dockerfile.gNB.rhel8.2')
gnb_job = self._start_build(mySSH, 'oai-gnb')
attemptedImages += ['oai-gnb']
self._recreate_is_tag(mySSH, 'oai-lte-ue', imageTag, 'openshift/oai-lte-ue-is.yaml')
self._recreate_bc(mySSH, 'oai-lte-ue', imageTag, 'openshift/oai-lte-ue-bc.yaml')
self._retag_image_statement(mySSH, 'ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.lteUE.rhel8.2')
self._retag_image_statement(mySSH, 'ran-build', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-build', imageTag, 'docker/Dockerfile.lteUE.rhel8.2')
lteue_job = self._start_build(mySSH, 'oai-lte-ue')
attemptedImages += ['oai-lte-ue']
self._recreate_is_tag(mySSH, 'oai-nr-ue', imageTag, 'openshift/oai-nr-ue-is.yaml')
self._recreate_bc(mySSH, 'oai-nr-ue', imageTag, 'openshift/oai-nr-ue-bc.yaml')
self._retag_image_statement(mySSH, 'ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.nrUE.rhel8.2')
self._retag_image_statement(mySSH, 'ran-build', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-build', imageTag, 'docker/Dockerfile.nrUE.rhel8.2')
nrue_job = self._start_build(mySSH, 'oai-nr-ue')
attemptedImages += ['oai-nr-ue']
wait = enb_job is not None and gnb_job is not None and lteue_job is not None and nrue_job is not None and self._wait_build_end(mySSH, [enb_job, gnb_job, lteue_job, nrue_job], 600)
if not wait: logging.error('error during build of eNB/gNB/lteUE/nrUE')
status = status and wait
# recover logs
mySSH.command(f'oc logs {enb_job} > cmake_targets/log/oai-enb.log', '\$', 10)
mySSH.command(f'oc logs {gnb_job} > cmake_targets/log/oai-gnb.log', '\$', 10)
mySSH.command(f'oc logs {lteue_job} > cmake_targets/log/oai-lte-ue.log', '\$', 10)
mySSH.command(f'oc logs {nrue_job} > cmake_targets/log/oai-nr-ue.log', '\$', 10)
# split and analyze logs
imageSize = {}
for image in attemptedImages:
mySSH.command(f'mkdir -p cmake_targets/log/{image}', '\$', 5)
mySSH.command(f'python3 ci-scripts/docker_log_split.py --logfilename=cmake_targets/log/{image}.log', '\$', 5)
tag = imageTag if image != 'ran-base' else baseTag
size = self._get_image_size(mySSH, image, tag)
if size <= 0:
imageSize[image] = 'unknown -- BUILD FAILED'
status = False
else:
sizeMb = float(size) / 1000000
imageSize[image] = f'{sizeMb:.1f} Mbytes (uncompressed: ~{sizeMb*2.5:.1f} Mbytes)'
logging.info(f'\u001B[1m{image} size is {imageSize[image]}\u001B[0m')
grep_exp = "\|".join(attemptedImages)
mySSH.command(f'oc get images | grep -e \'{grep_exp}\' > cmake_targets/log/image_registry.log', '\$', 10);
build_log_name = f'build_log_{self.testCase_id}'
cls_containerize.CopyLogsToExecutor(mySSH, lSourcePath, build_log_name, lIpAddr, 'oaicicd', CONST.CI_NO_PASSWORD)
mySSH.command('for pod in $(oc get pods | tail -n +2 | awk \'{print $1}\'); do oc delete pod ${pod}; done', '\$', 60)
# logout will return eventually, but we don't care when -> start in background
mySSH.command('oc logout &', '\$', 5)
mySSH.close()
# Analyze the logs
collectInfo = cls_containerize.AnalyzeBuildLogs(build_log_name, attemptedImages, status)
for img in collectInfo:
for f in collectInfo[img]:
status = status and collectInfo[img][f]['status']
if not status:
logging.debug(collectInfo)
if status:
logging.info('\u001B[1m Building OAI Image(s) Pass\u001B[0m')
HTML.CreateHtmlTestRow('all', 'OK', CONST.ALL_PROCESSES_OK)
else:
logging.error('\u001B[1m Building OAI Images Failed\u001B[0m')
HTML.CreateHtmlTestRow('all', 'KO', CONST.ALL_PROCESSES_OK)
HTML.CreateHtmlNextTabHeaderTestRow(collectInfo, imageSize)
return status

View File

@@ -48,6 +48,107 @@ import sshconnection as SSH
import helpreadme as HELP
import constants as CONST
#-----------------------------------------------------------
# Helper functions used here and in other classes
# (e.g., cls_cluster.py)
#-----------------------------------------------------------
def CreateWorkspace(sshSession, sourcePath, ranRepository, ranCommitID, ranTargetBranch, ranAllowMerge):
# on RedHat/CentOS .git extension is mandatory
result = re.search('([a-zA-Z0-9\:\-\.\/])+\.git', ranRepository)
if result is not None:
full_ran_repo_name = ranRepository.replace('git/', 'git')
else:
full_ran_repo_name = ranRepository + '.git'
sshSession.command('mkdir -p ' + sourcePath, '\$', 5)
sshSession.command('cd ' + sourcePath, '\$', 5)
sshSession.command('if [ ! -e .git ]; then stdbuf -o0 git clone ' + full_ran_repo_name + ' .; else stdbuf -o0 git fetch --prune; fi', '\$', 600)
if sshSession.getBefore().count('done.') == 0:
logging.warning('did not find \'done.\' in git output while cloning/fetching, was not successful?')
sshSession.command('git config user.email "jenkins@openairinterface.org"', '\$', 5)
sshSession.command('git config user.name "OAI Jenkins"', '\$', 5)
sshSession.command('git clean -x -d -ff', '\$', 30)
sshSession.command('mkdir -p cmake_targets/log', '\$', 5)
# if the commit ID is provided use it to point to it
if ranCommitID != '':
sshSession.command('git checkout -f ' + ranCommitID, '\$', 30)
# if the branch is not develop, then it is a merge request and we need to do
# the potential merge. Note that merge conflicts should already been checked earlier
if ranAllowMerge:
if ranTargetBranch == '':
sshSession.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 5)
else:
logging.debug('Merging with the target branch: ' + ranTargetBranch)
sshSession.command('git merge --ff origin/' + ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 5)
def CopyLogsToExecutor(sshSession, sourcePath, log_name, scpIp, scpUser, scpPw):
sshSession.command(f'cd {sourcePath}/cmake_targets', '\$', 5)
sshSession.command(f'rm -f {log_name}.zip', '\$', 5)
sshSession.command(f'mkdir -p {log_name}', '\$', 5)
sshSession.command(f'mv log/* {log_name}', '\$', 5)
sshSession.command(f'zip -r -qq {log_name}.zip {log_name}', '\$', 5)
# copy zip to executor for analysis
if (os.path.isfile(f'./{log_name}.zip')):
os.remove(f'./{log_name}.zip')
if (os.path.isdir(f'./{log_name}')):
shutil.rmtree(f'./{log_name}')
sshSession.copyin(scpIp, scpUser, scpPw, f'{sourcePath}/cmake_targets/{log_name}.zip', '.')
sshSession.command(f'rm -f {log_name}.zip','\$', 5)
ZipFile(f'{log_name}.zip').extractall('.')
def AnalyzeBuildLogs(buildRoot, images, globalStatus):
collectInfo = {}
for image in images:
files = {}
file_list = [f for f in os.listdir(f'{buildRoot}/{image}') if os.path.isfile(os.path.join(f'{buildRoot}/{image}', f)) and f.endswith('.txt')]
# Analyze the "sub-logs" of every target image
for fil in file_list:
errorandwarnings = {}
warningsNo = 0
errorsNo = 0
with open(f'{buildRoot}/{image}/{fil}', mode='r') as inputfile:
for line in inputfile:
result = re.search(' ERROR ', str(line))
if result is not None:
errorsNo += 1
result = re.search(' error:', str(line))
if result is not None:
errorsNo += 1
result = re.search(' WARNING ', str(line))
if result is not None:
warningsNo += 1
result = re.search(' warning:', str(line))
if result is not None:
warningsNo += 1
errorandwarnings['errors'] = errorsNo
errorandwarnings['warnings'] = warningsNo
errorandwarnings['status'] = globalStatus
files[fil] = errorandwarnings
# Analyze the target image
if os.path.isfile(f'{buildRoot}/{image}.log'):
errorandwarnings = {}
committed = False
tagged = False
with open(f'{buildRoot}/{image}.log', mode='r') as inputfile:
startOfTargetImageCreation = False # check for tagged/committed only after image created
for line in inputfile:
result = re.search(f'FROM .* [aA][sS] {image}$', str(line))
if result is not None:
startOfTargetImageCreation = True
if startOfTargetImageCreation:
lineHasTag = re.search(f'Successfully tagged {image}:', str(line)) is not None
tagged = tagged or lineHasTag
# the OpenShift Cluster builder prepends image registry URL
lineHasCommit = re.search(f'COMMIT [a-zA-Z0-9\.:/\-]*{image}', str(line)) is not None
committed = committed or lineHasCommit
errorandwarnings['errors'] = 0 if committed or tagged else 1
errorandwarnings['warnings'] = 0
errorandwarnings['status'] = committed or tagged
files['Target Image Creation'] = errorandwarnings
collectInfo[image] = files
return collectInfo
#-----------------------------------------------------------
# Class Declaration
#-----------------------------------------------------------
@@ -91,8 +192,6 @@ class Containerize():
self.cliBuildOptions = ''
self.dockerfileprefix = ''
self.host = ''
self.allImagesSize = {}
self.collectInfo = {}
self.deployedContainers = []
self.tsharkStarted = False
@@ -115,35 +214,6 @@ class Containerize():
# Container management functions
#-----------------------------------------------------------
def _createWorkspace(self, sshSession, password, sourcePath):
# on RedHat/CentOS .git extension is mandatory
result = re.search('([a-zA-Z0-9\:\-\.\/])+\.git', self.ranRepository)
if result is not None:
full_ran_repo_name = self.ranRepository.replace('git/', 'git')
else:
full_ran_repo_name = self.ranRepository + '.git'
sshSession.command('mkdir -p ' + sourcePath, '\$', 5)
sshSession.command('cd ' + sourcePath, '\$', 5)
sshSession.command('if [ ! -e .git ]; then stdbuf -o0 git clone ' + full_ran_repo_name + ' .; else stdbuf -o0 git fetch --prune; fi', '\$', 600)
# Raphael: here add a check if git clone or git fetch went smoothly
sshSession.command('git config user.email "jenkins@openairinterface.org"', '\$', 5)
sshSession.command('git config user.name "OAI Jenkins"', '\$', 5)
sshSession.command('echo ' + password + ' | sudo -S git clean -x -d -ff', '\$', 30)
sshSession.command('mkdir -p cmake_targets/log', '\$', 5)
# if the commit ID is provided use it to point to it
if self.ranCommitID != '':
sshSession.command('git checkout -f ' + self.ranCommitID, '\$', 30)
# if the branch is not develop, then it is a merge request and we need to do
# the potential merge. Note that merge conflicts should already been checked earlier
if (self.ranAllowMerge):
if self.ranTargetBranch == '':
if (self.ranBranch != 'develop') and (self.ranBranch != 'origin/develop'):
sshSession.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 5)
else:
logging.debug('Merging with the target branch: ' + self.ranTargetBranch)
sshSession.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 5)
def BuildImage(self, HTML):
if self.ranRepository == '' or self.ranBranch == '' or self.ranCommitID == '':
HELP.GenericHelp(CONST.Version)
@@ -211,13 +281,14 @@ class Containerize():
self.testCase_id = HTML.testCase_id
self._createWorkspace(mySSH, lPassWord, lSourcePath)
CreateWorkspace(mySSH, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
# if asterix, copy the entitlement and subscription manager configurations
if self.host == 'Red Hat':
mySSH.command('mkdir -p tmp/ca/ tmp/entitlement/', '\$', 5)
mySSH.command('sudo cp /etc/rhsm/ca/redhat-uep.pem tmp/ca/', '\$', 5)
mySSH.command('sudo cp /etc/pki/entitlement/*.pem tmp/entitlement/', '\$', 5)
mySSH.command('mkdir -p ./etc-pki-entitlement ./rhsm-conf ./rhsm-ca', '\$', 5)
mySSH.command('sudo cp /etc/rhsm/rhsm.conf ./rhsm-conf/', '\$', 5)
mySSH.command('sudo cp /etc/rhsm/ca/redhat-uep.pem ./rhsm-ca/', '\$', 5)
mySSH.command('sudo cp /etc/pki/entitlement/*.pem ./etc-pki-entitlement/', '\$', 5)
baseImage = 'ran-base'
baseTag = 'develop'
@@ -246,32 +317,10 @@ class Containerize():
if forceBaseImageBuild:
mySSH.command(self.cli + ' build ' + self.cliBuildOptions + ' --target ' + baseImage + ' --tag ' + baseImage + ':' + baseTag + ' --file docker/Dockerfile.base' + self.dockerfileprefix + ' . > cmake_targets/log/ran-base.log 2>&1', '\$', 1600)
# First verify if the base image was properly created.
status = True
mySSH.command(self.cli + ' image inspect --format=\'Size = {{.Size}} bytes\' ' + baseImage + ':' + baseTag, '\$', 5)
allImagesSize = {}
if mySSH.getBefore().count('o such image') != 0:
logging.error('\u001B[1m Could not build properly ran-base\u001B[0m')
status = False
else:
result = re.search('Size *= *(?P<size>[0-9\-]+) *bytes', mySSH.getBefore())
if result is not None:
imageSize = float(result.group('size'))
imageSize = imageSize / 1000
if imageSize < 1000:
logging.debug('\u001B[1m ran-base size is ' + ('%.0f' % imageSize) + ' kbytes\u001B[0m')
self.allImagesSize['ran-base'] = str(round(imageSize,1)) + ' kbytes'
else:
imageSize = imageSize / 1000
if imageSize < 1000:
logging.debug('\u001B[1m ran-base size is ' + ('%.0f' % imageSize) + ' Mbytes\u001B[0m')
self.allImagesSize['ran-base'] = str(round(imageSize,1)) + ' Mbytes'
else:
imageSize = imageSize / 1000
logging.debug('\u001B[1m ran-base size is ' + ('%.3f' % imageSize) + ' Gbytes\u001B[0m')
self.allImagesSize['ran-base'] = str(round(imageSize,1)) + ' Gbytes'
else:
logging.debug('ran-base size is unknown')
# If the base image failed, no need to continue
if not status:
# Recover the name of the failed container?
mySSH.command(self.cli + ' ps --quiet --filter "status=exited" -n1 | xargs ' + self.cli + ' rm -f', '\$', 5)
mySSH.command(self.cli + ' image prune --force', '\$', 30)
@@ -281,20 +330,32 @@ class Containerize():
HTML.CreateHtmlTabFooter(False)
sys.exit(1)
else:
# Recover build logs, for the moment only possible when build is successful
mySSH.command(self.cli + ' create --name test ' + baseImage + ':' + baseTag, '\$', 5)
mySSH.command('mkdir -p cmake_targets/log/ran-base', '\$', 5)
mySSH.command(self.cli + ' cp test:/oai-ran/cmake_targets/log/. cmake_targets/log/ran-base', '\$', 5)
mySSH.command(self.cli + ' rm -f test', '\$', 5)
result = re.search('Size *= *(?P<size>[0-9\-]+) *bytes', mySSH.getBefore())
if result is not None:
size = float(result.group("size")) / 1000000
imageSizeStr = f'{size:.1f}'
logging.debug(f'\u001B[1m ran-base size is {imageSizeStr} Mbytes\u001B[0m')
allImagesSize['ran-base'] = f'{imageSizeStr} Mbytes'
else:
logging.debug('ran-base size is unknown')
# Recover build logs, for the moment only possible when build is successful
mySSH.command(self.cli + ' create --name test ' + baseImage + ':' + baseTag, '\$', 5)
mySSH.command('mkdir -p cmake_targets/log/ran-base', '\$', 5)
mySSH.command(self.cli + ' cp test:/oai-ran/cmake_targets/log/. cmake_targets/log/ran-base', '\$', 5)
mySSH.command(self.cli + ' rm -f test', '\$', 5)
# Build the target image(s)
status = True
attemptedImages = ['ran-base']
for image,pattern in imageNames:
attemptedImages += [image]
# the archived Dockerfiles have "ran-base:latest" as base image
# we need to update them with proper tag
mySSH.command('sed -i -e "s#' + baseImage + ':latest#' + baseImage + ':' + baseTag + '#" docker/Dockerfile.' + pattern + self.dockerfileprefix, '\$', 5)
mySSH.command(f'sed -i -e "s#{baseImage}:latest#{baseImage}:{baseTag}#" docker/Dockerfile.{pattern}{self.dockerfileprefix}', '\$', 5)
if image != 'ran-build':
mySSH.command('sed -i -e "s#' + "ran-build" + ':latest#' + "ran-build" + ':' + imageTag + '#" docker/Dockerfile.' + pattern + self.dockerfileprefix, '\$', 5)
mySSH.command(self.cli + ' build ' + self.cliBuildOptions + ' --target ' + image + ' --tag ' + image + ':' + imageTag + ' --file docker/Dockerfile.' + pattern + self.dockerfileprefix + ' . > cmake_targets/log/' + image + '.log 2>&1', '\$', 1200)
mySSH.command(f'sed -i -e "s#ran-build:latest#ran-build:{imageTag}#" docker/Dockerfile.{pattern}{self.dockerfileprefix}', '\$', 5)
mySSH.command(f'{self.cli} build {self.cliBuildOptions} --target {image} --tag {image}:{imageTag} --file docker/Dockerfile.{pattern}{self.dockerfileprefix} . > cmake_targets/log/{image}.log 2>&1', '\$', 1200)
# Flatten Image
if image != 'ran-build':
mySSH.command('python3 ./ci-scripts/flatten_image.py --tag ' + image + ':' + imageTag, '\$', 300)
@@ -308,117 +369,43 @@ class Containerize():
status = False
# Here we should check if the last container corresponds to a failed command and destroy it
mySSH.command(self.cli + ' ps --quiet --filter "status=exited" -n1 | xargs ' + self.cli + ' rm -f', '\$', 5)
self.allImagesSize[image] = 'N/A -- Build Failed'
allImagesSize[image] = 'N/A -- Build Failed'
break
else:
result = re.search('Size *= *(?P<size>[0-9\-]+) *bytes', mySSH.getBefore())
if result is not None:
imageSize = float(result.group('size'))
imageSize = imageSize / 1000
if imageSize < 1000:
logging.debug('\u001B[1m ' + image + ' size is ' + ('%.0f' % imageSize) + ' kbytes\u001B[0m')
self.allImagesSize[image] = str(round(imageSize,1)) + ' kbytes'
else:
imageSize = imageSize / 1000
if imageSize < 1000:
logging.debug('\u001B[1m ' + image + ' size is ' + ('%.0f' % imageSize) + ' Mbytes\u001B[0m')
self.allImagesSize[image] = str(round(imageSize,1)) + ' Mbytes'
else:
imageSize = imageSize / 1000
logging.debug('\u001B[1m ' + image + ' size is ' + ('%.3f' % imageSize) + ' Gbytes\u001B[0m')
self.allImagesSize[image] = str(round(imageSize,1)) + ' Gbytes'
size = float(result.group("size")) / 1000000
imageSizeStr = f'{size:.1f}'
logging.debug(f'\u001B[1m {image} size is {imageSizeStr} Mbytes\u001B[0m')
allImagesSize[image] = f'{imageSizeStr} Mbytes'
else:
logging.debug('ran-base size is unknown')
self.allImagesSize[image] = 'unknown'
logging.debug(f'{image} size is unknown')
allImagesSize[image] = 'unknown'
# Now pruning dangling images in between target builds
mySSH.command(self.cli + ' image prune --force', '\$', 30)
# Analyzing the logs
mySSH.command('cd ' + lSourcePath + '/cmake_targets', '\$', 5)
mySSH.command('mkdir -p build_log_' + self.testCase_id, '\$', 5)
mySSH.command('mv log/* ' + 'build_log_' + self.testCase_id, '\$', 5)
mySSH.command('cd ' + lSourcePath + '/cmake_targets', '\$', 5)
mySSH.command('rm -f build_log_' + self.testCase_id + '.zip || true', '\$', 5)
if (os.path.isfile('./build_log_' + self.testCase_id + '.zip')):
os.remove('./build_log_' + self.testCase_id + '.zip')
if (os.path.isdir('./build_log_' + self.testCase_id)):
shutil.rmtree('./build_log_' + self.testCase_id)
mySSH.command('zip -r -qq build_log_' + self.testCase_id + '.zip build_log_' + self.testCase_id, '\$', 5)
mySSH.copyin(lIpAddr, lUserName, lPassWord, lSourcePath + '/cmake_targets/build_log_' + self.testCase_id + '.zip', '.')
mySSH.command('rm -f build_log_' + self.testCase_id + '.zip','\$', 5)
# Remove all intermediate build images
# Remove all intermediate build images and clean up
if self.ranAllowMerge and forceBaseImageBuild:
mySSH.command(self.cli + ' image rm ' + baseImage + ':' + baseTag + ' || true', '\$', 30)
mySSH.command(self.cli + ' image rm ran-build:' + imageTag + ' || true','\$', 30)
# Cleaning any created tmp volume
mySSH.command(self.cli + ' volume prune --force || true','\$', 15)
mySSH.close()
ZipFile('build_log_' + self.testCase_id + '.zip').extractall('.')
mySSH.command(f'{self.cli} image rm {baseImage}:{baseTag} || true', '\$', 30)
mySSH.command(f'{self.cli} image rm ran-build:{imageTag}','\$', 30)
mySSH.command(f'{self.cli} volume prune --force','\$', 15)
#Trying to identify the errors and warnings for each built images
imageNames1 = imageNames
base = ('ran-base','ran')
imageNames1.insert(0, base)
for image,pattern in imageNames1:
files = {}
file_list = [f for f in os.listdir('build_log_' + self.testCase_id + '/' + image) if os.path.isfile(os.path.join('build_log_' + self.testCase_id + '/' + image, f)) and f.endswith('.txt')]
for fil in file_list:
errorandwarnings = {}
warningsNo = 0
errorsNo = 0
with open('build_log_{}/{}/{}'.format(self.testCase_id,image,fil), mode='r') as inputfile:
for line in inputfile:
result = re.search(' ERROR ', str(line))
if result is not None:
errorsNo += 1
result = re.search(' error:', str(line))
if result is not None:
errorsNo += 1
result = re.search(' WARNING ', str(line))
if result is not None:
warningsNo += 1
result = re.search(' warning:', str(line))
if result is not None:
warningsNo += 1
errorandwarnings['errors'] = errorsNo
errorandwarnings['warnings'] = warningsNo
errorandwarnings['status'] = status
files[fil] = errorandwarnings
# Let analyze the target image creation part
if os.path.isfile('build_log_{}/{}.log'.format(self.testCase_id,image)):
errorandwarnings = {}
with open('build_log_{}/{}.log'.format(self.testCase_id,image), mode='r') as inputfile:
startOfTargetImageCreation = False
buildStatus = False
for line in inputfile:
result = re.search('FROM .* [aA][sS] ' + image + '$', str(line))
if result is not None:
startOfTargetImageCreation = True
if startOfTargetImageCreation:
result = re.search('Successfully tagged ' + image + ':', str(line))
if result is not None:
buildStatus = True
result = re.search('COMMIT ' + image + ':', str(line))
if result is not None:
buildStatus = True
inputfile.close()
if buildStatus:
errorandwarnings['errors'] = 0
else:
errorandwarnings['errors'] = 1
errorandwarnings['warnings'] = 0
errorandwarnings['status'] = buildStatus
files['Target Image Creation'] = errorandwarnings
self.collectInfo[image] = files
# create a zip with all logs
build_log_name = f'build_log_{self.testCase_id}'
CopyLogsToExecutor(mySSH, lSourcePath, build_log_name, lIpAddr, lUserName, lPassWord)
mySSH.close()
# Analyze the logs
collectInfo = AnalyzeBuildLogs(build_log_name, attemptedImages, status)
if status:
logging.info('\u001B[1m Building OAI Image(s) Pass\u001B[0m')
HTML.CreateHtmlTestRow(self.imageKind, 'OK', CONST.ALL_PROCESSES_OK)
HTML.CreateHtmlNextTabHeaderTestRow(self.collectInfo, self.allImagesSize)
HTML.CreateHtmlNextTabHeaderTestRow(collectInfo, allImagesSize)
else:
logging.error('\u001B[1m Building OAI Images Failed\u001B[0m')
HTML.CreateHtmlTestRow(self.imageKind, 'KO', CONST.ALL_PROCESSES_OK)
HTML.CreateHtmlNextTabHeaderTestRow(self.collectInfo, self.allImagesSize)
HTML.CreateHtmlNextTabHeaderTestRow(collectInfo, allImagesSize)
HTML.CreateHtmlTabFooter(False)
sys.exit(1)
@@ -473,7 +460,7 @@ class Containerize():
self.ranCommitID = self.proxyCommit
self.ranRepository = 'https://github.com/EpiSci/oai-lte-5g-multi-ue-proxy.git'
self.ranAllowMerge = False
self._createWorkspace(mySSH, lPassWord, lSourcePath)
CreateWorkspace(mySSH, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
# to prevent accidentally overwriting data that might be used later
self.ranCommitID = oldRanCommidID
self.ranRepository = oldRanRepository
@@ -532,13 +519,34 @@ class Containerize():
# don't delete such that we might recover the zips
#mySSH.command('rm -f build_log_' + self.testCase_id + '.zip','\$', 5)
# we do not analyze the logs (we assume the proxy builds fine at this stage),
# but need to have the following information to correctly display the HTML
files = {}
errorandwarnings = {}
errorandwarnings['errors'] = 0
errorandwarnings['warnings'] = 0
errorandwarnings['status'] = True
files['Target Image Creation'] = errorandwarnings
collectInfo = {}
collectInfo['proxy'] = files
mySSH.command('docker image inspect --format=\'Size = {{.Size}} bytes\' proxy:' + tag, '\$', 5)
result = re.search('Size *= *(?P<size>[0-9\-]+) *bytes', mySSH.getBefore())
allImagesSize = {}
if result is not None:
imageSize = float(result.group('size')) / 1000000
logging.debug('\u001B[1m proxy size is ' + ('%.0f' % imageSize) + ' Mbytes\u001B[0m')
allImagesSize['proxy'] = str(round(imageSize,1)) + ' Mbytes'
else:
logging.debug('proxy size is unknown')
allImagesSize['proxy'] = 'unknown'
# Cleaning any created tmp volume
mySSH.command(self.cli + ' volume prune --force || true','\$', 15)
mySSH.close()
logging.info('\u001B[1m Building L2sim Proxy Image Pass\u001B[0m')
HTML.CreateHtmlTestRow('commit ' + tag, 'OK', CONST.ALL_PROCESSES_OK)
HTML.CreateHtmlNextTabHeaderTestRow(self.collectInfo, self.allImagesSize)
HTML.CreateHtmlNextTabHeaderTestRow(collectInfo, allImagesSize)
def Copy_Image_to_Test_Server(self, HTML):
imageTag = 'develop'
@@ -560,9 +568,17 @@ class Containerize():
lUserName = self.eNB2UserName
lPassWord = self.eNB2Password
lSsh.open(lIpAddr, lUserName, lPassWord)
lSsh.command('docker save ' + self.imageToCopy + ':' + imageTag + ' | gzip > ' + self.imageToCopy + '-' + imageTag + '.tar.gz', '\$', 60)
lSsh.copyin(lIpAddr, lUserName, lPassWord, '~/' + self.imageToCopy + '-' + imageTag + '.tar.gz', '.')
lSsh.command('docker save ' + self.imageToCopy + ':' + imageTag + ' | gzip --fast > ' + self.imageToCopy + '-' + imageTag + '.tar.gz', '\$', 60)
ret = lSsh.copyin(lIpAddr, lUserName, lPassWord, '~/' + self.imageToCopy + '-' + imageTag + '.tar.gz', '.')
if ret != 0:
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ALL_PROCESSES_OK)
self.exitStatus = 1
return False
lSsh.command('rm ' + self.imageToCopy + '-' + imageTag + '.tar.gz', '\$', 60)
if lSsh.getBefore().count('cannot remove'):
HTML.CreateHtmlTestRow('file not created by docker save', 'KO', CONST.ALL_PROCESSES_OK)
self.exitStatus = 1
return False
lSsh.close()
# Going to the Test Server
@@ -580,15 +596,26 @@ class Containerize():
lPassWord = self.eNB2Password
lSsh.open(lIpAddr, lUserName, lPassWord)
lSsh.copyout(lIpAddr, lUserName, lPassWord, './' + self.imageToCopy + '-' + imageTag + '.tar.gz', '~')
# copyout has no return code and will quit if something fails
lSsh.command('docker rmi ' + self.imageToCopy + ':' + imageTag, '\$', 10)
lSsh.command('docker load < ' + self.imageToCopy + '-' + imageTag + '.tar.gz', '\$', 60)
if lSsh.getBefore().count('o such file') or lSsh.getBefore().count('invalid tar header'):
logging.debug(lSsh.getBefore())
HTML.CreateHtmlTestRow('problem during docker load', 'KO', CONST.ALL_PROCESSES_OK)
self.exitStatus = 1
return False
lSsh.command('rm ' + self.imageToCopy + '-' + imageTag + '.tar.gz', '\$', 60)
if lSsh.getBefore().count('cannot remove'):
HTML.CreateHtmlTestRow('file not copied during scp?', 'KO', CONST.ALL_PROCESSES_OK)
self.exitStatus = 1
return False
lSsh.close()
if os.path.isfile('./' + self.imageToCopy + '-' + imageTag + '.tar.gz'):
os.remove('./' + self.imageToCopy + '-' + imageTag + '.tar.gz')
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
return True
def DeployObject(self, HTML, EPC):
if self.eNB_serverId[self.eNB_instance] == '0':
@@ -614,7 +641,7 @@ class Containerize():
mySSH = SSH.SSHConnection()
mySSH.open(lIpAddr, lUserName, lPassWord)
self._createWorkspace(mySSH, lPassWord, lSourcePath)
CreateWorkspace(mySSH, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
mySSH.command('cd ' + lSourcePath + '/' + self.yamlPath[self.eNB_instance], '\$', 5)
mySSH.command('cp docker-compose.yml ci-docker-compose.yml', '\$', 5)
@@ -637,7 +664,7 @@ class Containerize():
result = re.search('service=(?P<svc_name>[a-zA-Z0-9\_]+)', mySSH.getBefore())
if result is not None:
svcName = result.group('svc_name')
mySSH.command('docker-compose --file ci-docker-compose.yml up -d ' + svcName, '\$', 10)
mySSH.command('docker-compose --file ci-docker-compose.yml up -d ' + svcName, '\$', 15)
# Checking Status
mySSH.command('docker-compose --file ci-docker-compose.yml config', '\$', 5)
@@ -664,6 +691,9 @@ class Containerize():
logging.debug(' -- ' + str(unhealthyNb) + ' unhealthy container(s)')
logging.debug(' -- ' + str(startingNb) + ' still starting container(s)')
self.testCase_id = HTML.testCase_id
self.eNB_logFile[self.eNB_instance] = 'enb_' + self.testCase_id + '.log'
status = False
if healthyNb == 1:
cnt = 0
@@ -678,11 +708,12 @@ class Containerize():
status = True
logging.info('\u001B[1m Deploying OAI object Pass\u001B[0m')
time.sleep(10)
else:
# containers are unhealthy, so we won't start. However, logs are stored at the end
# in UndeployObject so we here store the logs of the unhealthy container to report it
mySSH.command('docker logs ' + containerName + ' > ' + lSourcePath + '/cmake_targets/' + self.eNB_logFile[self.eNB_instance], '\$', 30)
mySSH.close()
self.testCase_id = HTML.testCase_id
self.eNB_logFile[self.eNB_instance] = 'enb_' + self.testCase_id + '.log'
if status:
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
else:
@@ -914,12 +945,26 @@ class Containerize():
logging.debug(cmd)
subprocess.run(cmd, shell=True)
# if the containers are running, recover the logs!
# check which containers are running for log recovery later
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml ps --all'
logging.debug(cmd)
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
deployStatusLogs = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
# Stop the containers to shut down objects
logging.debug('\u001B[1m Stopping containers \u001B[0m')
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml stop'
logging.debug(cmd)
try:
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=100)
except Exception as e:
self.exitStatus = 1
logging.error('Could not stop containers')
HTML.CreateHtmlTestRow('Could not stop', 'KO', CONST.ALL_PROCESSES_OK)
logging.error('\u001B[1m Undeploying OAI Object(s) FAILED\u001B[0m')
return
anyLogs = False
for state in deployStatus.split('\n'):
for state in deployStatusLogs.split('\n'):
res = re.search('Name|----------', state)
if res is not None:
continue

View File

@@ -453,13 +453,11 @@ class HTMLManagement():
self.htmlFile.write(' <td bgcolor = "red" >' + str(parameters['warnings']) + '</td>\n')
elif (parameters['warnings'] == 0):
self.htmlFile.write(' <td bgcolor = "green" >' + str(parameters['warnings']) + '</td>\n')
elif ((parameters['warnings'] > 0) and (parameters['warnings'] <= 20)):
self.htmlFile.write(' <td bgcolor = "orange" >' + str(parameters['warnings']) + '</td>\n')
else:
self.htmlFile.write(' <td bgcolor = "red" >' + str(parameters['warnings']) + '</td>\n')
self.htmlFile.write(' <td bgcolor = "orange" >' + str(parameters['warnings']) + '</td>\n')
if (parameters['errors'] == 0) and (parameters['warnings'] == 0):
self.htmlFile.write(' <th colspan=' + str(1+self.htmlUEConnected) + ' bgcolor = "green" ><font color="white">OK </font></th>\n')
elif (parameters['errors'] == 0) and ((parameters['warnings'] > 0) and (parameters['warnings'] <= 20)):
elif (parameters['errors'] == 0):
self.htmlFile.write(' <th colspan=' + str(1+self.htmlUEConnected) + ' bgcolor = "orange" ><font color="white">OK </font></th>\n')
else:
self.htmlFile.write(' <th colspan=' + str(1+self.htmlUEConnected) + ' bgcolor = "red" > NOT OK </th>\n')

View File

@@ -1329,7 +1329,7 @@ class OaiCiTest():
SSH.open(self.ADBIPAddress, self.ADBUserName, self.ADBPassword)
if self.ADBCentralized:
SSH.command('adb devices', '\$', 15)
self.UEDevices = re.findall("\\\\r\\\\n([A-Za-z0-9]+)\\\\tdevice",SSH.getBefore())
self.UEDevices = re.findall('\r\n([A-Za-z0-9]+)\tdevice',SSH.getBefore())
#report number and id of devices found
msg = "UEDevices found by GetAllUEDevices : " + " ".join(self.UEDevices)
logging.debug(msg)
@@ -1379,8 +1379,7 @@ class OaiCiTest():
SSH.open(self.ADBIPAddress, self.ADBUserName, self.ADBPassword)
if self.ADBCentralized:
SSH.command('lsusb | egrep --colour=never "Future Technology Devices International, Ltd FT2232C" | sed -e "s#:.*##" -e "s# #_#g"', '\$', 15)
#self.CatMDevices = re.findall("\\\\r\\\\n([A-Za-z0-9_]+)",SSH.getBefore())
self.CatMDevices = re.findall("\\\\r\\\\n([A-Za-z0-9_]+)",SSH.getBefore())
self.CatMDevices = re.findall('\r\n([A-Za-z0-9_]+)',SSH.getBefore())
else:
if (os.path.isfile('./modules_list.txt')):
os.remove('./modules_list.txt')
@@ -2046,7 +2045,7 @@ class OaiCiTest():
req_bandwidth = '%.1f Gbits/sec' % req_bw
req_bw = req_bw * 1000000000
result = re.search('Server Report:\\\\r\\\\n(?:|\[ *\d+\].*) (?P<bitrate>[0-9\.]+ [KMG]bits\/sec) +(?P<jitter>[0-9\.]+ ms) +(\d+\/..\d+) +(\((?P<packetloss>[0-9\.]+)%\))', SSH.getBefore())
result = re.search('Server Report:\r\n(?:|\[ *\d+\].*) (?P<bitrate>[0-9\.]+ [KMG]bits\/sec) +(?P<jitter>[0-9\.]+ ms) +(\d+\/..\d+) +(\((?P<packetloss>[0-9\.]+)%\))', SSH.getBefore())
if result is not None:
bitrate = result.group('bitrate')
packetloss = result.group('packetloss')
@@ -2262,7 +2261,7 @@ class OaiCiTest():
def Iperf_analyzeV3Output(self, lock, UE_IPAddress, device_id, statusQueue,SSH):
result = re.search('(?P<bitrate>[0-9\.]+ [KMG]bits\/sec) +(?:|[0-9\.]+ ms +\d+\/\d+ \((?P<packetloss>[0-9\.]+)%\)) +(?:|receiver)\\\\r\\\\n(?:|\[ *\d+\] Sent \d+ datagrams)\\\\r\\\\niperf Done\.', SSH.getBefore())
result = re.search('(?P<bitrate>[0-9\.]+ [KMG]bits\/sec) +(?:|[0-9\.]+ ms +\d+\/\d+ \((?P<packetloss>[0-9\.]+)%\)) +(?:|receiver)\r\n(?:|\[ *\d+\] Sent \d+ datagrams)\r\niperf Done\.', SSH.getBefore())
if result is None:
result = re.search('(?P<error>iperf: error - [a-zA-Z0-9 :]+)', SSH.getBefore())
lock.acquire()
@@ -2405,7 +2404,7 @@ class OaiCiTest():
if launchFromTrfContainer:
SSH.command('docker exec -it prod-trf-gen /bin/bash -c "killall --signal SIGKILL iperf"', '\$', 5)
else:
SSH.command('killall --signal SIGKILL iperf', EPC.UserName, 5)
SSH.command('killall --signal SIGKILL iperf', '\$', 5)
SSH.close()
else:
cmd = 'killall --signal SIGKILL iperf'
@@ -3865,7 +3864,7 @@ class OaiCiTest():
SSH = sshconnection.SSHConnection()
SSH.open(IPAddress, UserName, Password)
SSH.command('lsb_release -a', '\$', 5)
result = re.search('Description:\\\\t(?P<os_type>[a-zA-Z0-9\-\_\.\ ]+)', SSH.getBefore())
result = re.search('Description:\t(?P<os_type>[a-zA-Z0-9\-\_\.\ ]+)', SSH.getBefore())
if result is not None:
OsVersion = result.group('os_type')
logging.debug('OS is: ' + OsVersion)
@@ -3883,26 +3882,26 @@ class OaiCiTest():
logging.debug('OS is: ' + OsVersion)
HTML.OsVersion[idx]=OsVersion
SSH.command('uname -r', '\$', 5)
result = re.search('uname -r\\\\r\\\\n(?P<kernel_version>[a-zA-Z0-9\-\_\.]+)', SSH.getBefore())
result = re.search('uname -r\r\n(?P<kernel_version>[a-zA-Z0-9\-\_\.]+)', SSH.getBefore())
if result is not None:
KernelVersion = result.group('kernel_version')
logging.debug('Kernel Version is: ' + KernelVersion)
HTML.KernelVersion[idx]=KernelVersion
SSH.command('dpkg --list | egrep --color=never libuhd003', '\$', 5)
result = re.search('libuhd003:amd64 *(?P<uhd_version>[0-9\.]+)', SSH.getBefore())
SSH.command('dpkg --list | egrep --color=never libuhd', '\$', 5)
result = re.search('libuhd.*:amd64 *(?P<uhd_version>[0-9\.]+)', SSH.getBefore())
if result is not None:
UhdVersion = result.group('uhd_version')
logging.debug('UHD Version is: ' + UhdVersion)
HTML.UhdVersion[idx]=UhdVersion
else:
SSH.command('uhd_config_info --version', '\$', 5)
result = re.search('UHD (?P<uhd_version>[a-zA-Z0-9\.\-]+)', SSH.getBefore())
SSH.command('uhd_config_info --abi-version', '\$', 5)
result = re.search('ABI version string: (?P<uhd_version>[a-zA-Z0-9\.\-]+)', SSH.getBefore())
if result is not None:
UhdVersion = result.group('uhd_version')
logging.debug('UHD Version is: ' + UhdVersion)
HTML.UhdVersion[idx]=UhdVersion
SSH.command('echo ' + Password + ' | sudo -S uhd_find_devices', '\$', 180)
usrp_boards = re.findall('product: ([0-9A-Za-z]+)\\\\r\\\\n', SSH.getBefore())
usrp_boards = re.findall('product: ([0-9A-Za-z]+)', SSH.getBefore())
count = 0
for board in usrp_boards:
if count == 0:
@@ -3914,14 +3913,18 @@ class OaiCiTest():
logging.debug('USRP Board(s) : ' + UsrpBoard)
HTML.UsrpBoard[idx]=UsrpBoard
SSH.command('lscpu', '\$', 5)
result = re.search('CPU\(s\): *(?P<nb_cpus>[0-9]+).*Model name: *(?P<model>[a-zA-Z0-9\-\_\.\ \(\)]+).*CPU MHz: *(?P<cpu_mhz>[0-9\.]+)', SSH.getBefore())
result = re.search('CPU\(s\): *(?P<nb_cpus>[0-9]+)', SSH.getBefore())
if result is not None:
CpuNb = result.group('nb_cpus')
logging.debug('nb_cpus: ' + CpuNb)
HTML.CpuNb[idx]=CpuNb
result = re.search('Model name: *(?P<model>[a-zA-Z0-9\-\_\.\ \(\)]+)', SSH.getBefore())
if result is not None:
CpuModel = result.group('model')
logging.debug('model: ' + CpuModel)
HTML.CpuModel[idx]=CpuModel
result = re.search('CPU MHz: *(?P<cpu_mhz>[0-9\.]+)', SSH.getBefore())
if result is not None:
CpuMHz = result.group('cpu_mhz') + ' MHz'
logging.debug('cpu_mhz: ' + CpuMHz)
HTML.CpuMHz[idx]=CpuMHz

View File

@@ -56,7 +56,6 @@ class PhySim:
self.__workSpacePath=''
self.__buildLogFile='compile_phy_sim.log'
self.__runLogFile=''
self.__runResults=[]
self.__runLogPath='phy_sim_logs'
@@ -64,20 +63,20 @@ class PhySim:
#PRIVATE Methods
#-----------------
def __CheckResults_PhySim(self,HTML,CONST,testcase_id):
def __CheckResults_LDPCTest(self,HTML,CONST,testcase_id):
mySSH = sshconnection.SSHConnection()
mySSH.open(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord)
#retrieve run log file and store it locally$
mySSH.copyin(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord, self.__workSpacePath+self.__runLogFile, '.')
mySSH.close()
#parse results looking for Encoding and Decoding mean values
self.__runResults=[]
runResults=[]
with open(self.__runLogFile) as f:
for line in f:
if 'mean' in line:
self.__runResults.append(line)
runResults.append(line)
#the values are appended for each mean value (2), so we take these 2 values from the list
info=self.__runResults[0]+self.__runResults[1]
info = runResults[0] + runResults[1]
#once parsed move the local logfile to its folder for tidiness
os.system('mv '+self.__runLogFile+' '+ self.__runLogPath+'/.')
@@ -89,6 +88,38 @@ class PhySim:
HTML.CreateHtmlTestRowQueue(self.runargs, 'OK', 1, html_queue)
return HTML
def __CheckResults_NRulsimTest(self, HTML, CONST, testcase_id):
html_queue = SimpleQueue()
#retrieve run log file and store it locally
mySSH = sshconnection.SSHConnection()
filename = self.__workSpacePath + self.__runLogFile
ret = mySSH.copyin(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord, filename, '.')
if ret != 0:
error_msg = f'could not recover test result file {filename}'
logging.error(error_msg)
html_queue.put(f'<pre style="background-color:white">{error_msg}</pre>')
HTML.CreateHtmlTestRowQueue("could not recover results", 'KO', 1, html_queue)
self.exitStatus = 1
return HTML
PUSCH_OK = False
with open(self.__runLogFile) as f:
PUSCH_OK = 'PUSCH test OK' in f.read()
# once parsed move the local logfile to its folder for tidiness
os.system(f'mv {self.__runLogFile} {self.__runLogPath}/.')
#updating the HTML with results
if PUSCH_OK:
html_queue.put('<pre style="background-color:white">succeeded</pre>')
HTML.CreateHtmlTestRowQueue(self.runargs, 'OK', 1, html_queue)
else:
error_msg = 'error: no "PUSCH test OK"'
logging.error(error_msg)
html_queue.put(f'<pre style="background-color:white">{error_msg}</pre>')
HTML.CreateHtmlTestRowQueue(self.runargs, 'KO', 1, html_queue)
self.exitStatus = 1
return HTML
def __CheckBuild_PhySim(self, HTML, CONST):
self.__workSpacePath=self.eNBSourceCodePath+'/cmake_targets/'
@@ -100,21 +131,16 @@ class PhySim:
mySSH.command('rm ' + self.__workSpacePath+self.__runLogFile, '\$', 5)
mySSH.close()
#check build result from local compile log file
buildStatus=False
with open(self.__buildLogFile) as f:
#nr_prachsim is the last compile step
if 'nr_prachsim compiled' in f.read():
buildStatus=True
#update HTML based on build status
if buildStatus:
HTML.CreateHtmlTestRow(self.buildargs, 'OK', CONST.ALL_PROCESSES_OK, 'LDPC')
self.exitStatus=0
else:
logging.error('\u001B[1m Building Physical Simulators Failed\u001B[0m')
HTML.CreateHtmlTestRow(self.buildargs, 'KO', CONST.ALL_PROCESSES_OK, 'LDPC')
HTML.CreateHtmlTabFooter(False)
#exitStatus=1 will do a sys.exit in main
self.exitStatus=1
if 'BUILD SHOULD BE SUCCESSFUL' in f.read():
HTML.CreateHtmlTestRow(self.buildargs, 'OK', CONST.ALL_PROCESSES_OK, 'PhySim')
self.exitStatus=0
return HTML
logging.error('\u001B[1m Building Physical Simulators Failed\u001B[0m')
HTML.CreateHtmlTestRow(self.buildargs, 'KO', CONST.ALL_PROCESSES_OK, 'LDPC')
HTML.CreateHtmlTabFooter(False)
#exitStatus=1 will do a sys.exit in main
self.exitStatus = 1
return HTML
@@ -163,8 +189,7 @@ class PhySim:
mySSH.command('source oaienv', '\$', 5)
mySSH.command('cd cmake_targets', '\$', 5)
mySSH.command('mkdir -p log', '\$', 5)
mySSH.command('chmod 777 log', '\$', 5)
mySSH.command('stdbuf -o0 ./build_oai ' + self.buildargs + ' 2>&1 | stdbuf -o0 tee ' + self.__buildLogFile, 'Bypassing the Tests|build have failed', 1500)
mySSH.command(f'./build_oai {self.buildargs} 2>&1 | tee {self.__buildLogFile}', '\$', 1500)
mySSH.close()
#check build status and update HTML object
@@ -173,7 +198,8 @@ class PhySim:
return lHTML
def Run_PhySim(self,htmlObj,constObj,testcase_id):
def Run_LDPCTest(self,htmlObj,constObj,testcase_id):
self.__workSpacePath = self.eNBSourceCodePath+'/cmake_targets/'
#create run logs folder locally
os.system('mkdir -p ./'+self.__runLogPath)
#log file is tc_<testcase_id>.log remotely
@@ -187,5 +213,18 @@ class PhySim:
mySSH.close()
#return updated HTML to main
lHTML = cls_oai_html.HTMLManagement()
lHTML=self.__CheckResults_PhySim(htmlObj,constObj,testcase_id)
lHTML=self.__CheckResults_LDPCTest(htmlObj,constObj,testcase_id)
return lHTML
def Run_NRulsimTest(self, htmlObj, constObj, testcase_id):
self.__workSpacePath=self.eNBSourceCodePath+'/cmake_targets/'
os.system(f'mkdir -p ./{self.__runLogPath}')
self.__runLogFile = f'physim_{testcase_id}.log'
mySSH = sshconnection.SSHConnection()
mySSH.open(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord)
mySSH.command(f'cd {self.__workSpacePath}', '\$', 5)
mySSH.command(f'sudo {self.__workSpacePath}ran_build/build/nr_ulsim {self.runargs} > {self.__runLogFile} 2>&1', '\$', 30)
mySSH.close()
#return updated HTML to main
lHTML = self.__CheckResults_NRulsimTest(htmlObj, constObj, testcase_id)
return lHTML

View File

@@ -92,7 +92,7 @@ class PhySim:
full_ran_repo_name = self.ranRepository.replace('git/', 'git')
else:
full_ran_repo_name = self.ranRepository + '.git'
mySSH.command('echo ' + lPassWord + ' | sudo rm -Rf ' + lSourcePath, '\$', 30)
mySSH.command('rm -Rf ' + lSourcePath, '\$', 30)
mySSH.command('mkdir -p ' + lSourcePath, '\$', 5)
mySSH.command('cd ' + lSourcePath, '\$', 5)
mySSH.command('if [ ! -e .git ]; then stdbuf -o0 git clone ' + full_ran_repo_name + ' .; else stdbuf -o0 git fetch --prune; fi', '\$', 600)
@@ -100,7 +100,7 @@ class PhySim:
mySSH.command('git config user.email "jenkins@openairinterface.org"', '\$', 5)
mySSH.command('git config user.name "OAI Jenkins"', '\$', 5)
mySSH.command('echo ' + lPassWord + ' | sudo -S git clean -x -d -ff', '\$', 30)
mySSH.command('git clean -x -d -ff', '\$', 30)
mySSH.command('mkdir -p cmake_targets/log', '\$', 5)
# if the commit ID is provided use it to point to it
if self.ranCommitID != '':
@@ -115,33 +115,9 @@ class PhySim:
mySSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 5)
else:
imageTag = "develop"
# Check if image is exist on the Red Hat server, before pushing it to OC cluster
mySSH.command('sudo podman image inspect --format="Size = {{.Size}} bytes" oai-physim:' + imageTag, '\$', 60)
if mySSH.getBefore().count('no such image') != 0:
logging.error('\u001B[1m No such image oai-physim\u001B[0m')
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.PHYSIM_IMAGE_ABSENT)
RAN.prematureExit = True
return
else:
result = re.search('Size *= *(?P<size>[0-9\-]+) *bytes', mySSH.getBefore())
if result is not None:
imageSize = float(result.group('size'))
imageSize = imageSize / 1000
if imageSize < 1000:
logging.debug('\u001B[1m oai-physim size is ' + ('%.0f' % imageSize) + ' kbytes\u001B[0m')
else:
imageSize = imageSize / 1000
if imageSize < 1000:
logging.debug('\u001B[1m oai-physim size is ' + ('%.0f' % imageSize) + ' Mbytes\u001B[0m')
else:
imageSize = imageSize / 1000
logging.debug('\u001B[1m oai-physim is ' + ('%.3f' % imageSize) + ' Gbytes\u001B[0m')
else:
logging.debug('oai-physim size is unknown')
# logging to OC Cluster and then switch to corresponding project
mySSH.command(f'oc login -u {ocUserName} -p {ocPassword}', '\$', 30)
mySSH.command(f'oc login -u {ocUserName} -p {ocPassword} --server https://api.oai.cs.eurecom.fr:6443', '\$', 30)
if mySSH.getBefore().count('Login successful.') == 0:
logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m')
mySSH.close()
@@ -161,46 +137,7 @@ class PhySim:
else:
logging.debug(f'\u001B[1m Now using project {ocProjectName}\u001B[0m')
# Tag the image and push to the OC cluster
mySSH.command('oc whoami -t | sudo podman login -u ' + ocUserName + ' --password-stdin https://default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/ --tls-verify=false', '\$', 30)
if mySSH.getBefore().count('Login Succeeded!') == 0:
logging.error('\u001B[1m Podman Login to OC Cluster Registry Failed\u001B[0m')
mySSH.command('oc logout', '\$', 30)
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL)
RAN.prematureExit = True
return
else:
logging.debug('\u001B[1m Podman Login to OC Cluster Registry Successfully\u001B[0m')
time.sleep(2)
mySSH.command('oc create -f openshift/oai-physim-image-stream.yml || true', '\$', 30)
if mySSH.getBefore().count('(AlreadyExists):') == 0 and mySSH.getBefore().count('created') == 0:
logging.error(f'\u001B[1m Image Stream "oai-physim" Creation Failed on OC Cluster {ocProjectName}\u001B[0m')
mySSH.command('sudo podman logout https://default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/', '\$', 6)
mySSH.command('oc logout', '\$', 30)
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_IS_FAIL)
RAN.prematureExit = True
return
else:
logging.debug(f'\u001B[1m Image Stream "oai-physim" created on OC project {ocProjectName}\u001B[0m')
time.sleep(2)
mySSH.command(f'sudo podman tag oai-physim:{imageTag} default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/{self.OCProjectName}/oai-physim:{imageTag}', '\$', 30)
time.sleep(2)
mySSH.command(f'sudo podman push default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/{self.OCProjectName}/oai-physim:{imageTag} --tls-verify=false', '\$', 180)
if mySSH.getBefore().count('Storing signatures') == 0:
logging.error('\u001B[1m Image "oai-physim" push to OC Cluster Registry Failed\u001B[0m')
mySSH.command('sudo podman logout https://default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/', '\$', 6)
mySSH.command('oc logout', '\$', 30)
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_IS_FAIL)
RAN.prematureExit = True
return
else:
logging.debug('\u001B[1m Image "oai-physim" push to OC Cluster Registry Successfully\u001B[0m')
# Using helm charts deployment
time.sleep(5)
mySSH.command(f'grep -rl OAICICD_PROJECT ./charts/ | xargs sed -i -e "s#OAICICD_PROJECT#{ocProjectName}#"', '\$', 30)
mySSH.command(f'sed -i -e "s#TAG#{imageTag}#g" ./charts/physims/values.yaml', '\$', 6)
mySSH.command('helm install physim ./charts/physims/ 2>&1 | tee -a cmake_targets/log/physim_helm_summary.txt', '\$', 30)
@@ -213,9 +150,6 @@ class PhySim:
mySSH.command('oc get pods -l app.kubernetes.io/instance=physim', '\$', 6, resync=True)
if re.search('No resources found', mySSH.getBefore()):
isFinished1 = True
mySSH.command(f'sudo podman rmi default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/{self.OCProjectName}/oai-physim:{imageTag}', '\$', 30)
mySSH.command('oc delete is oai-physim', '\$', 30)
mySSH.command('sudo podman logout https://default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/', '\$', 6)
mySSH.command('oc logout', '\$', 30)
mySSH.close()
self.AnalyzeLogFile_phySim(HTML)
@@ -244,9 +178,6 @@ class PhySim:
mySSH.command('oc get pods -l app.kubernetes.io/instance=physim', '\$', 6, resync=True)
if re.search('No resources found', mySSH.getBefore()):
isFinished1 = True
mySSH.command(f'sudo podman rmi default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/{self.OCProjectName}/oai-physim:{imageTag}', '\$', 6)
mySSH.command('oc delete is oai-physim', '\$', 6)
mySSH.command('sudo podman logout https://default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/', '\$', 6)
mySSH.command('oc logout', '\$', 30)
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_PHYSIM_DEPLOY_FAIL)
HTML.CreateHtmlTestRowPhySimTestResult(self.testSummary,self.testResult)
@@ -304,10 +235,6 @@ class PhySim:
isFinished1 = True
if isFinished1 == True:
logging.debug('\u001B[1m UnDeployed PhySim Successfully on OC Cluster\u001B[0m')
mySSH.command(f'sudo podman rmi default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/{self.OCProjectName}/oai-physim:{imageTag}', '\$', 6)
mySSH.command('oc delete is oai-physim', '\$', 6)
logging.debug('\u001B[1m Deleted the Image and ImageStream\u001B[0m')
mySSH.command('sudo podman logout https://default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/', '\$', 6)
mySSH.command('oc logout', '\$', 6)
mySSH.close()
self.AnalyzeLogFile_phySim(HTML)

View File

@@ -321,20 +321,6 @@ class StaticCodeAnalysis():
if ret is not None:
analyzed = True
if analyzed:
ret = re.search('Nb Files that do NOT follow OAI rules: (?P<nb_errors>[0-9\.]+)', str(line))
if ret is not None:
nbFilesNotFormatted = int(ret.group('nb_errors'))
if re.search('=== Files not properly formatted ===', str(line)) is not None:
listFiles = True
if listFiles:
if re.search('Removing intermediate container', str(line)) is not None:
listFiles = False
elif re.search('Running in|Files not properly formatted', str(line)) is not None:
pass
else:
listFilesNotFormatted.append(str(line).strip())
if re.search('=== Files with incorrect define protection ===', str(line)) is not None:
circularHeaderDependency = True
if circularHeaderDependency:

View File

@@ -214,7 +214,6 @@ L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
thread_pool_size = 8;
}
);

View File

@@ -198,8 +198,8 @@ RUs = (
local_rf = "yes"
nb_tx = 1
nb_rx = 1
att_tx = 0
att_rx = 0;
att_tx = 6
att_rx = 6;
bands = [38];
max_pdschReferenceSignalPower = -27;
max_rxgain = 115;

View File

@@ -198,8 +198,8 @@ RUs = (
local_rf = "yes"
nb_tx = 1
nb_rx = 1
att_tx = 0
att_rx = 0;
att_tx = 6
att_rx = 6;
bands = [38];
max_pdschReferenceSignalPower = -27;
max_rxgain = 125;

View File

@@ -198,8 +198,8 @@ RUs = (
local_rf = "yes"
nb_tx = 1
nb_rx = 1
att_tx = 0
att_rx = 0;
att_tx = 6
att_rx = 6;
bands = [38];
max_pdschReferenceSignalPower = -27;
max_rxgain = 120;

View File

@@ -196,8 +196,8 @@ RUs = (
local_rf = "yes"
nb_tx = 2
nb_rx = 2
att_tx = 0
att_rx = 0;
att_tx = 6
att_rx = 6;
bands = [38];
max_pdschReferenceSignalPower = -27;
max_rxgain = 110;

View File

@@ -11,22 +11,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 40960;
plmn_list = ({
mcc = 208;
mnc = 95;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x1; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
plmn_list = ({ mcc = 208; mnc = 95; mnc_length = 2; snssaiList = ({ sst = 1 }) });
nr_cellid = 12345678L;
@@ -214,52 +199,6 @@ MACRLCs = (
}
);
L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
thread_pool_size = 8;
prach_dtx_threshold = 120;
pucch0_dtx_threshold = 150;
}
);
RUs = (
{
local_rf = "yes"
nb_tx = 1
nb_rx = 1
att_tx = 0
att_rx = 0;
bands = [78];
max_pdschReferenceSignalPower = -27;
max_rxgain = 75;
eNB_instances = [0];
#beamforming 1x4 matrix:
bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000];
#clock_src = "external";
sdr_addrs = "mgmt_addr=172.21.19.14,addr=192.168.10.2,second_addr=192.168.20.2,clock_source=internal,time_source=internal"
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
rfsimulator :
{
serveraddr = "server";
serverport = "4043";
options = (); #("saviq"); or/and "chanmod"
modelname = "AWGN";
IQfile = "/tmp/rfsimulator.iqs";
};
security = {
# preferred ciphering algorithms
# the first one of the list that an UE supports in chosen

View File

@@ -0,0 +1,268 @@
Active_gNBs = ( "gNB-OAI");
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity = "none";
gNBs =
(
{
////////// Identification parameters:
gNB_ID = 0xe00;
gNB_name = "gNB-OAI";
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 40960;
plmn_list = ({
mcc = 208;
mnc = 95;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x1; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
nr_cellid = 12345678L;
////////// Physical parameters:
ssb_SubcarrierOffset = 0;
pdsch_AntennaPorts = 2;
pusch_AntennaPorts = 2;
do_CSIRS = 1;
ul_prbblacklist = "51,52,53,54"
min_rxtxtime = 6;
pdcch_ConfigSIB1 = (
{
controlResourceSetZero = 12;
searchSpaceZero = 0;
}
);
servingCellConfigCommon = (
{
#spCellConfigCommon
physCellId = 0;
# downlinkConfigCommon
#frequencyInfoDL
# this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP)
absoluteFrequencySSB = 641280;
dl_frequencyBand = 78;
# this is 3600 MHz
dl_absoluteFrequencyPointA = 640008;
#scs-SpecificCarrierList
dl_offstToCarrier = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
dl_subcarrierSpacing = 1;
dl_carrierBandwidth = 106;
#initialDownlinkBWP
#genericParameters
# this is RBstart=27,L=48 (275*(L-1))+RBstart
initialDLBWPlocationAndBandwidth = 12952; # 6366 12925 12956 28875 12952
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialDLBWPsubcarrierSpacing = 1;
#pdcch-ConfigCommon
initialDLBWPcontrolResourceSetZero = 12;
initialDLBWPsearchSpaceZero = 0;
#uplinkConfigCommon
#frequencyInfoUL
ul_frequencyBand = 78;
#scs-SpecificCarrierList
ul_offstToCarrier = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
ul_subcarrierSpacing = 1;
ul_carrierBandwidth = 106;
pMax = 20;
#initialUplinkBWP
#genericParameters
initialULBWPlocationAndBandwidth = 12952;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialULBWPsubcarrierSpacing = 1;
#rach-ConfigCommon
#rach-ConfigGeneric
prach_ConfigurationIndex = 98;
#prach_msg1_FDM
#0 = one, 1=two, 2=four, 3=eight
prach_msg1_FDM = 0;
prach_msg1_FrequencyStart = 0;
zeroCorrelationZoneConfig = 13;
preambleReceivedTargetPower = -96;
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
preambleTransMax = 6;
#powerRampingStep
# 0=dB0,1=dB2,2=dB4,3=dB6
powerRampingStep = 1;
#ra_ReponseWindow
#1,2,4,8,10,20,40,80
ra_ResponseWindow = 4;
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
#oneHalf (0..15) 4,8,12,16,...60,64
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14;
#ra_ContentionResolutionTimer
#(0..7) 8,16,24,32,40,48,56,64
ra_ContentionResolutionTimer = 7;
rsrp_ThresholdSSB = 19;
#prach-RootSequenceIndex_PR
#1 = 839, 2 = 139
prach_RootSequenceIndex_PR = 2;
prach_RootSequenceIndex = 1;
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
#
msg1_SubcarrierSpacing = 1,
# restrictedSetConfig
# 0=unrestricted, 1=restricted type A, 2=restricted type B
restrictedSetConfig = 0,
msg3_DeltaPreamble = 1;
p0_NominalWithGrant =-90;
# pucch-ConfigCommon setup :
# pucchGroupHopping
# 0 = neither, 1= group hopping, 2=sequence hopping
pucchGroupHopping = 0;
hoppingId = 40;
p0_nominal = -90;
# ssb_PositionsInBurs_BitmapPR
# 1=short, 2=medium, 3=long
ssb_PositionsInBurst_PR = 2;
ssb_PositionsInBurst_Bitmap = 1;
# ssb_periodicityServingCell
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
ssb_periodicityServingCell = 2;
# dmrs_TypeA_position
# 0 = pos2, 1 = pos3
dmrs_TypeA_Position = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
subcarrierSpacing = 1;
#tdd-UL-DL-ConfigurationCommon
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
referenceSubcarrierSpacing = 1;
# pattern1
# dl_UL_TransmissionPeriodicity
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
dl_UL_TransmissionPeriodicity = 6;
nrofDownlinkSlots = 7;
nrofDownlinkSymbols = 6;
nrofUplinkSlots = 2;
nrofUplinkSymbols = 4;
ssPBCH_BlockPower = -25;
}
);
# ------- SCTP definitions
SCTP :
{
# Number of streams to use in input/output
SCTP_INSTREAMS = 2;
SCTP_OUTSTREAMS = 2;
};
////////// AMF parameters:
amf_ip_address = ( { ipv4 = "192.168.70.132";
ipv6 = "192:168:30::17";
active = "yes";
preference = "ipv4";
}
);
NETWORK_INTERFACES :
{
GNB_INTERFACE_NAME_FOR_NG_AMF = "ctrl0";
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.16.0.1";
GNB_INTERFACE_NAME_FOR_NGU = "ctrl0";
GNB_IPV4_ADDRESS_FOR_NGU = "172.16.0.1";
GNB_PORT_FOR_NGU = 2152; # Spec 2152
};
}
);
MACRLCs = (
{
num_cc = 1;
local_s_if_name = "lo:";
remote_s_address = "127.0.0.1"; // pnf addr [!]
local_s_address = "127.0.0.2"; // vnf addr
local_s_portc = 50601; // vnf p5 port
remote_s_portc = 50600; // pnf p5 port [!]
local_s_portd = 50611; // vnf p7 port [!]
remote_s_portd = 50610; // pnf p7 port [!]
tr_s_preference = "nfapi";
tr_n_preference = "local_RRC";
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
rfsimulator :
{
serveraddr = "server";
serverport = "4043";
options = (); #("saviq"); or/and "chanmod"
modelname = "AWGN";
IQfile = "/tmp/rfsimulator.iqs";
};
security = {
# preferred ciphering algorithms
# the first one of the list that an UE supports in chosen
# valid values: nea0, nea1, nea2, nea3
ciphering_algorithms = ( "nea0" );
# preferred integrity algorithms
# the first one of the list that an UE supports in chosen
# valid values: nia0, nia1, nia2, nia3
integrity_algorithms = ( "nia2", "nia0" );
# setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
# what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
drb_ciphering = "yes";
drb_integrity = "no";
};
log_config :
{
global_log_level ="analysis";
hw_log_level ="analysis";
phy_log_level ="analysis";
mac_log_level ="analysis";
rlc_log_level ="analysis";
pdcp_log_level ="analysis";
rrc_log_level ="analysis";
ngap_log_level ="analysis";
};

View File

@@ -17,29 +17,16 @@ nssai_sst=222;
nssai_sd=123;
}
L1s = (
MACRLCs = (
{
num_cc = 1;
tr_n_preference = "nfapi";
local_n_if_name = "ens3";
remote_n_address = "127.0.0.1"; //Proxy IP
local_n_address = "127.0.0.1";
local_n_portc = 50600;
remote_n_portc = 50601;
local_n_portd = 50610;
remote_n_portd = 50611;
}
);
RUs = (
{
local_rf = "yes"
nb_tx = 1
nb_rx = 1
att_tx = 90
att_rx = 0;
bands = [7,38,42,43];
max_pdschReferenceSignalPower = -27;
max_rxgain = 125;
}
num_cc = 1;
tr_n_preference = "nfapi";
local_n_if_name = "ens3";
remote_n_address = "127.0.0.1"; //Proxy IP
local_n_address = "127.0.0.1";
local_n_portc = 50600;
remote_n_portc = 50601;
local_n_portd = 50610;
remote_n_portd = 50611;
}
);

View File

@@ -0,0 +1,247 @@
Active_eNBs = ( "eNB-Eurecom-LTEBox");
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity = "none";
eNBs =
(
{
////////// Identification parameters:
eNB_ID = 0xe01;
cell_type = "CELL_MACRO_ENB";
eNB_name = "eNB-Eurecom-LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 5;
plmn_list = ( { mcc = 320; mnc = 230; mnc_length = 3; } );
tr_s_preference = "local_mac"
////////// Physical parameters:
component_carriers = (
{
node_function = "3GPP_eNODEB";
node_timing = "synch_to_ext_device";
node_synch_ref = 0;
frame_type = "FDD";
tdd_config = 3;
tdd_config_s = 0;
prefix_type = "NORMAL";
eutra_band = 7;
downlink_frequency = 2685000000L;
uplink_frequency_offset = -120000000;
Nid_cell = 1;
N_RB_DL = 50;
Nid_cell_mbsfn = 0;
nb_antenna_ports = 1;
nb_antennas_tx = 1;
nb_antennas_rx = 1;
tx_gain = 90;
rx_gain = 125;
pbch_repetition = "FALSE";
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 = 0;
pucch_nCS_AN = 0;
pucch_n1_AN = 0;
pdsch_referenceSignalPower = -27;
pdsch_p_b = 0;
pusch_n_SB = 1;
pusch_enable64QAM = "DISABLE";
pusch_hoppingMode = "interSubFrame";
pusch_hoppingOffset = 0;
pusch_groupHoppingEnabled = "ENABLE";
pusch_groupAssignment = 0;
pusch_sequenceHoppingEnabled = "DISABLE";
pusch_nDMRS1 = 1;
phich_duration = "NORMAL";
phich_resource = "ONESIXTH";
srs_enable = "DISABLE";
/* srs_BandwidthConfig =;
srs_SubframeConfig =;
srs_ackNackST =;
srs_MaxUpPts =;*/
pusch_p0_Nominal = -96;
pusch_alpha = "AL1";
pucch_p0_Nominal = -104;
msg3_delta_Preamble = 6;
pucch_deltaF_Format1 = "deltaF2";
pucch_deltaF_Format1b = "deltaF3";
pucch_deltaF_Format2 = "deltaF0";
pucch_deltaF_Format2a = "deltaF0";
pucch_deltaF_Format2b = "deltaF0";
rach_numberOfRA_Preambles = 64;
rach_preamblesGroupAConfig = "DISABLE";
/*
rach_sizeOfRA_PreamblesGroupA = ;
rach_messageSizeGroupA = ;
rach_messagePowerOffsetGroupB = ;
*/
rach_powerRampingStep = 4;
rach_preambleInitialReceivedTargetPower = -108;
rach_preambleTransMax = 10;
rach_raResponseWindowSize = 10;
rach_macContentionResolutionTimer = 48;
rach_maxHARQ_Msg3Tx = 4;
pcch_default_PagingCycle = 128;
pcch_nB = "oneT";
bcch_modificationPeriodCoeff = 2;
ue_TimersAndConstants_t300 = 1000;
ue_TimersAndConstants_t301 = 1000;
ue_TimersAndConstants_t310 = 1000;
ue_TimersAndConstants_t311 = 10000;
ue_TimersAndConstants_n310 = 20;
ue_TimersAndConstants_n311 = 1;
ue_TransmissionMode = 1;
//Parameters for SIB18
rxPool_sc_CP_Len = "normal";
rxPool_sc_Period = "sf40";
rxPool_data_CP_Len = "normal";
rxPool_ResourceConfig_prb_Num = 20;
rxPool_ResourceConfig_prb_Start = 5;
rxPool_ResourceConfig_prb_End = 44;
rxPool_ResourceConfig_offsetIndicator_present = "prSmall";
rxPool_ResourceConfig_offsetIndicator_choice = 0;
rxPool_ResourceConfig_subframeBitmap_present = "prBs40";
rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000";
rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5;
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0;
/* rxPool_dataHoppingConfig_hoppingParameter = 0;
rxPool_dataHoppingConfig_numSubbands = "ns1";
rxPool_dataHoppingConfig_rbOffset = 0;
rxPool_commTxResourceUC-ReqAllowed = "TRUE";
*/
// Parameters for SIB19
discRxPool_cp_Len = "normal"
discRxPool_discPeriod = "rf32"
discRxPool_numRetx = 1;
discRxPool_numRepetition = 2;
discRxPool_ResourceConfig_prb_Num = 5;
discRxPool_ResourceConfig_prb_Start = 3;
discRxPool_ResourceConfig_prb_End = 21;
discRxPool_ResourceConfig_offsetIndicator_present = "prSmall";
discRxPool_ResourceConfig_offsetIndicator_choice = 0;
discRxPool_ResourceConfig_subframeBitmap_present = "prBs40";
discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff";
discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5;
discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0;
}
);
srb1_parameters :
{
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
timer_poll_retransmit = 80;
# timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
timer_reordering = 35;
# timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
timer_status_prohibit = 0;
# poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
poll_pdu = 4;
# poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
poll_byte = 99999;
# max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
max_retx_threshold = 4;
}
# ------- SCTP definitions
SCTP :
{
# Number of streams to use in input/output
SCTP_INSTREAMS = 2;
SCTP_OUTSTREAMS = 2;
};
////////// MME parameters:
mme_ip_address = ( { ipv4 = "192.168.61.195";
ipv6 = "192:168:30::17";
port = 36412 ;
active = "yes";
preference = "ipv4";
}
);
enable_measurement_reports = "yes";
///X2
enable_x2 = "yes";
t_reloc_prep = 1000; /* unit: millisecond */
tx2_reloc_overall = 2000; /* unit: millisecond */
t_dc_prep = 1000; /* unit: millisecond */
t_dc_overall = 2000; /* unit: millisecond */
target_enb_x2_ip_address = (
{ ipv4 = "172.16.0.1"; # rrc.band7.tm1.nfapi.conf:line 201
ipv6 = "192:168:30::17";
preference = "ipv4";
}
);
NETWORK_INTERFACES :
{
ENB_INTERFACE_NAME_FOR_S1_MME = "ctrl0";
ENB_IPV4_ADDRESS_FOR_S1_MME = "172.16.0.2";
ENB_INTERFACE_NAME_FOR_S1U = "ctrl0";
ENB_IPV4_ADDRESS_FOR_S1U = "172.16.0.2";
ENB_PORT_FOR_S1U = 2152; # Spec 2152
ENB_IPV4_ADDRESS_FOR_X2C = "172.16.0.2";
ENB_PORT_FOR_X2C = 36422; # Spec 36422
};
}
);
MACRLCs = (
{
num_cc = 1;
local_s_if_name = "lo";
remote_s_address = "127.0.0.1";
local_s_address = "127.0.0.2";
local_s_portc = 50201;
remote_s_portc = 50200;
local_s_portd = 50211;
remote_s_portd = 50210;
tr_s_preference = "nfapi";
tr_n_preference = "local_RRC";
scheduler_mode = "fairRR";
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_RU_L1_SPLIT";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
log_config =
{
global_log_level ="analysis";
hw_log_level ="analysis";
phy_log_level ="analysis";
mac_log_level ="analysis";
rlc_log_level ="analysis";
pdcp_log_level ="analysis";
rrc_log_level ="analysis";
};

View File

@@ -218,16 +218,6 @@ MACRLCs = (
}
)
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
log_config =
{
global_log_level ="info";

View File

@@ -11,22 +11,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({
mcc = 208;
mnc = 99;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x1; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1 }) });
nr_cellid = 12345678L;
@@ -215,52 +200,6 @@ MACRLCs = (
}
);
L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
thread_pool_size = 8;
prach_dtx_threshold = 120;
pucch0_dtx_threshold = 150;
}
);
RUs = (
{
local_rf = "yes"
nb_tx = 1
nb_rx = 1
att_tx = 0
att_rx = 0;
bands = [78];
max_pdschReferenceSignalPower = -27;
max_rxgain = 75;
eNB_instances = [0];
#beamforming 1x4 matrix:
bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000];
#clock_src = "external";
sdr_addrs = "mgmt_addr=172.21.19.14,addr=192.168.10.2,second_addr=192.168.20.2,clock_source=internal,time_source=internal"
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_SINGLE_THREAD";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
rfsimulator :
{
serveraddr = "server";
serverport = "4043";
options = (); #("saviq"); or/and "chanmod"
modelname = "AWGN";
IQfile = "/tmp/rfsimulator.iqs";
};
security = {
# preferred ciphering algorithms
# the first one of the list that an UE supports in chosen

View File

@@ -17,29 +17,17 @@ nssai_sst=1;
nssai_sd=1;
}
L1s = (
MACRLCs = (
{
num_cc = 1;
tr_n_preference = "nfapi";
local_n_if_name = "lo:";
remote_n_address = "127.0.0.1"; //Proxy IP
local_n_address = "127.0.0.1";
local_n_portc = 50600;
remote_n_portc = 50601;
local_n_portd = 50610;
remote_n_portd = 50611;
}
num_cc = 1;
tr_n_preference = "nfapi";
local_n_if_name = "lo:";
remote_n_address = "127.0.0.1"; //Proxy IP
local_n_address = "127.0.0.1";
local_n_portc = 50600;
remote_n_portc = 50601;
local_n_portd = 50610;
remote_n_portd = 50611;
}
);
RUs = (
{
local_rf = "yes"
nb_tx = 1
nb_rx = 1
att_tx = 90
att_rx = 0;
bands = [7,38,42,43];
max_pdschReferenceSignalPower = -27;
max_rxgain = 125;
}
);

View File

@@ -180,7 +180,7 @@ eNBs =
}
);
enable_measurement_reports = "no";
enable_measurement_reports = "yes";
///X2
enable_x2 = "yes";

View File

@@ -0,0 +1,248 @@
Active_eNBs = ( "eNB-Eurecom-LTEBox");
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity = "none";
eNBs =
(
{
////////// Identification parameters:
eNB_ID = 0xe01;
cell_type = "CELL_MACRO_ENB";
eNB_name = "eNB-Eurecom-LTEBox";
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 5;
plmn_list = ( { mcc = 320; mnc = 230; mnc_length = 3; } );
tr_s_preference = "local_mac"
////////// Physical parameters:
component_carriers = (
{
node_function = "3GPP_eNODEB";
node_timing = "synch_to_ext_device";
node_synch_ref = 0;
frame_type = "FDD";
tdd_config = 3;
tdd_config_s = 0;
prefix_type = "NORMAL";
eutra_band = 7;
downlink_frequency = 2685000000L;
uplink_frequency_offset = -120000000;
Nid_cell = 1;
N_RB_DL = 50;
Nid_cell_mbsfn = 0;
nb_antenna_ports = 1;
nb_antennas_tx = 1;
nb_antennas_rx = 1;
tx_gain = 90;
rx_gain = 125;
pbch_repetition = "FALSE";
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 = 0;
pucch_nCS_AN = 0;
pucch_n1_AN = 0;
pdsch_referenceSignalPower = -27;
pdsch_p_b = 0;
pusch_n_SB = 1;
pusch_enable64QAM = "DISABLE";
pusch_hoppingMode = "interSubFrame";
pusch_hoppingOffset = 0;
pusch_groupHoppingEnabled = "ENABLE";
pusch_groupAssignment = 0;
pusch_sequenceHoppingEnabled = "DISABLE";
pusch_nDMRS1 = 1;
phich_duration = "NORMAL";
phich_resource = "ONESIXTH";
srs_enable = "DISABLE";
/* srs_BandwidthConfig =;
srs_SubframeConfig =;
srs_ackNackST =;
srs_MaxUpPts =;*/
pusch_p0_Nominal = -96;
pusch_alpha = "AL1";
pucch_p0_Nominal = -104;
msg3_delta_Preamble = 6;
pucch_deltaF_Format1 = "deltaF2";
pucch_deltaF_Format1b = "deltaF3";
pucch_deltaF_Format2 = "deltaF0";
pucch_deltaF_Format2a = "deltaF0";
pucch_deltaF_Format2b = "deltaF0";
rach_numberOfRA_Preambles = 64;
rach_preamblesGroupAConfig = "DISABLE";
/*
rach_sizeOfRA_PreamblesGroupA = ;
rach_messageSizeGroupA = ;
rach_messagePowerOffsetGroupB = ;
*/
rach_powerRampingStep = 4;
rach_preambleInitialReceivedTargetPower = -108;
rach_preambleTransMax = 10;
rach_raResponseWindowSize = 10;
rach_macContentionResolutionTimer = 48;
rach_maxHARQ_Msg3Tx = 4;
pcch_default_PagingCycle = 128;
pcch_nB = "oneT";
bcch_modificationPeriodCoeff = 2;
ue_TimersAndConstants_t300 = 1000;
ue_TimersAndConstants_t301 = 1000;
ue_TimersAndConstants_t310 = 1000;
ue_TimersAndConstants_t311 = 10000;
ue_TimersAndConstants_n310 = 20;
ue_TimersAndConstants_n311 = 1;
ue_TransmissionMode = 1;
//Parameters for SIB18
rxPool_sc_CP_Len = "normal";
rxPool_sc_Period = "sf40";
rxPool_data_CP_Len = "normal";
rxPool_ResourceConfig_prb_Num = 20;
rxPool_ResourceConfig_prb_Start = 5;
rxPool_ResourceConfig_prb_End = 44;
rxPool_ResourceConfig_offsetIndicator_present = "prSmall";
rxPool_ResourceConfig_offsetIndicator_choice = 0;
rxPool_ResourceConfig_subframeBitmap_present = "prBs40";
rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000";
rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5;
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0;
/* rxPool_dataHoppingConfig_hoppingParameter = 0;
rxPool_dataHoppingConfig_numSubbands = "ns1";
rxPool_dataHoppingConfig_rbOffset = 0;
rxPool_commTxResourceUC-ReqAllowed = "TRUE";
*/
// Parameters for SIB19
discRxPool_cp_Len = "normal"
discRxPool_discPeriod = "rf32"
discRxPool_numRetx = 1;
discRxPool_numRepetition = 2;
discRxPool_ResourceConfig_prb_Num = 5;
discRxPool_ResourceConfig_prb_Start = 3;
discRxPool_ResourceConfig_prb_End = 21;
discRxPool_ResourceConfig_offsetIndicator_present = "prSmall";
discRxPool_ResourceConfig_offsetIndicator_choice = 0;
discRxPool_ResourceConfig_subframeBitmap_present = "prBs40";
discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff";
discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5;
discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0;
}
);
srb1_parameters :
{
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
timer_poll_retransmit = 80;
# timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
timer_reordering = 35;
# timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
timer_status_prohibit = 0;
# poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
poll_pdu = 4;
# poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
poll_byte = 99999;
# max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
max_retx_threshold = 4;
}
# ------- SCTP definitions
SCTP :
{
# Number of streams to use in input/output
SCTP_INSTREAMS = 2;
SCTP_OUTSTREAMS = 2;
};
////////// MME parameters:
mme_ip_address = ( { ipv4 = "192.168.61.3";
ipv6 = "192:168:30::17";
port = 36412 ;
active = "yes";
preference = "ipv4";
}
);
enable_measurement_reports = "yes";
///X2
enable_x2 = "yes";
t_reloc_prep = 1000; /* unit: millisecond */
tx2_reloc_overall = 2000; /* unit: millisecond */
t_dc_prep = 1000; /* unit: millisecond */
t_dc_overall = 2000; /* unit: millisecond */
target_enb_x2_ip_address = (
{ ipv4 = "127.0.0.1"; # proxy_rrc.band7.tm1.nfapi.conf:line 201
ipv6 = "192:168:30::17";
preference = "ipv4";
}
);
NETWORK_INTERFACES :
{ # All of these have to be IP addr of gNB
# if in CORE container, make it 172.16.0.X
# if not launched in CORE, can set to lo (127.0.0.2)
ENB_INTERFACE_NAME_FOR_S1_MME = "lo:";
ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.2";
ENB_INTERFACE_NAME_FOR_S1U = "lo:";
ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.2";
ENB_PORT_FOR_S1U = 2152; # Spec 2152
ENB_IPV4_ADDRESS_FOR_X2C = "127.0.0.2";
ENB_PORT_FOR_X2C = 36422; # Spec 36422
};
}
);
MACRLCs = (
{
num_cc = 1;
local_s_if_name = "lo:";
remote_s_address = "127.0.0.1";
local_s_address = "127.0.0.2";
local_s_portc = 50201;
remote_s_portc = 50200;
local_s_portd = 50211;
remote_s_portd = 50210;
tr_s_preference = "nfapi";
tr_n_preference = "local_RRC";
scheduler_mode = "fairRR";
}
);
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_RU_L1_SPLIT";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
log_config =
{
global_log_level ="info";
hw_log_level ="info";
phy_log_level ="info";
mac_log_level ="info";
rlc_log_level ="debug";
pdcp_log_level ="debug";
rrc_log_level ="debug";
};

View File

@@ -235,16 +235,6 @@ MACRLCs = (
}
)
THREAD_STRUCT = (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config = "WORKER_ENABLE";
}
);
log_config =
{
global_log_level ="info";

View File

@@ -7,7 +7,7 @@ gNBs =
(
{
////////// Identification parameters:
gNB_CU_ID = 0xe00;
gNB_ID = 0xe00;
# cell_type = "CELL_MACRO_GNB";
@@ -15,22 +15,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({
mcc = 208;
mnc = 99;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x010203; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1 }) });
nr_cellid = 12345678L;

View File

@@ -6,7 +6,7 @@ gNBs =
(
{
////////// Identification parameters:
gNB_CU_ID = 0xe00;
gNB_ID = 0xe00;
# cell_type = "CELL_MACRO_GNB";
@@ -14,22 +14,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({
mcc = 208;
mnc = 99;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x010203; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1 }) });
nr_cellid = 12345678L;
@@ -204,8 +189,7 @@ L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
thread_pool_size = 8;
prach_dtx_threshold = 120;
prach_dtx_threshold = 200;
pucch0_dtx_threshold = 150;
ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
}

View File

@@ -6,7 +6,7 @@ gNBs =
(
{
////////// Identification parameters:
gNB_CU_ID = 0xe00;
gNB_ID = 0xe00;
# cell_type = "CELL_MACRO_GNB";
@@ -15,21 +15,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({
mcc = 208;
mnc = 99;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x010203; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1 }) });
nr_cellid = 12345678L
@@ -231,7 +217,6 @@ L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
thread_pool_size = 8;
prach_dtx_threshold = 120;
pucch0_dtx_threshold = 150;
}

View File

@@ -7,7 +7,7 @@ gNBs =
(
{
////////// Identification parameters:
gNB_CU_ID = 0xe00;
gNB_ID = 0xe00;
# cell_type = "CELL_MACRO_GNB";
@@ -16,21 +16,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({
mcc = 208;
mnc = 99;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x010203; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1 }) });
nr_cellid = 12345678L
@@ -228,7 +214,6 @@ L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
thread_pool_size = 8;
prach_dtx_threshold = 120;
}
);

View File

@@ -211,7 +211,6 @@ L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
thread_pool_size = 8;
ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
}
);

View File

@@ -181,7 +181,6 @@ L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
thread_pool_size = 8;
ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
}
);

View File

@@ -210,7 +210,6 @@ L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
thread_pool_size = 8;
prach_dtx_threshold = 120;
pucch0_dtx_threshold = 80;
}

View File

@@ -6,7 +6,7 @@ gNBs =
(
{
////////// Identification parameters:
gNB_CU_ID = 0xe00;
gNB_ID = 0xe00;
# cell_type = "CELL_MACRO_GNB";
@@ -15,25 +15,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({
mcc = 208;
mnc = 97;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x1; // 0 false, else true
},
{
sst = 1;
sd = 0x010203; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ({ sst = 1, sd = 0x010203 }) });
nr_cellid = 12345678L
@@ -237,7 +219,6 @@ L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
thread_pool_size = 8;
prach_dtx_threshold = 120;
# pucch0_dtx_threshold = 150;
}

View File

@@ -6,7 +6,7 @@ gNBs =
(
{
////////// Identification parameters:
gNB_CU_ID = 0xe00;
gNB_ID = 0xe00;
# cell_type = "CELL_MACRO_GNB";
@@ -15,21 +15,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({
mcc = 208;
mnc = 97;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x010203; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ({ sst = 1 }) });
nr_cellid = 12345678L
@@ -234,7 +220,6 @@ L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
thread_pool_size = 8;
prach_dtx_threshold = 120;
# pucch0_dtx_threshold = 150;
}

View File

@@ -6,7 +6,7 @@ gNBs =
(
{
////////// Identification parameters:
gNB_CU_ID = 0xe00;
gNB_ID = 0xe00;
# cell_type = "CELL_MACRO_GNB";
@@ -15,21 +15,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({
mcc = 208;
mnc = 97;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x010203; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ({ sst = 1, sd = 0x010203 }) });
nr_cellid = 12345678L
@@ -233,7 +219,6 @@ L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
thread_pool_size = 8;
prach_dtx_threshold = 120;
# pucch0_dtx_threshold = 150;
}

View File

@@ -6,7 +6,7 @@ gNBs =
(
{
////////// Identification parameters:
gNB_CU_ID = 0xe00;
gNB_ID = 0xe00;
# cell_type = "CELL_MACRO_GNB";
@@ -15,21 +15,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({
mcc = 208;
mnc = 97;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x010203; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ({ sst = 1 }) });
nr_cellid = 12345678L
@@ -237,7 +223,7 @@ L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
prach_dtx_threshold = 120;
prach_dtx_threshold = 200;
# pucch0_dtx_threshold = 150;
}
);

View File

@@ -6,7 +6,7 @@ gNBs =
(
{
////////// Identification parameters:
gNB_CU_ID = 0xe00;
gNB_ID = 0xe00;
# cell_type = "CELL_MACRO_GNB";
@@ -15,21 +15,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({
mcc = 208;
mnc = 97;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x010203; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ({ sst = 1, sd = 0x010203 }) });
nr_cellid = 12345678L
@@ -235,7 +221,6 @@ L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
thread_pool_size = 8;
prach_dtx_threshold = 120;
# pucch0_dtx_threshold = 150;
}

View File

@@ -194,7 +194,6 @@ L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
thread_pool_size = 8;
}
);

View File

@@ -210,7 +210,6 @@ L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
thread_pool_size = 6;
ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
}
);

View File

@@ -211,7 +211,6 @@ L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
thread_pool_size = 6;
}
);

View File

@@ -11,28 +11,14 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({
mcc = 208;
mnc = 95;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x1; // 0 false, else true
},
{
sst = 2;
sd = 2; // 0 false, else true
}
);
});
plmn_list = ({ mcc = 208; mnc = 95; mnc_length = 2; snssaiList = ({ sst = 1 }) });
nr_cellid = 12345678L;
////////// Physical parameters:
min_rxtxtime = 6;
enable_sdap = 1;
pdcch_ConfigSIB1 = (
{
@@ -217,6 +203,7 @@ L1s = (
num_cc = 1;
tr_n_preference = "local_mac";
pusch_proc_threads = 8;
prach_dtx_threshold = 200;
ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
}
);

View File

@@ -11,18 +11,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({
mcc = 222;
mnc = 01;
mnc_length = 2;
snssaiList = (
{
sst = 1;
#sd = 0x1; // 0 false, else true
}
);
});
plmn_list = ({ mcc = 222; mnc = 01; mnc_length = 2; snssaiList = ({ sst = 1; }) });
nr_cellid = 12345678L;

View File

@@ -11,22 +11,7 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({
mcc = 208;
mnc = 99;
mnc_length = 2;
snssaiList = (
{
sst = 1;
sd = 0x1; // 0 false, else true
},
{
sst = 1;
sd = 0x112233; // 0 false, else true
}
);
});
plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1 }) });
nr_cellid = 12345678L;

View File

@@ -4,5 +4,4 @@ uicc0 = {
opc= "@OPC@";
dnn= "@DNN@";
nssai_sst=@NSSAI_SST@;
nssai_sd=@NSSAI_SD@;
}

View File

@@ -209,8 +209,8 @@ RUs = (
tr_preference = "udp_if4p5"
nb_tx = 1
nb_rx = 1
att_tx = 0
att_rx = 0;
att_tx = 6
att_rx = 6;
eNB_instances = [0];
}
);

View File

@@ -209,8 +209,8 @@ RUs = (
tr_preference = "udp_if4p5"
nb_tx = 1
nb_rx = 1
att_tx = 0
att_rx = 0;
att_tx = 6
att_rx = 6;
eNB_instances = [0];
}
);

View File

@@ -46,6 +46,7 @@ ENB_PROCESS_NOLOGFILE_TO_ANALYZE = -14
ENB_PROCESS_SLAVE_RRU_NOT_SYNCED = -15
ENB_REAL_TIME_PROCESSING_ISSUE = -16
ENB_RETX_ISSUE = -17
ENB_SHUTDOWN_NO_BYE = -18
HSS_PROCESS_FAILED = -2
HSS_PROCESS_OK = +2
MME_PROCESS_FAILED = -3
@@ -78,3 +79,7 @@ X2_HO_REQ_STATE__TARGET_RECEIVES_REQ = 1
X2_HO_REQ_STATE__TARGET_RRC_RECFG_COMPLETE = 2
X2_HO_REQ_STATE__TARGET_SENDS_SWITCH_REQ = 3
X2_HO_REQ_STATE__SOURCE_RECEIVES_REQ_ACK = 10
# placeholder for a "don't care" password to gradually transition to
# passwordless CI
CI_NO_PASSWORD = "CIPASSWORDDONTCARE"

View File

@@ -0,0 +1,34 @@
#this is a configuration file
#used to build real time processing statistics
#for 5G NR phy test (gNB terminate)
Title : Processing Time (us)
ColNames :
- Metric
- Average; Max; Count
- Average vs Reference Deviation (Reference Value; Acceptability Threshold)
Ref :
feprx : 48.0
feptx_prec : 16.0
feptx_ofdm : 35.0
feptx_total : 59.0
L1 Tx processing : 210.0
DLSCH encoding : 129.0
L1 Rx processing : 287.0
PUSCH inner-receiver : 166.0
PUSCH decoding : 176.0
Schedule Response : 42.0
DL & UL scheduling timing : 13.0
UL Indication : 55.0
Threshold :
feprx : 1.25
feptx_prec : 1.25
feptx_ofdm : 1.25
feptx_total : 1.25
L1 Tx processing : 1.25
DLSCH encoding : 1.25
L1 Rx processing : 1.25
PUSCH inner-receiver : 1.25
PUSCH decoding : 1.25
Schedule Response : 1.25
DL & UL scheduling timing : 1.25
UL Indication : 1.25

View File

@@ -7,18 +7,18 @@ ColNames :
- Average; Max; Count
- Average vs Reference Deviation (Reference Value; Acceptability Threshold)
Ref :
feprx : 60.0
feptx_prec : 8.0
feptx_ofdm : 50.0
feptx_total : 75.0
L1 Tx processing : 300.0
DLSCH encoding : 230.0
L1 Rx processing : 175.0
PUSCH inner-receiver : 100.0
#PUSCH decoding : 180.0
PUSCH decoding : 240.0
DL & UL scheduling timing : 37.0
UL Indication : 38.0
feprx : 53.0
feptx_prec : 20.0
feptx_ofdm : 37.0
feptx_total : 62.0
L1 Tx processing : 170.0
DLSCH encoding : 118.0
L1 Rx processing : 223.0
PUSCH inner-receiver : 107.0
PUSCH decoding : 170.0
Schedule Response : 15.0
DL & UL scheduling timing : 10.0
UL Indication : 27.0
Threshold :
feprx : 1.25
feptx_prec : 1.25
@@ -29,5 +29,6 @@ Threshold :
L1 Rx processing : 1.25
PUSCH inner-receiver : 1.25
PUSCH decoding : 1.25
Schedule Response : 1.25
DL & UL scheduling timing : 1.25
UL Indication : 1.25

View File

@@ -8,7 +8,6 @@ ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
DEBIAN_FRONTEND=noninteractive apt-get install --yes \
astyle \
gawk \
git
@@ -18,9 +17,6 @@ COPY . .
RUN /bin/bash -c "if [[ -v MERGE_REQUEST ]]; then echo 'Source Branch = $SRC_BRANCH'; echo 'Target Branch = $TARGET_BRANCH'; else echo 'Push to develop'; fi"
RUN /bin/bash -c "if [[ -v MERGE_REQUEST ]]; then ./ci-scripts/checkCodingFormattingRules.sh --src-branch $SRC_BRANCH --target-branch $TARGET_BRANCH; else ./ci-scripts/checkCodingFormattingRules.sh; fi"
RUN echo "=== Files not properly formatted ===" && \
/bin/bash -c "if [[ -f oai_rules_result_list.txt ]]; then cat oai_rules_result_list.txt; fi"
RUN echo "=== Files with incorrect define protection ===" && \
/bin/bash -c "if [[ -f header-files-w-incorrect-define.txt ]]; then cat header-files-w-incorrect-define.txt; fi"

View File

@@ -253,7 +253,7 @@ class EPCManagement():
logging.debug('Starting OAI CN5G')
mySSH.command('if [ -d ' + self.SourceCodePath + '/scripts ]; then echo ' + self.Password + ' | sudo -S rm -Rf ' + self.SourceCodePath + '/scripts ; fi', '\$', 5)
mySSH.command('mkdir -p ' + self.SourceCodePath + '/scripts', '\$', 5)
mySSH.command('cd /opt/oai-cn5g-fed-v1.3/docker-compose', '\$', 5)
mySSH.command('cd /opt/oai-cn5g-fed-v1.4/docker-compose', '\$', 5)
mySSH.command('python3 ./core-network.py '+self.cfgDeploy, '\$', 60)
if re.search('start-mini-as-ue', self.cfgDeploy):
dFile = 'docker-compose-mini-nrf-asue.yaml'
@@ -537,7 +537,7 @@ class EPCManagement():
mySSH.command('docker logs ' + c + ' > ' + self.SourceCodePath + '/logs/' + c + '.log', '\$', 5)
logging.debug('Terminating OAI CN5G')
mySSH.command('cd /opt/oai-cn5g-fed-v1.3/docker-compose', '\$', 5)
mySSH.command('cd /opt/oai-cn5g-fed-v1.4/docker-compose', '\$', 5)
mySSH.command('python3 ./core-network.py '+self.cfgUnDeploy, '\$', 60)
mySSH.command('docker volume prune --force || true', '\$', 60)
time.sleep(2)

View File

@@ -45,6 +45,7 @@ import cls_containerize #class Containerize for all container-based oper
import cls_static_code_analysis #class for static code analysis
import cls_ci_ueinfra #class defining the multi Ue infrastrucure
import cls_physim1 #class PhySim for physical simulators deploy and run
import cls_cluster # class for building/deploying on cluster
import sshconnection
import epc
@@ -102,20 +103,17 @@ def AssignParams(params_dict):
def GetParametersFromXML(action):
if action == 'Build_eNB' or action == 'Build_Image' or action == 'Build_Proxy':
if action == 'Build_eNB' or action == 'Build_Image' or action == 'Build_Proxy' or action == "Build_Cluster_Image":
RAN.Build_eNB_args=test.findtext('Build_eNB_args')
CONTAINERS.imageKind=test.findtext('kind')
forced_workspace_cleanup = test.findtext('forced_workspace_cleanup')
if (forced_workspace_cleanup is None):
RAN.Build_eNB_forced_workspace_cleanup=False
CONTAINERS.forcedWorkspaceCleanup=False
else:
if re.match('true', forced_workspace_cleanup, re.IGNORECASE):
RAN.Build_eNB_forced_workspace_cleanup=True
CONTAINERS.forcedWorkspaceCleanup=True
else:
RAN.Build_eNB_forced_workspace_cleanup=True
CONTAINERS.forcedWorkspaceCleanup=False
RAN.Build_eNB_forced_workspace_cleanup=False
CONTAINERS.forcedWorkspaceCleanup=False
CLUSTER.forcedWorkspaceCleanup = False
if forced_workspace_cleanup is not None and re.match('true', forced_workspace_cleanup, re.IGNORECASE):
RAN.Build_eNB_forced_workspace_cleanup = True
CONTAINERS.forcedWorkspaceCleanup = True
CLUSTER.forcedWorkspaceCleanup = True
eNB_instance=test.findtext('eNB_instance')
if (eNB_instance is None):
RAN.eNB_instance=0
@@ -457,9 +455,18 @@ def GetParametersFromXML(action):
if (string_field is not None):
CONTAINERS.testSvrId = string_field
else: # ie action == 'Run_PhySim':
elif action == 'Run_LDPCTest' or action == 'Run_NRulsimTest':
ldpc.runargs = test.findtext('physim_run_args')
elif action == 'LicenceAndFormattingCheck':
pass
elif action == 'Cppcheck_Analysis':
pass
else:
logging.error(f"unknown action {action}")
#check if given test is in list
#it is in list if one of the strings in 'list' is at the beginning of 'test'
@@ -525,6 +532,7 @@ HTML = cls_oai_html.HTMLManagement()
CONTAINERS = cls_containerize.Containerize()
SCA = cls_static_code_analysis.StaticCodeAnalysis()
PHYSIM = cls_physim1.PhySim()
CLUSTER = cls_cluster.Cluster()
ldpc=cls_physim.PhySim() #create an instance for LDPC test using GPU or CPU build
@@ -534,7 +542,7 @@ ldpc=cls_physim.PhySim() #create an instance for LDPC test using GPU or CPU b
#-----------------------------------------------------------
import args_parse
py_param_file_present, py_params, mode = args_parse.ArgsParse(sys.argv,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM)
py_param_file_present, py_params, mode = args_parse.ArgsParse(sys.argv,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM,CLUSTER)
@@ -914,14 +922,25 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
HTML=ldpc.Build_PhySim(HTML,CONST)
if ldpc.exitStatus==1:
RAN.prematureExit = True
elif action == 'Run_PhySim':
HTML=ldpc.Run_PhySim(HTML,CONST,id)
elif action == 'Run_LDPCTest':
HTML=ldpc.Run_LDPCTest(HTML,CONST,id)
if ldpc.exitStatus==1:
RAN.prematureExit = True
elif action == 'Run_NRulsimTest':
HTML=ldpc.Run_NRulsimTest(HTML,CONST,id)
if ldpc.exitStatus==1:
RAN.prematureExit = True
elif action == 'Build_Cluster_Image':
if not CLUSTER.BuildClusterImage(HTML):
RAN.prematureExit = True
elif action == 'Build_Image':
CONTAINERS.BuildImage(HTML)
elif action == 'Build_Proxy':
CONTAINERS.BuildProxy(HTML)
elif action == 'Copy_Image_to_Test':
CONTAINERS.Copy_Image_to_Test_Server(HTML)
success = CONTAINERS.Copy_Image_to_Test_Server(HTML)
if not success:
RAN.prematureExit = True
elif action == 'Deploy_Object':
CONTAINERS.DeployObject(HTML, EPC)
if CONTAINERS.exitStatus==1:

View File

@@ -379,7 +379,7 @@ VM_TEMPLATE=ci-
# look for ASN1 release in cmake directives
# It will be the release used when building
ASN1VEROPT=( `grep "set (RRC_ASN1_VERSION" cmake_targets/CMakeLists.txt` )
ASN1VEROPT=( `grep "set (RRC_ASN1_VERSION" CMakeLists.txt` )
ASN1VER=${ASN1VEROPT[2]//\"}
ASN1VER=${ASN1VER//)}
unset ASN1VEROPT

View File

@@ -374,7 +374,7 @@ class RANManagement():
mySSH.open(lIpAddr, lUserName, lPassWord)
eth_interface = 'any'
fltr = 'sctp'
logging.debug('\u001B[1m Launching tshark on interface ' + eth_interface + ' with filter "' + fltr + '"\u001B[0m')
logging.debug('\u001B[1m Launching tshark on xNB on interface ' + eth_interface + ' with filter "' + fltr + '"\u001B[0m')
pcapfile = pcapfile_prefix + self.testCase_id + '_log.pcap'
mySSH.command('echo ' + lPassWord + ' | sudo -S rm -f /tmp/' + pcapfile , '\$', 5)
mySSH.command('echo $USER; nohup sudo -E tshark -i ' + eth_interface + ' -f "' + fltr + '" -w /tmp/' + pcapfile + ' > /dev/null 2>&1 &','\$', 5)
@@ -390,7 +390,7 @@ class RANManagement():
mySSH.open(localEpcIpAddr, localEpcUserName, localEpcPassword)
eth_interface = 'any'
fltr = 'sctp'
logging.debug('\u001B[1m Launching tshark on interface ' + eth_interface + ' with filter "' + fltr + '"\u001B[0m')
logging.debug('\u001B[1m Launching tshark on EPC on interface ' + eth_interface + ' with filter "' + fltr + '"\u001B[0m')
self.epcPcapFile = 'enb_' + self.testCase_id + '_s1log.pcap'
mySSH.command('echo ' + localEpcPassword + ' | sudo -S rm -f /tmp/' + self.epcPcapFile , '\$', 5)
mySSH.command('echo $USER; nohup sudo tshark -f "host ' + lIpAddr +'" -i ' + eth_interface + ' -f "' + fltr + '" -w /tmp/' + self.epcPcapFile + ' > /tmp/tshark.log 2>&1 &', localEpcUserName, 5)
@@ -517,7 +517,7 @@ class RANManagement():
localEpcUserName = EPC.UserName
localEpcPassword = EPC.Password
mySSH.open(localEpcIpAddr, localEpcUserName, localEpcPassword)
logging.debug('\u001B[1m Stopping tshark \u001B[0m')
logging.debug('\u001B[1m Stopping tshark on EPC \u001B[0m')
mySSH.command('echo ' + localEpcPassword + ' | sudo -S killall --signal SIGKILL tshark', '\$', 5)
if self.epcPcapFile != '':
mySSH.command('echo ' + localEpcPassword + ' | sudo -S chmod 666 /tmp/' + self.epcPcapFile, '\$', 5)
@@ -644,18 +644,16 @@ class RANManagement():
time.sleep(5)
mySSH.command('rm -f my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5)
#stopping tshark (valid if eNB and enabled in xml, will not harm otherwise)
logging.debug('\u001B[1m Stopping tshark \u001B[0m')
logging.debug('\u001B[1m Stopping tshark on xNB \u001B[0m')
mySSH.command('echo ' + lPassWord + ' | sudo -S killall --signal SIGKILL tshark', '\$', 5)
time.sleep(1)
mySSH.close()
# If tracer options is on, stopping tshark on EPC side
result = re.search('T_stdout', str(self.Initialize_eNB_args))
if (result is not None):
if EPC.IPAddress != "none" and EPC.IPAddress != '':
localEpcIpAddr = EPC.IPAddress
localEpcUserName = EPC.UserName
localEpcPassword = EPC.Password
logging.debug('\u001B[1m Stopping tshark on EPC (' + localEpcIpAddr + ') \u001B[0m')
mySSH.open(localEpcIpAddr, localEpcUserName, localEpcPassword)
logging.debug('\u001B[1m Stopping tshark \u001B[0m')
mySSH.command('echo ' + localEpcPassword + ' | sudo -S killall --signal SIGKILL tshark', '\$', 5)
time.sleep(1)
if self.epcPcapFile != '':
@@ -814,6 +812,7 @@ class RANManagement():
ULRetxIssue = False
nrRrcRcfgComplete = 0
harqFeedbackPast = 0
showedByeMsg = False # last line is Bye. -> stopped properly
line_cnt=0 #log file line counter
for line in enb_log_file.readlines():
@@ -1026,6 +1025,12 @@ class RANManagement():
if result is not None:
gnb_markers[k].append(line_cnt)
# check whether e/gNB log finishes with "Bye." message
# Note that it is "=" not "|=" so not only is the regex
# asking for EOF (\Z) but we also only retain the last
# line's result
showedByeMsg = re.search(r'^Bye.\n\Z', str(line), re.MULTILINE) is not None
enb_log_file.close()
@@ -1210,6 +1215,13 @@ class RANManagement():
logging.debug('No real time stats found in the log file')
htmleNBFailureMsg += statMsg
if not showedByeMsg:
logging.debug('\u001B[1;37;41m ' + nodeB_prefix + 'NB did not show "Bye." message at end, it likely did not stop properly! \u001B[0m')
htmleNBFailureMsg += 'No Bye. message found, did not stop properly\n'
global_status = CONST.ENB_SHUTDOWN_NO_BYE
else:
logging.debug('"Bye." message found at end.')
else:
#Removing UE log
statMsg = '[MAC] Removing UE msg count = '+str(removing_ue)

View File

@@ -463,106 +463,75 @@ function report_build {
echo " </table>" >> ./build_results.html
echo " <h2>Build Summary</h2>" >> ./build_results.html
if [ -f ./oai_rules_result.txt ]
echo " <h3>OAI Coding / Formatting Guidelines Check</h3>" >> ./build_results.html
if [ -f ./header-files-w-incorrect-define.txt ]
then
echo " <h3>OAI Coding / Formatting Guidelines Check</h3>" >> ./build_results.html
NB_FILES=`cat ./oai_rules_result.txt`
if [ $NB_FILES = "0" ]
then
NB_FILES_IN_ERROR=`wc -l ./header-files-w-incorrect-define.txt | sed -e "s@ .*@@"`
if [ $NB_FILES_IN_ERROR -eq 0 ]
then
echo " <div class=\"alert alert-success\">" >> ./build_results.html
if [ $PU_TRIG -eq 1 ]; then echo " <strong>All files in repository follow OAI rules. <span class=\"glyphicon glyphicon-ok-circle\"></span></strong>" >> ./build_results.html; fi
if [ $MR_TRIG -eq 1 ]; then echo " <strong>All modified files in Merge-Request follow OAI rules. <span class=\"glyphicon glyphicon-ok-circle\"></span></strong>" >> ./build_results.html; fi
if [ $MR_TRIG -eq 1 ]; then echo " <strong>No Issue for CIRCULAR DEPENDENCY PROTECTION in modified files</strong>" >> ./build_results.html; fi
if [ $PU_TRIG -eq 1 ]; then echo " <strong>No Issue for CIRCULAR DEPENDENCY PROTECTION in the whole repository</strong>" >> ./build_results.html; fi
echo " </div>" >> ./build_results.html
else
echo " <div class=\"alert alert-warning\">" >> ./build_results.html
if [ $PU_TRIG -eq 1 ]; then echo " <strong>$NB_FILES files in repository DO NOT follow OAI rules. <span class=\"glyphicon glyphicon-warning-sign\"></span></strong>" >> ./build_results.html; fi
if [ $MR_TRIG -eq 1 ]; then echo " <strong>$NB_FILES modified files in Merge-Request DO NOT follow OAI rules. <span class=\"glyphicon glyphicon-warning-sign\"></span></strong>" >> ./build_results.html; fi
if [ $MR_TRIG -eq 1 ]; then echo " <strong>${NB_FILES_IN_ERROR} modified files MAY NOT HAVE CIRCULAR DEPENDENCY PROTECTION</strong>" >> ./build_results.html; fi
if [ $PU_TRIG -eq 1 ]; then echo " <strong>${NB_FILES_IN_ERROR} files in repository MAY NOT HAVE CIRCULAR DEPENDENCY PROTECTION in the whole repository</strong>" >> ./build_results.html; fi
echo " </div>" >> ./build_results.html
fi
if [ -f ./oai_rules_result_list.txt ]
then
echo " <button data-toggle=\"collapse\" data-target=\"#oai-formatting-details\">More details on formatting check</button>" >> ./build_results.html
echo " <div id=\"oai-formatting-details\" class=\"collapse\">" >> ./build_results.html
echo " <p>Please apply the following command to this(ese) file(s): </p>" >> ./build_results.html
echo " <p style=\"margin-left: 30px\"><strong><code>astyle --options=ci-scripts/astyle-options.txt filename(s)</code></strong></p>" >> ./build_results.html
echo " <button data-toggle=\"collapse\" data-target=\"#oai-circular-details\">More details on circular dependency protection check</button>" >> ./build_results.html
echo " <div id=\"oai-circular-details\" class=\"collapse\">" >> ./build_results.html
echo " <table border = 1>" >> ./build_results.html
echo " <tr>" >> ./build_results.html
echo " <th bgcolor = \"lightcyan\" >Filename</th>" >> ./build_results.html
echo " <th bgcolor = \"lightcyan\" >Potential Issue</th>" >> ./build_results.html
echo " <th bgcolor = \"lightcyan\" >Impacted File</th>" >> ./build_results.html
echo " <th bgcolor = \"lightcyan\" >Incorrect Macro</th>" >> ./build_results.html
echo " </tr>" >> ./build_results.html
awk '{print " <tr><td>"$1"</td></tr>"}' ./oai_rules_result_list.txt >> ./build_results.html
awk '{if($0 ~/error in/){print " <tr><td>error in declaration</td><td>"$4"</td><td>"$5"</td></tr>"};if($0 ~/files with same/){print " <tr><td>files with same #define</td><td>"$5"</td><td>"$6"</td></tr>"}}' ./header-files-w-incorrect-define.txt >> ./build_results.html
echo " </table>" >> ./build_results.html
echo " </div>" >> ./build_results.html
echo " <br>" >> ./build_results.html
fi
if [ -f ./header-files-w-incorrect-define.txt ]
fi
if [ -f ./files-w-gnu-gpl-license-banner.txt ]
then
NB_FILES_IN_ERROR=`wc -l ./files-w-gnu-gpl-license-banner.txt | sed -e "s@ .*@@"`
if [ $NB_FILES_IN_ERROR -ne 0 ]
then
NB_FILES_IN_ERROR=`wc -l ./header-files-w-incorrect-define.txt | sed -e "s@ .*@@"`
if [ $NB_FILES_IN_ERROR -eq 0 ]
then
echo " <div class=\"alert alert-success\">" >> ./build_results.html
if [ $MR_TRIG -eq 1 ]; then echo " <strong>No Issue for CIRCULAR DEPENDENCY PROTECTION in modified files</strong>" >> ./build_results.html; fi
if [ $PU_TRIG -eq 1 ]; then echo " <strong>No Issue for CIRCULAR DEPENDENCY PROTECTION in the whole repository</strong>" >> ./build_results.html; fi
echo " </div>" >> ./build_results.html
else
echo " <div class=\"alert alert-warning\">" >> ./build_results.html
if [ $MR_TRIG -eq 1 ]; then echo " <strong>${NB_FILES_IN_ERROR} modified files MAY NOT HAVE CIRCULAR DEPENDENCY PROTECTION</strong>" >> ./build_results.html; fi
if [ $PU_TRIG -eq 1 ]; then echo " <strong>${NB_FILES_IN_ERROR} files in repository MAY NOT HAVE CIRCULAR DEPENDENCY PROTECTION in the whole repository</strong>" >> ./build_results.html; fi
echo " </div>" >> ./build_results.html
echo " <button data-toggle=\"collapse\" data-target=\"#oai-circular-details\">More details on circular dependency protection check</button>" >> ./build_results.html
echo " <div id=\"oai-circular-details\" class=\"collapse\">" >> ./build_results.html
echo " <table border = 1>" >> ./build_results.html
echo " <tr>" >> ./build_results.html
echo " <th bgcolor = \"lightcyan\" >Potential Issue</th>" >> ./build_results.html
echo " <th bgcolor = \"lightcyan\" >Impacted File</th>" >> ./build_results.html
echo " <th bgcolor = \"lightcyan\" >Incorrect Macro</th>" >> ./build_results.html
echo " </tr>" >> ./build_results.html
awk '{if($0 ~/error in/){print " <tr><td>error in declaration</td><td>"$4"</td><td>"$5"</td></tr>"};if($0 ~/files with same/){print " <tr><td>files with same #define</td><td>"$5"</td><td>"$6"</td></tr>"}}' ./header-files-w-incorrect-define.txt >> ./build_results.html
echo " </table>" >> ./build_results.html
echo " </div>" >> ./build_results.html
echo " <br>" >> ./build_results.html
fi
echo " <div class=\"alert alert-danger\">" >> ./build_results.html
if [ $MR_TRIG -eq 1 ]; then echo " <strong>${NB_FILES_IN_ERROR} modified files HAVE a GNU GPL license banner</strong>" >> ./build_results.html; fi
if [ $PU_TRIG -eq 1 ]; then echo " <strong>${NB_FILES_IN_ERROR} files in repository HAVE a GNU GPL license banner</strong>" >> ./build_results.html; fi
echo " </div>" >> ./build_results.html
echo " <button data-toggle=\"collapse\" data-target=\"#oai-license-gpl\">More details on GNU GPL license banner issue</button>" >> ./build_results.html
echo " <div id=\"oai-license-gpl\" class=\"collapse\">" >> ./build_results.html
echo " <table border = 1>" >> ./build_results.html
echo " <tr>" >> ./build_results.html
echo " <th bgcolor = \"lightcyan\" >Filename</th>" >> ./build_results.html
echo " </tr>" >> ./build_results.html
awk '{print " <tr><td>"$1"</td></tr>"}' ./files-w-gnu-gpl-license-banner.txt >> ./build_results.html
echo " </table>" >> ./build_results.html
echo " </div>" >> ./build_results.html
echo " <br>" >> ./build_results.html
fi
if [ -f ./files-w-gnu-gpl-license-banner.txt ]
fi
if [ -f ./files-w-suspect-banner.txt ]
then
NB_FILES_IN_ERROR=`wc -l ./files-w-suspect-banner.txt | sed -e "s@ .*@@"`
if [ $NB_FILES_IN_ERROR -ne 0 ]
then
NB_FILES_IN_ERROR=`wc -l ./files-w-gnu-gpl-license-banner.txt | sed -e "s@ .*@@"`
if [ $NB_FILES_IN_ERROR -ne 0 ]
then
echo " <div class=\"alert alert-danger\">" >> ./build_results.html
if [ $MR_TRIG -eq 1 ]; then echo " <strong>${NB_FILES_IN_ERROR} modified files HAVE a GNU GPL license banner</strong>" >> ./build_results.html; fi
if [ $PU_TRIG -eq 1 ]; then echo " <strong>${NB_FILES_IN_ERROR} files in repository HAVE a GNU GPL license banner</strong>" >> ./build_results.html; fi
echo " </div>" >> ./build_results.html
echo " <button data-toggle=\"collapse\" data-target=\"#oai-license-gpl\">More details on GNU GPL license banner issue</button>" >> ./build_results.html
echo " <div id=\"oai-license-gpl\" class=\"collapse\">" >> ./build_results.html
echo " <table border = 1>" >> ./build_results.html
echo " <tr>" >> ./build_results.html
echo " <th bgcolor = \"lightcyan\" >Filename</th>" >> ./build_results.html
echo " </tr>" >> ./build_results.html
awk '{print " <tr><td>"$1"</td></tr>"}' ./files-w-gnu-gpl-license-banner.txt >> ./build_results.html
echo " </table>" >> ./build_results.html
echo " </div>" >> ./build_results.html
echo " <br>" >> ./build_results.html
fi
fi
if [ -f ./files-w-suspect-banner.txt ]
then
NB_FILES_IN_ERROR=`wc -l ./files-w-suspect-banner.txt | sed -e "s@ .*@@"`
if [ $NB_FILES_IN_ERROR -ne 0 ]
then
echo " <div class=\"alert alert-warning\">" >> ./build_results.html
if [ $MR_TRIG -eq 1 ]; then echo " <strong>${NB_FILES_IN_ERROR} modified files HAVE a suspect license banner</strong>" >> ./build_results.html; fi
if [ $PU_TRIG -eq 1 ]; then echo " <strong>${NB_FILES_IN_ERROR} files in repository HAVE a suspect license banner</strong>" >> ./build_results.html; fi
echo " </div>" >> ./build_results.html
echo " <button data-toggle=\"collapse\" data-target=\"#oai-license-suspect\">More details on suspect banner files</button>" >> ./build_results.html
echo " <div id=\"oai-license-suspect\" class=\"collapse\">" >> ./build_results.html
echo " <table border = 1>" >> ./build_results.html
echo " <tr>" >> ./build_results.html
echo " <th bgcolor = \"lightcyan\" >Filename</th>" >> ./build_results.html
echo " </tr>" >> ./build_results.html
awk '{print " <tr><td>"$1"</td></tr>"}' ././files-w-suspect-banner.txt >> ./build_results.html
echo " </table>" >> ./build_results.html
echo " </div>" >> ./build_results.html
echo " <br>" >> ./build_results.html
fi
echo " <div class=\"alert alert-warning\">" >> ./build_results.html
if [ $MR_TRIG -eq 1 ]; then echo " <strong>${NB_FILES_IN_ERROR} modified files HAVE a suspect license banner</strong>" >> ./build_results.html; fi
if [ $PU_TRIG -eq 1 ]; then echo " <strong>${NB_FILES_IN_ERROR} files in repository HAVE a suspect license banner</strong>" >> ./build_results.html; fi
echo " </div>" >> ./build_results.html
echo " <button data-toggle=\"collapse\" data-target=\"#oai-license-suspect\">More details on suspect banner files</button>" >> ./build_results.html
echo " <div id=\"oai-license-suspect\" class=\"collapse\">" >> ./build_results.html
echo " <table border = 1>" >> ./build_results.html
echo " <tr>" >> ./build_results.html
echo " <th bgcolor = \"lightcyan\" >Filename</th>" >> ./build_results.html
echo " </tr>" >> ./build_results.html
awk '{print " <tr><td>"$1"</td></tr>"}' ././files-w-suspect-banner.txt >> ./build_results.html
echo " </table>" >> ./build_results.html
echo " </div>" >> ./build_results.html
echo " <br>" >> ./build_results.html
fi
fi

View File

@@ -1217,7 +1217,7 @@ function start_rf_sim_nr_ue {
then
echo "echo \"./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 --rfsim --sa --log_config.global_log_options level,nocolor,time\" > ./my-nr-softmodem-run.sh " >> $1
else # -eq 3 SA test 24PRB
echo "echo \"./nr-uesoftmodem -r 24 -s 24 --numerology 1 --band 78 -C 3604320000 --rfsim --sa --log_config.global_log_options level,nocolor,time\" > ./my-nr-softmodem-run.sh " >> $1
echo "echo \"./nr-uesoftmodem -r 24 --ssb 24 --numerology 1 --band 78 -C 3604320000 --rfsim --sa --log_config.global_log_options level,nocolor,time\" > ./my-nr-softmodem-run.sh " >> $1
fi
fi
echo "chmod 775 ./my-nr-softmodem-run.sh" >> $1

66
ci-scripts/run_sl_batch.sh Executable file
View File

@@ -0,0 +1,66 @@
#!/bin/bash
remote_host_ip=10.1.1.80 # to test on N310
user_id=$USER
message_to_send=EpiScience
num_repeat=1
# change test type accordingly
test_type='rfsim'
test_type_cmd="--test "$test_type
if [ $test_type != 'rfsim' ]; then
atten_list=(0 5 10 15 20 25 30 35 39 40)
test_params=("${atten_list[@]}")
param_name='att'
else
param_name='snr'
fi
start_mcs=0
end_mcs=9
step_mcs=1
mcs_list=()
for i in $(seq $start_mcs $step_mcs $end_mcs); do
mcs_list+=($i)
done
step_snr=0.2
start_snr=-10
TEST_FOLDER=$HOME/test_$test_type
[ -d $TEST_FOLDER ] || mkdir $TEST_FOLDER
for j in ${!mcs_list[@]}; do
if [ $test_type = 'rfsim' ]; then
snr_list=()
if [ ${mcs_list[$j]} -ge 0 ] && [ ${mcs_list[$j]} -le 5 ]; then
end_snr=6
elif [ ${mcs_list[$j]} -ge 6 ] && [ ${mcs_list[$j]} -le 8 ]; then
end_snr=10
else
start_snr=-6
end_snr=14
fi
for k in $(seq $start_snr $step_snr $end_snr); do
snr_list+=($k)
done
test_params=("${snr_list[@]}")
fi
for k in ${!test_params[@]}; do
if [ $test_type = 'rfsim' ]; then
param_cmd='--snr '${test_params[$k]}
else
param_cmd='--att '${test_params[$k]}
fi
python3 run_sl_test.py --repeat $num_repeat \
-u $user_id --host $remote_host_ip \
--mcs ${mcs_list[$j]} \
$param_cmd \
--save $TEST_FOLDER/mcs_${mcs_list[$j]}_${param_name}_${test_params[$k]}.txt \
$test_type_cmd \
--duration 20
done
done

490
ci-scripts/run_sl_test.py Executable file
View File

@@ -0,0 +1,490 @@
#!/usr/bin/env python3
#
# Automated tests for running 5G NR Sidelink SyncRef UE and/or Nearby UE.
# The following is an example to run remote machine (nearby) three times.
# The syncref UE is launched on the current machine, and a single
# nearby UE is launched on the machine specified by the --host and
# --user flags. The -r will enable this simulation to be repeated
# three times.
#
# python3 run_sl_test.py --user account --host 10.1.1.68 -r 3 --test usrp
#
# The following is an example to run just a Sidelink Nearby UE.
# By specifying -l nearby, only the nearby UE will be launched
# on the machine specified by the --host and --user flags.
# The -r will enable this simulation to be repeated two times.
#
# python3 run_sl_test.py -l nearby --user account --host 10.1.1.68 -r 2 --test usrp
#
# To run usrp test in the net 1 specified in sl_net_config.json, the following will be used.
#
# python3 run_sl_test.py --test usrp --net 1
#
# See `--help` for more information.
#
import os
import sys
import argparse
import logging
import time
import re
import glob
import json
import subprocess, shlex
from subprocess import Popen
from subprocess import check_output
from collections import defaultdict
import threading
from typing import Dict
from queue import Queue
from sl_check_log import LogChecker
HOME_DIR = os.path.expanduser( '~' )
# ----------------------------------------------------------------------------
# Command line argument parsing
parser = argparse.ArgumentParser(description="""
Automated tests for 5G NR Sidelink simulations
""")
parser.add_argument('--launch', '-l', default='all', choices='syncref nearby all'.split(), help="""
Sidelink UE type to launch test scenario (default: %(default)s)
""")
parser.add_argument('--host', default='', type=str, help="""
Nearby Host IP (default: %(default)s)
""")
parser.add_argument('--user', '-u', default=os.environ.get('USER'), type=str, help="""
User id in Nearby Host (default: %(default)s)
""")
parser.add_argument('--att', type=int, default=-1, help="""
Attenuation value
""")
parser.add_argument('--att-host', default='10.1.1.78', type=str, help="""
Host IP for adjusting attenuation (default: %(default)s)
""")
parser.add_argument('--att-user', default=os.environ.get('USER'), type=str, help="""
User id for adjusting attenuation (default: %(default)s)
""")
parser.add_argument('--basic', '-b', action='store_true', help="""
Basic test with basic shell commands
""")
parser.add_argument('--config', default='sl_net_config.json', help="""
The network configurations .json file (default: %(default)s)
""")
parser.add_argument('--compress', action='store_true', help="""
Compress the log files in the --log-dir
""")
parser.add_argument('--dest', type=str, default='', help="""
Destination node identifier for sidelink communication (default: %(default)s)
""")
parser.add_argument('--duration', '-d', metavar='SECONDS', type=int, default=20, help="""
How long to run the test before stopping to examine the logs
""")
parser.add_argument('--log-dir', default=HOME_DIR, help="""
Where to store log files
""")
parser.add_argument('--message', '-m', type=str, default='', help="""
The message to send from SyncRef UE to Nearby UE
""")
parser.add_argument('--mcs', default=0, type=int, help="""
The default mcs value (default: %(default)s)
""")
parser.add_argument('--net', '-n', type=int, default=1, help="""
Network identifier for sidelink communication (default: %(default)s)
""")
parser.add_argument('--nid1', type=int, default=10, help="""
Nid1 value
""")
parser.add_argument('--nid2', type=int, default=1, help="""
Nid2 value
""")
parser.add_argument('--no-run', action='store_true', help="""
Don't run the test, only examine the logs in the --log-dir
directory from a previous run of the test
""")
parser.add_argument('--debug', action='store_true', help="""
Enable debug logging (for this script only)
""")
parser.add_argument('--repeat', '-r', default=1, type=int, help="""
The number of repeated test iterations (default: %(default)s)
""")
parser.add_argument('--save', default=None, help="""
The default Python log result with .txt extension (default: %(default)s)
""")
parser.add_argument('--sci2', action='store_true', help="""
Enable SCI2 log parsing (this will grep the logs for the SCI2 payload)
""")
parser.add_argument('--test', '-t', default='rfsim', choices='rfsim usrp psbchsim psschsim'.split(), help="""
The kind of test scenario to run. The options include rfsim, usrp, psbchsim, and psschsim. (default: %(default)s)
""")
parser.add_argument('--snr', default='0.0', help="""
Setting snr values (default: %(default)s)
""")
OPTS = parser.parse_args()
del parser
logging.basicConfig(level=logging.DEBUG if OPTS.debug else logging.INFO,
format='>>> %(name)s: %(levelname)s: %(message)s')
LOGGER = logging.getLogger(os.path.basename(sys.argv[0]))
if OPTS.save:
out_fh = logging.FileHandler(filename=OPTS.save, mode='a')
LOGGER.addHandler(out_fh)
# ----------------------------------------------------------------------------
def redirect_output(cmd: str, filename: str) -> str:
cmd += f' >{filename} 2>&1'
return cmd
def thread_delay(delay: int) -> None:
count = 0
while count < 1:
time.sleep(delay)
count += 1
class Config:
"""
Parsing config file
"""
def __init__(self, filename) -> None:
self.check_user()
self.filename = self.check_file(filename)
self.test = OPTS.test.lower()
self.parse_config_json()
def check_user(self) -> None:
if 'usrp' != OPTS.test:
return
if OPTS.launch != 'syncref' and OPTS.user == '':
LOGGER.error("--user followed by [user id] is mandatory to connect to remote machine")
sys.exit(1)
def check_file(self, filename) -> str:
data_file = glob.glob(filename)
if data_file:
return filename
LOGGER.error('The file %s does not exist!', filename)
sys.exit(1)
def parse_config_json(self) -> None:
"""
Parse configurations from the json file
"""
self.launch_cmds = defaultdict(list)
self.hosts = defaultdict(list)
with open(self.filename) as in_fh:
json_data = json.load(in_fh)
if f"net_{OPTS.net}" in json_data[self.test].keys():
net_config = json_data[self.test][f"net_{OPTS.net}"]
else:
LOGGER.error('net %d configuration does not exist.', OPTS.net)
sys.exit(1)
for net in net_config:
role = net['role']
self.launch_cmds[role].append(net["cmd"])
self.hosts[role].append(net["ip"])
if not self.launch_cmds:
LOGGER.error('%s commands are not found in file: %s', self.test, self.filename)
sys.exit(1)
if OPTS.test.lower() == 'usrp' and not self.hosts['nearby']:
LOGGER.error(f'Nearby host IP is expected. Add nearby host IP to {OPTS.config}')
sys.exit(1)
class Node:
def __init__(self, id: str, role: str, host: str, cmd:str):
self.id = id # Assumption: UE node id starts from 1.
self.role = role
self.host = host
self.delay = self._get_delay(OPTS.test)
self.log_file_path = os.path.join(OPTS.log_dir, f'{role}{id}.log')
syncref_node_id = '1' if id != '' else '' # str(int(id) - 1)
syncref_node_role = 'syncref' # if id in ('', '1', '2') else 'nearby' # Used for multi hop case.
self.syncref_log_file_path = os.path.join(OPTS.log_dir, f'{syncref_node_role}{syncref_node_id}.log')
self.cmd = self._update_cmd(role, cmd)
self.passed_metric = []
self.num_tx_ssb = []
self.num_passed = 0
self.total_rx_list = []
self.nb_decoded_list = []
self.pssch_rsrp_list = []
self.ssb_rsrp_list = []
self.sync_duration_list = []
def __str__(self):
return f'{self.role}{self.id}'
def _get_delay(self, test_type: str) -> int:
"""
Adjusting launching time by setting delay.
"""
if test_type == 'usrp':
return 5 if self.role == 'syncref' else (1 if self.id in ('', '1', '2') else 0)
else:
return 0 if self.role == 'syncref' else (2 if self.id in ('', '1', '2') else 7)
def _update_cmd(self, role:str, cmd:str) -> str:
if OPTS.basic: return redirect_output('uname -a', self.log_file_path)
dest = '' if '--dest' in cmd or OPTS.dest == '' else f' --dest {OPTS.dest}'
tx_msg = f" --message '{OPTS.message}'" if len(OPTS.message) > 0 else ""
if role == 'syncref':
cmd = cmd + tx_msg + f' --mcs {OPTS.mcs}' + dest
if 'rfsim' == OPTS.test:
cmd += f' --snr {OPTS.snr}'
if role == 'nearby':
if 'usrp' == OPTS.test:
cmd = cmd[:-1] + tx_msg + f' --mcs {OPTS.mcs}' + cmd[-1] # -1 is ' index (end of cmd)
cmd = cmd + f' -d {OPTS.duration} --nid1 {OPTS.nid1} --nid2 {OPTS.nid2}'
else:
cmd = cmd + tx_msg + f' --mcs {OPTS.mcs}'
if 'rfsim' == OPTS.test:
cmd += f' --snr {OPTS.snr}'
return cmd
def get_metric(self, log_agent: LogChecker, itrn_inx: int) -> None:
if self.num_passed != len(self.passed_metric):
# Examine the logs to determine if the test passed
(pssch_rsrp, ssb_rsrp, nb_decoded, total_rx, sync_duration) = self.passed_metric[-1]
num_ssb = log_agent.analyze_syncref_logs(sync_duration, self.syncref_log_file_path)
self.num_tx_ssb += [num_ssb]
self.total_rx_list += [total_rx]
self.sync_duration_list += [sync_duration]
self.nb_decoded_list += [nb_decoded]
self.pssch_rsrp_list += [pssch_rsrp]
self.ssb_rsrp_list += [ssb_rsrp]
LOGGER.info(f"Trial {itrn_inx + 1}/{OPTS.repeat} SYNCHED. {num_ssb} SSB(s) were generated. Measured {ssb_rsrp} RSRP (dbm/RE)")
else:
LOGGER.info(f"No metric available due to sync failure in {itrn_inx + 1}/{OPTS.repeat} trial(s).")
self.num_passed = len(self.passed_metric)
def show_metric(self) -> None:
LOGGER.info('-' * 42)
atten_snr = {"rfsim": f'SNR value {OPTS.snr}', "usrp": f'Attenuation value {OPTS.att}'}
LOGGER.info(f"{atten_snr[OPTS.test]}, MCS value {OPTS.mcs}")
LOGGER.info(f"Number of synced = {len(self.passed_metric)}/{OPTS.repeat}")
if len(self.num_tx_ssb) > 0:
LOGGER.info(f"Avg number of SSB = {sum(self.num_tx_ssb) / len(self.num_tx_ssb)} ({self.num_tx_ssb})")
if len(self.passed_metric) > 0:
sum_nb_decoded, sum_total_rx = sum(self.nb_decoded_list), sum(self.total_rx_list)
avg_bler = (float) (sum_total_rx - sum_nb_decoded) / sum_total_rx if sum_total_rx > 0 else 1
avg_bldr = (float) (sum_nb_decoded) / sum_total_rx if sum_total_rx > 0 else 1
LOGGER.info(f"Avg PSSCH RSRP = {sum(self.pssch_rsrp_list) / len(self.passed_metric):.2f}")
LOGGER.info(f"Avg SSB RSRP = {sum(self.ssb_rsrp_list) / len(self.passed_metric):.2f}")
if sum_total_rx > 0:
LOGGER.info(f"Avg BLER = {avg_bler:.9f} with {sum_total_rx - sum_nb_decoded} / {sum_total_rx}")
LOGGER.info(f"Avg BLDecodedRate = {avg_bldr:.9f} with {sum_nb_decoded} / {sum_total_rx}")
LOGGER.info(f"Avg Sync duration (seconds) = {sum(self.sync_duration_list) / len(self.passed_metric):.2f}")
LOGGER.info(f"pssch_rsrp_list = {self.pssch_rsrp_list}")
LOGGER.info(f"ssb_rsrp_list = {self.ssb_rsrp_list}")
LOGGER.info(f"nb_decoded_list = {self.nb_decoded_list}")
LOGGER.info(f"total_rx_list = {self.total_rx_list}")
LOGGER.info('#' * 42)
class TestThread(threading.Thread):
"""
Represents TestThread
"""
def __init__(self, queue, log_agent):
threading.Thread.__init__(self)
self.queue = queue
self.delay = 0
self.log_agent = log_agent
def run(self):
if self.queue.empty():
LOGGER.error("Queue is empty!")
sys.exit(1)
try:
while not self.queue.empty():
job = self.queue.get()
if "nearby" == job.role and not OPTS.no_run:
thread_delay(self.delay + job.delay)
if 'usrp' == OPTS.test:
self.launch_nearby_usrp(job)
elif 'rfsim' == OPTS.test:
self.launch_nearby_rfsim(job)
if "syncref" == job.role and not OPTS.no_run:
thread_delay(self.delay + job.delay)
self.launch_syncref(job)
self.queue.task_done()
except Exception as inst:
LOGGER.info(f"Failed to operate on job with type {type(inst)} and args {inst.args}")
def launch_syncref(self, job: Node) -> Popen:
LOGGER.info(f'Launching SyncRef UE {job}')
proc = Popen(job.cmd, shell=True)
LOGGER.info(f"syncref_proc = {proc}")
if not OPTS.basic and not OPTS.no_run:
LOGGER.info(f"Process running... {job}")
time.sleep(OPTS.duration + 10)
self.kill_process(job, proc)
def launch_nearby_usrp(self, job: Node) -> Popen:
LOGGER.info(f'Launching Nearby UE {job}')
proc = Popen(["ssh", f"{OPTS.user}@{job.host}", job.cmd],
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
LOGGER.info(f"nearby_proc = {proc}")
remote_output = proc.stdout.readlines()
if remote_output == []:
nearby_result = proc.stderr.readlines()
else:
nearby_result = remote_output
self.kill_process(job, proc)
if nearby_result:
self.find_nearby_result_metric(job, nearby_result)
def launch_nearby_rfsim(self, job: Node) -> Popen:
LOGGER.info(f'Launching Nearby UE {job}')
proc = Popen(job.cmd, shell=True)
LOGGER.info(f"nearby_proc = {proc}")
if not OPTS.basic and not OPTS.no_run:
LOGGER.info(f"Process running... {job}")
time.sleep(OPTS.duration)
self.kill_process(job, proc)
if proc:
time.sleep(5)
nearby_result, user_msg = self.log_agent.analyze_nearby_logs(OPTS.nid1, OPTS.nid2, OPTS.sci2, job.log_file_path)
if nearby_result:
self.find_nearby_result_metric(job, [nearby_result])
def find_nearby_result_metric(self, job: Node, remote_log) -> None:
result_metric = None
for line in remote_log:
if type(line) is not str:
line = line.decode()
if 'usrp' == OPTS.test:
LOGGER.info(line.strip())
# 'SyncRef UE found. PSSCH-RSRP: -102 dBm/RE SSS-RSRP: -100 dBm/RE passed 99 total 100 It took {delta_time_s} seconds'
if 'SyncRef UE found' in line:
fields = line.split(maxsplit=20)
if len(fields) > 6:
pssch_rsrp = float(fields[-13])
ssb_rsrp = float(fields[-10])
nb_decoded = int(fields[-7])
total_rx = int(fields[-5])
sync_duration = float(fields[-2])
result_metric = (pssch_rsrp, ssb_rsrp, nb_decoded, total_rx, sync_duration)
job.passed_metric += [result_metric]
return
def kill_process(self, job: Node, proc: Popen) -> None:
# Wait for the processes to end
passed = True
if proc:
status = proc.poll()
if status is None:
LOGGER.info('process is still running, which is good')
else:
passed = False
LOGGER.info(f'{job} process ended early: {status}')
if proc and passed:
LOGGER.info(f'kill main simulation processes... {job}')
cmd = ['sudo', 'killall']
cmd.append('-KILL')
cmd.append('nr-uesoftmodem')
if "syncref" == job.role:
subprocess.run(cmd)
LOGGER.info(f'Waiting for PID proc.pid for {job}')
proc.kill()
proc.wait()
LOGGER.info(f'kill main simulation processes...done for {job}')
# ----------------------------------------------------------------------------
def set_attenuation(attenuation: int, atten_host: str, user: str) -> None:
"""
Attenuation value will be updated only if non-negative is specified by user.
"""
if OPTS.att >= 0:
LOGGER.info('Setting attenuation')
atten_set_cmd = f"curl http://169.254.10.10/:CHAN:1:2:3:4:SETATT:{attenuation}" #CHAN:1:2:3:4:SETATT:25.5
atten_get_cmd = f"curl http://169.254.10.10/:ATT?"
host_IPs = check_output(['hostname', '-I']).decode().strip().split()
LOCAL_IP = host_IPs[1] if len(host_IPs) > 1 else host_IPs[0]
atten_cmds = [atten_set_cmd, atten_get_cmd]
cmd = shlex.split('; '.join(atten_cmds)) if atten_host == LOCAL_IP else ["ssh", f"{user}@{atten_host}"] + atten_cmds
proc = Popen(cmd,
shell=False,
text=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
out = proc.communicate(timeout=5)[0].strip().split('\n')[-1]
LOGGER.info(f"attenuation value {attenuation} among: {out}")
time.sleep(1)
def generate_jobs(config: Config) -> list:
jobs, node_id, host = [], '', OPTS.host
if config.launch_cmds is not None:
for role, cmd_list in config.launch_cmds.items():
for cmd in cmd_list:
if 'node-number' in cmd:
node_id = cmd.split('node-number', 1)[-1].split(maxsplit=1)[0]
if role == 'nearby' and OPTS.host == '':
host = config.hosts[role].pop(0)
if OPTS.launch == 'all':
jobs.append(Node(node_id, role, host, cmd))
elif role == OPTS.launch:
jobs.append(Node(node_id, role, host, cmd))
LOGGER.debug(f'{role}{node_id} UE IP : {host}')
LOGGER.debug(f'{role}{node_id} UE cmd: {cmd}')
if OPTS.test == 'usrp': jobs.reverse()
return jobs
def main() -> int:
"""
Main function to run sidelink test repeatedly for a given attenuation value.
"""
config = Config(OPTS.config)
log_agent = LogChecker(OPTS, LOGGER)
LOGGER.debug(f'Number of iterations {OPTS.repeat}')
jobs = generate_jobs(config)
if 'usrp' == OPTS.test:
set_attenuation(OPTS.att, OPTS.att_host, OPTS.att_user)
for i in range(OPTS.repeat):
LOGGER.info('-' * 42)
threads = []
queue = Queue()
for job in jobs:
queue.put(job)
th = TestThread(queue, log_agent)
th.setDaemon(True)
th.start()
threads.append(th)
for th in threads:
th.join()
for job in [job for job in jobs if job.role == 'nearby']:
job.get_metric(log_agent, i)
job.show_metric()
time.sleep(10)
return 0
sys.exit(main())

134
ci-scripts/sl_check_log.py Executable file
View File

@@ -0,0 +1,134 @@
#!/usr/bin/env python3
import os
import bz2
from typing import Generator
class LogChecker():
def __init__(self, OPTS, LOGGER):
self.OPTS = OPTS
self.LOGGER = LOGGER
def get_lines(self, filename: str) -> Generator[str, None, None]:
"""
Yield each line of the given log file (.bz2 compressed log file if -c flag is used.)
"""
fh = bz2.open(filename, 'rb') if self.OPTS.compress else open(filename, 'rb')
for line_bytes in fh:
line = line_bytes.decode('utf-8', 'backslashreplace')
line = line.rstrip('\r\n')
yield line
def get_analysis_messages_nearby(self, filename: str) -> Generator[str, None, None]:
"""
Finding all logs in the log file and yields each line.
"""
self.LOGGER.info('Scanning %s', filename)
for line in self.get_lines(filename):
yield line
def analyze_nearby_logs(self, exp_nid1: int, exp_nid2: int, sci2: bool, log_file: str) -> bool:
"""
Checking matched sync logs of Nearby UE.
"""
found = set()
est_nid1, est_nid2, time_start_s, time_end_s = -1, -1, -1, -1
ssb_rsrp = 0
nb_decoded = 0
total_rx = 0
result = None
user_msg = None
if self.OPTS.compress:
log_file = f'{log_file}.bz2'
for line in self.get_analysis_messages_nearby(log_file):
#796821.854505 [NR_PHY] SyncRef UE found with Nid1 10 and Nid2 1 SS-RSRP -100 dBm/RE
#796811.532881 [NR_PHY] nrUE configured
if not line.startswith('[') and 'SyncRef UE found' in line and 'Nid1' in line and 'Nid2' in line:
num_split = 13 if 'RSRP' in line else 10
fields = line.split(maxsplit=num_split)
est_nid1 = int(fields[7])
est_nid2 = int(fields[10])
if 'RSRP' in line:
ssb_rsrp = int(fields[12])
found.add('syncref')
time_end_s = float(fields[0])
#153092.995494 [NR_PHY] In nr_ue_sl_pssch_rsrp_measurements: [UE 0] adj_ue_index 0 PSSCH-RSRP: -63 dBm/RE (6685627)
if not line.startswith('[') and 'PSSCH-RSRP:' in line:
fields = line.split(maxsplit=11)
pssch_rsrp = int(fields[-3])
# 153090.331558 [PHY] PSSCH test OK with 1 / 2 = 0.50
if not line.startswith('[') and 'PSSCH test' in line:
fields = line.split(maxsplit=10)
nb_decoded = int(fields[-5])
total_rx = int(fields[-3])
if time_start_s == -1 and 'nrUE configured' in line:
fields = line.split(maxsplit=3)
time_start_s = float(fields[0])
if sci2:
if 'the polar decoder output is:' in line:
line = line.strip()
user_msg = line
found.add('sci2')
else:
if 'Received your text! It says:' in line:
line = line.strip()
user_msg = line
found.add('found')
self.LOGGER.debug('found: %r', found)
if 'syncref' not in found:
self.LOGGER.error(f'Failed -- No SyncRef UE.')
return (result, user_msg)
if exp_nid1 != est_nid1 or exp_nid2 != est_nid2:
self.LOGGER.error(f'Failed -- found SyncRef UE Nid1 {est_nid1}, Ni2 {est_nid2}, expecting Nid1 {exp_nid1}, Nid2 {exp_nid2}')
return (result, user_msg)
if time_start_s == -1:
self.LOGGER.error(f'Failed -- No start time found! Fix log and re-run!')
return (result, user_msg)
delta_time_s = time_end_s - time_start_s
result = f'SyncRef UE found. PSSCH-RSRP: {pssch_rsrp} dBm/RE. SSS-RSRP: {ssb_rsrp} dBm/RE passed {nb_decoded} total {total_rx} It took {delta_time_s} seconds'
self.LOGGER.info(result)
if user_msg != None:
self.LOGGER.info(user_msg)
return (result, user_msg)
def get_analysis_messages_syncref(self, filename: str) -> Generator[str, None, None]:
"""
Finding all logs in the log file with X fields for log parsing optimization
"""
self.LOGGER.info('Scanning %s', filename)
for line in self.get_lines(filename):
#796811.532881 [NR_PHY] nrUE configured
#796821.854505 [NR_PHY] PSBCH SL generation started
fields = line.split(maxsplit=5)
if len(fields) == 4 or len(fields) == 6 :
yield line
def analyze_syncref_logs(self, sync_duration: float, log_file: str) -> int:
"""
Checking logs of SyncRef UE.
"""
time_start_s, time_end_s = -1, -1
sum_ssb = 0
if self.OPTS.compress:
log_file = f'{log_file}.bz2'
for line in self.get_analysis_messages_syncref(log_file):
#796821.854505 [NR_PHY] PSBCH SL generation started
if time_start_s == -1 and 'PSBCH SL generation started' in line:
fields = line.split(maxsplit=2)
time_start_s = float(fields[0])
time_end_s = time_start_s + sync_duration
if 'PSBCH SL generation started' in line:
fields = line.split(maxsplit=2)
time_st = float(''.join([ch for ch in fields[0] if ch.isnumeric() or ch =='.']))
if time_st < time_end_s:
sum_ssb += 1
return sum_ssb

View File

@@ -0,0 +1,107 @@
{
"usrp": {
"net_0": [
{
"id": "",
"role": "syncref",
"ip": "",
"cmd": "sudo -E LD_LIBRARY_PATH=$HOME/openairinterface5g/cmake_targets/ran_build/build:$LD_LIBRARY_PATH $HOME/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem --sl-mode 2 --sync-ref --rbsl 52 --numerology 1 --band 38 --SLC 2600000000 --ue-txgain 0 --usrp-args type=b200,serial=3150384,clock_source=external --log_config.global_log_options time,nocolor > ~/syncref.log 2>&1"
},
{
"role": "nearby",
"id": "",
"ip": "10.1.1.61",
"cmd": "cd $HOME/openairinterface5g/ci-scripts; python3 sl_rx_agent.py --cmd \"sudo -E LD_LIBRARY_PATH=$HOME/openairinterface5g/cmake_targets/ran_build/build:$LD_LIBRARY_PATH $HOME/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem --sl-mode 2 --rbsl 52 --numerology 1 --band 38 --SLC 2600000000 --ue-rxgain 90 --usrp-args type=b200,serial=3150361,clock_source=external --log_config.global_log_options time,nocolor > ~/nearby.log 2>&1\""
}
],
"net_1": [
{
"role": "syncref",
"id": "",
"ip": "",
"cmd": "sudo -E LD_LIBRARY_PATH=$HOME/openairinterface5g/cmake_targets/ran_build/build:$LD_LIBRARY_PATH $HOME/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem --sl-mode 2 --sync-ref --rbsl 52 --numerology 1 --band 78 --SLC 2600000000 --ue-txgain 0 --usrp-args type=n3xx,addr=192.168.10.2,subdev=A:0,master_clock_rate=122.88e6 --log_config.global_log_options time,nocolor > ~/syncref.log 2>&1"
},
{
"role": "nearby",
"id": "",
"ip": "10.1.1.80",
"_comment": "atten value = 30, ue-rxgain = 80 for the cable conneciton",
"cmd": "cd $HOME/openairinterface5g/ci-scripts; python3 sl_rx_agent.py --cmd \"sudo -E LD_LIBRARY_PATH=$HOME/openairinterface5g/cmake_targets/ran_build/build:$LD_LIBRARY_PATH $HOME/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem --sl-mode 2 --rbsl 52 --numerology 1 --band 78 --SLC 2600000000 --ue-rxgain 80 --usrp-args type=n3xx,addr=192.168.10.2,subdev=A:0,master_clock_rate=122.88e6 --log_config.global_log_options time,nocolor > ~/nearby.log 2>&1\""
}
],
"net_2": [
{
"role": "syncref",
"id": "",
"ip": "",
"_comment": "atten value = 30, ue-rxgain = 80 for the cable conneciton",
"cmd": "sudo -E LD_LIBRARY_PATH=$HOME/openairinterface5g/cmake_targets/ran_build/build:$LD_LIBRARY_PATH $HOME/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem --sl-mode 2 --sync-ref --rbsl 52 --numerology 1 --band 78 --SLC 2600000000 --ue-txgain 0 --usrp-args type=n3xx,addr=192.168.10.2,subdev=A:0,master_clock_rate=122.88e6 --log_config.global_log_options time,nocolor > ~/syncref.log 2>&1"
},
{
"role": "nearby",
"id": "",
"ip": "10.1.1.63",
"_comment": "atten value = 30, ue-rxgain = 80 for the cable conneciton",
"cmd": "cd $HOME/openairinterface5g/ci-scripts; python3 sl_rx_agent.py --cmd \"sudo -E LD_LIBRARY_PATH=$HOME/openairinterface5g/cmake_targets/ran_build/build:$LD_LIBRARY_PATH $HOME/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem --sl-mode 2 --rbsl 52 --numerology 1 --band 78 --SLC 2600000000 --ue-rxgain 80 --usrp-args type=b200,serial=3150384,clock_source=external --log_config.global_log_options time,nocolor > ~/nearby.log 2>&1\""
}
],
"net_3": [
{
"role": "syncref",
"id": "1",
"ip": "",
"cmd": "sudo -E LD_LIBRARY_PATH=$HOME/openairinterface5g/cmake_targets/ran_build/build:$LD_LIBRARY_PATH $HOME/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem --sl-mode 2 --sync-ref --rbsl 52 --numerology 1 --band 78 --SLC 2600000000 --ue-txgain 0 --usrp-args type=n3xx,addr=192.168.10.2,subdev=A:0,master_clock_rate=122.88e6 --log_config.global_log_options time,nocolor --node-number 1 > ~/syncref1.log 2>&1"
},
{
"role": "nearby",
"id": "2",
"ip": "10.1.1.80",
"_comment": "atten value = 30, ue-rxgain = 80 for the cable conneciton",
"cmd": "cd $HOME/openairinterface5g/ci-scripts; python3 sl_rx_agent.py --cmd \"sudo -E LD_LIBRARY_PATH=$HOME/openairinterface5g/cmake_targets/ran_build/build:$LD_LIBRARY_PATH $HOME/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem --sl-mode 2 --rbsl 52 --numerology 1 --band 78 --SLC 2600000000 --ue-txgain 0 --ue-rxgain 80 --usrp-args type=n3xx,addr=192.168.10.2,subdev=A:0,master_clock_rate=122.88e6 --log_config.global_log_options time,nocolor --node-number 2 > ~/nearby2.log 2>&1\""
},
{
"role": "nearby",
"id": "3",
"ip": "10.1.1.63",
"_comment": "atten value = 30, ue-rxgain = 80 for the cable conneciton",
"cmd": "cd $HOME/openairinterface5g/ci-scripts; python3 sl_rx_agent.py --cmd \"sudo -E LD_LIBRARY_PATH=$HOME/openairinterface5g/cmake_targets/ran_build/build:$LD_LIBRARY_PATH $HOME/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem --sl-mode 2 --rbsl 52 --numerology 1 --band 78 --SLC 2600000000 --ue-rxgain 80 --usrp-args type=b200,serial=3150384,clock_source=external --log_config.global_log_options time,nocolor --node-number 3 > ~/nearby3.log 2>&1\""
}
]
},
"rfsim": {
"net_1": [
{
"role": "syncref",
"id": "",
"ip": "",
"cmd": "sudo -E RFSIMULATOR=server $HOME/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem --sync-ref --rfsim --sl-mode 2 --rbsl 106 --SLC 3300000000 --ue-txgain 0 --rfsimulator.serverport 4048 --log_config.global_log_options time,nocolor > ~/syncref.log 2>&1"
},
{
"role": "nearby",
"id": "",
"ip": "",
"cmd": "sudo -E RFSIMULATOR=127.0.0.1 $HOME/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem --rfsim --sl-mode 2 --rbsl 106 --SLC 3300000000 --ue-rxgain 90 --rfsimulator.serverport 4048 --log_config.global_log_options time,nocolor > ~/nearby.log 2>&1"
}
],
"net_2": [
{
"role": "syncref",
"id": "1",
"ip": "",
"cmd": "sudo -E RFSIMULATOR=127.0.0.1 $HOME/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem --sync-ref --rfsim --sl-mode 2 --rbsl 52 --SLC 2600000000 --ue-txgain 0 --node-number 1 --rfsimulator.serverport 4048 --log_config.global_log_options time,nocolor > ~/syncref1.log 2>&1"
},
{
"role": "nearby",
"id": "2",
"ip": "",
"cmd": "sudo -E RFSIMULATOR=server $HOME/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem --rfsim --sl-mode 2 --rbsl 52 --SLC 2600000000 --ue-txgain 0 --ue-rxgain 90 --node-number 2 --rfsimulator.serverport 4048 --log_config.global_log_options time,nocolor > ~/nearby2.log 2>&1"
},
{
"role": "nearby",
"id": "3",
"ip": "",
"cmd": "sudo -E RFSIMULATOR=127.0.0.1 $HOME/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem --rfsim --sl-mode 2 --rbsl 52 --SLC 2600000000 --ue-rxgain 90 --node-number 3 --rfsimulator.serverport 4048 --log_config.global_log_options time,nocolor > ~/nearby3.log 2>&1"
}
]
}
}

243
ci-scripts/sl_rx_agent.py Executable file
View File

@@ -0,0 +1,243 @@
#!/usr/bin/env python3
#
# Automated tests for running 5G NR Sidelink Nearby UE.
# The following is an example to run this script.
#
# python3 sl_rx_agent.py \
# --cmd 'sudo -E LD_LIBRARY_PATH=$HOME/openairinterface5g/cmake_targets/ran_build/build:$LD_LIBRARY_PATH \
# $HOME/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem \
# --sl-mode 2 -r 52 --numerology 1 --band 38 -C 2600000000 --ue-rxgain 20 \
# --usrp-args "type=n3xx,addr=192.168.20.2,subdev=A:0,master_clock_rate=122.88e6" \
# > ~/rx.log 2>&1' \
# --nid1 10 --nid2 1
#
# See `--help` for more information.
#
import os
import sys
import argparse
import logging
import time
import glob
import bz2
import subprocess
from subprocess import Popen
from typing import Optional, List
from sl_check_log import LogChecker
HOME_DIR = os.path.expanduser( '~' )
DEFAULT_RFSIM_CMD = 'sudo -E RFSIMULATOR=127.0.0.1 \
/local/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem \
--rfsim --sl-mode 2 --rfsimulator.serverport 4048'
DEFAULT_USRP_CMD = 'sudo -E LD_LIBRARY_PATH=$HOME/openairinterface5g/cmake_targets/ran_build/build:$LD_LIBRARY_PATH \
$HOME/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem \
--sl-mode 2 --rbsl 52 --numerology 1 --band 38 --SLC 2600000000 --ue-rxgain 90 \
--usrp-args "type=b200,serial=3150361" \
--log_config.global_log_options time,nocolor \
> ~/rx.log 2>&1'
# ----------------------------------------------------------------------------
# Command line argument parsing
parser = argparse.ArgumentParser(description="""
Automated tests for 5G NR Sidelink Rx simulations
""")
parser.add_argument('--compress', '-c', action='store_true', help="""
Compress the log files in the --log-dir
""")
parser.add_argument('--cmd', type=str, default=DEFAULT_USRP_CMD, help="""
Commands
""")
parser.add_argument('--debug', action='store_true', help="""
Enable debug logging (for this script only)
""")
parser.add_argument('--duration', '-d', metavar='SECONDS', type=int, default=20, help="""
How long to run the test before stopping to examine the logs
""")
parser.add_argument('--log-dir', default=HOME_DIR, help="""
Where to store log files
""")
parser.add_argument('--nid1', type=int, default=10, help="""
Nid1 value
""")
parser.add_argument('--nid2', type=int, default=1, help="""
Nid2 value
""")
parser.add_argument('--no-run', '-n', action='store_true', help="""
Don't run the test, only examine the logs in the --log-dir
directory from a previous run of the test
""")
parser.add_argument('--sci2', action='store_true', help="""
Enable SCI2 log parsing (this will grep the logs for the SCI2 payload)
""")
OPTS = parser.parse_args()
del parser
logging.basicConfig(level=logging.DEBUG if OPTS.debug else logging.INFO,
format='>>> %(name)s: %(levelname)s: %(message)s')
LOGGER = logging.getLogger(os.path.basename(sys.argv[0]))
# ----------------------------------------------------------------------------
def compress(from_name: str, to_name: Optional[str]=None, remove_original: bool=False) -> None:
"""
Compress the file `from_name` and store it as `to_name`.
`to_name` defaults to `from_name` with `.bz2` appended.
If `remove_original` is True, removes `from_name` when the compress finishes.
"""
if to_name is None:
to_name = from_name
if not to_name.endswith('.bz2'):
to_name += '.bz2'
LOGGER.info('Compress %s to %s', from_name, to_name)
with bz2.open(to_name, 'w') as outh, \
open(from_name, 'rb') as inh:
while True:
data = inh.read(10240)
if not data:
break
outh.write(data)
if remove_original:
LOGGER.debug('Remove %s', from_name)
os.remove(from_name)
class CompressJobs:
"""
Allow multiple invocations of `compress` to run in parallel
"""
def __init__(self) -> None:
self.kids: List[int] = []
def compress(self, from_name: str, to_name: Optional[str]=None, remove_original: bool=False) -> None:
if not os.path.exists(from_name):
# It's not necessarily an error if the log file does not exist.
# For example, if nfapi_trace never gets invoked (e.g., because
# NFAPI_TRACE_LEVEL is set to none), then the log file nfapi.log
# will not get created.
LOGGER.warning('No file: %s', from_name)
return
kid = os.fork()
if kid != 0:
self.kids.append(kid)
else:
LOGGER.debug('in pid %d compress %s...', os.getpid(), from_name)
compress(from_name, to_name, remove_original)
LOGGER.debug('in pid %d compress %s...done', os.getpid(), from_name)
sys.exit()
def wait(self) -> None:
LOGGER.debug('wait %s...', self.kids)
failed = []
for kid in self.kids:
LOGGER.debug('waitpid %d', kid)
_pid, status = os.waitpid(kid, 0)
if status != 0:
failed.append(kid)
if failed:
raise Exception('compression failed: %s', failed)
LOGGER.debug('wait...done')
class TestNearby():
"""
Represents TestNearby
"""
def __init__(self, cmd: str):
self.cmd = cmd
self.delay = 0 # seconds
self.id = self._get_id()
self.role = "nearby"
self.log_file_path = os.path.join(OPTS.log_dir, f'{self.role}{self.id}.log')
def __str__(self) -> str:
return f'{self.role}{self.id}'
def _get_id(self) -> str:
node_id = ''
if 'node-number' in self.cmd:
node_id = self.cmd.split('node-number')[-1].split()[0]
return node_id
def run(self) -> bool:
time.sleep(self.delay)
proc = self.launch_nearby()
LOGGER.info(f"nearby_proc = {proc}")
LOGGER.info(f"Process running... {self}")
time.sleep(OPTS.duration)
passed = self.kill_process(proc)
if OPTS.compress:
self.compress_log_file(proc)
return passed
def launch_nearby(self) -> Popen:
LOGGER.info('Launching Nearby UE')
proc = Popen(self.cmd, shell=True)
time.sleep(1)
return proc
def kill_process(self, proc: Popen) -> bool:
passed = True
if proc:
status = proc.poll()
if status is None:
LOGGER.info('process is still running, which is good')
else:
passed = False
LOGGER.info('process ended early: %r', status)
LOGGER.info(f'{self} process ended early: {status}')
if proc and passed:
LOGGER.info(f'kill main simulation processes... {self}')
cmd = ['sudo', 'killall']
cmd.append('-KILL')
cmd.append('nr-uesoftmodem')
if "nearby" == self.role:
subprocess.run(cmd)
LOGGER.info(f'Waiting for PID proc.pid for {self}')
proc.kill()
proc.wait()
LOGGER.info(f'kill main simulation processes...done for {self}')
return passed
def compress_log_file(self, proc: Popen):
jobs = CompressJobs()
jobs.compress(self.log_file_path)
jobs.wait()
# ----------------------------------------------------------------------------
def main(argv) -> int:
test_agent = TestNearby(OPTS.cmd)
log_agent = LogChecker(OPTS, LOGGER)
passed = True
if not OPTS.no_run:
passed = test_agent.run()
# Examine the logs to determine if the test passed
result, user_msg = log_agent.analyze_nearby_logs(OPTS.nid1, OPTS.nid2, OPTS.sci2, test_agent.log_file_path)
if not result or not user_msg:
passed = False
if not passed:
LOGGER.critical("FAILED - Didn't get your text, sorry. Please try again!")
return 1
LOGGER.info("PASSED - I got your text! Thanks!")
return 0
sys.exit(main(sys.argv))

View File

@@ -1,6 +1,8 @@
- Build_Proxy
- Build_Cluster_Image
- Build_PhySim
- Run_PhySim
- Run_LDPCTest
- Run_NRulsimTest
- Build_eNB
- WaitEndBuild_eNB
- Initialize_eNB

View File

@@ -24,7 +24,7 @@
<htmlTabRef>TEST-NSA-FR1-TM1</htmlTabRef>
<htmlTabName>NSA Ping DL UL with QUECTEL</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>3</repeatCount>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
030000
040000

View File

@@ -24,7 +24,7 @@
<htmlTabRef>TEST-NSA-FR1-TM1</htmlTabRef>
<htmlTabName>NSA Ping DL UL with QUECTEL</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>3</repeatCount>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
030000
040000

View File

@@ -0,0 +1,35 @@
<!--
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
-->
<testCaseList>
<htmlTabRef>build-tab</htmlTabRef>
<htmlTabName>Build Images on Cluster</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<TestCaseRequestedList>000001</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="000001">
<class>Build_Cluster_Image</class>
<desc>Build Images on OpenShift Cluster</desc>
</testCase>
</testCaseList>

View File

@@ -21,7 +21,7 @@
-->
<testCaseList>
<htmlTabRef>l2sim-5gnr-proxy-build</htmlTabRef>
<htmlTabRef>l2sim-4glte-proxy-build</htmlTabRef>
<htmlTabName>Build L2sim proxy image</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>1</repeatCount>
@@ -36,7 +36,7 @@
<eNB_instance>1</eNB_instance>
<eNB_serverId>1</eNB_serverId>
<forced_workspace_cleanup>True</forced_workspace_cleanup>
<proxy_commit>56cfdc0</proxy_commit>
<proxy_commit>ce3562b</proxy_commit>
</testCase>
</testCaseList>

View File

@@ -0,0 +1,135 @@
<!--
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
-->
<testCaseList>
<htmlTabRef>l2sim-4glte-tdd</htmlTabRef>
<htmlTabName>Testing 4G LTE L2 sim - FDD eNB</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
100001
000000
000001
000002
000003
000011
200000
020001
020002
030011
030012
200001
100001
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="000000">
<class>DeployGenObject</class>
<desc>Deploy Cassandra Database</desc>
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
<services>cassandra db_init</services>
<nb_healthy>1</nb_healthy>
</testCase>
<testCase id="000001">
<class>DeployGenObject</class>
<desc>Deploy OAI 4G CoreNetwork</desc>
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
<services>oai_hss redis magma_mme oai_spgwc oai_spgwu trf_gen</services>
<nb_healthy>7</nb_healthy>
</testCase>
<testCase id="000002">
<class>DeployGenObject</class>
<desc>Deploy OAI 4G eNB L2 sim</desc>
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
<services>oai_enb</services>
<nb_healthy>8</nb_healthy>
</testCase>
<testCase id="000003">
<class>DeployGenObject</class>
<desc>Deploy OAI L2 sim 4G LTE-UE 1 and Proxy</desc>
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
<services>proxy oai_ue1</services>
<nb_healthy>10</nb_healthy>
</testCase>
<testCase id="000011">
<class>IdleSleep</class>
<desc>Sleep</desc>
<idle_sleep_time_in_sec>10</idle_sleep_time_in_sec>
</testCase>
<testCase id="020001">
<class>PingFromContainer</class>
<desc>Ping trf-gen from LTE-UE 1</desc>
<container_name>l2sim4g-oai-lte-ue1</container_name>
<options>-I oaitun_ue1 -c 20 192.168.61.11</options>
<loss_threshold>0</loss_threshold>
</testCase>
<testCase id="020002">
<class>PingFromContainer</class>
<desc>Ping LTE-UE 1 from trf-gen</desc>
<container_name>l2sim4g-trf-gen</container_name>
<options>-c 20 12.0.0.2</options>
<loss_threshold>0</loss_threshold>
</testCase>
<testCase id="030011">
<class>IperfFromContainer</class>
<desc>Iperf UDP Downlink</desc>
<server_container_name>l2sim4g-oai-lte-ue1</server_container_name>
<client_container_name>l2sim4g-trf-gen</client_container_name>
<server_options>-B 12.0.0.2 -u -i 1 -s</server_options>
<client_options>-c 12.0.0.2 -u -i 1 -t 30 -b 1M</client_options>
</testCase>
<testCase id="030012">
<class>IperfFromContainer</class>
<desc>Iperf UDP Uplink</desc>
<server_container_name>l2sim4g-trf-gen</server_container_name>
<client_container_name>l2sim4g-oai-lte-ue1</client_container_name>
<server_options>-u -i 1 -s</server_options>
<client_options>-B 12.0.0.2 -c 192.168.61.11 -u -i 1 -t 30 -b 3M</client_options>
</testCase>
<testCase id="100001">
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
</testCase>
<testCase id="200000">
<class>StatsFromGenObject</class>
<desc>Statistics before Traffic Test</desc>
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
</testCase>
<testCase id="200001">
<class>StatsFromGenObject</class>
<desc>Statistics after Traffic Test</desc>
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
</testCase>
</testCaseList>

View File

@@ -0,0 +1,38 @@
<!--
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
-->
<testCaseList>
<htmlTabRef>l2sim-4glte-down</htmlTabRef>
<htmlTabName>CleanUp 4G L2 sim - FDD eNB</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList>
100002
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100002">
<class>UndeployGenObject</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
</testCase>
</testCaseList>

View File

@@ -24,7 +24,7 @@
<htmlTabRef>rfsim-4glte-tdd05mhz</htmlTabRef>
<htmlTabName>Monolithic eNB - TDD 05MHz</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>2</repeatCount>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
100011
000011

View File

@@ -22,7 +22,7 @@
-->
<testCaseList>
<htmlTabRef>rfsim-5gnr-f1</htmlTabRef>
<htmlTabName>Testing 5G NR RF sim in containers - CU-DU F1 split</htmlTabName>
<htmlTabName>CU-DU F1 split</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<TestCaseRequestedList>
100021

View File

@@ -22,7 +22,7 @@
-->
<testCaseList>
<htmlTabRef>rfsim-5gnr-down-f1</htmlTabRef>
<htmlTabName>CleanUp 5G RF - CU-DU F1 split</htmlTabName>
<htmlTabName>CleanUp CU-DU F1 split</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList>
100022

View File

@@ -22,9 +22,9 @@
-->
<testCaseList>
<htmlTabRef>rfsim-5gnr-fdd</htmlTabRef>
<htmlTabName>Testing 5G NR RF sim - Monolithic FDD gNB</htmlTabName>
<htmlTabName>Monolithic FDD gNB with SDAP</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>4</repeatCount>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
100011
000010

View File

@@ -22,7 +22,7 @@
-->
<testCaseList>
<htmlTabRef>rfsim-5gnr-fdd-down</htmlTabRef>
<htmlTabName>CleanUp 5G RF - Monolithic FDD gNB</htmlTabName>
<htmlTabName>CleanUp Monolithic FDD gNB with SDAP</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList>
100012

View File

@@ -24,7 +24,7 @@
<htmlTabRef>l2sim-5gnr-tdd</htmlTabRef>
<htmlTabName>Testing 5G NR L2 sim - TDD gNB</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>2</repeatCount>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
100001
000000

View File

@@ -22,9 +22,9 @@
-->
<testCaseList>
<htmlTabRef>rfsim-5gnr-tdd</htmlTabRef>
<htmlTabName>Testing 5G NR RF sim - Monolithic TDD gNB</htmlTabName>
<htmlTabName>Monolithic TDD gNB</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>4</repeatCount>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
100001
000000

View File

@@ -22,7 +22,7 @@
-->
<testCaseList>
<htmlTabRef>rfsim-5gnr-down</htmlTabRef>
<htmlTabName>CleanUp 5G RF - Monolithic TDD gNB</htmlTabName>
<htmlTabName>CleanUp Monolithic TDD gNB</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList>
100002

View File

@@ -0,0 +1,42 @@
<!--
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
-->
<testCaseList>
<htmlTabRef>l2sim-4glte-5gnr-proxy-build</htmlTabRef>
<htmlTabName>Build L2sim proxy image</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
000001
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="000001">
<class>Build_Proxy</class>
<desc>Build L2sim Proxy Image</desc>
<eNB_instance>1</eNB_instance>
<eNB_serverId>1</eNB_serverId>
<forced_workspace_cleanup>True</forced_workspace_cleanup>
<proxy_commit>ce3562b</proxy_commit>
</testCase>
</testCaseList>

View File

@@ -24,7 +24,7 @@
<htmlTabRef>test-05-tm1</htmlTabRef>
<htmlTabName>Test-05MHz-TM1</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>4</repeatCount>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
030201
040101

View File

@@ -24,7 +24,7 @@
<htmlTabRef>test-05-tm1-nos1-tunnel</htmlTabRef>
<htmlTabName>Test-05MHz-TM1-noS1-tunnel</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>4</repeatCount>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
030201 090109
030101 000001 090101 000002 040501 040502 000001 040601 040602 040641 040642 000001 090109 030201

View File

@@ -24,7 +24,7 @@
<htmlTabRef>test-05-tm1-fembms-nos1-tunnel</htmlTabRef>
<htmlTabName>Test-05MHz-FEMBMS-TM1-noS1-tunnel</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>2</repeatCount>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
030201 090109
030104 000001 090104 000002 040605 000001 090109 030201

View File

@@ -24,7 +24,7 @@
<htmlTabRef>test-05-tm1-mbms-nos1-tunnel</htmlTabRef>
<htmlTabName>Test-05MHz-MBMS-TM1-noS1-tunnel</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>2</repeatCount>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
030201 090109
030103 000001 090103 000002 040605 000001 090109 030201

View File

@@ -24,7 +24,7 @@
<htmlTabRef>test-05-tm1-tunnel</htmlTabRef>
<htmlTabName>Test-05MHz-TM1-tunnel</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>2</repeatCount>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
030201 090109
030102 000001 090102 000002 040503 000001 040603 040604 040643 040644 000001 090109 030201

View File

@@ -25,7 +25,7 @@
<htmlTabRef>test-05-tm2</htmlTabRef>
<htmlTabName>Test-05MHz-TM2</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>2</repeatCount>
<repeatCount>1</repeatCount>
<TestUnstable>True</TestUnstable>
<TestMinId>040608</TestMinId>
<TestCaseRequestedList>

View File

@@ -24,7 +24,7 @@
<htmlTabRef>test-20-tm1</htmlTabRef>
<htmlTabName>Test-20MHz-TM1</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>4</repeatCount>
<repeatCount>1</repeatCount>
<TestUnstable>True</TestUnstable>
<TestMinId>040623</TestMinId>
<TestCaseRequestedList>

View File

@@ -24,7 +24,7 @@
<htmlTabRef>test-05-tm1-rrc-no-flex</htmlTabRef>
<htmlTabName>Test-05MHz-TM1-RRC-Inactivity</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>2</repeatCount>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
030201
040101

View File

@@ -24,7 +24,7 @@
<htmlTabRef>test-05-tm1-rrc-w-flex</htmlTabRef>
<htmlTabName>Test-05MHz-TM1-RRC-Inactivity-FlexRan</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>2</repeatCount>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
030201
040101

View File

@@ -111,16 +111,16 @@
<testCase id="040651">
<class>Iperf</class>
<desc>iperf (10MHz - UL/20Mbps/UDP)(30 sec)(balanced profile)</desc>
<iperf_args>-u -b 20M -t 30 -i 1 -R</iperf_args>
<desc>iperf (10MHz - UL/18Mbps/UDP)(30 sec)(balanced profile)</desc>
<iperf_args>-u -b 18M -t 30 -i 1 -R</iperf_args>
<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
<iperf_profile>balanced</iperf_profile>
</testCase>
<testCase id="040652">
<class>Iperf</class>
<desc>iperf (10MHz - UL/20Mbps/UDP)(30 sec)(single-ue profile)</desc>
<iperf_args>-u -b 20M -t 30 -i 1 -R</iperf_args>
<desc>iperf (10MHz - UL/18Mbps/UDP)(30 sec)(single-ue profile)</desc>
<iperf_args>-u -b 18M -t 30 -i 1 -R</iperf_args>
<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
<iperf_profile>single-ue</iperf_profile>
</testCase>

View File

@@ -24,7 +24,7 @@
<htmlTabRef>test-10-cdrx-tm1</htmlTabRef>
<htmlTabName>Test-10MHz-CDRX-TM1</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>4</repeatCount>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
030201
040101

View File

@@ -1,111 +0,0 @@
<!--
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
-->
<testCaseList>
<htmlTabRef>test-f1-05</htmlTabRef>
<htmlTabName>Test-F1-CU-DU-05MHz</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>2</repeatCount>
<TestCaseRequestedList>
030201
040101
030142 030141 000002 040301 000002 040541 040601 040641 040401 040201 030201 030202
</TestCaseRequestedList>
<TestCaseExclusionList>
</TestCaseExclusionList>
<testCase id="000002">
<class>IdleSleep</class>
<desc>Sleep</desc>
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
</testCase>
<testCase id="030141">
<class>Initialize_eNB</class>
<desc>Initialize DU (FDD/Band7/5MHz)</desc>
<Initialize_eNB_args>-O ci-scripts/conf_files/du.band7.tm1.25PRB.usrpb210.conf --log_config.global_log_options level,nocolor,time</Initialize_eNB_args>
<eNB_instance>1</eNB_instance>
</testCase>
<testCase id="030142">
<class>Initialize_eNB</class>
<desc>Initialize CU (FDD/Band7/5MHz)</desc>
<Initialize_eNB_args>-O ci-scripts/conf_files/cu.band7.tm1.25PRB.conf --log_config.global_log_options level,nocolor,time</Initialize_eNB_args>
<eNB_instance>0</eNB_instance>
</testCase>
<testCase id="030201">
<class>Terminate_eNB</class>
<desc>Terminate CU</desc>
<eNB_instance>0</eNB_instance>
</testCase>
<testCase id="030202">
<class>Terminate_eNB</class>
<desc>Terminate DU</desc>
<eNB_instance>1</eNB_instance>
</testCase>
<testCase id="040101">
<class>Initialize_UE</class>
<desc>Initialize UE</desc>
</testCase>
<testCase id="040201">
<class>Terminate_UE</class>
<desc>Terminate UE</desc>
</testCase>
<testCase id="040301">
<class>Attach_UE</class>
<desc>Attach UE</desc>
</testCase>
<testCase id="040401">
<class>Detach_UE</class>
<desc>Detach UE</desc>
</testCase>
<testCase id="040541">
<class>Ping</class>
<desc>ping (5MHz - 20 sec)</desc>
<ping_args>-c 20</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
<testCase id="040601">
<class>Iperf</class>
<desc>iperf (5MHz - DL/15Mbps/UDP)(30 sec)(single-ue profile)</desc>
<iperf_args>-u -b 15M -t 30 -i 1</iperf_args>
<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
<iperf_profile>single-ue</iperf_profile>
</testCase>
<testCase id="040641">
<class>Iperf</class>
<desc>iperf (5MHz - UL/9Mbps/UDP)(30 sec)(single-ue profile)</desc>
<iperf_args>-u -b 9M -t 30 -i 1 -R</iperf_args>
<iperf_packetloss_threshold>60</iperf_packetloss_threshold>
<iperf_profile>single-ue</iperf_profile>
</testCase>
</testCaseList>

View File

@@ -1,111 +0,0 @@
<!--
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
-->
<testCaseList>
<htmlTabRef>test-f1-10</htmlTabRef>
<htmlTabName>Test-F1-CU-DU-10MHz</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>4</repeatCount>
<TestCaseRequestedList>
030201
040101
030152 030151 000002 040301 000002 040551 040611 040651 040401 040201 030201 030202
</TestCaseRequestedList>
<TestCaseExclusionList>
</TestCaseExclusionList>
<testCase id="000002">
<class>IdleSleep</class>
<desc>Sleep</desc>
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
</testCase>
<testCase id="030151">
<class>Initialize_eNB</class>
<desc>Initialize DU (FDD/Band7/10MHz)</desc>
<Initialize_eNB_args>-O ci-scripts/conf_files/du.band7.tm1.50PRB.usrpb210.conf --log_config.global_log_options level,nocolor,time</Initialize_eNB_args>
<eNB_instance>1</eNB_instance>
</testCase>
<testCase id="030152">
<class>Initialize_eNB</class>
<desc>Initialize CU (FDD/Band7/10MHz)</desc>
<Initialize_eNB_args>-O ci-scripts/conf_files/cu.band7.tm1.50PRB.conf --log_config.global_log_options level,nocolor,time</Initialize_eNB_args>
<eNB_instance>0</eNB_instance>
</testCase>
<testCase id="030201">
<class>Terminate_eNB</class>
<desc>Terminate CU</desc>
<eNB_instance>0</eNB_instance>
</testCase>
<testCase id="030202">
<class>Terminate_eNB</class>
<desc>Terminate DU</desc>
<eNB_instance>1</eNB_instance>
</testCase>
<testCase id="040101">
<class>Initialize_UE</class>
<desc>Initialize UE</desc>
</testCase>
<testCase id="040201">
<class>Terminate_UE</class>
<desc>Terminate UE</desc>
</testCase>
<testCase id="040301">
<class>Attach_UE</class>
<desc>Attach UE</desc>
</testCase>
<testCase id="040401">
<class>Detach_UE</class>
<desc>Detach UE</desc>
</testCase>
<testCase id="040551">
<class>Ping</class>
<desc>ping (10MHz - 20 sec)</desc>
<ping_args>-c 20</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
<testCase id="040611">
<class>Iperf</class>
<desc>iperf (10MHz - DL/32Mbps/UDP)(30 sec)(single-ue profile)</desc>
<iperf_args>-u -b 32M -t 30 -i 1</iperf_args>
<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
<iperf_profile>single-ue</iperf_profile>
</testCase>
<testCase id="040651">
<class>Iperf</class>
<desc>iperf (10MHz - UL/15Mbps/UDP)(30 sec)(single-ue profile)</desc>
<iperf_args>-u -b 15M -t 30 -i 1 -R</iperf_args>
<iperf_packetloss_threshold>60</iperf_packetloss_threshold>
<iperf_profile>single-ue</iperf_profile>
</testCase>
</testCaseList>

View File

@@ -1,111 +0,0 @@
<!--
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
-->
<testCaseList>
<htmlTabRef>test-f1-20</htmlTabRef>
<htmlTabName>Test-F1-CU-DU-20MHz</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>4</repeatCount>
<TestCaseRequestedList>
030201
040101
030162 030161 000002 040301 000002 040561 040621 040661 040401 040201 030201 030202
</TestCaseRequestedList>
<TestCaseExclusionList>
</TestCaseExclusionList>
<testCase id="000002">
<class>IdleSleep</class>
<desc>Sleep</desc>
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
</testCase>
<testCase id="030161">
<class>Initialize_eNB</class>
<desc>Initialize DU (FDD/Band7/20MHz)</desc>
<Initialize_eNB_args>-O ci-scripts/conf_files/du.band7.tm1.100PRB.usrpb210.conf --log_config.global_log_options level,nocolor,time</Initialize_eNB_args>
<eNB_instance>1</eNB_instance>
</testCase>
<testCase id="030162">
<class>Initialize_eNB</class>
<desc>Initialize CU (FDD/Band7/20MHz)</desc>
<Initialize_eNB_args>-O ci-scripts/conf_files/cu.band7.tm1.100PRB.conf --log_config.global_log_options level,nocolor,time</Initialize_eNB_args>
<eNB_instance>0</eNB_instance>
</testCase>
<testCase id="030201">
<class>Terminate_eNB</class>
<desc>Terminate CU</desc>
<eNB_instance>0</eNB_instance>
</testCase>
<testCase id="030202">
<class>Terminate_eNB</class>
<desc>Terminate DU</desc>
<eNB_instance>1</eNB_instance>
</testCase>
<testCase id="040101">
<class>Initialize_UE</class>
<desc>Initialize UE</desc>
</testCase>
<testCase id="040201">
<class>Terminate_UE</class>
<desc>Terminate UE</desc>
</testCase>
<testCase id="040301">
<class>Attach_UE</class>
<desc>Attach UE</desc>
</testCase>
<testCase id="040401">
<class>Detach_UE</class>
<desc>Detach UE</desc>
</testCase>
<testCase id="040561">
<class>Ping</class>
<desc>ping (20MHz - 20 sec)</desc>
<ping_args>-c 20</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
<testCase id="040621">
<class>Iperf</class>
<desc>iperf (20MHz - DL/70Mbps/UDP)(30 sec)(single-ue profile)</desc>
<iperf_args>-u -b 70M -t 30 -i 1</iperf_args>
<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
<iperf_profile>single-ue</iperf_profile>
</testCase>
<testCase id="040661">
<class>Iperf</class>
<desc>iperf (20MHz - UL/15Mbps/UDP)(30 sec)(single-ue profile)</desc>
<iperf_args>-u -b 15M -t 30 -i 1 -R</iperf_args>
<iperf_packetloss_threshold>60</iperf_packetloss_threshold>
<iperf_profile>single-ue</iperf_profile>
</testCase>
</testCaseList>

View File

@@ -24,7 +24,7 @@
<htmlTabRef>run-oai-gnb-nr-ue</htmlTabRef>
<htmlTabName>Run-gNB-and-NR-UE</htmlTabName>
<htmlTabIcon>tasks</htmlTabIcon>
<repeatCount>2</repeatCount>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
090101 000001 090102 000002 090108 090109
</TestCaseRequestedList>
@@ -52,7 +52,7 @@
<testCase id="090102">
<class>Initialize_OAI_UE</class>
<desc>Initialize NR UE USRP</desc>
<Initialize_OAI_UE_args>--phy-test --usrp-args "addr=192.168.30.2,second_addr=192.168.50.2,clock_source=external,time_source=external" --ue-rxgain 50 --rrc_config_path . --dlsch-parallel 4 --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
<Initialize_OAI_UE_args>--phy-test --usrp-args "addr=192.168.30.2,second_addr=192.168.50.2,clock_source=external,time_source=external" --ue-rxgain 50 --rrc_config_path . --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
<air_interface>NR</air_interface>
</testCase>

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