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
spbro
OpenXG-RAN
Commits
56f0b708
Commit
56f0b708
authored
Jul 29, 2023
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/NR_SL_RRC' into integration_2023_w30
parents
051fb056
1b986287
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
823 additions
and
0 deletions
+823
-0
CMakeLists.txt
CMakeLists.txt
+1
-0
openair2/RRC/NR_UE/rrc_UE.c
openair2/RRC/NR_UE/rrc_UE.c
+4
-0
openair2/RRC/NR_UE/rrc_proto.h
openair2/RRC/NR_UE/rrc_proto.h
+1
-0
openair2/RRC/NR_UE/rrc_sl_preconfig.c
openair2/RRC/NR_UE/rrc_sl_preconfig.c
+432
-0
openair2/RRC/NR_UE/sl_preconfig_paramvalues.h
openair2/RRC/NR_UE/sl_preconfig_paramvalues.h
+158
-0
targets/PROJECTS/NR-SIDELINK/CONF/sidelink_preconfig_1rxpool.conf
...PROJECTS/NR-SIDELINK/CONF/sidelink_preconfig_1rxpool.conf
+69
-0
targets/PROJECTS/NR-SIDELINK/CONF/sidelink_preconfig_1rxpool_1txpool.conf
.../NR-SIDELINK/CONF/sidelink_preconfig_1rxpool_1txpool.conf
+89
-0
targets/PROJECTS/NR-SIDELINK/CONF/sidelink_preconfig_1txpool.conf
...PROJECTS/NR-SIDELINK/CONF/sidelink_preconfig_1txpool.conf
+69
-0
No files found.
CMakeLists.txt
View file @
56f0b708
...
...
@@ -1303,6 +1303,7 @@ set(NR_L2_SRC_UE
${
NR_UE_RRC_DIR
}
/rrc_UE.c
${
NR_UE_RRC_DIR
}
/rrc_nsa.c
${
NR_UE_RRC_DIR
}
/rrc_timers_and_constants.c
${
NR_UE_RRC_DIR
}
/rrc_sl_preconfig.c
)
set
(
MAC_SRC
...
...
openair2/RRC/NR_UE/rrc_UE.c
View file @
56f0b708
...
...
@@ -451,6 +451,10 @@ NR_UE_RRC_INST_t* openair_rrc_top_init_ue_nr(char* uecap_file, char* rrc_config_
{
LOG_D
(
NR_RRC
,
"In NSA mode
\n
"
);
}
if
(
get_softmodem_params
()
->
sl_mode
)
{
configure_NR_SL_Preconfig
(
get_softmodem_params
()
->
sync_ref
);
}
}
else
{
NR_UE_rrc_inst
=
NULL
;
...
...
openair2/RRC/NR_UE/rrc_proto.h
View file @
56f0b708
...
...
@@ -173,6 +173,7 @@ void handle_rlf_sync(NR_UE_Timers_Constants_t *tac,
void
nr_rrc_handle_SetupRelease_RLF_TimersAndConstants
(
NR_UE_RRC_INST_t
*
rrc
,
struct
NR_SetupRelease_RLF_TimersAndConstants
*
rlf_TimersAndConstants
);
int
configure_NR_SL_Preconfig
(
int
sync_source
);
/** @}*/
#endif
openair2/RRC/NR_UE/rrc_sl_preconfig.c
0 → 100644
View file @
56f0b708
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#define RRC_SL_PRECONFIG
#define RRC_SL_PRECONFIG_C
#include "oai_asn1.h"
#include "NR_SL-PreconfigurationNR-r16.h"
#include "common/utils/LOG/log.h"
#include "sl_preconfig_paramvalues.h"
#include "common/config/config_userapi.h"
static
void
prepare_NR_SL_SyncConfig
(
NR_SL_SyncConfig_r16_t
*
sl_syncconfig
)
{
// Hysteris when evaluating SyncRef UE
sl_syncconfig
->
sl_SyncRefMinHyst_r16
=
NULL
;
// Hysteris when evaluating SyncRef UE
sl_syncconfig
->
sl_SyncRefDiffHyst_r16
=
NULL
;
// Filtering for SL RSRP
sl_syncconfig
->
sl_filterCoefficient_r16
=
NULL
;
// SSB Periodicity within 16 frames.
sl_syncconfig
->
sl_SSB_TimeAllocation1_r16
=
calloc
(
1
,
sizeof
(
NR_SL_SSB_TimeAllocation_r16_t
));
sl_syncconfig
->
sl_SSB_TimeAllocation1_r16
->
sl_NumSSB_WithinPeriod_r16
=
calloc
(
1
,
sizeof
(
long
));
sl_syncconfig
->
sl_SSB_TimeAllocation1_r16
->
sl_TimeOffsetSSB_r16
=
calloc
(
1
,
sizeof
(
long
));
sl_syncconfig
->
sl_SSB_TimeAllocation1_r16
->
sl_TimeInterval_r16
=
calloc
(
1
,
sizeof
(
long
));
sl_syncconfig
->
sl_SSB_TimeAllocation2_r16
=
NULL
;
sl_syncconfig
->
sl_SSB_TimeAllocation3_r16
=
NULL
;
//SLSS Id
sl_syncconfig
->
sl_SSID_r16
=
NULL
;
// Threshold to be used in coverage
sl_syncconfig
->
txParameters_r16
.
syncTxThreshIC_r16
=
NULL
;
// Threshold to be used when Out of coverage
sl_syncconfig
->
txParameters_r16
.
syncTxThreshOoC_r16
=
NULL
;
// Syncconfig is used when UE is synced to GNSS if set, else if UE is synced to eNB/gNB
sl_syncconfig
->
gnss_Sync_r16
=
calloc
(
1
,
sizeof
(
long
));
*
sl_syncconfig
->
gnss_Sync_r16
=
0
;
// GNSS
char
aprefix
[
MAX_OPTNAME_SIZE
*
2
+
8
];
paramdef_t
SL_SYNCCFGPARAMS
[]
=
SL_SYNCPARAMS_DESC
(
sl_syncconfig
);
paramlist_def_t
SL_SYNCFGParamList
=
{
SL_CONFIG_STRING_SL_SYNCCONFIG_LIST
,
NULL
,
0
};
sprintf
(
aprefix
,
"%s.[%i]"
,
SL_CONFIG_STRING_SL_PRECONFIGURATION
,
0
);
config_getlist
(
&
SL_SYNCFGParamList
,
NULL
,
0
,
aprefix
);
LOG_I
(
RRC
,
"NUM SL-SYNCCFG elem in cfg file:%d
\n
"
,
SL_SYNCFGParamList
.
numelt
);
sprintf
(
aprefix
,
"%s.[%i].%s.[%i]"
,
SL_CONFIG_STRING_SL_PRECONFIGURATION
,
0
,
SL_CONFIG_STRING_SL_SYNCCONFIG_LIST
,
0
);
config_get
(
SL_SYNCCFGPARAMS
,
sizeof
(
SL_SYNCCFGPARAMS
)
/
sizeof
(
paramdef_t
),
aprefix
);
}
static
void
prepare_NR_SL_ResourcePool
(
NR_SL_ResourcePool_r16_t
*
sl_res_pool
,
uint16_t
is_txpool
,
uint16_t
is_sl_syncsource
)
{
// PSCCH configuration
sl_res_pool
->
sl_PSCCH_Config_r16
=
calloc
(
1
,
sizeof
(
*
sl_res_pool
->
sl_PSCCH_Config_r16
));
sl_res_pool
->
sl_PSCCH_Config_r16
->
present
=
NR_SetupRelease_SL_PSCCH_Config_r16_PR_setup
;
sl_res_pool
->
sl_PSCCH_Config_r16
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
NR_SL_PSCCH_Config_r16_t
));
// Indicates number of symbols for PSCCH in a resource pool
sl_res_pool
->
sl_PSCCH_Config_r16
->
choice
.
setup
->
sl_TimeResourcePSCCH_r16
=
calloc
(
1
,
sizeof
(
long
));
// Indicates number of PRBs for PSCCH in a resource pool
sl_res_pool
->
sl_PSCCH_Config_r16
->
choice
.
setup
->
sl_FreqResourcePSCCH_r16
=
calloc
(
1
,
sizeof
(
long
));
// Inititation during PSCCH DMRS Sequence generation
sl_res_pool
->
sl_PSCCH_Config_r16
->
choice
.
setup
->
sl_DMRS_ScrambleID_r16
=
calloc
(
1
,
sizeof
(
long
));
*
sl_res_pool
->
sl_PSCCH_Config_r16
->
choice
.
setup
->
sl_DMRS_ScrambleID_r16
=
0
;
// num reserve bits used for first stage SCI
sl_res_pool
->
sl_PSCCH_Config_r16
->
choice
.
setup
->
sl_NumReservedBits_r16
=
calloc
(
1
,
sizeof
(
long
));
*
sl_res_pool
->
sl_PSCCH_Config_r16
->
choice
.
setup
->
sl_NumReservedBits_r16
=
2
;
//PSSCH Configuration
sl_res_pool
->
sl_PSSCH_Config_r16
=
calloc
(
1
,
sizeof
(
NR_SetupRelease_SL_PSSCH_Config_r16_t
));
sl_res_pool
->
sl_PSSCH_Config_r16
->
present
=
NR_SetupRelease_SL_PSSCH_Config_r16_PR_setup
;
sl_res_pool
->
sl_PSSCH_Config_r16
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
NR_SL_PSSCH_Config_r16_t
));
sl_res_pool
->
sl_PSSCH_Config_r16
->
choice
.
setup
->
sl_PSSCH_DMRS_TimePatternList_r16
=
calloc
(
1
,
sizeof
(
*
sl_res_pool
->
sl_PSSCH_Config_r16
->
choice
.
setup
->
sl_PSSCH_DMRS_TimePatternList_r16
));
for
(
int
i
=
0
;
i
<
3
;
i
++
)
{
long
*
p
=
calloc
(
1
,
sizeof
(
long
));
*
p
=
2
+
i
;
// valid values: 2..4
ASN_SEQUENCE_ADD
(
&
sl_res_pool
->
sl_PSSCH_Config_r16
->
choice
.
setup
->
sl_PSSCH_DMRS_TimePatternList_r16
->
list
,
p
);
}
//PSFCH configuration
sl_res_pool
->
sl_PSFCH_Config_r16
=
NULL
;
// indicates allowed sync sources which are allowed to use this resource pool
sl_res_pool
->
sl_SyncAllowed_r16
=
calloc
(
1
,
sizeof
(
NR_SL_SyncAllowed_r16_t
));
//configured resources can be used if UE is directly/indirectly synced to network.
sl_res_pool
->
sl_SyncAllowed_r16
->
gnbEnb_Sync_r16
=
NULL
;
//configured resources can be used if UE is directly/indirectly synced to GNSS.
sl_res_pool
->
sl_SyncAllowed_r16
->
gnss_Sync_r16
=
calloc
(
1
,
sizeof
(
long
));
*
sl_res_pool
->
sl_SyncAllowed_r16
->
gnss_Sync_r16
=
NR_SL_SyncAllowed_r16__gnss_Sync_r16_true
;
//configured resources can be used if UE is directly/indirectly synced to SYNC REF UE.
sl_res_pool
->
sl_SyncAllowed_r16
->
ue_Sync_r16
=
calloc
(
1
,
sizeof
(
long
));
*
sl_res_pool
->
sl_SyncAllowed_r16
->
ue_Sync_r16
=
NR_SL_SyncAllowed_r16__ue_Sync_r16_true
;
//Min freq domain resources used for resource sensing. Size of Subchannels
sl_res_pool
->
sl_SubchannelSize_r16
=
calloc
(
1
,
sizeof
(
long
));
sl_res_pool
->
dummy
=
NULL
;
// lowest RB index of lowest subch in this resource pool
sl_res_pool
->
sl_StartRB_Subchannel_r16
=
calloc
(
1
,
sizeof
(
long
));
//number of subchannels in this res pool. contiguous PRBs
sl_res_pool
->
sl_NumSubchannel_r16
=
calloc
(
1
,
sizeof
(
long
));
// 64QAM table is default. in case other MCS tables needs tobe used.
sl_res_pool
->
sl_Additional_MCS_Table_r16
=
NULL
;
sl_res_pool
->
sl_ThreshS_RSSI_CBR_r16
=
NULL
;
sl_res_pool
->
sl_TimeWindowSizeCBR_r16
=
NULL
;
sl_res_pool
->
sl_TimeWindowSizeCR_r16
=
NULL
;
sl_res_pool
->
sl_PTRS_Config_r16
=
NULL
;
sl_res_pool
->
sl_UE_SelectedConfigRP_r16
=
NULL
;
sl_res_pool
->
sl_RxParametersNcell_r16
=
NULL
;
sl_res_pool
->
sl_ZoneConfigMCR_List_r16
=
NULL
;
sl_res_pool
->
sl_FilterCoefficient_r16
=
NULL
;
//number of contiguous PRBS in this res pool.
sl_res_pool
->
sl_RB_Number_r16
=
calloc
(
1
,
sizeof
(
long
));
sl_res_pool
->
sl_PreemptionEnable_r16
=
NULL
;
sl_res_pool
->
sl_PriorityThreshold_UL_URLLC_r16
=
NULL
;
sl_res_pool
->
sl_PriorityThreshold_r16
=
NULL
;
sl_res_pool
->
sl_X_Overhead_r16
=
NULL
;
sl_res_pool
->
sl_PowerControl_r16
=
NULL
;
sl_res_pool
->
sl_TxPercentageList_r16
=
NULL
;
sl_res_pool
->
sl_MinMaxMCS_List_r16
=
NULL
;
sl_res_pool
->
ext1
=
calloc
(
1
,
sizeof
(
*
sl_res_pool
->
ext1
));
sl_res_pool
->
ext1
->
sl_TimeResource_r16
=
calloc
(
1
,
sizeof
(
*
sl_res_pool
->
ext1
->
sl_TimeResource_r16
));
sl_res_pool
->
ext1
->
sl_TimeResource_r16
->
size
=
8
;
sl_res_pool
->
ext1
->
sl_TimeResource_r16
->
bits_unused
=
4
;
sl_res_pool
->
ext1
->
sl_TimeResource_r16
->
buf
=
calloc
(
sl_res_pool
->
ext1
->
sl_TimeResource_r16
->
size
,
sizeof
(
uint8_t
));
// EX: BITMAP 10101010.. indicating every alternating slot supported for sidelink
for
(
int
i
=
0
;
i
<
sl_res_pool
->
ext1
->
sl_TimeResource_r16
->
size
;
i
++
)
{
if
(
is_txpool
)
{
sl_res_pool
->
ext1
->
sl_TimeResource_r16
->
buf
[
i
]
=
(
is_sl_syncsource
)
?
0xAA
//0x88;//0xAA;
:
0x55
;
//0x11;//0x55;
}
else
{
sl_res_pool
->
ext1
->
sl_TimeResource_r16
->
buf
[
i
]
=
(
is_sl_syncsource
)
?
0x55
//0x88;//0xAA;
:
0xAA
;
//0x11;//0x55;
}
}
// mask out unused bits
sl_res_pool
->
ext1
->
sl_TimeResource_r16
->
buf
[
sl_res_pool
->
ext1
->
sl_TimeResource_r16
->
size
-
1
]
&=
(
0
-
(
1
<<
(
sl_res_pool
->
ext1
->
sl_TimeResource_r16
->
bits_unused
)));
char
aprefix
[
MAX_OPTNAME_SIZE
*
2
+
8
];
paramdef_t
SL_POOLPARAMS
[]
=
SL_RESPOOLPARAMS_DESC
(
sl_res_pool
);
if
(
is_txpool
)
sprintf
(
aprefix
,
"%s.[%i].%s.[%i]"
,
SL_CONFIG_STRING_SL_PRECONFIGURATION
,
0
,
SL_CONFIG_STRING_SL_TX_RPOOL_LIST
,
0
);
else
sprintf
(
aprefix
,
"%s.[%i].%s.[%i]"
,
SL_CONFIG_STRING_SL_PRECONFIGURATION
,
0
,
SL_CONFIG_STRING_SL_RX_RPOOL_LIST
,
0
);
config_get
(
SL_POOLPARAMS
,
sizeof
(
SL_POOLPARAMS
)
/
sizeof
(
paramdef_t
),
aprefix
);
}
static
void
prepare_NR_SL_BWPConfigCommon
(
NR_SL_BWP_ConfigCommon_r16_t
*
sl_bwp
,
uint16_t
num_tx_pools
,
uint16_t
num_rx_pools
,
uint16_t
sl_syncsource
)
{
sl_bwp
->
sl_BWP_Generic_r16
=
calloc
(
1
,
sizeof
(
NR_SL_BWP_Generic_r16_t
));
sl_bwp
->
sl_BWP_Generic_r16
->
sl_BWP_r16
=
calloc
(
1
,
sizeof
(
NR_BWP_t
));
// if Cyclicprefix is NULL, then default value Normal cyclic prefix is configured. else EXT CP.
sl_bwp
->
sl_BWP_Generic_r16
->
sl_BWP_r16
->
cyclicPrefix
=
NULL
;
// Value can be between symbols 7 to 14
sl_bwp
->
sl_BWP_Generic_r16
->
sl_LengthSymbols_r16
=
calloc
(
1
,
sizeof
(
long
));
// Value can be between symbols 0 to 7
sl_bwp
->
sl_BWP_Generic_r16
->
sl_StartSymbol_r16
=
calloc
(
1
,
sizeof
(
long
));
sl_bwp
->
sl_BWP_Generic_r16
->
sl_PSBCH_Config_r16
=
calloc
(
1
,
sizeof
(
NR_SL_PSBCH_Config_r16_t
));
// PSBCH CONFIG contains PO and alpha for PSBCH powercontrol.
sl_bwp
->
sl_BWP_Generic_r16
->
sl_PSBCH_Config_r16
->
present
=
NR_SetupRelease_SL_PSBCH_Config_r16_PR_release
;
sl_bwp
->
sl_BWP_Generic_r16
->
sl_TxDirectCurrentLocation_r16
=
NULL
;
char
aprefix
[
MAX_OPTNAME_SIZE
*
2
+
8
];
paramdef_t
SL_BWPPARAMS
[]
=
SL_BWPPARAMS_DESC
(
sl_bwp
);
paramlist_def_t
SL_BWPParamList
=
{
SL_CONFIG_STRING_SL_BWP_LIST
,
NULL
,
0
};
sprintf
(
aprefix
,
"%s.[%i]"
,
SL_CONFIG_STRING_SL_PRECONFIGURATION
,
0
);
config_getlist
(
&
SL_BWPParamList
,
NULL
,
0
,
aprefix
);
LOG_I
(
RRC
,
"NUM SL-BWP elem in cfg file:%d
\n
"
,
SL_BWPParamList
.
numelt
);
sprintf
(
aprefix
,
"%s.[%i].%s.[%i]"
,
SL_CONFIG_STRING_SL_PRECONFIGURATION
,
0
,
SL_CONFIG_STRING_SL_BWP_LIST
,
0
);
config_get
(
SL_BWPPARAMS
,
sizeof
(
SL_BWPPARAMS
)
/
sizeof
(
paramdef_t
),
aprefix
);
sl_bwp
->
sl_BWP_PoolConfigCommon_r16
=
calloc
(
1
,
sizeof
(
NR_SL_BWP_PoolConfigCommon_r16_t
));
paramlist_def_t
SL_RxPoolParamList
=
{
SL_CONFIG_STRING_SL_RX_RPOOL_LIST
,
NULL
,
0
};
sprintf
(
aprefix
,
"%s.[%i]"
,
SL_CONFIG_STRING_SL_PRECONFIGURATION
,
0
);
config_getlist
(
&
SL_RxPoolParamList
,
NULL
,
0
,
aprefix
);
LOG_I
(
RRC
,
"NUM Rx RPOOLs in cfg file:%d
\n
"
,
SL_RxPoolParamList
.
numelt
);
AssertFatal
(
SL_RxPoolParamList
.
numelt
<=
1
&&
num_rx_pools
<=
1
,
"Only Max 1 RX Respool Supported now
\n
"
);
if
(
num_rx_pools
||
SL_RxPoolParamList
.
numelt
)
{
// Receiving resource pool.
NR_SL_ResourcePool_r16_t
*
respool
=
calloc
(
1
,
sizeof
(
*
respool
));
sl_bwp
->
sl_BWP_PoolConfigCommon_r16
->
sl_RxPool_r16
=
calloc
(
1
,
sizeof
(
*
sl_bwp
->
sl_BWP_PoolConfigCommon_r16
->
sl_RxPool_r16
));
ASN_SEQUENCE_ADD
(
&
sl_bwp
->
sl_BWP_PoolConfigCommon_r16
->
sl_RxPool_r16
->
list
,
respool
);
// Fill RX resource pool
prepare_NR_SL_ResourcePool
(
sl_bwp
->
sl_BWP_PoolConfigCommon_r16
->
sl_RxPool_r16
->
list
.
array
[
0
],
0
,
sl_syncsource
);
}
else
sl_bwp
->
sl_BWP_PoolConfigCommon_r16
->
sl_RxPool_r16
=
NULL
;
paramlist_def_t
SL_TxPoolParamList
=
{
SL_CONFIG_STRING_SL_TX_RPOOL_LIST
,
NULL
,
0
};
sprintf
(
aprefix
,
"%s.[%i]"
,
SL_CONFIG_STRING_SL_PRECONFIGURATION
,
0
);
config_getlist
(
&
SL_TxPoolParamList
,
NULL
,
0
,
aprefix
);
LOG_I
(
RRC
,
"NUM Tx RPOOL in cfg file:%d
\n
"
,
SL_TxPoolParamList
.
numelt
);
AssertFatal
(
SL_TxPoolParamList
.
numelt
<=
1
&&
num_tx_pools
<=
1
,
"Only Max 1 TX Respool Supported now
\n
"
);
if
(
num_tx_pools
||
SL_TxPoolParamList
.
numelt
)
{
//resource pool(s) to transmit NR SL
NR_SL_ResourcePoolConfig_r16_t
*
respoolcfg
=
calloc
(
1
,
sizeof
(
*
respoolcfg
));
sl_bwp
->
sl_BWP_PoolConfigCommon_r16
->
sl_TxPoolSelectedNormal_r16
=
calloc
(
1
,
sizeof
(
*
sl_bwp
->
sl_BWP_PoolConfigCommon_r16
->
sl_TxPoolSelectedNormal_r16
));
ASN_SEQUENCE_ADD
(
&
sl_bwp
->
sl_BWP_PoolConfigCommon_r16
->
sl_TxPoolSelectedNormal_r16
->
list
,
respoolcfg
);
sl_bwp
->
sl_BWP_PoolConfigCommon_r16
->
sl_TxPoolSelectedNormal_r16
->
list
.
array
[
0
]
->
sl_ResourcePoolID_r16
=
0
;
sl_bwp
->
sl_BWP_PoolConfigCommon_r16
->
sl_TxPoolSelectedNormal_r16
->
list
.
array
[
0
]
->
sl_ResourcePool_r16
=
calloc
(
1
,
sizeof
(
NR_SL_ResourcePool_r16_t
));
// Fill tx resource pool
prepare_NR_SL_ResourcePool
(
sl_bwp
->
sl_BWP_PoolConfigCommon_r16
->
sl_TxPoolSelectedNormal_r16
->
list
.
array
[
0
]
->
sl_ResourcePool_r16
,
1
,
sl_syncsource
);
}
else
sl_bwp
->
sl_BWP_PoolConfigCommon_r16
->
sl_TxPoolSelectedNormal_r16
=
NULL
;
sl_bwp
->
sl_BWP_PoolConfigCommon_r16
->
sl_TxPoolExceptional_r16
=
NULL
;
}
static
void
prepare_NR_SL_FreqConfigCommon
(
NR_SL_FreqConfigCommon_r16_t
*
sl_fcfg
,
uint16_t
num_tx_pools
,
uint16_t
num_rx_pools
,
uint16_t
sl_syncsource
)
{
// Sub carrier spacing used on this frequency configured.
NR_SCS_SpecificCarrier_t
*
scs_specific
=
calloc
(
1
,
sizeof
(
*
scs_specific
));
ASN_SEQUENCE_ADD
(
&
sl_fcfg
->
sl_SCS_SpecificCarrierList_r16
.
list
,
scs_specific
);
// NR bands for Sidelink n47, n38.
// N47band - 5855Mhz - 5925Mhz
//sl_fcfg->sl_AbsoluteFrequencyPointA_r16 = 792000; //freq 5880Mhz
//SL SSB chosen to be located from RB10 to RB21. points to the middle of the SSB block.
//SSB location should be within Sidelink BWP
//792000 + 10*12*2 + 66*2. channel raster is 15Khz for band47
sl_fcfg
->
sl_AbsoluteFrequencySSB_r16
=
calloc
(
1
,
sizeof
(
NR_ARFCN_ValueNR_t
));
//NR SL transmission with a 7.5 Khz shift to the LTE raster. if absent, freq shift is disabled.
//Required if carrier freq configured for NR SL shared by LTE SL
sl_fcfg
->
frequencyShift7p5khzSL_r16
=
NULL
;
//NR SL transmission with valueN*5Khz shift to LTE raster.
sl_fcfg
->
valueN_r16
=
0
;
char
aprefix
[
MAX_OPTNAME_SIZE
*
2
+
8
];
paramdef_t
SL_FCCPARAMS
[]
=
SL_FCCPARAMS_DESC
(
sl_fcfg
);
paramlist_def_t
SL_FCCParamList
=
{
SL_CONFIG_STRING_SL_FCC_LIST
,
NULL
,
0
};
sprintf
(
aprefix
,
"%s.[%i]"
,
SL_CONFIG_STRING_SL_PRECONFIGURATION
,
0
);
config_getlist
(
&
SL_FCCParamList
,
NULL
,
0
,
aprefix
);
LOG_I
(
RRC
,
"NUM SL-FCC elem in cfg file:%d
\n
"
,
SL_FCCParamList
.
numelt
);
sprintf
(
aprefix
,
"%s.[%i].%s.[%i]"
,
SL_CONFIG_STRING_SL_PRECONFIGURATION
,
0
,
SL_CONFIG_STRING_SL_FCC_LIST
,
0
);
config_get
(
SL_FCCPARAMS
,
sizeof
(
SL_FCCPARAMS
)
/
sizeof
(
paramdef_t
),
aprefix
);
// Sidelink BWP configuration.
// In REL16, 17 SUPPORTS only 1 SIDELINK Bandwidth part
NR_SL_BWP_ConfigCommon_r16_t
*
bwpcfgcommon
=
calloc
(
1
,
sizeof
(
*
bwpcfgcommon
));
sl_fcfg
->
sl_BWP_List_r16
=
calloc
(
1
,
sizeof
(
*
sl_fcfg
->
sl_BWP_List_r16
));
ASN_SEQUENCE_ADD
(
&
sl_fcfg
->
sl_BWP_List_r16
->
list
,
bwpcfgcommon
);
prepare_NR_SL_BWPConfigCommon
(
sl_fcfg
->
sl_BWP_List_r16
->
list
.
array
[
0
],
num_tx_pools
,
num_rx_pools
,
sl_syncsource
);
// sync prio between GNSS and gNB/eNB
sl_fcfg
->
sl_SyncPriority_r16
=
calloc
(
1
,
sizeof
(
long
));
*
sl_fcfg
->
sl_SyncPriority_r16
=
0
;
// Set to GNSS
// If TRUE/1 - Network can be selected as sync source directly/indirectly in case syncprio = GNSS.
sl_fcfg
->
sl_NbAsSync_r16
=
calloc
(
1
,
sizeof
(
long
));
*
sl_fcfg
->
sl_NbAsSync_r16
=
1
;
// config info related to rx and tx of SL SYNC SIGNALS (SLSS)
NR_SL_SyncConfig_r16_t
*
synccfg
=
calloc
(
1
,
sizeof
(
*
synccfg
));
sl_fcfg
->
sl_SyncConfigList_r16
=
calloc
(
1
,
sizeof
(
*
sl_fcfg
->
sl_SyncConfigList_r16
));
ASN_SEQUENCE_ADD
(
&
sl_fcfg
->
sl_SyncConfigList_r16
->
list
,
synccfg
);
prepare_NR_SL_SyncConfig
(
sl_fcfg
->
sl_SyncConfigList_r16
->
list
.
array
[
0
]);
}
NR_SL_PreconfigurationNR_r16_t
*
prepare_NR_SL_PRECONFIGURATION
(
uint16_t
num_tx_pools
,
uint16_t
num_rx_pools
,
uint16_t
sl_syncsource
)
{
NR_SL_PreconfigurationNR_r16_t
*
sl_preconfiguration
=
CALLOC
(
1
,
sizeof
(
NR_SL_PreconfigurationNR_r16_t
));
NR_SidelinkPreconfigNR_r16_t
*
sl_preconfig
=
&
sl_preconfiguration
->
sidelinkPreconfigNR_r16
;
//FILL in Frequency config common
NR_SL_FreqConfigCommon_r16_t
*
freqcfgcommon
=
calloc
(
1
,
sizeof
(
*
freqcfgcommon
));
sl_preconfig
->
sl_PreconfigFreqInfoList_r16
=
calloc
(
1
,
sizeof
(
*
sl_preconfig
->
sl_PreconfigFreqInfoList_r16
));
//Supported only 1 FREQs for NR SL communication.
ASN_SEQUENCE_ADD
(
&
sl_preconfig
->
sl_PreconfigFreqInfoList_r16
->
list
,
freqcfgcommon
);
prepare_NR_SL_FreqConfigCommon
(
sl_preconfig
->
sl_PreconfigFreqInfoList_r16
->
list
.
array
[
0
],
num_tx_pools
,
num_rx_pools
,
sl_syncsource
);
// NR Frequency list
sl_preconfig
->
sl_PreconfigNR_AnchorCarrierFreqList_r16
=
NULL
;
// EUTRA Frequency list
sl_preconfig
->
sl_PreconfigEUTRA_AnchorCarrierFreqList_r16
=
NULL
;
// NR sidelink radio bearer(s) configuration(s)
sl_preconfig
->
sl_RadioBearerPreConfigList_r16
=
NULL
;
// fill later
// NR sidelink RLC bearer(s) configuration(s)
sl_preconfig
->
sl_RLC_BearerPreConfigList_r16
=
NULL
;
// fill later
//Measurement and reporting configuration
sl_preconfig
->
sl_MeasPreConfig_r16
=
NULL
;
//DFN timing offset used if GNSS is used as sync source.
//1-.001ms, 2 - .002ms so on. value 0 if absent.
sl_preconfig
->
sl_OffsetDFN_r16
=
NULL
;
// t400 started upon txn of RRCreconfSidelink.
sl_preconfig
->
t400_r16
=
NULL
;
//Max num consecutive HARQ DTX before triggering SL RLF.
sl_preconfig
->
sl_MaxNumConsecutiveDTX_r16
=
NULL
;
//Priority of SSB transmission and reception. used in comparison to UL rxns/txns
sl_preconfig
->
sl_SSB_PriorityNR_r16
=
NULL
;
//Contains TDD ULDL confiuguration to be used by the sync source UE.
//Currently set to the default used in OAI 5G. Changes TBD..
//For the UE with sync reference as another UE, TDD ULDL config is determined from SL-MIB
sl_preconfig
->
sl_PreconfigGeneral_r16
=
calloc
(
1
,
sizeof
(
NR_SL_PreconfigGeneral_r16_t
));
sl_preconfig
->
sl_PreconfigGeneral_r16
->
sl_TDD_Configuration_r16
=
calloc
(
1
,
sizeof
(
NR_TDD_UL_DL_ConfigCommon_t
));
NR_TDD_UL_DL_ConfigCommon_t
*
tdd_uldl_cfg
=
sl_preconfig
->
sl_PreconfigGeneral_r16
->
sl_TDD_Configuration_r16
;
tdd_uldl_cfg
->
pattern1
.
ext1
=
NULL
;
tdd_uldl_cfg
->
pattern2
=
NULL
;
char
aprefix
[
MAX_OPTNAME_SIZE
*
2
+
8
];
sprintf
(
aprefix
,
"%s.[%i]"
,
SL_CONFIG_STRING_SL_PRECONFIGURATION
,
0
);
paramdef_t
SLTDDCFG_PARAMS
[]
=
SL_TDDCONFIGPARAMS_DESC
(
tdd_uldl_cfg
);
config_get
(
SLTDDCFG_PARAMS
,
sizeof
(
SLTDDCFG_PARAMS
)
/
sizeof
(
paramdef_t
),
aprefix
);
NR_SL_FreqConfigCommon_r16_t
*
fcc
=
sl_preconfig
->
sl_PreconfigFreqInfoList_r16
->
list
.
array
[
0
];
tdd_uldl_cfg
->
referenceSubcarrierSpacing
=
fcc
->
sl_SCS_SpecificCarrierList_r16
.
list
.
array
[
0
]
->
subcarrierSpacing
;
NR_SL_BWP_ConfigCommon_r16_t
*
sl_bwp
=
fcc
->
sl_BWP_List_r16
->
list
.
array
[
0
];
sl_bwp
->
sl_BWP_Generic_r16
->
sl_BWP_r16
->
subcarrierSpacing
=
fcc
->
sl_SCS_SpecificCarrierList_r16
.
list
.
array
[
0
]
->
subcarrierSpacing
;
// Configurations used for UE autonomous resource selection
sl_preconfig
->
sl_UE_SelectedPreConfig_r16
=
NULL
;
// indicates if CSI reporting supported in SL unicast.
sl_preconfig
->
sl_CSI_Acquisition_r16
=
NULL
;
// ROHC profiles for NR SL
sl_preconfig
->
sl_RoHC_Profiles_r16
=
NULL
;
// MaxCID value for PDCP as specified in 38.323
sl_preconfig
->
sl_MaxCID_r16
=
NULL
;
return
sl_preconfiguration
;
}
int
configure_NR_SL_Preconfig
(
int
sync_source
)
{
NR_SL_PreconfigurationNR_r16_t
*
sl_preconfig
=
NULL
;
int
num_txpools
=
0
,
num_rxpools
=
0
;
if
(
sync_source
)
{
//SL-Preconfiguration with 1 txpool, 0 rxpool if UE is a syncsource
num_txpools
=
1
;
sl_preconfig
=
prepare_NR_SL_PRECONFIGURATION
(
num_txpools
,
num_rxpools
,
sync_source
);
if
(
LOG_DEBUGFLAG
(
DEBUG_ASN1
))
{
xer_fprint
(
stdout
,
&
asn_DEF_NR_SL_PreconfigurationNR_r16
,
sl_preconfig
);
}
}
else
{
//SL-Preconfiguration with 0 txpool, 1 rxpool if UE is not a syncsource
num_rxpools
=
1
;
sl_preconfig
=
prepare_NR_SL_PRECONFIGURATION
(
num_txpools
,
num_rxpools
,
sync_source
);
if
(
LOG_DEBUGFLAG
(
DEBUG_ASN1
))
{
xer_fprint
(
stdout
,
&
asn_DEF_NR_SL_PreconfigurationNR_r16
,
sl_preconfig
);
}
}
ASN_STRUCT_FREE
(
asn_DEF_NR_SL_PreconfigurationNR_r16
,
sl_preconfig
);
sl_preconfig
=
NULL
;
//END.......
return
0
;
}
openair2/RRC/NR_UE/sl_preconfig_paramvalues.h
0 → 100644
View file @
56f0b708
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#ifndef __SL_PRECONFIG_PARAMSVALUES__H__
#define __SL_PRECONFIG_PARAMSVALUES__H__
#include "NR_SL-PreconfigurationNR-r16.h"
#include "common/config/config_userapi.h"
#define SL_CONFIG_STRING_SL_PRECONFIGURATION "SIDELINK_PRECONFIGURATION"
/* Sidelink Frequency common configuration in SL-Preconfig */
#define SL_CONFIG_STRING_SL_FCC_LIST "sl_FrequencyCommonConfig"
#define SL_CONFIG_STRING_SLOFFSETTOCARRIER "sl_offstToCarrier"
#define SL_CONFIG_STRING_FCC_SUBCARRIERSPACING "sl_subcarrierSpacing"
#define SL_CONFIG_STRING_SLCARRIERBANDWIDTH "sl_carrierBandwidth"
#define SL_CONFIG_STRING_SLABSOLUTEFREQUENCYSSB "sl_absoluteFrequencySSB"
#define SL_CONFIG_STRING_SLABSOLUEFREQUENCYPOINTA "sl_absoluteFrequencyPointA"
// Sidelink TDD ULDL configuration parameters in SL-Preconfig
#define SL_CONFIG_STRING_DLULTRANSMISSIONPERIODICITY "sl_dl_UL_TransmissionPeriodicity"
#define SL_CONFIG_STRING_NROFDOWNLINKSLOTS "sl_nrofDownlinkSlots"
#define SL_CONFIG_STRING_NROFDOWNLINKSYMBOLS "sl_nrofDownlinkSymbols"
#define SL_CONFIG_STRING_NROFUPLINKSLOTS "sl_nrofUplinkSlots"
#define SL_CONFIG_STRING_NROFUPLINKSYMBOLS "sl_nrofUplinkSymbols"
// Sidelink sync config parameters in SL-Preconfig.
// 3 sets possible per sync config list entry
#define SL_CONFIG_STRING_SL_SYNCCONFIG_LIST "sl_syncCfg"
#define SL_CONFIG_STRING_SL_NUMSSB_WITHINPERIOD_0 "sl_NumSSB_WithinPeriod_0"
#define SL_CONFIG_STRING_SL_TIMEOFFSET_SSB_0 "sl_TimeOffsetSSB_0"
#define SL_CONFIG_STRING_SL_TIMEINTERVAL_0 "sl_TimeInterval_0"
#define SL_CONFIG_STRING_SL_NUMSSB_WITHINPERIOD_1 "sl_NumSSB_WithinPeriod_1"
#define SL_CONFIG_STRING_SL_TIMEOFFSET_SSB_1 "sl_TimeOffsetSSB_1"
#define SL_CONFIG_STRING_SL_TIMEINTERVAL_1 "sl_TimeInterval_1"
#define SL_CONFIG_STRING_SL_NUMSSB_WITHINPERIOD_2 "sl_NumSSB_WithinPeriod_2"
#define SL_CONFIG_STRING_SL_TIMEOFFSET_SSB_2 "sl_TimeOffsetSSB_2"
#define SL_CONFIG_STRING_SL_TIMEINTERVAL_2 "sl_TimeInterval_2"
/*Sidelink Bandwidth related parameters in SL-Preconfig */
#define SL_CONFIG_STRING_SL_BWP_LIST "sl_BWP"
#define SL_CONFIG_STRING_SL_BWP_START_AND_SIZE "sl_locationAndBandwidth"
#define SL_CONFIG_STRING_SL_BWP_NUM_SYMBOLS "sl_LengthSymbols"
#define SL_CONFIG_STRING_SL_BWP_START_SYMBOL "sl_StartSymbol"
/*Sidelink Resource pool related parameters in SL-Preconfig */
#define SL_CONFIG_STRING_SL_RX_RPOOL_LIST "sl_RxResPools"
#define SL_CONFIG_STRING_SL_TX_RPOOL_LIST "sl_TxResPools"
#define SL_CONFIG_STRING_RESPOOL_PSCCH_NUMSYM "sl_TimeResourcePSCCH"
#define SL_CONFIG_STRING_RESPOOL_PSCCH_NUMRBS "sl_FreqResourcePSCCH"
#define SL_CONFIG_STRING_RESPOOL_SUBCH_SIZE_IN_RBS "sl_SubchannelSize"
#define SL_CONFIG_STRING_RESPOOL_SUBCH_START_RB "sl_StartRB_Subchannel"
#define SL_CONFIG_STRING_RESPOOL_NUM_RBS "sl_RB_Number"
#define SL_CONFIG_STRING_RESPOOL_NUM_SUBCHS "sl_NumSubchannel"
/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* Sidelink Frequency common Cell Config parameters */
/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* Please refer to 3GPP SPEC 38.331 (RRC Specification) for details about these parameters
sl_AbsoluteFrequencyPointA_r16 - ARFCN of the lowest subcarrier for sidelink operation
sl_AbsoluteFrequencySSB_r16 - ARFCN of the center RE of sidelink SSB of length 11 RBs
*/
#define SL_FCCPARAMS_DESC(sl_fcc) { \
{SL_CONFIG_STRING_SLOFFSETTOCARRIER,NULL,0,.i64ptr=&sl_fcc->sl_SCS_SpecificCarrierList_r16.list.array[0]->offsetToCarrier,.defint64val=0,TYPE_INT64,0}, \
{SL_CONFIG_STRING_FCC_SUBCARRIERSPACING,NULL,0,.i64ptr=&sl_fcc->sl_SCS_SpecificCarrierList_r16.list.array[0]->subcarrierSpacing,.defint64val=NR_SubcarrierSpacing_kHz30,TYPE_INT64,0},\
{SL_CONFIG_STRING_SLCARRIERBANDWIDTH,NULL,0,.i64ptr=&sl_fcc->sl_SCS_SpecificCarrierList_r16.list.array[0]->carrierBandwidth,.defint64val=106,TYPE_INT64,0}, \
{SL_CONFIG_STRING_SLABSOLUEFREQUENCYPOINTA,NULL,0,.i64ptr=&sl_fcc->sl_AbsoluteFrequencyPointA_r16,.defint64val=792000,TYPE_INT64,0},\
{SL_CONFIG_STRING_SLABSOLUTEFREQUENCYSSB,NULL,0,.i64ptr=sl_fcc->sl_AbsoluteFrequencySSB_r16,.defint64val=792372,TYPE_INT64,0}}
/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* Sidelink TDD ULDL Config parameters */
/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* Please refer to 3GPP SPEC 38.331 (RRC Specification) for details about these parameters
TDD ul dl configuration used for sidelink operation set in Sidelink Preconfiguration IE
*/
#define SL_TDDCONFIGPARAMS_DESC(sl_tdd_ul_dl_cfg) { \
{SL_CONFIG_STRING_DLULTRANSMISSIONPERIODICITY,NULL,0,.i64ptr=&sl_tdd_ul_dl_cfg->pattern1.dl_UL_TransmissionPeriodicity,.defint64val=6,TYPE_INT64,0}, \
{SL_CONFIG_STRING_NROFDOWNLINKSLOTS,NULL,0,.i64ptr=&sl_tdd_ul_dl_cfg->pattern1.nrofDownlinkSlots,.defint64val=7,TYPE_INT64,0},\
{SL_CONFIG_STRING_NROFDOWNLINKSYMBOLS,NULL,0,.i64ptr=&sl_tdd_ul_dl_cfg->pattern1.nrofDownlinkSymbols,.defint64val=10,TYPE_INT64,0}, \
{SL_CONFIG_STRING_NROFUPLINKSLOTS,NULL,0,.i64ptr=&sl_tdd_ul_dl_cfg->pattern1.nrofUplinkSlots,.defint64val=2,TYPE_INT64,0},\
{SL_CONFIG_STRING_NROFUPLINKSYMBOLS,NULL,0,.i64ptr=&sl_tdd_ul_dl_cfg->pattern1.nrofUplinkSymbols,.defint64val=4,TYPE_INT64,0}}
/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* Sidelink Sync config parameters */
/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* Please refer to 3GPP SPEC 38.331 (RRC Specification) for details about these parameters
These parameters indicate the repetition of Sidelink SSB
sl_NumSSB_WithinPeriod_r16 - number of SSB transmissions within 16 frames
sl_TimeOffsetSSB_r16 - timeoffset in slots for the first SL-SSB transmission within 16 frames
sl_TimeInterval_r16 - interval in slots between SL-SSB transmissions
*/
#define SL_SYNCPARAMS_DESC(sl_syncconfig) { \
{SL_CONFIG_STRING_SL_NUMSSB_WITHINPERIOD_0,NULL,0,.i64ptr=sl_syncconfig->sl_SSB_TimeAllocation1_r16->sl_NumSSB_WithinPeriod_r16,.defint64val=1,TYPE_INT64,0}, \
{SL_CONFIG_STRING_SL_TIMEOFFSET_SSB_0,NULL,0,.i64ptr=sl_syncconfig->sl_SSB_TimeAllocation1_r16->sl_TimeOffsetSSB_r16,.defint64val=8,TYPE_INT64,0},\
{SL_CONFIG_STRING_SL_TIMEINTERVAL_0,NULL,0,.i64ptr=sl_syncconfig->sl_SSB_TimeAllocation1_r16->sl_TimeInterval_r16,.defint64val=60,TYPE_INT64,0}}
/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* Sidelink BWP Config parameters */
/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* Please refer to 3GPP SPEC 38.331 (RRC Specification) for details about these parameters
Sidelink BandWidthPart parameters
locationAndBandwidth - determines the start and size of Sidelink BWP
sl_LengthSymbols_r16 - number of symbols in a slot used for sidelink operation
sl_StartSymbol_r16 - start symbol for sidelink operation in a slot
*/
#define SL_BWPPARAMS_DESC(sl_bwp) { \
{SL_CONFIG_STRING_SL_BWP_START_AND_SIZE,NULL,0,.i64ptr=&sl_bwp->sl_BWP_Generic_r16->sl_BWP_r16->locationAndBandwidth,.defint64val=28875,TYPE_INT64,0}, \
{SL_CONFIG_STRING_SL_BWP_NUM_SYMBOLS,NULL,0,.i64ptr=sl_bwp->sl_BWP_Generic_r16->sl_LengthSymbols_r16,.defint64val=7,TYPE_INT64,0}, \
{SL_CONFIG_STRING_SL_BWP_START_SYMBOL,NULL,0,.i64ptr=sl_bwp->sl_BWP_Generic_r16->sl_StartSymbol_r16,.defint64val=0,TYPE_INT64,0}}
/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* Sidelink Resource pool parameters */
/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* Please refer to 3GPP SPEC 38.331 (RRC Specification) for details about these parameters
Sidelink TX/RX resource pool parameters
sl_TimeResourcePSCCH_r16 - number of symbols used for PSCCH
sl_SubchannelSize_r16 - number of PRBs in every subchannel in a resource pool
sl_StartRB_Subchannel_r16 - lowest RB of a lowest subchannel in a resource pool
sl_RB_Number_r16 - number of RBs in a resource pool
*/
#define SL_RESPOOLPARAMS_DESC(sl_res_pool) { \
{SL_CONFIG_STRING_RESPOOL_PSCCH_NUMSYM,NULL,0,.i64ptr=sl_res_pool->sl_PSCCH_Config_r16->choice.setup->sl_TimeResourcePSCCH_r16,.defint64val=1,TYPE_INT64,0}, \
{SL_CONFIG_STRING_RESPOOL_PSCCH_NUMRBS,NULL,0,.i64ptr=sl_res_pool->sl_PSCCH_Config_r16->choice.setup->sl_FreqResourcePSCCH_r16,.defint64val=4,TYPE_INT64,0}, \
{SL_CONFIG_STRING_RESPOOL_SUBCH_SIZE_IN_RBS,NULL,0,.i64ptr=sl_res_pool->sl_SubchannelSize_r16,.defint64val=0,TYPE_INT64,0},\
{SL_CONFIG_STRING_RESPOOL_SUBCH_START_RB,NULL,0,.i64ptr=sl_res_pool->sl_StartRB_Subchannel_r16,.defint64val=0,TYPE_INT64,0},\
{SL_CONFIG_STRING_RESPOOL_NUM_RBS,NULL,0,.i64ptr=sl_res_pool->sl_RB_Number_r16,.defint64val=106,TYPE_INT64,0},\
{SL_CONFIG_STRING_RESPOOL_NUM_SUBCHS,NULL,0,.i64ptr=sl_res_pool->sl_NumSubchannel_r16,.defint64val=10,TYPE_INT64,0}}
#endif
targets/PROJECTS/NR-SIDELINK/CONF/sidelink_preconfig_1rxpool.conf
0 → 100644
View file @
56f0b708
#Configure Sidelink Preconfiguration params here.
SIDELINK_PRECONFIGURATION
= (
{
# TDD ULDL CONFIG used for sidelink
sl_dl_UL_TransmissionPeriodicity
=
6
;
sl_nrofDownlinkSlots
=
7
;
sl_nrofDownlinkSymbols
=
10
;
sl_nrofUplinkSlots
=
2
;
sl_nrofUplinkSymbols
=
4
;
sl_FrequencyCommonConfig
= (
{
sl_offstToCarrier
=
0
;
sl_subcarrierSpacing
=
1
;//
0
-
15
Khz
,
1
-
30
Khz
sl_carrierBandwidth
=
106
;//
numPRBs
#NR bands for Sidelink n47, n38. N47 - 5855Mhz - 5925Mhz
#SL SSB chosen to be located from RB10 to RB21. points to the middle of the SSB block.
#SSB location should be within Sidelink BWP
#792000 + 10*12*2 + 66*2. channel raster is 15Khz for band47
sl_absoluteFrequencySSB
=
792372
;
sl_absoluteFrequencyPointA
=
792000
;
}
);
sl_BWP
= (
{
#RB start 0, RB size = 106. occupies complete Bw.
sl_locationAndBandwidth
=
28875
;
#Num Symbols used for Sidelink in an uplink slot
#Value can be between 0 to 7 indicating 7 to 14 symbols.
sl_LengthSymbols
=
4
;
#Sidelink Starting symbol in a slot
#Value can be between symbols 0 to 7
sl_StartSymbol
=
0
;
}
);
sl_syncCfg
= (
{
#NUM SL-SSB within 16 frames
sl_NumSSB_WithinPeriod_0
=
2
;
#Slot Offset for the first txn in the 16 frame period
sl_TimeOffsetSSB_0
=
8
;
#interval in slots for repetition of SL-SSB
sl_TimeInterval_0
=
120
;
}
);
sl_RxResPools
= (
{
#Number of symbols which carry PSCCH.
#Possible values 0 means 2 symbols, 1 - means 3 symbols.
sl_TimeResourcePSCCH
=
1
;
#Number of RBS which carry PSCCH
#Possible values {n10,n12,n15,n20,n25}
sl_FreqResourcePSCCH
=
4
; //
25
RBs
#Size of subchannel in RBs
#Possible values - {n10,n12,n15,n20,n25,n50,n75,n100}
sl_SubchannelSize
=
5
;//
50
RBs
#start in RB of the lowest subchannel in a rpool
sl_StartRB_Subchannel
=
0
;
#number of PRBs in a rpool
sl_RB_Number
=
50
;
sl_NumSubchannel
=
1
;
}
);
}
);
targets/PROJECTS/NR-SIDELINK/CONF/sidelink_preconfig_1rxpool_1txpool.conf
0 → 100644
View file @
56f0b708
#Configure Sidelink Preconfiguration params here.
SIDELINK_PRECONFIGURATION
= (
{
# TDD ULDL CONFIG used for sidelink
sl_dl_UL_TransmissionPeriodicity
=
6
;
sl_nrofDownlinkSlots
=
7
;
sl_nrofDownlinkSymbols
=
10
;
sl_nrofUplinkSlots
=
2
;
sl_nrofUplinkSymbols
=
4
;
sl_FrequencyCommonConfig
= (
{
sl_offstToCarrier
=
0
;
sl_subcarrierSpacing
=
1
;//
0
-
15
Khz
,
1
-
30
Khz
sl_carrierBandwidth
=
106
;//
numPRBs
#NR bands for Sidelink n47, n38. N47 - 5855Mhz - 5925Mhz
#SL SSB chosen to be located from RB10 to RB21. points to the middle of the SSB block.
#SSB location should be within Sidelink BWP
#792000 + 10*12*2 + 66*2. channel raster is 15Khz for band47
sl_absoluteFrequencySSB
=
792372
;
sl_absoluteFrequencyPointA
=
792000
;
}
);
sl_BWP
= (
{
#RB start 0, RB size = 106. occupies complete Bw.
sl_locationAndBandwidth
=
28875
;
#Num Symbols used for Sidelink in an uplink slot
#Value can be between symbols 7 to 14
sl_LengthSymbols
=
4
;
#Sidelink Starting symbol in a slot
#Value can be between symbols 0 to 7
sl_StartSymbol
=
0
;
}
);
sl_syncCfg
= (
{
#NUM SL-SSB within 16 frames
sl_NumSSB_WithinPeriod_0
=
2
;
#Slot Offset for the first txn in the 16 frame period
sl_TimeOffsetSSB_0
=
8
;
#interval in slots for repetition of SL-SSB
sl_TimeInterval_0
=
120
;
}
);
sl_RxResPools
= (
{
#Number of symbols which carry PSCCH.
#Possible values 0 means 2 symbols, 1 - means 3 symbols.
sl_TimeResourcePSCCH
=
1
;
#Number of RBS which carry PSCCH
#Possible values {n10,n12,n15,n20,n25}
sl_FreqResourcePSCCH
=
4
; //
25
RBs
#Size of subchannel in RBs
#Possible values - {n10,n12,n15,n20,n25,n50,n75,n100}
sl_SubchannelSize
=
5
;//
10
RBs
#start in RB of the lowest subchannel in a rpool
sl_StartRB_Subchannel
=
0
;
#number of PRBs in a rpool
sl_RB_Number
=
50
;
sl_NumSubchannel
=
1
;
}
);
sl_TxResPools
= (
{
#Number of symbols which carry PSCCH.
#Possible values 0 means 2 symbols, 1 - means 3 symbols.
sl_TimeResourcePSCCH
=
1
;
#Number of RBS which carry PSCCH
#Possible values {n10,n12,n15,n20,n25}
sl_FreqResourcePSCCH
=
4
; //
25
RBs
#Size of subchannel in RBs
#Possible values - {n10,n12,n15,n20,n25,n50,n75,n100}
sl_SubchannelSize
=
5
;//
50
RBs
#start in RB of the lowest subchannel in a rpool
sl_StartRB_Subchannel
=
0
;
#number of PRBs in a rpool
sl_RB_Number
=
50
;
sl_NumSubchannel
=
1
;
}
);
}
);
targets/PROJECTS/NR-SIDELINK/CONF/sidelink_preconfig_1txpool.conf
0 → 100644
View file @
56f0b708
#Configure Sidelink Preconfiguration params here.
SIDELINK_PRECONFIGURATION
= (
{
# TDD ULDL CONFIG used for sidelink
sl_dl_UL_TransmissionPeriodicity
=
6
;
sl_nrofDownlinkSlots
=
7
;
sl_nrofDownlinkSymbols
=
10
;
sl_nrofUplinkSlots
=
2
;
sl_nrofUplinkSymbols
=
4
;
sl_FrequencyCommonConfig
= (
{
sl_offstToCarrier
=
0
;
sl_subcarrierSpacing
=
1
;//
0
-
15
Khz
,
1
-
30
Khz
sl_carrierBandwidth
=
106
;//
numPRBs
#NR bands for Sidelink n47, n38. N47 - 5855Mhz - 5925Mhz
#SL SSB chosen to be located from RB10 to RB21. points to the middle of the SSB block.
#SSB location should be within Sidelink BWP
#792000 + 10*12*2 + 66*2. channel raster is 15Khz for band47
sl_absoluteFrequencySSB
=
792372
;
sl_absoluteFrequencyPointA
=
792000
;
}
);
sl_BWP
= (
{
#RB start 0, RB size = 106. occupies complete Bw.
sl_locationAndBandwidth
=
28875
;
#Num Symbols used for Sidelink in an uplink slot
#Value can be between 0 to 7 indicating 7 to 14 symbols.
sl_LengthSymbols
=
4
;
#Sidelink Starting symbol in a slot
#Value can be between symbols 0 to 7
sl_StartSymbol
=
0
;
}
);
sl_syncCfg
= (
{
#NUM SL-SSB within 16 frames
sl_NumSSB_WithinPeriod_0
=
2
;
#Slot Offset for the first txn in the 16 frame period
sl_TimeOffsetSSB_0
=
8
;
#interval in slots for repetition of SL-SSB
sl_TimeInterval_0
=
120
;
}
);
sl_TxResPools
= (
{
#Number of symbols which carry PSCCH.
#Possible values 0 means 2 symbols, 1 - means 3 symbols.
sl_TimeResourcePSCCH
=
1
;
#Number of RBS which carry PSCCH
#Possible values {n10,n12,n15,n20,n25}
sl_FreqResourcePSCCH
=
4
; //
25
RBs
#Size of subchannel in RBs
#Possible values - {n10,n12,n15,n20,n25,n50,n75,n100}
sl_SubchannelSize
=
5
;//
50
RBs
#start in RB of the lowest subchannel in a rpool
sl_StartRB_Subchannel
=
0
;
#number of PRBs in a rpool
sl_RB_Number
=
50
;
sl_NumSubchannel
=
1
;
}
);
}
);
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