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

Refactor NGResetAck

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