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
cedc13d7
Commit
cedc13d7
authored
Sep 14, 2018
by
Bing-Kai Hong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implement the F1_SETUP_FAILURE procedure
parent
5d06dcc3
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
105 additions
and
25 deletions
+105
-25
openair2/F1AP/f1ap_cu_interface_management.c
openair2/F1AP/f1ap_cu_interface_management.c
+86
-14
openair2/F1AP/f1ap_cu_interface_management.h
openair2/F1AP/f1ap_cu_interface_management.h
+1
-1
openair2/F1AP/f1ap_du_interface_management.c
openair2/F1AP/f1ap_du_interface_management.c
+7
-2
openair2/F1AP/f1ap_du_interface_management.h
openair2/F1AP/f1ap_du_interface_management.h
+4
-1
openair2/F1AP/f1ap_handlers.c
openair2/F1AP/f1ap_handlers.c
+7
-7
No files found.
openair2/F1AP/f1ap_cu_interface_management.c
View file @
cedc13d7
...
@@ -128,7 +128,6 @@ void CU_handle_F1_SETUP_REQUEST(instance_t instance,
...
@@ -128,7 +128,6 @@ void 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 */
// @issue in here
OCTET_STRING_TO_INT16
(
&
(
served_celles_item_p
->
served_Cell_Information
.
fiveGS_TAC
),
F1AP_SETUP_REQ
(
message_p
).
tac
[
i
]);
OCTET_STRING_TO_INT16
(
&
(
served_celles_item_p
->
served_Cell_Information
.
fiveGS_TAC
),
F1AP_SETUP_REQ
(
message_p
).
tac
[
i
]);
printf
(
"F1AP_SETUP_REQ(message_p).tac[%d] %d
\n
"
,
i
,
F1AP_SETUP_REQ
(
message_p
).
tac
[
i
]);
printf
(
"F1AP_SETUP_REQ(message_p).tac[%d] %d
\n
"
,
i
,
F1AP_SETUP_REQ
(
message_p
).
tac
[
i
]);
...
@@ -213,8 +212,11 @@ void CU_handle_F1_SETUP_REQUEST(instance_t instance,
...
@@ -213,8 +212,11 @@ void CU_handle_F1_SETUP_REQUEST(instance_t instance,
// } tdd;
// } tdd;
// } nr_mode_info[F1AP_MAX_NB_CELLS];
// } nr_mode_info[F1AP_MAX_NB_CELLS];
if
(
num_cells_available
<
1
)
{
itti_send_msg_to_task
(
TASK_RRC_ENB
,
ENB_MODULE_ID_TO_INSTANCE
(
instance
),
message_p
);
itti_send_msg_to_task
(
TASK_RRC_ENB
,
ENB_MODULE_ID_TO_INSTANCE
(
instance
),
message_p
);
}
else
{
CU_send_F1_SETUP_FAILURE
(
instance
);
}
}
}
void
CU_send_F1_SETUP_RESPONSE
(
instance_t
instance
,
void
CU_send_F1_SETUP_RESPONSE
(
instance_t
instance
,
...
@@ -352,11 +354,86 @@ void CU_send_F1_SETUP_RESPONSE(instance_t instance,
...
@@ -352,11 +354,86 @@ void CU_send_F1_SETUP_RESPONSE(instance_t instance,
}
}
void
CU_send_F1_SETUP_FAILURE
(
instance_t
instance
,
void
CU_send_F1_SETUP_FAILURE
(
instance_t
instance
)
{
F1AP_F1SetupFailure_t
*
F1SetupFailure
)
{
printf
(
"CU_send_F1_SETUP_FAILURE
\n
"
);
AssertFatal
(
1
==
0
,
"Not implemented yet
\n
"
);
//AssertFatal(1==0,"Not implemented yet\n");
module_id_t
enb_mod_idP
;
//f1ap_send_sctp_data_req(instance_p->instance, f1ap_mme_data_p->assoc_id, buffer, len, 0);
module_id_t
cu_mod_idP
;
enb_mod_idP
=
(
module_id_t
)
12
;
cu_mod_idP
=
(
module_id_t
)
34
;
F1AP_F1AP_PDU_t
pdu
;
F1AP_F1SetupFailure_t
*
out
;
F1AP_F1SetupFailureIEs_t
*
ie
;
uint8_t
*
buffer
;
uint32_t
len
;
/* Create */
/* 0. Message Type */
memset
(
&
pdu
,
0
,
sizeof
(
pdu
));
pdu
.
present
=
F1AP_F1AP_PDU_PR_unsuccessfulOutcome
;
pdu
.
choice
.
unsuccessfulOutcome
=
(
F1AP_UnsuccessfulOutcome_t
*
)
calloc
(
1
,
sizeof
(
F1AP_UnsuccessfulOutcome_t
));
pdu
.
choice
.
unsuccessfulOutcome
->
procedureCode
=
F1AP_ProcedureCode_id_F1Setup
;
pdu
.
choice
.
unsuccessfulOutcome
->
criticality
=
F1AP_Criticality_reject
;
pdu
.
choice
.
unsuccessfulOutcome
->
value
.
present
=
F1AP_UnsuccessfulOutcome__value_PR_F1SetupFailure
;
out
=
&
pdu
.
choice
.
unsuccessfulOutcome
->
value
.
choice
.
F1SetupFailure
;
/* mandatory */
/* c1. Transaction ID (integer value)*/
ie
=
(
F1AP_F1SetupFailureIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_F1SetupFailureIEs_t
));
ie
->
id
=
F1AP_ProtocolIE_ID_id_TransactionID
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_F1SetupFailureIEs__value_PR_TransactionID
;
ie
->
value
.
choice
.
TransactionID
=
F1AP_get_next_transaction_identifier
(
enb_mod_idP
,
cu_mod_idP
);
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
/* mandatory */
/* c2. Cause */
ie
=
(
F1AP_F1SetupFailureIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_F1SetupFailureIEs_t
));
ie
->
id
=
F1AP_ProtocolIE_ID_id_Cause
;
ie
->
criticality
=
F1AP_Criticality_ignore
;
ie
->
value
.
present
=
F1AP_F1SetupFailureIEs__value_PR_Cause
;
ie
->
value
.
choice
.
Cause
.
present
=
F1AP_Cause_PR_radioNetwork
;
ie
->
value
.
choice
.
Cause
.
choice
.
radioNetwork
=
F1AP_CauseRadioNetwork_unspecified
;
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
/* optional */
/* c3. TimeToWait */
if
(
0
)
{
ie
=
(
F1AP_F1SetupFailureIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_F1SetupFailureIEs_t
));
ie
->
id
=
F1AP_ProtocolIE_ID_id_TimeToWait
;
ie
->
criticality
=
F1AP_Criticality_ignore
;
ie
->
value
.
present
=
F1AP_F1SetupFailureIEs__value_PR_TimeToWait
;
ie
->
value
.
choice
.
TimeToWait
=
F1AP_TimeToWait_v10s
;
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
}
/* optional */
/* c4. CriticalityDiagnostics*/
if
(
0
)
{
ie
=
(
F1AP_F1SetupFailureIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_F1SetupFailureIEs_t
));
ie
->
id
=
F1AP_ProtocolIE_ID_id_CriticalityDiagnostics
;
ie
->
criticality
=
F1AP_Criticality_ignore
;
ie
->
value
.
present
=
F1AP_F1SetupFailureIEs__value_PR_CriticalityDiagnostics
;
ie
->
value
.
choice
.
CriticalityDiagnostics
.
procedureCode
=
(
F1AP_ProcedureCode_t
*
)
calloc
(
1
,
sizeof
(
F1AP_ProcedureCode_t
));
*
ie
->
value
.
choice
.
CriticalityDiagnostics
.
procedureCode
=
F1AP_ProcedureCode_id_UEContextSetup
;
ie
->
value
.
choice
.
CriticalityDiagnostics
.
triggeringMessage
=
(
F1AP_TriggeringMessage_t
*
)
calloc
(
1
,
sizeof
(
F1AP_TriggeringMessage_t
));
*
ie
->
value
.
choice
.
CriticalityDiagnostics
.
triggeringMessage
=
F1AP_TriggeringMessage_initiating_message
;
ie
->
value
.
choice
.
CriticalityDiagnostics
.
procedureCriticality
=
(
F1AP_Criticality_t
*
)
calloc
(
1
,
sizeof
(
F1AP_Criticality_t
));
*
ie
->
value
.
choice
.
CriticalityDiagnostics
.
procedureCriticality
=
F1AP_Criticality_reject
;
ie
->
value
.
choice
.
CriticalityDiagnostics
.
transactionID
=
(
F1AP_TransactionID_t
*
)
calloc
(
1
,
sizeof
(
F1AP_TransactionID_t
));
*
ie
->
value
.
choice
.
CriticalityDiagnostics
.
transactionID
=
0
;
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
}
/* encode */
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
printf
(
"Failed to encode F1 setup request
\n
"
);
}
cu_f1ap_itti_send_sctp_data_req
(
instance
,
f1ap_du_data_from_du
->
assoc_id
,
buffer
,
len
,
0
);
}
}
...
@@ -756,12 +833,7 @@ void CU_send_gNB_CU_CONFIGURATION_UPDATE(instance_t instance, module_id_t du_mod
...
@@ -756,12 +833,7 @@ void CU_send_gNB_CU_CONFIGURATION_UPDATE(instance_t instance, module_id_t du_mod
return
;
return
;
}
}
printf
(
"
\n
"
);
cu_f1ap_itti_send_sctp_data_req
(
instance
,
f1ap_du_data_from_du
->
assoc_id
,
buffer
,
len
,
0
);
/* decode */
if
(
f1ap_decode_pdu
(
&
pdu
,
buffer
,
len
)
>
0
)
{
printf
(
"Failed to decode F1 setup request
\n
"
);
}
}
}
void
CU_handle_gNB_CU_CONFIGURATION_UPDATE_FAILURE
(
instance_t
instance
,
void
CU_handle_gNB_CU_CONFIGURATION_UPDATE_FAILURE
(
instance_t
instance
,
...
...
openair2/F1AP/f1ap_cu_interface_management.h
View file @
cedc13d7
...
@@ -57,7 +57,7 @@ void CU_handle_F1_SETUP_REQUEST(instance_t instance,
...
@@ -57,7 +57,7 @@ void CU_handle_F1_SETUP_REQUEST(instance_t instance,
void
CU_send_F1_SETUP_RESPONSE
(
instance_t
instance
,
f1ap_setup_resp_t
*
f1ap_setup_resp
);
void
CU_send_F1_SETUP_RESPONSE
(
instance_t
instance
,
f1ap_setup_resp_t
*
f1ap_setup_resp
);
void
CU_send_F1_SETUP_FAILURE
(
instance_t
instance
,
F1AP_F1SetupFailure_t
*
F1SetupFailure
);
void
CU_send_F1_SETUP_FAILURE
(
instance_t
instance
);
/*
/*
* gNB-DU Configuration Update
* gNB-DU Configuration Update
...
...
openair2/F1AP/f1ap_du_interface_management.c
View file @
cedc13d7
...
@@ -312,8 +312,13 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
...
@@ -312,8 +312,13 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
}
}
// SETUP FAILURE
// SETUP FAILURE
void
DU_handle_F1_SETUP_FAILURE
(
instance_t
instance
,
F1AP_F1AP_PDU_t
*
pdu_p
)
{
int
DU_handle_F1_SETUP_FAILURE
(
instance_t
instance
,
AssertFatal
(
1
==
0
,
"Not implemented yet
\n
"
);
uint32_t
assoc_id
,
uint32_t
stream
,
F1AP_F1AP_PDU_t
*
pdu
)
{
LOG_E
(
DU_F1AP
,
"DU_handle_F1_SETUP_FAILURE
\n
"
);
return
0
;
}
}
...
...
openair2/F1AP/f1ap_du_interface_management.h
View file @
cedc13d7
...
@@ -58,7 +58,10 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
...
@@ -58,7 +58,10 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
uint32_t
stream
,
uint32_t
stream
,
F1AP_F1AP_PDU_t
*
pdu
);
F1AP_F1AP_PDU_t
*
pdu
);
void
DU_handle_F1_SETUP_FAILURE
(
instance_t
instance
,
F1AP_F1AP_PDU_t
*
pdu_p
);
int
DU_handle_F1_SETUP_FAILURE
(
instance_t
instance
,
uint32_t
assoc_id
,
uint32_t
stream
,
F1AP_F1AP_PDU_t
*
pdu
);
/*
/*
* gNB-DU Configuration Update
* gNB-DU Configuration Update
...
...
openair2/F1AP/f1ap_handlers.c
View file @
cedc13d7
...
@@ -43,19 +43,19 @@ f1ap_message_decoded_callback f1ap_messages_callback[][3] = {
...
@@ -43,19 +43,19 @@ f1ap_message_decoded_callback f1ap_messages_callback[][3] = {
{
0
,
0
,
0
},
/* Reset */
{
0
,
0
,
0
},
/* Reset */
{
CU_handle_F1_SETUP_REQUEST
,
DU_handle_F1_SETUP_RESPONSE
,
0
},
/* F1Setup */
{
CU_handle_F1_SETUP_REQUEST
,
DU_handle_F1_SETUP_RESPONSE
,
DU_handle_F1_SETUP_FAILURE
},
/* F1Setup */
{
0
,
0
,
0
},
/* ErrorIndication */
{
0
,
0
,
0
},
/* ErrorIndication */
{
CU_handle_F1_SETUP_REQUEST
,
0
,
0
},
/* gNBDUConfigurationUpdate */
{
0
,
0
,
0
},
/* gNBDUConfigurationUpdate */
{
CU_handle_F1_SETUP_REQUEST
,
0
,
0
},
/* gNBCUConfigurationUpdate */
{
0
,
0
,
0
},
/* gNBCUConfigurationUpdate */
{
CU_handle_F1_SETUP_REQUEST
,
0
,
0
},
/* UEContextSetup */
{
0
,
0
,
0
},
/* UEContextSetup */
{
0
,
0
,
0
},
/* UEContextRelease */
{
0
,
0
,
0
},
/* UEContextRelease */
{
CU_handle_F1_SETUP_REQUEST
,
0
,
0
},
/* UEContextModification */
{
0
,
0
,
0
},
/* UEContextModification */
{
0
,
0
,
0
},
/* UEContextModificationRequired */
{
0
,
0
,
0
},
/* UEContextModificationRequired */
{
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 */
{
CU_handle_F1_SETUP_REQUEST
,
0
,
0
},
/* DLRRCMessageTransfer */
{
0
,
0
,
0
},
/* DLRRCMessageTransfer */
{
CU_handle_F1_SETUP_REQUEST
,
0
,
0
},
/* ULRRCMessageTransfer */
{
0
,
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