Commit 25fc5487 authored by aligungr's avatar aligungr

UE SRA dev.

parent bf553cba
......@@ -175,10 +175,10 @@ void UeMrTask::receiveDownlinkPayload(rls::EPayloadType type, OctetString &&payl
{
if (type == rls::EPayloadType::RRC)
{
auto *nw = new NwUeMrToRrc(NwUeMrToRrc::RRC_PDU_DELIVERY);
nw->channel = static_cast<rrc::RrcChannel>(payload.getI(0));
nw->pdu = payload.subCopy(1);
m_base->rrcTask->push(nw);
//auto *nw = new NwUeMrToRrc(NwUeMrToRrc::RRC_PDU_DELIVERY);
//nw->channel = static_cast<rrc::RrcChannel>(payload.getI(0));
//nw->pdu = payload.subCopy(1);
//m_base->rrcTask->push(nw);
}
else if (type == rls::EPayloadType::DATA)
{
......
......@@ -63,14 +63,9 @@ struct NwUeMrToRrc : NtsMessage
{
enum PR
{
RRC_PDU_DELIVERY,
RADIO_LINK_FAILURE
} present;
// RRC_PDU_DELIVERY
rrc::RrcChannel channel{};
OctetString pdu{};
explicit NwUeMrToRrc(PR present) : NtsMessage(NtsMessageType::UE_MR_TO_RRC), present(present)
{
}
......@@ -245,7 +240,8 @@ struct NwUeSraToRrc : NtsMessage
enum PR
{
PLMN_SEARCH_RESPONSE,
SERVING_CELL_CHANGE
SERVING_CELL_CHANGE,
RRC_PDU_DELIVERY
} present;
// PLMN_SEARCH_RESPONSE
......@@ -254,6 +250,10 @@ struct NwUeSraToRrc : NtsMessage
// SERVING_CELL_CHANGE
UeCellInfo servingCell{};
// RRC_PDU_DELIVERY
rrc::RrcChannel channel{};
OctetString pdu{};
explicit NwUeSraToRrc(PR present) : NtsMessage(NtsMessageType::UE_SRA_TO_RRC), present(present)
{
}
......
......@@ -49,10 +49,6 @@ void UeRrcTask::onLoop()
auto *w = dynamic_cast<NwUeMrToRrc *>(msg);
switch (w->present)
{
case NwUeMrToRrc::RRC_PDU_DELIVERY: {
handleDownlinkRrc(w->channel, w->pdu);
break;
}
case NwUeMrToRrc::RADIO_LINK_FAILURE: {
handleRadioLinkFailure();
break;
......@@ -112,6 +108,10 @@ void UeRrcTask::onLoop()
m_base->nasTask->push(wr);
break;
}
case NwUeSraToRrc::RRC_PDU_DELIVERY: {
handleDownlinkRrc(w->channel, w->pdu);
break;
}
}
break;
}
......
......@@ -61,7 +61,8 @@ void UeSraTask::onLoop()
handleCellSelectionCommand(w->cellId, w->isSuitableCell);
break;
case NwUeRrcToSra::RRC_PDU_DELIVERY:
deliverUplinkRrc(w->channel, std::move(w->pdu));
deliverUplinkPdu(sra::EPduType::RRC, std::move(w->pdu),
OctetString::FromOctet4(static_cast<int>(w->channel)));
break;
}
break;
......
......@@ -50,10 +50,10 @@ class UeSraTask : public NtsTask
void onQuit() override;
private: /* Transport */
void receiveSraMessage(const InetAddress &address, const sra::SraMessage &msg);
void receiveSraMessage(const InetAddress &address, sra::SraMessage &msg);
void sendSraMessage(const InetAddress &address, const sra::SraMessage &msg);
void deliverUplinkPdu(sra::EPduType pduType, OctetString &&pdu, OctetString &&payload);
void deliverUplinkRrc(rrc::RrcChannel channel, OctetString &&pdu);
void deliverDownlinkPdu(sra::SraPduDelivery &msg);
private: /* Measurement */
void onMeasurement();
......
......@@ -7,18 +7,24 @@
//
#include "task.hpp"
#include <ue/nts.hpp>
#include <ue/rrc/task.hpp>
#include <utils/constants.hpp>
namespace nr::ue
{
void UeSraTask::receiveSraMessage(const InetAddress &address, const sra::SraMessage &msg)
void UeSraTask::receiveSraMessage(const InetAddress &address, sra::SraMessage &msg)
{
switch (msg.msgType)
{
case sra::EMessageType::CELL_INFO_RESPONSE: {
receiveCellInfoResponse((const sra::SraCellInfoResponse &)msg);
break;
case sra::EMessageType::PDU_DELIVERY: {
deliverDownlinkPdu((sra::SraPduDelivery &)msg);
break;
}
default:
m_logger->err("Unhandled SRA message type[%d]", static_cast<int>(msg.msgType));
break;
......@@ -48,9 +54,15 @@ void UeSraTask::deliverUplinkPdu(sra::EPduType pduType, OctetString &&pdu, Octet
sendSraMessage(InetAddress{m_servingCell->linkIp, cons::PortalPort}, msg);
}
void UeSraTask::deliverUplinkRrc(rrc::RrcChannel channel, OctetString &&pdu)
void UeSraTask::deliverDownlinkPdu(sra::SraPduDelivery &msg)
{
deliverUplinkPdu(sra::EPduType::RRC, std::move(pdu), OctetString::FromOctet4(static_cast<int>(channel)));
if (msg.pduType == sra::EPduType::RRC)
{
auto *nw = new NwUeSraToRrc(NwUeSraToRrc::RRC_PDU_DELIVERY);
nw->channel = static_cast<rrc::RrcChannel>(msg.payload.get4I(0));
nw->pdu = std::move(msg.pdu);
m_base->rrcTask->push(nw);
}
}
} // namespace nr::ue
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