Merge branch 'enhancement-10-harmony' of https://gitlab.eurecom.fr/oai/openairinterface5g into enhancement-10-harmony
Conflicts: openair1/SCHED/phy_procedures_lte_ue.c targets/RT/USER/lte-softmodem.c targets/RT/USER/lte-ue.c
This commit is contained in:
+18
-82
@@ -72,12 +72,7 @@ enum openair_ERROR {
|
||||
|
||||
enum openair_SYNCH_STATUS {
|
||||
openair_NOT_SYNCHED=1,
|
||||
#ifdef OPENAIR_LTE
|
||||
openair_SYNCHED,
|
||||
#else
|
||||
openair_SYNCHED_TO_CHSCH,
|
||||
openair_SYNCHED_TO_MRSCH,
|
||||
#endif
|
||||
openair_SCHED_EXIT
|
||||
};
|
||||
|
||||
@@ -86,65 +81,6 @@ enum openair_SYNCH_STATUS {
|
||||
#define DAQ_AGC_OFF 0
|
||||
|
||||
|
||||
/*
|
||||
typedef struct {
|
||||
boolean_t is_eNB;
|
||||
uint8_t mode;
|
||||
uint8_t synch_source;
|
||||
uint32_t slot_count;
|
||||
uint32_t sched_cnt;
|
||||
uint32_t synch_wait_cnt;
|
||||
uint32_t sync_state;
|
||||
uint32_t scheduler_interval_ns;
|
||||
uint32_t last_adac_cnt;
|
||||
uint8_t first_sync_call;
|
||||
int32_t instance_cnt;
|
||||
uint8_t one_shot_get_frame;
|
||||
uint8_t do_synch;
|
||||
uint8_t node_configured; // &1..basic config, &3..ue config &5..eNb config
|
||||
uint8_t node_running;
|
||||
uint8_t tx_test;
|
||||
uint8_t mac_registered;
|
||||
//uint8_t freq;
|
||||
uint32_t freq;
|
||||
uint32_t rx_gain_val;
|
||||
uint32_t rx_gain_mode;
|
||||
uint32_t tcxo_dac;
|
||||
uint32_t auto_freq_correction;
|
||||
int32_t freq_offset;
|
||||
uint32_t tx_rx_switch_point;
|
||||
uint32_t manual_timing_advance; /// 1 to override automatic timing advance
|
||||
int32_t timing_advance;
|
||||
uint32_t dual_tx; /// 1 for dual-antenna TX, 0 for single-antenna TX
|
||||
uint32_t tdd; /// 1 for TDD mode, 0 for FDD mode
|
||||
uint32_t rx_rf_mode;
|
||||
uint32_t node_id;
|
||||
uint32_t rach_detection_count;
|
||||
uint32_t channel_vacant[4];
|
||||
uint32_t target_ue_dl_mcs;
|
||||
uint32_t target_ue_ul_mcs;
|
||||
uint32_t ue_ul_nb_rb;
|
||||
uint32_t ue_dl_rb_alloc;
|
||||
uint32_t dlsch_rate_adaptation;
|
||||
uint32_t dlsch_transmission_mode;
|
||||
uint32_t ulsch_allocation_mode;
|
||||
uint32_t rx_total_gain_dB;
|
||||
uint32_t hw_frame;
|
||||
uint32_t get_frame_done;
|
||||
uint32_t use_ia_receiver;
|
||||
} OPENAIR_DAQ_VARS;
|
||||
*/
|
||||
|
||||
#ifndef USER_MODE
|
||||
int32_t openair_sched_init(void);
|
||||
void openair_sched_cleanup(void);
|
||||
void openair_sched_exit(char *);
|
||||
void openair1_restart(void);
|
||||
int32_t init_dlsch_threads(void);
|
||||
void cleanup_dlsch_threads(void);
|
||||
#endif //USER_MODE
|
||||
|
||||
#ifdef OPENAIR_LTE
|
||||
/** @addtogroup _PHY_PROCEDURES_
|
||||
* @{
|
||||
*/
|
||||
@@ -168,7 +104,7 @@ void phy_procedures_eNB_lte(uint8_t subframe,PHY_VARS_eNB **phy_vars_eNB,uint8_t
|
||||
@param r_type indicates the relaying operation: 0: no_relaying, 1: unicast relaying type 1, 2: unicast relaying type 2, 3: multicast relaying
|
||||
@param *phy_vars_rn pointer to RN variables
|
||||
*/
|
||||
void phy_procedures_UE_lte(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstraction_flag,runmode_t mode,relaying_type_t r_type,PHY_VARS_RN *phy_vars_rn);
|
||||
void phy_procedures_UE_lte(PHY_VARS_UE *phy_vars_ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t abstraction_flag,runmode_t mode,relaying_type_t r_type,PHY_VARS_RN *phy_vars_rn);
|
||||
|
||||
#ifdef Rel10
|
||||
/*! \brief Top-level entry routine for relay node procedures when acting as eNB. This proc will make us of the existing eNB procs.
|
||||
@@ -187,22 +123,24 @@ int phy_procedures_RN_UE_RX(unsigned char last_slot, unsigned char next_slot, re
|
||||
|
||||
/*! \brief Scheduling for UE TX procedures in normal subframes.
|
||||
@param phy_vars_ue Pointer to UE variables on which to act
|
||||
@param proc Pointer to RXn-TXnp4 proc information
|
||||
@param eNB_id Local id of eNB on which to act
|
||||
@param abstraction_flag Indicator of PHY abstraction
|
||||
@param mode calib/normal mode
|
||||
@param r_type indicates the relaying operation: 0: no_relaying, 1: unicast relaying type 1, 2: unicast relaying type 2, 3: multicast relaying
|
||||
*/
|
||||
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);
|
||||
void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t abstraction_flag,runmode_t mode,relaying_type_t r_type);
|
||||
/*! \brief Scheduling for UE RX procedures in normal subframes.
|
||||
@param last_slot Index of last slot (0-19)
|
||||
@param phy_vars_ue Pointer to UE variables on which to act
|
||||
@param proc Pointer to RXn_TXnp4 proc information
|
||||
@param eNB_id Local id of eNB on which to act
|
||||
@param abstraction_flag Indicator of PHY abstraction
|
||||
@param mode calibration/debug mode
|
||||
@param r_type indicates the relaying operation: 0: no_relaying, 1: unicast relaying type 1, 2: unicast relaying type 2, 3: multicast relaying
|
||||
@param phy_vars_rn pointer to RN variables
|
||||
*/
|
||||
int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstraction_flag,runmode_t mode,relaying_type_t r_type,PHY_VARS_RN *phy_vars_rn);
|
||||
int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t abstraction_flag,runmode_t mode,relaying_type_t r_type,PHY_VARS_RN *phy_vars_rn);
|
||||
|
||||
/*! \brief Scheduling for UE TX procedures in TDD S-subframes.
|
||||
@param phy_vars_ue Pointer to UE variables on which to act
|
||||
@@ -385,11 +323,11 @@ uint8_t ul_ACK_subframe2_M(LTE_DL_FRAME_PARMS *frame_parms,unsigned char subfram
|
||||
|
||||
/*! \brief Indicates the SR TXOp in current subframe. Implements Table 10.1-5 from 36.213.
|
||||
@param phy_vars_ue Pointer to UE variables
|
||||
@param proc Pointer to RXn_TXnp4 thread context
|
||||
@param eNB_id ID of eNB which is to receive the SR
|
||||
@param subframe index of next subframe
|
||||
@returns 1 if TXOp is active.
|
||||
*/
|
||||
uint8_t is_SR_TXOp(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe);
|
||||
uint8_t is_SR_TXOp(PHY_VARS_UE *phy_vars_ue,UE_rxtx_proc_t *proc,uint8_t eNB_id);
|
||||
|
||||
/*! \brief Indicates the SR TXOp in current subframe for eNB and particular UE index. Implements Table 10.1-5 from 36.213.
|
||||
@param phy_vars_eNB Pointer to eNB variables
|
||||
@@ -426,7 +364,7 @@ int32_t add_ue(int16_t rnti, PHY_VARS_eNB *phy_vars_eNB);
|
||||
int mac_phy_remove_ue(module_id_t Mod_idP,rnti_t rnti);
|
||||
|
||||
void process_timing_advance(module_id_t Mod_id,uint8_t CC_id,int16_t timing_advance);
|
||||
void process_timing_advance_rar(PHY_VARS_UE *phy_vars_ue,uint16_t timing_advance);
|
||||
void process_timing_advance_rar(PHY_VARS_UE *phy_vars_ue,UE_rxtx_proc_t *proc,uint16_t timing_advance);
|
||||
|
||||
unsigned int get_tx_amp(int power_dBm, int power_max_dBm, int N_RB_UL, int nb_rb);
|
||||
|
||||
@@ -436,15 +374,15 @@ void phy_reset_ue(module_id_t Mod_id,uint8_t CC_id,uint8_t eNB_index);
|
||||
subframe n-4 which is acknowledged in subframe n (for FDD) according to n1_pucch = Ncce + N1_pucch. For
|
||||
TDD, this routine computes the complex procedure described in Section 10.1 of 36.213 (through tables 10.1-1,10.1-2)
|
||||
@param phy_vars_ue Pointer to UE variables
|
||||
@param proc Pointer to RXn-TXnp4 proc information
|
||||
@param eNB_id Index of eNB
|
||||
@param subframe subframe on which to act
|
||||
@param b Pointer to PUCCH payload (b[0],b[1])
|
||||
@param SR 1 means there's a positive SR in parallel to ACK/NAK
|
||||
@returns n1_pucch
|
||||
*/
|
||||
uint16_t get_n1_pucch(PHY_VARS_UE *phy_vars_ue,
|
||||
UE_rxtx_proc_t *proc,
|
||||
uint8_t eNB_id,
|
||||
uint8_t subframe,
|
||||
uint8_t *b,
|
||||
uint8_t SR);
|
||||
|
||||
@@ -497,21 +435,21 @@ UE_MODE_t get_ue_mode(uint8_t Mod_id,uint8_t CC_id,uint8_t eNB_index);
|
||||
|
||||
/*! \brief This function implements the power control mechanism for PUCCH from 36.213.
|
||||
@param phy_vars_ue PHY variables
|
||||
@param subframe Index of subframe
|
||||
@param proc Pointer to proc descriptor
|
||||
@param eNB_id Index of eNB
|
||||
@param pucch_fmt Format of PUCCH that is being transmitted
|
||||
@returns Transmit power
|
||||
*/
|
||||
int8_t pucch_power_cntl(PHY_VARS_UE *phy_vars_ue,uint8_t subframe,uint8_t eNB_id,PUCCH_FMT_t pucch_fmt);
|
||||
int8_t pucch_power_cntl(PHY_VARS_UE *phy_vars_ue, UE_rxtx_proc_t *proc,uint8_t eNB_id,PUCCH_FMT_t pucch_fmt);
|
||||
|
||||
/*! \brief This function implements the power control mechanism for PUCCH from 36.213.
|
||||
@param phy_vars_ue PHY variables
|
||||
@param subframe Index of subframe
|
||||
@param proc Pointer to proc descriptor
|
||||
@param eNB_id Index of eNB
|
||||
@param j index of type of PUSCH (SPS, Normal, Msg3)
|
||||
@returns Transmit power
|
||||
*/
|
||||
void pusch_power_cntl(PHY_VARS_UE *phy_vars_ue,uint8_t subframe,uint8_t eNB_id,uint8_t j, uint8_t abstraction_flag);
|
||||
void pusch_power_cntl(PHY_VARS_UE *phy_vars_ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t j, uint8_t abstraction_flag);
|
||||
|
||||
int8_t get_PHR(uint8_t Mod_id, uint8_t CC_id, uint8_t eNB_index);
|
||||
|
||||
@@ -543,15 +481,13 @@ int16_t get_target_pucch_rx_power(module_id_t module_idP, uint8_t CC_id);
|
||||
|
||||
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 dump_dlsch(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe,uint8_t harq_pid);
|
||||
void dump_dlsch_SI(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe);
|
||||
void dump_dlsch_ra(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe);
|
||||
void dump_dlsch(PHY_VARS_UE *phy_vars_ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t subframe,uint8_t harq_pid);
|
||||
void dump_dlsch_SI(PHY_VARS_UE *phy_vars_ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t subframe);
|
||||
void dump_dlsch_ra(PHY_VARS_UE *phy_vars_ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t subframe);
|
||||
void dump_dlsch2(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint16_t coded_bits_per_codeword,int round);
|
||||
|
||||
/*@}*/
|
||||
|
||||
#endif //OPENAIR_LTE
|
||||
|
||||
extern int slot_irq_handler(int irq, void *cookie);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1249,7 +1249,8 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
|
||||
|
||||
// clear previous allocation information for all UEs
|
||||
for (i=0; i<NUMBER_OF_UE_MAX; i++) {
|
||||
eNB->dlsch[i][0]->subframe_tx[subframe] = 0;
|
||||
if (eNB->dlsch[i][0])
|
||||
eNB->dlsch[i][0]->subframe_tx[subframe] = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -1326,9 +1327,11 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
|
||||
|
||||
if (abstraction_flag == 0) {
|
||||
|
||||
if (DCI_pdu->Num_ue_spec_dci+DCI_pdu->Num_common_dci > 0)
|
||||
if (DCI_pdu->Num_ue_spec_dci+DCI_pdu->Num_common_dci > 0) {
|
||||
LOG_D(PHY,"[eNB %"PRIu8"] Frame %d, subframe %d: Calling generate_dci_top (pdcch) (common %"PRIu8",ue_spec %"PRIu8")\n",eNB->Mod_id,frame, subframe,
|
||||
DCI_pdu->Num_common_dci,DCI_pdu->Num_ue_spec_dci);
|
||||
}
|
||||
|
||||
|
||||
num_pdcch_symbols = generate_dci_top(DCI_pdu->Num_ue_spec_dci,
|
||||
DCI_pdu->Num_common_dci,
|
||||
@@ -1353,7 +1356,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
|
||||
|
||||
// Check for SI activity
|
||||
|
||||
if (eNB->dlsch_SI->active == 1) {
|
||||
if ((eNB->dlsch_SI) && (eNB->dlsch_SI->active == 1)) {
|
||||
|
||||
pdsch_procedures(eNB,proc,eNB->dlsch_SI,(LTE_eNB_DLSCH_t*)NULL,(LTE_eNB_UE_stats*)NULL,0,num_pdcch_symbols,abstraction_flag);
|
||||
|
||||
@@ -1369,7 +1372,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
|
||||
}
|
||||
|
||||
// Check for RA activity
|
||||
if (eNB->dlsch_ra->active == 1) {
|
||||
if ((eNB->dlsch_ra) && (eNB->dlsch_ra->active == 1)) {
|
||||
|
||||
#if defined(SMBV)
|
||||
|
||||
@@ -2524,11 +2527,7 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,const uint8_t abstraction_fl
|
||||
uint16_t packet_type;
|
||||
uint32_t symbol_number=0;
|
||||
uint32_t symbol_mask, symbol_mask_full;
|
||||
|
||||
struct timespec time_req, time_rem;
|
||||
time_req.tv_sec = 0;
|
||||
time_req.tv_nsec = 300000;
|
||||
|
||||
|
||||
if (subframe==9) {
|
||||
subframe=0;
|
||||
frame++;
|
||||
@@ -2547,7 +2546,7 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,const uint8_t abstraction_fl
|
||||
if (abstraction_flag==0) { // grab signal in chunks of 500 us (1 slot)
|
||||
|
||||
if ((eNB->node_function == NGFI_RRU_IF4) ||
|
||||
(eNB->node_function == eNodeB_3GPP)) { // acquisition from RF and front-end processing
|
||||
(eNB->node_function == eNodeB_3GPP)) { // acquisition from RF
|
||||
|
||||
for (i=0; i<fp->nb_antennas_rx; i++)
|
||||
rxp[i] = (void*)&eNB->common_vars.rxdata[0][i][subframe*fp->samples_per_tti];
|
||||
@@ -2563,13 +2562,13 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,const uint8_t abstraction_fl
|
||||
|
||||
if (proc->first_rx == 0) {
|
||||
if (proc->subframe_rx != subframe){
|
||||
LOG_E(PHY,"Received Timestamp doesn't correspond to the time we think it is (proc->subframe_rx %d, subframe %d)\n",proc->subframe_rx,subframe);
|
||||
exit_fun("Exiting");
|
||||
}
|
||||
LOG_E(PHY,"Received Timestamp doesn't correspond to the time we think it is (proc->subframe_rx %d, subframe %d)\n",proc->subframe_rx,subframe);
|
||||
exit_fun("Exiting");
|
||||
}
|
||||
if (proc->frame_rx != frame) {
|
||||
LOG_E(PHY,"Received Timestamp doesn't correspond to the time we think it is (proc->frame_rx %d frame %d)\n",proc->frame_rx,frame);
|
||||
exit_fun("Exiting");
|
||||
}
|
||||
LOG_E(PHY,"Received Timestamp doesn't correspond to the time we think it is (proc->frame_rx %d frame %d)\n",proc->frame_rx,frame);
|
||||
exit_fun("Exiting");
|
||||
}
|
||||
} else {
|
||||
proc->first_rx = 0;
|
||||
}
|
||||
@@ -2585,6 +2584,16 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,const uint8_t abstraction_fl
|
||||
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ, 0 );
|
||||
|
||||
} else if(eNB->node_function == eNodeB_3GPP_BBU) { // acquisition from IF
|
||||
/// **** trx_read_func from IF device **** ///
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ((eNB->node_function == NGFI_RRU_IF4) ||
|
||||
(eNB->node_function == eNodeB_3GPP) ||
|
||||
(eNB->node_function == eNodeB_3GPP_BBU)) { // front-end processing
|
||||
|
||||
// now do common RX processing for first slot in subframe
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_SLOT_FEP,1);
|
||||
remove_7_5_kHz(eNB,proc->subframe_rx<<1);
|
||||
@@ -2608,12 +2617,10 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,const uint8_t abstraction_fl
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_SLOT_FEP,0);
|
||||
|
||||
if (eNB->node_function == NGFI_RRU_IF4 && is_prach_subframe(fp, proc->frame_rx, proc->subframe_rx)<=0) {
|
||||
|
||||
/// **** send_IF4 of rxdataF to RCC (no prach now) **** ///
|
||||
/// **** send_IF4 of rxdataF to RCC (no prach now) **** ///
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4, 1 );
|
||||
send_IF4(eNB, frame, subframe, IF4_PULFFT, 0);
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4, 0 );
|
||||
|
||||
}
|
||||
|
||||
/// **** send_IF4 of prach to RCC **** /// done in prach thread (below)
|
||||
@@ -2657,20 +2664,16 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,const uint8_t abstraction_fl
|
||||
symbol_mask = 0;
|
||||
symbol_mask_full = (1<<fp->symbols_per_tti)-1;
|
||||
prach_rx = 0;
|
||||
|
||||
// Block from loop while testing
|
||||
//symbol_mask = symbol_mask_full;
|
||||
//nanosleep(&time_req, &time_rem);
|
||||
|
||||
do {
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4, 1 );
|
||||
recv_IF4(eNB, proc->frame_rx, proc->subframe_rx, &packet_type, &symbol_number);
|
||||
recv_IF4(eNB, &proc->frame_rx, &proc->subframe_rx, &packet_type, &symbol_number);
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4, 0 );
|
||||
|
||||
if (packet_type == IF4_PULFFT) {
|
||||
symbol_mask = symbol_mask | (1<<symbol_number);
|
||||
|
||||
} else if (is_prach_subframe(fp,frame,subframe)>0 && packet_type == PRACH) {
|
||||
} else if (packet_type == IF4_PRACH) {
|
||||
// wake up thread for PRACH RX
|
||||
prach_rx = 1;
|
||||
|
||||
@@ -2703,6 +2706,23 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,const uint8_t abstraction_fl
|
||||
|
||||
} while( (symbol_mask != symbol_mask_full) && (prach_rx == 0));
|
||||
|
||||
if (proc->first_rx == 0) {
|
||||
if (proc->subframe_rx != subframe){
|
||||
LOG_E(PHY,"Received Timestamp doesn't correspond to the time we think it is (proc->subframe_rx %d, subframe %d)\n",proc->subframe_rx,subframe);
|
||||
// exit_fun("Exiting");
|
||||
}
|
||||
if (proc->frame_rx != frame) {
|
||||
LOG_E(PHY,"Received Timestamp doesn't correspond to the time we think it is (proc->frame_rx %d frame %d)\n",proc->frame_rx,frame);
|
||||
// exit_fun("Exiting");
|
||||
}
|
||||
} else {
|
||||
proc->first_rx = 0;
|
||||
}
|
||||
|
||||
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TS, proc->timestamp_rx&0xffffffff );
|
||||
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX_ENB, proc->frame_rx );
|
||||
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX_ENB, proc->subframe_rx );
|
||||
|
||||
// Tobi aka mr monaco: ETH
|
||||
|
||||
} else { // should not get here
|
||||
|
||||
+1837
-2434
File diff suppressed because it is too large
Load Diff
@@ -42,7 +42,7 @@
|
||||
#include "PHY/LTE_TRANSPORT/proto.h"
|
||||
#include "PHY/extern.h"
|
||||
|
||||
int8_t pucch_power_cntl(PHY_VARS_UE *ue,uint8_t subframe,uint8_t eNB_id,PUCCH_FMT_t pucch_fmt)
|
||||
int8_t pucch_power_cntl(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t subframe,uint8_t eNB_id,PUCCH_FMT_t pucch_fmt)
|
||||
{
|
||||
|
||||
int8_t Po_PUCCH;
|
||||
@@ -98,7 +98,7 @@ int8_t pucch_power_cntl(PHY_VARS_UE *ue,uint8_t subframe,uint8_t eNB_id,PUCCH_FM
|
||||
if (pucch_fmt!=pucch_format1) {
|
||||
LOG_I(PHY,"[UE %d][PDSCH %x] frame %d, subframe %d: Po_PUCCH %d dBm : Po_NOMINAL_PUCCH %d dBm, PL %d dB, g_pucch %d dB\n",
|
||||
ue->Mod_id,
|
||||
ue->dlsch[eNB_id][0]->rnti,ue->frame_tx,subframe,
|
||||
ue->dlsch[eNB_id][0]->rnti,proc->frame_tx,subframe,
|
||||
Po_PUCCH,
|
||||
ue->frame_parms.ul_power_control_config_common.p0_NominalPUCCH,
|
||||
get_PL(ue->Mod_id,ue->CC_id,eNB_id),
|
||||
@@ -106,7 +106,7 @@ int8_t pucch_power_cntl(PHY_VARS_UE *ue,uint8_t subframe,uint8_t eNB_id,PUCCH_FM
|
||||
} else {
|
||||
LOG_I(PHY,"[UE %d][SR %x] frame %d, subframe %d: Po_PUCCH %d dBm : Po_NOMINAL_PUCCH %d dBm, PL %d dB g_pucch %d dB\n",
|
||||
ue->Mod_id,
|
||||
ue->dlsch[eNB_id][0]->rnti,ue->frame_tx,subframe,
|
||||
ue->dlsch[eNB_id][0]->rnti,proc->frame_tx,subframe,
|
||||
Po_PUCCH,
|
||||
ue->frame_parms.ul_power_control_config_common.p0_NominalPUCCH,
|
||||
get_PL(ue->Mod_id,ue->CC_id,eNB_id),
|
||||
|
||||
@@ -136,13 +136,13 @@ int16_t get_hundred_times_delta_IF(PHY_VARS_UE *ue,uint8_t eNB_id,uint8_t harq_p
|
||||
|
||||
uint8_t alpha_lut[8] = {0,40,50,60,70,80,90,100};
|
||||
|
||||
void pusch_power_cntl(PHY_VARS_UE *ue,uint8_t subframe,uint8_t eNB_id,uint8_t j, uint8_t abstraction_flag)
|
||||
void pusch_power_cntl(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t j, uint8_t abstraction_flag)
|
||||
{
|
||||
|
||||
|
||||
uint8_t harq_pid = subframe2harq_pid(&ue->frame_parms,
|
||||
ue->frame_tx,
|
||||
subframe);
|
||||
proc->frame_tx,
|
||||
proc->subframe_tx);
|
||||
|
||||
uint8_t nb_rb = ue->ulsch[eNB_id]->harq_processes[harq_pid]->nb_rb;
|
||||
int8_t PL;
|
||||
@@ -164,7 +164,7 @@ void pusch_power_cntl(PHY_VARS_UE *ue,uint8_t subframe,uint8_t eNB_id,uint8_t j,
|
||||
ue->ulsch[eNB_id]->Po_PUSCH += (mac_xface->get_Po_NOMINAL_PUSCH(ue->Mod_id,0) + PL);
|
||||
|
||||
LOG_I(PHY,"[UE %d][RAPROC] frame %d, subframe %d: Msg3 Po_PUSCH %d dBm (%d,%d,100*PL=%d,%d,%d)\n",
|
||||
ue->Mod_id,ue->frame_tx,subframe,ue->ulsch[eNB_id]->Po_PUSCH,
|
||||
ue->Mod_id,proc->frame_tx,proc->subframe_tx,ue->ulsch[eNB_id]->Po_PUSCH,
|
||||
100*mac_xface->get_Po_NOMINAL_PUSCH(ue->Mod_id,0),
|
||||
hundred_times_log10_NPRB[nb_rb-1],
|
||||
100*PL,
|
||||
@@ -183,7 +183,7 @@ void pusch_power_cntl(PHY_VARS_UE *ue,uint8_t subframe,uint8_t eNB_id,uint8_t j,
|
||||
ue->ulsch[eNB_id]->PHR = 40;
|
||||
|
||||
LOG_D(PHY,"[UE %d][PUSCH %d] frame %d, subframe %d: Po_PUSCH %d dBm : tx power %d, Po_NOMINAL_PUSCH %d,log10(NPRB) %f,PHR %d, PL %d, alpha*PL %f,delta_IF %f,f_pusch %d\n",
|
||||
ue->Mod_id,harq_pid,ue->frame_tx,subframe,
|
||||
ue->Mod_id,harq_pid,proc->frame_tx,proc->subframe_tx,
|
||||
ue->ulsch[eNB_id]->Po_PUSCH,
|
||||
ue->tx_power_max_dBm,
|
||||
ue->frame_parms.ul_power_control_config_common.p0_NominalPUSCH,
|
||||
|
||||
Reference in New Issue
Block a user