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
promise
OpenXG-RAN
Commits
42e4c952
Commit
42e4c952
authored
7 years ago
by
Matthieu Kanj
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
operational code version for synchro testing
parent
3c1373a1
develop-nb-iot-merge-w-conflicts
develop-nb-iot
develop-nb-iot-merge
No related merge requests found
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) {
uint8_t
*
pbch_pdu
=&
eNB
->
pbch_pdu
[
0
];
int
subframe
=
proc
->
subframe_tx
;
int
frame
=
proc
->
frame_tx
;
//int With_NSSS=0;
// NB-IoT synchro signals
...
...
@@ -502,8 +502,7 @@ void common_signal_procedures (PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
common_signal_procedures_NB_IoT
(
eNB
,
proc
);
/*
// generate Cell-Specific Reference Signals for both slots
if (eNB->abstraction_flag==0) {
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) {
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_RS_TX,0);
}
*/
//////////////////////////// for NB-IoT testing /////////////////////////////
/*
// First half of PSS/SSS (FDD, slot 0)
...
...
@@ -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
;
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
);
//
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);
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,
}
/*
// Get scheduling info for next subframe
// This is called only for the CC_id = 0 and triggers scheduling for all CC_id's
if (eNB->mac_enabled==1) {
...
...
@@ -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);
}
}
*/
// clear the transmit data array for the current subframe
if
(
eNB
->
abstraction_flag
==
0
)
{
for
(
aa
=
0
;
aa
<
fp
->
nb_antenna_ports_eNB
;
aa
++
)
{
...
...
@@ -1264,14 +1263,14 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
}
}
if
(
is_pmch_subframe
(
frame
,
subframe
,
fp
))
{
pmch_procedures
(
eNB
,
proc
,
rn
,
r_type
);
}
else
{
//
if (is_pmch_subframe(frame,subframe,fp)) {
//
pmch_procedures(eNB,proc,rn,r_type);
//
}
//
else {
// this is not a pmch subframe, so generate PSS/SSS/PBCH
common_signal_procedures
(
eNB
,
proc
);
}
//
}
/*
#if defined(SMBV)
// PBCH takes one allocation
...
...
@@ -1281,7 +1280,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
}
#endif
*/
if
(
eNB
->
mac_enabled
==
1
)
{
// Parse DCI received from MAC
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,
}
else
{
DCI_pdu
=
&
DCI_pdu_tmp
;
#ifdef EMOS_CHANNEL
fill_dci_emos
(
DCI_pdu
,
eNB
);
//
fill_dci_emos(DCI_pdu,eNB);
#else
fill_dci
(
DCI_pdu
,
eNB
,
proc
);
//
fill_dci(DCI_pdu,eNB,proc);
// 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]){
for (j=0; j<8; j++)
eNB->dlsch[i][0]->harq_processes[j]->round = 0;
}
}
*/
#endif
}
// clear existing ulsch dci allocations before applying info from MAC (this is table
ul_subframe
=
pdcch_alloc2ul_subframe
(
fp
,
subframe
);
ul_frame
=
pdcch_alloc2ul_frame
(
fp
,
frame
,
subframe
);
//
ul_subframe = pdcch_alloc2ul_subframe(fp,subframe);
//
ul_frame = pdcch_alloc2ul_frame(fp,frame,subframe);
/*
if ((subframe_select(fp,ul_subframe)==SF_UL) ||
(fp->frame_type == FDD)) {
harq_pid = subframe2harq_pid(fp,ul_frame,ul_subframe);
...
...
@@ -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]->rar_alloc=0;
}
}
}
*/
/*
// clear previous allocation information for all UEs
for (i=0; i<NUMBER_OF_UE_MAX; i++) {
if (eNB->dlsch[i][0])
eNB->dlsch[i][0]->subframe_tx[subframe] = 0;
}
*/
/* save old HARQ information needed for PHICH generation */
for
(
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
{
if
(
eNB
->
ulsch
[
i
])
{
...
...
@@ -1361,7 +1361,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
}
}
/*
// 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++) {
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,
}
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
);
/*
// 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
phy_config_dedicated_eNB_step2(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);
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,
eNB
->
num_common_dci
[(
subframe
)
&
1
]
=
0
;
}
/*
if (eNB->abstraction_flag == 0) {
if (do_pdcch_flag) {
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,
}
#endif
*/
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
);
/*
#if defined(SMBV)
// 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)) {
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]);
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
...
...
@@ -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)
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)
// Configures the data source of allocation (allocation is configured by DCI)
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);
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
}
*/
// Check for RA activity
if
((
eNB
->
dlsch_ra
)
&&
(
eNB
->
dlsch_ra
->
active
==
1
))
{
/*
#if defined(SMBV)
// Configures the data source of allocation (allocation is configured by DCI)
...
...
@@ -1494,7 +1494,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
}
#endif
*/
LOG_D
(
PHY
,
"[eNB %"
PRIu8
"][RAPROC] Frame %d, subframe %d: Calling generate_dlsch (RA),Msg3 frame %"
PRIu32
", Msg3 subframe %"
PRIu8
"
\n
"
,
eNB
->
Mod_id
,
...
...
@@ -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_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
;
...
...
@@ -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
]
->
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,
(
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)
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,
if
(
is_phich_subframe
(
fp
,
subframe
))
{
generate_phich_top
(
eNB
,
/*
generate_phich_top(eNB,
proc,
AMP,
0
);
0);*/
}
/*
...
...
@@ -1550,7 +1550,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
*/
#ifdef EMOS
phy_procedures_emos_eNB_TX
(
subframe
,
eNB
);
//
phy_procedures_emos_eNB_TX(subframe, eNB);
#endif
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
return
do_proc
;
}
#endif
This diff is collapsed.
Click to expand it.
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)
int
subframe
=
proc
->
subframe_tx
;
int
frame
=
proc
->
frame_tx
;
uint16_t
Ntti
=
10
;
//ntti = 10
int
RB_IoT_ID
=
9
;
// 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
RB_IoT_ID
=
2
;
// XXX should be initialized (RB reserved for NB-IoT, PRB index)
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
)
{
With_NSSS
=
1
;
...
...
@@ -234,40 +235,42 @@ void common_signal_procedures_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
With_NSSS
=
0
;
}
/*NPSS when subframe 5*/
if
(
subframe
==
5
)
{
generate_npss_NB_IoT
(
txdataF
,
AMP
,
fp
,
3
,
0
,
1
0
,
RB_IoT_ID
);
}
/*NSSS when subframe 9 on even frame*/
else
if
((
subframe
==
9
)
&&
(
With_NSSS
==
1
))
{
//printf("NSSS");
generate_sss_NB_IoT
(
txdataF
,
AMP
,
fp
,
3
,
0
,
18
,
frame
,
RB_IoT_ID
);
}
else
/*
else
{
/*NRS*/
/*
generate_pilots_NB_IoT(eNB,
generate_pilots_NB_IoT(eNB,
txdataF,
AMP,
Ntti,
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
)
...
...
This diff is collapsed.
Click to expand it.
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