Commit 614ac12e authored by aligungr's avatar aligungr

L3 RRC/NAS developments

parent 1221531b
......@@ -235,7 +235,6 @@ static std::unique_ptr<UeCliCommand> UeCliParseImpl(const std::string &subCmd, c
else if (subCmd == "deregister")
{
auto cmd = std::make_unique<UeCliCommand>(UeCliCommand::DE_REGISTER);
cmd->deregCause = EDeregCause::UNSPECIFIED;
if (options.positionalCount() == 0)
CMD_ERR("De-registration type is expected")
if (options.positionalCount() > 1)
......
......@@ -144,9 +144,10 @@ void NasMm::handleActiveCellChange(const Tai &prevTai)
// of the serving cell has changed, if timer T3346 is not running, the PLMN identity of the new cell is not in
// one of the forbidden PLMN lists and the tracking area is not in one of the lists of 5GS forbidden tracking
// area"
if (!m_timers->t3346.isRunning() && currentCell.category == ECellCategory::SUITABLE_CELL)
if (m_mmSubState == EMmSubState::MM_REGISTERED_ATTEMPTING_REGISTRATION_UPDATE && !m_timers->t3346.isRunning() &&
currentCell.category == ECellCategory::SUITABLE_CELL)
{
mobilityUpdatingRequired(ERegUpdateCause::UNSPECIFIED);
mobilityUpdatingRequired(ERegUpdateCause::TAI_CHANGE_IN_ATT_UPD);
}
}
......@@ -160,7 +161,7 @@ void NasMm::handleActiveCellChange(const Tai &prevTai)
!m_storage->equivalentPlmnList->contains(currentTai.plmn) &&
currentCell.category == ECellCategory::SUITABLE_CELL)
{
mobilityUpdatingRequired(ERegUpdateCause::UNSPECIFIED);
mobilityUpdatingRequired(ERegUpdateCause::PLMN_CHANGE_IN_ATT_UPD);
}
}
......
......@@ -33,7 +33,7 @@ void NasMm::onTimerExpire(UeTimer &timer)
else if (m_mmSubState == EMmSubState::MM_REGISTERED_ATTEMPTING_REGISTRATION_UPDATE)
{
logExpired();
mobilityUpdatingRequired(ERegUpdateCause::UNSPECIFIED);
mobilityUpdatingRequired(ERegUpdateCause::T3346_EXPIRY_IN_ATT_UPD);
}
break;
}
......@@ -45,7 +45,7 @@ void NasMm::onTimerExpire(UeTimer &timer)
resetRegAttemptCounter();
if (m_mmSubState == EMmSubState::MM_REGISTERED_ATTEMPTING_REGISTRATION_UPDATE)
mobilityUpdatingRequired(ERegUpdateCause::UNSPECIFIED);
mobilityUpdatingRequired(ERegUpdateCause::T3502_EXPIRY_IN_ATT_UPD);
}
break;
}
......@@ -85,7 +85,7 @@ void NasMm::onTimerExpire(UeTimer &timer)
if (m_mmSubState == EMmSubState::MM_REGISTERED_ATTEMPTING_REGISTRATION_UPDATE)
{
logExpired();
mobilityUpdatingRequired(ERegUpdateCause::UNSPECIFIED);
mobilityUpdatingRequired(ERegUpdateCause::T3511_EXPIRY_IN_ATT_UPD);
}
break;
}
......
......@@ -182,55 +182,6 @@ Json ToJson(const E5UState &state)
}
}
Json ToJson(const ERegUpdateCause &v)
{
switch (v)
{
case ERegUpdateCause::UNSPECIFIED:
return "UNSPECIFIED";
case ERegUpdateCause::ENTER_UNLISTED_TRACKING_AREA:
return "ENTER_UNLISTED_TRACKING_AREA";
case ERegUpdateCause::T3512_EXPIRY:
return "T3512_EXPIRY";
case ERegUpdateCause::CONFIGURATION_UPDATE:
return "CONFIGURATION_UPDATE";
case ERegUpdateCause::PAGING_OR_NOTIFICATION:
return "PAGING_OR_NOTIFICATION";
case ERegUpdateCause::INTER_SYSTEM_CHANGE_S1_TO_N1:
return "INTER_SYSTEM_CHANGE_S1_TO_N1";
case ERegUpdateCause::CONNECTION_RECOVERY:
return "CONNECTION_RECOVERY";
case ERegUpdateCause::FALLBACK_INDICATION:
return "FALLBACK_INDICATION";
case ERegUpdateCause::MM_OR_S1_CAPABILITY_CHANGE:
return "MM_OR_S1_CAPABILITY_CHANGE";
case ERegUpdateCause::USAGE_SETTING_CHANGE:
return "USAGE_SETTING_CHANGE";
case ERegUpdateCause::SLICE_CHANGE:
return "SLICE_CHANGE";
case ERegUpdateCause::DRX_CHANGE:
return "DRX_CHANGE";
case ERegUpdateCause::EMERGENCY_CASE:
return "EMERGENCY_CASE";
case ERegUpdateCause::SMS_OVER_NAS_CHANGE:
return "SMS_OVER_NAS_CHANGE";
case ERegUpdateCause::PS_STATUS_INFORM:
return "PS_STATUS_INFORM";
case ERegUpdateCause::RADIO_CAP_CHANGE:
return "RADIO_CAP_CHANGE";
case ERegUpdateCause::NEW_LADN_NEEDED:
return "NEW_LADN_NEEDED";
case ERegUpdateCause::MICO_MODE_CHANGE:
return "MICO_MODE_CHANGE";
case ERegUpdateCause::ENTER_EQUIVALENT_PLMN_CELL:
return "ENTER_EQUIVALENT_PLMN_CELL";
case ERegUpdateCause::RESTRICTED_SERVICE_AREA:
return "RESTRICTED_SERVICE_AREA";
default:
return "?";
}
}
Json ToJson(const EPsState &state)
{
switch (state)
......@@ -260,35 +211,6 @@ Json ToJson(const UePduSessionInfo &v)
});
}
Json ToJson(const EServiceReqCause &v)
{
switch (v)
{
case EServiceReqCause::UNSPECIFIED:
return "UNSPECIFIED";
case EServiceReqCause::IDLE_PAGING:
return "IDLE_PAGING";
case EServiceReqCause::CONNECTED_3GPP_NOTIFICATION_N3GPP:
return "CONNECTED_3GPP_NOTIFICATION_N3GPP";
case EServiceReqCause::IDLE_UPLINK_SIGNAL_PENDING:
return "IDLE_UPLINK_SIGNAL_PENDING";
case EServiceReqCause::IDLE_UPLINK_DATA_PENDING:
return "IDLE_UPLINK_DATA_PENDING";
case EServiceReqCause::CONNECTED_UPLINK_DATA_PENDING:
return "CONNECTED_UPLINK_DATA_PENDING";
case EServiceReqCause::NON_3GPP_AS_ESTABLISHED:
return "NON_3GPP_AS_ESTABLISHED";
case EServiceReqCause::IDLE_3GPP_NOTIFICATION_N3GPP:
return "IDLE_3GPP_NOTIFICATION_N3GPP";
case EServiceReqCause::EMERGENCY_FALLBACK:
return "EMERGENCY_FALLBACK";
case EServiceReqCause::FALLBACK_INDICATION:
return "FALLBACK_INDICATION";
default:
return "?";
}
}
bool ActiveCellInfo::hasValue() const
{
return cellId != 0;
......
......@@ -465,8 +465,6 @@ struct UePduSessionInfo
enum class ERegUpdateCause
{
// unspecified cause
UNSPECIFIED,
// when the UE detects entering a tracking area that is not in the list of tracking areas that the UE previously
// registered in the AMF
ENTER_UNLISTED_TRACKING_AREA,
......@@ -515,13 +513,17 @@ enum class ERegUpdateCause
// belonging to an equivalent PLMN of the registered PLMN and not belonging to the registered PLMN;
ENTER_EQUIVALENT_PLMN_CELL,
// when the UE receives a SERVICE REJECT message with the 5GMM cause value set to #28 "Restricted service area".
RESTRICTED_SERVICE_AREA
RESTRICTED_SERVICE_AREA,
// ------ following are not specified by 24.501 ------
TAI_CHANGE_IN_ATT_UPD,
PLMN_CHANGE_IN_ATT_UPD,
T3346_EXPIRY_IN_ATT_UPD,
T3502_EXPIRY_IN_ATT_UPD,
T3511_EXPIRY_IN_ATT_UPD,
};
enum class EServiceReqCause
{
// unspecified cause
UNSPECIFIED,
// a) the UE, in 5GMM-IDLE mode over 3GPP access, receives a paging request from the network
IDLE_PAGING,
// b) the UE, in 5GMM-CONNECTED mode over 3GPP access, receives a notification from the network with access type
......
......@@ -57,25 +57,6 @@ Json ToJson(const PlmnSupport &v)
return Json::Obj({{"plmn", ToJson(v.plmn)}, {"nssai", ToJson(v.sliceSupportList)}});
}
Json ToJson(const EDeregCause &v)
{
switch (v)
{
case EDeregCause::UNSPECIFIED:
return "NORMAL";
case EDeregCause::SWITCH_OFF:
return "SWITCH-OFF";
case EDeregCause::USIM_REMOVAL:
return "USIM-REMOVAL";
case EDeregCause::DISABLE_5G:
return "DISABLE-5G";
case EDeregCause::ECALL_INACTIVITY:
return "ECALL-INACTIVITY";
default:
return "?";
}
}
Json ToJson(const ECellCategory &v)
{
switch (v)
......@@ -93,27 +74,6 @@ Json ToJson(const ECellCategory &v)
}
}
Json ToJson(const EInitialRegCause &v)
{
switch (v)
{
case EInitialRegCause::UNSPECIFIED:
return "UNSPECIFIED";
case EInitialRegCause::EMERGENCY_SERVICES:
return "EMERGENCY_SERVICES";
case EInitialRegCause::MM_DEREG_NORMAL_SERVICE:
return "MM_DEREG_NORMAL_SERVICE";
case EInitialRegCause::T3346_EXPIRY:
return "T3346_EXPIRY";
case EInitialRegCause::DUE_TO_DEREGISTRATION:
return "DUE_TO_DEREGISTRATION";
case EInitialRegCause::DUE_TO_SERVICE_REJECT:
return "DUE_TO_SERVICE_REJECT";
default:
return "?";
}
}
bool operator==(const SingleSlice &lhs, const SingleSlice &rhs)
{
if ((int)lhs.sst != (int)rhs.sst)
......
......@@ -127,7 +127,6 @@ struct Supi
enum class EDeregCause
{
UNSPECIFIED,
SWITCH_OFF,
USIM_REMOVAL,
DISABLE_5G,
......@@ -136,7 +135,6 @@ enum class EDeregCause
enum class EInitialRegCause
{
UNSPECIFIED,
EMERGENCY_SERVICES,
MM_DEREG_NORMAL_SERVICE,
T3346_EXPIRY,
......
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