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
e4f9d058
Commit
e4f9d058
authored
Jan 12, 2023
by
Tien Thinh NGUYEN
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update GPRS_Timer_2
parent
c6446db8
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
72 additions
and
68 deletions
+72
-68
src/nas/common/Ie_Const.hpp
src/nas/common/Ie_Const.hpp
+4
-0
src/nas/ies/GPRS_Timer_2.cpp
src/nas/ies/GPRS_Timer_2.cpp
+43
-46
src/nas/ies/GPRS_Timer_2.hpp
src/nas/ies/GPRS_Timer_2.hpp
+12
-10
src/nas/msgs/RegistrationAccept.cpp
src/nas/msgs/RegistrationAccept.cpp
+11
-9
src/nas/msgs/RegistrationAccept.hpp
src/nas/msgs/RegistrationAccept.hpp
+0
-1
src/nas/msgs/RegistrationReject.cpp
src/nas/msgs/RegistrationReject.cpp
+2
-2
No files found.
src/nas/common/Ie_Const.hpp
View file @
e4f9d058
...
...
@@ -125,6 +125,10 @@ constexpr uint8_t kIeiGprsTimer3T3447 = 0x6C;
constexpr
uint8_t
kIeiGprsTimer3T3512
=
0x5E
;
constexpr
uint8_t
kIeiGprsTimer3BackOffTimer
=
0x37
;
constexpr
uint8_t
kIeiGprsTimer2Non3gppDeregistration
=
0x5D
;
constexpr
uint8_t
kIeiGprsTimer2T3502
=
0x16
;
constexpr
uint8_t
kIeiGprsTimer2T3546
=
0x5F
;
constexpr
uint8_t
kIeiEpsNasMessageContainer
=
0x70
;
constexpr
uint8_t
kIeiNasMessageContainer
=
0x71
;
constexpr
uint8_t
kIeiPduSessionReactivationResultErrorCause
=
0x72
;
...
...
src/nas/ies/GPRS_Timer_2.cpp
View file @
e4f9d058
...
...
@@ -21,83 +21,80 @@
#include "GPRS_Timer_2.hpp"
#include "3gpp_24.501.hpp"
#include "common_defs.h"
#include "logger.hpp"
using
namespace
nas
;
//------------------------------------------------------------------------------
GPRS_Timer_2
::
GPRS_Timer_2
(
uint8_t
iei
)
{
_iei
=
iei
;
length
=
1
;
_value
=
0
;
GPRS_Timer_2
::
GPRS_Timer_2
(
uint8_t
iei
)
:
Type4NasIe
(
iei
),
value_
()
{
SetLengthIndicator
(
1
);
SetIeName
(
kGprsTimer2IeName
);
}
//------------------------------------------------------------------------------
GPRS_Timer_2
::
GPRS_Timer_2
(
const
uint8_t
iei
,
uint8_t
value
)
{
_iei
=
iei
;
_value
=
value
;
length
=
1
;
GPRS_Timer_2
::
GPRS_Timer_2
(
const
uint8_t
iei
,
uint8_t
value
)
:
Type4NasIe
(
iei
)
{
value_
=
value
;
SetLengthIndicator
(
1
)
;
SetIeName
(
kGprsTimer2IeName
)
;
}
//------------------------------------------------------------------------------
GPRS_Timer_2
::
GPRS_Timer_2
()
:
_iei
(),
_value
(),
length
(
1
)
{}
//------------------------------------------------------------------------------
GPRS_Timer_2
::~
GPRS_Timer_2
()
{}
//------------------------------------------------------------------------------
void
GPRS_Timer_2
::
setIEI
(
uint8_t
iei
)
{
_iei
=
iei
;
}
//------------------------------------------------------------------------------
void
GPRS_Timer_2
::
setValue
(
uint8_t
value
)
{
_value
=
value
;
value_
=
value
;
}
//------------------------------------------------------------------------------
uint8_t
GPRS_Timer_2
::
getValue
()
{
return
_value
;
uint8_t
GPRS_Timer_2
::
getValue
()
const
{
return
value_
;
}
//------------------------------------------------------------------------------
int
GPRS_Timer_2
::
Encode
(
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
"Encoding
GPRS_Timer_2"
);
i
f
(
len
<
kGprsTimer2Length
)
{
Logger
::
nas_mm
().
error
(
"Buffer length is less than the length of this IE (%d octet)"
,
kGprsTimer2Length
);
Logger
::
nas_mm
().
debug
(
"Encoding
%s"
,
GetIeName
().
c_str
()
);
i
nt
ie_len
=
GetIeLength
();
if
(
len
<
ie_len
)
{
Logger
::
nas_mm
().
error
(
"Len is less than %d"
,
ie_len
);
return
KEncodeDecodeError
;
}
int
encoded_size
=
0
;
if
(
_iei
)
{
ENCODE_U8
(
buf
+
encoded_size
,
_iei
,
encoded_size
);
}
// Length
length
=
1
;
ENCODE_U8
(
buf
+
encoded_size
,
length
,
encoded_size
);
// Value
ENCODE_U8
(
buf
+
encoded_size
,
_value
,
encoded_size
);
// IEI and Length
int
encoded_header_size
=
Type4NasIe
::
Encode
(
buf
+
encoded_size
,
len
);
if
(
encoded_header_size
==
KEncodeDecodeError
)
return
KEncodeDecodeError
;
encoded_size
+=
encoded_header_size
;
Logger
::
nas_mm
().
debug
(
"encoded GPRS_Timer_2, value 0x%x"
,
_value
);
// Octet 3
ENCODE_U8
(
buf
+
encoded_size
,
value_
,
encoded_size
);
Logger
::
nas_mm
().
debug
(
"encoded GPRS_Timer_2 ( len %d)"
,
encoded_size
);
Logger
::
nas_mm
().
debug
(
"Encoded %s, len (%d)"
,
GetIeName
().
c_str
(),
encoded_size
);
return
encoded_size
;
}
//------------------------------------------------------------------------------
int
GPRS_Timer_2
::
Decode
(
uint8_t
*
buf
,
int
len
,
bool
is_option
)
{
Logger
::
nas_mm
().
debug
(
"Decoding GPRS_Timer_2"
);
int
decoded_size
=
0
;
if
(
is_option
)
{
DECODE_U8
(
buf
+
decoded_size
,
_iei
,
decoded_size
);
int
GPRS_Timer_2
::
Decode
(
uint8_t
*
buf
,
int
len
,
bool
is_iei
)
{
if
(
len
<
kGprsTimer2Length
)
{
Logger
::
nas_mm
().
error
(
"Buffer length is less than the minimum length of this IE (%d octet)"
,
kGprsTimer2Length
);
return
KEncodeDecodeError
;
}
DECODE_U8
(
buf
+
decoded_size
,
length
,
decoded_size
);
DECODE_U8
(
buf
+
decoded_size
,
_value
,
decoded_size
);
uint8_t
decoded_size
=
0
;
uint8_t
octet
=
0
;
Logger
::
nas_mm
().
debug
(
"Decoding %s"
,
GetIeName
().
c_str
());
// IEI and Length
int
decoded_header_size
=
Type4NasIe
::
Decode
(
buf
+
decoded_size
,
len
,
is_iei
);
if
(
decoded_header_size
==
KEncodeDecodeError
)
return
KEncodeDecodeError
;
decoded_size
+=
decoded_header_size
;
DECODE_U8
(
buf
+
decoded_size
,
value_
,
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Decoded %s, Value 0x%x"
,
GetIeName
().
c_str
(),
value_
);
Logger
::
nas_mm
().
debug
(
"Decoded GPRS_Timer_2, value 0x%x, IEI 0x%x"
,
_value
,
_iei
);
Logger
::
nas_mm
().
debug
(
"decoded GPRS_Timer_2 (len %d)"
,
decoded_size
);
"Decoded %s, len (%d)"
,
GetIeName
().
c_str
(),
decoded_size
);
return
decoded_size
;
}
src/nas/ies/GPRS_Timer_2.hpp
View file @
e4f9d058
...
...
@@ -19,30 +19,32 @@
* contact@openairinterface.org
*/
#ifndef __GPRS_Timer_2_H_
#define __GPRS_Timer_2_H_
#ifndef _GPRS_TIMER_2_H_
#define _GPRS_TIMER_2_H_
#include "Type4NasIe.hpp"
#include <stdint.h>
constexpr
uint8_t
kGprsTimer2Length
=
3
;
constexpr
auto
kGprsTimer2IeName
=
"GPRS Timer 2"
;
namespace
nas
{
class
GPRS_Timer_2
{
class
GPRS_Timer_2
:
public
Type4NasIe
{
public:
GPRS_Timer_2
();
GPRS_Timer_2
(
uint8_t
iei
);
GPRS_Timer_2
(
const
uint8_t
iei
,
uint8_t
value
);
~
GPRS_Timer_2
();
void
setIEI
(
uint8_t
iei
);
int
Encode
(
uint8_t
*
buf
,
int
len
);
int
Decode
(
uint8_t
*
buf
,
int
len
,
bool
is_option
);
int
Decode
(
uint8_t
*
buf
,
int
len
,
bool
is_iei
);
void
setValue
(
uint8_t
value
);
uint8_t
getValue
();
uint8_t
getValue
()
const
;
private:
uint8_t
_iei
;
uint8_t
length
;
uint8_t
_value
;
uint8_t
value_
;
};
}
// namespace nas
...
...
src/nas/msgs/RegistrationAccept.cpp
View file @
e4f9d058
...
...
@@ -215,13 +215,13 @@ void RegistrationAccept::setT3512_Value(uint8_t unit, uint8_t value) {
//------------------------------------------------------------------------------
void
RegistrationAccept
::
setNon_3GPP_de_registration_timer_value
(
uint8_t
value
)
{
ie_Non_3GPP_de_registration_timer_value
=
std
::
make_optional
<
GPRS_Timer_2
>
(
0x5D
,
value
);
ie_Non_3GPP_de_registration_timer_value
=
std
::
make_optional
<
GPRS_Timer_2
>
(
kIeiGprsTimer2Non3gppDeregistration
,
value
);
}
//------------------------------------------------------------------------------
void
RegistrationAccept
::
setT3502_value
(
uint8_t
value
)
{
ie_T3502_value
=
std
::
make_optional
<
GPRS_Timer_2
>
(
0x16
,
value
);
ie_T3502_value
=
std
::
make_optional
<
GPRS_Timer_2
>
(
kIeiGprsTimer2T3502
,
value
);
}
//------------------------------------------------------------------------------
...
...
@@ -799,9 +799,11 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
0x5D
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x5D)"
);
GPRS_Timer_2
ie_Non_3GPP_de_registration_timer_value_tmp
=
{};
case
kIeiGprsTimer2Non3gppDeregistration
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x%x"
,
kIeiGprsTimer2Non3gppDeregistration
);
GPRS_Timer_2
ie_Non_3GPP_de_registration_timer_value_tmp
(
kIeiGprsTimer2Non3gppDeregistration
);
decoded_size
+=
ie_Non_3GPP_de_registration_timer_value_tmp
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
);
ie_Non_3GPP_de_registration_timer_value
=
std
::
optional
<
GPRS_Timer_2
>
(
...
...
@@ -809,9 +811,9 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
0x16
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI
(0x16)"
);
GPRS_Timer_2
ie_T3502_value_tmp
=
{}
;
case
kIeiGprsTimer2T3502
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI
0x%x"
,
kIeiGprsTimer2T3502
);
GPRS_Timer_2
ie_T3502_value_tmp
(
kIeiGprsTimer2T3502
)
;
decoded_size
+=
ie_T3502_value_tmp
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
);
ie_T3502_value
=
std
::
optional
<
GPRS_Timer_2
>
(
ie_T3502_value_tmp
);
...
...
src/nas/msgs/RegistrationAccept.hpp
View file @
e4f9d058
...
...
@@ -168,7 +168,6 @@ class RegistrationAccept : public NasMmPlainHeader {
ie_network_slicing_indication
;
// Optional
// TODO: Service Area List
std
::
optional
<
GPRS_Timer_3
>
ie_T3512_value
;
// Optional
std
::
optional
<
GPRS_Timer_2
>
ie_Non_3GPP_de_registration_timer_value
;
// Optional
std
::
optional
<
GPRS_Timer_2
>
ie_T3502_value
;
// Optional
...
...
src/nas/msgs/RegistrationReject.cpp
View file @
e4f9d058
...
...
@@ -154,7 +154,7 @@ int RegistrationReject::Decode(
switch
(
octet
)
{
case
kT3346Value
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x5F: T3346 Value"
);
GPRS_Timer_2
ie_T3346_value_tmp
=
{}
;
GPRS_Timer_2
ie_T3346_value_tmp
(
kT3346Value
)
;
decoded_size
+=
ie_T3346_value_tmp
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
);
ie_T3346_value
=
std
::
optional
<
GPRS_Timer_2
>
(
ie_T3346_value_tmp
);
...
...
@@ -163,7 +163,7 @@ int RegistrationReject::Decode(
}
break
;
case
kT3502Value
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x16: T3502 Value"
);
GPRS_Timer_2
ie_T3502_value_tmp
=
{}
;
GPRS_Timer_2
ie_T3502_value_tmp
(
kT3502Value
)
;
decoded_size
+=
ie_T3502_value_tmp
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
);
ie_T3502_value
=
std
::
optional
<
GPRS_Timer_2
>
(
ie_T3502_value_tmp
);
...
...
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