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
wangwenhui
OpenXG-RAN
Commits
1a07a1e0
Commit
1a07a1e0
authored
Feb 22, 2019
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Replace redundant CU_F1AP/DU_F1AP with F1AP
parent
030e11ba
Changes
14
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
210 additions
and
247 deletions
+210
-247
common/utils/LOG/log.c
common/utils/LOG/log.c
+0
-2
common/utils/LOG/log.h
common/utils/LOG/log.h
+0
-2
common/utils/T/T_messages.txt
common/utils/T/T_messages.txt
+0
-42
openair2/F1AP/f1ap_cu_interface_management.c
openair2/F1AP/f1ap_cu_interface_management.c
+33
-27
openair2/F1AP/f1ap_cu_rrc_message_transfer.c
openair2/F1AP/f1ap_cu_rrc_message_transfer.c
+19
-18
openair2/F1AP/f1ap_cu_task.c
openair2/F1AP/f1ap_cu_task.c
+15
-12
openair2/F1AP/f1ap_cu_task.h
openair2/F1AP/f1ap_cu_task.h
+3
-3
openair2/F1AP/f1ap_cu_ue_context_management.c
openair2/F1AP/f1ap_cu_ue_context_management.c
+5
-5
openair2/F1AP/f1ap_du_interface_management.c
openair2/F1AP/f1ap_du_interface_management.c
+45
-44
openair2/F1AP/f1ap_du_rrc_message_transfer.c
openair2/F1AP/f1ap_du_rrc_message_transfer.c
+67
-67
openair2/F1AP/f1ap_du_task.c
openair2/F1AP/f1ap_du_task.c
+10
-10
openair2/F1AP/f1ap_du_task.h
openair2/F1AP/f1ap_du_task.h
+3
-3
openair2/F1AP/f1ap_du_ue_context_management.c
openair2/F1AP/f1ap_du_ue_context_management.c
+10
-10
openair2/F1AP/f1ap_encoder.c
openair2/F1AP/f1ap_encoder.c
+0
-2
No files found.
common/utils/LOG/log.c
View file @
1a07a1e0
...
...
@@ -406,8 +406,6 @@ int logInit (void) {
register_log_component
(
"GTPV1U"
,
""
,
GTPU
);
register_log_component
(
"S1AP"
,
""
,
S1AP
);
register_log_component
(
"F1AP"
,
""
,
F1AP
);
register_log_component
(
"CU_F1AP"
,
""
,
CU_F1AP
);
register_log_component
(
"DU_F1AP"
,
""
,
DU_F1AP
);
register_log_component
(
"X2AP"
,
""
,
X2AP
);
register_log_component
(
"SCTP"
,
""
,
SCTP
);
register_log_component
(
"X2AP"
,
""
,
X2AP
);
...
...
common/utils/LOG/log.h
View file @
1a07a1e0
...
...
@@ -206,8 +206,6 @@ typedef enum {
SPGW
,
S1AP
,
F1AP
,
DU_F1AP
,
CU_F1AP
,
SCTP
,
HW
,
OSA
,
...
...
common/utils/T/T_messages.txt
View file @
1a07a1e0
...
...
@@ -923,48 +923,6 @@ ID = LEGACY_F1AP_ERROR
GROUP = ALL:LEGACY_F1AP:LEGACY_GROUP_ERROR:LEGACY
FORMAT = string,log
ID = LEGACY_CU_F1AP_TRACE
DESC = CU_F1AP TRACE LEVEL
GROUP = ALL:LEGACY_CU_F1AP:LEGACY_GROUP_TRACE:LEGACY
FORMAT = string,log
ID = LEGACY_CU_F1AP_DEBUG
DESC = CU_F1AP DEBUG LEVEL
GROUP = ALL:LEGACY_CU_F1AP:LEGACY_GROUP_DEBUG:LEGACY
FORMAT = string,log
ID = LEGACY_CU_F1AP_INFO
DESC = CU_F1AP INFO LEVEL
GROUP = ALL:LEGACY_CU_F1AP:LEGACY_GROUP_INFO:LEGACY
FORMAT = string,log
ID = LEGACY_CU_F1AP_WARNING
DESC = CU_F1AP WARNING LEVEL
GROUP = ALL:LEGACY_CU_F1AP:LEGACY_GROUP_WARNING:LEGACY
FORMAT = string,log
ID = LEGACY_CU_F1AP_ERROR
DESC = CU_F1AP ERROR LEVEL
GROUP = ALL:LEGACY_CU_F1AP:LEGACY_GROUP_ERROR:LEGACY
FORMAT = string,log
ID = LEGACY_DU_F1AP_TRACE
DESC = DU_F1AP TRACE LEVEL
GROUP = ALL:LEGACY_DU_F1AP:LEGACY_GROUP_TRACE:LEGACY
FORMAT = string,log
ID = LEGACY_DU_F1AP_DEBUG
DESC = DU_F1AP DEBUG LEVEL
GROUP = ALL:LEGACY_DU_F1AP:LEGACY_GROUP_DEBUG:LEGACY
FORMAT = string,log
ID = LEGACY_DU_F1AP_INFO
DESC = DU_F1AP INFO LEVEL
GROUP = ALL:LEGACY_DU_F1AP:LEGACY_GROUP_INFO:LEGACY
FORMAT = string,log
ID = LEGACY_DU_F1AP_WARNING
DESC = DU_F1AP WARNING LEVEL
GROUP = ALL:LEGACY_DU_F1AP:LEGACY_GROUP_WARNING:LEGACY
FORMAT = string,log
ID = LEGACY_DU_F1AP_ERROR
DESC = DU_F1AP ERROR LEVEL
GROUP = ALL:LEGACY_DU_F1AP:LEGACY_GROUP_ERROR:LEGACY
FORMAT = string,log
#################
#### UE LOGS ####
#################
...
...
openair2/F1AP/f1ap_cu_interface_management.c
View file @
1a07a1e0
...
...
@@ -84,7 +84,7 @@ int CU_handle_F1_SETUP_REQUEST(instance_t instance,
uint32_t
stream
,
F1AP_F1AP_PDU_t
*
pdu
)
{
LOG_D
(
CU_
F1AP
,
"CU_handle_F1_SETUP_REQUEST
\n
"
);
LOG_D
(
F1AP
,
"CU_handle_F1_SETUP_REQUEST
\n
"
);
MessageDef
*
message_p
;
F1AP_F1SetupRequest_t
*
container
;
...
...
@@ -112,7 +112,7 @@ int CU_handle_F1_SETUP_REQUEST(instance_t instance,
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_F1SetupRequestIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_gNB_DU_ID
,
true
);
asn_INTEGER2ulong
(
&
ie
->
value
.
choice
.
GNB_DU_ID
,
&
F1AP_SETUP_REQ
(
message_p
).
gNB_DU_id
);
LOG_D
(
CU_
F1AP
,
"F1AP_SETUP_REQ(message_p).gNB_DU_id %lu
\n
"
,
F1AP_SETUP_REQ
(
message_p
).
gNB_DU_id
);
LOG_D
(
F1AP
,
"F1AP_SETUP_REQ(message_p).gNB_DU_id %lu
\n
"
,
F1AP_SETUP_REQ
(
message_p
).
gNB_DU_id
);
/* gNB_DU_name */
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_F1SetupRequestIEs_t
,
ie
,
container
,
...
...
@@ -122,13 +122,14 @@ int CU_handle_F1_SETUP_REQUEST(instance_t instance,
ie
->
value
.
choice
.
GNB_DU_Name
.
size
);
/* Convert the mme name to a printable string */
F1AP_SETUP_REQ
(
message_p
).
gNB_DU_name
[
ie
->
value
.
choice
.
GNB_DU_Name
.
size
]
=
'\0'
;
LOG_D
(
CU_
F1AP
,
"F1AP_SETUP_REQ(message_p).gNB_DU_name %s
\n
"
,
F1AP_SETUP_REQ
(
message_p
).
gNB_DU_name
);
LOG_D
(
F1AP
,
"F1AP_SETUP_REQ(message_p).gNB_DU_name %s
\n
"
,
F1AP_SETUP_REQ
(
message_p
).
gNB_DU_name
);
/* GNB_DU_Served_Cells_List */
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_F1SetupRequestIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_gNB_DU_Served_Cells_List
,
true
);
F1AP_SETUP_REQ
(
message_p
).
num_cells_available
=
ie
->
value
.
choice
.
GNB_DU_Served_Cells_List
.
list
.
count
;
LOG_D
(
CU_F1AP
,
"F1AP_SETUP_REQ(message_p).num_cells_available %d
\n
"
,
F1AP_SETUP_REQ
(
message_p
).
num_cells_available
);
LOG_D
(
F1AP
,
"F1AP_SETUP_REQ(message_p).num_cells_available %d
\n
"
,
F1AP_SETUP_REQ
(
message_p
).
num_cells_available
);
int
num_cells_available
=
F1AP_SETUP_REQ
(
message_p
).
num_cells_available
;
...
...
@@ -139,7 +140,8 @@ int CU_handle_F1_SETUP_REQUEST(instance_t instance,
/* tac */
OCTET_STRING_TO_INT16
(
&
(
served_celles_item_p
->
served_Cell_Information
.
fiveGS_TAC
),
F1AP_SETUP_REQ
(
message_p
).
tac
[
i
]);
LOG_D
(
CU_F1AP
,
"F1AP_SETUP_REQ(message_p).tac[%d] %d
\n
"
,
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 */
TBCD_TO_MCC_MNC
(
&
(
served_celles_item_p
->
served_Cell_Information
.
nRCGI
.
pLMN_Identity
),
F1AP_SETUP_REQ
(
message_p
).
mcc
[
i
],
...
...
@@ -150,11 +152,11 @@ int CU_handle_F1_SETUP_REQUEST(instance_t instance,
// NR cellID
BIT_STRING_TO_NR_CELL_IDENTITY
(
&
served_celles_item_p
->
served_Cell_Information
.
nRCGI
.
nRCellIdentity
,
F1AP_SETUP_REQ
(
message_p
).
nr_cellid
[
i
]);
LOG_D
(
CU_
F1AP
,
"[SCTP %d] Received nRCGI: MCC %d, MNC %d, CELL_ID %llu
\n
"
,
assoc_id
,
LOG_D
(
F1AP
,
"[SCTP %d] Received nRCGI: MCC %d, MNC %d, CELL_ID %llu
\n
"
,
assoc_id
,
F1AP_SETUP_REQ
(
message_p
).
mcc
[
i
],
F1AP_SETUP_REQ
(
message_p
).
mnc
[
i
],
(
long
long
unsigned
int
)
F1AP_SETUP_REQ
(
message_p
).
nr_cellid
[
i
]);
LOG_D
(
CU_
F1AP
,
"nr_cellId : %x %x %x %x %x
\n
"
,
LOG_D
(
F1AP
,
"nr_cellId : %x %x %x %x %x
\n
"
,
served_celles_item_p
->
served_Cell_Information
.
nRCGI
.
nRCellIdentity
.
buf
[
0
],
served_celles_item_p
->
served_Cell_Information
.
nRCGI
.
nRCellIdentity
.
buf
[
1
],
served_celles_item_p
->
served_Cell_Information
.
nRCGI
.
nRCellIdentity
.
buf
[
2
],
...
...
@@ -162,7 +164,8 @@ int CU_handle_F1_SETUP_REQUEST(instance_t instance,
served_celles_item_p
->
served_Cell_Information
.
nRCGI
.
nRCellIdentity
.
buf
[
4
]);
/* - nRPCI */
F1AP_SETUP_REQ
(
message_p
).
nr_pci
[
i
]
=
served_celles_item_p
->
served_Cell_Information
.
nRPCI
;
LOG_D
(
CU_F1AP
,
"F1AP_SETUP_REQ(message_p).nr_pci[%d] %d
\n
"
,
i
,
F1AP_SETUP_REQ
(
message_p
).
nr_pci
[
i
]);
LOG_D
(
F1AP
,
"F1AP_SETUP_REQ(message_p).nr_pci[%d] %d
\n
"
,
i
,
F1AP_SETUP_REQ
(
message_p
).
nr_pci
[
i
]);
// System Information
/* mib */
...
...
@@ -172,7 +175,8 @@ int CU_handle_F1_SETUP_REQUEST(instance_t instance,
/* Convert the mme name to a printable string */
F1AP_SETUP_REQ
(
message_p
).
mib
[
i
][
served_celles_item_p
->
gNB_DU_System_Information
->
mIB_message
.
size
]
=
'\0'
;
F1AP_SETUP_REQ
(
message_p
).
mib_length
[
i
]
=
served_celles_item_p
->
gNB_DU_System_Information
->
mIB_message
.
size
;
LOG_D
(
CU_F1AP
,
"F1AP_SETUP_REQ(message_p).mib[%d] %s , len = %d
\n
"
,
i
,
F1AP_SETUP_REQ
(
message_p
).
mib
[
i
],
F1AP_SETUP_REQ
(
message_p
).
mib_length
[
i
]);
LOG_D
(
F1AP
,
"F1AP_SETUP_REQ(message_p).mib[%d] %s , len = %d
\n
"
,
i
,
F1AP_SETUP_REQ
(
message_p
).
mib
[
i
],
F1AP_SETUP_REQ
(
message_p
).
mib_length
[
i
]);
/* sib1 */
F1AP_SETUP_REQ
(
message_p
).
sib1
[
i
]
=
calloc
(
served_celles_item_p
->
gNB_DU_System_Information
->
sIB1_message
.
size
+
1
,
sizeof
(
char
));
...
...
@@ -181,7 +185,8 @@ int CU_handle_F1_SETUP_REQUEST(instance_t instance,
/* Convert the mme name to a printable string */
F1AP_SETUP_REQ
(
message_p
).
sib1
[
i
][
served_celles_item_p
->
gNB_DU_System_Information
->
sIB1_message
.
size
]
=
'\0'
;
F1AP_SETUP_REQ
(
message_p
).
sib1_length
[
i
]
=
served_celles_item_p
->
gNB_DU_System_Information
->
sIB1_message
.
size
;
LOG_D
(
CU_F1AP
,
"F1AP_SETUP_REQ(message_p).sib1[%d] %s , len = %d
\n
"
,
i
,
F1AP_SETUP_REQ
(
message_p
).
sib1
[
i
],
F1AP_SETUP_REQ
(
message_p
).
sib1_length
[
i
]);
LOG_D
(
F1AP
,
"F1AP_SETUP_REQ(message_p).sib1[%d] %s , len = %d
\n
"
,
i
,
F1AP_SETUP_REQ
(
message_p
).
sib1
[
i
],
F1AP_SETUP_REQ
(
message_p
).
sib1_length
[
i
]);
}
...
...
@@ -305,7 +310,7 @@ int CU_send_F1_SETUP_RESPONSE(instance_t instance,
ie
->
value
.
present
=
F1AP_F1SetupResponseIEs__value_PR_Cells_to_be_Activated_List
;
int
num_cells_to_activate
=
f1ap_setup_resp
->
num_cells_to_activate
;
LOG_D
(
CU_
F1AP
,
"num_cells_to_activate = %d
\n
"
,
num_cells_to_activate
);
LOG_D
(
F1AP
,
"num_cells_to_activate = %d
\n
"
,
num_cells_to_activate
);
for
(
i
=
0
;
i
<
num_cells_to_activate
;
i
++
)
{
...
...
@@ -346,15 +351,16 @@ int CU_send_F1_SETUP_RESPONSE(instance_t instance,
F1AP_GNB_CUSystemInformation_t
*
gNB_CUSystemInformation
=
(
F1AP_GNB_CUSystemInformation_t
*
)
calloc
(
1
,
sizeof
(
F1AP_GNB_CUSystemInformation_t
));
#ifdef F1AP_DEBUG
LOG_D
(
CU_F1AP
,
"SI %d: "
,
i
);
for
(
int
n
=
0
;
n
<
f1ap_setup_resp
->
SI_container_length
[
i
][
0
];
n
++
)
printf
(
"%2x "
,
f1ap_setup_resp
->
SI_container
[
i
][
0
][
n
]);
LOG_D
(
CU_F1AP
,
"
\n
"
);
LOG_I
(
F1AP
,
"SI %d: "
,
i
);
for
(
int
n
=
0
;
n
<
f1ap_setup_resp
->
SI_container_length
[
i
][
0
];
n
++
)
printf
(
"%2x "
,
f1ap_setup_resp
->
SI_container
[
i
][
0
][
n
]);
printf
(
"
\n
"
);
#endif
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
(
CU_F1AP
,
"f1ap_setup_resp->SI_container_length = %d
\n
"
,
f1ap_setup_resp
->
SI_container_length
[
0
][
0
]);
LOG_D
(
F1AP
,
"f1ap_setup_resp->SI_container_length = %d
\n
"
,
f1ap_setup_resp
->
SI_container_length
[
0
][
0
]);
cells_to_be_activated_list_itemExtIEs
->
extensionValue
.
choice
.
GNB_CUSystemInformation
=
*
gNB_CUSystemInformation
;
...
...
@@ -375,7 +381,7 @@ int CU_send_F1_SETUP_RESPONSE(instance_t instance,
/* encode */
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
LOG_E
(
CU_
F1AP
,
"Failed to encode F1 setup request
\n
"
);
LOG_E
(
F1AP
,
"Failed to encode F1 setup request
\n
"
);
return
-
1
;
}
...
...
@@ -385,7 +391,7 @@ int CU_send_F1_SETUP_RESPONSE(instance_t instance,
}
int
CU_send_F1_SETUP_FAILURE
(
instance_t
instance
)
{
LOG_D
(
CU_
F1AP
,
"CU_send_F1_SETUP_FAILURE
\n
"
);
LOG_D
(
F1AP
,
"CU_send_F1_SETUP_FAILURE
\n
"
);
module_id_t
enb_mod_idP
;
module_id_t
cu_mod_idP
;
...
...
@@ -461,7 +467,7 @@ int CU_send_F1_SETUP_FAILURE(instance_t instance) {
/* encode */
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
LOG_E
(
CU_
F1AP
,
"Failed to encode F1 setup request
\n
"
);
LOG_E
(
F1AP
,
"Failed to encode F1 setup request
\n
"
);
return
-
1
;
}
...
...
@@ -865,7 +871,7 @@ int CU_send_gNB_CU_CONFIGURATION_UPDATE(instance_t instance, module_id_t du_mod_
/* encode */
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
LOG_E
(
CU_
F1AP
,
"Failed to encode F1 setup request
\n
"
);
LOG_E
(
F1AP
,
"Failed to encode F1 setup request
\n
"
);
return
-
1
;
}
...
...
openair2/F1AP/f1ap_cu_rrc_message_transfer.c
View file @
1a07a1e0
...
...
@@ -64,7 +64,7 @@ int CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
uint32_t
stream
,
F1AP_F1AP_PDU_t
*
pdu
)
{
LOG_D
(
CU_
F1AP
,
"CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER
\n
"
);
LOG_D
(
F1AP
,
"CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER
\n
"
);
// decode the F1 message
// get the rrc message from the contauiner
// call func rrc_eNB_decode_ccch: <-- needs some update here
...
...
@@ -80,7 +80,7 @@ int CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
DevAssert
(
pdu
!=
NULL
);
if
(
stream
!=
0
)
{
LOG_E
(
CU_
F1AP
,
"[SCTP %d] Received F1 on stream != 0 (%d)
\n
"
,
LOG_E
(
F1AP
,
"[SCTP %d] Received F1 on stream != 0 (%d)
\n
"
,
assoc_id
,
stream
);
return
-
1
;
}
...
...
@@ -94,7 +94,7 @@ int CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_InitialULRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
,
true
);
du_ue_f1ap_id
=
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
;
LOG_D
(
CU_
F1AP
,
"du_ue_f1ap_id %lu
\n
"
,
du_ue_f1ap_id
);
LOG_D
(
F1AP
,
"du_ue_f1ap_id %lu
\n
"
,
du_ue_f1ap_id
);
/* NRCGI
* TODO: process NRCGI
...
...
@@ -122,9 +122,10 @@ int CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
memcpy
(
RRC_MAC_CCCH_DATA_IND
(
message_p
).
sdu
,
ie
->
value
.
choice
.
RRCContainer
.
buf
,
ccch_sdu_len
);
#ifdef F1AP_DEBUG
LOG_I
(
CU_F1AP
,
"RRCContainer(CCCH) :"
);
for
(
int
i
=
0
;
i
<
ie
->
value
.
choice
.
RRCContainer
.
size
;
i
++
)
printf
(
"%2x "
,
RRC_MAC_CCCH_DATA_IND
(
message_p
).
sdu
[
i
]);
LOG_I
(
CU_F1AP
,
"
\n
"
);
LOG_I
(
F1AP
,
"RRCContainer (CCCH):"
);
for
(
int
i
=
0
;
i
<
ie
->
value
.
choice
.
RRCContainer
.
size
;
i
++
)
printf
(
"%2x "
,
RRC_MAC_CCCH_DATA_IND
(
message_p
).
sdu
[
i
]);
printf
(
"
\n
"
);
#endif
// Find instance from nr_cellid
int
rrc_inst
=
-
1
;
...
...
@@ -140,7 +141,7 @@ int CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
int
f1ap_uid
=
f1ap_add_ue
(
&
f1ap_cu_inst
[
rrc_inst
],
rrc_inst
,
CC_id
,
0
,
rnti
);
if
(
f1ap_uid
<
0
)
{
LOG_E
(
CU_
F1AP
,
"Failed to add UE
\n
"
);
LOG_E
(
F1AP
,
"Failed to add UE
\n
"
);
return
-
1
;
}
f1ap_cu_inst
[
rrc_inst
].
f1ap_ue
[
f1ap_uid
].
du_ue_f1ap_id
=
du_ue_f1ap_id
;
...
...
@@ -194,7 +195,7 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
ie
->
value
.
present
=
F1AP_DLRRCMessageTransferIEs__value_PR_GNB_CU_UE_F1AP_ID
;
ie
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
=
f1ap_get_cu_ue_f1ap_id
(
&
f1ap_cu_inst
[
instance
],
f1ap_dl_rrc
->
rnti
);
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
LOG_I
(
CU_F1AP
,
"Setting GNB_CU_UE_F1AP_ID %llu associated with UE RNTI %x (instance %d)
\n
"
,
LOG_I
(
F1AP
,
"Setting GNB_CU_UE_F1AP_ID %llu associated with UE RNTI %x (instance %d)
\n
"
,
(
unsigned
long
long
int
)
ie
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
,
f1ap_dl_rrc
->
rnti
,
instance
);
...
...
@@ -206,7 +207,7 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
ie
->
value
.
present
=
F1AP_DLRRCMessageTransferIEs__value_PR_GNB_DU_UE_F1AP_ID
;
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
f1ap_get_du_ue_f1ap_id
(
&
f1ap_cu_inst
[
instance
],
f1ap_dl_rrc
->
rnti
);
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
LOG_I
(
CU_
F1AP
,
"GNB_DU_UE_F1AP_ID %llu associated with UE RNTI %x
\n
"
,
(
unsigned
long
long
int
)
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
,
f1ap_dl_rrc
->
rnti
);
LOG_I
(
F1AP
,
"GNB_DU_UE_F1AP_ID %llu associated with UE RNTI %x
\n
"
,
(
unsigned
long
long
int
)
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
,
f1ap_dl_rrc
->
rnti
);
/* optional */
/* c3. oldgNB_DU_UE_F1AP_ID */
...
...
@@ -268,7 +269,7 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
/* encode */
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
LOG_E
(
CU_
F1AP
,
"Failed to encode F1 setup request
\n
"
);
LOG_E
(
F1AP
,
"Failed to encode F1 setup request
\n
"
);
return
-
1
;
}
...
...
@@ -286,7 +287,7 @@ int CU_handle_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
uint32_t
stream
,
F1AP_F1AP_PDU_t
*
pdu
)
{
LOG_D
(
CU_
F1AP
,
"CU_handle_UL_RRC_MESSAGE_TRANSFER
\n
"
);
LOG_D
(
F1AP
,
"CU_handle_UL_RRC_MESSAGE_TRANSFER
\n
"
);
F1AP_ULRRCMessageTransfer_t
*
container
;
F1AP_ULRRCMessageTransferIEs_t
*
ie
;
...
...
@@ -311,14 +312,14 @@ int CU_handle_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_ULRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID
,
true
);
cu_ue_f1ap_id
=
ie
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
;
LOG_D
(
CU_
F1AP
,
"cu_ue_f1ap_id %lu associated with RNTI %x
\n
"
,
cu_ue_f1ap_id
,
f1ap_get_rnti_by_cu_id
(
&
f1ap_cu_inst
[
instance
],
cu_ue_f1ap_id
));
LOG_D
(
F1AP
,
"cu_ue_f1ap_id %lu associated with RNTI %x
\n
"
,
cu_ue_f1ap_id
,
f1ap_get_rnti_by_cu_id
(
&
f1ap_cu_inst
[
instance
],
cu_ue_f1ap_id
));
/* GNB_DU_UE_F1AP_ID */
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_ULRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
,
true
);
du_ue_f1ap_id
=
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
;
LOG_D
(
CU_
F1AP
,
"du_ue_f1ap_id %lu associated with RNTI %x
\n
"
,
du_ue_f1ap_id
,
f1ap_get_rnti_by_cu_id
(
&
f1ap_cu_inst
[
instance
],
du_ue_f1ap_id
));
LOG_D
(
F1AP
,
"du_ue_f1ap_id %lu associated with RNTI %x
\n
"
,
du_ue_f1ap_id
,
f1ap_get_rnti_by_cu_id
(
&
f1ap_cu_inst
[
instance
],
du_ue_f1ap_id
));
/* mandatory */
...
...
@@ -327,9 +328,9 @@ int CU_handle_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
F1AP_ProtocolIE_ID_id_SRBID
,
true
);
srb_id
=
ie
->
value
.
choice
.
SRBID
;
if
(
srb_id
<
1
)
LOG_E
(
CU_
F1AP
,
"Unexpected UL RRC MESSAGE for srb_id %lu
\n
"
,
srb_id
);
LOG_E
(
F1AP
,
"Unexpected UL RRC MESSAGE for srb_id %lu
\n
"
,
srb_id
);
else
LOG_D
(
CU_
F1AP
,
"UL RRC MESSAGE for srb_id %lu in DCCH
\n
"
,
srb_id
);
LOG_D
(
F1AP
,
"UL RRC MESSAGE for srb_id %lu in DCCH
\n
"
,
srb_id
);
// issue in here
...
...
@@ -364,7 +365,7 @@ int CU_handle_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
ctxt
.
enb_flag
=
1
;
mem_block_t
*
mb
=
get_free_mem_block
(
ie
->
value
.
choice
.
RRCContainer
.
size
,
__func__
);
memcpy
((
void
*
)
mb
->
data
,(
void
*
)
ie
->
value
.
choice
.
RRCContainer
.
buf
,
ie
->
value
.
choice
.
RRCContainer
.
size
);
LOG_I
(
CU_
F1AP
,
"Calling pdcp_data_ind for UE RNTI %x srb_id %lu with size %ld (DCCH)
\n
"
,
ctxt
.
rnti
,
srb_id
,
ie
->
value
.
choice
.
RRCContainer
.
size
);
LOG_I
(
F1AP
,
"Calling pdcp_data_ind for UE RNTI %x srb_id %lu with size %ld (DCCH)
\n
"
,
ctxt
.
rnti
,
srb_id
,
ie
->
value
.
choice
.
RRCContainer
.
size
);
pdcp_data_ind
(
&
ctxt
,
1
,
// srb_flag
0
,
// embms_flag
...
...
openair2/F1AP/f1ap_cu_task.c
View file @
1a07a1e0
...
...
@@ -19,7 +19,7 @@
* contact@openairinterface.org
*/
/*! \file openair2/F1AP/
CU_F1AP
.c
/*! \file openair2/F1AP/
f1ap_cu_task
.c
* \brief data structures for F1 interface modules
* \author EURECOM/NTUST
* \date 2018
...
...
@@ -98,7 +98,7 @@ void cu_task_send_sctp_init_req(instance_t enb_id) {
// 2. use RC.rrc[enb_id] to fill the sctp_init_t with the ip, port
// 3. creat an itti message to init
LOG_I
(
CU_
F1AP
,
"F1AP_CU_SCTP_REQ(create socket)
\n
"
);
LOG_I
(
F1AP
,
"F1AP_CU_SCTP_REQ(create socket)
\n
"
);
MessageDef
*
message_p
=
NULL
;
message_p
=
itti_alloc_new_message
(
TASK_CU_F1
,
SCTP_INIT_MSG
);
...
...
@@ -124,7 +124,7 @@ void *F1AP_CU_task(void *arg) {
MessageDef
*
received_msg
=
NULL
;
int
result
;
LOG_I
(
CU_F1AP
,
"Starting F1AP at CU
\n
"
);
LOG_I
(
F1AP
,
"Starting F1AP at CU
\n
"
);
// no RLC in CU, initialize mem pool for PDCP
pool_buffer_init
();
...
...
@@ -138,25 +138,28 @@ void *F1AP_CU_task(void *arg) {
switch
(
ITTI_MSG_ID
(
received_msg
))
{
case
SCTP_NEW_ASSOCIATION_IND
:
LOG_I
(
CU_F1AP
,
"CU Task Received SCTP_NEW_ASSOCIATION_IND for instance %d
\n
"
,
ITTI_MESSAGE_GET_INSTANCE
(
received_msg
));
LOG_I
(
F1AP
,
"CU Task Received SCTP_NEW_ASSOCIATION_IND for instance %d
\n
"
,
ITTI_MESSAGE_GET_INSTANCE
(
received_msg
));
cu_task_handle_sctp_association_ind
(
ITTI_MESSAGE_GET_INSTANCE
(
received_msg
),
&
received_msg
->
ittiMsg
.
sctp_new_association_ind
);
break
;
case
SCTP_NEW_ASSOCIATION_RESP
:
LOG_I
(
CU_F1AP
,
"CU Task Received SCTP_NEW_ASSOCIATION_RESP for instance %d
\n
"
,
ITTI_MESSAGE_GET_INSTANCE
(
received_msg
));
LOG_I
(
F1AP
,
"CU Task Received SCTP_NEW_ASSOCIATION_RESP for instance %d
\n
"
,
ITTI_MESSAGE_GET_INSTANCE
(
received_msg
));
cu_task_handle_sctp_association_resp
(
ITTI_MESSAGE_GET_INSTANCE
(
received_msg
),
&
received_msg
->
ittiMsg
.
sctp_new_association_resp
);
break
;
case
SCTP_DATA_IND
:
LOG_I
(
CU_F1AP
,
"CU Task Received SCTP_DATA_IND for Instance %d
\n
"
,
ITTI_MESSAGE_GET_INSTANCE
(
received_msg
));
LOG_I
(
F1AP
,
"CU Task Received SCTP_DATA_IND for Instance %d
\n
"
,
ITTI_MESSAGE_GET_INSTANCE
(
received_msg
));
cu_task_handle_sctp_data_ind
(
ITTI_MESSAGE_GET_INSTANCE
(
received_msg
),
&
received_msg
->
ittiMsg
.
sctp_data_ind
);
break
;
case
F1AP_SETUP_RESP
:
// from rrc
LOG_I
(
CU_
F1AP
,
"CU Task Received F1AP_SETUP_RESP
\n
"
);
LOG_I
(
F1AP
,
"CU Task Received F1AP_SETUP_RESP
\n
"
);
// CU_send_f1setup_resp(ITTI_MESSAGE_GET_INSTANCE(received_msg),
// &F1AP_SETUP_RESP(received_msg));
CU_send_F1_SETUP_RESPONSE
(
ITTI_MESSAGE_GET_INSTANCE
(
received_msg
),
...
...
@@ -164,13 +167,13 @@ void *F1AP_CU_task(void *arg) {
break
;
case
F1AP_DL_RRC_MESSAGE
:
// from rrc
LOG_I
(
CU_
F1AP
,
"CU Task Received F1AP_DL_RRC_MESSAGE
\n
"
);
LOG_I
(
F1AP
,
"CU Task Received F1AP_DL_RRC_MESSAGE
\n
"
);
CU_send_DL_RRC_MESSAGE_TRANSFER
(
ITTI_MESSAGE_GET_INSTANCE
(
received_msg
),
&
F1AP_DL_RRC_MESSAGE
(
received_msg
));
break
;
case
F1AP_UE_CONTEXT_RELEASE_CMD
:
// from rrc
LOG_I
(
CU_
F1AP
,
"CU Task Received F1AP_UE_CONTEXT_RELEASE_CMD
\n
"
);
LOG_I
(
F1AP
,
"CU Task Received F1AP_UE_CONTEXT_RELEASE_CMD
\n
"
);
CU_send_UE_CONTEXT_RELEASE_COMMAND
(
ITTI_MESSAGE_GET_INSTANCE
(
received_msg
),
&
F1AP_UE_CONTEXT_RELEASE_CMD
(
received_msg
));
break
;
...
...
@@ -184,12 +187,12 @@ void *F1AP_CU_task(void *arg) {
// break;
case
TERMINATE_MESSAGE
:
LOG_W
(
CU_F1AP
,
" *** Exiting CU_
F1AP thread
\n
"
);
LOG_W
(
F1AP
,
" *** Exiting
F1AP thread
\n
"
);
itti_exit_task
();
break
;
default:
LOG_E
(
CU_
F1AP
,
"CU Received unhandled message: %d:%s
\n
"
,
LOG_E
(
F1AP
,
"CU Received unhandled message: %d:%s
\n
"
,
ITTI_MSG_ID
(
received_msg
),
ITTI_MSG_NAME
(
received_msg
));
break
;
}
// switch
...
...
openair2/F1AP/f1ap_cu_task.h
View file @
1a07a1e0
...
...
@@ -19,8 +19,8 @@
* contact@openairinterface.org
*/
#ifndef
CU_F1AP
_TASK_H_
#define
CU_F1AP
_TASK_H_
#ifndef
F1AP_CU
_TASK_H_
#define
F1AP_CU
_TASK_H_
void
cu_task_handle_sctp_association_ind
(
instance_t
instance
,
sctp_new_association_ind_t
*
sctp_new_association_ind
);
void
cu_task_handle_sctp_association_resp
(
instance_t
instance
,
sctp_new_association_resp_t
*
sctp_new_association_resp
);
...
...
@@ -29,4 +29,4 @@ void cu_task_send_sctp_init_req(instance_t enb_id);
void
*
F1AP_CU_task
(
void
*
arg
);
#endif
/*
CU_F1AP
_TASK_H_ */
#endif
/*
F1AP_CU
_TASK_H_ */
openair2/F1AP/f1ap_cu_ue_context_management.c
View file @
1a07a1e0
...
...
@@ -752,7 +752,7 @@ int CU_send_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
/* encode */
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
LOG_E
(
CU_
F1AP
,
"Failed to encode F1 setup request
\n
"
);
LOG_E
(
F1AP
,
"Failed to encode F1 setup request
\n
"
);
return
-
1
;
}
...
...
@@ -823,7 +823,7 @@ int CU_handle_UE_CONTEXT_RELEASE_REQUEST(instance_t instance,
}
*/
LOG_I
(
CU_
F1AP
,
"Received UE CONTEXT RELEASE REQUEST: Trigger RRC for RNTI %x
\n
"
,
rnti
);
LOG_I
(
F1AP
,
"Received UE CONTEXT RELEASE REQUEST: Trigger RRC for RNTI %x
\n
"
,
rnti
);
struct
rrc_eNB_ue_context_s
*
ue_context_pP
;
ue_context_pP
=
rrc_eNB_get_ue_context
(
RC
.
rrc
[
instance
],
rnti
);
rrc_eNB_send_S1AP_UE_CONTEXT_RELEASE_REQ
(
...
...
@@ -917,7 +917,7 @@ int CU_send_UE_CONTEXT_RELEASE_COMMAND(instance_t instance,
/* encode */
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
LOG_E
(
DU_
F1AP
,
"Failed to encode F1 context release command
\n
"
);
LOG_E
(
F1AP
,
"Failed to encode F1 context release command
\n
"
);
return
-
1
;
}
...
...
@@ -1000,7 +1000,7 @@ int CU_handle_UE_CONTEXT_RELEASE_COMPLETE(instance_t instance,
flexran_agent_get_rrc_xface
(
instance
)
->
flexran_agent_notify_ue_state_change
(
instance
,
rnti
,
PROTOCOL__FLEX_UE_STATE_CHANGE_TYPE__FLUESC_DEACTIVATED
);
LOG_I
(
CU_
F1AP
,
"Received UE CONTEXT RELEASE COMPLETE: Removing CU UE entry for RNTI %x
\n
"
,
rnti
);
LOG_I
(
F1AP
,
"Received UE CONTEXT RELEASE COMPLETE: Removing CU UE entry for RNTI %x
\n
"
,
rnti
);
f1ap_remove_ue
(
&
f1ap_cu_inst
[
instance
],
rnti
);
return
0
;
}
...
...
@@ -1469,7 +1469,7 @@ int CU_send_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance) {
/* encode */
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
LOG_E
(
CU_
F1AP
,
"Failed to encode F1 setup request
\n
"
);
LOG_E
(
F1AP
,
"Failed to encode F1 setup request
\n
"
);
return
-
1
;
}
...
...
openair2/F1AP/f1ap_du_interface_management.c
View file @
1a07a1e0
...
...
@@ -145,7 +145,7 @@ int DU_send_F1_SETUP_REQUEST(instance_t instance) {
ie
->
value
.
present
=
F1AP_F1SetupRequestIEs__value_PR_GNB_DU_Served_Cells_List
;
int
num_cells_available
=
f1ap_du_data
->
num_cells_available
;
LOG_D
(
DU_
F1AP
,
"num_cells_available = %d
\n
"
,
num_cells_available
);
LOG_D
(
F1AP
,
"num_cells_available = %d
\n
"
,
num_cells_available
);
for
(
i
=
0
;
i
<
num_cells_available
;
i
++
)
{
...
...
@@ -170,11 +170,12 @@ int DU_send_F1_SETUP_REQUEST(instance_t instance) {
/* - nRCGI */
F1AP_NRCGI_t
nRCGI
;
MCC_MNC_TO_PLMNID
(
f1ap_du_data
->
mcc
[
i
],
f1ap_du_data
->
mnc
[
i
],
f1ap_du_data
->
mnc_digit_length
[
i
],
&
nRCGI
.
pLMN_Identity
);
LOG_D
(
DU_
F1AP
,
"plmn: (%d,%d)
\n
"
,
f1ap_du_data
->
mcc
[
i
],
f1ap_du_data
->
mnc
[
i
]);
LOG_D
(
F1AP
,
"plmn: (%d,%d)
\n
"
,
f1ap_du_data
->
mcc
[
i
],
f1ap_du_data
->
mnc
[
i
]);
//MCC_MNC_TO_PLMNID(208, 95, 2, &nRCGI.pLMN_Identity);
NR_CELL_ID_TO_BIT_STRING
(
f1ap_du_data
->
nr_cellid
[
i
],
&
nRCGI
.
nRCellIdentity
);
LOG_D
(
DU_F1AP
,
"nRCellIdentity (%llx): %x.%x.%x.%x.%x
\n
"
,(
long
long
unsigned
int
)
f1ap_du_data
->
nr_cellid
[
i
],
LOG_D
(
F1AP
,
"nRCellIdentity (%llx): %x.%x.%x.%x.%x
\n
"
,
(
long
long
unsigned
int
)
f1ap_du_data
->
nr_cellid
[
i
],
nRCGI
.
nRCellIdentity
.
buf
[
0
],
nRCGI
.
nRCellIdentity
.
buf
[
1
],
nRCGI
.
nRCellIdentity
.
buf
[
2
],
...
...
@@ -202,7 +203,7 @@ int DU_send_F1_SETUP_REQUEST(instance_t instance) {
/* - broadcast PLMNs */
// RK: add the num_available_broadcast_PLMNs to the message
int
num_available_broadcast_PLMNs
=
1
;
//f1ap_du_data->num_available_broadcast_PLMNs;
LOG_D
(
DU_
F1AP
,
"num_available_broadcast_PLMNs = %d
\n
"
,
num_available_broadcast_PLMNs
);
LOG_D
(
F1AP
,
"num_available_broadcast_PLMNs = %d
\n
"
,
num_available_broadcast_PLMNs
);
for
(
j
=
0
;
j
<
num_available_broadcast_PLMNs
;
// num_available_broadcast_PLMNs
j
++
)
{
...
...
@@ -235,7 +236,7 @@ int DU_send_F1_SETUP_REQUEST(instance_t instance) {
/* FDD.1.3 freqBandListNr */
int
fdd_ul_num_available_freq_Bands
=
f1ap_du_data
->
nr_mode_info
[
i
].
fdd
.
ul_num_frequency_bands
;
LOG_D
(
DU_
F1AP
,
"fdd_ul_num_available_freq_Bands = %d
\n
"
,
fdd_ul_num_available_freq_Bands
);
LOG_D
(
F1AP
,
"fdd_ul_num_available_freq_Bands = %d
\n
"
,
fdd_ul_num_available_freq_Bands
);
int
fdd_ul_j
;
for
(
fdd_ul_j
=
0
;
fdd_ul_j
<
fdd_ul_num_available_freq_Bands
;
...
...
@@ -248,7 +249,7 @@ int DU_send_F1_SETUP_REQUEST(instance_t instance) {
/* FDD.1.3.2 supportedSULBandList*/
int
num_available_supported_SULBands
=
f1ap_du_data
->
nr_mode_info
[
i
].
fdd
.
ul_num_sul_frequency_bands
;
LOG_D
(
DU_
F1AP
,
"num_available_supported_SULBands = %d
\n
"
,
num_available_supported_SULBands
);
LOG_D
(
F1AP
,
"num_available_supported_SULBands = %d
\n
"
,
num_available_supported_SULBands
);
int
fdd_ul_k
;
for
(
fdd_ul_k
=
0
;
fdd_ul_k
<
num_available_supported_SULBands
;
...
...
@@ -277,7 +278,7 @@ int DU_send_F1_SETUP_REQUEST(instance_t instance) {
/* FDD.2.3 freqBandListNr */
int
fdd_dl_num_available_freq_Bands
=
f1ap_du_data
->
nr_mode_info
[
i
].
fdd
.
dl_num_frequency_bands
;
LOG_D
(
DU_
F1AP
,
"fdd_dl_num_available_freq_Bands = %d
\n
"
,
fdd_dl_num_available_freq_Bands
);
LOG_D
(
F1AP
,
"fdd_dl_num_available_freq_Bands = %d
\n
"
,
fdd_dl_num_available_freq_Bands
);
int
fdd_dl_j
;
for
(
fdd_dl_j
=
0
;
fdd_dl_j
<
fdd_dl_num_available_freq_Bands
;
...
...
@@ -290,7 +291,7 @@ int DU_send_F1_SETUP_REQUEST(instance_t instance) {
/* FDD.2.3.2 supportedSULBandList*/
int
num_available_supported_SULBands
=
f1ap_du_data
->
nr_mode_info
[
i
].
fdd
.
dl_num_sul_frequency_bands
;
LOG_D
(
DU_
F1AP
,
"num_available_supported_SULBands = %d
\n
"
,
num_available_supported_SULBands
);
LOG_D
(
F1AP
,
"num_available_supported_SULBands = %d
\n
"
,
num_available_supported_SULBands
);
int
fdd_dl_k
;
for
(
fdd_dl_k
=
0
;
fdd_dl_k
<
num_available_supported_SULBands
;
...
...
@@ -331,7 +332,7 @@ int DU_send_F1_SETUP_REQUEST(instance_t instance) {
/* TDD.1.3 freqBandListNr */
int
tdd_num_available_freq_Bands
=
f1ap_du_data
->
nr_mode_info
[
i
].
tdd
.
num_frequency_bands
;
LOG_D
(
DU_
F1AP
,
"tdd_num_available_freq_Bands = %d
\n
"
,
tdd_num_available_freq_Bands
);
LOG_D
(
F1AP
,
"tdd_num_available_freq_Bands = %d
\n
"
,
tdd_num_available_freq_Bands
);
int
j
;
for
(
j
=
0
;
j
<
tdd_num_available_freq_Bands
;
...
...
@@ -344,7 +345,7 @@ int DU_send_F1_SETUP_REQUEST(instance_t instance) {
/* TDD.1.3.2 supportedSULBandList*/
int
num_available_supported_SULBands
=
f1ap_du_data
->
nr_mode_info
[
i
].
tdd
.
num_sul_frequency_bands
;
LOG_D
(
DU_
F1AP
,
"num_available_supported_SULBands = %d
\n
"
,
num_available_supported_SULBands
);
LOG_D
(
F1AP
,
"num_available_supported_SULBands = %d
\n
"
,
num_available_supported_SULBands
);
int
k
;
for
(
k
=
0
;
k
<
num_available_supported_SULBands
;
...
...
@@ -399,7 +400,7 @@ int DU_send_F1_SETUP_REQUEST(instance_t instance) {
/* encode */
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
LOG_E
(
DU_
F1AP
,
"Failed to encode F1 setup request
\n
"
);
LOG_E
(
F1AP
,
"Failed to encode F1 setup request
\n
"
);
return
-
1
;
}
...
...
@@ -423,7 +424,7 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
F1AP_F1AP_PDU_t
*
pdu
)
{
LOG_D
(
DU_
F1AP
,
"DU_handle_F1_SETUP_RESPONSE
\n
"
);
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
"
);
...
...
@@ -444,7 +445,7 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
MessageDef
*
msg_p
=
itti_alloc_new_message
(
TASK_DU_F1
,
F1AP_SETUP_RESP
);
LOG_D
(
DU_
F1AP
,
"F1AP: F1Setup-Resp: protocolIEs.list.count %d
\n
"
,
LOG_D
(
F1AP
,
"F1AP: F1Setup-Resp: protocolIEs.list.count %d
\n
"
,
in
->
protocolIEs
.
list
.
count
);
for
(
int
i
=
0
;
i
<
in
->
protocolIEs
.
list
.
count
;
i
++
)
{
ie
=
in
->
protocolIEs
.
list
.
array
[
i
];
...
...
@@ -455,7 +456,7 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
AssertFatal
(
ie
->
value
.
present
==
F1AP_F1SetupResponseIEs__value_PR_TransactionID
,
"ie->value.present != F1AP_F1SetupResponseIEs__value_PR_TransactionID
\n
"
);
TransactionId
=
ie
->
value
.
choice
.
TransactionID
;
LOG_D
(
DU_
F1AP
,
"F1AP: F1Setup-Resp: TransactionId %d
\n
"
,
LOG_D
(
F1AP
,
"F1AP: F1Setup-Resp: TransactionId %d
\n
"
,
TransactionId
);
break
;
case
F1AP_ProtocolIE_ID_id_gNB_CU_Name
:
...
...
@@ -466,7 +467,7 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
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
(
DU_
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
);
break
;
case
F1AP_ProtocolIE_ID_id_Cells_to_be_Activated_List
:
...
...
@@ -475,7 +476,7 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
AssertFatal
(
ie
->
value
.
present
==
F1AP_F1SetupResponseIEs__value_PR_Cells_to_be_Activated_List
,
"ie->value.present != F1AP_F1SetupResponseIEs__value_PR_Cells_to_be_Activated_List
\n
"
);
num_cells_to_activate
=
ie
->
value
.
choice
.
Cells_to_be_Activated_List
.
list
.
count
;
LOG_D
(
DU_
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
++
)
{
F1AP_Cells_to_be_Activated_List_ItemIEs_t
*
cells_to_be_activated_list_item_ies
=
ie
->
value
.
choice
.
Cells_to_be_Activated_List
.
list
.
array
[
i
];
...
...
@@ -491,7 +492,7 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
TBCD_TO_MCC_MNC
(
&
cell
->
nRCGI
.
pLMN_Identity
,
F1AP_SETUP_RESP
(
msg_p
).
mcc
[
i
],
F1AP_SETUP_RESP
(
msg_p
).
mnc
[
i
],
F1AP_SETUP_RESP
(
msg_p
).
mnc_digit_length
[
i
]);
AssertFatal
(
cell
->
nRPCI
!=
NULL
,
"nRPCI is null
\n
"
);
LOG_D
(
DU_
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
[
1
],
cell
->
nRCGI
.
nRCellIdentity
.
buf
[
2
],
...
...
@@ -505,13 +506,13 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
AssertFatal
(
ext
!=
NULL
,
"Extension for SI is null
\n
"
);
F1AP_SETUP_RESP
(
msg_p
).
num_SI
[
i
]
=
ext
->
list
.
count
;
AssertFatal
(
ext
->
list
.
count
==
1
,
"At least one SI message should be there, and only 1 for now!
\n
"
);
LOG_D
(
DU_
F1AP
,
"F1AP: F1Setup-Resp Cell %d MCC %d MNC %d NRCellid %lx num_si %d
\n
"
,
LOG_D
(
F1AP
,
"F1AP: F1Setup-Resp Cell %d MCC %d MNC %d NRCellid %lx num_si %d
\n
"
,
i
,
F1AP_SETUP_RESP
(
msg_p
).
mcc
[
i
],
F1AP_SETUP_RESP
(
msg_p
).
mnc
[
i
],
F1AP_SETUP_RESP
(
msg_p
).
nr_cellid
[
i
],
F1AP_SETUP_RESP
(
msg_p
).
num_SI
[
i
]);
for
(
int
si
=
0
;
si
<
ext
->
list
.
count
;
si
++
)
{
size_t
size
=
ext
->
list
.
array
[
si
]
->
extensionValue
.
choice
.
GNB_CUSystemInformation
.
sImessage
.
size
;
F1AP_SETUP_RESP
(
msg_p
).
SI_container_length
[
i
][
si
]
=
size
;
LOG_D
(
DU_
F1AP
,
"F1AP: F1Setup-Resp SI_container_length[%d][%d] %ld bytes
\n
"
,
i
,
si
,
size
);
LOG_D
(
F1AP
,
"F1AP: F1Setup-Resp SI_container_length[%d][%d] %ld bytes
\n
"
,
i
,
si
,
size
);
F1AP_SETUP_RESP
(
msg_p
).
SI_container
[
i
][
si
]
=
malloc
(
F1AP_SETUP_RESP
(
msg_p
).
SI_container_length
[
i
][
si
]);
memcpy
((
void
*
)
F1AP_SETUP_RESP
(
msg_p
).
SI_container
[
i
][
si
],
...
...
@@ -538,7 +539,7 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
0
,
0
,
//MSC_AS_TIME_ARGS(ctxt_pP),
assoc_id
);
LOG_D
(
DU_
F1AP
,
"Sending F1AP_SETUP_RESP ITTI message to ENB_APP with assoc_id (%d->%d)
\n
"
,
LOG_D
(
F1AP
,
"Sending F1AP_SETUP_RESP ITTI message to ENB_APP with assoc_id (%d->%d)
\n
"
,
assoc_id
,
ENB_MODULE_ID_TO_INSTANCE
(
assoc_id
));
itti_send_msg_to_task
(
TASK_ENB_APP
,
ENB_MODULE_ID_TO_INSTANCE
(
assoc_id
),
msg_p
);
...
...
@@ -550,7 +551,7 @@ int DU_handle_F1_SETUP_FAILURE(instance_t instance,
uint32_t
assoc_id
,
uint32_t
stream
,
F1AP_F1AP_PDU_t
*
pdu
)
{
LOG_E
(
DU_
F1AP
,
"DU_handle_F1_SETUP_FAILURE
\n
"
);
LOG_E
(
F1AP
,
"DU_handle_F1_SETUP_FAILURE
\n
"
);
return
0
;
}
...
...
@@ -619,7 +620,7 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance,
/* - nRCGI */
F1AP_NRCGI_t
nRCGI
;
MCC_MNC_TO_PLMNID
(
f1ap_du_data
->
mcc
[
i
],
f1ap_du_data
->
mnc
[
i
],
f1ap_du_data
->
mnc_digit_length
[
i
],
&
nRCGI
.
pLMN_Identity
);
LOG_D
(
DU_
F1AP
,
"nr_cellId : %x %x %x %x %x
\n
"
,
LOG_D
(
F1AP
,
"nr_cellId : %x %x %x %x %x
\n
"
,
nRCGI
.
nRCellIdentity
.
buf
[
0
],
nRCGI
.
nRCellIdentity
.
buf
[
1
],
nRCGI
.
nRCellIdentity
.
buf
[
2
],
...
...
@@ -994,7 +995,7 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance,
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
LOG_E
(
DU_
F1AP
,
"Failed to encode F1 setup request
\n
"
);
LOG_E
(
F1AP
,
"Failed to encode F1 setup request
\n
"
);
return
-
1
;
}
...
...
openair2/F1AP/f1ap_du_rrc_message_transfer.c
View file @
1a07a1e0
...
...
@@ -67,7 +67,7 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
uint32_t
stream
,
F1AP_F1AP_PDU_t
*
pdu
)
{
#ifndef UETARGET
LOG_D
(
DU_
F1AP
,
"DU_handle_DL_RRC_MESSAGE_TRANSFER
\n
"
);
LOG_D
(
F1AP
,
"DU_handle_DL_RRC_MESSAGE_TRANSFER
\n
"
);
F1AP_DLRRCMessageTransfer_t
*
container
;
F1AP_DLRRCMessageTransferIEs_t
*
ie
;
...
...
@@ -95,19 +95,19 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_DLRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID
,
true
);
cu_ue_f1ap_id
=
ie
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
;
LOG_D
(
DU_
F1AP
,
"cu_ue_f1ap_id %lu
\n
"
,
cu_ue_f1ap_id
);
LOG_D
(
F1AP
,
"cu_ue_f1ap_id %lu
\n
"
,
cu_ue_f1ap_id
);
/* GNB_DU_UE_F1AP_ID */
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_DLRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
,
true
);
du_ue_f1ap_id
=
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
;
LOG_D
(
DU_F1AP
,
"du_ue_f1ap_id %lu associated with UE RNTI %x
\n
"
,
LOG_D
(
F1AP
,
"du_ue_f1ap_id %lu associated with UE RNTI %x
\n
"
,
du_ue_f1ap_id
,
f1ap_get_rnti_by_du_id
(
&
f1ap_du_inst
[
instance
],
du_ue_f1ap_id
));
// this should be the one transmitted via initial ul rrc message transfer
if
(
f1ap_du_add_cu_ue_id
(
&
f1ap_du_inst
[
instance
],
du_ue_f1ap_id
,
cu_ue_f1ap_id
)
<
0
)
{
LOG_E
(
DU_
F1AP
,
"Failed to find the F1AP UID
\n
"
);
LOG_E
(
F1AP
,
"Failed to find the F1AP UID
\n
"
);
//return -1;
}
...
...
@@ -123,7 +123,7 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_DLRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_SRBID
,
true
);
srb_id
=
ie
->
value
.
choice
.
SRBID
;
LOG_D
(
DU_
F1AP
,
"srb_id %lu
\n
"
,
srb_id
);
LOG_D
(
F1AP
,
"srb_id %lu
\n
"
,
srb_id
);
/* optional */
/* ExecuteDuplication */
...
...
@@ -131,7 +131,7 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_DLRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_ExecuteDuplication
,
true
);
executeDuplication
=
ie
->
value
.
choice
.
ExecuteDuplication
;
LOG_D
(
DU_
F1AP
,
"ExecuteDuplication %d
\n
"
,
executeDuplication
);
LOG_D
(
F1AP
,
"ExecuteDuplication %d
\n
"
,
executeDuplication
);
}
// issue in here
...
...
@@ -165,7 +165,7 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
//rAT_FrequencySelectionPriority = ie->value.choice.RAT_FrequencyPriorityInformation.choice.rAT_FrequencySelectionPriority;
break
;
default:
LOG_W
(
DU_
F1AP
,
"unhandled IE RAT_FrequencyPriorityInformation.present
\n
"
);
LOG_W
(
F1AP
,
"unhandled IE RAT_FrequencyPriorityInformation.present
\n
"
);
break
;
}
}
...
...
@@ -195,27 +195,27 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
switch
(
dl_ccch_msg
->
message
.
choice
.
c1
.
present
)
{
case
LTE_DL_CCCH_MessageType__c1_PR_NOTHING
:
LOG_I
(
DU_
F1AP
,
"Received PR_NOTHING on DL-CCCH-Message
\n
"
);
LOG_I
(
F1AP
,
"Received PR_NOTHING on DL-CCCH-Message
\n
"
);
break
;
case
LTE_DL_CCCH_MessageType__c1_PR_rrcConnectionReestablishment
:
LOG_I
(
DU_
F1AP
,
LOG_I
(
F1AP
,
"Logical Channel DL-CCCH (SRB0), Received RRCConnectionReestablishment
\n
"
);
break
;
case
LTE_DL_CCCH_MessageType__c1_PR_rrcConnectionReestablishmentReject
:
LOG_I
(
DU_
F1AP
,
LOG_I
(
F1AP
,
"Logical Channel DL-CCCH (SRB0), Received RRCConnectionReestablishmentReject
\n
"
);
break
;
case
LTE_DL_CCCH_MessageType__c1_PR_rrcConnectionReject
:
LOG_I
(
DU_
F1AP
,
LOG_I
(
F1AP
,
"Logical Channel DL-CCCH (SRB0), Received RRCConnectionReject
\n
"
);
break
;
case
LTE_DL_CCCH_MessageType__c1_PR_rrcConnectionSetup
:
{
LOG_I
(
DU_
F1AP
,
LOG_I
(
F1AP
,
"Logical Channel DL-CCCH (SRB0), Received RRCConnectionSetup DU_ID %lx/RNTI %x
\n
"
,
du_ue_f1ap_id
,
f1ap_get_rnti_by_du_id
(
&
f1ap_du_inst
[
instance
],
du_ue_f1ap_id
));
...
...
@@ -328,9 +328,9 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
rrc_dl_sdu_len
,
0
,
0
);
if
((
dec_rval
.
code
!=
RC_OK
)
&&
(
dec_rval
.
consumed
==
0
))
LOG_E
(
DU_
F1AP
,
" Failed to decode DL-DCCH (%zu bytes)
\n
"
,
dec_rval
.
consumed
);
LOG_E
(
F1AP
,
" Failed to decode DL-DCCH (%zu bytes)
\n
"
,
dec_rval
.
consumed
);
else
LOG_D
(
DU_F1AP
,
"Received message: present %d and c1 present %d
\n
"
,
LOG_D
(
F1AP
,
"Received message: present %d and c1 present %d
\n
"
,
dl_dcch_msg
->
message
.
present
,
dl_dcch_msg
->
message
.
choice
.
c1
.
present
);
if
(
dl_dcch_msg
->
message
.
present
==
LTE_DL_DCCH_MessageType_PR_c1
)
{
...
...
@@ -338,23 +338,23 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
switch
(
dl_dcch_msg
->
message
.
choice
.
c1
.
present
)
{
case
LTE_DL_DCCH_MessageType__c1_PR_NOTHING
:
LOG_I
(
DU_
F1AP
,
"Received PR_NOTHING on DL-DCCH-Message
\n
"
);
LOG_I
(
F1AP
,
"Received PR_NOTHING on DL-DCCH-Message
\n
"
);
return
0
;
case
LTE_DL_DCCH_MessageType__c1_PR_dlInformationTransfer
:
LOG_I
(
DU_
F1AP
,
"Received NAS DL Information Transfer
\n
"
);
LOG_I
(
F1AP
,
"Received NAS DL Information Transfer
\n
"
);
break
;
case
LTE_DL_DCCH_MessageType__c1_PR_csfbParametersResponseCDMA2000
:
LOG_I
(
DU_
F1AP
,
"Received NAS sfbParametersResponseCDMA2000
\n
"
);
LOG_I
(
F1AP
,
"Received NAS sfbParametersResponseCDMA2000
\n
"
);
break
;
case
LTE_DL_DCCH_MessageType__c1_PR_handoverFromEUTRAPreparationRequest
:
LOG_I
(
DU_
F1AP
,
"Received NAS andoverFromEUTRAPreparationRequest
\n
"
);
LOG_I
(
F1AP
,
"Received NAS andoverFromEUTRAPreparationRequest
\n
"
);
break
;
case
LTE_DL_DCCH_MessageType__c1_PR_mobilityFromEUTRACommand
:
LOG_I
(
DU_
F1AP
,
"Received NAS mobilityFromEUTRACommand
\n
"
);
LOG_I
(
F1AP
,
"Received NAS mobilityFromEUTRACommand
\n
"
);
break
;
case
LTE_DL_DCCH_MessageType__c1_PR_rrcConnectionReconfiguration
:
// handle RRCConnectionReconfiguration
LOG_I
(
DU_
F1AP
,
LOG_I
(
F1AP
,
"Logical Channel DL-DCCH (SRB1), Received RRCConnectionReconfiguration DU_ID %lx/RNTI %x
\n
"
,
du_ue_f1ap_id
,
f1ap_get_rnti_by_du_id
(
&
f1ap_du_inst
[
instance
],
du_ue_f1ap_id
));
...
...
@@ -368,15 +368,15 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
&
rrcConnectionReconfiguration
->
criticalExtensions
.
choice
.
c1
.
choice
.
rrcConnectionReconfiguration_r8
;
if
(
rrcConnectionReconfiguration_r8
->
mobilityControlInfo
)
{
LOG_I
(
DU_F1AP
,
"Mobility Control Information is present
\n
"
);
LOG_I
(
F1AP
,
"Mobility Control Information is present
\n
"
);
AssertFatal
(
1
==
0
,
"Can't handle this yet in DU
\n
"
);
}
if
(
rrcConnectionReconfiguration_r8
->
measConfig
!=
NULL
)
{
LOG_I
(
DU_F1AP
,
"Measurement Configuration is present
\n
"
);
LOG_I
(
F1AP
,
"Measurement Configuration is present
\n
"
);
}
if
(
rrcConnectionReconfiguration_r8
->
radioResourceConfigDedicated
)
{
LOG_I
(
DU_F1AP
,
"Radio Resource Configuration is present
\n
"
);
LOG_I
(
F1AP
,
"Radio Resource Configuration is present
\n
"
);
uint8_t
DRB2LCHAN
[
8
];
long
drb_id
;
int
i
;
...
...
@@ -405,9 +405,9 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
else
if
(
SRB_configList
->
list
.
array
[
i
]
->
srb_Identity
==
2
)
{
ue_context_p
->
ue_context
.
Srb2
.
Active
=
1
;
ue_context_p
->
ue_context
.
Srb2
.
Srb_info
.
Srb_id
=
2
;
LOG_I
(
DU_F1AP
,
"[DU %d] SRB2 is now active
\n
"
,
ctxt
.
module_id
);
LOG_I
(
F1AP
,
"[DU %d] SRB2 is now active
\n
"
,
ctxt
.
module_id
);
}
else
{
LOG_W
(
DU_F1AP
,
"[DU %d] invalide SRB identity %ld
\n
"
,
ctxt
.
module_id
,
LOG_W
(
F1AP
,
"[DU %d] invalide SRB identity %ld
\n
"
,
ctxt
.
module_id
,
SRB_configList
->
list
.
array
[
i
]
->
srb_Identity
);
}
}
...
...
@@ -417,7 +417,7 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
for
(
i
=
0
;
i
<
DRB_configList
->
list
.
count
;
i
++
)
{
// num max DRB (11-3-8)
if
(
DRB_configList
->
list
.
array
[
i
])
{
drb_id
=
(
int
)
DRB_configList
->
list
.
array
[
i
]
->
drb_Identity
;
LOG_I
(
DU_
F1AP
,
LOG_I
(
F1AP
,
"[DU %d] Logical Channel UL-DCCH, Received RRCConnectionReconfiguration for UE rnti %x, reconfiguring DRB %d/LCID %d
\n
"
,
ctxt
.
module_id
,
ctxt
.
rnti
,
...
...
@@ -478,13 +478,13 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
break
;
case
LTE_DL_DCCH_MessageType__c1_PR_rrcConnectionRelease
:
// handle RRCConnectionRelease
LOG_I
(
DU_F1AP
,
"Received RRCConnectionRelease
\n
"
);
LOG_I
(
F1AP
,
"Received RRCConnectionRelease
\n
"
);
break
;
case
LTE_DL_DCCH_MessageType__c1_PR_securityModeCommand
:
LOG_I
(
DU_F1AP
,
"Received securityModeCommand
\n
"
);
LOG_I
(
F1AP
,
"Received securityModeCommand
\n
"
);
break
;
case
LTE_DL_DCCH_MessageType__c1_PR_ueCapabilityEnquiry
:
LOG_I
(
DU_F1AP
,
"Received ueCapabilityEnquiry
\n
"
);
LOG_I
(
F1AP
,
"Received ueCapabilityEnquiry
\n
"
);
break
;
case
LTE_DL_DCCH_MessageType__c1_PR_counterCheck
:
#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
...
...
@@ -499,10 +499,10 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
#endif
break
;
case
LTE_DL_DCCH_MessageType__c1_PR_ueInformationRequest_r9
:
LOG_I
(
DU_
F1AP
,
"Received ueInformationRequest_r9
\n
"
);
LOG_I
(
F1AP
,
"Received ueInformationRequest_r9
\n
"
);
break
;
case
LTE_DL_DCCH_MessageType__c1_PR_rrcConnectionResume_r13
:
LOG_I
(
DU_
F1AP
,
"Received rrcConnectionResume_r13
\n
"
);
LOG_I
(
F1AP
,
"Received rrcConnectionResume_r13
\n
"
);
}
}
}
...
...
@@ -510,7 +510,7 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
}
LOG_I
(
DU_
F1AP
,
"Received DL RRC Transfer on srb_id %ld
\n
"
,
srb_id
);
LOG_I
(
F1AP
,
"Received DL RRC Transfer on srb_id %ld
\n
"
,
srb_id
);
rlc_op_status_t
rlc_status
;
boolean_t
ret
=
TRUE
;
mem_block_t
*
pdcp_pdu_p
=
NULL
;
...
...
@@ -543,27 +543,27 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
);
switch
(
rlc_status
)
{
case
RLC_OP_STATUS_OK
:
//LOG_I(
DU_
F1AP, "Data sending request over RLC succeeded!\n");
//LOG_I(F1AP, "Data sending request over RLC succeeded!\n");
ret
=
TRUE
;
break
;
case
RLC_OP_STATUS_BAD_PARAMETER
:
LOG_W
(
DU_
F1AP
,
"Data sending request over RLC failed with 'Bad Parameter' reason!
\n
"
);
LOG_W
(
F1AP
,
"Data sending request over RLC failed with 'Bad Parameter' reason!
\n
"
);
ret
=
FALSE
;
break
;
case
RLC_OP_STATUS_INTERNAL_ERROR
:
LOG_W
(
DU_
F1AP
,
"Data sending request over RLC failed with 'Internal Error' reason!
\n
"
);
LOG_W
(
F1AP
,
"Data sending request over RLC failed with 'Internal Error' reason!
\n
"
);
ret
=
FALSE
;
break
;
case
RLC_OP_STATUS_OUT_OF_RESSOURCES
:
LOG_W
(
DU_
F1AP
,
"Data sending request over RLC failed with 'Out of Resources' reason!
\n
"
);
LOG_W
(
F1AP
,
"Data sending request over RLC failed with 'Out of Resources' reason!
\n
"
);
ret
=
FALSE
;
break
;
default:
LOG_W
(
DU_
F1AP
,
"RLC returned an unknown status code after PDCP placed the order to send some data (Status Code:%d)
\n
"
,
rlc_status
);
LOG_W
(
F1AP
,
"RLC returned an unknown status code after PDCP placed the order to send some data (Status Code:%d)
\n
"
,
rlc_status
);
ret
=
FALSE
;
break
;
}
// switch case
...
...
@@ -592,7 +592,7 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(const protocol_ctxt_t* const ctxt_pP,
uint32_t
len
;
LOG_I
(
DU_F1AP
,
"[DU %d] %s: size %d UE RNTI %x in SRB %d
\n
"
,
LOG_I
(
F1AP
,
"[DU %d] %s: size %d UE RNTI %x in SRB %d
\n
"
,
ctxt_pP
->
module_id
,
__func__
,
sdu_sizeP
,
rnti
,
rb_idP
);
/* Create */
...
...
@@ -661,9 +661,9 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(const protocol_ctxt_t* const ctxt_pP,
sdu_sizeP
,
0
,
0
);
if
((
dec_rval
.
code
!=
RC_OK
)
&&
(
dec_rval
.
consumed
==
0
))
LOG_E
(
DU_F1AP
,
" Failed to decode UL-DCCH (%zu bytes)
\n
"
,
dec_rval
.
consumed
);
LOG_E
(
F1AP
,
" Failed to decode UL-DCCH (%zu bytes)
\n
"
,
dec_rval
.
consumed
);
else
LOG_I
(
DU_F1AP
,
"Received message: present %d and c1 present %d
\n
"
,
LOG_I
(
F1AP
,
"Received message: present %d and c1 present %d
\n
"
,
ul_dcch_msg
->
message
.
present
,
ul_dcch_msg
->
message
.
choice
.
c1
.
present
);
if
(
ul_dcch_msg
->
message
.
present
==
LTE_UL_DCCH_MessageType_PR_c1
)
{
...
...
@@ -685,31 +685,31 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(const protocol_ctxt_t* const ctxt_pP,
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_rrcConnectionSetupComplete
:
LOG_I
(
DU_F1AP
,
"[MSG] RRC UL rrcConnectionSetupComplete
\n
"
);
LOG_I
(
F1AP
,
"[MSG] RRC UL rrcConnectionSetupComplete
\n
"
);
if
(
!
ue_context_p
){
LOG_E
(
DU_
F1AP
,
"Did not find the UE context associated with UE RNTOI %x, ue_context_p is NULL
\n
"
,
ctxt_pP
->
rnti
);
LOG_E
(
F1AP
,
"Did not find the UE context associated with UE RNTOI %x, ue_context_p is NULL
\n
"
,
ctxt_pP
->
rnti
);
}
else
{
LOG_I
(
DU_
F1AP
,
"Processing RRCConnectionSetupComplete UE %x
\n
"
,
rnti
);
LOG_I
(
F1AP
,
"Processing RRCConnectionSetupComplete UE %x
\n
"
,
rnti
);
ue_context_p
->
ue_context
.
Status
=
RRC_CONNECTED
;
}
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_securityModeComplete
:
LOG_I
(
DU_F1AP
,
"[MSG] RRC securityModeComplete
\n
"
);
LOG_I
(
F1AP
,
"[MSG] RRC securityModeComplete
\n
"
);
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_securityModeFailure
:
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_ueCapabilityInformation
:
LOG_I
(
DU_F1AP
,
"[MSG] RRC ueCapabilityInformation
\n
"
);
LOG_I
(
F1AP
,
"[MSG] RRC ueCapabilityInformation
\n
"
);
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_ulHandoverPreparationTransfer
:
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_ulInformationTransfer
:
LOG_I
(
DU_
F1AP
,
"[MSG] RRC UL Information Transfer
\n
"
);
LOG_I
(
F1AP
,
"[MSG] RRC UL Information Transfer
\n
"
);
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_counterCheckResponse
:
...
...
@@ -739,7 +739,7 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(const protocol_ctxt_t* const ctxt_pP,
}
/* encode */
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
LOG_E
(
DU_
F1AP
,
"Failed to encode F1 setup request
\n
"
);
LOG_E
(
F1AP
,
"Failed to encode F1 setup request
\n
"
);
return
-
1
;
}
...
...
@@ -765,7 +765,7 @@ int DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER(module_id_t module_idP,
int
f1ap_uid
=
f1ap_add_ue
(
&
f1ap_du_inst
[
module_idP
],
module_idP
,
CC_idP
,
UE_id
,
rntiP
);
if
(
f1ap_uid
<
0
)
{
LOG_E
(
DU_
F1AP
,
"Failed to add UE
\n
"
);
LOG_E
(
F1AP
,
"Failed to add UE
\n
"
);
return
-
1
;
}
...
...
@@ -836,7 +836,7 @@ int DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER(module_id_t module_idP,
/* encode */
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
LOG_E
(
DU_
F1AP
,
"Failed to encode F1 setup request
\n
"
);
LOG_E
(
F1AP
,
"Failed to encode F1 setup request
\n
"
);
return
-
1
;
}
...
...
openair2/F1AP/f1ap_du_task.c
View file @
1a07a1e0
...
...
@@ -19,7 +19,7 @@
* contact@openairinterface.org
*/
/*! \file openair2/F1AP/
DU_F1AP
.c
/*! \file openair2/F1AP/
f1ap_du_task
.c
* \brief data structures for F1 interface modules
* \author EURECOM/NTUST
* \date 2018
...
...
@@ -132,7 +132,7 @@ void *F1AP_DU_task(void *arg) {
MessageDef
*
received_msg
=
NULL
;
int
result
;
LOG_I
(
DU_
F1AP
,
"Starting F1AP at DU
\n
"
);
LOG_I
(
F1AP
,
"Starting F1AP at DU
\n
"
);
//f1ap_eNB_prepare_internal_data();
...
...
@@ -153,7 +153,7 @@ void *F1AP_DU_task(void *arg) {
// 1. save the itti msg so that you can use it to sen f1ap_setup_req, fill the f1ap_setup_req message,
// 2. store the message in f1ap context, that is also stored in RC
// 2. send a sctp_association req
LOG_I
(
DU_
F1AP
,
"DU Task Received F1AP_SETUP_REQ
\n
"
);
LOG_I
(
F1AP
,
"DU Task Received F1AP_SETUP_REQ
\n
"
);
du_task_send_sctp_association_req
(
ITTI_MESSAGE_GET_INSTANCE
(
received_msg
),
&
F1AP_SETUP_REQ
(
received_msg
));
break
;
...
...
@@ -161,38 +161,38 @@ void *F1AP_DU_task(void *arg) {
case
SCTP_NEW_ASSOCIATION_RESP
:
// 1. store the respon
// 2. send the f1setup_req
LOG_I
(
DU_
F1AP
,
"DU Task Received SCTP_NEW_ASSOCIATION_RESP
\n
"
);
LOG_I
(
F1AP
,
"DU Task Received SCTP_NEW_ASSOCIATION_RESP
\n
"
);
du_task_handle_sctp_association_resp
(
ITTI_MESSAGE_GET_INSTANCE
(
received_msg
),
&
received_msg
->
ittiMsg
.
sctp_new_association_resp
);
break
;
case
SCTP_DATA_IND
:
// ex: any F1 incoming message for DU ends here
LOG_I
(
DU_
F1AP
,
"DU Task Received SCTP_DATA_IND
\n
"
);
LOG_I
(
F1AP
,
"DU Task Received SCTP_DATA_IND
\n
"
);
du_task_handle_sctp_data_ind
(
ITTI_MESSAGE_GET_INSTANCE
(
received_msg
),
&
received_msg
->
ittiMsg
.
sctp_data_ind
);
break
;
case
F1AP_UL_RRC_MESSAGE
:
// from rrc
LOG_I
(
DU_
F1AP
,
"DU Task Received F1AP_UL_RRC_MESSAGE
\n
"
);
LOG_I
(
F1AP
,
"DU Task Received F1AP_UL_RRC_MESSAGE
\n
"
);
AssertFatal
(
1
==
0
,
"Should not be here!
\n
"
);
//DU_send_UL_RRC_MESSAGE_TRANSFER(ITTI_MESSAGE_GET_INSTANCE(received_msg),
// &F1AP_UL_RRC_MESSAGE(received_msg));
break
;
case
F1AP_UE_CONTEXT_RELEASE_REQ
:
// from MAC
LOG_I
(
DU_
F1AP
,
"DU Task Received F1AP_UE_CONTEXT_RELEASE_REQ
\n
"
);
LOG_I
(
F1AP
,
"DU Task Received F1AP_UE_CONTEXT_RELEASE_REQ
\n
"
);
DU_send_UE_CONTEXT_RELEASE_REQUEST
(
ITTI_MESSAGE_GET_INSTANCE
(
received_msg
),
&
F1AP_UE_CONTEXT_RELEASE_REQ
(
received_msg
));
break
;
case
TERMINATE_MESSAGE
:
LOG_W
(
DU_F1AP
,
" *** Exiting DU_
F1AP thread
\n
"
);
LOG_W
(
F1AP
,
" *** Exiting
F1AP thread
\n
"
);
itti_exit_task
();
break
;
default:
LOG_E
(
DU_
F1AP
,
"DU Received unhandled message: %d:%s
\n
"
,
LOG_E
(
F1AP
,
"DU Received unhandled message: %d:%s
\n
"
,
ITTI_MSG_ID
(
received_msg
),
ITTI_MSG_NAME
(
received_msg
));
break
;
}
// switch
...
...
openair2/F1AP/f1ap_du_task.h
View file @
1a07a1e0
...
...
@@ -19,12 +19,12 @@
* contact@openairinterface.org
*/
#ifndef
DU_F1AP
_TASK_H_
#define
DU_F1AP
_TASK_H_
#ifndef
F1AP_DU
_TASK_H_
#define
F1AP_DU
_TASK_H_
void
du_task_send_sctp_association_req
(
instance_t
instance
,
f1ap_setup_req_t
*
f1ap_setup_req
);
void
du_task_handle_sctp_association_resp
(
instance_t
instance
,
sctp_new_association_resp_t
*
sctp_new_association_resp
);
void
du_task_handle_sctp_data_ind
(
instance_t
instance
,
sctp_data_ind_t
*
sctp_data_ind
);
void
*
F1AP_DU_task
(
void
*
arg
);
#endif
/*
DU_F1AP
_TASK_H_ */
#endif
/*
F1AP_DU
_TASK_H_ */
openair2/F1AP/f1ap_du_ue_context_management.c
View file @
1a07a1e0
...
...
@@ -547,7 +547,7 @@ int DU_send_UE_CONTEXT_SETUP_RESPONSE(instance_t instance) {
/* encode */
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
LOG_E
(
DU_
F1AP
,
"Failed to encode F1 setup request
\n
"
);
LOG_E
(
F1AP
,
"Failed to encode F1 setup request
\n
"
);
return
-
1
;
}
...
...
@@ -631,7 +631,7 @@ int DU_send_UE_CONTEXT_RELEASE_REQUEST(instance_t instance,
/* encode */
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
LOG_E
(
DU_
F1AP
,
"Failed to encode F1 context release request
\n
"
);
LOG_E
(
F1AP
,
"Failed to encode F1 context release request
\n
"
);
return
-
1
;
}
...
...
@@ -712,16 +712,16 @@ int DU_handle_UE_CONTEXT_RELEASE_COMMAND(instance_t instance,
case
RLC_OP_STATUS_OK
:
break
;
case
RLC_OP_STATUS_BAD_PARAMETER
:
LOG_W
(
DU_
F1AP
,
"Data sending request over RLC failed with 'Bad Parameter' reason!
\n
"
);
LOG_W
(
F1AP
,
"Data sending request over RLC failed with 'Bad Parameter' reason!
\n
"
);
break
;
case
RLC_OP_STATUS_INTERNAL_ERROR
:
LOG_W
(
DU_
F1AP
,
"Data sending request over RLC failed with 'Internal Error' reason!
\n
"
);
LOG_W
(
F1AP
,
"Data sending request over RLC failed with 'Internal Error' reason!
\n
"
);
break
;
case
RLC_OP_STATUS_OUT_OF_RESSOURCES
:
LOG_W
(
DU_
F1AP
,
"Data sending request over RLC failed with 'Out of Resources' reason!
\n
"
);
LOG_W
(
F1AP
,
"Data sending request over RLC failed with 'Out of Resources' reason!
\n
"
);
break
;
default:
LOG_W
(
DU_F1AP
,
"RLC returned an unknown status code after DU_
F1AP placed "
LOG_W
(
F1AP
,
"RLC returned an unknown status code after
F1AP placed "
"the order to send some data (Status Code:%d)
\n
"
,
rlc_status
);
break
;
}
...
...
@@ -740,7 +740,7 @@ int DU_handle_UE_CONTEXT_RELEASE_COMMAND(instance_t instance,
else
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
flag
=
2
;
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
rnti
=
ctxt
.
rnti
;
LOG_
W
(
DU_
F1AP
,
"add rrc_release_info RNTI %x
\n
"
,
ctxt
.
rnti
);
LOG_
D
(
F1AP
,
"add rrc_release_info RNTI %x
\n
"
,
ctxt
.
rnti
);
// TODO: how to provide the correct MUI?
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
rrc_eNB_mui
=
0
;
rrc_release_info
.
num_UEs
++
;
...
...
@@ -755,7 +755,7 @@ int DU_handle_UE_CONTEXT_RELEASE_COMMAND(instance_t instance,
/* UE exists and is out of sync, drop the connection */
mac_eNB_rrc_ul_failure
(
instance
,
0
,
0
,
0
,
rnti
);
}
else
{
LOG_E
(
DU_
F1AP
,
"no ue_context for RNTI %x, acknowledging release
\n
"
,
rnti
);
LOG_E
(
F1AP
,
"no ue_context for RNTI %x, acknowledging release
\n
"
,
rnti
);
}
/* TODO send this once the connection has really been released */
...
...
@@ -861,7 +861,7 @@ int DU_send_UE_CONTEXT_RELEASE_COMPLETE(instance_t instance,
uint8_t
*
buffer
;
uint32_t
len
;
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
LOG_E
(
DU_
F1AP
,
"Failed to encode F1 context release complete
\n
"
);
LOG_E
(
F1AP
,
"Failed to encode F1 context release complete
\n
"
);
return
-
1
;
}
...
...
@@ -1267,7 +1267,7 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance) {
/* encode */
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
LOG_E
(
DU_
F1AP
,
"Failed to encode F1 setup request
\n
"
);
LOG_E
(
F1AP
,
"Failed to encode F1 setup request
\n
"
);
return
-
1
;
}
...
...
openair2/F1AP/f1ap_encoder.c
View file @
1a07a1e0
...
...
@@ -93,8 +93,6 @@ int f1ap_encode_pdu(F1AP_F1AP_PDU_t *pdu, uint8_t **buffer, uint32_t *length)
*
length
=
encoded
;
/* Is the following needed? I moved the code here from CU_F1AP.c/DU_F1AP.c */
// ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_F1AP_F1AP_PDU, pdu);
return
encoded
;
}
...
...
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