diff --git a/cmake_targets/autotests/test_case_list.xml b/cmake_targets/autotests/test_case_list.xml
index 7f2847a5ea..e51b57e6ec 100644
--- a/cmake_targets/autotests/test_case_list.xml
+++ b/cmake_targets/autotests/test_case_list.xml
@@ -62,8 +62,7 @@
--oaisim -r Rel10 --noS1 -c
$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
+ $OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/CMakeFiles/nasmesh/nasmesh.ko
$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash
@@ -10486,7 +10485,7 @@ c
$OPENAIR_DIR/cmake_targets/build_oai --eNB --UE -w USRP -c -x
develop1B
- $OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip; sudo rmmod oai_nw_drv
+ $OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip
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
@@ -10586,7 +10585,7 @@ c
$OPENAIR_DIR/cmake_targets/build_oai --eNB --UE -w USRP -c -x
develop1B
- $OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip; sudo rmmod oai_nw_drv
+ $OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip
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
@@ -10686,7 +10685,7 @@ c
$OPENAIR_DIR/cmake_targets/build_oai --eNB --UE -w USRP -c -x
develop1B
- $OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip; sudo rmmod oai_nw_drv
+ $OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip
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
@@ -10787,7 +10786,7 @@ c
$OPENAIR_DIR/cmake_targets/build_oai --eNB --UE -w USRP -c -x
develop1B
- $OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip; sudo rmmod oai_nw_drv
+ $OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip
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
@@ -10887,7 +10886,7 @@ c
$OPENAIR_DIR/cmake_targets/build_oai --eNB --UE -w USRP -c -x
develop1B
- $OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip; sudo rmmod oai_nw_drv
+ $OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip
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
@@ -10989,7 +10988,7 @@ c
$OPENAIR_DIR/cmake_targets/build_oai --eNB --UE -w USRP -c -x
develop1B
- $OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip; sudo rmmod oai_nw_drv
+ $OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash ; sudo rmmod nasmesh ; sudo rmmod ue_ip
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
diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index b6f2d2c6c5..db0899d1fe 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -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 ..
diff --git a/common/utils/T/T_messages.txt b/common/utils/T/T_messages.txt
index 85441722b0..09ed098ee0 100644
--- a/common/utils/T/T_messages.txt
+++ b/common/utils/T/T_messages.txt
@@ -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
diff --git a/openair1/PHY/LTE_TRANSPORT/proto.h b/openair1/PHY/LTE_TRANSPORT/proto.h
index a9674ca21e..52c258762b 100644
--- a/openair1/PHY/LTE_TRANSPORT/proto.h
+++ b/openair1/PHY/LTE_TRANSPORT/proto.h
@@ -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
diff --git a/openair1/PHY/LTE_TRANSPORT/sss.c b/openair1/PHY/LTE_TRANSPORT/sss.c
index 85398edddb..fc5e7f0d1b 100644
--- a/openair1/PHY/LTE_TRANSPORT/sss.c
+++ b/openair1/PHY/LTE_TRANSPORT/sss.c
@@ -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; aarxnb_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; rbofdm_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
diff --git a/openair1/SCHED/phy_procedures_lte_common.c b/openair1/SCHED/phy_procedures_lte_common.c
index c787ea0773..93d3c94b11 100644
--- a/openair1/SCHED/phy_procedures_lte_common.c
+++ b/openair1/SCHED/phy_procedures_lte_common.c
@@ -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) {
diff --git a/openair1/SCHED/phy_procedures_lte_ue.c b/openair1/SCHED/phy_procedures_lte_ue.c
index 7d061f60bf..ac90094ea4 100644
--- a/openair1/SCHED/phy_procedures_lte_ue.c
+++ b/openair1/SCHED/phy_procedures_lte_ue.c
@@ -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) &&
diff --git a/openair2/RRC/LITE/rrc_UE.c b/openair2/RRC/LITE/rrc_UE.c
index a6290f1f3c..c137d38cc0 100644
--- a/openair2/RRC/LITE/rrc_UE.c
+++ b/openair2/RRC/LITE/rrc_UE.c
@@ -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
diff --git a/openair3/NAS/COMMON/EMM/MSG/AttachAccept.c b/openair3/NAS/COMMON/EMM/MSG/AttachAccept.c
index 248540dff3..727bacfa2d 100644
--- a/openair3/NAS/COMMON/EMM/MSG/AttachAccept.c
+++ b/openair3/NAS/COMMON/EMM/MSG/AttachAccept.c
@@ -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;
}
}
diff --git a/targets/RT/USER/lte-ue.c b/targets/RT/USER/lte-ue.c
index 5555444dba..56a06fdb24 100644
--- a/targets/RT/USER/lte-ue.c
+++ b/targets/RT/USER/lte-ue.c
@@ -449,7 +449,14 @@ static void *UE_thread_synch(void *arg)
// rerun with new cell parameters and frequency-offset
for (i=0;irf_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;
diff --git a/targets/SIMU/USER/oaisim_functions.c b/targets/SIMU/USER/oaisim_functions.c
index 130a339390..508ebcde27 100644
--- a/targets/SIMU/USER/oaisim_functions.c
+++ b/targets/SIMU/USER/oaisim_functions.c
@@ -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':