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
alex037yang
OpenXG-RAN
Commits
6f19bc4b
Commit
6f19bc4b
authored
Dec 07, 2018
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add F1AP_UE_CONTEXT_RELEASE_COMPLETE, tx in DU, correctly rx in CU
parent
ae3ef270
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
79 additions
and
71 deletions
+79
-71
openair2/COMMON/f1ap_messages_types.h
openair2/COMMON/f1ap_messages_types.h
+2
-1
openair2/F1AP/f1ap_decoder.c
openair2/F1AP/f1ap_decoder.c
+5
-2
openair2/F1AP/f1ap_du_ue_context_management.c
openair2/F1AP/f1ap_du_ue_context_management.c
+70
-65
openair2/F1AP/f1ap_du_ue_context_management.h
openair2/F1AP/f1ap_du_ue_context_management.h
+1
-2
openair2/F1AP/f1ap_handlers.c
openair2/F1AP/f1ap_handlers.c
+1
-1
No files found.
openair2/COMMON/f1ap_messages_types.h
View file @
6f19bc4b
...
@@ -304,6 +304,7 @@ typedef struct f1ap_ue_context_release_s {
...
@@ -304,6 +304,7 @@ typedef struct f1ap_ue_context_release_s {
long
cause_value
;
long
cause_value
;
uint8_t
*
rrc_container
;
uint8_t
*
rrc_container
;
int
rrc_container_length
;
int
rrc_container_length
;
}
f1ap_ue_context_release_req_t
,
f1ap_ue_context_release_cmd_t
;
}
f1ap_ue_context_release_req_t
,
f1ap_ue_context_release_cmd_t
,
f1ap_ue_context_release_cplt_t
;
#endif
/* F1AP_MESSAGES_TYPES_H_ */
#endif
/* F1AP_MESSAGES_TYPES_H_ */
openair2/F1AP/f1ap_decoder.c
View file @
6f19bc4b
...
@@ -96,8 +96,11 @@ static int f1ap_decode_successful_outcome(F1AP_F1AP_PDU_t *pdu)
...
@@ -96,8 +96,11 @@ static int f1ap_decode_successful_outcome(F1AP_F1AP_PDU_t *pdu)
switch
(
pdu
->
choice
.
successfulOutcome
->
procedureCode
)
{
switch
(
pdu
->
choice
.
successfulOutcome
->
procedureCode
)
{
case
F1AP_ProcedureCode_id_F1Setup
:
case
F1AP_ProcedureCode_id_F1Setup
:
LOG_I
(
F1AP
,
"get F1AP_ProcedureCode_id_F1Setup
\n
"
);
LOG_I
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_F1Setup
\n
"
,
__func__
);
break
;
case
F1AP_ProcedureCode_id_UEContextRelease
:
LOG_I
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_UEContextRelease
\n
"
,
__func__
);
break
;
break
;
default:
default:
...
...
openair2/F1AP/f1ap_du_ue_context_management.c
View file @
6f19bc4b
...
@@ -739,22 +739,20 @@ int DU_handle_UE_CONTEXT_RELEASE_COMMAND(instance_t instance,
...
@@ -739,22 +739,20 @@ int DU_handle_UE_CONTEXT_RELEASE_COMMAND(instance_t instance,
rrc_mac_remove_ue
(
instance
,
ctxt
.
rnti
);
rrc_mac_remove_ue
(
instance
,
ctxt
.
rnti
);
rrc_rlc_remove_ue
(
&
ctxt
);
rrc_rlc_remove_ue
(
&
ctxt
);
/* DU_send_UE_CONTEXT_RELEASE_COMPLETE() */
f1ap_ue_context_release_cplt_t
cplt
;
cplt
.
rnti
=
ctxt
.
rnti
;
DU_send_UE_CONTEXT_RELEASE_COMPLETE
(
instance
,
&
cplt
);
return
0
;
return
0
;
}
}
// note: is temporary with f1ap_ue_context_setup_req_t
int
DU_send_UE_CONTEXT_RELEASE_COMPLETE
(
instance_t
instance
,
int
DU_send_UE_CONTEXT_RELEASE_COMPLETE
(
instance_t
instance
,
f1ap_ue_context_
setup_req_t
*
f1ap_ue_context_setup_req
)
{
f1ap_ue_context_
release_cplt_t
*
cplt
)
{
F1AP_F1AP_PDU_t
pdu
;
F1AP_F1AP_PDU_t
pdu
;
F1AP_UEContextReleaseComplete_t
*
out
;
F1AP_UEContextReleaseComplete_t
*
out
;
F1AP_UEContextReleaseCompleteIEs_t
*
ie
;
F1AP_UEContextReleaseCompleteIEs_t
*
ie
;
uint8_t
*
buffer
;
uint32_t
len
;
int
i
=
0
;
//, j = 0;
/* Create */
/* Create */
/* 0. Message Type */
/* 0. Message Type */
memset
(
&
pdu
,
0
,
sizeof
(
pdu
));
memset
(
&
pdu
,
0
,
sizeof
(
pdu
));
...
@@ -771,7 +769,7 @@ int DU_send_UE_CONTEXT_RELEASE_COMPLETE(instance_t instance,
...
@@ -771,7 +769,7 @@ int DU_send_UE_CONTEXT_RELEASE_COMPLETE(instance_t instance,
ie
->
id
=
F1AP_ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID
;
ie
->
id
=
F1AP_ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_UEContextReleaseCompleteIEs__value_PR_GNB_CU_UE_F1AP_ID
;
ie
->
value
.
present
=
F1AP_UEContextReleaseCompleteIEs__value_PR_GNB_CU_UE_F1AP_ID
;
ie
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
=
f1ap_
ue_context_setup_req
->
gNB_CU_ue_id
;
ie
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
=
f1ap_
get_cu_ue_f1ap_id
(
&
f1ap_du_ue
[
instance
],
cplt
->
rnti
)
;
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
/* mandatory */
/* mandatory */
...
@@ -780,73 +778,80 @@ int DU_send_UE_CONTEXT_RELEASE_COMPLETE(instance_t instance,
...
@@ -780,73 +778,80 @@ int DU_send_UE_CONTEXT_RELEASE_COMPLETE(instance_t instance,
ie
->
id
=
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
;
ie
->
id
=
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
criticality
=
F1AP_Criticality_reject
;
ie
->
value
.
present
=
F1AP_UEContextReleaseCompleteIEs__value_PR_GNB_DU_UE_F1AP_ID
;
ie
->
value
.
present
=
F1AP_UEContextReleaseCompleteIEs__value_PR_GNB_DU_UE_F1AP_ID
;
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
*
f1ap_ue_context_setup_req
->
gNB_DU_ue_id
;
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
f1ap_get_du_ue_f1ap_id
(
&
f1ap_du_ue
[
instance
],
cplt
->
rnti
)
;
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
/* optional */
/* optional
-> currently not used
*/
/* c3. CriticalityDiagnostics */
/* c3. CriticalityDiagnostics */
if
(
0
)
{
//
if (0) {
ie
=
(
F1AP_UEContextReleaseCompleteIEs_t
*
)
calloc
(
1
,
sizeof
(
F1AP_UEContextReleaseCompleteIEs_t
));
//
ie = (F1AP_UEContextReleaseCompleteIEs_t *)calloc(1, sizeof(F1AP_UEContextReleaseCompleteIEs_t));
ie
->
id
=
F1AP_ProtocolIE_ID_id_CriticalityDiagnostics
;
//
ie->id = F1AP_ProtocolIE_ID_id_CriticalityDiagnostics;
ie
->
criticality
=
F1AP_Criticality_ignore
;
//
ie->criticality = F1AP_Criticality_ignore;
ie
->
value
.
present
=
F1AP_UEContextReleaseCompleteIEs__value_PR_CriticalityDiagnostics
;
//
ie->value.present = F1AP_UEContextReleaseCompleteIEs__value_PR_CriticalityDiagnostics;
// dummy value
//
// dummy value
/* optional */
//
/* optional */
/* procedureCode */
//
/* procedureCode */
if
(
0
)
{
//
if (0) {
ie
->
value
.
choice
.
CriticalityDiagnostics
.
procedureCode
=
(
F1AP_ProcedureCode_t
*
)
calloc
(
1
,
sizeof
(
F1AP_ProcedureCode_t
));
//
ie->value.choice.CriticalityDiagnostics.procedureCode = (F1AP_ProcedureCode_t *)calloc(1, sizeof(F1AP_ProcedureCode_t));
ie
->
value
.
choice
.
CriticalityDiagnostics
.
procedureCode
=
0L
;
//
ie->value.choice.CriticalityDiagnostics.procedureCode = 0L;
}
//
}
/* optional */
//
/* optional */
/* triggeringMessage */
//
/* triggeringMessage */
if
(
0
)
{
//
if (0) {
ie
->
value
.
choice
.
CriticalityDiagnostics
.
triggeringMessage
=
(
F1AP_TriggeringMessage_t
*
)
calloc
(
1
,
sizeof
(
F1AP_TriggeringMessage_t
));
//
ie->value.choice.CriticalityDiagnostics.triggeringMessage = (F1AP_TriggeringMessage_t *)calloc(1, sizeof(F1AP_TriggeringMessage_t));
ie
->
value
.
choice
.
CriticalityDiagnostics
.
triggeringMessage
=
(
F1AP_TriggeringMessage_t
*
)
F1AP_TriggeringMessage_successful_outcome
;
//
ie->value.choice.CriticalityDiagnostics.triggeringMessage = (F1AP_TriggeringMessage_t *)F1AP_TriggeringMessage_successful_outcome;
}
//
}
/* optional */
//
/* optional */
/* procedureCriticality */
//
/* procedureCriticality */
if
(
0
)
{
//
if (0) {
ie
->
value
.
choice
.
CriticalityDiagnostics
.
procedureCriticality
=
(
F1AP_Criticality_t
*
)
calloc
(
1
,
sizeof
(
F1AP_Criticality_t
));
//
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.procedureCriticality = F1AP_Criticality_reject;
}
//
}
/* optional */
//
/* optional */
/* transactionID */
//
/* transactionID */
if
(
0
)
{
//
if (0) {
ie
->
value
.
choice
.
CriticalityDiagnostics
.
transactionID
=
(
F1AP_TransactionID_t
*
)
calloc
(
1
,
sizeof
(
F1AP_TransactionID_t
));
//
ie->value.choice.CriticalityDiagnostics.transactionID = (F1AP_TransactionID_t *)calloc(1, sizeof(F1AP_TransactionID_t));
ie
->
value
.
choice
.
CriticalityDiagnostics
.
transactionID
=
0L
;
//
ie->value.choice.CriticalityDiagnostics.transactionID = 0L;
}
//
}
/* optional */
//
/* optional */
/* F1AP_CriticalityDiagnostics_IE_List */
//
/* F1AP_CriticalityDiagnostics_IE_List */
if
(
0
)
{
//
if (0) {
for
(
i
=
0
;
//
for (i=0;
i
<
0
;
//
i<0;
i
++
)
{
//
i++) {
F1AP_CriticalityDiagnostics_IE_Item_t
*
criticalityDiagnostics_ie_item
=
(
F1AP_CriticalityDiagnostics_IE_Item_t
*
)
calloc
(
1
,
sizeof
(
F1AP_CriticalityDiagnostics_IE_Item_t
));;
//
F1AP_CriticalityDiagnostics_IE_Item_t *criticalityDiagnostics_ie_item = (F1AP_CriticalityDiagnostics_IE_Item_t *)calloc(1, sizeof(F1AP_CriticalityDiagnostics_IE_Item_t));;
criticalityDiagnostics_ie_item
->
iECriticality
=
F1AP_Criticality_reject
;
//
criticalityDiagnostics_ie_item->iECriticality = F1AP_Criticality_reject;
criticalityDiagnostics_ie_item
->
iE_ID
=
0L
;
//
criticalityDiagnostics_ie_item->iE_ID = 0L;
criticalityDiagnostics_ie_item
->
typeOfError
=
F1AP_TypeOfError_not_understood
;
//
criticalityDiagnostics_ie_item->typeOfError = F1AP_TypeOfError_not_understood;
ASN_SEQUENCE_ADD
(
&
ie
->
value
.
choice
.
CriticalityDiagnostics
.
iEsCriticalityDiagnostics
->
list
,
//
ASN_SEQUENCE_ADD(&ie->value.choice.CriticalityDiagnostics.iEsCriticalityDiagnostics->list,
criticalityDiagnostics_ie_item
);
//
criticalityDiagnostics_ie_item);
}
//
}
}
//
}
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
//
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
}
//
}
/* encode */
/* encode */
uint8_t
*
buffer
;
uint32_t
len
;
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
LOG_E
(
DU_F1AP
,
"Failed to encode F1 context release complete
\n
"
);
LOG_E
(
DU_F1AP
,
"Failed to encode F1 context release complete
\n
"
);
return
-
1
;
return
-
1
;
}
}
// send
du_f1ap_itti_send_sctp_data_req
(
instance
,
f1ap_du_data
->
assoc_id
,
buffer
,
len
,
f1ap_du_data
->
default_sctp_stream_id
);
f1ap_remove_ue
(
&
f1ap_du_ue
[
instance
],
cplt
->
rnti
);
return
0
;
return
0
;
}
}
...
...
openair2/F1AP/f1ap_du_ue_context_management.h
View file @
6f19bc4b
...
@@ -62,9 +62,8 @@ int DU_handle_UE_CONTEXT_RELEASE_COMMAND(instance_t instance,
...
@@ -62,9 +62,8 @@ int DU_handle_UE_CONTEXT_RELEASE_COMMAND(instance_t instance,
/*
/*
* UE Context Release Complete (gNB-DU initiated)
* UE Context Release Complete (gNB-DU initiated)
*/
*/
// note: is temporary with f1ap_ue_context_setup_req_t
int
DU_send_UE_CONTEXT_RELEASE_COMPLETE
(
instance_t
instance
,
int
DU_send_UE_CONTEXT_RELEASE_COMPLETE
(
instance_t
instance
,
f1ap_ue_context_
setup_req_t
*
f1ap_ue_context_setup_req
);
f1ap_ue_context_
release_cplt_t
*
cplt
);
/*
/*
...
...
openair2/F1AP/f1ap_handlers.c
View file @
6f19bc4b
...
@@ -52,7 +52,7 @@ f1ap_message_decoded_callback f1ap_messages_callback[][3] = {
...
@@ -52,7 +52,7 @@ f1ap_message_decoded_callback f1ap_messages_callback[][3] = {
{
0
,
0
,
0
},
/* gNBDUConfigurationUpdate */
{
0
,
0
,
0
},
/* gNBDUConfigurationUpdate */
{
0
,
0
,
0
},
/* gNBCUConfigurationUpdate */
{
0
,
0
,
0
},
/* gNBCUConfigurationUpdate */
{
DU_handle_UE_CONTEXT_SETUP_REQUEST
,
CU_handle_UE_CONTEXT_SETUP_RESPONSE
,
0
},
/* UEContextSetup */
{
DU_handle_UE_CONTEXT_SETUP_REQUEST
,
CU_handle_UE_CONTEXT_SETUP_RESPONSE
,
0
},
/* UEContextSetup */
{
DU_handle_UE_CONTEXT_RELEASE_COMMAND
,
0
,
0
},
/* UEContextRelease */
{
DU_handle_UE_CONTEXT_RELEASE_COMMAND
,
CU_handle_UE_CONTEXT_RELEASE_COMPLETE
,
0
},
/* UEContextRelease */
{
0
,
0
,
0
},
/* UEContextModification */
{
0
,
0
,
0
},
/* UEContextModification */
{
0
,
0
,
0
},
/* UEContextModificationRequired */
{
0
,
0
,
0
},
/* UEContextModificationRequired */
{
0
,
0
,
0
},
/* UEMobilityCommand */
{
0
,
0
,
0
},
/* UEMobilityCommand */
...
...
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