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
wangjie
OpenXG-RAN
Commits
d4984dc7
Commit
d4984dc7
authored
Sep 24, 2020
by
Florian Kaltenberger
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/NR_MAC_SSB_RO_UE_IDCC' into NR_MAC_SSB_RO_GlobalEdge
parents
f07ef482
b0b5825c
Changes
14
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
928 additions
and
163 deletions
+928
-163
common/utils/asn1_conversions.h
common/utils/asn1_conversions.h
+2
-2
executables/nr-uesoftmodem.c
executables/nr-uesoftmodem.c
+2
-1
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
+3
-0
openair1/PHY/INIT/nr_parms.c
openair1/PHY/INIT/nr_parms.c
+1
-1
openair1/PHY/MODULATION/slot_fep_nr.c
openair1/PHY/MODULATION/slot_fep_nr.c
+8
-2
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+1
-1
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+3
-12
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
+685
-0
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
+33
-0
openair2/LAYER2/NR_MAC_UE/config_ue.c
openair2/LAYER2/NR_MAC_UE/config_ue.c
+6
-3
openair2/LAYER2/NR_MAC_UE/mac_proto.h
openair2/LAYER2/NR_MAC_UE/mac_proto.h
+2
-1
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
+88
-27
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+93
-112
openair2/LAYER2/NR_MAC_gNB/config.c
openair2/LAYER2/NR_MAC_gNB/config.c
+1
-1
No files found.
common/utils/asn1_conversions.h
View file @
d4984dc7
...
...
@@ -101,11 +101,11 @@ static inline uint64_t BIT_STRING_to_uint64(BIT_STRING_t *asn) {
shift
=
((
asn
->
size
-
1
)
*
8
)
-
asn
->
bits_unused
;
for
(
index
=
0
;
index
<
(
asn
->
size
-
1
);
index
++
)
{
result
|=
asn
->
buf
[
index
]
<<
shift
;
result
|=
((
uint64_t
)
asn
->
buf
[
index
])
<<
shift
;
shift
-=
8
;
}
result
|=
asn
->
buf
[
index
]
>>
asn
->
bits_unused
;
result
|=
((
uint64_t
)
asn
->
buf
[
index
])
>>
asn
->
bits_unused
;
return
result
;
}
...
...
executables/nr-uesoftmodem.c
View file @
d4984dc7
...
...
@@ -693,6 +693,7 @@ int main( int argc, char **argv ) {
}
init_symbol_rotation
(
frame_parms
[
CC_id
],
frame_parms
[
CC_id
]
->
dl_CarrierFreq
);
init_nr_ue_vars
(
UE
[
CC_id
],
frame_parms
[
CC_id
],
0
,
abstraction_flag
);
UE
[
CC_id
]
->
mac_enabled
=
1
;
...
...
@@ -751,7 +752,7 @@ int main( int argc, char **argv ) {
UE
[
CC_id
]
->
N_TA_offset
=
(
int
)(
N_TA_offset
*
factor
);
LOG_I
(
PHY
,
"UE %d Setting N_TA_offset to %d samples (factor %f, UL Freq %lu, N_RB %d)
\n
"
,
UE
[
CC_id
]
->
Mod_id
,
UE
[
CC_id
]
->
N_TA_offset
,
factor
,
UE
[
CC_id
]
->
frame_parms
.
ul_CarrierFreq
,
N_RB
);
}
}
}
// printf("tx_max_power = %d -> amp %d\n",tx_max_power[0],get_tx_amp(tx_max_poHwer,tx_max_power));
init_openair0
();
...
...
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
View file @
d4984dc7
...
...
@@ -170,6 +170,7 @@ typedef struct {
uint8_t
prach_format
;
/// Num RA
uint8_t
num_ra
;
uint8_t
prach_slot
;
uint8_t
prach_start_symbol
;
/// 38.211 (NCS 38.211 6.3.3.1).
uint16_t
num_cs
;
...
...
@@ -179,6 +180,8 @@ typedef struct {
uint8_t
restricted_set
;
/// see TS 38.211 (6.3.3.2).
uint16_t
freq_msg1
;
// When multiple SSBs per RO is configured, this indicates which one is selected in this RO -> this is used to properly compute the PRACH preamble
uint8_t
ssb_nb_in_ro
;
// nfapi_nr_ul_beamforming_t beamforming;
}
fapi_nr_ul_config_prach_pdu
;
...
...
openair1/PHY/INIT/nr_parms.c
View file @
d4984dc7
...
...
@@ -385,7 +385,7 @@ int nr_init_frame_parms_ue(NR_DL_FRAME_PARMS *fp,
fp
->
Lmax
=
64
;
}
fp
->
L_ssb
=
(((
uint64_t
)
config
->
ssb_table
.
ssb_mask_list
[
1
].
ssb_mask
)
<<
32
)
|
config
->
ssb_table
.
ssb_mask_list
[
1
].
ssb_mask
;
fp
->
L_ssb
=
(((
uint64_t
)
config
->
ssb_table
.
ssb_mask_list
[
0
].
ssb_mask
)
<<
32
)
|
config
->
ssb_table
.
ssb_mask_list
[
1
].
ssb_mask
;
fp
->
N_ssb
=
0
;
for
(
int
p
=
0
;
p
<
fp
->
Lmax
;
p
++
)
...
...
openair1/PHY/MODULATION/slot_fep_nr.c
View file @
d4984dc7
...
...
@@ -483,9 +483,15 @@ int nr_slot_fep_ul(NR_DL_FRAME_PARMS *frame_parms,
dft
(
dftsize
,(
int16_t
*
)
&
tmp_dft_in
,
(
int16_t
*
)
&
rxdataF
[
symbol
*
frame_parms
->
ofdm_symbol_size
],
1
);
}
else
dft
(
dftsize
,(
int16_t
*
)
&
rxdata
[
rxdata_offset
-
sample_offset
],
else
{
//dft(dftsize,(int16_t *)&rxdata[rxdata_offset-sample_offset],
// (int16_t *)&rxdataF[symbol * frame_parms->ofdm_symbol_size], 1);
memcpy
((
void
*
)
tmp_dft_in
,
(
void
*
)
&
rxdata
[
rxdata_offset
-
sample_offset
],
(
frame_parms
->
ofdm_symbol_size
)
*
sizeof
(
int
));
dft
(
dftsize
,(
int16_t
*
)
&
tmp_dft_in
,
(
int16_t
*
)
&
rxdataF
[
symbol
*
frame_parms
->
ofdm_symbol_size
],
1
);
}
// clear DC carrier from OFDM symbols
rxdataF
[
symbol
*
frame_parms
->
ofdm_symbol_size
]
=
0
;
...
...
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
d4984dc7
...
...
@@ -4376,7 +4376,7 @@ void nr_ue_prach_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, uint8_t
ue
->
ulsch_Msg3_active
[
i
]
=
0
;
}
}
nr_prach
=
nr_ue_get_rach
(
ue
->
prach_resources
[
gNB_id
],
mod_id
,
ue
->
CC_id
,
UE_mode
,
frame_tx
,
gNB_id
,
nr_tti_tx
);
nr_prach
=
nr_ue_get_rach
(
ue
->
prach_resources
[
gNB_id
],
ue
->
prach_vars
[
0
],
mod_id
,
ue
->
CC_id
,
UE_mode
,
frame_tx
,
gNB_id
,
nr_tti_tx
);
}
}
...
...
openair2/GNB_APP/gnb_config.c
View file @
d4984dc7
...
...
@@ -223,20 +223,12 @@ void fix_scc(NR_ServingCellConfigCommon_t *scc,uint64_t ssbmap) {
scc
->
ssb_PositionsInBurst
->
choice
.
shortBitmap
.
bits_unused
=
4
;
scc
->
ssb_PositionsInBurst
->
choice
.
shortBitmap
.
buf
=
CALLOC
(
1
,
1
);
scc
->
ssb_PositionsInBurst
->
choice
.
shortBitmap
.
buf
[
0
]
=
0
;
for
(
int
i
=
0
;
i
<
8
;
i
++
)
{
if
(
i
<
scc
->
ssb_PositionsInBurst
->
choice
.
shortBitmap
.
bits_unused
)
curr_bit
=
0
;
else
curr_bit
=
(
ssbmap
>>
(
7
-
i
))
&
0x01
;
scc
->
ssb_PositionsInBurst
->
choice
.
shortBitmap
.
buf
[
0
]
|=
curr_bit
<<
i
;
}
scc
->
ssb_PositionsInBurst
->
choice
.
shortBitmap
.
buf
[
0
]
=
ssbmap
&
0xF0
;
}
else
if
(
ssbmaplen
==
NR_ServingCellConfigCommon__ssb_PositionsInBurst_PR_mediumBitmap
){
scc
->
ssb_PositionsInBurst
->
choice
.
mediumBitmap
.
size
=
1
;
scc
->
ssb_PositionsInBurst
->
choice
.
mediumBitmap
.
bits_unused
=
0
;
scc
->
ssb_PositionsInBurst
->
choice
.
mediumBitmap
.
buf
=
CALLOC
(
1
,
1
);
scc
->
ssb_PositionsInBurst
->
choice
.
mediumBitmap
.
buf
[
0
]
=
0
;
for
(
int
i
=
0
;
i
<
8
;
i
++
)
scc
->
ssb_PositionsInBurst
->
choice
.
mediumBitmap
.
buf
[
0
]
|=
(((
ssbmap
>>
(
7
-
i
))
&
0x01
)
<<
i
);
scc
->
ssb_PositionsInBurst
->
choice
.
mediumBitmap
.
buf
[
0
]
=
ssbmap
;
}
else
{
scc
->
ssb_PositionsInBurst
->
choice
.
longBitmap
.
size
=
8
;
scc
->
ssb_PositionsInBurst
->
choice
.
longBitmap
.
bits_unused
=
0
;
...
...
@@ -244,8 +236,7 @@ void fix_scc(NR_ServingCellConfigCommon_t *scc,uint64_t ssbmap) {
for
(
int
j
=
0
;
j
<
8
;
j
++
)
{
scc
->
ssb_PositionsInBurst
->
choice
.
longBitmap
.
buf
[
7
-
j
]
=
0
;
curr_bit
=
(
ssbmap
>>
(
j
<<
3
))
&
(
0xff
);
for
(
int
i
=
0
;
i
<
8
;
i
++
)
scc
->
ssb_PositionsInBurst
->
choice
.
longBitmap
.
buf
[
7
-
j
]
|=
(((
curr_bit
>>
(
7
-
i
))
&
0x01
)
<<
i
);
scc
->
ssb_PositionsInBurst
->
choice
.
longBitmap
.
buf
[
7
-
j
]
=
curr_bit
;
}
}
...
...
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
View file @
d4984dc7
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
View file @
d4984dc7
...
...
@@ -36,6 +36,36 @@
#include "NR_CellGroupConfig.h"
#include "nr_mac.h"
// ===============================================
// SSB to RO mapping public defines and structures
// ===============================================
#define MAX_SSB_PER_RO (16) // Maximum number of SSBs that can be mapped to a single RO
#define MAX_TDM (7) // Maximum nb of PRACH occasions TDMed in a slot
#define MAX_FDM (8) // Maximum nb of PRACH occasions FDMed in a slot
// PRACH occasion details
typedef
struct
prach_occasion_info
{
uint8_t
start_symbol
;
// 0 - 13 (14 symbols in a slot)
uint8_t
fdm
;
// 0-7 (possible values of msg1-FDM: 1, 2, 4 or 8)
uint8_t
slot
;
// 0 - 159 (maximum number of slots in a 10ms frame - @ 240kHz)
uint8_t
frame
;
// 0 - 15 (maximum number of frames in a 160ms association pattern)
uint8_t
mapped_ssb_idx
[
MAX_SSB_PER_RO
];
// List of mapped SSBs
uint8_t
nb_mapped_ssb
;
uint16_t
format
;
// RO preamble format
}
prach_occasion_info_t
;
// PRACH occasion slot details
// A PRACH occasion slot is a series of PRACH occasions in time (symbols) and frequency
typedef
struct
prach_occasion_slot
{
prach_occasion_info_t
prach_occasion
[
MAX_TDM
][
MAX_FDM
];
// Starting symbol of each PRACH occasions in a slot
uint8_t
nb_of_prach_occasion_in_time
;
uint8_t
nb_of_prach_occasion_in_freq
;
}
prach_occasion_slot_t
;
// ========================================
typedef
enum
{
NR_DL_DCI_FORMAT_1_0
=
0
,
NR_DL_DCI_FORMAT_1_1
,
...
...
@@ -89,6 +119,9 @@ void find_monitoring_periodicity_offset_common(NR_SearchSpace_t *ss,
uint16_t
*
slot_period
,
uint16_t
*
offset
);
void
build_ssb_to_ro_map
(
NR_ServingCellConfigCommon_t
*
scc
,
uint8_t
unpaired
);
int
get_nr_prach_info_from_ssb_index
(
uint8_t
ssb_idx
,
int
frame
,
int
slot
,
prach_occasion_info_t
**
prach_occasion_info_pp
);
int
get_nr_prach_info_from_index
(
uint8_t
index
,
int
frame
,
int
slot
,
...
...
openair2/LAYER2/NR_MAC_UE/config_ue.c
View file @
d4984dc7
...
...
@@ -204,7 +204,7 @@ void config_common_ue(NR_UE_MAC_INST_t *mac,
uint16_t
band
;
int32_t
offset
;
get_band
((
cfg
->
carrier_config
.
dl_frequency
)
*
1000
,
get_band
((
uint64_t
)(
cfg
->
carrier_config
.
dl_frequency
)
*
1000
,
&
band
,
&
offset
,
&
frame_type
);
...
...
@@ -243,8 +243,8 @@ void config_common_ue(NR_UE_MAC_INST_t *mac,
cfg
->
ssb_table
.
ssb_mask_list
[
0
].
ssb_mask
=
0
;
cfg
->
ssb_table
.
ssb_mask_list
[
1
].
ssb_mask
=
0
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
cfg
->
ssb_table
.
ssb_mask_list
[
0
].
ssb_mask
+=
(
scc
->
ssb_PositionsInBurst
->
choice
.
longBitmap
.
buf
[
i
+
4
]
<<
i
*
8
);
cfg
->
ssb_table
.
ssb_mask_list
[
1
].
ssb_mask
+=
(
scc
->
ssb_PositionsInBurst
->
choice
.
longBitmap
.
buf
[
i
]
<<
i
*
8
);
cfg
->
ssb_table
.
ssb_mask_list
[
0
].
ssb_mask
+=
(
scc
->
ssb_PositionsInBurst
->
choice
.
longBitmap
.
buf
[
i
]
<<
i
*
8
);
cfg
->
ssb_table
.
ssb_mask_list
[
1
].
ssb_mask
+=
(
scc
->
ssb_PositionsInBurst
->
choice
.
longBitmap
.
buf
[
i
+
4
]
<<
i
*
8
);
}
break
;
default:
...
...
@@ -433,6 +433,9 @@ int nr_rrc_mac_config_req_ue(
LOG_I
(
MAC
,
"Configuring CRNTI %x
\n
"
,
mac
->
crnti
);
}
// Setup the SSB to Rach Occasions mapping according to the config
build_ssb_to_ro_map
(
mac
->
scc
,
mac
->
phy_config
.
config_req
.
cell_config
.
frame_duplex_type
);
/*
if(mac_cell_group_configP != NULL){
if(mac_cell_group_configP->drx_Config != NULL ){
...
...
openair2/LAYER2/NR_MAC_UE/mac_proto.h
View file @
d4984dc7
...
...
@@ -237,6 +237,7 @@ andom-access to transmit a BSR along with the C-RNTI control element (see 5.1.4
@param nr_tti_tx slot for PRACH transmission
@returns indication to generate PRACH to phy */
uint8_t
nr_ue_get_rach
(
NR_PRACH_RESOURCES_t
*
prach_resources
,
NR_UE_PRACH
*
prach_vars
,
module_id_t
mod_id
,
int
CC_id
,
UE_MODE_t
UE_mode
,
...
...
@@ -254,9 +255,9 @@ uint8_t nr_ue_get_rach(NR_PRACH_RESOURCES_t *prach_resources,
void
nr_get_prach_resources
(
module_id_t
mod_id
,
int
CC_id
,
uint8_t
gNB_id
,
uint8_t
t_id
,
uint8_t
first_Msg3
,
NR_PRACH_RESOURCES_t
*
prach_resources
,
NR_UE_PRACH
*
prach_vars
,
NR_RACH_ConfigDedicated_t
*
rach_ConfigDedicated
);
void
nr_Msg1_transmitted
(
module_id_t
mod_id
,
uint8_t
CC_id
,
frame_t
frameP
,
uint8_t
gNB_id
);
...
...
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
View file @
d4984dc7
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
d4984dc7
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/config.c
View file @
d4984dc7
...
...
@@ -125,7 +125,7 @@ void config_common(int Mod_idP, int pdsch_AntennaPorts, NR_ServingCellConfigComm
uint16_t
band
;
int32_t
offset
;
get_band
((
cfg
->
carrier_config
.
dl_frequency
.
value
)
*
1000
,
get_band
((
uint64_t
)(
cfg
->
carrier_config
.
dl_frequency
.
value
)
*
1000
,
&
band
,
&
offset
,
&
frame_type
);
...
...
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