Commit 1987179c authored by Tien Thinh NGUYEN's avatar Tien Thinh NGUYEN

Update Release Assistance Indication

parent 017ed78b
......@@ -68,7 +68,7 @@ constexpr uint8_t kIeiReAttemptIndicator = 0x1d;
constexpr uint8_t kIeiRejectedNssaiRa = 0x11;
constexpr uint8_t kIeiRejectedNssaiDr = 0x6D;
constexpr uint8_t kIeiRejectedNssaiCuc = 0x11;
constexpr uint8_t kIeiReleaseAssistanceIndication = 0xf0;
constexpr uint8_t kIeiRequestedQosFlowDescriptions = 0x79;
constexpr uint8_t kIeiRequestedQosRules = 0x7a;
constexpr uint8_t kIeiRqTimerValue = 0x56;
......@@ -94,6 +94,7 @@ constexpr uint8_t kIeiMicoIndication = 0x0B; // B-(4 higher bits)
constexpr uint8_t kIeiNasKeySetIdentifier = 0x0C; // C-(4 higher bits)
constexpr uint8_t kIeiNon3gppNwProvidedPolicies = 0x0D; // D-(4 higher bits)
constexpr uint8_t kIeiImeisvRequest = 0x0E; // E-(4 higher bits)
constexpr uint8_t kIeiReleaseAssistanceIndication = 0x0F; // F-(4 higher bits)
constexpr uint8_t kIei5gmmCapability = 0x10;
constexpr uint8_t kIeiUeUsageSetting = 0x18;
......
......@@ -59,7 +59,7 @@
#include "Payload_Container.hpp"
#include "PayloadContainerType.hpp"
#include "Rejected_NSSAI.hpp"
#include "Release_Assistance_Indication.hpp"
#include "ReleaseAssistanceIndication.hpp"
#include "RequestType.hpp"
#include "S1UeSecurityCapability.hpp"
#include "SOR_Transparent_Container.hpp"
......
......@@ -40,11 +40,11 @@ MaPduSessionInformation::MaPduSessionInformation(uint8_t value)
MaPduSessionInformation::~MaPduSessionInformation() {}
//------------------------------------------------------------------------------
void MaPduSessionInformation::SetValue(uint8_t value) {
SetValue(value & 0x0f);
void MaPduSessionInformation::Set(uint8_t value) {
Type1NasIeFormatTv::SetValue(value & 0x0f);
}
//------------------------------------------------------------------------------
uint8_t MaPduSessionInformation::GetValue() const {
return GetValue() & 0x0f;
uint8_t MaPduSessionInformation::Get() const {
return Type1NasIeFormatTv::GetValue() & 0x0f;
}
......@@ -34,8 +34,8 @@ class MaPduSessionInformation : public Type1NasIeFormatTv {
MaPduSessionInformation(uint8_t value);
~MaPduSessionInformation();
void SetValue(uint8_t value);
uint8_t GetValue() const;
void Set(uint8_t value);
uint8_t Get() const;
private:
};
......
......@@ -19,87 +19,32 @@
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "Release_Assistance_Indication.hpp"
#include "ReleaseAssistanceIndication.hpp"
#include "logger.hpp"
using namespace nas;
//------------------------------------------------------------------------------
Release_Assistance_Indication::Release_Assistance_Indication(uint8_t iei) {
_iei = iei;
_value = 0;
}
//------------------------------------------------------------------------------
Release_Assistance_Indication::Release_Assistance_Indication(
const uint8_t iei, uint8_t value) {
_iei = iei;
_value = value;
ReleaseAssistanceIndication::ReleaseAssistanceIndication()
: Type1NasIeFormatTv(kIeiReleaseAssistanceIndication) {
SetIeName(kReleaseAssistanceIndicationIeName);
}
//------------------------------------------------------------------------------
Release_Assistance_Indication::Release_Assistance_Indication() {
_iei = 0;
_value = 0;
ReleaseAssistanceIndication::ReleaseAssistanceIndication(uint8_t value)
: Type1NasIeFormatTv(kIeiReleaseAssistanceIndication) {
SetValue(value & 0x03);
SetIeName(kReleaseAssistanceIndicationIeName);
}
//------------------------------------------------------------------------------
Release_Assistance_Indication::~Release_Assistance_Indication() {}
//------------------------------------------------------------------------------
void Release_Assistance_Indication::setValue(uint8_t value) {
_value = value;
}
//------------------------------------------------------------------------------
uint8_t Release_Assistance_Indication::getValue() {
return _value;
}
ReleaseAssistanceIndication::~ReleaseAssistanceIndication() {}
//------------------------------------------------------------------------------
int Release_Assistance_Indication::Encode(uint8_t* buf, int len) {
Logger::nas_mm().debug(
"encoding Release_Assistance_Indication iei(0x%x)", _iei);
if (len < 1) {
Logger::nas_mm().error("len is less than 1");
return 0;
}
int encoded_size = 0;
if (_iei) {
*(buf + encoded_size) = ((_iei & 0x0f) << 4) | (_value & 0x07);
encoded_size++;
} else {
*(buf + encoded_size) = _value & 0x07;
encoded_size++;
}
Logger::nas_mm().debug(
"encoded Release_Assistance_Indication len(%d)", encoded_size);
return encoded_size;
void ReleaseAssistanceIndication::Set(uint8_t value) {
Type1NasIeFormatTv::SetValue(value & 0x03);
}
//------------------------------------------------------------------------------
int Release_Assistance_Indication::Decode(
uint8_t* buf, int len, bool is_option) {
Logger::nas_mm().debug(
"decoding Release_Assistance_Indication iei(0x%x)", *buf);
int decoded_size = 0;
uint8_t octet = 0;
if (is_option) {
octet = *buf;
decoded_size++;
}
_value = 0x00;
_value = octet & 0x07;
Logger::nas_mm().debug(
"decoded Release_Assistance_Indication _value(0x%x)", _value);
Logger::nas_mm().debug(
"decoded Release_Assistance_Indication len(%d)", decoded_size);
return decoded_size;
uint8_t ReleaseAssistanceIndication::Get() const {
return (Type1NasIeFormatTv::GetValue() & 0x03);
}
......@@ -19,34 +19,27 @@
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _RELEASE_ASSISTANCE_INDICATION_H_
#define _RELEASE_ASSISTANCE_INDICATION_H_
#ifndef __Release_Assistance_Indication_H_
#define __Release_Assistance_Indication_H_
#include "Type1NasIeFormatTv.hpp"
#include <stdint.h>
constexpr auto kReleaseAssistanceIndicationIeName =
"Release Assistance Indication";
namespace nas {
class Release_Assistance_Indication {
class ReleaseAssistanceIndication : public Type1NasIeFormatTv {
public:
Release_Assistance_Indication();
Release_Assistance_Indication(uint8_t iei);
Release_Assistance_Indication(const uint8_t iei, uint8_t value);
~Release_Assistance_Indication();
int Encode(uint8_t* buf, int len);
int Decode(uint8_t* buf, int len, bool is_option);
void setValue(uint8_t value);
uint8_t getValue();
ReleaseAssistanceIndication();
ReleaseAssistanceIndication(uint8_t value);
~ReleaseAssistanceIndication();
void Set(uint8_t value);
uint8_t Get() const;
private:
uint8_t _iei;
uint8_t _value;
// uint8_t ddx_;
};
} // namespace nas
......
......@@ -165,7 +165,7 @@ void ULNASTransport::SetMaPduSessionInformation(uint8_t value) {
//------------------------------------------------------------------------------
void ULNASTransport::SetReleaseAssistanceIndication(uint8_t value) {
ie_release_assistance_indication =
std::make_optional<Release_Assistance_Indication>(0x0F, value);
std::make_optional<ReleaseAssistanceIndication>(value);
}
//------------------------------------------------------------------------------
......@@ -362,7 +362,7 @@ int ULNASTransport::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
octet = *(buf + decoded_size);
Logger::nas_mm().debug("Next IEI (0x%x)", octet);
} break;
case 0xA: {
case kIeiMaPduSessionInformation: {
Logger::nas_mm().debug("Decoding IEI (0xA)");
MaPduSessionInformation ie_ma_pdu_session_information_tmp = {};
if ((decoded_result = ie_ma_pdu_session_information_tmp.Decode(
......@@ -375,16 +375,17 @@ int ULNASTransport::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
octet = *(buf + decoded_size);
Logger::nas_mm().debug("Next IEI (0x%x)", octet);
} break;
case 0xF: {
Logger::nas_mm().debug("Decoding IEI (0xF)");
Release_Assistance_Indication ie_release_assistance_indication_tmp = {};
case kIeiReleaseAssistanceIndication: {
Logger::nas_mm().debug(
"Decoding IEI 0x%x", kIeiReleaseAssistanceIndication);
ReleaseAssistanceIndication ie_release_assistance_indication_tmp = {};
if ((decoded_result = ie_release_assistance_indication_tmp.Decode(
buf + decoded_size, len - decoded_size, true)) ==
KEncodeDecodeError)
return decoded_result;
decoded_size += decoded_result;
ie_release_assistance_indication =
std::optional<Release_Assistance_Indication>(
std::optional<ReleaseAssistanceIndication>(
ie_release_assistance_indication_tmp);
octet = *(buf + decoded_size);
Logger::nas_mm().debug("Next IEI (0x%x)", octet);
......@@ -420,7 +421,7 @@ int ULNASTransport::Decode(NasMmPlainHeader* header, uint8_t* buf, int len) {
octet = *(buf + decoded_size);
Logger::nas_mm().debug("Next IEI (0x%x)", octet);
} break;
case 0x22: {
case kIeiSNssai: {
Logger::nas_mm().debug("Decoding IEI (0x22)");
auto s_nssai_ie = std::optional<uint8_t>(kIeiSNssai);
S_NSSAI ie_s_nssai_tmp(s_nssai_ie);
......
......@@ -76,7 +76,7 @@ class ULNASTransport : public NasMmPlainHeader {
std::optional<AdditionalInformation> ie_additional_information; // Optional
std::optional<MaPduSessionInformation>
ie_ma_pdu_session_information; // Optional
std::optional<Release_Assistance_Indication>
std::optional<ReleaseAssistanceIndication>
ie_release_assistance_indication; // Optional
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment