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