adaptationlayer/systemstatemanageradaptation/ssm_misc_adaptation_dll/src/ssm_misc_adaptation.cpp
changeset 5 8ccc39f9d787
child 7 fa67e03b87df
equal deleted inserted replaced
4:510c70acdbf6 5:8ccc39f9d787
       
     1 /*
       
     2 * ==============================================================================
       
     3 *  Name:           ssm_misc_adaptation.cpp
       
     4 *  Part of:        SSMA MiscAdaptation
       
     5 *  Interface:      N/A
       
     6 *  Description:    Implementation of CMiscAdaptation class
       
     7 *  %version:       1 %
       
     8 *  %date_modified: Tue Dec 29 15:31:50 2009 %
       
     9 *
       
    10 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
    11 * All rights reserved.
       
    12 * This component and the accompanying materials are made available
       
    13 * under the terms of the License "Eclipse Public License v1.0"
       
    14 * which accompanies this distribution, and is available
       
    15 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
    16 *
       
    17 * Initial Contributors:
       
    18 * Nokia Corporation - initial contribution.
       
    19 *
       
    20 * Contributors:
       
    21 * 
       
    22 * Description: 
       
    23 * Implementation of miscadaptation.
       
    24 *
       
    25 */
       
    26 
       
    27 
       
    28 // INCLUDE FILES
       
    29 #include <s32mem.h>
       
    30 #include "ssm_misc_adaptation.h"
       
    31 #include "ssm/startupadaptationcommands.h"
       
    32 #include "sa_common_trace.h"
       
    33 
       
    34 #include "OstTraceDefinitions.h"
       
    35 #ifdef OST_TRACE_COMPILER_IN_USE
       
    36 #include "ssm_misc_adaptationtraces.h"
       
    37 #endif
       
    38 
       
    39 // EXTERNAL DATA STRUCTURES 
       
    40 // EXTERNAL FUNCTION PROTOTYPES 
       
    41 // FORWARD DECLARATIONS
       
    42 // CONSTANTS
       
    43 // MACROS
       
    44 // LOCAL CONSTANTS AND MACROS
       
    45 // MODULE DATA STRUCTURES  
       
    46 // LOCAL FUNCTION PROTOTYPES 
       
    47 
       
    48 
       
    49 // ============================ LOCAL FUNCTIONS ================================
       
    50 
       
    51 // ============================ MEMBER FUNCTIONS ===============================
       
    52 
       
    53 // -----------------------------------------------------------------------------
       
    54 // Function to create new Misc Adaptation Plugin. Used for a collection of 
       
    55 // activities.
       
    56 // -----------------------------------------------------------------------------
       
    57 //
       
    58 EXPORT_C MMiscAdaptation* CreateMiscAdaptationL()
       
    59     {
       
    60     CMiscAdaptation* miscAdaptation = CMiscAdaptation::NewL();
       
    61     return ( static_cast<MMiscAdaptation*>( miscAdaptation ) );
       
    62     }
       
    63 
       
    64 // -----------------------------------------------------------------------------
       
    65 // CMiscAdaptation::NewL 
       
    66 // Constructor
       
    67 // -----------------------------------------------------------------------------
       
    68 //
       
    69 CMiscAdaptation* CMiscAdaptation::NewL()
       
    70     {
       
    71     OstTrace0( TRACE_NORMAL, CMISCADAPTATION_NEWL_1,
       
    72                "SSMA # CMiscAdaptation::NewL" );
       
    73     INTERNAL_TRACE( _L( "SSMA # CMiscAdaptation::NewL" ) );
       
    74 
       
    75     CMiscAdaptation* self = new( ELeave ) CMiscAdaptation;
       
    76 
       
    77     CleanupStack::PushL( self );
       
    78     self->ConstructL();
       
    79     CleanupStack::Pop( self );
       
    80 
       
    81     OstTrace1( TRACE_API, CMISCADAPTATION_NEWL_2,
       
    82                "SSMA # CEmergencyCallRfAdaptation::NewL - return 0x%08x", self );
       
    83     INTERNAL_TRACE((_L("SSMA # CEmergencyCallRfAdaptation::NewL - return 0x%08x"), self ));
       
    84     return self;
       
    85     }
       
    86 
       
    87 // -----------------------------------------------------------------------------
       
    88 // CMiscAdaptation::~CMiscAdaptation
       
    89 // Destructor
       
    90 // -----------------------------------------------------------------------------
       
    91 //
       
    92 CMiscAdaptation::~CMiscAdaptation()
       
    93     {
       
    94     OstTrace0( TRACE_NORMAL, CMISCADAPTATION_CMISCADAPTATION_D1,
       
    95                "SSMA # CMiscAdaptation::~CMiscAdaptation" );
       
    96     INTERNAL_TRACE( _L("SSMA # CMiscAdaptation::~CMiscAdaptation" ) );
       
    97 
       
    98     // Close and release DMC
       
    99     iDmc.Close();
       
   100 
       
   101     OstTrace0( TRACE_NORMAL, CMISCADAPTATION_CMISCADAPTATION_D2,
       
   102                "SSMA # CMiscAdaptation::~CMiscAdaptation - return void" );
       
   103     INTERNAL_TRACE( _L("SSMA # CMiscAdaptation::~CMiscAdaptation - return void" ) );
       
   104     }
       
   105 
       
   106 // -----------------------------------------------------------------------------
       
   107 // CMiscAdaptation::CMiscAdaptation 
       
   108 // Constructor
       
   109 // -----------------------------------------------------------------------------
       
   110 //
       
   111 CMiscAdaptation::CMiscAdaptation()
       
   112     {
       
   113     OstTrace0( TRACE_NORMAL, CMISCADAPTATION_CMISCADAPTATION,
       
   114                "SSMA # CMiscAdaptation::CMiscAdaptation" );
       
   115     INTERNAL_TRACE( _L("SSMA # CMiscAdaptation::CMiscAdaptation" ) );
       
   116     }
       
   117 
       
   118 // -----------------------------------------------------------------------------
       
   119 // CMiscAdaptation::ConstructL
       
   120 // -----------------------------------------------------------------------------
       
   121 //
       
   122 void CMiscAdaptation::ConstructL()
       
   123     {
       
   124     OstTrace0( TRACE_NORMAL, CMISCADAPTATION_CONSTRUCTL_1,
       
   125                "SSMA # CMiscAdaptation::ConstructL" );
       
   126     INTERNAL_TRACE( _L( "SSMA # CMiscAdaptation::ConstructL" ) );
       
   127 
       
   128     // Open DMC
       
   129     iDmc.Open();
       
   130 
       
   131     OstTrace0( TRACE_NORMAL, CMISCADAPTATION_CONSTRUCTL_2,
       
   132                "SSMA # CMiscAdaptation::ConstructL - return void" );
       
   133     INTERNAL_TRACE( _L( "SSMA # CMiscAdaptation::ConstructL return void" ) );
       
   134     }
       
   135 
       
   136 // -----------------------------------------------------------------------------
       
   137 // CMiscAdaptation::Release
       
   138 // Deletes and frees memory allocated.
       
   139 // -----------------------------------------------------------------------------
       
   140 // 
       
   141 void CMiscAdaptation::Release()
       
   142     {
       
   143     OstTrace0( TRACE_NORMAL, CMISCADAPTATION_RELEASE,
       
   144                "SSMA # CMiscAdaptation::Release" );
       
   145     INTERNAL_TRACE( _L( "SSMA # CMiscAdaptation::Release" ) );
       
   146 
       
   147     delete this;
       
   148     }
       
   149 
       
   150 // -----------------------------------------------------------------------------
       
   151 // CMiscAdaptation::GetGlobalStartupMode
       
   152 // Get the start-up mode from the Cooperating System.
       
   153 // -----------------------------------------------------------------------------
       
   154 //
       
   155 void CMiscAdaptation::GetGlobalStartupMode( TDes8& aModePckg, 
       
   156                                             TRequestStatus& aStatus )
       
   157     {
       
   158     OstTrace0( TRACE_NORMAL, CMISCADAPTATION_GETGLOBALSTARTUPMODE_1,
       
   159                "SSMA # CMiscAdaptation::GetGlobalStartupMode" );
       
   160     INTERNAL_TRACE( _L( "SSMA # CMiscAdaptation::GetGlobalStartupMode" ) );
       
   161 
       
   162     aStatus = KRequestPending;
       
   163     TRequestStatus* status = &aStatus;
       
   164 
       
   165     StartupAdaptation::TGlobalStartupMode mode = StartupAdaptation::ENormal;
       
   166 
       
   167     // Get start up mode from DMC.
       
   168     RDmc::TTargetStartupMode dmcTargetMode( RDmc::EStartupModeNormal );
       
   169 
       
   170     TInt err = iDmc.GetStartUpMode( dmcTargetMode );
       
   171 
       
   172     OstTrace1( TRACE_NORMAL, CMISCADAPTATION_GETGLOBALSTARTUPMODE_2, 
       
   173                "SSMA # CMiscAdaptation::GetGlobalStartupMode; dmcTargetMode=%d", 
       
   174                dmcTargetMode );
       
   175     INTERNAL_TRACE( ( _L( "SSMA # CMiscAdaptation::GetGlobalStartupMode; dmcTargetMode=%d" ),
       
   176                       dmcTargetMode ) );
       
   177 
       
   178     if ( err == KErrNone )
       
   179         {
       
   180         switch( dmcTargetMode )
       
   181             {
       
   182             // Map startup from DMC mode to SSM mode.
       
   183             case RDmc::EStartupModeNormal:
       
   184                 {
       
   185                 mode = StartupAdaptation::ENormal;
       
   186                 break;
       
   187                 }
       
   188             case RDmc::EStartupModeAlarm:
       
   189                 {
       
   190                 mode = StartupAdaptation::EAlarm;
       
   191                 break;
       
   192                 }
       
   193             case RDmc::EStartupModeCharging:
       
   194                 {
       
   195                 mode = StartupAdaptation::ECharging;
       
   196                 break;
       
   197                 }
       
   198             case RDmc::EStartupModeTest:
       
   199                 {
       
   200                 mode = StartupAdaptation::ETest;
       
   201                 break;
       
   202                 }
       
   203             case RDmc::EStartupModeNone:
       
   204             case RDmc::EStartupModeFota:
       
   205             default:
       
   206                 {
       
   207                 err = KErrNotSupported;
       
   208                 break;
       
   209                 }
       
   210             }
       
   211         }
       
   212     
       
   213     OstTraceExt2( TRACE_NORMAL, CMISCADAPTATION_GETGLOBALSTARTUPMODE_3,
       
   214                   "SSMA # CMiscAdaptation::GetGlobalStartupMode; mode=%d; err=%d", 
       
   215                   mode, err );
       
   216     INTERNAL_TRACE( ( _L( "SSMA # CMiscAdaptation::GetGlobalStartupMode; mode=%d; err=%d" ),
       
   217                       mode, err ) );
       
   218     
       
   219     // Startupmode should be returned to SSM at aModePckg param.
       
   220     TPckgBuf<StartupAdaptation::TGlobalStartupMode> startUpMode( mode );
       
   221     aModePckg = startUpMode;
       
   222     User::RequestComplete( status, err );
       
   223 
       
   224     OstTrace0( TRACE_NORMAL, CMISCADAPTATION_GETGLOBALSTARTUPMODE_4,
       
   225                "SSMA # CMiscAdaptation::GetGlobalStartupMode - return void" );
       
   226     INTERNAL_TRACE( _L( "SSMA # CMiscAdaptation::GetGlobalStartupMode - return void" ) );
       
   227     }
       
   228 
       
   229 // -----------------------------------------------------------------------------
       
   230 // CMiscAdaptation::PrepareSimLanguages
       
   231 // Prepare language codes stored in the SIM in preferred language lists. 
       
   232 // The next call should be GetSimLanguages()
       
   233 // -----------------------------------------------------------------------------
       
   234 //
       
   235 void CMiscAdaptation::PrepareSimLanguages( TSsmLanguageListPriority aPriority, 
       
   236                                            TDes8& aSizePckg, 
       
   237                                            TRequestStatus& aStatus )
       
   238     {
       
   239     OstTrace0( TRACE_NORMAL, CMISCADAPTATION_PREPARESIMLANGUAGES_1,
       
   240                "SSMA # CMiscAdaptation::PrepareSimLanguages" );
       
   241     INTERNAL_TRACE( _L( "SSMA # CMiscAdaptation::PrepareSimLanguages" ) );
       
   242 
       
   243     aStatus = KRequestPending;
       
   244     TRequestStatus* status = &aStatus;
       
   245     
       
   246     TInt languageCount(1);
       
   247     
       
   248     switch( aPriority )
       
   249         {
       
   250         case EPrimaryLanguages:
       
   251             break;
       
   252         case ESecondaryLanguages:
       
   253             break;
       
   254         case ETertiaryLanguages:
       
   255             break;
       
   256         default:
       
   257             break;
       
   258         }
       
   259 
       
   260     OstTraceExt2( TRACE_NORMAL, CMISCADAPTATION_PREPARESIMLANGUAGES_2,
       
   261                "SSMA # CMiscAdaptation::PrepareSimLanguages - aPriority:%d languageCount:%d",
       
   262                aPriority, languageCount );
       
   263     INTERNAL_TRACE( ( _L( "SSMA # CMiscAdaptation::PrepareSimLanguages - aPriority:%d languageCount:%d" ),
       
   264                           aPriority, languageCount ) );
       
   265 
       
   266     TPckgBuf<TInt> returnValue(languageCount);
       
   267     aSizePckg = returnValue;
       
   268 
       
   269     User::RequestComplete( status, KErrNone );
       
   270 
       
   271     OstTrace0( TRACE_NORMAL, CMISCADAPTATION_PREPARESIMLANGUAGES_3,
       
   272                "SSMA # CMiscAdaptation::PrepareSimLanguages - return void" );
       
   273     INTERNAL_TRACE( _L( "SSMA # CMiscAdaptation::PrepareSimLanguages - return void" ) );
       
   274     }
       
   275 
       
   276 // -----------------------------------------------------------------------------
       
   277 // CMiscAdaptation::GetSimLanguagesL
       
   278 // Get language codes stored in the SIM in preferred language lists. 
       
   279 // PrepareSimLanguages() call should precede this call.
       
   280 // -----------------------------------------------------------------------------
       
   281 //
       
   282 void CMiscAdaptation::GetSimLanguagesL( CBufBase* aBuf, 
       
   283                                         TInt aCount )
       
   284     {
       
   285     OstTrace1( TRACE_NORMAL, CMISCADAPTATION_GETSIMLANGUAGES_1,
       
   286                "SSMA # CMiscAdaptation::GetSimLanguages - aCount:%d", aCount );
       
   287     INTERNAL_TRACE( ( _L( "SSMA # CMiscAdaptation::GetSimLanguages - aCount:%d" ), aCount ) );
       
   288 
       
   289 
       
   290     StartupAdaptation::RLanguageList languageList;
       
   291     // only as an example...
       
   292     for( TInt i=0; i<aCount; i++)
       
   293         {
       
   294         languageList.Append(StartupAdaptation::EPrefLangEnglish);
       
   295         }
       
   296 
       
   297     OstTrace0( TRACE_NORMAL, CMISCADAPTATION_GETSIMLANGUAGES_1,
       
   298                "SSMA # CMiscAdaptation::GetSimLanguages - write languages to stream." );
       
   299     INTERNAL_TRACE( _L( "SSMA # CMiscAdaptation::GetSimLanguages - write languages to stream." ) );
       
   300 
       
   301     RBufWriteStream writeStream(*aBuf);
       
   302     CleanupClosePushL(writeStream); 
       
   303     
       
   304     for (TInt i=0; i<aCount; i++)
       
   305         {
       
   306         writeStream.WriteInt32L(languageList[i]);
       
   307         }
       
   308     writeStream.CommitL();
       
   309     CleanupStack::PopAndDestroy();
       
   310     languageList.Close();
       
   311 
       
   312     OstTrace0( TRACE_NORMAL, CMISCADAPTATION_GETSIMLANGUAGES_2,
       
   313                "SSMA # CMiscAdaptation::GetSimLanguages - return void" );
       
   314     INTERNAL_TRACE( _L( "SSMA # CMiscAdaptation::GetSimLanguages - return void" ) );
       
   315     }
       
   316 
       
   317 // -----------------------------------------------------------------------------
       
   318 // CMiscAdaptation::GetHiddenReset
       
   319 // Retrieve information about Hidden reset.
       
   320 // -----------------------------------------------------------------------------
       
   321 //
       
   322 void CMiscAdaptation::GetHiddenReset( TDes8& aHiddenResetPckg,
       
   323                                       TRequestStatus& aStatus )
       
   324     {
       
   325     TBool iHiddenResetStatus = EFalse;
       
   326     OstTrace0( TRACE_NORMAL, CMISCADAPTATION_GETHIDDENRESET_1,
       
   327                "SSMA # CMiscAdaptation::GetHiddenReset" );
       
   328     INTERNAL_TRACE( _L( "SSMA # CMiscAdaptation::GetHiddenReset" ) );
       
   329 
       
   330     aStatus = KRequestPending;
       
   331     TRequestStatus* status = &aStatus;
       
   332 
       
   333     TInt err = iDmc.IsHiddenReset( iHiddenResetStatus );
       
   334     
       
   335     OstTraceExt2( TRACE_NORMAL, CMISCADAPTATION_GETHIDDENRESET_2, 
       
   336                    "SSMA # CMiscAdaptation::GetHiddenReset IsHiddenReset; Status = %d; Error = %d",
       
   337                    iHiddenResetStatus, err );
       
   338     INTERNAL_TRACE( ( _L( "SSMA # CMiscAdaptation::GetHiddenReset IsHiddenReset Status = %d; Error = %d" ),
       
   339                       iHiddenResetStatus, err ) );
       
   340 
       
   341     // Startupmode should be returned to SSM at aHiddenResetPckg param.
       
   342     TPckgBuf<TBool> hiddenReset( iHiddenResetStatus );
       
   343     aHiddenResetPckg = hiddenReset;
       
   344     User::RequestComplete( status, err );
       
   345 
       
   346     OstTrace0( TRACE_NORMAL, CMISCADAPTATION_GETHIDDENRESET_3,
       
   347                "SSMA # CMiscAdaptation::GetHiddenReset - return void" );
       
   348     INTERNAL_TRACE( _L( "SSMA # CMiscAdaptation::GetHiddenReset - return void" ) );
       
   349     }
       
   350 
       
   351 // -----------------------------------------------------------------------------
       
   352 // CMiscAdaptation::Cancel
       
   353 // Cancel the outstanding request. Reference implementation completes the 
       
   354 // requests immediately so there is nothing to Cancel.
       
   355 // On a device, Cancel() needs an implementation as the Request might be 
       
   356 // outstanding and it needs to be cancelled.
       
   357 // -----------------------------------------------------------------------------
       
   358 //
       
   359 void CMiscAdaptation::Cancel()
       
   360     {
       
   361     OstTrace0( TRACE_NORMAL, CMISCADAPTATION_CANCEL,
       
   362                "SSMA # CMiscAdaptation::Cancel" );
       
   363     INTERNAL_TRACE( _L( "SSMA # CMiscAdaptation::Cancel" ) );
       
   364     }
       
   365 
       
   366 // -----------------------------------------------------------------------------
       
   367 // CMiscAdaptation::SecurityStateChange
       
   368 // Request the next security state.
       
   369 // -----------------------------------------------------------------------------
       
   370 //
       
   371 void CMiscAdaptation::SecurityStateChange( TInt aState,
       
   372                                            TDes8& aResponsePckg,
       
   373                                            TRequestStatus& aStatus )
       
   374     {
       
   375     OstTrace0( TRACE_NORMAL, CMISCADAPTATION_SECURITYSTATECHANGE,
       
   376                "SSMA # CMiscAdaptation::SecurityStateChange" );
       
   377     INTERNAL_TRACE( _L( "SSMA # CMiscAdaptation::SecurityStateChange" ) );
       
   378 
       
   379     aStatus = KRequestPending;
       
   380     TRequestStatus* status = &aStatus;
       
   381     StartupAdaptation::TSecurityStateInfo info = StartupAdaptation::EYes;
       
   382 
       
   383     switch( aState )
       
   384         {
       
   385         case StartupAdaptation::ESIMPresent:
       
   386             info = StartupAdaptation::ENo;
       
   387             break;
       
   388         case StartupAdaptation::ESIMReadable:
       
   389             info = StartupAdaptation::EYes;
       
   390             break;
       
   391         case StartupAdaptation::ESIMInvalid:
       
   392             info = StartupAdaptation::ENo;
       
   393             break;
       
   394         case StartupAdaptation::ESIMRejected:
       
   395             info = StartupAdaptation::ENo;
       
   396             break;
       
   397         case StartupAdaptation::ESIMBlocked:
       
   398             info = StartupAdaptation::ENo;
       
   399             break;
       
   400         case StartupAdaptation::EPINRequired:
       
   401             info = StartupAdaptation::ENo;
       
   402             break;
       
   403         case StartupAdaptation::ESIMCodesOK:
       
   404             info = StartupAdaptation::EYes;
       
   405             break;
       
   406         case StartupAdaptation::ESIMLock:
       
   407             info = StartupAdaptation::ESimLockOk;
       
   408             break;
       
   409         case StartupAdaptation::ESecurityCheckOK:
       
   410             info = StartupAdaptation::EYes; 
       
   411             break;  
       
   412         case StartupAdaptation::ESecurityCheckFailed:
       
   413             info = StartupAdaptation::ENo;
       
   414             break;  
       
   415         case StartupAdaptation::ESIMLessOfflineSupported:
       
   416             info = StartupAdaptation::EYes; 
       
   417             break; 
       
   418         case StartupAdaptation::ESECCodeRequired:
       
   419             info = StartupAdaptation::ENo; 
       
   420             break; 
       
   421         case StartupAdaptation::ESECCodeOK:
       
   422             info = StartupAdaptation::EYes; 
       
   423             break; 
       
   424         default:
       
   425             break;
       
   426         }
       
   427         
       
   428     OstTraceExt2( TRACE_NORMAL, CMISCADAPTATION_SECURITYSTATECHANGE_2,
       
   429                "SSMA # CMiscAdaptation::SecurityStateChange: aState:%d info:%d", aState, info );
       
   430     INTERNAL_TRACE( ( _L( "SSMA # CMiscAdaptation::SecurityStateChange: aState:%d info:%d" ), 
       
   431                           aState, info ) );
       
   432     
       
   433     TPckgBuf<StartupAdaptation::TSecurityStateInfo> result( info );
       
   434     aResponsePckg = result;  
       
   435     User::RequestComplete( status, KErrNone );
       
   436     }
       
   437 
       
   438 // End of File
       
   439