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
lizhongxiao
OpenXG-RAN
Commits
34090135
Commit
34090135
authored
Feb 23, 2023
by
Siddharth Rana
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Initial rebase changes from 3GPP_TTCN_System_Simulator to latest FRD299
parent
ba696cf0
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
519 additions
and
132 deletions
+519
-132
openair2/COMMON/ss_messages_types.h
openair2/COMMON/ss_messages_types.h
+38
-0
openair2/LAYER2/MAC/eNB_scheduler_RA.c
openair2/LAYER2/MAC/eNB_scheduler_RA.c
+1
-1
openair2/LAYER2/MAC/mac.h
openair2/LAYER2/MAC/mac.h
+8
-0
openair2/LAYER2/MAC/main.c
openair2/LAYER2/MAC/main.c
+6
-3
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB.c
+2
-1
openair2/RRC/NR/MESSAGES/asn1_msg.c
openair2/RRC/NR/MESSAGES/asn1_msg.c
+69
-3
openair2/RRC/NR/nr_rrc_defs.h
openair2/RRC/NR/nr_rrc_defs.h
+66
-0
openair3/SS/ss_eNB_sys_task.c
openair3/SS/ss_eNB_sys_task.c
+195
-119
openair3/SS/ss_gNB_sys_task.c
openair3/SS/ss_gNB_sys_task.c
+133
-4
radio/SS/ss_config.h
radio/SS/ss_config.h
+1
-1
No files found.
openair2/COMMON/ss_messages_types.h
View file @
34090135
...
...
@@ -157,18 +157,29 @@ typedef struct ss_req_pdcp_cnt_s {
uint8_t
rb_id
;
}
ss_req_pdcp_cnt_t
;
#define RACH_PREAMBLE_PRESENT 0x01
#define PDCCH_ORDER_PRESENT 0x02
typedef
struct
_pdcchOrder_t
{
uint8_t
preambleIndex
;
uint8_t
prachMaskIndex
;
}
pdcchOrder_t
;
typedef
enum
L1MacIndCtrl_e
{
IndCtrlMode_NOT_PRESENT
=
0
,
IndCtrlMode_ENABLE
=
1
,
IndCtrlMode_DISABLE
=
2
}
L1MacIndCtrl
;
#define RACH_PREAMBLE_PRESENT 0x01
#define PDCCH_ORDER_PRESENT 0x02
typedef
struct
ss_l1macind_ctrl_s
{
uint8_t
bitmask
;
int
cell_index
;
bool
rachpreamble_enable
;
L1MacIndCtrl
RachPreamble_Ctrl
;
L1MacIndCtrl
UL_HARQ_Ctrl
;
L1MacIndCtrl
HarqError_Ctrl
;
pdcchOrder_t
pdcchOrder
;
}
ss_l1macind_ctrl_t
;
...
...
@@ -322,6 +333,29 @@ typedef struct ss_vt_time_out_s {
}
ss_vt_time_out_t
;
/** SYS IND */
typedef
enum
SysInd_Type_e
{
SysInd_Type_Error
=
1
,
SysInd_Type_RachPreamble
=
2
,
SysInd_Type_SchedReq
=
3
,
SysInd_Type_BSR
=
4
,
SysInd_Type_UL_HARQ
=
5
,
SysInd_Type_C_RNTI
=
6
,
SysInd_Type_PHR
=
7
,
SysInd_Type_HarqError
=
8
,
SysInd_Type_RlcDiscardInd
=
9
,
SysInd_Type_PeriodicRI
=
10
,
SysInd_Type_EPHR
=
11
,
SysInd_Type_CqiInd
=
12
,
SysInd_Type_SrsInd
=
13
,
SysInd_Type_DC_PHR
=
14
,
}
SysInd_Type
;
typedef
struct
harq_error_s
{
bool
bIsUL
;
int
Id
;
int
CURRENT_TX_NB
;
}
harq_error_t
;
typedef
struct
ss_system_ind_s
{
bool
bitmask
;
//Flag for presence of optional parameter repetitionsPerPreambleAttempt
...
...
@@ -331,6 +365,10 @@ typedef struct ss_system_ind_s
uint8_t
ra_PreambleIndex
;
bool
prtPower_Type
;
uint32_t
repetitionsPerPreambleAttempt
;
SysInd_Type
sysind_type
;
int
UL_Harq
;
harq_error_t
HarqError
;
}
ss_system_ind_t
;
#endif
/* SS_MESSAGES_TYPES_H_ */
openair2/LAYER2/MAC/eNB_scheduler_RA.c
View file @
34090135
...
...
@@ -1446,7 +1446,7 @@ initiate_ra_proc(module_id_t module_idP,
module_idP
,
CC_id
,
frameP
,
ra
[
i
].
Msg2_frame
,
ra
[
i
].
Msg2_subframe
,
i
,
ra
[
i
].
rnti
,
ra
[
i
].
state
);
if
(
RC
.
ss
.
l1macind
.
rachpreamble_enable
)
if
(
RC
.
ss
.
l1macind
[
CC_id
]
.
rachpreamble_enable
)
{
// Populate and send the SS_SYSTEM_IND to System Simulator
MessageDef
*
m
=
itti_alloc_new_message
(
TASK_MAC_ENB
,
0
,
SS_SYSTEM_IND
);
...
...
openair2/LAYER2/MAC/mac.h
View file @
34090135
...
...
@@ -1197,6 +1197,14 @@ typedef struct {
///remove RA flag
bool
raFlag
;
}
UE_free_ctrl_t
;
/*! \brief REMOVE UE list used by eNB to order UEs/CC for deleting*/
typedef
struct
{
/// deleting control info
UE_free_ctrl_t
UE_free_ctrl
[
NUMBER_OF_UE_MAX
+
1
];
int
num_UEs
;
int
head_freelist
;
///the head position of the delete list
int
tail_freelist
;
///the tail position of the delete list
}
UE_free_list_t
;
/**
* describes contiguous RBs
...
...
openair2/LAYER2/MAC/main.c
View file @
34090135
...
...
@@ -304,10 +304,13 @@ void *mac_enb_task(void *arg)
case
SS_L1MACIND_CTRL
:
LOG_I
(
MAC
,
"MAC Task Received SS_L1MACIND_CTRL
\n
"
);
int
CC_id
=
received_msg
->
ittiMsg
.
ss_l1macind_ctrl
.
cell_index
;
RC
.
ss
.
l1macind
[
CC_id
].
UL_HARQ_Ctrl
=
received_msg
->
ittiMsg
.
ss_l1macind_ctrl
.
UL_HARQ_Ctrl
;
RC
.
ss
.
l1macind
[
CC_id
].
HarqError_Ctrl
=
received_msg
->
ittiMsg
.
ss_l1macind_ctrl
.
HarqError_Ctrl
;
if
(
received_msg
->
ittiMsg
.
ss_l1macind_ctrl
.
bitmask
&
PDCCH_ORDER_PRESENT
)
{
RC
.
rrc
[
0
]
->
configuration
.
radioresourceconfig
[
cell_index
].
prach_preambleIndex
=
received_msg
->
ittiMsg
.
ss_l1macind_ctrl
.
pdcchOrder
.
preambleIndex
;
RC
.
rrc
[
0
]
->
configuration
.
radioresourceconfig
[
cell_index
].
prach_maskIndex
=
received_msg
->
ittiMsg
.
ss_l1macind_ctrl
.
pdcchOrder
.
prachMaskIndex
;
RC
.
rrc
[
0
]
->
configuration
.
radioresourceconfig
[
cell_index
].
prach_maskIndex
=
received_msg
->
ittiMsg
.
ss_l1macind_ctrl
.
pdcchOrder
.
prachMaskIndex
;
LOG_I
(
MAC
,
"MAC Task Received SS_L1MACIND_CTRL for PdcchOrder for cell:%d. prach_preambleIndex:%d prach_maskIndex:%d
\n
"
,
cell_index
,
RC
.
rrc
[
0
]
->
configuration
.
radioresourceconfig
[
cell_index
].
prach_preambleIndex
,
...
...
@@ -316,8 +319,8 @@ void *mac_enb_task(void *arg)
}
if
(
received_msg
->
ittiMsg
.
ss_l1macind_ctrl
.
bitmask
&
RACH_PREAMBLE_PRESENT
)
{
LOG_I
(
MAC
,
"MAC Task Received SS_L1MACIND_CTRL for RachPreamble. rachpreamble_enable:%d
\n
"
,
RC
.
ss
.
l1macind
.
rachpreamble_enable
);
RC
.
ss
.
l1macind
.
rachpreamble_enable
=
received_msg
->
ittiMsg
.
ss_l1macind_ctrl
.
rachpreamble_enable
;
LOG_I
(
MAC
,
"MAC Task Received SS_L1MACIND_CTRL for RachPreamble. rachpreamble_enable:%d
\n
"
,
RC
.
ss
.
l1macind
[
CC_id
]
.
rachpreamble_enable
);
RC
.
ss
.
l1macind
[
CC_id
]
.
rachpreamble_enable
=
received_msg
->
ittiMsg
.
ss_l1macind_ctrl
.
rachpreamble_enable
;
}
break
;
...
...
openair2/RRC/LTE/rrc_eNB.c
View file @
34090135
...
...
@@ -1269,6 +1269,7 @@ extern void clean_eNb_dlsch(LTE_eNB_DLSCH_t *dlsch);
void
release_UE_in_freeList
(
module_id_t
mod_id
)
{
PHY_VARS_eNB
*
eNB_PHY
=
NULL
;
eNB_MAC_INST
*
eNB_MAC
=
RC
.
mac
[
mod_id
];
int
CC_id
;
pthread_mutex_lock
(
&
lock_ue_freelist
);
for
(
int
ue_num
=
0
;
ue_num
<
sizeofArray
(
eNB_MAC
->
UE_free_ctrl
)
;
ue_num
++
)
{
...
...
@@ -1278,7 +1279,7 @@ void release_UE_in_freeList(module_id_t mod_id) {
protocol_ctxt_t
ctxt
;
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
mod_id
,
ENB_FLAG_YES
,
rnti
,
0
,
0
,
mod_id
);
for
(
int
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
for
(
CC_id
=
0
;
CC_id
<
RC
.
nb_CC
[
0
]
;
CC_id
++
)
{
eNB_PHY
=
RC
.
eNB
[
mod_id
][
CC_id
];
int
id
;
// clean ULSCH entries for rnti
...
...
openair2/RRC/NR/MESSAGES/asn1_msg.c
View file @
34090135
...
...
@@ -206,6 +206,26 @@ uint8_t do_MIB_NR(gNB_RRC_INST *rrc,uint32_t frame) {
rrc_gNB_carrier_data_t
*
carrier
=
&
rrc
->
carrier
;
NR_BCCH_BCH_Message_t
*
mib
=
&
carrier
->
mib
;
/*TODO: for SS mode, mib is coming from TTCN */
/*
if(RC.ss.mode == SS_SOFTMODEM) {
enc_rval = uper_encode_to_buffer(&asn_DEF_NR_BCCH_BCH_Message,
NULL,
(void *)mib,
carrier->MIB,
24);
LOG_P(OAILOG_INFO, "BCCH_BCH_Message", (uint8_t *)carrier->MIB, 24);
AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
enc_rval.failed_type->name, enc_rval.encoded);
if (enc_rval.encoded==-1) {
return(-1);
}
return((enc_rval.encoded+7)/8);
}
*/
NR_ServingCellConfigCommon_t
*
scc
=
carrier
->
servingcellconfigcommon
;
memset
(
mib
,
0
,
sizeof
(
NR_BCCH_BCH_Message_t
));
...
...
@@ -315,8 +335,37 @@ uint8_t do_MIB_NR(gNB_RRC_INST *rrc,uint32_t frame) {
uint16_t
do_SIB1_NR
(
rrc_gNB_carrier_data_t
*
carrier
,
gNB_RrcConfigurationReq
*
configuration
)
{
asn_enc_rval_t
enc_rval
;
/*TODO: for SS mode, sib1 is coming from TTCN */
/*
if(RC.ss.mode == SS_SOFTMODEM) {
if(NULL == carrier->siblock1) {
return 0;
}
NR_BCCH_DL_SCH_Message_t *sib1_message = carrier->siblock1;
if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
xer_fprint(stdout, &asn_DEF_NR_BCCH_DL_SCH_Message, (const void*)sib1_message);
}
if(carrier->SIB1 == NULL) carrier->SIB1=(uint8_t *) malloc16(NR_MAX_SIB_LENGTH/8);
enc_rval = uper_encode_to_buffer(&asn_DEF_NR_BCCH_DL_SCH_Message,
NULL,
(void *)sib1_message,
carrier->SIB1,
NR_MAX_SIB_LENGTH/8);
LOG_P(OAILOG_INFO, "BCCH_DL_SCH_Message", (uint8_t *)carrier->SIB1, NR_MAX_SIB_LENGTH/8);
AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
enc_rval.failed_type->name, enc_rval.encoded);
if (enc_rval.encoded==-1) {
return(-1);
}
return((enc_rval.encoded+7)/8);
}
*/
NR_BCCH_DL_SCH_Message_t
*
sib1_message
=
CALLOC
(
1
,
sizeof
(
NR_BCCH_DL_SCH_Message_t
));
carrier
->
siblock1
=
sib1_message
;
sib1_message
->
message
.
present
=
NR_BCCH_DL_SCH_MessageType_PR_c1
;
...
...
@@ -900,7 +949,13 @@ void fill_initial_SpCellConfig(int uid,
SpCellConfig
->
reconfigurationWithSync
=
NULL
;
SpCellConfig
->
rlmInSyncOutOfSyncThreshold
=
NULL
;
SpCellConfig
->
rlf_TimersAndConstants
=
NULL
;
if
(
RC
.
ss
.
mode
>=
SS_SOFTMODEM
)
{
/* TODO: fill SpCellConfig->spCellConfigDedicated with configuration from SS*/
/*
SpCellConfig->cellConfigDedicated = carrier->cellConfigDedicated;
return;
*/
}
SpCellConfig
->
spCellConfigDedicated
=
calloc
(
1
,
sizeof
(
*
SpCellConfig
->
spCellConfigDedicated
));
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
=
calloc
(
1
,
sizeof
(
*
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
));
NR_UplinkConfig_t
*
uplinkConfig
=
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
;
...
...
@@ -1392,7 +1447,18 @@ void fill_initial_cellGroupConfig(int uid,
fill_rb_RLC_BearerConfig
(
rbIndex
,
rlc_BearerConfig
,
ss_rlc_BearerConfig
);
ASN_SEQUENCE_ADD
(
&
cellGroupConfig
->
rlc_BearerToAddModList
->
list
,
rlc_BearerConfig
);
}
}
else
{
/* TODO: ServingCellConfig from SS
cellGroupConfig->cellGroupId = carrier->cell_GroupId;
cellGroupConfig->mac_CellGroupConfig = carrier->mac_cellGroupConfig;
cellGroupConfig->physicalCellGroupConfig = carrier->physicalCellGroupConfig;
cellGroupConfig->spCellConfig = calloc(1,sizeof(*cellGroupConfig->spCellConfig));
fill_initial_SpCellConfig(uid,cellGroupConfig->spCellConfig,scc,carrier);
cellGroupConfig->sCellToAddModList = NULL;
cellGroupConfig->sCellToReleaseList = NULL;
return;
*/
}
else
{
/* Rlc Bearer Config */
/* TS38.331 9.2.1 Default SRB configurations */
cellGroupConfig
->
rlc_BearerToAddModList
=
calloc
(
1
,
sizeof
(
*
cellGroupConfig
->
rlc_BearerToAddModList
));
...
...
openair2/RRC/NR/nr_rrc_defs.h
View file @
34090135
...
...
@@ -80,6 +80,17 @@
#include "commonDef.h"
/*I will change the name of the structure for compile purposes--> hope not to undo this process*/
typedef
unsigned
int
uid_nr_t
;
#define NR_UID_LINEAR_ALLOCATOR_BITMAP_SIZE (((MAX_MOBILES_PER_GNB/8)/sizeof(unsigned int)) + 1)
typedef
struct
nr_uid_linear_allocator_s
{
unsigned
int
bitmap
[
NR_UID_LINEAR_ALLOCATOR_BITMAP_SIZE
];
}
nr_uid_allocator_t
;
#define PROTOCOL_NR_RRC_CTXT_UE_FMT PROTOCOL_CTXT_FMT
#define PROTOCOL_NR_RRC_CTXT_UE_ARGS(CTXT_Pp) PROTOCOL_NR_CTXT_ARGS(CTXT_Pp)
...
...
@@ -404,6 +415,8 @@ typedef struct gNB_RRC_UE_s {
}
gNB_RRC_UE_t
;
typedef
uid_t
ue_uid_t
;
typedef
struct
rrc_gNB_ue_context_s
{
/* Tree related data */
RB_ENTRY
(
rrc_gNB_ue_context_s
)
entries
;
...
...
@@ -420,6 +433,42 @@ typedef struct rrc_gNB_ue_context_s {
struct
gNB_RRC_UE_s
ue_context
;
}
rrc_gNB_ue_context_t
;
/* PUSCH,PDSCH dedicated DCCH,DTCH scheduling configuration from external */
typedef
struct
NR_DciFormat_0_X_ResourceAssignment
{
int32_t
FirstRbIndex
;
int32_t
Nprb
;
struct
NR_TransportBlockScheduling
{
uint8_t
imcs
;
uint8_t
RedundancyVersion
;
bool
ToggleNDI
;
}
transportBlock_scheduling
;
}
NR_DciFormat_0_X_ResourceAssignment_t
;
typedef
struct
NR_DcchDtchConfig_UL
{
struct
NR_DciUlinfo
{
NR_DciFormat_0_X_ResourceAssignment_t
*
resoure_assignment
;
uint8_t
*
pusch_hopping_ctrl_flag
;
uint8_t
*
tpc_command_pusch
;
uint8_t
*
ul_sul_indicator
;
//NR_DciFormat0_0 * dci0_0;
//NR_DciFormat0_1 * dci0_1;
}
*
dci_info
;
/*TODO: other config */
//PUCCH_Synch
//GrantConfig
}
NR_DcchDtchConfig_UL_t
;
typedef
struct
NR_DcchDtchConfig
{
/*TODO: define DL config for activeBWP */
//NR_DcchDtchConfig_DL_t * dl;
NR_DcchDtchConfig_UL_t
*
ul
;
}
NR_DcchDtchConfig_t
;
/*****************************************************************/
typedef
struct
{
// buffer that contains the encoded messages
...
...
@@ -445,12 +494,29 @@ typedef struct {
NR_SIB2_t
*
sib2
;
NR_SIB3_t
*
sib3
;
NR_BCCH_DL_SCH_Message_t
systemInformation
;
// SIB23
int
ssb_SubcarrierOffset
;
int
sib1_tda
;
int
pdsch_AntennaPorts
;
int
pusch_AntennaPorts
;
int
minRXTXTIME
;
int
do_CSIRS
;
int
do_SRS
;
NR_BCCH_DL_SCH_Message_t
*
siblock1
;
NR_ServingCellConfigCommon_t
*
servingcellconfigcommon
;
NR_ServingCellConfig_t
*
servingcellconfig
;
NR_ServingCellConfig_t
*
cellConfigDedicated
;
NR_PDCCH_ConfigSIB1_t
*
pdcch_ConfigSIB1
;
/* ServingCellConfig */
NR_CellGroupId_t
cell_GroupId
;
NR_MAC_CellGroupConfig_t
*
mac_cellGroupConfig
;
NR_PhysicalCellGroupConfig_t
*
physicalCellGroupConfig
;
/* dedicate Scheduler Config */
NR_DcchDtchConfig_t
*
dcchDtchConfig
;
NR_CellGroupConfig_t
*
secondaryCellGroup
[
MAX_NR_RRC_UE_CONTEXTS
];
NR_SRB_INFO
SI
;
NR_SRB_INFO
Srb0
;
int
p_gNB
;
}
rrc_gNB_carrier_data_t
;
...
...
openair3/SS/ss_eNB_sys_task.c
View file @
34090135
This diff is collapsed.
Click to expand it.
openair3/SS/ss_gNB_sys_task.c
View file @
34090135
...
...
@@ -59,7 +59,7 @@ static bool reqCnfFlag_g = false;
void
ss_task_sys_nr_handle_deltaValues
(
struct
NR_SYSTEM_CTRL_REQ
*
req
);
int
cell_config_5G_done
=-
1
;
int
cell_config_5G_done_indication
();
bool
ss_task_sys_nr_handle_cellConfig5G
(
struct
NR_CellConfigRequest_Type
*
p_req
);
bool
ss_task_sys_nr_handle_cellConfig5G
(
struct
NR_CellConfigRequest_Type
*
p_req
,
int
cell_State
);
bool
ss_task_sys_nr_handle_cellConfigRadioBearer
(
struct
NR_SYSTEM_CTRL_REQ
*
req
);
bool
ss_task_sys_nr_handle_cellConfigAttenuation
(
struct
NR_SYSTEM_CTRL_REQ
*
req
);
static
int
sys_5G_send_init_udp
(
const
udpSockReq_t
*
req
);
...
...
@@ -262,7 +262,7 @@ static void ss_task_sys_nr_handle_req(struct NR_SYSTEM_CTRL_REQ *req, ss_nrset_t
if
(
req
->
Request
.
d
==
NR_SystemRequest_Type_Cell
)
{
LOG_A
(
GNB_APP
,
"[SYS-GNB] NR_SystemRequest_Type_Cell received
\n
"
);
if
(
false
==
ss_task_sys_nr_handle_cellConfig5G
(
&
req
->
Request
.
v
.
Cell
)
)
if
(
false
==
ss_task_sys_nr_handle_cellConfig5G
(
&
req
->
Request
.
v
.
Cell
,
RC
.
ss
.
State
)
)
{
LOG_A
(
GNB_APP
,
"[SYS-GNB] Error handling Cell Config 5G for NR_SystemRequest_Type_Cell
\n
"
);
return
;
...
...
@@ -327,7 +327,10 @@ static void ss_task_sys_nr_handle_req(struct NR_SYSTEM_CTRL_REQ *req, ss_nrset_t
{
case
NR_SystemRequest_Type_Cell
:
{
LOG_A
(
GNB_APP
,
"[SYS-GNB] Dummy handling for Cell Config 5G NR_SystemRequest_Type_Cell
\n
"
);
if
(
false
==
ss_task_sys_nr_handle_cellConfig5G
(
&
req
->
Request
.
v
.
Cell
,
RC
.
ss
.
State
)
)
{
LOG_E
(
GNB_APP
,
"[SYS-GNB] Error handling Cell Config 5G for NR_SystemRequest_Type_Cell
\n
"
);
}
send_sys_cnf
(
ConfirmationResult_Type_Success
,
true
,
NR_SystemConfirm_Type_Cell
,
NULL
);
}
break
;
...
...
@@ -651,11 +654,136 @@ void ss_task_sys_nr_handle_deltaValues(struct NR_SYSTEM_CTRL_REQ *req)
* Returns : None
*/
bool
ss_task_sys_nr_handle_cellConfig5G
(
struct
NR_CellConfigRequest_Type
*
p_req
)
bool
ss_task_sys_nr_handle_cellConfig5G
(
struct
NR_CellConfigRequest_Type
*
p_req
,
int
cell_State
)
{
uint32_t
gnbId
=
0
;
if
(
p_req
->
d
==
NR_CellConfigRequest_Type_AddOrReconfigure
)
{
/* populate each config */
/* 1. StaticResource Config */
if
(
p_req
->
v
.
AddOrReconfigure
.
StaticResourceConfig
.
d
)
{
}
/* 2. CellConfigCommon: currently NR_InitialCellPower_Type is processed after cell config */
if
(
p_req
->
v
.
AddOrReconfigure
.
CellConfigCommon
.
d
)
{
}
/* 3. PhysicalLayer */
/* TODO: populate fields to
RC.nrrrc[gnbId]->carrier.servingcellconfigcommon
RC.nrrrc[gnbId]->carrier.cellConfigDedicated
*/
if
(
p_req
->
v
.
AddOrReconfigure
.
PhysicalLayer
.
d
)
{
}
/* 4. BcchConfig */
/* TODO: populate all BcchConfig fields to
RC.nrrrc[gnbId]->carrier.mib
RC.nrrrc[gnbId]->carrier.siblock1
RC.nrrrc[gnbId]->carrier.systemInformation
*/
if
(
p_req
->
v
.
AddOrReconfigure
.
BcchConfig
.
d
)
{
}
/* 5. PcchConfig */
if
(
p_req
->
v
.
AddOrReconfigure
.
PcchConfig
.
d
)
{
}
/* 6. RachProcedureConfig */
if
(
p_req
->
v
.
AddOrReconfigure
.
RachProcedureConfig
.
d
)
{
}
/* 7. DcchDtchConfig */
if
(
p_req
->
v
.
AddOrReconfigure
.
DcchDtchConfig
.
d
)
{
if
(
NULL
==
RC
.
nrrrc
[
gnbId
]
->
carrier
.
dcchDtchConfig
){
RC
.
nrrrc
[
gnbId
]
->
carrier
.
dcchDtchConfig
=
calloc
(
1
,
sizeof
(
NR_DcchDtchConfig_t
));
}
NR_DcchDtchConfig_t
*
dcchDtchConfig
=
RC
.
nrrrc
[
gnbId
]
->
carrier
.
dcchDtchConfig
;
if
(
p_req
->
v
.
AddOrReconfigure
.
DcchDtchConfig
.
v
.
DL
.
d
)
{
}
if
(
p_req
->
v
.
AddOrReconfigure
.
DcchDtchConfig
.
v
.
UL
.
d
)
{
if
(
NULL
==
dcchDtchConfig
->
ul
){
dcchDtchConfig
->
ul
=
calloc
(
1
,
sizeof
(
*
(
dcchDtchConfig
->
ul
)));
}
if
(
p_req
->
v
.
AddOrReconfigure
.
DcchDtchConfig
.
v
.
UL
.
v
.
SearchSpaceAndDci
.
d
){
if
(
p_req
->
v
.
AddOrReconfigure
.
DcchDtchConfig
.
v
.
UL
.
v
.
SearchSpaceAndDci
.
v
.
DciInfo
.
d
){
if
(
NULL
==
dcchDtchConfig
->
ul
->
dci_info
){
dcchDtchConfig
->
ul
->
dci_info
=
calloc
(
1
,
sizeof
(
*
(
dcchDtchConfig
->
ul
->
dci_info
)));
}
if
(
p_req
->
v
.
AddOrReconfigure
.
DcchDtchConfig
.
v
.
UL
.
v
.
SearchSpaceAndDci
.
v
.
DciInfo
.
v
.
ResoureAssignment
.
d
){
if
(
NULL
==
dcchDtchConfig
->
ul
->
dci_info
->
resoure_assignment
){
dcchDtchConfig
->
ul
->
dci_info
->
resoure_assignment
=
calloc
(
1
,
sizeof
(
*
(
dcchDtchConfig
->
ul
->
dci_info
->
resoure_assignment
)));
}
if
(
p_req
->
v
.
AddOrReconfigure
.
DcchDtchConfig
.
v
.
UL
.
v
.
SearchSpaceAndDci
.
v
.
DciInfo
.
v
.
ResoureAssignment
.
v
.
FreqDomain
.
d
){
dcchDtchConfig
->
ul
->
dci_info
->
resoure_assignment
->
FirstRbIndex
=
p_req
->
v
.
AddOrReconfigure
.
DcchDtchConfig
.
v
.
UL
.
v
.
SearchSpaceAndDci
.
v
.
DciInfo
.
v
.
ResoureAssignment
.
v
.
FreqDomain
.
v
.
FirstRbIndex
;
dcchDtchConfig
->
ul
->
dci_info
->
resoure_assignment
->
Nprb
=
p_req
->
v
.
AddOrReconfigure
.
DcchDtchConfig
.
v
.
UL
.
v
.
SearchSpaceAndDci
.
v
.
DciInfo
.
v
.
ResoureAssignment
.
v
.
FreqDomain
.
v
.
Nprb
;
}
if
(
p_req
->
v
.
AddOrReconfigure
.
DcchDtchConfig
.
v
.
UL
.
v
.
SearchSpaceAndDci
.
v
.
DciInfo
.
v
.
ResoureAssignment
.
v
.
TransportBlockScheduling
.
d
)
{
if
(
p_req
->
v
.
AddOrReconfigure
.
DcchDtchConfig
.
v
.
UL
.
v
.
SearchSpaceAndDci
.
v
.
DciInfo
.
v
.
ResoureAssignment
.
v
.
TransportBlockScheduling
.
v
.
d
>
0
){
struct
NR_TransportBlockSingleTransmission_Type
*
tbst
=
&
p_req
->
v
.
AddOrReconfigure
.
DcchDtchConfig
.
v
.
UL
.
v
.
SearchSpaceAndDci
.
v
.
DciInfo
.
v
.
ResoureAssignment
.
v
.
TransportBlockScheduling
.
v
.
v
[
0
];
dcchDtchConfig
->
ul
->
dci_info
->
resoure_assignment
->
transportBlock_scheduling
.
imcs
=
tbst
->
ImcsValue
;
dcchDtchConfig
->
ul
->
dci_info
->
resoure_assignment
->
transportBlock_scheduling
.
RedundancyVersion
=
tbst
->
RedundancyVersion
;
dcchDtchConfig
->
ul
->
dci_info
->
resoure_assignment
->
transportBlock_scheduling
.
ToggleNDI
=
tbst
->
ToggleNDI
;
}
}
}
}
}
}
if
(
p_req
->
v
.
AddOrReconfigure
.
DcchDtchConfig
.
v
.
DrxCtrl
.
d
)
{
}
if
(
p_req
->
v
.
AddOrReconfigure
.
DcchDtchConfig
.
v
.
MeasGapCtrl
.
d
)
{
}
}
/* 8. ServingCellConfig */
/* TODO: populate ServingCellConfig to
RC.nrrrc[gnbId]->carrier.cell_GroupId
RC.nrrrc[gnbId]->carrier.mac_cellGroupConfig
RC.nrrrc[gnbId]->carrier.physicalCellGroupConfig
*/
if
(
p_req
->
v
.
AddOrReconfigure
.
ServingCellConfig
.
d
)
{
}
if
(
cell_State
!=
SS_STATE_NOT_CONFIGURED
){
/* Trigger RRC Cell reconfig when cell is active */
MessageDef
*
msg_p
=
NULL
;
msg_p
=
itti_alloc_new_message
(
TASK_GNB_APP
,
0
,
NRRRC_CONFIGURATION_REQ
);
LOG_I
(
GNB_APP
,
"ss_gNB Sending configuration message to NR_RRC task
\n
"
);
memcpy
(
&
NRRRC_CONFIGURATION_REQ
(
msg_p
),
&
RC
.
nrrrc
[
gnbId
]
->
configuration
,
sizeof
(
NRRRC_CONFIGURATION_REQ
(
msg_p
)));
itti_send_msg_to_task
(
TASK_RRC_GNB
,
GNB_MODULE_ID_TO_INSTANCE
(
gnbId
),
msg_p
);
return
true
;
}
/* following code shall be optimized and moved to "PhysicalLayer" populating*/
/*****************************************************************************/
/* Populating PhyCellId */
if
(
p_req
->
v
.
AddOrReconfigure
.
PhysicalLayer
.
v
.
Common
.
v
.
PhysicalCellId
.
d
==
true
)
{
...
...
@@ -785,6 +913,7 @@ bool ss_task_sys_nr_handle_cellConfig5G(struct NR_CellConfigRequest_Type *p_req)
*
RC
.
nrrrc
[
gnbId
]
->
configuration
.
scc
->
uplinkConfigCommon
->
frequencyInfoUL
->
p_Max
);
}
/*****************************************************************************/
}
return
true
;
...
...
radio/SS/ss_config.h
View file @
34090135
...
...
@@ -72,7 +72,7 @@ typedef struct ss_config_s {
int
CBRA_flag
;
int
mac_rlc_data_ind_frame
;
int
mac_rlc_data_ind_subframe
;
ss_l1macind_ctrl_t
l1macind
;
ss_l1macind_ctrl_t
l1macind
[
MAX_NUM_CCs
]
;
uint8_t
CC_conf_flag
[
MAX_NUM_CCs
];
ss_rrc_pdcp_api_t
*
ss_pdcp_api
;
}
ss_config_t
;
...
...
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