Commit 9e1bf1e5 authored by Tien Thinh NGUYEN's avatar Tien Thinh NGUYEN

Update Service Request

parent 18d41c6b
...@@ -24,8 +24,6 @@ ...@@ -24,8 +24,6 @@
#include "Type4NasIe.hpp" #include "Type4NasIe.hpp"
#include <stdint.h>
constexpr uint8_t kAllowedPDUSessionStatusMinimumLength = 4; constexpr uint8_t kAllowedPDUSessionStatusMinimumLength = 4;
constexpr uint8_t kAllowedPDUSessionStatusMaximumLength = 34; constexpr uint8_t kAllowedPDUSessionStatusMaximumLength = 34;
constexpr auto kAllowedPDUSessionStatusIeName = "Allowed PDU Session Status"; constexpr auto kAllowedPDUSessionStatusIeName = "Allowed PDU Session Status";
......
...@@ -23,13 +23,6 @@ ...@@ -23,13 +23,6 @@
#define _NAS_MESSAGE_CONTAINER_H_ #define _NAS_MESSAGE_CONTAINER_H_
#include "Type6NasIe.hpp" #include "Type6NasIe.hpp"
#include <stdint.h>
extern "C" {
#include "TLVDecoder.h"
#include "TLVEncoder.h"
#include "bstrlib.h"
}
constexpr uint8_t kNasMessageContainerMinimumLength = 3; constexpr uint8_t kNasMessageContainerMinimumLength = 3;
constexpr uint32_t kNasMessageContainerMaximumLength = 65535; constexpr uint32_t kNasMessageContainerMaximumLength = 65535;
......
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
#define _PDU_SESSION_STATUS_H_ #define _PDU_SESSION_STATUS_H_
#include "Type4NasIe.hpp" #include "Type4NasIe.hpp"
#include <stdint.h>
constexpr uint8_t kPduSessionStatusMinimumLength = 4; constexpr uint8_t kPduSessionStatusMinimumLength = 4;
constexpr uint8_t kPduSessionStatusMaximumLength = 34; constexpr uint8_t kPduSessionStatusMaximumLength = 34;
......
...@@ -19,60 +19,40 @@ ...@@ -19,60 +19,40 @@
* contact@openairinterface.org * contact@openairinterface.org
*/ */
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "ServiceType.hpp" #include "ServiceType.hpp"
using namespace nas; using namespace nas;
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
ServiceType::ServiceType() {} ServiceType::ServiceType() : Type1NasIe(true), service_type_value_() {
SetIeName(kServiceTypeIeName);
}
//------------------------------------------------------------------------------
ServiceType::ServiceType(uint8_t value) : Type1NasIe(true) {
service_type_value_ = value & 0x0f;
Type1NasIe::SetValue(service_type_value_);
}
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
ServiceType::~ServiceType() {} ServiceType::~ServiceType() {}
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
ServiceType::ServiceType(uint8_t iei, uint8_t stp) { void ServiceType::SetValue(uint8_t value) {
_iei = iei; service_type_value_ = value & 0x0f;
value = stp; Type1NasIe::SetValue(service_type_value_);
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
int ServiceType::Encode(uint8_t* buf, int len) { void ServiceType::GetValue(uint8_t& value) {
if (len < 1) return -1; value = service_type_value_;
int encoded_size = 0;
if (_iei) {
*buf = _iei;
encoded_size++;
*(buf + encoded_size) = value;
encoded_size++;
return encoded_size;
} else {
*buf = 0x00 | ((value & 0x0f) << 4);
return 0;
}
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
int ServiceType::Decode(uint8_t* buf, int len, bool is_optional, bool is_high) { void ServiceType::SetValue() {
if (len < 1) return -1; Type1NasIe::SetValue(service_type_value_ & 0x0f);
if (is_optional) {
_iei = *buf;
} else {
if (is_high)
value = ((*buf) & 0xf0) >> 4;
else
value = (*buf) & 0x0f;
return 0;
}
return 0;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
uint8_t ServiceType::getValue() { void ServiceType::GetValue() {
return value; service_type_value_ = value_ & 0x0f;
} }
...@@ -19,34 +19,31 @@ ...@@ -19,34 +19,31 @@
* contact@openairinterface.org * contact@openairinterface.org
*/ */
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _SERVICE_TYPE_H_ #ifndef _SERVICE_TYPE_H_
#define _SERVICE_TYPE_H_ #define _SERVICE_TYPE_H_
#include <stdint.h> #include "Type1NasIe.hpp"
constexpr auto kServiceTypeIeName = "Service Type";
namespace nas { namespace nas {
class ServiceType { class ServiceType : public Type1NasIe {
public: public:
ServiceType(); ServiceType();
ServiceType(uint8_t value);
~ServiceType(); ~ServiceType();
ServiceType(uint8_t iei, uint8_t stp);
public: // int Encode(uint8_t* buf, int len);
int Encode(uint8_t* buf, int len); // int Decode(uint8_t* nuf, int len, bool is_iei, bool is_high);
int Decode(uint8_t* nuf, int len, bool is_optional, bool is_high);
uint8_t getValue(); void SetValue(uint8_t value);
void GetValue(uint8_t& value);
private: private:
uint8_t _iei; void SetValue() override;
uint8_t value; void GetValue() override;
uint8_t service_type_value_;
}; };
} // namespace nas } // namespace nas
......
...@@ -24,8 +24,6 @@ ...@@ -24,8 +24,6 @@
#include "Type4NasIe.hpp" #include "Type4NasIe.hpp"
#include <stdint.h>
constexpr uint8_t kUplinkDataStatusMinimumLength = 4; constexpr uint8_t kUplinkDataStatusMinimumLength = 4;
constexpr uint8_t kUplinkDataStatusMaximumLength = 34; constexpr uint8_t kUplinkDataStatusMaximumLength = 34;
constexpr auto kUplinkDataStatusIeName = "Uplink Data Status"; constexpr auto kUplinkDataStatusIeName = "Uplink Data Status";
......
...@@ -37,7 +37,7 @@ class SecurityModeReject : public NasMmPlainHeader { ...@@ -37,7 +37,7 @@ class SecurityModeReject : public NasMmPlainHeader {
int Decode(uint8_t* buf, int len); int Decode(uint8_t* buf, int len);
void Set5gmmCause(uint8_t value); void Set5gmmCause(uint8_t value);
// Get // TODO: Get
public: public:
_5gmmCause ie_5gmm_cause; // Mandatory _5gmmCause ie_5gmm_cause; // Mandatory
......
This diff is collapsed.
...@@ -19,13 +19,6 @@ ...@@ -19,13 +19,6 @@
* contact@openairinterface.org * contact@openairinterface.org
*/ */
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _SERVICE_REQUEST_H_ #ifndef _SERVICE_REQUEST_H_
#define _SERVICE_REQUEST_H_ #define _SERVICE_REQUEST_H_
...@@ -34,45 +27,49 @@ ...@@ -34,45 +27,49 @@
#include "bstrlib.h" #include "bstrlib.h"
#include "NasIeHeader.hpp" #include "NasIeHeader.hpp"
using namespace std;
namespace nas { namespace nas {
class ServiceRequest { class ServiceRequest : public NasMmPlainHeader {
public: public:
ServiceRequest(); ServiceRequest();
~ServiceRequest(); ~ServiceRequest();
public:
void SetHeader(uint8_t security_header_type); void SetHeader(uint8_t security_header_type);
void SetNgKsi(uint8_t tsc, uint8_t key_set_id);
void setServiceType(uint8_t stp);
void Set5gSTmsi(uint16_t amfSetId, uint8_t amfPointer, string tmsi);
void setUplink_data_status(uint16_t value);
void setPDU_session_status(uint16_t value);
void setAllowed_PDU_Session_Status(uint16_t value);
void SetNasMessageContainer(bstring value);
int Encode(uint8_t* buf, int len);
public: int Encode(uint8_t* buf, int len);
int Decode(NasMmPlainHeader* header, uint8_t* buf, int len); int Decode(NasMmPlainHeader* header, uint8_t* buf, int len);
void SetNgKsi(uint8_t tsc, uint8_t key_set_id);
bool getngKSI(uint8_t& ng_ksi); bool getngKSI(uint8_t& ng_ksi);
void setServiceType(uint8_t value);
uint8_t getServiceType(); uint8_t getServiceType();
void Set5gSTmsi(uint16_t amfSetId, uint8_t amfPointer, string tmsi);
bool Get5gSTmsi(uint16_t& amfSetId, uint8_t& amfPointer, string& tmsi); bool Get5gSTmsi(uint16_t& amfSetId, uint8_t& amfPointer, string& tmsi);
void setUplink_data_status(uint16_t value);
uint16_t getUplinkDataStatus(); uint16_t getUplinkDataStatus();
void setPDU_session_status(uint16_t value);
uint16_t getPduSessionStatus(); uint16_t getPduSessionStatus();
void setAllowed_PDU_Session_Status(uint16_t value);
uint16_t getAllowedPduSessionStatus(); uint16_t getAllowedPduSessionStatus();
void SetNasMessageContainer(bstring value);
bool GetNasMessageContainer(bstring& nas); bool GetNasMessageContainer(bstring& nas);
private: private:
NasMmPlainHeader* plain_header; NasKeySetIdentifier ie_ngKSI; // Mandatory
NasKeySetIdentifier* ie_ngKSI; ServiceType ie_service_type; // Mandatory
ServiceType* ie_service_type; _5GSMobileIdentity ie_5g_s_tmsi; // Mandatory
_5GSMobileIdentity* ie_5g_s_tmsi;
UplinkDataStatus* ie_uplink_data_status; std::optional<UplinkDataStatus> ie_uplink_data_status; // Optional
PDUSessionStatus* ie_PDU_session_status; std::optional<PDUSessionStatus> ie_PDU_session_status; // Optional
AllowedPDUSessionStatus* ie_allowed_PDU_session_status; std::optional<AllowedPDUSessionStatus>
NasMessageContainer* ie_nas_message_container; ie_allowed_PDU_session_status; // Optional
std::optional<NasMessageContainer> ie_nas_message_container; // Optional
}; };
} // namespace nas } // namespace nas
......
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