MSsmSwpPolicy::TResponse CRFStatusSwPPolicy ::TransitionAllowed(const TSsmSwp& aSwp, const RMessagePtr2& aMessage) { MSsmSwpPolicy::TResponse isTransitionAllowed = ENotAllowed; TBool hasCapability = aMessage.HasCapability(ECapabilityWriteDeviceData, ECapabilityPowerMgmt, __PLATSEC_DIAGNOSTIC_STRING( "Platsec violation, RF status SwP transition" )); if(hasCapability) { if (IsSsmGracefulOffline()) { //RF ON/OFF is implemented as a substate in Normal instead of SwP for graceful offline notification. //Hence the SwP RF OFF/RF ON is restricted for the request which has SSM SID. Only BtSap SwP transition is //allowed to any client with appropriate capability. if (aMessage.SecureId() == KSsmSecureId || aSwp.Value() == ESsmBtSap ) { //Allow SwP change only if request has SsmSecureId or the SwP request for BtSap isTransitionAllowed = EAllowed; } } else { isTransitionAllowed = EAllowed; } } return isTransitionAllowed; }