Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-AMF
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
1
Issues
1
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG
OpenXG-AMF
Commits
07955260
Commit
07955260
authored
Aug 26, 2022
by
Tien Thinh NGUYEN
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactor NGSetupFailure and its IEs
parent
dacb523b
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
146 additions
and
134 deletions
+146
-134
src/ngap/ngapIEs/Cause.cpp
src/ngap/ngapIEs/Cause.cpp
+29
-30
src/ngap/ngapIEs/Cause.hpp
src/ngap/ngapIEs/Cause.hpp
+8
-8
src/ngap/ngapIEs/PDUSessionResourceReleaseCommandTransfer.cpp
...ngap/ngapIEs/PDUSessionResourceReleaseCommandTransfer.cpp
+11
-12
src/ngap/ngapIEs/PDUSessionResourceSetupUnsuccessfulTransfer.cpp
...p/ngapIEs/PDUSessionResourceSetupUnsuccessfulTransfer.cpp
+12
-12
src/ngap/ngapIEs/TimeToWait.cpp
src/ngap/ngapIEs/TimeToWait.cpp
+13
-11
src/ngap/ngapIEs/TimeToWait.hpp
src/ngap/ngapIEs/TimeToWait.hpp
+4
-3
src/ngap/ngapMsgs/HandoverPreparationFailure.cpp
src/ngap/ngapMsgs/HandoverPreparationFailure.cpp
+3
-4
src/ngap/ngapMsgs/HandoverRequest.cpp
src/ngap/ngapMsgs/HandoverRequest.cpp
+1
-1
src/ngap/ngapMsgs/HandoverRequiredMsg.cpp
src/ngap/ngapMsgs/HandoverRequiredMsg.cpp
+2
-3
src/ngap/ngapMsgs/NGReset.cpp
src/ngap/ngapMsgs/NGReset.cpp
+3
-3
src/ngap/ngapMsgs/NGSetupFailure.cpp
src/ngap/ngapMsgs/NGSetupFailure.cpp
+30
-21
src/ngap/ngapMsgs/NGSetupFailure.hpp
src/ngap/ngapMsgs/NGSetupFailure.hpp
+24
-20
src/ngap/ngapMsgs/UEContextReleaseCommand.cpp
src/ngap/ngapMsgs/UEContextReleaseCommand.cpp
+3
-3
src/ngap/ngapMsgs/UEContextReleaseRequest.cpp
src/ngap/ngapMsgs/UEContextReleaseRequest.cpp
+3
-3
No files found.
src/ngap/ngapIEs/Cause.cpp
View file @
07955260
...
...
@@ -20,56 +20,55 @@
*/
#include "Cause.hpp"
#include <iostream>
using
namespace
std
;
#include "logger.hpp"
namespace
ngap
{
//------------------------------------------------------------------------------
Cause
::
Cause
()
{
causeValue
=
-
1
;
cause_present_
=
Ngap_Cause_PR_NOTHING
;
cause_value_
=
-
1
;
}
//------------------------------------------------------------------------------
Cause
::~
Cause
()
{}
//------------------------------------------------------------------------------
void
Cause
::
setChoiceOfCause
(
Ngap_Cause_PR
m_causeP
resent
)
{
cause
Present
=
m_causeP
resent
;
void
Cause
::
setChoiceOfCause
(
const
Ngap_Cause_PR
&
cause_p
resent
)
{
cause
_present_
=
cause_p
resent
;
}
//------------------------------------------------------------------------------
void
Cause
::
setValue
(
long
m_causeV
alue
)
{
cause
Value
=
m_causeV
alue
;
void
Cause
::
setValue
(
const
long
&
cause_v
alue
)
{
cause
_value_
=
cause_v
alue
;
}
//------------------------------------------------------------------------------
bool
Cause
::
encode
2Cause
(
Ngap_Cause_t
*
cause
)
{
cause
->
present
=
causePresent
;
switch
(
cause
Present
)
{
bool
Cause
::
encode
(
Ngap_Cause_t
&
cause
)
const
{
cause
.
present
=
cause_present_
;
switch
(
cause
_present_
)
{
case
Ngap_Cause_PR_radioNetwork
:
{
cause
->
choice
.
radioNetwork
=
causeValue
;
cause
.
choice
.
radioNetwork
=
cause_value_
;
break
;
}
case
Ngap_Cause_PR_transport
:
{
cause
->
choice
.
transport
=
causeValue
;
cause
.
choice
.
transport
=
cause_value_
;
break
;
}
case
Ngap_Cause_PR_nas
:
{
cause
->
choice
.
nas
=
causeValue
;
cause
.
choice
.
nas
=
cause_value_
;
break
;
}
case
Ngap_Cause_PR_protocol
:
{
cause
->
choice
.
protocol
=
causeValue
;
cause
.
choice
.
protocol
=
cause_value_
;
break
;
}
case
Ngap_Cause_PR_misc
:
{
cause
->
choice
.
misc
=
causeValue
;
cause
.
choice
.
misc
=
cause_value_
;
break
;
}
default:
{
cout
<<
"[Warning] Cause Present error!"
<<
endl
;
Logger
::
ngap
().
warn
(
"Cause Present error!"
)
;
return
false
;
break
;
}
...
...
@@ -78,26 +77,26 @@ bool Cause::encode2Cause(Ngap_Cause_t* cause) {
}
//------------------------------------------------------------------------------
bool
Cause
::
decode
fromCause
(
Ngap_Cause_t
*
pdu
)
{
cause
Present
=
pdu
->
present
;
switch
(
cause
Present
)
{
bool
Cause
::
decode
(
const
Ngap_Cause_t
&
cause
)
{
cause
_present_
=
cause
.
present
;
switch
(
cause
_present_
)
{
case
Ngap_Cause_PR_radioNetwork
:
{
cause
Value
=
pdu
->
choice
.
radioNetwork
;
cause
_value_
=
cause
.
choice
.
radioNetwork
;
}
break
;
case
Ngap_Cause_PR_transport
:
{
cause
Value
=
pdu
->
choice
.
transport
;
cause
_value_
=
cause
.
choice
.
transport
;
}
break
;
case
Ngap_Cause_PR_nas
:
{
cause
Value
=
pdu
->
choice
.
nas
;
cause
_value_
=
cause
.
choice
.
nas
;
}
break
;
case
Ngap_Cause_PR_protocol
:
{
cause
Value
=
pdu
->
choice
.
protocol
;
cause
_value_
=
cause
.
choice
.
protocol
;
}
break
;
case
Ngap_Cause_PR_misc
:
{
cause
Value
=
pdu
->
choice
.
misc
;
cause
_value_
=
cause
.
choice
.
misc
;
}
break
;
default:
{
cout
<<
"[Warning] Cause Present error!"
<<
endl
;
Logger
::
ngap
().
warn
(
"Cause Present error!"
)
;
return
false
;
}
}
...
...
@@ -105,12 +104,12 @@ bool Cause::decodefromCause(Ngap_Cause_t* pdu) {
}
//------------------------------------------------------------------------------
Ngap_Cause_PR
Cause
::
getChoiceOfCause
()
{
return
cause
Present
;
Ngap_Cause_PR
Cause
::
getChoiceOfCause
()
const
{
return
cause
_present_
;
}
//------------------------------------------------------------------------------
long
Cause
::
getValue
()
{
return
cause
Value
;
long
Cause
::
getValue
()
const
{
return
cause
_value_
;
}
}
// namespace ngap
src/ngap/ngapIEs/Cause.hpp
View file @
07955260
...
...
@@ -33,16 +33,16 @@ class Cause {
Cause
();
virtual
~
Cause
();
bool
encode
2Cause
(
Ngap_Cause_t
*
cause
)
;
bool
decode
fromCause
(
Ngap_Cause_t
*
pdu
);
void
setChoiceOfCause
(
Ngap_Cause_PR
m_causeP
resent
);
Ngap_Cause_PR
getChoiceOfCause
();
void
setValue
(
long
);
long
getValue
();
bool
encode
(
Ngap_Cause_t
&
cause
)
const
;
bool
decode
(
const
Ngap_Cause_t
&
cause
);
void
setChoiceOfCause
(
const
Ngap_Cause_PR
&
cause_p
resent
);
Ngap_Cause_PR
getChoiceOfCause
()
const
;
void
setValue
(
const
long
&
value
);
long
getValue
()
const
;
private:
long
cause
Value
;
Ngap_Cause_PR
cause
Present
;
long
cause
_value_
;
Ngap_Cause_PR
cause
_present_
;
};
}
// namespace ngap
...
...
src/ngap/ngapIEs/PDUSessionResourceReleaseCommandTransfer.cpp
View file @
07955260
...
...
@@ -56,8 +56,8 @@ void PDUSessionResourceReleaseCommandTransfer::setCauseRadioNetwork(
causeValue
->
setChoiceOfCause
(
Ngap_Cause_PR_radioNetwork
);
causeValue
->
setValue
(
cause_value
);
int
ret
=
causeValue
->
encode2Cause
(
&
pduSessionResourceReleaseCommandTransferIEs
->
cause
);
int
ret
=
causeValue
->
encode
(
pduSessionResourceReleaseCommandTransferIEs
->
cause
);
if
(
!
ret
)
{
cout
<<
"encode CauseRadioNetwork IE error"
<<
endl
;
return
;
...
...
@@ -70,8 +70,8 @@ void PDUSessionResourceReleaseCommandTransfer::setCauseTransport(
causeValue
->
setChoiceOfCause
(
Ngap_Cause_PR_transport
);
causeValue
->
setValue
(
cause_value
);
int
ret
=
causeValue
->
encode2Cause
(
&
pduSessionResourceReleaseCommandTransferIEs
->
cause
);
int
ret
=
causeValue
->
encode
(
pduSessionResourceReleaseCommandTransferIEs
->
cause
);
if
(
!
ret
)
{
cout
<<
"encode CauseTransport IE error"
<<
endl
;
return
;
...
...
@@ -84,8 +84,8 @@ void PDUSessionResourceReleaseCommandTransfer::setCauseNas(
causeValue
->
setChoiceOfCause
(
Ngap_Cause_PR_nas
);
causeValue
->
setValue
(
cause_value
);
int
ret
=
causeValue
->
encode2Cause
(
&
pduSessionResourceReleaseCommandTransferIEs
->
cause
);
int
ret
=
causeValue
->
encode
(
pduSessionResourceReleaseCommandTransferIEs
->
cause
);
if
(
!
ret
)
{
cout
<<
"encode CauseNas IE error"
<<
endl
;
return
;
...
...
@@ -98,8 +98,8 @@ void PDUSessionResourceReleaseCommandTransfer::setCauseProtocol(
causeValue
->
setChoiceOfCause
(
Ngap_Cause_PR_protocol
);
causeValue
->
setValue
(
cause_value
);
int
ret
=
causeValue
->
encode2Cause
(
&
pduSessionResourceReleaseCommandTransferIEs
->
cause
);
int
ret
=
causeValue
->
encode
(
pduSessionResourceReleaseCommandTransferIEs
->
cause
);
if
(
!
ret
)
{
cout
<<
"encode CauseProtocol IE error"
<<
endl
;
return
;
...
...
@@ -112,8 +112,8 @@ void PDUSessionResourceReleaseCommandTransfer::setCauseMisc(
causeValue
->
setChoiceOfCause
(
Ngap_Cause_PR_misc
);
causeValue
->
setValue
(
cause_value
);
int
ret
=
causeValue
->
encode2Cause
(
&
pduSessionResourceReleaseCommandTransferIEs
->
cause
);
int
ret
=
causeValue
->
encode
(
pduSessionResourceReleaseCommandTransferIEs
->
cause
);
if
(
!
ret
)
{
cout
<<
"encode CauseMisc IE error"
<<
endl
;
return
;
...
...
@@ -155,8 +155,7 @@ bool PDUSessionResourceReleaseCommandTransfer::decodefromIE(
// pduSessionResourceSetupUnsuccessfulTransferIEs);
causeValue
=
new
Cause
();
if
(
!
causeValue
->
decodefromCause
(
&
pduSessionResourceReleaseCommandTransferIEs
->
cause
))
{
if
(
!
causeValue
->
decode
(
pduSessionResourceReleaseCommandTransferIEs
->
cause
))
{
cout
<<
"decoded ngap Cause IE error"
<<
endl
;
return
false
;
}
...
...
src/ngap/ngapIEs/PDUSessionResourceSetupUnsuccessfulTransfer.cpp
View file @
07955260
...
...
@@ -55,8 +55,8 @@ void PduSessionResourceSetupUnSuccessfulTransferIE::setCauseRadioNetwork(
causeValue
->
setChoiceOfCause
(
Ngap_Cause_PR_radioNetwork
);
causeValue
->
setValue
(
cause_value
);
int
ret
=
causeValue
->
encode2Cause
(
&
pduSessionResourceSetupUnsuccessfulTransferIEs
->
cause
);
int
ret
=
causeValue
->
encode
(
pduSessionResourceSetupUnsuccessfulTransferIEs
->
cause
);
if
(
!
ret
)
{
cout
<<
"encode CauseRadioNetwork IE error"
<<
endl
;
return
;
...
...
@@ -71,8 +71,8 @@ void PduSessionResourceSetupUnSuccessfulTransferIE::setCauseTransport(
causeValue
->
setChoiceOfCause
(
Ngap_Cause_PR_transport
);
causeValue
->
setValue
(
cause_value
);
int
ret
=
causeValue
->
encode2Cause
(
&
pduSessionResourceSetupUnsuccessfulTransferIEs
->
cause
);
int
ret
=
causeValue
->
encode
(
pduSessionResourceSetupUnsuccessfulTransferIEs
->
cause
);
if
(
!
ret
)
{
cout
<<
"encode CauseTransport IE error"
<<
endl
;
return
;
...
...
@@ -87,8 +87,8 @@ void PduSessionResourceSetupUnSuccessfulTransferIE::setCauseNas(
causeValue
->
setChoiceOfCause
(
Ngap_Cause_PR_nas
);
causeValue
->
setValue
(
cause_value
);
int
ret
=
causeValue
->
encode2Cause
(
&
pduSessionResourceSetupUnsuccessfulTransferIEs
->
cause
);
int
ret
=
causeValue
->
encode
(
pduSessionResourceSetupUnsuccessfulTransferIEs
->
cause
);
if
(
!
ret
)
{
cout
<<
"encode CauseNas IE error"
<<
endl
;
return
;
...
...
@@ -103,8 +103,8 @@ void PduSessionResourceSetupUnSuccessfulTransferIE::setCauseProtocol(
causeValue
->
setChoiceOfCause
(
Ngap_Cause_PR_protocol
);
causeValue
->
setValue
(
cause_value
);
int
ret
=
causeValue
->
encode2Cause
(
&
pduSessionResourceSetupUnsuccessfulTransferIEs
->
cause
);
int
ret
=
causeValue
->
encode
(
pduSessionResourceSetupUnsuccessfulTransferIEs
->
cause
);
if
(
!
ret
)
{
cout
<<
"encode CauseProtocol IE error"
<<
endl
;
return
;
...
...
@@ -119,8 +119,8 @@ void PduSessionResourceSetupUnSuccessfulTransferIE::setCauseMisc(
causeValue
->
setChoiceOfCause
(
Ngap_Cause_PR_misc
);
causeValue
->
setValue
(
cause_value
);
int
ret
=
causeValue
->
encode2Cause
(
&
pduSessionResourceSetupUnsuccessfulTransferIEs
->
cause
);
int
ret
=
causeValue
->
encode
(
pduSessionResourceSetupUnsuccessfulTransferIEs
->
cause
);
if
(
!
ret
)
{
cout
<<
"encode CauseMisc IE error"
<<
endl
;
return
;
...
...
@@ -165,8 +165,8 @@ bool PduSessionResourceSetupUnSuccessfulTransferIE::decodefromIE(
// pduSessionResourceSetupUnsuccessfulTransferIEs);
causeValue
=
new
Cause
();
if
(
!
causeValue
->
decode
fromCause
(
&
pduSessionResourceSetupUnsuccessfulTransferIEs
->
cause
))
{
if
(
!
causeValue
->
decode
(
pduSessionResourceSetupUnsuccessfulTransferIEs
->
cause
))
{
cout
<<
"decoded ngap Cause IE error"
<<
endl
;
return
false
;
}
...
...
src/ngap/ngapIEs/TimeToWait.cpp
View file @
07955260
...
...
@@ -21,38 +21,40 @@
#include "TimeToWait.hpp"
#include <iostream>
using
namespace
std
;
namespace
ngap
{
//------------------------------------------------------------------------------
TimeToWait
::
TimeToWait
()
{
timeValue
=
-
1
;
time_
=
-
1
;
}
//------------------------------------------------------------------------------
TimeToWait
::
TimeToWait
(
e_Ngap_TimeToWait
time
)
{
time_
=
time
;
}
//------------------------------------------------------------------------------
TimeToWait
::~
TimeToWait
()
{}
//------------------------------------------------------------------------------
void
TimeToWait
::
setValue
(
e_Ngap_TimeToWait
m_timeToWait
)
{
time
Value
=
m_timeToWait
;
void
TimeToWait
::
setValue
(
e_Ngap_TimeToWait
time
)
{
time
_
=
time
;
}
//------------------------------------------------------------------------------
bool
TimeToWait
::
encode
2TimeToWait
(
Ngap_TimeToWait_t
*
timeToWait
)
{
*
timeToWait
=
timeValu
e
;
bool
TimeToWait
::
encode
(
Ngap_TimeToWait_t
&
time
)
{
time_
=
tim
e
;
return
true
;
}
//------------------------------------------------------------------------------
bool
TimeToWait
::
decode
fromTimeToWait
(
Ngap_TimeToWait_t
*
pdu
)
{
time
Value
=
*
pdu
;
bool
TimeToWait
::
decode
(
Ngap_TimeToWait_t
&
time
)
{
time
_
=
time
;
return
true
;
}
//------------------------------------------------------------------------------
long
TimeToWait
::
getValue
()
{
return
time
Value
;
return
time
_
;
}
}
// namespace ngap
src/ngap/ngapIEs/TimeToWait.hpp
View file @
07955260
...
...
@@ -33,15 +33,16 @@ namespace ngap {
class
TimeToWait
{
public:
TimeToWait
();
TimeToWait
(
e_Ngap_TimeToWait
);
virtual
~
TimeToWait
();
bool
encode
2TimeToWait
(
Ngap_TimeToWait_t
*
);
bool
decode
fromTimeToWait
(
Ngap_TimeToWait_t
*
);
bool
encode
(
Ngap_TimeToWait_t
&
);
bool
decode
(
Ngap_TimeToWait_t
&
);
void
setValue
(
e_Ngap_TimeToWait
);
long
getValue
();
private:
long
time
Value
;
long
time
_
;
};
}
// namespace ngap
...
...
src/ngap/ngapMsgs/HandoverPreparationFailure.cpp
View file @
07955260
...
...
@@ -108,7 +108,7 @@ void HandoverPreparationFailure::setCause(
cause
.
setChoiceOfCause
(
causePresent
);
if
(
causePresent
!=
Ngap_Cause_PR_NOTHING
)
cause
.
setValue
(
value
);
cause
.
encode
2Cause
(
&
(
ie
->
value
.
choice
.
Cause
)
);
cause
.
encode
(
ie
->
value
.
choice
.
Cause
);
int
ret
=
ASN_SEQUENCE_ADD
(
&
hoPreparationFailureIEs
->
protocolIEs
.
list
,
ie
);
if
(
ret
!=
0
)
Logger
::
ngap
().
error
(
"Encode Cause IE error"
);
}
...
...
@@ -181,9 +181,8 @@ bool HandoverPreparationFailure::decodeFromPdu(Ngap_NGAP_PDU_t* ngapMsgPdu) {
Ngap_Criticality_ignore
&&
hoPreparationFailureIEs
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
present
==
Ngap_HandoverPreparationFailureIEs__value_PR_Cause
)
{
if
(
!
cause
.
decodefromCause
(
&
hoPreparationFailureIEs
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
choice
.
Cause
))
{
if
(
!
cause
.
decode
(
hoPreparationFailureIEs
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
choice
.
Cause
))
{
Logger
::
ngap
().
error
(
"Decoded NGAP Cause IE error"
);
return
false
;
}
...
...
src/ngap/ngapMsgs/HandoverRequest.cpp
View file @
07955260
...
...
@@ -159,7 +159,7 @@ void HandoverRequest::setCause(
cause
.
setChoiceOfCause
(
causePresent
);
cause
.
setValue
(
value
);
cause
.
encode
2Cause
(
&
(
ie
->
value
.
choice
.
Cause
)
);
cause
.
encode
(
ie
->
value
.
choice
.
Cause
);
int
ret
=
ASN_SEQUENCE_ADD
(
&
handoverRequestIEs
->
protocolIEs
.
list
,
ie
);
if
(
ret
!=
0
)
Logger
::
ngap
().
error
(
"Encode Cause IE error"
);
}
...
...
src/ngap/ngapMsgs/HandoverRequiredMsg.cpp
View file @
07955260
...
...
@@ -209,9 +209,8 @@ bool HandoverRequiredMsg::decodeFromPdu(Ngap_NGAP_PDU_t* ngapMsgPdu) {
Ngap_Criticality_ignore
&&
handoverRequiredIEs
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
present
==
Ngap_HandoverRequiredIEs__value_PR_Cause
)
{
if
(
!
cause
.
decodefromCause
(
&
handoverRequiredIEs
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
choice
.
Cause
))
{
if
(
!
cause
.
decode
(
handoverRequiredIEs
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
choice
.
Cause
))
{
Logger
::
ngap
().
error
(
"Decoded NGAP Cause IE error"
);
return
false
;
}
...
...
src/ngap/ngapMsgs/NGReset.cpp
View file @
07955260
...
...
@@ -54,7 +54,7 @@ void NGResetMsg::setCause(const Cause& c) {
ie
->
criticality
=
Ngap_Criticality_ignore
;
ie
->
value
.
present
=
Ngap_NGResetIEs__value_PR_Cause
;
if
(
!
cause
.
encode
2Cause
(
&
ie
->
value
.
choice
.
Cause
))
{
if
(
!
cause
.
encode
(
ie
->
value
.
choice
.
Cause
))
{
Logger
::
ngap
().
error
(
"Encode NGAP Cause IE error"
);
free_wrapper
((
void
**
)
&
ie
);
return
;
...
...
@@ -121,8 +121,8 @@ bool NGResetMsg::decodeFromPdu(Ngap_NGAP_PDU_t* ngapMsgPdu) {
Ngap_Criticality_ignore
&&
ngResetIEs
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
present
==
Ngap_NGResetIEs__value_PR_Cause
)
{
if
(
!
cause
.
decode
fromCause
(
&
ngResetIEs
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
choice
.
Cause
))
{
if
(
!
cause
.
decode
(
ngResetIEs
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
choice
.
Cause
))
{
Logger
::
ngap
().
error
(
"Decoded NGAP Cause IE error"
);
return
false
;
}
...
...
src/ngap/ngapMsgs/NGSetupFailure.cpp
View file @
07955260
...
...
@@ -32,6 +32,7 @@ namespace ngap {
NGSetupFailureMsg
::
NGSetupFailureMsg
()
:
NgapMessage
()
{
ngSetupFailureIEs
=
nullptr
;
// criticalityDiagnostics = NULL;
timeToWait
=
std
::
nullopt
;
NgapMessage
::
setMessageType
(
NgapMessageType
::
NG_SETUP_FAILURE
);
initialize
();
}
...
...
@@ -53,7 +54,7 @@ void NGSetupFailureMsg::addCauseIE() {
ie
->
criticality
=
Ngap_Criticality_ignore
;
ie
->
value
.
present
=
Ngap_NGSetupFailureIEs__value_PR_Cause
;
if
(
!
cause
.
encode
2Cause
(
&
ie
->
value
.
choice
.
Cause
))
{
if
(
!
cause
.
encode
(
ie
->
value
.
choice
.
Cause
))
{
Logger
::
ngap
().
error
(
"Encode NGAP Cause IE error"
);
free_wrapper
((
void
**
)
&
ie
);
return
;
...
...
@@ -65,13 +66,15 @@ void NGSetupFailureMsg::addCauseIE() {
//------------------------------------------------------------------------------
void
NGSetupFailureMsg
::
addTimeToWaitIE
()
{
if
(
!
timeToWait
.
has_value
())
return
;
Ngap_NGSetupFailureIEs_t
*
ie
=
(
Ngap_NGSetupFailureIEs_t
*
)
calloc
(
1
,
sizeof
(
Ngap_NGSetupFailureIEs_t
));
ie
->
id
=
Ngap_ProtocolIE_ID_id_TimeToWait
;
ie
->
criticality
=
Ngap_Criticality_ignore
;
ie
->
value
.
present
=
Ngap_NGSetupFailureIEs__value_PR_TimeToWait
;
if
(
!
timeToWait
.
encode2TimeToWait
(
&
ie
->
value
.
choice
.
TimeToWait
))
{
if
(
!
timeToWait
.
value
().
encode
(
ie
->
value
.
choice
.
TimeToWait
))
{
Logger
::
ngap
().
error
(
"Encode NGAP Cause IE error"
);
free_wrapper
((
void
**
)
&
ie
);
return
;
...
...
@@ -89,26 +92,27 @@ void NGSetupFailureMsg::set(
cause
.
setValue
(
cause_value
);
addCauseIE
();
timeToWait
.
setValue
(
time_to_wait
);
timeToWait
=
std
::
make_optional
<
TimeToWait
>
(
time_to_wait
);
addTimeToWaitIE
();
}
//------------------------------------------------------------------------------
void
NGSetupFailureMsg
::
set
(
const
e_Ngap_CauseRadioNetwork
&
cause_value
)
{
void
NGSetupFailureMsg
::
setCauseRadioNetwork
(
const
e_Ngap_CauseRadioNetwork
&
cause_value
)
{
cause
.
setChoiceOfCause
(
Ngap_Cause_PR_radioNetwork
);
cause
.
setValue
(
cause_value
);
addCauseIE
();
}
//------------------------------------------------------------------------------
void
NGSetupFailureMsg
::
set
CauseTransport
(
void
NGSetupFailureMsg
::
set
(
const
e_Ngap_CauseTransport
&
cause_value
,
const
e_Ngap_TimeToWait
&
time_to_wait
)
{
cause
.
setChoiceOfCause
(
Ngap_Cause_PR_transport
);
cause
.
setValue
(
cause_value
);
addCauseIE
();
timeToWait
.
setValue
(
time_to_wait
);
timeToWait
=
std
::
make_optional
<
TimeToWait
>
(
time_to_wait
);
addTimeToWaitIE
();
}
...
...
@@ -121,13 +125,13 @@ void NGSetupFailureMsg::setCauseTransport(
}
//------------------------------------------------------------------------------
void
NGSetupFailureMsg
::
set
CauseNas
(
void
NGSetupFailureMsg
::
set
(
const
e_Ngap_CauseNas
&
cause_value
,
const
e_Ngap_TimeToWait
&
time_to_wait
)
{
cause
.
setChoiceOfCause
(
Ngap_Cause_PR_nas
);
cause
.
setValue
(
cause_value
);
addCauseIE
();
timeToWait
.
setValue
(
time_to_wait
);
timeToWait
=
std
::
make_optional
<
TimeToWait
>
(
time_to_wait
);
addTimeToWaitIE
();
}
...
...
@@ -139,14 +143,14 @@ void NGSetupFailureMsg::setCauseNas(const e_Ngap_CauseNas& cause_value) {
}
//------------------------------------------------------------------------------
void
NGSetupFailureMsg
::
set
CauseProtocol
(
void
NGSetupFailureMsg
::
set
(
const
e_Ngap_CauseProtocol
&
cause_value
,
const
e_Ngap_TimeToWait
&
time_to_wait
)
{
cause
.
setChoiceOfCause
(
Ngap_Cause_PR_protocol
);
cause
.
setValue
(
cause_value
);
addCauseIE
();
timeToWait
.
setValue
(
time_to_wait
);
timeToWait
=
std
::
make_optional
<
TimeToWait
>
(
time_to_wait
);
addTimeToWaitIE
();
}
...
...
@@ -159,14 +163,14 @@ void NGSetupFailureMsg::setCauseProtocol(
}
//------------------------------------------------------------------------------
void
NGSetupFailureMsg
::
set
CauseMisc
(
void
NGSetupFailureMsg
::
set
(
const
e_Ngap_CauseMisc
&
cause_value
,
const
e_Ngap_TimeToWait
&
time_to_wait
)
{
cause
.
setChoiceOfCause
(
Ngap_Cause_PR_misc
);
cause
.
setValue
(
cause_value
);
addCauseIE
();
timeToWait
.
setValue
(
time_to_wait
);
timeToWait
=
std
::
make_optional
<
TimeToWait
>
(
time_to_wait
);
addTimeToWaitIE
();
}
...
...
@@ -205,9 +209,8 @@ bool NGSetupFailureMsg::decodeFromPdu(Ngap_NGAP_PDU_t* ngapMsgPdu) {
Ngap_Criticality_ignore
&&
ngSetupFailureIEs
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
present
==
Ngap_NGSetupFailureIEs__value_PR_Cause
)
{
if
(
!
cause
.
decodefromCause
(
&
ngSetupFailureIEs
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
choice
.
Cause
))
{
if
(
!
cause
.
decode
(
ngSetupFailureIEs
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
choice
.
Cause
))
{
Logger
::
ngap
().
error
(
"Decoded NGAP Cause IE error"
);
return
false
;
}
...
...
@@ -221,12 +224,13 @@ bool NGSetupFailureMsg::decodeFromPdu(Ngap_NGAP_PDU_t* ngapMsgPdu) {
Ngap_Criticality_ignore
&&
ngSetupFailureIEs
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
present
==
Ngap_NGSetupFailureIEs__value_PR_TimeToWait
)
{
if
(
!
timeToWait
.
decodefromTimeToWait
(
&
ngSetupFailureIEs
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
choice
.
TimeToWait
))
{
TimeToWait
tmp
=
{};
if
(
!
tmp
.
decode
(
ngSetupFailureIEs
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
choice
.
TimeToWait
))
{
Logger
::
ngap
().
error
(
"Decoded NGAP TimeToWait IE error"
);
return
false
;
}
timeToWait
=
std
::
optional
<
TimeToWait
>
(
tmp
);
}
else
{
Logger
::
ngap
().
error
(
"Decoded NGAP TimeToWait IE error"
);
return
false
;
...
...
@@ -302,11 +306,16 @@ bool NGSetupFailureMsg::getCauseMisc(e_Ngap_CauseMisc& causeMisc) {
}
//------------------------------------------------------------------------------
bool
NGSetupFailureMsg
::
getTime2Wait
(
e_Ngap_TimeToWait
&
time
)
{
if
(
timeToWait
.
getValue
()
<
0
)
{
void
NGSetupFailureMsg
::
setTimeToWait
(
const
e_Ngap_TimeToWait
&
time
)
{
timeToWait
=
std
::
make_optional
<
TimeToWait
>
(
time
);
}
//------------------------------------------------------------------------------
bool
NGSetupFailureMsg
::
getTimeToWait
(
e_Ngap_TimeToWait
&
time
)
{
if
(
timeToWait
.
has_value
())
{
return
false
;
}
time
=
(
e_Ngap_TimeToWait
)
timeToWait
.
getValue
();
time
=
(
e_Ngap_TimeToWait
)
timeToWait
.
value
().
getValue
();
return
true
;
}
...
...
src/ngap/ngapMsgs/NGSetupFailure.hpp
View file @
07955260
...
...
@@ -27,6 +27,8 @@
#include "TimeToWait.hpp"
#include "NgapMessage.hpp"
#include <optional>
namespace
ngap
{
class
NGSetupFailureMsg
:
public
NgapMessage
{
...
...
@@ -39,47 +41,49 @@ class NGSetupFailureMsg : public NgapMessage {
void
set
(
const
e_Ngap_CauseRadioNetwork
&
cause_value
,
const
e_Ngap_TimeToWait
&
time_to_wait
);
void
set
(
const
e_Ngap_CauseRadioNetwork
&
cause_value
);
bool
getCauseRadioNetwork
(
e_Ngap_CauseRadioNetwork
&
);
void
setCauseTransport
(
void
set
(
const
e_Ngap_CauseTransport
&
cause_value
,
const
e_Ngap_TimeToWait
&
time_to_wait
);
void
set
(
const
e_Ngap_CauseNas
&
cause_value
,
const
e_Ngap_TimeToWait
&
time_to_wait
);
void
set
(
const
e_Ngap_CauseProtocol
&
cause_value
,
const
e_Ngap_TimeToWait
&
time_to_wait
);
void
set
(
const
e_Ngap_CauseMisc
&
cause_value
,
const
e_Ngap_TimeToWait
&
time_to_wait
);
void
setCauseRadioNetwork
(
const
e_Ngap_CauseRadioNetwork
&
cause_value
);
bool
getCauseRadioNetwork
(
e_Ngap_CauseRadioNetwork
&
);
void
setCauseTransport
(
const
e_Ngap_CauseTransport
&
cause_value
);
bool
getCauseTransport
(
e_Ngap_CauseTransport
&
);
void
setCauseNas
(
const
e_Ngap_CauseNas
&
cause_value
,
const
e_Ngap_TimeToWait
&
time_to_wait
);
void
setCauseNas
(
const
e_Ngap_CauseNas
&
cause_value
);
bool
getCauseNas
(
e_Ngap_CauseNas
&
);
void
setCauseProtocol
(
const
e_Ngap_CauseProtocol
&
cause_value
,
const
e_Ngap_TimeToWait
&
time_to_wait
);
void
setCauseProtocol
(
const
e_Ngap_CauseProtocol
&
cause_value
);
bool
getCauseProtocol
(
e_Ngap_CauseProtocol
&
);
void
setCauseMisc
(
const
e_Ngap_CauseMisc
&
cause_value
,
const
e_Ngap_TimeToWait
&
time_to_wait
);
void
setCauseMisc
(
const
e_Ngap_CauseMisc
&
cause_value
);
bool
getCauseMisc
(
e_Ngap_CauseMisc
&
);
bool
getCauseType
(
Ngap_Cause_PR
&
);
bool
getTime2Wait
(
e_Ngap_TimeToWait
&
);
bool
decodeFromPdu
(
Ngap_NGAP_PDU_t
*
ngapMsgPdu
)
override
;
bool
getTimeToWait
(
e_Ngap_TimeToWait
&
);
void
setTimeToWait
(
const
e_Ngap_TimeToWait
&
);
void
addCauseIE
();
void
addTimeToWaitIE
();
bool
decodeFromPdu
(
Ngap_NGAP_PDU_t
*
ngapMsgPdu
)
override
;
private:
Ngap_NGSetupFailure_t
*
ngSetupFailureIEs
;
Cause
cause
;
// Mandatory
TimeToWait
timeToWait
;
// Mandatory
Cause
cause
;
// Mandatory
std
::
optional
<
TimeToWait
>
timeToWait
;
// Optional
// TODO: CriticalityDiagnostics *criticalityDiagnostics; //Optional
void
addCauseIE
();
void
addTimeToWaitIE
();
};
}
// namespace ngap
#endif
src/ngap/ngapMsgs/UEContextReleaseCommand.cpp
View file @
07955260
...
...
@@ -144,7 +144,7 @@ void UEContextReleaseCommandMsg::addCauseIE() {
ie
->
id
=
Ngap_ProtocolIE_ID_id_Cause
;
ie
->
criticality
=
Ngap_Criticality_ignore
;
ie
->
value
.
present
=
Ngap_UEContextReleaseCommand_IEs__value_PR_Cause
;
causeValue
.
encode
2Cause
(
&
ie
->
value
.
choice
.
Cause
);
causeValue
.
encode
(
ie
->
value
.
choice
.
Cause
);
int
ret
=
ASN_SEQUENCE_ADD
(
&
ies
->
protocolIEs
.
list
,
ie
);
if
(
ret
!=
0
)
Logger
::
ngap
().
error
(
"Encode NGAP Cause IE error"
);
}
...
...
@@ -214,8 +214,8 @@ bool UEContextReleaseCommandMsg::decodeFromPdu(Ngap_NGAP_PDU_t* ngapMsgPdu) {
Ngap_Criticality_ignore
&&
ies
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
present
==
Ngap_UEContextReleaseCommand_IEs__value_PR_Cause
)
{
if
(
!
causeValue
.
decode
fromCause
(
&
ies
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
choice
.
Cause
))
{
if
(
!
causeValue
.
decode
(
ies
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
choice
.
Cause
))
{
Logger
::
ngap
().
error
(
"Decoded NGAP Cause IE error"
);
return
false
;
}
...
...
src/ngap/ngapMsgs/UEContextReleaseRequest.cpp
View file @
07955260
...
...
@@ -109,7 +109,7 @@ void UEContextReleaseRequestMsg::addCauseIE() {
ie
->
id
=
Ngap_ProtocolIE_ID_id_Cause
;
ie
->
criticality
=
Ngap_Criticality_ignore
;
ie
->
value
.
present
=
Ngap_UEContextReleaseRequest_IEs__value_PR_Cause
;
causeValue
.
encode
2Cause
(
&
ie
->
value
.
choice
.
Cause
);
causeValue
.
encode
(
ie
->
value
.
choice
.
Cause
);
int
ret
=
ASN_SEQUENCE_ADD
(
&
ies
->
protocolIEs
.
list
,
ie
);
if
(
ret
!=
0
)
Logger
::
ngap
().
error
(
"Encode Cause IE error"
);
}
...
...
@@ -176,8 +176,8 @@ bool UEContextReleaseRequestMsg::decodeFromPdu(Ngap_NGAP_PDU_t* ngapMsgPdu) {
Ngap_Criticality_ignore
&&
ies
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
present
==
Ngap_UEContextReleaseRequest_IEs__value_PR_Cause
)
{
if
(
!
causeValue
.
decode
fromCause
(
&
ies
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
choice
.
Cause
))
{
if
(
!
causeValue
.
decode
(
ies
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
choice
.
Cause
))
{
Logger
::
ngap
().
error
(
"Decode NGAP Cause IE error"
);
return
false
;
}
...
...
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