Commit 79df38d5 authored by Andrew Burger's avatar Andrew Burger Committed by Michael Cook

Episys/fixing cqi problem

parent 24f82c5d
...@@ -177,6 +177,10 @@ set(CMAKE_CXX_FLAGS ...@@ -177,6 +177,10 @@ set(CMAKE_CXX_FLAGS
"${CMAKE_CXX_FLAGS} ${C_FLAGS_PROCESSOR} -Wno-packed-bitfield-compat -fPIC -Wall -fno-strict-aliasing -rdynamic -std=c++11 -D${MKVER}" "${CMAKE_CXX_FLAGS} ${C_FLAGS_PROCESSOR} -Wno-packed-bitfield-compat -fPIC -Wall -fno-strict-aliasing -rdynamic -std=c++11 -D${MKVER}"
) )
#set(SANITIZER "-fsanitize=address")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${SANITIZER}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SANITIZER}")
add_definitions("-DASN_DISABLE_OER_SUPPORT") add_definitions("-DASN_DISABLE_OER_SUPPORT")
######################### #########################
......
...@@ -478,49 +478,46 @@ char *log_getthreadname(char *threadname, ...@@ -478,49 +478,46 @@ char *log_getthreadname(char *threadname,
} }
static int log_header(char *log_buffer, static int log_header(char *log_buffer,
int buffsize, int buffsize,
int comp, int comp,
int level, int level,
const char *format) const char *format)
{ {
char threadname[PR_SET_NAME]; char threadname[PR_SET_NAME];
struct timeval tv; struct timespec ts;
gettimeofday(&tv, NULL); if (clock_gettime(CLOCK_MONOTONIC, &ts) == -1)
struct tm tm; abort();
localtime_r(&tv.tv_sec, &tm); return snprintf(log_buffer, buffsize, "%lu.%06lu %s%s[%s]%c %s %s%s",
return snprintf(log_buffer, buffsize, "%02d:%02d:%02d.%06ld %s%s[%s]%c %s %s%s", ts.tv_sec,
tm.tm_hour, ts.tv_nsec / 1000,
tm.tm_min, log_level_highlight_end[level],
tm.tm_sec, ( (g_log->flag & FLAG_NOCOLOR)?"":log_level_highlight_start[level]),
tv.tv_usec, g_log->log_component[comp].name,
log_level_highlight_end[level], ( (g_log->flag & FLAG_LEVEL)?g_log->level2string[level]:' '),
( (g_log->flag & FLAG_NOCOLOR)?"":log_level_highlight_start[level]), ( (g_log->flag & FLAG_THREAD)?log_getthreadname(threadname,PR_SET_NAME+1):""),
g_log->log_component[comp].name, format,
( (g_log->flag & FLAG_LEVEL)?g_log->level2string[level]:' '), log_level_highlight_end[level]);
( (g_log->flag & FLAG_THREAD)?log_getthreadname(threadname,PR_SET_NAME+1):""),
format,
log_level_highlight_end[level]);
} }
void logRecord_mt(const char *file, void logRecord_mt(const char *file,
const char *func, const char *func,
int line, int line,
int comp, int comp,
int level, int level,
const char *format, const char *format,
... ) ... )
{ {
char log_buffer[MAX_LOG_TOTAL]= {0}; char log_buffer[MAX_LOG_TOTAL]= {0};
va_list args; va_list args;
va_start(args,format); va_start(args,format);
if (log_mem_flag == 1) { if (log_mem_flag == 1) {
log_output_memory(file,func,line,comp,level,format,args); log_output_memory(file,func,line,comp,level,format,args);
} else { } else {
log_header(log_buffer,MAX_LOG_TOTAL,comp,level,format); log_header(log_buffer,MAX_LOG_TOTAL,comp,level,format);
g_log->log_component[comp].vprint(g_log->log_component[comp].stream,log_buffer,args); g_log->log_component[comp].vprint(g_log->log_component[comp].stream,log_buffer,args);
fflush(g_log->log_component[comp].stream); fflush(g_log->log_component[comp].stream);
} }
va_end(args); va_end(args);
} }
void vlogRecord_mt(const char *file, void vlogRecord_mt(const char *file,
......
This diff is collapsed.
...@@ -2220,20 +2220,20 @@ typedef struct { ...@@ -2220,20 +2220,20 @@ typedef struct {
nfapi_ul_config_ulsch_cqi_ri_pdu ulsch_cqi_ri_pdu; nfapi_ul_config_ulsch_cqi_ri_pdu ulsch_cqi_ri_pdu;
nfapi_ul_config_ulsch_harq_pdu ulsch_harq_pdu; nfapi_ul_config_ulsch_harq_pdu ulsch_harq_pdu;
nfapi_ul_config_ulsch_cqi_harq_ri_pdu ulsch_cqi_harq_ri_pdu; nfapi_ul_config_ulsch_cqi_harq_ri_pdu ulsch_cqi_harq_ri_pdu;
nfapi_ul_config_uci_cqi_pdu uci_cqi_pdu; nfapi_ul_config_uci_cqi_pdu uci_cqi_pdu; // should never see
nfapi_ul_config_uci_sr_pdu uci_sr_pdu; nfapi_ul_config_uci_sr_pdu uci_sr_pdu;
nfapi_ul_config_uci_harq_pdu uci_harq_pdu; nfapi_ul_config_uci_harq_pdu uci_harq_pdu;
nfapi_ul_config_uci_sr_harq_pdu uci_sr_harq_pdu; nfapi_ul_config_uci_sr_harq_pdu uci_sr_harq_pdu;// should only see once in a while
nfapi_ul_config_uci_cqi_harq_pdu uci_cqi_harq_pdu; nfapi_ul_config_uci_cqi_harq_pdu uci_cqi_harq_pdu;// should never see
nfapi_ul_config_uci_cqi_sr_pdu uci_cqi_sr_pdu; nfapi_ul_config_uci_cqi_sr_pdu uci_cqi_sr_pdu;// should never see
nfapi_ul_config_uci_cqi_sr_harq_pdu uci_cqi_sr_harq_pdu; nfapi_ul_config_uci_cqi_sr_harq_pdu uci_cqi_sr_harq_pdu;// should never see
nfapi_ul_config_srs_pdu srs_pdu; nfapi_ul_config_srs_pdu srs_pdu;// should never see
nfapi_ul_config_harq_buffer_pdu harq_buffer_pdu; nfapi_ul_config_harq_buffer_pdu harq_buffer_pdu;// should never see
nfapi_ul_config_ulsch_uci_csi_pdu ulsch_uci_csi_pdu; nfapi_ul_config_ulsch_uci_csi_pdu ulsch_uci_csi_pdu;// should never see
nfapi_ul_config_ulsch_uci_harq_pdu ulsch_uci_harq_pdu; nfapi_ul_config_ulsch_uci_harq_pdu ulsch_uci_harq_pdu;// should never see
nfapi_ul_config_ulsch_csi_uci_harq_pdu ulsch_csi_uci_harq_pdu; nfapi_ul_config_ulsch_csi_uci_harq_pdu ulsch_csi_uci_harq_pdu;// should never see
nfapi_ul_config_nulsch_pdu nulsch_pdu; nfapi_ul_config_nulsch_pdu nulsch_pdu;// should never see
nfapi_ul_config_nrach_pdu nrach_pdu; nfapi_ul_config_nrach_pdu nrach_pdu;// should never see
}; };
} nfapi_ul_config_request_pdu_t; } nfapi_ul_config_request_pdu_t;
......
This diff is collapsed.
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
#include <time.h> #include <time.h>
#include <stdio.h>
#include <sys/time.h> #include <sys/time.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
...@@ -505,7 +505,7 @@ int vnf_build_send_dl_node_sync(vnf_p7_t* vnf_p7, nfapi_vnf_p7_connection_info_t ...@@ -505,7 +505,7 @@ int vnf_build_send_dl_node_sync(vnf_p7_t* vnf_p7, nfapi_vnf_p7_connection_info_t
dl_node_sync.t1 = calculate_t1(p7_info->sfn_sf, vnf_p7->sf_start_time_hr); dl_node_sync.t1 = calculate_t1(p7_info->sfn_sf, vnf_p7->sf_start_time_hr);
dl_node_sync.delta_sfn_sf = 0; dl_node_sync.delta_sfn_sf = 0;
return vnf_p7_pack_and_send_p7_msg(vnf_p7, &dl_node_sync.header); return vnf_p7_pack_and_send_p7_msg(vnf_p7, &dl_node_sync.header);
} }
int vnf_sync(vnf_p7_t* vnf_p7, nfapi_vnf_p7_connection_info_t* p7_info) int vnf_sync(vnf_p7_t* vnf_p7, nfapi_vnf_p7_connection_info_t* p7_info)
...@@ -1229,7 +1229,7 @@ void vnf_handle_ul_node_sync(void *pRecvMsg, int recvMsgLen, vnf_p7_t* vnf_p7) ...@@ -1229,7 +1229,7 @@ void vnf_handle_ul_node_sync(void *pRecvMsg, int recvMsgLen, vnf_p7_t* vnf_p7)
{ {
/*NFAPI_TRACE(NFAPI_TRACE_NOTE, "***** Adjusting VNF phy_id:%d SFN/SF (%s) from %d to %d (%d) mode:%s zeroCount:%u sync:%s\n", /*NFAPI_TRACE(NFAPI_TRACE_NOTE, "***** Adjusting VNF phy_id:%d SFN/SF (%s) from %d to %d (%d) mode:%s zeroCount:%u sync:%s\n",
ind.header.phy_id, (phy->in_sync ? "via sfn" : "now"), ind.header.phy_id, (phy->in_sync ? "via sfn" : "now"),
NFAPI_SFNSF2DEC(curr_sfn_sf), NFAPI_SFNSF2DEC(new_sfn_sf), phy->adjustment, NFAPI_SFNSF2DEC(curr_sfn_sf), NFAPI_SFNSF2DEC(new_sfn_sf), phy->adjustment,
phy->filtered_adjust ? "FILTERED" : "ABSOLUTE", phy->filtered_adjust ? "FILTERED" : "ABSOLUTE",
phy->zero_count, phy->zero_count,
phy->in_sync ? "IN_SYNC" : "OUT_OF_SYNC");*/ phy->in_sync ? "IN_SYNC" : "OUT_OF_SYNC");*/
...@@ -1276,7 +1276,8 @@ void vnf_handle_timing_info(void *pRecvMsg, int recvMsgLen, vnf_p7_t* vnf_p7) ...@@ -1276,7 +1276,8 @@ void vnf_handle_timing_info(void *pRecvMsg, int recvMsgLen, vnf_p7_t* vnf_p7)
//if (vnf_pnf_sfnsf_delta>1 || vnf_pnf_sfnsf_delta < -1) //if (vnf_pnf_sfnsf_delta>1 || vnf_pnf_sfnsf_delta < -1)
if (vnf_pnf_sfnsf_delta>0 || vnf_pnf_sfnsf_delta < 0) if (vnf_pnf_sfnsf_delta>0 || vnf_pnf_sfnsf_delta < 0)
{ {
NFAPI_TRACE(NFAPI_TRACE_INFO, "%s() LARGE SFN/SF DELTA between PNF and VNF delta:%d VNF:%d PNF:%d\n\n\n\n\n\n\n\n\n", __FUNCTION__, vnf_pnf_sfnsf_delta, NFAPI_SFNSF2DEC(vnf_p7->p7_connections[0].sfn_sf), NFAPI_SFNSF2DEC(ind.last_sfn_sf)); NFAPI_TRACE(NFAPI_TRACE_INFO, "%s() LARGE SFN/SF DELTA between PNF and VNF delta:%d VNF:%d PNF:%d\n\n\n\n\n\n\n\n\n",
__FUNCTION__, vnf_pnf_sfnsf_delta, NFAPI_SFNSF2DEC(vnf_p7->p7_connections[0].sfn_sf), NFAPI_SFNSF2DEC(ind.last_sfn_sf));
// Panos: Careful here!!! Modification of the original nfapi-code // Panos: Careful here!!! Modification of the original nfapi-code
vnf_p7->p7_connections[0].sfn_sf = ind.last_sfn_sf; vnf_p7->p7_connections[0].sfn_sf = ind.last_sfn_sf;
} }
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include <errno.h> #include <errno.h>
#include <stdio.h>
#include "vnf_p7.h" #include "vnf_p7.h"
...@@ -180,7 +181,7 @@ int nfapi_vnf_p7_start(nfapi_vnf_p7_config_t* config) ...@@ -180,7 +181,7 @@ int nfapi_vnf_p7_start(nfapi_vnf_p7_config_t* config)
clock_gettime(CLOCK_MONOTONIC, &pselect_start); clock_gettime(CLOCK_MONOTONIC, &pselect_start);
//long millisecond = pselect_start.tv_nsec / 1e6; //long millisecond = pselect_start.tv_nsec / 1e6;
if((last_millisecond == -1) || (millisecond == last_millisecond) || (millisecond == (last_millisecond + 1) % 1000) ) if((last_millisecond == -1) || (millisecond == last_millisecond) || (millisecond == (last_millisecond + 1) % 1000))
{ {
//NFAPI_TRACE(NFAPI_TRACE_INFO, "pselect_start:%d.%d sf_start:%d.%d\n", pselect_start.tv_sec, pselect_start.tv_nsec, sf_start.tv_sec, sf_start.tv_nsec); //NFAPI_TRACE(NFAPI_TRACE_INFO, "pselect_start:%d.%d sf_start:%d.%d\n", pselect_start.tv_sec, pselect_start.tv_nsec, sf_start.tv_sec, sf_start.tv_nsec);
...@@ -255,8 +256,8 @@ int nfapi_vnf_p7_start(nfapi_vnf_p7_config_t* config) ...@@ -255,8 +256,8 @@ int nfapi_vnf_p7_start(nfapi_vnf_p7_config_t* config)
if (selectRetval==-1 && errno == 22) if (selectRetval==-1 && errno == 22)
{ {
NFAPI_TRACE(NFAPI_TRACE_ERROR, "INVAL: pselect_timeout:%d.%ld adj[dur:%d adj:%d], sf_dur:%d.%ld\n", NFAPI_TRACE(NFAPI_TRACE_ERROR, "INVAL: pselect_timeout:%d.%ld adj[dur:%d adj:%d], sf_dur:%d.%ld\n",
pselect_timeout.tv_sec, pselect_timeout.tv_nsec, pselect_timeout.tv_sec, pselect_timeout.tv_nsec,
phy->insync_minor_adjustment_duration, phy->insync_minor_adjustment, phy->insync_minor_adjustment_duration, phy->insync_minor_adjustment,
sf_duration.tv_sec, sf_duration.tv_nsec); sf_duration.tv_sec, sf_duration.tv_nsec);
} }
if(selectRetval == 0) if(selectRetval == 0)
...@@ -362,9 +363,7 @@ if (selectRetval==-1 && errno == 22) ...@@ -362,9 +363,7 @@ if (selectRetval==-1 && errno == 22)
while(curr != 0) while(curr != 0)
{ {
curr->sfn_sf = increment_sfn_sf(curr->sfn_sf); curr->sfn_sf = increment_sfn_sf(curr->sfn_sf);
vnf_sync(vnf_p7, curr); vnf_sync(vnf_p7, curr);
curr = curr->next; curr = curr->next;
} }
......
...@@ -49,9 +49,20 @@ void set_taus_seed(unsigned int seed_init) ...@@ -49,9 +49,20 @@ void set_taus_seed(unsigned int seed_init)
unsigned long result = 0; unsigned long result = 0;
if (seed_init == 0) { if (seed_init == 0) {
s0 = (unsigned int)time(NULL); unsigned int data[3];
s1 = (unsigned int)time(NULL); int fd = open("/dev/urandom", O_RDONLY);
s2 = (unsigned int)time(NULL); if (fd == -1)
{
abort();
}
if (read(fd, data, sizeof(data)) != sizeof(data))
{
abort();
}
close(fd);
s0 = data[0];
s1 = data[1];
s2 = data[2];
} else { } else {
/* Use reentrant version of rand48 to ensure that no conflicts with other generators occur */ /* Use reentrant version of rand48 to ensure that no conflicts with other generators occur */
srand48_r((long int)seed_init, &buffer); srand48_r((long int)seed_init, &buffer);
......
...@@ -571,9 +571,16 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP, ...@@ -571,9 +571,16 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
UE_sched_ctrl_t *UE_scheduling_control = NULL; UE_sched_ctrl_t *UE_scheduling_control = NULL;
start_meas(&(eNB->eNB_scheduler)); start_meas(&(eNB->eNB_scheduler));
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ULSCH_SCHEDULER, VCD_FUNCTION_IN); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ULSCH_SCHEDULER, VCD_FUNCTION_IN);
if ((frameP == eNB->frame && subframeP <= eNB->subframe) || (frameP == ((eNB->frame + 1023) & 1023)))
{
LOG_E(MAC, "Scheduler being called twice for same subframe SF.SFN: %u.%u\n", frameP, subframeP);
return;
}
eNB->frame = frameP; eNB->frame = frameP;
eNB->subframe = subframeP; eNB->subframe = subframeP;
LOG_I(MAC, "Entering dlsch_ulsch scheduler Frame: %u Subframe: %u\n", frameP, subframeP);
for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) { for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
mbsfn_status[CC_id] = 0; mbsfn_status[CC_id] = 0;
/* Clear vrb_maps */ /* Clear vrb_maps */
......
...@@ -476,7 +476,7 @@ void generate_Msg2(module_id_t module_idP, ...@@ -476,7 +476,7 @@ void generate_Msg2(module_id_t module_idP,
} }
} else { } else {
if ((ra->Msg2_frame == frameP) && (ra->Msg2_subframe == subframeP)) { if ((ra->Msg2_frame == frameP) && (ra->Msg2_subframe == subframeP)) {
LOG_D(MAC, LOG_I(MAC,
"[eNB %d] CC_id %d Frame %d, subframeP %d: Generating RAR DCI, state %d\n", "[eNB %d] CC_id %d Frame %d, subframeP %d: Generating RAR DCI, state %d\n",
module_idP, CC_idP, frameP, subframeP, ra->state); module_idP, CC_idP, frameP, subframeP, ra->state);
// Allocate 4 PRBS starting in RB 0 // Allocate 4 PRBS starting in RB 0
...@@ -1295,7 +1295,7 @@ initiate_ra_proc(module_id_t module_idP, ...@@ -1295,7 +1295,7 @@ initiate_ra_proc(module_id_t module_idP,
prach_ParametersListCE_r13 = &ext4_prach->prach_ParametersListCE_r13; prach_ParametersListCE_r13 = &ext4_prach->prach_ParametersListCE_r13;
} }
LOG_D(MAC, LOG_I(MAC,
"[eNB %d][RAPROC] CC_id %d Frame %d, Subframe %d Initiating RA procedure for preamble index %d\n", "[eNB %d][RAPROC] CC_id %d Frame %d, Subframe %d Initiating RA procedure for preamble index %d\n",
module_idP, CC_id, frameP, subframeP, preamble_index); module_idP, CC_id, frameP, subframeP, preamble_index);
LOG_D(MAC, LOG_D(MAC,
...@@ -1305,7 +1305,6 @@ initiate_ra_proc(module_id_t module_idP, ...@@ -1305,7 +1305,6 @@ initiate_ra_proc(module_id_t module_idP,
uint16_t msg2_subframe = subframeP; uint16_t msg2_subframe = subframeP;
int offset; int offset;
static uint8_t failure_cnt = 0 ; static uint8_t failure_cnt = 0 ;
if (prach_ParametersListCE_r13 && if (prach_ParametersListCE_r13 &&
prach_ParametersListCE_r13->list.count < rach_resource_type) { prach_ParametersListCE_r13->list.count < rach_resource_type) {
LOG_E(MAC, LOG_E(MAC,
......
...@@ -4539,6 +4539,7 @@ extract_pucch_csi(module_id_t mod_idP, ...@@ -4539,6 +4539,7 @@ extract_pucch_csi(module_id_t mod_idP,
AssertFatal(cqi_ReportPeriodic->present != LTE_CQI_ReportPeriodic_PR_NOTHING, "cqi_ReportPeriodic->present == LTE_CQI_ReportPeriodic_PR_NOTHING!\n"); AssertFatal(cqi_ReportPeriodic->present != LTE_CQI_ReportPeriodic_PR_NOTHING, "cqi_ReportPeriodic->present == LTE_CQI_ReportPeriodic_PR_NOTHING!\n");
AssertFatal(cqi_ReportPeriodic->choice.setup.cqi_FormatIndicatorPeriodic.present != LTE_CQI_ReportPeriodic__setup__cqi_FormatIndicatorPeriodic_PR_NOTHING, AssertFatal(cqi_ReportPeriodic->choice.setup.cqi_FormatIndicatorPeriodic.present != LTE_CQI_ReportPeriodic__setup__cqi_FormatIndicatorPeriodic_PR_NOTHING,
"cqi_ReportPeriodic->cqi_FormatIndicatorPeriodic.choice.setup.present == LTE_CQI_ReportPeriodic__setup__cqi_FormatIndicatorPeriodic_PR_NOTHING!\n"); "cqi_ReportPeriodic->cqi_FormatIndicatorPeriodic.choice.setup.present == LTE_CQI_ReportPeriodic__setup__cqi_FormatIndicatorPeriodic_PR_NOTHING!\n");
uint16_t Npd, N_OFFSET_CQI; uint16_t Npd, N_OFFSET_CQI;
int H, K, bandwidth_part, L, Lmask; int H, K, bandwidth_part, L, Lmask;
int ri = sched_ctl->periodic_ri_received[CC_idP]; int ri = sched_ctl->periodic_ri_received[CC_idP];
......
...@@ -1306,7 +1306,6 @@ schedule_ulsch_rnti(module_id_t module_idP, ...@@ -1306,7 +1306,6 @@ schedule_ulsch_rnti(module_id_t module_idP,
* pre_allocated_rb_table_index_ul * pre_allocated_rb_table_index_ul
*/ */
ulsch_scheduler_pre_processor(module_idP, CC_id, frameP, subframeP, sched_frame, sched_subframeP); ulsch_scheduler_pre_processor(module_idP, CC_id, frameP, subframeP, sched_frame, sched_subframeP);
for (int UE_id = UE_info->list.head; UE_id >= 0; UE_id = UE_info->list.next[UE_id]) { for (int UE_id = UE_info->list.head; UE_id >= 0; UE_id = UE_info->list.next[UE_id]) {
if (UE_info->UE_template[CC_id][UE_id].rach_resource_type > 0) if (UE_info->UE_template[CC_id][UE_id].rach_resource_type > 0)
continue; continue;
......
...@@ -282,7 +282,7 @@ Msg3_transmitted(module_id_t module_idP, uint8_t CC_id, ...@@ -282,7 +282,7 @@ Msg3_transmitted(module_id_t module_idP, uint8_t CC_id,
} }
PRACH_RESOURCES_t *ue_get_rach(module_id_t module_idP, int CC_id, PRACH_RESOURCES_t *ue_get_rach(module_id_t module_idP, int CC_id, // TODO: edit here for sending multiple rachs
frame_t frameP, uint8_t eNB_indexP, frame_t frameP, uint8_t eNB_indexP,
sub_frame_t subframeP) { sub_frame_t subframeP) {
uint8_t Size = 0; uint8_t Size = 0;
......
...@@ -703,15 +703,16 @@ void UL_indication(UL_IND_t *UL_info, L1_rxtx_proc_t *proc) { ...@@ -703,15 +703,16 @@ void UL_indication(UL_IND_t *UL_info, L1_rxtx_proc_t *proc) {
Sched_Rsp_t *sched_info = &Sched_INFO[module_id][CC_id]; Sched_Rsp_t *sched_info = &Sched_INFO[module_id][CC_id];
IF_Module_t *ifi = if_inst[module_id]; IF_Module_t *ifi = if_inst[module_id];
eNB_MAC_INST *mac = RC.mac[module_id]; eNB_MAC_INST *mac = RC.mac[module_id];
if (UL_info->subframe == 3)
{ LOG_D(PHY, "Frame:%d Subframe:%d module_id:%d CC_id:%d UL_info[rx_ind:%d harqs:%d crcs:%d cqis:%d preambles:%d sr_ind:%d]\n",
LOG_D(PHY,"SFN/SF:%d%d module_id:%d CC_id:%d UL_info[rx_ind:%d harqs:%d crcs:%d cqis:%d preambles:%d sr_ind:%d]\n", UL_info->frame, UL_info->subframe,
UL_info->frame,UL_info->subframe, module_id, CC_id,
module_id,CC_id, UL_info->rx_ind.rx_indication_body.number_of_pdus, UL_info->harq_ind.harq_indication_body.number_of_harqs,
UL_info->rx_ind.rx_indication_body.number_of_pdus, UL_info->harq_ind.harq_indication_body.number_of_harqs, UL_info->crc_ind.crc_indication_body.number_of_crcs, UL_info->crc_ind.crc_indication_body.number_of_crcs,
UL_info->cqi_ind.cqi_indication_body.number_of_cqis, UL_info->rach_ind.rach_indication_body.number_of_preambles, UL_info->sr_ind.sr_indication_body.number_of_srs); UL_info->cqi_ind.cqi_indication_body.number_of_cqis, UL_info->rach_ind.rach_indication_body.number_of_preambles,
} UL_info->sr_ind.sr_indication_body.number_of_srs);
if(UL_info->frame==1023&&UL_info->subframe==6) { // dl scheduling (0,0)
if (UL_info->frame==1023&&UL_info->subframe==6) { // dl scheduling (0,0)
frame_cnt= (frame_cnt + 1)%7; // to prevent frame_cnt get too big frame_cnt= (frame_cnt + 1)%7; // to prevent frame_cnt get too big
LOG_D(MAC,"current (%d,%d) frame count dl is %d\n",UL_info->frame,UL_info->subframe,frame_cnt); LOG_D(MAC,"current (%d,%d) frame count dl is %d\n",UL_info->frame,UL_info->subframe,frame_cnt);
} }
......
This diff is collapsed.
...@@ -147,6 +147,17 @@ void *ue_standalone_pnf_task(void *context); ...@@ -147,6 +147,17 @@ void *ue_standalone_pnf_task(void *context);
void send_standalone_msg(UL_IND_t *UL, nfapi_message_id_e msg_type); void send_standalone_msg(UL_IND_t *UL, nfapi_message_id_e msg_type);
void send_standalone_dummy(void); void send_standalone_dummy(void);
// Convert downlink nfapi messages to a string.
// Returned memory is malloc'ed, caller is responsible for freeing.
char *nfapi_dl_config_req_to_string(nfapi_dl_config_request_t *req);
char *nfapi_ul_config_req_to_string(nfapi_ul_config_request_t *req);
// Convert downlink nfapi messages to a string.
// Returned memory is statically allocated.
const char *dl_pdu_type_to_string(uint8_t pdu_type);
const char *ul_pdu_type_to_string(uint8_t pdu_type);
extern queue_t dl_config_req_queue; extern queue_t dl_config_req_queue;
extern queue_t tx_req_pdu_queue; extern queue_t tx_req_pdu_queue;
extern queue_t ul_config_req_queue; extern queue_t ul_config_req_queue;
......
...@@ -421,7 +421,7 @@ void rrc_ue_generate_RRCConnectionRequest( const protocol_ctxt_t *const ctxt_pP, ...@@ -421,7 +421,7 @@ void rrc_ue_generate_RRCConnectionRequest( const protocol_ctxt_t *const ctxt_pP,
ctxt_pP->module_id, ctxt_pP->frame, UE_rrc_inst[ctxt_pP->module_id].Srb0[eNB_index].Tx_buffer.payload_size, eNB_index); ctxt_pP->module_id, ctxt_pP->frame, UE_rrc_inst[ctxt_pP->module_id].Srb0[eNB_index].Tx_buffer.payload_size, eNB_index);
for (i=0; i<UE_rrc_inst[ctxt_pP->module_id].Srb0[eNB_index].Tx_buffer.payload_size; i++) { for (i=0; i<UE_rrc_inst[ctxt_pP->module_id].Srb0[eNB_index].Tx_buffer.payload_size; i++) {
LOG_T(RRC,"%x.",UE_rrc_inst[ctxt_pP->module_id].Srb0[eNB_index].Tx_buffer.Payload[i]); LOG_T(RRC,"%x.\n",UE_rrc_inst[ctxt_pP->module_id].Srb0[eNB_index].Tx_buffer.Payload[i]);
} }
LOG_T(RRC,"\n"); LOG_T(RRC,"\n");
......
...@@ -1047,18 +1047,28 @@ static void *UE_phy_stub_standalone_pnf_task(void *arg) ...@@ -1047,18 +1047,28 @@ static void *UE_phy_stub_standalone_pnf_task(void *arg)
LOG_D(MAC, "received from proxy frame %d subframe %d\n", LOG_D(MAC, "received from proxy frame %d subframe %d\n",
NFAPI_SFNSF2SFN(sfn_sf), NFAPI_SFNSF2SF(sfn_sf)); NFAPI_SFNSF2SFN(sfn_sf), NFAPI_SFNSF2SF(sfn_sf));
if (dl_config_req != NULL) { if (dl_config_req != NULL) {
LOG_D(MAC, "dl_config_req pdus: %u Frame: %d Subframe: %d\n", uint16_t dl_num_pdus = dl_config_req->dl_config_request_body.number_pdu;
dl_config_req->dl_config_request_body.number_pdu, LOG_W(MAC, "(OAI UE) Received dl_config_req from proxy at Frame: %d, Subframe: %d,"
NFAPI_SFNSF2SFN(dl_config_req->sfn_sf), NFAPI_SFNSF2SF(dl_config_req->sfn_sf)); " with number of PDUs: %u\n",
NFAPI_SFNSF2SFN(dl_config_req->sfn_sf), NFAPI_SFNSF2SF(dl_config_req->sfn_sf),
dl_num_pdus);
if (dl_num_pdus > 0) {
char *dl_str = nfapi_dl_config_req_to_string(dl_config_req);
LOG_D(MAC, "dl_config_req: %s\n", dl_str);
free(dl_str);
}
} }
if (tx_request_pdu_list != NULL) { if (tx_request_pdu_list != NULL) {
LOG_D(MAC, "tx_req segments: %u\n", LOG_D(MAC, "tx_req segments: %u\n",
tx_request_pdu_list->num_segments); tx_request_pdu_list->num_segments);
} }
if (ul_config_req != NULL) { if (ul_config_req != NULL) {
LOG_D(MAC, "ul_config_req pdus: %u Frame: %d Subframe: %d\n", uint8_t ul_num_pdus = ul_config_req->ul_config_request_body.number_of_pdus;
ul_config_req->ul_config_request_body.number_of_pdus, if (ul_num_pdus > 0) {
NFAPI_SFNSF2SFN(ul_config_req->sfn_sf), NFAPI_SFNSF2SF(ul_config_req->sfn_sf)); char *ul_str = nfapi_ul_config_req_to_string(ul_config_req);
LOG_D(MAC, "ul_config_req: %s\n", ul_str);
free(ul_str);
}
} }
if (hi_dci0_req != NULL) { if (hi_dci0_req != NULL) {
LOG_D(MAC, "hi_dci0_req pdus: %u Frame: %d Subframe: %d\n", LOG_D(MAC, "hi_dci0_req pdus: %u Frame: %d Subframe: %d\n",
...@@ -1164,7 +1174,6 @@ static void *UE_phy_stub_standalone_pnf_task(void *arg) ...@@ -1164,7 +1174,6 @@ static void *UE_phy_stub_standalone_pnf_task(void *arg)
// The one working strangely... // The one working strangely...
//if (is_prach_subframe(&UE->frame_parms,NFAPI_SFNSF2SFN(sfn_sf), NFAPI_SFNSF2SF(sfn_sf) && Mod_id == (module_id_t) init_ra_UE) ) { //if (is_prach_subframe(&UE->frame_parms,NFAPI_SFNSF2SFN(sfn_sf), NFAPI_SFNSF2SF(sfn_sf) && Mod_id == (module_id_t) init_ra_UE) ) {
PRACH_RESOURCES_t *prach_resources = ue_get_rach(ue_Mod_id, 0, NFAPI_SFNSF2SFN(sfn_sf), 0, NFAPI_SFNSF2SF(sfn_sf)); PRACH_RESOURCES_t *prach_resources = ue_get_rach(ue_Mod_id, 0, NFAPI_SFNSF2SFN(sfn_sf), 0, NFAPI_SFNSF2SF(sfn_sf));
LOG_D(MAC, "Celtics prach_resources %p\n", prach_resources);
if (prach_resources != NULL) { if (prach_resources != NULL) {
UE_mac_inst[ue_Mod_id].ra_frame = rx_frame; UE_mac_inst[ue_Mod_id].ra_frame = rx_frame;
LOG_D(MAC, "UE_phy_stub_thread_rxn_txnp4 before RACH, Mod_id: %d frame %d subframe %d\n", ue_Mod_id, NFAPI_SFNSF2SFN(sfn_sf), NFAPI_SFNSF2SF(sfn_sf)); LOG_D(MAC, "UE_phy_stub_thread_rxn_txnp4 before RACH, Mod_id: %d frame %d subframe %d\n", ue_Mod_id, NFAPI_SFNSF2SFN(sfn_sf), NFAPI_SFNSF2SF(sfn_sf));
...@@ -1185,9 +1194,9 @@ static void *UE_phy_stub_standalone_pnf_task(void *arg) ...@@ -1185,9 +1194,9 @@ static void *UE_phy_stub_standalone_pnf_task(void *arg)
// Substitute call to phy_procedures Tx with call to phy_stub functions in order to trigger // Substitute call to phy_procedures Tx with call to phy_stub functions in order to trigger
// UE Tx procedures directly at the MAC layer, based on the received ul_config requests from the vnf (eNB). // UE Tx procedures directly at the MAC layer, based on the received ul_config requests from the vnf (eNB).
// Generate UL_indications which correspond to UL traffic. // Generate UL_indications which correspond to UL traffic.
if (ul_config_req != NULL) { // check to see if you get every 2 ms //&& UE_mac_inst[Mod_id].ul_config_req->ul_config_request_body.ul_config_pdu_list != NULL){ if (ul_config_req != NULL) { //&& UE_mac_inst[Mod_id].ul_config_req->ul_config_request_body.ul_config_pdu_list != NULL){
ul_config_req_UE_MAC(ul_config_req, NFAPI_SFNSF2SFN(sfn_sf), NFAPI_SFNSF2SF(sfn_sf), ue_Mod_id); // Andrew - send over socket to proxy here ul_config_req_UE_MAC(ul_config_req, NFAPI_SFNSF2SFN(sfn_sf), NFAPI_SFNSF2SF(sfn_sf), ue_Mod_id);
} // Andrew - else send a dummy over the socket }
} }
phy_procedures_UE_SL_RX(UE, proc); phy_procedures_UE_SL_RX(UE, proc);
...@@ -1218,8 +1227,8 @@ static void *UE_phy_stub_standalone_pnf_task(void *arg) ...@@ -1218,8 +1227,8 @@ static void *UE_phy_stub_standalone_pnf_task(void *arg)
} }
if (UL_INFO->cqi_ind.cqi_indication_body.number_of_cqis > 0) { if (UL_INFO->cqi_ind.cqi_indication_body.number_of_cqis > 0) {
send_standalone_msg(UL_INFO, UL_INFO->cqi_ind.header.message_id); send_standalone_msg(UL_INFO, UL_INFO->cqi_ind.header.message_id);
sent_any = true; sent_any = true;
UL_INFO->cqi_ind.cqi_indication_body.number_of_cqis = 0; UL_INFO->cqi_ind.cqi_indication_body.number_of_cqis = 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment