--- a/sysstatemgmt/systemstatereferenceplugins/custcmd/src/ssmuiproviderdlldefault.cpp Thu Aug 19 11:09:10 2010 +0300
+++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/src/ssmuiproviderdlldefault.cpp Tue Aug 31 16:29:05 2010 +0300
@@ -22,8 +22,20 @@
#include "ssmpanic.h"
#include <e32property.h>
#include "ssmdebug.h"
+#include <f32file.h>
+#include <ctsydomainpskeys.h>
+#include <mmtsy_names.h>
+#include <pathinfo.h>
+#include <securitynotification.h>
+#include <ssm/ssmstate.h>
+#include <startupdomainpskeys.h>
+#include "ssmmapperutilitystatic.h"
+#include "ssmmapperutilityinternalpskeys.h"
+#include "ssmsubstateext.hrh"
+#include "ssmswp.hrh"
+#include "trace.h"
-const TUid KPSStartupUid = {0x2000E65E};
+const TUid KPSStartupDefaultUid = {0x2000E65E};
const TUid KSecurityPinNotifierUid = {0x2000E667};
const TUid KScreenOutputChannel = {0x10009D48};
const TUid KEmergencyCallPropertyCategory = {0x2001032C};
@@ -40,8 +52,17 @@
//Number of clusterSize to be reserve for phone memory space
const TInt KNumberOfCluster = 2;
-_LIT(KTsyModuleName, "mm.tsy");
-_LIT(KTsyPhoneName, "GsmPhone1");
+//For test code
+/** Channel used to communicate with Security Notifier. */
+static const TUid KSecurityNotifierChannel = { 0x1000598F };
+
+// Type definitions for a buffer containing a drive id (drive letter + :).
+const TInt KDriveIdLength = 2;
+typedef TBuf<KDriveIdLength> TDriveId;
+
+const TUint32 KMiscPluginPropertyKey = 0x2000E658;
+const TUid KPropertyCategory={0x2000D75B}; // tcustomcmd_server SID = KSsmServerName SID (changed in tcustomcmd_server.mmp file)
+
CSsmUiSpecific::CSsmUiSpecific()
: iReferenceCount(1), iReservedPhoneMemory(0)
@@ -55,36 +76,85 @@
EXPORT_C TUid CSsmUiSpecific::StartupPSUid()
{
- return KPSStartupUid;
+ if (!IsTestPsKeyDefined())
+ {
+ DEBUGPRINT1A("StartupPSUid :: Calling S60 plugins functions ");
+ return KPSUidStartup;
+ }
+ else
+ {
+ DEBUGPRINT1A("StartupPSUid :: Calling Symbian(dummy) plugins functions ");
+ return KPSStartupDefaultUid;
+ }
}
EXPORT_C TUid CSsmUiSpecific::SecurityPinNotifierUid()
{
- return KSecurityPinNotifierUid;
+ if (!IsTestPsKeyDefined())
+ {
+ DEBUGPRINT1A("SecurityPinNotifierUid :: Calling S60 plugins functions ");
+ return KSecurityNotifierUid;
+ }
+ else
+ {
+ DEBUGPRINT1A("SecurityPinNotifierUid :: Calling Symbian(dummy) plugins functions ");
+ return KSecurityPinNotifierUid;
+ }
+
}
EXPORT_C TUint CSsmUiSpecific::EmergencyCallPropertyKey()
{
- return KEmergencyCallPropertyKey;
+ if (!IsTestPsKeyDefined())
+ {
+ DEBUGPRINT1A("EmergencyCallPropertyKey :: Calling S60 plugins functions ");
+ return KCTsyCallState;
+ }
+ else
+ {
+ DEBUGPRINT1A("EmergencyCallPropertyKey :: Calling Symbian(dummy) plugins functions ");
+ return KEmergencyCallPropertyKey;
+ }
+
}
EXPORT_C TUid CSsmUiSpecific::EmergencyCallPropertyCategory()
{
- return KEmergencyCallPropertyCategory;
+ if (!IsTestPsKeyDefined())
+ {
+ DEBUGPRINT1A("EmergencyCallPropertyCategory :: Calling S60 plugins functions ");
+ return KPSUidCtsyCallInformation;
+ }
+ else
+ {
+ DEBUGPRINT1A("EmergencyCallPropertyCategory :: Calling Symbian(dummy) plugins functions ");
+ return KEmergencyCallPropertyCategory;
+ }
+
}
EXPORT_C TBool CSsmUiSpecific::IsSimSupported()
{
- return ETrue;
+ if (!IsTestPsKeyDefined())
+ {
+ DEBUGPRINT1A("IsSimSupported :: Calling S60 plugins functions ");
+ return SsmMapperUtility::FeatureStatus( TUid::Uid( KFeatureIdSimCard ) );
+ }
+ else
+ {
+ DEBUGPRINT1A("IsSimSupported :: Calling Symbian(dummy) plugins functions ");
+ return ETrue;
+ }
+
}
EXPORT_C void CSsmUiSpecific::SetSecurityStatus(const TStrtSecurityStatus& aSecurityStatus)
- {
+ {
iStrtSecurityStatus = aSecurityStatus;
}
EXPORT_C TStrtSecurityStatus CSsmUiSpecific::SecurityStatus() const
- {
+ {
return iStrtSecurityStatus;
}
@@ -127,83 +197,269 @@
EXPORT_C TUid CSsmUiSpecific::ScreenOutputChannelUid()
{
- return KScreenOutputChannel;
+ if (!IsTestPsKeyDefined())
+ {
+ DEBUGPRINT1A("ScreenOutputChannelUid :: Calling S60 plugins functions ");
+ return KSecurityNotifierChannel;
+ }
+ else
+ {
+ DEBUGPRINT1A("ScreenOutputChannelUid :: Calling Symbian(dummy) plugins functions ");
+ return KScreenOutputChannel;
+ }
+
}
EXPORT_C TUint CSsmUiSpecific::SimStatusPropertyKey()
{
- return KSimStatusPropertyKey;
+ if (!IsTestPsKeyDefined())
+ {
+ DEBUGPRINT1A("SimStatusPropertyKey :: Calling S60 plugins functions ");
+ return KPSSimStatus;
+ }
+ else
+ {
+ DEBUGPRINT1A("SimStatusPropertyKey :: Calling Symbian(dummy) plugins functions ");
+ return KSimStatusPropertyKey;
+ }
}
EXPORT_C TBool CSsmUiSpecific::IsSimStateChangeAllowed()
{
- return ETrue;
+ if (!IsTestPsKeyDefined())
+ {
+ DEBUGPRINT1A("IsSimStateChangeAllowed :: Calling S60 plugins functions ");
+ TSsmState state;
+ TInt err = SsmMapperUtility::GetCurrentState( state );
+ ERROR( err, "Failed to get current state" );
+ return ( err == KErrNone &&
+ ( state.MainState() == ESsmStartup && state.SubState() == ESsmStateSecurityCheck ) ||
+ ( state.MainState() == ESsmStartup && state.SubState() == ESsmStateNonCritical ) ||
+ state.MainState() == ESsmNormal );
+ }
+ else
+ {
+ DEBUGPRINT1A("IsSimStateChangeAllowed :: Calling Symbian(dummy) plugins functions ");
+ return ETrue;
+ }
+
}
EXPORT_C TBool CSsmUiSpecific::IsAmaStarterSupported()
{
- return ETrue;
+ if (!IsTestPsKeyDefined())
+ {
+ DEBUGPRINT1A("IsAmaStarterSupported :: Calling S60 plugins functions ");
+ return SsmMapperUtility::FeatureStatus( TUid::Uid( KFeatureIdExtendedStartup ) );
+ }
+ else
+ {
+ DEBUGPRINT1A("IsAmaStarterSupported :: Calling Symbian(dummy) plugins functions ");
+ return ETrue;
+ }
+
}
EXPORT_C HBufC* CSsmUiSpecific::GetTsyModuleNameL()
{
- HBufC* tstModuleName = KTsyModuleName().AllocL();
- return tstModuleName;
+ DEBUGPRINT1A("GetTsyModuleNameL :: Calling S60 plugins functions ");
+ /*****************************************************
+ * Series 60 Customer / TSY
+ * Needs customer TSY implementation
+ *****************************************************/
+
+ HBufC* name = KMmTsyModuleName().AllocL();
+ INFO_1( "TSY name: %S", name );
+ return name;
}
EXPORT_C TUid CSsmUiSpecific::StarterPSUid()
{
- return KSecurityStatusPropertyCategory;
+ if (!IsTestPsKeyDefined())
+ {
+ DEBUGPRINT1A("StarterPSUid :: Calling S60 plugins functions ");
+ return KPSStarterUid;
+ }
+ else
+ {
+ DEBUGPRINT1A("StartupPSUid :: Calling Symbian(dummy) plugins functions ");
+ return KSecurityStatusPropertyCategory;
+ }
}
EXPORT_C HBufC* CSsmUiSpecific::PhoneTsyNameL()
{
- HBufC* tsyPhoneName = KTsyPhoneName().AllocL();
- return tsyPhoneName;
+ DEBUGPRINT1A("PhoneTsyNameL :: Calling S60 plugins functions ");
+ /*****************************************************
+ * Series 60 Customer / TSY
+ * Needs customer TSY implementation
+ *****************************************************/
+
+ HBufC* name = KMmTsyPhoneName().AllocL();
+ INFO_1( "Phone name: %S", name );
+ return name;
}
EXPORT_C TBool CSsmUiSpecific::IsSimPresent()
{
- return ETrue;
+ if (!IsTestPsKeyDefined())
+ {
+ DEBUGPRINT1A("IsSimPresent :: Calling S60 plugins functions ");
+ TInt value( 0 );
+ TInt err = RProperty::Get( SsmMapperUtility::PsUid( KPSUidStartup ), KPSSimStatus, value );
+ ERROR( err, "Failed to get value of KPSUidStartup::KPSSimStatus" );
+ return ( err == KErrNone &&
+ ( value == ESimUsable ||
+ value == ESimReadable ||
+ value == ESimNotReady ) );
+ }
+ else
+ {
+ DEBUGPRINT1A("IsSimPresent :: Calling Symbian(dummy) plugins functions ");
+ return ETrue;
+ }
}
EXPORT_C TBool CSsmUiSpecific::IsSimlessOfflineSupported()
{
- return ETrue;
+ if (!IsTestPsKeyDefined())
+ {
+ DEBUGPRINT1A("IsSimlessOfflineSupported :: Calling S60 plugins functions ");
+ return SsmMapperUtility::FeatureStatus(
+ TUid::Uid( KFeatureIdFfSimlessOfflineSupport ) );
+ }
+ else
+ {
+ DEBUGPRINT1A("IsSimlessOfflineSupported :: Calling Symbian(dummy) plugins functions ");
+ return ETrue;
+ }
}
EXPORT_C TBool CSsmUiSpecific::IsNormalBoot()
{
- return ETrue;
+ if (!IsTestPsKeyDefined())
+ {
+ DEBUGPRINT1A("IsNormalBoot :: Calling S60 plugins functions ");
+ TInt value( 0 );
+ TInt errorCode = RProperty::Get( SsmMapperUtility::PsUid( KPSUidStartup ), KPSStartupReason, value );
+ ERROR( errorCode, "Failed to get value of KPSUidStartup::KPSStartupReason" );
+
+ TBool ret = ( errorCode == KErrNone && value == ENormalStartup );
+ INFO_1( "Is normal boot = %d", ret );
+ return ret;
+ }
+ else
+ {
+ DEBUGPRINT1A("IsNormalBoot :: Calling Symbian(dummy) plugins functions ");
+ return ETrue;
+ }
}
EXPORT_C TBool CSsmUiSpecific::IsSimChangedReset()
{
- return ETrue;
+ if (!IsTestPsKeyDefined())
+ {
+ DEBUGPRINT1A("IsSimChangedReset :: Calling S60 plugins functions ");
+ TUid startupPsUid( SsmMapperUtility::PsUid( KPSUidStartup ) );
+ TInt value( 0 );
+ TInt errorCode = RProperty::Get( startupPsUid, KPSStartupReason, value );
+ ERROR( errorCode, "Failed to get value of KPSUidStartup::KPSStartupReason" );
+
+ TBool ret( EFalse );
+ if ( errorCode == KErrNone && value == ESIMStatusChangeReset )
+ {
+ errorCode = RProperty::Get( startupPsUid, KPSSimChanged, value );
+ ret = ( errorCode == KErrNone && value == ESimChanged );
+ }
+
+ INFO_1( "Is SIM changed reset = %d", ret );
+ return ret;
+ }
+ else
+ {
+ DEBUGPRINT1A("IsSimChangedReset :: Calling Symbian(dummy) plugins functions ");
+ return ETrue;
+ }
}
EXPORT_C TUint CSsmUiSpecific::RFStatusPropertyKey()
{
- return KRFStatusPropertyKey;
+ if (!IsTestPsKeyDefined())
+ {
+ DEBUGPRINT1A("RFStatusPropertyKey :: Calling S60 plugins functions ");
+ return SWP_UID_SSM_RF_STATUS;
+ }
+ else
+ {
+ DEBUGPRINT1A("RFStatusPropertyKey :: Calling Symbian(dummy) plugins functions ");
+ return KRFStatusPropertyKey;
+ }
}
EXPORT_C TUid CSsmUiSpecific::RFStatusPropertyCategory()
{
- return KRFStatusPropertyCategory;
+ if (!IsTestPsKeyDefined())
+ {
+ DEBUGPRINT1A("RFStatusPropertyCategory :: Calling S60 plugins functions ");
+ return TUid::Uid( SWP_UID_SSM_RF_STATUS );
+ }
+ else
+ {
+ DEBUGPRINT1A("RFStatusPropertyCategory :: Calling Symbian(dummy) plugins functions ");
+ return KRFStatusPropertyCategory;
+ }
}
+
EXPORT_C TUint CSsmUiSpecific::ValidateRTCPropertyKey()
{
- return KValidateRTCPropertyKey;
+ if (!IsTestPsKeyDefined())
+ {
+ DEBUGPRINT1A("ValidateRTCPropertyKey :: Calling S60 plugins functions ");
+ return KRTCPropertyKey;
+ }
+ else
+ {
+ DEBUGPRINT1A("ValidateRTCPropertyKey :: Calling Symbian(dummy) plugins functions ");
+ return KValidateRTCPropertyKey;
+ }
+
}
EXPORT_C TUid CSsmUiSpecific::ValidateRTCPropertyCategory()
{
- return KValidateRTCPropertyCategory;
+ if (!IsTestPsKeyDefined())
+ {
+ DEBUGPRINT1A("ValidateRTCPropertyCategory :: Calling S60 plugins functions ");
+ return KPSStarterUid;
+ }
+ else
+ {
+ DEBUGPRINT1A("ValidateRTCPropertyCategory :: Calling Symbian(dummy) plugins functions ");
+ return KValidateRTCPropertyCategory;
+ }
}
EXPORT_C TInt CSsmUiSpecific::PhoneMemoryRootDriveId()
{
- return EDriveC;
+ if (!IsTestPsKeyDefined())
+ {
+ DEBUGPRINT1A("PhoneMemoryRootDriveId :: Calling S60 plugins functions ");
+ TInt driveId = EDriveC;
+ TDriveId driveIdBuf = PathInfo::PhoneMemoryRootPath().Left( KDriveIdLength );
+ if ( driveIdBuf.Length() > 0 )
+ {
+ TInt err = RFs::CharToDrive( driveIdBuf[0], driveId ) ;
+ INFO_1( "PhoneMemoryRootDriveId - CharToDrive returns: %d", err );
+ }
+
+ INFO_1( "Phone memory root path ID: %d", driveId );
+ return driveId;
+ }
+ else
+ {
+ DEBUGPRINT1A("PhoneMemoryRootDriveId :: Calling Symbian(dummy) plugins functions ");
+ return EDriveC;
+ }
}
/**
@@ -215,6 +471,21 @@
}
/**
+ Helper function to check for P&S Key
+*/
+TBool CSsmUiSpecific::IsTestPsKeyDefined()
+ {
+ TBool testPsKeyDefined = EFalse;
+ TInt result = RProperty::Get(KPropertyCategory, KMiscPluginPropertyKey, testPsKeyDefined);
+ DEBUGPRINT3(_L("KMiscPluginPropertyKey %d Error %d"), testPsKeyDefined, result);
+ if ((KErrNone != result) && (KErrNotFound != result))
+ {
+ User::Leave(result);
+ }
+ return testPsKeyDefined;
+ }
+
+/**
Reserve two ClusterSize in Phone Memory Space on H/W
and 512 bytes for __WINS__
@return KErrNone if successful or systemwide error