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
Michael Black
OpenXG-RAN
Commits
986a9fac
Commit
986a9fac
authored
Mar 16, 2021
by
rmagueta
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed issues to allow coexistence of CFRA and CBRA implementations
parent
8646dd0b
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
191 additions
and
204 deletions
+191
-204
openair2/LAYER2/NR_MAC_UE/nr_l1_helpers.c
openair2/LAYER2/NR_MAC_UE/nr_l1_helpers.c
+4
-10
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
+102
-122
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
+2
-2
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+4
-2
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+27
-16
openair2/RRC/NR/rrc_gNB_reconfig.c
openair2/RRC/NR/rrc_gNB_reconfig.c
+52
-52
No files found.
openair2/LAYER2/NR_MAC_UE/nr_l1_helpers.c
View file @
986a9fac
...
...
@@ -146,17 +146,11 @@ int nr_get_Po_NOMINAL_PUSCH(NR_PRACH_RESOURCES_t *prach_resources, module_id_t m
NR_UE_MAC_INST_t
*
mac
=
get_mac_inst
(
mod_id
);
NR_ServingCellConfigCommon_t
*
scc
=
mac
->
scc
;
int8_t
receivedTargerPower
,
delta_preamble
;
long
preambleReceivedTargetPower
=
0
;
if
(
prach_resources
->
RA_TYPE
==
RA_4STEP
){
NR_RACH_ConfigCommon_t
*
nr_rach_ConfigCommon
=
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
;
preambleReceivedTargetPower
=
nr_rach_ConfigCommon
->
rach_ConfigGeneric
.
preambleReceivedTargetPower
;
}
else
if
(
prach_resources
->
RA_TYPE
==
RA_2STEP
){
// msgA-PreambleReceivedTargetPower
LOG_E
(
MAC
,
"In %s:%d: missing implementation for 2-step RA...
\n
"
,
__FUNCTION__
,
__LINE__
);
}
int8_t
receivedTargerPower
;
int8_t
delta_preamble
;
NR_RACH_ConfigCommon_t
*
nr_rach_ConfigCommon
=
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
;
long
preambleReceivedTargetPower
=
nr_rach_ConfigCommon
->
rach_ConfigGeneric
.
preambleReceivedTargetPower
;
delta_preamble
=
nr_get_DELTA_PREAMBLE
(
mod_id
,
CC_id
,
prach_resources
->
prach_format
);
receivedTargerPower
=
preambleReceivedTargetPower
+
delta_preamble
+
(
prach_resources
->
RA_PREAMBLE_POWER_RAMPING_COUNTER
-
1
)
*
prach_resources
->
RA_PREAMBLE_POWER_RAMPING_STEP
+
prach_resources
->
POWER_OFFSET_2STEP_RA
;
...
...
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
View file @
986a9fac
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
View file @
986a9fac
...
...
@@ -891,13 +891,12 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
uint16_t
TBS_bytes
=
ulcfg_pdu
->
pusch_config_pdu
.
pusch_data
.
tb_size
;
if
(
ra
->
ra_state
==
WAIT_RAR
){
if
(
ra
->
ra_state
==
WAIT_RAR
&&
!
ra
->
cfra
){
memcpy
(
ulsch_input_buffer
,
mac
->
ulsch_pdu
.
payload
,
TBS_bytes
);
LOG_D
(
NR_MAC
,
"[RAPROC] Msg3 to be transmitted:
\n
"
);
for
(
int
k
=
0
;
k
<
TBS_bytes
;
k
++
)
{
LOG_D
(
NR_MAC
,
"(%i): 0x%x
\n
"
,
k
,
mac
->
ulsch_pdu
.
payload
[
k
]);
}
LOG_I
(
NR_MAC
,
"[RAPROC] RA-Msg3 transmitted
\n
"
);
}
else
{
if
(
IS_SOFTMODEM_NOS1
&&
(
mac
->
UL_ndi
[
ulcfg_pdu
->
pusch_config_pdu
.
pusch_data
.
harq_process_id
]
!=
ulcfg_pdu
->
pusch_config_pdu
.
pusch_data
.
new_data_indicator
)){
// Getting IP traffic to be transmitted
...
...
@@ -947,6 +946,7 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
tx_req
.
tx_request_body
[
0
].
pdu
=
ulsch_input_buffer
;
if
(
ra
->
ra_state
!=
RA_SUCCEEDED
&&
!
ra
->
cfra
){
LOG_I
(
NR_MAC
,
"[RAPROC] RA-Msg3 transmitted
\n
"
);
nr_Msg3_transmitted
(
ul_info
->
module_id
,
ul_info
->
cc_id
,
ul_info
->
frame_tx
,
ul_info
->
gNB_index
);
}
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
View file @
986a9fac
...
...
@@ -1033,7 +1033,9 @@ void nr_generate_Msg2(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
nr_get_Msg3alloc
(
module_idP
,
CC_id
,
scc
,
ubwp
,
slotP
,
frameP
,
ra
);
nr_add_msg3
(
module_idP
,
CC_id
,
frameP
,
slotP
,
ra
,
(
uint8_t
*
)
&
tx_req
->
TLVs
[
0
].
value
.
direct
[
0
]);
LOG_I
(
MAC
,
"Frame %d, Subframe %d: Setting RA-Msg3 reception for Frame %d Subframe %d
\n
"
,
frameP
,
slotP
,
ra
->
Msg3_frame
,
ra
->
Msg3_slot
);
if
(
ra
->
cfra
)
{
LOG_I
(
MAC
,
"Frame %d, Subframe %d: Setting RA-Msg3 reception for Frame %d Subframe %d
\n
"
,
frameP
,
slotP
,
ra
->
Msg3_frame
,
ra
->
Msg3_slot
);
}
T
(
T_GNB_MAC_DL_RAR_PDU_WITH_DATA
,
T_INT
(
module_idP
),
T_INT
(
CC_id
),
T_INT
(
ra
->
RA_rnti
),
T_INT
(
frameP
),
T_INT
(
slotP
),
T_INT
(
0
),
T_BUFFER
(
&
tx_req
->
TLVs
[
0
].
value
.
direct
[
0
],
tx_req
->
TLVs
[
0
].
length
));
...
...
@@ -1364,7 +1366,7 @@ void nr_check_Msg4_Ack(module_id_t module_id, int CC_id, frame_t frame, sub_fram
nr_clear_ra_proc
(
module_id
,
CC_id
,
frame
,
ra
);
free
(
ra
->
preambles
.
preamble_list
);
UE_info
->
active
[
UE_id
]
=
true
;
LOG_I
(
NR_MAC
,
"(ue %i, rnti 0x%04x) Received Ack of RA-Msg4. RA procedure succeeded!
\n
"
,
UE_id
,
ra
->
rnti
);
LOG_I
(
NR_MAC
,
"(ue %i, rnti 0x%04x) Received Ack of RA-Msg4.
CB
RA procedure succeeded!
\n
"
,
UE_id
,
ra
->
rnti
);
}
else
{
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
986a9fac
...
...
@@ -513,26 +513,37 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP,
UE_id
,
ra
->
rnti
);
LOG_I
(
NR_MAC
,
"[RAPROC] RA-Msg3 received
\n
"
);
LOG_D
(
NR_MAC
,
"[RAPROC] Received Msg3:
\n
"
);
for
(
int
k
=
0
;
k
<
sdu_lenP
;
k
++
)
{
LOG_D
(
NR_MAC
,
"(%i): 0x%x
\n
"
,
k
,
sduP
[
k
]);
}
if
(
ra
->
cfra
)
{
LOG_I
(
NR_MAC
,
"(ue %i, rnti 0x%04x) CFRA procedure succeeded!
\n
"
,
UE_id
,
ra
->
rnti
);
nr_clear_ra_proc
(
gnb_mod_idP
,
CC_idP
,
frameP
,
ra
);
free
(
ra
->
preambles
.
preamble_list
);
UE_info
->
active
[
UE_id
]
=
true
;
}
else
{
// UE Contention Resolution Identity
// Store the first 48 bits belonging to the uplink CCCH SDU within Msg3 to fill in Msg4
// First byte corresponds to R/LCID MAC sub-header
memcpy
(
ra
->
cont_res_id
,
&
sduP
[
1
],
sizeof
(
uint8_t
)
*
6
);
LOG_I
(
NR_MAC
,
"[RAPROC] RA-Msg3 received
\n
"
);
LOG_I
(
NR_MAC
,
"[RAPROC] Received Msg3:
\n
"
);
for
(
int
k
=
0
;
k
<
sdu_lenP
;
k
++
)
{
LOG_I
(
NR_MAC
,
"(%i): 0x%x
\n
"
,
k
,
sduP
[
k
]);
}
// re-initialize ta update variables afrer RA procedure completion
UE_info
->
UE_sched_ctrl
[
UE_id
].
ta_frame
=
frameP
;
// UE Contention Resolution Identity
// Store the first 48 bits belonging to the uplink CCCH SDU within Msg3 to fill in Msg4
// First byte corresponds to R/LCID MAC sub-header
memcpy
(
ra
->
cont_res_id
,
&
sduP
[
1
],
sizeof
(
uint8_t
)
*
6
);
nr_process_mac_pdu
(
gnb_mod_idP
,
current_rnti
,
CC_idP
,
frameP
,
sduP
,
sdu_lenP
);
// re-initialize ta update variables afrer RA procedure completion
UE_info
->
UE_sched_ctrl
[
UE_id
].
ta_frame
=
frameP
;
ra
->
state
=
Msg4
;
ra
->
Msg4_frame
=
(
frameP
+
2
)
%
1024
;
ra
->
Msg4_slot
=
1
;
LOG_I
(
MAC
,
"Scheduling RA-Msg4 for TC-RNTI %04x (state %d, frame %d, slot %d)
\n
"
,
ra
->
rnti
,
ra
->
state
,
ra
->
Msg4_frame
,
ra
->
Msg4_slot
);
nr_process_mac_pdu
(
gnb_mod_idP
,
current_rnti
,
CC_idP
,
frameP
,
sduP
,
sdu_lenP
);
ra
->
state
=
Msg4
;
ra
->
Msg4_frame
=
(
frameP
+
2
)
%
1024
;
ra
->
Msg4_slot
=
1
;
LOG_I
(
MAC
,
"Scheduling RA-Msg4 for TC-RNTI %04x (state %d, frame %d, slot %d)
\n
"
,
ra
->
rnti
,
ra
->
state
,
ra
->
Msg4_frame
,
ra
->
Msg4_slot
);
}
return
;
}
...
...
openair2/RRC/NR/rrc_gNB_reconfig.c
View file @
986a9fac
...
...
@@ -228,58 +228,58 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
ext1
=
NULL
;
// For 2-step contention-free random access procedure
#if 0
secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated = calloc(1,sizeof(struct NR_ReconfigurationWithSync__rach_ConfigDedicated));
secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->present= NR_ReconfigurationWithSync__rach_ConfigDedicated_PR_uplink;
secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink= calloc(1,sizeof(struct NR_RACH_ConfigDedicated));
secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra= calloc(1,sizeof(struct NR_CFRA));
secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->ra_Prioritization= NULL;
secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->occasions= calloc(1,sizeof(struct NR_CFRA__occasions));
memcpy(&secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->occasions->rach_ConfigGeneric,
&servingcellconfigcommon->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->rach_ConfigGeneric, sizeof(NR_RACH_ConfigGeneric_t));
secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->occasions->ssb_perRACH_Occasion= calloc(1,sizeof(long));
*secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->occasions->ssb_perRACH_Occasion = NR_CFRA__occasions__ssb_perRACH_Occasion_one;
secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->resources.present = NR_CFRA__resources_PR_ssb;
secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->resources.choice.ssb = calloc(1,sizeof(struct NR_CFRA__resources__ssb));
secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->resources.choice.ssb->ra_ssb_OccasionMaskIndex = 0;
struct NR_CFRA_SSB_Resource *ssbElem[8];
ssbElem[0] = calloc(1,sizeof(struct NR_CFRA_SSB_Resource));
ssbElem[0]->ssb = 0;
ssbElem[0]->ra_PreambleIndex = 63;
ASN_SEQUENCE_ADD(&secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->resources.choice.ssb->ssb_ResourceList.list,ssbElem[0]);
ssbElem[1] = calloc(1,sizeof(struct NR_CFRA_SSB_Resource));
ssbElem[1]->ssb = 1;
ssbElem[1]->ra_PreambleIndex = 62;
ASN_SEQUENCE_ADD(&secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->resources.choice.ssb->ssb_ResourceList.list,ssbElem[1]);
ssbElem[2] = calloc(1,sizeof(struct NR_CFRA_SSB_Resource));
ssbElem[2]->ssb = 2;
ssbElem[2]->ra_PreambleIndex = 63;
ASN_SEQUENCE_ADD(&secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->resources.choice.ssb->ssb_ResourceList.list,ssbElem[2]);
ssbElem[3] = calloc(1,sizeof(struct NR_CFRA_SSB_Resource));
ssbElem[3]->ssb = 3;
ssbElem[3]->ra_PreambleIndex = 63;
ASN_SEQUENCE_ADD(&secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->resources.choice.ssb->ssb_ResourceList.list,ssbElem[3]);
ssbElem[4] = calloc(1,sizeof(struct NR_CFRA_SSB_Resource));
ssbElem[4]->ssb = 4;
ssbElem[4]->ra_PreambleIndex = 63;
ASN_SEQUENCE_ADD(&secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->resources.choice.ssb->ssb_ResourceList.list,ssbElem[4]);
ssbElem[5] = calloc(1,sizeof(struct NR_CFRA_SSB_Resource));
ssbElem[5]->ssb = 5;
ssbElem[5]->ra_PreambleIndex = 63;
ASN_SEQUENCE_ADD(&secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->resources.choice.ssb->ssb_ResourceList.list,ssbElem[5]);
ssbElem[6] = calloc(1,sizeof(struct NR_CFRA_SSB_Resource));
ssbElem[6]->ssb = 6;
ssbElem[6]->ra_PreambleIndex = 63;
ASN_SEQUENCE_ADD(&secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->resources.choice.ssb->ssb_ResourceList.list,ssbElem[6]);
ssbElem[7] = calloc(1,sizeof(struct NR_CFRA_SSB_Resource));
ssbElem[7]->ssb = 7;
ssbElem[7]->ra_PreambleIndex = 63;
ASN_SEQUENCE_ADD(&secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->resources.choice.ssb->ssb_ResourceList.list,ssbElem[7]);
secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->ext1 = NULL;
#endif
if
(
get_softmodem_params
()
->
sa
==
0
)
{
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
=
calloc
(
1
,
sizeof
(
struct
NR_ReconfigurationWithSync__rach_ConfigDedicated
));
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
present
=
NR_ReconfigurationWithSync__rach_ConfigDedicated_PR_uplink
;
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
=
calloc
(
1
,
sizeof
(
struct
NR_RACH_ConfigDedicated
));
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
=
calloc
(
1
,
sizeof
(
struct
NR_CFRA
));
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
ra_Prioritization
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
->
occasions
=
calloc
(
1
,
sizeof
(
struct
NR_CFRA__occasions
));
memcpy
(
&
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
->
occasions
->
rach_ConfigGeneric
,
&
servingcellconfigcommon
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
rach_ConfigGeneric
,
sizeof
(
NR_RACH_ConfigGeneric_t
));
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
->
occasions
->
ssb_perRACH_Occasion
=
calloc
(
1
,
sizeof
(
long
));
*
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
->
occasions
->
ssb_perRACH_Occasion
=
NR_CFRA__occasions__ssb_perRACH_Occasion_one
;
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
->
resources
.
present
=
NR_CFRA__resources_PR_ssb
;
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
->
resources
.
choice
.
ssb
=
calloc
(
1
,
sizeof
(
struct
NR_CFRA__resources__ssb
));
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
->
resources
.
choice
.
ssb
->
ra_ssb_OccasionMaskIndex
=
0
;
struct
NR_CFRA_SSB_Resource
*
ssbElem
[
8
];
ssbElem
[
0
]
=
calloc
(
1
,
sizeof
(
struct
NR_CFRA_SSB_Resource
));
ssbElem
[
0
]
->
ssb
=
0
;
ssbElem
[
0
]
->
ra_PreambleIndex
=
63
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
->
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
,
ssbElem
[
0
]);
ssbElem
[
1
]
=
calloc
(
1
,
sizeof
(
struct
NR_CFRA_SSB_Resource
));
ssbElem
[
1
]
->
ssb
=
1
;
ssbElem
[
1
]
->
ra_PreambleIndex
=
62
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
->
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
,
ssbElem
[
1
]);
ssbElem
[
2
]
=
calloc
(
1
,
sizeof
(
struct
NR_CFRA_SSB_Resource
));
ssbElem
[
2
]
->
ssb
=
2
;
ssbElem
[
2
]
->
ra_PreambleIndex
=
63
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
->
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
,
ssbElem
[
2
]);
ssbElem
[
3
]
=
calloc
(
1
,
sizeof
(
struct
NR_CFRA_SSB_Resource
));
ssbElem
[
3
]
->
ssb
=
3
;
ssbElem
[
3
]
->
ra_PreambleIndex
=
63
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
->
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
,
ssbElem
[
3
]);
ssbElem
[
4
]
=
calloc
(
1
,
sizeof
(
struct
NR_CFRA_SSB_Resource
));
ssbElem
[
4
]
->
ssb
=
4
;
ssbElem
[
4
]
->
ra_PreambleIndex
=
63
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
->
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
,
ssbElem
[
4
]);
ssbElem
[
5
]
=
calloc
(
1
,
sizeof
(
struct
NR_CFRA_SSB_Resource
));
ssbElem
[
5
]
->
ssb
=
5
;
ssbElem
[
5
]
->
ra_PreambleIndex
=
63
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
->
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
,
ssbElem
[
5
]);
ssbElem
[
6
]
=
calloc
(
1
,
sizeof
(
struct
NR_CFRA_SSB_Resource
));
ssbElem
[
6
]
->
ssb
=
6
;
ssbElem
[
6
]
->
ra_PreambleIndex
=
63
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
->
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
,
ssbElem
[
6
]);
ssbElem
[
7
]
=
calloc
(
1
,
sizeof
(
struct
NR_CFRA_SSB_Resource
));
ssbElem
[
7
]
->
ssb
=
7
;
ssbElem
[
7
]
->
ra_PreambleIndex
=
63
;
ASN_SEQUENCE_ADD
(
&
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
->
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
,
ssbElem
[
7
]);
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
->
ext1
=
NULL
;
}
secondaryCellGroup
->
spCellConfig
->
rlf_TimersAndConstants
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
rlf_TimersAndConstants
));
secondaryCellGroup
->
spCellConfig
->
rlf_TimersAndConstants
->
present
=
NR_SetupRelease_RLF_TimersAndConstants_PR_setup
;
...
...
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