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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG
OpenXG-RAN
Commits
d994d537
Commit
d994d537
authored
Jul 26, 2024
by
Roberto Rosca
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added sib19 structure with initialization
parent
ba2d7aad
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
112 additions
and
3 deletions
+112
-3
openair2/GNB_APP/RRC_nr_paramsvalues.h
openair2/GNB_APP/RRC_nr_paramsvalues.h
+14
-0
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+31
-3
openair2/LAYER2/NR_MAC_gNB/config.c
openair2/LAYER2/NR_MAC_gNB/config.c
+11
-0
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
+1
-0
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+4
-0
openair2/RRC/NR/nr_rrc_config.c
openair2/RRC/NR/nr_rrc_config.c
+47
-0
openair2/RRC/NR/nr_rrc_config.h
openair2/RRC/NR/nr_rrc_config.h
+4
-0
No files found.
openair2/GNB_APP/RRC_nr_paramsvalues.h
View file @
d994d537
...
...
@@ -109,6 +109,13 @@
#define GNB_CONFIG_STRING_SSPBCHBLOCKPOWER "ssPBCH_BlockPower"
#define GNB_CONFIG_STRING_CELLSPECIFICKOFFSET "cellSpecificKoffset_r17"
#define GNB_CONFIG_STRING_EPHEMERIS_POSITION_X "positionX-r17"
#define GNB_CONFIG_STRING_EPHEMERIS_POSITION_Y "positionY-r17"
#define GNB_CONFIG_STRING_EPHEMERIS_POSITION_Z "positionZ-r17"
#define GNB_CONFIG_STRING_EPHEMERIS_VELOCITY_VX "velocityVX-r17"
#define GNB_CONFIG_STRING_EPHEMERIS_VELOCITY_VY "velocityVY-r17"
#define GNB_CONFIG_STRING_EPHEMERIS_VELOCITY_VZ "velocityVZ-r17"
#define GNB_CONFIG_STRING_TA_COMMON "ta-Common-r17"
#define CARRIERBANDWIDTH_OKVALUES {11,18,24,25,31,32,38,51,52,65,66,78,79,93,106,107,121,132,133,135,160,162,189,216,217,245,264,270,273}
...
...
@@ -232,6 +239,13 @@
{GNB_CONFIG_STRING_NROFUPLINKSYMBOLS2,NULL,0,.i64ptr=&scc->tdd_UL_DL_ConfigurationCommon->pattern2->nrofUplinkSymbols,.defint64val=-1,TYPE_INT64,0},\
{GNB_CONFIG_STRING_SSPBCHBLOCKPOWER,NULL,0,.i64ptr=&scc->ss_PBCH_BlockPower,.defint64val=20,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_CELLSPECIFICKOFFSET,NULL,0,.i64ptr=scc->ext2->ntn_Config_r17->cellSpecificKoffset_r17,.defint64val=0,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_EPHEMERIS_POSITION_X,NULL,0,.i64ptr=&scc->ext2->ntn_Config_r17->ephemerisInfo_r17->choice.positionVelocity_r17->positionX_r17,.defint64val=LONG_MAX,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_EPHEMERIS_POSITION_Y,NULL,0,.i64ptr=&scc->ext2->ntn_Config_r17->ephemerisInfo_r17->choice.positionVelocity_r17->positionY_r17,.defint64val=LONG_MAX,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_EPHEMERIS_POSITION_Z,NULL,0,.i64ptr=&scc->ext2->ntn_Config_r17->ephemerisInfo_r17->choice.positionVelocity_r17->positionZ_r17,.defint64val=LONG_MAX,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_EPHEMERIS_VELOCITY_VX,NULL,0,.i64ptr=&scc->ext2->ntn_Config_r17->ephemerisInfo_r17->choice.positionVelocity_r17->velocityVX_r17,.defint64val=LONG_MAX,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_EPHEMERIS_VELOCITY_VY,NULL,0,.i64ptr=&scc->ext2->ntn_Config_r17->ephemerisInfo_r17->choice.positionVelocity_r17->velocityVY_r17,.defint64val=LONG_MAX,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_EPHEMERIS_VELOCITY_VZ,NULL,0,.i64ptr=&scc->ext2->ntn_Config_r17->ephemerisInfo_r17->choice.positionVelocity_r17->velocityVZ_r17,.defint64val=LONG_MAX,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_TA_COMMON,NULL,0,.i64ptr=&scc->ext2->ntn_Config_r17->ta_Info_r17->ta_Common_r17,.defint64val=-1,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_MSG1SUBCARRIERSPACING,NULL,0,.i64ptr=scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg1_SubcarrierSpacing,.defintval=-1,TYPE_INT64,0}}
/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
...
...
openair2/GNB_APP/gnb_config.c
View file @
d994d537
...
...
@@ -216,6 +216,13 @@ void prepare_scc(NR_ServingCellConfigCommon_t *scc) {
scc
->
ext2
=
CALLOC
(
1
,
sizeof
(
*
scc
->
ext2
));
scc
->
ext2
->
ntn_Config_r17
=
CALLOC
(
1
,
sizeof
(
*
scc
->
ext2
->
ntn_Config_r17
));
scc
->
ext2
->
ntn_Config_r17
->
cellSpecificKoffset_r17
=
CALLOC
(
1
,
sizeof
(
*
scc
->
ext2
->
ntn_Config_r17
->
cellSpecificKoffset_r17
));
scc
->
ext2
->
ntn_Config_r17
->
ephemerisInfo_r17
=
CALLOC
(
1
,
sizeof
(
*
scc
->
ext2
->
ntn_Config_r17
->
ephemerisInfo_r17
));
scc
->
ext2
->
ntn_Config_r17
->
ta_Info_r17
=
CALLOC
(
1
,
sizeof
(
*
scc
->
ext2
->
ntn_Config_r17
->
ta_Info_r17
));
scc
->
ext2
->
ntn_Config_r17
->
ephemerisInfo_r17
->
present
=
NR_EphemerisInfo_r17_PR_positionVelocity_r17
;
scc
->
ext2
->
ntn_Config_r17
->
ephemerisInfo_r17
->
choice
.
positionVelocity_r17
=
CALLOC
(
1
,
sizeof
(
*
scc
->
ext2
->
ntn_Config_r17
->
ephemerisInfo_r17
->
choice
.
positionVelocity_r17
));
}
// Section 4.1 in 38.213
...
...
@@ -436,8 +443,27 @@ void fix_scc(NR_ServingCellConfigCommon_t *scc, uint64_t ssbmap)
AssertFatal
(
*
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
->
choice
.
setup
->
pucch_ResourceCommon
<
2
,
"pucch_ResourceConfig should be 0 or 1 for now
\n
"
);
if
(
*
scc
->
ext2
->
ntn_Config_r17
->
cellSpecificKoffset_r17
==
0
)
{
if
(
*
scc
->
ext2
->
ntn_Config_r17
->
cellSpecificKoffset_r17
==
0
)
{
free
(
scc
->
ext2
->
ntn_Config_r17
->
cellSpecificKoffset_r17
);
scc
->
ext2
->
ntn_Config_r17
->
cellSpecificKoffset_r17
=
NULL
;
}
if
(
scc
->
ext2
->
ntn_Config_r17
->
ta_Info_r17
->
ta_Common_r17
==
-
1
)
{
free
(
scc
->
ext2
->
ntn_Config_r17
->
ta_Info_r17
);
scc
->
ext2
->
ntn_Config_r17
->
ta_Info_r17
=
NULL
;
}
if
(
scc
->
ext2
->
ntn_Config_r17
->
ephemerisInfo_r17
->
choice
.
positionVelocity_r17
->
positionX_r17
==
LONG_MAX
&&
scc
->
ext2
->
ntn_Config_r17
->
ephemerisInfo_r17
->
choice
.
positionVelocity_r17
->
positionY_r17
==
LONG_MAX
&&
scc
->
ext2
->
ntn_Config_r17
->
ephemerisInfo_r17
->
choice
.
positionVelocity_r17
->
positionZ_r17
==
LONG_MAX
&&
scc
->
ext2
->
ntn_Config_r17
->
ephemerisInfo_r17
->
choice
.
positionVelocity_r17
->
velocityVX_r17
==
LONG_MAX
&&
scc
->
ext2
->
ntn_Config_r17
->
ephemerisInfo_r17
->
choice
.
positionVelocity_r17
->
velocityVY_r17
==
LONG_MAX
&&
scc
->
ext2
->
ntn_Config_r17
->
ephemerisInfo_r17
->
choice
.
positionVelocity_r17
->
velocityVZ_r17
==
LONG_MAX
)
{
free
(
scc
->
ext2
->
ntn_Config_r17
->
ephemerisInfo_r17
->
choice
.
positionVelocity_r17
);
free
(
scc
->
ext2
->
ntn_Config_r17
->
ephemerisInfo_r17
);
scc
->
ext2
->
ntn_Config_r17
->
ephemerisInfo_r17
=
NULL
;
}
if
(
!
scc
->
ext2
->
ntn_Config_r17
->
cellSpecificKoffset_r17
&&
!
scc
->
ext2
->
ntn_Config_r17
->
ta_Info_r17
&&
!
scc
->
ext2
->
ntn_Config_r17
->
ephemerisInfo_r17
)
{
free
(
scc
->
ext2
->
ntn_Config_r17
);
free
(
scc
->
ext2
);
scc
->
ext2
=
NULL
;
...
...
@@ -1447,9 +1473,11 @@ void RCconfig_nr_macrlc(configmodule_interface_t *cfg)
f1ap_served_cell_info_t
info
;
read_du_cell_info
(
cfg
,
NODE_IS_DU
(
node_type
),
&
gnb_id
,
&
gnb_du_id
,
&
name
,
&
info
,
1
);
if
(
get_softmodem_params
()
->
sa
)
if
(
get_softmodem_params
()
->
sa
)
{
nr_mac_configure_sib1
(
RC
.
nrmac
[
0
],
&
info
.
plmn
,
info
.
nr_cellid
,
*
info
.
tac
);
nr_mac_configure_sib19
(
RC
.
nrmac
[
0
]);
}
// read F1 Setup information from config and generated MIB/SIB1
// and store it at MAC for sending later
NR_BCCH_BCH_Message_t
*
mib
=
RC
.
nrmac
[
0
]
->
common_channels
[
0
].
mib
;
...
...
openair2/LAYER2/NR_MAC_gNB/config.c
View file @
d994d537
...
...
@@ -709,6 +709,17 @@ void nr_mac_configure_sib1(gNB_MAC_INST *nrmac, const f1ap_plmn_t *plmn, uint64_
AssertFatal
(
cc
->
sib1_bcch_length
>
0
,
"could not encode SIB1
\n
"
);
}
void
nr_mac_configure_sib19
(
gNB_MAC_INST
*
nrmac
)
{
AssertFatal
(
get_softmodem_params
()
->
sa
>
0
,
"error: SIB19 only applicable for SA
\n
"
);
NR_COMMON_channels_t
*
cc
=
&
nrmac
->
common_channels
[
0
];
NR_ServingCellConfigCommon_t
*
scc
=
cc
->
ServingCellConfigCommon
;
NR_BCCH_DL_SCH_Message_t
*
sib19
=
get_SIB19_NR
(
scc
);
cc
->
sib19
=
sib19
;
cc
->
sib19_bcch_length
=
encode_SIB19_NR
(
sib19
,
cc
->
sib19_bcch_pdu
,
sizeof
(
cc
->
sib19_bcch_pdu
));
AssertFatal
(
cc
->
sib19_bcch_length
>
0
,
"could not encode SIB19
\n
"
);
}
bool
nr_mac_add_test_ue
(
gNB_MAC_INST
*
nrmac
,
uint32_t
rnti
,
NR_CellGroupConfig_t
*
CellGroup
)
{
/* ideally, instead of this function, "users" of this function should call
...
...
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
View file @
d994d537
...
...
@@ -47,6 +47,7 @@ void nr_mac_send_f1_setup_req(void);
void
nr_mac_config_scc
(
gNB_MAC_INST
*
nrmac
,
NR_ServingCellConfigCommon_t
*
scc
,
const
nr_mac_config_t
*
mac_config
);
void
nr_mac_configure_sib1
(
gNB_MAC_INST
*
nrmac
,
const
f1ap_plmn_t
*
plmn
,
uint64_t
cellID
,
int
tac
);
void
nr_mac_configure_sib19
(
gNB_MAC_INST
*
nrmac
);
bool
nr_mac_add_test_ue
(
gNB_MAC_INST
*
nrmac
,
uint32_t
rnti
,
NR_CellGroupConfig_t
*
CellGroup
);
bool
nr_mac_prepare_ra_ue
(
gNB_MAC_INST
*
nrmac
,
uint32_t
rnti
,
NR_CellGroupConfig_t
*
CellGroup
);
...
...
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
d994d537
...
...
@@ -260,6 +260,7 @@ typedef struct {
frame_type_t
frame_type
;
NR_BCCH_BCH_Message_t
*
mib
;
NR_BCCH_DL_SCH_Message_t
*
sib1
;
NR_BCCH_DL_SCH_Message_t
*
sib19
;
NR_ServingCellConfigCommon_t
*
ServingCellConfigCommon
;
/// pre-configured ServingCellConfig that is default for every UE
NR_ServingCellConfig_t
*
pre_ServingCellConfig
;
...
...
@@ -268,6 +269,9 @@ typedef struct {
/// Outgoing BCCH pdu for PHY
uint8_t
sib1_bcch_pdu
[
NR_MAX_SIB_LENGTH
/
8
];
int
sib1_bcch_length
;
/// used for sib19 data
uint8_t
sib19_bcch_pdu
[
NR_MAX_SIB_LENGTH
/
8
];
int
sib19_bcch_length
;
/// Template for RA computations
NR_RA_t
ra
[
NR_NB_RA_PROC_MAX
];
/// VRB map for common channels
...
...
openair2/RRC/NR/nr_rrc_config.c
View file @
d994d537
...
...
@@ -2454,6 +2454,53 @@ int encode_SIB1_NR(NR_BCCH_DL_SCH_Message_t *sib1, uint8_t *buffer, int max_buff
return
(
enc_rval
.
encoded
+
7
)
/
8
;
}
NR_BCCH_DL_SCH_Message_t
*
get_SIB19_NR
(
const
NR_ServingCellConfigCommon_t
*
scc
)
{
NR_BCCH_DL_SCH_Message_t
*
sib_message
=
CALLOC
(
1
,
sizeof
(
NR_BCCH_DL_SCH_Message_t
));
sib_message
->
message
.
present
=
NR_BCCH_DL_SCH_MessageType_PR_c1
;
sib_message
->
message
.
choice
.
c1
=
CALLOC
(
1
,
sizeof
(
struct
NR_BCCH_DL_SCH_MessageType__c1
));
sib_message
->
message
.
choice
.
c1
->
present
=
NR_BCCH_DL_SCH_MessageType__c1_PR_systemInformation
;
sib_message
->
message
.
choice
.
c1
->
choice
.
systemInformation
=
CALLOC
(
1
,
sizeof
(
struct
NR_SystemInformation
));
struct
NR_SystemInformation
*
sib
=
sib_message
->
message
.
choice
.
c1
->
choice
.
systemInformation
;
sib
->
criticalExtensions
.
present
=
NR_SystemInformation__criticalExtensions_PR_systemInformation
;
sib
->
criticalExtensions
.
choice
.
systemInformation
=
CALLOC
(
1
,
sizeof
(
struct
NR_SystemInformation_IEs
));
struct
NR_SystemInformation_IEs
*
ies
=
sib
->
criticalExtensions
.
choice
.
systemInformation
;
SystemInformation_IEs__sib_TypeAndInfo__Member
*
sib19
=
NULL
;
sib19
=
CALLOC
(
1
,
sizeof
(
SystemInformation_IEs__sib_TypeAndInfo__Member
));
sib19
->
present
=
NR_SystemInformation_IEs__sib_TypeAndInfo__Member_PR_sib19_v1700
;
sib19
->
choice
.
sib19_v1700
=
CALLOC
(
1
,
sizeof
(
struct
NR_SIB19_r17
));
// use ntn-config from NR_ServingCellConfigCommon_t
const
int
copy_result
=
asn_copy
(
&
asn_DEF_NR_NTN_Config_r17
,
(
void
**
)
&
sib19
->
choice
.
sib19_v1700
->
ntn_Config_r17
,
scc
->
ext2
->
ntn_Config_r17
);
AssertFatal
(
copy_result
==
0
,
"Was unable to copy ntn_Config_r17 from scc to SIB19 structure
\n
"
);
asn1cSeqAdd
(
&
ies
->
sib_TypeAndInfo
.
list
,
sib19
);
if
(
LOG_DEBUGFLAG
(
DEBUG_ASN1
))
{
xer_fprint
(
stdout
,
&
asn_DEF_NR_BCCH_DL_SCH_Message
,
sib_message
);
}
return
sib_message
;
}
int
encode_SIB19_NR
(
NR_BCCH_DL_SCH_Message_t
*
sib19
,
uint8_t
*
buffer
,
int
max_buffer_size
)
{
asn_enc_rval_t
enc_rval
;
enc_rval
=
uper_encode_to_buffer
(
&
asn_DEF_NR_BCCH_DL_SCH_Message
,
NULL
,
sib19
,
buffer
,
150
);
AssertFatal
(
enc_rval
.
encoded
>
0
,
"ASN1 message encoding failed (%s, %lu)!
\n
"
,
enc_rval
.
failed_type
->
name
,
enc_rval
.
encoded
);
return
((
enc_rval
.
encoded
+
7
)
/
8
);
}
void
free_SIB19_NR
(
NR_BCCH_DL_SCH_Message_t
*
sib19
)
{
ASN_STRUCT_FREE
(
asn_DEF_NR_BCCH_DL_SCH_Message
,
sib19
);
}
static
NR_PhysicalCellGroupConfig_t
*
configure_phy_cellgroup
(
void
)
{
NR_PhysicalCellGroupConfig_t
*
physicalCellGroupConfig
=
calloc
(
1
,
sizeof
(
*
physicalCellGroupConfig
));
...
...
openair2/RRC/NR/nr_rrc_config.h
View file @
d994d537
...
...
@@ -74,6 +74,10 @@ NR_BCCH_DL_SCH_Message_t *get_SIB1_NR(const NR_ServingCellConfigCommon_t *scc,
void
free_SIB1_NR
(
NR_BCCH_DL_SCH_Message_t
*
sib1
);
int
encode_SIB1_NR
(
NR_BCCH_DL_SCH_Message_t
*
sib1
,
uint8_t
*
buffer
,
int
max_buffer_size
);
NR_BCCH_DL_SCH_Message_t
*
get_SIB19_NR
(
const
NR_ServingCellConfigCommon_t
*
scc
);
int
encode_SIB19_NR
(
NR_BCCH_DL_SCH_Message_t
*
sib19
,
uint8_t
*
buffer
,
int
max_buffer_size
);
void
free_SIB19_NR
(
NR_BCCH_DL_SCH_Message_t
*
sib19
);
NR_CellGroupConfig_t
*
get_initial_cellGroupConfig
(
int
uid
,
const
NR_ServingCellConfigCommon_t
*
scc
,
const
NR_ServingCellConfig_t
*
servingcellconfigdedicated
,
...
...
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