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
canghaiwuhen
OpenXG-RAN
Commits
0e7887de
Commit
0e7887de
authored
Sep 16, 2018
by
Bing-Kai Hong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Handle DL\UL RRC MESSAGE TRANSFER at f1ap_handlers
parent
ca9748ec
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
191 additions
and
30 deletions
+191
-30
openair2/F1AP/f1ap_cu_rrc_message_transfer.c
openair2/F1AP/f1ap_cu_rrc_message_transfer.c
+68
-11
openair2/F1AP/f1ap_decoder.c
openair2/F1AP/f1ap_decoder.c
+19
-8
openair2/F1AP/f1ap_du_rrc_message_transfer.c
openair2/F1AP/f1ap_du_rrc_message_transfer.c
+101
-9
openair2/F1AP/f1ap_handlers.c
openair2/F1AP/f1ap_handlers.c
+3
-2
No files found.
openair2/F1AP/f1ap_cu_rrc_message_transfer.c
View file @
0e7887de
...
@@ -246,16 +246,7 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance) {
...
@@ -246,16 +246,7 @@ int CU_send_DL_RRC_MESSAGE_TRANSFER(instance_t instance) {
printf
(
"Failed to encode F1 setup request
\n
"
);
printf
(
"Failed to encode F1 setup request
\n
"
);
return
-
1
;
return
-
1
;
}
}
printf
(
"
\n
"
);
/* decode */
if
(
f1ap_decode_pdu
(
&
pdu
,
buffer
,
len
)
>
0
)
{
printf
(
"Failed to decode F1 setup request
\n
"
);
return
-
1
;
}
return
0
;
}
}
/*
/*
...
@@ -266,5 +257,71 @@ int CU_handle_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
...
@@ -266,5 +257,71 @@ int CU_handle_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
uint32_t
assoc_id
,
uint32_t
assoc_id
,
uint32_t
stream
,
uint32_t
stream
,
F1AP_F1AP_PDU_t
*
pdu
)
{
F1AP_F1AP_PDU_t
*
pdu
)
{
AssertFatal
(
1
==
0
,
"Not implemented yet
\n
"
);
printf
(
"CU_handle_UL_RRC_MESSAGE_TRANSFER
\n
"
);
MessageDef
*
message_p
;
F1AP_ULRRCMessageTransfer_t
*
container
;
F1AP_ULRRCMessageTransferIEs_t
*
ie
;
uint8_t
*
buffer
;
uint32_t
len
;
uint64_t
cu_ue_f1ap_id
;
uint64_t
du_ue_f1ap_id
;
uint64_t
srb_id
;
int
executeDuplication
;
sdu_size_t
ccch_sdu_len
;
uint64_t
subscriberProfileIDforRFP
;
uint64_t
rAT_FrequencySelectionPriority
;
DevAssert
(
pdu
!=
NULL
);
if
(
stream
!=
0
)
{
LOG_E
(
F1AP
,
"[SCTP %d] Received F1 on stream != 0 (%d)
\n
"
,
assoc_id
,
stream
);
return
-
1
;
}
container
=
&
pdu
->
choice
.
initiatingMessage
->
value
.
choice
.
ULRRCMessageTransfer
;
/* GNB_CU_UE_F1AP_ID */
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
;
printf
(
"cu_ue_f1ap_id %lu
\n
"
,
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
;
printf
(
"du_ue_f1ap_id %lu
\n
"
,
du_ue_f1ap_id
);
/* mandatory */
/* SRBID */
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_ULRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_SRBID
,
true
);
srb_id
=
ie
->
value
.
choice
.
SRBID
;
printf
(
"srb_id %lu
\n
"
,
srb_id
);
// issue in here
/* mandatory */
/* RRC Container */
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_ULRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_RRCContainer
,
true
);
// BK: need check
// create an ITTI message and copy SDU
message_p
=
itti_alloc_new_message
(
TASK_CU_F1
,
RRC_MAC_CCCH_DATA_IND
);
memset
(
RRC_MAC_CCCH_DATA_IND
(
message_p
).
sdu
,
0
,
CCCH_SDU_SIZE
);
ccch_sdu_len
=
ie
->
value
.
choice
.
RRCContainer
.
size
;
memcpy
(
RRC_MAC_CCCH_DATA_IND
(
message_p
).
sdu
,
ie
->
value
.
choice
.
RRCContainer
.
buf
,
ccch_sdu_len
);
printf
(
"RRCContainer(CCCH) :"
);
for
(
int
i
=
0
;
i
<
ie
->
value
.
choice
.
RRCContainer
.
size
;
i
++
)
printf
(
"%2x "
,
RRC_MAC_CCCH_DATA_IND
(
message_p
).
sdu
[
i
]);
return
0
;
}
}
openair2/F1AP/f1ap_decoder.c
View file @
0e7887de
...
@@ -42,14 +42,25 @@ static int f1ap_decode_initiating_message(F1AP_F1AP_PDU_t *pdu)
...
@@ -42,14 +42,25 @@ static int f1ap_decode_initiating_message(F1AP_F1AP_PDU_t *pdu)
switch
(
pdu
->
choice
.
initiatingMessage
->
procedureCode
)
{
switch
(
pdu
->
choice
.
initiatingMessage
->
procedureCode
)
{
case
F1AP_ProcedureCode_id_F1Setup
:
case
F1AP_ProcedureCode_id_F1Setup
:
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_F1AP_F1AP_PDU
,
pdu
);
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_F1AP_F1AP_PDU
,
pdu
);
printf
(
"f1ap_eNB_decode_initiating_message!
\n
"
);
printf
(
"f1ap_eNB_decode_initiating_message!
\n
"
);
break
;
break
;
case
F1AP_ProcedureCode_id_InitialULRRCMessageTransfer
:
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_F1AP_F1AP_PDU
,
pdu
);
case
F1AP_ProcedureCode_id_InitialULRRCMessageTransfer
:
printf
(
"f1ap_eNB_decode_initiating_message!
\n
"
);
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_F1AP_F1AP_PDU
,
pdu
);
break
;
printf
(
"f1ap_eNB_decode_initiating_message!
\n
"
);
break
;
case
F1AP_ProcedureCode_id_DLRRCMessageTransfer
:
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_F1AP_F1AP_PDU
,
pdu
);
printf
(
"f1ap_eNB_decode_initiating_message!
\n
"
);
break
;
case
F1AP_ProcedureCode_id_ULRRCMessageTransfer
:
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_F1AP_F1AP_PDU
,
pdu
);
printf
(
"f1ap_eNB_decode_initiating_message!
\n
"
);
break
;
// case F1AP_ProcedureCode_id_InitialContextSetup:
// case F1AP_ProcedureCode_id_InitialContextSetup:
// res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_F1AP_F1AP_PDU, pdu);
// res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_F1AP_F1AP_PDU, pdu);
// message_id = F1AP_INITIAL_CONTEXT_SETUP_LOG;
// message_id = F1AP_INITIAL_CONTEXT_SETUP_LOG;
...
...
openair2/F1AP/f1ap_du_rrc_message_transfer.c
View file @
0e7887de
...
@@ -48,7 +48,107 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
...
@@ -48,7 +48,107 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
uint32_t
assoc_id
,
uint32_t
assoc_id
,
uint32_t
stream
,
uint32_t
stream
,
F1AP_F1AP_PDU_t
*
pdu
)
{
F1AP_F1AP_PDU_t
*
pdu
)
{
AssertFatal
(
1
==
0
,
"Not implemented yet
\n
"
);
printf
(
"DU_handle_DL_RRC_MESSAGE_TRANSFER
\n
"
);
MessageDef
*
message_p
;
F1AP_DLRRCMessageTransfer_t
*
container
;
F1AP_DLRRCMessageTransferIEs_t
*
ie
;
uint8_t
*
buffer
;
uint32_t
len
;
uint64_t
cu_ue_f1ap_id
;
uint64_t
du_ue_f1ap_id
;
uint64_t
srb_id
;
int
executeDuplication
;
sdu_size_t
ccch_sdu_len
;
uint64_t
subscriberProfileIDforRFP
;
uint64_t
rAT_FrequencySelectionPriority
;
DevAssert
(
pdu
!=
NULL
);
if
(
stream
!=
0
)
{
LOG_E
(
F1AP
,
"[SCTP %d] Received F1 on stream != 0 (%d)
\n
"
,
assoc_id
,
stream
);
return
-
1
;
}
container
=
&
pdu
->
choice
.
initiatingMessage
->
value
.
choice
.
DLRRCMessageTransfer
;
/* GNB_CU_UE_F1AP_ID */
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
;
printf
(
"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
;
printf
(
"du_ue_f1ap_id %lu
\n
"
,
du_ue_f1ap_id
);
/* optional */
/* oldgNB_DU_UE_F1AP_ID */
if
(
0
)
{
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_DLRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_oldgNB_DU_UE_F1AP_ID
,
true
);
}
/* mandatory */
/* SRBID */
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_DLRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_SRBID
,
true
);
srb_id
=
ie
->
value
.
choice
.
SRBID
;
printf
(
"srb_id %lu
\n
"
,
srb_id
);
/* optional */
/* ExecuteDuplication */
if
(
0
)
{
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_DLRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_ExecuteDuplication
,
true
);
executeDuplication
=
ie
->
value
.
choice
.
ExecuteDuplication
;
printf
(
"ExecuteDuplication %d
\n
"
,
executeDuplication
);
}
// issue in here
/* mandatory */
/* RRC Container */
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_DLRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_RRCContainer
,
true
);
// BK: need check
// create an ITTI message and copy SDU
message_p
=
itti_alloc_new_message
(
TASK_CU_F1
,
RRC_MAC_CCCH_DATA_IND
);
memset
(
RRC_MAC_CCCH_DATA_IND
(
message_p
).
sdu
,
0
,
CCCH_SDU_SIZE
);
ccch_sdu_len
=
ie
->
value
.
choice
.
RRCContainer
.
size
;
memcpy
(
RRC_MAC_CCCH_DATA_IND
(
message_p
).
sdu
,
ie
->
value
.
choice
.
RRCContainer
.
buf
,
ccch_sdu_len
);
printf
(
"RRCContainer(CCCH) :"
);
for
(
int
i
=
0
;
i
<
ie
->
value
.
choice
.
RRCContainer
.
size
;
i
++
)
printf
(
"%2x "
,
RRC_MAC_CCCH_DATA_IND
(
message_p
).
sdu
[
i
]);
/* optional */
/* RAT_FrequencyPriorityInformation */
if
(
0
)
{
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_DLRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_RAT_FrequencyPriorityInformation
,
true
);
switch
(
ie
->
value
.
choice
.
RAT_FrequencyPriorityInformation
.
present
)
{
case
F1AP_RAT_FrequencyPriorityInformation_PR_subscriberProfileIDforRFP
:
subscriberProfileIDforRFP
=
ie
->
value
.
choice
.
RAT_FrequencyPriorityInformation
.
choice
.
subscriberProfileIDforRFP
;
break
;
case
F1AP_RAT_FrequencyPriorityInformation_PR_rAT_FrequencySelectionPriority
:
rAT_FrequencySelectionPriority
=
ie
->
value
.
choice
.
RAT_FrequencyPriorityInformation
.
choice
.
rAT_FrequencySelectionPriority
;
break
;
}
}
return
0
;
}
}
//void DU_send_UL_RRC_MESSAGE_TRANSFER(F1AP_ULRRCMessageTransfer_t *ULRRCMessageTransfer) {
//void DU_send_UL_RRC_MESSAGE_TRANSFER(F1AP_ULRRCMessageTransfer_t *ULRRCMessageTransfer) {
...
@@ -207,20 +307,12 @@ int DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER(
...
@@ -207,20 +307,12 @@ int DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER(
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
)
{
printf
(
"Failed to encode F1 setup request
\n
"
);
printf
(
"Failed to encode F1 setup request
\n
"
);
return
-
1
;
return
-
1
;
}
}
printf
(
"
\n
"
);
du_f1ap_itti_send_sctp_data_req
(
0
,
f1ap_du_data
->
assoc_id
,
buffer
,
len
,
0
);
du_f1ap_itti_send_sctp_data_req
(
0
,
f1ap_du_data
->
assoc_id
,
buffer
,
len
,
0
);
return
0
;
return
0
;
/* decode */
// if (f1ap_decode_pdu(&pdu, buffer, len) > 0) {
// printf("Failed to decode F1 setup request\n");
// }
//AssertFatal(1==0,"Not implemented yet\n");
}
}
openair2/F1AP/f1ap_handlers.c
View file @
0e7887de
...
@@ -36,6 +36,7 @@
...
@@ -36,6 +36,7 @@
#include "f1ap_cu_interface_management.h"
#include "f1ap_cu_interface_management.h"
#include "f1ap_du_interface_management.h"
#include "f1ap_du_interface_management.h"
#include "f1ap_cu_rrc_message_transfer.h"
#include "f1ap_cu_rrc_message_transfer.h"
#include "f1ap_du_rrc_message_transfer.h"
extern
f1ap_setup_req_t
*
f1ap_du_data_from_du
;
extern
f1ap_setup_req_t
*
f1ap_du_data_from_du
;
...
@@ -55,8 +56,8 @@ f1ap_message_decoded_callback f1ap_messages_callback[][3] = {
...
@@ -55,8 +56,8 @@ f1ap_message_decoded_callback f1ap_messages_callback[][3] = {
{
0
,
0
,
0
},
/* UEMobilityCommand */
{
0
,
0
,
0
},
/* UEMobilityCommand */
{
0
,
0
,
0
},
/* UEContextReleaseRequest */
{
0
,
0
,
0
},
/* UEContextReleaseRequest */
{
CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER
,
0
,
0
},
/* InitialULRRCMessageTransfer */
{
CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER
,
0
,
0
},
/* InitialULRRCMessageTransfer */
{
0
,
0
,
0
},
/* DLRRCMessageTransfer */
{
DU_handle_DL_RRC_MESSAGE_TRANSFER
,
0
,
0
},
/* DLRRCMessageTransfer */
{
0
,
0
,
0
},
/* ULRRCMessageTransfer */
{
CU_handle_UL_RRC_MESSAGE_TRANSFER
,
0
,
0
},
/* ULRRCMessageTransfer */
{
0
,
0
,
0
},
/* privateMessage */
{
0
,
0
,
0
},
/* privateMessage */
{
0
,
0
,
0
},
/* UEInactivityNotification */
{
0
,
0
,
0
},
/* UEInactivityNotification */
{
0
,
0
,
0
},
/* GNBDUResourceCoordination */
{
0
,
0
,
0
},
/* GNBDUResourceCoordination */
...
...
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