Commit 4e07d96d authored by Tien-Thinh Nguyen's avatar Tien-Thinh Nguyen

Add header/format for NGAP

parent 933be385
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "AMF-UE-NGAP-ID.hpp" #include "AMF-UE-NGAP-ID.hpp"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
AMF_UE_NGAP_ID::AMF_UE_NGAP_ID(){} //------------------------------------------------------------------------------
AMF_UE_NGAP_ID::AMF_UE_NGAP_ID() {
}
AMF_UE_NGAP_ID::~AMF_UE_NGAP_ID(){} //------------------------------------------------------------------------------
AMF_UE_NGAP_ID::~AMF_UE_NGAP_ID() {
}
void AMF_UE_NGAP_ID::setAMF_UE_NGAP_ID(unsigned long m_amfUeNgapId) //------------------------------------------------------------------------------
{ void AMF_UE_NGAP_ID::setAMF_UE_NGAP_ID(unsigned long m_amfUeNgapId) {
amfUeNgapId = m_amfUeNgapId; amfUeNgapId = m_amfUeNgapId;
} }
unsigned long AMF_UE_NGAP_ID::getAMF_UE_NGAP_ID()
{ //------------------------------------------------------------------------------
unsigned long AMF_UE_NGAP_ID::getAMF_UE_NGAP_ID() {
return amfUeNgapId; return amfUeNgapId;
} }
bool AMF_UE_NGAP_ID::encode2AMF_UE_NGAP_ID(Ngap_AMF_UE_NGAP_ID_t &amfuengapid) //------------------------------------------------------------------------------
{ bool AMF_UE_NGAP_ID::encode2AMF_UE_NGAP_ID(Ngap_AMF_UE_NGAP_ID_t &amfuengapid) {
amfuengapid.size = 5; amfuengapid.size = 5;
amfuengapid.buf = (uint8_t *)calloc(1,amfuengapid.size); amfuengapid.buf = (uint8_t*) calloc(1, amfuengapid.size);
if(!amfuengapid.buf ) return false; if (!amfuengapid.buf)
return false;
for(int i=0;i<amfuengapid.size;i++) for (int i = 0; i < amfuengapid.size; i++) {
{ amfuengapid.buf[i] = (amfUeNgapId & (0xff00000000 >> i * 8)) >> ((amfuengapid.size - i - 1) * 8);
amfuengapid.buf[i] = (amfUeNgapId & (0xff00000000>>i*8))>>((amfuengapid.size-i-1)*8);
} }
return true; return true;
} }
bool AMF_UE_NGAP_ID::decodefromAMF_UE_NGAP_ID(Ngap_AMF_UE_NGAP_ID_t &amfuengapid)
{ //------------------------------------------------------------------------------
if(!amfuengapid.buf) return false; bool AMF_UE_NGAP_ID::decodefromAMF_UE_NGAP_ID(Ngap_AMF_UE_NGAP_ID_t &amfuengapid) {
if (!amfuengapid.buf)
return false;
amfUeNgapId = 0; amfUeNgapId = 0;
for(int i=0;i<amfuengapid.size;i++) for (int i = 0; i < amfuengapid.size; i++) {
{ amfUeNgapId = amfUeNgapId << 8;
amfUeNgapId = amfUeNgapId<<8;
amfUeNgapId |= amfuengapid.buf[i]; amfUeNgapId |= amfuengapid.buf[i];
} }
return true; return true;
}
} }
}
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _AMF_UE_NGAP_ID_H_ #ifndef _AMF_UE_NGAP_ID_H_
#define _AMF_UE_NGAP_ID_H_ #define _AMF_UE_NGAP_ID_H_
extern "C"{ extern "C" {
#include "Ngap_AMF-UE-NGAP-ID.h" #include "Ngap_AMF-UE-NGAP-ID.h"
} }
namespace ngap{ namespace ngap {
class AMF_UE_NGAP_ID{ class AMF_UE_NGAP_ID {
public: public:
AMF_UE_NGAP_ID(); AMF_UE_NGAP_ID();
virtual ~AMF_UE_NGAP_ID(); virtual ~AMF_UE_NGAP_ID();
...@@ -15,8 +43,8 @@ namespace ngap{ ...@@ -15,8 +43,8 @@ namespace ngap{
void setAMF_UE_NGAP_ID(unsigned long); void setAMF_UE_NGAP_ID(unsigned long);
unsigned long getAMF_UE_NGAP_ID(); unsigned long getAMF_UE_NGAP_ID();
bool encode2AMF_UE_NGAP_ID(Ngap_AMF_UE_NGAP_ID_t &); bool encode2AMF_UE_NGAP_ID(Ngap_AMF_UE_NGAP_ID_t&);
bool decodefromAMF_UE_NGAP_ID(Ngap_AMF_UE_NGAP_ID_t &); bool decodefromAMF_UE_NGAP_ID(Ngap_AMF_UE_NGAP_ID_t&);
private: private:
unsigned long amfUeNgapId; unsigned long amfUeNgapId;
}; };
......
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "AMFName.hpp" #include "AMFName.hpp"
extern "C"{ extern "C" {
#include "OCTET_STRING.h" #include "OCTET_STRING.h"
} }
#include <iostream> #include <iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
AmfName::AmfName() //------------------------------------------------------------------------------
{ AmfName::AmfName() {
amfname = NULL; amfname = NULL;
} }
AmfName::~AmfName()
{ //------------------------------------------------------------------------------
AmfName::~AmfName() {
free(amfname); free(amfname);
amfname = NULL; amfname = NULL;
} }
void AmfName::setValue(const std::string m_amfName) //------------------------------------------------------------------------------
{ void AmfName::setValue(const std::string m_amfName) {
if(amfname) if (amfname) {
{
free(amfname); free(amfname);
amfname = NULL; amfname = NULL;
} }
amfname = (char *)calloc(1,m_amfName.size()+1); amfname = (char*) calloc(1, m_amfName.size() + 1);
memcpy(amfname, m_amfName.c_str(), m_amfName.size()); memcpy(amfname, m_amfName.c_str(), m_amfName.size());
amfname[m_amfName.size()] = '\0'; amfname[m_amfName.size()] = '\0';
}
} //------------------------------------------------------------------------------
void AmfName::getValue(std::string &m_amfName) void AmfName::getValue(std::string &m_amfName) {
{
m_amfName = amfname; m_amfName = amfname;
} }
bool AmfName::encode2AmfName(Ngap_AMFName_t *amfNameIe)
{ //------------------------------------------------------------------------------
if(OCTET_STRING_fromBuf (amfNameIe, amfname, strlen(amfname)) < 0) return false; bool AmfName::encode2AmfName(Ngap_AMFName_t *amfNameIe) {
if (OCTET_STRING_fromBuf(amfNameIe, amfname, strlen(amfname)) < 0)
return false;
return true; return true;
} }
bool AmfName::decodefromAmfName(Ngap_AMFName_t * pdu)
{ //------------------------------------------------------------------------------
if(!pdu->buf) return false; bool AmfName::decodefromAmfName(Ngap_AMFName_t *pdu) {
amfname = (char *)pdu->buf; if (!pdu->buf)
return false;
amfname = (char*) pdu->buf;
return true; return true;
} }
} }
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _AMFNAME_H_ #ifndef _AMFNAME_H_
#define _AMFNAME_H_ #define _AMFNAME_H_
#include <string> #include <string>
extern "C"{ extern "C" {
#include "Ngap_AMFName.h" #include "Ngap_AMFName.h"
} }
namespace ngap{ namespace ngap {
class AmfName{ class AmfName {
public: public:
AmfName(); AmfName();
virtual ~AmfName(); virtual ~AmfName();
bool encode2AmfName(Ngap_AMFName_t *); bool encode2AmfName(Ngap_AMFName_t*);
bool decodefromAmfName(Ngap_AMFName_t *); bool decodefromAmfName(Ngap_AMFName_t*);
void setValue(const std::string m_amfName); void setValue(const std::string m_amfName);
void getValue(std::string &); void getValue(std::string&);
private: private:
char* amfname; char *amfname;
}; };
} }
#endif #endif
......
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "AMFPointer.hpp" #include "AMFPointer.hpp"
#include "String2Value.hpp" #include "String2Value.hpp"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
AMFPointer::AMFPointer(){} //------------------------------------------------------------------------------
AMFPointer::AMFPointer() {
}
AMFPointer::~AMFPointer(){} //------------------------------------------------------------------------------
AMFPointer::~AMFPointer() {
}
void AMFPointer::setAMFPointer(const std::string charPointer) //------------------------------------------------------------------------------
{ void AMFPointer::setAMFPointer(const std::string charPointer) {
pointer = fromString<int>(charPointer); pointer = fromString<int>(charPointer);
} }
void AMFPointer::getAMFPointer(std::string &charPointer)
{ //------------------------------------------------------------------------------
void AMFPointer::getAMFPointer(std::string &charPointer) {
charPointer = to_string(pointer); charPointer = to_string(pointer);
} }
bool AMFPointer::encode2bitstring(Ngap_AMFPointer_t &amfpointer) //------------------------------------------------------------------------------
{ bool AMFPointer::encode2bitstring(Ngap_AMFPointer_t &amfpointer) {
amfpointer.size = 1; amfpointer.size = 1;
uint8_t *buffer = (uint8_t *)calloc(1,sizeof(uint8_t)); uint8_t *buffer = (uint8_t*) calloc(1, sizeof(uint8_t));
if(!buffer) return false; if (!buffer)
*buffer =((pointer & 0x3f)<<2); return false;
*buffer = ((pointer & 0x3f) << 2);
amfpointer.buf = buffer; amfpointer.buf = buffer;
amfpointer.bits_unused = 2; amfpointer.bits_unused = 2;
return true; return true;
} }
bool AMFPointer::decodefrombitstring(Ngap_AMFPointer_t &amfpointer)
{ //------------------------------------------------------------------------------
if(!amfpointer.buf) return false; bool AMFPointer::decodefrombitstring(Ngap_AMFPointer_t &amfpointer) {
pointer = (amfpointer.buf[0] & 0xfc)>>2;//1111 1100 if (!amfpointer.buf)
return false;
pointer = (amfpointer.buf[0] & 0xfc) >> 2; //1111 1100
return true; return true;
} }
} }
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _AMFPOINTER_H_ #ifndef _AMFPOINTER_H_
#define _AMFPOINTER_H_ #define _AMFPOINTER_H_
#include <string> #include <string>
extern "C"{ extern "C" {
#include "Ngap_AMFPointer.h" #include "Ngap_AMFPointer.h"
} }
namespace ngap{ namespace ngap {
class AMFPointer{ class AMFPointer {
public: public:
AMFPointer(); AMFPointer();
virtual ~AMFPointer(); virtual ~AMFPointer();
void setAMFPointer(const std::string); void setAMFPointer(const std::string);
void getAMFPointer(std::string &); void getAMFPointer(std::string&);
bool encode2bitstring(Ngap_AMFPointer_t &); bool encode2bitstring(Ngap_AMFPointer_t&);
bool decodefrombitstring(Ngap_AMFPointer_t &); bool decodefrombitstring(Ngap_AMFPointer_t&);
private: private:
uint8_t pointer; uint8_t pointer;
}; };
......
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "AMFRegionID.hpp" #include "AMFRegionID.hpp"
#include "String2Value.hpp" #include "String2Value.hpp"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
AMFRegionID::AMFRegionID(){} //------------------------------------------------------------------------------
AMFRegionID::AMFRegionID() {
}
AMFRegionID::~AMFRegionID(){} //------------------------------------------------------------------------------
AMFRegionID::~AMFRegionID() {
}
void AMFRegionID::setAMFRegionID(const std::string charid) //------------------------------------------------------------------------------
{ void AMFRegionID::setAMFRegionID(const std::string charid) {
regionid = fromString<int>(charid); regionid = fromString<int>(charid);
} }
void AMFRegionID::getAMFRegionID(std::string & charid)
{ //------------------------------------------------------------------------------
void AMFRegionID::getAMFRegionID(std::string &charid) {
charid = to_string(regionid); charid = to_string(regionid);
} }
bool AMFRegionID::encode2bitstring(Ngap_AMFRegionID_t &amfregionid) //------------------------------------------------------------------------------
{ bool AMFRegionID::encode2bitstring(Ngap_AMFRegionID_t &amfregionid) {
amfregionid.size = 1; amfregionid.size = 1;
uint8_t *buffer = (uint8_t *)calloc(1,sizeof(uint8_t)); uint8_t *buffer = (uint8_t*) calloc(1, sizeof(uint8_t));
if(!buffer) return false; if (!buffer)
return false;
*buffer = regionid; *buffer = regionid;
amfregionid.buf = buffer; amfregionid.buf = buffer;
amfregionid.bits_unused = 0; amfregionid.bits_unused = 0;
return true; return true;
} }
bool AMFRegionID::decodefrombitstring(Ngap_AMFRegionID_t &amfregionid)
{ //------------------------------------------------------------------------------
if(!amfregionid.buf) return false; bool AMFRegionID::decodefrombitstring(Ngap_AMFRegionID_t &amfregionid) {
if (!amfregionid.buf)
return false;
regionid = *amfregionid.buf; regionid = *amfregionid.buf;
return true; return true;
} }
} }
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _AMFREGIONID_H_ #ifndef _AMFREGIONID_H_
#define _AMFREGIONID_H_ #define _AMFREGIONID_H_
#include <string> #include <string>
extern "C"{ extern "C" {
#include "Ngap_AMFRegionID.h" #include "Ngap_AMFRegionID.h"
} }
namespace ngap{ namespace ngap {
class AMFRegionID{ class AMFRegionID {
public: public:
AMFRegionID(); AMFRegionID();
virtual ~AMFRegionID(); virtual ~AMFRegionID();
void setAMFRegionID(const std::string ); void setAMFRegionID(const std::string);
void getAMFRegionID(std::string &); void getAMFRegionID(std::string&);
bool encode2bitstring(Ngap_AMFRegionID_t &); bool encode2bitstring(Ngap_AMFRegionID_t&);
bool decodefrombitstring(Ngap_AMFRegionID_t &); bool decodefrombitstring(Ngap_AMFRegionID_t&);
private: private:
uint8_t regionid; uint8_t regionid;
}; };
......
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "AMFSetID.hpp" #include "AMFSetID.hpp"
#include "String2Value.hpp" #include "String2Value.hpp"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
AMFSetID::AMFSetID(){} //------------------------------------------------------------------------------
AMFSetID::AMFSetID() {
}
AMFSetID::~AMFSetID(){} //------------------------------------------------------------------------------
AMFSetID::~AMFSetID() {
}
void AMFSetID::setAMFSetID(const std::string charid) //------------------------------------------------------------------------------
{ void AMFSetID::setAMFSetID(const std::string charid) {
setid = fromString<uint16_t>(charid); setid = fromString<uint16_t>(charid);
} }
void AMFSetID::getAMFSetID(std::string &charid)
{ //------------------------------------------------------------------------------
void AMFSetID::getAMFSetID(std::string &charid) {
charid = to_string(setid); charid = to_string(setid);
} }
bool AMFSetID::encode2bitstring(Ngap_AMFSetID_t &amfsetid) //------------------------------------------------------------------------------
{ bool AMFSetID::encode2bitstring(Ngap_AMFSetID_t &amfsetid) {
amfsetid.size = 2; amfsetid.size = 2;
uint8_t *buffer = (uint8_t *)calloc(1,sizeof(uint16_t)); uint8_t *buffer = (uint8_t*) calloc(1, sizeof(uint16_t));
if(!buffer) return false; if (!buffer)
return false;
//*(uint16_t *)buffer = setid & 0x3ff; //*(uint16_t *)buffer = setid & 0x3ff;
buffer[0] = ((setid & 0x03fc)>>2); buffer[0] = ((setid & 0x03fc) >> 2);
buffer[1] = ((setid & 0x0003)<<6); buffer[1] = ((setid & 0x0003) << 6);
amfsetid.buf = buffer; amfsetid.buf = buffer;
amfsetid.bits_unused = 6; amfsetid.bits_unused = 6;
return true; return true;
} }
bool AMFSetID::decodefrombitstring(Ngap_AMFSetID_t &amfsetid)
{ //------------------------------------------------------------------------------
if(!amfsetid.buf) return false; bool AMFSetID::decodefrombitstring(Ngap_AMFSetID_t &amfsetid) {
if (!amfsetid.buf)
return false;
printf("test for amfsetid\n"); printf("test for amfsetid\n");
for(int i=0; i<amfsetid.size; i++){ for (int i = 0; i < amfsetid.size; i++) {
printf("%x ", amfsetid.buf[i]); printf("%x ", amfsetid.buf[i]);
} }
printf("\n"); printf("\n");
uint16_t temp = 0; uint16_t temp = 0;
temp |= amfsetid.buf[0]<<8; temp |= amfsetid.buf[0] << 8;
temp |= amfsetid.buf[1]; temp |= amfsetid.buf[1];
setid = (temp&0xffc0)>>6;//1111 1111 11 00 0000 setid = (temp & 0xffc0) >> 6; //1111 1111 11 00 0000
return true; return true;
} }
} }
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _AMFSETID_H_ #ifndef _AMFSETID_H_
#define _AMFSETID_H_ #define _AMFSETID_H_
#include <string> #include <string>
extern "C"{ extern "C" {
#include "Ngap_AMFSetID.h" #include "Ngap_AMFSetID.h"
} }
namespace ngap{ namespace ngap {
class AMFSetID{ class AMFSetID {
public: public:
AMFSetID(); AMFSetID();
virtual ~AMFSetID(); virtual ~AMFSetID();
void setAMFSetID(const std::string); void setAMFSetID(const std::string);
void getAMFSetID(std::string &); void getAMFSetID(std::string&);
bool encode2bitstring(Ngap_AMFSetID_t &); bool encode2bitstring(Ngap_AMFSetID_t&);
bool decodefrombitstring(Ngap_AMFSetID_t &); bool decodefrombitstring(Ngap_AMFSetID_t&);
private: private:
uint16_t setid; uint16_t setid;
}; };
......
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "AdditionalQosFlowInformation.hpp" #include "AdditionalQosFlowInformation.hpp"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
AdditionalQosFlowInformation::AdditionalQosFlowInformation(){} //------------------------------------------------------------------------------
AdditionalQosFlowInformation::AdditionalQosFlowInformation() {
}
AdditionalQosFlowInformation::~AdditionalQosFlowInformation(){} //------------------------------------------------------------------------------
AdditionalQosFlowInformation::~AdditionalQosFlowInformation() {
}
void AdditionalQosFlowInformation::setAdditionalQosFlowInformation(e_Ngap_AdditionalQosFlowInformation value) //------------------------------------------------------------------------------
{ void AdditionalQosFlowInformation::setAdditionalQosFlowInformation(e_Ngap_AdditionalQosFlowInformation value) {
additional = value; additional = value;
} }
bool AdditionalQosFlowInformation::getAdditionalQosFlowInformation(e_Ngap_AdditionalQosFlowInformation &value)
{ //------------------------------------------------------------------------------
if(additional == Ngap_AdditionalQosFlowInformation_more_likely) bool AdditionalQosFlowInformation::getAdditionalQosFlowInformation(e_Ngap_AdditionalQosFlowInformation &value) {
value = (e_Ngap_AdditionalQosFlowInformation)additional; if (additional == Ngap_AdditionalQosFlowInformation_more_likely)
value = (e_Ngap_AdditionalQosFlowInformation) additional;
else else
return false; return false;
return true; return true;
} }
bool AdditionalQosFlowInformation::encode2AdditionalQosFlowInformation(Ngap_AdditionalQosFlowInformation_t *additionalQosFlowInfo) //------------------------------------------------------------------------------
{ bool AdditionalQosFlowInformation::encode2AdditionalQosFlowInformation(Ngap_AdditionalQosFlowInformation_t *additionalQosFlowInfo) {
*additionalQosFlowInfo = additional; *additionalQosFlowInfo = additional;
return true; return true;
} }
bool AdditionalQosFlowInformation::decodefromAdditionalQosFlowInformation(Ngap_AdditionalQosFlowInformation_t *additionalQosFlowInfo)
{ //------------------------------------------------------------------------------
bool AdditionalQosFlowInformation::decodefromAdditionalQosFlowInformation(Ngap_AdditionalQosFlowInformation_t *additionalQosFlowInfo) {
additional = *additionalQosFlowInfo; additional = *additionalQosFlowInfo;
return true; return true;
} }
} }
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _ADDITIONALQOSFLOWINFORMATION_H_ #ifndef _ADDITIONALQOSFLOWINFORMATION_H_
#define _ADDITIONALQOSFLOWINFORMATION_H_ #define _ADDITIONALQOSFLOWINFORMATION_H_
extern "C"{ extern "C" {
#include "Ngap_AdditionalQosFlowInformation.h" #include "Ngap_AdditionalQosFlowInformation.h"
} }
namespace ngap{ namespace ngap {
class AdditionalQosFlowInformation{ class AdditionalQosFlowInformation {
public: public:
AdditionalQosFlowInformation(); AdditionalQosFlowInformation();
virtual ~AdditionalQosFlowInformation(); virtual ~AdditionalQosFlowInformation();
...@@ -15,14 +43,13 @@ namespace ngap{ ...@@ -15,14 +43,13 @@ namespace ngap{
void setAdditionalQosFlowInformation(e_Ngap_AdditionalQosFlowInformation value); void setAdditionalQosFlowInformation(e_Ngap_AdditionalQosFlowInformation value);
bool getAdditionalQosFlowInformation(e_Ngap_AdditionalQosFlowInformation &value); bool getAdditionalQosFlowInformation(e_Ngap_AdditionalQosFlowInformation &value);
bool encode2AdditionalQosFlowInformation(Ngap_AdditionalQosFlowInformation_t *); bool encode2AdditionalQosFlowInformation(Ngap_AdditionalQosFlowInformation_t*);
bool decodefromAdditionalQosFlowInformation(Ngap_AdditionalQosFlowInformation_t *); bool decodefromAdditionalQosFlowInformation(Ngap_AdditionalQosFlowInformation_t*);
private: private:
long additional; long additional;
}; };
} }
#endif #endif
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "AllocationAndRetentionPriority.hpp" #include "AllocationAndRetentionPriority.hpp"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
AllocationAndRetentionPriority::AllocationAndRetentionPriority() //------------------------------------------------------------------------------
{ AllocationAndRetentionPriority::AllocationAndRetentionPriority() {
priorityLevelARP = NULL; priorityLevelARP = NULL;
pre_emptionCapability = NULL; pre_emptionCapability = NULL;
pre_emptionVulnerability = NULL; pre_emptionVulnerability = NULL;
} }
AllocationAndRetentionPriority::~AllocationAndRetentionPriority(){} //------------------------------------------------------------------------------
AllocationAndRetentionPriority::~AllocationAndRetentionPriority() {
}
void AllocationAndRetentionPriority::setAllocationAndRetentionPriority(PriorityLevelARP *m_priorityLevelARP,Pre_emptionCapability *m_pre_emptionCapability,Pre_emptionVulnerability *m_pre_emptionVulnerability) //------------------------------------------------------------------------------
{ void AllocationAndRetentionPriority::setAllocationAndRetentionPriority(PriorityLevelARP *m_priorityLevelARP, Pre_emptionCapability *m_pre_emptionCapability, Pre_emptionVulnerability *m_pre_emptionVulnerability) {
priorityLevelARP = m_priorityLevelARP; priorityLevelARP = m_priorityLevelARP;
pre_emptionCapability = m_pre_emptionCapability; pre_emptionCapability = m_pre_emptionCapability;
pre_emptionVulnerability = m_pre_emptionVulnerability; pre_emptionVulnerability = m_pre_emptionVulnerability;
} }
bool AllocationAndRetentionPriority::getAllocationAndRetentionPriority(PriorityLevelARP *&m_priorityLevelARP,Pre_emptionCapability *&m_pre_emptionCapability,Pre_emptionVulnerability *&m_pre_emptionVulnerability)
{ //------------------------------------------------------------------------------
if(!priorityLevelARP) return false; bool AllocationAndRetentionPriority::getAllocationAndRetentionPriority(PriorityLevelARP *&m_priorityLevelARP, Pre_emptionCapability *&m_pre_emptionCapability, Pre_emptionVulnerability *&m_pre_emptionVulnerability) {
if (!priorityLevelARP)
return false;
m_priorityLevelARP = priorityLevelARP; m_priorityLevelARP = priorityLevelARP;
if(!pre_emptionCapability) return false; if (!pre_emptionCapability)
return false;
m_pre_emptionCapability = pre_emptionCapability; m_pre_emptionCapability = pre_emptionCapability;
if(!pre_emptionVulnerability) return false; if (!pre_emptionVulnerability)
return false;
m_pre_emptionVulnerability = pre_emptionVulnerability; m_pre_emptionVulnerability = pre_emptionVulnerability;
return true; return true;
} }
bool AllocationAndRetentionPriority::encode2AllocationAndRetentionPriority(Ngap_AllocationAndRetentionPriority_t *allocationAndRetentionPriority)
{ //------------------------------------------------------------------------------
if(!priorityLevelARP->encode2PriorityLevelARP(&allocationAndRetentionPriority->priorityLevelARP)) return false; bool AllocationAndRetentionPriority::encode2AllocationAndRetentionPriority(Ngap_AllocationAndRetentionPriority_t *allocationAndRetentionPriority) {
if(!pre_emptionCapability->encode2Pre_emptionCapability(&allocationAndRetentionPriority->pre_emptionCapability)) return false; if (!priorityLevelARP->encode2PriorityLevelARP(&allocationAndRetentionPriority->priorityLevelARP))
if(!pre_emptionVulnerability->encode2Pre_emptionVulnerability(&allocationAndRetentionPriority->pre_emptionVulnerability)) return false; return false;
if (!pre_emptionCapability->encode2Pre_emptionCapability(&allocationAndRetentionPriority->pre_emptionCapability))
return false;
if (!pre_emptionVulnerability->encode2Pre_emptionVulnerability(&allocationAndRetentionPriority->pre_emptionVulnerability))
return false;
return true; return true;
} }
bool AllocationAndRetentionPriority::decodefromAllocationAndRetentionPriority(Ngap_AllocationAndRetentionPriority_t *allocationAndRetentionPriority)
{ //------------------------------------------------------------------------------
bool AllocationAndRetentionPriority::decodefromAllocationAndRetentionPriority(Ngap_AllocationAndRetentionPriority_t *allocationAndRetentionPriority) {
priorityLevelARP = new PriorityLevelARP(); priorityLevelARP = new PriorityLevelARP();
pre_emptionCapability = new Pre_emptionCapability(); pre_emptionCapability = new Pre_emptionCapability();
pre_emptionVulnerability = new Pre_emptionVulnerability(); pre_emptionVulnerability = new Pre_emptionVulnerability();
if(!priorityLevelARP->decodefromPriorityLevelARP(&allocationAndRetentionPriority->priorityLevelARP)) return false; if (!priorityLevelARP->decodefromPriorityLevelARP(&allocationAndRetentionPriority->priorityLevelARP))
if(!pre_emptionCapability->decodefromPre_emptionCapability(&allocationAndRetentionPriority->pre_emptionCapability)) return false; return false;
if(!pre_emptionVulnerability->decodefromPre_emptionVulnerability(&allocationAndRetentionPriority->pre_emptionVulnerability)) return false; if (!pre_emptionCapability->decodefromPre_emptionCapability(&allocationAndRetentionPriority->pre_emptionCapability))
return false;
if (!pre_emptionVulnerability->decodefromPre_emptionVulnerability(&allocationAndRetentionPriority->pre_emptionVulnerability))
return false;
return true; return true;
}
} }
}
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _ALLOCATIONANDRETENTIONPRIORITY_H_ #ifndef _ALLOCATIONANDRETENTIONPRIORITY_H_
#define _ALLOCATIONANDRETENTIONPRIORITY_H_ #define _ALLOCATIONANDRETENTIONPRIORITY_H_
...@@ -5,27 +33,27 @@ ...@@ -5,27 +33,27 @@
#include "Pre-emptionCapability.hpp" #include "Pre-emptionCapability.hpp"
#include "Pre-emptionVulnerability.hpp" #include "Pre-emptionVulnerability.hpp"
extern "C"{ extern "C" {
#include "Ngap_AllocationAndRetentionPriority.h" #include "Ngap_AllocationAndRetentionPriority.h"
} }
namespace ngap{ namespace ngap {
class AllocationAndRetentionPriority{ class AllocationAndRetentionPriority {
public: public:
AllocationAndRetentionPriority(); AllocationAndRetentionPriority();
virtual ~AllocationAndRetentionPriority(); virtual ~AllocationAndRetentionPriority();
void setAllocationAndRetentionPriority(PriorityLevelARP *m_priorityLevelARP,Pre_emptionCapability *m_pre_emptionCapability,Pre_emptionVulnerability *m_pre_emptionVulnerability); void setAllocationAndRetentionPriority(PriorityLevelARP *m_priorityLevelARP, Pre_emptionCapability *m_pre_emptionCapability, Pre_emptionVulnerability *m_pre_emptionVulnerability);
bool getAllocationAndRetentionPriority(PriorityLevelARP *&m_priorityLevelARP,Pre_emptionCapability *&m_pre_emptionCapability,Pre_emptionVulnerability *&m_pre_emptionVulnerability); bool getAllocationAndRetentionPriority(PriorityLevelARP *&m_priorityLevelARP, Pre_emptionCapability *&m_pre_emptionCapability, Pre_emptionVulnerability *&m_pre_emptionVulnerability);
bool encode2AllocationAndRetentionPriority(Ngap_AllocationAndRetentionPriority_t *); bool encode2AllocationAndRetentionPriority(Ngap_AllocationAndRetentionPriority_t*);
bool decodefromAllocationAndRetentionPriority(Ngap_AllocationAndRetentionPriority_t *); bool decodefromAllocationAndRetentionPriority(Ngap_AllocationAndRetentionPriority_t*);
private: private:
PriorityLevelARP *priorityLevelARP; PriorityLevelARP *priorityLevelARP;
Pre_emptionCapability *pre_emptionCapability; Pre_emptionCapability *pre_emptionCapability;
Pre_emptionVulnerability *pre_emptionVulnerability; Pre_emptionVulnerability *pre_emptionVulnerability;
}; };
} }
#endif #endif
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "AllowedNssai.hpp" #include "AllowedNssai.hpp"
extern "C"{ extern "C" {
#include "Ngap_AllowedNSSAI-Item.h" #include "Ngap_AllowedNSSAI-Item.h"
// #include "Ngap_SliceSupportItem.h" // #include "Ngap_SliceSupportItem.h"
} }
#include <iostream> #include <iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
AllowedNSSAI::AllowedNSSAI()
{ //------------------------------------------------------------------------------
AllowedNSSAI::AllowedNSSAI() {
snssai = NULL; snssai = NULL;
numofSnssai = 0; numofSnssai = 0;
} }
AllowedNSSAI::~AllowedNSSAI(){}
void AllowedNSSAI::setAllowedNSSAI(S_NSSAI * m_snssai, int m_numofsnssai) //------------------------------------------------------------------------------
{ AllowedNSSAI::~AllowedNSSAI() {
}
//------------------------------------------------------------------------------
void AllowedNSSAI::setAllowedNSSAI(S_NSSAI *m_snssai, int m_numofsnssai) {
snssai = m_snssai; snssai = m_snssai;
numofSnssai = m_numofsnssai; numofSnssai = m_numofsnssai;
} }
bool AllowedNSSAI::getAllowedNSSAI(S_NSSAI * & m_snssai, int & m_numofsnssai)
{ //------------------------------------------------------------------------------
bool AllowedNSSAI::getAllowedNSSAI(S_NSSAI *&m_snssai, int &m_numofsnssai) {
m_snssai = snssai; m_snssai = snssai;
m_numofsnssai = numofSnssai; m_numofsnssai = numofSnssai;
if(!snssai) return false; if (!snssai)
if(!numofSnssai) return false; return false;
if (!numofSnssai)
return false;
return true; return true;
} }
bool AllowedNSSAI::encode2AllowedNSSAI(Ngap_AllowedNSSAI_t *allowedNssaiList) //------------------------------------------------------------------------------
{ bool AllowedNSSAI::encode2AllowedNSSAI(Ngap_AllowedNSSAI_t *allowedNssaiList) {
cout<<"AllowedNSSAI::numOfSnssai "<<numofSnssai<<endl; cout << "AllowedNSSAI::numOfSnssai " << numofSnssai << endl;
for(int i=0;i<numofSnssai;i++) for (int i = 0; i < numofSnssai; i++) {
{ Ngap_AllowedNSSAI_Item_t *allowednssaiitem = (Ngap_AllowedNSSAI_Item_t*) calloc(1, sizeof(Ngap_AllowedNSSAI_Item_t));
Ngap_AllowedNSSAI_Item_t *allowednssaiitem = (Ngap_AllowedNSSAI_Item_t*)calloc(1,sizeof(Ngap_AllowedNSSAI_Item_t)); if (!allowednssaiitem)
if(!allowednssaiitem) return false; return false;
if(!snssai[i].encode2S_NSSAI(&allowednssaiitem->s_NSSAI)) return false; if (!snssai[i].encode2S_NSSAI(&allowednssaiitem->s_NSSAI))
if(ASN_SEQUENCE_ADD(&allowedNssaiList->list, allowednssaiitem) != 0) return false; return false;
if (ASN_SEQUENCE_ADD(&allowedNssaiList->list, allowednssaiitem) != 0)
return false;
} }
return true; return true;
} }
bool AllowedNSSAI::decodefromAllowedNSSAI(Ngap_AllowedNSSAI_t *allowedNssaiList)
{ //------------------------------------------------------------------------------
bool AllowedNSSAI::decodefromAllowedNSSAI(Ngap_AllowedNSSAI_t *allowedNssaiList) {
numofSnssai = allowedNssaiList->list.count; numofSnssai = allowedNssaiList->list.count;
snssai = new S_NSSAI[numofSnssai](); snssai = new S_NSSAI[numofSnssai]();
for(int i=0;i<numofSnssai;i++) for (int i = 0; i < numofSnssai; i++) {
{ if (!snssai[i].decodefromS_NSSAI(&allowedNssaiList->list.array[i]->s_NSSAI))
if(!snssai[i].decodefromS_NSSAI(&allowedNssaiList->list.array[i]->s_NSSAI)) return false; return false;
} }
return true; return true;
} }
} }
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _ALLOWEDNSSAI_H_ #ifndef _ALLOWEDNSSAI_H_
#define _ALLOWEDNSSAI_H_ #define _ALLOWEDNSSAI_H_
#include "S-NSSAI.hpp" #include "S-NSSAI.hpp"
extern "C"{ extern "C" {
#include "Ngap_AllowedNSSAI.h" #include "Ngap_AllowedNSSAI.h"
} }
namespace ngap{ namespace ngap {
class AllowedNSSAI{ class AllowedNSSAI {
public: public:
AllowedNSSAI(); AllowedNSSAI();
virtual ~AllowedNSSAI(); virtual ~AllowedNSSAI();
void setAllowedNSSAI(S_NSSAI * m_snssai, int m_numofsnssai); void setAllowedNSSAI(S_NSSAI *m_snssai, int m_numofsnssai);
bool getAllowedNSSAI(S_NSSAI * & m_snssai, int & m_numofsnssai); bool getAllowedNSSAI(S_NSSAI *&m_snssai, int &m_numofsnssai);
bool encode2AllowedNSSAI(Ngap_AllowedNSSAI_t *allowedNssaiList); bool encode2AllowedNSSAI(Ngap_AllowedNSSAI_t *allowedNssaiList);
bool decodefromAllowedNSSAI(Ngap_AllowedNSSAI_t *allowedNssaiList); bool decodefromAllowedNSSAI(Ngap_AllowedNSSAI_t *allowedNssaiList);
private: private:
S_NSSAI * snssai; S_NSSAI *snssai;
int numofSnssai; int numofSnssai;
}; };
} }
#endif #endif
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "AssociatedQosFlowItem.hpp" #include "AssociatedQosFlowItem.hpp"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
AssociatedQosFlowItem::AssociatedQosFlowItem() //------------------------------------------------------------------------------
{ AssociatedQosFlowItem::AssociatedQosFlowItem() {
qosFlowIdentifier = NULL; qosFlowIdentifier = NULL;
qosFlowMappingIndication = -1; qosFlowMappingIndication = -1;
} }
AssociatedQosFlowItem::~AssociatedQosFlowItem(){}
//------------------------------------------------------------------------------
AssociatedQosFlowItem::~AssociatedQosFlowItem() {
}
void AssociatedQosFlowItem::setAssociatedQosFlowItem(e_Ngap_AssociatedQosFlowItem__qosFlowMappingIndication m_qosFlowMappingIndication,QosFlowIdentifier *m_qosFlowIdentifier) //------------------------------------------------------------------------------
{ void AssociatedQosFlowItem::setAssociatedQosFlowItem(e_Ngap_AssociatedQosFlowItem__qosFlowMappingIndication m_qosFlowMappingIndication, QosFlowIdentifier *m_qosFlowIdentifier) {
qosFlowMappingIndication = m_qosFlowMappingIndication; qosFlowMappingIndication = m_qosFlowMappingIndication;
qosFlowIdentifier = m_qosFlowIdentifier; qosFlowIdentifier = m_qosFlowIdentifier;
} }
void AssociatedQosFlowItem::setAssociatedQosFlowItem(QosFlowIdentifier *m_qosFlowIdentifier)
{ //------------------------------------------------------------------------------
void AssociatedQosFlowItem::setAssociatedQosFlowItem(QosFlowIdentifier *m_qosFlowIdentifier) {
qosFlowIdentifier = m_qosFlowIdentifier; qosFlowIdentifier = m_qosFlowIdentifier;
} }
bool AssociatedQosFlowItem::getAssociatedQosFlowItem(long &m_qosFlowMappingIndication,QosFlowIdentifier *&m_qosFlowIdentifier)
{ //------------------------------------------------------------------------------
bool AssociatedQosFlowItem::getAssociatedQosFlowItem(long &m_qosFlowMappingIndication, QosFlowIdentifier *&m_qosFlowIdentifier) {
m_qosFlowMappingIndication = qosFlowMappingIndication; m_qosFlowMappingIndication = qosFlowMappingIndication;
m_qosFlowIdentifier = qosFlowIdentifier; m_qosFlowIdentifier = qosFlowIdentifier;
return true; return true;
} }
bool AssociatedQosFlowItem::encode2AssociatedQosFlowItem(Ngap_AssociatedQosFlowItem_t *associatedQosFlowItem) //------------------------------------------------------------------------------
{ bool AssociatedQosFlowItem::encode2AssociatedQosFlowItem(Ngap_AssociatedQosFlowItem_t *associatedQosFlowItem) {
if(qosFlowMappingIndication >= 0) if (qosFlowMappingIndication >= 0) {
{ associatedQosFlowItem->qosFlowMappingIndication = (long*) calloc(1, sizeof(long));
associatedQosFlowItem->qosFlowMappingIndication = (long *)calloc(1,sizeof(long));
*associatedQosFlowItem->qosFlowMappingIndication = qosFlowMappingIndication; *associatedQosFlowItem->qosFlowMappingIndication = qosFlowMappingIndication;
} }
if(!qosFlowIdentifier->encode2QosFlowIdentifier(&associatedQosFlowItem->qosFlowIdentifier)) return false; if (!qosFlowIdentifier->encode2QosFlowIdentifier(&associatedQosFlowItem->qosFlowIdentifier))
return false;
return true; return true;
} }
bool AssociatedQosFlowItem::decodefromAssociatedQosFlowItem(Ngap_AssociatedQosFlowItem_t *associatedQosFlowItem)
{ //------------------------------------------------------------------------------
bool AssociatedQosFlowItem::decodefromAssociatedQosFlowItem(Ngap_AssociatedQosFlowItem_t *associatedQosFlowItem) {
qosFlowIdentifier = new QosFlowIdentifier(); qosFlowIdentifier = new QosFlowIdentifier();
if(!qosFlowIdentifier->decodefromQosFlowIdentifier(&associatedQosFlowItem->qosFlowIdentifier)) return false; if (!qosFlowIdentifier->decodefromQosFlowIdentifier(&associatedQosFlowItem->qosFlowIdentifier))
return false;
if(associatedQosFlowItem->qosFlowMappingIndication) if (associatedQosFlowItem->qosFlowMappingIndication) {
{
qosFlowMappingIndication = *associatedQosFlowItem->qosFlowMappingIndication; qosFlowMappingIndication = *associatedQosFlowItem->qosFlowMappingIndication;
} }
return true; return true;
}
} }
}
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _ASSOCIATEDQOSFLOWITEM_H_ #ifndef _ASSOCIATEDQOSFLOWITEM_H_
#define _ASSOCIATEDQOSFLOWITEM_H_ #define _ASSOCIATEDQOSFLOWITEM_H_
#include "QosFlowIdentifier.hpp" #include "QosFlowIdentifier.hpp"
extern "C"{ extern "C" {
#include "Ngap_AssociatedQosFlowItem.h" #include "Ngap_AssociatedQosFlowItem.h"
} }
namespace ngap{ namespace ngap {
class AssociatedQosFlowItem{ class AssociatedQosFlowItem {
public: public:
AssociatedQosFlowItem(); AssociatedQosFlowItem();
virtual ~AssociatedQosFlowItem(); virtual ~AssociatedQosFlowItem();
void setAssociatedQosFlowItem(e_Ngap_AssociatedQosFlowItem__qosFlowMappingIndication m_qosFlowMappingIndication,QosFlowIdentifier *m_qosFlowIdentifier); void setAssociatedQosFlowItem(e_Ngap_AssociatedQosFlowItem__qosFlowMappingIndication m_qosFlowMappingIndication, QosFlowIdentifier *m_qosFlowIdentifier);
void setAssociatedQosFlowItem(QosFlowIdentifier *m_qosFlowIdentifier); void setAssociatedQosFlowItem(QosFlowIdentifier *m_qosFlowIdentifier);
bool getAssociatedQosFlowItem(long &m_qosFlowMappingIndication,QosFlowIdentifier *&m_qosFlowIdentifier); bool getAssociatedQosFlowItem(long &m_qosFlowMappingIndication, QosFlowIdentifier *&m_qosFlowIdentifier);
bool encode2AssociatedQosFlowItem(Ngap_AssociatedQosFlowItem_t *associatedQosFlowItem); bool encode2AssociatedQosFlowItem(Ngap_AssociatedQosFlowItem_t *associatedQosFlowItem);
bool decodefromAssociatedQosFlowItem(Ngap_AssociatedQosFlowItem_t *associatedQosFlowItem); bool decodefromAssociatedQosFlowItem(Ngap_AssociatedQosFlowItem_t *associatedQosFlowItem);
private: private:
QosFlowIdentifier *qosFlowIdentifier; QosFlowIdentifier *qosFlowIdentifier;
long qosFlowMappingIndication; long qosFlowMappingIndication;
}; };
} }
......
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "AssociatedQosFlowList.hpp" #include "AssociatedQosFlowList.hpp"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
AssociatedQosFlowList::AssociatedQosFlowList() //------------------------------------------------------------------------------
{ AssociatedQosFlowList::AssociatedQosFlowList() {
associatedQosFlowItem = NULL; associatedQosFlowItem = NULL;
numofassociatedQosFlowItem = 0; numofassociatedQosFlowItem = 0;
} }
AssociatedQosFlowList::~AssociatedQosFlowList(){}
//------------------------------------------------------------------------------
AssociatedQosFlowList::~AssociatedQosFlowList() {
}
void AssociatedQosFlowList::setAssociatedQosFlowList(AssociatedQosFlowItem *m_associatedQosFlowItem,int numofitem) //------------------------------------------------------------------------------
{ void AssociatedQosFlowList::setAssociatedQosFlowList(AssociatedQosFlowItem *m_associatedQosFlowItem, int numofitem) {
associatedQosFlowItem = m_associatedQosFlowItem; associatedQosFlowItem = m_associatedQosFlowItem;
numofassociatedQosFlowItem = numofitem; numofassociatedQosFlowItem = numofitem;
} }
bool AssociatedQosFlowList::getAssociatedQosFlowList(AssociatedQosFlowItem *&m_associatedQosFlowItem,int &numofitem)
{ //------------------------------------------------------------------------------
bool AssociatedQosFlowList::getAssociatedQosFlowList(AssociatedQosFlowItem *&m_associatedQosFlowItem, int &numofitem) {
m_associatedQosFlowItem = associatedQosFlowItem; m_associatedQosFlowItem = associatedQosFlowItem;
numofitem = numofassociatedQosFlowItem; numofitem = numofassociatedQosFlowItem;
return true; return true;
} }
bool AssociatedQosFlowList::encode2AssociatedQosFlowList(Ngap_AssociatedQosFlowList_t &associatedQosFlowList) //------------------------------------------------------------------------------
{ bool AssociatedQosFlowList::encode2AssociatedQosFlowList(Ngap_AssociatedQosFlowList_t &associatedQosFlowList) {
for(int i=0;i<numofassociatedQosFlowItem;i++) for (int i = 0; i < numofassociatedQosFlowItem; i++) {
{ Ngap_AssociatedQosFlowItem_t *ie = (Ngap_AssociatedQosFlowItem_t*) calloc(1, sizeof(Ngap_AssociatedQosFlowItem_t));
Ngap_AssociatedQosFlowItem_t *ie = (Ngap_AssociatedQosFlowItem_t *)calloc(1,sizeof(Ngap_AssociatedQosFlowItem_t)); if (!ie)
if(!ie) return false; return false;
if(!associatedQosFlowItem[i].encode2AssociatedQosFlowItem(ie)) return false; if (!associatedQosFlowItem[i].encode2AssociatedQosFlowItem(ie))
if(ASN_SEQUENCE_ADD(&associatedQosFlowList.list, ie) != 0) return false; return false;
if (ASN_SEQUENCE_ADD(&associatedQosFlowList.list, ie) != 0)
return false;
} }
return true; return true;
} }
bool AssociatedQosFlowList::decodefromAssociatedQosFlowList(Ngap_AssociatedQosFlowList_t &associatedQosFlowList)
{ //------------------------------------------------------------------------------
bool AssociatedQosFlowList::decodefromAssociatedQosFlowList(Ngap_AssociatedQosFlowList_t &associatedQosFlowList) {
numofassociatedQosFlowItem = associatedQosFlowList.list.count; numofassociatedQosFlowItem = associatedQosFlowList.list.count;
associatedQosFlowItem = new AssociatedQosFlowItem[numofassociatedQosFlowItem](); associatedQosFlowItem = new AssociatedQosFlowItem[numofassociatedQosFlowItem]();
for(int i=0;i<numofassociatedQosFlowItem;i++) for (int i = 0; i < numofassociatedQosFlowItem; i++) {
{ if (!associatedQosFlowItem[i].decodefromAssociatedQosFlowItem(associatedQosFlowList.list.array[i]))
if(!associatedQosFlowItem[i].decodefromAssociatedQosFlowItem(associatedQosFlowList.list.array[i])) return false; return false;
} }
return true; return true;
}
} }
}
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _ASSOCIATEDQOSFLOWLIST_H_ #ifndef _ASSOCIATEDQOSFLOWLIST_H_
#define _ASSOCIATEDQOSFLOWLIST_H_ #define _ASSOCIATEDQOSFLOWLIST_H_
#include "AssociatedQosFlowItem.hpp" #include "AssociatedQosFlowItem.hpp"
extern "C"{ extern "C" {
#include "Ngap_AssociatedQosFlowList.h" #include "Ngap_AssociatedQosFlowList.h"
} }
namespace ngap{ namespace ngap {
class AssociatedQosFlowList{ class AssociatedQosFlowList {
public: public:
AssociatedQosFlowList(); AssociatedQosFlowList();
virtual ~AssociatedQosFlowList(); virtual ~AssociatedQosFlowList();
void setAssociatedQosFlowList(AssociatedQosFlowItem *m_associatedQosFlowItem,int numofitem); void setAssociatedQosFlowList(AssociatedQosFlowItem *m_associatedQosFlowItem, int numofitem);
bool getAssociatedQosFlowList(AssociatedQosFlowItem *&m_associatedQosFlowItem,int &numofitem); bool getAssociatedQosFlowList(AssociatedQosFlowItem *&m_associatedQosFlowItem, int &numofitem);
bool encode2AssociatedQosFlowList(Ngap_AssociatedQosFlowList_t &associatedQosFlowList); bool encode2AssociatedQosFlowList(Ngap_AssociatedQosFlowList_t &associatedQosFlowList);
bool decodefromAssociatedQosFlowList(Ngap_AssociatedQosFlowList_t &associatedQosFlowList); bool decodefromAssociatedQosFlowList(Ngap_AssociatedQosFlowList_t &associatedQosFlowList);
private: private:
AssociatedQosFlowItem *associatedQosFlowItem; AssociatedQosFlowItem *associatedQosFlowItem;
int numofassociatedQosFlowItem; int numofassociatedQosFlowItem;
}; };
} }
......
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "AveragingWindow.hpp" #include "AveragingWindow.hpp"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
AveragingWindow::AveragingWindow(){} //------------------------------------------------------------------------------
AveragingWindow::AveragingWindow() {
}
AveragingWindow::~AveragingWindow(){} //------------------------------------------------------------------------------
AveragingWindow::~AveragingWindow() {
}
void AveragingWindow::setAveragingWindow(long value) //------------------------------------------------------------------------------
{ void AveragingWindow::setAveragingWindow(long value) {
averagingwindow = value; averagingwindow = value;
} }
bool AveragingWindow::getAveragingWindow(long &value)
{ //------------------------------------------------------------------------------
bool AveragingWindow::getAveragingWindow(long &value) {
value = averagingwindow; value = averagingwindow;
return true; return true;
} }
bool AveragingWindow::encode2AveragingWindow(Ngap_AveragingWindow_t *averagingWindow) //------------------------------------------------------------------------------
{ bool AveragingWindow::encode2AveragingWindow(Ngap_AveragingWindow_t *averagingWindow) {
*averagingWindow = averagingwindow; *averagingWindow = averagingwindow;
return true; return true;
} }
bool AveragingWindow::decodefromAveragingWindow(Ngap_AveragingWindow_t *averagingWindow)
{ //------------------------------------------------------------------------------
bool AveragingWindow::decodefromAveragingWindow(Ngap_AveragingWindow_t *averagingWindow) {
averagingwindow = *averagingWindow; averagingwindow = *averagingWindow;
return true; return true;
} }
} }
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _AVERAGINGWINDOW_H_ #ifndef _AVERAGINGWINDOW_H_
#define _AVERAGINGWINDOW_H_ #define _AVERAGINGWINDOW_H_
extern "C"{ extern "C" {
#include "Ngap_AveragingWindow.h" #include "Ngap_AveragingWindow.h"
} }
namespace ngap{ namespace ngap {
class AveragingWindow{ class AveragingWindow {
public: public:
AveragingWindow(); AveragingWindow();
virtual ~AveragingWindow(); virtual ~AveragingWindow();
...@@ -15,14 +43,13 @@ namespace ngap{ ...@@ -15,14 +43,13 @@ namespace ngap{
void setAveragingWindow(long value); void setAveragingWindow(long value);
bool getAveragingWindow(long &value); bool getAveragingWindow(long &value);
bool encode2AveragingWindow(Ngap_AveragingWindow_t *); bool encode2AveragingWindow(Ngap_AveragingWindow_t*);
bool decodefromAveragingWindow(Ngap_AveragingWindow_t *); bool decodefromAveragingWindow(Ngap_AveragingWindow_t*);
private: private:
long averagingwindow; long averagingwindow;
}; };
} }
#endif #endif
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "BroadcastPLMNItem.hpp" #include "BroadcastPLMNItem.hpp"
#include "S-NSSAI.hpp" #include "S-NSSAI.hpp"
#include "PlmnId.hpp" #include "PlmnId.hpp"
extern "C"{ extern "C" {
#include "Ngap_BroadcastPLMNList.h" #include "Ngap_BroadcastPLMNList.h"
#include "Ngap_SliceSupportItem.h" #include "Ngap_SliceSupportItem.h"
} }
#include <iostream> #include <iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
BroadcastPLMNItem::BroadcastPLMNItem()
{ //------------------------------------------------------------------------------
BroadcastPLMNItem::BroadcastPLMNItem() {
plmn = NULL; plmn = NULL;
snssai = NULL; snssai = NULL;
numOfSnssai = 0; numOfSnssai = 0;
} }
BroadcastPLMNItem::~BroadcastPLMNItem(){}
void BroadcastPLMNItem::setPlmnSliceSupportList(PlmnId * m_plmn, S_NSSAI * m_snssai, int num) //------------------------------------------------------------------------------
{ BroadcastPLMNItem::~BroadcastPLMNItem() {
}
//------------------------------------------------------------------------------
void BroadcastPLMNItem::setPlmnSliceSupportList(PlmnId *m_plmn, S_NSSAI *m_snssai, int num) {
plmn = m_plmn; plmn = m_plmn;
snssai = m_snssai; snssai = m_snssai;
numOfSnssai = num; numOfSnssai = num;
} }
void BroadcastPLMNItem::getPlmnSliceSupportList(PlmnId * & m_plmn, S_NSSAI * & m_snssai, int & snssainum)
{ //------------------------------------------------------------------------------
void BroadcastPLMNItem::getPlmnSliceSupportList(PlmnId *&m_plmn, S_NSSAI *&m_snssai, int &snssainum) {
m_plmn = plmn; m_plmn = plmn;
m_snssai = snssai; m_snssai = snssai;
snssainum = numOfSnssai; snssainum = numOfSnssai;
} }
bool BroadcastPLMNItem::encode2BroadcastPLMNItem(Ngap_BroadcastPLMNItem_t * plmnItem) //------------------------------------------------------------------------------
{ bool BroadcastPLMNItem::encode2BroadcastPLMNItem(Ngap_BroadcastPLMNItem_t *plmnItem) {
if(!plmn->encode2octetstring(plmnItem->pLMNIdentity)) return false; if (!plmn->encode2octetstring(plmnItem->pLMNIdentity))
cout<<"BroadcastPLMNItem::numOfSnssai "<<numOfSnssai<<endl; return false;
for(int i=0;i<numOfSnssai;i++) cout << "BroadcastPLMNItem::numOfSnssai " << numOfSnssai << endl;
{ for (int i = 0; i < numOfSnssai; i++) {
Ngap_SliceSupportItem_t *slice = (Ngap_SliceSupportItem_t*)calloc(1,sizeof(Ngap_SliceSupportItem_t)); Ngap_SliceSupportItem_t *slice = (Ngap_SliceSupportItem_t*) calloc(1, sizeof(Ngap_SliceSupportItem_t));
if(!slice) return false; if (!slice)
if(!snssai[i].encode2S_NSSAI(&slice->s_NSSAI)) return false; return false;
if(ASN_SEQUENCE_ADD(&plmnItem->tAISliceSupportList.list, slice) != 0) return false; if (!snssai[i].encode2S_NSSAI(&slice->s_NSSAI))
return false;
if (ASN_SEQUENCE_ADD(&plmnItem->tAISliceSupportList.list, slice) != 0)
return false;
} }
return true; return true;
} }
bool BroadcastPLMNItem::decodefromBroadcastPLMNItem(Ngap_BroadcastPLMNItem_t * pdu)
{ //------------------------------------------------------------------------------
bool BroadcastPLMNItem::decodefromBroadcastPLMNItem(Ngap_BroadcastPLMNItem_t *pdu) {
plmn = new PlmnId(); plmn = new PlmnId();
if(!plmn->decodefromoctetstring(pdu->pLMNIdentity)) return false; if (!plmn->decodefromoctetstring(pdu->pLMNIdentity))
return false;
numOfSnssai = pdu->tAISliceSupportList.list.count; numOfSnssai = pdu->tAISliceSupportList.list.count;
snssai = new S_NSSAI[numOfSnssai](); snssai = new S_NSSAI[numOfSnssai]();
for(int i=0;i<numOfSnssai;i++) for (int i = 0; i < numOfSnssai; i++) {
{ if (!snssai[i].decodefromS_NSSAI(&pdu->tAISliceSupportList.list.array[i]->s_NSSAI))
if(!snssai[i].decodefromS_NSSAI(&pdu->tAISliceSupportList.list.array[i]->s_NSSAI)) return false; return false;
} }
return true; return true;
} }
} }
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _BroadcastPLMNItem_H #ifndef _BroadcastPLMNItem_H
#define _BroadcastPLMNItem_H #define _BroadcastPLMNItem_H
#include "PlmnId.hpp" #include "PlmnId.hpp"
#include "S-NSSAI.hpp" #include "S-NSSAI.hpp"
extern "C"{ extern "C" {
#include "Ngap_BroadcastPLMNItem.h" #include "Ngap_BroadcastPLMNItem.h"
} }
namespace ngap{ namespace ngap {
class BroadcastPLMNItem{ class BroadcastPLMNItem {
public: public:
BroadcastPLMNItem(); BroadcastPLMNItem();
virtual ~BroadcastPLMNItem(); virtual ~BroadcastPLMNItem();
void setPlmnSliceSupportList(PlmnId * m_plmn, S_NSSAI * snssai, int num); void setPlmnSliceSupportList(PlmnId *m_plmn, S_NSSAI *snssai, int num);
void getPlmnSliceSupportList(PlmnId * & m_plmn, S_NSSAI * & m_snssai, int & snssainum); void getPlmnSliceSupportList(PlmnId *&m_plmn, S_NSSAI *&m_snssai, int &snssainum);
bool encode2BroadcastPLMNItem(Ngap_BroadcastPLMNItem_t *); bool encode2BroadcastPLMNItem(Ngap_BroadcastPLMNItem_t*);
bool decodefromBroadcastPLMNItem( Ngap_BroadcastPLMNItem_t * pdu); bool decodefromBroadcastPLMNItem(Ngap_BroadcastPLMNItem_t *pdu);
private: private:
PlmnId *plmn; PlmnId *plmn;
S_NSSAI * snssai; S_NSSAI *snssai;
int numOfSnssai; int numOfSnssai;
}; };
} }
#endif #endif
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "Cause.hpp" #include "Cause.hpp"
#include<iostream> #include<iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
Cause::Cause() //------------------------------------------------------------------------------
{ Cause::Cause() {
causeValue = -1; causeValue = -1;
} }
Cause::~Cause(){}
//------------------------------------------------------------------------------
Cause::~Cause() {
}
void Cause::setChoiceOfCause(Ngap_Cause_PR m_causePresent) //------------------------------------------------------------------------------
{ void Cause::setChoiceOfCause(Ngap_Cause_PR m_causePresent) {
causePresent = m_causePresent; causePresent = m_causePresent;
} }
void Cause::setValue(long m_causeValue) //------------------------------------------------------------------------------
{ void Cause::setValue(long m_causeValue) {
causeValue = m_causeValue; causeValue = m_causeValue;
} }
bool Cause::encode2Cause(Ngap_Cause_t *cause) //------------------------------------------------------------------------------
{ bool Cause::encode2Cause(Ngap_Cause_t *cause) {
cause->present = causePresent; cause->present = causePresent;
switch(causePresent) switch (causePresent) {
{ case Ngap_Cause_PR_radioNetwork: {
case Ngap_Cause_PR_radioNetwork:{
cause->choice.radioNetwork = causeValue; cause->choice.radioNetwork = causeValue;
break;} break;
case Ngap_Cause_PR_transport:{ }
case Ngap_Cause_PR_transport: {
cause->choice.transport = causeValue; cause->choice.transport = causeValue;
break;} break;
case Ngap_Cause_PR_nas:{ }
case Ngap_Cause_PR_nas: {
cause->choice.nas = causeValue; cause->choice.nas = causeValue;
break;} break;
case Ngap_Cause_PR_protocol:{ }
case Ngap_Cause_PR_protocol: {
cause->choice.protocol = causeValue; cause->choice.protocol = causeValue;
break;} break;
case Ngap_Cause_PR_misc:{ }
case Ngap_Cause_PR_misc: {
cause->choice.misc = causeValue; cause->choice.misc = causeValue;
break;} break;
default:{ }
cout<<"[Warning] Cause Present error!"<<endl; default: {
cout << "[Warning] Cause Present error!" << endl;
return false; return false;
break;} break;
} }
return true;
} }
return true;
}
bool Cause::decodefromCause(Ngap_Cause_t * pdu) //------------------------------------------------------------------------------
{ bool Cause::decodefromCause(Ngap_Cause_t *pdu) {
causePresent = pdu->present; causePresent = pdu->present;
switch(causePresent) switch (causePresent) {
{ case Ngap_Cause_PR_radioNetwork: {
case Ngap_Cause_PR_radioNetwork:{
causeValue = pdu->choice.radioNetwork; causeValue = pdu->choice.radioNetwork;
}break; }
case Ngap_Cause_PR_transport:{ break;
case Ngap_Cause_PR_transport: {
causeValue = pdu->choice.transport; causeValue = pdu->choice.transport;
}break; }
case Ngap_Cause_PR_nas:{ break;
case Ngap_Cause_PR_nas: {
causeValue = pdu->choice.nas; causeValue = pdu->choice.nas;
}break; }
case Ngap_Cause_PR_protocol:{ break;
case Ngap_Cause_PR_protocol: {
causeValue = pdu->choice.protocol; causeValue = pdu->choice.protocol;
}break; }
case Ngap_Cause_PR_misc:{ break;
case Ngap_Cause_PR_misc: {
causeValue = pdu->choice.misc; causeValue = pdu->choice.misc;
}break; }
default:{ break;
cout<<"[Warning] Cause Present error!"<<endl; default: {
cout << "[Warning] Cause Present error!" << endl;
return false; return false;
} }
} }
return true; return true;
} }
Ngap_Cause_PR Cause::getChoiceOfCause()
{ //------------------------------------------------------------------------------
Ngap_Cause_PR Cause::getChoiceOfCause() {
return causePresent; return causePresent;
} }
long Cause::getValue()
{ //------------------------------------------------------------------------------
long Cause::getValue() {
return causeValue; return causeValue;
} }
} }
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _CAUSE_H_ #ifndef _CAUSE_H_
#define _CAUSE_H_ #define _CAUSE_H_
extern "C"{ extern "C" {
#include "Ngap_Cause.h" #include "Ngap_Cause.h"
} }
namespace ngap{ namespace ngap {
class Cause{ class Cause {
public: public:
Cause(); Cause();
virtual ~Cause(); virtual ~Cause();
bool encode2Cause(Ngap_Cause_t *cause); bool encode2Cause(Ngap_Cause_t *cause);
bool decodefromCause(Ngap_Cause_t * pdu); bool decodefromCause(Ngap_Cause_t *pdu);
void setChoiceOfCause(Ngap_Cause_PR m_causePresent); void setChoiceOfCause(Ngap_Cause_PR m_causePresent);
Ngap_Cause_PR getChoiceOfCause(); Ngap_Cause_PR getChoiceOfCause();
void setValue(long); void setValue(long);
...@@ -21,7 +49,7 @@ namespace ngap{ ...@@ -21,7 +49,7 @@ namespace ngap{
private: private:
long causeValue; long causeValue;
Ngap_Cause_PR causePresent; Ngap_Cause_PR causePresent;
}; };
} }
#endif #endif
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "ConfidentialityProtectionIndication.hpp" #include "ConfidentialityProtectionIndication.hpp"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
ConfidentialityProtectionIndication::ConfidentialityProtectionIndication(){} //------------------------------------------------------------------------------
ConfidentialityProtectionIndication::ConfidentialityProtectionIndication() {
}
ConfidentialityProtectionIndication::~ConfidentialityProtectionIndication(){} //------------------------------------------------------------------------------
ConfidentialityProtectionIndication::~ConfidentialityProtectionIndication() {
}
void ConfidentialityProtectionIndication::setConfidentialityProtectionIndication(e_Ngap_ConfidentialityProtectionIndication m_indication) //------------------------------------------------------------------------------
{ void ConfidentialityProtectionIndication::setConfidentialityProtectionIndication(e_Ngap_ConfidentialityProtectionIndication m_indication) {
indication = m_indication; indication = m_indication;
} }
bool ConfidentialityProtectionIndication::getConfidentialityProtectionIndication(long &m_indication)
{ //------------------------------------------------------------------------------
bool ConfidentialityProtectionIndication::getConfidentialityProtectionIndication(long &m_indication) {
m_indication = indication; m_indication = indication;
return true; return true;
} }
bool ConfidentialityProtectionIndication::encode2ConfidentialityProtectionIndication(Ngap_ConfidentialityProtectionIndication_t &confidentialityProtectionIndication) //------------------------------------------------------------------------------
{ bool ConfidentialityProtectionIndication::encode2ConfidentialityProtectionIndication(Ngap_ConfidentialityProtectionIndication_t &confidentialityProtectionIndication) {
confidentialityProtectionIndication = indication; confidentialityProtectionIndication = indication;
return true; return true;
} }
bool ConfidentialityProtectionIndication::decodefromConfidentialityProtectionIndication(Ngap_ConfidentialityProtectionIndication_t confidentialityProtectionIndication)
{ //------------------------------------------------------------------------------
bool ConfidentialityProtectionIndication::decodefromConfidentialityProtectionIndication(Ngap_ConfidentialityProtectionIndication_t confidentialityProtectionIndication) {
indication = confidentialityProtectionIndication; indication = confidentialityProtectionIndication;
return true; return true;
} }
} }
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _CONFIDENTIALITYPROTECTIONINDICATION_H_ #ifndef _CONFIDENTIALITYPROTECTIONINDICATION_H_
#define _CONFIDENTIALITYPROTECTIONINDICATION_H_ #define _CONFIDENTIALITYPROTECTIONINDICATION_H_
extern "C"{ extern "C" {
#include "Ngap_ConfidentialityProtectionIndication.h" #include "Ngap_ConfidentialityProtectionIndication.h"
} }
namespace ngap{ namespace ngap {
class ConfidentialityProtectionIndication{ class ConfidentialityProtectionIndication {
public: public:
ConfidentialityProtectionIndication(); ConfidentialityProtectionIndication();
virtual ~ConfidentialityProtectionIndication(); virtual ~ConfidentialityProtectionIndication();
...@@ -15,8 +43,8 @@ namespace ngap{ ...@@ -15,8 +43,8 @@ namespace ngap{
void setConfidentialityProtectionIndication(e_Ngap_ConfidentialityProtectionIndication m_indication); void setConfidentialityProtectionIndication(e_Ngap_ConfidentialityProtectionIndication m_indication);
bool getConfidentialityProtectionIndication(long &m_indication); bool getConfidentialityProtectionIndication(long &m_indication);
bool encode2ConfidentialityProtectionIndication(Ngap_ConfidentialityProtectionIndication_t &); bool encode2ConfidentialityProtectionIndication(Ngap_ConfidentialityProtectionIndication_t&);
bool decodefromConfidentialityProtectionIndication(Ngap_ConfidentialityProtectionIndication_t ); bool decodefromConfidentialityProtectionIndication(Ngap_ConfidentialityProtectionIndication_t);
private: private:
long indication; long indication;
}; };
...@@ -25,4 +53,3 @@ namespace ngap{ ...@@ -25,4 +53,3 @@ namespace ngap{
#endif #endif
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "ConfidentialityProtectionResult.hpp" #include "ConfidentialityProtectionResult.hpp"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
ConfidentialityProtectionResult::ConfidentialityProtectionResult() //------------------------------------------------------------------------------
{ ConfidentialityProtectionResult::ConfidentialityProtectionResult() {
confidentialityProtectionResult = -1; confidentialityProtectionResult = -1;
} }
ConfidentialityProtectionResult::~ConfidentialityProtectionResult(){} //------------------------------------------------------------------------------
ConfidentialityProtectionResult::~ConfidentialityProtectionResult() {
}
void ConfidentialityProtectionResult::setConfidentialityProtectionResult(e_Ngap_ConfidentialityProtectionResult m_confidentialityProtectionResult) //------------------------------------------------------------------------------
{ void ConfidentialityProtectionResult::setConfidentialityProtectionResult(e_Ngap_ConfidentialityProtectionResult m_confidentialityProtectionResult) {
confidentialityProtectionResult = m_confidentialityProtectionResult; confidentialityProtectionResult = m_confidentialityProtectionResult;
} }
bool ConfidentialityProtectionResult::getConfidentialityProtectionResult(long &m_confidentialityProtectionResult)
{ //------------------------------------------------------------------------------
bool ConfidentialityProtectionResult::getConfidentialityProtectionResult(long &m_confidentialityProtectionResult) {
m_confidentialityProtectionResult = confidentialityProtectionResult; m_confidentialityProtectionResult = confidentialityProtectionResult;
return true; return true;
} }
bool ConfidentialityProtectionResult::encode2ConfidentialityProtectionResult(Ngap_ConfidentialityProtectionResult_t &confidentialityProtectionResultValue) //------------------------------------------------------------------------------
{ bool ConfidentialityProtectionResult::encode2ConfidentialityProtectionResult(Ngap_ConfidentialityProtectionResult_t &confidentialityProtectionResultValue) {
confidentialityProtectionResultValue = confidentialityProtectionResult; confidentialityProtectionResultValue = confidentialityProtectionResult;
return true; return true;
} }
bool ConfidentialityProtectionResult::decodefromConfidentialityProtectionResult(Ngap_ConfidentialityProtectionResult_t confidentialityProtectionResultValue)
{ //------------------------------------------------------------------------------
bool ConfidentialityProtectionResult::decodefromConfidentialityProtectionResult(Ngap_ConfidentialityProtectionResult_t confidentialityProtectionResultValue) {
confidentialityProtectionResult = confidentialityProtectionResultValue; confidentialityProtectionResult = confidentialityProtectionResultValue;
return true; return true;
}
} }
}
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _CONFIDENTIALITYPROTECTIONRESULT_H_ #ifndef _CONFIDENTIALITYPROTECTIONRESULT_H_
#define _CONFIDENTIALITYPROTECTIONRESULT_H_ #define _CONFIDENTIALITYPROTECTIONRESULT_H_
extern "C"{ extern "C" {
#include "Ngap_ConfidentialityProtectionResult.h" #include "Ngap_ConfidentialityProtectionResult.h"
} }
namespace ngap{ namespace ngap {
class ConfidentialityProtectionResult{ class ConfidentialityProtectionResult {
public: public:
ConfidentialityProtectionResult(); ConfidentialityProtectionResult();
virtual ~ConfidentialityProtectionResult(); virtual ~ConfidentialityProtectionResult();
...@@ -15,14 +43,13 @@ namespace ngap{ ...@@ -15,14 +43,13 @@ namespace ngap{
void setConfidentialityProtectionResult(e_Ngap_ConfidentialityProtectionResult m_confidentialityProtectionResult); void setConfidentialityProtectionResult(e_Ngap_ConfidentialityProtectionResult m_confidentialityProtectionResult);
bool getConfidentialityProtectionResult(long &m_confidentialityProtectionResult); bool getConfidentialityProtectionResult(long &m_confidentialityProtectionResult);
bool encode2ConfidentialityProtectionResult(Ngap_ConfidentialityProtectionResult_t &); bool encode2ConfidentialityProtectionResult(Ngap_ConfidentialityProtectionResult_t&);
bool decodefromConfidentialityProtectionResult(Ngap_ConfidentialityProtectionResult_t); bool decodefromConfidentialityProtectionResult(Ngap_ConfidentialityProtectionResult_t);
private: private:
long confidentialityProtectionResult; long confidentialityProtectionResult;
}; };
} }
#endif #endif
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "CoreNetworkAssistanceInformation.hpp" #include "CoreNetworkAssistanceInformation.hpp"
extern "C"{ extern "C" {
#include "Ngap_TAIListForInactiveItem.h" #include "Ngap_TAIListForInactiveItem.h"
} }
#include<iostream> #include<iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
CoreNetworkAssistanceInfo::CoreNetworkAssistanceInfo() //------------------------------------------------------------------------------
{ CoreNetworkAssistanceInfo::CoreNetworkAssistanceInfo() {
ueIdentityIndexValue = NULL; ueIdentityIndexValue = NULL;
pagingDRX = NULL; pagingDRX = NULL;
periodicRegUpdateTimer = NULL; periodicRegUpdateTimer = NULL;
micoModeInd = NULL; micoModeInd = NULL;
tai = NULL; tai = NULL;
numoftai = 0; numoftai = 0;
} }
CoreNetworkAssistanceInfo::~CoreNetworkAssistanceInfo(){}
void CoreNetworkAssistanceInfo::setCoreNetworkAssistanceInfo(UEIdentityIndexValue *m_ueIdentityIndexValue, DefaultPagingDRX *m_pagingDRX, PeriodicRegistrationUpdateTimer *m_periodicRegUpdateTimer, bool m_micoModeInd, TAI *m_tai,int m_numoftai) //------------------------------------------------------------------------------
{ CoreNetworkAssistanceInfo::~CoreNetworkAssistanceInfo() {
}
//------------------------------------------------------------------------------
void CoreNetworkAssistanceInfo::setCoreNetworkAssistanceInfo(UEIdentityIndexValue *m_ueIdentityIndexValue, DefaultPagingDRX *m_pagingDRX, PeriodicRegistrationUpdateTimer *m_periodicRegUpdateTimer, bool m_micoModeInd, TAI *m_tai, int m_numoftai) {
ueIdentityIndexValue = m_ueIdentityIndexValue; ueIdentityIndexValue = m_ueIdentityIndexValue;
pagingDRX = m_pagingDRX; pagingDRX = m_pagingDRX;
periodicRegUpdateTimer = m_periodicRegUpdateTimer; periodicRegUpdateTimer = m_periodicRegUpdateTimer;
if(m_micoModeInd) if (m_micoModeInd)
micoModeInd = new MICOModeIndication(); micoModeInd = new MICOModeIndication();
tai = m_tai; tai = m_tai;
numoftai = m_numoftai; numoftai = m_numoftai;
} }
void CoreNetworkAssistanceInfo::setCoreNetworkAssistanceInfo(UEIdentityIndexValue *m_ueIdentityIndexValue, PeriodicRegistrationUpdateTimer *m_periodicRegUpdateTimer, bool m_micoModeInd, TAI *m_tai,int m_numoftai)
{ //------------------------------------------------------------------------------
void CoreNetworkAssistanceInfo::setCoreNetworkAssistanceInfo(UEIdentityIndexValue *m_ueIdentityIndexValue, PeriodicRegistrationUpdateTimer *m_periodicRegUpdateTimer, bool m_micoModeInd, TAI *m_tai, int m_numoftai) {
ueIdentityIndexValue = m_ueIdentityIndexValue; ueIdentityIndexValue = m_ueIdentityIndexValue;
periodicRegUpdateTimer = m_periodicRegUpdateTimer; periodicRegUpdateTimer = m_periodicRegUpdateTimer;
if(m_micoModeInd) if (m_micoModeInd)
micoModeInd = new MICOModeIndication(); micoModeInd = new MICOModeIndication();
tai = m_tai; tai = m_tai;
numoftai = m_numoftai; numoftai = m_numoftai;
} }
bool CoreNetworkAssistanceInfo::encode2CoreNetworkAssistanceInfo(Ngap_CoreNetworkAssistanceInformation_t *coreNetworkAssistanceInformation) //------------------------------------------------------------------------------
{ bool CoreNetworkAssistanceInfo::encode2CoreNetworkAssistanceInfo(Ngap_CoreNetworkAssistanceInformation_t *coreNetworkAssistanceInformation) {
if(!ueIdentityIndexValue->encode2UEIdentityIndexValue(&coreNetworkAssistanceInformation->uEIdentityIndexValue)) return false; if (!ueIdentityIndexValue->encode2UEIdentityIndexValue(&coreNetworkAssistanceInformation->uEIdentityIndexValue))
if(!periodicRegUpdateTimer->encode2PeriodicRegistrationUpdateTimer(&coreNetworkAssistanceInformation->periodicRegistrationUpdateTimer)) return false; return false;
for(int i=0;i<numoftai;i++) if (!periodicRegUpdateTimer->encode2PeriodicRegistrationUpdateTimer(&coreNetworkAssistanceInformation->periodicRegistrationUpdateTimer))
{ return false;
Ngap_TAIListForInactiveItem_t *taiListForInactiveItem = (Ngap_TAIListForInactiveItem_t*)calloc(1,sizeof(Ngap_TAIListForInactiveItem_t)); for (int i = 0; i < numoftai; i++) {
if(!taiListForInactiveItem) return false; Ngap_TAIListForInactiveItem_t *taiListForInactiveItem = (Ngap_TAIListForInactiveItem_t*) calloc(1, sizeof(Ngap_TAIListForInactiveItem_t));
if(!tai[i].encode2TAI(&taiListForInactiveItem->tAI)) return false; if (!taiListForInactiveItem)
if(ASN_SEQUENCE_ADD(&coreNetworkAssistanceInformation->tAIListForInactive.list, taiListForInactiveItem) != 0) return false; return false;
if (!tai[i].encode2TAI(&taiListForInactiveItem->tAI))
return false;
if (ASN_SEQUENCE_ADD(&coreNetworkAssistanceInformation->tAIListForInactive.list, taiListForInactiveItem) != 0)
return false;
} }
if(pagingDRX) if (pagingDRX) {
{ Ngap_PagingDRX_t *pagingdrx = (Ngap_PagingDRX_t*) calloc(1, sizeof(Ngap_PagingDRX_t));
Ngap_PagingDRX_t *pagingdrx = (Ngap_PagingDRX_t *)calloc(1,sizeof(Ngap_PagingDRX_t)); if (!pagingdrx)
if(!pagingdrx) return false; return false;
if(!pagingDRX->encode2DefaultPagingDRX(*pagingdrx)) return false; if (!pagingDRX->encode2DefaultPagingDRX(*pagingdrx))
return false;
coreNetworkAssistanceInformation->uESpecificDRX = pagingdrx; coreNetworkAssistanceInformation->uESpecificDRX = pagingdrx;
} }
if(micoModeInd) if (micoModeInd) {
{ Ngap_MICOModeIndication_t *micomodeindication = (Ngap_MICOModeIndication_t*) calloc(1, sizeof(Ngap_MICOModeIndication_t));
Ngap_MICOModeIndication_t *micomodeindication = (Ngap_MICOModeIndication_t *)calloc(1,sizeof(Ngap_MICOModeIndication_t)); if (!micomodeindication)
if(!micomodeindication) return false; return false;
if(!micoModeInd->encode2MICOModeIndication(micomodeindication)) return false; if (!micoModeInd->encode2MICOModeIndication(micomodeindication))
return false;
coreNetworkAssistanceInformation->mICOModeIndication = micomodeindication; coreNetworkAssistanceInformation->mICOModeIndication = micomodeindication;
} }
return true; return true;
} }
bool CoreNetworkAssistanceInfo::decodefromCoreNetworkAssistanceInfo(Ngap_CoreNetworkAssistanceInformation_t *coreNetworkAssistanceInformation)
{ //------------------------------------------------------------------------------
bool CoreNetworkAssistanceInfo::decodefromCoreNetworkAssistanceInfo(Ngap_CoreNetworkAssistanceInformation_t *coreNetworkAssistanceInformation) {
ueIdentityIndexValue = new UEIdentityIndexValue(); ueIdentityIndexValue = new UEIdentityIndexValue();
periodicRegUpdateTimer = new PeriodicRegistrationUpdateTimer(); periodicRegUpdateTimer = new PeriodicRegistrationUpdateTimer();
if(!ueIdentityIndexValue->decodefromUEIdentityIndexValue(&coreNetworkAssistanceInformation->uEIdentityIndexValue)) return false; if (!ueIdentityIndexValue->decodefromUEIdentityIndexValue(&coreNetworkAssistanceInformation->uEIdentityIndexValue))
if(!periodicRegUpdateTimer->decodefromPeriodicRegistrationUpdateTimer(&coreNetworkAssistanceInformation->periodicRegistrationUpdateTimer)) return false; return false;
if (!periodicRegUpdateTimer->decodefromPeriodicRegistrationUpdateTimer(&coreNetworkAssistanceInformation->periodicRegistrationUpdateTimer))
return false;
numoftai = coreNetworkAssistanceInformation->tAIListForInactive.list.count; numoftai = coreNetworkAssistanceInformation->tAIListForInactive.list.count;
tai = new TAI[numoftai](); tai = new TAI[numoftai]();
for(int i=0;i<numoftai;i++) for (int i = 0; i < numoftai; i++) {
{ if (!tai[i].decodefromTAI(&coreNetworkAssistanceInformation->tAIListForInactive.list.array[i]->tAI))
if(!tai[i].decodefromTAI(&coreNetworkAssistanceInformation->tAIListForInactive.list.array[i]->tAI)) return false; return false;
} }
if(coreNetworkAssistanceInformation->uESpecificDRX) if (coreNetworkAssistanceInformation->uESpecificDRX) {
{
pagingDRX = new DefaultPagingDRX(); pagingDRX = new DefaultPagingDRX();
if(!pagingDRX->decodefromDefaultPagingDRX(*(coreNetworkAssistanceInformation->uESpecificDRX))) return false; if (!pagingDRX->decodefromDefaultPagingDRX(*(coreNetworkAssistanceInformation->uESpecificDRX)))
return false;
} }
if(coreNetworkAssistanceInformation->mICOModeIndication) if (coreNetworkAssistanceInformation->mICOModeIndication) {
{
micoModeInd = new MICOModeIndication(); micoModeInd = new MICOModeIndication();
if(!micoModeInd->decodefromMICOModeIndication(coreNetworkAssistanceInformation->mICOModeIndication)) return false; if (!micoModeInd->decodefromMICOModeIndication(coreNetworkAssistanceInformation->mICOModeIndication))
return false;
} }
return true; return true;
} }
void CoreNetworkAssistanceInfo::getCoreNetworkAssistanceInfo(UEIdentityIndexValue *&m_ueIdentityIndexValue, DefaultPagingDRX *&m_pagingDRX, PeriodicRegistrationUpdateTimer *&m_periodicRegUpdateTimer, bool &m_micoModeInd, TAI *&m_tai,int &m_numoftai)
{ //------------------------------------------------------------------------------
void CoreNetworkAssistanceInfo::getCoreNetworkAssistanceInfo(UEIdentityIndexValue *&m_ueIdentityIndexValue, DefaultPagingDRX *&m_pagingDRX, PeriodicRegistrationUpdateTimer *&m_periodicRegUpdateTimer, bool &m_micoModeInd, TAI *&m_tai, int &m_numoftai) {
m_ueIdentityIndexValue = ueIdentityIndexValue; m_ueIdentityIndexValue = ueIdentityIndexValue;
m_pagingDRX = pagingDRX; m_pagingDRX = pagingDRX;
m_periodicRegUpdateTimer = periodicRegUpdateTimer; m_periodicRegUpdateTimer = periodicRegUpdateTimer;
if(micoModeInd) if (micoModeInd)
m_micoModeInd = true; m_micoModeInd = true;
else else
m_micoModeInd = false; m_micoModeInd = false;
m_tai = tai; m_tai = tai;
m_numoftai = numoftai; m_numoftai = numoftai;
}
} }
}
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _CORENETWORKASSISTANCEINFORMATION_H_ #ifndef _CORENETWORKASSISTANCEINFORMATION_H_
#define _CORENETWORKASSISTANCEINFORMATION_H_ #define _CORENETWORKASSISTANCEINFORMATION_H_
...@@ -7,20 +35,20 @@ ...@@ -7,20 +35,20 @@
#include "MICOModeIndication.hpp" #include "MICOModeIndication.hpp"
#include "TAI.hpp" #include "TAI.hpp"
extern "C"{ extern "C" {
#include "Ngap_CoreNetworkAssistanceInformation.h" #include "Ngap_CoreNetworkAssistanceInformation.h"
} }
namespace ngap{ namespace ngap {
class CoreNetworkAssistanceInfo{ class CoreNetworkAssistanceInfo {
public: public:
CoreNetworkAssistanceInfo(); CoreNetworkAssistanceInfo();
virtual ~CoreNetworkAssistanceInfo(); virtual ~CoreNetworkAssistanceInfo();
void setCoreNetworkAssistanceInfo(UEIdentityIndexValue *m_ueIdentityIndexValue, DefaultPagingDRX *m_pagingDRX, PeriodicRegistrationUpdateTimer *m_periodicRegUpdateTimer, bool m_micoModeInd, TAI *m_tai,int m_numoftai); void setCoreNetworkAssistanceInfo(UEIdentityIndexValue *m_ueIdentityIndexValue, DefaultPagingDRX *m_pagingDRX, PeriodicRegistrationUpdateTimer *m_periodicRegUpdateTimer, bool m_micoModeInd, TAI *m_tai, int m_numoftai);
void setCoreNetworkAssistanceInfo(UEIdentityIndexValue *m_ueIdentityIndexValue, PeriodicRegistrationUpdateTimer *m_periodicRegUpdateTimer, bool m_micoModeInd, TAI *m_tai,int m_numoftai); void setCoreNetworkAssistanceInfo(UEIdentityIndexValue *m_ueIdentityIndexValue, PeriodicRegistrationUpdateTimer *m_periodicRegUpdateTimer, bool m_micoModeInd, TAI *m_tai, int m_numoftai);
void getCoreNetworkAssistanceInfo(UEIdentityIndexValue *&m_ueIdentityIndexValue, DefaultPagingDRX *&m_pagingDRX, PeriodicRegistrationUpdateTimer *&m_periodicRegUpdateTimer, bool &m_micoModeInd, TAI *&m_tai,int &m_numoftai); void getCoreNetworkAssistanceInfo(UEIdentityIndexValue *&m_ueIdentityIndexValue, DefaultPagingDRX *&m_pagingDRX, PeriodicRegistrationUpdateTimer *&m_periodicRegUpdateTimer, bool &m_micoModeInd, TAI *&m_tai, int &m_numoftai);
bool encode2CoreNetworkAssistanceInfo(Ngap_CoreNetworkAssistanceInformation_t *coreNetworkAssistanceInformation); bool encode2CoreNetworkAssistanceInfo(Ngap_CoreNetworkAssistanceInformation_t *coreNetworkAssistanceInformation);
bool decodefromCoreNetworkAssistanceInfo(Ngap_CoreNetworkAssistanceInformation_t *coreNetworkAssistanceInformation); bool decodefromCoreNetworkAssistanceInfo(Ngap_CoreNetworkAssistanceInformation_t *coreNetworkAssistanceInformation);
......
This diff is collapsed.
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _CRITICALITYDIAGNOSTICS_H_ #ifndef _CRITICALITYDIAGNOSTICS_H_
#define _CRITICALITYDIAGNOSTICS_H_ #define _CRITICALITYDIAGNOSTICS_H_
#include "IEsCriticalityDiagnostics.hpp" #include "IEsCriticalityDiagnostics.hpp"
extern "C"{ extern "C" {
#include "Ngap_NGSetupFailure.h" #include "Ngap_NGSetupFailure.h"
#include "Ngap_ProtocolIE-Field.h" #include "Ngap_ProtocolIE-Field.h"
#include "Ngap_CriticalityDiagnostics.h" #include "Ngap_CriticalityDiagnostics.h"
#include "Ngap_CriticalityDiagnostics-IE-List.h" #include "Ngap_CriticalityDiagnostics-IE-List.h"
} }
namespace ngap{ namespace ngap {
class CriticalityDiagnostics{ class CriticalityDiagnostics {
public: public:
CriticalityDiagnostics(); CriticalityDiagnostics();
virtual ~CriticalityDiagnostics(); virtual ~CriticalityDiagnostics();
int encode2pdu(Ngap_NGSetupFailure_t *); int encode2pdu(Ngap_NGSetupFailure_t*);
bool decodefrompdu(Ngap_CriticalityDiagnostics_t *); bool decodefrompdu(Ngap_CriticalityDiagnostics_t*);
void setProcedureCodeValue(Ngap_ProcedureCode_t); void setProcedureCodeValue(Ngap_ProcedureCode_t);
void setTriggeringMessageValue(Ngap_TriggeringMessage_t); void setTriggeringMessageValue(Ngap_TriggeringMessage_t);
void setCriticalityValue(Ngap_Criticality_t); void setCriticalityValue(Ngap_Criticality_t);
void setIEsCriticalityDiagnosticsList(IEsCriticalityDiagnostics *m_iEsCriticalityDiagnostics,int num); void setIEsCriticalityDiagnosticsList(IEsCriticalityDiagnostics *m_iEsCriticalityDiagnostics, int num);
bool getProcedureCodeValue(Ngap_ProcedureCode_t&); bool getProcedureCodeValue(Ngap_ProcedureCode_t&);
bool getTriggeringMessageValue(Ngap_TriggeringMessage_t&); bool getTriggeringMessageValue(Ngap_TriggeringMessage_t&);
bool getCriticalityValue(Ngap_Criticality_t&); bool getCriticalityValue(Ngap_Criticality_t&);
bool getIEsCriticalityDiagnosticsList(IEsCriticalityDiagnostics* &m_iEsCriticalityDiagnostics,int &num); bool getIEsCriticalityDiagnosticsList(IEsCriticalityDiagnostics *&m_iEsCriticalityDiagnostics, int &num);
private: private:
Ngap_ProcedureCode_t procedureCode; /* OPTIONAL */ Ngap_ProcedureCode_t procedureCode; /* OPTIONAL */
Ngap_TriggeringMessage_t triggeringMessage; /* OPTIONAL */ Ngap_TriggeringMessage_t triggeringMessage; /* OPTIONAL */
...@@ -38,7 +66,7 @@ namespace ngap{ ...@@ -38,7 +66,7 @@ namespace ngap{
bool triggeringMessageIsSet; bool triggeringMessageIsSet;
bool procedureCriticalityIsSet; bool procedureCriticalityIsSet;
int numberOfIEsCriticalityDiagnostics; int numberOfIEsCriticalityDiagnostics;
}; };
} }
#endif #endif
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "DLQoSFlowPerTNLInformation.hpp" #include "DLQoSFlowPerTNLInformation.hpp"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
DLQoSFlowPerTNLInformation::DLQoSFlowPerTNLInformation() //------------------------------------------------------------------------------
{ DLQoSFlowPerTNLInformation::DLQoSFlowPerTNLInformation() {
uPTransportLayerInformation = NULL; uPTransportLayerInformation = NULL;
associatedQosFlowList = NULL; associatedQosFlowList = NULL;
} }
DLQoSFlowPerTNLInformation::~DLQoSFlowPerTNLInformation(){}
//------------------------------------------------------------------------------
DLQoSFlowPerTNLInformation::~DLQoSFlowPerTNLInformation() {
}
void DLQoSFlowPerTNLInformation::setDLQoSFlowPerTNLInformation(UpTransportLayerInformation *m_uPTransportLayerInformation, AssociatedQosFlowList *m_associatedQosFlowList) //------------------------------------------------------------------------------
{ void DLQoSFlowPerTNLInformation::setDLQoSFlowPerTNLInformation(UpTransportLayerInformation *m_uPTransportLayerInformation, AssociatedQosFlowList *m_associatedQosFlowList) {
uPTransportLayerInformation = m_uPTransportLayerInformation; uPTransportLayerInformation = m_uPTransportLayerInformation;
associatedQosFlowList = m_associatedQosFlowList; associatedQosFlowList = m_associatedQosFlowList;
} }
bool DLQoSFlowPerTNLInformation::getDLQoSFlowPerTNLInformation(UpTransportLayerInformation *&m_uPTransportLayerInformation, AssociatedQosFlowList *&m_associatedQosFlowList)
{ //------------------------------------------------------------------------------
bool DLQoSFlowPerTNLInformation::getDLQoSFlowPerTNLInformation(UpTransportLayerInformation *&m_uPTransportLayerInformation, AssociatedQosFlowList *&m_associatedQosFlowList) {
m_uPTransportLayerInformation = uPTransportLayerInformation; m_uPTransportLayerInformation = uPTransportLayerInformation;
m_associatedQosFlowList = associatedQosFlowList; m_associatedQosFlowList = associatedQosFlowList;
return true; return true;
} }
bool DLQoSFlowPerTNLInformation::encode2DLQoSFlowPerTNLInformation(Ngap_QosFlowPerTNLInformation_t *qosFlowPerTNLInformation) //------------------------------------------------------------------------------
{ bool DLQoSFlowPerTNLInformation::encode2DLQoSFlowPerTNLInformation(Ngap_QosFlowPerTNLInformation_t *qosFlowPerTNLInformation) {
if(!uPTransportLayerInformation->encode2UpTransportLayerInformation(qosFlowPerTNLInformation->uPTransportLayerInformation)) return false; if (!uPTransportLayerInformation->encode2UpTransportLayerInformation(qosFlowPerTNLInformation->uPTransportLayerInformation))
if(!associatedQosFlowList->encode2AssociatedQosFlowList(qosFlowPerTNLInformation->associatedQosFlowList)) return false; return false;
if (!associatedQosFlowList->encode2AssociatedQosFlowList(qosFlowPerTNLInformation->associatedQosFlowList))
return false;
return true; return true;
} }
bool DLQoSFlowPerTNLInformation::decodefromDLQoSFlowPerTNLInformation(Ngap_QosFlowPerTNLInformation_t *qosFlowPerTNLInformation)
{ //------------------------------------------------------------------------------
bool DLQoSFlowPerTNLInformation::decodefromDLQoSFlowPerTNLInformation(Ngap_QosFlowPerTNLInformation_t *qosFlowPerTNLInformation) {
uPTransportLayerInformation = new UpTransportLayerInformation(); uPTransportLayerInformation = new UpTransportLayerInformation();
associatedQosFlowList = new AssociatedQosFlowList(); associatedQosFlowList = new AssociatedQosFlowList();
if(!uPTransportLayerInformation->decodefromUpTransportLayerInformation(qosFlowPerTNLInformation->uPTransportLayerInformation)) return false; if (!uPTransportLayerInformation->decodefromUpTransportLayerInformation(qosFlowPerTNLInformation->uPTransportLayerInformation))
if(!associatedQosFlowList->decodefromAssociatedQosFlowList(qosFlowPerTNLInformation->associatedQosFlowList)) return false; return false;
if (!associatedQosFlowList->decodefromAssociatedQosFlowList(qosFlowPerTNLInformation->associatedQosFlowList))
return false;
return true; return true;
}
} }
}
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _DLQOSFLOWPERTNLINFORMATION_H_ #ifndef _DLQOSFLOWPERTNLINFORMATION_H_
#define _DLQOSFLOWPERTNLINFORMATION_H_ #define _DLQOSFLOWPERTNLINFORMATION_H_
#include "UPTransportLayerInformation.hpp" #include "UPTransportLayerInformation.hpp"
#include "AssociatedQosFlowList.hpp" #include "AssociatedQosFlowList.hpp"
extern "C"{ extern "C" {
#include "Ngap_QosFlowPerTNLInformation.h" #include "Ngap_QosFlowPerTNLInformation.h"
} }
namespace ngap{ namespace ngap {
class DLQoSFlowPerTNLInformation{ class DLQoSFlowPerTNLInformation {
public: public:
DLQoSFlowPerTNLInformation(); DLQoSFlowPerTNLInformation();
virtual ~DLQoSFlowPerTNLInformation(); virtual ~DLQoSFlowPerTNLInformation();
...@@ -23,10 +51,9 @@ namespace ngap{ ...@@ -23,10 +51,9 @@ namespace ngap{
private: private:
UpTransportLayerInformation *uPTransportLayerInformation; UpTransportLayerInformation *uPTransportLayerInformation;
AssociatedQosFlowList *associatedQosFlowList; AssociatedQosFlowList *associatedQosFlowList;
}; };
} }
#endif #endif
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "DataForwardingNotPossible.hpp" #include "DataForwardingNotPossible.hpp"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
DataForwardingNotPossible::DataForwardingNotPossible(){} //------------------------------------------------------------------------------
DataForwardingNotPossible::DataForwardingNotPossible() {
}
DataForwardingNotPossible::~DataForwardingNotPossible(){} //------------------------------------------------------------------------------
DataForwardingNotPossible::~DataForwardingNotPossible() {
}
#if 0 //------------------------------------------------------------------------------
#if 0
void DataForwardingNotPossible::setDataForwardingNotPossible(const uint32_t m_gtp_teid) void DataForwardingNotPossible::setDataForwardingNotPossible(const uint32_t m_gtp_teid)
{ {
gtp_teid = m_gtp_teid; gtp_teid = m_gtp_teid;
...@@ -22,21 +55,20 @@ namespace ngap{ ...@@ -22,21 +55,20 @@ namespace ngap{
} }
#endif #endif
bool DataForwardingNotPossible::encode2DataForwardingNotPossible(Ngap_DataForwardingNotPossible_t &dataForwardingNotPossible) //------------------------------------------------------------------------------
{ bool DataForwardingNotPossible::encode2DataForwardingNotPossible(Ngap_DataForwardingNotPossible_t &dataForwardingNotPossible) {
dataForwardingNotPossible = Ngap_DataForwardingNotPossible_data_forwarding_not_possible; dataForwardingNotPossible = Ngap_DataForwardingNotPossible_data_forwarding_not_possible;
return true; return true;
}
bool DataForwardingNotPossible::decodefromDataForwardingNotPossible(Ngap_DataForwardingNotPossible_t &dataForwardingNotPossible)
{
if(dataForwardingNotPossible != Ngap_DataForwardingNotPossible_data_forwarding_not_possible) return false;
return true;
}
} }
//------------------------------------------------------------------------------
bool DataForwardingNotPossible::decodefromDataForwardingNotPossible(Ngap_DataForwardingNotPossible_t &dataForwardingNotPossible) {
if (dataForwardingNotPossible != Ngap_DataForwardingNotPossible_data_forwarding_not_possible)
return false;
return true;
}
}
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _DATAFORWARDINGNOTPOSSIBLE_H_ #ifndef _DATAFORWARDINGNOTPOSSIBLE_H_
#define _DATAFORWARDINGNOTPOSSIBLE_H_ #define _DATAFORWARDINGNOTPOSSIBLE_H_
extern "C"{ extern "C" {
#include "Ngap_DataForwardingNotPossible.h" #include "Ngap_DataForwardingNotPossible.h"
} }
namespace ngap{ namespace ngap {
class DataForwardingNotPossible{ class DataForwardingNotPossible {
public: public:
DataForwardingNotPossible(); DataForwardingNotPossible();
virtual ~DataForwardingNotPossible(); virtual ~DataForwardingNotPossible();
...@@ -17,7 +45,7 @@ namespace ngap{ ...@@ -17,7 +45,7 @@ namespace ngap{
bool encode2DataForwardingNotPossible(Ngap_DataForwardingNotPossible_t &dataForwardingNotPossible); bool encode2DataForwardingNotPossible(Ngap_DataForwardingNotPossible_t &dataForwardingNotPossible);
bool decodefromDataForwardingNotPossible(Ngap_DataForwardingNotPossible_t &dataForwardingNotPossible); bool decodefromDataForwardingNotPossible(Ngap_DataForwardingNotPossible_t &dataForwardingNotPossible);
}; };
} }
......
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "DefaultPagingDRX.hpp" #include "DefaultPagingDRX.hpp"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
DefaultPagingDRX::DefaultPagingDRX(){}
DefaultPagingDRX::~DefaultPagingDRX(){} //------------------------------------------------------------------------------
DefaultPagingDRX::DefaultPagingDRX() {
}
//------------------------------------------------------------------------------
DefaultPagingDRX::~DefaultPagingDRX() {
}
void DefaultPagingDRX::setValue(e_Ngap_PagingDRX m_pagingDrx) //------------------------------------------------------------------------------
{ void DefaultPagingDRX::setValue(e_Ngap_PagingDRX m_pagingDrx) {
pagingDrx = m_pagingDrx; pagingDrx = m_pagingDrx;
} }
bool DefaultPagingDRX::encode2DefaultPagingDRX(Ngap_PagingDRX_t & pagingdrx)
{ //------------------------------------------------------------------------------
bool DefaultPagingDRX::encode2DefaultPagingDRX(Ngap_PagingDRX_t &pagingdrx) {
pagingdrx = pagingDrx; pagingdrx = pagingDrx;
return true; return true;
} }
bool DefaultPagingDRX::decodefromDefaultPagingDRX(Ngap_PagingDRX_t &pagingdrx) //------------------------------------------------------------------------------
{ bool DefaultPagingDRX::decodefromDefaultPagingDRX(Ngap_PagingDRX_t &pagingdrx) {
pagingDrx = pagingdrx; pagingDrx = pagingdrx;
return true; return true;
} }
int DefaultPagingDRX::getValue()
{ //------------------------------------------------------------------------------
int DefaultPagingDRX::getValue() {
return pagingDrx; return pagingDrx;
} }
} }
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _DEFAULT_PAGING_DRX_H_ #ifndef _DEFAULT_PAGING_DRX_H_
#define _DEFAULT_PAGING_DRX_H_ #define _DEFAULT_PAGING_DRX_H_
extern "C"{ extern "C" {
#include "Ngap_PagingDRX.h" #include "Ngap_PagingDRX.h"
} }
namespace ngap{ namespace ngap {
class DefaultPagingDRX{ class DefaultPagingDRX {
public: public:
DefaultPagingDRX(); DefaultPagingDRX();
virtual ~DefaultPagingDRX(); virtual ~DefaultPagingDRX();
void setValue(e_Ngap_PagingDRX m_pagingDrx); void setValue(e_Ngap_PagingDRX m_pagingDrx);
int getValue(); int getValue();
bool encode2DefaultPagingDRX(Ngap_PagingDRX_t &); bool encode2DefaultPagingDRX(Ngap_PagingDRX_t&);
bool decodefromDefaultPagingDRX(Ngap_PagingDRX_t &); bool decodefromDefaultPagingDRX(Ngap_PagingDRX_t&);
private: private:
int pagingDrx; int pagingDrx;
}; };
} }
#endif #endif
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "DelayCritical.hpp" #include "DelayCritical.hpp"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
DelayCritical::DelayCritical(){} //------------------------------------------------------------------------------
DelayCritical::DelayCritical() {
}
DelayCritical::~DelayCritical(){} //------------------------------------------------------------------------------
DelayCritical::~DelayCritical() {
}
void DelayCritical::setDelayCritical(e_Ngap_DelayCritical value) //------------------------------------------------------------------------------
{ void DelayCritical::setDelayCritical(e_Ngap_DelayCritical value) {
delaycritical = value; delaycritical = value;
} }
bool DelayCritical::getDelayCritical(e_Ngap_DelayCritical &value)
{ //------------------------------------------------------------------------------
if((delaycritical>=0) && (delaycritical<=1)) bool DelayCritical::getDelayCritical(e_Ngap_DelayCritical &value) {
value = (e_Ngap_DelayCritical)delaycritical; if ((delaycritical >= 0) && (delaycritical <= 1))
value = (e_Ngap_DelayCritical) delaycritical;
else else
false; false;
return true; return true;
} }
bool DelayCritical::encode2DelayCritical(Ngap_DelayCritical_t *delayCritical) //------------------------------------------------------------------------------
{ bool DelayCritical::encode2DelayCritical(Ngap_DelayCritical_t *delayCritical) {
*delayCritical = delaycritical; *delayCritical = delaycritical;
return true; return true;
} }
bool DelayCritical::decodefromDelayCritical(Ngap_DelayCritical_t *delayCritical)
{ //------------------------------------------------------------------------------
bool DelayCritical::decodefromDelayCritical(Ngap_DelayCritical_t *delayCritical) {
delaycritical = *delayCritical; delaycritical = *delayCritical;
return true; return true;
} }
} }
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _DELAYCRITICAL_H_ #ifndef _DELAYCRITICAL_H_
#define _DELAYCRITICAL_H_ #define _DELAYCRITICAL_H_
extern "C"{ extern "C" {
#include "Ngap_DelayCritical.h" #include "Ngap_DelayCritical.h"
} }
namespace ngap{ namespace ngap {
class DelayCritical{ class DelayCritical {
public: public:
DelayCritical(); DelayCritical();
virtual ~DelayCritical(); virtual ~DelayCritical();
...@@ -15,14 +43,13 @@ namespace ngap{ ...@@ -15,14 +43,13 @@ namespace ngap{
void setDelayCritical(e_Ngap_DelayCritical value); void setDelayCritical(e_Ngap_DelayCritical value);
bool getDelayCritical(e_Ngap_DelayCritical &value); bool getDelayCritical(e_Ngap_DelayCritical &value);
bool encode2DelayCritical(Ngap_DelayCritical_t *); bool encode2DelayCritical(Ngap_DelayCritical_t*);
bool decodefromDelayCritical(Ngap_DelayCritical_t *); bool decodefromDelayCritical(Ngap_DelayCritical_t*);
private: private:
long delaycritical; long delaycritical;
}; };
} }
#endif #endif
This diff is collapsed.
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _DYNAMIC5QIDESCRIPTOR_H_ #ifndef _DYNAMIC5QIDESCRIPTOR_H_
#define _DYNAMIC5QIDESCRIPTOR_H_ #define _DYNAMIC5QIDESCRIPTOR_H_
......
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "EUTRA-CGI.hpp" #include "EUTRA-CGI.hpp"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
EUTRA_CGI::EUTRA_CGI()
{ //------------------------------------------------------------------------------
EUTRA_CGI::EUTRA_CGI() {
plmnId = NULL; plmnId = NULL;
eUTRACellIdentity = NULL; eUTRACellIdentity = NULL;
} }
EUTRA_CGI::~EUTRA_CGI(){}
void EUTRA_CGI::setEUTRA_CGI(PlmnId* m_plmnId,EUTRACellIdentity* m_eUTRACellIdentity) //------------------------------------------------------------------------------
{ EUTRA_CGI::~EUTRA_CGI() {
}
//------------------------------------------------------------------------------
void EUTRA_CGI::setEUTRA_CGI(PlmnId *m_plmnId, EUTRACellIdentity *m_eUTRACellIdentity) {
plmnId = m_plmnId; plmnId = m_plmnId;
eUTRACellIdentity = m_eUTRACellIdentity; eUTRACellIdentity = m_eUTRACellIdentity;
} }
bool EUTRA_CGI::encode2EUTRA_CGI(Ngap_EUTRA_CGI_t *eutra_cgi)
{ //------------------------------------------------------------------------------
if(!plmnId->encode2octetstring(eutra_cgi->pLMNIdentity)) return false; bool EUTRA_CGI::encode2EUTRA_CGI(Ngap_EUTRA_CGI_t *eutra_cgi) {
if(!eUTRACellIdentity->encode2bitstring(eutra_cgi->eUTRACellIdentity)) return false; if (!plmnId->encode2octetstring(eutra_cgi->pLMNIdentity))
return false;
if (!eUTRACellIdentity->encode2bitstring(eutra_cgi->eUTRACellIdentity))
return false;
return true; return true;
} }
bool EUTRA_CGI::decodefromEUTRA_CGI(Ngap_EUTRA_CGI_t *eutra_cgi)
{ //------------------------------------------------------------------------------
bool EUTRA_CGI::decodefromEUTRA_CGI(Ngap_EUTRA_CGI_t *eutra_cgi) {
plmnId = new PlmnId(); plmnId = new PlmnId();
eUTRACellIdentity = new EUTRACellIdentity(); eUTRACellIdentity = new EUTRACellIdentity();
if(!plmnId->decodefromoctetstring(eutra_cgi->pLMNIdentity)) return false; if (!plmnId->decodefromoctetstring(eutra_cgi->pLMNIdentity))
if(!eUTRACellIdentity->decodefrombitstring(eutra_cgi->eUTRACellIdentity)) return false; return false;
if (!eUTRACellIdentity->decodefrombitstring(eutra_cgi->eUTRACellIdentity))
return false;
return true; return true;
} }
void EUTRA_CGI::getEUTRA_CGI(PlmnId* &m_plmnId,EUTRACellIdentity* &m_eUTRACellIdentity)
{ //------------------------------------------------------------------------------
void EUTRA_CGI::getEUTRA_CGI(PlmnId *&m_plmnId, EUTRACellIdentity *&m_eUTRACellIdentity) {
m_plmnId = plmnId; m_plmnId = plmnId;
m_eUTRACellIdentity = eUTRACellIdentity; m_eUTRACellIdentity = eUTRACellIdentity;
} }
} }
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _EUTRA_CGI_H_ #ifndef _EUTRA_CGI_H_
#define _EUTRA_CGI_H_ #define _EUTRA_CGI_H_
#include "PlmnId.hpp" #include "PlmnId.hpp"
#include "EUTRACellIdentity.hpp" #include "EUTRACellIdentity.hpp"
extern "C"{ extern "C" {
#include "Ngap_EUTRA-CGI.h" #include "Ngap_EUTRA-CGI.h"
} }
namespace ngap{ namespace ngap {
class EUTRA_CGI{ class EUTRA_CGI {
public: public:
EUTRA_CGI(); EUTRA_CGI();
virtual ~EUTRA_CGI(); virtual ~EUTRA_CGI();
void setEUTRA_CGI(PlmnId*,EUTRACellIdentity*); void setEUTRA_CGI(PlmnId*, EUTRACellIdentity*);
bool encode2EUTRA_CGI(Ngap_EUTRA_CGI_t *); bool encode2EUTRA_CGI(Ngap_EUTRA_CGI_t*);
bool decodefromEUTRA_CGI(Ngap_EUTRA_CGI_t *); bool decodefromEUTRA_CGI(Ngap_EUTRA_CGI_t*);
void getEUTRA_CGI(PlmnId* &,EUTRACellIdentity* &); void getEUTRA_CGI(PlmnId*&, EUTRACellIdentity*&);
private: private:
PlmnId *plmnId; PlmnId *plmnId;
EUTRACellIdentity *eUTRACellIdentity; EUTRACellIdentity *eUTRACellIdentity;
}; };
} }
#endif #endif
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "EUTRACellIdentity.hpp" #include "EUTRACellIdentity.hpp"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
EUTRACellIdentity::EUTRACellIdentity()
{ //------------------------------------------------------------------------------
EUTRACellIdentity::EUTRACellIdentity() {
eutracellidentity = 0; eutracellidentity = 0;
} }
EUTRACellIdentity::~EUTRACellIdentity(){}
void EUTRACellIdentity::setEUTRACellIdentity(uint32_t m_eutracellidentity) //------------------------------------------------------------------------------
{ EUTRACellIdentity::~EUTRACellIdentity() {
}
//------------------------------------------------------------------------------
void EUTRACellIdentity::setEUTRACellIdentity(uint32_t m_eutracellidentity) {
eutracellidentity = m_eutracellidentity; eutracellidentity = m_eutracellidentity;
} }
bool EUTRACellIdentity::encode2bitstring(Ngap_EUTRACellIdentity_t&eUTRACellIdentity)
{ //------------------------------------------------------------------------------
bool EUTRACellIdentity::encode2bitstring(Ngap_EUTRACellIdentity_t &eUTRACellIdentity) {
eUTRACellIdentity.bits_unused = 4; eUTRACellIdentity.bits_unused = 4;
eUTRACellIdentity.size = 4; eUTRACellIdentity.size = 4;
eUTRACellIdentity.buf = (uint8_t *)calloc(1,sizeof(uint32_t)); eUTRACellIdentity.buf = (uint8_t*) calloc(1, sizeof(uint32_t));
if(!eUTRACellIdentity.buf ) return false; if (!eUTRACellIdentity.buf)
return false;
eUTRACellIdentity.buf[3] = eutracellidentity & 0x000000ff; eUTRACellIdentity.buf[3] = eutracellidentity & 0x000000ff;
eUTRACellIdentity.buf[2] = (eutracellidentity & 0x0000ff00)>>8; eUTRACellIdentity.buf[2] = (eutracellidentity & 0x0000ff00) >> 8;
eUTRACellIdentity.buf[1] = (eutracellidentity & 0x00ff0000)>>16; eUTRACellIdentity.buf[1] = (eutracellidentity & 0x00ff0000) >> 16;
eUTRACellIdentity.buf[0] = (eutracellidentity & 0xff000000)>>24; eUTRACellIdentity.buf[0] = (eutracellidentity & 0xff000000) >> 24;
return true; return true;
} }
bool EUTRACellIdentity::decodefrombitstring(Ngap_EUTRACellIdentity_t &eUTRACellIdentity)
{ //------------------------------------------------------------------------------
if(!eUTRACellIdentity.buf) return false; bool EUTRACellIdentity::decodefrombitstring(Ngap_EUTRACellIdentity_t &eUTRACellIdentity) {
if (!eUTRACellIdentity.buf)
eutracellidentity = eUTRACellIdentity.buf[0]<<24; return false;
eutracellidentity |= eUTRACellIdentity.buf[1]<<16;
eutracellidentity |= eUTRACellIdentity.buf[2]<<8; eutracellidentity = eUTRACellIdentity.buf[0] << 24;
eutracellidentity |= eUTRACellIdentity.buf[1] << 16;
eutracellidentity |= eUTRACellIdentity.buf[2] << 8;
eutracellidentity |= eUTRACellIdentity.buf[3]; eutracellidentity |= eUTRACellIdentity.buf[3];
return true; return true;
} }
uint32_t EUTRACellIdentity::getEUTRACellIdentity()
{ //------------------------------------------------------------------------------
uint32_t EUTRACellIdentity::getEUTRACellIdentity() {
return eutracellidentity; return eutracellidentity;
} }
} }
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _EUTRACellIdentity_H_ #ifndef _EUTRACellIdentity_H_
#define _EUTRACellIdentity_H_ #define _EUTRACellIdentity_H_
extern "C"{ extern "C" {
#include "Ngap_EUTRACellIdentity.h" #include "Ngap_EUTRACellIdentity.h"
} }
namespace ngap{ namespace ngap {
class EUTRACellIdentity{ class EUTRACellIdentity {
public: public:
EUTRACellIdentity(); EUTRACellIdentity();
virtual ~EUTRACellIdentity(); virtual ~EUTRACellIdentity();
bool encode2bitstring(Ngap_EUTRACellIdentity_t&eUTRACellIdentity); bool encode2bitstring(Ngap_EUTRACellIdentity_t &eUTRACellIdentity);
bool decodefrombitstring(Ngap_EUTRACellIdentity_t &eUTRACellIdentity); bool decodefrombitstring(Ngap_EUTRACellIdentity_t &eUTRACellIdentity);
uint32_t getEUTRACellIdentity(); uint32_t getEUTRACellIdentity();
void setEUTRACellIdentity(uint32_t m_eutracellidentity); void setEUTRACellIdentity(uint32_t m_eutracellidentity);
private: private:
uint32_t eutracellidentity; uint32_t eutracellidentity;
}; };
} }
#endif #endif
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "FiveGSTmsi.hpp" #include "FiveGSTmsi.hpp"
using namespace ngap; using namespace ngap;
FiveGSTmsi::FiveGSTmsi(){} //------------------------------------------------------------------------------
FiveGSTmsi::FiveGSTmsi() {
}
FiveGSTmsi::~FiveGSTmsi(){} //------------------------------------------------------------------------------
FiveGSTmsi::~FiveGSTmsi() {
}
bool FiveGSTmsi::decodefrompdu(Ngap_FiveG_S_TMSI_t pdu){ //------------------------------------------------------------------------------
bool FiveGSTmsi::decodefrompdu(Ngap_FiveG_S_TMSI_t pdu) {
amfSetid.decodefrombitstring(pdu.aMFSetID); amfSetid.decodefrombitstring(pdu.aMFSetID);
amfPointer.decodefrombitstring(pdu.aMFPointer); amfPointer.decodefrombitstring(pdu.aMFPointer);
uint32_t tmsi = ntohl(*(uint32_t*)pdu.fiveG_TMSI.buf); uint32_t tmsi = ntohl(*(uint32_t*) pdu.fiveG_TMSI.buf);
int size = pdu.fiveG_TMSI.size; int size = pdu.fiveG_TMSI.size;
std::string setId, pointer; std::string setId, pointer;
amfSetid.getAMFSetID(setId); amfSetid.getAMFSetID(setId);
amfPointer.getAMFPointer(pointer); amfPointer.getAMFPointer(pointer);
_5g_s_tmsi = setId+pointer+std::to_string(tmsi); _5g_s_tmsi = setId + pointer + std::to_string(tmsi);
return true; return true;
} }
void FiveGSTmsi::getValue(std::string &tmsi){ //------------------------------------------------------------------------------
void FiveGSTmsi::getValue(std::string &tmsi) {
tmsi = _5g_s_tmsi; tmsi = _5g_s_tmsi;
} }
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _FiveGSTmsi_H_ #ifndef _FiveGSTmsi_H_
#define _FiveGSTmsi_H_ #define _FiveGSTmsi_H_
#include "AMFSetID.hpp" #include "AMFSetID.hpp"
#include "AMFPointer.hpp" #include "AMFPointer.hpp"
#include <string> #include <string>
extern "C"{ extern "C" {
#include "Ngap_FiveG-S-TMSI.h" #include "Ngap_FiveG-S-TMSI.h"
} }
namespace ngap{ namespace ngap {
class FiveGSTmsi{ class FiveGSTmsi {
public: public:
FiveGSTmsi(); FiveGSTmsi();
~FiveGSTmsi(); ~FiveGSTmsi();
public: public:
bool decodefrompdu(Ngap_FiveG_S_TMSI_t pdu); bool decodefrompdu(Ngap_FiveG_S_TMSI_t pdu);
void getValue(std::string &value); void getValue(std::string &value);
private: private:
std::string _5g_s_tmsi; std::string _5g_s_tmsi;
AMFSetID amfSetid; AMFSetID amfSetid;
AMFPointer amfPointer; AMFPointer amfPointer;
}; };
} }
#endif #endif
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#include "FiveQI.hpp" #include "FiveQI.hpp"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
namespace ngap{ namespace ngap {
FiveQI::FiveQI(){} //------------------------------------------------------------------------------
FiveQI::FiveQI() {
}
FiveQI::~FiveQI(){} //------------------------------------------------------------------------------
FiveQI::~FiveQI() {
}
void FiveQI::setFiveQI(long value) //------------------------------------------------------------------------------
{ void FiveQI::setFiveQI(long value) {
fiveqi = value; fiveqi = value;
} }
bool FiveQI::getFiveQI(long &value)
{ //------------------------------------------------------------------------------
bool FiveQI::getFiveQI(long &value) {
value = fiveqi; value = fiveqi;
return true; return true;
} }
bool FiveQI::encode2FiveQI(Ngap_FiveQI_t *fiveQI) //------------------------------------------------------------------------------
{ bool FiveQI::encode2FiveQI(Ngap_FiveQI_t *fiveQI) {
*fiveQI = fiveqi; *fiveQI = fiveqi;
return true; return true;
} }
bool FiveQI::decodefromFiveQI(Ngap_FiveQI_t *fiveQI)
{ //------------------------------------------------------------------------------
bool FiveQI::decodefromFiveQI(Ngap_FiveQI_t *fiveQI) {
fiveqi = *fiveQI; fiveqi = *fiveQI;
return true; return true;
}
} }
}
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _FIVEQI_H_ #ifndef _FIVEQI_H_
#define _FIVEQI_H_ #define _FIVEQI_H_
extern "C"{ extern "C" {
#include "Ngap_FiveQI.h" #include "Ngap_FiveQI.h"
} }
namespace ngap{ namespace ngap {
class FiveQI{ class FiveQI {
public: public:
FiveQI(); FiveQI();
virtual ~FiveQI(); virtual ~FiveQI();
...@@ -15,11 +43,11 @@ namespace ngap{ ...@@ -15,11 +43,11 @@ namespace ngap{
void setFiveQI(long value); void setFiveQI(long value);
bool getFiveQI(long &value); bool getFiveQI(long &value);
bool encode2FiveQI(Ngap_FiveQI_t *); bool encode2FiveQI(Ngap_FiveQI_t*);
bool decodefromFiveQI(Ngap_FiveQI_t *); bool decodefromFiveQI(Ngap_FiveQI_t*);
private: private:
long fiveqi; long fiveqi;
}; };
} }
......
This diff is collapsed.
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file
\brief
\author Keliang DU, BUPT
\date 2020
\email: contact@openairinterface.org
*/
#ifndef _GBR_QOSINFORMATION_H_ #ifndef _GBR_QOSINFORMATION_H_
#define _GBR_QOSINFORMATION_H_ #define _GBR_QOSINFORMATION_H_
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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