Synchronized Real-Time Data Recording Application Addition
The main Features of Synchronized Real-Time Data Recording Application:
- The Data Recording Application runs in parallel to the gNB or UE server or in another server as Data Recording or Data Lake Server
- It makes use of (an extended version) of OAI’s T-tracer framework
- It communicates with base station, and user terminal
- It synchronizes and combines data traces and control information (meta-data) from Base station and User terminal into consistent SigMF data sets
Details on implementation addition:
- T_tracer Extension to Support up to 35 Parameters in the T() macro
- Add traces on gNB PHY UL and related requirement: FD PUSH IQ, FD DMRS, and UL Channel estimates wi/wo interpolation, and Rx Payload bits:
- The required memories have been created and initialized in: openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
- Those memories: memory for DMRS signals, memory for channel estimates based on DMRS positions, memory to store slot grid with channel coefficients based on DMRS positions after interpolation, and memory to store extracted data including PUSCH + DMRS.
- The input parameters to nr_pusch_channel_estimation() has been updated to get the pointer to the added memories of pusch_dmrs_slot_mem and pusch_ch_est_dmrs_pos_slot_mem (openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h)
- The DMRS grid of NR slot and the estimated channel coefficients at DMRS locations are logged to created memories in: openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
- The function inner_rx in openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c is updated to log the extracted ULSCH PRBs and the interpolated channel coefficients.
- The T-macro() has been called in (openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c) to trace added traces: T_GNB_PHY_UL_FD_DMRS, T_GNB_PHY_UL_FD_CHAN_EST_DMRS_POS, T_GNB_PHY_UL_FD_PUSCH_IQ, T_GNB_PHY_UL_FD_CHAN_EST_DMRS_INTERPL
- Add traces on UE PHY UL and related requirement: Tx Scrambled bits and Tx payload bits
- Update input parameters to nr_ulsch_encoding () in nr_transport_proto_ue.h to get number_dmrs_symbols to be added to meta-data.
- In nr_ulsch_coding.c: Trace UE PHY UL Payload TX bits (T_message: T_UE_PHY_UL_PAYLOAD_TX_BITS) including related meta-data and UTC time.
- In nr_ulsch_ue.c: Trace UE PHY UL Scrambled TX bits (T_message: T_UE_PHY_UL_SCRAMBLED_TX_BITS) including related meta-data and UTC time.
- Fix the input prameters in nr_ulsch_encoding () called in (openair1/SIMULATION/NR_PHY/ulschsim.c) since a new input parameter has been added.
- Add Data Collection Services (T-Tracers for gNB and UE)
- Add _tracer_app_gnb and t_tracer_app_ue apps to common/utils/T/tracer/Makefile
- Add Data collection Service for gNB: common/utils/T/tracer/t_tracer_app_gnb.c
- Add Data Collection Service for UE: common/utils/T/tracer/t_tracer_app_ue.c#
-
Add Shared memory configuration (common/utils/T/tracer/shared_memory_config.h), since we will have too much memory consumption on the stack if the T-tracer is not fast enough to process the traces or if we have too much traces. As a result, tracers start to capture data, write data in shared memory, then close the T-Tracer after getting the recording of N slots. The Data recording App will read data from the shared memory.
-
Add Main app of Data Recording Application v1.0 including: Config files, SigMF Interface, Config Interface, Sync Service, and def messages: The data recording App includes mainly the following files:
- The main app: data_recording_app_v1.0.py that has the data control service, interact with tracers, data sync and conversion service.
- The configuration file: common/utils/data_recording/config/config_data_recording.json
- The wireless dictionary file: common/utils/data_recording/config/wireless_link_parameter_map.yaml
- Config Interface (common/utils/data_recording/lib/config_interface.py) that reads the configuration for both gNB and UE.
- Sync interface (common/utils/data_recording/lib/sync_service.py) that sync captured data for gNB and UE before saving them in SigMF format
- The SigMF Interface (common/utils/data_recording/lib/sigmf_interface.py) to store recorded data and meta-data in SigMF format
- A simple script (common/utils/data_recording/sync_validation_demo.py) to validate that the recorded bits from gNB and UE are in Sync
- For more info look to doc/data_recording.md