Commit 42e4c952 authored by Matthieu Kanj's avatar Matthieu Kanj

operational code version for synchro testing

parent 3c1373a1
...@@ -494,7 +494,7 @@ void common_signal_procedures (PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) { ...@@ -494,7 +494,7 @@ void common_signal_procedures (PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
uint8_t *pbch_pdu=&eNB->pbch_pdu[0]; uint8_t *pbch_pdu=&eNB->pbch_pdu[0];
int subframe = proc->subframe_tx; int subframe = proc->subframe_tx;
int frame = proc->frame_tx; int frame = proc->frame_tx;
//int With_NSSS=0;
// NB-IoT synchro signals // NB-IoT synchro signals
...@@ -502,8 +502,7 @@ void common_signal_procedures (PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) { ...@@ -502,8 +502,7 @@ void common_signal_procedures (PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
common_signal_procedures_NB_IoT(eNB,proc); common_signal_procedures_NB_IoT(eNB,proc);
/*
// generate Cell-Specific Reference Signals for both slots // generate Cell-Specific Reference Signals for both slots
if (eNB->abstraction_flag==0) { if (eNB->abstraction_flag==0) {
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_RS_TX,1); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_RS_TX,1);
...@@ -520,7 +519,7 @@ void common_signal_procedures (PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) { ...@@ -520,7 +519,7 @@ void common_signal_procedures (PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_RS_TX,0); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_RS_TX,0);
} }
*/
//////////////////////////// for NB-IoT testing ///////////////////////////// //////////////////////////// for NB-IoT testing /////////////////////////////
/* /*
// First half of PSS/SSS (FDD, slot 0) // First half of PSS/SSS (FDD, slot 0)
...@@ -1220,8 +1219,8 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -1220,8 +1219,8 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
if ((fp->frame_type == TDD) && (subframe_select(fp,subframe)==SF_UL)) return; if ((fp->frame_type == TDD) && (subframe_select(fp,subframe)==SF_UL)) return;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_TX+offset,1); // VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_TX+offset,1);
if (do_meas==1) start_meas(&eNB->phy_proc_tx); // if (do_meas==1) start_meas(&eNB->phy_proc_tx);
T(T_ENB_PHY_DL_TICK, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe)); T(T_ENB_PHY_DL_TICK, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe));
...@@ -1247,7 +1246,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -1247,7 +1246,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
} }
/*
// Get scheduling info for next subframe // Get scheduling info for next subframe
// This is called only for the CC_id = 0 and triggers scheduling for all CC_id's // This is called only for the CC_id = 0 and triggers scheduling for all CC_id's
if (eNB->mac_enabled==1) { if (eNB->mac_enabled==1) {
...@@ -1255,7 +1254,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -1255,7 +1254,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
mac_xface->eNB_dlsch_ulsch_scheduler(eNB->Mod_id,0,frame,subframe);//,1); mac_xface->eNB_dlsch_ulsch_scheduler(eNB->Mod_id,0,frame,subframe);//,1);
} }
} }
*/
// clear the transmit data array for the current subframe // clear the transmit data array for the current subframe
if (eNB->abstraction_flag==0) { if (eNB->abstraction_flag==0) {
for (aa=0; aa<fp->nb_antenna_ports_eNB; aa++) { for (aa=0; aa<fp->nb_antenna_ports_eNB; aa++) {
...@@ -1264,14 +1263,14 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -1264,14 +1263,14 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
} }
} }
if (is_pmch_subframe(frame,subframe,fp)) { // if (is_pmch_subframe(frame,subframe,fp)) {
pmch_procedures(eNB,proc,rn,r_type); // pmch_procedures(eNB,proc,rn,r_type);
} // }
else { // else {
// this is not a pmch subframe, so generate PSS/SSS/PBCH // this is not a pmch subframe, so generate PSS/SSS/PBCH
common_signal_procedures(eNB,proc); common_signal_procedures(eNB,proc);
} // }
/*
#if defined(SMBV) #if defined(SMBV)
// PBCH takes one allocation // PBCH takes one allocation
...@@ -1281,7 +1280,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -1281,7 +1280,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
} }
#endif #endif
*/
if (eNB->mac_enabled==1) { if (eNB->mac_enabled==1) {
// Parse DCI received from MAC // Parse DCI received from MAC
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PDCCH_TX,1); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PDCCH_TX,1);
...@@ -1292,25 +1291,26 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -1292,25 +1291,26 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
} }
else { else {
DCI_pdu = &DCI_pdu_tmp; DCI_pdu = &DCI_pdu_tmp;
#ifdef EMOS_CHANNEL #ifdef EMOS_CHANNEL
fill_dci_emos(DCI_pdu,eNB); // fill_dci_emos(DCI_pdu,eNB);
#else #else
fill_dci(DCI_pdu,eNB,proc); // fill_dci(DCI_pdu,eNB,proc);
// clear previous allocation information for all UEs // clear previous allocation information for all UEs
for (i=0; i<NUMBER_OF_UE_MAX; i++) { /* for (i=0; i<NUMBER_OF_UE_MAX; i++) {
if (eNB->dlsch[i][0]){ if (eNB->dlsch[i][0]){
for (j=0; j<8; j++) for (j=0; j<8; j++)
eNB->dlsch[i][0]->harq_processes[j]->round = 0; eNB->dlsch[i][0]->harq_processes[j]->round = 0;
} }
} }
*/
#endif #endif
} }
// clear existing ulsch dci allocations before applying info from MAC (this is table // clear existing ulsch dci allocations before applying info from MAC (this is table
ul_subframe = pdcch_alloc2ul_subframe(fp,subframe); // ul_subframe = pdcch_alloc2ul_subframe(fp,subframe);
ul_frame = pdcch_alloc2ul_frame(fp,frame,subframe); // ul_frame = pdcch_alloc2ul_frame(fp,frame,subframe);
/*
if ((subframe_select(fp,ul_subframe)==SF_UL) || if ((subframe_select(fp,ul_subframe)==SF_UL) ||
(fp->frame_type == FDD)) { (fp->frame_type == FDD)) {
harq_pid = subframe2harq_pid(fp,ul_frame,ul_subframe); harq_pid = subframe2harq_pid(fp,ul_frame,ul_subframe);
...@@ -1321,14 +1321,14 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -1321,14 +1321,14 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
eNB->ulsch[i]->harq_processes[harq_pid]->dci_alloc=0; eNB->ulsch[i]->harq_processes[harq_pid]->dci_alloc=0;
eNB->ulsch[i]->harq_processes[harq_pid]->rar_alloc=0; eNB->ulsch[i]->harq_processes[harq_pid]->rar_alloc=0;
} }
} }*/
/*
// clear previous allocation information for all UEs // clear previous allocation information for all UEs
for (i=0; i<NUMBER_OF_UE_MAX; i++) { for (i=0; i<NUMBER_OF_UE_MAX; i++) {
if (eNB->dlsch[i][0]) if (eNB->dlsch[i][0])
eNB->dlsch[i][0]->subframe_tx[subframe] = 0; eNB->dlsch[i][0]->subframe_tx[subframe] = 0;
} }
*/
/* save old HARQ information needed for PHICH generation */ /* save old HARQ information needed for PHICH generation */
for (i=0; i<NUMBER_OF_UE_MAX; i++) { for (i=0; i<NUMBER_OF_UE_MAX; i++) {
if (eNB->ulsch[i]) { if (eNB->ulsch[i]) {
...@@ -1361,7 +1361,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -1361,7 +1361,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
} }
} }
/*
// loop over all DCIs for this subframe to generate DLSCH allocations // loop over all DCIs for this subframe to generate DLSCH allocations
for (i=0; i<DCI_pdu->Num_common_dci + DCI_pdu->Num_ue_spec_dci ; i++) { for (i=0; i<DCI_pdu->Num_common_dci + DCI_pdu->Num_ue_spec_dci ; i++) {
LOG_D(PHY,"[eNB] Subframe %d: DCI %d/%d : rnti %x, CCEind %d\n",subframe,i,DCI_pdu->Num_common_dci+DCI_pdu->Num_ue_spec_dci,DCI_pdu->dci_alloc[i].rnti,DCI_pdu->dci_alloc[i].firstCCE); LOG_D(PHY,"[eNB] Subframe %d: DCI %d/%d : rnti %x, CCEind %d\n",subframe,i,DCI_pdu->Num_common_dci+DCI_pdu->Num_ue_spec_dci,DCI_pdu->dci_alloc[i].rnti,DCI_pdu->dci_alloc[i].firstCCE);
...@@ -1379,12 +1379,12 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -1379,12 +1379,12 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
} }
else UE_id=0; else UE_id=0;
generate_eNB_dlsch_params(eNB,proc,dci_alloc,UE_id); // generate_eNB_dlsch_params(eNB,proc,dci_alloc,UE_id);
} }
*/
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_DCI_INFO,(frame*10)+subframe); VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_DCI_INFO,(frame*10)+subframe);
/*
// Apply physicalConfigDedicated if needed // Apply physicalConfigDedicated if needed
// This is for UEs that have received this IE, which changes these DL and UL configuration, we apply after a delay for the eNodeB UL parameters // This is for UEs that have received this IE, which changes these DL and UL configuration, we apply after a delay for the eNodeB UL parameters
phy_config_dedicated_eNB_step2(eNB); phy_config_dedicated_eNB_step2(eNB);
...@@ -1403,11 +1403,11 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -1403,11 +1403,11 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
LOG_E(PHY,"[eNB %"PRIu8"] Frame %d: Unknown UE_id for rnti %"PRIx16"\n",eNB->Mod_id,frame,dci_alloc->rnti); LOG_E(PHY,"[eNB %"PRIu8"] Frame %d: Unknown UE_id for rnti %"PRIx16"\n",eNB->Mod_id,frame,dci_alloc->rnti);
mac_xface->macphy_exit("FATAL\n"); mac_xface->macphy_exit("FATAL\n");
} }
generate_eNB_ulsch_params(eNB,proc,dci_alloc,UE_id); //generate_eNB_ulsch_params(eNB,proc,dci_alloc,UE_id);
} }
} }
*/
...@@ -1420,7 +1420,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -1420,7 +1420,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
eNB->num_common_dci[(subframe)&1]=0; eNB->num_common_dci[(subframe)&1]=0;
} }
/*
if (eNB->abstraction_flag == 0) { if (eNB->abstraction_flag == 0) {
if (do_pdcch_flag) { if (do_pdcch_flag) {
if (DCI_pdu->Num_ue_spec_dci+DCI_pdu->Num_common_dci > 0) { if (DCI_pdu->Num_ue_spec_dci+DCI_pdu->Num_common_dci > 0) {
...@@ -1451,17 +1451,17 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -1451,17 +1451,17 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
} }
#endif #endif
*/
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_DCI_INFO,DCI_pdu->num_pdcch_symbols); VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_DCI_INFO,DCI_pdu->num_pdcch_symbols);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PDCCH_TX,0); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PDCCH_TX,0);
/*
#if defined(SMBV) #if defined(SMBV)
// Sets up PDCCH and DCI table // Sets up PDCCH and DCI table
if (smbv_is_config_frame(frame) && (smbv_frame_cnt < 4) && ((DCI_pdu->Num_common_dci+DCI_pdu->Num_ue_spec_dci)>0)) { if (smbv_is_config_frame(frame) && (smbv_frame_cnt < 4) && ((DCI_pdu->Num_common_dci+DCI_pdu->Num_ue_spec_dci)>0)) {
LOG_D(PHY,"[SMBV] Frame %3d, SF %d PDCCH, number of DCIs %d\n",frame,subframe,DCI_pdu->Num_common_dci+DCI_pdu->Num_ue_spec_dci); LOG_D(PHY,"[SMBV] Frame %3d, SF %d PDCCH, number of DCIs %d\n",frame,subframe,DCI_pdu->Num_common_dci+DCI_pdu->Num_ue_spec_dci);
dump_dci(fp,&DCI_pdu->dci_alloc[0]); dump_dci(fp,&DCI_pdu->dci_alloc[0]);
smbv_configure_pdcch(smbv_fname,(smbv_frame_cnt*10) + (subframe),num_pdcch_symbols,DCI_pdu->Num_common_dci+DCI_pdu->Num_ue_spec_dci); // smbv_configure_pdcch(smbv_fname,(smbv_frame_cnt*10) + (subframe),num_pdcch_symbols,DCI_pdu->Num_common_dci+DCI_pdu->Num_ue_spec_dci);
} }
#endif #endif
...@@ -1469,22 +1469,22 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -1469,22 +1469,22 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
//MP: eNB->dlsch_SI->active is set by the function generate_dlsch_params_from_dci (depending on the DCI content) //MP: eNB->dlsch_SI->active is set by the function generate_dlsch_params_from_dci (depending on the DCI content)
if ((eNB->dlsch_SI) && (eNB->dlsch_SI->active == 1)) { if ((eNB->dlsch_SI) && (eNB->dlsch_SI->active == 1)) {
pdsch_procedures(eNB,proc,eNB->dlsch_SI,(LTE_eNB_DLSCH_t*)NULL,(LTE_eNB_UE_stats*)NULL,0,num_pdcch_symbols); // pdsch_procedures(eNB,proc,eNB->dlsch_SI,(LTE_eNB_DLSCH_t*)NULL,(LTE_eNB_UE_stats*)NULL,0,num_pdcch_symbols);
#if defined(SMBV) #if defined(SMBV)
// Configures the data source of allocation (allocation is configured by DCI) // Configures the data source of allocation (allocation is configured by DCI)
if (smbv_is_config_frame(frame) && (smbv_frame_cnt < 4)) { if (smbv_is_config_frame(frame) && (smbv_frame_cnt < 4)) {
LOG_D(PHY,"[SMBV] Frame %3d, Configuring SI payload in SF %d alloc %"PRIu8"\n",frame,(smbv_frame_cnt*10) + (subframe),smbv_alloc_cnt); LOG_D(PHY,"[SMBV] Frame %3d, Configuring SI payload in SF %d alloc %"PRIu8"\n",frame,(smbv_frame_cnt*10) + (subframe),smbv_alloc_cnt);
smbv_configure_datalist_for_alloc(smbv_fname, smbv_alloc_cnt++, (smbv_frame_cnt*10) + (subframe), DLSCH_pdu, input_buffer_length); // smbv_configure_datalist_for_alloc(smbv_fname, smbv_alloc_cnt++, (smbv_frame_cnt*10) + (subframe), DLSCH_pdu, input_buffer_length);
} }
#endif #endif
} }
*/
// Check for RA activity // Check for RA activity
if ((eNB->dlsch_ra) && (eNB->dlsch_ra->active == 1)) { if ((eNB->dlsch_ra) && (eNB->dlsch_ra->active == 1)) {
/*
#if defined(SMBV) #if defined(SMBV)
// Configures the data source of allocation (allocation is configured by DCI) // Configures the data source of allocation (allocation is configured by DCI)
...@@ -1494,7 +1494,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -1494,7 +1494,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
} }
#endif #endif
*/
LOG_D(PHY,"[eNB %"PRIu8"][RAPROC] Frame %d, subframe %d: Calling generate_dlsch (RA),Msg3 frame %"PRIu32", Msg3 subframe %"PRIu8"\n", LOG_D(PHY,"[eNB %"PRIu8"][RAPROC] Frame %d, subframe %d: Calling generate_dlsch (RA),Msg3 frame %"PRIu32", Msg3 subframe %"PRIu8"\n",
eNB->Mod_id, eNB->Mod_id,
...@@ -1502,7 +1502,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -1502,7 +1502,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
eNB->ulsch[(uint32_t)UE_id]->Msg3_frame, eNB->ulsch[(uint32_t)UE_id]->Msg3_frame,
eNB->ulsch[(uint32_t)UE_id]->Msg3_subframe); eNB->ulsch[(uint32_t)UE_id]->Msg3_subframe);
pdsch_procedures(eNB,proc,eNB->dlsch_ra,(LTE_eNB_DLSCH_t*)NULL,(LTE_eNB_UE_stats*)NULL,1,num_pdcch_symbols); // pdsch_procedures(eNB,proc,eNB->dlsch_ra,(LTE_eNB_DLSCH_t*)NULL,(LTE_eNB_UE_stats*)NULL,1,num_pdcch_symbols);
eNB->dlsch_ra->active = 0; eNB->dlsch_ra->active = 0;
...@@ -1515,7 +1515,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -1515,7 +1515,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
(eNB->dlsch[(uint8_t)UE_id][0]->rnti>0)&& (eNB->dlsch[(uint8_t)UE_id][0]->rnti>0)&&
(eNB->dlsch[(uint8_t)UE_id][0]->active == 1)) { (eNB->dlsch[(uint8_t)UE_id][0]->active == 1)) {
pdsch_procedures(eNB,proc,eNB->dlsch[(uint8_t)UE_id][0],eNB->dlsch[(uint8_t)UE_id][1],&eNB->UE_stats[(uint32_t)UE_id],0,num_pdcch_symbols); //pdsch_procedures(eNB,proc,eNB->dlsch[(uint8_t)UE_id][0],eNB->dlsch[(uint8_t)UE_id][1],&eNB->UE_stats[(uint32_t)UE_id],0,num_pdcch_symbols);
} }
...@@ -1525,7 +1525,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -1525,7 +1525,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
(eNB->dlsch[(uint8_t)UE_id][0]->active == 0)) { (eNB->dlsch[(uint8_t)UE_id][0]->active == 0)) {
// clear subframe TX flag since UE is not scheduled for PDSCH in this subframe (so that we don't look for PUCCH later) // clear subframe TX flag since UE is not scheduled for PDSCH in this subframe (so that we don't look for PUCCH later)
eNB->dlsch[(uint8_t)UE_id][0]->subframe_tx[subframe]=0; //eNB->dlsch[(uint8_t)UE_id][0]->subframe_tx[subframe]=0;
} }
} }
...@@ -1535,10 +1535,10 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -1535,10 +1535,10 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
if (is_phich_subframe(fp,subframe)) if (is_phich_subframe(fp,subframe))
{ {
generate_phich_top(eNB, /* generate_phich_top(eNB,
proc, proc,
AMP, AMP,
0); 0);*/
} }
/* /*
...@@ -1550,7 +1550,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -1550,7 +1550,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
*/ */
#ifdef EMOS #ifdef EMOS
phy_procedures_emos_eNB_TX(subframe, eNB); // phy_procedures_emos_eNB_TX(subframe, eNB);
#endif #endif
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_TX+offset,0); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_TX+offset,0);
...@@ -3577,4 +3577,3 @@ int phy_procedures_RN_eNB_TX(unsigned char last_slot, unsigned char next_slot, r ...@@ -3577,4 +3577,3 @@ int phy_procedures_RN_eNB_TX(unsigned char last_slot, unsigned char next_slot, r
return do_proc; return do_proc;
} }
#endif #endif
...@@ -221,10 +221,11 @@ void common_signal_procedures_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) ...@@ -221,10 +221,11 @@ void common_signal_procedures_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
int subframe = proc->subframe_tx; int subframe = proc->subframe_tx;
int frame = proc->frame_tx; int frame = proc->frame_tx;
uint16_t Ntti = 10; //ntti = 10 uint16_t Ntti = 10; //ntti = 10
int RB_IoT_ID=9 ; // XXX should be initialized (RB reserved for NB-IoT, PRB index) int RB_IoT_ID=2 ; // XXX should be initialized (RB reserved for NB-IoT, PRB index)
int With_NSSS; // With_NSSS = 1; if the frame include a sub-Frame with NSSS signal int With_NSSS=0; // With_NSSS = 1; if the frame include a sub-Frame with NSSS signal
/*NSSS only happened in the even frame*/
//NSSS only happened in the even frame
if(frame%2==0) if(frame%2==0)
{ {
With_NSSS = 1; With_NSSS = 1;
...@@ -234,40 +235,42 @@ void common_signal_procedures_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) ...@@ -234,40 +235,42 @@ void common_signal_procedures_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
With_NSSS = 0; With_NSSS = 0;
} }
/*NPSS when subframe 5*/
if(subframe == 5) if(subframe == 5)
{ {
generate_npss_NB_IoT(txdataF, generate_npss_NB_IoT(txdataF,
AMP, AMP,
fp, fp,
3, 3,
0, 10,
RB_IoT_ID); RB_IoT_ID);
} }
/*NSSS when subframe 9 on even frame*/
else if((subframe == 9)&&(With_NSSS == 1)) else if((subframe == 9)&&(With_NSSS == 1))
{ {
//printf("NSSS");
generate_sss_NB_IoT(txdataF, generate_sss_NB_IoT(txdataF,
AMP, AMP,
fp, fp,
3, 3,
0, 18,
frame, frame,
RB_IoT_ID); RB_IoT_ID);
} }
else /*else
{ {
/*NRS*/
/* generate_pilots_NB_IoT(eNB, generate_pilots_NB_IoT(eNB,
txdataF, txdataF,
AMP, AMP,
Ntti, Ntti,
RB_IoT_ID, RB_IoT_ID,
With_NSSS); */ With_NSSS);
} }
*/
} }
void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB,eNB_rxtx_proc_t *proc,UL_IND_t *UL_INFO) void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB,eNB_rxtx_proc_t *proc,UL_IND_t *UL_INFO)
......
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