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
c6446db8
Commit
c6446db8
authored
Jan 12, 2023
by
Tien Thinh NGUYEN
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update GPRS Timer 3
parent
b2d3581a
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
101 additions
and
96 deletions
+101
-96
src/nas/common/Ie_Const.hpp
src/nas/common/Ie_Const.hpp
+5
-0
src/nas/ies/GPRS_Timer_3.cpp
src/nas/ies/GPRS_Timer_3.cpp
+57
-61
src/nas/ies/GPRS_Timer_3.hpp
src/nas/ies/GPRS_Timer_3.hpp
+14
-17
src/nas/ies/NasIe.hpp
src/nas/ies/NasIe.hpp
+5
-0
src/nas/msgs/DLNASTransport.cpp
src/nas/msgs/DLNASTransport.cpp
+1
-1
src/nas/msgs/RegistrationAccept.cpp
src/nas/msgs/RegistrationAccept.cpp
+19
-17
No files found.
src/nas/common/Ie_Const.hpp
View file @
c6446db8
...
...
@@ -119,6 +119,11 @@ constexpr uint8_t kT3346Value = 0x5f;
constexpr
uint8_t
kIeiEpsBearerContextStatus
=
0x60
;
constexpr
uint8_t
kIeiRejectedNssaiRr
=
0x69
;
constexpr
uint8_t
kIeiGprsTimer3T3324
=
0x6A
;
constexpr
uint8_t
kIeiGprsTimer3T3348
=
0x6B
;
constexpr
uint8_t
kIeiGprsTimer3T3447
=
0x6C
;
constexpr
uint8_t
kIeiGprsTimer3T3512
=
0x5E
;
constexpr
uint8_t
kIeiGprsTimer3BackOffTimer
=
0x37
;
constexpr
uint8_t
kIeiEpsNasMessageContainer
=
0x70
;
constexpr
uint8_t
kIeiNasMessageContainer
=
0x71
;
...
...
src/nas/ies/GPRS_Timer_3.cpp
View file @
c6446db8
...
...
@@ -19,98 +19,94 @@
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "GPRS_Timer_3.hpp"
#include "logger.hpp"
using
namespace
nas
;
//------------------------------------------------------------------------------
GPRS_Timer_3
::
GPRS_Timer_3
(
uint8_t
iei
)
{
_iei
=
iei
;
UNIT
=
0
;
_value
=
0
;
GPRS_Timer_3
::
GPRS_Timer_3
(
uint8_t
iei
)
:
Type4NasIe
(
iei
),
unit_
(),
value_
()
{
SetLengthIndicator
(
1
);
SetIeName
(
kGprsTimer3IeName
);
}
//------------------------------------------------------------------------------
GPRS_Timer_3
::
GPRS_Timer_3
(
const
uint8_t
iei
,
uint8_t
unit
,
uint8_t
value
)
{
_iei
=
iei
;
UNIT
=
unit
;
_value
=
value
;
GPRS_Timer_3
::
GPRS_Timer_3
(
const
uint8_t
iei
,
uint8_t
unit
,
uint8_t
value
)
:
Type4NasIe
(
iei
)
{
unit_
=
unit
;
value_
=
value
;
SetLengthIndicator
(
1
);
SetIeName
(
kGprsTimer3IeName
);
}
//------------------------------------------------------------------------------
GPRS_Timer_3
::
GPRS_Timer_3
()
:
_iei
(),
UNIT
(),
_value
()
{}
//------------------------------------------------------------------------------
GPRS_Timer_3
::~
GPRS_Timer_3
()
{}
//------------------------------------------------------------------------------
void
GPRS_Timer_3
::
setValue
(
uint8_t
unit
,
uint8_t
value
)
{
UNIT
=
unit
;
_value
=
value
;
unit_
=
unit
;
value_
=
value
;
}
//------------------------------------------------------------------------------
uint8_t
GPRS_Timer_3
::
getUnit
()
{
return
UNIT
;
uint8_t
GPRS_Timer_3
::
getUnit
()
const
{
return
unit_
;
}
//------------------------------------------------------------------------------
uint8_t
GPRS_Timer_3
::
getValue
()
{
return
_value
;
uint8_t
GPRS_Timer_3
::
getValue
()
const
{
return
value_
;
}
//------------------------------------------------------------------------------
int
GPRS_Timer_3
::
Encode
(
uint8_t
*
buf
,
int
len
)
{
Logger
::
nas_mm
().
debug
(
"Encoding GPRS_Timer_3 IEI (0x%x)"
,
_iei
);
if
(
len
<
3
)
{
Logger
::
nas_mm
().
error
(
"len is less than 3"
);
return
0
;
Logger
::
nas_mm
().
debug
(
"Encoding %s"
,
GetIeName
().
c_str
());
int
ie_len
=
GetIeLength
();
if
(
len
<
ie_len
)
{
Logger
::
nas_mm
().
error
(
"Len is less than %d"
,
ie_len
);
return
KEncodeDecodeError
;
}
uint8_t
octet
=
0
;
int
encoded_size
=
0
;
octet
=
(
UNIT
<<
5
)
|
(
_value
&
0x1f
);
if
(
_iei
)
{
*
(
buf
+
encoded_size
)
=
_iei
;
encoded_size
++
;
*
(
buf
+
encoded_size
)
=
1
;
encoded_size
++
;
*
(
buf
+
encoded_size
)
=
octet
;
encoded_size
++
;
Logger
::
nas_mm
().
debug
(
"Encoded GPRS_Timer_3 content (0x%x)"
,
octet
);
}
else
{
*
(
buf
+
encoded_size
)
=
1
;
encoded_size
++
;
*
(
buf
+
encoded_size
)
=
octet
;
encoded_size
++
;
}
Logger
::
nas_mm
().
debug
(
"Encoded GPRS_Timer_3 len (%d)"
,
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
;
// Octet 3
uint8_t
octet
=
(
unit_
<<
5
)
|
(
value_
&
0x1f
);
ENCODE_U8
(
buf
+
encoded_size
,
octet
,
encoded_size
);
Logger
::
nas_mm
().
debug
(
"Encoded %s, len (%d)"
,
GetIeName
().
c_str
(),
encoded_size
);
return
encoded_size
;
}
//------------------------------------------------------------------------------
int
GPRS_Timer_3
::
Decode
(
uint8_t
*
buf
,
int
len
,
bool
is_
option
)
{
Logger
::
nas_mm
().
debug
(
"Decoding GPRS_Timer_3 IEI (0x%x)"
,
*
buf
);
int
decoded_size
=
0
;
if
(
is_option
)
{
_iei
=
*
buf
;
decoded_size
++
;
int
GPRS_Timer_3
::
Decode
(
uint8_t
*
buf
,
int
len
,
bool
is_
iei
)
{
if
(
len
<
kGprsTimer3Length
)
{
Logger
::
nas_mm
().
error
(
"Buffer length is less than the minimum length of this IE (%d octet)"
,
kGprsTimer3Length
)
;
return
KEncodeDecodeError
;
}
uint8_t
octet
=
0
;
// length = *(buf + decoded_size);
decoded_size
++
;
octet
=
*
(
buf
+
decoded_size
);
decoded_size
++
;
UNIT
=
(
octet
&
0xe0
)
>>
5
;
_value
=
octet
&
0x1f
;
Logger
::
nas_mm
().
debug
(
"Decoded GPRS_Timer_3 content (0x%x)"
,
octet
);
Logger
::
nas_mm
().
debug
(
"Decoded GPRS_Timer_3 len (%d)"
,
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
,
octet
,
decoded_size
);
unit_
=
(
octet
&
0xe0
)
>>
5
;
value_
=
octet
&
0x1f
;
Logger
::
nas_mm
().
debug
(
"Decoded %s, Unit 0x%x, Value 0x%x"
,
GetIeName
().
c_str
(),
unit_
,
value_
);
Logger
::
nas_mm
().
debug
(
"Decoded %s, len (%d)"
,
GetIeName
().
c_str
(),
decoded_size
);
return
decoded_size
;
}
src/nas/ies/GPRS_Timer_3.hpp
View file @
c6446db8
...
...
@@ -19,36 +19,33 @@
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef __GPRS_Timer_3_H_
#define __GPRS_Timer_3_H_
#ifndef _GPRS_TIMER_3_H_
#define _GPRS_TIMER_3_H_
#include "Type4NasIe.hpp"
#include <stdint.h>
constexpr
uint8_t
kGprsTimer3Length
=
3
;
constexpr
auto
kGprsTimer3IeName
=
"GPRS Timer 3"
;
namespace
nas
{
class
GPRS_Timer_3
{
class
GPRS_Timer_3
:
public
Type4NasIe
{
public:
GPRS_Timer_3
();
GPRS_Timer_3
(
uint8_t
iei
);
GPRS_Timer_3
(
const
uint8_t
iei
,
uint8_t
unit
,
uint8_t
value
);
GPRS_Timer_3
(
uint8_t
iei
,
uint8_t
unit
,
uint8_t
value
);
~
GPRS_Timer_3
();
int
Encode
(
uint8_t
*
buf
,
int
len
);
int
Decode
(
uint8_t
*
buf
,
int
len
,
bool
is_option
);
void
setValue
(
uint8_t
unit
,
uint8_t
value
);
uint8_t
getValue
();
uint8_t
getUnit
();
uint8_t
getValue
()
const
;
uint8_t
getUnit
()
const
;
private:
uint8_t
_iei
;
uint8_t
UNIT
;
uint8_t
_value
;
uint8_t
unit_
;
uint8_t
value_
;
};
}
// namespace nas
...
...
src/nas/ies/NasIe.hpp
View file @
c6446db8
...
...
@@ -22,6 +22,11 @@
#ifndef _NAS_IE_H_
#define _NAS_IE_H_
#include "3gpp_24.501.hpp"
#include "common_defs.h"
#include "Ie_Const.hpp"
#include "logger.hpp"
#include <optional>
namespace
nas
{
...
...
src/nas/msgs/DLNASTransport.cpp
View file @
c6446db8
...
...
@@ -219,7 +219,7 @@ int DLNASTransport::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
}
break
;
case
0x37
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x37)"
);
ie_back_off_timer_value
=
new
GPRS_Timer_3
();
ie_back_off_timer_value
=
new
GPRS_Timer_3
(
kIeiGprsTimer3BackOffTimer
);
decoded_size
+=
ie_back_off_timer_value
->
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
);
octet
=
*
(
buf
+
decoded_size
);
...
...
src/nas/msgs/RegistrationAccept.cpp
View file @
c6446db8
...
...
@@ -202,13 +202,14 @@ void RegistrationAccept::setLADN_Information(std::vector<bstring> ladnValue) {
//------------------------------------------------------------------------------
void
RegistrationAccept
::
setNetwork_Slicing_Indication
(
bool
dcni
,
bool
nssci
)
{
ie_network_slicing_indication
=
std
::
make_optional
<
NetworkSlicingIndication
>
(
0x09
,
dcni
,
nssci
);
ie_network_slicing_indication
=
std
::
make_optional
<
NetworkSlicingIndication
>
(
kIeiNetworkSlicingIndication
,
dcni
,
nssci
);
}
//------------------------------------------------------------------------------
void
RegistrationAccept
::
setT3512_Value
(
uint8_t
unit
,
uint8_t
value
)
{
ie_T3512_value
=
std
::
make_optional
<
GPRS_Timer_3
>
(
0x5E
,
unit
,
value
);
ie_T3512_value
=
std
::
make_optional
<
GPRS_Timer_3
>
(
kIeiGprsTimer3T3512
,
unit
,
value
);
}
//------------------------------------------------------------------------------
...
...
@@ -661,8 +662,9 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
0x9
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI (0x9)"
);
case
kIeiNetworkSlicingIndication
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI 0x%x9"
,
kIeiNetworkSlicingIndication
);
NetworkSlicingIndication
ie_network_slicing_indication_tmp
=
{};
decoded_size
+=
ie_network_slicing_indication_tmp
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
);
...
...
@@ -788,9 +790,9 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
Logger::nas_mm().debug("Next IEI 0x%x", octet);
} break;
*/
case
0x5E
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI
(0x5E)"
);
GPRS_Timer_3
ie_T3512_value_tmp
=
{}
;
case
kIeiGprsTimer3T3512
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI
0x%x"
,
kIeiGprsTimer3T3512
);
GPRS_Timer_3
ie_T3512_value_tmp
(
kIeiGprsTimer3T3512
)
;
decoded_size
+=
ie_T3512_value_tmp
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
);
ie_T3512_value
=
std
::
optional
<
GPRS_Timer_3
>
(
ie_T3512_value_tmp
);
...
...
@@ -865,27 +867,27 @@ int RegistrationAccept::Decode(uint8_t* buf, int len) {
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
0x6C
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI
(0x6C)"
);
GPRS_Timer_3
ie_T3447_value_tmp
=
{}
;
case
kIeiGprsTimer3T3447
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI
0x%x"
,
kIeiGprsTimer3T3447
);
GPRS_Timer_3
ie_T3447_value_tmp
(
kIeiGprsTimer3T3447
)
;
decoded_size
+=
ie_T3447_value_tmp
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
);
ie_T3447_value
=
std
::
optional
<
GPRS_Timer_3
>
(
ie_T3447_value_tmp
);
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
0x6B
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI
(0x6B)"
);
GPRS_Timer_3
ie_T3448_value_tmp
=
{}
;
case
kIeiGprsTimer3T3348
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI
0x%x"
,
kIeiGprsTimer3T3348
);
GPRS_Timer_3
ie_T3448_value_tmp
(
kIeiGprsTimer3T3348
)
;
decoded_size
+=
ie_T3448_value_tmp
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
);
ie_T3448_value
=
std
::
optional
<
GPRS_Timer_3
>
(
ie_T3448_value_tmp
);
octet
=
*
(
buf
+
decoded_size
);
Logger
::
nas_mm
().
debug
(
"Next IEI (0x%x)"
,
octet
);
}
break
;
case
0x6A
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI
(0x6A)"
);
GPRS_Timer_3
ie_T3324_value_tmp
=
{}
;
case
kIeiGprsTimer3T3324
:
{
Logger
::
nas_mm
().
debug
(
"Decoding IEI
0x%x"
,
kIeiGprsTimer3T3324
);
GPRS_Timer_3
ie_T3324_value_tmp
(
kIeiGprsTimer3T3324
)
;
decoded_size
+=
ie_T3324_value_tmp
.
Decode
(
buf
+
decoded_size
,
len
-
decoded_size
,
true
);
ie_T3324_value
=
std
::
optional
<
GPRS_Timer_3
>
(
ie_T3324_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