Commit d86f7060 authored by aligungr's avatar aligungr

L3 RRC/NAS developments

parent 838a734c
......@@ -141,7 +141,8 @@ struct NwUeRlsToRrc : NtsMessage
enum PR
{
DOWNLINK_RRC_DELIVERY,
SIGNAL_CHANGED
SIGNAL_CHANGED,
RADIO_LINK_FAILURE
} present;
// DOWNLINK_RRC_DELIVERY
......@@ -155,6 +156,9 @@ struct NwUeRlsToRrc : NtsMessage
// SIGNAL_CHANGED
int dbm{};
// RADIO_LINK_FAILURE
rls::ERlfCause rlfCause{};
explicit NwUeRlsToRrc(PR present) : NtsMessage(NtsMessageType::UE_RLS_TO_RRC), present(present)
{
}
......
......@@ -66,7 +66,9 @@ void UeRlsTask::onLoop()
break;
}
case NwUeRlsToRls::RADIO_LINK_FAILURE: {
m_logger->debug("radio link failure [%d]", (int)w->rlfCause);
auto *m = new NwUeRlsToRrc(NwUeRlsToRrc::RADIO_LINK_FAILURE);
m->rlfCause = w->rlfCause;
m_base->rrcTask->push(m);
break;
}
case NwUeRlsToRls::TRANSMISSION_FAILURE: {
......
......@@ -107,4 +107,10 @@ void UeRrcTask::receiveRrcRelease(const ASN_RRC_RRCRelease &msg)
m_base->nasTask->push(new NwUeRrcToNas(NwUeRrcToNas::RRC_CONNECTION_RELEASE));
}
void UeRrcTask::handleRadioLinkFailure(rls::ERlfCause cause)
{
m_state = ERrcState::RRC_IDLE;
m_base->nasTask->push(new NwUeRrcToNas(NwUeRrcToNas::RADIO_LINK_FAILURE));
}
} // namespace nr::ue
......@@ -27,6 +27,10 @@ void UeRrcTask::handleRlsSapMessage(NwUeRlsToRrc &msg)
handleDownlinkRrc(msg.cellId, msg.channel, msg.pdu);
break;
}
case NwUeRlsToRrc::RADIO_LINK_FAILURE: {
handleRadioLinkFailure(msg.rlfCause);
break;
}
}
}
......
......@@ -87,10 +87,4 @@ void UeRrcTask::onLoop()
delete msg;
}
void UeRrcTask::handleRadioLinkFailure()
{
m_state = ERrcState::RRC_IDLE;
m_base->nasTask->push(new NwUeRrcToNas(NwUeRrcToNas::RADIO_LINK_FAILURE));
}
} // namespace nr::ue
\ No newline at end of file
......@@ -75,7 +75,6 @@ class UeRrcTask : public NtsTask
private:
/* Handlers */
void receivePaging(const ASN_RRC_Paging &msg);
void handleRadioLinkFailure();
/* RRC Message Transmission and Receive */
void handleDownlinkRrc(int cellId, rrc::RrcChannel channel, const OctetString &pdu);
......@@ -124,6 +123,7 @@ class UeRrcTask : public NtsTask
void receiveRrcSetup(int cellId, const ASN_RRC_RRCSetup &msg);
void receiveRrcReject(int cellId, const ASN_RRC_RRCReject &msg);
void receiveRrcRelease(const ASN_RRC_RRCRelease &msg);
void handleRadioLinkFailure(rls::ERlfCause cause);
};
......
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