Commit c0950c55 authored by Florian Kaltenberger's avatar Florian Kaltenberger

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
parent 7b6bb640
......@@ -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,22 +655,26 @@ 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
......
......@@ -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;
#endif
int sync_var=-1;
#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);
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,6 +1633,7 @@ static void *UE_thread_synch(void *arg) {
pthread_mutex_lock(&sync_mutex);
printf("Locked sync_mutex, waiting (UE_sync_thread)\n");
while (sync_var<0)
pthread_cond_wait(&sync_cond, &sync_mutex);
pthread_mutex_unlock(&sync_mutex);
printf("unlocked sync_mutex (UE_sync_thread)\n");
......@@ -1814,6 +1814,7 @@ static void *UE_thread_rx(void *arg) {
#else
pthread_mutex_lock(&sync_mutex);
printf("Locked sync_mutex, waiting (UE_thread_rx)\n");
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");
......@@ -1906,6 +1907,7 @@ static void *UE_thread(void *arg) {
#else
pthread_mutex_lock(&sync_mutex);
printf("Locked sync_mutex, waiting (UE_thread)\n");
while (sync_var<0)
pthread_cond_wait(&sync_cond, &sync_mutex);
pthread_mutex_unlock(&sync_mutex);
printf("unlocked sync_mutex, waiting (UE_thread)\n");
......@@ -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");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment