Commit f95989e7 authored by WEI-TAI CHEN's avatar WEI-TAI CHEN

Adding function NR_UL_indication

parent 3e54d86e
...@@ -1023,6 +1023,7 @@ set(SCHED_SRC ...@@ -1023,6 +1023,7 @@ set(SCHED_SRC
add_library(SCHED_LIB ${SCHED_SRC}) add_library(SCHED_LIB ${SCHED_SRC})
set(SCHED_NR_SRC set(SCHED_NR_SRC
${OPENAIR1_DIR}/SCHED_NR/fapi_nr_l1.c
${OPENAIR1_DIR}/SCHED_NR/phy_procedures_nr_common.c ${OPENAIR1_DIR}/SCHED_NR/phy_procedures_nr_common.c
${OPENAIR1_DIR}/SCHED_NR/phy_procedures_nr_gNB.c ${OPENAIR1_DIR}/SCHED_NR/phy_procedures_nr_gNB.c
) )
......
...@@ -3,6 +3,17 @@ ...@@ -3,6 +3,17 @@
#include "nfapi_interface.h" #include "nfapi_interface.h"
// nFAPI enums
typedef enum {
NFAPI_NR_DL_CONFIG_DCI_DL_PDU_TYPE = 0,
NFAPI_NR_DL_CONFIG_BCH_PDU_TYPE,
NFAPI_NR_DL_CONFIG_DLSCH_PDU_TYPE,
NFAPI_NR_DL_CONFIG_PCH_PDU_TYPE,
NFAPI_NR_DL_CONFIG_NBCH_PDU_TYPE,
NFAPI_NR_DL_CONFIG_NPDCCH_PDU_TYPE,
NFAPI_NR_DL_CONFIG_NDLSCH_PDU_TYPE
} nfapi_nr_dl_config_pdu_type_e;
//These TLVs are used exclusively by nFAPI //These TLVs are used exclusively by nFAPI
typedef struct typedef struct
{ {
...@@ -307,13 +318,13 @@ typedef struct { ...@@ -307,13 +318,13 @@ typedef struct {
uint8_t pdu_type; uint8_t pdu_type;
uint8_t pdu_size; uint8_t pdu_size;
union { union {
nfapi_nr_dl_config_dci_dl_pdu_rel15_t dci_dl_pdu; nfapi_nr_dl_config_dci_dl_pdu_rel15_t dci_dl_pdu_rel15;
nfapi_nr_dl_config_bch_pdu_rel15_t bch_pdu; nfapi_nr_dl_config_bch_pdu_rel15_t bch_pdu_rel15;
nfapi_nr_dl_config_dlsch_pdu_rel15_t dlsch_pdu; nfapi_nr_dl_config_dlsch_pdu_rel15_t dlsch_pdu_rel15;
nfapi_nr_dl_config_pch_pdu_rel15_t pch_pdu; nfapi_nr_dl_config_pch_pdu_rel15_t pch_pdu_rel15;
nfapi_nr_dl_config_nbch_pdu_rel15_t nbch_pdu; nfapi_nr_dl_config_nbch_pdu_rel15_t nbch_pdu_rel15;
nfapi_nr_dl_config_npdcch_pdu_rel15_t npdcch_pdu; nfapi_nr_dl_config_npdcch_pdu_rel15_t npdcch_pdu_rel15;
nfapi_nr_dl_config_ndlsch_pdu_rel15_t ndlsch_pdu; nfapi_nr_dl_config_ndlsch_pdu_rel15_t ndlsch_pdu_rel15;
}; };
} nfapi_nr_dl_config_request_pdu_t; } nfapi_nr_dl_config_request_pdu_t;
......
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include "PHY/NR_REFSIG/defs.h" #include "PHY/NR_REFSIG/defs.h"
#include "PHY/LTE_REFSIG/lte_refsig.h" #include "PHY/LTE_REFSIG/lte_refsig.h"
#include "SCHED_NR/fapi_nr_l1.h"
extern uint32_t from_earfcn(int eutra_bandP,uint32_t dl_earfcn); extern uint32_t from_earfcn(int eutra_bandP,uint32_t dl_earfcn);
extern int32_t get_uldl_offset(int eutra_bandP); extern int32_t get_uldl_offset(int eutra_bandP);
...@@ -64,8 +65,8 @@ int l1_north_init_gNB() { ...@@ -64,8 +65,8 @@ int l1_north_init_gNB() {
LOG_I(PHY,"%s() RC.gNB[%d][%d] installing callbacks\n", __FUNCTION__, i, j); LOG_I(PHY,"%s() RC.gNB[%d][%d] installing callbacks\n", __FUNCTION__, i, j);
RC.gNB[i][j]->if_inst->PHY_config_req = nr_phy_config_request; RC.gNB[i][j]->if_inst->NR_PHY_config_req = nr_phy_config_request;
RC.gNB[i][j]->if_inst->schedule_response = schedule_response; RC.gNB[i][j]->if_inst->NR_Schedule_response = nr_schedule_response;
} }
} }
} }
......
...@@ -215,11 +215,11 @@ int rrc_mac_config_req_gNB(module_id_t Mod_idP, ...@@ -215,11 +215,11 @@ int rrc_mac_config_req_gNB(module_id_t Mod_idP,
LOG_E(MAC, "%s() %s:%d RC.nrmac[Mod_idP]->if_inst->PHY_config_req:%p\n", __FUNCTION__, __FILE__, __LINE__, RC.nrmac[Mod_idP]->if_inst->PHY_config_req); LOG_E(MAC, "%s() %s:%d RC.nrmac[Mod_idP]->if_inst->NR_PHY_config_req:%p\n", __FUNCTION__, __FILE__, __LINE__, RC.nrmac[Mod_idP]->if_inst->NR_PHY_config_req);
// if in nFAPI mode // if in nFAPI mode
if ( (nfapi_mode == 1 || nfapi_mode == 2) && (RC.nrmac[Mod_idP]->if_inst->PHY_config_req == NULL) ){ if ( (nfapi_mode == 1 || nfapi_mode == 2) && (RC.nrmac[Mod_idP]->if_inst->NR_PHY_config_req == NULL) ){
while(RC.nrmac[Mod_idP]->if_inst->PHY_config_req == NULL) { while(RC.nrmac[Mod_idP]->if_inst->NR_PHY_config_req == NULL) {
// DJP AssertFatal(RC.nrmac[Mod_idP]->if_inst->PHY_config_req != NULL,"if_inst->phy_config_request is null\n"); // DJP AssertFatal(RC.nrmac[Mod_idP]->if_inst->PHY_config_req != NULL,"if_inst->phy_config_request is null\n");
usleep(100 * 1000); usleep(100 * 1000);
printf("Waiting for PHY_config_req\n"); printf("Waiting for PHY_config_req\n");
...@@ -232,7 +232,7 @@ int rrc_mac_config_req_gNB(module_id_t Mod_idP, ...@@ -232,7 +232,7 @@ int rrc_mac_config_req_gNB(module_id_t Mod_idP,
phycfg.CC_id = CC_idP; phycfg.CC_id = CC_idP;
phycfg.cfg = &RC.nrmac[Mod_idP]->config[CC_idP]; phycfg.cfg = &RC.nrmac[Mod_idP]->config[CC_idP];
if (RC.nrmac[Mod_idP]->if_inst->PHY_config_req) RC.nrmac[Mod_idP]->if_inst->PHY_config_req(&phycfg); if (RC.nrmac[Mod_idP]->if_inst->NR_PHY_config_req) RC.nrmac[Mod_idP]->if_inst->NR_PHY_config_req(&phycfg);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_MAC_CONFIG, VCD_FUNCTION_OUT); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_MAC_CONFIG, VCD_FUNCTION_OUT);
} }
......
...@@ -612,7 +612,7 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, ...@@ -612,7 +612,7 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
if((subframeP == 0) && (frameP & 7) == 0){ if((subframeP == 0) && (frameP & 7) == 0){
schedule_nr_mib(module_idP, frameP, subframeP); schedule_nr_mib(module_idP, frameP, subframeP);
} }
/*
if (phy_test == 0){ if (phy_test == 0){
// This schedules SI for legacy LTE and eMTC starting in subframeP // This schedules SI for legacy LTE and eMTC starting in subframeP
schedule_SI(module_idP, frameP, subframeP); schedule_SI(module_idP, frameP, subframeP);
...@@ -637,7 +637,7 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, ...@@ -637,7 +637,7 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
schedule_ulsch_phy_test(module_idP,frameP,subframeP); schedule_ulsch_phy_test(module_idP,frameP,subframeP);
schedule_ue_spec_phy_test(module_idP,frameP,subframeP,mbsfn_status); schedule_ue_spec_phy_test(module_idP,frameP,subframeP,mbsfn_status);
} }
*/
if (RC.flexran[module_idP]->enabled) if (RC.flexran[module_idP]->enabled)
flexran_agent_send_update_stats(module_idP); flexran_agent_send_update_stats(module_idP);
......
...@@ -94,12 +94,12 @@ void schedule_nr_mib(module_id_t module_idP, frame_t frameP, sub_frame_t subfram ...@@ -94,12 +94,12 @@ void schedule_nr_mib(module_id_t module_idP, frame_t frameP, sub_frame_t subfram
dl_config_pdu = &dl_req->dl_config_pdu_list[dl_req->number_pdu]; dl_config_pdu = &dl_req->dl_config_pdu_list[dl_req->number_pdu];
memset((void *) dl_config_pdu, 0,sizeof(nfapi_nr_dl_config_request_pdu_t)); memset((void *) dl_config_pdu, 0,sizeof(nfapi_nr_dl_config_request_pdu_t));
dl_config_pdu->pdu_type = NFAPI_DL_CONFIG_BCH_PDU_TYPE; dl_config_pdu->pdu_type = NFAPI_NR_DL_CONFIG_BCH_PDU_TYPE;
dl_config_pdu->pdu_size =2 + sizeof(nfapi_nr_dl_config_bch_pdu_rel15_t); dl_config_pdu->pdu_size =2 + sizeof(nfapi_nr_dl_config_bch_pdu_rel15_t);
dl_config_pdu->bch_pdu.tl.tag = NFAPI_NR_DL_CONFIG_REQUEST_BCH_PDU_REL15_TAG; dl_config_pdu->bch_pdu_rel15.tl.tag = NFAPI_NR_DL_CONFIG_REQUEST_BCH_PDU_REL15_TAG;
dl_config_pdu->bch_pdu.length = mib_sdu_length; dl_config_pdu->bch_pdu_rel15.length = mib_sdu_length;
dl_config_pdu->bch_pdu.pdu_index = gNB->pdu_index[CC_id]; dl_config_pdu->bch_pdu_rel15.pdu_index = gNB->pdu_index[CC_id];
dl_config_pdu->bch_pdu.transmission_power = 6000; dl_config_pdu->bch_pdu_rel15.transmission_power = 6000;
dl_req->tl.tag = NFAPI_DL_CONFIG_REQUEST_BODY_TAG; dl_req->tl.tag = NFAPI_DL_CONFIG_REQUEST_BODY_TAG;
dl_req->number_pdu++; dl_req->number_pdu++;
dl_config_request->header.message_id = NFAPI_DL_CONFIG_REQUEST; dl_config_request->header.message_id = NFAPI_DL_CONFIG_REQUEST;
......
#include "openair1/PHY/defs_eNB.h" #include "openair1/PHY/defs_eNB.h"
#include "openair2/NR_PHY_INTERFACE/NR_IF_Module.h"
#include "openair1/PHY/phy_extern.h" #include "openair1/PHY/phy_extern.h"
#include "openair1/SCHED_NR/fapi_nr_l1.h"
#include "openair2/NR_PHY_INTERFACE/NR_IF_Module.h"
#include "LAYER2/MAC/mac_extern.h" #include "LAYER2/MAC/mac_extern.h"
#include "LAYER2/MAC/mac_proto.h" #include "LAYER2/MAC/mac_proto.h"
#include "LAYER2/NR_MAC_gNB/mac_proto.h" #include "LAYER2/NR_MAC_gNB/mac_proto.h"
...@@ -262,8 +263,7 @@ void NR_UL_indication(NR_UL_IND_t *UL_info) ...@@ -262,8 +263,7 @@ void NR_UL_indication(NR_UL_IND_t *UL_info)
// clear DL/UL info for new scheduling round // clear DL/UL info for new scheduling round
clear_nfapi_information(RC.mac[module_id],CC_id, clear_nfapi_information(RC.nrmac[module_id],CC_id,UL_info->frame,UL_info->subframe);
UL_info->frame,UL_info->subframe);
handle_nr_rach(UL_info); handle_nr_rach(UL_info);
...@@ -311,16 +311,16 @@ void NR_UL_indication(NR_UL_IND_t *UL_info) ...@@ -311,16 +311,16 @@ void NR_UL_indication(NR_UL_IND_t *UL_info)
dump_dl(sched_info); dump_dl(sched_info);
#endif #endif
if (ifi->schedule_response) if (ifi->NR_Schedule_response)
{ {
AssertFatal(ifi->schedule_response!=NULL, AssertFatal(ifi->NR_Schedule_response!=NULL,
"schedule_response is null (mod %d, cc %d)\n", "nr_schedule_response is null (mod %d, cc %d)\n",
module_id, module_id,
CC_id); CC_id);
ifi->schedule_response(sched_info); ifi->NR_Schedule_response(sched_info);
} }
LOG_D(PHY,"Schedule_response: SFN_SF:%d%d dl_pdus:%d\n",sched_info->frame,sched_info->subframe,sched_info->DL_req->dl_config_request_body.number_pdu); LOG_D(PHY,"NR_Schedule_response: SFN_SF:%d%d dl_pdus:%d\n",sched_info->frame,sched_info->subframe,sched_info->DL_req->dl_config_request_body.number_pdu);
} }
} }
} }
...@@ -336,7 +336,7 @@ NR_IF_Module_t *NR_IF_Module_init(int Mod_id){ ...@@ -336,7 +336,7 @@ NR_IF_Module_t *NR_IF_Module_init(int Mod_id){
memset((void*)if_inst[Mod_id],0,sizeof(NR_IF_Module_t)); memset((void*)if_inst[Mod_id],0,sizeof(NR_IF_Module_t));
if_inst[Mod_id]->CC_mask=0; if_inst[Mod_id]->CC_mask=0;
if_inst[Mod_id]->UL_indication = NR_UL_indication; if_inst[Mod_id]->NR_UL_indication = NR_UL_indication;
AssertFatal(pthread_mutex_init(&if_inst[Mod_id]->if_mutex,NULL)==0, AssertFatal(pthread_mutex_init(&if_inst[Mod_id]->if_mutex,NULL)==0,
"allocation of if_inst[%d]->if_mutex fails\n",Mod_id); "allocation of if_inst[%d]->if_mutex fails\n",Mod_id);
......
...@@ -100,7 +100,7 @@ typedef struct{ ...@@ -100,7 +100,7 @@ typedef struct{
/// subframe /// subframe
sub_frame_t subframe; sub_frame_t subframe;
/// nFAPI DL Config Request /// nFAPI DL Config Request
nfapi_dl_config_request_t *DL_req; nfapi_nr_dl_config_request_t *DL_req;
/// nFAPI UL Config Request /// nFAPI UL Config Request
nfapi_ul_config_request_t *UL_req; nfapi_ul_config_request_t *UL_req;
/// nFAPI HI_DCI Request /// nFAPI HI_DCI Request
...@@ -117,9 +117,9 @@ typedef struct { ...@@ -117,9 +117,9 @@ typedef struct {
typedef struct NR_IF_Module_s{ typedef struct NR_IF_Module_s{
//define the function pointer //define the function pointer
void (*UL_indication)(NR_UL_IND_t *UL_INFO); void (*NR_UL_indication)(NR_UL_IND_t *UL_INFO);
void (*schedule_response)(NR_Sched_Rsp_t *Sched_INFO); void (*NR_Schedule_response)(NR_Sched_Rsp_t *Sched_INFO);
void (*PHY_config_req)(NR_PHY_Config_t* config_INFO); void (*NR_PHY_config_req)(NR_PHY_Config_t* config_INFO);
uint32_t CC_mask; uint32_t CC_mask;
uint16_t current_frame; uint16_t current_frame;
uint8_t current_subframe; uint8_t current_subframe;
......
...@@ -49,6 +49,7 @@ ...@@ -49,6 +49,7 @@
#include "PHY/defs_gNB.h" #include "PHY/defs_gNB.h"
#include "SCHED/sched_eNB.h" #include "SCHED/sched_eNB.h"
#include "SCHED_NR/sched_nr.h" #include "SCHED_NR/sched_nr.h"
#include "SCHED_NR/fapi_nr_l1.h"
#include "PHY/LTE_TRANSPORT/transport_proto.h" #include "PHY/LTE_TRANSPORT/transport_proto.h"
#undef MALLOC //there are two conflicting definitions, so we better make sure we don't use it at all #undef MALLOC //there are two conflicting definitions, so we better make sure we don't use it at all
...@@ -928,8 +929,8 @@ void init_gNB(int single_thread_flag,int wait_for_sync) { ...@@ -928,8 +929,8 @@ void init_gNB(int single_thread_flag,int wait_for_sync) {
LOG_I(PHY,"Registering with MAC interface module\n"); LOG_I(PHY,"Registering with MAC interface module\n");
AssertFatal((gNB->if_inst = NR_IF_Module_init(inst))!=NULL,"Cannot register interface"); AssertFatal((gNB->if_inst = NR_IF_Module_init(inst))!=NULL,"Cannot register interface");
gNB->if_inst->schedule_response = schedule_response; gNB->if_inst->NR_Schedule_response = nr_schedule_response;
gNB->if_inst->PHY_config_req = nr_phy_config_request; gNB->if_inst->NR_PHY_config_req = nr_phy_config_request;
memset((void*)&gNB->UL_INFO,0,sizeof(gNB->UL_INFO)); memset((void*)&gNB->UL_INFO,0,sizeof(gNB->UL_INFO));
memset((void*)&gNB->Sched_INFO,0,sizeof(gNB->Sched_INFO)); memset((void*)&gNB->Sched_INFO,0,sizeof(gNB->Sched_INFO));
LOG_I(PHY,"Setting indication lists\n"); LOG_I(PHY,"Setting indication lists\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment