Commit b010d77f authored by Michele Paffetti's avatar Michele Paffetti

Adding comment for ASSUMPTIONs in SI transmission for FAPI style apprach. Code compile

parent c2ef993c
......@@ -706,7 +706,7 @@ typedef struct PHY_VARS_eNB_s {
//NB_IoT_eNB_NPDCCH_t *npdcch[NUMBER_OF_UE_MAX_NB_IoT]; //check the max size of this array
NB_IoT_eNB_NDLSCH_t *ndlsch[NUMBER_OF_UE_MAX_NB_IoT];
NB_IoT_eNB_NULSCH_t *nulsch[NUMBER_OF_UE_MAX_NB_IoT+1]; //nulsch[0] contains the RAR
NB_IoT_eNB_NDLSCH_t *ndlsch_SI,*ndlsch_ra;
NB_IoT_eNB_NDLSCH_t *ndlsch_SI,*ndlsch_ra, *ndlsch_SIB1;
NB_DL_FRAME_PARMS frame_parms_nb_iot;
// DCI for at most 2 DCI pdus
......
......@@ -8,7 +8,6 @@
#include "PHY/INIT/defs_nb_iot.h"
void handle_nfapi_dlsch_pdu_NB(PHY_VARS_eNB *eNB,
eNB_rxtx_proc_t *proc,
nfapi_dl_config_request_pdu_t *dl_config_pdu,
......@@ -21,33 +20,85 @@ void handle_nfapi_dlsch_pdu_NB(PHY_VARS_eNB *eNB,
int UE_id= -1;
//Check for SI PDU since in NB-IoT there is no DCI for that
//SIB (type 0), other DLSCH data (type 1)
if(rel13->rnti_type == 0)
//SIB1 (type 0), other DLSCH data (type 1) (include the SI messages) based on our ASSUMPTIONs
if(rel13->rnti_type == 0 && rel13->rnti == 65535)
{
ndlsch = eNB->ndlsch_SI;
/*
* the configuration of the NDLSCH PDU for the SIB1-NB shoudl be the following:
* RNTI type = 0;
* RNTI = OxFFFF (65535)
* Repetition number = 0-15 and should be mapped to 4,8,16 as reported in Table 16.4.1.3-3 TS 36.213
* Number of subframe for resource assignment = may is not neded to know since the scheduling is fixed
*
* From spec. TS 36.321 v14.2.o pag 31 --> there is an HARQ process for all the broadcast
*
*/
ndlsch= eNB->ndlsch_SIB1;
ndlsch->npdsch_start_symbol = rel13->start_symbol; //start symbol for the ndlsch transmission
ndlsch_harq = ndlsch->harq_process;
ndlsch_harq->pdu = sdu;
//should be from 1 to 8
ndlsch_harq->resource_assignment = rel13->number_of_subframes_for_resource_assignment;
ndlsch_harq->repetition_number = rel13->repetition_number;
ndlsch_harq->repetition_number = rel13->repetition_number; //is the schedulingInfoSIB1 of MMIB that is mapped into value 4-8-16 (see NDLSCH fapi specs Table 4-47)
ndlsch_harq->modulation = rel13->modulation;
ndlsch_harq->status = ACTIVE;
//SI information in reality have no feedback
//SI information in reality have no feedback (so there is no retransmission from the HARQ view point since no sck and nack)
// ndlsch_harq->frame = frame;
// ndlsch_harq->subframe = subframe;
ndlsch->nrs_antenna_ports = rel13->nrs_antenna_ports_assumed_by_the_ue;
ndlsch->scrambling_sequence_intialization = rel13->scrambling_sequence_initialization_cinit;
//managment of TBS size for SI??? (is written inside the SIB1-NB)
}
else
{ //ue specific data or RAR
//This are System Information (SI message)
else if(rel13->rnti_type == 1 && rel13->rnti == 65535)
{
/*
*
* the configuration of the NDLSCH PDU for the SIB1-NB should be the following:
* RNTI type = 1;
* RNTI = OxFFFF (65535)
* Repetition number = 0 and should be mapped to 1 through Table 16.4.1.3-2 TS 36.213
* Number of subframe for resource assignment = will be evaluated by the MAC based on the value of the "si-TB" field inside the SIB1-NB
*
* From spec. TS 36.321 v14.2.o pag 31 --> there is an HARQ process for all the broadcast
*
*
*/
ndlsch= eNB->ndlsch_SI;
ndlsch->npdsch_start_symbol = rel13->start_symbol; //start symbol for the ndlsch transmission
ndlsch_harq = ndlsch->harq_process;
if(sdu != NULL) //new SI starting transmission
ndlsch_harq->pdu = sdu;
else //this indicate me to continue the transmission of the previous one
{
//the major fact is that i should be aware when the SI should be transmitted since the PHY layer have no logic for this
}
//should be from 1 to 8
ndlsch_harq->resource_assignment = rel13->number_of_subframes_for_resource_assignment;
ndlsch_harq->repetition_number = rel13->repetition_number;
ndlsch_harq->modulation = rel13->modulation;
ndlsch_harq->status = ACTIVE;
//SI information in reality have no feedback (so there is no retransmission from the HARQ view point since no sck and nack)
// ndlsch_harq->frame = frame;
// ndlsch_harq->subframe = subframe;
ndlsch->nrs_antenna_ports = rel13->nrs_antenna_ports_assumed_by_the_ue;
ndlsch->scrambling_sequence_intialization = rel13->scrambling_sequence_initialization_cinit;
}
//ue specific data or RAR
else if(rel13->rnti != 65535 && rel13->rnti_type == 1)
{
//check if the PDU is for RAR
if(eNB->ndlsch_ra != NULL && rel13->rnti == eNB->ndlsch_ra->rnti)
if(eNB->ndlsch_ra != NULL && rel13->rnti == eNB->ndlsch_ra->rnti) //rnti for the RAR should have been set priviously by the DCI
{
eNB->ndlsch_ra->harq_process->pdu = sdu;
eNB->ndlsch_ra->npdsch_start_symbol = rel13->start_symbol;
......@@ -62,17 +113,19 @@ void handle_nfapi_dlsch_pdu_NB(PHY_VARS_eNB *eNB,
UE_id = find_ue_NB(rel13->rnti,eNB);
AssertFatal(UE_id==-1,"no existing ue specific dlsch_context\n");
ndlsch = eNB->ndlsch[(uint8_t)UE_id];
ndlsch_harq = eNB->ndlsch[(uint8_t)UE_id]->harq_process;
AssertFatal(ndlsch_harq!=NULL,"dlsch_harq for ue specific is null\n");
ndlsch = eNB->ndlsch[(uint8_t)UE_id];
ndlsch->npdsch_start_symbol = rel13->start_symbol;
ndlsch_harq->pdu = sdu;
}
}
//I don't know which kind of data is
else
{
LOG_E(PHY, "handle_nfapi_dlsch_pdu_NB: Unknown type of data (rnti type %d, rnti %d)\n", rel13->rnti_type, rel13->rnti);
}
}
......@@ -113,24 +166,51 @@ void schedule_response(Sched_Rsp_t *Sched_INFO)
nfapi_ul_config_request_pdu_t *ul_config_pdu;
nfapi_hi_dci0_request_pdu_t *hi_dci0_pdu;
for (i=0;i<number_dl_pdu;i++)
//clear previous possible allocation (maybe someone else should be added)
for(int i = 0; i < NUMBER_OF_UE_MAX_NB_IoT; i++)
{
if(eNB->ndlsch[i])
{
eNB->ndlsch[i]->harq_process->round=0; // may not needed
/*clear previous allocation information for all UEs*/
eNB->ndlsch[i]->subframe_tx[subframe] = 0;
}
/*clear the DCI allocation maps for new subframe*/
if(eNB->nulsch[i])
{
eNB->nulsch[i]->harq_process->dci_alloc = 0; //flag for indicating that a DCI has been allocated for UL
eNB->nulsch[i]->harq_process->rar_alloc = 0; //Flag indicating that this ULSCH has been allocated by a RAR (for Msg3)
//no phich for NB-IoT so no DMRS should be utilized
}
}
for (i=0;i<number_dl_pdu;i++) //in principle this should be always = 1
{
dl_config_pdu = &DL_req->dl_config_pdu_list[i];
switch (dl_config_pdu->pdu_type)
{
case NFAPI_DL_CONFIG_NPDCCH_PDU_TYPE:
//Remember: there is no DCI for SI information
NB_generate_eNB_dlsch_params(eNB,proc,dl_config_pdu);
break;
case NFAPI_DL_CONFIG_NBCH_PDU_TYPE:
//XXX for the moment we don't care about the n-bch pdu content since we need only the sdu if tx.request
npbch = eNB->npbch;
npbch->pdu = Sched_INFO->sdu[i];
// for the moment we don't care about the n-bch pdu content since we need only the sdu if tx.request
npbch = eNB->npbch; //in the main of the lte-softmodem they should allocate this memory of phy vars
if(Sched_INFO->sdu[i] != NULL)
npbch->pdu = Sched_INFO->sdu[i];
else
LOG_E(PHY, "REceived a schedule_response with N-BCH but no PDU!!\n");
break;
case NFAPI_DL_CONFIG_NDLSCH_PDU_TYPE:
case NFAPI_DL_CONFIG_NDLSCH_PDU_TYPE://we can have three types of NDLSCH based on our assumptions: SIB1, SI, Data
handle_nfapi_dlsch_pdu_NB(eNB, proc,dl_config_pdu,Sched_INFO->sdu[i]);
......
......@@ -468,7 +468,7 @@ void NB_generate_eNB_dlsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t * proc,nfapi
// check DCI format is N1 (format 0) or N2 (format 1)
if(dl_config_pdu->npdcch_pdu.npdcch_pdu_rel13.dci_format == 0)
{
//check DCI format N1 is for RAR ra_rnti = 2 in FAPI specs table 4-45
//check DCI format N1 is for RAR rnti_type in FAPI specs table 4-45
if(dl_config_pdu->npdcch_pdu.npdcch_pdu_rel13.rnti_type == 1)
{
DCI_format = DCIFormatN1_RAR;
......@@ -605,8 +605,8 @@ void NB_generate_eNB_ulsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,nfapi_
* for NB-IoT ndlsch procedure
* this function is called by the PHy procedure TX in 3 possible occasion:
* 1) we manage BCCH pdu (SI)
* 2) we manage RA dlsch pdu (to be checked if needed in our case)
* 3) UE specific dlsch pdu
* 2) we manage RA dlsch pdu
* 3) UE-specific dlsch pdu
* ** we need to know if exist and which value has the eutracontrolRegionSize (TS 36.213 ch 16.4.1.4) whenever we are in In-band mode
* ** CQI and PMI are not present in NB-IoT
* ** redundancy version exist only in UL for NB-IoT and not in DL
......@@ -640,15 +640,7 @@ void npdsch_procedures(PHY_VARS_eNB *eNB,
ndlsch_harq->mcs,
ndlsch_harq->round);
///XXX skip this for the moment and all the ue stats
//#if defined(MESSAGE_CHART_GENERATOR_PHY)..
//if (ue_stats) ue_stats->dlsch_sliding_cnt++; //used to compute the mcs offset
if(ndlsch_harq->round == 0) { //first transmission
// if (ue_stats)
// ue_stats->dlsch_trials[harq_pid][0]++;
if(ndlsch_harq->round == 0) { //first transmission so we encode... because we generate the sequence
if (eNB->mac_enabled==1) { // set in lte-softmodem/main line 1646
......@@ -689,6 +681,20 @@ void npdsch_procedures(PHY_VARS_eNB *eNB,
if (eNB->abstraction_flag==0) { // used for simulation of the PHY??
/*
* in any case inside the encoding procedure is re-checked if this is round 0 or no
* in the case of harq_process round = 0 --> generate the sequence and put it into the parameter *c[r]
* otherwise do nothing(only rate maching)
*/
/*
* REASONING:
* Encoding procedure will generate a Table with encoded data ( in ndlsch structure)
* The table will go in input to the scrambling
* --we should take care if there are repetitions of data or not because scrambling should be called at the first frame and subframe in which each repetition
* begin (see params Nf, Ns)
*/
// 36-212
......@@ -754,6 +760,12 @@ void npdsch_procedures(PHY_VARS_eNB *eNB,
start_meas(&eNB->dlsch_scrambling_stats);
LOG_I(PHY, "NB-IoT Scrambling step\n");
/*
* SOME RELEVANT FACTS:
*
*
*/
// dlsch_scrambling(fp,
// 0,
// dlsch,
......@@ -804,9 +816,38 @@ void npdsch_procedures(PHY_VARS_eNB *eNB,
extern int oai_exit;
/*
r_type, rn is only used in PMCH procedure so I remove it.
*/
* ASSUMPTION
*Since in FAPI specs seems to not manage the information for the sceduling of system information:
* Assume that the MAC layer manage the scheduling for the System information (SI messages) transmission while MIB and SIB1 are done directly at PHY layer
* This means that the MAC scheduler will send to the PHY the NDLSCH PDU and MIB PDU (DL_CONFIG.request)each time they should be transmitted. In particular:
***MIB-NB
*schedule_response containing a n-BCH PDU is transmitted only at the beginning of the MIB period, then repetitions are made directly by the PHY layer (see FAPI specs pag 94 N-BCH 3.2.4.2)
*if no new N-BCH PDU is trasmitted at SFN mod 64=0 then stop MIB transmission
***SIB1-NB
*schedule response containing a NDLSCH pdu (with appropiate configuration) will be transmitted only at the beginning of each SIB1-NB period (256 rf)
*then repetitions are managed directly by the PHY layer
*if no new NDLSCH pdu (configured for SIB1-NB) at SFN mod 256 = 0 is transmitted. stop SIB1-NB transmission
****SI Messages
* -schedule_response is transmitted by the MAC in every subframe needed for the SI transmission (NDLSCH should have a proper configuration)
* -if the schedule_response carry any SDU (SDU!= NULL)--> put the SDU in the PHY buffer to be encoded ecc... and start the transmission
* -if the schedule_response not carry any SDU (SDU == NULL) but NDLSCH is properly set for SI, then PHY continue transmit the remaining part of the previous SDU
* (this because the PHY layer have no logic of repetition_pattern, si_window ecc.. so should be continuously instructed the PHY when to transmit.
* Furthermore, SI messages are transmitted in more that 1 subframe (2 or 8) and therefore MAC layer need to count how many subframes are available in the current frame for transmit it
* and take in consideration that other frames are needed before starting the transmission of a new one)
*
*
* FAPI distingsh the BCCH info in the NDLSCH may for some reasons:
* -scrambling is different
*
* **relevant aspects for the System information Transmission (Table 4-47 NDLSCH FAPi specs)
* 1)RNTI type = 0 (contains a BCCH)
* 2)Repetition number == scheduling info SIB1
* 3)RNTI
* (see schedule_response implementation)
*
*/
void NB_phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
eNB_rxtx_proc_t *proc,
int do_meas)
......@@ -814,24 +855,20 @@ void NB_phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
int frame = proc->frame_tx;
int subframe = proc->subframe_tx;
uint32_t i,aa;
//uint8_t harq_pid; only one HARQ process
DCI_PDU_NB *dci_pdu = eNB->DCI_pdu;
//DCI_PDU_NB DCI_pdu_tmp;
NB_DL_FRAME_PARMS *fp = &eNB->frame_parms_nb_iot;
// DCI_ALLOC_t *dci_alloc = (DCI_ALLOC_t *)NULL; (not used since we have already packed)
int8_t UE_id = 0;
uint8_t ul_subframe;
uint32_t ul_frame;
int **txdataF = eNB->common_vars.txdataF[0];
//uint8_t num_npdcch_symbols = 0;
if(do_meas == 1)
start_meas(&eNB->phy_proc_tx);
/*he original scheduler "eNB_dlsch_ulsch_scheduler" now is no more done here but is triggered directly from UL_Indication (IF-Module Function)*/
/*the original scheduler "eNB_dlsch_ulsch_scheduler" now is no more done here but is triggered directly from UL_Indication (IF-Module Function)*/
// clear the transmit data array for the current subframe
for (aa=0; aa<fp->nb_antenna_ports_eNB; aa++)
......@@ -848,7 +885,7 @@ void NB_phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
*
* *the MIB pdu has been stored in the npbch structure of the PHY_vars_eNB during the schedule_response procedure
*
* TX.request --> nfapi_tx_request_pdu_t --> MAC PDU (MIB) //not used in our case
* TX.request --> nfapi_tx_request_pdu_t --> MAC PDU (MIB) //not used in our case since we put inside the *sdu in Sched_INFO
* Content of tx_request_pdu
* -pdu length 14 (bytes)???
* -pdu index = 1
......@@ -856,19 +893,18 @@ void NB_phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
* -segment length 5 bytes,
* -segment data 34 bits for MIB (5 bytes)
*
*XXX we are assuming that for the moment we are not segmenting the pdu (this should happen only when we have separate machines)
*XXX so the data is always contained in the first segment (segments[0])
*
*Problem: NB_IoT_RB_ID should be the ID of the RB dedicated to NB-IoT
*but if we are in stand alone mode?? i should pass the DC carrier???
*in general this RB-ID should be w.r.t LTE bandwidht???
**allowed indexes for Nb-IoT PRBs are reported in R&Shwartz pag 9
**allowed indexes for Nb-IoT PRBs are reported in R&Shwartz whitepaper pag 9
*
*should add new condition here
*/
if(subframe==0 && (eNB->npbch != NULL))
{
if(eNB->npbch->pdu != NULL)
{
//BCOM function
generate_npbch(&eNB->npbch,
txdataF,
AMP,
......@@ -877,17 +913,37 @@ void NB_phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
frame%64,
fp->NB_IoT_RB_ID
);
else
LOG_E(PHY, "NB_phy_procedures_eNB_TX: missed mib pdu to be transmitted\n");
}
//In the last frame in which the MIB-NB should be transmitted after we point to NULL since maybe we stop MIB trasnmission
//this should be in line with FAPI specs pag 94 (BCH procedure in Downlink 3.2.4.2 for NB-IoT)
if(frame%64 == 63)
eNB->npbch->pdu = NULL;
}
//Check for SIB1-NB transmission
//we should still consider that if at the start of the new SIB1-NB period the MAC will not send an NPDSCH for the SIB1-NB transmission then SIB1-NB will be not transmitted
if(subframe == 4 && eNB->ndlsch_SIB1 != NULL)
{
uint32_t sib1_startFrame = is_SIB1_NB(frame, eNB->ndlsch_SIB1->harq_process->repetition_number,fp->Nid_cell);
if(sib1_startFrame != -1 && eNB->ndlsch_SIB1->harq_process->pdu != NULL)
{
npdsch_procedures(eNB,
proc,
eNB->ndlsch_SIB1, //since we have no DCI for system information, this is filled directly when we receive the DL_CONFIG.request message (add a file in Sched_INFO)
eNB->ndlsch_SIB1->harq_process->pdu);
}
//at the end of the period we put the PDU to NULL since we have to wait for the new one from the MAC for starting the nextis_SIB1_NB
if((frame-sib1_startFrame)%256 == 255)
eNB->ndlsch_SIB1->harq_process->pdu = NULL;
///check for BCCH transmission (System Information)
//XXX the scheduling of SI and also MIB ecc... we don-t care at phy layer??? is the scheduler that gives us the DL_config at proper time??
}
//Check for SI transmission
if(eNB->ndlsch_SI != NULL && (eNB->ndlsch_SI->harq_process->pdu != NULL))
{
npdsch_procedures(eNB,
......@@ -904,30 +960,14 @@ void NB_phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
proc,
eNB->ndlsch_ra, //should be filled ?? (in the old implementation was filled when from DCI we generate_dlsch_params
eNB->ndlsch_ra->harq_process->pdu);
}
eNB->ndlsch_ra->active= 0;
}
//clear previous possible allocation
for(int i = 0; i < NUMBER_OF_UE_MAX_NB_IoT; i++)
{
if(eNB->ndlsch[i])
{
eNB->ndlsch[i]->harq_process->round=0; // may not needed
/*clear previous allocation information for all UEs*/
eNB->ndlsch[i]->subframe_tx[subframe] = 0;
}
/*clear the DCI allocation maps for new subframe*/
if(eNB->nulsch[i])
{
eNB->nulsch[i]->harq_process->dci_alloc = 0; //flag for indicating that a DCI has been allocated for UL
eNB->nulsch[i]->harq_process->rar_alloc = 0; //Flag indicating that this ULSCH has been allocated by a RAR (for Msg3)
//no phich for NB-IoT so no DMRS should be utilized
}
}
//transmission of UE specific ndlsch data
......
......@@ -267,8 +267,8 @@ void NB_initiate_ra_proc(module_id_t module_idP, int CC_id,frame_t frameP, uint1
if (loop == 100) { printf("%s:%d:%s: FATAL ERROR! contact the authors\n", __FILE__, __LINE__, __FUNCTION__); abort(); }
//RA_template[i].RA_rnti = 1+subframeP+(10*f_id);
/*for NB-IoT, RA_rnti is counted in 36.321 5.1.4*/
RA_template[i].RA_rnti = 1+floor(frameP/4)+256*carrier_id;
RA_template[i].preamble_index = preamble_index;
RA_template[i].RA_rnti = 1+floor(frameP/4)+256*carrier_id;
LOG_D(MAC,"[eNB %d][RAPROC] CC_id %d Frame %d Activating RAR generation for process %d, rnti %x, RA_active %d\n",
module_idP,CC_id,frameP,i,RA_template[i].rnti,
RA_template[i].RA_active);
......
......@@ -559,7 +559,9 @@ int NB_rrc_mac_config_req_eNB(
int npdsch_rep_to_array[3] ={4,8,16}; //TS 36.213 Table 16.4.1.3-3
int sib1_startFrame_to_array[4] = {0,16,32,48};//TS 36.213 Table 16.4.1.3-4
//New----------------------------------------------------
boolean_t is_SIB1_NB(
//return -1 whenever no SIB1-NB transmission occur.
//return sib1_startFrame when transmission occur
uint32_t is_SIB1_NB(
const frame_t frameP,
long schedulingInfoSIB1,//from the mib
int physCellId //by configuration
......@@ -623,13 +625,13 @@ boolean_t is_SIB1_NB(
break;
default:
LOG_E(RRC, "Number of repetitions %d not allowed", nb_rep);
return FALSE;
return -1;
}
//check the actual frame w.r.t SIB1-NB starting frame
if(frameP < sib1_startFrame + period_nb*256){
LOG_T(RRC, "the actual frame %d is before the SIB1-NB starting frame %d of the period--> bcch_sdu_legnth = 0", frameP, sib1_startFrame + period_nb*256);
return FALSE;
return -1;
}
......@@ -656,22 +658,23 @@ boolean_t is_SIB1_NB(
if(sib1_startFrame%2 != 0){ // means that the starting frame was 1 --> sib1-NB is transmitted in every odd frame
if(frameP%2 == 1){
return TRUE;
return sib1_startFrame;
}
}
//in all other starting frame cases SIB1-NB is transmitted in the even frames inside the corresponding repetition interval
if(frameP%2 == 0){ // SIB1-NB is transmitted
return TRUE;
return sib1_startFrame;
}
}
if(index> frameP) // was not inside an interval of 16 radio frames for sib1-nb transmission
return 0;
return -1;
}
return FALSE;
return -1;
}
//---------------------------------------------------------------------------
//New
int si_windowLength_to_rf[7]={16,32,48,64,96,128,160}; //TS 36.331 v14.2.1 pag 587
......@@ -681,8 +684,8 @@ int si_period_to_nb[7]={64,128,256,512,1024,2048,4096};
boolean_t is_SIB23_NB(
const frame_t frameP,
const frame_t h_frameP, // the HSFN (increased by 1 every SFN wrap around) (10 bits)
long si_period, //SI-periodicity (rf)
long si_windowLength_ms, //Si-windowlength (ms) XXX received as an enumerative (see the IE of SIB1-NB)
long si_period, //SI-periodicity (value given by the Enumerative of the SIB1-NB)
long si_windowLength_ms, //Si-windowlength (ms) received as an enumerative (see the IE of SIB1-NB)
long* si_RadioFrameOffset, //Optional
long si_RepetitionPattern // is given as an Enumerated
)
......@@ -741,6 +744,7 @@ boolean_t is_SIB23_NB(
return FALSE;
}
//translate the enumerative into numer of Radio Frames
si_periodicity = si_period_to_nb[si_period];
//check if the actual frame is within an HSFN interval that will include si-window (relation with the si-periodicity)
......@@ -761,7 +765,7 @@ boolean_t is_SIB23_NB(
return FALSE;
}
//get the si_window in Radio Frame
//get the si_window from enumerative into Radio FRames
si_windowLength = si_windowLength_to_rf[si_windowLength_ms];
if(si_windowLength > si_periodicity){
......@@ -769,10 +773,10 @@ boolean_t is_SIB23_NB(
return FALSE;
}
//get the si_pattern
//get the si_pattern from the enumerative
si_pattern = si_repPattern_to_nb[si_RepetitionPattern];
if(si_RadioFrameOffset == NULL)//is not defined
if(si_RadioFrameOffset == NULL)//may is not defined since is optional
{
LOG_I(RRC, "si_RadioFrame offset was NULL --> set = 0\n");
si_offset = 0;
......@@ -873,7 +877,7 @@ int8_t NB_mac_rrc_data_req_eNB(
//Requesting for SI Message
//XXX to be check when it is initialized
if(eNB_rrc_inst_NB[Mod_idP].carrier[CC_id].SI.Active==0) {
if(eNB_rrc_inst_NB[Mod_idP].carrier[CC_id].SI.Active==0) { //is set when we call openair_rrc_on function
LOG_E(RRC, "SI value on the carrier = 0");
return 0;
}
......@@ -898,7 +902,7 @@ int8_t NB_mac_rrc_data_req_eNB(
//sib1-NB scheduled in subframe #4
if(subframeP == 4 && is_SIB1_NB(frameP,schedulingInfoSIB1, physCellId)){
if(subframeP == 4 && is_SIB1_NB(frameP,schedulingInfoSIB1, physCellId)!= -1){
memcpy(&buffer_pP[0],
eNB_rrc_inst_NB[Mod_idP].carrier[CC_id].SIB1_NB,
......
......@@ -100,7 +100,7 @@ int NB_rrc_mac_config_req_eNB(
/**\brief function for evaluate if the SIB1-NB transmission occur
* called by the NB_mac_rrc_data_req
*/
boolean_t is_SIB1_NB(
uint32_t is_SIB1_NB(
const frame_t frameP,
long schedulingInfoSIB1,//from the mib
int physCellId
......
......@@ -1626,10 +1626,6 @@ init_SI_NB(
config_INFO = malloc(sizeof(PHY_Config_t));
// uint8_t SIwindowsize = 1; //frame
// uint16_t SIperiod = 8; // in frames
//copy basic parameters
eNB_rrc_inst_NB[ctxt_pP->module_id].carrier[CC_id].physCellId = configuration->Nid_cell[CC_id];
eNB_rrc_inst_NB[ctxt_pP->module_id].carrier[CC_id].p_eNB = configuration->nb_antenna_ports[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