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
canghaiwuhen
OpenXG-RAN
Commits
c86b6840
Commit
c86b6840
authored
Jun 14, 2017
by
Nick Ho
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use FAPI structures to present the IF Module
parent
f822c17d
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
3953 additions
and
178 deletions
+3953
-178
openair1/SCHED/phy_procedures_lte_eNb_nb_iot.c
openair1/SCHED/phy_procedures_lte_eNb_nb_iot.c
+35
-34
openair2/LAYER2/MAC/eNB_scheduler_ulsch_nb_iot.c
openair2/LAYER2/MAC/eNB_scheduler_ulsch_nb_iot.c
+4
-13
openair2/LAYER2/MAC/proto_nb_iot.h
openair2/LAYER2/MAC/proto_nb_iot.h
+1
-1
openair2/PHY_INTERFACE/IF_Module_L2_primitives_nb_iot.c
openair2/PHY_INTERFACE/IF_Module_L2_primitives_nb_iot.c
+29
-29
openair2/PHY_INTERFACE/IF_Module_nb_iot.c
openair2/PHY_INTERFACE/IF_Module_nb_iot.c
+3
-2
openair2/PHY_INTERFACE/IF_Module_nb_iot.h
openair2/PHY_INTERFACE/IF_Module_nb_iot.h
+24
-99
openair2/PHY_INTERFACE/nfapi_interface.h
openair2/PHY_INTERFACE/nfapi_interface.h
+3856
-0
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+1
-0
No files found.
openair1/SCHED/phy_procedures_lte_eNb_nb_iot.c
View file @
c86b6840
...
...
@@ -172,13 +172,13 @@ void NB_phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,con
/*NB-IoT IF module Common setting*/
UL_IND_t
UL_I
nfo
;
UL_IND_t
UL_I
NFO
;
UL_I
nfo
.
module_id
=
eNB
->
Mod_id
;
UL_I
nfo
.
CC_id
=
eNB
->
CC_id
;
UL_I
nfo
.
frame
=
frame
;
UL_I
nfo
.
subframe
=
subframe
;
UL_I
NFO
.
module_id
=
eNB
->
Mod_id
;
UL_I
NFO
.
CC_id
=
eNB
->
CC_id
;
UL_I
NFO
.
frame
=
frame
;
UL_I
NFO
.
subframe
=
subframe
;
T
(
T_ENB_PHY_UL_TICK
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
frame
),
T_INT
(
subframe
));
...
...
@@ -333,14 +333,13 @@ void NB_phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,con
if
(
eNB
->
mac_enabled
==
1
)
{
//instead rx_sdu to report The Uplink data not received successfully to MAC
UL_Info
.
UL_SPEC_Info
[
i
].
RNTI
=
eNB
->
ulsch
[
i
]
->
rnti
;
UL_Info
.
UL_SPEC_Info
[
i
].
sdu
=
NULL
;
UL_Info
.
UL_SPEC_Info
[
i
].
sdu_lenP
=
0
;
UL_Info
.
UL_SPEC_Info
[
i
].
harq_pidP
=
harq_pid
;
UL_Info
.
UL_SPEC_Info
[
i
].
msg3_flagP
=
&
eNB
->
ulsch
[
i
]
->
Msg3_flag
;
UL_Info
.
UL_SPEC_Info
[
i
].
NAK
=
1
;
UL_Info
.
UE_NUM
++
;
(
UL_INFO
.
crc_ind
.
crc_pdu_list
+
i
)
->
crc_indication_rel8
.
crc_flag
=
1
;
UL_INFO
.
crc_ind
.
number_of_crcs
++
;
(
UL_INFO
.
RX_NPUSCH
.
rx_pdu_list
+
i
)
->
rx_ue_information
.
rnti
=
eNB
->
ulsch
[
i
]
->
rnti
;
(
UL_INFO
.
RX_NPUSCH
.
rx_pdu_list
+
i
)
->
data
=
NULL
;
(
UL_INFO
.
RX_NPUSCH
.
rx_pdu_list
+
i
)
->
rx_indication_rel8
.
length
=
0
;
(
UL_INFO
.
RX_NPUSCH
.
rx_pdu_list
+
i
)
->
rx_ue_information
.
harq_pid
=
harq_pid
;
UL_INFO
.
RX_NPUSCH
.
number_of_pdus
++
;
}
}
}
...
...
@@ -376,12 +375,13 @@ void NB_phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,con
if
(
eNB
->
mac_enabled
)
{
// store successful MSG3 in UL_Info instead rx_sdu
UL_Info
.
UL_SPEC_Info
[
i
].
RNTI
=
eNB
->
ulsch
[
i
]
->
rnti
;
UL_Info
.
UL_SPEC_Info
[
i
].
sdu
=
eNB
->
ulsch
[
i
]
->
harq_processes
[
harq_pid
]
->
b
;
UL_Info
.
UL_SPEC_Info
[
i
].
sdu_lenP
=
eNB
->
ulsch
[
i
]
->
harq_processes
[
harq_pid
]
->
TBS
>>
3
;
UL_Info
.
UL_SPEC_Info
[
i
].
harq_pidP
=
harq_pid
;
UL_Info
.
UL_SPEC_Info
[
i
].
msg3_flagP
=
&
eNB
->
ulsch
[
i
]
->
Msg3_flag
;
UL_Info
.
UE_NUM
++
;
(
UL_INFO
.
crc_ind
.
crc_pdu_list
+
i
)
->
crc_indication_rel8
.
crc_flag
=
0
;
UL_INFO
.
crc_ind
.
number_of_crcs
++
;
(
UL_INFO
.
RX_NPUSCH
.
rx_pdu_list
+
i
)
->
rx_ue_information
.
rnti
=
eNB
->
ulsch
[
i
]
->
rnti
;
(
UL_INFO
.
RX_NPUSCH
.
rx_pdu_list
+
i
)
->
data
=
eNB
->
ulsch
[
i
]
->
harq_processes
[
harq_pid
]
->
b
;
(
UL_INFO
.
RX_NPUSCH
.
rx_pdu_list
+
i
)
->
rx_indication_rel8
.
length
=
eNB
->
ulsch
[
i
]
->
harq_processes
[
harq_pid
]
->
TBS
>>
3
;
(
UL_INFO
.
RX_NPUSCH
.
rx_pdu_list
+
i
)
->
rx_ue_information
.
harq_pid
=
harq_pid
;
UL_INFO
.
RX_NPUSCH
.
number_of_pdus
++
;
}
/* Need check if this needed in NB-IoT
...
...
@@ -435,12 +435,13 @@ void NB_phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,con
if
(
eNB
->
mac_enabled
==
1
)
{
// store successful Uplink data in UL_Info instead rx_sdu
UL_Info
.
UL_SPEC_Info
[
i
].
RNTI
=
eNB
->
ulsch
[
i
]
->
rnti
;
UL_Info
.
UL_SPEC_Info
[
i
].
sdu
=
eNB
->
ulsch
[
i
]
->
harq_processes
[
harq_pid
]
->
b
;
UL_Info
.
UL_SPEC_Info
[
i
].
sdu_lenP
=
eNB
->
ulsch
[
i
]
->
harq_processes
[
harq_pid
]
->
TBS
>>
3
;
UL_Info
.
UL_SPEC_Info
[
i
].
harq_pidP
=
harq_pid
;
UL_Info
.
UL_SPEC_Info
[
i
].
msg3_flagP
=
NULL
;
UL_Info
.
UE_NUM
++
;
(
UL_INFO
.
crc_ind
.
crc_pdu_list
+
i
)
->
crc_indication_rel8
.
crc_flag
=
0
;
UL_INFO
.
crc_ind
.
number_of_crcs
++
;
(
UL_INFO
.
RX_NPUSCH
.
rx_pdu_list
+
i
)
->
rx_ue_information
.
rnti
=
eNB
->
ulsch
[
i
]
->
rnti
;
(
UL_INFO
.
RX_NPUSCH
.
rx_pdu_list
+
i
)
->
data
=
eNB
->
ulsch
[
i
]
->
harq_processes
[
harq_pid
]
->
b
;
(
UL_INFO
.
RX_NPUSCH
.
rx_pdu_list
+
i
)
->
rx_indication_rel8
.
length
=
eNB
->
ulsch
[
i
]
->
harq_processes
[
harq_pid
]
->
TBS
>>
3
;
(
UL_INFO
.
RX_NPUSCH
.
rx_pdu_list
+
i
)
->
rx_ue_information
.
harq_pid
=
harq_pid
;
UL_INFO
.
RX_NPUSCH
.
number_of_pdus
++
;
}
// mac_enabled==1
}
// Msg3_flag == 0
...
...
@@ -476,7 +477,7 @@ void NB_phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,con
/*Exact not here, but use to debug*/
UL_indication
(
UL_Info
);
if_inst
->
UL_indication
(
UL_INFO
);
}
...
...
@@ -506,7 +507,7 @@ void NB_generate_eNB_dlsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t * proc,Sched
{
// this is a normal DLSCH allocation
if
(
UE_id
>=
0
)
{
LOG_D
(
PHY
,
"Generating dlsch params for RNTI %x
\n
"
,
Sched_Rsp
->
NB_DL
.
NB_DCI
.
RNTI
);
LOG_D
(
PHY
,
"Generating dlsch params for RNTI %x
\n
"
,
Sched_Rsp
->
NB_DL
.
NB_DCI
.
DL_DCI
.
npdcch_pdu_rel13
.
rnti
);
//NB_generate_eNB_dlsch_params_from_dci();
/*Log for remaining DCI*/
...
...
@@ -518,7 +519,7 @@ void NB_generate_eNB_dlsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t * proc,Sched
else
{
LOG_D
(
PHY
,
"[eNB %"
PRIu8
"][PDSCH] Frame %d : No UE_id with corresponding rnti %"
PRIx16
", dropping DLSCH
\n
"
,
eNB
->
Mod_id
,
frame
,
Sched_Rsp
->
NB_DL
.
NB_DCI
.
RNTI
);
eNB
->
Mod_id
,
frame
,
Sched_Rsp
->
NB_DL
.
NB_DCI
.
DL_DCI
.
npdcch_pdu_rel13
.
rnti
);
}
}
...
...
@@ -534,7 +535,7 @@ void NB_generate_eNB_ulsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,Sched_
//LOG for ULSCH DCI Resource allocation
if
((
Sched_Rsp
->
NB_DL
.
NB_DCI
.
RNTI
>=
CBA_RNTI
)
&&
(
Sched_Rsp
->
NB_DL
.
NB_DCI
.
RNTI
<
P_RNTI
))
if
((
Sched_Rsp
->
NB_DL
.
NB_DCI
.
UL_DCI
.
npdcch_dci_pdu_rel13
.
rnti
>=
CBA_RNTI
)
&&
(
Sched_Rsp
->
NB_DL
.
NB_DCI
.
UL_DCI
.
npdcch_dci_pdu_rel13
.
rnti
<
P_RNTI
))
eNB
->
ulsch
[(
uint32_t
)
UE_id
]
->
harq_processes
[
harq_pid
]
->
subframe_cba_scheduling_flag
=
1
;
else
eNB
->
ulsch
[(
uint32_t
)
UE_id
]
->
harq_processes
[
harq_pid
]
->
subframe_scheduling_flag
=
1
;
...
...
@@ -634,9 +635,9 @@ void NB_phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
/*Loop over all the dci to generate DLSCH allocation, there is only 1 or 2 DCIs for NB-IoT in the same time*/
/*Also Packed the DCI here*/
if
(
Sched_Rsp
->
NB_DL
.
NB_DCI
.
RNTI
<=
P_RNTI
)
if
(
Sched_Rsp
->
NB_DL
.
NB_DCI
.
DL_DCI
.
npdcch_pdu_rel13
.
rnti
<=
P_RNTI
)
{
UE_id
=
find_ue
((
int16_t
)
Sched_Rsp
->
NB_DL
.
NB_DCI
.
RNTI
,
eNB
);
UE_id
=
find_ue
((
int16_t
)
Sched_Rsp
->
NB_DL
.
NB_DCI
.
DL_DCI
.
npdcch_pdu_rel13
.
rnti
,
eNB
);
}
else
UE_id
=
0
;
...
...
@@ -651,14 +652,14 @@ void NB_phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
if
(
Sched_Rsp
->
NB_DL
.
NB_DCI
.
DCI_Format
==
DCIFormatN0
)
// this is a ULSCH allocation
{
UE_id
=
find_ue
((
int16_t
)
Sched_Rsp
->
NB_DL
.
NB_DCI
.
RNTI
,
eNB
);
UE_id
=
find_ue
((
int16_t
)
Sched_Rsp
->
NB_DL
.
NB_DCI
.
UL_DCI
.
npdcch_dci_pdu_rel13
.
rnti
,
eNB
);
NB_generate_eNB_ulsch_params
(
eNB
,
proc
,
Sched_Rsp
,
UE_id
);
}
/*If we have DCI to generate do it now TODO : have a generate dci top for NB_IoT */
NB_generate_dci_top
();
//
NB_generate_dci_top();
if
(
Sched_Rsp
->
NB_DL
.
NB_DLSCH
.
ndlsch_pdu_payload
||
Sched_Rsp
->
NB_DL
.
NB_DLSCH
.
nbcch_pdu_payload
)
if
(
Sched_Rsp
->
NB_DL
.
NB_DLSCH
.
NPDSCH_pdu
.
segments
)
{
/*TODO: MPDSCH procedures for NB-IoT*/
//npdsch_procedures();
...
...
openair2/LAYER2/MAC/eNB_scheduler_ulsch_nb_iot.c
View file @
c86b6840
...
...
@@ -72,8 +72,8 @@ void NB_rx_sdu(const module_id_t enb_mod_idP,
const
rnti_t
rntiP
,
uint8_t
*
sduP
,
const
uint16_t
sdu_lenP
,
const
int
harq_pidP
,
uint8_t
*
msg3_flagP
)
const
int
harq_pidP
)
{
unsigned
char
rx_ces
[
MAX_NUM_CE
],
num_ce
,
num_sdu
,
i
,
*
payload_ptr
;
...
...
@@ -163,9 +163,6 @@ void NB_rx_sdu(const module_id_t enb_mod_idP,
}
crnti_rx
=
1
;
payload_ptr
+=
2
;
if
(
msg3_flagP
!=
NULL
)
{
*
msg3_flagP
=
0
;
break
;
/*For this moment, long bsr is not processed in the case*/
...
...
@@ -215,7 +212,7 @@ void NB_rx_sdu(const module_id_t enb_mod_idP,
default:
LOG_E
(
MAC
,
"[eNB %d] CC_id %d Received unknown MAC header (0x%02x)
\n
"
,
enb_mod_idP
,
CC_idP
,
rx_ces
[
i
]);
break
;
}
}
for
(
i
=
0
;
i
<
num_sdu
;
i
++
)
{
...
...
@@ -402,12 +399,6 @@ void NB_rx_sdu(const module_id_t enb_mod_idP,
if
(
UE_id
!=
-
1
)
UE_list
->
eNB_UE_stats
[
CC_idP
][
UE_id
].
total_num_errors_rx
+=
1
;
if
(
msg3_flagP
!=
NULL
)
{
if
(
*
msg3_flagP
==
1
)
{
LOG_N
(
MAC
,
"[eNB %d] CC_id %d frame %d : false msg3 detection: signal phy to canceling RA and remove the UE
\n
"
,
enb_mod_idP
,
CC_idP
,
frameP
);
*
msg3_flagP
=
0
;
}
}
}
else
{
if
(
UE_id
!=
-
1
)
{
UE_list
->
eNB_UE_stats
[
CC_idP
][
UE_id
].
pdu_bytes_rx
=
sdu_lenP
;
...
...
@@ -420,5 +411,5 @@ void NB_rx_sdu(const module_id_t enb_mod_idP,
stop_meas
(
&
eNB
->
rx_ulsch_sdu
);
}
}
\
openair2/LAYER2/MAC/proto_nb_iot.h
View file @
c86b6840
...
...
@@ -38,7 +38,7 @@
/* \brief Function to indicate a received SDU on ULSCH for NB-IoT.
*/
void
NB_rx_sdu
(
const
module_id_t
module_idP
,
const
int
CC_id
,
const
frame_t
frameP
,
const
sub_frame_t
subframeP
,
const
rnti_t
rnti
,
uint8_t
*
sdu
,
const
uint16_t
sdu_len
,
const
int
harq_pid
,
uint8_t
*
msg3_flag
);
void
NB_rx_sdu
(
const
module_id_t
module_idP
,
const
int
CC_id
,
const
frame_t
frameP
,
const
sub_frame_t
subframeP
,
const
rnti_t
rnti
,
uint8_t
*
sdu
,
const
uint16_t
sdu_len
,
const
int
harq_pid
);
/* \brief Function to retrieve result of scheduling (DCI) in current subframe. Can be called an arbitrary numeber of times after eNB_dlsch_ulsch_scheduler
in a given subframe.
...
...
openair2/PHY_INTERFACE/IF_Module_L2_primitives_nb_iot.c
View file @
c86b6840
...
...
@@ -3,42 +3,42 @@
void
UL_indication
(
UL_IND_t
UL_INFO
)
{
int
i
=
0
;
UL_INFO
.
test
=
1
;
if
(
UL_INFO
.
test
==
1
)
/*If there is a preamble, do the initiate RA procedure*/
if
(
UL_INFO
.
NRACH
.
number_of_initial_scs_detected
>
0
)
{
/*If there is a preamble, do the initiate RA procedure*/
if
(
UL_INFO
.
Number_SC
>
0
)
for
(
i
=
0
;
i
<
UL_INFO
.
NRACH
.
number_of_initial_scs_detected
;
i
++
)
{
for
(
i
=
0
;
i
<
UL_INFO
.
Number_SC
;
i
++
)
{
NB_initiate_ra_proc
(
UL_INFO
.
module_id
,
UL_INFO
.
CC_id
,
UL_INFO
.
frame
,
UL_INFO
.
Preamble_list
[
UL_INFO
.
Number_SC
].
preamble_index
,
UL_INFO
.
Preamble_list
[
UL_INFO
.
Number_SC
].
timing_offset
,
UL_INFO
.
subframe
);
}
NB_initiate_ra_proc
(
UL_INFO
.
module_id
,
UL_INFO
.
CC_id
,
UL_INFO
.
frame
,
(
UL_INFO
.
NRACH
.
nrach_pdu_list
+
i
)
->
nrach_indication_rel13
.
initial_sc
,
//timing_offset = Timing_advance * 16
(
UL_INFO
.
NRACH
.
nrach_pdu_list
+
i
)
->
nrach_indication_rel13
.
timing_advance
*
16
,
UL_INFO
.
subframe
);
}
/*If there is a Uplink SDU (even MSG3, NAK) need to send to MAC*/
for
(
i
=
0
;
i
<
UL_INFO
.
UE_NUM
;
i
++
)
}
if
(
UL_INFO
.
RX_NPUSCH
.
number_of_pdus
>
0
)
{
/*If there is a Uplink SDU (even MSG3, NAK) need to send to MAC*/
for
(
i
=
0
;
i
<
UL_INFO
.
RX_NPUSCH
.
number_of_pdus
;
i
++
)
{
/*For MSG3, Normal Uplink Data, NAK*/
if
(
UL_INFO
.
UL_SPEC_Info
[
i
].
RNTI
)
NB_rx_sdu
(
UL_INFO
.
module_id
,
UL_INFO
.
CC_id
,
UL_INFO
.
frame
,
UL_INFO
.
subframe
,
UL_INFO
.
UL_SPEC_Info
[
i
].
RNTI
,
UL_INFO
.
UL_SPEC_Info
[
i
].
sdu
,
UL_INFO
.
UL_SPEC_Info
[
i
].
sdu_lenP
,
UL_INFO
.
UL_SPEC_Info
[
i
].
harq_pidP
,
UL_INFO
.
UL_SPEC_Info
[
i
].
msg3_flagP
);
/*For MSG3, Normal Uplink Data, NAK*/
NB_rx_sdu
(
UL_INFO
.
module_id
,
UL_INFO
.
CC_id
,
UL_INFO
.
frame
,
UL_INFO
.
subframe
,
(
UL_INFO
.
RX_NPUSCH
.
rx_pdu_list
+
i
)
->
rx_ue_information
.
rnti
,
(
UL_INFO
.
RX_NPUSCH
.
rx_pdu_list
+
i
)
->
data
,
(
UL_INFO
.
RX_NPUSCH
.
rx_pdu_list
+
i
)
->
rx_indication_rel8
.
length
,
(
UL_INFO
.
RX_NPUSCH
.
rx_pdu_list
+
i
)
->
rx_ue_information
.
harq_pid
);
}
}
}
//NB_eNB_dlsch_ulsch_scheduler(UL_INFO.module_id,0,UL_INFO.frame,UL_INFO.subframe); TODO: to be implemented
}
openair2/PHY_INTERFACE/IF_Module_nb_iot.c
View file @
c86b6840
...
...
@@ -11,7 +11,8 @@ IF_Module_t* IF_Module_init_L2(void) //southbound IF-Module Interface
{
//register the IF Module to MAC
if_inst
->
UL_indication
=
UL_indication
;
return
0
;
return
if_inst
;
}
//called at initialization of L1
...
...
@@ -23,6 +24,6 @@ IF_Module_t* IF_Module_init_L1(void) //northbound IF-Module Interface
if_inst
->
schedule_response
=
schedule_response
;
if_inst
->
PHY_config_req
=
PHY_config_req
;
return
0
;
return
if_inst
;
}
openair2/PHY_INTERFACE/IF_Module_nb_iot.h
View file @
c86b6840
...
...
@@ -8,6 +8,7 @@
#ifndef __IF_MODULE_NB_IoT__H__
#define __IF_MODULE_NB_IoT__H__
#include "nfapi_interface.h"
#include "openair1/PHY/LTE_TRANSPORT/defs_nb_iot.h"
#include "PhysicalConfigDedicated-NB-r13.h"
#include "openair2/PHY_INTERFACE/IF_Module_nb_iot.h"
...
...
@@ -146,52 +147,12 @@ typedef struct{
// uplink subframe P7
typedef
struct
{
//index of the preamble, detected initial subcarrier (0-47)
uint16_t
preamble_index
;
//timing offset by PHY
int16_t
timing_offset
;
//Indicates the NRACH CE level as configured in CONFIG (0,1,2 = CE level 0,1,2)
uint8_t
NRACH_CE_Level
;
//RA-RNTI
uint16_t
RNTI
;
//Timing Advance
uint16_t
TA
;
}
NRACH_t
;
/*UL_SPEC_t:
* A struture mainly describes the UE specific information. (for NB_rx_sdu)
* Corresponding to the RX_ULSCH.indication, CRC.inidcation, NB_HARQ.indication in FAPI
*/
typedef
struct
{
// 0 = format 1 (data), 1 = formaat 2 (ACK/NACK)
uint8_t
NPUSCH_format
;
//An opaque handling returned in the RX.indication
uint32_t
OPA_handle
;
//rnti
uint16_t
RNTI
;
//Pointer to sdu
uint8_t
*
sdu
;
//Pointer to sdu length
uint16_t
sdu_lenP
;
//HARQ ID
int
harq_pidP
;
//MSG3 flag
uint8_t
*
msg3_flagP
;
//CRC indication for the message is corrected or not for the Uplink HARQ
uint8_t
crc_ind
;
//This ACK NACK is for the Downlink HARQ feedback received by the NPUSCH from UE
uint8_t
NAK
;
}
UL_SPEC_t
;
/*UL_IND_t:
* A structure handles all the uplink information.
* Corresponding to the NRACH.indicaiton, UL_Config_indication, RX_ULSCH.indication, CRC.inidcation, NB_HARQ.indication in FAPI
*/
typedef
struct
{
...
...
@@ -210,17 +171,16 @@ typedef struct{
/*preamble part*/
//number of the subcarrier detected in the same time
uint8_t
Number_SC
;
//NRACH Indication parameters list
NRACH_t
Preamble_list
[
48
];
nfapi_nrach_indication_body_t
NRACH
;
/*U
E specific
part*/
/*U
plink data
part*/
//Number of availble UE for Uplink
int
UE_NUM
;
//Uplink Schedule information
UL_SPEC_t
UL_SPEC_Info
[
NUMBER_OF_UE_MAX
];
/*indication of the uplink data*/
nfapi_ul_config_nulsch_pdu
NULSCH
;
/*Uplink data PDU*/
nfapi_rx_indication_body_t
RX_NPUSCH
;
/*crc_indication*/
nfapi_crc_indication_body_t
crc_ind
;
}
UL_IND_t
;
...
...
@@ -228,64 +188,28 @@ typedef struct{
typedef
struct
{
//The length (in bytes)
uint16_t
Length
;
//PDU index
uint16_t
PDU_index
;
//Transmission Power
uint16_t
Trans_Power
;
//HYPER SFN 2lsbs
uint16_t
HyperSFN2lsbs
;
//NPBCH pdu payload
uint8_t
npbch_pdu_payload
[
4
];
/*Indicate the MIB PDU*/
nfapi_dl_config_nbch_pdu_rel13_t
nbch
;
/*MIB PDU*/
nfapi_tx_request_pdu_t
MIB_pdu
;
}
npbch_t
;
typedef
struct
{
//The length (in bytes)
uint16_t
Length
;
//PDU index
uint16_t
PDU_index
;
//start symbol 0-4 0 for guard-band and standalone operating
uint8_t
start_symbol
;
//RNTI type,0 = BCCH(SIB), 1 for DL data
uint8_t
RNTI_type
;
// RNTI
uint16_t
RNTI
;
// SIB payload
uint8_t
nbcch_pdu_payload
[
BCCH_PAYLOAD_SIZE_MAX
];
// NDLSCH payload
uint8_t
ndlsch_pdu_payload
[
SCH_PAYLOAD_SIZE_MAX
];
/*indicate the NPDSCH PDU*/
nfapi_dl_config_ndlsch_pdu_rel13_t
ndlsch
;
/*NPDSCH PDU*/
nfapi_tx_request_pdu_t
NPDSCH_pdu
;
}
npdsch_t
;
typedef
struct
{
// The length (in bytes)
uint16_t
Length
;
// PDU index
uint16_t
PDU_index
;
// NCCE index value 0 -> 1
uint8_t
NCCE_index
;
// Aggregation level
uint8_t
aggregation
;
// start symbol
uint8_t
start_symbol
;
// RNTI type,0 = TC-RNTI, 1 = RA-RNTI, 2 = P-RNTI 3 = other
uint8_t
RNTI_type
;
// RNTI
uint16_t
RNTI
;
// Scrambliing re-initialization batch index from FAPI specs (1-4)
uint8_t
batch_index
;
// NRS antenna ports assumed by the UE from FAPI specs (1-2)
uint8_t
num_antenna
;
// Number of DCI
uint8_t
Num_dci
;
// Format of DCI
DCI_format_NB_t
DCI_Format
;
// Content of DCI
DCI_CONTENT
*
DCI_Content
;
/*DL DCI*/
nfapi_dl_config_npdcch_pdu
DL_DCI
;
/*UL DCI*/
nfapi_hi_dci0_npdcch_dci_pdu
UL_DCI
;
}
npdcch_t
;
...
...
@@ -318,7 +242,8 @@ typedef struct{
}
Sched_Rsp_t
;
/*IF_Module_t*/
/*IF_Module_t a group for gathering the Interface
It should be allocated at the main () in lte-softmodem.c*/
typedef
struct
IF_Module_s
{
//define the function pointer
void
(
*
UL_indication
)(
UL_IND_t
UL_INFO
);
...
...
openair2/PHY_INTERFACE/nfapi_interface.h
0 → 100644
View file @
c86b6840
This source diff could not be displayed because it is too large. You can
view the blob
instead.
targets/RT/USER/lte-softmodem.c
View file @
c86b6840
...
...
@@ -1737,6 +1737,7 @@ int main( int argc, char **argv ) {
int
eMBMS_active
=
0
;
if
(
node_function
[
0
]
<=
NGFI_RAU_IF4p5
)
{
// don't initialize L2 for RRU
LOG_I
(
PHY
,
"Intializing L2
\n
"
);
// Initialization of IF module for NB-IoT should be here
mac_xface
=
malloc
(
sizeof
(
MAC_xface
));
l2_init
(
frame_parms
[
0
],
eMBMS_active
,(
uecap_xer_in
==
1
)
?
uecap_xer
:
NULL
,
0
,
// cba_group_active
...
...
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