Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
Michael Black
OpenXG UE
Commits
fab9c94a
Commit
fab9c94a
authored
Jan 23, 2020
by
Florian Kaltenberger
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/NR_RRCConfiguration' into NR_RRC_PUSCH
Conflicts: executables/nr-ue.c
parents
9e69f551
bfbeea30
Changes
31
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
341 additions
and
337 deletions
+341
-337
executables/nr-ue.c
executables/nr-ue.c
+11
-3
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
+8
-4
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_defs.h
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_defs.h
+1
-1
openair1/PHY/CODING/nr_rate_matching.c
openair1/PHY/CODING/nr_rate_matching.c
+1
-1
openair1/PHY/INIT/nr_parms.c
openair1/PHY/INIT/nr_parms.c
+3
-1
openair1/PHY/NR_TRANSPORT/nr_pbch.c
openair1/PHY/NR_TRANSPORT/nr_pbch.c
+1
-1
openair1/PHY/NR_TRANSPORT/nr_prach.c
openair1/PHY/NR_TRANSPORT/nr_prach.c
+4
-2
openair1/PHY/NR_TRANSPORT/nr_prach_common.c
openair1/PHY/NR_TRANSPORT/nr_prach_common.c
+2
-0
openair1/PHY/NR_TRANSPORT/nr_transport.h
openair1/PHY/NR_TRANSPORT/nr_transport.h
+1
-0
openair1/PHY/NR_TRANSPORT/nr_transport_proto.h
openair1/PHY/NR_TRANSPORT/nr_transport_proto.h
+8
-0
openair1/PHY/NR_TRANSPORT/nr_transport_proto_common.h
openair1/PHY/NR_TRANSPORT/nr_transport_proto_common.h
+2
-0
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
+11
-11
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
+0
-1
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
+7
-1
openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h
openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h
+2
-0
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
+1
-1
openair1/PHY/defs_gNB.h
openair1/PHY/defs_gNB.h
+2
-0
openair1/PHY/defs_nr_UE.h
openair1/PHY/defs_nr_UE.h
+2
-0
openair1/SCHED_NR/fapi_nr_l1.c
openair1/SCHED_NR/fapi_nr_l1.c
+4
-10
openair1/SCHED_NR/nr_prach_procedures.c
openair1/SCHED_NR/nr_prach_procedures.c
+5
-4
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+35
-62
openair1/SCHED_NR_UE/defs.h
openair1/SCHED_NR_UE/defs.h
+1
-1
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+5
-5
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+2
-2
openair2/LAYER2/NR_MAC_UE/mac_proto.h
openair2/LAYER2/NR_MAC_UE/mac_proto.h
+0
-1
openair2/LAYER2/NR_MAC_UE/main_ue_nr.c
openair2/LAYER2/NR_MAC_UE/main_ue_nr.c
+7
-6
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+4
-4
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
+16
-20
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h
+1
-1
openair2/RRC/NR/rrc_gNB_reconfig.c
openair2/RRC/NR/rrc_gNB_reconfig.c
+193
-193
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpn300.conf
.../GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpn300.conf
+1
-1
No files found.
executables/nr-ue.c
View file @
fab9c94a
...
...
@@ -410,6 +410,7 @@ void processSlotRX( PHY_VARS_NR_UE *UE, UE_nr_rxtx_proc_t *proc) {
nr_dcireq_t
dcireq
;
nr_scheduled_response_t
scheduled_response
;
uint8_t
ssb_period
=
UE
->
nrUE_config
.
ssb_table
.
ssb_period
;
//program DCI for slot 1
//TODO: all of this has to be moved to the MAC!!!
...
...
@@ -427,6 +428,13 @@ void processSlotRX( PHY_VARS_NR_UE *UE, UE_nr_rxtx_proc_t *proc) {
scheduled_response
.
tx_request
=
NULL
;
scheduled_response
.
module_id
=
UE
->
Mod_id
;
scheduled_response
.
CC_id
=
0
;
if
(
!
((
proc
->
frame_rx
)
%
(
1
<<
(
ssb_period
-
1
))))
{
if
(
proc
->
frame_rx
>
dcireq
.
dl_config_req
.
sfn
)
UE
->
frame_gap
=
proc
->
frame_rx
-
dcireq
.
dl_config_req
.
sfn
;
if
(
proc
->
frame_rx
<
dcireq
.
dl_config_req
.
sfn
)
UE
->
frame_gap
=
dcireq
.
dl_config_req
.
sfn
-
proc
->
frame_rx
;
proc
->
frame_rx
=
dcireq
.
dl_config_req
.
sfn
;
}
scheduled_response
.
frame
=
proc
->
frame_rx
;
scheduled_response
.
slot
=
proc
->
nr_tti_rx
;
...
...
@@ -618,7 +626,7 @@ void *UE_thread(void *arg) {
newNotifiedFIFO_elt
(
sizeof
(
processingData_t
),
0
,
&
nf
,
UE_processing
));
bool
syncRunning
=
false
;
const
int
nb_slot_frame
=
10
*
UE
->
frame_parms
.
slots_per_sub
frame
;
const
int
nb_slot_frame
=
UE
->
frame_parms
.
slots_per_
frame
;
int
absolute_slot
=
0
,
decoded_frame_rx
=
INT_MAX
,
trashed_frames
=
0
;
while
(
!
oai_exit
)
{
...
...
@@ -691,8 +699,8 @@ void *UE_thread(void *arg) {
curMsg
->
proc
.
subframe_rx
=
table_sf_slot
[
slot_nr
];
curMsg
->
proc
.
nr_tti_tx
=
(
absolute_slot
+
DURATION_RX_TO_TX
)
%
nb_slot_frame
;
curMsg
->
proc
.
subframe_tx
=
curMsg
->
proc
.
nr_tti_rx
;
curMsg
->
proc
.
frame_rx
=
(
absolute_slot
/
nb_slot_frame
)
%
MAX_FRAME_NUMBER
;
curMsg
->
proc
.
frame_tx
=
(
(
absolute_slot
+
DURATION_RX_TO_TX
)
/
nb_slot_frame
)
%
MAX_FRAME_NUMBER
;
curMsg
->
proc
.
frame_rx
=
(
(
absolute_slot
/
nb_slot_frame
)
+
UE
->
frame_gap
)
%
MAX_FRAME_NUMBER
;
curMsg
->
proc
.
frame_tx
=
(
((
absolute_slot
+
DURATION_RX_TO_TX
)
/
nb_slot_frame
)
+
UE
->
frame_gap
)
%
MAX_FRAME_NUMBER
;
curMsg
->
proc
.
decoded_frame_rx
=-
1
;
//LOG_I(PHY,"Process slot %d thread Idx %d total gain %d\n", slot_nr, thread_idx, UE->rx_total_gain_dB);
...
...
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
View file @
fab9c94a
...
...
@@ -129,7 +129,8 @@ typedef struct {
///
#define NFAPI_RX_IND_MAX_PDU 100
typedef
struct
{
uint32_t
sfn_slot
;
uint16_t
sfn
;
uint16_t
slot
;
uint16_t
number_pdus
;
fapi_nr_rx_indication_body_t
rx_indication_body
[
NFAPI_RX_IND_MAX_PDU
];
}
fapi_nr_rx_indication_t
;
...
...
@@ -148,7 +149,8 @@ typedef struct {
///
typedef
struct
{
uint32_t
sfn_slot
;
uint16_t
sfn
;
uint16_t
slot
;
fapi_nr_tx_config_t
tx_config
;
uint16_t
number_of_pdus
;
fapi_nr_tx_request_body_t
*
tx_request_body
;
...
...
@@ -304,7 +306,8 @@ typedef struct {
}
fapi_nr_ul_config_request_pdu_t
;
typedef
struct
{
uint32_t
sfn_slot
;
uint16_t
sfn
;
uint16_t
slot
;
uint8_t
number_pdus
;
fapi_nr_ul_config_request_pdu_t
ul_config_list
[
FAPI_NR_UL_CONFIG_LIST_NUM
];
}
fapi_nr_ul_config_request_t
;
...
...
@@ -383,7 +386,8 @@ typedef struct {
}
fapi_nr_dl_config_request_pdu_t
;
typedef
struct
{
uint32_t
sfn_slot
;
uint16_t
sfn
;
uint16_t
slot
;
uint8_t
number_pdus
;
fapi_nr_dl_config_request_pdu_t
dl_config_list
[
FAPI_NR_DL_CONFIG_LIST_NUM
];
}
fapi_nr_dl_config_request_t
;
...
...
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_defs.h
View file @
fab9c94a
...
...
@@ -97,7 +97,7 @@
#define NR_LDPC_SIZE_BN_PROC_BUF NR_LDPC_NUM_EDGE_BG1*NR_LDPC_ZMAX
/** Maximum number of possible input LLR = NR_LDPC_NCOL_BG1*NR_LDPC_ZMAX */
#define NR_LDPC_MAX_NUM_LLR 2
6112
#define NR_LDPC_MAX_NUM_LLR 2
7000
// ==============================================================================
// GLOBAL CONSTANT VARIABLES
...
...
openair1/PHY/CODING/nr_rate_matching.c
View file @
fab9c94a
...
...
@@ -334,7 +334,7 @@ int nr_rate_matching_ldpc(uint8_t Ilbrm,
uint8_t
rvidx
,
uint32_t
E
)
{
uint32_t
Ncb
,
ind
,
k
,
Nref
,
N
;
uint32_t
Ncb
,
ind
,
k
=
0
,
Nref
,
N
;
if
(
C
==
0
)
{
printf
(
"nr_rate_matching: invalid parameters (C %d
\n
"
,
C
);
...
...
openair1/PHY/INIT/nr_parms.c
View file @
fab9c94a
...
...
@@ -25,7 +25,9 @@
/// Subcarrier spacings in Hz indexed by numerology index
uint32_t
nr_subcarrier_spacing
[
MAX_NUM_SUBCARRIER_SPACING
]
=
{
15e3
,
30e3
,
60e3
,
120e3
,
240e3
};
uint16_t
nr_slots_per_subframe
[
MAX_NUM_SUBCARRIER_SPACING
]
=
{
1
,
2
,
4
,
16
,
32
};
uint16_t
nr_slots_per_subframe
[
MAX_NUM_SUBCARRIER_SPACING
]
=
{
1
,
2
,
4
,
8
,
16
};
int
nr_get_ssb_start_symbol
(
NR_DL_FRAME_PARMS
*
fp
)
{
...
...
openair1/PHY/NR_TRANSPORT/nr_pbch.c
View file @
fab9c94a
...
...
@@ -242,7 +242,7 @@ int nr_generate_pbch(NR_gNB_PBCH *pbch,
///Payload generation
memset
((
void
*
)
pbch
,
0
,
sizeof
(
NR_gNB_PBCH
));
pbch
->
pbch_a
=
0
;
uint8_t
ssb_index
=
ssb_pdu
->
ssb_pdu_rel15
.
SsbBlockI
ndex
;
uint8_t
ssb_index
=
frame_parms
->
ssb_i
ndex
;
uint8_t
*
pbch_pdu
=
(
uint8_t
*
)
&
ssb_pdu
->
ssb_pdu_rel15
.
bchPayload
;
for
(
int
i
=
0
;
i
<
NR_PBCH_PDU_BITS
;
i
++
)
pbch
->
pbch_a
|=
((
pbch_pdu
[
i
>>
3
]
>>
(
7
-
(
i
&
7
)))
&
1
)
<<
i
;
...
...
openair1/PHY/NR_TRANSPORT/nr_prach.c
View file @
fab9c94a
...
...
@@ -32,6 +32,7 @@
#include "PHY/defs_gNB.h"
#include "PHY/NR_TRANSPORT/nr_transport.h"
#include "PHY/NR_TRANSPORT/nr_transport_proto_common.h"
extern
uint16_t
NCS_unrestricted_delta_f_RA_125
[
16
];
extern
uint16_t
NCS_restricted_TypeA_delta_f_RA_125
[
15
];
...
...
@@ -381,7 +382,7 @@ void rx_nr_prach(PHY_VARS_gNB *gNB,
int16_t
**
rxsigF
=
gNB
->
prach_vars
.
rxsigF
;
uint8_t
preamble_index
;
uint16_t
NCS
,
NCS2
;
uint16_t
NCS
=
99
,
NCS2
;
uint16_t
preamble_offset
=
0
,
preamble_offset_old
;
int16_t
preamble_shift
=
0
;
uint32_t
preamble_shift2
;
...
...
@@ -393,7 +394,6 @@ void rx_nr_prach(PHY_VARS_gNB *gNB,
uint16_t
u
;
int16_t
*
Xu
=
0
;
uint16_t
offset
;
int16_t
Ncp
;
uint16_t
first_nonzero_root_idx
=
0
;
uint8_t
new_dft
=
0
;
uint8_t
aa
;
...
...
@@ -454,6 +454,8 @@ void rx_nr_prach(PHY_VARS_gNB *gNB,
NCS
=
NCS_unrestricted_delta_f_RA_15
[
Ncs_config
];
}
AssertFatal
(
NCS
!=
99
,
"NCS has not been set
\n
"
);
if
(
gNB
)
start_meas
(
&
gNB
->
rx_prach
);
...
...
openair1/PHY/NR_TRANSPORT/nr_prach_common.c
View file @
fab9c94a
...
...
@@ -40,6 +40,8 @@
#include "T.h"
void
init_nr_prach_tables
(
int
N_ZC
);
void
dump_nr_prach_config
(
NR_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
subframe
)
{
FILE
*
fd
;
...
...
openair1/PHY/NR_TRANSPORT/nr_transport.h
View file @
fab9c94a
...
...
@@ -23,6 +23,7 @@
#define __NR_TRANSPORT__H__
#include "PHY/defs_gNB.h"
#include "LAYER2/NR_MAC_gNB/mac_proto.h"
#define NR_PBCH_PDU_BITS 24
...
...
openair1/PHY/NR_TRANSPORT/nr_transport_proto.h
View file @
fab9c94a
...
...
@@ -206,3 +206,11 @@ uint8_t nr_get_Qm_dl(uint8_t Imcs, uint8_t table_idx);
uint32_t
nr_get_code_rate_ul
(
uint8_t
Imcs
,
uint8_t
table_idx
);
uint32_t
nr_get_code_rate_dl
(
uint8_t
Imcs
,
uint8_t
table_idx
);
void
rx_nr_prach
(
PHY_VARS_gNB
*
gNB
,
int
frame
,
int
subframe
,
uint16_t
*
max_preamble
,
uint16_t
*
max_preamble_energy
,
uint16_t
*
max_preamble_delay
);
openair1/PHY/NR_TRANSPORT/nr_transport_proto_common.h
View file @
fab9c94a
...
...
@@ -1648,6 +1648,8 @@ uint8_t get_num_prach_tdd(module_id_t Mod_id);
*/
uint8_t
get_prach_fmt
(
uint8_t
prach_ConfigIndex
,
lte_frame_type_t
frame_type
);
uint16_t
get_nr_prach_fmt
(
int
prach_ConfigIndex
,
lte_frame_type_t
frame_type
,
nr_frequency_range_e
fr
);
/*!
\brief Helper for MAC, returns frequency index of PRACH resource in TDD for a particular configuration index
@param frame_parms Pointer to NR_DL_FRAME_PARMS structure
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
View file @
fab9c94a
...
...
@@ -46,7 +46,7 @@
//#define DEBUG_DLSCH_DECODING 1
//#define ENABLE_PHY_PAYLOAD_DEBUG 1
#define OAI_LDPC_MAX_NUM_LLR 27000//26112 // NR_LDPC_NCOL_BG1*NR_LDPC_ZMAX
//
#define OAI_LDPC_MAX_NUM_LLR 27000//26112 // NR_LDPC_NCOL_BG1*NR_LDPC_ZMAX
static
uint64_t
nb_total_decod
=
0
;
static
uint64_t
nb_error_decod
=
0
;
...
...
@@ -85,13 +85,13 @@ void free_nr_ue_dlsch(NR_UE_DLSCH_t **dlschptr,uint8_t N_RB_DL)
for
(
r
=
0
;
r
<
a_segments
;
r
++
)
if
(
dlsch
->
harq_processes
[
i
]
->
d
[
r
])
{
free16
(
dlsch
->
harq_processes
[
i
]
->
d
[
r
],(
3
*
8448
)
*
sizeof
(
short
));
free16
(
dlsch
->
harq_processes
[
i
]
->
d
[
r
],(
5
*
8448
)
*
sizeof
(
short
));
dlsch
->
harq_processes
[
i
]
->
d
[
r
]
=
NULL
;
}
for
(
r
=
0
;
r
<
a_segments
;
r
++
)
if
(
dlsch
->
harq_processes
[
i
]
->
w
[
r
])
{
free16
(
dlsch
->
harq_processes
[
i
]
->
w
[
r
],(
3
*
8448
)
*
sizeof
(
short
));
free16
(
dlsch
->
harq_processes
[
i
]
->
w
[
r
],(
5
*
8448
)
*
sizeof
(
short
));
dlsch
->
harq_processes
[
i
]
->
w
[
r
]
=
NULL
;
}
...
...
@@ -122,7 +122,7 @@ NR_UE_DLSCH_t *new_nr_ue_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint
if
(
N_RB_DL
!=
273
)
{
a_segments
=
a_segments
*
N_RB_DL
;
a_segments
=
a_segments
/
273
;
a_segments
=
(
a_segments
/
273
)
+
1
;
}
uint16_t
dlsch_bytes
=
a_segments
*
1056
;
// allocated bytes per segment
...
...
@@ -161,17 +161,17 @@ NR_UE_DLSCH_t *new_nr_ue_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint
else
exit_flag
=
2
;
dlsch
->
harq_processes
[
i
]
->
d
[
r
]
=
(
short
*
)
malloc16
((
3
*
8448
)
*
sizeof
(
short
));
dlsch
->
harq_processes
[
i
]
->
d
[
r
]
=
(
short
*
)
malloc16
((
5
*
8448
)
*
sizeof
(
short
));
if
(
dlsch
->
harq_processes
[
i
]
->
d
[
r
])
memset
(
dlsch
->
harq_processes
[
i
]
->
d
[
r
],
0
,(
3
*
8448
)
*
sizeof
(
short
));
memset
(
dlsch
->
harq_processes
[
i
]
->
d
[
r
],
0
,(
5
*
8448
)
*
sizeof
(
short
));
else
exit_flag
=
2
;
dlsch
->
harq_processes
[
i
]
->
w
[
r
]
=
(
short
*
)
malloc16
((
3
*
8448
)
*
sizeof
(
short
));
dlsch
->
harq_processes
[
i
]
->
w
[
r
]
=
(
short
*
)
malloc16
((
5
*
8448
)
*
sizeof
(
short
));
if
(
dlsch
->
harq_processes
[
i
]
->
w
[
r
])
memset
(
dlsch
->
harq_processes
[
i
]
->
w
[
r
],
0
,(
3
*
8448
)
*
sizeof
(
short
));
memset
(
dlsch
->
harq_processes
[
i
]
->
w
[
r
],
0
,(
5
*
8448
)
*
sizeof
(
short
));
else
exit_flag
=
2
;
}
...
...
@@ -238,7 +238,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
int32_t
no_iteration_ldpc
,
length_dec
;
uint32_t
r
,
r_offset
=
0
,
Kr
=
8424
,
Kr_bytes
,
K_bytes_F
,
err_flag
=
0
;
uint8_t
crc_type
;
int8_t
llrProcBuf
[
OAI
_LDPC_MAX_NUM_LLR
]
__attribute__
((
aligned
(
32
)));
int8_t
llrProcBuf
[
NR
_LDPC_MAX_NUM_LLR
]
__attribute__
((
aligned
(
32
)));
t_nrLDPC_dec_params
decParams
;
t_nrLDPC_dec_params
*
p_decParams
=
&
decParams
;
t_nrLDPC_time_stats
procTime
;
...
...
@@ -782,7 +782,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
t_nrLDPC_dec_params
*
p_decParams
=
&
decParams
;
t_nrLDPC_time_stats
procTime
;
t_nrLDPC_time_stats
*
p_procTime
=&
procTime
;
int8_t
llrProcBuf
[
OAI
_LDPC_MAX_NUM_LLR
]
__attribute__
((
aligned
(
32
)));
int8_t
llrProcBuf
[
NR
_LDPC_MAX_NUM_LLR
]
__attribute__
((
aligned
(
32
)));
if
(
!
harq_process
)
{
printf
(
"dlsch_decoding.c: NULL harq_process pointer
\n
"
);
return
(
dlsch
->
max_ldpc_iterations
);
...
...
@@ -1349,7 +1349,7 @@ void *nr_dlsch_decoding_process(void *arg)
t_nrLDPC_dec_params
*
p_decParams
=
&
decParams
;
t_nrLDPC_time_stats
procTime
;
t_nrLDPC_time_stats
*
p_procTime
=&
procTime
;
int8_t
llrProcBuf
[
OAI
_LDPC_MAX_NUM_LLR
]
__attribute__
((
aligned
(
32
)));
int8_t
llrProcBuf
[
NR
_LDPC_MAX_NUM_LLR
]
__attribute__
((
aligned
(
32
)));
t_nrLDPC_procBuf
*
p_nrLDPC_procBuf
;
int16_t
z
[
68
*
384
];
int8_t
l
[
68
*
384
];
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
View file @
fab9c94a
...
...
@@ -234,7 +234,6 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
start_rb
=
dlsch0_harq
->
start_rb
;
nb_rb_pdsch
=
dlsch0_harq
->
nb_rb
;
int
lbar
;
DevAssert
(
dlsch0_harq
);
round
=
dlsch0_harq
->
round
;
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
View file @
fab9c94a
...
...
@@ -588,6 +588,12 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
ue
->
symbol_offset
=
nr_get_ssb_start_symbol
(
frame_parms
);
uint8_t
frame_number_4lsb
=
0
;
for
(
int
i
=
0
;
i
<
4
;
i
++
)
frame_number_4lsb
|=
((
nr_ue_pbch_vars
->
xtra_byte
>>
i
)
&
1
)
<<
(
3
-
i
);
proc
->
decoded_frame_rx
=
frame_number_4lsb
;
#ifdef DEBUG_PBCH
printf
(
"xtra_byte %x payload %x
\n
"
,
nr_ue_pbch_vars
->
xtra_byte
,
payload
);
...
...
@@ -602,7 +608,7 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
dl_indication
.
rx_ind
=
&
rx_ind
;
// hang on rx_ind instance
dl_indication
.
dci_ind
=
NULL
;
dl_indication
.
proc
=
proc
;
// needed to signal back the frame number -> FIXME
dl_indication
.
proc
=
proc
;
dl_indication
.
module_id
=
0
;
dl_indication
.
cc_id
=
proc
->
CC_id
;
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h
View file @
fab9c94a
...
...
@@ -42,6 +42,8 @@
#include "UTIL/LISTS/list.h"
#endif
#include "LAYER2/NR_MAC_gNB/mac_proto.h"
//#include "../LTE_TRANSPORT/transport_common.h"
// structures below implement 36-211 and 36-212
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
View file @
fab9c94a
...
...
@@ -39,7 +39,7 @@
#include "PHY/CODING/nrLDPC_encoder/defs.h"
#include "PHY/NR_UE_TRANSPORT/nr_transport_ue.h"
#include "common/utils/LOG/vcd_signal_dumper.h"
#include "LAYER2/NR_MAC_gNB/mac_proto.h"
void
free_nr_ue_ulsch
(
NR_UE_ULSCH_t
**
ulschptr
,
unsigned
char
N_RB_UL
)
...
...
openair1/PHY/defs_gNB.h
View file @
fab9c94a
...
...
@@ -627,6 +627,8 @@ typedef struct PHY_VARS_gNB_s {
nfapi_nr_ul_dci_request_pdus_t
*
ul_dci_pdu
;
nfapi_nr_dl_tti_ssb_pdu
ssb_pdu
;
uint8_t
skipped_slots
;
// for 120kHz SSB transmission
int
num_pdsch_rnti
;
NR_gNB_PBCH
pbch
;
nr_cce_t
cce_list
[
MAX_DCI_CORESET
][
NR_MAX_PDCCH_AGG_LEVEL
];
...
...
openair1/PHY/defs_nr_UE.h
View file @
fab9c94a
...
...
@@ -872,6 +872,8 @@ typedef struct {
fapi_nr_config_request_t
nrUE_config
;
uint16_t
frame_gap
;
// the following structures are not part of PHY_vars_UE anymore as it is not thread safe. They are now on the stack of the functions that actually need them
//nr_downlink_indication_t dl_indication;
...
...
openair1/SCHED_NR/fapi_nr_l1.c
View file @
fab9c94a
...
...
@@ -132,7 +132,6 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
PHY_VARS_gNB
*
gNB
;
// copy data from L2 interface into L1 structures
module_id_t
Mod_id
=
Sched_INFO
->
module_id
;
uint8_t
CC_id
=
Sched_INFO
->
CC_id
;
nfapi_nr_dl_tti_request_t
*
DL_req
=
Sched_INFO
->
DL_req
;
nfapi_nr_tx_data_request_t
*
TX_req
=
Sched_INFO
->
TX_req
;
nfapi_nr_ul_tti_request_t
*
UL_tti_req
=
Sched_INFO
->
UL_tti_req
;
...
...
@@ -146,18 +145,16 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
gNB
=
RC
.
gNB
[
Mod_id
];
uint8_t
number_dl_pdu
=
DL_req
->
dl_tti_request_body
.
nPDUs
;
uint8_t
number_ul_pdu
=
0
;
//
uint8_t number_ul_pdu = 0;
uint8_t
number_ul_dci_pdu
=
(
UL_dci_req
==
NULL
)
?
0
:
UL_dci_req
->
numPdus
;
if
(
UL_tti_req
!=
NULL
)
number_ul_pdu
=
UL_tti_req
->
n_pdus
;
//
if (UL_tti_req != NULL) number_ul_pdu = UL_tti_req->n_pdus;
LOG_D
(
PHY
,
"NFAPI: Sched_INFO:SFN/SLOT:%04d%d DL_req:SFN/SLO:%04d%d:dl_pdu:%d tx_req:SFN/SLOT:%04d%d:pdus:%d;
\n
"
,
frame
,
slot
,
DL_req
->
SFN
,
DL_req
->
Slot
,
number_dl_pdu
,
TX_req
->
SFN
,
TX_req
->
Slot
,
TX_req
->
Number_of_PDUs
);
int
do_oai
=
0
;
int
dont_send
=
0
;
int
pdcch_received
=
0
;
gNB
->
num_pdsch_rnti
=
0
;
gNB
->
pdcch_pdu
=
NULL
;
...
...
@@ -169,7 +166,6 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
switch
(
dl_tti_pdu
->
PDUType
)
{
case
NFAPI_NR_DL_TTI_SSB_PDU_TYPE
:
gNB
->
pbch_configured
=
1
;
do_oai
=
1
;
handle_nr_nfapi_ssb_pdu
(
gNB
,
frame
,
slot
,
dl_tti_pdu
);
...
...
@@ -183,19 +179,17 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
&
dl_tti_pdu
->
pdcch_pdu
);
pdcch_received
=
1
;
do_oai
=
1
;
break
;
case
NFAPI_NR_DL_TTI_PDSCH_PDU_TYPE
:
{
nfapi_nr_dl_tti_pdsch_pdu_rel15_t
*
pdsch_pdu_rel15
=
&
dl_tti_pdu
->
pdsch_pdu
.
pdsch_pdu_rel15
;
uint16_t
pduIndex
=
pdsch_pdu_rel15
->
pduIndex
;
uint16_t
tx_pdus
=
TX_req
->
Number_of_PDUs
;
AssertFatal
(
TX_req
->
pdu_list
[
pduIndex
].
num_TLV
==
1
,
"TX_req->pdu_list[%d].num_TLV %d != 1
\n
"
,
pduIndex
,
TX_req
->
pdu_list
[
pduIndex
].
num_TLV
);
uint8_t
*
sdu
=
TX_req
->
pdu_list
[
pduIndex
].
TLVs
[
0
].
value
.
direct
;
uint8_t
*
sdu
=
(
uint8_t
*
)
TX_req
->
pdu_list
[
pduIndex
].
TLVs
[
0
].
value
.
direct
;
handle_nr_nfapi_pdsch_pdu
(
gNB
,
frame
,
slot
,
&
dl_tti_pdu
->
pdsch_pdu
,
sdu
);
do_oai
=
1
;
}
}
}
...
...
openair1/SCHED_NR/nr_prach_procedures.c
View file @
fab9c94a
...
...
@@ -30,9 +30,9 @@
* \warning
*/
#include "PHY/defs_
e
NB.h"
#include "PHY/defs_
g
NB.h"
#include "PHY/phy_extern.h"
#include "
SCHED/sched_eNB
.h"
#include "
PHY/NR_TRANSPORT/nr_transport_proto
.h"
#include "nfapi_nr_interface_scf.h"
#include "fapi_nr_l1.h"
#include "nfapi_pnf.h"
...
...
@@ -71,12 +71,13 @@ void L1_nr_prach_procedures(PHY_VARS_gNB *gNB,int frame,int subframe) {
for
(
i
=
0
;
i
<
gNB
->
num_RU
;
i
++
)
{
ru
=
gNB
->
RU_list
[
i
];
for
(
ru_aa
=
0
,
aa
=
0
;
ru_aa
<
ru
->
nb_rx
;
ru_aa
++
,
aa
++
)
{
gNB
->
prach_vars
.
rxsigF
[
0
][
aa
]
=
gNB
->
RU_list
[
i
]
->
prach_rxsigF
[
ru_aa
];
gNB
->
prach_vars
.
rxsigF
[
aa
]
=
gNB
->
RU_list
[
i
]
->
prach_rxsigF
[
ru_aa
];
}
}
rx_nr_prach
(
gNB
,
0
,
frame
,
subframe
,
&
max_preamble
[
0
],
&
max_preamble_energy
[
0
],
&
max_preamble_delay
[
0
]
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
fab9c94a
...
...
@@ -49,40 +49,6 @@
#endif
extern
uint8_t
nfapi_mode
;
/*
int return_ssb_type(nfapi_config_request_t *cfg)
{
int mu = cfg->subframe_config.numerology_index_mu.value;
nr_ssb_type_e ssb_type;
switch(mu) {
case NR_MU_0:
ssb_type = nr_ssb_type_A;
break;
case NR_MU_1:
ssb_type = nr_ssb_type_B;
break;
case NR_MU_3:
ssb_type = nr_ssb_type_D;
break;
case NR_MU_4:
ssb_type = nr_ssb_type_E;
break;
default:
AssertFatal(0==1, "Invalid numerology index %d for the synchronization block\n", mu);
}
LOG_D(PHY, "SSB type %d\n", ssb_type);
return ssb_type;
}*/
void
nr_set_ssb_first_subcarrier
(
nfapi_nr_config_request_scf_t
*
cfg
,
NR_DL_FRAME_PARMS
*
fp
)
{
fp
->
ssb_start_subcarrier
=
(
12
*
cfg
->
ssb_table
.
ssb_offset_point_a
.
value
+
cfg
->
ssb_table
.
ssb_subcarrier_offset
.
value
);
...
...
@@ -90,13 +56,17 @@ void nr_set_ssb_first_subcarrier(nfapi_nr_config_request_scf_t *cfg, NR_DL_FRAME
}
void
nr_common_signal_procedures
(
PHY_VARS_gNB
*
gNB
,
int
frame
,
int
slot
)
{
NR_DL_FRAME_PARMS
*
fp
=&
gNB
->
frame_parms
;
nfapi_nr_config_request_scf_t
*
cfg
=
&
gNB
->
gNB_config
;
int
**
txdataF
=
gNB
->
common_vars
.
txdataF
;
uint8_t
ssb_index
,
n_hf
;
in
t
ssb_start_symbol
,
rel_slot
;
uint16_
t
ssb_start_symbol
,
rel_slot
;
int
txdataF_offset
=
(
slot
%
2
)
*
fp
->
samples_per_slot_wCP
;
uint16_t
slots_per_hf
=
fp
->
slots_per_frame
/
2
;
uint16_t
slots_per_hf
=
(
fp
->
slots_per_frame
)
>>
1
;
if
(
slot
==
0
)
gNB
->
skipped_slots
=
0
;
n_hf
=
fp
->
half_frame_bit
;
...
...
@@ -108,21 +78,23 @@ void nr_common_signal_procedures (PHY_VARS_gNB *gNB,int frame, int slot) {
n_hf
=
1
;
}
// to set a effective slot number
between 0 to 9
in the half frame where the SSB is supposed to be
// to set a effective slot number in the half frame where the SSB is supposed to be
rel_slot
=
(
n_hf
)
?
(
slot
-
slots_per_hf
)
:
slot
;
LOG_D
(
PHY
,
"common_signal_procedures: frame %d, slot %d
\n
"
,
frame
,
slot
);
if
(
rel_slot
<
10
&&
rel_slot
>=
0
)
{
if
((
slot
==
8
)
||
(
slot
==
9
)
||
(
slot
==
18
)
||
(
slot
==
19
)
||
(
slot
==
28
)
||
(
slot
==
29
))
gNB
->
skipped_slots
=
gNB
->
skipped_slots
+
1
;
else
{
if
(
rel_slot
<
slots_per_hf
&&
rel_slot
>=
0
)
{
for
(
int
i
=
0
;
i
<
2
;
i
++
)
{
// max two SSB per frame
ssb_index
=
i
+
2
*
rel_slot
;
// computing the ssb_index
ssb_index
=
i
+
((
rel_slot
-
gNB
->
skipped_slots
)
<<
1
)
;
// computing the ssb_index
if
((
fp
->
L_ssb
>>
ssb_index
)
&
0x01
)
{
// generating the ssb only if the bit of L_ssb at current ssb index is 1
gNB
->
ssb_pdu
.
ssb_pdu_rel15
.
SsbBlockIndex
=
ssb_index
;
fp
->
ssb_index
=
ssb_index
;
int
ssb_start_symbol_abs
=
nr_get_ssb_start_symbol
(
fp
);
// computing the starting symbol for current ssb
ssb_start_symbol
=
ssb_start_symbol_abs
%
14
;
// start symbol wrt slot
ssb_start_symbol
=
ssb_start_symbol_abs
%
fp
->
symbols_per_slot
;
// start symbol wrt slot
nr_set_ssb_first_subcarrier
(
cfg
,
fp
);
// setting the first subcarrier
...
...
@@ -146,6 +118,7 @@ void nr_common_signal_procedures (PHY_VARS_gNB *gNB,int frame, int slot) {
}
}
}
}
}
void
phy_procedures_gNB_TX
(
PHY_VARS_gNB
*
gNB
,
...
...
@@ -161,7 +134,7 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
if
(
cfg
->
ssb_table
.
ssb_period
.
value
>
1
)
ssb_frame_periodicity
=
1
<<
(
cfg
->
ssb_table
.
ssb_period
.
value
-
1
)
;
// 10ms is the frame length
ssb_frame_periodicity
=
1
<<
(
cfg
->
ssb_table
.
ssb_period
.
value
-
1
)
;
if
((
cfg
->
cell_config
.
frame_duplex_type
.
value
==
TDD
)
&&
(
nr_slot_select
(
cfg
,
frame
,
slot
)
==
NR_UPLINK_SLOT
))
return
;
...
...
openair1/SCHED_NR_UE/defs.h
View file @
fab9c94a
...
...
@@ -370,7 +370,7 @@ void nr_compute_srs_pos(lte_frame_type_t frameType,uint16_t isrs,uint16_t *psrsP
void
set_tx_harq_id
(
NR_UE_ULSCH_t
*
ulsch
,
int
harq_pid
,
int
slot_tx
);
int
get_tx_harq_id
(
NR_UE_ULSCH_t
*
ulsch
,
int
slot_tx
);
int
is_pbch_in_slot
(
fapi_nr_config_request_t
*
config
,
int
frame
,
int
slot
,
NR_DL_FRAME_PARMS
*
fp
,
int
mib_sfn
);
int
is_pbch_in_slot
(
fapi_nr_config_request_t
*
config
,
int
frame
,
int
slot
,
NR_DL_FRAME_PARMS
*
fp
);
/*@}*/
...
...
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
fab9c94a
...
...
@@ -3273,7 +3273,7 @@ void nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int eNB
if
(
!
dlsch1
)
{
int
harq_pid
=
dlsch0
->
current_harq_pid
;
uint16_t
BWPStart
=
dlsch0
->
harq_processes
[
harq_pid
]
->
BWPStart
;
uint16_t
BWPSize
=
dlsch0
->
harq_processes
[
harq_pid
]
->
BWPSize
;
//
uint16_t BWPSize = dlsch0->harq_processes[harq_pid]->BWPSize;
uint16_t
pdsch_start_rb
=
dlsch0
->
harq_processes
[
harq_pid
]
->
start_rb
;
uint16_t
pdsch_nb_rb
=
dlsch0
->
harq_processes
[
harq_pid
]
->
nb_rb
;
uint16_t
s0
=
dlsch0
->
harq_processes
[
harq_pid
]
->
start_symbol
;
...
...
@@ -4027,9 +4027,9 @@ void *UE_thread_slot1_dl_processing(void *arg) {
#endif
int
is_pbch_in_slot
(
fapi_nr_config_request_t
*
config
,
int
frame
,
int
slot
,
NR_DL_FRAME_PARMS
*
fp
,
int
mib_sfn
)
{
int
is_pbch_in_slot
(
fapi_nr_config_request_t
*
config
,
int
frame
,
int
slot
,
NR_DL_FRAME_PARMS
*
fp
)
{
int
ssb_slot_decoded
=
(
fp
->
ssb_index
)
/
2
;
int
ssb_slot_decoded
=
(
fp
->
ssb_index
>>
1
)
+
((
fp
->
ssb_index
>>
4
)
<<
1
);
//slot in which the decoded SSB can be found
if
(
config
->
ssb_table
.
ssb_period
==
0
)
{
// check for pbch in corresponding slot each half frame
...
...
@@ -4040,7 +4040,7 @@ int is_pbch_in_slot(fapi_nr_config_request_t *config, int frame, int slot, NR_DL
}
else
{
// if the current frame is supposed to contain ssb
if
(
!
(
(
frame
-
(
mib_sfn
))
%
(
1
<<
config
->
ssb_table
.
ssb_period
)))
if
(
!
(
frame
%
(
1
<<
(
config
->
ssb_table
.
ssb_period
-
1
)
)))
return
(
slot
==
ssb_slot_decoded
);
else
return
0
;
...
...
@@ -4081,7 +4081,7 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
if
(
pdcch_vars
->
nb_search_space
>
0
)
get_coreset_rballoc
(
pdcch_vars
->
pdcch_config
[
0
].
coreset
.
frequency_domain_resource
,
&
coreset_nb_rb
,
&
coreset_start_rb
);
slot_pbch
=
is_pbch_in_slot
(
cfg
,
frame_rx
,
nr_tti_rx
,
fp
,
proc
->
decoded_frame_rx
);
slot_pbch
=
is_pbch_in_slot
(
cfg
,
frame_rx
,
nr_tti_rx
,
fp
);
// looking for pbch only in slot where it is supposed to be
if
((
ue
->
decode_MIB
==
1
)
&&
slot_pbch
)
...
...
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
fab9c94a
...
...
@@ -621,7 +621,7 @@ int main(int argc, char **argv)
nr_l2_init_ue
();
nr_l2_init_ue
(
NULL
);
UE_mac
=
get_mac_inst
(
0
);
UE
->
if_inst
=
nr_ue_if_module_init
(
0
);
...
...
@@ -658,7 +658,7 @@ int main(int argc, char **argv)
rrc
.
carrier
.
MIB
=
(
uint8_t
*
)
malloc
(
4
);
rrc
.
carrier
.
sizeof_MIB
=
do_MIB_NR
(
&
rrc
,
0
);
nr_rrc_mac_config_req_ue
(
0
,
0
,
0
,
rrc
.
carrier
.
mib
.
message
.
choice
.
mib
,
s
cc
,
s
econdaryCellGroup
->
spCellConfig
);
nr_rrc_mac_config_req_ue
(
0
,
0
,
0
,
rrc
.
carrier
.
mib
.
message
.
choice
.
mib
,
secondaryCellGroup
->
spCellConfig
);
nr_dcireq_t
dcireq
;
...
...
openair2/LAYER2/NR_MAC_UE/mac_proto.h
View file @
fab9c94a
...
...
@@ -49,7 +49,6 @@
\param pdu_length length of pdu
\param cell_id cell id */
int8_t
nr_ue_decode_mib
(
UE_nr_rxtx_proc_t
*
proc
,
module_id_t
module_id
,
int
cc_id
,
uint8_t
gNB_index
,
...
...
openair2/LAYER2/NR_MAC_UE/main_ue_nr.c
View file @
fab9c94a
...
...
@@ -44,7 +44,7 @@ NR_UE_MAC_INST_t * nr_l2_init_ue(NR_UE_RRC_INST_t* rrc_inst)
//init mac here
nr_ue_mac_inst
=
(
NR_UE_MAC_INST_t
*
)
malloc
(
sizeof
(
NR_UE_MAC_INST_t
)
*
NB_NR_UE_MAC_INST
);
if
(
rrc_inst
)
{
nr_rrc_mac_config_req_ue
(
0
,
0
,
0
,
NULL
,
rrc_inst
->
cell_group_config
->
spCellConfig
);
if
(
IS_SOFTMODEM_NOS1
){
...
...
@@ -54,7 +54,8 @@ NR_UE_MAC_INST_t * nr_l2_init_ue(NR_UE_RRC_INST_t* rrc_inst)
pdcp_layer_init
();
nr_ip_over_LTE_DRB_preconfiguration
();
}
}
else
LOG_I
(
MAC
,
"Running without RRC instance
\n
"
);
return
(
nr_ue_mac_inst
);
}
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
fab9c94a
...
...
@@ -223,8 +223,7 @@ int8_t nr_ue_process_dlsch(module_id_t module_id,
return
0
;
}
int8_t
nr_ue_decode_mib
(
UE_nr_rxtx_proc_t
*
proc
,
module_id_t
module_id
,
int8_t
nr_ue_decode_mib
(
module_id_t
module_id
,
int
cc_id
,
uint8_t
gNB_index
,
uint8_t
extra_bits
,
// 8bits 38.212 c7.1.1
...
...
@@ -247,7 +246,6 @@ int8_t nr_ue_decode_mib(UE_nr_rxtx_proc_t *proc,
frame_number_4lsb
|=
((
extra_bits
>>
i
)
&
1
)
<<
(
3
-
i
);
uint8_t
half_frame_bit
=
(
extra_bits
>>
4
)
&
0x1
;
// extra bits[4]
uint8_t
ssb_subcarrier_offset_msb
=
(
extra_bits
>>
5
)
&
0x1
;
// extra bits[5]
uint8_t
ssb_subcarrier_offset
=
(
uint8_t
)
mac
->
mib
->
ssb_SubcarrierOffset
;
//uint32_t ssb_index = 0; // TODO: ssb_index should obtain from L1 in case Lssb != 64
...
...
@@ -609,7 +607,9 @@ int8_t nr_ue_decode_mib(UE_nr_rxtx_proc_t *proc,
mac
->
phy_config
.
Mod_id
=
module_id
;
mac
->
phy_config
.
CC_id
=
cc_id
;
proc
->
decoded_frame_rx
=
frame
;
mac
->
dl_config_request
.
sfn
=
frame
;
mac
->
dl_config_request
.
slot
=
(
ssb_index
>>
1
)
+
((
ssb_index
>>
4
)
<<
1
);
// not valid for 240kHz SCS
//}
return
0
;
...
...
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
View file @
fab9c94a
...
...
@@ -44,10 +44,9 @@
static
nr_ue_if_module_t
*
nr_ue_if_module_inst
[
MAX_IF_MODULES
];
// L2 Abstraction Layer
int
handle_bcch_bch
(
UE_nr_rxtx_proc_t
*
proc
,
module_id_t
module_id
,
int
cc_id
,
unsigned
int
gNB_index
,
uint8_t
*
pduP
,
unsigned
int
additional_bits
,
uint32_t
ssb_index
,
uint32_t
ssb_length
,
uint16_t
cell_id
){
int
handle_bcch_bch
(
module_id_t
module_id
,
int
cc_id
,
unsigned
int
gNB_index
,
uint8_t
*
pduP
,
unsigned
int
additional_bits
,
uint32_t
ssb_index
,
uint32_t
ssb_length
,
uint16_t
cell_id
){
return
nr_ue_decode_mib
(
proc
,
module_id
,
return
nr_ue_decode_mib
(
module_id
,
cc_id
,
gNB_index
,
additional_bits
,
...
...
@@ -218,16 +217,14 @@ int nr_ue_dl_indication(nr_downlink_indication_t *dl_info){
for
(
i
=
0
;
i
<
dl_info
->
rx_ind
->
number_pdus
;
++
i
){
switch
(
dl_info
->
rx_ind
->
rx_indication_body
[
i
].
pdu_type
){
case
FAPI_NR_RX_PDU_TYPE_MIB
:
ret_mask
|=
(
handle_bcch_bch
(
dl_info
->
proc
,
dl_info
->
module_id
,
dl_info
->
cc_id
,
dl_info
->
gNB_index
,
ret_mask
|=
(
handle_bcch_bch
(
dl_info
->
module_id
,
dl_info
->
cc_id
,
dl_info
->
gNB_index
,
(
dl_info
->
rx_ind
->
rx_indication_body
+
i
)
->
mib_pdu
.
pdu
,
(
dl_info
->
rx_ind
->
rx_indication_body
+
i
)
->
mib_pdu
.
additional_bits
,
(
dl_info
->
rx_ind
->
rx_indication_body
+
i
)
->
mib_pdu
.
ssb_index
,
(
dl_info
->
rx_ind
->
rx_indication_body
+
i
)
->
mib_pdu
.
ssb_length
,
(
dl_info
->
rx_ind
->
rx_indication_body
+
i
)
->
mib_pdu
.
cell_id
))
<<
FAPI_NR_RX_PDU_TYPE_MIB
;
LOG_D
(
MAC
,
"[L2][IF MODULE][DL INDICATION][RX_IND], MIB case Number of PDUs: %d
\n
"
,
dl_info
->
rx_ind
->
number_pdus
);
/*ret_mask |= (handle_bcch_bch( dl_info->proc,
dl_info->module_id, dl_info->cc_id, dl_info->gNB_index,
/*ret_mask |= (handle_bcch_bch( dl_info->module_id, dl_info->cc_id, dl_info->gNB_index,
dl_info->rx_ind->rx_indication_body[i].mib_pdu.pdu,
dl_info->rx_ind->rx_indication_body[i].mib_pdu.additional_bits,
dl_info->rx_ind->rx_indication_body[i].mib_pdu.ssb_index,
...
...
@@ -306,11 +303,10 @@ int nr_ue_dcireq(nr_dcireq_t *dcireq) {
fapi_nr_dl_config_request_t
*
dl_config
=&
dcireq
->
dl_config_req
;
NR_UE_MAC_INST_t
*
UE_mac
=
get_mac_inst
(
0
);
dl_config
->
sfn
=
UE_mac
->
dl_config_request
.
sfn
;
dl_config
->
slot
=
UE_mac
->
dl_config_request
.
slot
;
dl_config
->
number_pdus
=
0
;
ue_dci_configuration
(
UE_mac
,
dl_config
,
dcireq
->
frame
,
dcireq
->
slot
);
return
0
;
}
openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h
View file @
fab9c94a
...
...
@@ -215,7 +215,7 @@ int nr_ue_dcireq(nr_dcireq_t *dcireq);
\param ssb_index SSB index within 0 - (L_ssb-1) corresponding to 38.331 ch.13 parameter i
\param ssb_length corresponding to L1 parameter L_ssb
\param cell_id cell id */
int
handle_bcch_bch
(
UE_nr_rxtx_proc_t
*
proc
,
module_id_t
module_id
,
int
cc_id
,
unsigned
int
gNB_index
,
uint8_t
*
pduP
,
unsigned
int
additional_bits
,
uint32_t
ssb_index
,
uint32_t
ssb_length
,
uint16_t
cell_id
);
int
handle_bcch_bch
(
module_id_t
module_id
,
int
cc_id
,
unsigned
int
gNB_index
,
uint8_t
*
pduP
,
unsigned
int
additional_bits
,
uint32_t
ssb_index
,
uint32_t
ssb_length
,
uint16_t
cell_id
);
// TODO check
/**\brief handle BCCH-DL-SCH message from dl_indication
...
...
openair2/RRC/NR/rrc_gNB_reconfig.c
View file @
fab9c94a
This diff is collapsed.
Click to expand it.
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpn300.conf
View file @
fab9c94a
...
...
@@ -148,7 +148,7 @@ gNBs =
# ssb_PositionsInBurs_BitmapPR
# 1=short, 2=medium, 3=long
ssb_PositionsInBurst_PR
=
2
;
ssb_PositionsInBurst_Bitmap
=
1
5
;
ssb_PositionsInBurst_Bitmap
=
1
;
# ssb_periodicityServingCell
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
...
...
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