Commit 49a301cf authored by Tien Thinh NGUYEN's avatar Tien Thinh NGUYEN

Refactor NGResetAck

parent ece642c2
...@@ -54,31 +54,25 @@ void UEAssociatedLogicalNGConnectionList::addItem( ...@@ -54,31 +54,25 @@ void UEAssociatedLogicalNGConnectionList::addItem(
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool UEAssociatedLogicalNGConnectionList::encode( bool UEAssociatedLogicalNGConnectionList::encode(
Ngap_UE_associatedLogicalNG_connectionList_t* Ngap_UE_associatedLogicalNG_connectionList_t* list) {
ue_associatedLogicalNG_connectionList) {
for (auto l : list_) { for (auto l : list_) {
Ngap_UE_associatedLogicalNG_connectionItem_t* item = Ngap_UE_associatedLogicalNG_connectionItem_t* item =
(Ngap_UE_associatedLogicalNG_connectionItem_t*) calloc( (Ngap_UE_associatedLogicalNG_connectionItem_t*) calloc(
1, sizeof(Ngap_UE_associatedLogicalNG_connectionItem_t)); 1, sizeof(Ngap_UE_associatedLogicalNG_connectionItem_t));
if (!item) return false; if (!item) return false;
if (!l.encode(*item)) return false; if (!l.encode(*item)) return false;
// if (!ueAssociatedLogicalNGConnectionItem[i].encode(*item)) return false; if (ASN_SEQUENCE_ADD(&list->list, item) != 0) return false;
if (ASN_SEQUENCE_ADD(&ue_associatedLogicalNG_connectionList->list, item) !=
0)
return false;
} }
return true; return true;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool UEAssociatedLogicalNGConnectionList::decode( bool UEAssociatedLogicalNGConnectionList::decode(
Ngap_UE_associatedLogicalNG_connectionList_t* Ngap_UE_associatedLogicalNG_connectionList_t* list) {
ue_associatedLogicalNG_connectionList) {
list_.clear(); list_.clear();
for (int i = 0; i < ue_associatedLogicalNG_connectionList->list.count; i++) { for (int i = 0; i < list->list.count; i++) {
UEAssociatedLogicalNGConnectionItem item = {}; UEAssociatedLogicalNGConnectionItem item = {};
if (!item.decode(ue_associatedLogicalNG_connectionList->list.array[i])) if (!item.decode(list->list.array[i])) return false;
return false;
list_.push_back(item); list_.push_back(item);
} }
return true; return true;
......
...@@ -124,30 +124,7 @@ bool UEAssociatedLogicalNGConnectionItem::encode( ...@@ -124,30 +124,7 @@ bool UEAssociatedLogicalNGConnectionItem::encode(
ran_ue_ngap_id_.value().encode(*item->rAN_UE_NGAP_ID); ran_ue_ngap_id_.value().encode(*item->rAN_UE_NGAP_ID);
return true; return true;
} }
/*
//------------------------------------------------------------------------------
bool UEAssociatedLogicalNGConnectionItem::encode(
UEAssociatedLogicalNGConnectionItem& item) {
item.amfUeNgapId = new AMF_UE_NGAP_ID();
item.amfUeNgapId = amfUeNgapId;
item.ranUeNgapId = new RAN_UE_NGAP_ID();
item.ranUeNgapId = ranUeNgapId;
return true;
}
//------------------------------------------------------------------------------
bool UEAssociatedLogicalNGConnectionItem::decode(
UEAssociatedLogicalNGConnectionItem& item) {
if (!amf_ue_ngap_id_.has_value()){
amf_ue_ngap_id_ = std::make_optional<AMF_UE_NGAP_ID>();
}
amf_ue_ngap_id_.value().set(item.amfUeNgapId->get());
if (!ranUeNgapId) ranUeNgapId = new RAN_UE_NGAP_ID();
ran_ue_ngap_id_.value().set(item.ranUeNgapId->getRanUeNgapId());
return true;
}
*/
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool UEAssociatedLogicalNGConnectionItem::decode( bool UEAssociatedLogicalNGConnectionItem::decode(
Ngap_UE_associatedLogicalNG_connectionItem_t* item) { Ngap_UE_associatedLogicalNG_connectionItem_t* item) {
......
...@@ -33,15 +33,13 @@ namespace ngap { ...@@ -33,15 +33,13 @@ namespace ngap {
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
NGResetAckMsg::NGResetAckMsg() { NGResetAckMsg::NGResetAckMsg() {
ngResetAckIEs = nullptr; ngResetAckIEs = nullptr;
ueAssociatedLogicalNGConnectionList = nullptr; ueAssociatedLogicalNGConnectionList = std::nullopt;
CriticalityDiagnostics = nullptr; CriticalityDiagnostics = nullptr;
NgapMessage::setMessageType(NgapMessageType::NG_RESET_ACKNOWLEDGE); NgapMessage::setMessageType(NgapMessageType::NG_RESET_ACKNOWLEDGE);
initialize(); initialize();
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
NGResetAckMsg::~NGResetAckMsg() { NGResetAckMsg::~NGResetAckMsg() {
if (ueAssociatedLogicalNGConnectionList)
free_wrapper((void**) &ueAssociatedLogicalNGConnectionList);
if (CriticalityDiagnostics) free_wrapper((void**) &CriticalityDiagnostics); if (CriticalityDiagnostics) free_wrapper((void**) &CriticalityDiagnostics);
} }
...@@ -54,20 +52,19 @@ void NGResetAckMsg::initialize() { ...@@ -54,20 +52,19 @@ void NGResetAckMsg::initialize() {
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void NGResetAckMsg::setUE_associatedLogicalNG_connectionList( void NGResetAckMsg::setUE_associatedLogicalNG_connectionList(
std::vector<UEAssociatedLogicalNGConnectionItem>& list) { std::vector<UEAssociatedLogicalNGConnectionItem>& list) {
if (!ueAssociatedLogicalNGConnectionList) { UEAssociatedLogicalNGConnectionList tmp = {};
tmp.set(list);
ueAssociatedLogicalNGConnectionList = ueAssociatedLogicalNGConnectionList =
(UEAssociatedLogicalNGConnectionList*) calloc( std::make_optional<UEAssociatedLogicalNGConnectionList>(tmp);
1, sizeof(UEAssociatedLogicalNGConnectionList));
}
ueAssociatedLogicalNGConnectionList->set(list);
addUE_associatedLogicalNG_connectionList(); addUE_associatedLogicalNG_connectionList();
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void NGResetAckMsg::getUE_associatedLogicalNG_connectionList( void NGResetAckMsg::getUE_associatedLogicalNG_connectionList(
std::vector<UEAssociatedLogicalNGConnectionItem>& list) { std::vector<UEAssociatedLogicalNGConnectionItem>& list) {
if (ueAssociatedLogicalNGConnectionList) { if (ueAssociatedLogicalNGConnectionList.has_value()) {
ueAssociatedLogicalNGConnectionList->get(list); ueAssociatedLogicalNGConnectionList.value().get(list);
} }
} }
...@@ -80,7 +77,7 @@ void NGResetAckMsg::addUE_associatedLogicalNG_connectionList() { ...@@ -80,7 +77,7 @@ void NGResetAckMsg::addUE_associatedLogicalNG_connectionList() {
ie->value.present = ie->value.present =
Ngap_NGResetAcknowledgeIEs__value_PR_UE_associatedLogicalNG_connectionList; Ngap_NGResetAcknowledgeIEs__value_PR_UE_associatedLogicalNG_connectionList;
if (!ueAssociatedLogicalNGConnectionList->encode( if (!ueAssociatedLogicalNGConnectionList.value().encode(
&ie->value.choice.UE_associatedLogicalNG_connectionList)) { &ie->value.choice.UE_associatedLogicalNG_connectionList)) {
Logger::ngap().error( Logger::ngap().error(
"Encode NGAP UE_associatedLogicalNG_connectionList IE error"); "Encode NGAP UE_associatedLogicalNG_connectionList IE error");
...@@ -115,10 +112,8 @@ bool NGResetAckMsg::decodeFromPdu(Ngap_NGAP_PDU_t* ngapMsgPdu) { ...@@ -115,10 +112,8 @@ bool NGResetAckMsg::decodeFromPdu(Ngap_NGAP_PDU_t* ngapMsgPdu) {
Ngap_Criticality_ignore && Ngap_Criticality_ignore &&
ngResetAckIEs->protocolIEs.list.array[i]->value.present == ngResetAckIEs->protocolIEs.list.array[i]->value.present ==
Ngap_NGResetAcknowledgeIEs__value_PR_UE_associatedLogicalNG_connectionList) { Ngap_NGResetAcknowledgeIEs__value_PR_UE_associatedLogicalNG_connectionList) {
ueAssociatedLogicalNGConnectionList = UEAssociatedLogicalNGConnectionList tmp = {};
new UEAssociatedLogicalNGConnectionList(); if (!tmp.decode(&ngResetAckIEs->protocolIEs.list.array[i]
if (!ueAssociatedLogicalNGConnectionList->decode(
&ngResetAckIEs->protocolIEs.list.array[i]
->value.choice ->value.choice
.UE_associatedLogicalNG_connectionList)) { .UE_associatedLogicalNG_connectionList)) {
Logger::ngap().error( Logger::ngap().error(
...@@ -126,7 +121,8 @@ bool NGResetAckMsg::decodeFromPdu(Ngap_NGAP_PDU_t* ngapMsgPdu) { ...@@ -126,7 +121,8 @@ bool NGResetAckMsg::decodeFromPdu(Ngap_NGAP_PDU_t* ngapMsgPdu) {
"error"); "error");
return false; return false;
} }
ueAssociatedLogicalNGConnectionList =
std::make_optional<UEAssociatedLogicalNGConnectionList>(tmp);
} else { } else {
Logger::ngap().error( Logger::ngap().error(
"Decoded NGAP UE_associatedLogicalNG_connectionList IE " "Decoded NGAP UE_associatedLogicalNG_connectionList IE "
......
...@@ -27,6 +27,8 @@ ...@@ -27,6 +27,8 @@
#include "UEAssociatedLogicalNGConnectionList.hpp" #include "UEAssociatedLogicalNGConnectionList.hpp"
#include "NgapMessage.hpp" #include "NgapMessage.hpp"
#include <optional>
namespace ngap { namespace ngap {
class NGResetAckMsg : public NgapMessage { class NGResetAckMsg : public NgapMessage {
...@@ -49,9 +51,9 @@ class NGResetAckMsg : public NgapMessage { ...@@ -49,9 +51,9 @@ class NGResetAckMsg : public NgapMessage {
private: private:
Ngap_NGResetAcknowledge_t* ngResetAckIEs; Ngap_NGResetAcknowledge_t* ngResetAckIEs;
UEAssociatedLogicalNGConnectionList* std::optional<UEAssociatedLogicalNGConnectionList>
ueAssociatedLogicalNGConnectionList; // Optional ueAssociatedLogicalNGConnectionList; // Optional
Ngap_CriticalityDiagnostics_t* CriticalityDiagnostics; // Optional Ngap_CriticalityDiagnostics_t* CriticalityDiagnostics; // TODO: Optional
}; };
} // namespace ngap } // namespace ngap
......
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