merge latest develop, enhance real time, set back BCH tracing in UE as in develop branch
This commit is contained in:
@@ -62,8 +62,7 @@
|
||||
<compile_prog_args>--oaisim -r Rel10 --noS1 -c </compile_prog_args>
|
||||
<compile_prog_out>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1
|
||||
$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/rb_tool
|
||||
$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/CMakeFiles/nasmesh/nasmesh.ko
|
||||
$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/CMakeFiles/oai_nw_drv/oai_nw_drv.ko</compile_prog_out>
|
||||
$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/CMakeFiles/nasmesh/nasmesh.ko</compile_prog_out>
|
||||
<pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash</pre_exec>
|
||||
<pre_exec_args></pre_exec_args>
|
||||
<main_exec></main_exec>
|
||||
@@ -10486,7 +10485,7 @@ c
|
||||
<UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai --eNB --UE -w USRP -c -x </UE_compile_prog>
|
||||
<UE_branch>develop1B</UE_branch>
|
||||
<UE_compile_prog_args></UE_compile_prog_args>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip; sudo rmmod oai_nw_drv</UE_pre_exec>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip</UE_pre_exec>
|
||||
<UE_pre_exec_args></UE_pre_exec_args>
|
||||
<UE_main_exec>sleep 50; cd $OPENAIR_DIR/cmake_targets/lte_build_oai/build ; sudo -E $OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 90 --ue-rxgain 125 </UE_main_exec>
|
||||
<UE_main_exec_args></UE_main_exec_args>
|
||||
@@ -10586,7 +10585,7 @@ c
|
||||
<UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai --eNB --UE -w USRP -c -x </UE_compile_prog>
|
||||
<UE_branch>develop1B</UE_branch>
|
||||
<UE_compile_prog_args></UE_compile_prog_args>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip; sudo rmmod oai_nw_drv</UE_pre_exec>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip</UE_pre_exec>
|
||||
<UE_pre_exec_args></UE_pre_exec_args>
|
||||
<UE_main_exec>sleep 50; cd $OPENAIR_DIR/cmake_targets/lte_build_oai/build ; sudo -E $OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem -U -C2660000000 -r50 --ue-scan-carrier --ue-txgain 90 --ue-rxgain 125 </UE_main_exec>
|
||||
<UE_main_exec_args></UE_main_exec_args>
|
||||
@@ -10686,7 +10685,7 @@ c
|
||||
<UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai --eNB --UE -w USRP -c -x </UE_compile_prog>
|
||||
<UE_branch>develop1B</UE_branch>
|
||||
<UE_compile_prog_args></UE_compile_prog_args>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip; sudo rmmod oai_nw_drv</UE_pre_exec>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip</UE_pre_exec>
|
||||
<UE_pre_exec_args></UE_pre_exec_args>
|
||||
<UE_main_exec>sleep 50; cd $OPENAIR_DIR/cmake_targets/lte_build_oai/build ; sudo -E $OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem -U -C2660000000 -r100 --ue-scan-carrier --ue-txgain 90 --ue-rxgain 125 </UE_main_exec>
|
||||
<UE_main_exec_args></UE_main_exec_args>
|
||||
@@ -10787,7 +10786,7 @@ c
|
||||
<UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai --eNB --UE -w USRP -c -x </UE_compile_prog>
|
||||
<UE_branch>develop1B</UE_branch>
|
||||
<UE_compile_prog_args></UE_compile_prog_args>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip; sudo rmmod oai_nw_drv</UE_pre_exec>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip</UE_pre_exec>
|
||||
<UE_pre_exec_args></UE_pre_exec_args>
|
||||
<UE_main_exec>sleep 50; cd $OPENAIR_DIR/cmake_targets/lte_build_oai/build ; sudo -E $OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 90 --ue-rxgain 125 </UE_main_exec>
|
||||
<UE_main_exec_args></UE_main_exec_args>
|
||||
@@ -10887,7 +10886,7 @@ c
|
||||
<UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai --eNB --UE -w USRP -c -x </UE_compile_prog>
|
||||
<UE_branch>develop1B</UE_branch>
|
||||
<UE_compile_prog_args></UE_compile_prog_args>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip; sudo rmmod oai_nw_drv</UE_pre_exec>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip</UE_pre_exec>
|
||||
<UE_pre_exec_args></UE_pre_exec_args>
|
||||
<UE_main_exec>sleep 50; cd $OPENAIR_DIR/cmake_targets/lte_build_oai/build ; sudo -E $OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem -U -C2660000000 -r50 --ue-scan-carrier --ue-txgain 90 --ue-rxgain 125 </UE_main_exec>
|
||||
<UE_main_exec_args></UE_main_exec_args>
|
||||
@@ -10989,7 +10988,7 @@ c
|
||||
<UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai --eNB --UE -w USRP -c -x </UE_compile_prog>
|
||||
<UE_branch>develop1B</UE_branch>
|
||||
<UE_compile_prog_args></UE_compile_prog_args>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip; sudo rmmod oai_nw_drv</UE_pre_exec>
|
||||
<UE_pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip</UE_pre_exec>
|
||||
<UE_pre_exec_args></UE_pre_exec_args>
|
||||
<UE_main_exec>sleep 50; cd $OPENAIR_DIR/cmake_targets/lte_build_oai/build ; sudo -E $OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem -U -C2660000000 -r100 --ue-scan-carrier --ue-txgain 90 --ue-rxgain 125 </UE_main_exec>
|
||||
<UE_main_exec_args></UE_main_exec_args>
|
||||
|
||||
@@ -465,6 +465,11 @@ function main() {
|
||||
echo "set (CPU_AFFINITY \"${CPU_AFFINITY_FLAG_USER}\" )" >>$cmake_file
|
||||
echo "set ( T_TRACER $T_TRACER )" >> $cmake_file
|
||||
echo "set (UE_AUTOTEST_TRACE $UE_AUTOTEST_TRACE)" >> $cmake_file
|
||||
if [ "$UE" = 1 -a "$NOS1" = "0" ] ; then
|
||||
echo_info "Compiling UE S1 build : enabling Linux and NETLINK"
|
||||
echo "set (LINUX True )" >> $cmake_file
|
||||
echo "set (PDCP_USE_NETLINK True )" >> $cmake_file
|
||||
fi
|
||||
echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file
|
||||
cd $DIR/$lte_build_dir/build
|
||||
cmake ..
|
||||
|
||||
+132
-88
@@ -93,7 +93,7 @@ ID = ENB_MAC_UE_UL_PDU
|
||||
FORMAT = int,eNB_ID : int,CC_id : int,rnti : int,frame : int,subframe : int,harq_pid : int,sdu_length : int,num_ce : int,num_sdu
|
||||
ID = ENB_MAC_UE_UL_PDU_WITH_DATA
|
||||
DESC = MAC uplink UE received PDU
|
||||
GROUP = ALL:MAC:ENB:HEAVY
|
||||
GROUP = ALL:MAC:ENB
|
||||
FORMAT = int,eNB_ID : int,CC_id : int,rnti : int,frame : int,subframe : int,harq_pid : int,sdu_length : int,num_ce : int,num_sdu : buffer,data
|
||||
ID = ENB_MAC_UE_UL_SDU
|
||||
DESC = MAC uplink UE received SDU
|
||||
@@ -805,6 +805,85 @@ ID = LEGACY_CLI_TRACE
|
||||
GROUP = ALL:LEGACY_CLI:LEGACY_GROUP_TRACE:LEGACY
|
||||
FORMAT = string,log
|
||||
|
||||
#################
|
||||
#### UE LOGS ####
|
||||
#################
|
||||
#general logs
|
||||
ID = UE_MASTER_TICK
|
||||
DESC = UE master tick - one tick per ms, to be used as "reference clock", mostly for ticktime view
|
||||
GROUP = ALL:GENERAL:UE
|
||||
FORMAT = int,eNB_ID : int,frame : int,subframe
|
||||
|
||||
#PHY logs
|
||||
ID = UE_PHY_UL_TICK
|
||||
DESC = UE uplink tick - one tick per ms at start of uplink processing
|
||||
GROUP = ALL:PHY:GRAPHIC:UE
|
||||
FORMAT = int,eNB_ID : int,frame : int,subframe
|
||||
ID = UE_PHY_DL_TICK
|
||||
DESC = UE downlink tick - one tick per ms at start of downlink processing
|
||||
GROUP = ALL:PHY:GRAPHIC:UE
|
||||
FORMAT = int,eNB_ID : int,frame : int,subframe
|
||||
ID = UE_PHY_DLSCH_UE_DCI
|
||||
DESC = UE downlink UE specific DCI as sent by the PHY layer
|
||||
GROUP = ALL:PHY:GRAPHIC:UE
|
||||
FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,dci_format : int,harq_pid : int,mcs : int,TBS
|
||||
ID = UE_PHY_DLSCH_UE_ACK
|
||||
DESC = UE downlink UE ACK as seen by the PHY layer in process_HARQ_feedback
|
||||
GROUP = ALL:PHY:GRAPHIC:UE
|
||||
FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid
|
||||
ID = UE_PHY_DLSCH_UE_NACK
|
||||
DESC = UE downlink UE NACK as seen by the PHY layer in process_HARQ_feedback
|
||||
GROUP = ALL:PHY:GRAPHIC:UE
|
||||
FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid
|
||||
ID = UE_PHY_ULSCH_UE_DCI
|
||||
DESC = UE uplink UE specific DCI as sent by the PHY layer
|
||||
GROUP = ALL:PHY:GRAPHIC:UE
|
||||
FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid : int,mcs : int,round : int,first_rb : int,nb_rb : int,TBS
|
||||
ID = UE_PHY_ULSCH_UE_ACK
|
||||
DESC = UE uplink UE ACK as seen by the PHY layer
|
||||
GROUP = ALL:PHY:GRAPHIC:UE
|
||||
FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid
|
||||
ID = UE_PHY_ULSCH_UE_NACK
|
||||
DESC = UE uplink UE NACK as seen by the PHY layer
|
||||
GROUP = ALL:PHY:GRAPHIC:UE
|
||||
FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid
|
||||
ID = UE_PHY_INPUT_SIGNAL
|
||||
DESC = UE received signal in the time domain for a duration of 1ms
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
|
||||
FORMAT = int,eNB_ID : int,frame : int,subframe : int,antenna : buffer,rxdata
|
||||
ID = UE_PHY_DL_CHANNEL_ESTIMATE
|
||||
DESC = UE channel estimation in the time domain
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
|
||||
FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,antenna : buffer,chest_t
|
||||
ID = UE_PHY_PDCCH_IQ
|
||||
DESC = UE PDCCH received IQ data
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
|
||||
FORMAT = int,nb_rb : int,NB_RB_DL : int,symbols_per_tti : buffer,rxdataF_comp
|
||||
ID = UE_PHY_PDCCH_ENERGY
|
||||
DESC = UE PDSCH 1 energy and threshold
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
|
||||
FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,pdcch_ch_level00 : int,pdcch_ch_level01 : int,pdcch_ch_level10: int,pdcch_ch_level11
|
||||
ID = UE_PHY_PDSCH_IQ
|
||||
DESC = UE PDSCH received IQ data
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
|
||||
FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,nb_rb : int,N_RB_UL : int,symbols_per_tti : buffer,pusch_comp
|
||||
ID = UE_PHY_PDSCH_ENERGY
|
||||
DESC = UE PDSCH 1 energy and threshold
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
|
||||
FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,pdsch_ch_level00 : int,pdsch_ch_level01 : int,pdsch_ch_level10: int,pdsch_ch_level11
|
||||
ID = UE_PHY_PUSCH_TX_POWER
|
||||
DESC = UE PUSCH tx power
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
|
||||
FORMAT = int,eNB_ID : int,UE_id : int,frame : int,subframe : int,p0_pusch : int,ampl: int,g_pusch: int,pl: int,nb_rb
|
||||
ID = UE_PHY_PUCCH_TX_POWER
|
||||
DESC = UE PDSCH 1 energy and threshold
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
|
||||
FORMAT = int,eNB_ID : int,UE_id : int,frame : int,subframe : int,p0_pucch : int,ampl: int,g_pucch: int,pl
|
||||
ID = UE_PHY_MEAS
|
||||
DESC = UE PHY measurements
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
|
||||
FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,rsrp : int,rssi : int,snr: int,rx_power: int,noise_power: int,w_cqi: int,freq_offset
|
||||
|
||||
#for debug/test - not used
|
||||
ID = first
|
||||
ID = buf_test
|
||||
@@ -963,6 +1042,10 @@ ID = VCD_VARIABLE_TRX_TST
|
||||
DESC = VCD variable TRX_TST
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
ID = VCD_VARIABLE_TRX_WRITE_FLAGS
|
||||
DESC = VCD variable TRX_WRITE_FLAGS
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
ID = VCD_VARIABLE_TX_TS
|
||||
DESC = VCD variable TX_TS
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
@@ -1267,13 +1350,29 @@ ID = VCD_VARIABLE_UE0_SFN7
|
||||
DESC = VCD variable UE0_SFN7
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
ID = VCD_VARIABLE_UE_PDCP_FLUSH_SIZE
|
||||
DESC = VCD variable UE_PDCP_FLUSH_SIZE
|
||||
GROUP = ALL:VCD:ENB:UE:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
ID = VCD_VARIABLE_UE_PDCP_FLUSH_ERR
|
||||
DESC = VCD variable UE_PDCP_FLUSH_ERR
|
||||
GROUP = ALL:VCD:ENB:UE:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
ID = VCD_VARIABLE_UE0_TRX_READ_NS
|
||||
DESC = VCD variable UE0_TRX_READ_NS
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
GROUP = ALL:VCD:UE:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
ID = VCD_VARIABLE_UE0_TRX_WRITE_NS
|
||||
DESC = VCD variable UE0_TRX_WRITE_NS
|
||||
GROUP = ALL:VCD:ENB:VCD_VARIABLE
|
||||
GROUP = ALL:VCD:UE:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
ID = VCD_VARIABLE_UE0_TRX_READ_NS_MISSING
|
||||
DESC = VCD variable UE0_TRX_READ_NS_MISSING
|
||||
GROUP = ALL:VCD:UE:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
ID = VCD_VARIABLE_UE0_TRX_WRITE_NS_MISSING
|
||||
DESC = VCD variable UE0_TRX_WRITE_NS_MISSING
|
||||
GROUP = ALL:VCD:UE:VCD_VARIABLE
|
||||
FORMAT = ulong,value
|
||||
|
||||
#functions
|
||||
@@ -1326,8 +1425,12 @@ ID = VCD_FUNCTION_TRX_WRITE_SF9
|
||||
DESC = VCD function TRX_WRITE_SF9
|
||||
GROUP = ALL:VCD:UE:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
ID = VCD_FUNCTION_UE_SIGNAL_COND_RXTX
|
||||
DESC = VCD function UE_SIGNAL_COND_RXTX
|
||||
ID = VCD_FUNCTION_UE_SIGNAL_COND_RXTX0
|
||||
DESC = VCD function UE_SIGNAL_COND_RXTX0
|
||||
GROUP = ALL:VCD:UE:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
ID = VCD_FUNCTION_UE_SIGNAL_COND_RXTX1
|
||||
DESC = VCD function UE_SIGNAL_COND_RXTX1
|
||||
GROUP = ALL:VCD:UE:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
ID = VCD_FUNCTION_UE_WAIT_COND_RXTX0
|
||||
@@ -1674,6 +1777,10 @@ ID = VCD_FUNCTION_UE_ULSCH_ENCODING
|
||||
DESC = VCD function UE_ULSCH_ENCODING
|
||||
GROUP = ALL:VCD:UE:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
ID = VCD_FUNCTION_UE_ULSCH_ENCODING_FILL_CQI
|
||||
DESC = VCD function UE_ULSCH_ENCODING_FILL_CQI
|
||||
GROUP = ALL:VCD:UE:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
ID = VCD_FUNCTION_UE_ULSCH_SCRAMBLING
|
||||
DESC = VCD function UE_ULSCH_SCRAMBLING
|
||||
GROUP = ALL:VCD:UE:VCD_FUNCTION
|
||||
@@ -1814,10 +1921,10 @@ ID = VCD_FUNCTION_RLC_DATA_REQ
|
||||
DESC = VCD function RLC_DATA_REQ
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
ID = VCD_FUNCTION_RLC_DATA_IND
|
||||
DESC = VCD function RLC_DATA_IND
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
#ID = VCD_FUNCTION_RLC_DATA_IND
|
||||
# DESC = VCD function RLC_DATA_IND
|
||||
# GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
# FORMAT = int,value
|
||||
ID = VCD_FUNCTION_MAC_RLC_STATUS_IND
|
||||
DESC = VCD function MAC_RLC_STATUS_IND
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
@@ -1862,6 +1969,22 @@ ID = VCD_FUNCTION_PDCP_VALIDATE_SECURITY
|
||||
DESC = VCD function PDCP_VALIDATE_SECURITY
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
ID = VCD_FUNCTION_PDCP_FIFO_READ
|
||||
DESC = VCD function PDCP_FIFO_READ
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
ID = VCD_FUNCTION_PDCP_FIFO_READ_BUFFER
|
||||
DESC = VCD function PDCP_FIFO_READ_BUFFER
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
ID = VCD_FUNCTION_PDCP_FIFO_FLUSH
|
||||
DESC = VCD function PDCP_FIFO_FLUSH
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
ID = VCD_FUNCTION_PDCP_FIFO_FLUSH_BUFFER
|
||||
DESC = VCD function PDCP_FIFO_FLUSH_BUFFER
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
ID = VCD_FUNCTION_RRC_RX_TX
|
||||
DESC = VCD function RRC_RX_TX
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
@@ -1938,82 +2061,3 @@ ID = VCD_FUNCTION_RECV_IF5
|
||||
DESC = VCD function RECV_IF5
|
||||
GROUP = ALL:VCD:ENB:VCD_FUNCTION
|
||||
FORMAT = int,value
|
||||
|
||||
#################
|
||||
#### UE LOGS ####
|
||||
#################
|
||||
#general logs
|
||||
ID = UE_MASTER_TICK
|
||||
DESC = UE master tick - one tick per ms, to be used as "reference clock", mostly for ticktime view
|
||||
GROUP = ALL:GENERAL:UE
|
||||
FORMAT = int,eNB_ID : int,frame : int,subframe
|
||||
|
||||
#PHY logs
|
||||
ID = UE_PHY_UL_TICK
|
||||
DESC = UE uplink tick - one tick per ms at start of uplink processing
|
||||
GROUP = ALL:PHY:GRAPHIC:UE
|
||||
FORMAT = int,eNB_ID : int,frame : int,subframe
|
||||
ID = UE_PHY_DL_TICK
|
||||
DESC = UE downlink tick - one tick per ms at start of downlink processing
|
||||
GROUP = ALL:PHY:GRAPHIC:UE
|
||||
FORMAT = int,eNB_ID : int,frame : int,subframe
|
||||
ID = UE_PHY_DLSCH_UE_DCI
|
||||
DESC = UE downlink UE specific DCI as sent by the PHY layer
|
||||
GROUP = ALL:PHY:GRAPHIC:UE
|
||||
FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,dci_format : int,harq_pid : int,mcs : int,TBS
|
||||
ID = UE_PHY_DLSCH_UE_ACK
|
||||
DESC = UE downlink UE ACK as seen by the PHY layer in process_HARQ_feedback
|
||||
GROUP = ALL:PHY:GRAPHIC:UE
|
||||
FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid
|
||||
ID = UE_PHY_DLSCH_UE_NACK
|
||||
DESC = UE downlink UE NACK as seen by the PHY layer in process_HARQ_feedback
|
||||
GROUP = ALL:PHY:GRAPHIC:UE
|
||||
FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid
|
||||
ID = UE_PHY_ULSCH_UE_DCI
|
||||
DESC = UE uplink UE specific DCI as sent by the PHY layer
|
||||
GROUP = ALL:PHY:GRAPHIC:UE
|
||||
FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid : int,mcs : int,round : int,first_rb : int,nb_rb : int,TBS
|
||||
ID = UE_PHY_ULSCH_UE_ACK
|
||||
DESC = UE uplink UE ACK as seen by the PHY layer
|
||||
GROUP = ALL:PHY:GRAPHIC:UE
|
||||
FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid
|
||||
ID = UE_PHY_ULSCH_UE_NACK
|
||||
DESC = UE uplink UE NACK as seen by the PHY layer
|
||||
GROUP = ALL:PHY:GRAPHIC:UE
|
||||
FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid
|
||||
ID = UE_PHY_INPUT_SIGNAL
|
||||
DESC = UE received signal in the time domain for a duration of 1ms
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
|
||||
FORMAT = int,eNB_ID : int,frame : int,subframe : int,antenna : buffer,rxdata
|
||||
ID = UE_PHY_DL_CHANNEL_ESTIMATE
|
||||
DESC = UE channel estimation in the time domain
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
|
||||
FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,antenna : buffer,chest_t
|
||||
ID = UE_PHY_PDCCH_IQ
|
||||
DESC = UE PDCCH received IQ data
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
|
||||
FORMAT = int,nb_rb : int,NB_RB_DL : int,symbols_per_tti : buffer,rxdataF_comp
|
||||
ID = UE_PHY_PDCCH_ENERGY
|
||||
DESC = UE PDSCH 1 energy and threshold
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
|
||||
FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,pdcch_ch_level00 : int,pdcch_ch_level01 : int,pdcch_ch_level10: int,pdcch_ch_level11
|
||||
ID = UE_PHY_PDSCH_IQ
|
||||
DESC = UE PDSCH received IQ data
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
|
||||
FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,nb_rb : int,N_RB_UL : int,symbols_per_tti : buffer,pusch_comp
|
||||
ID = UE_PHY_PDSCH_ENERGY
|
||||
DESC = UE PDSCH 1 energy and threshold
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
|
||||
FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,pdsch_ch_level00 : int,pdsch_ch_level01 : int,pdsch_ch_level10: int,pdsch_ch_level11
|
||||
ID = UE_PHY_PUSCH_TX_POWER
|
||||
DESC = UE PUSCH tx power
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
|
||||
FORMAT = int,eNB_ID : int,UE_id : int,frame : int,subframe : int,p0_pusch : int,ampl: int,g_pusch: int,pl: int,nb_rb
|
||||
ID = UE_PHY_PUCCH_TX_POWER
|
||||
DESC = UE PDSCH 1 energy and threshold
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
|
||||
FORMAT = int,eNB_ID : int,UE_id : int,frame : int,subframe : int,p0_pucch : int,ampl: int,g_pucch: int,pl
|
||||
ID = UE_PHY_MEAS
|
||||
DESC = UE PHY measurements
|
||||
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
|
||||
FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,rsrp : int,rssi : int,snr: int,rx_power: int,noise_power: int,w_cqi: int,freq_offset
|
||||
|
||||
@@ -40,6 +40,8 @@
|
||||
#include "SCHED/defs.h"
|
||||
#include "defs.h"
|
||||
#include "UTIL/LOG/vcd_signal_dumper.h"
|
||||
#include "UTIL/LOG/log.h"
|
||||
#include <syscall.h>
|
||||
|
||||
//#define DEBUG_DLSCH_CODING
|
||||
//#define DEBUG_DLSCH_FREE 1
|
||||
@@ -347,6 +349,8 @@ int dlsch_encoding_2threads0(te_params *tep) {
|
||||
|
||||
extern int oai_exit;
|
||||
void *te_thread(void *param) {
|
||||
pthread_setname_np( pthread_self(),"te processing");
|
||||
LOG_I(PHY,"thread te created id=%ld", syscall(__NR_gettid));
|
||||
|
||||
eNB_proc_t *proc = &((te_params *)param)->eNB->proc;
|
||||
while (!oai_exit) {
|
||||
|
||||
@@ -1207,7 +1207,8 @@ int32_t rx_pdcch(LTE_UE_COMMON *lte_ue_common_vars,
|
||||
*/
|
||||
int pss_sss_extract(PHY_VARS_UE *phy_vars_ue,
|
||||
int32_t pss_ext[4][72],
|
||||
int32_t sss_ext[4][72]);
|
||||
int32_t sss_ext[4][72],
|
||||
uint8_t subframe);
|
||||
|
||||
/*! \brief Extract only PSS resource elements
|
||||
@param phy_vars_ue Pointer to UE variables
|
||||
|
||||
@@ -149,7 +149,8 @@ int pss_ch_est(PHY_VARS_UE *ue,
|
||||
int _do_pss_sss_extract(PHY_VARS_UE *ue,
|
||||
int32_t pss_ext[4][72],
|
||||
int32_t sss_ext[4][72],
|
||||
uint8_t doPss, uint8_t doSss) // add flag to indicate extracting only PSS, only SSS, or both
|
||||
uint8_t doPss, uint8_t doSss,
|
||||
uint8_t subframe) // add flag to indicate extracting only PSS, only SSS, or both
|
||||
{
|
||||
|
||||
|
||||
@@ -163,32 +164,52 @@ int _do_pss_sss_extract(PHY_VARS_UE *ue,
|
||||
int rx_offset = frame_parms->ofdm_symbol_size-3*12;
|
||||
uint8_t pss_symb,sss_symb;
|
||||
|
||||
int32_t **rxdataF = ue->common_vars.common_vars_rx_data_per_thread[0].rxdataF;
|
||||
|
||||
if (frame_parms->frame_type == FDD) {
|
||||
pss_symb = 6-frame_parms->Ncp;
|
||||
sss_symb = pss_symb-1;
|
||||
} else {
|
||||
pss_symb = 2;
|
||||
sss_symb = frame_parms->symbols_per_tti-1;
|
||||
}
|
||||
int32_t **rxdataF;
|
||||
|
||||
for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) {
|
||||
|
||||
if (frame_parms->frame_type == FDD) {
|
||||
pss_symb = 6-frame_parms->Ncp;
|
||||
sss_symb = pss_symb-1;
|
||||
|
||||
rxdataF = ue->common_vars.common_vars_rx_data_per_thread[(subframe&0x1)].rxdataF;
|
||||
pss_rxF = &rxdataF[aarx][(rx_offset + (pss_symb*(frame_parms->ofdm_symbol_size)))];
|
||||
sss_rxF = &rxdataF[aarx][(rx_offset + (sss_symb*(frame_parms->ofdm_symbol_size)))];
|
||||
|
||||
} else {
|
||||
pss_symb = 2;
|
||||
sss_symb = frame_parms->symbols_per_tti-1;
|
||||
|
||||
rxdataF = ue->common_vars.common_vars_rx_data_per_thread[(subframe&0x1)].rxdataF;
|
||||
sss_rxF = &rxdataF[aarx][(rx_offset + (sss_symb*(frame_parms->ofdm_symbol_size)))];
|
||||
|
||||
rxdataF = ue->common_vars.common_vars_rx_data_per_thread[((subframe+1)&0x1)].rxdataF;
|
||||
pss_rxF = &rxdataF[aarx][(rx_offset + (pss_symb*(frame_parms->ofdm_symbol_size)))];
|
||||
|
||||
}
|
||||
//printf("extract_rbs: symbol_mod=%d, rx_offset=%d, ch_offset=%d\n",symbol_mod,
|
||||
// (rx_offset + (symbol*(frame_parms->ofdm_symbol_size)))*2,
|
||||
// LTE_CE_OFFSET+ch_offset+(symbol_mod*(frame_parms->ofdm_symbol_size)));
|
||||
|
||||
pss_rxF = &rxdataF[aarx][(rx_offset + (pss_symb*(frame_parms->ofdm_symbol_size)))];
|
||||
sss_rxF = &rxdataF[aarx][(rx_offset + (sss_symb*(frame_parms->ofdm_symbol_size)))];
|
||||
pss_rxF_ext = &pss_ext[aarx][0];
|
||||
sss_rxF_ext = &sss_ext[aarx][0];
|
||||
|
||||
for (rb=0; rb<nb_rb; rb++) {
|
||||
// skip DC carrier
|
||||
if (rb==3) {
|
||||
sss_rxF = &rxdataF[aarx][(1 + (sss_symb*(frame_parms->ofdm_symbol_size)))];
|
||||
pss_rxF = &rxdataF[aarx][(1 + (pss_symb*(frame_parms->ofdm_symbol_size)))];
|
||||
if(frame_parms->frame_type == FDD)
|
||||
{
|
||||
sss_rxF = &rxdataF[aarx][(1 + (sss_symb*(frame_parms->ofdm_symbol_size)))];
|
||||
pss_rxF = &rxdataF[aarx][(1 + (pss_symb*(frame_parms->ofdm_symbol_size)))];
|
||||
}
|
||||
else
|
||||
{
|
||||
rxdataF = ue->common_vars.common_vars_rx_data_per_thread[(subframe&0x1)].rxdataF;
|
||||
sss_rxF = &rxdataF[aarx][(1 + (sss_symb*(frame_parms->ofdm_symbol_size)))];
|
||||
|
||||
rxdataF = ue->common_vars.common_vars_rx_data_per_thread[((subframe+1)&0x1)].rxdataF;
|
||||
pss_rxF = &rxdataF[aarx][(1 + (pss_symb*(frame_parms->ofdm_symbol_size)))];
|
||||
}
|
||||
}
|
||||
|
||||
for (i=0; i<12; i++) {
|
||||
@@ -209,16 +230,17 @@ int _do_pss_sss_extract(PHY_VARS_UE *ue,
|
||||
|
||||
int pss_sss_extract(PHY_VARS_UE *phy_vars_ue,
|
||||
int32_t pss_ext[4][72],
|
||||
int32_t sss_ext[4][72])
|
||||
int32_t sss_ext[4][72],
|
||||
uint8_t subframe)
|
||||
{
|
||||
return _do_pss_sss_extract(phy_vars_ue, pss_ext, sss_ext, 1 /* doPss */, 1 /* doSss */);
|
||||
return _do_pss_sss_extract(phy_vars_ue, pss_ext, sss_ext, 1 /* doPss */, 1 /* doSss */, subframe);
|
||||
}
|
||||
|
||||
int pss_only_extract(PHY_VARS_UE *phy_vars_ue,
|
||||
int32_t pss_ext[4][72])
|
||||
{
|
||||
static int32_t dummy[4][72];
|
||||
return _do_pss_sss_extract(phy_vars_ue, pss_ext, dummy, 1 /* doPss */, 0 /* doSss */);
|
||||
return _do_pss_sss_extract(phy_vars_ue, pss_ext, dummy, 1 /* doPss */, 0 /* doSss */, 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -226,7 +248,7 @@ int sss_only_extract(PHY_VARS_UE *phy_vars_ue,
|
||||
int32_t sss_ext[4][72])
|
||||
{
|
||||
static int32_t dummy[4][72];
|
||||
return _do_pss_sss_extract(phy_vars_ue, dummy, sss_ext, 0 /* doPss */, 1 /* doSss */);
|
||||
return _do_pss_sss_extract(phy_vars_ue, dummy, sss_ext, 0 /* doPss */, 1 /* doSss */, 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -295,10 +317,10 @@ int rx_sss(PHY_VARS_UE *ue,int32_t *tot_metric,uint8_t *flip_max,uint8_t *phase_
|
||||
0,
|
||||
1);
|
||||
}
|
||||
|
||||
// pss sss extract for subframe 0
|
||||
pss_sss_extract(ue,
|
||||
pss_ext,
|
||||
sss0_ext);
|
||||
sss0_ext,0);
|
||||
/*
|
||||
write_output("rxsig0.m","rxs0",&ue->common_vars.rxdata[0][0],ue->frame_parms.samples_per_tti,1,1);
|
||||
write_output("rxdataF0.m","rxF0",&ue->common_vars.rxdataF[0][0],2*14*ue->frame_parms.ofdm_symbol_size,2,1);
|
||||
@@ -346,9 +368,10 @@ int rx_sss(PHY_VARS_UE *ue,int32_t *tot_metric,uint8_t *flip_max,uint8_t *phase_
|
||||
1);
|
||||
}
|
||||
|
||||
// pss sss extract for subframe 5
|
||||
pss_sss_extract(ue,
|
||||
pss_ext,
|
||||
sss5_ext);
|
||||
sss5_ext,5);
|
||||
|
||||
// write_output("sss5_ext0.m","sss5ext0",sss5_ext,72,1,1);
|
||||
// get conjugated channel estimate from PSS (symbol 6), H* = R* \cdot PSS
|
||||
|
||||
@@ -418,6 +418,7 @@ int ulsch_decoding_data_2thread0(td_params* tdp) {
|
||||
|
||||
extern int oai_exit;
|
||||
void *td_thread(void *param) {
|
||||
pthread_setname_np( pthread_self(), "td processing");
|
||||
PHY_VARS_eNB *eNB = ((td_params*)param)->eNB;
|
||||
eNB_proc_t *proc = &eNB->proc;
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
#ifndef __PHY_DEFS__H__
|
||||
#define __PHY_DEFS__H__
|
||||
|
||||
#define _GNU_SOURCE
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <malloc.h>
|
||||
|
||||
@@ -339,6 +339,9 @@ uint8_t get_reset_ack(LTE_DL_FRAME_PARMS *frame_parms,
|
||||
|
||||
o_ACK[0] = harq_ack[subframe_dl0].ack;
|
||||
status = harq_ack[subframe_dl0].send_harq_status;
|
||||
|
||||
if(do_reset)
|
||||
harq_ack[subframe_dl0].send_harq_status = 0;
|
||||
//printf("get_ack: Getting ACK/NAK for PDSCH (subframe %d) => %d\n",subframe_dl,o_ACK[0]);
|
||||
} else {
|
||||
switch (frame_parms->tdd_config) {
|
||||
|
||||
@@ -2605,6 +2605,7 @@ extern int oai_exit;
|
||||
|
||||
static void *fep_thread(void *param) {
|
||||
|
||||
pthread_setname_np( pthread_self(), "UEfep");
|
||||
PHY_VARS_eNB *eNB = (PHY_VARS_eNB *)param;
|
||||
eNB_proc_t *proc = &eNB->proc;
|
||||
while (!oai_exit) {
|
||||
|
||||
@@ -1184,11 +1184,12 @@ void ue_prach_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
|
||||
ue->prach_resources[eNB_id]->ra_PreambleIndex = 19;
|
||||
}
|
||||
|
||||
LOG_I(PHY,"[UE %d][RAPROC] Frame %d, Subframe %d : Generating PRACH, preamble %d, P0_PRACH %d, TARGET_RECEIVED_POWER %d dBm, PRACH TDD Resource index %d, RA-RNTI %d\n",
|
||||
LOG_I(PHY,"[UE %d][RAPROC] Frame %d, Subframe %d : Generating PRACH, preamble %d,PL %d, P0_PRACH %d, TARGET_RECEIVED_POWER %d dBm, PRACH TDD Resource index %d, RA-RNTI %d\n",
|
||||
ue->Mod_id,
|
||||
frame_tx,
|
||||
subframe_tx,
|
||||
ue->prach_resources[eNB_id]->ra_PreambleIndex,
|
||||
get_PL(ue->Mod_id,ue->CC_id,eNB_id),
|
||||
ue->tx_power_dBm[subframe_tx],
|
||||
ue->prach_resources[eNB_id]->ra_PREAMBLE_RECEIVED_TARGET_POWER,
|
||||
ue->prach_resources[eNB_id]->ra_TDD_map_index,
|
||||
@@ -1377,7 +1378,7 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
|
||||
ue->ulsch[eNB_id]->harq_processes[harq_pid]->round = 0;
|
||||
}
|
||||
|
||||
ack_status = get_ack(&ue->frame_parms,
|
||||
ack_status = reset_ack(&ue->frame_parms,
|
||||
ue->dlsch[eNB_id][0]->harq_ack,
|
||||
subframe_tx,
|
||||
ue->ulsch[eNB_id]->o_ACK);
|
||||
@@ -1393,14 +1394,7 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
|
||||
|
||||
// check if we received a PDSCH at subframe_tx - 4
|
||||
// ==> send ACK/NACK on PUSCH
|
||||
if( (ue->dlsch[eNB_id][0]->harq_ack[proc->subframe_rx].send_harq_status) == 1)
|
||||
{
|
||||
ue->ulsch[eNB_id]->harq_processes[harq_pid]->O_ACK = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
ue->ulsch[eNB_id]->harq_processes[harq_pid]->O_ACK = 0;
|
||||
}
|
||||
ue->ulsch[eNB_id]->harq_processes[harq_pid]->O_ACK = ack_status;
|
||||
|
||||
#if T_TRACER
|
||||
if(ue->ulsch[eNB_id]->o_ACK[0])
|
||||
@@ -1710,6 +1704,7 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
|
||||
int tx_amp;
|
||||
int16_t Po_PUCCH;
|
||||
uint8_t ack_status=0;
|
||||
uint8_t ack_sr_generated = 0;
|
||||
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_PUCCH,VCD_FUNCTION_IN);
|
||||
|
||||
@@ -1781,7 +1776,8 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
|
||||
// we need to transmit ACK/NAK in this subframe
|
||||
|
||||
ue->generate_ul_signal[eNB_id] = 1;
|
||||
|
||||
ack_sr_generated = 1;
|
||||
|
||||
if ((frame_parms->frame_type == TDD) && (SR_payload>0)) {
|
||||
format = pucch_format1b;
|
||||
}
|
||||
@@ -1882,6 +1878,7 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
|
||||
}
|
||||
} else if (SR_payload==1) { // no ACK/NAK but SR is triggered by MAC
|
||||
|
||||
ack_sr_generated = 1;
|
||||
if (ue->mac_enabled == 1) {
|
||||
Po_PUCCH = pucch_power_cntl(ue,proc,subframe_tx,eNB_id,pucch_format1);
|
||||
}
|
||||
@@ -1940,7 +1937,7 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
|
||||
|
||||
// PUCCH 2x
|
||||
|
||||
if (ue->generate_ul_signal[eNB_id] == 0) { // we have not generated ACK/NAK/SR in this subframe
|
||||
if (ack_sr_generated == 0) { // we have not generated ACK/NAK/SR in this subframe
|
||||
|
||||
n2_pucch = ue->cqi_report_config[eNB_id].CQI_ReportPeriodic.cqi_PUCCH_ResourceIndex;
|
||||
// only use format2 for now, i.e. now ACK/NAK - CQI multiplexing
|
||||
@@ -1971,14 +1968,6 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
|
||||
T(T_UE_PHY_PUCCH_TX_POWER, T_INT(eNB_id),T_INT(Mod_id), T_INT(frame_tx%1024), T_INT(subframe_tx),T_INT(ue->tx_power_dBm[subframe_tx]),
|
||||
T_INT(tx_amp),T_INT(ue->dlsch[eNB_id][0]->g_pucch),T_INT(get_PL(ue->Mod_id,ue->CC_id,eNB_id)));
|
||||
#endif
|
||||
LOG_D(PHY,"[UE %d][RNTI %x] AbsSubFrame %d.%d Generating PUCCH 2 (CQI), n2_pucch %d, Po_PUCCH %d, isShortenPucch %d, amp %d\n",
|
||||
Mod_id,
|
||||
ue->dlsch[eNB_id][0]->rnti,
|
||||
frame_tx, subframe_tx,
|
||||
n2_pucch,
|
||||
Po_PUCCH,
|
||||
isShortenPucch,
|
||||
tx_amp);
|
||||
|
||||
int len;
|
||||
// get the payload : < 12 bits, returned in len
|
||||
@@ -1997,6 +1986,16 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
|
||||
ue->pdcch_vars[eNB_id]->crnti);
|
||||
|
||||
ue->generate_ul_signal[eNB_id] = 1;
|
||||
|
||||
LOG_D(PHY,"[UE %d][RNTI %x] AbsSubFrame %d.%d Generating PUCCH 2 (CQI %d), n2_pucch %d, Po_PUCCH %d, isShortenPucch %d, amp %d\n",
|
||||
Mod_id,
|
||||
ue->dlsch[eNB_id][0]->rnti,
|
||||
frame_tx, subframe_tx,CQI_payload,
|
||||
n2_pucch,
|
||||
Po_PUCCH,
|
||||
isShortenPucch,
|
||||
tx_amp);
|
||||
|
||||
}
|
||||
// Periodic RI report
|
||||
else if ((ue->cqi_report_config[eNB_id].CQI_ReportPeriodic.ri_ConfigIndex>0) &&
|
||||
|
||||
@@ -3131,9 +3131,9 @@ static void dump_sib2( SystemInformationBlockType2_t *sib2 )
|
||||
sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_SubframeConfig );
|
||||
LOG_I( RRC, "radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.ackNackSRS_SimultaneousTransmission : %d\n",
|
||||
sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.ackNackSRS_SimultaneousTransmission );
|
||||
LOG_I( RRC, "radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_MaxUpPts : %ld\n",
|
||||
//LOG_I( RRC, "radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_MaxUpPts : %ld\n",
|
||||
/* TODO: check that it's okay to access [0] */
|
||||
sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_MaxUpPts[0] );
|
||||
// sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_MaxUpPts[0] );
|
||||
}
|
||||
|
||||
// uplinkPowerControlCommon
|
||||
|
||||
@@ -46,6 +46,8 @@
|
||||
#include <time.h>
|
||||
#include <stdint.h>
|
||||
#include <inttypes.h>
|
||||
#define _GNU_SOURCE
|
||||
#include <pthread.h>
|
||||
#else
|
||||
#include "rtai_fifos.h"
|
||||
#endif
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "TLVEncoder.h"
|
||||
#include "TLVDecoder.h"
|
||||
#include "AttachAccept.h"
|
||||
#include "assertions.h"
|
||||
|
||||
int decode_attach_accept(attach_accept_msg *attach_accept, uint8_t *buffer, uint32_t len)
|
||||
{
|
||||
@@ -59,7 +60,7 @@ int decode_attach_accept(attach_accept_msg *attach_accept, uint8_t *buffer, uint
|
||||
decoded += decoded_result;
|
||||
|
||||
/* Decoding optional fields */
|
||||
while(len - decoded > 0) {
|
||||
while(((int32_t)len - (int32_t)decoded) > 0) {
|
||||
uint8_t ieiDecoded = *(buffer + decoded);
|
||||
|
||||
/* Type | value iei are below 0x80 so just return the first 4 bits */
|
||||
@@ -189,6 +190,7 @@ int decode_attach_accept(attach_accept_msg *attach_accept, uint8_t *buffer, uint
|
||||
default:
|
||||
errorCodeDecoder = TLV_DECODE_UNEXPECTED_IEI;
|
||||
LOG_TRACE(WARNING, "DECODE_UNEXPECTED_IEI %x (4 bits)", ieiDecoded);
|
||||
AssertFatal(0, " ");
|
||||
return TLV_DECODE_UNEXPECTED_IEI;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -218,6 +218,7 @@ static void *_nas_user_mngr(void *args)
|
||||
{
|
||||
LOG_FUNC_IN;
|
||||
|
||||
pthread_setname_np( pthread_self(), "nas_user_mngr");
|
||||
int exit_loop = FALSE;
|
||||
|
||||
int *fd = (int *) args;
|
||||
|
||||
+56
-73
@@ -86,7 +86,7 @@ typedef enum {
|
||||
si=2
|
||||
} sync_mode_t;
|
||||
|
||||
void init_UE_threads(int nb_inst);
|
||||
void init_UE_threads(PHY_VARS_UE *UE);
|
||||
void *UE_thread(void *arg);
|
||||
void init_UE(int nb_inst);
|
||||
|
||||
@@ -204,28 +204,21 @@ void init_thread(int sched_runtime, int sched_deadline, int sched_fifo, cpu_set_
|
||||
while (sync_var<0)
|
||||
pthread_cond_wait(&sync_cond, &sync_mutex);
|
||||
pthread_mutex_unlock(&sync_mutex);
|
||||
printf("starting %s\n",name);
|
||||
printf("started %s as PID: %ld\n",name, gettid());
|
||||
}
|
||||
|
||||
void init_UE(int nb_inst) {
|
||||
|
||||
PHY_VARS_UE *UE;
|
||||
|
||||
for (int inst=0; inst<nb_inst; inst++) {
|
||||
printf("Intializing UE Threads for instance %d ...\n",inst);
|
||||
init_UE_threads(inst);
|
||||
sleep(1);
|
||||
UE = PHY_vars_UE_g[inst][0];
|
||||
|
||||
AssertFatal(0== openair0_device_load(&(UE->rfdevice), &openair0_cfg[0]), "");
|
||||
|
||||
UE->rfdevice.host_type = BBU_HOST;
|
||||
for (long long inst=0; inst<nb_inst; inst++) {
|
||||
// UE->rfdevice.type = NONE_DEV;
|
||||
AssertFatal(0 == pthread_create(&UE->proc.pthread_ue, &UE->proc.attr_ue, UE_thread, NULL), "");
|
||||
pthread_setname_np( UE->proc.pthread_ue, "main UE" );
|
||||
PHY_VARS_UE *UE = PHY_vars_UE_g[inst][0];
|
||||
AssertFatal(0 == pthread_create(&UE->proc.pthread_ue,
|
||||
&UE->proc.attr_ue,
|
||||
UE_thread,
|
||||
(void*)UE), "");
|
||||
}
|
||||
|
||||
printf("UE threads created\n");
|
||||
printf("UE threads created by %ld\n", gettid());
|
||||
#ifdef USE_MME
|
||||
while (start_UE == 0) {
|
||||
sleep(1);
|
||||
@@ -465,7 +458,11 @@ static void *UE_thread_synch(void *arg) {
|
||||
// rerun with new cell parameters and frequency-offset
|
||||
for (i=0; i<openair0_cfg[UE->rf_map.card].rx_num_channels; i++) {
|
||||
openair0_cfg[UE->rf_map.card].rx_gain[UE->rf_map.chain+i] = UE->rx_total_gain_dB;//-USRP_GAIN_OFFSET;
|
||||
openair0_cfg[UE->rf_map.card].rx_freq[UE->rf_map.chain+i] -= UE->common_vars.freq_offset;
|
||||
if (freq_offset >= 0) {
|
||||
openair0_cfg[UE->rf_map.card].rx_freq[UE->rf_map.chain+i] += UE->common_vars.freq_offset;
|
||||
} else {
|
||||
openair0_cfg[UE->rf_map.card].rx_freq[UE->rf_map.chain+i] -= UE->common_vars.freq_offset;
|
||||
}
|
||||
openair0_cfg[UE->rf_map.card].tx_freq[UE->rf_map.chain+i] = openair0_cfg[UE->rf_map.card].rx_freq[UE->rf_map.chain+i]+uplink_frequency_offset[CC_id][i];
|
||||
downlink_frequency[CC_id][i] = openair0_cfg[CC_id].rx_freq[i];
|
||||
freq_offset=0;
|
||||
@@ -629,13 +626,13 @@ static void *UE_thread_rxn_txnp4(void *arg) {
|
||||
static long long __thread instance_cnt_rxtx=-1;
|
||||
proc->subframe_rx=proc->sub_frame_start;
|
||||
|
||||
char threadName[256]= {0};
|
||||
sprintf(threadName,"UE_thread_rxn_txnp4_%d",proc->sub_frame_start);
|
||||
char threadname[256]= {0};
|
||||
sprintf(threadname,"UE_proc_%d",proc->sub_frame_start);
|
||||
cpu_set_t cpuset;
|
||||
CPU_ZERO(&cpuset);
|
||||
CPU_SET(proc->sub_frame_start+1, &cpuset);
|
||||
init_thread(900000,1000000 , 40, &cpuset,//sched_get_priority_max(SCHED_FIFO)-1,
|
||||
threadName);
|
||||
threadname);
|
||||
|
||||
while (!oai_exit) {
|
||||
// Wait Rx data to process are available
|
||||
@@ -660,14 +657,14 @@ static void *UE_thread_rxn_txnp4(void *arg) {
|
||||
|
||||
if (UE->frame_parms.frame_type == TDD) {
|
||||
LOG_D(PHY, "%s,TDD%d,%s: calling UE_RX\n",
|
||||
threadName,
|
||||
threadname,
|
||||
UE->frame_parms.tdd_config,
|
||||
(sf_type==SF_DL? "SF_DL" :
|
||||
(sf_type==SF_UL? "SF_UL" :
|
||||
(sf_type==SF_S ? "SF_S" : "UNKNOWN_SF_TYPE"))));
|
||||
} else {
|
||||
LOG_D(PHY, "%s,%s,%s: calling UE_RX\n",
|
||||
threadName,
|
||||
threadname,
|
||||
(UE->frame_parms.frame_type==FDD? "FDD":
|
||||
(UE->frame_parms.frame_type==TDD? "TDD":"UNKNOWN_DUPLEX_MODE")),
|
||||
(sf_type==SF_DL? "SF_DL" :
|
||||
@@ -742,7 +739,7 @@ static void *UE_thread_rxn_txnp4(void *arg) {
|
||||
|
||||
void *UE_thread(void *arg) {
|
||||
|
||||
PHY_VARS_UE *UE = PHY_vars_UE_g[0][0];
|
||||
PHY_VARS_UE *UE = (PHY_VARS_UE *) arg;
|
||||
// int tx_enabled = 0;
|
||||
int dummy_rx[UE->frame_parms.nb_antennas_rx][UE->frame_parms.samples_per_tti] __attribute__((aligned(32)));
|
||||
openair0_timestamp timestamp,timestamp1;
|
||||
@@ -756,6 +753,11 @@ void *UE_thread(void *arg) {
|
||||
init_thread(100000, 500000, 40, &cpuset, //sched_get_priority_max(SCHED_FIFO),
|
||||
"main UE");
|
||||
|
||||
AssertFatal(0== openair0_device_load(&(UE->rfdevice), &openair0_cfg[0]), "");
|
||||
UE->rfdevice.host_type = BBU_HOST;
|
||||
sleep(1);
|
||||
init_UE_threads(UE);
|
||||
|
||||
#ifdef NAS_UE
|
||||
MessageDef *message_p;
|
||||
message_p = itti_alloc_new_message(TASK_NAS_UE, INITIALIZE_MESSAGE);
|
||||
@@ -763,7 +765,7 @@ void *UE_thread(void *arg) {
|
||||
#endif
|
||||
|
||||
int sub_frame=-1;
|
||||
int cumulated_shift=0;
|
||||
//int cumulated_shift=0;
|
||||
while (!oai_exit) {
|
||||
|
||||
if (UE->is_synchronized == 0) {
|
||||
@@ -775,7 +777,7 @@ void *UE_thread(void *arg) {
|
||||
if (instance_cnt_synch < 0) { // we can invoke the synch
|
||||
// grab 10 ms of signal and wakeup synch thread
|
||||
for (int i=0; i<UE->frame_parms.nb_antennas_rx; i++)
|
||||
rxp[i] = (void*)&UE->common_vars.rxdata[i][0];
|
||||
rxp[i] = (void*)&UE->common_vars.rxdata[i][0];
|
||||
|
||||
if (UE->mode != loop_through_memory)
|
||||
AssertFatal( UE->frame_parms.samples_per_tti*10 ==
|
||||
@@ -821,7 +823,7 @@ void *UE_thread(void *arg) {
|
||||
AssertFatal(UE->rx_offset ==
|
||||
UE->rfdevice.trx_read_func(&UE->rfdevice,
|
||||
×tamp,
|
||||
(void**)UE->common_vars.rxdata,
|
||||
(void**)UE->common_vars.rxdata,
|
||||
UE->rx_offset,
|
||||
UE->frame_parms.nb_antennas_rx),"");
|
||||
}
|
||||
@@ -833,8 +835,8 @@ void *UE_thread(void *arg) {
|
||||
AssertFatal (UE->frame_parms.ofdm_symbol_size+UE->frame_parms.nb_prefix_samples0 ==
|
||||
UE->rfdevice.trx_read_func(&UE->rfdevice,
|
||||
×tamp,
|
||||
(void**)UE->common_vars.rxdata,
|
||||
UE->frame_parms.ofdm_symbol_size+UE->frame_parms.nb_prefix_samples0,
|
||||
(void**)UE->common_vars.rxdata,
|
||||
UE->frame_parms.ofdm_symbol_size+UE->frame_parms.nb_prefix_samples0,
|
||||
UE->frame_parms.nb_antennas_rx),"");
|
||||
slot_fep(UE,0, 0, 0, 0, 0);
|
||||
} //UE->mode != loop_through_memory
|
||||
@@ -849,8 +851,8 @@ void *UE_thread(void *arg) {
|
||||
if (UE->mode != loop_through_memory) {
|
||||
for (i=0; i<UE->frame_parms.nb_antennas_rx; i++)
|
||||
rxp[i] = (void*)&UE->common_vars.rxdata[i][UE->frame_parms.ofdm_symbol_size+
|
||||
UE->frame_parms.nb_prefix_samples0+
|
||||
sub_frame*UE->frame_parms.samples_per_tti];
|
||||
UE->frame_parms.nb_prefix_samples0+
|
||||
sub_frame*UE->frame_parms.samples_per_tti];
|
||||
for (i=0; i<UE->frame_parms.nb_antennas_tx; i++)
|
||||
txp[i] = (void*)&UE->common_vars.txdata[i][((sub_frame+2)%10)*UE->frame_parms.samples_per_tti];
|
||||
|
||||
@@ -859,20 +861,28 @@ void *UE_thread(void *arg) {
|
||||
readBlockSize=UE->frame_parms.samples_per_tti;
|
||||
writeBlockSize=UE->frame_parms.samples_per_tti;
|
||||
} else {
|
||||
int rx_off_diff;
|
||||
if ( UE->rx_offset< 5*UE->frame_parms.samples_per_tti )
|
||||
rx_off_diff = -UE->rx_offset;
|
||||
else // moving to the left so drop rx_off_diff samples
|
||||
rx_off_diff = 10*UE->frame_parms.samples_per_tti - RX_OFF_MIN - UE->rx_offset;
|
||||
cumulated_shift+=rx_off_diff;
|
||||
if ( rx_off_diff > 10 )
|
||||
LOG_E (PHY,"HUGE shift %d, cumul %d\n", rx_off_diff, cumulated_shift);
|
||||
static __thread int printed_cumul=0;
|
||||
if ( abs(cumulated_shift/1000) > printed_cumul ) {
|
||||
LOG_W(PHY,"Shifted for 1000 samples: cumul %d\n", cumulated_shift);
|
||||
printed_cumul=abs(cumulated_shift/1000);
|
||||
static int rx_correction_timer=5;
|
||||
static int rx_off_diff =0;
|
||||
if ((UE->rx_offset<(5*UE->frame_parms.samples_per_tti)) &&
|
||||
(UE->rx_offset > 0) &&
|
||||
(rx_correction_timer == 0)) {
|
||||
rx_off_diff = -1 ;
|
||||
LOG_D(PHY,"AbsSubframe %d.%d UE->rx_offset %d > %d, diff %d\n",
|
||||
proc->frame_rx,proc->subframe_rx,UE->rx_offset,0,rx_off_diff);
|
||||
rx_correction_timer = 5;
|
||||
} else if ((UE->rx_offset>(5*UE->frame_parms.samples_per_tti)) &&
|
||||
(UE->rx_offset < ((10*UE->frame_parms.samples_per_tti))) &&
|
||||
(rx_correction_timer == 0)) { // moving to the left so drop rx_off_diff samples
|
||||
rx_off_diff = 1;
|
||||
LOG_D(PHY,"AbsSubframe %d.%d UE->rx_offset %d < %d, diff %d\n",
|
||||
proc->frame_rx,proc->subframe_rx,UE->rx_offset,10*UE->frame_parms.samples_per_tti,rx_off_diff);
|
||||
rx_correction_timer = 5;
|
||||
}
|
||||
|
||||
if (rx_correction_timer>0)
|
||||
rx_correction_timer--;
|
||||
UE->rx_offset_diff = rx_off_diff;
|
||||
LOG_D(PHY,"SET rx_off_diff to %d\n",UE->rx_offset_diff);
|
||||
rx_off_diff = 0;
|
||||
readBlockSize=UE->frame_parms.samples_per_tti-
|
||||
UE->frame_parms.ofdm_symbol_size-
|
||||
UE->frame_parms.nb_prefix_samples0;
|
||||
@@ -935,30 +945,6 @@ void *UE_thread(void *arg) {
|
||||
printf("Processing subframe %d",proc->subframe_rx);
|
||||
getchar();
|
||||
}
|
||||
/*
|
||||
}// for sf=0..10
|
||||
|
||||
uint8_t proc_select = 9&1;
|
||||
UE_rxtx_proc_t *proc = &UE->proc.proc_rxtx[proc_select];
|
||||
|
||||
if ((UE->rx_offset<(5*UE->frame_parms.samples_per_tti)) &&
|
||||
(UE->rx_offset > 0) &&
|
||||
(rx_correction_timer == 0)) {
|
||||
rx_off_diff = -1 ;
|
||||
LOG_D(PHY,"AbsSubframe %d.%d UE->rx_offset %d > %d, diff %d\n",proc->frame_rx,proc->subframe_rx,UE->rx_offset,0,rx_off_diff);
|
||||
rx_correction_timer = 5;
|
||||
} else if ((UE->rx_offset>(5*UE->frame_parms.samples_per_tti)) &&
|
||||
(UE->rx_offset < ((10*UE->frame_parms.samples_per_tti))) &&
|
||||
(rx_correction_timer == 0)) { // moving to the left so drop rx_off_diff samples
|
||||
rx_off_diff = 1;
|
||||
LOG_D(PHY,"AbsSubframe %d.%d UE->rx_offset %d < %d, diff %d\n",proc->frame_rx,proc->subframe_rx,UE->rx_offset,10*UE->frame_parms.samples_per_tti,rx_off_diff);
|
||||
|
||||
rx_correction_timer = 5;
|
||||
}
|
||||
|
||||
if (rx_correction_timer>0)
|
||||
rx_correction_timer--;
|
||||
*/
|
||||
} // start_rx_stream==1
|
||||
} // UE->is_synchronized==1
|
||||
|
||||
@@ -974,14 +960,13 @@ void *UE_thread(void *arg) {
|
||||
* - UE_thread_synch
|
||||
* and the locking between them.
|
||||
*/
|
||||
void init_UE_threads(int inst) {
|
||||
PHY_VARS_UE *UE;
|
||||
|
||||
UE = PHY_vars_UE_g[inst][0];
|
||||
void init_UE_threads(PHY_VARS_UE *UE) {
|
||||
|
||||
pthread_attr_init (&UE->proc.attr_ue);
|
||||
pthread_attr_setstacksize(&UE->proc.attr_ue,8192);//5*PTHREAD_STACK_MIN);
|
||||
|
||||
pthread_mutex_init(&UE->proc.mutex_synch,NULL);
|
||||
pthread_cond_init(&UE->proc.cond_synch,NULL);
|
||||
|
||||
// the threads are not yet active, therefore access is allowed without locking
|
||||
int nb_threads=2;
|
||||
@@ -992,8 +977,6 @@ void init_UE_threads(int inst) {
|
||||
UE->proc.proc_rxtx[i].sub_frame_step=nb_threads;
|
||||
pthread_create(&UE->proc.proc_rxtx[i].pthread_rxtx,NULL,UE_thread_rxn_txnp4,(void*)&UE->proc.proc_rxtx[i]);
|
||||
}
|
||||
pthread_mutex_init(&UE->proc.mutex_synch,NULL);
|
||||
pthread_cond_init(&UE->proc.cond_synch,NULL);
|
||||
pthread_create(&UE->proc.pthread_synch,NULL,UE_thread_synch,(void*)UE);
|
||||
|
||||
}
|
||||
|
||||
@@ -450,6 +450,8 @@ void get_simulation_options(int argc, char *argv[])
|
||||
|
||||
case 'a':
|
||||
abstraction_flag = 1;
|
||||
printf("FATAL: -a flag not functional for the moment.\nWe are working on fixing the abstraction mode.\n");
|
||||
exit(1);
|
||||
break;
|
||||
|
||||
case 'A':
|
||||
|
||||
Reference in New Issue
Block a user