Commit 96e4e6f4 authored by Nick Ho's avatar Nick Ho

Prepare environment for IF Module Testing, scheduler not calling yet

parent 4496496a
...@@ -121,6 +121,7 @@ static inline void* malloc16_clear( size_t size ) ...@@ -121,6 +121,7 @@ static inline void* malloc16_clear( size_t size )
#include "impl_defs_lte.h" #include "impl_defs_lte.h"
#include "PHY/LTE_TRANSPORT/defs_NB_IoT.h" #include "PHY/LTE_TRANSPORT/defs_NB_IoT.h"
#include "openair2/PHY_INTERFACE/IF_Module_NB_IoT.h"
#include "PHY/TOOLS/time_meas.h" #include "PHY/TOOLS/time_meas.h"
#include "PHY/CODING/defs.h" #include "PHY/CODING/defs.h"
...@@ -513,6 +514,11 @@ NB_IoT_eNB_NPBCH_t npbch; ...@@ -513,6 +514,11 @@ NB_IoT_eNB_NPBCH_t npbch;
NB_IoT_eNB_NDLSCH_t *ndlsch[NUMBER_OF_UE_MAX]; NB_IoT_eNB_NDLSCH_t *ndlsch[NUMBER_OF_UE_MAX];
NB_IoT_eNB_NDLSCH_t ndlsch_SIB; NB_IoT_eNB_NDLSCH_t ndlsch_SIB;
////////////// For IF Module /////////////////////////////
IF_Module_NB_IoT_t *if_inst;
UL_IND_NB_IoT_t UL_INFO;
//////////////////// END ///////////////////////////////// //////////////////// END /////////////////////////////////
......
...@@ -84,6 +84,8 @@ void eNB_dlsch_ulsch_scheduler_NB_IoT(eNB_MAC_INST_NB_IoT *mac_inst, uint32_t ab ...@@ -84,6 +84,8 @@ void eNB_dlsch_ulsch_scheduler_NB_IoT(eNB_MAC_INST_NB_IoT *mac_inst, uint32_t ab
SIB1_flag = 0; SIB1_flag = 0;
uint32_t h,f,sf; uint32_t h,f,sf;
//int a; //int a;
printf("A\n");
//DEBUG("--------------[%04d][eNB scheduler NB-IoT] Start Scheduling------------\n", mac_inst->current_subframe); //DEBUG("--------------[%04d][eNB scheduler NB-IoT] Start Scheduling------------\n", mac_inst->current_subframe);
eNB_scheduler_computing_flag_NB_IoT(mac_inst, abs_subframe, &scheduler_flags, &common_flags); eNB_scheduler_computing_flag_NB_IoT(mac_inst, abs_subframe, &scheduler_flags, &common_flags);
/*Update the available resource list to current state*/ /*Update the available resource list to current state*/
...@@ -96,11 +98,14 @@ void eNB_dlsch_ulsch_scheduler_NB_IoT(eNB_MAC_INST_NB_IoT *mac_inst, uint32_t ab ...@@ -96,11 +98,14 @@ void eNB_dlsch_ulsch_scheduler_NB_IoT(eNB_MAC_INST_NB_IoT *mac_inst, uint32_t ab
} }
} }
} }
printf("B\n");
if(scheduler_flags > 0){ if(scheduler_flags > 0){
extend_available_resource_DL(mac_inst, mac_inst->current_subframe + 1 + max_subframe); extend_available_resource_DL(mac_inst, mac_inst->current_subframe + 1 + max_subframe);
} }
printf("C\n");
maintain_available_resource(mac_inst); maintain_available_resource(mac_inst);
//static int test=2; //static int test=2;
...@@ -109,17 +114,24 @@ void eNB_dlsch_ulsch_scheduler_NB_IoT(eNB_MAC_INST_NB_IoT *mac_inst, uint32_t ab ...@@ -109,17 +114,24 @@ void eNB_dlsch_ulsch_scheduler_NB_IoT(eNB_MAC_INST_NB_IoT *mac_inst, uint32_t ab
add_UL_Resource(); add_UL_Resource();
} }
printf("D\n");
//Check if type2 searching space scheduling //Check if type2 searching space scheduling
if((scheduler_flags&flag_css_type2)>0){ if((scheduler_flags&flag_css_type2)>0){
schedule_RA_NB_IoT(mac_inst); schedule_RA_NB_IoT(mac_inst);
scheduler_flags &= ~(flag_css_type2); scheduler_flags &= ~(flag_css_type2);
} }
printf("E\n");
//Check if type1 searching space scheduling //Check if type1 searching space scheduling
if((scheduler_flags&flag_css_type1)>0){ if((scheduler_flags&flag_css_type1)>0){
scheduler_flags &= ~(flag_css_type1); scheduler_flags &= ~(flag_css_type1);
} }
printf("F\n");
// loop all USS period // loop all USS period
for(i=0;i<mac_inst->num_uss_list;++i) for(i=0;i<mac_inst->num_uss_list;++i)
{ {
...@@ -146,7 +158,11 @@ void eNB_dlsch_ulsch_scheduler_NB_IoT(eNB_MAC_INST_NB_IoT *mac_inst, uint32_t ab ...@@ -146,7 +158,11 @@ void eNB_dlsch_ulsch_scheduler_NB_IoT(eNB_MAC_INST_NB_IoT *mac_inst, uint32_t ab
MIB_flag = 1; MIB_flag = 1;
if(common_flags == flag_sib1) if(common_flags == flag_sib1)
SIB1_flag = 1; SIB1_flag = 1;
printf("G\n");
convert_system_number(abs_subframe, &h, &f, &sf); convert_system_number(abs_subframe, &h, &f, &sf);
a = output_handler(mac_inst, 0,0,h,f,sf,MIB_flag,SIB1_flag, abs_subframe); a = output_handler(mac_inst, 0,0,h,f,sf,MIB_flag,SIB1_flag, abs_subframe);
printf("Output_handler_return value : %d", a); printf("Output_handler_return value : %d", a);
......
...@@ -247,6 +247,8 @@ int l2_init_eNB_NB_IoT(void) ...@@ -247,6 +247,8 @@ int l2_init_eNB_NB_IoT(void)
mac_inst = (eNB_MAC_INST_NB_IoT *) malloc (sizeof(eNB_MAC_INST_NB_IoT)); mac_inst = (eNB_MAC_INST_NB_IoT *) malloc (sizeof(eNB_MAC_INST_NB_IoT));
memset(mac_inst,0,sizeof(eNB_MAC_INST_NB_IoT));
Is_rrc_registered_NB_IoT=0; Is_rrc_registered_NB_IoT=0;
mac_init_global_param_NB_IoT(); mac_init_global_param_NB_IoT();
Is_rrc_registered_NB_IoT=1; Is_rrc_registered_NB_IoT=1;
......
...@@ -23,7 +23,7 @@ int output_handler(eNB_MAC_INST_NB_IoT *mac_inst, module_id_t module_id, int CC_ ...@@ -23,7 +23,7 @@ int output_handler(eNB_MAC_INST_NB_IoT *mac_inst, module_id_t module_id, int CC_
uint8_t MIB_size = 0; uint8_t MIB_size = 0;
uint8_t SIB1_size = 0, i = 0; uint8_t SIB1_size = 0, i = 0;
Sched_Rsp_NB_IoT_t *SCHED_info = (Sched_Rsp_NB_IoT_t*) malloc(sizeof(Sched_Rsp_NB_IoT_t)); Sched_Rsp_NB_IoT_t *SCHED_info = &(mac_inst->Sched_INFO);
nfapi_dl_config_request_pdu_t *dl_config_pdu; nfapi_dl_config_request_pdu_t *dl_config_pdu;
nfapi_hi_dci0_request_pdu_t* hi_dci0_pdu; nfapi_hi_dci0_request_pdu_t* hi_dci0_pdu;
nfapi_ul_config_request_pdu_t* ul_config_pdu = NULL; nfapi_ul_config_request_pdu_t* ul_config_pdu = NULL;
...@@ -270,7 +270,7 @@ int output_handler(eNB_MAC_INST_NB_IoT *mac_inst, module_id_t module_id, int CC_ ...@@ -270,7 +270,7 @@ int output_handler(eNB_MAC_INST_NB_IoT *mac_inst, module_id_t module_id, int CC_
if(schedule_result_list_UL == NULL) if(schedule_result_list_UL == NULL)
break; break;
}else{ }else{
printf("error"); printf("error\n");
} }
} }
} }
......
...@@ -10,6 +10,8 @@ void UL_indication_NB_IoT(UL_IND_NB_IoT_t *UL_INFO) ...@@ -10,6 +10,8 @@ void UL_indication_NB_IoT(UL_IND_NB_IoT_t *UL_INFO)
uint32_t abs_subframe; uint32_t abs_subframe;
//UE_TEMPLATE_NB_IoT *UE_info; //UE_TEMPLATE_NB_IoT *UE_info;
/* Disable uplink RX function for now
//If there is a preamble, do the initiate RA procedure //If there is a preamble, do the initiate RA procedure
if(UL_INFO->NRACH.number_of_initial_scs_detected>0) if(UL_INFO->NRACH.number_of_initial_scs_detected>0)
{ {
...@@ -45,13 +47,13 @@ void UL_indication_NB_IoT(UL_IND_NB_IoT_t *UL_INFO) ...@@ -45,13 +47,13 @@ void UL_indication_NB_IoT(UL_IND_NB_IoT_t *UL_INFO)
} }
} }
/*If there is a Uplink SDU which needs to send to MAC*/ //If there is a Uplink SDU which needs to send to MAC
if(UL_INFO->RX_NPUSCH.number_of_pdus>0) if(UL_INFO->RX_NPUSCH.number_of_pdus>0)
{ {
for(i=0;i<UL_INFO->RX_NPUSCH.number_of_pdus;i++) for(i=0;i<UL_INFO->RX_NPUSCH.number_of_pdus;i++)
{ {
/*For MSG3, Normal Uplink Data, NAK*/ //For MSG3, Normal Uplink Data, NAK
rx_sdu_NB_IoT(UL_INFO->module_id, rx_sdu_NB_IoT(UL_INFO->module_id,
UL_INFO->CC_id, UL_INFO->CC_id,
UL_INFO->frame, UL_INFO->frame,
...@@ -65,9 +67,13 @@ void UL_indication_NB_IoT(UL_IND_NB_IoT_t *UL_INFO) ...@@ -65,9 +67,13 @@ void UL_indication_NB_IoT(UL_IND_NB_IoT_t *UL_INFO)
} }
*/
abs_subframe = UL_INFO->frame*10+UL_INFO->subframe; abs_subframe = UL_INFO->frame*10+UL_INFO->subframe;
LOG_I(MAC,"Enter scheduler in subframe %d\n",abs_subframe);
//scheduler here //scheduler here
//Schedule subframe should be next four subframe, means that UL_INFO->frame*10+UL_INFO->subframe + 4 //Schedule subframe should be next four subframe, means that UL_INFO->frame*10+UL_INFO->subframe + 4
eNB_dlsch_ulsch_scheduler_NB_IoT(mac_inst,abs_subframe); eNB_dlsch_ulsch_scheduler_NB_IoT(mac_inst,abs_subframe);
LOG_I(MAC,"After scheduler\n");
} }
\ No newline at end of file
...@@ -652,6 +652,17 @@ static inline int rxtx(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, char *thread_nam ...@@ -652,6 +652,17 @@ static inline int rxtx(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, char *thread_nam
/// if (eNB->proc_uespec_rx) eNB->proc_uespec_rx(eNB, proc, no_relay ); /// if (eNB->proc_uespec_rx) eNB->proc_uespec_rx(eNB, proc, no_relay );
////////////////////////////////////END/////////////////////// ////////////////////////////////////END///////////////////////
//////////////////////////////////// for IF Module/scheduler testing
//LOG_I(PHY,"Before UL_indication\n");
eNB->UL_INFO.frame = proc->frame_rx;
eNB->UL_INFO.subframe = proc->subframe_rx;
eNB->UL_INFO.module_id = eNB->Mod_id;
eNB->UL_INFO.CC_id = eNB->CC_id;
//eNB->if_inst->UL_indication(&eNB->UL_INFO);
//LOG_I(PHY,"After UL_indication\n");
// ***************************************** // *****************************************
// TX processing for subframe n+4 // TX processing for subframe n+4
// run PHY TX procedures the one after the other for all CCs to avoid race conditions // run PHY TX procedures the one after the other for all CCs to avoid race conditions
...@@ -2114,6 +2125,14 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst ...@@ -2114,6 +2125,14 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
eNB->in_synch = 0; eNB->in_synch = 0;
eNB->is_slave = (wait_for_sync>0) ? 1 : 0; eNB->is_slave = (wait_for_sync>0) ? 1 : 0;
/////// IF-Module initialization ///////////////
LOG_I(PHY,"Registering with MAC interface module start\n");
AssertFatal((eNB->if_inst = IF_Module_init_NB_IoT(inst))!=NULL,"Cannot register interface");
eNB->if_inst->schedule_response = schedule_response_NB_IoT;
eNB->if_inst->PHY_config_req = PHY_config_req_NB_IoT;
LOG_I(PHY,"Registering with MAC interface module sucessfully\n");
#ifndef OCP_FRAMEWORK #ifndef OCP_FRAMEWORK
LOG_I(PHY,"Initializing eNB %d CC_id %d : (%s,%s)\n",inst,CC_id,eNB_functions[node_function[CC_id]],eNB_timing[node_timing[CC_id]]); LOG_I(PHY,"Initializing eNB %d CC_id %d : (%s,%s)\n",inst,CC_id,eNB_functions[node_function[CC_id]],eNB_timing[node_timing[CC_id]]);
......
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