Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
alex037yang
OpenXG-RAN
Commits
42e4c952
Commit
42e4c952
authored
Jan 21, 2018
by
Matthieu Kanj
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
operational code version for synchro testing
parent
3c1373a1
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1020 additions
and
1018 deletions
+1020
-1018
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+698
-699
openair1/SCHED/phy_procedures_lte_eNb_NB_IoT.c
openair1/SCHED/phy_procedures_lte_eNb_NB_IoT.c
+322
-319
No files found.
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
42e4c952
...
@@ -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
openair1/SCHED/phy_procedures_lte_eNb_NB_IoT.c
View file @
42e4c952
...
@@ -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
,
1
0
,
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
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment