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