git-svn-id: http://svn.eurecom.fr/openair4G/trunk@5739 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -527,7 +527,7 @@ LTE_DL_FRAME_PARMS *get_lte_frame_parms(module_id_t Mod_id, uint8_t CC_id);
|
||||
|
||||
MU_MIMO_mode* get_mu_mimo_mode (module_id_t Mod_id, uint8_t CC_id);
|
||||
|
||||
int get_ue_active_harq_pid(uint8_t Mod_id,uint8_t CC_id,uint16_t rnti,uint8_t subframe,uint8_t *harq_pid,uint8_t *round,uint8_t ul_flag);
|
||||
int get_ue_active_harq_pid(uint8_t Mod_id,uint8_t CC_id,uint16_t rnti,int frame, uint8_t subframe,uint8_t *harq_pid,uint8_t *round,uint8_t ul_flag);
|
||||
void ulsch_decoding_procedures(unsigned char last_slot, unsigned int i, PHY_VARS_eNB *phy_vars_eNB, unsigned char abstraction_flag);
|
||||
|
||||
|
||||
|
||||
@@ -77,7 +77,6 @@
|
||||
#define NS_PER_SLOT 500000
|
||||
|
||||
#define PUCCH 1
|
||||
|
||||
#define PUCCH1_THRES 15
|
||||
#define PUCCH1a_THRES 15
|
||||
|
||||
@@ -211,7 +210,7 @@ int8_t find_next_ue_index(PHY_VARS_eNB *phy_vars_eNB) {
|
||||
return(-1);
|
||||
}
|
||||
|
||||
int get_ue_active_harq_pid(uint8_t Mod_id,uint8_t CC_id,uint16_t rnti,uint8_t sched_subframe,uint8_t *harq_pid,uint8_t *round,uint8_t ul_flag) {
|
||||
int get_ue_active_harq_pid(uint8_t Mod_id,uint8_t CC_id,uint16_t rnti,int frame, uint8_t subframe,uint8_t *harq_pid,uint8_t *round,uint8_t ul_flag) {
|
||||
|
||||
LTE_eNB_DLSCH_t *DLSCH_ptr;
|
||||
LTE_eNB_ULSCH_t *ULSCH_ptr;
|
||||
@@ -219,8 +218,8 @@ int get_ue_active_harq_pid(uint8_t Mod_id,uint8_t CC_id,uint16_t rnti,uint8_t sc
|
||||
uint8_t ulsch_subframe,ulsch_frame;
|
||||
uint8_t i;
|
||||
int8_t UE_id = find_ue(rnti,PHY_vars_eNB_g[Mod_id][CC_id]);
|
||||
int frame = PHY_vars_eNB_g[Mod_id][CC_id]->proc[sched_subframe].frame_tx;
|
||||
int subframe = PHY_vars_eNB_g[Mod_id][CC_id]->proc[sched_subframe].subframe_tx;
|
||||
// int frame = PHY_vars_eNB_g[Mod_id][CC_id]->proc[sched_subframe].frame_tx;
|
||||
// int subframe = PHY_vars_eNB_g[Mod_id][CC_id]->proc[sched_subframe].subframe_tx;
|
||||
|
||||
if (UE_id==-1) {
|
||||
LOG_E(PHY,"Cannot find UE with rnti %x\n",rnti);
|
||||
@@ -2095,6 +2094,23 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
|
||||
#ifdef EMOS
|
||||
phy_procedures_emos_eNB_TX(next_slot, phy_vars_eNB);
|
||||
#endif
|
||||
|
||||
#ifndef EXMIMO
|
||||
#ifndef USRP
|
||||
if (abstraction_flag==0) {
|
||||
start_meas(&phy_vars_eNB->ofdm_mod_stats);
|
||||
do_OFDM_mod(phy_vars_eNB->lte_eNB_common_vars.txdataF[0],
|
||||
phy_vars_eNB->lte_eNB_common_vars.txdata[0],
|
||||
phy_vars_eNB->proc[sched_subframe].frame_tx,subframe<<1,
|
||||
&phy_vars_eNB->lte_frame_parms);
|
||||
do_OFDM_mod(phy_vars_eNB->lte_eNB_common_vars.txdataF[0],
|
||||
phy_vars_eNB->lte_eNB_common_vars.txdata[0],
|
||||
phy_vars_eNB->proc[sched_subframe].frame_tx,1+(subframe<<1),
|
||||
&phy_vars_eNB->lte_frame_parms);
|
||||
stop_meas(&phy_vars_eNB->ofdm_mod_stats);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_TX,0);
|
||||
stop_meas(&phy_vars_eNB->phy_proc_tx);
|
||||
@@ -2959,7 +2975,7 @@ void phy_procedures_eNB_RX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
|
||||
frame,subframe, i,
|
||||
phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->round-1,
|
||||
phy_vars_eNB->lte_frame_parms.maxHARQ_Msg3Tx-1);
|
||||
|
||||
|
||||
if (phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->round ==
|
||||
phy_vars_eNB->lte_frame_parms.maxHARQ_Msg3Tx) {
|
||||
LOG_D(PHY,"[eNB %d][RAPROC] maxHARQ_Msg3Tx reached, abandoning RA procedure for UE %d\n",
|
||||
@@ -2991,11 +3007,12 @@ void phy_procedures_eNB_RX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
|
||||
for (j=0;j<phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->TBS>>3;j++)
|
||||
printf("%x.",phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->c[0][j]);
|
||||
printf("\n");
|
||||
dump_ulsch(phy_vars_eNB,sched_subframe,i);*/
|
||||
*/
|
||||
// dump_ulsch(phy_vars_eNB,sched_subframe,i);
|
||||
//#ifndef EXMIMO_IOT
|
||||
LOG_W(PHY,"[eNB] Frame %d, Subframe %d: Msg3 in error\n", frame,subframe);
|
||||
//#else
|
||||
// mac_exit_wrapper("Msg3 error");
|
||||
//mac_exit_wrapper("Msg3 error");
|
||||
//#endif
|
||||
} // This is Msg3 error
|
||||
else { //normal ULSCH
|
||||
@@ -3017,6 +3034,7 @@ void phy_procedures_eNB_RX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
|
||||
|
||||
|
||||
// dump_ulsch(phy_vars_eNB,sched_subframe,i);
|
||||
//mac_exit_wrapper("ULSCH error");
|
||||
|
||||
if (phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->round== phy_vars_eNB->ulsch_eNB[i]->Mdlharq) {
|
||||
LOG_I(PHY,"[eNB %d][PUSCH %d] frame %d subframe %d UE %d ULSCH Mdlharq %d reached\n",
|
||||
|
||||
@@ -367,7 +367,7 @@ void process_timing_advance(uint8_t Mod_id,uint8_t CC_id,int16_t timing_advance)
|
||||
uint8_t is_SR_TXOp(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe) {
|
||||
|
||||
LOG_D(PHY,"[UE %d][SR %x] Frame %d subframe %d Checking for SR TXOp (sr_ConfigIndex %d)\n",
|
||||
phy_vars_ue->Mod_id,phy_vars_ue->lte_ue_pdcch_vars[eNB_id]->crnti,phy_vars_ue->frame,subframe,
|
||||
phy_vars_ue->Mod_id,phy_vars_ue->lte_ue_pdcch_vars[eNB_id]->crnti,phy_vars_ue->frame+(subframe==0)?1:0,subframe,
|
||||
phy_vars_ue->scheduling_request_config[eNB_id].sr_ConfigIndex);
|
||||
|
||||
if (phy_vars_ue->scheduling_request_config[eNB_id].sr_ConfigIndex <= 4) { // 5 ms SR period
|
||||
@@ -717,6 +717,8 @@ void phy_procedures_UE_TX(uint8_t next_slot,PHY_VARS_UE *phy_vars_ue,uint8_t eNB
|
||||
#else
|
||||
phy_vars_ue->tx_power_dBm = UE_TX_POWER;
|
||||
#endif
|
||||
phy_vars_ue->tx_total_RE = phy_vars_ue->ulsch_ue[eNB_id]->harq_processes[harq_pid]->nb_rb*12;
|
||||
|
||||
LOG_D(PHY,"[UE %d][PUSCH %d] Frame %d subframe %d harq pid %d, Po_PUSCH : %d dBm\n",
|
||||
phy_vars_ue->Mod_id,harq_pid,(((next_slot>>1)==0)?1:0)+phy_vars_ue->frame,next_slot>>1,harq_pid, phy_vars_ue->tx_power_dBm);
|
||||
|
||||
@@ -919,6 +921,8 @@ void phy_procedures_UE_TX(uint8_t next_slot,PHY_VARS_UE *phy_vars_ue,uint8_t eNB
|
||||
#else
|
||||
phy_vars_ue->tx_power_dBm = UE_TX_POWER;
|
||||
#endif
|
||||
phy_vars_ue->tx_total_RE = phy_vars_ue->ulsch_ue[eNB_id]->harq_processes[harq_pid]->nb_rb*12;
|
||||
|
||||
LOG_I(PHY,"[UE %d][PUSCH %d] Frame %d subframe %d, generating PUSCH, Po_PUSCH: %d dBm, amp %d\n",
|
||||
phy_vars_ue->Mod_id,harq_pid,(((next_slot>>1)==0)?1:0)+phy_vars_ue->frame,next_slot>>1,phy_vars_ue->tx_power_dBm,
|
||||
#ifdef EXMIMO
|
||||
@@ -1030,7 +1034,7 @@ void phy_procedures_UE_TX(uint8_t next_slot,PHY_VARS_UE *phy_vars_ue,uint8_t eNB
|
||||
// Check for SR and do ACK/NACK accordingly
|
||||
if (is_SR_TXOp(phy_vars_ue,eNB_id,next_slot>>1)==1) {
|
||||
LOG_D(PHY,"[UE %d][SR %x] Frame %d subframe %d: got SR_TXOp, Checking for SR for PUSCH from MAC\n",
|
||||
phy_vars_ue->Mod_id,phy_vars_ue->lte_ue_pdcch_vars[eNB_id]->crnti,phy_vars_ue->frame,next_slot>>1);
|
||||
phy_vars_ue->Mod_id,phy_vars_ue->lte_ue_pdcch_vars[eNB_id]->crnti,phy_vars_ue->frame+(next_slot==0)?1:0,next_slot>>1);
|
||||
#ifdef OPENAIR2
|
||||
SR_payload = mac_xface->ue_get_SR(phy_vars_ue->Mod_id,
|
||||
phy_vars_ue->CC_id,
|
||||
@@ -1045,7 +1049,7 @@ void phy_procedures_UE_TX(uint8_t next_slot,PHY_VARS_UE *phy_vars_ue,uint8_t eNB
|
||||
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",
|
||||
phy_vars_ue->Mod_id,phy_vars_ue->lte_ue_pdcch_vars[eNB_id]->crnti,phy_vars_ue->frame,next_slot>>1,SR_payload);
|
||||
phy_vars_ue->Mod_id,phy_vars_ue->lte_ue_pdcch_vars[eNB_id]->crnti,phy_vars_ue->frame+(next_slot==0)?1:0,next_slot>>1,SR_payload);
|
||||
}
|
||||
else {
|
||||
phy_vars_ue->sr[next_slot>>1]=0;
|
||||
@@ -1073,12 +1077,13 @@ void phy_procedures_UE_TX(uint8_t next_slot,PHY_VARS_UE *phy_vars_ue,uint8_t eNB
|
||||
#else
|
||||
phy_vars_ue->tx_power_dBm = UE_TX_POWER;
|
||||
#endif
|
||||
phy_vars_ue->tx_total_RE = 12;
|
||||
|
||||
if (SR_payload>0) {
|
||||
LOG_I(PHY,"[UE %d][SR %x] Frame %d subframe %d Generating PUCCH 1a/1b (with SR for PUSCH), n1_pucch %d, Po_PUCCH, amp %d\n",
|
||||
phy_vars_ue->Mod_id,
|
||||
phy_vars_ue->dlsch_ue[eNB_id][0]->rnti,
|
||||
phy_vars_ue->frame, next_slot>>1,
|
||||
phy_vars_ue->frame+(next_slot==0)?1:0, next_slot>>1,
|
||||
phy_vars_ue->scheduling_request_config[eNB_id].sr_PUCCH_ResourceIndex,
|
||||
Po_PUCCH,
|
||||
#ifdef EXMIMO
|
||||
@@ -1142,11 +1147,12 @@ void phy_procedures_UE_TX(uint8_t next_slot,PHY_VARS_UE *phy_vars_ue,uint8_t eNB
|
||||
#else
|
||||
phy_vars_ue->tx_power_dBm = UE_TX_POWER;
|
||||
#endif
|
||||
phy_vars_ue->tx_total_RE = 12;
|
||||
|
||||
LOG_I(PHY,"[UE %d][SR %x] Frame %d subframe %d Generating PUCCH 1 (SR for PUSCH), n1_pucch %d, Po_PUCCH %d\n",
|
||||
phy_vars_ue->Mod_id,
|
||||
phy_vars_ue->dlsch_ue[eNB_id][0]->rnti,
|
||||
phy_vars_ue->frame, next_slot>>1,
|
||||
phy_vars_ue->frame+(next_slot==0)?1:0, next_slot>>1,
|
||||
phy_vars_ue->scheduling_request_config[eNB_id].sr_PUCCH_ResourceIndex,
|
||||
Po_PUCCH);
|
||||
|
||||
@@ -1316,6 +1322,8 @@ void phy_procedures_UE_TX(uint8_t next_slot,PHY_VARS_UE *phy_vars_ue,uint8_t eNB
|
||||
phy_vars_ue->tx_power_dBm = UE_TX_POWER;
|
||||
#endif
|
||||
|
||||
phy_vars_ue->tx_total_RE = 96;
|
||||
|
||||
#ifdef EXMIMO
|
||||
phy_vars_ue->lte_ue_prach_vars[eNB_id]->amp = get_tx_amp(phy_vars_ue->tx_power_dBm,phy_vars_ue->tx_power_max_dBm);
|
||||
#else
|
||||
@@ -1491,10 +1499,15 @@ void lte_ue_measurement_procedures(uint8_t last_slot, uint16_t l, PHY_VARS_UE *p
|
||||
|
||||
// AGC
|
||||
#ifdef EXMIMO
|
||||
|
||||
if ((openair_daq_vars.rx_gain_mode == DAQ_AGC_ON) &&
|
||||
(mode != rx_calib_ue) && (mode != rx_calib_ue_med) && (mode != rx_calib_ue_byp) )
|
||||
//phy_adjust_gain (phy_vars_ue,0);
|
||||
gain_control_all(phy_vars_ue->PHY_measurements.rx_power_avg_dB[eNB_id],0);
|
||||
|
||||
#else
|
||||
|
||||
phy_adjust_gain (phy_vars_ue,0);
|
||||
|
||||
#endif
|
||||
|
||||
eNB_id = 0;
|
||||
|
||||
Reference in New Issue
Block a user