Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lizhongxiao
OpenXG-RAN
Commits
84d8f6c2
Commit
84d8f6c2
authored
Jul 18, 2023
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add stubs for F1 Setup Request/Response/Failure messages
parent
5315d696
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
78 additions
and
41 deletions
+78
-41
openair2/F1AP/f1ap_du_interface_management.c
openair2/F1AP/f1ap_du_interface_management.c
+30
-41
openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c
openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c
+11
-0
openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.h
openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.h
+3
-0
openair2/LAYER2/NR_MAC_gNB/mac_rrc_ul.h
openair2/LAYER2/NR_MAC_gNB/mac_rrc_ul.h
+2
-0
openair2/LAYER2/NR_MAC_gNB/mac_rrc_ul_direct.c
openair2/LAYER2/NR_MAC_gNB/mac_rrc_ul_direct.c
+6
-0
openair2/LAYER2/NR_MAC_gNB/mac_rrc_ul_f1ap.c
openair2/LAYER2/NR_MAC_gNB/mac_rrc_ul_f1ap.c
+6
-0
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+1
-0
openair2/RRC/NR/mac_rrc_dl.h
openair2/RRC/NR/mac_rrc_dl.h
+3
-0
openair2/RRC/NR/mac_rrc_dl_direct.c
openair2/RRC/NR/mac_rrc_dl_direct.c
+2
-0
openair2/RRC/NR/mac_rrc_dl_f1ap.c
openair2/RRC/NR/mac_rrc_dl_f1ap.c
+12
-0
openair2/RRC/NR/nr_rrc_defs.h
openair2/RRC/NR/nr_rrc_defs.h
+2
-0
No files found.
openair2/F1AP/f1ap_du_interface_management.c
View file @
84d8f6c2
...
...
@@ -34,6 +34,7 @@
#include "f1ap_encoder.h"
#include "f1ap_itti_messaging.h"
#include "f1ap_du_interface_management.h"
#include "openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.h"
#include "assertions.h"
#include "GNB_APP/gnb_paramdef.h"
...
...
@@ -309,10 +310,8 @@ int DU_send_F1_SETUP_REQUEST(instance_t instance, f1ap_setup_req_t *setup_req)
return
0
;
}
int
DU_handle_F1_SETUP_RESPONSE
(
instance_t
instance
,
uint32_t
assoc_id
,
uint32_t
stream
,
F1AP_F1AP_PDU_t
*
pdu
)
{
int
DU_handle_F1_SETUP_RESPONSE
(
instance_t
instance
,
uint32_t
assoc_id
,
uint32_t
stream
,
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
"
);
...
...
@@ -327,9 +326,7 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
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
,
0
,
F1AP_SETUP_RESP
);
LOG_D
(
F1AP
,
"F1AP: F1Setup-Resp: protocolIEs.list.count %d
\n
"
,
in
->
protocolIEs
.
list
.
count
);
f1ap_setup_resp_t
resp
=
{
0
};
for
(
int
i
=
0
;
i
<
in
->
protocolIEs
.
list
.
count
;
i
++
)
{
ie
=
in
->
protocolIEs
.
list
.
array
[
i
];
...
...
@@ -350,11 +347,10 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
"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
);
resp
.
gNB_CU_name
=
malloc
(
ie
->
value
.
choice
.
GNB_CU_Name
.
size
+
1
);
memcpy
(
resp
.
gNB_CU_name
,
ie
->
value
.
choice
.
GNB_CU_Name
.
buf
,
ie
->
value
.
choice
.
GNB_CU_Name
.
size
);
resp
.
gNB_CU_name
[
ie
->
value
.
choice
.
GNB_CU_Name
.
size
]
=
'\0'
;
LOG_D
(
F1AP
,
"F1AP: F1Setup-Resp: gNB_CU_name %s
\n
"
,
resp
.
gNB_CU_name
);
break
;
case
F1AP_ProtocolIE_ID_id_GNB_CU_RRC_Version
:
...
...
@@ -379,17 +375,16 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
"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
)
.
cells_to_activate
[
i
].
plmn
.
mcc
,
F1AP_SETUP_RESP
(
msg_p
)
.
cells_to_activate
[
i
].
plmn
.
mnc
,
F1AP_SETUP_RESP
(
msg_p
)
.
cells_to_activate
[
i
].
plmn
.
mnc_digit_length
);
resp
.
cells_to_activate
[
i
].
plmn
.
mcc
,
resp
.
cells_to_activate
[
i
].
plmn
.
mnc
,
resp
.
cells_to_activate
[
i
].
plmn
.
mnc_digit_length
);
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
).
cells_to_activate
[
i
].
nr_cellid
);
BIT_STRING_TO_NR_CELL_IDENTITY
(
&
cell
->
nRCGI
.
nRCellIdentity
,
resp
.
cells_to_activate
[
i
].
nr_cellid
);
F1AP_ProtocolExtensionContainer_10696P112_t
*
ext
=
(
F1AP_ProtocolExtensionContainer_10696P112_t
*
)
cell
->
iE_Extensions
;
if
(
ext
==
NULL
)
...
...
@@ -408,28 +403,26 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
case F1AP_Cells_to_be_Activated_List_ItemExtIEs__extensionValue_PR_AvailableSNPN_ID_List
*/
case
F1AP_ProtocolIE_ID_id_gNB_CUSystemInformation
:
{
F1AP_SETUP_RESP
(
msg_p
)
.
cells_to_activate
[
i
].
nrpci
=
(
cell
->
nRPCI
!=
NULL
)
?
*
cell
->
nRPCI
:
0
;
resp
.
cells_to_activate
[
i
].
nrpci
=
(
cell
->
nRPCI
!=
NULL
)
?
*
cell
->
nRPCI
:
0
;
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
)
.
cells_to_activate
[
i
].
num_SI
=
gNB_CUSystemInformation
->
sibtypetobeupdatedlist
.
list
.
count
;
resp
.
cells_to_activate
[
i
].
num_SI
=
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: Cell %d MCC %d MNC %d NRCellid %lx num_si %d
\n
"
,
i
,
F1AP_SETUP_RESP
(
msg_p
)
.
cells_to_activate
[
i
].
plmn
.
mcc
,
F1AP_SETUP_RESP
(
msg_p
)
.
cells_to_activate
[
i
].
plmn
.
mnc
,
F1AP_SETUP_RESP
(
msg_p
)
.
cells_to_activate
[
i
].
nr_cellid
,
F1AP_SETUP_RESP
(
msg_p
)
.
cells_to_activate
[
i
].
num_SI
);
resp
.
cells_to_activate
[
i
].
plmn
.
mcc
,
resp
.
cells_to_activate
[
i
].
plmn
.
mnc
,
resp
.
cells_to_activate
[
i
].
nr_cellid
,
resp
.
cells_to_activate
[
i
].
num_SI
);
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
)
.
cells_to_activate
[
i
].
SI_container_length
[
si
]
=
size
;
resp
.
cells_to_activate
[
i
].
SI_container_length
[
si
]
=
size
;
LOG_D
(
F1AP
,
"F1AP: SI_container_length[%d][%ld] %ld bytes
\n
"
,
i
,
sib_item
->
sIBtype
,
size
);
F1AP_SETUP_RESP
(
msg_p
).
cells_to_activate
[
i
].
SI_container
[
si
]
=
malloc
(
F1AP_SETUP_RESP
(
msg_p
).
cells_to_activate
[
i
].
SI_container_length
[
si
]);
memcpy
((
void
*
)
F1AP_SETUP_RESP
(
msg_p
).
cells_to_activate
[
i
].
SI_container
[
si
],
(
void
*
)
sib_item
->
sIBmessage
.
buf
,
size
);
F1AP_SETUP_RESP
(
msg_p
).
cells_to_activate
[
i
].
SI_type
[
si
]
=
sib_item
->
sIBtype
;
resp
.
cells_to_activate
[
i
].
SI_container
[
si
]
=
malloc
(
resp
.
cells_to_activate
[
i
].
SI_container_length
[
si
]);
memcpy
(
resp
.
cells_to_activate
[
i
].
SI_container
[
si
],
sib_item
->
sIBmessage
.
buf
,
size
);
resp
.
cells_to_activate
[
i
].
SI_type
[
si
]
=
sib_item
->
sIBtype
;
}
break
;
...
...
@@ -469,30 +462,26 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
AssertFatal
(
TransactionId
!=-
1
,
"TransactionId was not sent
\n
"
);
LOG_D
(
F1AP
,
"F1AP: num_cells_to_activate %d
\n
"
,
num_cells_to_activate
);
F1AP_SETUP_RESP
(
msg_p
)
.
num_cells_to_activate
=
num_cells_to_activate
;
resp
.
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
).
cells_to_activate
[
i
].
num_SI
>
0
,
"System Information %d is missing"
,
i
);
AssertFatal
(
resp
.
cells_to_activate
[
i
].
num_SI
>
0
,
"System Information %d is missing"
,
i
);
LOG_D
(
F1AP
,
"Sending F1AP_SETUP_RESP ITTI message
\n
"
);
itti_send_msg_to_task
(
TASK_GNB_APP
,
GNB_MODULE_ID_TO_INSTANCE
(
assoc_id
),
msg_
p
);
f1_setup_response
(
&
res
p
);
return
0
;
}
// SETUP FAILURE
int
DU_handle_F1_SETUP_FAILURE
(
instance_t
instance
,
uint32_t
assoc_id
,
uint32_t
stream
,
F1AP_F1AP_PDU_t
*
pdu
)
{
LOG_E
(
F1AP
,
"DU_handle_F1_SETUP_FAILURE
\n
"
);
int
DU_handle_F1_SETUP_FAILURE
(
instance_t
instance
,
uint32_t
assoc_id
,
uint32_t
stream
,
F1AP_F1AP_PDU_t
*
pdu
)
{
F1AP_F1SetupFailure_t
*
out
;
F1AP_F1SetupFailureIEs_t
*
ie
;
f1ap_setup_failure_t
fail
=
{
0
};
out
=
&
pdu
->
choice
.
unsuccessfulOutcome
->
value
.
choice
.
F1SetupFailure
;
/* Transaction ID */
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_F1SetupFailureIEs_t
,
ie
,
out
,
F1AP_ProtocolIE_ID_id_TransactionID
,
true
);
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_F1SetupFailureIEs_t
,
ie
,
out
,
F1AP_ProtocolIE_ID_id_TransactionID
,
true
);
/* Cause */
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_F1SetupFailureIEs_t
,
ie
,
out
,
F1AP_ProtocolIE_ID_id_Cause
,
true
);
...
...
@@ -503,10 +492,10 @@ int DU_handle_F1_SETUP_FAILURE(instance_t instance,
F1AP_ProtocolIE_ID_id_TimeToWait
,
true
);
}
f1_setup_failure
(
&
fail
);
return
0
;
}
/*
gNB-DU Configuration Update
*/
...
...
openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c
View file @
84d8f6c2
...
...
@@ -30,6 +30,17 @@
#include "uper_decoder.h"
#include "uper_encoder.h"
void
f1_setup_response
(
const
f1ap_setup_resp_t
*
resp
)
{
AssertFatal
(
false
,
"not implemented
\n
"
);
}
void
f1_setup_failure
(
const
f1ap_setup_failure_t
*
failure
)
{
LOG_E
(
MAC
,
"the CU reported F1AP Setup Failure, is there a configuration mismatch?
\n
"
);
exit
(
1
);
}
static
NR_RLC_BearerConfig_t
*
get_bearerconfig_from_srb
(
const
f1ap_srb_to_be_setup_t
*
srb
)
{
long
priority
=
srb
->
srb_id
;
// high priority for SRB
...
...
openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.h
View file @
84d8f6c2
...
...
@@ -25,6 +25,9 @@
#include "platform_types.h"
#include "f1ap_messages_types.h"
void
f1_setup_response
(
const
f1ap_setup_resp_t
*
resp
);
void
f1_setup_failure
(
const
f1ap_setup_failure_t
*
failure
);
void
ue_context_setup_request
(
const
f1ap_ue_context_setup_t
*
req
);
void
ue_context_modification_request
(
const
f1ap_ue_context_modif_req_t
*
req
);
void
ue_context_modification_confirm
(
const
f1ap_ue_context_modif_confirm_t
*
confirm
);
...
...
openair2/LAYER2/NR_MAC_gNB/mac_rrc_ul.h
View file @
84d8f6c2
...
...
@@ -25,6 +25,8 @@
#include "platform_types.h"
#include "f1ap_messages_types.h"
typedef
void
(
*
f1_setup_request_func_t
)(
const
f1ap_setup_req_t
*
req
);
typedef
void
(
*
ue_context_setup_response_func_t
)(
const
f1ap_ue_context_setup_t
*
req
,
const
f1ap_ue_context_setup_t
*
resp
);
typedef
void
(
*
ue_context_modification_response_func_t
)(
const
f1ap_ue_context_modif_req_t
*
req
,
const
f1ap_ue_context_modif_resp_t
*
resp
);
...
...
openair2/LAYER2/NR_MAC_gNB/mac_rrc_ul_direct.c
View file @
84d8f6c2
...
...
@@ -24,6 +24,11 @@
#include "mac_rrc_ul.h"
static
void
f1_setup_request_direct
(
const
f1ap_setup_req_t
*
req
)
{
AssertFatal
(
false
,
"not implemented
\n
"
);
}
static
void
ue_context_setup_response_direct
(
const
f1ap_ue_context_setup_t
*
req
,
const
f1ap_ue_context_setup_t
*
resp
)
{
DevAssert
(
req
->
drbs_to_be_setup_length
==
resp
->
drbs_to_be_setup_length
);
...
...
@@ -172,6 +177,7 @@ static void initial_ul_rrc_message_transfer_direct(module_id_t module_id, const
void
mac_rrc_ul_direct_init
(
struct
nr_mac_rrc_ul_if_s
*
mac_rrc
)
{
mac_rrc
->
f1_setup_request
=
f1_setup_request_direct
;
mac_rrc
->
ue_context_setup_response
=
ue_context_setup_response_direct
;
mac_rrc
->
ue_context_modification_response
=
ue_context_modification_response_direct
;
mac_rrc
->
ue_context_modification_required
=
ue_context_modification_required_direct
;
...
...
openair2/LAYER2/NR_MAC_gNB/mac_rrc_ul_f1ap.c
View file @
84d8f6c2
...
...
@@ -29,6 +29,11 @@
#include "mac_rrc_ul.h"
static
void
f1_setup_request_f1ap
(
const
f1ap_setup_req_t
*
req
)
{
AssertFatal
(
false
,
"not implemented
\n
"
);
}
static
void
ue_context_setup_response_f1ap
(
const
f1ap_ue_context_setup_t
*
req
,
const
f1ap_ue_context_setup_t
*
resp
)
{
DevAssert
(
req
->
drbs_to_be_setup_length
==
resp
->
drbs_to_be_setup_length
);
...
...
@@ -161,6 +166,7 @@ static void initial_ul_rrc_message_transfer_f1ap(module_id_t module_id, const f1
void
mac_rrc_ul_f1ap_init
(
struct
nr_mac_rrc_ul_if_s
*
mac_rrc
)
{
mac_rrc
->
f1_setup_request
=
f1_setup_request_f1ap
;
mac_rrc
->
ue_context_setup_response
=
ue_context_setup_response_f1ap
;
mac_rrc
->
ue_context_modification_response
=
ue_context_modification_response_f1ap
;
mac_rrc
->
ue_context_modification_required
=
ue_context_modification_required_f1ap
;
...
...
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
84d8f6c2
...
...
@@ -656,6 +656,7 @@ typedef struct NR_bler_options {
}
NR_bler_options_t
;
typedef
struct
nr_mac_rrc_ul_if_s
{
f1_setup_request_func_t
f1_setup_request
;
ue_context_setup_response_func_t
ue_context_setup_response
;
ue_context_modification_response_func_t
ue_context_modification_response
;
ue_context_modification_required_func_t
ue_context_modification_required
;
...
...
openair2/RRC/NR/mac_rrc_dl.h
View file @
84d8f6c2
...
...
@@ -25,6 +25,9 @@
#include "platform_types.h"
#include "f1ap_messages_types.h"
typedef
void
(
*
f1_setup_response_func_t
)(
const
f1ap_setup_resp_t
*
resp
);
typedef
void
(
*
f1_setup_failure_func_t
)(
const
f1ap_setup_failure_t
*
fail
);
typedef
void
(
*
ue_context_setup_request_func_t
)(
const
f1ap_ue_context_setup_t
*
req
);
typedef
void
(
*
ue_context_modification_request_func_t
)(
const
f1ap_ue_context_modif_req_t
*
req
);
typedef
void
(
*
ue_context_modification_confirm_func_t
)(
const
f1ap_ue_context_modif_confirm_t
*
confirm
);
...
...
openair2/RRC/NR/mac_rrc_dl_direct.c
View file @
84d8f6c2
...
...
@@ -26,6 +26,8 @@
void
mac_rrc_dl_direct_init
(
nr_mac_rrc_dl_if_t
*
mac_rrc
)
{
mac_rrc
->
f1_setup_response
=
f1_setup_response
;
mac_rrc
->
f1_setup_failure
=
f1_setup_failure
;
mac_rrc
->
ue_context_setup_request
=
ue_context_setup_request
;
mac_rrc
->
ue_context_modification_request
=
ue_context_modification_request
;
mac_rrc
->
ue_context_modification_confirm
=
ue_context_modification_confirm
;
...
...
openair2/RRC/NR/mac_rrc_dl_f1ap.c
View file @
84d8f6c2
...
...
@@ -24,6 +24,16 @@
#include "mac_rrc_dl.h"
#include "nr_rrc_defs.h"
static
void
f1_setup_response_f1ap
(
const
f1ap_setup_resp_t
*
resp
)
{
AssertFatal
(
false
,
"not implemented
\n
"
);
}
static
void
f1_setup_failure_f1ap
(
const
f1ap_setup_failure_t
*
fail
)
{
AssertFatal
(
false
,
"not implemented
\n
"
);
}
static
void
ue_context_setup_request_f1ap
(
const
f1ap_ue_context_setup_t
*
req
)
{
MessageDef
*
msg
=
itti_alloc_new_message
(
TASK_RRC_GNB
,
0
,
F1AP_UE_CONTEXT_SETUP_REQ
);
...
...
@@ -133,6 +143,8 @@ static void dl_rrc_message_transfer_f1ap(const f1ap_dl_rrc_message_t *dl_rrc)
void
mac_rrc_dl_f1ap_init
(
nr_mac_rrc_dl_if_t
*
mac_rrc
)
{
mac_rrc
->
f1_setup_response
=
f1_setup_response_f1ap
;
mac_rrc
->
f1_setup_failure
=
f1_setup_failure_f1ap
;
mac_rrc
->
ue_context_setup_request
=
ue_context_setup_request_f1ap
;
mac_rrc
->
ue_context_modification_request
=
ue_context_modification_request_f1ap
;
mac_rrc
->
ue_context_modification_confirm
=
ue_context_modification_confirm_f1ap
;
...
...
openair2/RRC/NR/nr_rrc_defs.h
View file @
84d8f6c2
...
...
@@ -362,6 +362,8 @@ typedef struct {
}
nr_security_configuration_t
;
typedef
struct
nr_mac_rrc_dl_if_s
{
f1_setup_response_func_t
f1_setup_response
;
f1_setup_failure_func_t
f1_setup_failure
;
ue_context_setup_request_func_t
ue_context_setup_request
;
ue_context_modification_request_func_t
ue_context_modification_request
;
ue_context_modification_confirm_func_t
ue_context_modification_confirm
;
...
...
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