Commit 1a6d3c28 authored by aligungr's avatar aligungr

UAC Access category determination

parent f1ee3190
...@@ -126,4 +126,59 @@ std::bitset<16> NasMm::determineAccessIdentities() ...@@ -126,4 +126,59 @@ std::bitset<16> NasMm::determineAccessIdentities()
return ais; return ais;
} }
int NasMm::determineAccessCategory()
{
/* Check for Rule #1 */
if (m_procCtl.mobilityRegistration)
{
if (m_procCtl.mobilityRegistration == ERegUpdateCause::PAGING_OR_NOTIFICATION)
{
return 0;
}
}
if (m_procCtl.serviceRequest)
{
if (m_procCtl.serviceRequest == EServiceReqCause::IDLE_PAGING ||
m_procCtl.serviceRequest == EServiceReqCause::CONNECTED_3GPP_NOTIFICATION_N3GPP ||
m_procCtl.serviceRequest == EServiceReqCause::IDLE_3GPP_NOTIFICATION_N3GPP)
{
return 0;
}
}
/* Check for Rule #2 */
if (hasEmergency())
return 2;
/* Check for Rule #3 */
// TODO: Operator defined access category not supported
/* Check for Rule #4 */
// TODO: Access attempt for delay tolerant service
/* Check for Rule #5 */
// TODO: MO MMTel voice call
/* Check for Rule #6 */
// TODO: MO MMTel video call
/* Check for Rule #7 */
// TODO: MO SMS over NAS or MO SMSoIP
/* Check for Rule #8 */
if (hasPendingProcedure() && !m_sm->anyUplinkDataPending())
return 3;
/* Check for Rule #9 */
if (hasPendingProcedure() && m_sm->anyUplinkDataPending())
return 7;
/* Check for Rule #10 */
if (m_sm->anyUplinkDataPending())
return 7;
return 0;
}
} // namespace nr::ue } // namespace nr::ue
...@@ -175,6 +175,7 @@ class NasMm ...@@ -175,6 +175,7 @@ class NasMm
void setN1Capability(bool enabled); void setN1Capability(bool enabled);
bool isInNonAllowedArea(); bool isInNonAllowedArea();
std::bitset<16> determineAccessIdentities(); std::bitset<16> determineAccessIdentities();
int determineAccessCategory();
private: /* eCall */ private: /* eCall */
bool startECallInactivityIfNeeded(); bool startECallInactivityIfNeeded();
......
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