Episys/fixing cqi problem
This commit is contained in:
committed by
Michael Cook
parent
24f82c5d6f
commit
79df38d515
@@ -571,9 +571,16 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
|
||||
UE_sched_ctrl_t *UE_scheduling_control = NULL;
|
||||
start_meas(&(eNB->eNB_scheduler));
|
||||
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->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++) {
|
||||
mbsfn_status[CC_id] = 0;
|
||||
/* Clear vrb_maps */
|
||||
|
||||
@@ -476,7 +476,7 @@ void generate_Msg2(module_id_t module_idP,
|
||||
}
|
||||
} else {
|
||||
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",
|
||||
module_idP, CC_idP, frameP, subframeP, ra->state);
|
||||
// Allocate 4 PRBS starting in RB 0
|
||||
@@ -1295,7 +1295,7 @@ initiate_ra_proc(module_id_t module_idP,
|
||||
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",
|
||||
module_idP, CC_id, frameP, subframeP, preamble_index);
|
||||
LOG_D(MAC,
|
||||
@@ -1305,7 +1305,6 @@ initiate_ra_proc(module_id_t module_idP,
|
||||
uint16_t msg2_subframe = subframeP;
|
||||
int offset;
|
||||
static uint8_t failure_cnt = 0 ;
|
||||
|
||||
if (prach_ParametersListCE_r13 &&
|
||||
prach_ParametersListCE_r13->list.count < rach_resource_type) {
|
||||
LOG_E(MAC,
|
||||
|
||||
@@ -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->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");
|
||||
|
||||
uint16_t Npd, N_OFFSET_CQI;
|
||||
int H, K, bandwidth_part, L, Lmask;
|
||||
int ri = sched_ctl->periodic_ri_received[CC_idP];
|
||||
|
||||
@@ -1306,7 +1306,6 @@ schedule_ulsch_rnti(module_id_t module_idP,
|
||||
* pre_allocated_rb_table_index_ul
|
||||
*/
|
||||
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]) {
|
||||
if (UE_info->UE_template[CC_id][UE_id].rach_resource_type > 0)
|
||||
continue;
|
||||
|
||||
@@ -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,
|
||||
sub_frame_t subframeP) {
|
||||
uint8_t Size = 0;
|
||||
|
||||
@@ -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];
|
||||
IF_Module_t *ifi = if_inst[module_id];
|
||||
eNB_MAC_INST *mac = RC.mac[module_id];
|
||||
if (UL_info->subframe == 3)
|
||||
{
|
||||
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,
|
||||
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->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);
|
||||
}
|
||||
if(UL_info->frame==1023&&UL_info->subframe==6) { // dl scheduling (0,0)
|
||||
|
||||
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",
|
||||
UL_info->frame, UL_info->subframe,
|
||||
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->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);
|
||||
|
||||
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
|
||||
LOG_D(MAC,"current (%d,%d) frame count dl is %d\n",UL_info->frame,UL_info->subframe,frame_cnt);
|
||||
}
|
||||
|
||||
@@ -164,7 +164,8 @@ void fill_crc_indication_UE_MAC(int Mod_id,
|
||||
uint16_t rnti,
|
||||
nfapi_ul_config_request_t *ul_config_req) {
|
||||
pthread_mutex_lock(&fill_ul_mutex.crc_mutex);
|
||||
|
||||
LOG_D(MAC, "fill crc_indication num_crcs: %u\n",
|
||||
UL_INFO->crc_ind.crc_indication_body.number_of_crcs);
|
||||
nfapi_crc_indication_pdu_t *pdu =
|
||||
&UL_INFO->crc_ind.crc_indication_body
|
||||
.crc_pdu_list[UL_INFO->crc_ind.crc_indication_body.number_of_crcs];
|
||||
@@ -261,6 +262,8 @@ void fill_ulsch_cqi_indication_UE_MAC(int Mod_id,
|
||||
UL_IND_t *UL_INFO,
|
||||
uint16_t rnti) {
|
||||
pthread_mutex_lock(&fill_ul_mutex.cqi_mutex);
|
||||
LOG_D(MAC, "num_cqis: %u in fill_ulsch_cqi_indication_UE_MAC\n",
|
||||
UL_INFO->cqi_ind.cqi_indication_body.number_of_cqis);
|
||||
nfapi_cqi_indication_pdu_t *pdu =
|
||||
&UL_INFO->cqi_ind.cqi_indication_body
|
||||
.cqi_pdu_list[UL_INFO->cqi_ind.cqi_indication_body.number_of_cqis];
|
||||
@@ -287,13 +290,14 @@ void fill_ulsch_cqi_indication_UE_MAC(int Mod_id,
|
||||
pdu->cqi_indication_rel8.timing_advance = 0;
|
||||
// pdu->cqi_indication_rel8.number_of_cc_reported = 1;
|
||||
pdu->ul_cqi_information.tl.tag = NFAPI_UL_CQI_INFORMATION_TAG;
|
||||
pdu->ul_cqi_information.channel = 1; // PUSCH
|
||||
pdu->ul_cqi_information.channel = 1;
|
||||
|
||||
// eNB_scheduler_primitives.c:4839: the upper four bits seem to be the CQI
|
||||
const int cqi = 15;
|
||||
raw_pdu->pdu[0] = cqi << 4;
|
||||
|
||||
UL_INFO->cqi_ind.cqi_indication_body.number_of_cqis++;
|
||||
|
||||
pthread_mutex_unlock(&fill_ul_mutex.cqi_mutex);
|
||||
}
|
||||
|
||||
@@ -491,9 +495,7 @@ void handle_nfapi_ul_pdu_UE_MAC(module_id_t Mod_id,
|
||||
ul_config_req);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else if (ul_config_pdu->pdu_type == NFAPI_UL_CONFIG_ULSCH_HARQ_PDU_TYPE) {
|
||||
} else if (ul_config_pdu->pdu_type == NFAPI_UL_CONFIG_ULSCH_HARQ_PDU_TYPE) {
|
||||
// AssertFatal((UE_id =
|
||||
// find_ulsch(ul_config_pdu->ulsch_harq_pdu.ulsch_pdu.ulsch_pdu_rel8.rnti,eNB,SEARCH_EXIST_OR_FREE))>=0,
|
||||
// "No available UE ULSCH for rnti
|
||||
@@ -506,7 +508,7 @@ void handle_nfapi_ul_pdu_UE_MAC(module_id_t Mod_id,
|
||||
uint16_t rnti = ul_config_pdu->ulsch_harq_pdu.ulsch_pdu.ulsch_pdu_rel8.rnti;
|
||||
uint8_t access_mode = SCHEDULED_ACCESS;
|
||||
if (buflen > 0) {
|
||||
if (UE_mac_inst[Mod_id].first_ULSCH_Tx == 1) { // Msg3 case
|
||||
if (UE_mac_inst[Mod_id].first_ULSCH_Tx == 1) {
|
||||
fill_crc_indication_UE_MAC(Mod_id, frame, subframe, UL_INFO, 0, index, rnti, ul_config_req);
|
||||
fill_rx_indication_UE_MAC(Mod_id,
|
||||
frame,
|
||||
@@ -534,7 +536,6 @@ void handle_nfapi_ul_pdu_UE_MAC(module_id_t Mod_id,
|
||||
rnti,
|
||||
index,
|
||||
ul_config_req);
|
||||
fill_ulsch_cqi_indication_UE_MAC(Mod_id, frame, subframe, UL_INFO, rnti);
|
||||
}
|
||||
}
|
||||
if (ulsch_harq_information != NULL)
|
||||
@@ -678,12 +679,10 @@ int ul_config_req_UE_MAC(nfapi_ul_config_request_t *req,
|
||||
req->ul_config_request_body.rach_prach_frequency_resources,
|
||||
req->ul_config_request_body.srs_present);
|
||||
|
||||
// int sfn = timer_frame; // Needs the ul_config_req sfn_sf
|
||||
// int sf = timer_subframe;
|
||||
LOG_D(MAC, "ul_config_req Frame: %d Subframe: %d Proxy Frame: %u Subframe: %u\n",
|
||||
NFAPI_SFNSF2SFN(req->sfn_sf), NFAPI_SFNSF2SF(req->sfn_sf),
|
||||
timer_frame, timer_subframe);
|
||||
int sfn = NFAPI_SFNSF2SFN(req->sfn_sf); // Needs the ul_config_req sfn_sf
|
||||
int sfn = NFAPI_SFNSF2SFN(req->sfn_sf);
|
||||
int sf = NFAPI_SFNSF2SF(req->sfn_sf);
|
||||
|
||||
LOG_D(MAC,
|
||||
@@ -714,8 +713,7 @@ int ul_config_req_UE_MAC(nfapi_ul_config_request_t *req,
|
||||
handle_nfapi_ul_pdu_UE_MAC(
|
||||
Mod_id, pdu, sfn, sf, req->ul_config_request_body.srs_present, i, req);
|
||||
} else {
|
||||
// NFAPI_TRACE(NFAPI_TRACE_ERROR, "%s() PDU:%i UNKNOWN type :%d\n",
|
||||
// __FUNCTION__, i, ul_config_pdu_list[i].pdu_type);
|
||||
LOG_E(MAC, "UNKNOWN UL_CONFIG_REQ PDU_TYPE or RNTI not matching pdu type: %d\n", pdu_type);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1129,7 +1127,6 @@ void ue_init_standalone_socket(const char *addr, int tx_port, int rx_port)
|
||||
close(sd);
|
||||
return;
|
||||
}
|
||||
LOG_I(MAC, "Succeeded Now\n");
|
||||
assert(ue_tx_sock_descriptor == -1);
|
||||
ue_tx_sock_descriptor = sd;
|
||||
}
|
||||
@@ -1161,7 +1158,6 @@ void ue_init_standalone_socket(const char *addr, int tx_port, int rx_port)
|
||||
close(sd);
|
||||
return;
|
||||
}
|
||||
LOG_I(MAC, "Succeeded Now\n");
|
||||
assert(ue_rx_sock_descriptor == -1);
|
||||
ue_rx_sock_descriptor = sd;
|
||||
}
|
||||
@@ -1311,35 +1307,37 @@ const char *hexdump(const void *data, size_t data_len, char *out, size_t out_len
|
||||
{
|
||||
case NFAPI_RACH_INDICATION:
|
||||
encoded_size = nfapi_p7_message_pack(&UL->rach_ind, buffer, sizeof(buffer), NULL);
|
||||
LOG_E(MAC, "RACH_IND sent to Proxy, Size: %d Frame %d Subframe %d\n", encoded_size,
|
||||
LOG_I(MAC, "RACH_IND sent to Proxy, Size: %d Frame %d Subframe %d\n", encoded_size,
|
||||
NFAPI_SFNSF2SFN(UL->rach_ind.sfn_sf), NFAPI_SFNSF2SF(UL->rach_ind.sfn_sf));
|
||||
break;
|
||||
case NFAPI_CRC_INDICATION:
|
||||
encoded_size = nfapi_p7_message_pack(&UL->crc_ind, buffer, sizeof(buffer), NULL);
|
||||
LOG_E(MAC, "CRC_IND sent to Proxy, Size: %d Frame %d Subframe %d\n", encoded_size,
|
||||
NFAPI_SFNSF2SFN(UL->crc_ind.sfn_sf), NFAPI_SFNSF2SF(UL->crc_ind.sfn_sf));
|
||||
LOG_I(MAC, "CRC_IND sent to Proxy, Size: %d Frame %d Subframe %d num_crcs: %u\n", encoded_size,
|
||||
NFAPI_SFNSF2SFN(UL->crc_ind.sfn_sf), NFAPI_SFNSF2SF(UL->crc_ind.sfn_sf),
|
||||
UL->crc_ind.crc_indication_body.number_of_crcs);
|
||||
break;
|
||||
case NFAPI_RX_ULSCH_INDICATION: // is this the right nfapi message_id? Ask Raymond
|
||||
case NFAPI_RX_ULSCH_INDICATION:
|
||||
encoded_size = nfapi_p7_message_pack(&UL->rx_ind, buffer, sizeof(buffer), NULL);
|
||||
LOG_E(MAC, "RX_IND sent to Proxy, Size: %d Frame %d Subframe %d rx_ind.tl.length: %u vdorext: %p\n",
|
||||
LOG_I(MAC, "RX_IND sent to Proxy, Size: %d Frame %d Subframe %d rx_ind.tl.length: %u num_pdus: %u\n",
|
||||
encoded_size, NFAPI_SFNSF2SFN(UL->rx_ind.sfn_sf), NFAPI_SFNSF2SF(UL->rx_ind.sfn_sf),
|
||||
UL->rx_ind.rx_indication_body.tl.length, UL->rx_ind.vendor_extension);
|
||||
UL->rx_ind.rx_indication_body.tl.length, UL->rx_ind.rx_indication_body.number_of_pdus);
|
||||
break;
|
||||
case NFAPI_RX_CQI_INDICATION: // is this the right nfapi message_id? Ask Raymond
|
||||
encoded_size = nfapi_p7_message_pack(&UL->cqi_ind, buffer, sizeof(buffer), NULL);
|
||||
LOG_E(MAC, "CQI_IND sent to Proxy, Size: %d\n", encoded_size);
|
||||
case NFAPI_RX_CQI_INDICATION:
|
||||
encoded_size = nfapi_p7_message_pack(&UL->cqi_ind, buffer, sizeof(buffer), NULL); // Check pdu->ul_cqi_information.channel = 1
|
||||
LOG_I(MAC, "CQI_IND sent to Proxy, Size: %d num_cqis: %u\n", encoded_size,
|
||||
UL->cqi_ind.cqi_indication_body.number_of_cqis);
|
||||
break;
|
||||
case NFAPI_HARQ_INDICATION:
|
||||
encoded_size = nfapi_p7_message_pack(&UL->harq_ind, buffer, sizeof(buffer), NULL);
|
||||
LOG_E(MAC, "HARQ_IND sent to Proxy, Size: %d Frame %d Subframe %d\n", encoded_size,
|
||||
LOG_I(MAC, "HARQ_IND sent to Proxy, Size: %d Frame %d Subframe %d\n", encoded_size,
|
||||
NFAPI_SFNSF2SFN(UL->harq_ind.sfn_sf), NFAPI_SFNSF2SF(UL->harq_ind.sfn_sf));
|
||||
break;
|
||||
case NFAPI_RX_SR_INDICATION: // is this the right nfapi message_id? Ask Raymond
|
||||
case NFAPI_RX_SR_INDICATION:
|
||||
encoded_size = nfapi_p7_message_pack(&UL->sr_ind, buffer, sizeof(buffer), NULL);
|
||||
LOG_E(MAC, "SR_IND sent to Proxy, Size: %d\n", encoded_size);
|
||||
LOG_I(MAC, "SR_IND sent to Proxy, Size: %d\n", encoded_size);
|
||||
break;
|
||||
default:
|
||||
LOG_E(MAC, "%s Unknown Message msg_type :: %u\n", __func__, msg_type);
|
||||
LOG_I(MAC, "%s Unknown Message msg_type :: %u\n", __func__, msg_type);
|
||||
return;
|
||||
}
|
||||
if (encoded_size < 0)
|
||||
@@ -1357,7 +1355,6 @@ const char *hexdump(const void *data, size_t data_len, char *out, size_t out_len
|
||||
void send_standalone_dummy()
|
||||
{
|
||||
static const uint16_t dummy[] = {0, 0};
|
||||
// LOG_E(MAC, "Dummy sent to Proxy, Size: %zu\n", sizeof(dummy));
|
||||
if (send(ue_tx_sock_descriptor, dummy, sizeof(dummy), 0) < 0)
|
||||
{
|
||||
LOG_E(MAC, "send dummy to OAI UE failed: %s\n", strerror(errno));
|
||||
@@ -1365,7 +1362,131 @@ const char *hexdump(const void *data, size_t data_len, char *out, size_t out_len
|
||||
}
|
||||
}
|
||||
|
||||
/* Dummy functions*/
|
||||
const char *dl_pdu_type_to_string(uint8_t pdu_type)
|
||||
{
|
||||
switch (pdu_type)
|
||||
{
|
||||
case NFAPI_DL_CONFIG_DCI_DL_PDU_TYPE:
|
||||
return "DCI_DL_PDU_TYPE";
|
||||
case NFAPI_DL_CONFIG_BCH_PDU_TYPE:
|
||||
return "BCH_PDU_TYPE";
|
||||
case NFAPI_DL_CONFIG_MCH_PDU_TYPE:
|
||||
return "MCH_PDU_TYPE";
|
||||
case NFAPI_DL_CONFIG_DLSCH_PDU_TYPE:
|
||||
return "DLSCH_PDU_TYPE";
|
||||
case NFAPI_DL_CONFIG_PCH_PDU_TYPE:
|
||||
return "PCH_PDU_TYPE";
|
||||
case NFAPI_DL_CONFIG_PRS_PDU_TYPE:
|
||||
return "PRS_PDU_TYPE";
|
||||
case NFAPI_DL_CONFIG_CSI_RS_PDU_TYPE:
|
||||
return "CSI_RS_PDU_TYPE";
|
||||
case NFAPI_DL_CONFIG_EPDCCH_DL_PDU_TYPE:
|
||||
return "EPDCCH_DL_PDU_TYPE";
|
||||
case NFAPI_DL_CONFIG_MPDCCH_PDU_TYPE:
|
||||
return "MPDCCH_PDU_TYPE";
|
||||
case NFAPI_DL_CONFIG_NBCH_PDU_TYPE:
|
||||
return "NBCH_PDU_TYPE";
|
||||
case NFAPI_DL_CONFIG_NPDCCH_PDU_TYPE:
|
||||
return "NPDCCH_PDU_TYPE";
|
||||
case NFAPI_DL_CONFIG_NDLSCH_PDU_TYPE:
|
||||
return "NDLSCH_PDU_TYPE";
|
||||
default:
|
||||
LOG_E(MAC, "%s No corresponding PDU for type: %u\n", __func__, pdu_type);
|
||||
return "UNKNOWN";
|
||||
}
|
||||
}
|
||||
|
||||
const char *ul_pdu_type_to_string(uint8_t pdu_type)
|
||||
{
|
||||
switch (pdu_type)
|
||||
{
|
||||
case NFAPI_UL_CONFIG_ULSCH_PDU_TYPE:
|
||||
return "UL_CONFIG_ULSCH_PDU_TYPE";
|
||||
case NFAPI_UL_CONFIG_ULSCH_CQI_RI_PDU_TYPE:
|
||||
return "UL_CONFIG_ULSCH_CQI_RI_PDU_TYPE";
|
||||
case NFAPI_UL_CONFIG_ULSCH_HARQ_PDU_TYPE:
|
||||
return "UL_CONFIG_ULSCH_HARQ_PDU_TYPE";
|
||||
case NFAPI_UL_CONFIG_ULSCH_CQI_HARQ_RI_PDU_TYPE:
|
||||
return "UL_CONFIG_ULSCH_CQI_HARQ_RI_PDU_TYPE";
|
||||
case NFAPI_UL_CONFIG_UCI_CQI_PDU_TYPE:
|
||||
return "UL_CONFIG_UCI_CQI_PDU_TYPE";
|
||||
case NFAPI_UL_CONFIG_UCI_SR_PDU_TYPE:
|
||||
return "UCI_SR_PDU_TYPE";
|
||||
case NFAPI_UL_CONFIG_UCI_HARQ_PDU_TYPE:
|
||||
return "UCI_HARQ_PDU_TYPE";
|
||||
case NFAPI_UL_CONFIG_UCI_SR_HARQ_PDU_TYPE:
|
||||
return "UCI_SR_HARQ_PDU_TYPE";
|
||||
case NFAPI_UL_CONFIG_UCI_CQI_HARQ_PDU_TYPE:
|
||||
return "UCI_CQI_HARQ_PDU_TYPE";
|
||||
case NFAPI_UL_CONFIG_UCI_CQI_SR_PDU_TYPE:
|
||||
return "UCI_CQI_SR_PDU_TYPE";
|
||||
case NFAPI_UL_CONFIG_UCI_CQI_SR_HARQ_PDU_TYPE:
|
||||
return "UCI_CQI_SR_HARQ_PDU_TYPE";
|
||||
case NFAPI_UL_CONFIG_SRS_PDU_TYPE:
|
||||
return "SRS_PDU_TYPE";
|
||||
case NFAPI_UL_CONFIG_HARQ_BUFFER_PDU_TYPE:
|
||||
return "HARQ_BUFFER_PDU_TYPE";
|
||||
case NFAPI_UL_CONFIG_ULSCH_UCI_CSI_PDU_TYPE:
|
||||
return "PDU_TYPE";
|
||||
case NFAPI_UL_CONFIG_ULSCH_UCI_HARQ_PDU_TYPE:
|
||||
return "ULSCH_UCI_HARQ_PDU_TYPE";
|
||||
case NFAPI_UL_CONFIG_ULSCH_CSI_UCI_HARQ_PDU_TYPE:
|
||||
return "ULSCH_CSI_UCI_HARQ_PDU_TYPE";
|
||||
case NFAPI_UL_CONFIG_NULSCH_PDU_TYPE:
|
||||
return "NULSCH_PDU_TYPE";
|
||||
case NFAPI_UL_CONFIG_NRACH_PDU_TYPE:
|
||||
return "NRACH_PDU_TYPE";
|
||||
default:
|
||||
LOG_E(MAC, "%s No corresponding PDU for type: %u\n", __func__, pdu_type);
|
||||
return "UNKNOWN";
|
||||
}
|
||||
}
|
||||
|
||||
char *nfapi_dl_config_req_to_string(nfapi_dl_config_request_t *req)
|
||||
{
|
||||
const size_t max_result = 1024;
|
||||
uint16_t num_pdus = req->dl_config_request_body.number_pdu;
|
||||
int subframe = req->sfn_sf & 15;
|
||||
int frame = req->sfn_sf >> 4;
|
||||
char *result = malloc(max_result);
|
||||
snprintf(result, max_result, "num_pdus=%u Frame=%d Subframe=%d",
|
||||
num_pdus, frame, subframe);
|
||||
for (size_t i = 0; i < num_pdus; ++i)
|
||||
{
|
||||
int len = strlen(result);
|
||||
if (len >= max_result - 1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
snprintf(result + len, max_result - len, " pdu_type=%s",
|
||||
dl_pdu_type_to_string(req->dl_config_request_body.dl_config_pdu_list[i].pdu_type));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
char *nfapi_ul_config_req_to_string(nfapi_ul_config_request_t *req)
|
||||
{
|
||||
const size_t max_result = 1024;
|
||||
uint16_t num_pdus = req->ul_config_request_body.number_of_pdus;
|
||||
int subframe = req->sfn_sf & 15;
|
||||
int frame = req->sfn_sf >> 4;
|
||||
char *result = malloc(max_result);
|
||||
snprintf(result, max_result, "num_pdus=%u Frame=%d Subframe=%d",
|
||||
num_pdus, frame, subframe);
|
||||
for (size_t i = 0; i < num_pdus; ++i)
|
||||
{
|
||||
int len = strlen(result);
|
||||
if (len >= max_result - 1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
snprintf(result + len, max_result - len, " pdu_type=%s",
|
||||
ul_pdu_type_to_string(req->ul_config_request_body.ul_config_pdu_list[i].pdu_type));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Dummy functions*/
|
||||
|
||||
void handle_nfapi_hi_dci0_dci_pdu(
|
||||
PHY_VARS_eNB * eNB,
|
||||
|
||||
@@ -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_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 tx_req_pdu_queue;
|
||||
extern queue_t ul_config_req_queue;
|
||||
|
||||
@@ -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);
|
||||
|
||||
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");
|
||||
|
||||
Reference in New Issue
Block a user