remove compilation warnings, especially when disabling T_TRACER. enhance LOG_M macro implementation, introduce LOG_DEBUG_XXX macro to replace #ifdef DEBUG_XXX
This commit is contained in:
@@ -1214,7 +1214,7 @@ set(PHY_MEX_UE
|
||||
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation_avx2.c
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/signal_energy.c
|
||||
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_ue_measurements.c
|
||||
${OPENAIR2_DIR}/UTIL/LOG/log.c
|
||||
${OPENAIR_DIR}/common/utils/LOG/log.c
|
||||
)
|
||||
add_library(PHY_MEX ${PHY_MEX_UE})
|
||||
|
||||
|
||||
@@ -508,7 +508,9 @@ function main() {
|
||||
lte_exec=lte-uesoftmodem
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$T_TRACER" = "False" ] ; then
|
||||
lte_build_dir=${lte_build_dir}_noLOG
|
||||
fi
|
||||
# configuration module libraries, one currently available, using libconfig
|
||||
config_libconfig_shlib=params_libconfig
|
||||
|
||||
|
||||
+16
-13
@@ -71,8 +71,11 @@ mapping log_options[] = {
|
||||
|
||||
|
||||
mapping log_maskmap[] = {
|
||||
{"prach", DEBUG_PRACH},
|
||||
{"RU", DEBUG_RU},
|
||||
{"prach", DEBUG_PRACH},
|
||||
{"RU", DEBUG_RU},
|
||||
{"ctrlsocket", DEBUG_CTRLSOCKET},
|
||||
{"UE_PHYPROC", DEBUG_UE_PHYPROC},
|
||||
{"UE_TIMING", UE_TIMING},
|
||||
{NULL,-1}
|
||||
};
|
||||
|
||||
@@ -377,7 +380,6 @@ int logInit (void)
|
||||
register_log_component("RLC","log",RLC);
|
||||
register_log_component("PDCP","log",PDCP);
|
||||
register_log_component("RRC","log",RRC);
|
||||
register_log_component("EMU","log",EMU);
|
||||
register_log_component("OMG","csv",OMG);
|
||||
register_log_component("OTG","log",OTG);
|
||||
register_log_component("OTG_LATENCY","dat",OTG_LATENCY);
|
||||
@@ -399,7 +401,7 @@ int logInit (void)
|
||||
register_log_component("FLEXRAN_AGENT","log",FLEXRAN_AGENT);
|
||||
register_log_component("TMR","",TMR);
|
||||
register_log_component("USIM","txt",USIM);
|
||||
|
||||
register_log_component("SIM","txt",SIM);
|
||||
|
||||
/* following log component are used for the localization*/
|
||||
register_log_component("LOCALIZE","log",LOCALIZE);
|
||||
@@ -465,14 +467,15 @@ int logInit (void)
|
||||
|
||||
|
||||
|
||||
char *log_getthreadname(char *threadname) {
|
||||
|
||||
if (pthread_getname_np(pthread_self(), threadname, sizeof(threadname)) != 0)
|
||||
{
|
||||
return "thread?";
|
||||
} else {
|
||||
return threadname;
|
||||
}
|
||||
char *log_getthreadname(char *threadname, int bufsize) {
|
||||
|
||||
int rt = pthread_getname_np(pthread_self(), threadname,bufsize) ;
|
||||
if (rt == 0)
|
||||
{
|
||||
return threadname;
|
||||
} else {
|
||||
return "thread?";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -495,7 +498,7 @@ void logRecord_mt(const char *file, const char *func, int line, int comp, int le
|
||||
( (g_log->flag & FLAG_NOCOLOR)?"":log_level_highlight_start[level]),
|
||||
g_log->log_component[comp].name,
|
||||
( (g_log->flag & FLAG_LEVEL)?g_log->level2string[level]:""),
|
||||
( (g_log->flag & FLAG_THREAD)?log_getthreadname(threadname):""),
|
||||
( (g_log->flag & FLAG_THREAD)?log_getthreadname(threadname,PR_SET_NAME+1):""),
|
||||
format);
|
||||
|
||||
g_log->log_component[comp].fwrite(g_log->log_component[comp].stream,log_buffer, args);
|
||||
|
||||
+13
-3
@@ -131,8 +131,11 @@ extern "C" {
|
||||
* it allows to dynamically activate or not blocks of code
|
||||
* @brief
|
||||
* @{*/
|
||||
#define DEBUG_PRACH (1<<0)
|
||||
#define DEBUG_RU (1<<1)
|
||||
#define DEBUG_PRACH (1<<0)
|
||||
#define DEBUG_RU (1<<1)
|
||||
#define DEBUG_UE_PHYPROC (1<<2)
|
||||
#define DEBUG_CTRLSOCKET (1<<10)
|
||||
#define UE_TIMING (1<<20)
|
||||
|
||||
#define SET_LOG_DEBUG(O) g_log->debug_mask = (g_log->debug_mask | O)
|
||||
#define CLEAR_LOG_DEBUG(O) g_log->debug_mask = (g_log->debug_mask & (~O))
|
||||
@@ -340,6 +343,8 @@ int32_t write_file_matlab(const char *fname, const char *vname, void *data, int
|
||||
# define LOG_M_BEGIN(D) if (g_log->matlab_mask & D) {
|
||||
# define LOG_M_END }
|
||||
# define LOG_M(file, vector, data, len, dec, format) do { write_file_matlab(file, vector, data, len, dec, format);} while(0)/* */
|
||||
/* define variable only used in LOG macro's */
|
||||
# define LOG_VAR(A,B) A B
|
||||
# else /* T_TRACER: remove all debugging and tracing messages, except errors */
|
||||
# define LOG_I(c, x...) /* */
|
||||
# define LOG_W(c, x...) /* */
|
||||
@@ -353,10 +358,15 @@ int32_t write_file_matlab(const char *fname, const char *vname, void *data, int
|
||||
# define LOG_M_BEGIN(D) if (0) {
|
||||
# define LOG_M_END }
|
||||
# define LOG_M(file, vector, data, len, dec, format)
|
||||
|
||||
# define LOG_VAR(A,B)
|
||||
# endif /* T_TRACER */
|
||||
/* avoid warnings for variables only used in LOG macro's but set outside debug section */
|
||||
#define LOG_USEDINLOG_VAR(A,B) __attribute__((unused)) A B
|
||||
|
||||
/* unfiltered macros, usefull for simulators or messages at init time, before log is configured */
|
||||
#define LOG_UM(file, vector, data, len, dec, format) do { write_file_matlab(file, vector, data, len, dec, format);} while(0)
|
||||
|
||||
#define LOG_UI(c, x...) do {logRecord_mt(__FILE__, __FUNCTION__, __LINE__,c, OAILOG_INFO, x) ; } while(0)
|
||||
/* @}*/
|
||||
|
||||
|
||||
|
||||
@@ -361,7 +361,7 @@ int s = sscanf(buf,"%ms %i-%i\n",&logsubcmd, &idx1,&idx2);
|
||||
int l;
|
||||
int optbit;
|
||||
|
||||
l=sscanf(logsubcmd,"%m[^'_']_%m[^'_']",&logparam,&opt);
|
||||
l=sscanf(logsubcmd,"%m[^'_']_%ms",&logparam,&opt);
|
||||
if (l == 2 && strcmp(logparam,"print") == 0){
|
||||
optbit=map_str_to_int(log_options,opt);
|
||||
if (optbit < 0) {
|
||||
|
||||
@@ -193,24 +193,25 @@ typedef struct {
|
||||
static pnf_info pnf;
|
||||
static pthread_t pnf_start_pthread;
|
||||
|
||||
int nfapitooai_level(int nfapi_level) {
|
||||
switch(nfapi_level) {
|
||||
case NFAPI_TRACE_ERROR:
|
||||
return LOG_ERR;
|
||||
case NFAPI_TRACE_WARN:
|
||||
return LOG_WARNING;
|
||||
case NFAPI_TRACE_NOTE:
|
||||
return LOG_INFO;
|
||||
case NFAPI_TRACE_INFO:
|
||||
return LOG_DEBUG;
|
||||
}
|
||||
return LOG_ERR;
|
||||
}
|
||||
|
||||
void pnf_nfapi_trace(nfapi_trace_level_t nfapi_level, const char* message, ...) {
|
||||
va_list args;
|
||||
int oai_level;
|
||||
|
||||
if (nfapi_level==NFAPI_TRACE_ERROR) {
|
||||
oai_level = LOG_ERR;
|
||||
} else if (nfapi_level==NFAPI_TRACE_WARN) {
|
||||
oai_level = LOG_WARNING;
|
||||
} else if (nfapi_level==NFAPI_TRACE_NOTE) {
|
||||
oai_level = LOG_INFO;
|
||||
} else if (nfapi_level==NFAPI_TRACE_INFO) {
|
||||
oai_level = LOG_DEBUG;
|
||||
} else {
|
||||
oai_level = LOG_ERR;
|
||||
}
|
||||
|
||||
va_start(args, message);
|
||||
nfapi_log("FILE>", "FUNC", 999, PHY, oai_level, message, args);
|
||||
nfapi_log("FILE>", "FUNC", 999, PHY, nfapitooai_level(nfapi_level), message, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
|
||||
@@ -684,31 +684,9 @@ void vnf_deallocate(void* ptr) {
|
||||
void vnf_trace(nfapi_trace_level_t nfapi_level, const char* message, ...) {
|
||||
|
||||
va_list args;
|
||||
int oai_level;
|
||||
|
||||
if (nfapi_level==NFAPI_TRACE_ERROR)
|
||||
{
|
||||
oai_level = LOG_ERR;
|
||||
}
|
||||
else if (nfapi_level==NFAPI_TRACE_WARN)
|
||||
{
|
||||
oai_level = LOG_WARNING;
|
||||
}
|
||||
else if (nfapi_level==NFAPI_TRACE_NOTE)
|
||||
{
|
||||
oai_level = LOG_INFO;
|
||||
}
|
||||
else if (nfapi_level==NFAPI_TRACE_INFO)
|
||||
{
|
||||
oai_level = LOG_INFO;
|
||||
}
|
||||
else
|
||||
{
|
||||
oai_level = LOG_INFO;
|
||||
}
|
||||
|
||||
va_start(args, message);
|
||||
nfapi_log("FILE>", "FUNC", 999, PHY, oai_level, message, args);
|
||||
nfapi_log("FILE>", "FUNC", 999, PHY, nfapitooai_level(nfapi_level), message, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ extern "C" {
|
||||
// todo : move to public_inc so can be used by vendor extensions
|
||||
|
||||
#define MAX_BAD_TAG 3
|
||||
|
||||
int nfapitooai_level(int nfapilevel);
|
||||
uint8_t push8(uint8_t in, uint8_t **out, uint8_t *end);
|
||||
uint8_t pushs8(int8_t in, uint8_t **out, uint8_t *end);
|
||||
uint8_t push16(uint16_t in, uint8_t **out, uint8_t *end);
|
||||
|
||||
@@ -712,12 +712,10 @@ void generate_phich_top(PHY_VARS_eNB *eNB,
|
||||
|
||||
LTE_DL_FRAME_PARMS *frame_parms=&eNB->frame_parms;
|
||||
int32_t **txdataF = eNB->common_vars.txdataF;
|
||||
uint8_t harq_pid;
|
||||
uint8_t Ngroup_PHICH,ngroup_PHICH,nseq_PHICH;
|
||||
uint8_t NSF_PHICH = 4;
|
||||
uint8_t pusch_subframe;
|
||||
uint8_t i;
|
||||
uint32_t pusch_frame;
|
||||
int subframe = proc->subframe_tx;
|
||||
phich_config_t *phich;
|
||||
|
||||
@@ -732,9 +730,7 @@ void generate_phich_top(PHY_VARS_eNB *eNB,
|
||||
NSF_PHICH = 2;
|
||||
|
||||
if (eNB->phich_vars[subframe&1].num_hi > 0) {
|
||||
pusch_frame = phich_frame2_pusch_frame(frame_parms,proc->frame_tx,subframe);
|
||||
pusch_subframe = phich_subframe2_pusch_subframe(frame_parms,subframe);
|
||||
harq_pid = subframe2harq_pid(frame_parms,pusch_frame,pusch_subframe);
|
||||
}
|
||||
|
||||
for (i=0; i<eNB->phich_vars[subframe&1].num_hi; i++) {
|
||||
@@ -753,13 +749,15 @@ void generate_phich_top(PHY_VARS_eNB *eNB,
|
||||
nseq_PHICH = ((phich->first_rb/Ngroup_PHICH) +
|
||||
phich->n_DMRS)%(2*NSF_PHICH);
|
||||
LOG_D(PHY,"[eNB %d][PUSCH %d] Frame %d subframe %d Generating PHICH, AMP %d ngroup_PHICH %d/%d, nseq_PHICH %d : HI %d, first_rb %d)\n",
|
||||
eNB->Mod_id,harq_pid,proc->frame_tx,
|
||||
eNB->Mod_id,subframe2harq_pid(frame_parms,
|
||||
phich_frame2_pusch_frame(frame_parms,proc->frame_tx,subframe),pusch_subframe),proc->frame_tx,
|
||||
subframe,amp,ngroup_PHICH,Ngroup_PHICH,nseq_PHICH,
|
||||
phich->hi,
|
||||
phich->first_rb);
|
||||
|
||||
T(T_ENB_PHY_PHICH, T_INT(eNB->Mod_id), T_INT(proc->frame_tx), T_INT(subframe),
|
||||
T_INT(-1 /* TODO: rnti */), T_INT(harq_pid),
|
||||
T_INT(-1 /* TODO: rnti */),
|
||||
T_INT(subframe2harq_pid(frame_parms,phich_frame2_pusch_frame(frame_parms,proc->frame_tx,subframe),pusch_subframe)),
|
||||
T_INT(Ngroup_PHICH), T_INT(NSF_PHICH),
|
||||
T_INT(ngroup_PHICH), T_INT(nseq_PHICH),
|
||||
T_INT(phich->hi),
|
||||
|
||||
@@ -208,19 +208,21 @@ LOG_M_BEGIN(PRACH)
|
||||
int32_t en0=signal_energy((int32_t*)prach[aa],fp->samples_per_tti);
|
||||
int8_t dbEn0 = dB_fixed(en0);
|
||||
int8_t rach_dBm = dbEn0 - ru->rx_total_gain_dB;
|
||||
char buffer[80];
|
||||
if (dbEn0>32 && prach[0]!= NULL)
|
||||
{
|
||||
static int counter=0;
|
||||
|
||||
char buffer[80];
|
||||
//counter++;
|
||||
sprintf(buffer, "%s%d", "/tmp/prach_rx",counter);
|
||||
LOG_M(buffer,"prach_rx",prach[0],fp->samples_per_tti,1,13);
|
||||
}
|
||||
if (dB_fixed(en0)>32)
|
||||
{
|
||||
sprintf(buffer, "rach_dBm:%d",rach_dBm);
|
||||
if (prach[0]!= NULL) LOG_M("prach_rx","prach_rx",prach[0],fp->samples_per_tti,1,1);
|
||||
LOG_I(PHY,"RU %d, br_flag %d ce_level %d frame %d subframe %d per_tti:%d prach:%p (energy %d) TA:%d rach_dBm:%d rxdata:%p index:%d\n",ru->idx,br_flag,ce_level,ru->proc.frame_prach,subframe,fp->samples_per_tti,prach[aa],dbEn0,ru->N_TA_offset,rach_dBm,ru->common.rxdata[aa], (subframe*fp->samples_per_tti)-ru->N_TA_offset);
|
||||
LOG_I(PHY,"RU %d, br_flag %d ce_level %d frame %d subframe %d per_tti:%d prach:%p (energy %d) TA:%d %s rxdata:%p index:%d\n",
|
||||
ru->idx,br_flag,ce_level,ru->proc.frame_prach,subframe,fp->samples_per_tti,
|
||||
prach[aa],dbEn0,ru->N_TA_offset,buffer,ru->common.rxdata[aa],
|
||||
(subframe*fp->samples_per_tti)-ru->N_TA_offset);
|
||||
}
|
||||
LOG_M_END
|
||||
}
|
||||
|
||||
@@ -1350,70 +1350,70 @@ void rx_ulsch_emul(PHY_VARS_eNB *eNB,
|
||||
eNB->ulsch[UE_id]->harq_processes[harq_pid]->Nsymb_pusch);
|
||||
sprintf(fname,"/tmp/ulsch_r%d_d",round);
|
||||
sprintf(vname,"/tmp/ulsch_r%d_dseq",round);
|
||||
LOG_M(fname,vname,&eNB->ulsch[UE_id]->harq_processes[harq_pid]->d[0][96],
|
||||
LOG_UM(fname,vname,&eNB->ulsch[UE_id]->harq_processes[harq_pid]->d[0][96],
|
||||
eNB->ulsch[UE_id]->harq_processes[harq_pid]->Kplus*3,1,0);
|
||||
if (eNB->common_vars.rxdata) {
|
||||
sprintf(fname,"/tmp/rxsig0_r%d.m",round);
|
||||
sprintf(vname,"rxs0_r%d",round);
|
||||
LOG_M(fname,vname, &eNB->common_vars.rxdata[0][0],eNB->frame_parms.samples_per_tti*10,1,1);
|
||||
LOG_UM(fname,vname, &eNB->common_vars.rxdata[0][0],eNB->frame_parms.samples_per_tti*10,1,1);
|
||||
|
||||
if (eNB->frame_parms.nb_antennas_rx>1)
|
||||
if (eNB->common_vars.rxdata) {
|
||||
sprintf(fname,"/tmp/rxsig1_r%d.m",round);
|
||||
sprintf(vname,"rxs1_r%d",round);
|
||||
LOG_M(fname,vname, &eNB->common_vars.rxdata[1][0],eNB->frame_parms.samples_per_tti*10,1,1);
|
||||
LOG_UM(fname,vname, &eNB->common_vars.rxdata[1][0],eNB->frame_parms.samples_per_tti*10,1,1);
|
||||
}
|
||||
}
|
||||
|
||||
sprintf(fname,"/tmp/rxsigF0_r%d.m",round);
|
||||
sprintf(vname,"rxsF0_r%d",round);
|
||||
LOG_M(fname,vname, (void*)&eNB->common_vars.rxdataF[0][0],eNB->frame_parms.ofdm_symbol_size*nsymb,1,1);
|
||||
LOG_UM(fname,vname, (void*)&eNB->common_vars.rxdataF[0][0],eNB->frame_parms.ofdm_symbol_size*nsymb,1,1);
|
||||
|
||||
if (eNB->frame_parms.nb_antennas_rx>1) {
|
||||
sprintf(fname,"/tmp/rxsigF1_r%d.m",round);
|
||||
sprintf(vname,"rxsF1_r%d",round);
|
||||
LOG_M(vname,fname, &eNB->common_vars.rxdataF[1][0],eNB->frame_parms.ofdm_symbol_size*nsymb,1,1);
|
||||
LOG_UM(vname,fname, &eNB->common_vars.rxdataF[1][0],eNB->frame_parms.ofdm_symbol_size*nsymb,1,1);
|
||||
}
|
||||
|
||||
sprintf(fname,"/tmp/rxsigF0_ext_r%d.m",round);
|
||||
sprintf(vname,"rxsF0_ext_r%d",round);
|
||||
LOG_M(fname,vname, &eNB->pusch_vars[UE_id]->rxdataF_ext[0][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
|
||||
LOG_UM(fname,vname, &eNB->pusch_vars[UE_id]->rxdataF_ext[0][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
|
||||
|
||||
if (eNB->frame_parms.nb_antennas_rx>1) {
|
||||
sprintf(fname,"/tmp/rxsigF1_ext_r%d.m",round);
|
||||
sprintf(vname,"rxsF1_ext_r%d",round);
|
||||
LOG_M(fname,vname,&eNB->pusch_vars[UE_id]->rxdataF_ext[1][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
|
||||
LOG_UM(fname,vname,&eNB->pusch_vars[UE_id]->rxdataF_ext[1][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
|
||||
}
|
||||
/*
|
||||
if (eNB->srs_vars[UE_id].srs_ch_estimates) LOG_M("/tmp/srs_est0.m","srsest0",eNB->srs_vars[UE_id].srs_ch_estimates[0],eNB->frame_parms.ofdm_symbol_size,1,1);
|
||||
if (eNB->srs_vars[UE_id].srs_ch_estimates) LOG_UM("/tmp/srs_est0.m","srsest0",eNB->srs_vars[UE_id].srs_ch_estimates[0],eNB->frame_parms.ofdm_symbol_size,1,1);
|
||||
|
||||
if (eNB->frame_parms.nb_antennas_rx>1)
|
||||
if (eNB->srs_vars[UE_id].srs_ch_estimates) LOG_M("/tmp/srs_est1.m","srsest1",eNB->srs_vars[UE_id].srs_ch_estimates[1],eNB->frame_parms.ofdm_symbol_size,1,1);
|
||||
if (eNB->srs_vars[UE_id].srs_ch_estimates) LOG_UM("/tmp/srs_est1.m","srsest1",eNB->srs_vars[UE_id].srs_ch_estimates[1],eNB->frame_parms.ofdm_symbol_size,1,1);
|
||||
*/
|
||||
|
||||
sprintf(fname,"/tmp/drs_est0_r%d.m",round);
|
||||
sprintf(vname,"drsest0_r%d",round);
|
||||
LOG_M(fname,vname,eNB->pusch_vars[UE_id]->drs_ch_estimates[0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
|
||||
LOG_UM(fname,vname,eNB->pusch_vars[UE_id]->drs_ch_estimates[0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
|
||||
|
||||
if (eNB->frame_parms.nb_antennas_rx>1) {
|
||||
sprintf(fname,"/tmp/drs_est1_r%d.m",round);
|
||||
sprintf(vname,"drsest1_r%d",round);
|
||||
LOG_M(fname,vname,eNB->pusch_vars[UE_id]->drs_ch_estimates[1],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
|
||||
LOG_UM(fname,vname,eNB->pusch_vars[UE_id]->drs_ch_estimates[1],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
|
||||
}
|
||||
|
||||
sprintf(fname,"/tmp/ulsch0_rxF_comp0_r%d.m",round);
|
||||
sprintf(vname,"ulsch0_rxF_comp0_r%d",round);
|
||||
LOG_M(fname,vname,&eNB->pusch_vars[UE_id]->rxdataF_comp[0][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
|
||||
LOG_UM(fname,vname,&eNB->pusch_vars[UE_id]->rxdataF_comp[0][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
|
||||
// LOG_M("ulsch_rxF_comp1.m","ulsch0_rxF_comp1",&eNB->pusch_vars[UE_id]->rxdataF_comp[0][1][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
|
||||
sprintf(fname,"/tmp/ulsch_rxF_llr_r%d.m",round);
|
||||
sprintf(vname,"ulsch_llr_r%d",round);
|
||||
LOG_M(fname,vname,eNB->pusch_vars[UE_id]->llr,
|
||||
LOG_UM(fname,vname,eNB->pusch_vars[UE_id]->llr,
|
||||
eNB->ulsch[UE_id]->harq_processes[harq_pid]->nb_rb*12*eNB->ulsch[UE_id]->harq_processes[harq_pid]->Qm
|
||||
*eNB->ulsch[UE_id]->harq_processes[harq_pid]->Nsymb_pusch,1,0);
|
||||
sprintf(fname,"/tmp/ulsch_ch_mag_r%d.m",round);
|
||||
sprintf(vname,"ulsch_ch_mag_r%d",round);
|
||||
LOG_M(fname,vname,&eNB->pusch_vars[UE_id]->ul_ch_mag[0][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
|
||||
// LOG_M("ulsch_ch_mag1.m","ulsch_ch_mag1",&eNB->pusch_vars[UE_id]->ul_ch_mag[1][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
|
||||
LOG_UM(fname,vname,&eNB->pusch_vars[UE_id]->ul_ch_mag[0][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
|
||||
// LOG_UM("ulsch_ch_mag1.m","ulsch_ch_mag1",&eNB->pusch_vars[UE_id]->ul_ch_mag[1][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
|
||||
//#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -3950,15 +3950,11 @@ void dlsch_channel_level_median(int **dl_ch_estimates_ext,
|
||||
|
||||
short ii;
|
||||
int aatx,aarx;
|
||||
int length_mod4;
|
||||
int length2;
|
||||
int max = 0, min=0;
|
||||
int norm_pack;
|
||||
__m128i *dl_ch128, norm128D;
|
||||
|
||||
int16_t x = factor2(length);
|
||||
int16_t y = (length)>>x;
|
||||
|
||||
for (aatx=0; aatx<n_tx; aatx++){
|
||||
for (aarx=0; aarx<n_rx; aarx++) {
|
||||
max = 0;
|
||||
@@ -3967,8 +3963,6 @@ void dlsch_channel_level_median(int **dl_ch_estimates_ext,
|
||||
|
||||
dl_ch128=(__m128i *)&dl_ch_estimates_ext[aatx*2 + aarx][start_point];
|
||||
|
||||
length_mod4=length&3;
|
||||
|
||||
length2 = length>>2;
|
||||
|
||||
for (ii=0;ii<length2;ii++) {
|
||||
@@ -3981,7 +3975,7 @@ void dlsch_channel_level_median(int **dl_ch_estimates_ext,
|
||||
((int32_t*)&norm128D)[3];
|
||||
|
||||
if (ii<1){
|
||||
print_ints("norm128D",&norm128D[0]);
|
||||
// print_ints("norm128D",&norm128D[0]);
|
||||
printf("norm_pack[%d] %d\n", aatx*n_rx + aarx, norm_pack);
|
||||
}
|
||||
|
||||
@@ -6921,79 +6915,90 @@ unsigned short dlsch_extract_rbs_TM7(int **rxdataF,
|
||||
|
||||
void dump_dlsch2(PHY_VARS_UE *ue,uint8_t eNB_id,uint8_t subframe,unsigned int *coded_bits_per_codeword,int round, unsigned char harq_pid)
|
||||
{
|
||||
unsigned int nsymb = (ue->frame_parms.Ncp == 0) ? 14 : 12;
|
||||
#define NSYMB ((ue->frame_parms.Ncp == 0) ? 14 : 12)
|
||||
char fname[32],vname[32];
|
||||
int N_RB_DL=ue->frame_parms.N_RB_DL;
|
||||
|
||||
sprintf(fname,"dlsch%d_rxF_r%d_ext0.m",eNB_id,round);
|
||||
sprintf(vname,"dl%d_rxF_r%d_ext0",eNB_id,round);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->rxdataF_ext[0],12*N_RB_DL*nsymb,1,1);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->rxdataF_ext[0],
|
||||
12*(ue->frame_parms.N_RB_DL)*NSYMB,1,1);
|
||||
|
||||
if (ue->frame_parms.nb_antennas_rx >1) {
|
||||
sprintf(fname,"dlsch%d_rxF_r%d_ext1.m",eNB_id,round);
|
||||
sprintf(vname,"dl%d_rxF_r%d_ext1",eNB_id,round);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->rxdataF_ext[1],12*N_RB_DL*nsymb,1,1);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->rxdataF_ext[1],
|
||||
12*(ue->frame_parms.N_RB_DL)*NSYMB,1,1);
|
||||
}
|
||||
|
||||
sprintf(fname,"dlsch%d_ch_r%d_ext00.m",eNB_id,round);
|
||||
sprintf(vname,"dl%d_ch_r%d_ext00",eNB_id,round);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_estimates_ext[0],12*N_RB_DL*nsymb,1,1);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_estimates_ext[0],
|
||||
12*(ue->frame_parms.N_RB_DL)*NSYMB,1,1);
|
||||
|
||||
if (ue->transmission_mode[eNB_id]==7){
|
||||
sprintf(fname,"dlsch%d_bf_ch_r%d.m",eNB_id,round);
|
||||
sprintf(vname,"dl%d_bf_ch_r%d",eNB_id,round);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_bf_ch_estimates[0],512*nsymb,1,1);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_bf_ch_estimates[0],512*NSYMB,1,1);
|
||||
//LOG_M(fname,vname,phy_vars_ue->lte_ue_pdsch_vars[eNB_id]->dl_bf_ch_estimates[0],512,1,1);
|
||||
|
||||
sprintf(fname,"dlsch%d_bf_ch_r%d_ext00.m",eNB_id,round);
|
||||
sprintf(vname,"dl%d_bf_ch_r%d_ext00",eNB_id,round);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_bf_ch_estimates_ext[0],12*N_RB_DL*nsymb,1,1);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_bf_ch_estimates_ext[0],
|
||||
12*(ue->frame_parms.N_RB_DL)*NSYMB,1,1);
|
||||
}
|
||||
|
||||
if (ue->frame_parms.nb_antennas_rx == 2) {
|
||||
sprintf(fname,"dlsch%d_ch_r%d_ext01.m",eNB_id,round);
|
||||
sprintf(vname,"dl%d_ch_r%d_ext01",eNB_id,round);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_estimates_ext[1],12*N_RB_DL*nsymb,1,1);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_estimates_ext[1],
|
||||
12*(ue->frame_parms.N_RB_DL)*NSYMB,1,1);
|
||||
}
|
||||
|
||||
if (ue->frame_parms.nb_antenna_ports_eNB == 2) {
|
||||
sprintf(fname,"dlsch%d_ch_r%d_ext10.m",eNB_id,round);
|
||||
sprintf(vname,"dl%d_ch_r%d_ext10",eNB_id,round);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_estimates_ext[2],12*N_RB_DL*nsymb,1,1);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_estimates_ext[2],
|
||||
12*(ue->frame_parms.N_RB_DL)*NSYMB,1,1);
|
||||
|
||||
if (ue->frame_parms.nb_antennas_rx == 2) {
|
||||
sprintf(fname,"dlsch%d_ch_r%d_ext11.m",eNB_id,round);
|
||||
sprintf(vname,"dl%d_ch_r%d_ext11",eNB_id,round);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_estimates_ext[3],12*N_RB_DL*nsymb,1,1);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_estimates_ext[3],
|
||||
12*(ue->frame_parms.N_RB_DL)*NSYMB,1,1);
|
||||
}
|
||||
}
|
||||
|
||||
sprintf(fname,"dlsch%d_rxF_r%d_uespec0.m",eNB_id,round);
|
||||
sprintf(vname,"dl%d_rxF_r%d_uespec0",eNB_id,round);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->rxdataF_uespec_pilots[0],12*N_RB_DL,1,1);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->rxdataF_uespec_pilots[0],
|
||||
12*(ue->frame_parms.N_RB_DL)*NSYMB,1,1);
|
||||
|
||||
/*
|
||||
LOG_M("dlsch%d_ch_ext01.m","dl01_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[1],12*N_RB_DL*nsymb,1,1);
|
||||
LOG_M("dlsch%d_ch_ext10.m","dl10_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[2],12*N_RB_DL*nsymb,1,1);
|
||||
LOG_M("dlsch%d_ch_ext11.m","dl11_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[3],12*N_RB_DL*nsymb,1,1);
|
||||
LOG_M("dlsch%d_ch_ext01.m","dl01_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[1],12*N_RB_DL*NSYMB,1,1);
|
||||
LOG_M("dlsch%d_ch_ext10.m","dl10_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[2],12*N_RB_DL*NSYMB,1,1);
|
||||
LOG_M("dlsch%d_ch_ext11.m","dl11_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[3],12*N_RB_DL*NSYMB,1,1);
|
||||
*/
|
||||
sprintf(fname,"dlsch%d_r%d_rho.m",eNB_id,round);
|
||||
sprintf(vname,"dl_rho_r%d_%d",eNB_id,round);
|
||||
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_rho_ext[harq_pid][round][0],12*N_RB_DL*nsymb,1,1);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_rho_ext[harq_pid][round][0],
|
||||
12*(ue->frame_parms.N_RB_DL)*NSYMB,1,1);
|
||||
|
||||
sprintf(fname,"dlsch%d_r%d_rho2.m",eNB_id,round);
|
||||
sprintf(vname,"dl_rho2_r%d_%d",eNB_id,round);
|
||||
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_rho2_ext[0],12*N_RB_DL*nsymb,1,1);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_rho2_ext[0],
|
||||
12*(ue->frame_parms.N_RB_DL)*NSYMB,1,1);
|
||||
|
||||
sprintf(fname,"dlsch%d_rxF_r%d_comp0.m",eNB_id,round);
|
||||
sprintf(vname,"dl%d_rxF_r%d_comp0",eNB_id,round);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->rxdataF_comp0[0],12*N_RB_DL*nsymb,1,1);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->rxdataF_comp0[0],
|
||||
12*(ue->frame_parms.N_RB_DL)*NSYMB,1,1);
|
||||
if (ue->frame_parms.nb_antenna_ports_eNB == 2) {
|
||||
sprintf(fname,"dlsch%d_rxF_r%d_comp1.m",eNB_id,round);
|
||||
sprintf(vname,"dl%d_rxF_r%d_comp1",eNB_id,round);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->rxdataF_comp1[harq_pid][round][0],12*N_RB_DL*nsymb,1,1);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->rxdataF_comp1[harq_pid][round][0],
|
||||
12*(ue->frame_parms.N_RB_DL)*NSYMB,1,1);
|
||||
}
|
||||
|
||||
sprintf(fname,"dlsch%d_rxF_r%d_llr.m",eNB_id,round);
|
||||
@@ -7001,52 +7006,13 @@ void dump_dlsch2(PHY_VARS_UE *ue,uint8_t eNB_id,uint8_t subframe,unsigned int *c
|
||||
LOG_M(fname,vname, ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->llr[0],coded_bits_per_codeword[0],1,0);
|
||||
sprintf(fname,"dlsch%d_r%d_mag1.m",eNB_id,round);
|
||||
sprintf(vname,"dl%d_r%d_mag1",eNB_id,round);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_mag0[0],12*N_RB_DL*nsymb,1,1);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_mag0[0],
|
||||
12*(ue->frame_parms.N_RB_DL)*NSYMB,1,1);
|
||||
sprintf(fname,"dlsch%d_r%d_mag2.m",eNB_id,round);
|
||||
sprintf(vname,"dl%d_r%d_mag2",eNB_id,round);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_magb0[0],12*N_RB_DL*nsymb,1,1);
|
||||
|
||||
// printf("log2_maxh = %d\n",ue->pdsch_vars[eNB_id]->log2_maxh);
|
||||
}
|
||||
|
||||
#ifdef DEBUG_DLSCH_DEMOD
|
||||
/*
|
||||
void print_bytes(char *s,__m128i *x)
|
||||
{
|
||||
|
||||
char *tempb = (char *)x;
|
||||
|
||||
printf("%s : %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",s,
|
||||
tempb[0],tempb[1],tempb[2],tempb[3],tempb[4],tempb[5],tempb[6],tempb[7],
|
||||
tempb[8],tempb[9],tempb[10],tempb[11],tempb[12],tempb[13],tempb[14],tempb[15]
|
||||
);
|
||||
LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_magb0[0],
|
||||
12*(ue->frame_parms.N_RB_DL)*NSYMB,1,1);
|
||||
|
||||
}
|
||||
|
||||
void print_shorts(char *s,__m128i *x)
|
||||
{
|
||||
|
||||
short *tempb = (short *)x;
|
||||
printf("%s : %d,%d,%d,%d,%d,%d,%d,%d\n",s,
|
||||
tempb[0],tempb[1],tempb[2],tempb[3],tempb[4],tempb[5],tempb[6],tempb[7]);
|
||||
|
||||
}
|
||||
|
||||
void print_shorts2(char *s,__m64 *x)
|
||||
{
|
||||
|
||||
short *tempb = (short *)x;
|
||||
printf("%s : %d,%d,%d,%d\n",s,
|
||||
tempb[0],tempb[1],tempb[2],tempb[3]);
|
||||
|
||||
}
|
||||
|
||||
void print_ints(char *s,__m128i *x)
|
||||
{
|
||||
|
||||
int *tempb = (int *)x;
|
||||
printf("%s : %d,%d,%d,%d\n",s,
|
||||
tempb[0],tempb[1],tempb[2],tempb[3]);
|
||||
|
||||
}*/
|
||||
#endif
|
||||
|
||||
@@ -43,34 +43,32 @@
|
||||
void dump_mch(PHY_VARS_UE *ue,uint8_t eNB_id,uint16_t coded_bits_per_codeword,int subframe)
|
||||
{
|
||||
|
||||
unsigned int nsymb_pmch=12;
|
||||
char fname[32],vname[32];
|
||||
int N_RB_DL=ue->frame_parms.N_RB_DL;
|
||||
|
||||
#define NSYMB_PMCH 12
|
||||
sprintf(fname,"mch_rxF_ext0.m");
|
||||
sprintf(vname,"pmch_rxF_ext0");
|
||||
LOG_M(fname,vname,ue->pdsch_vars_MCH[eNB_id]->rxdataF_ext[0],12*N_RB_DL*nsymb_pmch,1,1);
|
||||
LOG_M(fname,vname,ue->pdsch_vars_MCH[eNB_id]->rxdataF_ext[0],12*(ue->frame_parms.N_RB_DL)*12,1,1);
|
||||
sprintf(fname,"mch_ch_ext00.m");
|
||||
sprintf(vname,"pmch_ch_ext00");
|
||||
LOG_M(fname,vname,ue->pdsch_vars_MCH[eNB_id]->dl_ch_estimates_ext[0],12*N_RB_DL*nsymb_pmch,1,1);
|
||||
LOG_M(fname,vname,ue->pdsch_vars_MCH[eNB_id]->dl_ch_estimates_ext[0],12*(ue->frame_parms.N_RB_DL)*NSYMB_PMCH,1,1);
|
||||
/*
|
||||
LOG_M("dlsch%d_ch_ext01.m","dl01_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[1],12*N_RB_DL*nsymb_pmch,1,1);
|
||||
LOG_M("dlsch%d_ch_ext10.m","dl10_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[2],12*N_RB_DL*nsymb_pmch,1,1);
|
||||
LOG_M("dlsch%d_ch_ext11.m","dl11_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[3],12*N_RB_DL*nsymb_pmch,1,1);
|
||||
LOG_M("dlsch%d_rho.m","dl_rho",pdsch_vars[eNB_id]->rho[0],12*N_RB_DL*nsymb_pmch,1,1);
|
||||
LOG_M("dlsch%d_ch_ext01.m","dl01_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[1],12*N_RB_DL*NSYMB_PMCH,1,1);
|
||||
LOG_M("dlsch%d_ch_ext10.m","dl10_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[2],12*N_RB_DL*NSYMB_PMCH,1,1);
|
||||
LOG_M("dlsch%d_ch_ext11.m","dl11_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[3],12*N_RB_DL*NSYMB_PMCH,1,1);
|
||||
LOG_M("dlsch%d_rho.m","dl_rho",pdsch_vars[eNB_id]->rho[0],12*N_RB_DL*NSYMB_PMCH,1,1);
|
||||
*/
|
||||
sprintf(fname,"mch_rxF_comp0.m");
|
||||
sprintf(vname,"pmch_rxF_comp0");
|
||||
LOG_M(fname,vname,ue->pdsch_vars_MCH[eNB_id]->rxdataF_comp0[0],12*N_RB_DL*nsymb_pmch,1,1);
|
||||
LOG_M(fname,vname,ue->pdsch_vars_MCH[eNB_id]->rxdataF_comp0[0],12*(ue->frame_parms.N_RB_DL)*NSYMB_PMCH,1,1);
|
||||
sprintf(fname,"mch_rxF_llr.m");
|
||||
sprintf(vname,"pmch_llr");
|
||||
LOG_M(fname,vname, ue->pdsch_vars_MCH[eNB_id]->llr[0],coded_bits_per_codeword,1,0);
|
||||
sprintf(fname,"mch_mag1.m");
|
||||
sprintf(vname,"pmch_mag1");
|
||||
LOG_M(fname,vname,ue->pdsch_vars_MCH[eNB_id]->dl_ch_mag0[0],12*N_RB_DL*nsymb_pmch,1,1);
|
||||
LOG_M(fname,vname,ue->pdsch_vars_MCH[eNB_id]->dl_ch_mag0[0],12*(ue->frame_parms.N_RB_DL)*NSYMB_PMCH,1,1);
|
||||
sprintf(fname,"mch_mag2.m");
|
||||
sprintf(vname,"pmch_mag2");
|
||||
LOG_M(fname,vname,ue->pdsch_vars_MCH[eNB_id]->dl_ch_magb0[0],12*N_RB_DL*nsymb_pmch,1,1);
|
||||
LOG_M(fname,vname,ue->pdsch_vars_MCH[eNB_id]->dl_ch_magb0[0],12*(ue->frame_parms.N_RB_DL)*NSYMB_PMCH,1,1);
|
||||
|
||||
LOG_M("mch00_ch0.m","pmch00_ch0",
|
||||
&(ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_id][0][0]),
|
||||
|
||||
@@ -134,7 +134,6 @@ int32_t generate_srs(LTE_DL_FRAME_PARMS *frame_parms,
|
||||
//uint32_t subframe_offset;
|
||||
uint8_t Bsrs = soundingrs_ul_config_dedicated->srs_Bandwidth;
|
||||
uint8_t Csrs = frame_parms->soundingrs_ul_config_common.srs_BandwidthConfig;
|
||||
uint8_t Ssrs = frame_parms->soundingrs_ul_config_common.srs_SubframeConfig;
|
||||
uint8_t n_RRC = soundingrs_ul_config_dedicated->freqDomainPosition;
|
||||
uint8_t kTC = soundingrs_ul_config_dedicated->transmissionComb;
|
||||
|
||||
@@ -144,7 +143,9 @@ int32_t generate_srs(LTE_DL_FRAME_PARMS *frame_parms,
|
||||
uint32_t v=frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.seqhop[1+(subframe<<1)];
|
||||
|
||||
LOG_D(PHY,"SRS root sequence: u %d, v %d\n",u,v);
|
||||
LOG_D(PHY,"CommonSrsConfig: Csrs %d, Ssrs %d, AnSrsSimultan %d \n",Csrs,Ssrs,frame_parms->soundingrs_ul_config_common.ackNackSRS_SimultaneousTransmission);
|
||||
LOG_D(PHY,"CommonSrsConfig: Csrs %d, Ssrs %d, AnSrsSimultan %d \n",Csrs,
|
||||
frame_parms->soundingrs_ul_config_common.srs_SubframeConfig,
|
||||
frame_parms->soundingrs_ul_config_common.ackNackSRS_SimultaneousTransmission);
|
||||
LOG_D(PHY,"DedicatedSrsConfig: Bsrs %d, bhop %d, nRRC %d, Isrs %d, kTC %d, n_SRS %d\n",Bsrs,soundingrs_ul_config_dedicated->srs_HoppingBandwidth,n_RRC
|
||||
,soundingrs_ul_config_dedicated->srs_ConfigIndex,kTC
|
||||
,soundingrs_ul_config_dedicated->cyclicShift);
|
||||
|
||||
@@ -124,14 +124,11 @@ void prach_procedures(PHY_VARS_eNB *eNB
|
||||
#if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
|
||||
if (br_flag==1) {
|
||||
|
||||
int prach_mask;
|
||||
|
||||
prach_mask = is_prach_subframe(&eNB->frame_parms,eNB->proc.frame_prach_br,eNB->proc.subframe_prach_br);
|
||||
|
||||
eNB->UL_INFO.rach_ind_br.rach_indication_body.preamble_list = eNB->preamble_list_br;
|
||||
int ind=0;
|
||||
int ce_level=0;
|
||||
/* Save for later, it doesn't work
|
||||
/* Save for later, it doesn't work
|
||||
int prach_mask = is_prach_subframe(&eNB->frame_parms,eNB->proc.frame_prach_br,eNB->proc.subframe_prach_br);
|
||||
for (int ind=0,ce_level=0;ce_level<4;ce_level++) {
|
||||
|
||||
if ((eNB->frame_parms.prach_emtc_config_common.prach_ConfigInfo.prach_CElevel_enable[ce_level]==1)&&
|
||||
@@ -153,7 +150,7 @@ void prach_procedures(PHY_VARS_eNB *eNB
|
||||
LOG_D(PHY,"Filling NFAPI indication for RACH %d CELevel %d (mask %x) : TA %d, Preamble %d, rnti %x, rach_resource_type %d\n",
|
||||
ind,
|
||||
ce_level,
|
||||
prach_mask,
|
||||
is_prach_subframe(&eNB->frame_parms,eNB->proc.frame_prach_br,eNB->proc.subframe_prach_br),
|
||||
eNB->preamble_list_br[ind].preamble_rel8.timing_advance,
|
||||
eNB->preamble_list_br[ind].preamble_rel8.preamble,
|
||||
eNB->preamble_list_br[ind].preamble_rel8.rnti,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1144,7 +1144,7 @@ int main(int argc, char **argv)
|
||||
else if (mcs < 21) modulation_type = 4;
|
||||
else if (mcs < 29) modulation_type = 6;
|
||||
else {
|
||||
LOG_E(USIM,"mcs %i is not valid\n",mcs);
|
||||
LOG_E(SIM,"mcs %i is not valid\n",mcs);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
@@ -1492,23 +1492,23 @@ int main(int argc, char **argv)
|
||||
|
||||
if (dump_table == 1 ) {
|
||||
int n;
|
||||
set_component_filelog(USIM); // file located in /tmp/usim.txt
|
||||
LOG_F(USIM,"The transmitter raw data: \n");
|
||||
set_component_filelog(SIM); // file located in /tmp/usim.txt
|
||||
LOG_F(SIM,"The transmitter raw data: \n");
|
||||
|
||||
for (n=0; n< time_vector_tx.size; n++) {
|
||||
// printf("%f ", table_tx[n]);
|
||||
LOG_F(USIM,"%f ", table_tx[n]);
|
||||
LOG_F(SIM,"%f ", table_tx[n]);
|
||||
}
|
||||
|
||||
LOG_F(USIM,"\n");
|
||||
LOG_F(USIM,"The receiver raw data: \n");
|
||||
LOG_F(SIM,"\n");
|
||||
LOG_F(SIM,"The receiver raw data: \n");
|
||||
|
||||
for (n=0; n< time_vector_rx.size; n++) {
|
||||
// printf("%f ", table_rx[n]);
|
||||
LOG_F(USIM,"%f ", table_rx[n]);
|
||||
LOG_F(SIM,"%f ", table_rx[n]);
|
||||
}
|
||||
|
||||
LOG_F(USIM,"\n");
|
||||
LOG_F(SIM,"\n");
|
||||
}
|
||||
|
||||
double tx_median = table_tx[time_vector_tx.size/2];
|
||||
|
||||
@@ -35,8 +35,7 @@
|
||||
|
||||
#include "LAYER2/MAC/mac.h"
|
||||
#include "LAYER2/MAC/mac_extern.h"
|
||||
#include "UTIL/LOG/log_if.h"
|
||||
#include "UTIL/LOG/log_extern.h"
|
||||
#include "common/utils/LOG/log.h"
|
||||
#include "RRC/LTE/rrc_extern.h"
|
||||
#include "PHY_INTERFACE/phy_interface_extern.h"
|
||||
#include "UTIL/OCG/OCG.h"
|
||||
@@ -45,10 +44,6 @@
|
||||
#include "UTIL/FIFO/types.h"
|
||||
|
||||
#define RF
|
||||
//#define DEBUG_SIM
|
||||
|
||||
//#undef LOG_D
|
||||
//#define LOG_D(A,B,C...) printf(B,C)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ void flexran_agent_ue_state_change(mid_t mod_id, uint32_t rnti, uint8_t state_ch
|
||||
Protocol__FlexHeader *header = NULL;
|
||||
void *data;
|
||||
int priority = 0;
|
||||
err_code_t err_code;
|
||||
err_code_t err_code=0;
|
||||
|
||||
int xid = 0;
|
||||
|
||||
@@ -241,7 +241,8 @@ void flexran_agent_ue_state_change(mid_t mod_id, uint32_t rnti, uint8_t state_ch
|
||||
LOG_D(FLEXRAN_AGENT,"sent message with size %d\n", size);
|
||||
return;
|
||||
error:
|
||||
LOG_E(FLEXRAN_AGENT, "Could not send UE state message becasue of %d \n",err_code);
|
||||
if (err_code != 0)
|
||||
LOG_E(FLEXRAN_AGENT, "Could not send UE state message becasue of %d \n",err_code);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -113,8 +113,6 @@ static uint32_t eNB_app_register(uint32_t enb_id_start, uint32_t enb_id_end)//,
|
||||
|
||||
for (enb_id = enb_id_start; (enb_id < enb_id_end) ; enb_id++) {
|
||||
{
|
||||
s1ap_register_enb_req_t *s1ap_register_eNB;
|
||||
|
||||
/* note: there is an implicit relationship between the data structure and the message name */
|
||||
msg_p = itti_alloc_new_message (TASK_ENB_APP, S1AP_REGISTER_ENB_REQ);
|
||||
|
||||
@@ -122,8 +120,7 @@ static uint32_t eNB_app_register(uint32_t enb_id_start, uint32_t enb_id_end)//,
|
||||
|
||||
if (enb_id == 0) RCconfig_gtpu();
|
||||
|
||||
s1ap_register_eNB = &S1AP_REGISTER_ENB_REQ(msg_p);
|
||||
LOG_I(ENB_APP,"default drx %d\n",s1ap_register_eNB->default_drx);
|
||||
LOG_I(ENB_APP,"default drx %d\n",((S1AP_REGISTER_ENB_REQ(msg_p)).default_drx));
|
||||
|
||||
LOG_I(ENB_APP,"[eNB %d] eNB_app_register for instance %d\n", enb_id, ENB_MODULE_ID_TO_INSTANCE(enb_id));
|
||||
|
||||
@@ -152,7 +149,6 @@ void *eNB_app_task(void *args_p)
|
||||
# endif
|
||||
uint32_t enb_id;
|
||||
MessageDef *msg_p = NULL;
|
||||
const char *msg_name = NULL;
|
||||
instance_t instance;
|
||||
int result;
|
||||
/* for no gcc warnings */
|
||||
@@ -200,7 +196,6 @@ void *eNB_app_task(void *args_p)
|
||||
// Wait for a message
|
||||
itti_receive_msg (TASK_ENB_APP, &msg_p);
|
||||
|
||||
msg_name = ITTI_MSG_NAME (msg_p);
|
||||
instance = ITTI_MSG_INSTANCE (msg_p);
|
||||
|
||||
switch (ITTI_MSG_ID(msg_p)) {
|
||||
@@ -216,7 +211,7 @@ void *eNB_app_task(void *args_p)
|
||||
# if defined(ENABLE_USE_MME)
|
||||
|
||||
case S1AP_REGISTER_ENB_CNF:
|
||||
LOG_I(ENB_APP, "[eNB %d] Received %s: associated MME %d\n", instance, msg_name,
|
||||
LOG_I(ENB_APP, "[eNB %d] Received %s: associated MME %d\n", instance, ITTI_MSG_NAME (msg_p),
|
||||
S1AP_REGISTER_ENB_CNF(msg_p).nb_mme);
|
||||
|
||||
DevAssert(register_enb_pending > 0);
|
||||
@@ -237,10 +232,8 @@ void *eNB_app_task(void *args_p)
|
||||
itti_send_msg_to_task (TASK_L2L1, INSTANCE_DEFAULT, msg_init_p);
|
||||
|
||||
} else {
|
||||
uint32_t not_associated = enb_nb - registered_enb;
|
||||
|
||||
LOG_W(ENB_APP, " %d eNB %s not associated with a MME, retrying registration in %d seconds ...\n",
|
||||
not_associated, not_associated > 1 ? "are" : "is", ENB_REGISTER_RETRY_DELAY);
|
||||
LOG_W(ENB_APP, " %d eNB not associated with a MME, retrying registration in %d seconds ...\n",
|
||||
enb_nb - registered_enb, ENB_REGISTER_RETRY_DELAY);
|
||||
|
||||
/* Restart the eNB registration process in ENB_REGISTER_RETRY_DELAY seconds */
|
||||
if (timer_setup (ENB_REGISTER_RETRY_DELAY, 0, TASK_ENB_APP, INSTANCE_DEFAULT, TIMER_ONE_SHOT,
|
||||
@@ -258,14 +251,14 @@ void *eNB_app_task(void *args_p)
|
||||
break;
|
||||
|
||||
case S1AP_DEREGISTERED_ENB_IND:
|
||||
LOG_W(ENB_APP, "[eNB %d] Received %s: associated MME %d\n", instance, msg_name,
|
||||
LOG_W(ENB_APP, "[eNB %d] Received %s: associated MME %d\n", instance, ITTI_MSG_NAME (msg_p),
|
||||
S1AP_DEREGISTERED_ENB_IND(msg_p).nb_mme);
|
||||
|
||||
/* TODO handle recovering of registration */
|
||||
break;
|
||||
|
||||
case TIMER_HAS_EXPIRED:
|
||||
LOG_I(ENB_APP, " Received %s: timer_id %ld\n", msg_name, TIMER_HAS_EXPIRED(msg_p).timer_id);
|
||||
LOG_I(ENB_APP, " Received %s: timer_id %ld\n", ITTI_MSG_NAME (msg_p), TIMER_HAS_EXPIRED(msg_p).timer_id);
|
||||
|
||||
if (TIMER_HAS_EXPIRED (msg_p).timer_id == enb_register_retry_timer_id) {
|
||||
/* Restart the registration process */
|
||||
@@ -277,7 +270,7 @@ void *eNB_app_task(void *args_p)
|
||||
# endif
|
||||
|
||||
default:
|
||||
LOG_E(ENB_APP, "Received unexpected message %s\n", msg_name);
|
||||
LOG_E(ENB_APP, "Received unexpected message %s\n", ITTI_MSG_NAME (msg_p));
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -409,7 +409,6 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
||||
|
||||
int num_enbs = 0;
|
||||
|
||||
int num_component_carriers = 0;
|
||||
int j,k = 0;
|
||||
int32_t enb_id = 0;
|
||||
int nb_cc = 0;
|
||||
@@ -703,17 +702,10 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
||||
sprintf(enbpath,"%s.[%i]",ENB_CONFIG_STRING_ENB_LIST,k),
|
||||
config_getlist( &CCsParamList,NULL,0,enbpath);
|
||||
|
||||
LOG_I(RRC,"num component carriers %d \n", num_component_carriers);
|
||||
LOG_I(RRC,"num component carriers %d \n",CCsParamList.numelt);
|
||||
if ( CCsParamList.numelt> 0) {
|
||||
char ccspath[MAX_OPTNAME_SIZE*2 + 16];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//enb_properties_loc.properties[enb_properties_loc_index]->nb_cc = num_component_carriers;
|
||||
|
||||
|
||||
for (j = 0; j < CCsParamList.numelt ;j++) {
|
||||
|
||||
sprintf(ccspath,"%s.%s.[%i]",enbpath,ENB_CONFIG_STRING_COMPONENT_CARRIERS,j);
|
||||
|
||||
@@ -47,11 +47,10 @@ void *flexran_agent_task(void *args){
|
||||
Protocol__FlexranMessage *msg;
|
||||
void *data;
|
||||
int size;
|
||||
err_code_t err_code;
|
||||
err_code_t err_code=0;
|
||||
int priority = 0;
|
||||
|
||||
MessageDef *msg_p = NULL;
|
||||
const char *msg_name = NULL;
|
||||
int result;
|
||||
struct flexran_agent_timer_element_s * elem = NULL;
|
||||
|
||||
@@ -61,7 +60,6 @@ void *flexran_agent_task(void *args){
|
||||
// Wait for a message
|
||||
itti_receive_msg (TASK_FLEXRAN_AGENT, &msg_p);
|
||||
DevAssert(msg_p != NULL);
|
||||
msg_name = ITTI_MSG_NAME (msg_p);
|
||||
|
||||
switch (ITTI_MSG_ID(msg_p)) {
|
||||
case TERMINATE_MESSAGE:
|
||||
@@ -88,7 +86,7 @@ void *flexran_agent_task(void *args){
|
||||
break;
|
||||
|
||||
default:
|
||||
LOG_E(FLEXRAN_AGENT, "Received unexpected message %s\n", msg_name);
|
||||
LOG_E(FLEXRAN_AGENT, "Received unexpected message %s\n", ITTI_MSG_NAME (msg_p));
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -96,7 +94,8 @@ void *flexran_agent_task(void *args){
|
||||
AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
|
||||
continue;
|
||||
error:
|
||||
LOG_E(FLEXRAN_AGENT,"flexran_agent_task: error %d occured\n",err_code);
|
||||
if (err_code != 0)
|
||||
LOG_E(FLEXRAN_AGENT,"flexran_agent_task: error %d occured\n",err_code);
|
||||
} while (1);
|
||||
|
||||
return NULL;
|
||||
@@ -108,7 +107,7 @@ void *receive_thread(void *args) {
|
||||
void *data;
|
||||
int size;
|
||||
int priority;
|
||||
err_code_t err_code;
|
||||
err_code_t err_code=0;
|
||||
|
||||
Protocol__FlexranMessage *msg;
|
||||
|
||||
@@ -140,7 +139,8 @@ void *receive_thread(void *args) {
|
||||
return NULL;
|
||||
|
||||
error:
|
||||
LOG_E(FLEXRAN_AGENT,"receive_thread: error %d occured\n",err_code);
|
||||
if (err_code != 0)
|
||||
LOG_E(FLEXRAN_AGENT,"receive_thread: error %d occured\n",err_code);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -299,7 +299,7 @@ Protocol__FlexranMessage *flexran_agent_timeout(void* args){
|
||||
//memcpy (timer_args, args, sizeof(*timer_args));
|
||||
flexran_agent_timer_args_t *timer_args = (flexran_agent_timer_args_t *) args;
|
||||
|
||||
LOG_I(FLEXRAN_AGENT, "flexran_agent %d timeout\n", timer_args->mod_id);
|
||||
LOG_UI(FLEXRAN_AGENT, "flexran_agent %d timeout\n", timer_args->mod_id);
|
||||
//LOG_I(FLEXRAN_AGENT, "eNB action %d ENB flags %d \n", timer_args->cc_actions,timer_args->cc_report_flags);
|
||||
//LOG_I(FLEXRAN_AGENT, "UE action %d UE flags %d \n", timer_args->ue_actions,timer_args->ue_report_flags);
|
||||
|
||||
|
||||
@@ -130,16 +130,15 @@ void * flexran_agent_pack_message(Protocol__FlexranMessage *msg,
|
||||
int * size){
|
||||
|
||||
void * buffer;
|
||||
err_code_t err_code = PROTOCOL__FLEXRAN_ERR__NO_ERR;
|
||||
|
||||
if (flexran_agent_serialize_message(msg, &buffer, size) < 0 ) {
|
||||
err_code = PROTOCOL__FLEXRAN_ERR__MSG_ENCODING;
|
||||
LOG_E(FLEXRAN_AGENT,"errno %d occured\n",PROTOCOL__FLEXRAN_ERR__MSG_ENCODING);
|
||||
goto error;
|
||||
}
|
||||
|
||||
// free the msg --> later keep this in the data struct and just update the values
|
||||
//TODO call proper destroy function
|
||||
err_code = ((*message_destruction_callback[msg->msg_case-1])(msg));
|
||||
((*message_destruction_callback[msg->msg_case-1])(msg));
|
||||
|
||||
DevAssert(buffer !=NULL);
|
||||
|
||||
@@ -148,8 +147,6 @@ void * flexran_agent_pack_message(Protocol__FlexranMessage *msg,
|
||||
return buffer;
|
||||
|
||||
error :
|
||||
LOG_E(FLEXRAN_AGENT,"errno %d occured\n",err_code);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -2264,7 +2264,6 @@ void ulsch_scheduler_pre_processor_fairRR(module_id_t module_idP,
|
||||
uint32_t tbs;
|
||||
int16_t tx_power;
|
||||
int UE_id;
|
||||
rnti_t rnti;
|
||||
COMMON_channels_t *cc;
|
||||
LOG_D(MAC,"In ulsch_preprocessor: ulsch ue select\n");
|
||||
//ue select
|
||||
@@ -2308,11 +2307,10 @@ void ulsch_scheduler_pre_processor_fairRR(module_id_t module_idP,
|
||||
continue;
|
||||
}
|
||||
|
||||
rnti = UE_RNTI(CC_id,UE_id);
|
||||
|
||||
if (first_rb[CC_id] >= frame_parms->N_RB_UL-num_pucch_rb ) {
|
||||
LOG_W(MAC,"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs\n",
|
||||
module_idP,frameP,subframeP,UE_id,rnti,CC_id);
|
||||
module_idP,frameP,subframeP,UE_id,UE_RNTI(CC_id,UE_id),CC_id);
|
||||
break;
|
||||
}
|
||||
total_rbs = frame_parms->N_RB_UL-num_pucch_rb-first_rb[CC_id];
|
||||
@@ -2390,7 +2388,7 @@ void ulsch_scheduler_pre_processor_fairRR(module_id_t module_idP,
|
||||
rb_table_index = find_rb_table_index(average_rbs);
|
||||
if (rb_table_index>=34){
|
||||
LOG_W(MAC,"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: average RBs %d > 100\n",
|
||||
module_idP,frameP,subframeP,UE_id,rnti,CC_id,average_rbs);
|
||||
module_idP,frameP,subframeP,UE_id,UE_RNTI(CC_id,UE_id),CC_id,average_rbs);
|
||||
break;
|
||||
}
|
||||
first_rb[CC_id] = first_rb[CC_id] + rb_table[rb_table_index];
|
||||
|
||||
@@ -3399,7 +3399,7 @@ unsigned char ul_ACK_subframe2M(TDD_Config_t *tdd_Config,unsigned char subframe)
|
||||
} else if (subframe == 8) { // ACK subframe 4
|
||||
return(1); // To be updated
|
||||
} else {
|
||||
AssertFatal(1==0,"illegal subframe %d for tdd_config %d\n",
|
||||
AssertFatal(1==0,"illegal subframe %d for tdd_config %ld\n",
|
||||
subframe,tdd_Config->subframeAssignment);
|
||||
|
||||
}
|
||||
@@ -3413,7 +3413,7 @@ unsigned char ul_ACK_subframe2M(TDD_Config_t *tdd_Config,unsigned char subframe)
|
||||
} else if (subframe == 4) { // ACK subframes 9 and 0
|
||||
return(2);
|
||||
} else {
|
||||
AssertFatal(1==0,"illegal subframe %d for tdd_config %d\n",
|
||||
AssertFatal(1==0,"illegal subframe %d for tdd_config %ld\n",
|
||||
subframe,tdd_Config->subframeAssignment);
|
||||
}
|
||||
|
||||
@@ -3425,7 +3425,7 @@ unsigned char ul_ACK_subframe2M(TDD_Config_t *tdd_Config,unsigned char subframe)
|
||||
} else if (subframe == 3) { // ACK subframes 6,7,8 and 9
|
||||
return(4);
|
||||
} else {
|
||||
AssertFatal(1==0,"illegal subframe %d for tdd_config %d\n",
|
||||
AssertFatal(1==0,"illegal subframe %d for tdd_config %ld\n",
|
||||
subframe,tdd_Config->subframeAssignment);
|
||||
}
|
||||
|
||||
@@ -3435,7 +3435,7 @@ unsigned char ul_ACK_subframe2M(TDD_Config_t *tdd_Config,unsigned char subframe)
|
||||
if (subframe == 2) { // ACK subframes 0,3,4,5,6,7,8 and 9
|
||||
return(8); // should be 3
|
||||
} else {
|
||||
AssertFatal(1==0,"illegal subframe %d for tdd_config %d\n",
|
||||
AssertFatal(1==0,"illegal subframe %d for tdd_config %ld\n",
|
||||
subframe,tdd_Config->subframeAssignment);
|
||||
}
|
||||
|
||||
@@ -3464,7 +3464,7 @@ unsigned char ul_ACK_subframe2dl_subframe(TDD_Config_t *tdd_Config,unsigned char
|
||||
} else if (subframe == 4) { // ACK subframes 9 and 0
|
||||
return((9+ACK_index)%10);
|
||||
} else {
|
||||
AssertFatal(1==0,"illegal subframe %d for tdd_config->subframeAssignment %d\n",
|
||||
AssertFatal(1==0,"illegal subframe %d for tdd_config->subframeAssignment %ld\n",
|
||||
subframe,tdd_Config->subframeAssignment);
|
||||
}
|
||||
|
||||
@@ -3481,7 +3481,7 @@ unsigned char ul_ACK_subframe2dl_subframe(TDD_Config_t *tdd_Config,unsigned char
|
||||
} else if (subframe == 3) { // ACK subframes 6, 7 8 and 9
|
||||
return(6+ACK_index); // To be updated
|
||||
} else {
|
||||
AssertFatal(1==0,"illegal subframe %d for tdd_config %d\n",
|
||||
AssertFatal(1==0,"illegal subframe %d for tdd_config %ld\n",
|
||||
subframe,tdd_Config->subframeAssignment);
|
||||
}
|
||||
|
||||
@@ -3497,7 +3497,7 @@ unsigned char ul_ACK_subframe2dl_subframe(TDD_Config_t *tdd_Config,unsigned char
|
||||
} else if (subframe == 8) { // ACK subframe 4
|
||||
return(4); // To be updated
|
||||
} else {
|
||||
AssertFatal(1==0,"illegal subframe %d for tdd_config %d\n",
|
||||
AssertFatal(1==0,"illegal subframe %d for tdd_config %ld\n",
|
||||
subframe,tdd_Config->subframeAssignment);
|
||||
}
|
||||
|
||||
|
||||
@@ -1047,7 +1047,6 @@ dlsch_scheduler_pre_processor_reset(int module_idP,
|
||||
int i, j;
|
||||
UE_list_t *UE_list = &RC.mac[module_idP]->UE_list;
|
||||
UE_sched_ctrl *ue_sched_ctl = &UE_list->UE_sched_ctrl[UE_id];
|
||||
rnti_t rnti = UE_RNTI(module_idP, UE_id);
|
||||
|
||||
uint8_t *vrb_map = RC.mac[module_idP]->common_channels[CC_id].vrb_map;
|
||||
int N_RB_DL =
|
||||
@@ -1058,7 +1057,7 @@ dlsch_scheduler_pre_processor_reset(int module_idP,
|
||||
#endif
|
||||
|
||||
|
||||
LOG_D(MAC, "Running preprocessor for UE %d (%x)\n", UE_id, rnti);
|
||||
LOG_D(MAC, "Running preprocessor for UE %d (%x)\n", UE_id,(int)(UE_RNTI(module_idP, UE_id)));
|
||||
// initialize harq_pid and round
|
||||
|
||||
if (ue_sched_ctl->ta_timer)
|
||||
|
||||
@@ -314,9 +314,8 @@ PRACH_RESOURCES_t *ue_get_rach(module_id_t module_idP, int CC_id,
|
||||
struct RACH_ConfigCommon *rach_ConfigCommon =
|
||||
(struct RACH_ConfigCommon *) NULL;
|
||||
int32_t frame_diff = 0;
|
||||
mac_rlc_status_resp_t rlc_status;
|
||||
uint8_t dcch_header_len = 0;
|
||||
uint16_t sdu_lengths[8];
|
||||
uint16_t sdu_lengths;
|
||||
uint8_t ulsch_buff[MAX_ULSCH_PAYLOAD_BYTES];
|
||||
|
||||
AssertFatal(CC_id == 0,
|
||||
@@ -405,8 +404,7 @@ PRACH_RESOURCES_t *ue_get_rach(module_id_t module_idP, int CC_id,
|
||||
[DCCH]] > 0) {
|
||||
// This is for triggering a transmission on DCCH using PRACH (during handover, or sending SR for example)
|
||||
dcch_header_len = 2 + 2; /// SHORT Subheader + C-RNTI control element
|
||||
rlc_status =
|
||||
mac_rlc_status_ind(module_idP,
|
||||
LOG_USEDINLOG_VAR(mac_rlc_status_resp_t,rlc_status)=mac_rlc_status_ind(module_idP,
|
||||
UE_mac_inst[module_idP].crnti,
|
||||
eNB_indexP, frameP, subframeP,
|
||||
ENB_FLAG_NO, MBMS_FLAG_NO, DCCH, 6
|
||||
@@ -415,7 +413,6 @@ PRACH_RESOURCES_t *ue_get_rach(module_id_t module_idP, int CC_id,
|
||||
#endif
|
||||
);
|
||||
|
||||
|
||||
if (UE_mac_inst[module_idP].crnti_before_ho)
|
||||
LOG_D(MAC,
|
||||
"[UE %d] Frame %d : UL-DCCH -> ULSCH, HO RRCConnectionReconfigurationComplete (%x, %x), RRC message has %d bytes to send throug PRACH (mac header len %d)\n",
|
||||
@@ -429,7 +426,7 @@ PRACH_RESOURCES_t *ue_get_rach(module_id_t module_idP, int CC_id,
|
||||
module_idP, frameP, rlc_status.bytes_in_buffer,
|
||||
dcch_header_len);
|
||||
|
||||
sdu_lengths[0] = mac_rlc_data_req(module_idP, UE_mac_inst[module_idP].crnti, eNB_indexP, frameP, ENB_FLAG_NO, MBMS_FLAG_NO, DCCH, 6, //not used
|
||||
sdu_lengths = mac_rlc_data_req(module_idP, UE_mac_inst[module_idP].crnti, eNB_indexP, frameP, ENB_FLAG_NO, MBMS_FLAG_NO, DCCH, 6, //not used
|
||||
(char *) &ulsch_buff[0]
|
||||
#if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
|
||||
,0,
|
||||
@@ -437,9 +434,13 @@ PRACH_RESOURCES_t *ue_get_rach(module_id_t module_idP, int CC_id,
|
||||
#endif
|
||||
);
|
||||
|
||||
if(sdu_lengths > 0)
|
||||
LOG_D(MAC, "[UE %d] TX Got %d bytes for DCCH\n",
|
||||
module_idP, sdu_lengths);
|
||||
else
|
||||
LOG_E(MAC, "[UE %d] TX DCCH error\n",
|
||||
module_idP );
|
||||
|
||||
LOG_D(MAC, "[UE %d] TX Got %d bytes for DCCH\n",
|
||||
module_idP, sdu_lengths[0]);
|
||||
update_bsr(module_idP, frameP, subframeP, eNB_indexP);
|
||||
UE_mac_inst[module_idP].
|
||||
scheduling_info.BSR[UE_mac_inst[module_idP].
|
||||
|
||||
@@ -2298,8 +2298,6 @@ ue_scheduler(const module_id_t module_idP,
|
||||
|
||||
#if defined(ENABLE_ITTI)
|
||||
MessageDef *msg_p;
|
||||
const char *msg_name;
|
||||
instance_t instance;
|
||||
int result;
|
||||
#endif
|
||||
#if UE_TIMING_TRACE
|
||||
@@ -2318,14 +2316,12 @@ ue_scheduler(const module_id_t module_idP,
|
||||
itti_poll_msg(TASK_MAC_UE, &msg_p);
|
||||
|
||||
if (msg_p != NULL) {
|
||||
msg_name = ITTI_MSG_NAME(msg_p);
|
||||
instance = ITTI_MSG_INSTANCE(msg_p);
|
||||
|
||||
switch (ITTI_MSG_ID(msg_p)) {
|
||||
case RRC_MAC_CCCH_DATA_REQ:
|
||||
LOG_I(MAC,
|
||||
"Received %s from %s: instance %d, frameP %d, eNB_index %d\n",
|
||||
msg_name, ITTI_MSG_ORIGIN_NAME(msg_p), instance,
|
||||
ITTI_MSG_NAME(msg_p), ITTI_MSG_ORIGIN_NAME(msg_p), ITTI_MSG_INSTANCE(msg_p),
|
||||
RRC_MAC_CCCH_DATA_REQ(msg_p).frame,
|
||||
RRC_MAC_CCCH_DATA_REQ(msg_p).enb_index);
|
||||
|
||||
@@ -2334,7 +2330,7 @@ ue_scheduler(const module_id_t module_idP,
|
||||
|
||||
|
||||
default:
|
||||
LOG_E(MAC, "Received unexpected message %s\n", msg_name);
|
||||
LOG_E(MAC, "Received unexpected message %s\n", ITTI_MSG_NAME(msg_p));
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -915,16 +915,6 @@ pdcp_run (
|
||||
//-----------------------------------------------------------------------------
|
||||
{
|
||||
|
||||
#if defined(ENABLE_ITTI)
|
||||
MessageDef *msg_p;
|
||||
const char *msg_name;
|
||||
instance_t instance;
|
||||
int result;
|
||||
protocol_ctxt_t ctxt;
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
if (ctxt_pP->enb_flag) {
|
||||
start_meas(&eNB_pdcp_stats[ctxt_pP->module_id].pdcp_run);
|
||||
} else {
|
||||
@@ -939,14 +929,15 @@ pdcp_run (
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDCP_RUN, VCD_FUNCTION_IN);
|
||||
|
||||
#if defined(ENABLE_ITTI)
|
||||
MessageDef *msg_p;
|
||||
int result;
|
||||
protocol_ctxt_t ctxt;
|
||||
|
||||
do {
|
||||
// Checks if a message has been sent to PDCP sub-task
|
||||
itti_poll_msg (ctxt_pP->enb_flag ? TASK_PDCP_ENB : TASK_PDCP_UE, &msg_p);
|
||||
|
||||
if (msg_p != NULL) {
|
||||
msg_name = ITTI_MSG_NAME (msg_p);
|
||||
instance = ITTI_MSG_INSTANCE (msg_p);
|
||||
|
||||
switch (ITTI_MSG_ID(msg_p)) {
|
||||
case RRC_DCCH_DATA_REQ:
|
||||
@@ -960,9 +951,9 @@ pdcp_run (
|
||||
RRC_DCCH_DATA_REQ (msg_p).eNB_index);
|
||||
LOG_I(PDCP, PROTOCOL_CTXT_FMT"Received %s from %s: instance %d, rb_id %d, muiP %d, confirmP %d, mode %d\n",
|
||||
PROTOCOL_CTXT_ARGS(&ctxt),
|
||||
msg_name,
|
||||
ITTI_MSG_NAME (msg_p),
|
||||
ITTI_MSG_ORIGIN_NAME(msg_p),
|
||||
instance,
|
||||
ITTI_MSG_INSTANCE (msg_p),
|
||||
RRC_DCCH_DATA_REQ (msg_p).rb_id,
|
||||
RRC_DCCH_DATA_REQ (msg_p).muip,
|
||||
RRC_DCCH_DATA_REQ (msg_p).confirmp,
|
||||
@@ -1004,7 +995,7 @@ pdcp_run (
|
||||
break;
|
||||
|
||||
default:
|
||||
LOG_E(PDCP, "Received unexpected message %s\n", msg_name);
|
||||
LOG_E(PDCP, "Received unexpected message %s\n", ITTI_MSG_NAME (msg_p));
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -1141,7 +1141,6 @@ rlc_am_data_req (
|
||||
uint32_t mui;
|
||||
uint16_t data_offset;
|
||||
uint16_t data_size;
|
||||
uint8_t conf;
|
||||
#if TRACE_RLC_AM_PDU
|
||||
char message_string[7000];
|
||||
size_t message_string_size = 0;
|
||||
@@ -1164,7 +1163,6 @@ rlc_am_data_req (
|
||||
mui = ((struct rlc_am_data_req *) (sdu_pP->data))->mui;
|
||||
data_offset = ((struct rlc_am_data_req *) (sdu_pP->data))->data_offset;
|
||||
data_size = ((struct rlc_am_data_req *) (sdu_pP->data))->data_size;
|
||||
conf = ((struct rlc_am_data_req *) (sdu_pP->data))->conf;
|
||||
|
||||
MSC_LOG_RX_MESSAGE(
|
||||
(ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
|
||||
@@ -1182,7 +1180,7 @@ rlc_am_data_req (
|
||||
message_string_size += sprintf(&message_string[message_string_size], "Bearer : %u\n", l_rlc_p->rb_id);
|
||||
message_string_size += sprintf(&message_string[message_string_size], "SDU size : %u\n", data_size);
|
||||
message_string_size += sprintf(&message_string[message_string_size], "MUI : %u\n", mui);
|
||||
message_string_size += sprintf(&message_string[message_string_size], "CONF : %u\n", conf);
|
||||
message_string_size += sprintf(&message_string[message_string_size], "CONF : %u\n", ((struct rlc_am_data_req *) (sdu_pP->data))->conf);
|
||||
|
||||
message_string_size += sprintf(&message_string[message_string_size], "\nPayload : \n");
|
||||
message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
|
||||
@@ -1233,7 +1231,6 @@ rlc_am_data_req (
|
||||
|
||||
l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].mui = mui;
|
||||
l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].sdu_size = data_size;
|
||||
//l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].confirm = conf;
|
||||
|
||||
l_rlc_p->sdu_buffer_occupancy += data_size;
|
||||
l_rlc_p->nb_sdu += 1;
|
||||
@@ -1261,7 +1258,7 @@ rlc_am_data_req (
|
||||
l_rlc_p->nb_sdu,
|
||||
l_rlc_p->current_sdu_index,
|
||||
l_rlc_p->next_sdu_index,
|
||||
conf,
|
||||
((struct rlc_am_data_req *) (sdu_pP->data))->conf,
|
||||
mui,
|
||||
l_rlc_p->vt_a,
|
||||
l_rlc_p->vt_s);
|
||||
|
||||
@@ -196,11 +196,10 @@ rlc_tm_mac_data_indication (
|
||||
void * const rlc_pP,
|
||||
struct mac_data_ind data_indP)
|
||||
{
|
||||
rlc_tm_entity_t* rlc_p = (rlc_tm_entity_t*) rlc_pP;
|
||||
|
||||
if (data_indP.data.nb_elements > 0) {
|
||||
LOG_D(RLC, PROTOCOL_RLC_TM_CTXT_FMT" MAC_DATA_IND %d TBs\n",
|
||||
PROTOCOL_RLC_TM_CTXT_ARGS(ctxt_pP, rlc_p),
|
||||
PROTOCOL_RLC_TM_CTXT_ARGS(ctxt_pP, ((rlc_tm_entity_t*) rlc_pP)),
|
||||
data_indP.data.nb_elements);
|
||||
}
|
||||
|
||||
|
||||
@@ -151,7 +151,6 @@ int rlc_um_read_length_indicators(unsigned char**data_ppP, rlc_um_e_li_t* e_liP,
|
||||
unsigned int e2 = 0;
|
||||
unsigned int li2 = 0;
|
||||
*num_li_pP = 0;
|
||||
int pdu_size = *data_size_pP;
|
||||
|
||||
while ((continue_loop)) {
|
||||
//msg("[RLC_UM] e_liP->b1 = %02X\n", e_liP->b1);
|
||||
@@ -170,7 +169,7 @@ int rlc_um_read_length_indicators(unsigned char**data_ppP, rlc_um_e_li_t* e_liP,
|
||||
*num_li_pP = *num_li_pP +1;
|
||||
|
||||
if (!(*data_size_pP >= 0)) LOG_E(RLC, "Invalid data_size=%d! (pdu_size=%d loop=%d e1=%d e2=%d li2=%d e_liP=%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x)\n",
|
||||
*data_size_pP, pdu_size, continue_loop, e1, e2, li2,
|
||||
*data_size_pP, *data_size_pP, continue_loop, e1, e2, li2,
|
||||
(e_liP-(continue_loop-1)+0)->b1,
|
||||
(e_liP-(continue_loop-1)+0)->b2,
|
||||
(e_liP-(continue_loop-1)+0)->b3,
|
||||
@@ -190,7 +189,7 @@ int rlc_um_read_length_indicators(unsigned char**data_ppP, rlc_um_e_li_t* e_liP,
|
||||
}
|
||||
} else {
|
||||
if (!(*data_size_pP >= 0)) LOG_E(RLC, "Invalid data_size=%d! (pdu_size=%d loop=%d e1=%d li1=%d e_liP=%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x)\n",
|
||||
*data_size_pP, pdu_size, continue_loop, e1, li1,
|
||||
*data_size_pP, *data_size_pP, continue_loop, e1, li1,
|
||||
(e_liP-(continue_loop-1)+0)->b1,
|
||||
(e_liP-(continue_loop-1)+0)->b2,
|
||||
(e_liP-(continue_loop-1)+0)->b3,
|
||||
|
||||
@@ -40,7 +40,7 @@ rlc_um_display_rx_window(
|
||||
{
|
||||
unsigned long sn = 0;
|
||||
unsigned long end_sn = 0;
|
||||
char str[4];
|
||||
LOG_USEDINLOG_VAR(char,str[4]);
|
||||
char time_out_str[11];
|
||||
int str_index;
|
||||
char color[32];
|
||||
|
||||
@@ -346,11 +346,10 @@ void handle_nfapi_ul_pdu_UE_MAC(module_id_t Mod_id,
|
||||
nfapi_ul_config_request_pdu_t *ul_config_pdu,
|
||||
uint16_t frame,uint8_t subframe,uint8_t srs_present, int index)
|
||||
{
|
||||
nfapi_ul_config_ulsch_pdu_rel8_t *rel8 = &ul_config_pdu->ulsch_pdu.ulsch_pdu_rel8;
|
||||
|
||||
if (ul_config_pdu->pdu_type == NFAPI_UL_CONFIG_ULSCH_PDU_TYPE) {
|
||||
LOG_D(PHY,"Applying UL config for UE, rnti %x for frame %d, subframe %d\n",
|
||||
rel8->rnti,frame,subframe);
|
||||
(ul_config_pdu->ulsch_pdu.ulsch_pdu_rel8).rnti,frame,subframe);
|
||||
uint8_t ulsch_buffer[5477] __attribute__ ((aligned(32)));
|
||||
uint16_t buflen = ul_config_pdu->ulsch_pdu.ulsch_pdu_rel8.size;
|
||||
|
||||
@@ -561,17 +560,15 @@ int ul_config_req_UE_MAC(nfapi_ul_config_request_t* req, int timer_frame, int ti
|
||||
|
||||
int tx_req_UE_MAC(nfapi_tx_request_t* req)
|
||||
{
|
||||
uint16_t sfn = NFAPI_SFNSF2SFN(req->sfn_sf);
|
||||
uint16_t sf = NFAPI_SFNSF2SF(req->sfn_sf);
|
||||
|
||||
LOG_D(PHY,"%s() SFN/SF:%d/%d PDUs:%d\n", __FUNCTION__, sfn, sf, req->tx_request_body.number_of_pdus);
|
||||
LOG_D(PHY,"%s() SFN/SF:%d/%d PDUs:%d\n", __FUNCTION__, NFAPI_SFNSF2SFN(req->sfn_sf), NFAPI_SFNSF2SF(req->sfn_sf), req->tx_request_body.number_of_pdus);
|
||||
|
||||
|
||||
for (int i=0; i<req->tx_request_body.number_of_pdus; i++)
|
||||
{
|
||||
LOG_D(PHY,"%s() SFN/SF:%d/%d number_of_pdus:%d [PDU:%d] pdu_length:%d pdu_index:%d num_segments:%d\n",
|
||||
__FUNCTION__,
|
||||
sfn, sf,
|
||||
NFAPI_SFNSF2SFN(req->sfn_sf), NFAPI_SFNSF2SF(req->sfn_sf),
|
||||
req->tx_request_body.number_of_pdus,
|
||||
i,
|
||||
req->tx_request_body.tx_pdu_list[i].pdu_length,
|
||||
|
||||
@@ -1399,7 +1399,6 @@ uint8_t do_RRCConnectionRequest(uint8_t Mod_id, uint8_t *buffer,uint8_t *rv)
|
||||
|
||||
asn_enc_rval_t enc_rval;
|
||||
uint8_t buf[5],buf2=0;
|
||||
uint8_t ecause=0;
|
||||
|
||||
UL_CCCH_Message_t ul_ccch_msg;
|
||||
|
||||
@@ -1472,7 +1471,7 @@ uint8_t do_RRCConnectionRequest(uint8_t Mod_id, uint8_t *buffer,uint8_t *rv)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
LOG_D(RRC,"[UE] RRCConnectionRequest Encoded %zd bits (%zd bytes), ecause %d\n",enc_rval.encoded,(enc_rval.encoded+7)/8,ecause);
|
||||
LOG_D(RRC,"[UE] RRCConnectionRequest Encoded %zd bits (%zd bytes) \n",enc_rval.encoded,(enc_rval.encoded+7)/8);
|
||||
|
||||
return((enc_rval.encoded+7)/8);
|
||||
|
||||
@@ -1806,7 +1805,6 @@ do_RRCConnectionSetup(
|
||||
{
|
||||
|
||||
asn_enc_rval_t enc_rval;
|
||||
uint8_t ecause=0;
|
||||
eNB_RRC_INST *rrc = RC.rrc[ctxt_pP->module_id];
|
||||
rrc_eNB_carrier_data_t *carrier = &rrc->carrier[CC_id];
|
||||
|
||||
@@ -2200,8 +2198,8 @@ do_RRCConnectionSetup(
|
||||
# endif
|
||||
#endif
|
||||
|
||||
LOG_D(RRC,"RRCConnectionSetup Encoded %zd bits (%zd bytes), ecause %d\n",
|
||||
enc_rval.encoded,(enc_rval.encoded+7)/8,ecause);
|
||||
LOG_D(RRC,"RRCConnectionSetup Encoded %zd bits (%zd bytes) \n",
|
||||
enc_rval.encoded,(enc_rval.encoded+7)/8);
|
||||
|
||||
// FREEMEM(SRB_list);
|
||||
// free(SRB1_config);
|
||||
|
||||
+88
-104
@@ -860,7 +860,6 @@ rrc_ue_establish_srb1(
|
||||
{
|
||||
// add descriptor from RRC PDU
|
||||
|
||||
uint8_t lchan_id = DCCH;
|
||||
|
||||
UE_rrc_inst[ue_mod_idP].Srb1[eNB_index].Active = 1;
|
||||
UE_rrc_inst[ue_mod_idP].Srb1[eNB_index].Status = RADIO_CONFIG_OK;//RADIO CFG
|
||||
@@ -871,7 +870,7 @@ rrc_ue_establish_srb1(
|
||||
// memcpy(&UE_rrc_inst[ue_mod_idP].Srb1[eNB_index].Srb_info.Lchan_desc[1],&DCCH_LCHAN_DESC,LCHAN_DESC_SIZE);
|
||||
|
||||
|
||||
LOG_I(RRC,"[UE %d], CONFIG_SRB1 %d corresponding to eNB_index %d\n", ue_mod_idP,lchan_id,eNB_index);
|
||||
LOG_I(RRC,"[UE %d], CONFIG_SRB1 %d corresponding to eNB_index %d\n", ue_mod_idP,DCCH,eNB_index);
|
||||
|
||||
//rrc_pdcp_config_req (ue_mod_idP+NB_eNB_INST, frameP, 0, CONFIG_ACTION_ADD, lchan_id,UNDEF_SECURITY_MODE);
|
||||
// rrc_rlc_config_req(ue_mod_idP+NB_eNB_INST,frameP,0,CONFIG_ACTION_ADD,lchan_id,SIGNALLING_RADIO_BEARER,Rlc_info_am_config);
|
||||
@@ -894,7 +893,6 @@ rrc_ue_establish_srb2(
|
||||
{
|
||||
// add descriptor from RRC PDU
|
||||
|
||||
uint8_t lchan_id = DCCH1;
|
||||
|
||||
UE_rrc_inst[ue_mod_idP].Srb2[eNB_index].Active = 1;
|
||||
UE_rrc_inst[ue_mod_idP].Srb2[eNB_index].Status = RADIO_CONFIG_OK;//RADIO CFG
|
||||
@@ -905,7 +903,7 @@ rrc_ue_establish_srb2(
|
||||
// memcpy(&UE_rrc_inst[ue_mod_idP].Srb2[eNB_index].Srb_info.Lchan_desc[1],&DCCH_LCHAN_DESC,LCHAN_DESC_SIZE);
|
||||
|
||||
|
||||
LOG_I(RRC,"[UE %d], CONFIG_SRB2 %d corresponding to eNB_index %d\n",ue_mod_idP,lchan_id,eNB_index);
|
||||
LOG_I(RRC,"[UE %d], CONFIG_SRB2 %d corresponding to eNB_index %d\n",ue_mod_idP,DCCH1,eNB_index);
|
||||
|
||||
//rrc_pdcp_config_req (ue_mod_idP+NB_eNB_INST, frameP, 0, CONFIG_ACTION_ADD, lchan_id, UNDEF_SECURITY_MODE);
|
||||
// rrc_rlc_config_req(ue_mod_idP+NB_eNB_INST,frameP,0,CONFIG_ACTION_ADD,lchan_id,SIGNALLING_RADIO_BEARER,Rlc_info_am_config);
|
||||
@@ -3117,15 +3115,9 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
|
||||
mnc = *PLMN_identity->mnc.list.array[0]*100 + *PLMN_identity->mnc.list.array[1]*10 + *PLMN_identity->mnc.list.array[2];
|
||||
}
|
||||
|
||||
int tac = 0;
|
||||
|
||||
if (sib1->cellAccessRelatedInfo.trackingAreaCode.size == 2) {
|
||||
tac = (sib1->cellAccessRelatedInfo.trackingAreaCode.buf[0]<<8) + sib1->cellAccessRelatedInfo.trackingAreaCode.buf[1];
|
||||
}
|
||||
|
||||
LOG_I( RRC, "PLMN MCC %0*d, MNC %0*d, TAC 0x%04x\n", mccdigits, mcc, mncdigits, mnc, tac );
|
||||
long cellReservedForOperatorUse = sib1->cellAccessRelatedInfo.plmn_IdentityList.list.array[0]->cellReservedForOperatorUse;
|
||||
LOG_I( RRC, "cellReservedForOperatorUse : raw:%ld decoded:%s\n", cellReservedForOperatorUse, SIBreserved(cellReservedForOperatorUse) );
|
||||
LOG_I( RRC, "PLMN MCC %0*d, MNC %0*d, TAC 0x%04x\n", mccdigits, mcc, mncdigits, mnc,
|
||||
((sib1->cellAccessRelatedInfo.trackingAreaCode.size == 2)?((sib1->cellAccessRelatedInfo.trackingAreaCode.buf[0]<<8) + sib1->cellAccessRelatedInfo.trackingAreaCode.buf[1]):0));
|
||||
LOG_I( RRC, "cellReservedForOperatorUse : raw:%ld decoded:%s\n", sib1->cellAccessRelatedInfo.plmn_IdentityList.list.array[0]->cellReservedForOperatorUse, SIBreserved(sib1->cellAccessRelatedInfo.plmn_IdentityList.list.array[0]->cellReservedForOperatorUse) );
|
||||
|
||||
// search internal table for provider name
|
||||
int plmn_ind = 0;
|
||||
@@ -3150,10 +3142,8 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
|
||||
sib1->cellAccessRelatedInfo.cellIdentity.buf[2],
|
||||
sib1->cellAccessRelatedInfo.cellIdentity.buf[3] >> sib1->cellAccessRelatedInfo.cellIdentity.bits_unused);
|
||||
|
||||
long cellBarred = sib1->cellAccessRelatedInfo.cellBarred;
|
||||
LOG_I( RRC, "cellAccessRelatedInfo.cellBarred : raw:%ld decoded:%s\n", cellBarred, SIBbarred(cellBarred) );
|
||||
long intraFreqReselection = sib1->cellAccessRelatedInfo.intraFreqReselection;
|
||||
LOG_I( RRC, "cellAccessRelatedInfo.intraFreqReselection : raw:%ld decoded:%s\n", intraFreqReselection, SIBallowed(intraFreqReselection) );
|
||||
LOG_I( RRC, "cellAccessRelatedInfo.cellBarred : raw:%ld decoded:%s\n", sib1->cellAccessRelatedInfo.cellBarred, SIBbarred(sib1->cellAccessRelatedInfo.cellBarred) );
|
||||
LOG_I( RRC, "cellAccessRelatedInfo.intraFreqReselection : raw:%ld decoded:%s\n", sib1->cellAccessRelatedInfo.intraFreqReselection, SIBallowed(sib1->cellAccessRelatedInfo.intraFreqReselection) );
|
||||
LOG_I( RRC, "cellAccessRelatedInfo.csg_Indication : %d\n", sib1->cellAccessRelatedInfo.csg_Indication );
|
||||
|
||||
if (sib1->cellAccessRelatedInfo.csg_Identity)
|
||||
@@ -3590,12 +3580,10 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
|
||||
sib3->cellReselectionInfoCommon.speedStateReselectionPars->mobilityStateParameters.n_CellChangeMedium );
|
||||
LOG_I( RRC, "cellReselectionInfoCommon.speedStateReselectionPars->mobilityStateParameters.n_CellChangeHigh : %ld\n",
|
||||
sib3->cellReselectionInfoCommon.speedStateReselectionPars->mobilityStateParameters.n_CellChangeHigh );
|
||||
int q_HystSF_Medium = 6 - 2 * sib3->cellReselectionInfoCommon.speedStateReselectionPars->q_HystSF.sf_Medium;
|
||||
int q_HystSF_High = 6 - 2 * sib3->cellReselectionInfoCommon.speedStateReselectionPars->q_HystSF.sf_High;
|
||||
LOG_I( RRC, "cellReselectionInfoCommon.speedStateReselectionPars->q_HystSF.sf_Medium : raw:%ld decoded:%d dB\n", sib3->cellReselectionInfoCommon.speedStateReselectionPars->q_HystSF.sf_Medium,
|
||||
q_HystSF_Medium );
|
||||
LOG_I( RRC, "cellReselectionInfoCommon.speedStateReselectionPars->q_HystSF.sf_High : raw:%ld decoded:%d dB\n", sib3->cellReselectionInfoCommon.speedStateReselectionPars->q_HystSF.sf_High,
|
||||
q_HystSF_High );
|
||||
LOG_I( RRC, "cellReselectionInfoCommon.speedStateReselectionPars->q_HystSF.sf_Medium : raw:%ld decoded:%ld dB\n", sib3->cellReselectionInfoCommon.speedStateReselectionPars->q_HystSF.sf_Medium,
|
||||
6 - 2 * sib3->cellReselectionInfoCommon.speedStateReselectionPars->q_HystSF.sf_Medium );
|
||||
LOG_I( RRC, "cellReselectionInfoCommon.speedStateReselectionPars->q_HystSF.sf_High : raw:%ld decoded:%ld dB\n", sib3->cellReselectionInfoCommon.speedStateReselectionPars->q_HystSF.sf_High,
|
||||
6 - 2 * sib3->cellReselectionInfoCommon.speedStateReselectionPars->q_HystSF.sf_High );
|
||||
} else {
|
||||
LOG_I( RRC, "cellReselectionInfoCommon.speedStateReselectionPars : not defined\n" );
|
||||
}
|
||||
@@ -4288,7 +4276,7 @@ void ue_meas_filtering( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
|
||||
uint8_t i;
|
||||
uint8_t target_eNB_offset;
|
||||
MeasId_t measId;
|
||||
PhysCellId_t cellId, targetCellId;
|
||||
PhysCellId_t targetCellId;
|
||||
long rsrp_t,rsrq_t;
|
||||
long rsrp_s,rsrq_s;
|
||||
long nElem, nElem1;
|
||||
@@ -4332,20 +4320,19 @@ void ue_meas_filtering( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
|
||||
UE_rrc_inst[ctxt_pP->module_id].rsrq_db_filtered[target_eNB_offset]);
|
||||
|
||||
// if (measFlag == 1) {
|
||||
cellId = get_adjacent_cell_id(ctxt_pP->module_id, eNB_index); //PhycellId of serving cell
|
||||
targetCellId = UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.targetCellId ;//get_adjacent_cell_id(ue_mod_idP,target_eNB_offset); //PhycellId of target cell
|
||||
|
||||
if (pframe!=ctxt_pP->frame) {
|
||||
pframe=ctxt_pP->frame;
|
||||
LOG_D(RRC, "[UE %d] Frame %d: doing MeasReport: servingCell(%ld) targetCell(%ld) rsrp_s(%ld) rsrq_s(%ld) rsrp_t(%ld) rsrq_t(%ld) \n",
|
||||
LOG_D(RRC, "[UE %d] Frame %ld: doing MeasReport: servingCell(%ld) targetCell(%ld) rsrp_s(%ld) rsrq_s(%ld) rsrp_t(%ld) rsrq_t(%ld) \n",
|
||||
ctxt_pP->module_id,
|
||||
ctxt_pP->frame,
|
||||
cellId,
|
||||
targetCellId,
|
||||
rsrp_s,
|
||||
rsrq_s,
|
||||
rsrp_t,
|
||||
rsrq_t);
|
||||
(long int)ctxt_pP->frame,
|
||||
(long int)get_adjacent_cell_id(ctxt_pP->module_id, eNB_index),
|
||||
(long int)targetCellId,
|
||||
(long int)rsrp_s,
|
||||
(long int)rsrq_s,
|
||||
(long int)rsrp_t,
|
||||
(long int)rsrq_t);
|
||||
size = do_MeasurementReport(ctxt_pP->module_id, buffer,measId,targetCellId,rsrp_s,rsrq_s,rsrp_t,rsrq_t);
|
||||
LOG_I(RRC, "[UE %d] Frame %d : Generating Measurement Report for eNB %d\n",
|
||||
ctxt_pP->module_id, ctxt_pP->frame, eNB_index);
|
||||
@@ -4691,7 +4678,6 @@ int decode_MCCH_Message( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB
|
||||
void *rrc_ue_task( void *args_p )
|
||||
{
|
||||
MessageDef *msg_p;
|
||||
const char *msg_name;
|
||||
instance_t instance;
|
||||
unsigned int ue_mod_id;
|
||||
int result;
|
||||
@@ -4704,7 +4690,6 @@ void *rrc_ue_task( void *args_p )
|
||||
// Wait for a message
|
||||
itti_receive_msg (TASK_RRC_UE, &msg_p);
|
||||
|
||||
msg_name = ITTI_MSG_NAME (msg_p);
|
||||
instance = ITTI_MSG_INSTANCE (msg_p);
|
||||
ue_mod_id = UE_INSTANCE_TO_MODULE_ID(instance);
|
||||
|
||||
@@ -4715,12 +4700,12 @@ void *rrc_ue_task( void *args_p )
|
||||
break;
|
||||
|
||||
case MESSAGE_TEST:
|
||||
LOG_D(RRC, "[UE %d] Received %s\n", ue_mod_id, msg_name);
|
||||
LOG_D(RRC, "[UE %d] Received %s\n", ue_mod_id, ITTI_MSG_NAME (msg_p));
|
||||
break;
|
||||
|
||||
/* MAC messages */
|
||||
case RRC_MAC_IN_SYNC_IND:
|
||||
LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, msg_name,
|
||||
LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p),
|
||||
RRC_MAC_IN_SYNC_IND (msg_p).frame, RRC_MAC_IN_SYNC_IND (msg_p).enb_index);
|
||||
|
||||
UE_rrc_inst[ue_mod_id].Info[RRC_MAC_IN_SYNC_IND (msg_p).enb_index].N310_cnt = 0;
|
||||
@@ -4732,14 +4717,14 @@ void *rrc_ue_task( void *args_p )
|
||||
break;
|
||||
|
||||
case RRC_MAC_OUT_OF_SYNC_IND:
|
||||
LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, msg_name,
|
||||
LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p),
|
||||
RRC_MAC_OUT_OF_SYNC_IND (msg_p).frame, RRC_MAC_OUT_OF_SYNC_IND (msg_p).enb_index);
|
||||
|
||||
UE_rrc_inst[ue_mod_id].Info[RRC_MAC_OUT_OF_SYNC_IND (msg_p).enb_index].N310_cnt ++;
|
||||
break;
|
||||
|
||||
case RRC_MAC_BCCH_DATA_IND:
|
||||
LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, msg_name,
|
||||
LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p),
|
||||
RRC_MAC_BCCH_DATA_IND (msg_p).frame, RRC_MAC_BCCH_DATA_IND (msg_p).enb_index);
|
||||
|
||||
// PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, NOT_A_RNTI, RRC_MAC_BCCH_DATA_IND (msg_p).frame, 0);
|
||||
@@ -4753,7 +4738,7 @@ void *rrc_ue_task( void *args_p )
|
||||
break;
|
||||
|
||||
case RRC_MAC_CCCH_DATA_CNF:
|
||||
LOG_D(RRC, "[UE %d] Received %s: eNB %d\n", ue_mod_id, msg_name,
|
||||
LOG_D(RRC, "[UE %d] Received %s: eNB %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p),
|
||||
RRC_MAC_CCCH_DATA_CNF (msg_p).enb_index);
|
||||
|
||||
// reset the tx buffer to indicate RRC that ccch was successfully transmitted (for example if contention resolution succeeds)
|
||||
@@ -4764,7 +4749,7 @@ void *rrc_ue_task( void *args_p )
|
||||
LOG_D(RRC, "[UE %d] RNTI %x Received %s: frameP %d, eNB %d\n",
|
||||
ue_mod_id,
|
||||
RRC_MAC_CCCH_DATA_IND (msg_p).rnti,
|
||||
msg_name,
|
||||
ITTI_MSG_NAME (msg_p),
|
||||
RRC_MAC_CCCH_DATA_IND (msg_p).frame,
|
||||
RRC_MAC_CCCH_DATA_IND (msg_p).enb_index);
|
||||
|
||||
@@ -4783,7 +4768,7 @@ void *rrc_ue_task( void *args_p )
|
||||
#if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
|
||||
|
||||
case RRC_MAC_MCCH_DATA_IND:
|
||||
LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d, mbsfn SA %d\n", ue_mod_id, msg_name,
|
||||
LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d, mbsfn SA %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p),
|
||||
RRC_MAC_MCCH_DATA_IND (msg_p).frame, RRC_MAC_MCCH_DATA_IND (msg_p).enb_index, RRC_MAC_MCCH_DATA_IND (msg_p).mbsfn_sync_area);
|
||||
|
||||
//PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, M_RNTI, RRC_MAC_MCCH_DATA_IND (msg_p).frame, 0);
|
||||
@@ -4798,7 +4783,7 @@ void *rrc_ue_task( void *args_p )
|
||||
|
||||
/* //TTN (for D2D)
|
||||
case RRC_MAC_SL_DISCOVERY_DATA_IND:
|
||||
LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, msg_name,
|
||||
LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p),
|
||||
RRC_MAC_SL_DISCOVERY_DATA_IND (msg_p).frame, RRC_MAC_SL_DISCOVERY_DATA_IND (msg_p).enb_index);
|
||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, M_RNTI, RRC_MAC_SL_DISCOVERY_DATA_IND (msg_p).frame, 0,RRC_MAC_SL_DISCOVERY_DATA_IND (msg_p).enb_index);
|
||||
//send to ProSeApp
|
||||
@@ -4811,14 +4796,14 @@ void *rrc_ue_task( void *args_p )
|
||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, RRC_DCCH_DATA_IND (msg_p).module_id, ENB_FLAG_NO, RRC_DCCH_DATA_IND (msg_p).rnti, RRC_DCCH_DATA_IND (msg_p).frame, 0,RRC_DCCH_DATA_IND (msg_p).eNB_index);
|
||||
LOG_D(RRC, "[UE %d] Received %s: frameP %d, DCCH %d, eNB %d\n",
|
||||
RRC_DCCH_DATA_IND (msg_p).module_id,
|
||||
msg_name,
|
||||
ITTI_MSG_NAME (msg_p),
|
||||
RRC_DCCH_DATA_IND (msg_p).frame,
|
||||
RRC_DCCH_DATA_IND (msg_p).dcch_index,
|
||||
RRC_DCCH_DATA_IND (msg_p).eNB_index);
|
||||
|
||||
LOG_D(RRC, PROTOCOL_RRC_CTXT_UE_FMT"Received %s DCCH %d, eNB %d\n",
|
||||
PROTOCOL_RRC_CTXT_UE_ARGS(&ctxt),
|
||||
msg_name,
|
||||
ITTI_MSG_NAME (msg_p),
|
||||
RRC_DCCH_DATA_IND (msg_p).dcch_index,
|
||||
RRC_DCCH_DATA_IND (msg_p).eNB_index);
|
||||
rrc_ue_decode_dcch (
|
||||
@@ -4845,7 +4830,7 @@ void *rrc_ue_task( void *args_p )
|
||||
"%02x%02x%02x%02x"
|
||||
"%02x%02x%02x%02x"
|
||||
"%02x%02x%02x%02x\n",
|
||||
ue_mod_id, msg_name,
|
||||
ue_mod_id, ITTI_MSG_NAME (msg_p),
|
||||
UE_rrc_inst[ue_mod_id].kenb[0], UE_rrc_inst[ue_mod_id].kenb[1], UE_rrc_inst[ue_mod_id].kenb[2], UE_rrc_inst[ue_mod_id].kenb[3],
|
||||
UE_rrc_inst[ue_mod_id].kenb[4], UE_rrc_inst[ue_mod_id].kenb[5], UE_rrc_inst[ue_mod_id].kenb[6], UE_rrc_inst[ue_mod_id].kenb[7],
|
||||
UE_rrc_inst[ue_mod_id].kenb[8], UE_rrc_inst[ue_mod_id].kenb[9], UE_rrc_inst[ue_mod_id].kenb[10], UE_rrc_inst[ue_mod_id].kenb[11],
|
||||
@@ -4860,7 +4845,7 @@ void *rrc_ue_task( void *args_p )
|
||||
/* NAS messages */
|
||||
case NAS_CELL_SELECTION_REQ:
|
||||
|
||||
LOG_D(RRC, "[UE %d] Received %s: state %d, plmnID (%d%d%d.%d%d%d), rat %x\n", ue_mod_id, msg_name, rrc_get_state(ue_mod_id),
|
||||
LOG_D(RRC, "[UE %d] Received %s: state %d, plmnID (%d%d%d.%d%d%d), rat %x\n", ue_mod_id, ITTI_MSG_NAME (msg_p), rrc_get_state(ue_mod_id),
|
||||
NAS_CELL_SELECTION_REQ (msg_p).plmnID.MCCdigit1,
|
||||
NAS_CELL_SELECTION_REQ (msg_p).plmnID.MCCdigit2,
|
||||
NAS_CELL_SELECTION_REQ (msg_p).plmnID.MCCdigit3,
|
||||
@@ -4919,7 +4904,7 @@ void *rrc_ue_task( void *args_p )
|
||||
|
||||
case RRC_STATE_CONNECTED:
|
||||
/* should not happen */
|
||||
LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, msg_name, rrc_get_state(ue_mod_id));
|
||||
LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), rrc_get_state(ue_mod_id));
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -4930,7 +4915,7 @@ void *rrc_ue_task( void *args_p )
|
||||
break;
|
||||
|
||||
case NAS_CONN_ESTABLI_REQ:
|
||||
LOG_D(RRC, "[UE %d] Received %s: cause %d, type %d, s_tmsi (mme code %"PRIu8", m-tmsi %"PRIu32"), plmnID (%d%d%d.%d%d%d)\n", ue_mod_id, msg_name, NAS_CONN_ESTABLI_REQ (msg_p).cause,
|
||||
LOG_D(RRC, "[UE %d] Received %s: cause %d, type %d, s_tmsi (mme code %"PRIu8", m-tmsi %"PRIu32"), plmnID (%d%d%d.%d%d%d)\n", ue_mod_id, ITTI_MSG_NAME (msg_p), NAS_CONN_ESTABLI_REQ (msg_p).cause,
|
||||
NAS_CONN_ESTABLI_REQ (msg_p).type,
|
||||
NAS_CONN_ESTABLI_REQ (msg_p).s_tmsi.MMEcode,
|
||||
NAS_CONN_ESTABLI_REQ (msg_p).s_tmsi.m_tmsi,
|
||||
@@ -4961,7 +4946,7 @@ void *rrc_ue_task( void *args_p )
|
||||
case RRC_STATE_INACTIVE:
|
||||
case RRC_STATE_CONNECTED:
|
||||
/* should not happen */
|
||||
LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, msg_name, rrc_get_state(ue_mod_id));
|
||||
LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), rrc_get_state(ue_mod_id));
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -4975,7 +4960,7 @@ void *rrc_ue_task( void *args_p )
|
||||
uint32_t length;
|
||||
uint8_t *buffer;
|
||||
|
||||
LOG_D(RRC, "[UE %d] Received %s: UEid %d\n", ue_mod_id, msg_name, NAS_UPLINK_DATA_REQ (msg_p).UEid);
|
||||
LOG_D(RRC, "[UE %d] Received %s: UEid %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), NAS_UPLINK_DATA_REQ (msg_p).UEid);
|
||||
|
||||
/* Create message for PDCP (ULInformationTransfer_t) */
|
||||
length = do_ULInformationTransfer(&buffer, NAS_UPLINK_DATA_REQ (msg_p).nasMsg.length, NAS_UPLINK_DATA_REQ (msg_p).nasMsg.data);
|
||||
@@ -5010,7 +4995,7 @@ void *rrc_ue_task( void *args_p )
|
||||
# if ENABLE_RAL
|
||||
|
||||
case RRC_RAL_SCAN_REQ:
|
||||
LOG_D(RRC, "[UE %d] Received %s: state %d\n", ue_mod_id, msg_name);
|
||||
LOG_D(RRC, "[UE %d] Received %s: state %d\n", ue_mod_id,ITTI_MSG_NAME (msg_p) );
|
||||
|
||||
switch (rrc_get_state(ue_mod_id)) {
|
||||
case RRC_STATE_INACTIVE: {
|
||||
@@ -5046,7 +5031,7 @@ void *rrc_ue_task( void *args_p )
|
||||
|
||||
case RRC_STATE_CONNECTED:
|
||||
/* should not happen */
|
||||
LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, msg_name, rrc_get_state(ue_mod_id));
|
||||
LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), rrc_get_state(ue_mod_id));
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -5057,7 +5042,7 @@ void *rrc_ue_task( void *args_p )
|
||||
break;
|
||||
|
||||
case PHY_FIND_CELL_IND:
|
||||
LOG_D(RRC, "[UE %d] Received %s: state %d\n", ue_mod_id, msg_name, rrc_get_state(ue_mod_id));
|
||||
LOG_D(RRC, "[UE %d] Received %s: state %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), rrc_get_state(ue_mod_id));
|
||||
|
||||
switch (rrc_get_state(ue_mod_id)) {
|
||||
case RRC_STATE_IDLE:
|
||||
@@ -5099,7 +5084,7 @@ void *rrc_ue_task( void *args_p )
|
||||
case RRC_STATE_INACTIVE:
|
||||
case RRC_STATE_CONNECTED:
|
||||
/* should not happen */
|
||||
LOG_E(RRC, "[UE %d] indication %s in RRC state %d\n", ue_mod_id, msg_name, rrc_get_state(ue_mod_id));
|
||||
LOG_E(RRC, "[UE %d] indication %s in RRC state %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), rrc_get_state(ue_mod_id));
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -5131,7 +5116,7 @@ void *rrc_ue_task( void *args_p )
|
||||
break;
|
||||
|
||||
case RRC_RAL_CONNECTION_ESTABLISHMENT_REQ:
|
||||
LOG_D(RRC, "[UE %d] Received %s\n", ue_mod_id, msg_name);
|
||||
LOG_D(RRC, "[UE %d] Received %s\n", ue_mod_id, ITTI_MSG_NAME (msg_p));
|
||||
|
||||
switch (rrc_get_state(ue_mod_id)) {
|
||||
case RRC_STATE_IDLE: {
|
||||
@@ -5148,7 +5133,7 @@ void *rrc_ue_task( void *args_p )
|
||||
case RRC_STATE_INACTIVE:
|
||||
case RRC_STATE_CONNECTED:
|
||||
/* should not happen */
|
||||
LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, msg_name, rrc_get_state(ue_mod_id));
|
||||
LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), rrc_get_state(ue_mod_id));
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -5159,12 +5144,12 @@ void *rrc_ue_task( void *args_p )
|
||||
break;
|
||||
|
||||
case RRC_RAL_CONNECTION_RELEASE_REQ:
|
||||
LOG_D(RRC, "[UE %d] Received %s\n", ue_mod_id, msg_name);
|
||||
LOG_D(RRC, "[UE %d] Received %s\n", ue_mod_id, ITTI_MSG_NAME (msg_p));
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
LOG_E(RRC, "[UE %d] Received unexpected message %s\n", ue_mod_id, msg_name);
|
||||
LOG_E(RRC, "[UE %d] Received unexpected message %s\n", ue_mod_id, ITTI_MSG_NAME (msg_p));
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -5379,7 +5364,7 @@ rrc_ue_process_sidelink_radioResourceConfig(
|
||||
case SL_CommConfig_r12__commTxResources_r12_PR_setup:
|
||||
if (sl_CommConfig->commTxResources_r12->choice.setup.present == SL_CommConfig_r12__commTxResources_r12__setup_PR_scheduled_r12 ){
|
||||
|
||||
LOG_I(RRC,"[UE %d][RRC_UE] scheduled resource for SL, sl_RNTI size %d \n",
|
||||
LOG_I(RRC,"[UE %d][RRC_UE] scheduled resource for SL, sl_RNTI size %lu \n",
|
||||
Mod_idP, sl_CommConfig->commTxResources_r12->choice.setup.choice.scheduled_r12.sl_RNTI_r12.size );
|
||||
LOG_I(RRC,"[UE %d][RRC_UE] scheduled resource for SL, sl_RNTI buf 0x%p \n",
|
||||
Mod_idP, sl_CommConfig->commTxResources_r12->choice.setup.choice.scheduled_r12.sl_RNTI_r12.buf );
|
||||
@@ -5573,9 +5558,9 @@ void *rrc_control_socket_thread_fct(void *arg)
|
||||
//process the message
|
||||
switch (sl_ctrl_msg_recv->type) {
|
||||
case SESSION_INIT_REQ:
|
||||
#ifdef DEBUG_CTRL_SOCKET
|
||||
LOG_I(RRC,"Received SessionInitializationRequest on socket from ProSe App (msg type: %d)\n", sl_ctrl_msg_recv->type);
|
||||
#endif
|
||||
LOG_DEBUG_BEGIN(DEBUG_CTRLSOCKET)
|
||||
LOG_UI(RRC,"Received SessionInitializationRequest on socket from ProSe App (msg type: %d)\n", sl_ctrl_msg_recv->type);
|
||||
LOG_DEBUG_END
|
||||
//TODO: get SL_UE_STATE from lower layer
|
||||
|
||||
LOG_I(RRC,"Send UEStateInformation to ProSe App \n");
|
||||
@@ -5594,14 +5579,12 @@ void *rrc_control_socket_thread_fct(void *arg)
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
|
||||
#ifdef DEBUG_CTRL_SOCKET
|
||||
LOG_DEBUG_BEGIN(DEBUG_CTRLSOCKET)
|
||||
struct sidelink_ctrl_element *ptr_ctrl_msg = NULL;
|
||||
ptr_ctrl_msg = (struct sidelink_ctrl_element *) send_buf;
|
||||
LOG_I(RRC,"[UEStateInformation] msg type: %d\n",ptr_ctrl_msg->type);
|
||||
LOG_I(RRC,"[UEStateInformation] UE state: %d\n",ptr_ctrl_msg->sidelinkPrimitive.ue_state);
|
||||
#endif
|
||||
|
||||
LOG_UI(RRC,"[UEStateInformation] msg type: %d\n",ptr_ctrl_msg->type);
|
||||
LOG_UI(RRC,"[UEStateInformation] UE state: %d\n",ptr_ctrl_msg->sidelinkPrimitive.ue_state);
|
||||
LOG_DEBUG_END
|
||||
/* if (enable_notification > 0) {
|
||||
//create thread to send status notification (for testing purpose, status notification will be sent e.g., every 20 seconds)
|
||||
pthread_t notification_thread;
|
||||
@@ -5616,12 +5599,12 @@ void *rrc_control_socket_thread_fct(void *arg)
|
||||
sourceL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.sourceL2Id;
|
||||
groupL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupL2Id;
|
||||
|
||||
#ifdef DEBUG_CTRL_SOCKET
|
||||
LOG_I(RRC,"[GroupCommunicationEstablishReq] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
|
||||
LOG_I(RRC,"[GroupCommunicationEstablishReq] source Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.sourceL2Id);
|
||||
LOG_I(RRC,"[GroupCommunicationEstablishReq] group Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupL2Id);
|
||||
LOG_I(RRC,"[GroupCommunicationEstablishReq] group IP Address: " IPV4_ADDR "\n",IPV4_ADDR_FORMAT(sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupIpAddress));
|
||||
#endif
|
||||
LOG_DEBUG_BEGIN(DEBUG_CTRLSOCKET)
|
||||
LOG_UI(RRC,"[GroupCommunicationEstablishReq] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
|
||||
LOG_UI(RRC,"[GroupCommunicationEstablishReq] source Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.sourceL2Id);
|
||||
LOG_UI(RRC,"[GroupCommunicationEstablishReq] group Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupL2Id);
|
||||
LOG_UI(RRC,"[GroupCommunicationEstablishReq] group IP Address: " IPV4_ADDR "\n",IPV4_ADDR_FORMAT(sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupIpAddress));
|
||||
LOG_DEBUG_END
|
||||
|
||||
//store sourceL2Id/groupL2Id
|
||||
UE_rrc_inst[module_id].sourceL2Id = sourceL2Id;
|
||||
@@ -5781,20 +5764,20 @@ void *rrc_control_socket_thread_fct(void *arg)
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
|
||||
#ifdef DEBUG_CTRL_SOCKET
|
||||
LOG_DEBUG_BEGIN(DEBUG_CTRLSOCKET)
|
||||
struct sidelink_ctrl_element *ptr_ctrl_msg = NULL;
|
||||
ptr_ctrl_msg = (struct sidelink_ctrl_element *) send_buf;
|
||||
LOG_I(RRC,"[GroupCommunicationEstablishResponse] msg type: %d\n",ptr_ctrl_msg->type);
|
||||
LOG_I(RRC,"[GroupCommunicationEstablishResponse] slrb_id: %d\n",ptr_ctrl_msg->sidelinkPrimitive.slrb_id);
|
||||
#endif
|
||||
LOG_UI(RRC,"[GroupCommunicationEstablishResponse] msg type: %d\n",ptr_ctrl_msg->type);
|
||||
LOG_UI(RRC,"[GroupCommunicationEstablishResponse] slrb_id: %d\n",ptr_ctrl_msg->sidelinkPrimitive.slrb_id);
|
||||
LOG_DEBUG_END
|
||||
break;
|
||||
|
||||
case GROUP_COMMUNICATION_RELEASE_REQ:
|
||||
printf("-----------------------------------\n");
|
||||
#ifdef DEBUG_CTRL_SOCKET
|
||||
LOG_I(RRC,"[GroupCommunicationReleaseRequest] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
|
||||
LOG_I(RRC,"[GroupCommunicationReleaseRequest] Slrb Id: %i\n",sl_ctrl_msg_recv->sidelinkPrimitive.slrb_id);
|
||||
#endif
|
||||
LOG_DEBUG_BEGIN(DEBUG_CTRLSOCKET)
|
||||
LOG_UI(RRC,"[GroupCommunicationReleaseRequest] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
|
||||
LOG_UI(RRC,"[GroupCommunicationReleaseRequest] Slrb Id: %i\n",sl_ctrl_msg_recv->sidelinkPrimitive.slrb_id);
|
||||
LOG_DEBUG_END
|
||||
//reset groupL2ID from MAC LAYER
|
||||
UE_rrc_inst[module_id].groupL2Id = 0x00000000;
|
||||
sourceL2Id = UE_rrc_inst[module_id].sourceL2Id;
|
||||
@@ -5866,11 +5849,11 @@ void *rrc_control_socket_thread_fct(void *arg)
|
||||
sourceL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.direct_comm_establish_req.sourceL2Id;
|
||||
destinationL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.direct_comm_establish_req.destinationL2Id;
|
||||
|
||||
#ifdef DEBUG_CTRL_SOCKET
|
||||
LOG_I(RRC,"[DirectCommunicationEstablishReq] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
|
||||
LOG_I(RRC,"[DirectCommunicationEstablishReq] source Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.sourceL2Id);
|
||||
LOG_I(RRC,"[DirectCommunicationEstablishReq] destination Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupL2Id);
|
||||
#endif
|
||||
LOG_DEBUG_BEGIN(DEBUG_CTRLSOCKET)
|
||||
LOG_UI(RRC,"[DirectCommunicationEstablishReq] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
|
||||
LOG_UI(RRC,"[DirectCommunicationEstablishReq] source Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.sourceL2Id);
|
||||
LOG_UI(RRC,"[DirectCommunicationEstablishReq] destination Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupL2Id);
|
||||
LOG_DEBUG_END
|
||||
|
||||
//store sourceL2Id/destinationL2Id
|
||||
UE_rrc_inst[module_id].sourceL2Id = sourceL2Id;
|
||||
@@ -6030,26 +6013,27 @@ void *rrc_control_socket_thread_fct(void *arg)
|
||||
}
|
||||
|
||||
|
||||
#ifdef DEBUG_CTRL_SOCKET
|
||||
LOG_DEBUG_BEGIN(DEBUG_CTRLSOCKET)
|
||||
struct sidelink_ctrl_element *ptr_ctrl_msg = NULL;
|
||||
ptr_ctrl_msg = (struct sidelink_ctrl_element *) send_buf;
|
||||
LOG_I(RRC,"[DirectCommunicationEstablishResponse] msg type: %d\n",ptr_ctrl_msg->type);
|
||||
LOG_I(RRC,"[DirectCommunicationEstablishResponse] slrb_id: %d\n",ptr_ctrl_msg->sidelinkPrimitive.slrb_id);
|
||||
#endif
|
||||
LOG_UI(RRC,"[DirectCommunicationEstablishResponse] msg type: %d\n",ptr_ctrl_msg->type);
|
||||
LOG_UI(RRC,"[DirectCommunicationEstablishResponse] slrb_id: %d\n",ptr_ctrl_msg->sidelinkPrimitive.slrb_id);
|
||||
LOG_DEBUG_END
|
||||
break;
|
||||
|
||||
case PC5S_ESTABLISH_REQ:
|
||||
type = sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.type;
|
||||
sourceL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.sourceL2Id;
|
||||
#ifdef DEBUG_CTRL_SOCKET
|
||||
LOG_I(RRC,"[PC5EstablishReq] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
|
||||
LOG_I(RRC,"[PC5EstablishReq] type: %d\n",sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.type); //RX/TX
|
||||
LOG_I(RRC,"[PC5EstablishReq] source Id: 0x%08x \n",sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.sourceL2Id);
|
||||
#endif
|
||||
LOG_DEBUG_BEGIN(DEBUG_CTRLSOCKET)
|
||||
LOG_UI(RRC,"[PC5EstablishReq] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
|
||||
LOG_UI(RRC,"[PC5EstablishReq] type: %d\n",sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.type); //RX/TX
|
||||
LOG_UI(RRC,"[PC5EstablishReq] source Id: 0x%08x \n",sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.sourceL2Id);
|
||||
LOG_DEBUG_END
|
||||
if (type > 0) {
|
||||
destinationL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.destinationL2Id;
|
||||
#ifdef DEBUG_CTRL_SOCKET
|
||||
LOG_I(RRC,"[PC5EstablishReq] destination Id: 0x%08x \n",sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.destinationL2Id);
|
||||
#endif
|
||||
LOG_DEBUG_BEGIN(DEBUG_CTRLSOCKET)
|
||||
LOG_UI(RRC,"[PC5EstablishReq] destination Id: 0x%08x \n",sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.destinationL2Id);
|
||||
LOG_DEBUG_END
|
||||
}
|
||||
|
||||
//store sourceL2Id/destinationL2Id
|
||||
@@ -6260,9 +6244,9 @@ void *rrc_control_socket_thread_fct(void *arg)
|
||||
|
||||
case PC5_DISCOVERY_MESSAGE:
|
||||
|
||||
#ifdef DEBUG_CTRL_SOCKET
|
||||
LOG_I(RRC,"[PC5DiscoveryMessage] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
|
||||
#endif
|
||||
LOG_DEBUG_BEGIN(DEBUG_CTRLSOCKET)
|
||||
LOG_UI(RRC,"[PC5DiscoveryMessage] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
|
||||
LOG_DEBUG_END
|
||||
//prepare SL_Discovery buffer
|
||||
if (UE_rrc_inst) {
|
||||
memcpy((void*)&UE_rrc_inst[module_id].SL_Discovery[0].Tx_buffer.Payload[0], (void*)&sl_ctrl_msg_recv->sidelinkPrimitive.pc5_discovery_message.payload[0], PC5_DISCOVERY_PAYLOAD_SIZE);
|
||||
|
||||
@@ -4476,7 +4476,6 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
|
||||
|
||||
|
||||
uint8_t buffer[RRC_BUF_SIZE];
|
||||
uint16_t size;
|
||||
int i;
|
||||
uint8_t rv[2];
|
||||
uint16_t Idx;
|
||||
@@ -5287,7 +5286,7 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
|
||||
// rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->reportConfigToAddModList = ReportConfig_list;
|
||||
memset(buffer, 0, RRC_BUF_SIZE);
|
||||
|
||||
size = do_RRCConnectionReconfiguration(
|
||||
int size=do_RRCConnectionReconfiguration(
|
||||
ctxt_pP,
|
||||
buffer,
|
||||
rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id), //Transaction_id,
|
||||
@@ -5313,7 +5312,11 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
|
||||
, NULL // SCellToAddMod_r10_t
|
||||
#endif
|
||||
);
|
||||
|
||||
if (size <= 0)
|
||||
LOG_E(RRC,
|
||||
"[eNB %d] Frame %d, Logical Channel DL-DCCH, Generate RRCConnectionReconfiguration for handover (bytes %d, UE rnti %x) failed\n",
|
||||
ctxt_pP->module_id, ctxt_pP->frame, size, ue_context_pP->ue_context.rnti);
|
||||
else
|
||||
LOG_I(RRC,
|
||||
"[eNB %d] Frame %d, Logical Channel DL-DCCH, Generate RRCConnectionReconfiguration for handover (bytes %d, UE rnti %x)\n",
|
||||
ctxt_pP->module_id, ctxt_pP->frame, size, ue_context_pP->ue_context.rnti);
|
||||
@@ -6368,8 +6371,8 @@ rrc_eNB_decode_ccch(
|
||||
if (InitialUE_Identity_PR_randomValue == rrcConnectionRequest->ue_Identity.present) {
|
||||
if(rrcConnectionRequest->ue_Identity.choice.randomValue.size != 5)
|
||||
{
|
||||
LOG_I(RRC, "wrong InitialUE-Identity randomValue size, expected 5, provided %d",
|
||||
rrcConnectionRequest->ue_Identity.choice.randomValue.size);
|
||||
LOG_I(RRC, "wrong InitialUE-Identity randomValue size, expected 5, provided %lu",
|
||||
(long unsigned int)rrcConnectionRequest->ue_Identity.choice.randomValue.size);
|
||||
return -1;
|
||||
}
|
||||
memcpy(((uint8_t*) & random_value) + 3,
|
||||
|
||||
@@ -1735,7 +1735,6 @@ MSC_LOG_TX_MESSAGE(
|
||||
return 0;
|
||||
}
|
||||
int rrc_eNB_process_S1AP_E_RAB_RELEASE_COMMAND(MessageDef *msg_p, const char *msg_name, instance_t instance){
|
||||
uint16_t mme_ue_s1ap_id;
|
||||
uint32_t eNB_ue_s1ap_id;
|
||||
struct rrc_eNB_ue_context_s* ue_context_p = NULL;
|
||||
protocol_ctxt_t ctxt;
|
||||
@@ -1750,7 +1749,6 @@ int rrc_eNB_process_S1AP_E_RAB_RELEASE_COMMAND(MessageDef *msg_p, const char *ms
|
||||
e_rab_release_drb = 0;
|
||||
memcpy(&e_rab_release_params[0], &(S1AP_E_RAB_RELEASE_COMMAND (msg_p).e_rab_release_params[0]), sizeof(e_rab_release_t)*S1AP_MAX_E_RAB);
|
||||
|
||||
mme_ue_s1ap_id = S1AP_E_RAB_RELEASE_COMMAND (msg_p).mme_ue_s1ap_id;
|
||||
eNB_ue_s1ap_id = S1AP_E_RAB_RELEASE_COMMAND (msg_p).eNB_ue_s1ap_id;
|
||||
nb_e_rabs_torelease = S1AP_E_RAB_RELEASE_COMMAND (msg_p).nb_e_rabs_torelease;
|
||||
ue_context_p = rrc_eNB_get_ue_context_from_s1ap_ids(instance, UE_INITIAL_ID_INVALID, eNB_ue_s1ap_id);
|
||||
@@ -1760,7 +1758,7 @@ int rrc_eNB_process_S1AP_E_RAB_RELEASE_COMMAND(MessageDef *msg_p, const char *ms
|
||||
xid = rrc_eNB_get_next_transaction_identifier(ctxt.module_id);
|
||||
|
||||
LOG_D(RRC,"S1AP-E-RAB Release Command: MME_UE_S1AP_ID %d ENB_UE_S1AP_ID %d release_e_rabs %d \n",
|
||||
mme_ue_s1ap_id, eNB_ue_s1ap_id,nb_e_rabs_torelease);
|
||||
S1AP_E_RAB_RELEASE_COMMAND (msg_p).mme_ue_s1ap_id, eNB_ue_s1ap_id,nb_e_rabs_torelease);
|
||||
for(erab = 0; erab < nb_e_rabs_torelease; erab++){
|
||||
b_existed = 0;
|
||||
is_existed = 0;
|
||||
|
||||
@@ -144,10 +144,8 @@ int network_api_initialize(const char* host, const char* port)
|
||||
#endif
|
||||
|
||||
if (_network_api_id.endpoint == NULL) {
|
||||
const char* error = ( (errno < 0) ?
|
||||
gai_strerror(errno) : strerror(errno) );
|
||||
LOG_TRACE(ERROR, "NET-API - Failed to open connection endpoint, %s",
|
||||
error);
|
||||
((errno < 0) ? gai_strerror(errno) : strerror(errno)));
|
||||
LOG_FUNC_RETURN (RETURNerror);
|
||||
}
|
||||
|
||||
|
||||
@@ -134,10 +134,8 @@ int user_api_initialize(user_api_id_t *user_api_id, const char* host, const char
|
||||
user_api_id->endpoint = user_api_id->open(SOCKET_SERVER, host, port);
|
||||
|
||||
if (user_api_id->endpoint == NULL) {
|
||||
const char* error = ( (errno < 0) ?
|
||||
gai_strerror(errno) : strerror(errno) );
|
||||
LOG_TRACE(ERROR, "USR-API - Failed to open connection endpoint, "
|
||||
"%s", error);
|
||||
"%s", ( (errno < 0) ?gai_strerror(errno) : strerror(errno) ));
|
||||
LOG_FUNC_RETURN (RETURNerror);
|
||||
}
|
||||
|
||||
|
||||
@@ -79,10 +79,12 @@ Description Defines the attach related EMM procedure executed by the
|
||||
/****************************************************************************/
|
||||
|
||||
/* String representation of the EPS attach type */
|
||||
static const char *_emm_attach_type_str[] = {
|
||||
char *emm_attach_type2str(int type) {
|
||||
static char *_emm_attach_type_str[] = {
|
||||
"EPS", "IMSI", "EMERGENCY", "RESERVED"
|
||||
};
|
||||
|
||||
return _emm_attach_type_str[type];
|
||||
}
|
||||
/*
|
||||
* --------------------------------------------------------------------------
|
||||
* Internal data handled by the attach procedure in the UE
|
||||
@@ -140,7 +142,7 @@ int emm_proc_attach(nas_user_t *user, emm_proc_attach_type_t type)
|
||||
emm_timers_t *emm_timers = user->emm_data->emm_timers;
|
||||
|
||||
LOG_TRACE(INFO, "EMM-PROC - Initiate EPS attach type = %s (%d)",
|
||||
_emm_attach_type_str[type], type);
|
||||
emm_attach_type2str(type), type);
|
||||
|
||||
/* Update the emergency bearer service indicator */
|
||||
if (type == EMM_ATTACH_TYPE_EMERGENCY) {
|
||||
|
||||
@@ -66,11 +66,13 @@ Description Defines the detach related EMM procedure executed by the
|
||||
/****************************************************************************/
|
||||
|
||||
/* String representation of the detach type */
|
||||
static const char *_emm_detach_type_str[] = {
|
||||
char *emm_detach_type2str(int type) {
|
||||
static char *_emm_detach_type_str[] = {
|
||||
"EPS", "IMSI", "EPS/IMSI",
|
||||
"RE-ATTACH REQUIRED", "RE-ATTACH NOT REQUIRED", "RESERVED"
|
||||
};
|
||||
|
||||
return _emm_detach_type_str[type];
|
||||
}
|
||||
/*
|
||||
* --------------------------------------------------------------------------
|
||||
* Internal data handled by the detach procedure in the UE
|
||||
@@ -123,7 +125,7 @@ int emm_proc_detach(nas_user_t *user, emm_proc_detach_type_t type, int switch_of
|
||||
int rc;
|
||||
|
||||
LOG_TRACE(INFO, "EMM-PROC - Initiate EPS detach type = %s (%d)",
|
||||
_emm_detach_type_str[type], type);
|
||||
emm_detach_type2str(type), type);
|
||||
|
||||
/* Initialize the detach procedure internal data */
|
||||
emm_detach_data->count = 0;
|
||||
|
||||
@@ -62,11 +62,13 @@ Description Defines the identification EMM procedure executed by the
|
||||
/******************* L O C A L D E F I N I T I O N S *******************/
|
||||
/****************************************************************************/
|
||||
|
||||
char *emm_identity_type2str(int id_type) {
|
||||
/* String representation of the requested identity type */
|
||||
static const char *_emm_identity_type_str[] = {
|
||||
static char *_emm_identity_type_str[] = {
|
||||
"NOT AVAILABLE", "IMSI", "IMEI", "IMEISV", "TMSI"
|
||||
};
|
||||
|
||||
return _emm_identity_type_str[id_type];
|
||||
}
|
||||
/*
|
||||
* --------------------------------------------------------------------------
|
||||
* Internal data handled by the identification procedure in the UE
|
||||
@@ -111,7 +113,7 @@ int emm_proc_identification_request(nas_user_t *user, emm_proc_identity_type_t t
|
||||
emm_sap_t emm_sap;
|
||||
|
||||
LOG_TRACE(INFO, "EMM-PROC - Identification requested type = %s (%d)",
|
||||
_emm_identity_type_str[type], type);
|
||||
emm_identity_type2str(type), type);
|
||||
|
||||
/* Setup EMM procedure handler to be executed upon receiving
|
||||
* lower layer notification */
|
||||
|
||||
@@ -74,7 +74,9 @@ Description Defines the EMMAS Service Access Point that provides
|
||||
/*
|
||||
* String representation of EMMAS-SAP primitives
|
||||
*/
|
||||
static const char *_emm_as_primitive_str[] = {
|
||||
|
||||
char *emmas_to_str(int emmas) {
|
||||
static char *_emm_as_primitive_str[] = {
|
||||
"EMMAS_SECURITY_REQ",
|
||||
"EMMAS_SECURITY_IND",
|
||||
"EMMAS_SECURITY_RES",
|
||||
@@ -92,7 +94,8 @@ static const char *_emm_as_primitive_str[] = {
|
||||
"EMMAS_CELL_INFO_RES",
|
||||
"EMMAS_CELL_INFO_IND",
|
||||
};
|
||||
|
||||
return _emm_as_primitive_str[emmas];
|
||||
}
|
||||
/*
|
||||
* Functions executed to process EMM procedures upon receiving
|
||||
* data from the network
|
||||
@@ -195,7 +198,7 @@ int emm_as_send(nas_user_t *user, const emm_as_t *msg)
|
||||
emm_as_primitive_t primitive = msg->primitive;
|
||||
|
||||
LOG_TRACE(INFO, "EMMAS-SAP - Received primitive %s (%d)",
|
||||
_emm_as_primitive_str[primitive - _EMMAS_START - 1], primitive);
|
||||
emmas_to_str(primitive - _EMMAS_START - 1), primitive);
|
||||
|
||||
switch (primitive) {
|
||||
case _EMMAS_DATA_IND:
|
||||
@@ -234,7 +237,7 @@ int emm_as_send(nas_user_t *user, const emm_as_t *msg)
|
||||
if (rc != RETURNok) {
|
||||
LOG_TRACE(ERROR, "EMMAS-SAP - "
|
||||
"Failed to process primitive %s (%d)",
|
||||
_emm_as_primitive_str[primitive - _EMMAS_START - 1],
|
||||
emmas_to_str(primitive - _EMMAS_START - 1),
|
||||
primitive);
|
||||
LOG_FUNC_RETURN (RETURNerror);
|
||||
}
|
||||
@@ -266,7 +269,7 @@ int emm_as_send(nas_user_t *user, const emm_as_t *msg)
|
||||
|
||||
if (rc != RETURNok) {
|
||||
LOG_TRACE(ERROR, "EMMAS-SAP - Failed to process primitive %s (%d)",
|
||||
_emm_as_primitive_str[primitive - _EMMAS_START - 1],
|
||||
emmas_to_str(primitive - _EMMAS_START - 1),
|
||||
primitive);
|
||||
}
|
||||
|
||||
@@ -984,7 +987,7 @@ static int _emm_as_send(const nas_user_t *user, const emm_as_t *msg)
|
||||
LOG_TRACE(DEBUG, "EMMAS-SAP - "
|
||||
"Sending msg with id 0x%x, primitive %s (%d) to RRC layer for transmission",
|
||||
as_msg.msgID,
|
||||
_emm_as_primitive_str[msg->primitive - _EMMAS_START - 1],
|
||||
emmas_to_str(msg->primitive - _EMMAS_START - 1),
|
||||
msg->primitive);
|
||||
|
||||
switch (as_msg.msgID) {
|
||||
|
||||
@@ -58,6 +58,7 @@ Description Defines the EMMESM Service Access Point that provides
|
||||
/*
|
||||
* String representation of EMMESM-SAP primitives
|
||||
*/
|
||||
const char *emm_esm_primitive2str(int esmprim) {
|
||||
static const char *_emm_esm_primitive_str[] = {
|
||||
"EMMESM_ESTABLISH_REQ",
|
||||
"EMMESM_ESTABLISH_CNF",
|
||||
@@ -66,6 +67,8 @@ static const char *_emm_esm_primitive_str[] = {
|
||||
"EMMESM_UNITDATA_REQ",
|
||||
"EMMESM_UNITDATA_IND",
|
||||
};
|
||||
return _emm_esm_primitive_str[esmprim];
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
/****************** E X P O R T E D F U N C T I O N S ******************/
|
||||
@@ -116,7 +119,7 @@ int emm_esm_send(nas_user_t *user, const emm_esm_t *msg)
|
||||
emm_esm_primitive_t primitive = msg->primitive;
|
||||
|
||||
LOG_TRACE(INFO, "EMMESM-SAP - Received primitive %s (%d)",
|
||||
_emm_esm_primitive_str[primitive - _EMMESM_START - 1], primitive);
|
||||
emm_esm_primitive2str(primitive - _EMMESM_START - 1), primitive);
|
||||
|
||||
switch (primitive) {
|
||||
|
||||
@@ -159,7 +162,7 @@ int emm_esm_send(nas_user_t *user, const emm_esm_t *msg)
|
||||
|
||||
if (rc != RETURNok) {
|
||||
LOG_TRACE(WARNING, "EMMESM-SAP - Failed to process primitive %s (%d)",
|
||||
_emm_esm_primitive_str[primitive - _EMMESM_START - 1],
|
||||
emm_esm_primitive2str(primitive - _EMMESM_START - 1),
|
||||
primitive);
|
||||
}
|
||||
|
||||
|
||||
@@ -64,6 +64,7 @@ Description Defines the EPS Mobility Management procedures executed at
|
||||
*/
|
||||
|
||||
/* String representation of EMM events */
|
||||
const char *emm_fsm_event2str(int evt) {
|
||||
static const char *_emm_fsm_event_str[] = {
|
||||
"S1_ENABLED",
|
||||
"S1_DISABLED",
|
||||
@@ -93,7 +94,10 @@ static const char *_emm_fsm_event_str[] = {
|
||||
"LOWERLAYER_FAILURE",
|
||||
"LOWERLAYER_RELEASE",
|
||||
};
|
||||
return _emm_fsm_event_str[evt];
|
||||
}
|
||||
|
||||
const char *emm_fsm_status2str(int status) {
|
||||
/* String representation of EMM status */
|
||||
static const char *_emm_fsm_status_str[EMM_STATE_MAX] = {
|
||||
"INVALID",
|
||||
@@ -120,7 +124,8 @@ static const char *_emm_fsm_status_str[EMM_STATE_MAX] = {
|
||||
"TRACKING-AREA-UPDATING-INITIATED",
|
||||
"SERVICE-REQUEST-INITIATED",
|
||||
};
|
||||
|
||||
return _emm_fsm_status_str[status];
|
||||
}
|
||||
/*
|
||||
* -----------------------------------------------------------------------------
|
||||
* EPS Mobility Management state machine handlers
|
||||
@@ -229,8 +234,8 @@ int emm_fsm_set_status(nas_user_t *user,
|
||||
|
||||
if ( status < EMM_STATE_MAX ) {
|
||||
LOG_TRACE(INFO, "EMM-FSM - Status changed: %s ===> %s",
|
||||
_emm_fsm_status_str[user->emm_fsm_status],
|
||||
_emm_fsm_status_str[status]);
|
||||
emm_fsm_status2str(user->emm_fsm_status),
|
||||
emm_fsm_status2str(status));
|
||||
|
||||
if (status != user->emm_fsm_status) {
|
||||
user->emm_fsm_status = status;
|
||||
@@ -280,17 +285,15 @@ int emm_fsm_process(nas_user_t *user, const emm_reg_t *evt)
|
||||
{
|
||||
int rc;
|
||||
emm_fsm_state_t status;
|
||||
emm_reg_primitive_t primitive;
|
||||
|
||||
LOG_FUNC_IN;
|
||||
|
||||
primitive = evt->primitive;
|
||||
|
||||
status = user->emm_fsm_status;
|
||||
|
||||
LOG_TRACE(INFO, "EMM-FSM - Received event %s (%d) in state %s",
|
||||
_emm_fsm_event_str[primitive - _EMMREG_START - 1], primitive,
|
||||
_emm_fsm_status_str[status]);
|
||||
emm_fsm_event2str(evt->primitive - _EMMREG_START - 1), evt->primitive,
|
||||
emm_fsm_status2str(status));
|
||||
|
||||
|
||||
/* Execute the EMM state machine */
|
||||
|
||||
@@ -357,7 +357,8 @@ int esm_proc_pdn_connectivity_accept(nas_user_t *user, int pti, esm_proc_pdn_typ
|
||||
int rc;
|
||||
int pid = RETURNerror;
|
||||
char apn_first_char[4];
|
||||
char str[128];
|
||||
|
||||
LOG_VAR(char, str[128]);
|
||||
|
||||
if (isprint(apn->value[0])) {
|
||||
apn_first_char[0] = '\0';
|
||||
|
||||
@@ -72,6 +72,8 @@ static int _esm_sap_send(nas_user_t *user, int msg_type, int is_standalone, int
|
||||
/*
|
||||
* String representation of ESM-SAP primitives
|
||||
*/
|
||||
|
||||
const char *esm_sap_primitive2str(int esmsapp) {
|
||||
static const char *_esm_sap_primitive_str[] = {
|
||||
"ESM_DEFAULT_EPS_BEARER_CONTEXT_ACTIVATE_REQ",
|
||||
"ESM_DEFAULT_EPS_BEARER_CONTEXT_ACTIVATE_CNF",
|
||||
@@ -94,7 +96,8 @@ static const char *_esm_sap_primitive_str[] = {
|
||||
"ESM_BEARER_RESOURCE_MODIFY_REJ",
|
||||
"ESM_UNITDATA_IND",
|
||||
};
|
||||
|
||||
return _esm_sap_primitive_str[esmsapp];
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
/****************** E X P O R T E D F U N C T I O N S ******************/
|
||||
@@ -152,7 +155,7 @@ int esm_sap_send(nas_user_t *user, esm_sap_t *msg)
|
||||
assert( (primitive > ESM_START) && (primitive < ESM_END));
|
||||
|
||||
LOG_TRACE(INFO, "ESM-SAP - Received primitive %s (%d)",
|
||||
_esm_sap_primitive_str[primitive - ESM_START - 1], primitive);
|
||||
esm_sap_primitive2str(primitive - ESM_START - 1), primitive);
|
||||
|
||||
switch (primitive) {
|
||||
case ESM_PDN_CONNECTIVITY_REQ:
|
||||
|
||||
@@ -56,10 +56,13 @@ Description Defines functions used to handle state of EPS bearer contexts
|
||||
/****************************************************************************/
|
||||
|
||||
/* String representation of EPS bearer context status */
|
||||
const char *esm_ebr_state2str(int esmebrstate) {
|
||||
static const char *_esm_ebr_state_str[ESM_EBR_STATE_MAX] = {
|
||||
"BEARER CONTEXT INACTIVE",
|
||||
"BEARER CONTEXT ACTIVE",
|
||||
};
|
||||
return _esm_ebr_state_str[esmebrstate];
|
||||
}
|
||||
|
||||
/*
|
||||
* ----------------------
|
||||
@@ -318,7 +321,7 @@ int esm_ebr_set_status(user_api_id_t *user_api_id, esm_ebr_data_t *esm_ebr_data,
|
||||
if (status < ESM_EBR_STATE_MAX) {
|
||||
LOG_TRACE(INFO, "ESM-FSM - Status of EPS bearer context %d changed:"
|
||||
" %s ===> %s", ebi,
|
||||
_esm_ebr_state_str[old_status], _esm_ebr_state_str[status]);
|
||||
esm_ebr_state2str(old_status), esm_ebr_state2str(status));
|
||||
|
||||
if (status != old_status) {
|
||||
ebr_ctx->status = status;
|
||||
|
||||
@@ -56,10 +56,13 @@ Description Defines functions used to handle ESM procedure transactions.
|
||||
/****************************************************************************/
|
||||
|
||||
/* String representation of ESM procedure transaction status */
|
||||
const char *esm_pt_state2str( int esmptstate){
|
||||
static const char *_esm_pt_state_str[ESM_PT_STATE_MAX] = {
|
||||
"PROCEDURE TRANSACTION INACTIVE",
|
||||
"PROCEDURE TRANSACTION PENDING"
|
||||
};
|
||||
return _esm_pt_state_str[esmptstate];
|
||||
}
|
||||
|
||||
/* Return the index of the next available entry in the list of procedure
|
||||
* transaction data */
|
||||
@@ -380,7 +383,7 @@ int esm_pt_set_status(esm_pt_data_t *esm_pt_data, int pti, esm_pt_state status)
|
||||
if (status < ESM_PT_STATE_MAX) {
|
||||
LOG_TRACE(INFO, "ESM-FSM - Status of procedure transaction %d changed:"
|
||||
" %s ===> %s", pti,
|
||||
_esm_pt_state_str[old_status], _esm_pt_state_str[status]);
|
||||
esm_pt_state2str(old_status), esm_pt_state2str(status));
|
||||
|
||||
if (status != old_status) {
|
||||
ctx->status = status;
|
||||
|
||||
@@ -89,7 +89,6 @@ void *nas_ue_task(void *args_p)
|
||||
int nb_events;
|
||||
struct epoll_event *events;
|
||||
MessageDef *msg_p;
|
||||
const char *msg_name;
|
||||
instance_t instance;
|
||||
unsigned int Mod_id;
|
||||
int result;
|
||||
@@ -147,19 +146,18 @@ void *nas_ue_task(void *args_p)
|
||||
itti_receive_msg (TASK_NAS_UE, &msg_p);
|
||||
|
||||
if (msg_p != NULL) {
|
||||
msg_name = ITTI_MSG_NAME (msg_p);
|
||||
instance = ITTI_MSG_INSTANCE (msg_p);
|
||||
Mod_id = instance - NB_eNB_INST;
|
||||
if (instance == INSTANCE_DEFAULT) {
|
||||
printf("%s:%d: FATAL: instance is INSTANCE_DEFAULT, should not happen.\n",
|
||||
__FILE__, __LINE__);
|
||||
abort();
|
||||
exit_fun("exit... \n");
|
||||
}
|
||||
nas_user_t *user = &users->item[Mod_id];
|
||||
|
||||
switch (ITTI_MSG_ID(msg_p)) {
|
||||
case INITIALIZE_MESSAGE:
|
||||
LOG_I(NAS, "[UE %d] Received %s\n", Mod_id, msg_name);
|
||||
LOG_I(NAS, "[UE %d] Received %s\n", Mod_id, ITTI_MSG_NAME (msg_p));
|
||||
#if (NAS_UE_AUTOSTART != 0)
|
||||
{
|
||||
/* Send an activate modem command to NAS like UserProcess should do it */
|
||||
@@ -175,11 +173,11 @@ void *nas_ue_task(void *args_p)
|
||||
break;
|
||||
|
||||
case MESSAGE_TEST:
|
||||
LOG_I(NAS, "[UE %d] Received %s\n", Mod_id, msg_name);
|
||||
LOG_I(NAS, "[UE %d] Received %s\n", Mod_id, ITTI_MSG_NAME (msg_p));
|
||||
break;
|
||||
|
||||
case NAS_CELL_SELECTION_CNF:
|
||||
LOG_I(NAS, "[UE %d] Received %s: errCode %u, cellID %u, tac %u\n", Mod_id, msg_name,
|
||||
LOG_I(NAS, "[UE %d] Received %s: errCode %u, cellID %u, tac %u\n", Mod_id, ITTI_MSG_NAME (msg_p),
|
||||
NAS_CELL_SELECTION_CNF (msg_p).errCode, NAS_CELL_SELECTION_CNF (msg_p).cellID, NAS_CELL_SELECTION_CNF (msg_p).tac);
|
||||
|
||||
{
|
||||
@@ -192,21 +190,21 @@ void *nas_ue_task(void *args_p)
|
||||
break;
|
||||
|
||||
case NAS_CELL_SELECTION_IND:
|
||||
LOG_I(NAS, "[UE %d] Received %s: cellID %u, tac %u\n", Mod_id, msg_name,
|
||||
LOG_I(NAS, "[UE %d] Received %s: cellID %u, tac %u\n", Mod_id, ITTI_MSG_NAME (msg_p),
|
||||
NAS_CELL_SELECTION_IND (msg_p).cellID, NAS_CELL_SELECTION_IND (msg_p).tac);
|
||||
|
||||
/* TODO not processed by NAS currently */
|
||||
break;
|
||||
|
||||
case NAS_PAGING_IND:
|
||||
LOG_I(NAS, "[UE %d] Received %s: cause %u\n", Mod_id, msg_name,
|
||||
LOG_I(NAS, "[UE %d] Received %s: cause %u\n", Mod_id, ITTI_MSG_NAME (msg_p),
|
||||
NAS_PAGING_IND (msg_p).cause);
|
||||
|
||||
/* TODO not processed by NAS currently */
|
||||
break;
|
||||
|
||||
case NAS_CONN_ESTABLI_CNF:
|
||||
LOG_I(NAS, "[UE %d] Received %s: errCode %u, length %u\n", Mod_id, msg_name,
|
||||
LOG_I(NAS, "[UE %d] Received %s: errCode %u, length %u\n", Mod_id, ITTI_MSG_NAME (msg_p),
|
||||
NAS_CONN_ESTABLI_CNF (msg_p).errCode, NAS_CONN_ESTABLI_CNF (msg_p).nasMsg.length);
|
||||
|
||||
if ((NAS_CONN_ESTABLI_CNF (msg_p).errCode == AS_SUCCESS)
|
||||
@@ -221,14 +219,14 @@ void *nas_ue_task(void *args_p)
|
||||
break;
|
||||
|
||||
case NAS_CONN_RELEASE_IND:
|
||||
LOG_I(NAS, "[UE %d] Received %s: cause %u\n", Mod_id, msg_name,
|
||||
LOG_I(NAS, "[UE %d] Received %s: cause %u\n", Mod_id, ITTI_MSG_NAME (msg_p),
|
||||
NAS_CONN_RELEASE_IND (msg_p).cause);
|
||||
|
||||
nas_proc_release_ind (user, NAS_CONN_RELEASE_IND (msg_p).cause);
|
||||
break;
|
||||
|
||||
case NAS_UPLINK_DATA_CNF:
|
||||
LOG_I(NAS, "[UE %d] Received %s: UEid %u, errCode %u\n", Mod_id, msg_name,
|
||||
LOG_I(NAS, "[UE %d] Received %s: UEid %u, errCode %u\n", Mod_id, ITTI_MSG_NAME (msg_p),
|
||||
NAS_UPLINK_DATA_CNF (msg_p).UEid, NAS_UPLINK_DATA_CNF (msg_p).errCode);
|
||||
|
||||
if (NAS_UPLINK_DATA_CNF (msg_p).errCode == AS_SUCCESS) {
|
||||
@@ -240,7 +238,7 @@ void *nas_ue_task(void *args_p)
|
||||
break;
|
||||
|
||||
case NAS_DOWNLINK_DATA_IND:
|
||||
LOG_I(NAS, "[UE %d] Received %s: UEid %u, length %u\n", Mod_id, msg_name,
|
||||
LOG_I(NAS, "[UE %d] Received %s: UEid %u, length %u\n", Mod_id, ITTI_MSG_NAME (msg_p),
|
||||
NAS_DOWNLINK_DATA_IND (msg_p).UEid, NAS_DOWNLINK_DATA_IND (msg_p).nasMsg.length);
|
||||
|
||||
nas_proc_dl_transfer_ind (user, NAS_DOWNLINK_DATA_IND(msg_p).nasMsg.data, NAS_DOWNLINK_DATA_IND(msg_p).nasMsg.length);
|
||||
@@ -254,7 +252,7 @@ void *nas_ue_task(void *args_p)
|
||||
break;
|
||||
|
||||
default:
|
||||
LOG_E(NAS, "[UE %d] Received unexpected message %s\n", Mod_id, msg_name);
|
||||
LOG_E(NAS, "[UE %d] Received unexpected message %s\n", Mod_id, ITTI_MSG_NAME (msg_p));
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -147,14 +147,15 @@ s1ap_message_decoded_callback messages_callback[][3] = {
|
||||
{ 0, 0, 0 }, /* UplinkNonUEAssociatedLPPaTransport */
|
||||
#endif /* #if (S1AP_VERSION >= MAKE_VERSION(9, 0, 0)) */
|
||||
};
|
||||
|
||||
static const char *s1ap_direction2String[] = {
|
||||
char *s1ap_direction2String(int s1ap_dir) {
|
||||
static char *s1ap_direction_String[] = {
|
||||
"", /* Nothing */
|
||||
"Originating message", /* originating message */
|
||||
"Successfull outcome", /* successfull outcome */
|
||||
"UnSuccessfull outcome", /* successfull outcome */
|
||||
};
|
||||
|
||||
return(s1ap_direction_String[s1ap_dir]);
|
||||
}
|
||||
void s1ap_handle_s1_setup_message(s1ap_eNB_mme_data_t *mme_desc_p, int sctp_shutdown)
|
||||
{
|
||||
if (sctp_shutdown) {
|
||||
@@ -230,7 +231,7 @@ int s1ap_eNB_handle_message(uint32_t assoc_id, int32_t stream,
|
||||
if (messages_callback[pdu.choice.initiatingMessage.procedureCode][pdu.present - 1] == NULL) {
|
||||
S1AP_ERROR("[SCTP %d] No handler for procedureCode %ld in %s\n",
|
||||
assoc_id, pdu.choice.initiatingMessage.procedureCode,
|
||||
s1ap_direction2String[pdu.present - 1]);
|
||||
s1ap_direction2String(pdu.present - 1));
|
||||
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1AP_S1AP_PDU, &pdu);
|
||||
return -1;
|
||||
}
|
||||
@@ -852,7 +853,7 @@ int s1ap_eNB_handle_ue_context_release_command(uint32_t assoc_id,
|
||||
MSC_S1AP_MME,
|
||||
NULL,0,
|
||||
"0 UEContextRelease/%s eNB_ue_s1ap_id "S1AP_UE_ID_FMT" mme_ue_s1ap_id "S1AP_UE_ID_FMT" len %u",
|
||||
s1ap_direction2String[pdu->present - 1],
|
||||
s1ap_direction2String(pdu->present - 1),
|
||||
enb_ue_s1ap_id,
|
||||
mme_ue_s1ap_id);
|
||||
|
||||
|
||||
+25
-78
@@ -435,7 +435,7 @@ void init_UE_stub(int nb_inst,int eMBMS_active, int uecap_xer_in, char *emul_ifa
|
||||
static void *UE_thread_synch(void *arg)
|
||||
{
|
||||
static int UE_thread_synch_retval;
|
||||
int i, hw_slot_offset;
|
||||
int i ;
|
||||
PHY_VARS_UE *UE = (PHY_VARS_UE*) arg;
|
||||
int current_band = 0;
|
||||
int current_offset = 0;
|
||||
@@ -573,9 +573,8 @@ static void *UE_thread_synch(void *arg)
|
||||
#endif
|
||||
if (initial_sync( UE, UE->mode ) == 0) {
|
||||
|
||||
hw_slot_offset = (UE->rx_offset<<1) / UE->frame_parms.samples_per_tti;
|
||||
LOG_I( HW, "Got synch: hw_slot_offset %d, carrier off %d Hz, rxgain %d (DL %u, UL %u), UE_scan_carrier %d\n",
|
||||
hw_slot_offset,
|
||||
(UE->rx_offset<<1) / UE->frame_parms.samples_per_tti,
|
||||
freq_offset,
|
||||
UE->rx_total_gain_dB,
|
||||
downlink_frequency[0][0]+freq_offset,
|
||||
@@ -738,13 +737,23 @@ static void *UE_thread_synch(void *arg)
|
||||
* \param arg is a pointer to a \ref PHY_VARS_UE structure.
|
||||
* \returns a pointer to an int. The storage is not on the heap and must not be freed.
|
||||
*/
|
||||
const char * get_connectionloss_errstr(int errcode) {
|
||||
switch (errcode) {
|
||||
case CONNECTION_LOST:
|
||||
return "RRC Connection lost, returning to PRACH";
|
||||
case PHY_RESYNCH:
|
||||
return "RRC Connection lost, trying to resynch";
|
||||
case RESYNCH:
|
||||
return "return to PRACH and perform a contention-free access";
|
||||
};
|
||||
return "UNKNOWN RETURN CODE";
|
||||
}
|
||||
|
||||
static void *UE_thread_rxn_txnp4(void *arg) {
|
||||
static __thread int UE_thread_rxtx_retval;
|
||||
struct rx_tx_thread_data *rtd = arg;
|
||||
UE_rxtx_proc_t *proc = rtd->proc;
|
||||
PHY_VARS_UE *UE = rtd->UE;
|
||||
int ret;
|
||||
|
||||
proc->instance_cnt_rxtx=-1;
|
||||
proc->subframe_rx=proc->sub_frame_start;
|
||||
@@ -817,7 +826,7 @@ static void *UE_thread_rxn_txnp4(void *arg) {
|
||||
#endif
|
||||
if (UE->mac_enabled==1) {
|
||||
|
||||
ret = ue_scheduler(UE->Mod_id,
|
||||
int ret = ue_scheduler(UE->Mod_id,
|
||||
proc->frame_rx,
|
||||
proc->subframe_rx,
|
||||
proc->frame_tx,
|
||||
@@ -826,22 +835,8 @@ static void *UE_thread_rxn_txnp4(void *arg) {
|
||||
0,
|
||||
0/*FIXME CC_id*/);
|
||||
if ( ret != CONNECTION_OK) {
|
||||
char *txt;
|
||||
switch (ret) {
|
||||
case CONNECTION_LOST:
|
||||
txt="RRC Connection lost, returning to PRACH";
|
||||
break;
|
||||
case PHY_RESYNCH:
|
||||
txt="RRC Connection lost, trying to resynch";
|
||||
break;
|
||||
case RESYNCH:
|
||||
txt="return to PRACH and perform a contention-free access";
|
||||
break;
|
||||
default:
|
||||
txt="UNKNOWN RETURN CODE";
|
||||
};
|
||||
LOG_E( PHY, "[UE %"PRIu8"] Frame %"PRIu32", subframe %u %s\n",
|
||||
UE->Mod_id, proc->frame_rx, proc->subframe_tx,txt );
|
||||
UE->Mod_id, proc->frame_rx, proc->subframe_tx,get_connectionloss_errstr(ret) );
|
||||
}
|
||||
}
|
||||
#if UE_TIMING_TRACE
|
||||
@@ -973,12 +968,7 @@ static void *UE_phy_stub_single_thread_rxn_txnp4(void *arg) {
|
||||
|
||||
PHY_VARS_UE *UE; //= rtd->UE;
|
||||
int ret;
|
||||
// double t_diff;
|
||||
|
||||
char threadname[256];
|
||||
//sprintf(threadname,"UE_%d_proc", UE->Mod_id);
|
||||
|
||||
//proc->instance_cnt_rxtx=-1;
|
||||
|
||||
phy_stub_ticking->ticking_var = -1;
|
||||
proc->subframe_rx=proc->sub_frame_start;
|
||||
@@ -1050,15 +1040,13 @@ static void *UE_phy_stub_single_thread_rxn_txnp4(void *arg) {
|
||||
(sf_type == SF_S)) {
|
||||
|
||||
if (UE->frame_parms.frame_type == TDD) {
|
||||
LOG_D(PHY, "%s,TDD%d,%s: calling UE_RX\n",
|
||||
threadname,
|
||||
LOG_D(PHY, "TDD%d,%s: calling UE_RX\n",
|
||||
UE->frame_parms.tdd_config,
|
||||
(sf_type==SF_DL? "SF_DL" :
|
||||
(sf_type==SF_UL? "SF_UL" :
|
||||
(sf_type==SF_S ? "SF_S" : "UNKNOWN_SF_TYPE"))));
|
||||
} else {
|
||||
LOG_D(PHY, "%s,%s,%s: calling UE_RX\n",
|
||||
threadname,
|
||||
LOG_D(PHY, "%s,%s: calling UE_RX\n",
|
||||
(UE->frame_parms.frame_type==FDD? "FDD":
|
||||
(UE->frame_parms.frame_type==TDD? "TDD":"UNKNOWN_DUPLEX_MODE")),
|
||||
(sf_type==SF_DL? "SF_DL" :
|
||||
@@ -1099,22 +1087,8 @@ static void *UE_phy_stub_single_thread_rxn_txnp4(void *arg) {
|
||||
0,
|
||||
0/*FIXME CC_id*/);
|
||||
if ( ret != CONNECTION_OK) {
|
||||
char *txt;
|
||||
switch (ret) {
|
||||
case CONNECTION_LOST:
|
||||
txt="RRC Connection lost, returning to PRACH";
|
||||
break;
|
||||
case PHY_RESYNCH:
|
||||
txt="RRC Connection lost, trying to resynch";
|
||||
break;
|
||||
case RESYNCH:
|
||||
txt="return to PRACH and perform a contention-free access";
|
||||
break;
|
||||
default:
|
||||
txt="UNKNOWN RETURN CODE";
|
||||
};
|
||||
LOG_E( PHY, "[UE %"PRIu8"] Frame %"PRIu32", subframe %u %s\n",
|
||||
UE->Mod_id, proc->frame_rx, proc->subframe_tx,txt );
|
||||
UE->Mod_id, proc->frame_rx, proc->subframe_tx,get_connectionloss_errstr(ret) );
|
||||
}
|
||||
}
|
||||
#if UE_TIMING_TRACE
|
||||
@@ -1281,14 +1255,6 @@ static void *UE_phy_stub_thread_rxn_txnp4(void *arg) {
|
||||
struct rx_tx_thread_data *rtd = arg;
|
||||
UE_rxtx_proc_t *proc = rtd->proc;
|
||||
PHY_VARS_UE *UE = rtd->UE;
|
||||
int ret;
|
||||
// double t_diff;
|
||||
|
||||
char threadname[256];
|
||||
sprintf(threadname,"UE_%d_proc", UE->Mod_id);
|
||||
|
||||
|
||||
//proc->instance_cnt_rxtx=-1;
|
||||
|
||||
phy_stub_ticking->ticking_var = -1;
|
||||
proc->subframe_rx=proc->sub_frame_start;
|
||||
@@ -1327,15 +1293,13 @@ static void *UE_phy_stub_thread_rxn_txnp4(void *arg) {
|
||||
(sf_type == SF_S)) {
|
||||
|
||||
if (UE->frame_parms.frame_type == TDD) {
|
||||
LOG_D(PHY, "%s,TDD%d,%s: calling UE_RX\n",
|
||||
threadname,
|
||||
LOG_D(PHY, "TDD%d,%s: calling UE_RX\n",
|
||||
UE->frame_parms.tdd_config,
|
||||
(sf_type==SF_DL? "SF_DL" :
|
||||
(sf_type==SF_UL? "SF_UL" :
|
||||
(sf_type==SF_S ? "SF_S" : "UNKNOWN_SF_TYPE"))));
|
||||
} else {
|
||||
LOG_D(PHY, "%s,%s,%s: calling UE_RX\n",
|
||||
threadname,
|
||||
LOG_D(PHY, "%s,%s: calling UE_RX\n",
|
||||
(UE->frame_parms.frame_type==FDD? "FDD":
|
||||
(UE->frame_parms.frame_type==TDD? "TDD":"UNKNOWN_DUPLEX_MODE")),
|
||||
(sf_type==SF_DL? "SF_DL" :
|
||||
@@ -1379,7 +1343,7 @@ static void *UE_phy_stub_thread_rxn_txnp4(void *arg) {
|
||||
#endif
|
||||
if (UE->mac_enabled==1) {
|
||||
|
||||
ret = ue_scheduler(UE->Mod_id,
|
||||
int ret = ue_scheduler(UE->Mod_id,
|
||||
proc->frame_rx,
|
||||
proc->subframe_rx,
|
||||
proc->frame_tx,
|
||||
@@ -1387,24 +1351,9 @@ static void *UE_phy_stub_thread_rxn_txnp4(void *arg) {
|
||||
subframe_select(&UE->frame_parms,proc->subframe_tx),
|
||||
0,
|
||||
0);
|
||||
if ( ret != CONNECTION_OK) {
|
||||
char *txt;
|
||||
switch (ret) {
|
||||
case CONNECTION_LOST:
|
||||
txt="RRC Connection lost, returning to PRACH";
|
||||
break;
|
||||
case PHY_RESYNCH:
|
||||
txt="RRC Connection lost, trying to resynch";
|
||||
break;
|
||||
case RESYNCH:
|
||||
txt="return to PRACH and perform a contention-free access";
|
||||
break;
|
||||
default:
|
||||
txt="UNKNOWN RETURN CODE";
|
||||
};
|
||||
if (ret != CONNECTION_OK)
|
||||
LOG_E( PHY, "[UE %"PRIu8"] Frame %"PRIu32", subframe %u %s\n",
|
||||
UE->Mod_id, proc->frame_rx, proc->subframe_tx,txt );
|
||||
}
|
||||
UE->Mod_id, proc->frame_rx, proc->subframe_tx,get_connectionloss_errstr(ret) );
|
||||
}
|
||||
#if UE_TIMING_TRACE
|
||||
stop_meas(&UE->generic_stat);
|
||||
@@ -1941,10 +1890,8 @@ int setup_ue_buffers(PHY_VARS_UE **phy_vars_ue, openair0_config_t *openair0_cfg)
|
||||
|
||||
int i, CC_id;
|
||||
LTE_DL_FRAME_PARMS *frame_parms;
|
||||
openair0_rf_map *rf_map;
|
||||
|
||||
for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
|
||||
rf_map = &phy_vars_ue[CC_id]->rf_map;
|
||||
|
||||
AssertFatal( phy_vars_ue[CC_id] !=0, "");
|
||||
frame_parms = &(phy_vars_ue[CC_id]->frame_parms);
|
||||
@@ -1955,7 +1902,7 @@ int setup_ue_buffers(PHY_VARS_UE **phy_vars_ue, openair0_config_t *openair0_cfg)
|
||||
|
||||
for (i=0; i<frame_parms->nb_antennas_rx; i++) {
|
||||
LOG_I(PHY, "Mapping UE CC_id %d, rx_ant %d, freq %u on card %d, chain %d\n",
|
||||
CC_id, i, downlink_frequency[CC_id][i], rf_map->card, rf_map->chain+i );
|
||||
CC_id, i, downlink_frequency[CC_id][i], phy_vars_ue[CC_id]->rf_map.card, (phy_vars_ue[CC_id]->rf_map.chain)+i );
|
||||
free( phy_vars_ue[CC_id]->common_vars.rxdata[i] );
|
||||
rxdata[i] = (int32_t*)malloc16_clear( 307200*sizeof(int32_t) );
|
||||
phy_vars_ue[CC_id]->common_vars.rxdata[i] = rxdata[i]; // what about the "-N_TA_offset" ? // N_TA offset for TDD
|
||||
@@ -1963,7 +1910,7 @@ int setup_ue_buffers(PHY_VARS_UE **phy_vars_ue, openair0_config_t *openair0_cfg)
|
||||
|
||||
for (i=0; i<frame_parms->nb_antennas_tx; i++) {
|
||||
LOG_I(PHY, "Mapping UE CC_id %d, tx_ant %d, freq %u on card %d, chain %d\n",
|
||||
CC_id, i, downlink_frequency[CC_id][i], rf_map->card, rf_map->chain+i );
|
||||
CC_id, i, downlink_frequency[CC_id][i], phy_vars_ue[CC_id]->rf_map.card, (phy_vars_ue[CC_id]->rf_map.chain)+i );
|
||||
free( phy_vars_ue[CC_id]->common_vars.txdata[i] );
|
||||
txdata[i] = (int32_t*)malloc16_clear( 307200*sizeof(int32_t) );
|
||||
phy_vars_ue[CC_id]->common_vars.txdata[i] = txdata[i];
|
||||
|
||||
@@ -327,6 +327,7 @@ void exit_fun(const char* s)
|
||||
{
|
||||
int CC_id;
|
||||
|
||||
logClean();
|
||||
if (s != NULL) {
|
||||
printf("%s %s() Exiting OAI softmodem: %s\n",__FILE__, __FUNCTION__, s);
|
||||
}
|
||||
@@ -830,17 +831,17 @@ int main( int argc, char **argv )
|
||||
set_taus_seed (0);
|
||||
|
||||
|
||||
set_log(HW, LOG_DEBUG, 1);
|
||||
set_log(PHY, LOG_INFO, 1);
|
||||
set_log(MAC, LOG_INFO, 1);
|
||||
set_log(RLC, LOG_INFO, 1);
|
||||
set_log(PDCP, LOG_INFO, 1);
|
||||
set_log(OTG, LOG_INFO, 1);
|
||||
set_log(RRC, LOG_INFO, 1);
|
||||
set_log(HW, OAILOG_DEBUG, 1);
|
||||
set_log(PHY, OAILOG_INFO, 1);
|
||||
set_log(MAC, OAILOG_INFO, 1);
|
||||
set_log(RLC, OAILOG_INFO, 1);
|
||||
set_log(PDCP, OAILOG_INFO, 1);
|
||||
set_log(OTG, OAILOG_INFO, 1);
|
||||
set_log(RRC, OAILOG_INFO, 1);
|
||||
#if defined(ENABLE_ITTI)
|
||||
set_comp_log(SIM, LOG_INFO, 1);
|
||||
set_log(SIM, OAILOG_INFO, 1);
|
||||
# if defined(ENABLE_USE_MME)
|
||||
set_log(NAS, LOG_INFO, 1);
|
||||
set_log(NAS, OAILOG_INFO, 1);
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
#include "common/ran_context.h"
|
||||
#include "PHY/defs_UE.h"
|
||||
#include "PHY/defs_eNB.h"
|
||||
#include "vcd_signal_dumper.h"
|
||||
#include "common/utils/LOG/vcd_signal_dumper.h"
|
||||
|
||||
RAN_CONTEXT_t RC;
|
||||
extern PHY_VARS_UE ***PHY_vars_UE_g;
|
||||
|
||||
Reference in New Issue
Block a user