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
3edbfd8c
Commit
3edbfd8c
authored
Sep 06, 2022
by
Tien Thinh NGUYEN
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Code refactor for PduSessionResourceReleaseResponse
parent
ff3d6770
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
96 additions
and
111 deletions
+96
-111
src/ngap/ngapIEs/PDUSessionResourceReleasedItemRelRes.cpp
src/ngap/ngapIEs/PDUSessionResourceReleasedItemRelRes.cpp
+25
-28
src/ngap/ngapIEs/PDUSessionResourceReleasedItemRelRes.hpp
src/ngap/ngapIEs/PDUSessionResourceReleasedItemRelRes.hpp
+12
-14
src/ngap/ngapIEs/PDUSessionResourceReleasedListRelRes.cpp
src/ngap/ngapIEs/PDUSessionResourceReleasedListRelRes.cpp
+20
-23
src/ngap/ngapIEs/PDUSessionResourceReleasedListRelRes.hpp
src/ngap/ngapIEs/PDUSessionResourceReleasedListRelRes.hpp
+7
-11
src/ngap/ngapMsgs/PduSessionResourceReleaseResponse.cpp
src/ngap/ngapMsgs/PduSessionResourceReleaseResponse.cpp
+30
-33
src/ngap/ngapMsgs/PduSessionResourceReleaseResponse.hpp
src/ngap/ngapMsgs/PduSessionResourceReleaseResponse.hpp
+2
-2
No files found.
src/ngap/ngapIEs/PDUSessionResourceReleasedItemRelRes.cpp
View file @
3edbfd8c
...
...
@@ -30,48 +30,45 @@ PDUSessionResourceReleasedItemRelRes::PDUSessionResourceReleasedItemRelRes() {}
PDUSessionResourceReleasedItemRelRes
::~
PDUSessionResourceReleasedItemRelRes
()
{}
//------------------------------------------------------------------------------
void
PDUSessionResourceReleasedItemRelRes
::
setPDUSessionResourceReleasedItemRelRes
(
const
PDUSessionID
&
m_pDUSessionID
,
const
OCTET_STRING_t
&
m_pDUSessionResourceReleaseResponseTransfer
)
{
pDUSessionID
=
m_pDUSessionID
;
pDUSessionResourceReleaseResponseTransfer
=
m_pDUSessionResourceReleaseResponseTransfer
;
void
PDUSessionResourceReleasedItemRelRes
::
set
(
const
PDUSessionID
&
pdu_session_id
,
const
OCTET_STRING_t
&
pdu_session_resource_release_response_transfer
)
{
pdu_session_id_
=
pdu_session_id
;
pdu_session_resource_release_response_transfer_
=
pdu_session_resource_release_response_transfer
;
}
//------------------------------------------------------------------------------
void
PDUSessionResourceReleasedItemRelRes
::
getPDUSessionResourceReleasedItemRelRes
(
PDUSessionID
&
m_pDUSessionID
,
OCTET_STRING_t
&
m_pDUSessionResourceReleaseResponseTransfer
)
{
m_pDUSessionID
=
pDUSessionID
;
m_pDUSessionResourceReleaseResponseTransfer
=
pDUSessionResourceReleaseResponseTransfer
;
void
PDUSessionResourceReleasedItemRelRes
::
get
(
PDUSessionID
&
pdu_session_id
,
OCTET_STRING_t
&
pdu_session_resource_release_response_transfer
)
{
pdu_session_id
=
pdu_session_id_
;
pdu_session_resource_release_response_transfer
=
pdu_session_resource_release_response_transfer_
;
}
//------------------------------------------------------------------------------
bool
PDUSessionResourceReleasedItemRelRes
::
encode2PDUSessionResourceReleasedItemRelRes
(
Ngap_PDUSessionResourceReleasedItemRelRes_t
*
pduSessionResourceReleasedItemRelRes
)
{
if
(
!
pDUSessionID
.
encode
(
pduSessionResourceReleasedItemRelR
es
->
pDUSessionID
))
bool
PDUSessionResourceReleasedItemRelRes
::
encode
(
Ngap_PDUSessionResourceReleasedItemRelRes_t
*
pdu_session_resource_released_item_rel_res
)
{
if
(
!
pdu_session_id_
.
encode
(
pdu_session_resource_released_item_rel_r
es
->
pDUSessionID
))
return
false
;
pdu
SessionResourceReleasedItemRelR
es
pdu
_session_resource_released_item_rel_r
es
->
pDUSessionResourceReleaseResponseTransfer
=
p
DUSessionResourceReleaseResponseTransfer
;
p
du_session_resource_release_response_transfer_
;
return
true
;
}
//------------------------------------------------------------------------------
bool
PDUSessionResourceReleasedItemRelRes
::
decodefromPDUSessionResourceReleasedItemRelRes
(
Ngap_PDUSessionResourceReleasedItemRelRes_t
*
pduSessionResourceReleasedItemRelRes
)
{
pDUSessionID
.
set
(
pduSessionResourceReleasedItemRelRes
->
pDUSessionID
);
pDUSessionResourceReleaseResponseTransfer
=
pduSessionResourceReleasedItemRelRes
bool
PDUSessionResourceReleasedItemRelRes
::
decode
(
Ngap_PDUSessionResourceReleasedItemRelRes_t
*
pdu_session_resource_released_item_rel_res
)
{
pdu_session_id_
.
set
(
pdu_session_resource_released_item_rel_res
->
pDUSessionID
);
pdu_session_resource_release_response_transfer_
=
pdu_session_resource_released_item_rel_res
->
pDUSessionResourceReleaseResponseTransfer
;
return
true
;
...
...
src/ngap/ngapIEs/PDUSessionResourceReleasedItemRelRes.hpp
View file @
3edbfd8c
...
...
@@ -35,24 +35,22 @@ class PDUSessionResourceReleasedItemRelRes {
PDUSessionResourceReleasedItemRelRes
();
virtual
~
PDUSessionResourceReleasedItemRelRes
();
void
set
PDUSessionResourceReleasedItemRelRes
(
const
PDUSessionID
&
m_pDUSessionID
,
const
OCTET_STRING_t
&
m_pDUSessionResourceReleaseResponseT
ransfer
);
void
set
(
const
PDUSessionID
&
pdu_session_id
,
const
OCTET_STRING_t
&
pdu_session_resource_release_response_t
ransfer
);
void
get
PDUSessionResourceReleasedItemRelRes
(
PDUSessionID
&
m_pDUSessionID
,
OCTET_STRING_t
&
m_pDUSessionResourceReleaseResponseT
ransfer
);
void
get
(
PDUSessionID
&
pdu_session_id
,
OCTET_STRING_t
&
pdu_session_resource_release_response_t
ransfer
);
bool
encode2PDUSessionResourceReleasedItemRelRes
(
Ngap_PDUSessionResourceReleasedItemRelRes_t
*
pduSessionResourceReleasedItemRelRes
);
bool
decodefromPDUSessionResourceReleasedItemRelRes
(
Ngap_PDUSessionResourceReleasedItemRelRes_t
*
pduSessionResourceReleasedItemRelRes
);
bool
encode
(
Ngap_PDUSessionResourceReleasedItemRelRes_t
*
pdu_session_resource_released_item_rel_res
);
bool
decode
(
Ngap_PDUSessionResourceReleasedItemRelRes_t
*
pdu_session_resource_released_item_rel_res
);
private:
PDUSessionID
p
DUSessionID
;
OCTET_STRING_t
p
DUSessionResourceReleaseResponseTransfer
;
PDUSessionID
p
du_session_id_
;
OCTET_STRING_t
p
du_session_resource_release_response_transfer_
;
};
}
// namespace ngap
...
...
src/ngap/ngapIEs/PDUSessionResourceReleasedListRelRes.cpp
View file @
3edbfd8c
...
...
@@ -30,47 +30,44 @@ PDUSessionResourceReleasedListRelRes::PDUSessionResourceReleasedListRelRes() {}
PDUSessionResourceReleasedListRelRes
::~
PDUSessionResourceReleasedListRelRes
()
{}
//------------------------------------------------------------------------------
void
PDUSessionResourceReleasedListRelRes
::
setPDUSessionResourceReleasedListRelRes
(
const
std
::
vector
<
PDUSessionResourceReleasedItemRelRes
>&
list
)
{
itemRelResList
=
list
;
void
PDUSessionResourceReleasedListRelRes
::
set
(
const
std
::
vector
<
PDUSessionResourceReleasedItemRelRes
>&
list
)
{
item_list_
=
list
;
}
//------------------------------------------------------------------------------
void
PDUSessionResourceReleasedListRelRes
::
getPDUSessionResourceReleasedListRelRes
(
std
::
vector
<
PDUSessionResourceReleasedItemRelRes
>&
list
)
{
list
=
itemRelResList
;
void
PDUSessionResourceReleasedListRelRes
::
get
(
std
::
vector
<
PDUSessionResourceReleasedItemRelRes
>&
list
)
{
list
=
item_list_
;
}
//------------------------------------------------------------------------------
bool
PDUSessionResourceReleasedListRelRes
::
encode2PDUSessionResourceReleasedListRelRes
(
Ngap_PDUSessionResourceReleasedListRelRes_t
*
pduSessionResourceReleasedListRelRes
)
{
for
(
auto
&
item
:
itemRelResList
)
{
bool
PDUSessionResourceReleasedListRelRes
::
encode
(
Ngap_PDUSessionResourceReleasedListRelRes_t
&
pdu_session_resource_released_list_rel_res
)
{
for
(
auto
&
item
:
item_list_
)
{
Ngap_PDUSessionResourceReleasedItemRelRes_t
*
rel
=
(
Ngap_PDUSessionResourceReleasedItemRelRes_t
*
)
calloc
(
1
,
sizeof
(
Ngap_PDUSessionResourceReleasedItemRelRes_t
));
if
(
!
rel
)
return
false
;
if
(
!
item
.
encode2PDUSessionResourceReleasedItemRelRes
(
rel
))
return
false
;
if
(
ASN_SEQUENCE_ADD
(
&
pduSessionResourceReleasedListRelRes
->
list
,
rel
)
!=
0
)
if
(
!
item
.
encode
(
rel
))
return
false
;
if
(
ASN_SEQUENCE_ADD
(
&
pdu_session_resource_released_list_rel_res
.
list
,
rel
)
!=
0
)
return
false
;
}
return
true
;
}
//------------------------------------------------------------------------------
bool
PDUSessionResourceReleasedListRelRes
::
decodefromPDUSessionResourceReleasedListRelRes
(
Ngap_PDUSessionResourceReleasedListRelRes_t
*
pduSessionResourceReleasedListRelRes
)
{
for
(
int
i
=
0
;
i
<
pduSessionResourceReleasedListRelRes
->
list
.
count
;
i
++
)
{
bool
PDUSessionResourceReleasedListRelRes
::
decode
(
const
Ngap_PDUSessionResourceReleasedListRelRes_t
&
pdu_session_resource_released_list_rel_res
)
{
for
(
int
i
=
0
;
i
<
pdu_session_resource_released_list_rel_res
.
list
.
count
;
i
++
)
{
PDUSessionResourceReleasedItemRelRes
item
=
{};
if
(
!
item
.
decodefromPDUSessionResourceReleasedItemRelRes
(
pduSessionResourceReleasedListRelRes
->
list
.
array
[
i
]))
if
(
!
item
.
decode
(
pdu_session_resource_released_list_rel_res
.
list
.
array
[
i
]))
return
false
;
item
RelResList
.
push_back
(
item
);
item
_list_
.
push_back
(
item
);
}
return
true
;
}
...
...
src/ngap/ngapIEs/PDUSessionResourceReleasedListRelRes.hpp
View file @
3edbfd8c
...
...
@@ -37,22 +37,18 @@ class PDUSessionResourceReleasedListRelRes {
PDUSessionResourceReleasedListRelRes
();
virtual
~
PDUSessionResourceReleasedListRelRes
();
void
setPDUSessionResourceReleasedListRelRes
(
const
std
::
vector
<
PDUSessionResourceReleasedItemRelRes
>&
list
);
void
set
(
const
std
::
vector
<
PDUSessionResourceReleasedItemRelRes
>&
list
);
void
getPDUSessionResourceReleasedListRelRes
(
std
::
vector
<
PDUSessionResourceReleasedItemRelRes
>&
list
);
void
get
(
std
::
vector
<
PDUSessionResourceReleasedItemRelRes
>&
list
);
bool
encode2PDUSessionResourceReleasedListRelRes
(
Ngap_PDUSessionResourceReleasedListRelRes_t
*
pduSessionResourceReleasedListRelRes
);
bool
encode
(
Ngap_PDUSessionResourceReleasedListRelRes_t
&
pdu_session_resource_released_list_rel_res
);
bool
decodefromPDUSessionResourceReleasedListRelRes
(
Ngap_PDUSessionResourceReleasedListRelRes_t
*
pduSessionResourceReleasedListRelRes
);
bool
decode
(
const
Ngap_PDUSessionResourceReleasedListRelRes_t
&
pdu_session_resource_released_list_rel_res
);
private:
std
::
vector
<
PDUSessionResourceReleasedItemRelRes
>
item
RelResList
;
std
::
vector
<
PDUSessionResourceReleasedItemRelRes
>
item
_list_
;
};
}
// namespace ngap
...
...
src/ngap/ngapMsgs/PduSessionResourceReleaseResponse.cpp
View file @
3edbfd8c
...
...
@@ -35,7 +35,7 @@ namespace ngap {
PduSessionResourceReleaseResponseMsg
::
PduSessionResourceReleaseResponseMsg
()
:
NgapUEMessage
()
{
pduSessionResourceReleaseResponseIEs
=
nullptr
;
userLocationInformation
=
nullptr
;
userLocationInformation
=
std
::
nullopt
;
setMessageType
(
NgapMessageType
::
PDU_SESSION_RESOURCE_RELEASE_RESPONSE
);
initialize
();
...
...
@@ -105,19 +105,18 @@ void PduSessionResourceReleaseResponseMsg::setRanUeNgapId(
//------------------------------------------------------------------------------
void
PduSessionResourceReleaseResponseMsg
::
setPduSessionResourceReleasedList
(
const
std
::
vector
<
PDUSessionResourceReleasedItem_t
>&
list
)
{
std
::
vector
<
PDUSessionResourceReleasedItemRelRes
>
item
RelResL
ist
;
std
::
vector
<
PDUSessionResourceReleasedItemRelRes
>
item
_rel_res_l
ist
;
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++
)
{
PDUSessionResourceReleasedItemRelRes
item
RelR
es
=
{};
PDUSessionID
p
DUSessionID
=
{};
p
DUSessionID
.
set
(
list
[
i
].
pduSessionId
);
PDUSessionResourceReleasedItemRelRes
item
_rel_r
es
=
{};
PDUSessionID
p
du_session_id
=
{};
p
du_session_id
.
set
(
list
[
i
].
pduSessionId
);
item
RelRes
.
setPDUSessionResourceReleasedItemRelRes
(
p
DUSessionID
,
list
[
i
].
pduSessionResourceReleaseResponseTransfer
);
item
RelResList
.
push_back
(
itemRelR
es
);
item
_rel_res
.
set
(
p
du_session_id
,
list
[
i
].
pduSessionResourceReleaseResponseTransfer
);
item
_rel_res_list
.
push_back
(
item_rel_r
es
);
}
pduSessionResourceReleasedList
.
setPDUSessionResourceReleasedListRelRes
(
itemRelResList
);
pduSessionResourceReleasedList
.
set
(
item_rel_res_list
);
Ngap_PDUSessionResourceReleaseResponseIEs_t
*
ie
=
(
Ngap_PDUSessionResourceReleaseResponseIEs_t
*
)
calloc
(
...
...
@@ -128,9 +127,8 @@ void PduSessionResourceReleaseResponseMsg::setPduSessionResourceReleasedList(
ie
->
value
.
present
=
Ngap_PDUSessionResourceReleaseResponseIEs__value_PR_PDUSessionResourceReleasedListRelRes
;
int
ret
=
pduSessionResourceReleasedList
.
encode2PDUSessionResourceReleasedListRelRes
(
&
ie
->
value
.
choice
.
PDUSessionResourceReleasedListRelRes
);
int
ret
=
pduSessionResourceReleasedList
.
encode
(
ie
->
value
.
choice
.
PDUSessionResourceReleasedListRelRes
);
if
(
!
ret
)
{
Logger
::
nas_mm
().
warn
(
"Encode PDUSessionResourceReleasedListRelRes IE error"
);
...
...
@@ -148,17 +146,15 @@ void PduSessionResourceReleaseResponseMsg::setPduSessionResourceReleasedList(
//------------------------------------------------------------------------------
bool
PduSessionResourceReleaseResponseMsg
::
getPduSessionResourceReleasedList
(
std
::
vector
<
PDUSessionResourceReleasedItem_t
>&
list
)
{
std
::
vector
<
PDUSessionResourceReleasedItemRelRes
>
itemRelResList
;
pduSessionResourceReleasedList
.
getPDUSessionResourceReleasedListRelRes
(
itemRelResList
);
std
::
vector
<
PDUSessionResourceReleasedItemRelRes
>
item_rel_res_list
;
pduSessionResourceReleasedList
.
get
(
item_rel_res_list
);
for
(
auto
&
item
:
item
RelResL
ist
)
{
for
(
auto
&
item
:
item
_rel_res_l
ist
)
{
PDUSessionResourceReleasedItem_t
rel
=
{};
PDUSessionID
p
DUSessionID
=
{};
PDUSessionID
p
du_session_id
=
{};
item
.
getPDUSessionResourceReleasedItemRelRes
(
pDUSessionID
,
rel
.
pduSessionResourceReleaseResponseTransfer
);
pDUSessionID
.
get
(
rel
.
pduSessionId
);
item
.
get
(
pdu_session_id
,
rel
.
pduSessionResourceReleaseResponseTransfer
);
pdu_session_id
.
get
(
rel
.
pduSessionId
);
list
.
push_back
(
rel
);
}
...
...
@@ -169,8 +165,7 @@ bool PduSessionResourceReleaseResponseMsg::getPduSessionResourceReleasedList(
//------------------------------------------------------------------------------
void
PduSessionResourceReleaseResponseMsg
::
setUserLocationInfoNR
(
const
NrCgi_t
&
cig
,
const
Tai_t
&
tai
)
{
if
(
!
userLocationInformation
)
userLocationInformation
=
new
UserLocationInformation
();
UserLocationInformation
tmp
=
{};
UserLocationInformationNR
information_nr
=
{};
NR_CGI
nR_CGI
=
{};
...
...
@@ -178,7 +173,8 @@ void PduSessionResourceReleaseResponseMsg::setUserLocationInfoNR(
nR_CGI
.
setNR_CGI
(
cig
.
mcc
,
cig
.
mnc
,
cig
.
nrCellID
);
tai_nr
.
setTAI
(
tai
);
information_nr
.
set
(
nR_CGI
,
tai_nr
);
userLocationInformation
->
setInformation
(
information_nr
);
tmp
.
setInformation
(
information_nr
);
userLocationInformation
=
std
::
optional
<
UserLocationInformation
>
(
tmp
);
Ngap_PDUSessionResourceReleaseResponseIEs_t
*
ie
=
(
Ngap_PDUSessionResourceReleaseResponseIEs_t
*
)
calloc
(
...
...
@@ -188,7 +184,7 @@ void PduSessionResourceReleaseResponseMsg::setUserLocationInfoNR(
ie
->
value
.
present
=
Ngap_PDUSessionResourceReleaseResponseIEs__value_PR_UserLocationInformation
;
int
ret
=
userLocationInformation
->
encode
(
int
ret
=
userLocationInformation
.
value
().
encode
(
&
ie
->
value
.
choice
.
UserLocationInformation
);
if
(
!
ret
)
{
Logger
::
nas_mm
().
warn
(
"Encode UserLocationInformation IE error"
);
...
...
@@ -206,10 +202,13 @@ void PduSessionResourceReleaseResponseMsg::setUserLocationInfoNR(
//------------------------------------------------------------------------------
bool
PduSessionResourceReleaseResponseMsg
::
getUserLocationInfoNR
(
NrCgi_t
&
cig
,
Tai_t
&
tai
)
{
if
(
!
userLocationInformation
.
has_value
())
return
false
;
UserLocationInformationNR
information_nr
=
{};
if
(
!
userLocationInformation
->
getInformation
(
information_nr
))
return
false
;
if
(
!
userLocationInformation
.
value
().
getInformation
(
information_nr
))
return
false
;
if
(
userLocationInformation
->
getChoiceOfUserLocationInformation
()
!=
if
(
userLocationInformation
.
value
().
getChoiceOfUserLocationInformation
()
!=
Ngap_UserLocationInformation_PR_userLocationInformationNR
)
return
false
;
NR_CGI
nR_CGI
=
{};
...
...
@@ -297,12 +296,10 @@ bool PduSessionResourceReleaseResponseMsg::decodeFromPdu(
pduSessionResourceReleaseResponseIEs
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
present
==
Ngap_PDUSessionResourceReleaseResponseIEs__value_PR_PDUSessionResourceReleasedListRelRes
)
{
if
(
!
pduSessionResourceReleasedList
.
decodefromPDUSessionResourceReleasedListRelRes
(
&
pduSessionResourceReleaseResponseIEs
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
choice
.
PDUSessionResourceReleasedListRelRes
))
{
if
(
!
pduSessionResourceReleasedList
.
decode
(
pduSessionResourceReleaseResponseIEs
->
protocolIEs
.
list
.
array
[
i
]
->
value
.
choice
.
PDUSessionResourceReleasedListRelRes
))
{
Logger
::
nas_mm
().
warn
(
"Decoded NGAP PDUSessionResourceReleasedListRelRes IE error"
);
return
false
;
...
...
src/ngap/ngapMsgs/PduSessionResourceReleaseResponse.hpp
View file @
3edbfd8c
...
...
@@ -53,8 +53,8 @@ class PduSessionResourceReleaseResponseMsg : public NgapUEMessage {
pduSessionResourceReleaseResponseIEs
;
PDUSessionResourceReleasedListRelRes
pduSessionResourceReleasedList
;
// Mandatory
UserLocationInformation
*
userLocationInformation
;
// Optional
pduSessionResourceReleasedList
;
// Mandatory
std
::
optional
<
UserLocationInformation
>
userLocationInformation
;
// Optional
// TODO: CriticalityDiagnostics *criticalityDiagnostics; //Optional
};
...
...
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