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

Update Service Request

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