satengine/SatServer/SystemState/src/CSatSystemState.cpp
changeset 0 ff3b6d0fd310
child 8 ba42c4bd84dd
equal deleted inserted replaced
-1:000000000000 0:ff3b6d0fd310
       
     1 /*
       
     2 * Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Provides system state information to SAT Server
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include    <mtclreg.h>
       
    20 #include    <smsclnt.h>
       
    21 #include    <smutset.h>
       
    22 #include    <PSVariables.h>             // Publish & Suscribe keys
       
    23 #include    <centralrepository.h>       // CRepository
       
    24 #include    <CommonEngineDomainCRKeys.h>
       
    25 #include    <ProfileEngineSDKCRKeys.h>
       
    26 #include    <settingsinternalcrkeys.h>
       
    27 #include    <SATDomainPSKeys.h>
       
    28 #include    <activeidle2domainpskeys.h>
       
    29 #include    <ScreensaverInternalPSKeys.h>
       
    30 #include    <ctsydomainpskeys.h>
       
    31 #include    <sbdefs.h>
       
    32 #include    <BTSapDomainPSKeys.h>
       
    33 #include    <SATDomainPSKeys.h>
       
    34 
       
    35 #include    "SATInternalPSKeys.h"
       
    36 #include    "CSatSystemState.h"
       
    37 #include    "msatmultimodeapi.h"
       
    38 #include    "SatLog.h"
       
    39 
       
    40 // ============================ MEMBER FUNCTIONS ===============================
       
    41 
       
    42 // -----------------------------------------------------------------------------
       
    43 // C++ default constructor can NOT contain any code, that
       
    44 // might leave.
       
    45 // -----------------------------------------------------------------------------
       
    46 //
       
    47 CSatSystemState::CSatSystemState( MSatMultiModeApi& aPhone ) : iPhone( aPhone )
       
    48     {
       
    49     LOG( SIMPLE,
       
    50         "SATSYSTEMSTATE: CSatSystemState::CSatSystemState calling-exiting" )
       
    51     }
       
    52 
       
    53 // -----------------------------------------------------------------------------
       
    54 // Symbian 2nd phase constructor can leave.
       
    55 // -----------------------------------------------------------------------------
       
    56 //
       
    57 void CSatSystemState::ConstructL( MSatMultiModeApi& aPhone )
       
    58     {
       
    59     LOG( SIMPLE, "SATSYSTEMSTATE: CSatSystemState::ConstructL calling" )
       
    60 
       
    61     // Define policies
       
    62     TSecurityPolicy readPolicy( ECapabilityReadUserData );
       
    63     TSecurityPolicy writePolicy( ECapabilityWriteUserData );
       
    64 
       
    65     TInt err( KErrNone );
       
    66     // Define properties in P&S for SetUpIdleModeTex command
       
    67     err = RProperty::Define( KPSUidSatServerInternal, 
       
    68                              KSatIdleModeText,
       
    69                              RProperty::ELargeText, 
       
    70                              readPolicy, 
       
    71                              writePolicy );
       
    72     LOG2( SIMPLE, 
       
    73           "SATSYSTEMSTATE: CSatSystemState::ConstructL \
       
    74           Define KSatIdleModeText err: %i", err )
       
    75 
       
    76     err = RProperty::Define( KPSUidSatServerInternal, 
       
    77                              KSatIdleModeTextIconId,
       
    78                              RProperty::EInt, 
       
    79                              readPolicy, 
       
    80                              writePolicy );
       
    81     LOG2( SIMPLE, 
       
    82          "SATSYSTEMSTATE: CSatSystemState::ConstructL \
       
    83          Define KSatIdleModeTextIconId err: %i", err )                       
       
    84 
       
    85     err = RProperty::Define( KPSUidSatServerInternal, 
       
    86                              KSatIdleModeTextIconQualifier,
       
    87                              RProperty::EInt, 
       
    88                              readPolicy, 
       
    89                              writePolicy );
       
    90     LOG2( SIMPLE, 
       
    91           "SATSYSTEMSTATE: CSatSystemState::ConstructL \
       
    92           Define KSatIdleModeTextIconQualifier err: %i", err )                         
       
    93 
       
    94     // Set default (empty) values
       
    95     WriteSetIdleModeText( KNullDesC, KErrNotFound, RSat::ENoIconId );
       
    96 
       
    97     err = RProperty::Define( KPSUidSatServer, 
       
    98                              KSatLanguageSelectionTimeBeforeReboot,
       
    99                              RProperty::EInt, 
       
   100                              readPolicy, 
       
   101                              writePolicy );
       
   102     LOG2( SIMPLE, 
       
   103           "SATSYSTEMSTATE: CSatSystemState::ConstructL \
       
   104           Define KSatLanguageSelectionTimeBeforeReboot err: %i", err )                        
       
   105 
       
   106     // Create Network Registration Status Monitor.
       
   107     iNetworkRegStatusMonitor = CSatNetworkRegStatusMonitor::NewL( aPhone );
       
   108 
       
   109     // Start Network Registration Status Monitor.
       
   110     iNetworkRegStatusMonitor->Start();
       
   111 
       
   112     LOG( SIMPLE, "SATSYSTEMSTATE: CSatSystemState::ConstructL exiting" )
       
   113     }
       
   114 
       
   115 // -----------------------------------------------------------------------------
       
   116 // Two-phased constructor.
       
   117 // -----------------------------------------------------------------------------
       
   118 //
       
   119 MSatSystemState* CSatSystemState::NewL( MSatMultiModeApi& aPhone )
       
   120     {
       
   121     LOG( SIMPLE, "SATSYSTEMSTATE: CSatSystemState::NewL calling" )
       
   122 
       
   123     CSatSystemState* self = new( ELeave ) CSatSystemState( aPhone );
       
   124     CleanupStack::PushL( self );
       
   125     self->ConstructL( aPhone );
       
   126     CleanupStack::Pop( self );
       
   127 
       
   128     LOG( SIMPLE, "SATSYSTEMSTATE: CSatSystemState::NewL exiting" )
       
   129     return self;
       
   130     }
       
   131 
       
   132 
       
   133 // Destructor
       
   134 CSatSystemState::~CSatSystemState()
       
   135     {
       
   136     LOG( SIMPLE, "SATSYSTEMSTATE: CSatSystemState::~CSatSystemState calling" )
       
   137 
       
   138     delete iNetworkRegStatusMonitor;
       
   139     iNetworkRegStatusMonitor = NULL;
       
   140 
       
   141     LOG( SIMPLE, "SATSYSTEMSTATE: CSatSystemState::~CSatSystemState exiting" )
       
   142     }
       
   143 
       
   144 // -----------------------------------------------------------------------------
       
   145 // Returns network registration status.
       
   146 // -----------------------------------------------------------------------------
       
   147 //
       
   148 RMobilePhone::TMobilePhoneRegistrationStatus
       
   149     CSatSystemState::GetNetworkRegistrationStatus()
       
   150     {
       
   151     LOG( SIMPLE, "SATSYSTEMSTATE: CSatSystemState::\
       
   152         GetNetworkRegistrationStatus calling-exiting" )
       
   153     return iNetworkRegStatusMonitor->CurrentValue();
       
   154     }
       
   155 
       
   156 // -----------------------------------------------------------------------------
       
   157 // Checks current call status and returns true only if cuurent call status is
       
   158 // voice call active.
       
   159 // -----------------------------------------------------------------------------
       
   160 //
       
   161 TBool CSatSystemState::IsCallActive()
       
   162     {
       
   163     LOG( SIMPLE, "SATSYSTEMSTATE: CSatSystemState::IsCallActive calling" )
       
   164     TInt callActiveState = EPSCTsyCallTypeNone;
       
   165 
       
   166     // Get current call status from P&S
       
   167     const TInt errCode( RProperty::Get(
       
   168         KPSUidCtsyCallInformation,
       
   169         KCTsyCallType,
       
   170         callActiveState ) );
       
   171 
       
   172     // Check current call type
       
   173     TBool result(
       
   174         ( EPSCTsyCallTypeCSVoice == callActiveState ) &&
       
   175         ( KErrNone == errCode ) );
       
   176 
       
   177     LOG2(
       
   178         SIMPLE,
       
   179         "SATSYSTEMSTATE: CSatSystemState::IsCallActive exiting with value: %d",
       
   180         result )
       
   181     return result;
       
   182     }
       
   183 
       
   184 // -----------------------------------------------------------------------------
       
   185 // Checks current call state and returns true if phone is alerting or ringing.
       
   186 // -----------------------------------------------------------------------------
       
   187 //
       
   188 TBool CSatSystemState::IsCallIncoming()
       
   189     {
       
   190     LOG( SIMPLE, "SATSYSTEMSTATE: CSatSystemState::IsCallIncoming calling" )
       
   191 
       
   192     // Using MSatMultiModeApi::IsCallIncoming to check call status instead of
       
   193     // checking P&S key so that we can get the status on time
       
   194     TBool result( iPhone.IsCallIncoming() );
       
   195 
       
   196     LOG2( SIMPLE, "SATSYSTEMSTATE: CSatSystemState::IsCallIncoming exiting \
       
   197         with value: %d", result )
       
   198     return result;
       
   199     }
       
   200 
       
   201 // -----------------------------------------------------------------------------
       
   202 // Gets the SMS Service center number and returns it.
       
   203 // -----------------------------------------------------------------------------
       
   204 //
       
   205 const TDesC& CSatSystemState::SCANumber()
       
   206     {
       
   207     LOG( SIMPLE, "SATSYSTEMSTATE: CSatSystemState::SCANumber calling" )
       
   208 
       
   209     // Null possible previous SCA number
       
   210     iScaAddress = KNullDesC;
       
   211     TBuf<KMaxSCANumberSize> address;
       
   212 
       
   213     TRAPD( err, ReadCurrentSMSCL( address ) );
       
   214     LOG2( SIMPLE,
       
   215     "SATSYSTEMSTATE: CSatSystemState::SCANumber err: %d", err )
       
   216     // If any error occurs, return null string.
       
   217     if ( KErrNone != err )
       
   218         {
       
   219         address = KNullDesC;
       
   220         }
       
   221 
       
   222     iScaAddress = address;
       
   223 
       
   224     LOG( SIMPLE, "SATSYSTEMSTATE: CSatSystemState::SCANumber exiting" )
       
   225     return iScaAddress;
       
   226     }
       
   227 
       
   228 // -----------------------------------------------------------------------------
       
   229 // Method is used when the information of phones silent mode is needed.
       
   230 // Returns true if silent mode is on and false otherwise.
       
   231 // -----------------------------------------------------------------------------
       
   232 //
       
   233 TBool CSatSystemState::IsSilentMode()
       
   234     {
       
   235     LOG( SIMPLE, "SATSYSTEMSTATE: CSatSystemState::IsSilentMode calling" )
       
   236     TBool result( EFalse );
       
   237     TInt silenceMode( -1 );
       
   238     CRepository* centRep( NULL );
       
   239 
       
   240     TRAPD( err, centRep = CRepository::NewL( KCRUidProfileEngine ) );
       
   241     LOG2( SIMPLE, "SATSYSTEMSTATE:CSatSystemState::IsSilentMode\
       
   242                    CRepository::NewL result: %i", err )
       
   243     if ( ( KErrNone == err ) && centRep )
       
   244         {
       
   245         // Get the needed information from CentRep
       
   246         centRep->Get( KProEngActiveMessageAlert, silenceMode );
       
   247 
       
   248         // Delete CentRep
       
   249         delete centRep;
       
   250 
       
   251         if ( 0 == silenceMode )
       
   252             {
       
   253             LOG( SIMPLE, "SATSYSTEMSTATE:CSatSystemState::IsSilentMode\
       
   254                           Silent mode" )
       
   255             result = ETrue;
       
   256             }
       
   257         }
       
   258     
       
   259     LOG2(
       
   260         SIMPLE,
       
   261         "SATSYSTEMSTATE: CSatSystemState::IsSilentMode exiting with value: %d",
       
   262         result )
       
   263     return result;
       
   264     }
       
   265 
       
   266 // -----------------------------------------------------------------------------
       
   267 // Checks is phone in idle state.
       
   268 // -----------------------------------------------------------------------------
       
   269 //
       
   270 TBool CSatSystemState::IsPhoneInIdleStateL()
       
   271     {
       
   272     LOG( SIMPLE, "SATSYSTEMSTATE: CSatSystemState::IsPhoneInIdleState calling" )
       
   273     TInt idleStatus;
       
   274 
       
   275     // Get the idle status from P&S
       
   276     User::LeaveIfError( RProperty::Get(
       
   277         KPSUidAiInformation,
       
   278         KActiveIdleState,
       
   279         idleStatus ) );
       
   280 
       
   281     // Returns true if phone in idle state.
       
   282     const TBool result( EPSAiForeground == idleStatus );
       
   283 
       
   284     LOG2( SIMPLE, "SATSYSTEMSTATE: CSatSystemState::IsPhoneInIdleState exiting \
       
   285         with value: %d", result )
       
   286     return result;
       
   287     }
       
   288     
       
   289 // -----------------------------------------------------------------------------
       
   290 // Checks is screen saver actived from idle.
       
   291 // -----------------------------------------------------------------------------
       
   292 //
       
   293 TBool CSatSystemState::IsScreenSaverActivedFromIdle()
       
   294     {
       
   295     LOG( SIMPLE, 
       
   296     "SATSYSTEMSTATE: CSatSystemState::IsScreenSaverActivedFromIdle calling" )
       
   297     TBool result( EFalse );
       
   298     TInt screenSaverActive( -1 );
       
   299 
       
   300     // Get the idle status from P&S
       
   301     TInt err = RProperty::Get( KPSUidScreenSaver, 
       
   302         KScreenSaverActivatedFromIdle, screenSaverActive );
       
   303         
       
   304     if ( KErrNone == err )
       
   305         {
       
   306         // Returns true if screen saver is actived from idle.    
       
   307         if ( screenSaverActive )
       
   308             {
       
   309             result = ETrue;
       
   310             }
       
   311         }
       
   312 
       
   313     LOG2( SIMPLE, 
       
   314         "SATSYSTEMSTATE: CSatSystemState:: IsScreenSaverActivedFromIdle \
       
   315          err: %d", err )
       
   316         
       
   317     LOG2( SIMPLE, 
       
   318         "SATSYSTEMSTATE: CSatSystemState:: \
       
   319         IsScreenSaverActivedFromIdle exiting with value: %d", result )
       
   320     return result;    
       
   321     }
       
   322 
       
   323 // -----------------------------------------------------------------------------
       
   324 // Sets time between language selection and reboot.
       
   325 // -----------------------------------------------------------------------------
       
   326 //
       
   327 TInt CSatSystemState::WriteLanguageSelectionTime(
       
   328     TInt aTime )
       
   329     {
       
   330     LOG2( NORMAL,
       
   331     "SATSYSTEMSTATE: CSatSystemState::WriteLanguageSelectionTime calling, \
       
   332     aTime: %d", aTime )
       
   333     TInt errorCode( KErrNone );
       
   334 
       
   335     // Set SetUpIdleModeText string
       
   336     errorCode = RProperty::Set(
       
   337         KPSUidSatServer,
       
   338         KSatLanguageSelectionTimeBeforeReboot,
       
   339         aTime );
       
   340     LOG2( NORMAL,
       
   341     "SATSYSTEMSTATE: CSatSystemState::WriteLanguageSelectionTime exiting, \
       
   342     errorCode: %d", errorCode )
       
   343     return errorCode;
       
   344     }
       
   345 
       
   346 // -----------------------------------------------------------------------------
       
   347 // Writes idle mode text and icon ID to P&S.
       
   348 // -----------------------------------------------------------------------------
       
   349 //
       
   350 TInt CSatSystemState::WriteSetIdleModeText(
       
   351     const TDesC& aString,
       
   352     TInt aIconId,
       
   353     RSat::TIconQualifier aIconQualifier )
       
   354     {
       
   355     LOG( SIMPLE,
       
   356         "SATSYSTEMSTATE: CSatSystemState::WriteSetIdleModeText calling" )
       
   357     LOG2(
       
   358         NORMAL,
       
   359         "SATSYSTEMSTATE: CSatSystemState::WriteSetIdleModeText ID: %d",
       
   360         aIconId )
       
   361     TInt errorCode( KErrNone );
       
   362 
       
   363     // Set SetUpIdleModeText string
       
   364     errorCode = RProperty::Set(
       
   365         KPSUidSatServerInternal,
       
   366         KSatIdleModeText,
       
   367         aString );
       
   368     LOG2( NORMAL,
       
   369     "SATSYSTEMSTATE: CSatSystemState::WriteSetIdleModeText errorCode: %d",
       
   370      errorCode )
       
   371     if ( KErrNone == errorCode )
       
   372         {
       
   373         // Set SetUpIdleModeText icon
       
   374         errorCode = RProperty::Set(
       
   375             KPSUidSatServerInternal,
       
   376             KSatIdleModeTextIconId,
       
   377             aIconId );
       
   378         if ( KErrNone == errorCode )
       
   379             {
       
   380             // Select qualifier value for icon.
       
   381             TSatIdleModeTextIconQualifierValue qualifier( KSatIdleIconQInit );
       
   382             LOG2( NORMAL,
       
   383             "SATSYSTEMSTATE: CSatSystemState::WriteSetIdleModeText \
       
   384             aIconQualifier: %d", aIconQualifier )
       
   385             switch ( aIconQualifier )
       
   386                 {
       
   387                 // Icon not present.
       
   388                 case RSat::ENoIconId:
       
   389                     {
       
   390                     qualifier = KSatIdleIconQNoIcon;
       
   391                     break;
       
   392                     }
       
   393                 // Icon is self explanatory. Displayed instead text string.
       
   394                 case RSat::ESelfExplanatory:
       
   395                     {
       
   396                     qualifier = KSatIdleIconQSelfExplanatory;
       
   397                     break;
       
   398                     }
       
   399                 // Icon is not self explanatory. Displayed with text string.
       
   400                 case RSat::ENotSelfExplanatory:
       
   401                     {
       
   402                     qualifier = KSatIdleIconQNotSelfExplanatory;
       
   403                     break;
       
   404                     }
       
   405                 // Icon qualifier is not set.
       
   406                 case RSat::EIconQualifierNotSet:
       
   407                 default:
       
   408                     {
       
   409                     qualifier = KSatIdleIconQInit;
       
   410                     break;
       
   411                     }
       
   412                 }
       
   413 
       
   414                 LOG2( NORMAL,
       
   415                 "SATSYSTEMSTATE: CSatSystemState::WriteSetIdleModeText \
       
   416                 IconQualifier: %d", qualifier )
       
   417 
       
   418             // Set qualifier for icon.
       
   419             errorCode = RProperty::Set(
       
   420                 KPSUidSatServerInternal,
       
   421                 KSatIdleModeTextIconQualifier,
       
   422                 qualifier );
       
   423             }
       
   424         }
       
   425 
       
   426     LOG2( SIMPLE, "SATSYSTEMSTATE: CSatSystemState::WriteSetIdleModeText \
       
   427         exiting with value: %d", errorCode )
       
   428     return errorCode;
       
   429     }
       
   430 
       
   431 // -----------------------------------------------------------------------------
       
   432 // Checks is backup process ongoing.
       
   433 // -----------------------------------------------------------------------------
       
   434 //
       
   435 TBool CSatSystemState::IsBackupProcessOngoing()
       
   436     {
       
   437     LOG( SIMPLE,
       
   438         "SATSYSTEMSTATE: CSatSystemState::IsBackupProcessOngoing calling" )
       
   439     TInt backupState( conn::ENoBackup );
       
   440 
       
   441     // Get the backup state from P&S
       
   442     const TInt errCode( RProperty::Get(
       
   443         KUidSystemCategory,
       
   444         conn::KUidBackupRestoreKey,
       
   445         backupState ) );
       
   446 
       
   447     TBool result(
       
   448         ( conn::ENoBackup != ( backupState & conn::KBackupIncTypeMask ) )
       
   449         && ( KErrNone == errCode ) );
       
   450 
       
   451     LOG2( SIMPLE,
       
   452         "SATSYSTEMSTATE: CSatSystemState::IsBackupProcessOngoing exiting \
       
   453         with value: %d", result )
       
   454     return result;
       
   455     }
       
   456 
       
   457 // -----------------------------------------------------------------------------
       
   458 // CSatSystemState::IsConfirmSatOperationsOn
       
   459 // -----------------------------------------------------------------------------
       
   460 //
       
   461 TBool CSatSystemState::IsConfirmSatOperationsOn()
       
   462     {
       
   463     LOG( SIMPLE,
       
   464         "SATSYSTEMSTATE: CSatSystemState::IsConfirmSatOperationsOn calling" )
       
   465     TBool result( EFalse );
       
   466     TInt confirmSatOperations( 0 );
       
   467     CRepository* centRep( NULL );
       
   468 
       
   469     TRAPD( err, centRep = CRepository::NewL( KCRUidPersonalizationSettings ) );
       
   470     LOG2( SIMPLE, "SATSYSTEMSTATE:   CentRep failed: %i", err )
       
   471     if ( ( KErrNone == err ) && centRep )
       
   472         {
       
   473         // Get the needed information from CentRep
       
   474         centRep->Get( KSettingsConfirmSatOperations, confirmSatOperations );
       
   475 
       
   476         // Delete CentRep
       
   477         delete centRep;
       
   478 
       
   479         if ( 1 == confirmSatOperations )
       
   480             {
       
   481             LOG( SIMPLE,
       
   482             "SATSYSTEMSTATE: CSatSystemState::IsConfirmSatOperationsOn \
       
   483             1 == confirmSatOperations" )
       
   484             result = ETrue;
       
   485             }
       
   486         }
       
   487     
       
   488     LOG2( SIMPLE, "SATSYSTEMSTATE: CSatSystemState::IsConfirmSatOperationsOn \
       
   489         exiting with value: %d", result )
       
   490     return result;
       
   491     }
       
   492 
       
   493 // -----------------------------------------------------------------------------
       
   494 // CSatSystemState::DisplayTextLanguage
       
   495 // -----------------------------------------------------------------------------
       
   496 //
       
   497 TBool CSatSystemState::DisplayTextLanguage()
       
   498     {
       
   499     LOG( SIMPLE,
       
   500         "SATSYSTEMSTATE: CSatSystemState::DisplayTextLanguage calling" )
       
   501     TInt selLanguage( 0 );
       
   502     CRepository* centRep( NULL );
       
   503 
       
   504     // Create instance to CentRep
       
   505     TRAPD( err, centRep = CRepository::NewL( KCRUidCommonEngineKeys ) );
       
   506     LOG2( SIMPLE, "SATSYSTEMSTATE:   CentRep failed: %i", err )
       
   507     if ( ( KErrNone == err ) && centRep )
       
   508         {
       
   509         // Get the needed information from CentRep
       
   510         centRep->Get( KGSDisplayTxtLang, selLanguage );
       
   511 
       
   512         // Delete CentRep
       
   513         delete centRep;
       
   514         }
       
   515     
       
   516     LOG2( SIMPLE, "SATSYSTEMSTATE: CSatSystemState::DisplayTextLanguage \
       
   517         exiting with value: %d", selLanguage )
       
   518     return selLanguage;
       
   519     }
       
   520 
       
   521 // -----------------------------------------------------------------------------
       
   522 // Checks is BT SAP active
       
   523 // -----------------------------------------------------------------------------
       
   524 //
       
   525 TBool CSatSystemState::IsBtSapActive()
       
   526     {
       
   527     LOG( SIMPLE,
       
   528         "SATSYSTEMSTATE: CSatSystemState::IsBtSapActive calling" )
       
   529     TInt sapActive( EBTSapNotConnected );
       
   530 
       
   531     // Get the backup state from P&S
       
   532     const TInt errCode( RProperty::Get(
       
   533         KPSUidBluetoothSapConnectionState,
       
   534         KBTSapConnectionState,
       
   535         sapActive ) );
       
   536 
       
   537     LOG2(
       
   538         SIMPLE,
       
   539         "SATSYSTEMSTATE:   RProperty::Get returned value: %i", errCode )
       
   540 
       
   541     TBool result( ( ( EBTSapConnecting == sapActive ) ||
       
   542                     ( EBTSapConnected == sapActive ) ) &&
       
   543                     ( KErrNone == errCode ) );
       
   544 
       
   545     LOG2(
       
   546         SIMPLE,
       
   547         "SATSYSTEMSTATE: CSatSystemState::IsBtSapActive exiting with value: %i",
       
   548         result )
       
   549     return result;
       
   550     }
       
   551 
       
   552 // -----------------------------------------------------------------------------
       
   553 // Reads current SMS Center number.
       
   554 // -----------------------------------------------------------------------------
       
   555 //
       
   556 void CSatSystemState::ReadCurrentSMSCL( TDes& aAddress )
       
   557     {
       
   558     LOG( SIMPLE, "SATSYSTEMSTATE: CSatSystemState::ReadCurrentSMSCL calling" )
       
   559 
       
   560     aAddress = KNullDesC;
       
   561     TInt status( KErrNone );
       
   562 
       
   563     // Open message server connection.
       
   564     CMsvSession* msvSession = CMsvSession::OpenSyncL( *this );
       
   565     CleanupStack::PushL( msvSession );
       
   566 
       
   567     CClientMtmRegistry* clientRegistry =
       
   568         CClientMtmRegistry::NewL( *msvSession );
       
   569 
       
   570     CleanupStack::PushL( clientRegistry );
       
   571 
       
   572     // Get the account.
       
   573     TInt serviceId( ServiceForMTML( *msvSession, KUidMsgTypeSMS ) );
       
   574     if ( KMsvUnknownServiceIndexEntryId != serviceId )
       
   575         {
       
   576         LOG( SIMPLE, 
       
   577         "SATSYSTEMSTATE: CSatSystemState::ReadCurrentSMSCL \
       
   578         KMsvUnknownServiceIndexEntryId != serviceId" )
       
   579         // Read the setting.
       
   580         CSmsClientMtm* mtm =
       
   581             static_cast<CSmsClientMtm*>( clientRegistry->NewMtmL( KUidMsgTypeSMS ) );
       
   582         CleanupStack::PushL( mtm );
       
   583         mtm->SwitchCurrentEntryL( serviceId );
       
   584         mtm->LoadMessageL();
       
   585         // Findout the number.
       
   586         const CSmsSettings& settings = mtm->ServiceSettings();
       
   587 
       
   588 #ifndef __HIDE_MESSAGING_API_V1__
       
   589         if ( settings.NumSCAddresses() != 0 )
       
   590             {
       
   591             if ( settings.DefaultSC() < settings.NumSCAddresses() )
       
   592                 {
       
   593                 LOG( SIMPLE, 
       
   594                 "SATSYSTEMSTATE: CSatSystemState::ReadCurrentSMSCL \
       
   595                 settings.DefaultSC() < settings.NumSCAddresses()" )
       
   596                 TPtrC addr = settings.SCAddress( settings.DefaultSC() ).Address();
       
   597                 aAddress = addr;
       
   598                 }
       
   599             else
       
   600                 {
       
   601                 LOG( SIMPLE, 
       
   602                 "SATSYSTEMSTATE: CSatSystemState::ReadCurrentSMSCL \
       
   603                 others" )
       
   604                 status = KErrOverflow;
       
   605                 }
       
   606             }
       
   607 #else
       
   608 
       
   609         if ( settings.ServiceCenterCount() != 0 )
       
   610             {
       
   611             LOG( SIMPLE, 
       
   612             "SATSYSTEMSTATE: CSatSystemState::ReadCurrentSMSCL \
       
   613             settings.ServiceCenterCount() != 0" )
       
   614             if ( settings.DefaultServiceCenter() < settings.ServiceCenterCount() )
       
   615                 {
       
   616                 LOG( SIMPLE, 
       
   617                 "SATSYSTEMSTATE: CSatSystemState::ReadCurrentSMSCL \
       
   618                 settings.DefaultServiceCenter() < \
       
   619                 settings.ServiceCenterCount()" )
       
   620                 TPtrC addr = settings.GetServiceCenter(
       
   621                     settings.DefaultServiceCenter() ).Address();
       
   622                 aAddress = addr;
       
   623                 }
       
   624             else
       
   625                 {
       
   626                 status = KErrOverflow;
       
   627                 }
       
   628             }
       
   629 
       
   630 #endif
       
   631         else
       
   632             {
       
   633             LOG( SIMPLE, 
       
   634             "SATSYSTEMSTATE: CSatSystemState::ReadCurrentSMSCL \
       
   635             settings.ServiceCenterCount() == 0" )
       
   636             status = KErrNotFound;
       
   637             }
       
   638 
       
   639         // Cleanup.
       
   640         CleanupStack::PopAndDestroy( mtm );
       
   641         }
       
   642     else
       
   643         {
       
   644         LOG( SIMPLE, 
       
   645         "SATSYSTEMSTATE: CSatSystemState::ReadCurrentSMSCL \
       
   646         KMsvUnknownServiceIndexEntryId == serviceId" )
       
   647         status = KErrNotFound;
       
   648         }
       
   649 
       
   650     CleanupStack::PopAndDestroy( clientRegistry );
       
   651     CleanupStack::PopAndDestroy( msvSession );
       
   652 
       
   653     if ( KErrNone != status )
       
   654         {
       
   655         LOG2( NORMAL,
       
   656             "SATSYSTEMSTATE: CSatSystemState::ReadCurrentSMSCL leave: %d",
       
   657             status )
       
   658         User::Leave( status );
       
   659         }
       
   660 
       
   661     LOG( NORMAL, "SATSYSTEMSTATE: CSatSystemState::ReadCurrentSMSCL exiting" )
       
   662     }
       
   663 
       
   664 // -----------------------------------------------------------------------------
       
   665 // Specifies an entry in the Message Server index.
       
   666 // -----------------------------------------------------------------------------
       
   667 //
       
   668 TMsvId CSatSystemState::ServiceForMTML(
       
   669     CMsvSession& aSession,
       
   670     const TUid& aMtm ) const
       
   671     {
       
   672     LOG( SIMPLE, "SATSYSTEMSTATE: CSatSystemState::ServiceForMTML calling" )
       
   673 
       
   674     CMsvEntry* entry = aSession.GetEntryL( KMsvRootIndexEntryIdValue );
       
   675     CleanupStack::PushL( entry );
       
   676     TMsvId serviceId = KMsvUnknownServiceIndexEntryId;
       
   677     LOG2( SIMPLE, 
       
   678     "SATSYSTEMSTATE: CSatSystemState::ServiceForMTML count: %d",
       
   679      entry->Count() )
       
   680     // Check are there any entries
       
   681     if ( entry->Count() != 0 )
       
   682         {        
       
   683         entry->SetSortTypeL(
       
   684             TMsvSelectionOrdering( KMsvGroupByType | KMsvGroupByStandardFolders,
       
   685             EMsvSortByDetailsReverse,
       
   686             ETrue ) );
       
   687 
       
   688         const TMsvEntry* tentry;
       
   689         for ( TInt cc( entry->Count() ); --cc >= 0; )
       
   690             {
       
   691             tentry = &( *entry )[cc];
       
   692             if ( tentry->iMtm == aMtm )
       
   693                 {
       
   694                 LOG( SIMPLE, 
       
   695                 "SATSYSTEMSTATE: CSatSystemState::ServiceForMTML \
       
   696                 tentry->iMtm == aMtm" )
       
   697                 if ( ( tentry->iType.iUid == KUidMsvServiceEntryValue ) &&
       
   698                      ( tentry->Id() != KMsvLocalServiceIndexEntryIdValue ) )
       
   699                     {
       
   700                     LOG( SIMPLE, 
       
   701                     "SATSYSTEMSTATE: CSatSystemState::ServiceForMTML \
       
   702                     exit loop" )
       
   703                     serviceId = tentry->Id();
       
   704                     cc = 0; // To exit for-loop. Replaces break.
       
   705                     }
       
   706                 }
       
   707             }
       
   708         }
       
   709 
       
   710     CleanupStack::PopAndDestroy( entry );
       
   711 
       
   712     LOG2( SIMPLE,
       
   713     "SATSYSTEMSTATE: CSatSystemState::ServiceForMTML exiting with value: %d",
       
   714     serviceId )
       
   715     return serviceId;
       
   716     }
       
   717 
       
   718 // -----------------------------------------------------------------------------
       
   719 // Method is used when the information of phones warnings and game tone
       
   720 // mode is needed.
       
   721 // Returns true if silent mode is on and false otherwise.
       
   722 // -----------------------------------------------------------------------------
       
   723 //
       
   724 TBool CSatSystemState::IsWarningAndGameTonesOn()
       
   725     {
       
   726     LOG( SIMPLE, "SATSYSTEMSTATE: \
       
   727         CSatSystemState::IsWarningAndGameTonesOn calling" )
       
   728 
       
   729     TBool modeOn( ETrue );
       
   730     CRepository* centRep( NULL );
       
   731 
       
   732     TRAPD( err, centRep = CRepository::NewL( KCRUidProfileEngine ) );
       
   733     LOG2( SIMPLE, "SATSYSTEMSTATE:   CentRep failed: %i", err )
       
   734     if ( ( KErrNone == err ) && centRep )
       
   735         {
       
   736         // Get the needed information from CentRep
       
   737         centRep->Get( KProEngActiveWarningTones, modeOn );
       
   738 
       
   739         // Delete CentRep
       
   740         delete centRep;
       
   741 
       
   742         }
       
   743    
       
   744     LOG2(
       
   745         SIMPLE,
       
   746         "SATSYSTEMSTATE: \
       
   747         CSatSystemState::IsWarningAndGameTonesOn exiting with value: %d",
       
   748         modeOn )
       
   749 
       
   750     return modeOn;
       
   751     }