updated config files for band 7 for exmimo2 and USRP
fixed bug in lte-softmodem for USRP and other minor updates other small fixes tested on EXMIMO and USRP git-svn-id: http://svn.eurecom.fr/openair4G/trunk@5936 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -531,6 +531,8 @@ int16_t get_hundred_times_delta_IF_eNB(PHY_VARS_eNB *phy_vars_eNB,uint8_t UE_id,
|
||||
|
||||
int16_t get_hundred_times_delta_IF_mac(module_id_t module_idP, uint8_t CC_id, rnti_t rnti, uint8_t harq_pid);
|
||||
|
||||
int16_t get_target_ul_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 ulsch_decoding_procedures(unsigned char last_slot, unsigned int i, PHY_VARS_eNB *phy_vars_eNB, unsigned char abstraction_flag);
|
||||
|
||||
@@ -367,6 +367,10 @@ int get_nCCE_offset(unsigned char L, int nCCE, int common_dci, unsigned short rn
|
||||
}
|
||||
}
|
||||
|
||||
int16_t get_target_ul_rx_power(module_id_t module_idP, uint8_t CC_id) {
|
||||
return PHY_vars_eNB_g[module_idP][CC_id]->PHY_measurements_eNB[0].n0_power_tot_dBm;
|
||||
}
|
||||
|
||||
#ifdef EMOS
|
||||
void phy_procedures_emos_eNB_TX(unsigned char next_slot, PHY_VARS_eNB *phy_vars_eNB) {
|
||||
|
||||
@@ -2914,15 +2918,6 @@ void phy_procedures_eNB_RX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
|
||||
stop_meas(&phy_vars_eNB->ulsch_demodulation_stats);
|
||||
|
||||
|
||||
for (j=0;j<phy_vars_eNB->lte_frame_parms.nb_antennas_rx;j++)
|
||||
//this is the RSSI per RB
|
||||
phy_vars_eNB->eNB_UE_stats[i].UL_rssi[j] =
|
||||
dB_fixed(phy_vars_eNB->lte_eNB_pusch_vars[i]->ulsch_power[j]*
|
||||
(phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->nb_rb*12)/
|
||||
phy_vars_eNB->lte_frame_parms.ofdm_symbol_size) -
|
||||
phy_vars_eNB->rx_total_gain_eNB_dB -
|
||||
hundred_times_log10_NPRB[phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->nb_rb-1]/100;
|
||||
|
||||
start_meas(&phy_vars_eNB->ulsch_decoding_stats);
|
||||
if (abstraction_flag == 0) {
|
||||
ret = ulsch_decoding(phy_vars_eNB,
|
||||
@@ -3000,14 +2995,20 @@ void phy_procedures_eNB_RX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
|
||||
}
|
||||
|
||||
if (ret == (1+MAX_TURBO_ITERATIONS)) {
|
||||
|
||||
/*
|
||||
if (phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->round>0) {
|
||||
dump_ulsch(phy_vars_eNB, sched_subframe, i);
|
||||
mac_xface->macphy_exit("retransmission in error");
|
||||
}
|
||||
*/
|
||||
|
||||
phy_vars_eNB->eNB_UE_stats[i].ulsch_round_errors[harq_pid][phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->round]++;
|
||||
phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->phich_active = 1;
|
||||
phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->phich_ACK = 0;
|
||||
phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->round++;
|
||||
|
||||
LOG_D(PHY,"[eNB][PUSCH %d] Increasing to round %d\n",harq_pid,phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->round);
|
||||
// dump_ulsch(phy_vars_eNB, sched_subframe, i);
|
||||
// exit(-1);
|
||||
|
||||
if (phy_vars_eNB->ulsch_eNB[i]->Msg3_flag == 1) {
|
||||
LOG_I(PHY,"[eNB %d][RAPROC] frame %d, subframe %d, UE %d: Error receiving ULSCH (Msg3), round %d/%d\n",
|
||||
@@ -3096,6 +3097,9 @@ void phy_procedures_eNB_RX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
|
||||
if (phy_vars_eNB->eNB_UE_stats[i].ulsch_consecutive_errors == ULSCH_max_consecutive_errors) {
|
||||
LOG_I(PHY,"[eNB %d] frame %d, subframe %d, UE %d: ULSCH consecutive error count reached %u, removing UE\n",
|
||||
phy_vars_eNB->Mod_id,frame,subframe, i, phy_vars_eNB->eNB_UE_stats[i].ulsch_consecutive_errors);
|
||||
|
||||
mac_xface->macphy_exit("Consecutive error count reached");
|
||||
|
||||
phy_vars_eNB->eNB_UE_stats[i].mode = PRACH;
|
||||
#ifdef OPENAIR2
|
||||
/* mac_xface->cancel_ra_proc(phy_vars_eNB->Mod_id,
|
||||
@@ -3113,6 +3117,16 @@ void phy_procedures_eNB_RX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
|
||||
phy_vars_eNB->Mod_id,harq_pid,
|
||||
frame,subframe);
|
||||
|
||||
for (j=0;j<phy_vars_eNB->lte_frame_parms.nb_antennas_rx;j++)
|
||||
//this is the RSSI per RB
|
||||
phy_vars_eNB->eNB_UE_stats[i].UL_rssi[j] =
|
||||
dB_fixed(phy_vars_eNB->lte_eNB_pusch_vars[i]->ulsch_power[j]*
|
||||
(phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->nb_rb*12)/
|
||||
phy_vars_eNB->lte_frame_parms.ofdm_symbol_size) -
|
||||
phy_vars_eNB->rx_total_gain_eNB_dB -
|
||||
hundred_times_log10_NPRB[phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->nb_rb-1]/100 -
|
||||
get_hundred_times_delta_IF_eNB(phy_vars_eNB,i,harq_pid)/100;
|
||||
|
||||
phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->phich_active = 1;
|
||||
phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->phich_ACK = 1;
|
||||
phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->round = 0;
|
||||
|
||||
@@ -571,6 +571,7 @@ void schedule_ulsch_rnti(module_id_t module_idP,
|
||||
int32_t buffer_occupancy=0;
|
||||
uint32_t cqi_req,cshift,ndi,mcs,rballoc,tpc;
|
||||
int32_t normalized_rx_power, target_rx_power=-85;
|
||||
static int32_t tpc_accumulated=0;
|
||||
|
||||
int n,CC_id;
|
||||
eNB_MAC_INST *eNB=&eNB_mac_inst[module_idP];
|
||||
@@ -654,23 +655,27 @@ void schedule_ulsch_rnti(module_id_t module_idP,
|
||||
//compute the expected ULSCH RX power (for the stats)
|
||||
|
||||
// this is the normalized RX power and this should be constant (regardless of mcs
|
||||
//todo: put this function into mac_xface
|
||||
normalized_rx_power = eNB_UE_stats->UL_rssi[0] -
|
||||
mac_xface->get_hundred_times_delta_TF(module_idP,CC_id,rnti,harq_pid)/100;
|
||||
normalized_rx_power = eNB_UE_stats->UL_rssi[0];
|
||||
//-mac_xface->get_hundred_times_delta_TF(module_idP,CC_id,rnti,harq_pid)/100;
|
||||
//target_rx_power = mac_xface->get_target_ul_rx_power(module_idP,CC_id)+5;
|
||||
// this assumes accumulated tpc
|
||||
if (subframeP==0) {
|
||||
if (normalized_rx_power>(target_rx_power+1))
|
||||
if (normalized_rx_power>(target_rx_power+1)) {
|
||||
tpc = 0; //-1
|
||||
else if (normalized_rx_power<(target_rx_power-1))
|
||||
tpc_accumulated--;
|
||||
}
|
||||
else if (normalized_rx_power<(target_rx_power-1)) {
|
||||
tpc = 2; //+1
|
||||
tpc_accumulated++;
|
||||
}
|
||||
else
|
||||
tpc = 1; //0
|
||||
}
|
||||
else
|
||||
tpc = 1; //0
|
||||
|
||||
// LOG_I(MAC,"[eNB %d] ULSCH scheduler: harq_pid %d, Ndi %d, mcs %d, tpc %d, normalized/target rx power %d/%d\n",module_idP,harq_pid,ndi,mcs,tpc,normalized_rx_power,target_rx_power);
|
||||
|
||||
LOG_D(MAC,"[eNB %d] ULSCH scheduler: subframe %d, harq_pid %d, tpc %d, accumulated %d, normalized/target rx power %d/%d\n",module_idP,subframeP,harq_pid,tpc,tpc_accumulated,normalized_rx_power,target_rx_power);
|
||||
|
||||
|
||||
// new transmission
|
||||
if (round==0) {
|
||||
|
||||
@@ -498,6 +498,7 @@ int l2_init(LTE_DL_FRAME_PARMS *frame_parms,int eMBMS_active, uint8_t cba_group_
|
||||
mac_xface->get_mu_mimo_mode = get_mu_mimo_mode;
|
||||
|
||||
mac_xface->get_hundred_times_delta_TF = get_hundred_times_delta_IF_mac;
|
||||
mac_xface->get_target_ul_rx_power = get_target_ul_rx_power;
|
||||
|
||||
#ifdef Rel10
|
||||
mac_xface->get_mch_sdu = get_mch_sdu;
|
||||
|
||||
@@ -310,6 +310,8 @@ typedef struct
|
||||
|
||||
int16_t (*get_hundred_times_delta_TF) (module_id_t module_idP, uint8_t CC_id, rnti_t rnti, uint8_t harq_pid);
|
||||
|
||||
int16_t (*get_target_ul_rx_power) (module_id_t module_idP, uint8_t CC_id);
|
||||
|
||||
unsigned char is_cluster_head;
|
||||
unsigned char is_primary_cluster_head;
|
||||
unsigned char is_secondary_cluster_head;
|
||||
|
||||
@@ -106,6 +106,8 @@ int errno;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
//#define XER_PRINT
|
||||
|
||||
typedef struct xer_sprint_string_s
|
||||
{
|
||||
char *string;
|
||||
@@ -1448,7 +1450,7 @@ uint8_t do_RRCConnectionSetup(uint8_t Mod_id,
|
||||
//assign_enum(&physicalConfigDedicated2->uplinkPowerControlDedicated->deltaMCS_Enabled,
|
||||
// UplinkPowerControlDedicated__deltaMCS_Enabled_en1);
|
||||
physicalConfigDedicated2->uplinkPowerControlDedicated->deltaMCS_Enabled= UplinkPowerControlDedicated__deltaMCS_Enabled_en1;
|
||||
physicalConfigDedicated2->uplinkPowerControlDedicated->accumulationEnabled = 1; // FALSE
|
||||
physicalConfigDedicated2->uplinkPowerControlDedicated->accumulationEnabled = 1; // TRUE
|
||||
physicalConfigDedicated2->uplinkPowerControlDedicated->p0_UE_PUCCH = 0; // 0 dB
|
||||
physicalConfigDedicated2->uplinkPowerControlDedicated->pSRS_Offset = 0; // 0 dB
|
||||
physicalConfigDedicated2->uplinkPowerControlDedicated->filterCoefficient = CALLOC(1,sizeof(*physicalConfigDedicated2->uplinkPowerControlDedicated->filterCoefficient));
|
||||
@@ -1590,6 +1592,9 @@ uint8_t do_RRCConnectionSetup(uint8_t Mod_id,
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef XER_PRINT
|
||||
xer_fprint(stdout, &asn_DEF_DL_CCCH_Message, (void*)&dl_ccch_msg);
|
||||
#endif
|
||||
enc_rval = uper_encode_to_buffer(&asn_DEF_DL_CCCH_Message,
|
||||
(void*)&dl_ccch_msg,
|
||||
buffer,
|
||||
|
||||
@@ -2843,7 +2843,7 @@ int rrc_eNB_decode_ccch(
|
||||
rrcConnectionReestablishmentRequest = &ul_ccch_msg->message.choice.c1.choice.rrcConnectionReestablishmentRequest.criticalExtensions.choice.rrcConnectionReestablishmentRequest_r8;
|
||||
|
||||
LOG_I(RRC, "[eNB %d] Frame %d UE %d: RRCConnectionReestablishmentRequest cause %s\n", enb_mod_idP,
|
||||
frameP,
|
||||
frameP, ue_mod_id,
|
||||
((rrcConnectionReestablishmentRequest->reestablishmentCause == ReestablishmentCause_otherFailure) ? "Other Failure" :
|
||||
(rrcConnectionReestablishmentRequest->reestablishmentCause == ReestablishmentCause_handoverFailure) ? "Handover Failure" :
|
||||
"reconfigurationFailure"));
|
||||
@@ -2862,8 +2862,8 @@ int rrc_eNB_decode_ccch(
|
||||
}else {
|
||||
rrc_eNB_generate_RRCConnectionReestablishementReject(enb_mod_idP, frameP, ue_mod_id);
|
||||
}
|
||||
break;
|
||||
*/
|
||||
break;
|
||||
case UL_CCCH_MessageType__c1_PR_rrcConnectionRequest:
|
||||
#ifdef RRC_MSG_PRINT
|
||||
LOG_F(RRC,"[MSG] RRC Connection Request\n");
|
||||
|
||||
@@ -832,7 +832,7 @@ int rrc_eNB_process_S1AP_UE_CONTEXT_RELEASE_COMMAND (MessageDef *msg_p, const ch
|
||||
return (-1);
|
||||
}
|
||||
else {
|
||||
rrc_eNB_generate_RRCConnectionRelease(instance, 0 /*frame*/, ue_index);
|
||||
//rrc_eNB_generate_RRCConnectionRelease(instance, 0 /*frame*/, ue_index);
|
||||
LOG_W(RRC,
|
||||
"[eNB %d] In S1AP_UE_CONTEXT_RELEASE_COMMAND: TODO call rrc_eNB_connection_release for eNB %d\n",
|
||||
instance,
|
||||
|
||||
@@ -245,7 +245,7 @@ RTIME start;
|
||||
|
||||
# define VCD_POLL_DELAY (500) // Poll delay in micro-seconds
|
||||
# define VCD_MAX_WAIT_DELAY (200 * 1000) // Maximum data ready wait delay in micro-seconds
|
||||
# define VCD_FIFO_NB_ELEMENTS (1 << 20) // Must be a power of 2
|
||||
# define VCD_FIFO_NB_ELEMENTS (1 << 24) // Must be a power of 2
|
||||
# define VCD_FIFO_MASK (VCD_FIFO_NB_ELEMENTS - 1)
|
||||
|
||||
typedef struct vcd_queue_user_data_s {
|
||||
|
||||
@@ -30,7 +30,7 @@ eNBs =
|
||||
tdd_config_s = 0;
|
||||
prefix_type = "NORMAL";
|
||||
eutra_band = 7;
|
||||
downlink_frequency = 2660000000L;
|
||||
downlink_frequency = 2680000000L;
|
||||
uplink_frequency_offset = -120000000;
|
||||
Nid_cell = 0;
|
||||
N_RB_DL = 25;
|
||||
@@ -39,7 +39,7 @@ eNBs =
|
||||
nb_antennas_rx = 1;
|
||||
tx_gain = 20;
|
||||
rx_gain = 20;
|
||||
prach_root = 22;
|
||||
prach_root = 0;
|
||||
prach_config_index = 0;
|
||||
prach_high_speed = "DISABLE";
|
||||
prach_zero_correlation = 1;
|
||||
@@ -57,7 +57,7 @@ eNBs =
|
||||
pusch_groupHoppingEnabled = "ENABLE";
|
||||
pusch_groupAssignment = 0;
|
||||
pusch_sequenceHoppingEnabled = "DISABLE";
|
||||
pusch_nDMRS1 = 1;
|
||||
pusch_nDMRS1 = 0;
|
||||
phich_duration = "NORMAL";
|
||||
phich_resource = "ONESIXTH";
|
||||
srs_enable = "DISABLE";
|
||||
@@ -123,19 +123,19 @@ eNBs =
|
||||
|
||||
log_config :
|
||||
{
|
||||
global_log_level ="info";
|
||||
global_log_level ="debug";
|
||||
global_log_verbosity ="medium";
|
||||
hw_log_level ="debug";
|
||||
hw_log_verbosity ="medium";
|
||||
phy_log_level ="info";
|
||||
phy_log_level ="debug";
|
||||
phy_log_verbosity ="medium";
|
||||
mac_log_level ="info";
|
||||
mac_log_level ="debug";
|
||||
mac_log_verbosity ="high";
|
||||
rlc_log_level ="info";
|
||||
rlc_log_verbosity ="medium";
|
||||
pdcp_log_level ="info";
|
||||
pdcp_log_verbosity ="medium";
|
||||
rrc_log_level ="info";
|
||||
rrc_log_level ="debug";
|
||||
rrc_log_verbosity ="medium";
|
||||
};
|
||||
|
||||
|
||||
@@ -30,31 +30,31 @@ eNBs =
|
||||
tdd_config_s = 0;
|
||||
prefix_type = "NORMAL";
|
||||
eutra_band = 7;
|
||||
downlink_frequency = 2660000000L;
|
||||
downlink_frequency = 2680000000L;
|
||||
uplink_frequency_offset = -120000000;
|
||||
Nid_cell = 0;
|
||||
N_RB_DL = 25;
|
||||
Nid_cell_mbsfn = 0;
|
||||
nb_antennas_tx = 1;
|
||||
nb_antennas_rx = 1;
|
||||
tx_gain = 120;
|
||||
tx_gain = 90;
|
||||
rx_gain = 135;
|
||||
prach_root = 22;
|
||||
prach_config_index = 3;
|
||||
prach_root = 0;
|
||||
prach_config_index = 0;
|
||||
prach_high_speed = "DISABLE";
|
||||
prach_zero_correlation = 0;
|
||||
prach_freq_offset = 0;
|
||||
prach_zero_correlation = 1;
|
||||
prach_freq_offset = 2;
|
||||
pucch_delta_shift = 1;
|
||||
pucch_nRB_CQI = 1;
|
||||
pucch_nCS_AN = 0;
|
||||
pucch_n1_AN = 32;
|
||||
pdsch_referenceSignalPower = -24;
|
||||
pdsch_referenceSignalPower = -26;
|
||||
pdsch_p_b = 0;
|
||||
pusch_n_SB = 1;
|
||||
pusch_enable64QAM = "DISABLE";
|
||||
pusch_hoppingMode = "interSubFrame";
|
||||
pusch_hoppingOffset = 4;
|
||||
pusch_groupHoppingEnabled = "DISABLE";
|
||||
pusch_hoppingOffset = 0;
|
||||
pusch_groupHoppingEnabled = "ENABLE";
|
||||
pusch_groupAssignment = 0;
|
||||
pusch_sequenceHoppingEnabled = "DISABLE";
|
||||
pusch_nDMRS1 = 1;
|
||||
@@ -66,9 +66,9 @@ eNBs =
|
||||
srs_ackNackST =;
|
||||
srs_MaxUpPts =;*/
|
||||
|
||||
pusch_p0_Nominal = -95;
|
||||
pusch_alpha = "AL08";
|
||||
pucch_p0_Nominal = -117;
|
||||
pusch_p0_Nominal = -108;
|
||||
pusch_alpha = "AL1";
|
||||
pucch_p0_Nominal = -108;
|
||||
msg3_delta_Preamble = 6;
|
||||
pucch_deltaF_Format1 = "deltaF2";
|
||||
pucch_deltaF_Format1b = "deltaF3";
|
||||
@@ -76,16 +76,16 @@ eNBs =
|
||||
pucch_deltaF_Format2a = "deltaF0";
|
||||
pucch_deltaF_Format2b = "deltaF0";
|
||||
|
||||
rach_numberOfRA_Preambles = 52;
|
||||
rach_numberOfRA_Preambles = 64;
|
||||
rach_preamblesGroupAConfig = "DISABLE";
|
||||
/*
|
||||
rach_sizeOfRA_PreamblesGroupA = ;
|
||||
rach_messageSizeGroupA = ;
|
||||
rach_messagePowerOffsetGroupB = ;
|
||||
*/
|
||||
rach_powerRampingStep = 2;
|
||||
rach_preambleInitialReceivedTargetPower = -104;
|
||||
rach_preambleTransMax = 6;
|
||||
rach_powerRampingStep = 4;
|
||||
rach_preambleInitialReceivedTargetPower = -108;
|
||||
rach_preambleTransMax = 10;
|
||||
rach_raResponseWindowSize = 10;
|
||||
rach_macContentionResolutionTimer = 48;
|
||||
rach_maxHARQ_Msg3Tx = 4;
|
||||
@@ -125,7 +125,7 @@ eNBs =
|
||||
{
|
||||
global_log_level ="info";
|
||||
global_log_verbosity ="medium";
|
||||
hw_log_level ="debug";
|
||||
hw_log_level ="info";
|
||||
hw_log_verbosity ="medium";
|
||||
phy_log_level ="info";
|
||||
phy_log_verbosity ="medium";
|
||||
|
||||
@@ -37,8 +37,8 @@ endif
|
||||
|
||||
ifeq ($(DEBUG),1)
|
||||
CFLAGS += -g -ggdb
|
||||
CFLAGS += -DRRC_MSG_PRINT
|
||||
CFLAGS += -DPDCP_MSG_PRINT
|
||||
#CFLAGS += -DRRC_MSG_PRINT
|
||||
#CFLAGS += -DPDCP_MSG_PRINT
|
||||
endif
|
||||
|
||||
ifdef ($(MSG_PRINT),1)
|
||||
|
||||
@@ -171,9 +171,8 @@ static SEM *mutex;
|
||||
|
||||
static long main_eNB_thread;
|
||||
static long main_ue_thread;
|
||||
#ifdef USRP
|
||||
static SEM *sync_sem; // to sync rx & tx streaming
|
||||
#endif
|
||||
|
||||
//static int sync_thread;
|
||||
#else
|
||||
pthread_t main_eNB_thread;
|
||||
@@ -181,12 +180,11 @@ pthread_t main_ue_thread;
|
||||
pthread_attr_t attr_dlsch_threads;
|
||||
struct sched_param sched_param_dlsch;
|
||||
|
||||
#ifndef EXMIMO
|
||||
pthread_cond_t sync_cond;
|
||||
pthread_mutex_t sync_mutex;
|
||||
int sync_var=-1;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif
|
||||
RTIME T0;
|
||||
|
||||
pthread_attr_t attr_UE_init_synch;
|
||||
@@ -1258,9 +1256,9 @@ static void *eNB_thread(void *arg)
|
||||
RT_TASK *task;
|
||||
#endif
|
||||
#ifdef EXMIMO
|
||||
unsigned char slot=1;
|
||||
#else
|
||||
unsigned char slot=0;
|
||||
#else
|
||||
unsigned char slot=1;
|
||||
#endif
|
||||
int frame=0;
|
||||
int CC_id;
|
||||
@@ -1283,10 +1281,12 @@ static void *eNB_thread(void *arg)
|
||||
hw_subframe = 0;
|
||||
#endif
|
||||
|
||||
/*
|
||||
#if defined(ENABLE_ITTI)
|
||||
/* Wait for eNB application initialization to be complete (eNB registration to MME) */
|
||||
// Wait for eNB application initialization to be complete (eNB registration to MME)
|
||||
wait_system_ready ("Waiting for eNB application to be ready %s\r", &start_eNB);
|
||||
#endif
|
||||
*/
|
||||
|
||||
#ifdef RTAI
|
||||
task = rt_task_init_schmod(nam2num("TASK0"), 0, 0, 0, SCHED_FIFO, 0xF);
|
||||
@@ -1313,17 +1313,16 @@ static void *eNB_thread(void *arg)
|
||||
timing_info.time_avg = 0;
|
||||
timing_info.n_samples = 0;
|
||||
|
||||
#ifndef EXMIMO
|
||||
printf("waiting for USRP sync (eNB_thread)\n");
|
||||
printf("waiting for sync (eNB_thread)\n");
|
||||
#ifdef RTAI
|
||||
rt_sem_wait(sync_sem);
|
||||
#else
|
||||
pthread_mutex_lock(&sync_mutex);
|
||||
pthread_cond_wait(&sync_cond, &sync_mutex);
|
||||
while (sync_var<0)
|
||||
pthread_cond_wait(&sync_cond, &sync_mutex);
|
||||
pthread_mutex_unlock(&sync_mutex);
|
||||
#endif
|
||||
// printf("starting eNB thread @ %llu\n",get_usrp_time(&openair0));
|
||||
#endif
|
||||
|
||||
while (!oai_exit) {
|
||||
|
||||
@@ -1634,7 +1633,8 @@ static void *UE_thread_synch(void *arg) {
|
||||
|
||||
pthread_mutex_lock(&sync_mutex);
|
||||
printf("Locked sync_mutex, waiting (UE_sync_thread)\n");
|
||||
pthread_cond_wait(&sync_cond, &sync_mutex);
|
||||
while (sync_var<0)
|
||||
pthread_cond_wait(&sync_cond, &sync_mutex);
|
||||
pthread_mutex_unlock(&sync_mutex);
|
||||
printf("unlocked sync_mutex (UE_sync_thread)\n");
|
||||
#endif
|
||||
@@ -1814,7 +1814,8 @@ static void *UE_thread_rx(void *arg) {
|
||||
#else
|
||||
pthread_mutex_lock(&sync_mutex);
|
||||
printf("Locked sync_mutex, waiting (UE_thread_rx)\n");
|
||||
pthread_cond_wait(&sync_cond, &sync_mutex);
|
||||
while (sync_var<0)
|
||||
pthread_cond_wait(&sync_cond, &sync_mutex);
|
||||
pthread_mutex_unlock(&sync_mutex);
|
||||
printf("unlocked sync_mutex, waiting (UE_thread_rx)\n");
|
||||
#endif
|
||||
@@ -1906,7 +1907,8 @@ static void *UE_thread(void *arg) {
|
||||
#else
|
||||
pthread_mutex_lock(&sync_mutex);
|
||||
printf("Locked sync_mutex, waiting (UE_thread)\n");
|
||||
pthread_cond_wait(&sync_cond, &sync_mutex);
|
||||
while (sync_var<0)
|
||||
pthread_cond_wait(&sync_cond, &sync_mutex);
|
||||
pthread_mutex_unlock(&sync_mutex);
|
||||
printf("unlocked sync_mutex, waiting (UE_thread)\n");
|
||||
#endif
|
||||
@@ -3176,25 +3178,23 @@ int main(int argc, char **argv) {
|
||||
}
|
||||
else
|
||||
printf("mutex=%p\n",mutex);
|
||||
#ifndef EXMIMO
|
||||
|
||||
sync_sem = rt_typed_sem_init(nam2num("syncsem"), 0, BIN_SEM|FIFO_Q);
|
||||
if(sync_sem == 0)
|
||||
printf("error init sync semphore\n");
|
||||
#endif
|
||||
|
||||
#else
|
||||
#ifndef EXMIMO
|
||||
pthread_cond_init(&sync_cond,NULL);
|
||||
pthread_mutex_init(&sync_mutex, NULL);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*#if defined(ENABLE_ITTI)
|
||||
#if defined(ENABLE_ITTI)
|
||||
// Wait for eNB application initialization to be complete (eNB registration to MME)
|
||||
if (UE_flag==0) {
|
||||
printf("Waiting for eNB application to be ready\n");
|
||||
wait_system_ready ("Waiting for eNB application to be ready %s\r", &start_eNB);
|
||||
}
|
||||
#endif*/
|
||||
#endif
|
||||
|
||||
|
||||
// this starts the DMA transfers
|
||||
@@ -3207,24 +3207,16 @@ int main(int argc, char **argv) {
|
||||
#ifdef XFORMS
|
||||
if (do_forms==1) {
|
||||
fl_initialize (&argc, argv, NULL, 0, 0);
|
||||
form_stats = create_form_stats_form();
|
||||
if (UE_flag==1) {
|
||||
form_ue[UE_id] = create_lte_phy_scope_ue();
|
||||
sprintf (title, "LTE DL SCOPE UE");
|
||||
fl_show_form (form_ue[UE_id]->lte_phy_scope_ue, FL_PLACE_HOTSPOT, FL_FULLBORDER, title);
|
||||
} else {
|
||||
|
||||
if (UE_flag==0) {
|
||||
form_stats_l2 = create_form_stats_form();
|
||||
fl_show_form (form_stats_l2->stats_form, FL_PLACE_HOTSPOT, FL_FULLBORDER, "l2 stats");
|
||||
form_stats = create_form_stats_form();
|
||||
fl_show_form (form_stats->stats_form, FL_PLACE_HOTSPOT, FL_FULLBORDER, "stats");
|
||||
for(UE_id=0;UE_id<scope_enb_num_ue;UE_id++) {
|
||||
form_enb[UE_id] = create_lte_phy_scope_enb();
|
||||
sprintf (title, "UE%d LTE UL SCOPE eNB",UE_id+1);
|
||||
fl_show_form (form_enb[UE_id]->lte_phy_scope_enb, FL_PLACE_HOTSPOT, FL_FULLBORDER, title);
|
||||
}
|
||||
}
|
||||
fl_show_form (form_stats->stats_form, FL_PLACE_HOTSPOT, FL_FULLBORDER, "stats");
|
||||
if (UE_flag==0) {
|
||||
fl_show_form (form_stats_l2->stats_form, FL_PLACE_HOTSPOT, FL_FULLBORDER, "l2 stats");
|
||||
|
||||
for (UE_id=0;UE_id<scope_enb_num_ue;UE_id++) {
|
||||
if (otg_enabled) {
|
||||
fl_set_button(form_enb[UE_id]->button_0,1);
|
||||
fl_set_object_label(form_enb[UE_id]->button_0,"DL Traffic ON");
|
||||
@@ -3236,6 +3228,13 @@ int main(int argc, char **argv) {
|
||||
}
|
||||
}
|
||||
else {
|
||||
form_stats = create_form_stats_form();
|
||||
fl_show_form (form_stats->stats_form, FL_PLACE_HOTSPOT, FL_FULLBORDER, "stats");
|
||||
UE_id = 0;
|
||||
form_ue[UE_id] = create_lte_phy_scope_ue();
|
||||
sprintf (title, "LTE DL SCOPE UE");
|
||||
fl_show_form (form_ue[UE_id]->lte_phy_scope_ue, FL_PLACE_HOTSPOT, FL_FULLBORDER, title);
|
||||
|
||||
if (openair_daq_vars.use_ia_receiver) {
|
||||
fl_set_button(form_ue[UE_id]->button_0,1);
|
||||
fl_set_object_label(form_ue[UE_id]->button_0, "IA Receiver ON");
|
||||
@@ -3326,21 +3325,23 @@ int main(int argc, char **argv) {
|
||||
// Sleep to allow all threads to setup
|
||||
//sleep(1);
|
||||
|
||||
|
||||
#ifndef EXMIMO
|
||||
#ifndef USRP_DEBUG
|
||||
openair0.trx_start_func(&openair0);
|
||||
// printf("returning from usrp start streaming: %llu\n",get_usrp_time(&openair0));
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef RTAI
|
||||
rt_sem_signal(sync_sem);
|
||||
#else
|
||||
pthread_mutex_lock(&sync_mutex);
|
||||
printf("Sending sync ...\n");
|
||||
sync_var=0;
|
||||
pthread_cond_broadcast(&sync_cond);
|
||||
pthread_mutex_unlock(&sync_mutex);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// wait for end of program
|
||||
printf("TYPE <CTRL-C> TO TERMINATE\n");
|
||||
//getchar();
|
||||
@@ -3415,7 +3416,6 @@ int main(int argc, char **argv) {
|
||||
//cleanup_pdcp_thread();
|
||||
#endif
|
||||
|
||||
#ifndef EXMIMO
|
||||
#ifdef RTAI
|
||||
rt_sem_delete(sync_sem);
|
||||
stop_rt_timer();
|
||||
@@ -3423,7 +3423,6 @@ int main(int argc, char **argv) {
|
||||
pthread_cond_destroy(&sync_cond);
|
||||
pthread_mutex_destroy(&sync_mutex);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef EXMIMO
|
||||
printf("stopping card\n");
|
||||
|
||||
Reference in New Issue
Block a user