Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wangjie
OpenXG-RAN
Commits
4c1e4740
Commit
4c1e4740
authored
Jan 21, 2021
by
Xue Song
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update F1AP to R16.3.1
parent
73ff5dec
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
315 additions
and
317 deletions
+315
-317
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+5
-5
openair2/F1AP/f1ap_common.h
openair2/F1AP/f1ap_common.h
+3
-12
openair2/F1AP/f1ap_cu_interface_management.c
openair2/F1AP/f1ap_cu_interface_management.c
+32
-22
openair2/F1AP/f1ap_cu_rrc_message_transfer.c
openair2/F1AP/f1ap_cu_rrc_message_transfer.c
+13
-8
openair2/F1AP/f1ap_cu_ue_context_management.c
openair2/F1AP/f1ap_cu_ue_context_management.c
+79
-67
openair2/F1AP/f1ap_du_interface_management.c
openair2/F1AP/f1ap_du_interface_management.c
+168
-190
openair2/F1AP/f1ap_du_rrc_message_transfer.c
openair2/F1AP/f1ap_du_rrc_message_transfer.c
+5
-5
openair2/F1AP/f1ap_du_ue_context_management.c
openair2/F1AP/f1ap_du_ue_context_management.c
+7
-6
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+3
-2
No files found.
cmake_targets/CMakeLists.txt
View file @
4c1e4740
...
...
@@ -788,12 +788,12 @@ add_dependencies(X2AP_ENB X2AP_LIB rrc_flag x2_flag)
# F1AP
##############
add_list1_option
(
F1AP_RELEASE R1
5
"F1AP ASN.1 grammar version"
R15
)
add_list1_option
(
F1AP_RELEASE R1
6
"F1AP ASN.1 grammar version"
R16
)
set
(
F1AP_DIR
${
OPENAIR2_DIR
}
/F1AP
)
if
(
${
F1AP_RELEASE
}
STREQUAL
"R1
5
"
)
make_version
(
F1AP_VERSION 1
5 2
1
)
set
(
ASN1RELDIR R1
5.2
.1
)
endif
(
${
F1AP_RELEASE
}
STREQUAL
"R1
5
"
)
if
(
${
F1AP_RELEASE
}
STREQUAL
"R1
6
"
)
make_version
(
F1AP_VERSION 1
6 3
1
)
set
(
ASN1RELDIR R1
6.3
.1
)
endif
(
${
F1AP_RELEASE
}
STREQUAL
"R1
6
"
)
add_definitions
(
-DF1AP_VERSION=
${
F1AP_VERSION
}
)
set
(
F1AP_ASN_DIR
${
F1AP_DIR
}
/MESSAGES/ASN1/
${
ASN1RELDIR
}
)
set
(
F1AP_ASN_FILES
...
...
openair2/F1AP/f1ap_common.h
View file @
4c1e4740
...
...
@@ -46,7 +46,6 @@
inline
void
ASN_DEBUG
(
const
char
*
fmt
,
...);
#endif
#include "F1AP_Active-Cells-List.h"
#include "F1AP_RAT-FrequencyPriorityInformation.h"
#include "F1AP_DLUPTNLInformation-ToBeSetup-Item.h"
#include "F1AP_PrivateMessage.h"
...
...
@@ -55,6 +54,7 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_NRPCI.h"
#include "F1AP_Transmission-Bandwidth.h"
#include "F1AP_SIB1-message.h"
#include "F1AP_SibtypetobeupdatedListItem.h"
#include "F1AP_GNBCUConfigurationUpdateAcknowledge.h"
#include "F1AP_DRBs-Setup-Item.h"
#include "F1AP_EUTRA-NR-CellResourceCoordinationReqAck-Container.h"
...
...
@@ -75,7 +75,6 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_DRBs-Required-ToBeModified-Item.h"
#include "F1AP_BitRate.h"
#include "F1AP_SRBs-ToBeSetup-List.h"
#include "F1AP_ConcurrentWarningMessageIndicator.h"
#include "F1AP_CriticalityDiagnostics-IE-Item.h"
#include "F1AP_GNB-CU-TNL-Association-To-Update-List.h"
#include "F1AP_DRB-Notify-List.h"
...
...
@@ -85,6 +84,7 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_PWS-Failed-NR-CGI-List.h"
#include "F1AP_InitialULRRCMessageTransfer.h"
#include "F1AP_Served-Cell-Information.h"
#include "F1AP_ServedPLMNs-Item.h"
#include "F1AP_Served-EUTRA-Cells-Information.h"
#include "F1AP_Cells-Broadcast-Cancelled-Item.h"
#include "F1AP_F1SetupRequest.h"
...
...
@@ -128,13 +128,11 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_TransactionID.h"
#include "F1AP_AllocationAndRetentionPriority.h"
#include "F1AP_ShortDRXCycleLength.h"
#include "F1AP_BroadcastPLMNs-Item.h"
#include "F1AP_DRB-Information.h"
#include "F1AP_TimeToWait.h"
#include "F1AP_NonDynamic5QIDescriptor.h"
#include "F1AP_C-RNTI.h"
#include "F1AP_MIB-message.h"
#include "F1AP_SIBtype-Item.h"
#include "F1AP_Served-Cells-To-Modify-List.h"
#include "F1AP_NRCGI.h"
#include "F1AP_DuplicationActivation.h"
...
...
@@ -187,6 +185,7 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_CellULConfigured.h"
#include "F1AP_DRB-Activity.h"
#include "F1AP_GNB-CU-TNL-Association-Failed-To-Setup-Item.h"
#include "F1AP_ProtocolIE-ID.h"
#include "F1AP_PrivateIE-ID.h"
#include "F1AP_WriteReplaceWarningResponse.h"
#include "F1AP_CauseMisc.h"
...
...
@@ -231,9 +230,7 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_SUL-Information.h"
#include "F1AP_CriticalityDiagnostics-IE-List.h"
#include "F1AP_EUTRA-FDD-Info.h"
#include "F1AP_BroadcastPLMNs-List.h"
#include "F1AP_Served-Cells-To-Delete-Item.h"
#include "F1AP_ListofEUTRACellsinGNBDUCoordination.h"
#include "F1AP_Candidate-SpCell-Item.h"
#include "F1AP_Cells-To-Be-Broadcast-List.h"
#include "F1AP_ULRRCMessageTransfer.h"
...
...
@@ -255,7 +252,6 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_SRBs-ToBeReleased-List.h"
#include "F1AP_MeasGapConfig.h"
#include "F1AP_NR-Mode-Info.h"
#include "F1AP_Active-Cells-Item.h"
#include "F1AP_Protected-EUTRA-Resources-List.h"
#include "F1AP_SRBs-FailedToBeSetup-Item.h"
#include "F1AP_ResetAll.h"
...
...
@@ -287,7 +283,6 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_UEContextReleaseRequest.h"
#include "F1AP_GNB-DU-Name.h"
#include "F1AP_DRBs-ToBeModified-Item.h"
#include "F1AP_SIBtype-List.h"
#include "F1AP_EUTRA-NR-CellResourceCoordinationReq-Container.h"
#include "F1AP_DRBs-SetupMod-List.h"
#include "F1AP_DRBs-Required-ToBeModified-List.h"
...
...
@@ -296,7 +291,6 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_PacketDelayBudget.h"
#include "F1AP_GNBCUConfigurationUpdate.h"
#include "F1AP_Cells-Broadcast-Completed-Item.h"
#include "F1AP_RRCRconfigurationCompleteIndicator.h"
#include "F1AP_PagingPriority.h"
#include "F1AP_Cells-Failed-to-be-Activated-List.h"
#include "F1AP_Endpoint-IP-address-and-port.h"
...
...
@@ -306,7 +300,6 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_ResetType.h"
#include "F1AP_FDD-Info.h"
#include "F1AP_DLUPTNLInformation-ToBeSetup-List.h"
#include "F1AP_QoSFlowIndicator.h"
#include "F1AP_NR-CGI-List-For-Restart-List.h"
#include "F1AP_F1SetupResponse.h"
#include "F1AP_UEContextSetupResponse.h"
...
...
@@ -325,7 +318,6 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_Cells-to-be-Barred-List.h"
#include "F1AP_Presence.h"
#include "F1AP_CellBarred.h"
#include "F1AP_SIBtype.h"
#include "F1AP_RequestType.h"
#include "F1AP_NRFreqInfo.h"
#include "F1AP_Potential-SpCell-Item.h"
...
...
@@ -348,7 +340,6 @@ inline void ASN_DEBUG(const char *fmt, ...);
#include "F1AP_GBR-QoSFlowInformation.h"
#include "F1AP_SCellIndex.h"
#include "F1AP_DRBs-SetupMod-Item.h"
#include "F1AP_TransmissionStopIndicator.h"
#include "F1AP_UEContextSetupFailure.h"
#include "F1AP_DRBs-FailedToBeModified-List.h"
#include "F1AP_DRBs-FailedToBeSetupMod-Item.h"
...
...
openair2/F1AP/f1ap_cu_interface_management.c
View file @
4c1e4740
...
...
@@ -140,10 +140,11 @@ int CU_handle_F1_SETUP_REQUEST(instance_t instance,
served_celles_item_p
=
&
(((
F1AP_GNB_DU_Served_Cells_ItemIEs_t
*
)
ie
->
value
.
choice
.
GNB_DU_Served_Cells_List
.
list
.
array
[
i
])
->
value
.
choice
.
GNB_DU_Served_Cells_Item
);
/* tac */
OCTET_STRING_TO_INT16
(
&
(
served_celles_item_p
->
served_Cell_Information
.
fiveGS_TAC
),
F1AP_SETUP_REQ
(
message_p
).
tac
[
i
]);
LOG_D
(
F1AP
,
"F1AP_SETUP_REQ(message_p).tac[%d] %d
\n
"
,
i
,
F1AP_SETUP_REQ
(
message_p
).
tac
[
i
]);
if
(
served_celles_item_p
->
served_Cell_Information
.
fiveGS_TAC
)
{
OCTET_STRING_TO_INT16
(
served_celles_item_p
->
served_Cell_Information
.
fiveGS_TAC
,
F1AP_SETUP_REQ
(
message_p
).
tac
[
i
]);
LOG_D
(
F1AP
,
"F1AP_SETUP_REQ(message_p).tac[%d] %d
\n
"
,
i
,
F1AP_SETUP_REQ
(
message_p
).
tac
[
i
]);
}
/* - nRCGI */
TBCD_TO_MCC_MNC
(
&
(
served_celles_item_p
->
served_Cell_Information
.
nRCGI
.
pLMN_Identity
),
F1AP_SETUP_REQ
(
message_p
).
mcc
[
i
],
F1AP_SETUP_REQ
(
message_p
).
mnc
[
i
],
...
...
@@ -352,7 +353,7 @@ int CU_send_F1_SETUP_RESPONSE(instance_t instance,
/* optional */
/* - gNB-CU System Information */
if
(
1
)
{
if
(
0
)
{
/* 3.1.2 gNB-CUSystem Information */
F1AP_Cells_to_be_Activated_List_ItemExtIEs_t
*
cells_to_be_activated_list_itemExtIEs
;
cells_to_be_activated_list_itemExtIEs
=
(
F1AP_Cells_to_be_Activated_List_ItemExtIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_Cells_to_be_Activated_List_ItemExtIEs_t
));
...
...
@@ -365,20 +366,32 @@ int CU_send_F1_SETUP_RESPONSE(instance_t instance,
//for (int n = 0; n < f1ap_setup_resp->SI_container_length[i][0]; n++)
// printf("%02x ", f1ap_setup_resp->SI_container[i][0][n]);
//printf("\n");
OCTET_STRING_fromBuf
(
&
gNB_CUSystemInformation
->
sImessage
,
(
const
char
*
)
f1ap_setup_resp
->
SI_container
[
i
][
0
],
f1ap_setup_resp
->
SI_container_length
[
i
][
0
]);
LOG_D
(
F1AP
,
"f1ap_setup_resp->SI_container_length = %d
\n
"
,
f1ap_setup_resp
->
SI_container_length
[
0
][
0
]);
if
(
0
)
{
for
(
int
sIBtype
=
2
;
sIBtype
<
33
;
sIBtype
++
)
{
if
(
f1ap_setup_resp
->
SI_container
[
i
][
sIBtype
]
!=
NULL
)
{
AssertFatal
(
sIBtype
<
6
||
sIBtype
==
9
,
"Illegal SI type %d
\n
"
,
sIBtype
);
F1AP_SibtypetobeupdatedListItem_t
*
sib_item
=
calloc
(
1
,
sizeof
(
*
sib_item
));
memset
((
void
*
)
sib_item
,
0
,
sizeof
(
*
sib_item
));
sib_item
->
sIBtype
=
sIBtype
;
OCTET_STRING_fromBuf
(
&
sib_item
->
sIBmessage
,
(
const
char
*
)
f1ap_setup_resp
->
SI_container
[
i
][
sIBtype
],
f1ap_setup_resp
->
SI_container_length
[
i
][
sIBtype
]);
LOG_D
(
F1AP
,
"f1ap_setup_resp->SI_container_length[%d][%d] = %d
\n
"
,
i
,
sIBtype
,
f1ap_setup_resp
->
SI_container_length
[
i
][
sIBtype
]);
ASN_SEQUENCE_ADD
(
&
gNB_CUSystemInformation
->
sibtypetobeupdatedlist
.
list
,
sib_item
);
}
}
}
cells_to_be_activated_list_itemExtIEs
->
extensionValue
.
choice
.
GNB_CUSystemInformation
=
*
gNB_CUSystemInformation
;
F1AP_ProtocolExtensionContainer_1
60P9_t
p_160P9
_t
;
memset
((
void
*
)
&
p_1
60P9_t
,
0
,
sizeof
(
F1AP_ProtocolExtensionContainer_160P9
_t
));
F1AP_ProtocolExtensionContainer_1
54P112_t
p_154P112
_t
;
memset
((
void
*
)
&
p_1
54P112_t
,
0
,
sizeof
(
F1AP_ProtocolExtensionContainer_154P112
_t
));
ASN_SEQUENCE_ADD
(
&
p_1
60P9
_t
.
list
,
ASN_SEQUENCE_ADD
(
&
p_1
54P112
_t
.
list
,
cells_to_be_activated_list_itemExtIEs
);
cells_to_be_activated_list_item
.
iE_Extensions
=
(
struct
F1AP_ProtocolExtensionContainer
*
)
&
p_1
60P9
_t
;
cells_to_be_activated_list_item
.
iE_Extensions
=
(
struct
F1AP_ProtocolExtensionContainer
*
)
&
p_1
54P112
_t
;
free
(
gNB_CUSystemInformation
);
gNB_CUSystemInformation
=
NULL
;
...
...
@@ -838,17 +851,13 @@ int CU_send_gNB_CU_CONFIGURATION_UPDATE(instance_t instance, module_id_t du_mod_
protected_eutra_resources_item_ies
=
(
F1AP_Protected_EUTRA_Resources_ItemIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_Protected_EUTRA_Resources_ItemIEs_t
));
protected_eutra_resources_item_ies
->
id
=
F1AP_ProtocolIE_ID_id_Protected_EUTRA_Resources_List
;
protected_eutra_resources_item_ies
->
criticality
=
F1AP_Criticality_reject
;
protected_eutra_resources_item_ies
->
value
.
present
=
F1AP_Protected_EUTRA_Resources_ItemIEs__value_PR_SpectrumSharingGroupID
;
protected_eutra_resources_item_ies
->
value
.
choice
.
SpectrumSharingGroupID
=
1L
;
protected_eutra_resources_item_ies
->
value
.
present
=
F1AP_Protected_EUTRA_Resources_ItemIEs__value_PR_Protected_EUTRA_Resources_Item
;
((
F1AP_Protected_EUTRA_Resources_Item_t
*
)
&
protected_eutra_resources_item_ies
->
value
.
choice
.
Protected_EUTRA_Resources_Item
)
->
spectrumSharingGroupID
=
123L
;
memset
(
&
protected_eutra_resources_item_ies
->
value
.
choice
.
Protected_EUTRA_Resources_Item
,
0
,
sizeof
(
F1AP_Protected_EUTRA_Resources_Item_t
));
ASN_SEQUENCE_ADD
(
&
ie
->
value
.
choice
.
Protected_EUTRA_Resources_List
.
list
,
protected_eutra_resources_item_ies
);
/* 8.2 ListofEUTRACellsinGNBDUCoordination */
protected_eutra_resources_item_ies
=
(
F1AP_Protected_EUTRA_Resources_ItemIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_Protected_EUTRA_Resources_ItemIEs_t
));
protected_eutra_resources_item_ies
->
id
=
F1AP_ProtocolIE_ID_id_Protected_EUTRA_Resources_List
;
protected_eutra_resources_item_ies
->
criticality
=
F1AP_Criticality_reject
;
protected_eutra_resources_item_ies
->
value
.
present
=
F1AP_Protected_EUTRA_Resources_ItemIEs__value_PR_ListofEUTRACellsinGNBDUCoordination
;
/*
F1AP_Served_EUTRA_Cells_Information_t served_eutra_cells_information;
memset((void *)&served_eutra_cells_information, 0, sizeof(F1AP_Served_EUTRA_Cells_Information_t));
...
...
@@ -879,6 +888,7 @@ int CU_send_gNB_CU_CONFIGURATION_UPDATE(instance_t instance, module_id_t du_mod_
ASN_SEQUENCE_ADD(&protected_eutra_resources_item_ies->value.choice.ListofEUTRACellsinGNBDUCoordination.list, &served_eutra_cells_information);
ASN_SEQUENCE_ADD(&ie->value.choice.Protected_EUTRA_Resources_List.list, protected_eutra_resources_item_ies);
*/
}
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
...
...
openair2/F1AP/f1ap_cu_rrc_message_transfer.c
View file @
4c1e4740
...
...
@@ -109,7 +109,7 @@ int CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
/* RNTI */
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_InitialULRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_C_RNTI
,
true
);
BUFFER_TO_INT16
(
ie
->
value
.
choice
.
C_RNTI
.
buf
,
rnti
)
;
rnti
=
ie
->
value
.
choice
.
C_RNTI
;
/* RRC Container */
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_InitialULRRCMessageTransferIEs_t
,
ie
,
container
,
...
...
@@ -316,19 +316,24 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
/* c7. RAT_FrequencyPriorityInformation */
/* TODO */
if
(
0
)
{
int
endc
=
1
;
ie
=
(
F1AP_DLRRCMessageTransferIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_DLRRCMessageTransferIEs_t
));
ie
->
id
=
F1AP_ProtocolIE_ID_id_RAT_FrequencyPriorityInformation
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_DLRRCMessageTransferIEs__value_PR_RAT_FrequencyPriorityInformation
;
ie
->
value
.
choice
.
RAT_FrequencyPriorityInformation
.
present
=
F1AP_RAT_FrequencyPriorityInformation_PR_subscriberProfileIDforRFP
;
ie
->
value
.
choice
.
RAT_FrequencyPriorityInformation
.
choice
.
subscriberProfileIDforRFP
=
123L
;
//ie->value.choice.RAT_FrequencyPriorityInformation.present = F1AP_RAT_FrequencyPriorityInformation_PR_rAT_FrequencySelectionPriority;
//ie->value.choice.RAT_FrequencyPriorityInformation.choice.rAT_FrequencySelectionPriority = 123L;
if
(
endc
==
1
)
{
ie
->
value
.
choice
.
RAT_FrequencyPriorityInformation
.
present
=
F1AP_RAT_FrequencyPriorityInformation_PR_eNDC
;
ie
->
value
.
choice
.
RAT_FrequencyPriorityInformation
.
choice
.
eNDC
=
123L
;
}
else
{
ie
->
value
.
choice
.
RAT_FrequencyPriorityInformation
.
present
=
F1AP_RAT_FrequencyPriorityInformation_PR_nGRAN
;
ie
->
value
.
choice
.
RAT_FrequencyPriorityInformation
.
choice
.
nGRAN
=
11L
;
}
//ie->value.choice.RAT_FrequencyPriorityInformation.present = F1AP_RAT_FrequencyPriorityInformation_PR_rAT_FrequencySelectionPriority;
//ie->value.choice.RAT_FrequencyPriorityInformation.choice.rAT_FrequencySelectionPriority = 123L;
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
}
/* encode */
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
LOG_E
(
F1AP
,
"Failed to encode F1 DL RRC MESSAGE TRANSFER
\n
"
);
...
...
openair2/F1AP/f1ap_cu_ue_context_management.c
View file @
4c1e4740
...
...
@@ -109,7 +109,7 @@ int CU_send_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
/* mandatory */
/* c4. ServCellIndex */
ie
=
(
F1AP_UEContextSetupRequestIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_UEContextSetupRequestIEs_t
));
ie
->
id
=
F1AP_ProtocolIE_ID_id_ServCellndex
;
ie
->
id
=
F1AP_ProtocolIE_ID_id_ServCell
I
ndex
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_UEContextSetupRequestIEs__value_PR_ServCellIndex
;
ie
->
value
.
choice
.
ServCellIndex
=
2
;
...
...
@@ -380,75 +380,86 @@ if (0) {
}
}
else
{
/* 12.1.2 dRB_Information */
drbs_toBeSetup_item
.
qoSInformation
.
present
=
F1AP_QoSInformation_PR_dRB_Information
;
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
dRB_Information
=
(
F1AP_DRB_Information_t
*
)
calloc
(
1
,
sizeof
(
F1AP_DRB_Information_t
));
/* 12.1.2 DRB_Information */
drbs_toBeSetup_item
.
qoSInformation
.
present
=
F1AP_QoSInformation_PR_choice_extension
;
F1AP_QoSInformation_ExtIEs_t
*
ie
;
ie
=
(
F1AP_QoSInformation_ExtIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_QoS_Characteristics_ExtIEs_t
));
ie
->
id
=
F1AP_ProtocolIE_ID_id_DRB_Information
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_QoSInformation_ExtIEs__value_PR_DRB_Information
;
F1AP_DRB_Information_t
*
DRB_Information
=
&
ie
->
value
.
choice
.
DRB_Information
;
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
choice_extension
=
(
struct
F1AP_ProtocolIE_SingleContainer
*
)
ie
;
/* 12.1.2.1 dRB_QoS */
{
/* qoS_Characteristics */
{
int
some_decide_qoS_characteristics
=
1
;
// BK: Need Check
if
(
some_decide_qoS_characteristics
)
{
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
present
=
F1AP_QoS_Characteristics_PR_non_Dynamic_5QI
;
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
non_Dynamic_5QI
=
(
F1AP_NonDynamic5QIDescriptor_t
*
)
calloc
(
1
,
sizeof
(
F1AP_NonDynamic5QIDescriptor_t
));
D
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
present
=
F1AP_QoS_Characteristics_PR_non_Dynamic_5QI
;
D
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
non_Dynamic_5QI
=
(
F1AP_NonDynamic5QIDescriptor_t
*
)
calloc
(
1
,
sizeof
(
F1AP_NonDynamic5QIDescriptor_t
));
/* fiveQI */
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
non_Dynamic_5QI
->
fiveQI
=
1L
;
D
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
non_Dynamic_5QI
->
fiveQI
=
1L
;
/* OPTIONAL */
/* qoSPriorityLevel */
if
(
0
)
{
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
non_Dynamic_5QI
->
qoSPriorityLevel
=
(
long
*
)
calloc
(
1
,
sizeof
(
long
));
*
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
non_Dynamic_5QI
->
qoSPriorityLevel
=
1L
;
D
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
non_Dynamic_5QI
->
qoSPriorityLevel
=
(
long
*
)
calloc
(
1
,
sizeof
(
long
));
*
D
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
non_Dynamic_5QI
->
qoSPriorityLevel
=
1L
;
}
/* OPTIONAL */
/* averagingWindow */
if
(
0
)
{
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
non_Dynamic_5QI
->
averagingWindow
=
(
F1AP_AveragingWindow_t
*
)
calloc
(
1
,
sizeof
(
F1AP_AveragingWindow_t
));
*
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
non_Dynamic_5QI
->
averagingWindow
=
1L
;
D
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
non_Dynamic_5QI
->
averagingWindow
=
(
F1AP_AveragingWindow_t
*
)
calloc
(
1
,
sizeof
(
F1AP_AveragingWindow_t
));
*
D
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
non_Dynamic_5QI
->
averagingWindow
=
1L
;
}
/* OPTIONAL */
/* maxDataBurstVolume */
if
(
0
)
{
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
non_Dynamic_5QI
->
maxDataBurstVolume
=
(
F1AP_MaxDataBurstVolume_t
*
)
calloc
(
1
,
sizeof
(
F1AP_MaxDataBurstVolume_t
));
*
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
non_Dynamic_5QI
->
maxDataBurstVolume
=
1L
;
D
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
non_Dynamic_5QI
->
maxDataBurstVolume
=
(
F1AP_MaxDataBurstVolume_t
*
)
calloc
(
1
,
sizeof
(
F1AP_MaxDataBurstVolume_t
));
*
D
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
non_Dynamic_5QI
->
maxDataBurstVolume
=
1L
;
}
}
else
{
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
present
=
F1AP_QoS_Characteristics_PR_dynamic_5QI
;
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
dynamic_5QI
=
(
F1AP_Dynamic5QIDescriptor_t
*
)
calloc
(
1
,
sizeof
(
F1AP_Dynamic5QIDescriptor_t
));
D
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
present
=
F1AP_QoS_Characteristics_PR_dynamic_5QI
;
D
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
dynamic_5QI
=
(
F1AP_Dynamic5QIDescriptor_t
*
)
calloc
(
1
,
sizeof
(
F1AP_Dynamic5QIDescriptor_t
));
/* qoSPriorityLevel */
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
qoSPriorityLevel
=
1L
;
D
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
qoSPriorityLevel
=
1L
;
/* packetDelayBudget */
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
packetDelayBudget
=
1L
;
D
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
packetDelayBudget
=
1L
;
/* packetErrorRate */
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
dRB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
packetErrorRate
=
1L
;
DRB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
packetErrorRate
.
pER_Scalar
=
1L
;
DRB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
packetErrorRate
.
pER_Exponent
=
6L
;
/* OPTIONAL */
/* delayCritical */
if
(
0
)
{
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
delayCritical
=
(
long
*
)
calloc
(
1
,
sizeof
(
long
));
*
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
delayCritical
=
1L
;
D
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
delayCritical
=
(
long
*
)
calloc
(
1
,
sizeof
(
long
));
*
D
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
delayCritical
=
1L
;
}
/* OPTIONAL */
/* averagingWindow */
if
(
0
)
{
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
averagingWindow
=
(
F1AP_AveragingWindow_t
*
)
calloc
(
1
,
sizeof
(
F1AP_AveragingWindow_t
));
*
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
averagingWindow
=
1L
;
D
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
averagingWindow
=
(
F1AP_AveragingWindow_t
*
)
calloc
(
1
,
sizeof
(
F1AP_AveragingWindow_t
));
*
D
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
averagingWindow
=
1L
;
}
/* OPTIONAL */
/* maxDataBurstVolume */
if
(
0
)
{
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
maxDataBurstVolume
=
(
F1AP_MaxDataBurstVolume_t
*
)
calloc
(
1
,
sizeof
(
F1AP_MaxDataBurstVolume_t
));
*
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
maxDataBurstVolume
=
1L
;
D
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
maxDataBurstVolume
=
(
F1AP_MaxDataBurstVolume_t
*
)
calloc
(
1
,
sizeof
(
F1AP_MaxDataBurstVolume_t
));
*
D
RB_Information
->
dRB_QoS
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
maxDataBurstVolume
=
1L
;
}
}
// if some_decide_qoS_characteristics
...
...
@@ -457,32 +468,32 @@ if (0) {
/* nGRANallocationRetentionPriority */
{
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
nGRANallocationRetentionPriority
.
priorityLevel
=
F1AP_PriorityLevel_highest
;
// enum
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
nGRANallocationRetentionPriority
.
pre_emptionCapability
=
F1AP_Pre_emptionCapability_shall_not_trigger_pre_emption
;
// enum
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
nGRANallocationRetentionPriority
.
pre_emptionVulnerability
=
F1AP_Pre_emptionVulnerability_not_pre_emptable
;
// enum
D
RB_Information
->
dRB_QoS
.
nGRANallocationRetentionPriority
.
priorityLevel
=
F1AP_PriorityLevel_highest
;
// enum
D
RB_Information
->
dRB_QoS
.
nGRANallocationRetentionPriority
.
pre_emptionCapability
=
F1AP_Pre_emptionCapability_shall_not_trigger_pre_emption
;
// enum
D
RB_Information
->
dRB_QoS
.
nGRANallocationRetentionPriority
.
pre_emptionVulnerability
=
F1AP_Pre_emptionVulnerability_not_pre_emptable
;
// enum
}
// nGRANallocationRetentionPriority
/* OPTIONAL */
/* gBR_QoS_Flow_Information */
if
(
0
)
{
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
gBR_QoS_Flow_Information
=
(
F1AP_GBR_QoSFlowInformation_t
*
)
calloc
(
1
,
sizeof
(
F1AP_GBR_QoSFlowInformation_t
));
asn_long2INTEGER
(
&
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
gBR_QoS_Flow_Information
->
maxFlowBitRateDownlink
,
1L
);
asn_long2INTEGER
(
&
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
gBR_QoS_Flow_Information
->
maxFlowBitRateUplink
,
1L
);
asn_long2INTEGER
(
&
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
gBR_QoS_Flow_Information
->
guaranteedFlowBitRateDownlink
,
1L
);
asn_long2INTEGER
(
&
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
gBR_QoS_Flow_Information
->
guaranteedFlowBitRateUplink
,
1L
);
D
RB_Information
->
dRB_QoS
.
gBR_QoS_Flow_Information
=
(
F1AP_GBR_QoSFlowInformation_t
*
)
calloc
(
1
,
sizeof
(
F1AP_GBR_QoSFlowInformation_t
));
asn_long2INTEGER
(
&
D
RB_Information
->
dRB_QoS
.
gBR_QoS_Flow_Information
->
maxFlowBitRateDownlink
,
1L
);
asn_long2INTEGER
(
&
D
RB_Information
->
dRB_QoS
.
gBR_QoS_Flow_Information
->
maxFlowBitRateUplink
,
1L
);
asn_long2INTEGER
(
&
D
RB_Information
->
dRB_QoS
.
gBR_QoS_Flow_Information
->
guaranteedFlowBitRateDownlink
,
1L
);
asn_long2INTEGER
(
&
D
RB_Information
->
dRB_QoS
.
gBR_QoS_Flow_Information
->
guaranteedFlowBitRateUplink
,
1L
);
/* OPTIONAL */
/* maxPacketLossRateDownlink */
if
(
0
)
{
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
gBR_QoS_Flow_Information
->
maxPacketLossRateDownlink
=
(
F1AP_MaxPacketLossRate_t
*
)
calloc
(
1
,
sizeof
(
F1AP_MaxPacketLossRate_t
));
*
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
gBR_QoS_Flow_Information
->
maxPacketLossRateDownlink
=
1L
;
D
RB_Information
->
dRB_QoS
.
gBR_QoS_Flow_Information
->
maxPacketLossRateDownlink
=
(
F1AP_MaxPacketLossRate_t
*
)
calloc
(
1
,
sizeof
(
F1AP_MaxPacketLossRate_t
));
*
D
RB_Information
->
dRB_QoS
.
gBR_QoS_Flow_Information
->
maxPacketLossRateDownlink
=
1L
;
}
/* OPTIONAL */
/* maxPacketLossRateUplink */
if
(
0
)
{
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
gBR_QoS_Flow_Information
->
maxPacketLossRateUplink
=
(
F1AP_MaxPacketLossRate_t
*
)
calloc
(
1
,
sizeof
(
F1AP_MaxPacketLossRate_t
));
*
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
gBR_QoS_Flow_Information
->
maxPacketLossRateUplink
=
1L
;
D
RB_Information
->
dRB_QoS
.
gBR_QoS_Flow_Information
->
maxPacketLossRateUplink
=
(
F1AP_MaxPacketLossRate_t
*
)
calloc
(
1
,
sizeof
(
F1AP_MaxPacketLossRate_t
));
*
D
RB_Information
->
dRB_QoS
.
gBR_QoS_Flow_Information
->
maxPacketLossRateUplink
=
1L
;
}
}
...
...
@@ -490,8 +501,8 @@ if (0) {
/* OPTIONAL */
/* reflective_QoS_Attribute */
if
(
0
)
{
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
reflective_QoS_Attribute
=
(
long
*
)
calloc
(
1
,
sizeof
(
long
));
*
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
dRB_QoS
.
reflective_QoS_Attribute
=
1L
;
D
RB_Information
->
dRB_QoS
.
reflective_QoS_Attribute
=
(
long
*
)
calloc
(
1
,
sizeof
(
long
));
*
D
RB_Information
->
dRB_QoS
.
reflective_QoS_Attribute
=
1L
;
}
}
// dRB_QoS
...
...
@@ -499,21 +510,21 @@ if (0) {
/* 12.1.2.2 sNSSAI */
{
/* sST */
OCTET_STRING_fromBuf
(
&
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
sNSSAI
.
sST
,
"asdsa1d32sa1d31asd31as"
,
OCTET_STRING_fromBuf
(
&
D
RB_Information
->
sNSSAI
.
sST
,
"asdsa1d32sa1d31asd31as"
,
strlen
(
"asdsa1d32sa1d31asd31as"
));
/* OPTIONAL */
/* sD */
if
(
0
)
{
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
sNSSAI
.
sD
=
(
OCTET_STRING_t
*
)
calloc
(
1
,
sizeof
(
OCTET_STRING_t
));
OCTET_STRING_fromBuf
(
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
sNSSAI
.
sD
,
"asdsa1d32sa1d31asd31as"
,
D
RB_Information
->
sNSSAI
.
sD
=
(
OCTET_STRING_t
*
)
calloc
(
1
,
sizeof
(
OCTET_STRING_t
));
OCTET_STRING_fromBuf
(
D
RB_Information
->
sNSSAI
.
sD
,
"asdsa1d32sa1d31asd31as"
,
strlen
(
"asdsa1d32sa1d31asd31as"
));
}
}
/* OPTIONAL */
/* 12.1.2.3 notificationControl */
if
(
0
)
{
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
notificationControl
=
(
F1AP_NotificationControl_t
*
)
calloc
(
1
,
sizeof
(
F1AP_NotificationControl_t
));
*
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
notificationControl
=
F1AP_NotificationControl_active
;
// enum
D
RB_Information
->
notificationControl
=
(
F1AP_NotificationControl_t
*
)
calloc
(
1
,
sizeof
(
F1AP_NotificationControl_t
));
*
D
RB_Information
->
notificationControl
=
F1AP_NotificationControl_active
;
// enum
}
/* 12.1.2.4 flows_Mapped_To_DRB_List */
// BK: need verifiy
...
...
@@ -524,7 +535,7 @@ if (0) {
memset
((
void
*
)
&
flows_mapped_to_drb_item
,
0
,
sizeof
(
F1AP_Flows_Mapped_To_DRB_Item_t
));
/* qoSFlowIndicator */
flows_mapped_to_drb_item
.
qoSFlowI
ndicato
r
=
1L
;
flows_mapped_to_drb_item
.
qoSFlowI
dentifie
r
=
1L
;
/* qoSFlowLevelQoSParameters */
{
...
...
@@ -570,8 +581,8 @@ if (0) {
flows_mapped_to_drb_item
.
qoSFlowLevelQoSParameters
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
packetDelayBudget
=
1L
;
/* packetErrorRate */
flows_mapped_to_drb_item
.
qoSFlowLevelQoSParameters
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
packetErrorRate
=
1L
;
flows_mapped_to_drb_item
.
qoSFlowLevelQoSParameters
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
packetErrorRate
.
pER_Scalar
=
1L
;
flows_mapped_to_drb_item
.
qoSFlowLevelQoSParameters
.
qoS_Characteristics
.
choice
.
dynamic_5QI
->
packetErrorRate
.
pER_Exponent
=
6L
;
/* OPTIONAL */
/* delayCritical */
if
(
0
)
{
...
...
@@ -638,7 +649,7 @@ if (0) {
}
// qoSFlowLevelQoSParameters
// BK: need check
ASN_SEQUENCE_ADD
(
&
drbs_toBeSetup_item
.
qoSInformation
.
choice
.
d
RB_Information
->
flows_Mapped_To_DRB_List
.
list
,
&
flows_mapped_to_drb_item
);
ASN_SEQUENCE_ADD
(
&
D
RB_Information
->
flows_Mapped_To_DRB_List
.
list
,
&
flows_mapped_to_drb_item
);
}
}
// if some_decide_qos
...
...
@@ -673,7 +684,7 @@ if (0) {
drbs_toBeSetup_item
.
rLCMode
=
F1AP_RLCMode_rlc_am
;
break
;
default:
drbs_toBeSetup_item
.
rLCMode
=
F1AP_RLCMode_rlc_um
;
drbs_toBeSetup_item
.
rLCMode
=
F1AP_RLCMode_rlc_um
_bidirectional
;
}
/* OPTIONAL */
...
...
@@ -717,13 +728,13 @@ if (0) {
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_UEContextSetupRequestIEs__value_PR_RAT_FrequencyPriorityInformation
;
int
some_decide_rat
=
1
;
// BK: Need Check
if
(
some_decide_rat
)
{
ie
->
value
.
choice
.
RAT_FrequencyPriorityInformation
.
present
=
F1AP_RAT_FrequencyPriorityInformation_PR_
subscriberProfileIDforRFP
;
ie
->
value
.
choice
.
RAT_FrequencyPriorityInformation
.
choice
.
subscriberProfileIDforRFP
=
11L
;
int
endc
=
1
;
// RK: Get this from somewhere ...
if
(
endc
)
{
ie
->
value
.
choice
.
RAT_FrequencyPriorityInformation
.
present
=
F1AP_RAT_FrequencyPriorityInformation_PR_
eNDC
;
ie
->
value
.
choice
.
RAT_FrequencyPriorityInformation
.
choice
.
eNDC
=
11L
;
}
else
{
ie
->
value
.
choice
.
RAT_FrequencyPriorityInformation
.
present
=
F1AP_RAT_FrequencyPriorityInformation_PR_
rAT_FrequencySelectionPriority
;
ie
->
value
.
choice
.
RAT_FrequencyPriorityInformation
.
choice
.
rAT_FrequencySelectionPriority
=
11L
;
ie
->
value
.
choice
.
RAT_FrequencyPriorityInformation
.
present
=
F1AP_RAT_FrequencyPriorityInformation_PR_
nGRAN
;
ie
->
value
.
choice
.
RAT_FrequencyPriorityInformation
.
choice
.
nGRAN
=
11L
;
}
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
}
...
...
@@ -1120,7 +1131,7 @@ int CU_send_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance) {
/* mandatory */
/* c4. ServCellIndex */
ie
=
(
F1AP_UEContextModificationRequestIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_UEContextModificationRequestIEs_t
));
ie
->
id
=
F1AP_ProtocolIE_ID_id_ServCellndex
;
ie
->
id
=
F1AP_ProtocolIE_ID_id_ServCell
I
ndex
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_UEContextModificationRequestIEs__value_PR_ServCellIndex
;
ie
->
value
.
choice
.
ServCellIndex
=
5L
;
...
...
@@ -1164,13 +1175,13 @@ int CU_send_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance) {
}
/* optional */
/* c6. Transmission
Stop
Indicator */
/* c6. Transmission
Action
Indicator */
if
(
1
)
{
ie
=
(
F1AP_UEContextModificationRequestIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_UEContextModificationRequestIEs_t
));
ie
->
id
=
F1AP_ProtocolIE_ID_id_Transmission
Stop
Indicator
;
ie
->
id
=
F1AP_ProtocolIE_ID_id_Transmission
Action
Indicator
;
ie
->
criticality
=
F1AP_Criticality_ignore
;
ie
->
value
.
present
=
F1AP_UEContextModificationRequestIEs__value_PR_Transmission
Stop
Indicator
;
ie
->
value
.
choice
.
Transmission
StopIndicator
=
F1AP_TransmissionStopIndicator_true
;
ie
->
value
.
present
=
F1AP_UEContextModificationRequestIEs__value_PR_Transmission
Action
Indicator
;
ie
->
value
.
choice
.
Transmission
ActionIndicator
=
F1AP_TransmissionActionIndicator_stop
;
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
}
...
...
@@ -1190,10 +1201,10 @@ int CU_send_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance) {
/* c7. RRCRconfigurationCompleteIndicator */
if
(
1
)
{
ie
=
(
F1AP_UEContextModificationRequestIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_UEContextModificationRequestIEs_t
));
ie
->
id
=
F1AP_ProtocolIE_ID_id_RRCRconfigurationCompleteIndicator
;
ie
->
id
=
F1AP_ProtocolIE_ID_id_RRCR
e
configurationCompleteIndicator
;
ie
->
criticality
=
F1AP_Criticality_ignore
;
ie
->
value
.
present
=
F1AP_UEContextModificationRequestIEs__value_PR_RRCRconfigurationCompleteIndicator
;
ie
->
value
.
choice
.
RRCR
configurationCompleteIndicator
=
F1AP_RRCR
configurationCompleteIndicator_true
;
ie
->
value
.
present
=
F1AP_UEContextModificationRequestIEs__value_PR_RRCR
e
configurationCompleteIndicator
;
ie
->
value
.
choice
.
RRCR
econfigurationCompleteIndicator
=
F1AP_RRCRe
configurationCompleteIndicator_true
;
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
}
...
...
@@ -1375,7 +1386,7 @@ int CU_send_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance) {
}
/* rLCMode */
drbs_toBeSetupMod_item
.
rLCMode
=
F1AP_RLCMode_rlc_um
;
// enum
drbs_toBeSetupMod_item
.
rLCMode
=
F1AP_RLCMode_rlc_um
_bidirectional
;
// enum
/* OPTIONAL */
/* ULConfiguration */
...
...
@@ -1416,9 +1427,10 @@ int CU_send_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance) {
drbs_toBeModified_item
.
dRBID
=
30L
;
/* qoSInformation */
drbs_toBeModified_item
.
qoSInformation
.
present
=
F1AP_QoSInformation_PR_eUTRANQoS
;
drbs_toBeModified_item
.
qoSInformation
.
choice
.
eUTRANQoS
=
(
F1AP_EUTRANQoS_t
*
)
calloc
(
1
,
sizeof
(
F1AP_EUTRANQoS_t
));
drbs_toBeModified_item
.
qoSInformation
.
choice
.
eUTRANQoS
->
qCI
=
254L
;
drbs_toBeModified_item
.
qoSInformation
=
calloc
(
1
,
sizeof
(
*
drbs_toBeModified_item
.
qoSInformation
));
drbs_toBeModified_item
.
qoSInformation
->
present
=
F1AP_QoSInformation_PR_eUTRANQoS
;
drbs_toBeModified_item
.
qoSInformation
->
choice
.
eUTRANQoS
=
(
F1AP_EUTRANQoS_t
*
)
calloc
(
1
,
sizeof
(
F1AP_EUTRANQoS_t
));
drbs_toBeModified_item
.
qoSInformation
->
choice
.
eUTRANQoS
->
qCI
=
254L
;
/* ULTunnels_ToBeModified_List */
int
j
=
0
;
...
...
openair2/F1AP/f1ap_du_interface_management.c
View file @
4c1e4740
...
...
@@ -95,7 +95,6 @@ int DU_send_F1_SETUP_REQUEST(instance_t instance) {
uint8_t
*
buffer
;
uint32_t
len
;
int
i
=
0
;
int
j
=
0
;
/* Create */
/* 0. pdu Type */
...
...
@@ -189,7 +188,7 @@ int DU_send_F1_SETUP_REQUEST(instance_t instance) {
served_cell_information
.
nRPCI
=
f1ap_du_data
->
nr_pci
[
i
];
// int 0..1007
/* - fiveGS_TAC */
OCTET_STRING_fromBuf
(
&
served_cell_information
.
fiveGS_TAC
,
OCTET_STRING_fromBuf
(
served_cell_information
.
fiveGS_TAC
,
(
const
char
*
)
&
f1ap_du_data
->
tac
[
i
],
3
);
...
...
@@ -201,19 +200,11 @@ int DU_send_F1_SETUP_REQUEST(instance_t instance) {
2
);
}
/* - broadcast PLMNs */
// RK: add the num_available_broadcast_PLMNs to the message
int
num_available_broadcast_PLMNs
=
1
;
//f1ap_du_data->num_available_broadcast_PLMNs;
LOG_D
(
F1AP
,
"num_available_broadcast_PLMNs = %d
\n
"
,
num_available_broadcast_PLMNs
);
for
(
j
=
0
;
j
<
num_available_broadcast_PLMNs
;
// num_available_broadcast_PLMNs
j
++
)
{
/* > PLMN BroadcastPLMNs Item */
F1AP_BroadcastPLMNs_Item_t
*
broadcastPLMNs_Item
=
(
F1AP_BroadcastPLMNs_Item_t
*
)
calloc
(
1
,
sizeof
(
F1AP_BroadcastPLMNs_Item_t
));
//MCC_MNC_TO_PLMNID(208, 95, 2, &broadcastPLMNs_Item->pLMN_Identity);
MCC_MNC_TO_PLMNID
(
f1ap_du_data
->
mcc
[
i
],
f1ap_du_data
->
mnc
[
i
],
f1ap_du_data
->
mnc_digit_length
[
i
],
&
broadcastPLMNs_Item
->
pLMN_Identity
);
ASN_SEQUENCE_ADD
(
&
served_cell_information
.
servedPLMNs
.
list
,
broadcastPLMNs_Item
);
}
/* servedPLMN information */
F1AP_ServedPLMNs_Item_t
*
servedPLMN_item
=
calloc
(
1
,
sizeof
(
*
servedPLMN_item
));
memset
(
servedPLMN_item
,
0
,
sizeof
(
*
servedPLMN_item
));
MCC_MNC_TO_PLMNID
(
f1ap_du_data
->
mcc
[
i
],
f1ap_du_data
->
mnc
[
i
],
f1ap_du_data
->
mnc_digit_length
[
i
],
&
servedPLMN_item
->
pLMN_Identity
);
ASN_SEQUENCE_ADD
(
&
served_cell_information
.
servedPLMNs
.
list
,
servedPLMN_item
);
// // /* - CHOICE NR-MODE-Info */
F1AP_NR_Mode_Info_t
nR_Mode_Info
;
...
...
@@ -425,120 +416,154 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
F1AP_F1AP_PDU_t
*
pdu
)
{
LOG_D
(
F1AP
,
"DU_handle_F1_SETUP_RESPONSE
\n
"
);
AssertFatal
(
pdu
->
present
==
F1AP_F1AP_PDU_PR_successfulOutcome
,
"pdu->present != F1AP_F1AP_PDU_PR_successfulOutcome
\n
"
);
AssertFatal
(
pdu
->
choice
.
successfulOutcome
->
procedureCode
==
F1AP_ProcedureCode_id_F1Setup
,
"pdu->choice.successfulOutcome->procedureCode != F1AP_ProcedureCode_id_F1Setup
\n
"
);
AssertFatal
(
pdu
->
choice
.
successfulOutcome
->
criticality
==
F1AP_Criticality_reject
,
"pdu->choice.successfulOutcome->criticality != F1AP_Criticality_reject
\n
"
);
AssertFatal
(
pdu
->
choice
.
successfulOutcome
->
value
.
present
==
F1AP_SuccessfulOutcome__value_PR_F1SetupResponse
,
"pdu->choice.successfulOutcome->value.present != F1AP_SuccessfulOutcome__value_PR_F1SetupResponse
\n
"
);
F1AP_F1SetupResponse_t
*
in
=
&
pdu
->
choice
.
successfulOutcome
->
value
.
choice
.
F1SetupResponse
;
F1AP_F1SetupResponseIEs_t
*
ie
;
int
TransactionId
=
-
1
;
int
num_cells_to_activate
=
0
;
F1AP_Cells_to_be_Activated_List_Item_t
*
cell
;
MessageDef
*
msg_p
=
itti_alloc_new_message
(
TASK_DU_F1
,
F1AP_SETUP_RESP
);
LOG_D
(
F1AP
,
"F1AP: F1Setup-Resp: protocolIEs.list.count %d
\n
"
,
in
->
protocolIEs
.
list
.
count
);
for
(
int
i
=
0
;
i
<
in
->
protocolIEs
.
list
.
count
;
i
++
)
{
ie
=
in
->
protocolIEs
.
list
.
array
[
i
];
switch
(
ie
->
id
)
{
case
F1AP_ProtocolIE_ID_id_TransactionID
:
AssertFatal
(
ie
->
criticality
==
F1AP_Criticality_reject
,
"ie->criticality != F1AP_Criticality_reject
\n
"
);
AssertFatal
(
ie
->
value
.
present
==
F1AP_F1SetupResponseIEs__value_PR_TransactionID
,
"ie->value.present != F1AP_F1SetupResponseIEs__value_PR_TransactionID
\n
"
);
TransactionId
=
ie
->
value
.
choice
.
TransactionID
;
LOG_D
(
F1AP
,
"F1AP: F1Setup-Resp: TransactionId %d
\n
"
,
TransactionId
);
break
;
case
F1AP_ProtocolIE_ID_id_gNB_CU_Name
:
AssertFatal
(
ie
->
criticality
==
F1AP_Criticality_ignore
,
"ie->criticality != F1AP_Criticality_ignore
\n
"
);
AssertFatal
(
ie
->
value
.
present
==
F1AP_F1SetupResponseIEs__value_PR_GNB_CU_Name
,
"ie->value.present != F1AP_F1SetupResponseIEs__value_PR_TransactionID
\n
"
);
F1AP_SETUP_RESP
(
msg_p
).
gNB_CU_name
=
malloc
(
ie
->
value
.
choice
.
GNB_CU_Name
.
size
+
1
);
memcpy
(
F1AP_SETUP_RESP
(
msg_p
).
gNB_CU_name
,
ie
->
value
.
choice
.
GNB_CU_Name
.
buf
,
ie
->
value
.
choice
.
GNB_CU_Name
.
size
);
F1AP_SETUP_RESP
(
msg_p
).
gNB_CU_name
[
ie
->
value
.
choice
.
GNB_CU_Name
.
size
]
=
'\0'
;
LOG_D
(
F1AP
,
"F1AP: F1Setup-Resp: gNB_CU_name %s
\n
"
,
F1AP_SETUP_RESP
(
msg_p
).
gNB_CU_name
);
break
;
case
F1AP_ProtocolIE_ID_id_Cells_to_be_Activated_List
:
AssertFatal
(
ie
->
criticality
==
F1AP_Criticality_reject
,
"ie->criticality != F1AP_Criticality_reject
\n
"
);
AssertFatal
(
ie
->
value
.
present
==
F1AP_F1SetupResponseIEs__value_PR_Cells_to_be_Activated_List
,
"ie->value.present != F1AP_F1SetupResponseIEs__value_PR_Cells_to_be_Activated_List
\n
"
);
num_cells_to_activate
=
ie
->
value
.
choice
.
Cells_to_be_Activated_List
.
list
.
count
;
LOG_D
(
F1AP
,
"F1AP: Activating %d cells
\n
"
,
num_cells_to_activate
);
for
(
int
i
=
0
;
i
<
num_cells_to_activate
;
i
++
)
{
F1AP_Cells_to_be_Activated_List_ItemIEs_t
*
cells_to_be_activated_list_item_ies
=
(
F1AP_Cells_to_be_Activated_List_ItemIEs_t
*
)
ie
->
value
.
choice
.
Cells_to_be_Activated_List
.
list
.
array
[
i
];
AssertFatal
(
cells_to_be_activated_list_item_ies
->
id
==
F1AP_ProtocolIE_ID_id_Cells_to_be_Activated_List_Item
,
"cells_to_be_activated_list_item_ies->id != F1AP_ProtocolIE_ID_id_Cells_to_be_Activated_List_Item"
);
AssertFatal
(
cells_to_be_activated_list_item_ies
->
criticality
==
F1AP_Criticality_reject
,
"cells_to_be_activated_list_item_ies->criticality == F1AP_Criticality_reject"
);
AssertFatal
(
cells_to_be_activated_list_item_ies
->
value
.
present
==
F1AP_Cells_to_be_Activated_List_ItemIEs__value_PR_Cells_to_be_Activated_List_Item
,
"cells_to_be_activated_list_item_ies->value.present == F1AP_Cells_to_be_Activated_List_ItemIEs__value_PR_Cells_to_be_Activated_List_Item"
);
cell
=
&
cells_to_be_activated_list_item_ies
->
value
.
choice
.
Cells_to_be_Activated_List_Item
;
TBCD_TO_MCC_MNC
(
&
cell
->
nRCGI
.
pLMN_Identity
,
F1AP_SETUP_RESP
(
msg_p
).
mcc
[
i
],
F1AP_SETUP_RESP
(
msg_p
).
mnc
[
i
],
F1AP_SETUP_RESP
(
msg_p
).
mnc_digit_length
[
i
]);
AssertFatal
(
cell
->
nRPCI
!=
NULL
,
"nRPCI is null
\n
"
);
LOG_D
(
F1AP
,
"nr_cellId : %x %x %x %x %x
\n
"
,
cell
->
nRCGI
.
nRCellIdentity
.
buf
[
0
],
cell
->
nRCGI
.
nRCellIdentity
.
buf
[
1
],
cell
->
nRCGI
.
nRCellIdentity
.
buf
[
2
],
cell
->
nRCGI
.
nRCellIdentity
.
buf
[
3
],
cell
->
nRCGI
.
nRCellIdentity
.
buf
[
4
]);
BIT_STRING_TO_NR_CELL_IDENTITY
(
&
cell
->
nRCGI
.
nRCellIdentity
,
F1AP_SETUP_RESP
(
msg_p
).
nr_cellid
[
i
]);
F1AP_SETUP_RESP
(
msg_p
).
nrpci
[
i
]
=
*
cell
->
nRPCI
;
F1AP_ProtocolExtensionContainer_160P9_t
*
ext
=
(
F1AP_ProtocolExtensionContainer_160P9_t
*
)
cell
->
iE_Extensions
;
AssertFatal
(
ext
!=
NULL
,
"Extension for SI is null
\n
"
);
F1AP_SETUP_RESP
(
msg_p
).
num_SI
[
i
]
=
ext
->
list
.
count
;
AssertFatal
(
ext
->
list
.
count
==
1
,
"At least one SI message should be there, and only 1 for now!
\n
"
);
LOG_D
(
F1AP
,
"F1AP: F1Setup-Resp Cell %d MCC %d MNC %d NRCellid %lx num_si %d
\n
"
,
i
,
F1AP_SETUP_RESP
(
msg_p
).
mcc
[
i
],
F1AP_SETUP_RESP
(
msg_p
).
mnc
[
i
],
F1AP_SETUP_RESP
(
msg_p
).
nr_cellid
[
i
],
F1AP_SETUP_RESP
(
msg_p
).
num_SI
[
i
]);
for
(
int
si
=
0
;
si
<
ext
->
list
.
count
;
si
++
)
{
size_t
size
=
ext
->
list
.
array
[
si
]
->
extensionValue
.
choice
.
GNB_CUSystemInformation
.
sImessage
.
size
;
F1AP_SETUP_RESP
(
msg_p
).
SI_container_length
[
i
][
si
]
=
size
;
LOG_D
(
F1AP
,
"F1AP: F1Setup-Resp SI_container_length[%d][%d] %ld bytes
\n
"
,
i
,
si
,
size
);
F1AP_SETUP_RESP
(
msg_p
).
SI_container
[
i
][
si
]
=
malloc
(
F1AP_SETUP_RESP
(
msg_p
).
SI_container_length
[
i
][
si
]);
memcpy
((
void
*
)
F1AP_SETUP_RESP
(
msg_p
).
SI_container
[
i
][
si
],
(
void
*
)
ext
->
list
.
array
[
si
]
->
extensionValue
.
choice
.
GNB_CUSystemInformation
.
sImessage
.
buf
,
F1AP_SETUP_RESP
(
msg_p
).
SI_container_length
[
i
][
si
]);
}
}
break
;
}
}
AssertFatal
(
TransactionId
!=-
1
,
"TransactionId was not sent
\n
"
);
AssertFatal
(
num_cells_to_activate
>
0
,
"No cells activated
\n
"
);
F1AP_SETUP_RESP
(
msg_p
).
num_cells_to_activate
=
num_cells_to_activate
;
for
(
int
i
=
0
;
i
<
num_cells_to_activate
;
i
++
)
AssertFatal
(
F1AP_SETUP_RESP
(
msg_p
).
num_SI
[
i
]
>
0
,
"System Information %d is missing"
,
i
);
MSC_LOG_RX_MESSAGE
(
MSC_F1AP_DU
,
MSC_F1AP_CU
,
0
,
0
,
MSC_AS_TIME_FMT
" DU_handle_F1_SETUP_RESPONSE successfulOutcome assoc_id %d"
,
0
,
0
,
//MSC_AS_TIME_ARGS(ctxt_pP),
assoc_id
);
LOG_D
(
F1AP
,
"DU_handle_F1_SETUP_RESPONSE
\n
"
);
AssertFatal
(
pdu
->
present
==
F1AP_F1AP_PDU_PR_successfulOutcome
,
"pdu->present != F1AP_F1AP_PDU_PR_successfulOutcome
\n
"
);
AssertFatal
(
pdu
->
choice
.
successfulOutcome
->
procedureCode
==
F1AP_ProcedureCode_id_F1Setup
,
"pdu->choice.successfulOutcome->procedureCode != F1AP_ProcedureCode_id_F1Setup
\n
"
);
AssertFatal
(
pdu
->
choice
.
successfulOutcome
->
criticality
==
F1AP_Criticality_reject
,
"pdu->choice.successfulOutcome->criticality != F1AP_Criticality_reject
\n
"
);
AssertFatal
(
pdu
->
choice
.
successfulOutcome
->
value
.
present
==
F1AP_SuccessfulOutcome__value_PR_F1SetupResponse
,
"pdu->choice.successfulOutcome->value.present != F1AP_SuccessfulOutcome__value_PR_F1SetupResponse
\n
"
);
F1AP_F1SetupResponse_t
*
in
=
&
pdu
->
choice
.
successfulOutcome
->
value
.
choice
.
F1SetupResponse
;
F1AP_F1SetupResponseIEs_t
*
ie
;
int
TransactionId
=
-
1
;
int
num_cells_to_activate
=
0
;
F1AP_Cells_to_be_Activated_List_Item_t
*
cell
;
MessageDef
*
msg_p
=
itti_alloc_new_message
(
TASK_DU_F1
,
F1AP_SETUP_RESP
);
LOG_D
(
F1AP
,
"F1AP: F1Setup-Resp: protocolIEs.list.count %d
\n
"
,
in
->
protocolIEs
.
list
.
count
);
for
(
int
i
=
0
;
i
<
in
->
protocolIEs
.
list
.
count
;
i
++
)
{
ie
=
in
->
protocolIEs
.
list
.
array
[
i
];
switch
(
ie
->
id
)
{
case
F1AP_ProtocolIE_ID_id_TransactionID
:
AssertFatal
(
ie
->
criticality
==
F1AP_Criticality_reject
,
"ie->criticality != F1AP_Criticality_reject
\n
"
);
AssertFatal
(
ie
->
value
.
present
==
F1AP_F1SetupResponseIEs__value_PR_TransactionID
,
"ie->value.present != F1AP_F1SetupResponseIEs__value_PR_TransactionID
\n
"
);
TransactionId
=
ie
->
value
.
choice
.
TransactionID
;
LOG_D
(
F1AP
,
"F1AP: F1Setup-Resp: TransactionId %d
\n
"
,
TransactionId
);
break
;
case
F1AP_ProtocolIE_ID_id_gNB_CU_Name
:
AssertFatal
(
ie
->
criticality
==
F1AP_Criticality_ignore
,
"ie->criticality != F1AP_Criticality_ignore
\n
"
);
AssertFatal
(
ie
->
value
.
present
==
F1AP_F1SetupResponseIEs__value_PR_GNB_CU_Name
,
"ie->value.present != F1AP_F1SetupResponseIEs__value_PR_TransactionID
\n
"
);
F1AP_SETUP_RESP
(
msg_p
).
gNB_CU_name
=
malloc
(
ie
->
value
.
choice
.
GNB_CU_Name
.
size
+
1
);
memcpy
(
F1AP_SETUP_RESP
(
msg_p
).
gNB_CU_name
,
ie
->
value
.
choice
.
GNB_CU_Name
.
buf
,
ie
->
value
.
choice
.
GNB_CU_Name
.
size
);
F1AP_SETUP_RESP
(
msg_p
).
gNB_CU_name
[
ie
->
value
.
choice
.
GNB_CU_Name
.
size
]
=
'\0'
;
LOG_D
(
F1AP
,
"F1AP: F1Setup-Resp: gNB_CU_name %s
\n
"
,
F1AP_SETUP_RESP
(
msg_p
).
gNB_CU_name
);
break
;
case
F1AP_ProtocolIE_ID_id_Cells_to_be_Activated_List
:
AssertFatal
(
ie
->
criticality
==
F1AP_Criticality_reject
,
"ie->criticality != F1AP_Criticality_reject
\n
"
);
AssertFatal
(
ie
->
value
.
present
==
F1AP_F1SetupResponseIEs__value_PR_Cells_to_be_Activated_List
,
"ie->value.present != F1AP_F1SetupResponseIEs__value_PR_Cells_to_be_Activated_List
\n
"
);
num_cells_to_activate
=
ie
->
value
.
choice
.
Cells_to_be_Activated_List
.
list
.
count
;
LOG_D
(
F1AP
,
"F1AP: Activating %d cells
\n
"
,
num_cells_to_activate
);
for
(
int
i
=
0
;
i
<
num_cells_to_activate
;
i
++
)
{
F1AP_Cells_to_be_Activated_List_ItemIEs_t
*
cells_to_be_activated_list_item_ies
=
(
F1AP_Cells_to_be_Activated_List_ItemIEs_t
*
)
ie
->
value
.
choice
.
Cells_to_be_Activated_List
.
list
.
array
[
i
];
AssertFatal
(
cells_to_be_activated_list_item_ies
->
id
==
F1AP_ProtocolIE_ID_id_Cells_to_be_Activated_List_Item
,
"cells_to_be_activated_list_item_ies->id != F1AP_ProtocolIE_ID_id_Cells_to_be_Activated_List_Item"
);
AssertFatal
(
cells_to_be_activated_list_item_ies
->
criticality
==
F1AP_Criticality_reject
,
"cells_to_be_activated_list_item_ies->criticality == F1AP_Criticality_reject"
);
AssertFatal
(
cells_to_be_activated_list_item_ies
->
value
.
present
==
F1AP_Cells_to_be_Activated_List_ItemIEs__value_PR_Cells_to_be_Activated_List_Item
,
"cells_to_be_activated_list_item_ies->value.present == F1AP_Cells_to_be_Activated_List_ItemIEs__value_PR_Cells_to_be_Activated_List_Item"
);
cell
=
&
cells_to_be_activated_list_item_ies
->
value
.
choice
.
Cells_to_be_Activated_List_Item
;
TBCD_TO_MCC_MNC
(
&
cell
->
nRCGI
.
pLMN_Identity
,
F1AP_SETUP_RESP
(
msg_p
).
mcc
[
i
],
F1AP_SETUP_RESP
(
msg_p
).
mnc
[
i
],
F1AP_SETUP_RESP
(
msg_p
).
mnc_digit_length
[
i
]);
AssertFatal
(
cell
->
nRPCI
!=
NULL
,
"nRPCI is null
\n
"
);
LOG_D
(
F1AP
,
"nr_cellId : %x %x %x %x %x
\n
"
,
cell
->
nRCGI
.
nRCellIdentity
.
buf
[
0
],
cell
->
nRCGI
.
nRCellIdentity
.
buf
[
1
],
cell
->
nRCGI
.
nRCellIdentity
.
buf
[
2
],
cell
->
nRCGI
.
nRCellIdentity
.
buf
[
3
],
cell
->
nRCGI
.
nRCellIdentity
.
buf
[
4
]);
BIT_STRING_TO_NR_CELL_IDENTITY
(
&
cell
->
nRCGI
.
nRCellIdentity
,
F1AP_SETUP_RESP
(
msg_p
).
nr_cellid
[
i
]);
F1AP_SETUP_RESP
(
msg_p
).
nrpci
[
i
]
=
*
cell
->
nRPCI
;
if
(
0
)
{
F1AP_ProtocolExtensionContainer_154P112_t
*
ext
=
(
F1AP_ProtocolExtensionContainer_154P112_t
*
)
cell
->
iE_Extensions
;
AssertFatal
(
ext
!=
NULL
,
"Extension is null
\n
"
);
for
(
int
cnt
=
0
;
cnt
<
ext
->
list
.
count
;
cnt
++
)
{
F1AP_Cells_to_be_Activated_List_ItemExtIEs_t
*
cells_to_be_activated_list_itemExtIEs
=
(
F1AP_Cells_to_be_Activated_List_ItemExtIEs_t
*
)
ext
->
list
.
array
[
cnt
];
switch
(
cells_to_be_activated_list_itemExtIEs
->
id
)
{
/*
case F1AP_Cells_to_be_Activated_List_ItemExtIEs__extensionValue_PR_NOTHING:
case F1AP_Cells_to_be_Activated_List_ItemExtIEs__extensionValue_PR_GNB_CUSystemInformation,
case F1AP_Cells_to_be_Activated_List_ItemExtIEs__extensionValue_PR_AvailablePLMNList,
case F1AP_Cells_to_be_Activated_List_ItemExtIEs__extensionValue_PR_ExtendedAvailablePLMN_List,
case F1AP_Cells_to_be_Activated_List_ItemExtIEs__extensionValue_PR_IAB_Info_IAB_donor_CU,
case F1AP_Cells_to_be_Activated_List_ItemExtIEs__extensionValue_PR_AvailableSNPN_ID_List
*/
case
F1AP_ProtocolIE_ID_id_gNB_CUSystemInformation
:
{
F1AP_GNB_CUSystemInformation_t
*
gNB_CUSystemInformation
=
(
F1AP_GNB_CUSystemInformation_t
*
)
&
cells_to_be_activated_list_itemExtIEs
->
extensionValue
.
choice
.
GNB_CUSystemInformation
;
F1AP_SETUP_RESP
(
msg_p
).
num_SI
[
i
]
=
gNB_CUSystemInformation
->
sibtypetobeupdatedlist
.
list
.
count
;
AssertFatal
(
ext
->
list
.
count
==
1
,
"At least one SI message should be there, and only 1 for now!
\n
"
);
LOG_D
(
F1AP
,
"F1AP: F1Setup-Resp Cell %d MCC %d MNC %d NRCellid %lx num_si %d
\n
"
,
i
,
F1AP_SETUP_RESP
(
msg_p
).
mcc
[
i
],
F1AP_SETUP_RESP
(
msg_p
).
mnc
[
i
],
F1AP_SETUP_RESP
(
msg_p
).
nr_cellid
[
i
],
F1AP_SETUP_RESP
(
msg_p
).
num_SI
[
i
]);
for
(
int
si
=
0
;
si
<
gNB_CUSystemInformation
->
sibtypetobeupdatedlist
.
list
.
count
;
si
++
)
{
F1AP_SibtypetobeupdatedListItem_t
*
sib_item
=
gNB_CUSystemInformation
->
sibtypetobeupdatedlist
.
list
.
array
[
si
];
size_t
size
=
sib_item
->
sIBmessage
.
size
;
F1AP_SETUP_RESP
(
msg_p
).
SI_container_length
[
i
][
si
]
=
size
;
LOG_D
(
F1AP
,
"F1AP: F1Setup-Resp SI_container_length[%d][%d] %ld bytes
\n
"
,
i
,
(
int
)
sib_item
->
sIBtype
,
size
);
F1AP_SETUP_RESP
(
msg_p
).
SI_container
[
i
][
si
]
=
malloc
(
F1AP_SETUP_RESP
(
msg_p
).
SI_container_length
[
i
][
si
]);
memcpy
((
void
*
)
F1AP_SETUP_RESP
(
msg_p
).
SI_container
[
i
][
sib_item
->
sIBtype
],
(
void
*
)
sib_item
->
sIBmessage
.
buf
,
size
);
}
}
break
;
case
F1AP_ProtocolIE_ID_id_AvailablePLMNList
:
AssertFatal
(
1
==
0
,
"F1AP_ProtocolIE_ID_id_AvailablePLMNList not supported yet
\n
"
);
break
;
case
F1AP_ProtocolIE_ID_id_ExtendedAvailablePLMN_List
:
AssertFatal
(
1
==
0
,
"F1AP_ProtocolIE_ID_id_AvailablePLMNList not supported yet
\n
"
);
break
;
case
F1AP_ProtocolIE_ID_id_IAB_Info_IAB_donor_CU
:
AssertFatal
(
1
==
0
,
"F1AP_ProtocolIE_ID_id_AvailablePLMNList not supported yet
\n
"
);
break
;
case
F1AP_ProtocolIE_ID_id_AvailableSNPN_ID_List
:
AssertFatal
(
1
==
0
,
"F1AP_ProtocolIE_ID_id_AvailablePLMNList not supported yet
\n
"
);
break
;
default:
AssertFatal
(
1
==
0
,
"F1AP_ProtocolIE_ID_id %d unknown
\n
"
,(
int
)
cells_to_be_activated_list_itemExtIEs
->
id
);
break
;
}
}
// for (cnt=...
}
}
// for (cells_to_activate...
}
// switch ie
}
// for IE
AssertFatal
(
TransactionId
!=-
1
,
"TransactionId was not sent
\n
"
);
AssertFatal
(
num_cells_to_activate
>
0
,
"No cells activated
\n
"
);
F1AP_SETUP_RESP
(
msg_p
).
num_cells_to_activate
=
num_cells_to_activate
;
// tmp
F1AP_SETUP_RESP
(
msg_p
).
num_SI
[
0
]
=
1
;
for
(
int
i
=
0
;
i
<
num_cells_to_activate
;
i
++
)
AssertFatal
(
F1AP_SETUP_RESP
(
msg_p
).
num_SI
[
i
]
>
0
,
"System Information %d is missing"
,
i
);
MSC_LOG_RX_MESSAGE
(
MSC_F1AP_DU
,
MSC_F1AP_CU
,
0
,
0
,
MSC_AS_TIME_FMT
" DU_handle_F1_SETUP_RESPONSE successfulOutcome assoc_id %d"
,
0
,
0
,
//MSC_AS_TIME_ARGS(ctxt_pP),
assoc_id
);
if
(
RC
.
nrrrc
[
0
]
->
node_type
==
ngran_gNB_DU
)
{
LOG_D
(
F1AP
,
"Sending F1AP_SETUP_RESP ITTI message to GNB_APP with assoc_id (%d->%d)
\n
"
,
...
...
@@ -550,7 +575,7 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
itti_send_msg_to_task
(
TASK_ENB_APP
,
ENB_MODULE_ID_TO_INSTANCE
(
assoc_id
),
msg_p
);
}
return
0
;
return
0
;
}
// SETUP FAILURE
...
...
@@ -661,7 +686,7 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance,
served_cell_information
.
nRPCI
=
f1ap_setup_req
->
nr_pci
[
i
];
// int 0..1007
/* - fiveGS_TAC */
OCTET_STRING_fromBuf
(
&
served_cell_information
.
fiveGS_TAC
,
OCTET_STRING_fromBuf
(
served_cell_information
.
fiveGS_TAC
,
(
const
char
*
)
&
f1ap_setup_req
->
tac
[
i
],
3
);
...
...
@@ -673,17 +698,11 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance,
2
);
}
/* - broadcast PLMNs */
int
maxnoofBPLMNS
=
1
;
for
(
i
=
0
;
i
<
maxnoofBPLMNS
;
i
++
)
{
/* > PLMN BroadcastPLMNs Item */
F1AP_BroadcastPLMNs_Item_t
*
broadcastPLMNs_Item
=
(
F1AP_BroadcastPLMNs_Item_t
*
)
calloc
(
1
,
sizeof
(
F1AP_BroadcastPLMNs_Item_t
));
//memset((void *)&broadcastPLMNs_Item, 0, sizeof(F1AP_BroadcastPLMNs_Item_t));
MCC_MNC_TO_PLMNID
(
f1ap_setup_req
->
mcc
[
i
],
f1ap_setup_req
->
mnc
[
i
],
f1ap_setup_req
->
mnc_digit_length
[
i
],
&
broadcastPLMNs_Item
->
pLMN_Identity
);
ASN_SEQUENCE_ADD
(
&
served_cell_information
.
servedPLMNs
.
list
,
broadcastPLMNs_Item
);
}
F1AP_ServedPLMNs_Item_t
*
servedPLMN_item
=
calloc
(
1
,
sizeof
(
*
servedPLMN_item
));
memset
(
servedPLMN_item
,
0
,
sizeof
(
*
servedPLMN_item
));
MCC_MNC_TO_PLMNID
(
f1ap_du_data
->
mcc
[
i
],
f1ap_du_data
->
mnc
[
i
],
f1ap_du_data
->
mnc_digit_length
[
i
],
&
servedPLMN_item
->
pLMN_Identity
);
ASN_SEQUENCE_ADD
(
&
served_cell_information
.
servedPLMNs
.
list
,
servedPLMN_item
);
// // /* - CHOICE NR-MODE-Info */
F1AP_NR_Mode_Info_t
nR_Mode_Info
;
...
...
@@ -829,7 +848,7 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance,
served_cell_information
.
nRPCI
=
f1ap_setup_req
->
nr_pci
[
i
];
// int 0..1007
/* - fiveGS_TAC */
OCTET_STRING_fromBuf
(
&
served_cell_information
.
fiveGS_TAC
,
OCTET_STRING_fromBuf
(
served_cell_information
.
fiveGS_TAC
,
(
const
char
*
)
&
f1ap_setup_req
->
tac
[
i
],
3
);
...
...
@@ -841,17 +860,12 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance,
2
);
}
/* - broadcast PLMNs */
int
maxnoofBPLMNS
=
1
;
for
(
i
=
0
;
i
<
maxnoofBPLMNS
;
i
++
)
{
/* > PLMN BroadcastPLMNs Item */
F1AP_BroadcastPLMNs_Item_t
*
broadcastPLMNs_Item
=
(
F1AP_BroadcastPLMNs_Item_t
*
)
calloc
(
1
,
sizeof
(
F1AP_BroadcastPLMNs_Item_t
));
//memset((void *)&broadcastPLMNs_Item, 0, sizeof(F1AP_BroadcastPLMNs_Item_t));
MCC_MNC_TO_PLMNID
(
f1ap_setup_req
->
mcc
[
i
],
f1ap_setup_req
->
mnc
[
i
],
f1ap_setup_req
->
mnc_digit_length
[
i
],
&
broadcastPLMNs_Item
->
pLMN_Identity
);
ASN_SEQUENCE_ADD
(
&
served_cell_information
.
servedPLMNs
.
list
,
broadcastPLMNs_Item
);
}
F1AP_ServedPLMNs_Item_t
*
servedPLMN_item
=
calloc
(
1
,
sizeof
(
*
servedPLMN_item
));
memset
(
servedPLMN_item
,
0
,
sizeof
(
*
servedPLMN_item
));
MCC_MNC_TO_PLMNID
(
f1ap_du_data
->
mcc
[
i
],
f1ap_du_data
->
mnc
[
i
],
f1ap_du_data
->
mnc_digit_length
[
i
],
&
servedPLMN_item
->
pLMN_Identity
);
ASN_SEQUENCE_ADD
(
&
served_cell_information
.
servedPLMNs
.
list
,
servedPLMN_item
);
// // /* - CHOICE NR-MODE-Info */
F1AP_NR_Mode_Info_t
nR_Mode_Info
;
...
...
@@ -989,42 +1003,6 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance,
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
/* mandatory */
/* c5. Active_Cells_List */
ie
=
(
F1AP_GNBDUConfigurationUpdateIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_GNBDUConfigurationUpdateIEs_t
));
ie
->
id
=
F1AP_ProtocolIE_ID_id_Active_Cells_List
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_GNBDUConfigurationUpdateIEs__value_PR_Active_Cells_List
;
for
(
i
=
0
;
i
<
1
;
i
++
)
{
//
F1AP_Active_Cells_ItemIEs_t
*
active_cells_item_ies
;
active_cells_item_ies
=
(
F1AP_Active_Cells_ItemIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_Active_Cells_ItemIEs_t
));
active_cells_item_ies
->
id
=
F1AP_ProtocolIE_ID_id_Active_Cells_Item
;
active_cells_item_ies
->
criticality
=
F1AP_Criticality_reject
;
active_cells_item_ies
->
value
.
present
=
F1AP_Active_Cells_ItemIEs__value_PR_Active_Cells_Item
;
F1AP_Active_Cells_Item_t
active_cells_item
;
memset
((
void
*
)
&
active_cells_item
,
0
,
sizeof
(
F1AP_Active_Cells_Item_t
));
/* 3.1 oldNRCGI */
F1AP_NRCGI_t
nRCGI
;
memset
(
&
nRCGI
,
0
,
sizeof
(
F1AP_NRCGI_t
));
MCC_MNC_TO_PLMNID
(
f1ap_setup_req
->
mcc
[
i
],
f1ap_setup_req
->
mnc
[
i
],
f1ap_setup_req
->
mnc_digit_length
[
i
],
&
nRCGI
.
pLMN_Identity
);
NR_CELL_ID_TO_BIT_STRING
(
f1ap_setup_req
->
nr_cellid
[
i
],
&
nRCGI
.
nRCellIdentity
);
active_cells_item
.
nRCGI
=
nRCGI
;
/* ADD */
active_cells_item_ies
->
value
.
choice
.
Active_Cells_Item
=
active_cells_item
;
ASN_SEQUENCE_ADD
(
&
ie
->
value
.
choice
.
Active_Cells_List
.
list
,
active_cells_item_ies
);
}
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
LOG_E
(
F1AP
,
"Failed to encode F1 gNB-DU CONFIGURATION UPDATE
\n
"
);
...
...
openair2/F1AP/f1ap_du_rrc_message_transfer.c
View file @
4c1e4740
...
...
@@ -179,10 +179,10 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
F1AP_ProtocolIE_ID_id_RAT_FrequencyPriorityInformation
,
true
);
switch
(
ie
->
value
.
choice
.
RAT_FrequencyPriorityInformation
.
present
)
{
case
F1AP_RAT_FrequencyPriorityInformation_PR_
subscriberProfileIDforRFP
:
case
F1AP_RAT_FrequencyPriorityInformation_PR_
eNDC
:
//subscriberProfileIDforRFP = ie->value.choice.RAT_FrequencyPriorityInformation.choice.subscriberProfileIDforRFP;
break
;
case
F1AP_RAT_FrequencyPriorityInformation_PR_
rAT_FrequencySelectionPriority
:
case
F1AP_RAT_FrequencyPriorityInformation_PR_
nGRAN
:
//rAT_FrequencySelectionPriority = ie->value.choice.RAT_FrequencyPriorityInformation.choice.rAT_FrequencySelectionPriority;
break
;
default:
...
...
@@ -854,7 +854,7 @@ int DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER(module_id_t module_idP,
ie
->
id
=
F1AP_ProtocolIE_ID_id_C_RNTI
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_InitialULRRCMessageTransferIEs__value_PR_C_RNTI
;
C_RNTI_TO_BIT_STRING
(
rntiP
,
&
ie
->
value
.
choice
.
C_RNTI
)
;
ie
->
value
.
choice
.
C_RNTI
=
rntiP
;
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
/* mandatory */
...
...
@@ -1218,10 +1218,10 @@ int DU_handle_DL_NR_RRC_MESSAGE_TRANSFER(instance_t instance,
F1AP_ProtocolIE_ID_id_RAT_FrequencyPriorityInformation
,
true
);
switch
(
ie
->
value
.
choice
.
RAT_FrequencyPriorityInformation
.
present
)
{
case
F1AP_RAT_FrequencyPriorityInformation_PR_
subscriberProfileIDforRFP
:
case
F1AP_RAT_FrequencyPriorityInformation_PR_
eNDC
:
//subscriberProfileIDforRFP = ie->value.choice.RAT_FrequencyPriorityInformation.choice.subscriberProfileIDforRFP;
break
;
case
F1AP_RAT_FrequencyPriorityInformation_PR_
rAT_FrequencySelectionPriority
:
case
F1AP_RAT_FrequencyPriorityInformation_PR_
nGRAN
:
//rAT_FrequencySelectionPriority = ie->value.choice.RAT_FrequencyPriorityInformation.choice.rAT_FrequencySelectionPriority;
break
;
default:
...
...
openair2/F1AP/f1ap_du_ue_context_management.c
View file @
4c1e4740
...
...
@@ -91,7 +91,7 @@ int DU_handle_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
BIT_STRING_TO_NR_CELL_IDENTITY
(
&
ie
->
value
.
choice
.
NRCGI
.
nRCellIdentity
,
f1ap_ue_context_setup_req
->
nr_cellid
);
/* ServCellIndex */
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_UEContextSetupRequestIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_ServCellndex
,
true
);
F1AP_ProtocolIE_ID_id_ServCell
I
ndex
,
true
);
f1ap_ue_context_setup_req
->
servCellIndex
=
ie
->
value
.
choice
.
ServCellIndex
;
/* optional */
/* CellULConfigured */
...
...
@@ -256,7 +256,8 @@ int DU_send_UE_CONTEXT_SETUP_RESPONSE(instance_t instance) {
ie
->
id
=
F1AP_ProtocolIE_ID_id_C_RNTI
;
ie
->
criticality
=
F1AP_Criticality_ignore
;
ie
->
value
.
present
=
F1AP_UEContextSetupResponseIEs__value_PR_C_RNTI
;
C_RNTI_TO_BIT_STRING
(
rntiP
,
&
ie
->
value
.
choice
.
C_RNTI
);
//C_RNTI_TO_BIT_STRING(rntiP, &ie->value.choice.C_RNTI);
ie
->
value
.
choice
.
C_RNTI
=
rntiP
;
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
}
...
...
@@ -1045,7 +1046,7 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance) {
srbs_failedToBeSetupMod_item
.
sRBID
=
50L
;
srbs_failedToBeSetupMod_item
.
cause
=
(
F1AP_Cause_t
*
)
calloc
(
1
,
sizeof
(
F1AP_Cause_t
));
srbs_failedToBeSetupMod_item
.
cause
->
present
=
F1AP_Cause_PR_radioNetwork
;
srbs_failedToBeSetupMod_item
.
cause
->
choice
.
radioNetwork
=
F1AP_CauseRadioNetwork_unknown_or_already_allocated_gn
d
_du_ue_f1ap_id
;
srbs_failedToBeSetupMod_item
.
cause
->
choice
.
radioNetwork
=
F1AP_CauseRadioNetwork_unknown_or_already_allocated_gn
b
_du_ue_f1ap_id
;
/* ADD */
srbs_failedToBeSetupMod_item_ies
->
value
.
choice
.
SRBs_FailedToBeSetupMod_Item
=
srbs_failedToBeSetupMod_item
;
ASN_SEQUENCE_ADD
(
&
ie
->
value
.
choice
.
SRBs_FailedToBeSetupMod_List
.
list
,
...
...
@@ -1076,7 +1077,7 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance) {
drbs_failedToBeSetupMod_item
.
dRBID
=
30L
;
drbs_failedToBeSetupMod_item
.
cause
=
(
F1AP_Cause_t
*
)
calloc
(
1
,
sizeof
(
F1AP_Cause_t
));
drbs_failedToBeSetupMod_item
.
cause
->
present
=
F1AP_Cause_PR_radioNetwork
;
drbs_failedToBeSetupMod_item
.
cause
->
choice
.
radioNetwork
=
F1AP_CauseRadioNetwork_unknown_or_already_allocated_gn
d
_du_ue_f1ap_id
;
drbs_failedToBeSetupMod_item
.
cause
->
choice
.
radioNetwork
=
F1AP_CauseRadioNetwork_unknown_or_already_allocated_gn
b
_du_ue_f1ap_id
;
/* ADD */
drbs_failedToBeSetupMod_item_ies
->
value
.
choice
.
DRBs_FailedToBeSetupMod_Item
=
drbs_failedToBeSetupMod_item
;
ASN_SEQUENCE_ADD
(
&
ie
->
value
.
choice
.
DRBs_FailedToBeSetupMod_List
.
list
,
...
...
@@ -1112,7 +1113,7 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance) {
scell_failedtoSetupMod_item
.
sCell_ID
=
nRCGI
;
scell_failedtoSetupMod_item
.
cause
=
(
F1AP_Cause_t
*
)
calloc
(
1
,
sizeof
(
F1AP_Cause_t
));
scell_failedtoSetupMod_item
.
cause
->
present
=
F1AP_Cause_PR_radioNetwork
;
scell_failedtoSetupMod_item
.
cause
->
choice
.
radioNetwork
=
F1AP_CauseRadioNetwork_unknown_or_already_allocated_gn
d
_du_ue_f1ap_id
;
scell_failedtoSetupMod_item
.
cause
->
choice
.
radioNetwork
=
F1AP_CauseRadioNetwork_unknown_or_already_allocated_gn
b
_du_ue_f1ap_id
;
/* ADD */
scell_failedtoSetupMod_item_ies
->
value
.
choice
.
SCell_FailedtoSetupMod_Item
=
scell_failedtoSetupMod_item
;
ASN_SEQUENCE_ADD
(
&
ie
->
value
.
choice
.
SCell_FailedtoSetupMod_List
.
list
,
...
...
@@ -1143,7 +1144,7 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance) {
drbs_failedToBeModified_item
.
dRBID
=
30L
;
drbs_failedToBeModified_item
.
cause
=
(
F1AP_Cause_t
*
)
calloc
(
1
,
sizeof
(
F1AP_Cause_t
));
drbs_failedToBeModified_item
.
cause
->
present
=
F1AP_Cause_PR_radioNetwork
;
drbs_failedToBeModified_item
.
cause
->
choice
.
radioNetwork
=
F1AP_CauseRadioNetwork_unknown_or_already_allocated_gn
d
_du_ue_f1ap_id
;
drbs_failedToBeModified_item
.
cause
->
choice
.
radioNetwork
=
F1AP_CauseRadioNetwork_unknown_or_already_allocated_gn
b
_du_ue_f1ap_id
;
/* ADD */
drbs_failedToBeModified_item_ies
->
value
.
choice
.
DRBs_FailedToBeModified_Item
=
drbs_failedToBeModified_item
;
ASN_SEQUENCE_ADD
(
&
ie
->
value
.
choice
.
DRBs_FailedToBeModified_List
.
list
,
...
...
openair2/RRC/NR/rrc_gNB.c
View file @
4c1e4740
...
...
@@ -218,7 +218,6 @@ static void init_NR_SI(gNB_RRC_INST *rrc, gNB_RrcConfigurationReq *configuration
rrc
->
carrier
.
sizeof_SIB1
=
do_SIB1_NR
(
&
rrc
->
carrier
,
configuration
);
LOG_I
(
NR_RRC
,
"Done init_NR_SI
\n
"
);
if
(
!
NODE_IS_CU
(
RC
.
nrrrc
[
0
]
->
node_type
)){
printf
(
"################ init_NR_SI rrc_mac_config_req_gNB
\n
"
);
rrc_mac_config_req_gNB
(
rrc
->
module_id
,
rrc
->
carrier
.
ssb_SubcarrierOffset
,
rrc
->
carrier
.
pdsch_AntennaPorts
,
...
...
@@ -277,7 +276,9 @@ static void init_NR_SI(gNB_RRC_INST *rrc, gNB_RrcConfigurationReq *configuration
}
else
{
struct
rrc_gNB_ue_context_s
*
ue_context_p
=
rrc_gNB_allocate_new_UE_context
(
rrc
);
LOG_I
(
NR_RRC
,
"Adding new user (%p)
\n
"
,
ue_context_p
);
// rrc_add_nsa_user(rrc,ue_context_p,NULL);
if
(
!
NODE_IS_CU
(
RC
.
nrrrc
[
0
]
->
node_type
))
{
rrc_add_nsa_user
(
rrc
,
ue_context_p
,
NULL
);
}
}
}
}
...
...
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