From 6412b22658423ed8ff4b8164971216f5c5afd9d7 Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger <florian.kaltenberger@eurecom.fr> Date: Thu, 11 Feb 2016 09:41:37 +0100 Subject: [PATCH] phy test for UE --- openair1/PHY/LTE_TRANSPORT/initial_sync.c | 22 +- openair1/PHY/LTE_TRANSPORT/print_stats.c | 11 +- openair1/SCHED/phy_procedures_lte_ue.c | 301 ++++++++++------------ openair2/LAYER2/MAC/l1_helpers.c | 7 +- targets/SIMU/USER/oaisim_functions.c | 22 ++ 5 files changed, 174 insertions(+), 189 deletions(-) diff --git a/openair1/PHY/LTE_TRANSPORT/initial_sync.c b/openair1/PHY/LTE_TRANSPORT/initial_sync.c index 5c6b479b20..31bf94cc51 100644 --- a/openair1/PHY/LTE_TRANSPORT/initial_sync.c +++ b/openair1/PHY/LTE_TRANSPORT/initial_sync.c @@ -530,20 +530,20 @@ int initial_sync(PHY_VARS_UE *phy_vars_ue, runmode_t mode) #endif if (phy_vars_ue->UE_scan_carrier == 0) { -#ifdef OPENAIR2 - LOG_I(PHY,"[UE%d] Sending synch status to higher layers\n",phy_vars_ue->Mod_id); - //mac_resynch(); - mac_xface->dl_phy_sync_success(phy_vars_ue->Mod_id,phy_vars_ue->frame_rx,0,1);//phy_vars_ue->lte_ue_common_vars.eNb_id); -#endif //OPENAIR2 - + if (phy_vars_ue->mac_enabled==1) { + LOG_I(PHY,"[UE%d] Sending synch status to higher layers\n",phy_vars_ue->Mod_id); + //mac_resynch(); + mac_xface->dl_phy_sync_success(phy_vars_ue->Mod_id,phy_vars_ue->frame_rx,0,1);//phy_vars_ue->lte_ue_common_vars.eNb_id); + phy_vars_ue->UE_mode[0] = PRACH; + } + else { + phy_vars_ue->UE_mode[0] = PUSCH; + } + generate_pcfich_reg_mapping(frame_parms); generate_phich_reg_mapping(frame_parms); // init_prach625(frame_parms); -#ifndef OPENAIR2 - phy_vars_ue->UE_mode[0] = PUSCH; -#else - phy_vars_ue->UE_mode[0] = PRACH; -#endif + //phy_vars_ue->lte_ue_pbch_vars[0]->pdu_errors=0; phy_vars_ue->lte_ue_pbch_vars[0]->pdu_errors_conseq=0; //phy_vars_ue->lte_ue_pbch_vars[0]->pdu_errors_last=0; diff --git a/openair1/PHY/LTE_TRANSPORT/print_stats.c b/openair1/PHY/LTE_TRANSPORT/print_stats.c index a386e1cb30..ceb5237efb 100644 --- a/openair1/PHY/LTE_TRANSPORT/print_stats.c +++ b/openair1/PHY/LTE_TRANSPORT/print_stats.c @@ -107,10 +107,10 @@ int dump_ue_stats(PHY_VARS_UE *phy_vars_ue, char* buffer, int length, runmode_t len += sprintf(&buffer[len], "[UE PROC] timing_advance = %d\n",phy_vars_ue->timing_advance); if (phy_vars_ue->UE_mode[0]==PUSCH) { len += sprintf(&buffer[len], "[UE PROC] Po_PUSCH = %d dBm (PL %d dB, Po_NOMINAL_PUSCH %d dBm, PHR %d dB)\n", - PHY_vars_UE_g[0][0]->ulsch_ue[0]->Po_PUSCH, + phy_vars_ue->ulsch_ue[0]->Po_PUSCH, get_PL(phy_vars_ue->Mod_id,phy_vars_ue->CC_id,0), - mac_xface->get_Po_NOMINAL_PUSCH(phy_vars_ue->Mod_id,0), - PHY_vars_UE_g[0][0]->ulsch_ue[0]->PHR); + phy_vars_ue->lte_frame_parms.ul_power_control_config_common.p0_NominalPUSCH, + phy_vars_ue->ulsch_ue[0]->PHR); len += sprintf(&buffer[len], "[UE PROC] Po_PUCCH = %d dBm (Po_NOMINAL_PUCCH %d dBm, g_pucch %d dB)\n", get_PL(phy_vars_ue->Mod_id,phy_vars_ue->CC_id,0)+ phy_vars_ue->lte_frame_parms.ul_power_control_config_common.p0_NominalPUCCH+ @@ -582,9 +582,7 @@ int dump_eNB_stats(PHY_VARS_eNB *phy_vars_eNB, char* buffer, int length) len += sprintf(&buffer[len],"%4d ", phy_vars_eNB->PHY_measurements_eNB[eNB].n0_subband_power_tot_dBm[i]); if ((i>0) && ((i%25) == 0)) - len += sprintf(&buffer[len],"\n ", - phy_vars_eNB->PHY_measurements_eNB[eNB].n0_subband_power_tot_dBm[i]); - + len += sprintf(&buffer[len],"\n"); } len += sprintf(&buffer[len],"\n"); len += sprintf(&buffer[len],"\n[eNB PROC] PERFORMANCE PARAMETERS\n"); @@ -644,7 +642,6 @@ int dump_eNB_stats(PHY_VARS_eNB *phy_vars_eNB, char* buffer, int length) dB_fixed(phy_vars_eNB->eNB_UE_stats[UE_id].Po_PUCCH/phy_vars_eNB->lte_frame_parms.N_RB_UL)-phy_vars_eNB->rx_total_gain_eNB_dB, phy_vars_eNB->lte_frame_parms.ul_power_control_config_common.p0_NominalPUCCH, dB_fixed(phy_vars_eNB->eNB_UE_stats[UE_id].Po_PUCCH1_below/phy_vars_eNB->lte_frame_parms.N_RB_UL)-phy_vars_eNB->rx_total_gain_eNB_dB, - dB_fixed(phy_vars_eNB->eNB_UE_stats[UE_id].Po_PUCCH1_above/phy_vars_eNB->lte_frame_parms.N_RB_UL)-phy_vars_eNB->rx_total_gain_eNB_dB, PUCCH1_THRES+phy_vars_eNB->PHY_measurements_eNB[0].n0_power_tot_dBm-dB_fixed(phy_vars_eNB->lte_frame_parms.N_RB_UL), phy_vars_eNB->eNB_UE_stats[UE_id].sector); diff --git a/openair1/SCHED/phy_procedures_lte_ue.c b/openair1/SCHED/phy_procedures_lte_ue.c index 65e8d502f5..e3be52cb92 100755 --- a/openair1/SCHED/phy_procedures_lte_ue.c +++ b/openair1/SCHED/phy_procedures_lte_ue.c @@ -59,20 +59,15 @@ extern int card; #endif #endif -//#define DEBUG_PHY_PROC -#define UE_TX_POWER (-10) +#define DEBUG_PHY_PROC -//#ifdef OPENAIR2 #ifndef PUCCH #define PUCCH #endif -//#endif -//#ifdef OPENAIR2 #include "LAYER2/MAC/extern.h" #include "LAYER2/MAC/defs.h" #include "UTIL/LOG/log.h" -//#endif #ifdef EMOS fifo_dump_emos_UE emos_dump_UE; @@ -639,16 +634,12 @@ void phy_procedures_emos_UE_TX(uint8_t next_slot,uint8_t eNB_id) { #endif int dummy_tx_buffer[3840*4] __attribute__((aligned(16))); -#ifndef OPENAIR2 PRACH_RESOURCES_t prach_resources_local; -#endif void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstraction_flag,runmode_t mode,relaying_type_t r_type) { -#ifndef OPENAIR2 int i; -#endif uint16_t first_rb, nb_rb; uint8_t harq_pid; unsigned int input_buffer_length; @@ -721,8 +712,7 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra subframe_tx); -#ifdef OPENAIR2 - + if (phy_vars_ue->mac_enabled == 1) { if ((phy_vars_ue->ulsch_ue_Msg3_active[eNB_id] == 1) && (phy_vars_ue->ulsch_ue_Msg3_frame[eNB_id] == frame_tx) && (phy_vars_ue->ulsch_ue_Msg3_subframe[eNB_id] == subframe_tx)) { // Initial Transmission of Msg3 @@ -753,8 +743,7 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra Msg3_flag=0; } - -#endif + } if (phy_vars_ue->ulsch_ue[eNB_id]->harq_processes[harq_pid]->subframe_scheduling_flag == 1) { @@ -853,19 +842,17 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra #endif stop_meas(&phy_vars_ue->ulsch_encoding_stats); - -#ifdef OPENAIR2 - // signal MAC that Msg3 was sent - mac_xface->Msg3_transmitted(Mod_id, - CC_id, - frame_tx, - eNB_id); -#endif + if (phy_vars_ue->mac_enabled == 1) { + // signal MAC that Msg3 was sent + mac_xface->Msg3_transmitted(Mod_id, + CC_id, + frame_tx, + eNB_id); + } } else { input_buffer_length = phy_vars_ue->ulsch_ue[eNB_id]->harq_processes[harq_pid]->TBS/8; -#ifdef OPENAIR2 - + if (phy_vars_ue->mac_enabled==1) { // LOG_D(PHY,"[UE %d] ULSCH : Searching for MAC SDUs\n",Mod_id); if (phy_vars_ue->ulsch_ue[eNB_id]->harq_processes[harq_pid]->round==0) { //if (phy_vars_ue->ulsch_ue[eNB_id]->harq_processes[harq_pid]->calibration_flag == 0) { @@ -902,7 +889,8 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra LOG_T(PHY,"\n"); #endif #endif -#else //OPENAIR2 + } + else { // the following lines were necessary for the calibration in CROWN /* if (phy_vars_ue->ulsch_ue[eNB_id]->harq_processes[harq_pid]->calibration_flag == 0) { @@ -925,8 +913,8 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra for (i=0;i<input_buffer_length;i++) ulsch_input_buffer[i]= i; */ + } -#endif //OPENAIR2 start_meas(&phy_vars_ue->ulsch_encoding_stats); if (abstraction_flag==0) { @@ -958,12 +946,13 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra } if (abstraction_flag == 0) { -#ifdef OPENAIR2 - pusch_power_cntl(phy_vars_ue,subframe_tx,eNB_id,1, abstraction_flag); - phy_vars_ue->tx_power_dBm = phy_vars_ue->ulsch_ue[eNB_id]->Po_PUSCH; -#else - phy_vars_ue->tx_power_dBm = UE_TX_POWER; -#endif + if (phy_vars_ue->mac_enabled==1) { + pusch_power_cntl(phy_vars_ue,subframe_tx,eNB_id,1, abstraction_flag); + phy_vars_ue->tx_power_dBm = phy_vars_ue->ulsch_ue[eNB_id]->Po_PUSCH; + } + else { + phy_vars_ue->tx_power_dBm = phy_vars_ue->tx_power_max_dBm; + } phy_vars_ue->tx_total_RE = nb_rb*12; #if defined(EXMIMO) || defined(OAI_USRP) @@ -1020,17 +1009,19 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra if (is_SR_TXOp(phy_vars_ue,eNB_id,subframe_tx)==1) { LOG_D(PHY,"[UE %d][SR %x] Frame %d subframe %d: got SR_TXOp, Checking for SR for PUSCH from MAC\n", Mod_id,phy_vars_ue->lte_ue_pdcch_vars[eNB_id]->crnti,frame_tx,subframe_tx); -#ifdef OPENAIR2 - SR_payload = mac_xface->ue_get_SR(Mod_id, - CC_id, - frame_tx, - eNB_id, - phy_vars_ue->lte_ue_pdcch_vars[eNB_id]->crnti, - subframe_tx); // subframe used for meas gap -#else - SR_payload = 1; -#endif + if (phy_vars_ue->mac_enabled==1) { + SR_payload = mac_xface->ue_get_SR(Mod_id, + CC_id, + frame_tx, + eNB_id, + phy_vars_ue->lte_ue_pdcch_vars[eNB_id]->crnti, + subframe_tx); // subframe used for meas gap + } + else { + SR_payload = 1; + } + if (SR_payload>0) { generate_ul_signal = 1; LOG_D(PHY,"[UE %d][SR %x] Frame %d subframe %d got the SR for PUSCH is %d\n", @@ -1038,8 +1029,9 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra } else { phy_vars_ue->sr[subframe_tx]=0; } - } else + } else { SR_payload=0; + } if (get_ack(&phy_vars_ue->lte_frame_parms, phy_vars_ue->dlsch_ue[eNB_id][0]->harq_ack, @@ -1054,12 +1046,13 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra pucch_ack_payload, SR_payload); -#ifdef OPENAIR2 - Po_PUCCH = pucch_power_cntl(phy_vars_ue,subframe_tx,eNB_id,format); - phy_vars_ue->tx_power_dBm = Po_PUCCH; -#else - phy_vars_ue->tx_power_dBm = UE_TX_POWER; -#endif + if (phy_vars_ue->mac_enabled == 1) { + Po_PUCCH = pucch_power_cntl(phy_vars_ue,subframe_tx,eNB_id,format); + } + else { + Po_PUCCH = phy_vars_ue->tx_power_max_dBm; + } + phy_vars_ue->tx_power_dBm = Po_PUCCH; phy_vars_ue->tx_total_RE = 12; #if defined(EXMIMO) || defined(OAI_USRP) @@ -1117,12 +1110,13 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra } } else if (SR_payload==1) { // no ACK/NAK but SR is triggered by MAC -#ifdef OPENAIR2 - Po_PUCCH = pucch_power_cntl(phy_vars_ue,subframe_tx,eNB_id,pucch_format1); - phy_vars_ue->tx_power_dBm = Po_PUCCH; -#else - phy_vars_ue->tx_power_dBm = UE_TX_POWER; -#endif + if (phy_vars_ue->mac_enabled == 1) { + Po_PUCCH = pucch_power_cntl(phy_vars_ue,subframe_tx,eNB_id,pucch_format1); + } + else { + Po_PUCCH = phy_vars_ue->tx_power_max_dBm; + } + phy_vars_ue->tx_power_dBm = Po_PUCCH; phy_vars_ue->tx_total_RE = 12; #if defined(EXMIMO) || defined(OAI_USRP) @@ -1342,30 +1336,23 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra // }// slot_tx is even // else { // slot_tx is odd, do the PRACH here -#ifdef OPENAIR2 - if ((phy_vars_ue->UE_mode[eNB_id] == PRACH) && (phy_vars_ue->lte_frame_parms.prach_config_common.prach_Config_enabled==1)) { -#else - - if (1) { -#endif - // check if we have PRACH opportunity if (is_prach_subframe(&phy_vars_ue->lte_frame_parms,frame_tx,subframe_tx)) { phy_vars_ue->generate_prach=0; -#ifdef OPENAIR2 - - // ask L2 for RACH transport - if ((mode != rx_calib_ue) && (mode != rx_calib_ue_med) && (mode != rx_calib_ue_byp) && (mode != no_L2_connect) ) { - phy_vars_ue->prach_resources[eNB_id] = mac_xface->ue_get_rach(Mod_id, - CC_id, - frame_tx, - eNB_id, - subframe_tx); - // LOG_I(PHY,"Got prach_resources for eNB %d address %d, RRCCommon %d\n",eNB_id,phy_vars_ue->prach_resources[eNB_id],UE_mac_inst[Mod_id].radioResourceConfigCommon); - } -#endif + + if (phy_vars_ue->mac_enabled==1){ + // ask L2 for RACH transport + if ((mode != rx_calib_ue) && (mode != rx_calib_ue_med) && (mode != rx_calib_ue_byp) && (mode != no_L2_connect) ) { + phy_vars_ue->prach_resources[eNB_id] = mac_xface->ue_get_rach(Mod_id, + CC_id, + frame_tx, + eNB_id, + subframe_tx); + // LOG_I(PHY,"Got prach_resources for eNB %d address %d, RRCCommon %d\n",eNB_id,phy_vars_ue->prach_resources[eNB_id],UE_mac_inst[Mod_id].radioResourceConfigCommon); + } + } if (phy_vars_ue->prach_resources[eNB_id]!=NULL) { @@ -1388,16 +1375,13 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra phy_vars_ue->prach_resources[eNB_id]->ra_TDD_map_index, phy_vars_ue->prach_resources[eNB_id]->ra_RNTI); -#ifdef OPENAIR2 - if (mode != calib_prach_tx) + if ((phy_vars_ue->mac_enabled==1) && (mode != calib_prach_tx)) { phy_vars_ue->tx_power_dBm = phy_vars_ue->prach_resources[eNB_id]->ra_PREAMBLE_RECEIVED_TARGET_POWER+get_PL(Mod_id,CC_id,eNB_id); + } else { phy_vars_ue->tx_power_dBm = phy_vars_ue->tx_power_max_dBm; phy_vars_ue->prach_resources[eNB_id]->ra_PreambleIndex = 19; } -#else - phy_vars_ue->tx_power_dBm = UE_TX_POWER; -#endif phy_vars_ue->tx_total_RE = 96; @@ -1428,12 +1412,12 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra } else { UE_transport_info[Mod_id][CC_id].cntl.prach_flag=1; UE_transport_info[Mod_id][CC_id].cntl.prach_id=phy_vars_ue->prach_resources[eNB_id]->ra_PreambleIndex; -#ifdef OPENAIR2 - mac_xface->Msg1_transmitted(Mod_id, - CC_id, - frame_tx, - eNB_id); -#endif + if (phy_vars_ue->mac_enabled==1){ + mac_xface->Msg1_transmitted(Mod_id, + CC_id, + frame_tx, + eNB_id); + } } LOG_D(PHY,"[UE %d][RAPROC] Frame %d, subframe %d: Generating PRACH (eNB %d) preamble index %d for UL, TX power %d dBm (PL %d dB), l3msg \n", @@ -1817,11 +1801,11 @@ void lte_ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst frame_tx += ((int)(phy_vars_ue->lte_ue_pbch_vars[eNB_id]->decoded_output[1]&0xfc)); frame_tx += pbch_phase; -#ifdef OPENAIR2 - mac_xface->dl_phy_sync_success(phy_vars_ue->Mod_id,frame_rx,eNB_id, - phy_vars_ue->UE_mode[eNB_id]==NOT_SYNCHED ? 1 : 0); -#endif - + if (phy_vars_ue->mac_enabled==1) { + mac_xface->dl_phy_sync_success(phy_vars_ue->Mod_id,frame_rx,eNB_id, + phy_vars_ue->UE_mode[eNB_id]==NOT_SYNCHED ? 1 : 0); + } + #ifdef EMOS //emos_dump_UE.frame_tx = frame_tx; //emos_dump_UE.mimo_mode = phy_vars_ue->lte_ue_pbch_vars[eNB_id]->decoded_output[1]; @@ -1901,16 +1885,15 @@ void lte_ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst phy_vars_ue->Mod_id,frame_rx, slot_rx); phy_vars_ue->lte_ue_pbch_vars[eNB_id]->pdu_errors_conseq++; phy_vars_ue->lte_ue_pbch_vars[eNB_id]->pdu_errors++; -#ifdef OPENAIR2 - mac_xface->out_of_sync_ind(phy_vars_ue->Mod_id,frame_rx,eNB_id); -#else - - if (phy_vars_ue->lte_ue_pbch_vars[eNB_id]->pdu_errors_conseq>=100) { - LOG_E(PHY,"More that 100 consecutive PBCH errors! Exiting!\n"); - mac_xface->macphy_exit("More that 100 consecutive PBCH errors!"); + if (phy_vars_ue->mac_enabled == 1) { + mac_xface->out_of_sync_ind(phy_vars_ue->Mod_id,frame_rx,eNB_id); + } + else{ + if (phy_vars_ue->lte_ue_pbch_vars[eNB_id]->pdu_errors_conseq>=100) { + LOG_E(PHY,"More that 100 consecutive PBCH errors! Exiting!\n"); + mac_xface->macphy_exit("More that 100 consecutive PBCH errors!"); + } } - -#endif } if (frame_rx % 100 == 0) { @@ -2411,9 +2394,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac int eNB_id_i = 1; uint8_t dual_stream_UE = 0; #endif -#ifndef OPENAIR2 uint8_t *rar; -#endif int pmch_flag=0; uint8_t sync_area=255; int pmch_mcs=-1; @@ -2422,9 +2403,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac int slot_rx = phy_vars_ue->slot_rx; int subframe_rx = slot_rx>>1; int subframe_prev = (subframe_rx+9)%10; -#ifdef OPENAIR2 int CC_id = phy_vars_ue->CC_id; -#endif VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_RX, VCD_FUNCTION_IN); @@ -2681,10 +2660,11 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac phy_vars_ue->dlsch_ue[eNB_id][0]->harq_processes[harq_pid]->mcs, phy_vars_ue->dlsch_ue[eNB_id][0]->harq_processes[harq_pid]->TBS); - // if (abstraction_flag ==0 ) - dump_dlsch(phy_vars_ue,eNB_id,subframe_prev,harq_pid); - mac_xface->macphy_exit(""); - //#endif + /* + if (abstraction_flag ==0 ) + dump_dlsch(phy_vars_ue,eNB_id,subframe_prev,harq_pid); + mac_xface->macphy_exit(""); + */ } else { LOG_D(PHY,"[UE %d][PDSCH %x/%d] Frame %d subframe %d (slot_rx %d): Received DLSCH (rv %d,mcs %d,TBS %d)\n", phy_vars_ue->Mod_id,phy_vars_ue->dlsch_ue[eNB_id][0]->rnti, @@ -2703,14 +2683,14 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac LOG_T(PHY,"\n"); #endif #endif -#ifdef OPENAIR2 - mac_xface->ue_send_sdu(phy_vars_ue->Mod_id, - CC_id, - frame_rx, - phy_vars_ue->dlsch_ue[eNB_id][0]->harq_processes[phy_vars_ue->dlsch_ue[eNB_id][0]->current_harq_pid]->b, - phy_vars_ue->dlsch_ue[eNB_id][0]->harq_processes[phy_vars_ue->dlsch_ue[eNB_id][0]->current_harq_pid]->TBS>>3, - eNB_id); -#endif + if (phy_vars_ue->mac_enabled == 1) { + mac_xface->ue_send_sdu(phy_vars_ue->Mod_id, + CC_id, + frame_rx, + phy_vars_ue->dlsch_ue[eNB_id][0]->harq_processes[phy_vars_ue->dlsch_ue[eNB_id][0]->current_harq_pid]->b, + phy_vars_ue->dlsch_ue[eNB_id][0]->harq_processes[phy_vars_ue->dlsch_ue[eNB_id][0]->current_harq_pid]->TBS>>3, + eNB_id); + } phy_vars_ue->total_TBS[eNB_id] = phy_vars_ue->total_TBS[eNB_id] + phy_vars_ue->dlsch_ue[eNB_id][0]->harq_processes[phy_vars_ue->dlsch_ue[eNB_id][0]->current_harq_pid]->TBS; phy_vars_ue->total_received_bits[eNB_id] = phy_vars_ue->total_TBS[eNB_id] + @@ -2880,24 +2860,20 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->rb_alloc_even[3]); #endif -#ifdef OPENAIR2 - /* - printf("\n\n"); - for (i=0;i<phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->TBS>>3;i++) - printf("%02x ",phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->b[i]); - printf("\n"); - */ - mac_xface->ue_decode_si(phy_vars_ue->Mod_id, - CC_id, - frame_rx, - eNB_id, - phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->b, - phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->TBS>>3); - /* - if ((frame_rx % 160) < 10) - printf("sending SI to L2 in frame %d\n",frame_rx); - */ -#endif + if (phy_vars_ue->mac_enabled == 1) { + /* + printf("\n\n"); + for (i=0;i<phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->TBS>>3;i++) + printf("%02x ",phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->b[i]); + printf("\n"); + */ + mac_xface->ue_decode_si(phy_vars_ue->Mod_id, + CC_id, + frame_rx, + eNB_id, + phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->b, + phy_vars_ue->dlsch_ue_SI[eNB_id]->harq_processes[0]->TBS>>3); + } } } @@ -3013,8 +2989,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac subframe_prev, phy_vars_ue->UE_mode[eNB_id]); #endif -#ifdef OPENAIR2 - + if (phy_vars_ue->mac_enabled == 1) { if ((phy_vars_ue->UE_mode[eNB_id] != PUSCH) && (phy_vars_ue->prach_resources[eNB_id]->Msg3!=NULL)) { LOG_D(PHY,"[UE %d][RAPROC] Frame %d subframe %d Invoking MAC for RAR (current preamble %d)\n", phy_vars_ue->Mod_id,frame_rx-((subframe_prev==9) ? 1 : 0), @@ -3071,14 +3046,13 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac phy_vars_ue->prach_resources[eNB_id]->ra_PreambleIndex); } } // mode != PUSCH - -#else //OPENAIR2 - - rar = phy_vars_ue->dlsch_ue_ra[eNB_id]->harq_processes[0]->b+1; - timing_advance = ((((uint16_t)(rar[0]&0x7f))<<4) + (rar[1]>>4)); - //timing_advance = phy_vars_ue->dlsch_ue_ra[eNB_id]->harq_processes[0]->b[0]; - process_timing_advance_rar(phy_vars_ue,timing_advance); -#endif + } + else { + rar = phy_vars_ue->dlsch_ue_ra[eNB_id]->harq_processes[0]->b+1; + timing_advance = ((((uint16_t)(rar[0]&0x7f))<<4) + (rar[1]>>4)); + //timing_advance = phy_vars_ue->dlsch_ue_ra[eNB_id]->harq_processes[0]->b[0]; + process_timing_advance_rar(phy_vars_ue,timing_advance); + } } //ret <= MAX_ITERATIONS /* @@ -3630,24 +3604,21 @@ void phy_procedures_UE_lte(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstr int CC_id =0; #endif int frame_rx = phy_vars_ue->frame_rx; -#ifdef OPENAIR2 int frame_tx = phy_vars_ue->frame_tx; -#endif int slot_rx = phy_vars_ue->slot_rx; int slot_tx = phy_vars_ue->slot_tx; int subframe_tx = slot_tx>>1; int subframe_rx = slot_rx>>1; #undef DEBUG_PHY_PROC -#ifdef OPENAIR2 UE_L2_STATE_t ret; -#endif -#ifndef OPENAIR2 - phy_vars_ue->UE_mode[eNB_id]=PUSCH; - phy_vars_ue->prach_resources[eNB_id] = &prach_resources_local; - prach_resources_local.ra_RNTI = 0xbeef; - prach_resources_local.ra_PreambleIndex = 0; -#endif + + if (phy_vars_ue->mac_enabled == 0) { + phy_vars_ue->UE_mode[eNB_id]=PUSCH; + phy_vars_ue->prach_resources[eNB_id] = &prach_resources_local; + prach_resources_local.ra_RNTI = 0xbeef; + prach_resources_local.ra_PreambleIndex = 0; + } VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_LTE,1); @@ -3846,16 +3817,14 @@ void phy_procedures_UE_lte(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstr phy_procedures_UE_RX(phy_vars_ue,eNB_id,abstraction_flag,mode,r_type,phy_vars_rn); } -#ifdef OPENAIR2 - - if (slot_rx%2==0) { - - ret = mac_xface->ue_scheduler(phy_vars_ue->Mod_id, - frame_tx, - subframe_rx, - subframe_select(&phy_vars_ue->lte_frame_parms,subframe_tx), - eNB_id, - 0/*FIXME CC_id*/); + if (phy_vars_ue->mac_enabled==1) { + if (slot_rx%2==0) { + ret = mac_xface->ue_scheduler(phy_vars_ue->Mod_id, + frame_tx, + subframe_rx, + subframe_select(&phy_vars_ue->lte_frame_parms,subframe_tx), + eNB_id, + 0/*FIXME CC_id*/); if (ret == CONNECTION_LOST) { LOG_E(PHY,"[UE %d] Frame %d, subframe %d RRC Connection lost, returning to PRACH\n",phy_vars_ue->Mod_id, @@ -3874,11 +3843,7 @@ void phy_procedures_UE_lte(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstr phy_vars_ue->UE_mode[eNB_id] = PRACH; } } - -#endif - - // if (last_slot == 19) - // phy_vars_ue->frame++; + } VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_LTE,0); stop_meas(&phy_vars_ue->phy_proc); diff --git a/openair2/LAYER2/MAC/l1_helpers.c b/openair2/LAYER2/MAC/l1_helpers.c index 3b4c78ea92..44bdbfe00e 100644 --- a/openair2/LAYER2/MAC/l1_helpers.c +++ b/openair2/LAYER2/MAC/l1_helpers.c @@ -47,8 +47,8 @@ int8_t get_Po_NOMINAL_PUSCH(module_id_t module_idP,uint8_t CC_id) if (CC_id>0) { LOG_E(MAC,"Transmission on secondary CCs is not supported yet\n"); - mac_xface->macphy_exit("MAC FATAL CC_id>0"); - return 0; // not reached + //mac_xface->macphy_exit("MAC FATAL CC_id>0"); + return 0; } if (UE_mac_inst[module_idP].radioResourceConfigCommon) { @@ -56,7 +56,8 @@ int8_t get_Po_NOMINAL_PUSCH(module_id_t module_idP,uint8_t CC_id) } else { LOG_E(MAC,"[UE %d] CCid %d FATAL radioResourceConfigCommon is NULL !!!\n",module_idP,CC_id); - mac_xface->macphy_exit("FATAL radioResourceConfigCommon is NULL"); + //mac_xface->macphy_exit("FATAL radioResourceConfigCommon is NULL"); + return 0; } return(-120 + (rach_ConfigCommon->powerRampingParameters.preambleInitialReceivedTargetPower<<1) + diff --git a/targets/SIMU/USER/oaisim_functions.c b/targets/SIMU/USER/oaisim_functions.c index ca1ec9fccb..75e4d40504 100644 --- a/targets/SIMU/USER/oaisim_functions.c +++ b/targets/SIMU/USER/oaisim_functions.c @@ -136,6 +136,8 @@ int td = 0; int td_avg = 0; int sleep_time_us = 0; +int phy_test = 0; + #ifdef OPENAIR2 // omv related info //pid_t omv_pid; @@ -206,6 +208,7 @@ void get_simulation_options(int argc, char *argv[]) LONG_OPTION_MALLOC_TRACE_ENABLED, LONG_OPTION_CBA_BACKOFF_TIMER, + LONG_OPTION_PHYTEST, }; static struct option long_options[] = { @@ -237,11 +240,17 @@ void get_simulation_options(int argc, char *argv[]) {"cba-backoff", required_argument, 0, LONG_OPTION_CBA_BACKOFF_TIMER}, + {"phy-test", no_argument, NULL, LONG_OPTION_PHYTEST}, + {NULL, 0, NULL, 0} }; while ((option = getopt_long (argc, argv, "aA:b:B:c:C:D:d:eE:f:FGg:hHi:IJ:j:k:K:l:L:m:M:n:N:oO:p:P:qQ:rR:s:S:t:T:u:U:vV:w:W:x:X:y:Y:z:Z:", long_options, NULL)) != -1) { switch (option) { + case LONG_OPTION_PHYTEST: + phy_test = 1; + break; + case LONG_OPTION_ENB_CONF: if (optarg) { free(conf_config_file_name); // prevent memory leak if option is used multiple times @@ -976,6 +985,14 @@ void init_openair1(void) } } + for (eNB_id=0; eNB_id<NB_eNB_INST; eNB_id++) + for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) { + if (phy_test==1) + PHY_vars_eNB_g[eNB_id][CC_id]->mac_enabled=0; + else + PHY_vars_eNB_g[eNB_id][CC_id]->mac_enabled=1; + } + // init_ue_status(); for (UE_id=0; UE_id<NB_UE_INST; UE_id++) for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) { @@ -992,6 +1009,11 @@ void init_openair1(void) PHY_vars_UE_g[UE_id][CC_id]->UE_mode[0] = PRACH; } + if (phy_test==1) + PHY_vars_UE_g[UE_id][CC_id]->mac_enabled=0; + else + PHY_vars_UE_g[UE_id][CC_id]->mac_enabled=1; + PHY_vars_UE_g[UE_id][CC_id]->lte_ue_pdcch_vars[0]->crnti = 0x1235 + UE_id; PHY_vars_UE_g[UE_id][CC_id]->current_dlsch_cqi[0] = 10; -- 2.26.2