# HG changeset patch # User Pat Downey # Date 1272985185 -3600 # Node ID c3ddd27f139f468921c489eb9c95d4187e080d9e # Parent ef634fd8dac3c9da0aef370b9d8be0796f4436df# Parent af68f9c297e3694afc90541e6c3e6595649b5b4c Merge null bld.infs for hwrmhaptics. diff -r af68f9c297e3 -r c3ddd27f139f accessoryservices/accessoryserver/BWINS/AccPolComU.DEF --- a/accessoryservices/accessoryserver/BWINS/AccPolComU.DEF Tue Apr 20 14:04:39 2010 +0100 +++ b/accessoryservices/accessoryserver/BWINS/AccPolComU.DEF Tue May 04 15:59:45 2010 +0100 @@ -61,4 +61,5 @@ ?CompareCriticalValuesL@CCapabilityStorage@@QAEHABVTAccPolGenericID@@@Z @ 60 NONAME ; int CCapabilityStorage::CompareCriticalValuesL(class TAccPolGenericID const &) ?GetGenericID@CCapabilityStorage@@QAEHAAVTAccPolGenericID@@@Z @ 61 NONAME ; int CCapabilityStorage::GetGenericID(class TAccPolGenericID &) ?IsCapabilityDefinedL@CAccPolAccessoryPolicy@@QAEHABVTAccPolGenericID@@ABK@Z @ 62 NONAME ; int CAccPolAccessoryPolicy::IsCapabilityDefinedL(class TAccPolGenericID const &, unsigned long const &) + ?RemoveIndexFromGenericIDArray@TAccPolGenericIDArrayAccessor@@SAXAAVTAccPolGenericIDArray@@H@Z @ 63 NONAME ; void TAccPolGenericIDArrayAccessor::RemoveIndexFromGenericIDArray(class TAccPolGenericIDArray &, int) diff -r af68f9c297e3 -r c3ddd27f139f accessoryservices/accessoryserver/EABI/AccPolComU.DEF --- a/accessoryservices/accessoryserver/EABI/AccPolComU.DEF Tue Apr 20 14:04:39 2010 +0100 +++ b/accessoryservices/accessoryserver/EABI/AccPolComU.DEF Tue May 04 15:59:45 2010 +0100 @@ -73,4 +73,5 @@ _ZN22CAccPolAccessoryPolicyD0Ev @ 72 NONAME _ZN22CAccPolAccessoryPolicyD1Ev @ 73 NONAME _ZN22CAccPolAccessoryPolicyD2Ev @ 74 NONAME + _ZN29TAccPolGenericIDArrayAccessor29RemoveIndexFromGenericIDArrayER21TAccPolGenericIDArrayi @ 75 NONAME diff -r af68f9c297e3 -r c3ddd27f139f accessoryservices/accessoryserver/inc/Common/AccPolGenericIDArrayAccessor.h --- a/accessoryservices/accessoryserver/inc/Common/AccPolGenericIDArrayAccessor.h Tue Apr 20 14:04:39 2010 +0100 +++ b/accessoryservices/accessoryserver/inc/Common/AccPolGenericIDArrayAccessor.h Tue May 04 15:59:45 2010 +0100 @@ -72,6 +72,18 @@ const TAccPolGenericIDArray& aSource, TAccPolGenericIDArray& aTarget ); + /** + * Remove an index entry from Generic ID array. + * + * @since S60 3.1 + * @param aGenericIDArray Source Generic ID array. + * @param aIndex Index entry to be removed from aGenericIDArray. + * @return ?description + */ + IMPORT_C static void RemoveIndexFromGenericIDArray( + TAccPolGenericIDArray& aGenericIDArray, + TInt aIndex ); + /** * Find Generic ID from array based on Device ID. * diff -r af68f9c297e3 -r c3ddd27f139f accessoryservices/accessoryserver/src/Policy/AccPolAccessoryPolicy.cpp --- a/accessoryservices/accessoryserver/src/Policy/AccPolAccessoryPolicy.cpp Tue Apr 20 14:04:39 2010 +0100 +++ b/accessoryservices/accessoryserver/src/Policy/AccPolAccessoryPolicy.cpp Tue May 04 15:59:45 2010 +0100 @@ -35,7 +35,7 @@ // CONSTANTS -const TInt KAccMaxRules = 6; +const TInt KAccMaxRules = 7; const TInt KAccConfigMaxCapabilityGroups = 64; const TInt KAccGidIntBuf = 100; @@ -295,6 +295,10 @@ { // Audio is routed to current GID, so resolve mode because this can be accessory settings case. SetAccessoryModeL( aGenericIDArray.GetGenericIDL( index ), accMode ); + if( accMode.iAccessoryMode == aCurrentAccessoryMode.iAccessoryMode ) + { + accMode.iAudioOutputStatus = aCurrentAccessoryMode.iAudioOutputStatus; + } COM_TRACE_2( "[AccFW: ACCPOLICY] CAccPolAccessoryPolicy::ResolveAccessoryModeL - set mode according to current audio output status UniqueID, (UniqueID=%d, mode=%d) ", aCurrentAudioOutputStatusUniqueID, accMode.iAccessoryMode ); } else @@ -378,6 +382,7 @@ // This should allocated from heap in future TAccPolMultibleConnectionRules aAccPolConnRules[KAccMaxRules] = { + {KPCHDMI, 0}, {KPCWired, KAccStereoAudio}, {KPCWired, KAccMonoAudio}, {KPCBluetooth, KAccStereoAudio}, diff -r af68f9c297e3 -r c3ddd27f139f accessoryservices/accessoryserver/src/Policy/AccPolGenericIDArrayAccessor.cpp --- a/accessoryservices/accessoryserver/src/Policy/AccPolGenericIDArrayAccessor.cpp Tue Apr 20 14:04:39 2010 +0100 +++ b/accessoryservices/accessoryserver/src/Policy/AccPolGenericIDArrayAccessor.cpp Tue May 04 15:59:45 2010 +0100 @@ -108,6 +108,27 @@ COM_TRACE_( "[AccFW: ACCPOLICY] TAccPolGenericIDArrayAccessor::CopyGenericIDArrayL() - return void" ); } + +EXPORT_C void TAccPolGenericIDArrayAccessor::RemoveIndexFromGenericIDArray( + TAccPolGenericIDArray& aGenericIDArray, + TInt aIndex) + { + COM_TRACE_( "[AccFW: ACCPOLICY] TAccPolGenericIDArrayAccessor::RemoveIndexFromGenericIDArray()" ); + + TInt iArrayCount( aGenericIDArray.Count() ); + TInt i(aIndex); + for ( ; i < (iArrayCount-1); ++i ) + { + aGenericIDArray.iGenericIDArray[i] = aGenericIDArray.iGenericIDArray[i+1]; + } + TAccPolGenericID emptyID; + aGenericIDArray.iGenericIDArray[i] = emptyID; + + COM_TRACE_( "[AccFW: ACCPOLICY] TAccPolGenericIDArrayAccessor::RemoveIndexFromGenericIDArray() - return void" ); + } + + + // ----------------------------------------------------------------------------- // TAccPolGenericIDArrayAccessor::FindWithHWDeviceIDL // Look for a Generic ID from the array with device ID. diff -r af68f9c297e3 -r c3ddd27f139f accessoryservices/accessoryserver/src/Server/AccSrvConnectionController.cpp --- a/accessoryservices/accessoryserver/src/Server/AccSrvConnectionController.cpp Tue Apr 20 14:04:39 2010 +0100 +++ b/accessoryservices/accessoryserver/src/Server/AccSrvConnectionController.cpp Tue May 04 15:59:45 2010 +0100 @@ -851,6 +851,13 @@ iServerModel->CurrentConnectionStatusL( genericIDArray ); + if( (EFalse == aAudioOutputStatus) && (KErrUnknown != aDbId) ) + { + TInt index( TAccPolGenericIDArrayAccessor::FindWithUniqueIDL( + genericIDArray, aDbId) ); + TAccPolGenericIDArrayAccessor::RemoveIndexFromGenericIDArray(genericIDArray, index); + } + accMode = iPolicy->ResolveAccessoryModeL( genericIDArray, aDbId, aAudioOutputStatus, @@ -890,27 +897,30 @@ TAccPolGenericID genericID; iServerModel->GetLastConnectedAccessoryL( genericID ); TUint32 num = genericID.SubblockCaps(); - if( num & KSBAudioSubblock ) + if ( genericID.PhysicalConnectionCaps() != KPCHDMI ) // No info note for HDMI { - CCapValue* capValue = iServerModel->CapabilityStorage().GetCapability( genericID, KAccIntegratedAudioInput ); - if( iInformationNoteDefault ) - { - noteValue = iInformationNoteDefault; - showNote = ETrue; - } - if( !capValue && !iInformationNoteDefault ) - { - showNote = ETrue; - } - } - else - { - if( iInformationNoteDefault ) - { - noteValue = iInformationNoteDefault; - showNote = ETrue; - } - } + if( num & KSBAudioSubblock ) + { + CCapValue* capValue = iServerModel->CapabilityStorage().GetCapability( genericID, KAccIntegratedAudioInput ); + if( iInformationNoteDefault ) + { + noteValue = iInformationNoteDefault; + showNote = ETrue; + } + if( !capValue && !iInformationNoteDefault ) + { + showNote = ETrue; + } + } + else + { + if( iInformationNoteDefault ) + { + noteValue = iInformationNoteDefault; + showNote = ETrue; + } + } + } } break; default: diff -r af68f9c297e3 -r c3ddd27f139f accessoryservices/accessoryserver/src/Server/AccSrvSettingsHandler.cpp --- a/accessoryservices/accessoryserver/src/Server/AccSrvSettingsHandler.cpp Tue Apr 20 14:04:39 2010 +0100 +++ b/accessoryservices/accessoryserver/src/Server/AccSrvSettingsHandler.cpp Tue May 04 15:59:45 2010 +0100 @@ -258,17 +258,18 @@ TPtr8 ptrBuf( buf->Des() ); User::LeaveIfError( session.Connect() ); + CleanupClosePushL ( session ); User::LeaveIfError( file.Open( session, KHWDevicesFile, EFileRead ) ); file.Read( ptrBuf ); file.Close(); - session.Close(); TLex8 l( ptrBuf ); TInt32 temp; l.Val( temp ); settings = static_cast< TUint32 >( temp ); - CleanupStack::Pop( buf ); + CleanupStack::PopAndDestroy ( &session ); + CleanupStack::PopAndDestroy ( buf ); COM_TRACE_1( "[AccFW:AccServer] CAccSrvSettingsHandler::GetSupportedHWDevicesL() - return %d", settings ); diff -r af68f9c297e3 -r c3ddd27f139f accessoryservices/accessoryserver/src/Server/AccSrvSubAsyComms.cpp --- a/accessoryservices/accessoryserver/src/Server/AccSrvSubAsyComms.cpp Tue Apr 20 14:04:39 2010 +0100 +++ b/accessoryservices/accessoryserver/src/Server/AccSrvSubAsyComms.cpp Tue May 04 15:59:45 2010 +0100 @@ -292,30 +292,36 @@ HBufC8 *asyData = NULL; CBufFlat* objectBuf = NULL; - // - // Allocated the buffer which is really needed! - // - if ( EProcessResponseTDes == aResponseType && - ECmdGetSupportedBTProfiles != iOutstandingProcessCmdId ) - { - asyDataSize = aMessage.GetDesLengthL( KAccServParamPosSecond ); - asyData = HBufC8::NewL( asyDataSize ); - CleanupStack::PushL( asyData ); - } - else if ( EProcessResponseObject == aResponseType ) - { - objectBuf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity ); - CleanupStack::PushL( objectBuf ); - TInt bufLength( aMessage.GetDesLength( KAccServParamPosSecond ) ); - objectBuf->ResizeL( bufLength ); - } - else - { - COM_TRACE_( "[AccFW:AccServer] CAccSrvSubAsyComms::ProcessResponseL() - Buffer is not needed!" ); - } - + if ( !aTimeOut ) { + // + // Allocated the buffer which is really needed! + // + if ( EProcessResponseTDes == aResponseType && + ECmdGetSupportedBTProfiles != iOutstandingProcessCmdId ) + { + COM_TRACE_( "[AccFW:AccServer] CAccSrvSubAsyComms::ProcessResponseL() - Before RMessage with EProcessResponse" ); + asyDataSize = aMessage.GetDesLengthL( KAccServParamPosSecond ); + asyData = HBufC8::NewL( asyDataSize ); + CleanupStack::PushL( asyData ); + COM_TRACE_( "[AccFW:AccServer] CAccSrvSubAsyComms::ProcessResponseL() - After RMessage with EProcessResponse" ); + } + else if ( EProcessResponseObject == aResponseType ) + { + COM_TRACE_( "[AccFW:AccServer] CAccSrvSubAsyComms::ProcessResponseL() - Before RMessage with EProcessResponseObject" ); + TInt bufLength = ( aMessage.GetDesLengthL( KAccServParamPosSecond ) ); + objectBuf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity ); + CleanupStack::PushL( objectBuf ); + objectBuf->ResizeL( bufLength ); + COM_TRACE_( "[AccFW:AccServer] CAccSrvSubAsyComms::ProcessResponseL() - After RMessage with EProcessResponseObject" ); + } + else + { + COM_TRACE_( "[AccFW:AccServer] CAccSrvSubAsyComms::ProcessResponseL() - Buffer is not needed!" ); + } + + aMessage.ReadL( KAccServParamPosFirst, tridPckgBuf ); if ( iOutstandingTrId != tridPckgBuf() ) { @@ -445,24 +451,42 @@ } else { - TPtr8 asyDataPtr = asyData->Des(); + TPtr8 asyDataPtr ( NULL, 0, 0 ); + if ( NULL != asyData ) + { + asyDataPtr.Set ( asyData->Des() ); + } iConnectionController->NotificationQueue().CompleteValueMessageL( messageId, asyDataPtr, errPckgBuf(), - iOutstandingTrId ); - CleanupStack::PopAndDestroy( asyData ); + iOutstandingTrId ); + + if ( NULL != asyData ) + { + CleanupStack::PopAndDestroy( asyData ); + } } break; case EProcessResponseObject : - { - TPtr8 objectBufPtr( objectBuf->Ptr(0) ); - iConnectionController->NotificationQueue().CompleteValueMessageL( - messageId, - iOutstandingTrId, - &objectBufPtr, - errPckgBuf() ); - CleanupStack::PopAndDestroy( objectBuf ); + { + TPtr8 objectBufPtr ( NULL, 0, 0 ); + + if( NULL != objectBuf ) + { + objectBufPtr.Set ( objectBuf->Ptr(0) ); + } + + iConnectionController->NotificationQueue().CompleteValueMessageL( + messageId, + iOutstandingTrId, + &objectBufPtr, + errPckgBuf() ); + + if( NULL != objectBuf ) + { + CleanupStack::PopAndDestroy( objectBuf ); + } } break; diff -r af68f9c297e3 -r c3ddd27f139f accessoryservices/pluggeddisplay/pluggeddisplayengine/src/edidhandler.cpp --- a/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/edidhandler.cpp Tue Apr 20 14:04:39 2010 +0100 +++ b/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/edidhandler.cpp Tue May 04 15:59:45 2010 +0100 @@ -1266,7 +1266,7 @@ // No need to calculate if the screen size is zero if( aBRCorner.iX > 0 && aBRCorner.iY > 0 ) { - // hOverscanPixels = ( ( Width * hOverscan ) + 50 ) / 20000 + // hOverscanPixels = ( ( Width * hOverscan ) + 50 ) / 10000 // // hOverscanPixels: // pixels which are needed to be added to top left X @@ -1277,14 +1277,14 @@ // Horizontal overscan in percents (1% == 100) // 50: // Used to round up possible decimals - // 20000: + // 10000: // Used to get rid of percentage multiplier and to get the overscan value // for one side - TInt hOverscanPixels = ( aBRCorner.iX * iHOverscan + 50 ) / 20000; + TInt hOverscanPixels = ( aBRCorner.iX * iHOverscan + 50 ) / 10000; aTLCorner.iX = hOverscanPixels; aBRCorner.iX = ( aBRCorner.iX - hOverscanPixels ); - // vOverscanPixels = ( ( Height * vOverscan ) + 50 ) / 20000 + // vOverscanPixels = ( ( Height * vOverscan ) + 50 ) / 10000 // // vOverscanPixels: // pixels which are needed to be added to top left Y @@ -1295,10 +1295,10 @@ // Vertical overscan in percents (1% == 100) // 50: // Used to round up possible decimals - // 20000: + // 10000: // Used to get rid of percentage multiplier and to get the overscan value // for one side - TInt vOverscanPixels = ( aBRCorner.iY * iVOverscan + 50 ) / 20000; + TInt vOverscanPixels = ( aBRCorner.iY * iVOverscan + 50 ) / 10000; aTLCorner.iY = vOverscanPixels; aBRCorner.iY = ( aBRCorner.iY - vOverscanPixels ); } diff -r af68f9c297e3 -r c3ddd27f139f accessoryservices/remotecontrolfw/client/coreapi/public/remconcoreapicontrollerobserver.h --- a/accessoryservices/remotecontrolfw/client/coreapi/public/remconcoreapicontrollerobserver.h Tue Apr 20 14:04:39 2010 +0100 +++ b/accessoryservices/remotecontrolfw/client/coreapi/public/remconcoreapicontrollerobserver.h Tue May 04 15:59:45 2010 +0100 @@ -41,7 +41,7 @@ command of this type. @param The response error. */ - virtual void MrccacoResponse(TRemConCoreApiOperationId aOperationId, TInt aError); + IMPORT_C virtual void MrccacoResponse(TRemConCoreApiOperationId aOperationId, TInt aError); }; #endif // REMCONCOREAPICONTROLLEROBSERVER_H diff -r af68f9c297e3 -r c3ddd27f139f psmservices/psmserver/src/client/psmclientimpl.cpp --- a/psmservices/psmserver/src/client/psmclientimpl.cpp Tue Apr 20 14:04:39 2010 +0100 +++ b/psmservices/psmserver/src/client/psmclientimpl.cpp Tue May 04 15:59:45 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -64,22 +64,10 @@ { COMPONENT_TRACE( ( _L( "PSM Client - CPsmClientImpl::~CPsmClientImpl()" ) ) ); - if ( iActive->IsActive() ) - { - CancelPowerSaveModeChange(); - } + CancelPowerSaveModeChange(); - if ( iActive ) - { - delete iActive; - iActive = NULL; - } - - if ( iSettings ) - { - delete iSettings; - iSettings = NULL; - } + delete iActive; + delete iSettings; iPsmServer.Close(); diff -r af68f9c297e3 -r c3ddd27f139f resourcemgmt/hwrmfmtxwatcherplugin/src/hwrmfmtxusbobserver.cpp --- a/resourcemgmt/hwrmfmtxwatcherplugin/src/hwrmfmtxusbobserver.cpp Tue Apr 20 14:04:39 2010 +0100 +++ b/resourcemgmt/hwrmfmtxwatcherplugin/src/hwrmfmtxusbobserver.cpp Tue May 04 15:59:45 2010 +0100 @@ -33,7 +33,7 @@ INFO_LOG1( "UsbConnected - %d", aDeviceState); if ( aDeviceState == EUsbDeviceStateAttached || aDeviceState == EUsbDeviceStatePowered || - aDeviceState == EUsbDeviceStateUndefined) + aDeviceState == EUsbDeviceStateUndefined || aDeviceState == EUsbDeviceStateSuspended ) { RDebug::Print(_L("return false ")); return EFalse; diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/ssmcmdlists/data/noncriticalcmdlist_ext.rss --- a/sysstatemgmt/ssmcmdlists/data/noncriticalcmdlist_ext.rss Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/ssmcmdlists/data/noncriticalcmdlist_ext.rss Tue May 04 15:59:45 2010 +0100 @@ -75,7 +75,6 @@ r_cmd_watcher, r_cmd_dmutilsrv, // prio 0xFFA7 - r_cmd_contentharvester, r_cmd_mdswatchdog, r_cmd_satsrv, r_cmd_cbssrv, @@ -90,7 +89,6 @@ #ifdef FF_LBT_ENGINE r_cmd_lbtsrv, #endif // FF_LBT_ENGINE - r_cmd_taskswitcher, //prio 0xFFA6 r_cmd_dmfirstbootreason, r_cmd_fota, @@ -141,6 +139,18 @@ //prio 0x7EE5 r_cmd_aab #endif +#ifdef FF_SEARCH_SW + //prio 0x7EE4 + ,r_cmd_activitymonitor13, + //prio 0x7EE3 + r_cmd_searchsw //SLAR-832C9T +#endif //FF_SEARCH_SW +#ifdef FF_EMAIL_FRAMEWORK + //prio 0x7EE2 + ,r_cmd_activitymonitor14, + //prio 0x7EE1 + r_cmd_nmailagent //MBEN-83CFQE +#endif //FF_EMAIL_FRAMEWORK }; } @@ -345,7 +355,40 @@ dll_data = r_dlldata_activitymonitor_timeout; } #endif - + +// --------------------------------------------------------------------------- +// r_cmd_activitymonitor13 +// --------------------------------------------------------------------------- +// +#ifdef FF_SEARCH_SW +RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_activitymonitor13 + { + priority = 0x7EE4; + severity = ECmdCriticalSeverity; + execution_behaviour = ESsmWaitForSignal; + dllname = "ssmactivitycmd.dll"; + ordinal = 1; // SsmActivityCmdNewL + retries = 2; + dll_data = r_dlldata_activitymonitor_timeout; + } +#endif //FF_SEARCH_SW + +// --------------------------------------------------------------------------- +// r_cmd_activitymonitor14 +// --------------------------------------------------------------------------- +// +#ifdef FF_EMAIL_FRAMEWORK +RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_activitymonitor14 + { + priority = 0x7EE2; + severity = ECmdCriticalSeverity; + execution_behaviour = ESsmWaitForSignal; + dllname = "ssmactivitycmd.dll"; + ordinal = 1; // SsmActivityCmdNewL + retries = 2; + dll_data = r_dlldata_activitymonitor_timeout; + } +#endif //FF_EMAIL_FRAMEWORK // --------------------------------------------------------------------------- // r_cmd_amastart // --------------------------------------------------------------------------- @@ -416,21 +459,8 @@ { priority = 0x7EE9; name = "csserver.exe"; - execution_behaviour = ESsmFireAndForget; + execution_behaviour = ESsmWaitForSignal; } - -// --------------------------------------------------------------------------- -// r_cmd_contentharvester -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_contentharvester - { - priority = 0xFFA7; - name = "z:\\sys\\bin\\contentharvester.exe"; - execution_behaviour = ESsmFireAndForget; //behavior changed from ESsmWaitForSignal as part of SCB CR MSOI-7XARNT - monitor_info = r_mon_3_restarts_ignore; - } - // --------------------------------------------------------------------------- // r_cmd_dcmo // --------------------------------------------------------------------------- @@ -566,7 +596,7 @@ // r_cmd_msgnotifier // --------------------------------------------------------------------------- // -RESOURCE SSM_START_PROCESS_INFO r_cmd_msgnotifier +RESOURCE SSM_START_APP_INFO r_cmd_msgnotifier { priority = 0x7EE7; name = "msgnotifier.exe"; @@ -625,6 +655,52 @@ execution_behaviour = ESsmWaitForSignal; timeout = 10000; } + +//--------------------------------------------------------------------------- +// r_cmd_searchsw +// --------------------------------------------------------------------------- +// +#ifdef FF_SEARCH_SW +RESOURCE SSM_START_PROCESS_INFO r_cmd_searchsw + { + priority = 0x7EE3; + name = "z:\\sys\\bin\\cpixwatchdog.exe"; + execution_behaviour = ESsmFireAndForget; + conditional_information = r_cond_feat_searchsw; + } + +// --------------------------------------------------------------------------- +// r_cond_feat_searchsw +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_FEATURE_VALUE r_cond_feat_searchsw + { + feature_id = KFeatureIdFfSearchSw; + } +#endif //FF_SEARCH_SW + +// --------------------------------------------------------------------------- +// r_cmd_nmailagent +// --------------------------------------------------------------------------- +// +#ifdef FF_EMAIL_FRAMEWORK +RESOURCE SSM_START_PROCESS_INFO r_cmd_nmailagent + { + priority = 0x7EE1; + name = "z:\\sys\\bin\\nmailagent.exe"; + execution_behaviour = ESsmFireAndForget; + conditional_information = r_cond_feat_emailfw; + } + +// --------------------------------------------------------------------------- +// r_cond_feat_emailfw +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_FEATURE_VALUE r_cond_feat_emailfw + { + feature_id = KFeatureIdFfEmailFramework; + } +#endif //FF_EMAIL_FRAMEWORK // --------------------------------------------------------------------------- // r_cmd_supllistener @@ -641,18 +717,6 @@ } // --------------------------------------------------------------------------- -// r_cmd_taskswitcher -// --------------------------------------------------------------------------- -RESOURCE SSM_START_APP_INFO r_cmd_taskswitcher - { - priority = 0xFFA7; - name = "z:\\sys\\bin\\tsapplication.exe"; - execution_behaviour = ESsmDeferredWaitForSignal; - background = 1; // To background - monitor_info = r_mon_3_restarts_ignore; - } - -// --------------------------------------------------------------------------- // r_cmd_multiple_wait // --------------------------------------------------------------------------- // diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/ssmcmdlists/data/securitycheckcmdlist.rss --- a/sysstatemgmt/ssmcmdlists/data/securitycheckcmdlist.rss Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/ssmcmdlists/data/securitycheckcmdlist.rss Tue May 04 15:59:45 2010 +0100 @@ -138,7 +138,7 @@ priority = 0xFFDF; name = "z:\\sys\\bin\\hsapplication.exe"; execution_behaviour = ESsmDeferredWaitForSignal; - + monitor_info = r_mon_max_restarts_ignore; } // --------------------------------------------------------------------------- diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/ssmcmdlists/data/uiservicescmdlist.rss --- a/sysstatemgmt/ssmcmdlists/data/uiservicescmdlist.rss Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/ssmcmdlists/data/uiservicescmdlist.rss Tue May 04 15:59:45 2010 +0100 @@ -78,8 +78,6 @@ // prio 0xFFC7 r_cmd_initclkeys, r_cmd_initramdrive, - // prio 0xFFA7 - r_cmd_splash, r_cmd_rtc, // prio 0xFF97 // prio 0xFF96 - rtc (tzsrv, mediator & hwrmsrv have been moved to extended startuplist but uses the same multiplewait command ) r_cmd_multiwaitforever1, @@ -366,16 +364,6 @@ } // --------------------------------------------------------------------------- -// r_cmd_splash -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_splash - { - priority = 0xFFA7; - name = "Z:\\sys\\bin\\splashscreen.exe"; - } - -// --------------------------------------------------------------------------- // r_cmd_startupmode // --------------------------------------------------------------------------- // diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/ssmcmdlists/data/uiservicescmdlist_ext.rss --- a/sysstatemgmt/ssmcmdlists/data/uiservicescmdlist_ext.rss Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/ssmcmdlists/data/uiservicescmdlist_ext.rss Tue May 04 15:59:45 2010 +0100 @@ -65,6 +65,8 @@ { commands = { + //prio 0xFFA7 + r_cmd_splash, // prio 0xFF99 r_cmd_tzsrv, r_cmd_mediator, @@ -117,6 +119,15 @@ conditional_information = r_cond_feat_mediator; } +// --------------------------------------------------------------------------- +// r_cmd_splash +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_splash + { + priority = 0xFFA7; + name = "Z:\\sys\\bin\\splashscreen.exe"; + } // --------------------------------------------------------------------------- // r_cmd_tzsrv diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/ssmcustcmds/ssmsystemcmds/src/ssminitpskeys.cpp --- a/sysstatemgmt/ssmcustcmds/ssmsystemcmds/src/ssminitpskeys.cpp Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/ssmcustcmds/ssmsystemcmds/src/ssminitpskeys.cpp Tue May 04 15:59:45 2010 +0100 @@ -299,7 +299,15 @@ KWriteDeviceDataPolicy ); SetL( KPSStarterUid, KSSMUILanguagePSKey , 0 ); - + INFO( "KPSUidStartup::KIgnoreSecurityEvent" ); + DefineL( KPSUidStartup, + KIgnoreSecurityEvent, + KReadDeviceDataPolicy, + KWriteDeviceDataPolicy ); + SetL( KPSUidStartup, + KIgnoreSecurityEvent, + EPSIgnoreSecurityEventUninitialized ); + // Store FirstBoot Value from cenrep TInt csVal( 0 ); TInt psVal( 0 ); diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/ssmpolicyplugins/ssmshutdownpolicy/group/ssmshutdownpolicy.mmp --- a/sysstatemgmt/ssmpolicyplugins/ssmshutdownpolicy/group/ssmshutdownpolicy.mmp Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/ssmpolicyplugins/ssmshutdownpolicy/group/ssmshutdownpolicy.mmp Tue May 04 15:59:45 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -45,6 +45,7 @@ LIBRARY ssmpolicybase.lib LIBRARY ssmstatepolicybase.lib LIBRARY ssmmapperutility.lib +LIBRARY ssmuiproviderdll.lib // >>> uncomment to enable function-level tracing // MACRO __SSM_FUNC_TRACE__ diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/ssmpolicyplugins/ssmshutdownpolicy/src/ssmshutdownpolicy.cpp --- a/sysstatemgmt/ssmpolicyplugins/ssmshutdownpolicy/src/ssmshutdownpolicy.cpp Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/ssmpolicyplugins/ssmshutdownpolicy/src/ssmshutdownpolicy.cpp Tue May 04 15:59:45 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -21,6 +21,7 @@ #include #include #include +#include #include "ssmsubstateext.hrh" #include "ssmmapperutility.h" @@ -215,6 +216,22 @@ CRepository::NewLC( iUtil->CrUid( KCRUidStartup ) ); TInt errorCode = repository->Set( KStartupReason, aReasonCode ); ERROR( errorCode, "Failed to set KStartupReason CenRep key" ); + + if( KErrDiskFull == errorCode ) + { + //Need not to put on CleanupStack, it's not calling any leaving function and + //it's handled by reference count + CSsmUiSpecific* ssmUiSpecific = CSsmUiSpecific::InstanceL(); + //Free complete reserve space + errorCode = ssmUiSpecific->FreeReservedPhoneMemorySpace( 0 ); + if( KErrNone == errorCode ) + { + errorCode = repository->Set( KStartupReason, aReasonCode ); + ERROR( errorCode, "Failed to set KStartupReason CenRep key after freeing the memory" ); + } + CSsmUiSpecific::Release(); + } + CleanupStack::PopAndDestroy( repository ); User::LeaveIfError( errorCode ); } diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/systemstatemgr/ssm/group/ssmserver.mmp --- a/sysstatemgmt/systemstatemgr/ssm/group/ssmserver.mmp Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/ssm/group/ssmserver.mmp Tue May 04 15:59:45 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -59,6 +59,7 @@ LIBRARY estor.lib //used by ssmclecli.lib LIBRARY ssmcmd.lib //used by ssmclecli.lib LIBRARY ssmcmn.lib +LIBRARY ssmuiproviderdll.lib STATICLIBRARY ssmclecli.lib STATICLIBRARY ssmclesrv.lib //used by ssmclecli.lib diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/systemstatemgr/ssm/inc/ssmserver.h --- a/sysstatemgmt/systemstatemgr/ssm/inc/ssmserver.h Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/ssm/inc/ssmserver.h Tue May 04 15:59:45 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -25,6 +25,7 @@ class CSsmSwpRequestHandler; class CSsmSwpPolicyResolver; class CCleSessionProxy; +class CSsmUiSpecific; /** Implements the API used to request changes to the @@ -78,6 +79,7 @@ CSsmSwpRequestHandler* iSwpRequestHandler; CSsmSwpPolicyResolver* iSwpResolver; CCleSessionProxy* iSwpCleSession; + CSsmUiSpecific* iSsmUiSpecific; }; #endif diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/systemstatemgr/ssm/src/ssmserver.cpp --- a/sysstatemgmt/systemstatemgr/ssm/src/ssmserver.cpp Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/ssm/src/ssmserver.cpp Tue May 04 15:59:45 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -16,6 +16,7 @@ #include #include #include +#include #include "ssmserverpanic.h" #include "ssmserver.h" @@ -29,6 +30,7 @@ #include "ssmstatepolicyframe.h" #include "ssmswppolicyresolver.h" #include "ssmswprequesthandler.h" +#include "ssmdebug.h" // ------------------- Policy Server Security Setup ---------------------- @@ -86,7 +88,11 @@ { iSwpCleSession->ReleaseCle(); } - + + if(iSsmUiSpecific) + { + iSsmUiSpecific->Release(); + } } //lint !e529 not subsequently referenced /** @@ -134,6 +140,10 @@ __ASSERT_ALWAYS( KErrNone == User::SetCritical(User::ESystemCritical), PanicNow(KPanicSysStateMgr,ESsmServerError1)); __ASSERT_ALWAYS( KErrNone == User::RenameThread(KSsmServerName), PanicNow(KPanicSysStateMgr,ESsmServerError2)); + iSsmUiSpecific = CSsmUiSpecific::InstanceL(); + //Reserve memory for critical operation especially when phone memory will be full + TInt err = iSsmUiSpecific->ReservePhoneMemorySpace(); + DEBUGPRINT2(_L("CSsmUiSpecific::ReservePhoneMemorySpace returned with = %d"), err); // --- Instantiate the "System State" handling classes --- // Create a state policy resolver and load the initial policy CSsmStatePolicyResolver* stateResolver = CSsmStatePolicyResolver::NewLC(); diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/systemstatemgr/test/tcmd/group/ssmatest_cmd.iby --- a/sysstatemgmt/systemstatemgr/test/tcmd/group/ssmatest_cmd.iby Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/tcmd/group/ssmatest_cmd.iby Tue May 04 15:59:45 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -55,7 +55,9 @@ data=EPOCROOT##epoc32\data\Z\resource\ssmatest\cmdlists5\cmdlists5.rsc resource\ssmatest\cmdlists5\cmdlists5.rsc data=EPOCROOT##epoc32\data\Z\resource\ssmatest\cmdlists6\cmdlists6.rsc resource\ssmatest\cmdlists6\cmdlists6.rsc data=EPOCROOT##epoc32\data\Z\resource\ssmatest\bic\tcmd_cmdlist_swp_builtincmd.rsc resource\ssmatest\bic\tcmd_cmdlist_swp_builtincmd.rsc - +data=EPOCROOT##epoc32\data\Z\resource\ssmatest\cmdlists7\cmdlists7a.rsc resource\ssmatest\cmdlists7\cmdlists7a.rsc +data=EPOCROOT##epoc32\data\Z\resource\ssmatest\cmdlists7\cmdlists7b.rsc resource\ssmatest\cmdlists7\cmdlists7b.rsc +data=EPOCROOT##epoc32\data\Z\resource\ssmatest\cmdlists7\cmdlists7c.rsc resource\ssmatest\cmdlists7\cmdlists7c.rsc // policy files for reqswpchange data=ABI_DIR\BUILD_DIR\ssm.state.policy.createswp.dll sys\bin\ssm.state.policy.createswp.dll data=ABI_DIR\BUILD_DIR\ssm.swp.policy.test.cmdreqswp.dll sys\bin\ssm.swp.policy.test.cmdreqswp.dll diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/systemstatemgr/test/tcmd/group/tcmd_server.mmp --- a/sysstatemgmt/systemstatemgr/test/tcmd/group/tcmd_server.mmp Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/tcmd/group/tcmd_server.mmp Tue May 04 15:59:45 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -257,5 +257,18 @@ TARGETPATH /resource/ssmatest/bic END +SOURCEPATH ../resource +START RESOURCE cmdlists7a.rss +TARGETPATH /resource/ssmatest/cmdlists7 +END +SOURCEPATH ../resource +START RESOURCE cmdlists7b.rss +TARGETPATH /resource/ssmatest/cmdlists7 +END + +SOURCEPATH ../resource +START RESOURCE cmdlists7c.rss +TARGETPATH /resource/ssmatest/cmdlists7 +END SMPSAFE diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/systemstatemgr/test/tcmd/inc/tcmd_step_resourcereader.h --- a/sysstatemgmt/systemstatemgr/test/tcmd/inc/tcmd_step_resourcereader.h Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/tcmd/inc/tcmd_step_resourcereader.h Tue May 04 15:59:45 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -159,6 +159,7 @@ void TestGet3L(); void ThreadGet3L(); void TestGet4L(); + void TestGet5L(); void ConfTestL(); void TestGeneral1L(); void TestCommandType1L(); diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/systemstatemgr/test/tcmd/resource/cmdlists7a.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/systemstatemgr/test/tcmd/resource/cmdlists7a.rss Tue May 04 15:59:45 2010 +0100 @@ -0,0 +1,47 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Provides no command +// +// + +#include +#include "testcmdlistids.hrh" + +UID2 KUidSsmCommandListResourceFile + +// SSM_COMMAND_LIST_ROOT must be the first resource in a command list resource file. +// The SSM relies on this having a resource ID of 1. +RESOURCE SSM_COMMAND_LIST_ROOT + { + command_list_mapping = r_command_list_mapping; + } + +RESOURCE SSM_COMMAND_LIST_MAPPING r_command_list_mapping + { + mappings = + { + SSM_COMMANDLISTID_TO_RESOURCEID + { + command_list_id = ETestCommandListId1; + resource_id = r_command_list_1; + } + }; + } + +RESOURCE SSM_COMMAND_LIST r_command_list_1 + { + commands = + { + }; + } \ No newline at end of file diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/systemstatemgr/test/tcmd/resource/cmdlists7b.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/systemstatemgr/test/tcmd/resource/cmdlists7b.rss Tue May 04 15:59:45 2010 +0100 @@ -0,0 +1,66 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Provides commands with conditional info +// +// + +#include +#include "testcmd.rh" +#include "testcmdlistids.hrh" + +UID2 KUidSsmCommandListResourceFile + +// SSM_COMMAND_LIST_ROOT must be the first resource in a command list resource file. +// The SSM relies on this having a resource ID of 1. +RESOURCE SSM_COMMAND_LIST_ROOT + { + command_list_mapping = r_command_list_mapping; + } + +RESOURCE SSM_COMMAND_LIST_MAPPING r_command_list_mapping + { + mappings = + { + SSM_COMMANDLISTID_TO_RESOURCEID + { + command_list_id = ETestCommandListId1; + resource_id = r_command_list_1; + } + }; + } + + +RESOURCE SSM_COMMAND_LIST r_command_list_1 + { + commands = + { + r_command_state_include_no, + r_command_state_include_yes + }; + } + +RESOURCE SSM_TEST_PUBLISH_SYSTEM_STATE r_command_state_include_no + { + } + +RESOURCE SSM_TEST_PUBLISH_SYSTEM_STATE r_command_state_include_yes + { + conditional_information = r_conditional_information_yes; + } + +RESOURCE SSM_SYMBIAN_CONDITIONAL_INFORMATION r_conditional_information_yes + { + software_reason = ESoftwareNormal; + } + diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/systemstatemgr/test/tcmd/resource/cmdlists7c.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/systemstatemgr/test/tcmd/resource/cmdlists7c.rss Tue May 04 15:59:45 2010 +0100 @@ -0,0 +1,47 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Provides no command +// +// + +#include +#include "testcmdlistids.hrh" + +UID2 KUidSsmCommandListResourceFile + +// SSM_COMMAND_LIST_ROOT must be the first resource in a command list resource file. +// The SSM relies on this having a resource ID of 1. +RESOURCE SSM_COMMAND_LIST_ROOT + { + command_list_mapping = r_command_list_mapping; + } + +RESOURCE SSM_COMMAND_LIST_MAPPING r_command_list_mapping + { + mappings = + { + SSM_COMMANDLISTID_TO_RESOURCEID + { + command_list_id = ETestCommandListId1; + resource_id = r_command_list_1; + } + }; + } + +RESOURCE SSM_COMMAND_LIST r_command_list_1 + { + commands = + { + }; + } \ No newline at end of file diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/systemstatemgr/test/tcmd/src/tcmd_step_resourcereader.cpp --- a/sysstatemgmt/systemstatemgr/test/tcmd/src/tcmd_step_resourcereader.cpp Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/tcmd/src/tcmd_step_resourcereader.cpp Tue May 04 15:59:45 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -452,6 +452,11 @@ __UHEAP_MARKEND; __UHEAP_MARK; + TRAP(err, TestGet5L()); + TEST(err == KErrNone); + __UHEAP_MARKEND; + + __UHEAP_MARK; TRAP(err, TestGeneral1L()); TEST(err == KErrNone); __UHEAP_MARKEND; @@ -2020,3 +2025,39 @@ CleanupStack::PushL(cmd); return NULL; } + +/* +It tests for the scenario where first file have no commands(i.e. cmdlists7a) and second file cmdlists7b have two commands and +third file have no commands(i.e cmdlists7c) + +CommandList should be created and iCommandConstructCount should be two. +*/ +void CResourceReaderTest::TestGet5L() + { + INFO_PRINTF1(_L("*** Starting TestGet5L")); + _LIT(KCommandListPath, "z:\\resource\\ssmatest\\cmdlists7\\"); + CSsmCommandListResourceReaderImpl* reader = CSsmCommandListResourceReaderImpl::NewL(iFs, KCommandListPath, *this); + + // init + TRequestStatus status; + reader->Initialise(status); + TEST(status == KRequestPending); + Run(); + User::WaitForRequest(status); // mop up the completed initialisation request + TEST(status == KErrNone); + + // prepare + TSsmState state(0,23); + reader->PrepareCommandList(*this, ETestCommandListId1, state, status); + iWhichPrepare = EConditional; + iCommandConstructCount = 0; + Run(); + User::WaitForRequest(status); + + TBool commandListReady = reader->IsCommandListReady(); + + TEST((status == KErrNone) && (commandListReady == TRUE) && (iCommandConstructCount == 2)); + + iWhichPrepare = EPrepareNoCheck; + delete reader; + } diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/systemstatemgr/test/tssm/group/tssm_server.mmp --- a/sysstatemgmt/systemstatemgr/test/tssm/group/tssm_server.mmp Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/tssm/group/tssm_server.mmp Tue May 04 15:59:45 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -138,6 +138,7 @@ LIBRARY featmgr.lib LIBRARY centralrepository.lib LIBRARY conditionevaluator.lib +LIBRARY ssmuiproviderdll.lib STATICLIBRARY ssmclecli.lib STATICLIBRARY ssmclesrv.lib //used by ssmclecli.lib diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupdomainpskeys.h --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupdomainpskeys.h Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupdomainpskeys.h Tue May 04 15:59:45 2010 +0100 @@ -34,6 +34,21 @@ static const TUid KPSUidStartup = { 0x101F8766 }; + +// ============================================================================= +// SIM Utils API +// ============================================================================= + +// Use TUid KPSUidStartup = { 0x101F8766 }; + +/** +* Note: Refer simutils.h for actual definitions. +*/ +//const TUint32 KPSSimStatus = 0x00000031; +//const TUint32 KPSSimOwned = 0x00000032; +//const TUint32 KPSSimChanged = 0x00000033; + + // ============================================================================= // System State API // ============================================================================= @@ -259,6 +274,22 @@ }; // ============================================================================= +// Security Event SUP +// ============================================================================= +/** +* To be used by security event SUP to decide whether an event to be ignored or not +*/ + +// Use TUid KPSUidStartup = { 0x101F8766 }; +const TUint32 KIgnoreSecurityEvent = 0x00000302; +enum TPSIgnoreSecurityEvent + { + EPSIgnoreSecurityEventUninitialized = KStartupEnumerationFirstValue, + EPSIgnoreSecurityEventEPin1Required, + EPSIgnoreSecurityEventEPhonePasswordRequired + }; + +// ============================================================================= // Wakeup Alarm API // ============================================================================= diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/systemstatereferenceplugins/clayer/src/ssmsecurityeventobserver.cpp --- a/sysstatemgmt/systemstatereferenceplugins/clayer/src/ssmsecurityeventobserver.cpp Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/src/ssmsecurityeventobserver.cpp Tue May 04 15:59:45 2010 +0100 @@ -15,7 +15,7 @@ // - +#include #include "strtsecphaseobserver.h" #include "ssmsecurityeventobserver.h" #include "ssmsecuritynotecontroller.h" @@ -126,8 +126,24 @@ switch (iEvent) { case RMobilePhone::EPin1Required: - SimCodeRequest(ESecCodePIN1); + { + TInt pSIgnorePin1RequiredEvent( EPSIgnoreSecurityEventUninitialized ); + + //Get the KIgnoreSecurityEvent PS value + TInt err = RProperty::Get( KPSUidStartup, KIgnoreSecurityEvent, pSIgnorePin1RequiredEvent ); + DEBUGPRINT2A("Getting KIgnoreSecurityEvent completed with %d ", err); + //Ignore the event only when KIgnoreSecurityEvent value is EPSIgnoreSecurityEventEPin1Required + if( KErrNone == err && EPSIgnoreSecurityEventEPin1Required == pSIgnorePin1RequiredEvent ) + { + err = RProperty::Set( KPSUidStartup, KIgnoreSecurityEvent, EPSIgnoreSecurityEventUninitialized ); + DEBUGPRINT2A("Setting KIgnoreSecurityEvent completed with %d ", err); + } + else + { + SimCodeRequest(ESecCodePIN1); + } break; + } case RMobilePhone::EPuk1Required: SimCodeRequest(ESecCodePUK1); break; @@ -138,8 +154,24 @@ SimCodeRequest(ESecCodePUK2); break; case RMobilePhone::EPhonePasswordRequired: - SecCodeRequest(ESecCodePasswd); + { + TInt pSIgnorePhonePasswordRequiredEvent( EPSIgnoreSecurityEventUninitialized ); + + //Get the KCancelSecurityNotifier PS value + TInt err = RProperty::Get( KPSUidStartup, KIgnoreSecurityEvent, pSIgnorePhonePasswordRequiredEvent ); + DEBUGPRINT2A("Getting KIgnoreSecurityEvent completed with %d ", err); + //Ignore the event only when KIgnoreSecurityEvent value is EPSIgnoreSecurityEventEPhonePasswordRequired + if( KErrNone == err && EPSIgnoreSecurityEventEPhonePasswordRequired == pSIgnorePhonePasswordRequiredEvent ) + { + err = RProperty::Set( KPSUidStartup, KIgnoreSecurityEvent, EPSIgnoreSecurityEventUninitialized ); + DEBUGPRINT2A("Setting KIgnoreSecurityEvent completed with %d ", err); + } + else + { + SecCodeRequest(ESecCodePasswd); + } break; + } case RMobilePhone::EPin1Verified: CodeVerifyIndication(ESecCodePIN1); break; diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/systemstatereferenceplugins/custcmd/bwins/ssmuiproviderdllswitchu.def --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/bwins/ssmuiproviderdllswitchu.def Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/bwins/ssmuiproviderdllswitchu.def Tue May 04 15:59:45 2010 +0100 @@ -26,3 +26,5 @@ call_vector_25 @ 25 NONAME call_vector_26 @ 26 NONAME call_vector_27 @ 27 NONAME + call_vector_28 @ 28 NONAME + call_vector_29 @ 29 NONAME diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/systemstatereferenceplugins/custcmd/bwins/ssmuiproviderdllu.def --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/bwins/ssmuiproviderdllu.def Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/bwins/ssmuiproviderdllu.def Tue May 04 15:59:45 2010 +0100 @@ -26,3 +26,5 @@ ?ValidateRTCPropertyKey@CSsmUiSpecific@@SAIXZ @ 25 NONAME ; unsigned int CSsmUiSpecific::ValidateRTCPropertyKey(void) ?ValidateRTCPropertyCategory@CSsmUiSpecific@@SA?AVTUid@@XZ @ 26 NONAME ; class TUid CSsmUiSpecific::ValidateRTCPropertyCategory(void) ?PhoneMemoryRootDriveId@CSsmUiSpecific@@SAHXZ @ 27 NONAME ; int CSsmUiSpecific::PhoneMemoryRootDriveId(void) + ?ReservePhoneMemorySpace@CSsmUiSpecific@@QAEHXZ @ 28 NONAME ; int CSsmUiSpecific::ReservePhoneMemorySpace(void) + ?FreeReservedPhoneMemorySpace@CSsmUiSpecific@@QAEHH@Z @ 29 NONAME ; int CSsmUiSpecific::FreeReservedPhoneMemorySpace(int) diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/systemstatereferenceplugins/custcmd/eabi/ssmuiproviderdllu.def --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/eabi/ssmuiproviderdllu.def Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/eabi/ssmuiproviderdllu.def Tue May 04 15:59:45 2010 +0100 @@ -28,3 +28,5 @@ _ZN14CSsmUiSpecific22ValidateRTCPropertyKeyEv @ 27 NONAME _ZN14CSsmUiSpecific27ValidateRTCPropertyCategoryEv @ 28 NONAME _ZN14CSsmUiSpecific22PhoneMemoryRootDriveIdEv @ 29 NONAME + _ZN14CSsmUiSpecific23ReservePhoneMemorySpaceEv @ 30 NONAME + _ZN14CSsmUiSpecific28FreeReservedPhoneMemorySpaceEi @ 31 NONAME diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/systemstatereferenceplugins/custcmd/group/ssmuiproviderdlldefault.mmp --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/group/ssmuiproviderdlldefault.mmp Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/group/ssmuiproviderdlldefault.mmp Tue May 04 15:59:45 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -44,5 +44,6 @@ OS_LAYER_SYSTEMINCLUDE_SYMBIAN LIBRARY euser.lib +LIBRARY efsrv.lib SMPSAFE diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/systemstatereferenceplugins/custcmd/inc/ssmuiproviderdll.h --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/inc/ssmuiproviderdll.h Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/inc/ssmuiproviderdll.h Tue May 04 15:59:45 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -25,6 +25,7 @@ #include #include #include +#include class CSsmUiSpecific : public CBase { @@ -56,12 +57,17 @@ IMPORT_C static TUint ValidateRTCPropertyKey(); IMPORT_C static TUid ValidateRTCPropertyCategory(); IMPORT_C static TInt PhoneMemoryRootDriveId(); + IMPORT_C TInt ReservePhoneMemorySpace(); + IMPORT_C TInt FreeReservedPhoneMemorySpace(const TInt aSpaceToFree); private: CSsmUiSpecific(); + void ConstructL(); private: TStrtSecurityStatus iStrtSecurityStatus; TInt iReferenceCount; + RFs iReservedPhoneMemoryFs; + TInt iReservedPhoneMemory; }; #endif // __SSMUIPROVIDERDLL_H__ diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/systemstatereferenceplugins/custcmd/inc/ssmuiproviderdllswitch_stubs.h --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/inc/ssmuiproviderdllswitch_stubs.h Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/inc/ssmuiproviderdllswitch_stubs.h Tue May 04 15:59:45 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -266,7 +266,25 @@ _asm mov eax, 27 _asm jmp common_dispatch } + +__declspec(dllexport) +__declspec(naked) +void call_vector_28 () + { + //TInt ReservePhoneMemorySpace() + _asm mov eax, 28 + _asm jmp common_dispatch + } + +__declspec(dllexport) +__declspec(naked) +void call_vector_29 () + { + //TInt FreeReservedPhoneMemorySpace(const TInt aSpaceToFree) + _asm mov eax, 29 + _asm jmp common_dispatch + } } -#define MAX_ORDINAL 27 +#define MAX_ORDINAL 29 diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/systemstatereferenceplugins/custcmd/src/ssmsecuritychecknotifier.cpp --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/src/ssmsecuritychecknotifier.cpp Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/src/ssmsecuritychecknotifier.cpp Tue May 04 15:59:45 2010 +0100 @@ -29,7 +29,8 @@ #include #include #include -#include +#include +#include static TBool NoteTypeToEvent( TInt& aEventCode, const TStrtSecurityNoteType aNoteType ) @@ -202,8 +203,15 @@ TBool isDlgCancellable; //Is system in start up state - - iAfterStartup = (currentState.MainState() == ESsmStartup) ? EFalse : ETrue; + if ( currentState.MainState() == ESsmStartup ) + { + //TSsmStartupSubStateExt::ESsmStateNonCritical + iAfterStartup = ( 0x34 == currentState.SubState() ) ? ETrue : EFalse; + } + else + { + iAfterStartup = ETrue; + } //Close the state aware session ssmStateAwareSession.Close(); @@ -235,10 +243,26 @@ } else if (iCmdState == EEmergencyCallIsActive && iStatus.Int() != KErrCancel) { - // Emergency call activated from the security note dialog has - // finished. Show the note again. - DEBUGPRINT1A("ECall Ended and restarting pin notifier"); - StartNotifier(); + TInt value = -1; + const TInt errorcode = iSsmEmergencyCallProperty.Get( value ); + DEBUGPRINT3A("iSsmEmergencyCallProperty.Get() has returned value %d and errorcode %d", value , errorcode); + if (KErrNone == errorcode) + { + // Compare the property value with EPSCTsyCallStateNone. This indicates the call has finished. + if (EPSCTsyCallStateNone == value) + { + // Emergency call activated from the security note dialog has + // finished. Show the note again. + DEBUGPRINT1A("ECall Ended and restarting pin notifier"); + StartNotifier(); + } + else + { + //Subscribe to the property again if the property key value is not yet set to EPSCTsyCallStateNone. + iSsmEmergencyCallProperty.Subscribe(iStatus); + SetActive(); + } + } } else { diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/systemstatereferenceplugins/custcmd/src/ssmuiproviderdlldefault.cpp --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/src/ssmuiproviderdlldefault.cpp Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/src/ssmuiproviderdlldefault.cpp Tue May 04 15:59:45 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -21,7 +21,7 @@ #include "ssmuiproviderdll.h" #include "ssmpanic.h" #include -#include +#include "ssmdebug.h" const TUid KPSStartupUid = {0x2000E65E}; const TUid KSecurityPinNotifierUid = {0x2000E667}; @@ -37,17 +37,20 @@ const TUint KRFStatusPropertyKey = 0x2001D2A9; const TUid KValidateRTCPropertyCategory = {0x2000D75B}; const TUint KValidateRTCPropertyKey = 0x2001D2AB; +//Number of clusterSize to be reserve for phone memory space +const TInt KNumberOfCluster = 2; _LIT(KTsyModuleName, "mm.tsy"); _LIT(KTsyPhoneName, "GsmPhone1"); CSsmUiSpecific::CSsmUiSpecific() -: iReferenceCount(1) +: iReferenceCount(1), iReservedPhoneMemory(0) { } EXPORT_C CSsmUiSpecific::~CSsmUiSpecific() { + iReservedPhoneMemoryFs.Close(); } EXPORT_C TUid CSsmUiSpecific::StartupPSUid() @@ -95,7 +98,7 @@ //Instantiate CSsmUiSpecific if TLS is null self = new (ELeave) CSsmUiSpecific(); CleanupStack::PushL(self); - + self->ConstructL(); //Copy CSsmUiSpecific pointer in TLS User::LeaveIfError(Dll::SetTls(self)); CleanupStack::Pop(self); @@ -203,3 +206,73 @@ return EDriveC; } +/** +Leaving construction inside ConstructL +*/ +void CSsmUiSpecific::ConstructL() + { + User::LeaveIfError( iReservedPhoneMemoryFs.Connect() ); + } + +/** +Reserve two ClusterSize in Phone Memory Space on H/W +and 512 bytes for __WINS__ +@return KErrNone if successful or systemwide error +*/ +EXPORT_C TInt CSsmUiSpecific::ReservePhoneMemorySpace() + { + TVolumeIOParamInfo volumeParamInfo; + const TInt phoneMemoryDriveID = PhoneMemoryRootDriveId(); + TInt errorCode = iReservedPhoneMemoryFs.VolumeIOParam(phoneMemoryDriveID, volumeParamInfo); + if( KErrNone == errorCode ) + { +#ifdef __WINS__ + //512 bytes for __WINS__ + const TInt reservedMemory = 512; +#else + //Reserving two clusterSize Phone memory + const TInt reservedMemory = KNumberOfCluster * (volumeParamInfo.iClusterSize); +#endif //__WINS__ + errorCode = iReservedPhoneMemoryFs.ReserveDriveSpace(phoneMemoryDriveID, reservedMemory); + + if ( KErrNone == errorCode ) + { + iReservedPhoneMemory = reservedMemory; + } + } + return errorCode; + } + +/** +Free reserved bytes from Phone Memory Space. If aSpaceToFree is 0 bytes +then free complete reserved memory +@param aSpaceToFree request to free memory +@return KErrNone if successful or systemwide error +*/ +EXPORT_C TInt CSsmUiSpecific::FreeReservedPhoneMemorySpace(const TInt aSpaceToFree) + { + TInt errorCode(KErrGeneral); + DEBUGPRINT3A("Reserved memory is = %d bytes, Request to free memory is = %d bytes", iReservedPhoneMemory, aSpaceToFree); + if(0 < iReservedPhoneMemory) + { + if(0 == aSpaceToFree) + { + //Free complete reserved phone memory + errorCode = iReservedPhoneMemoryFs.ReserveDriveSpace( PhoneMemoryRootDriveId(), 0 ); + DEBUGPRINT2A("Freeing memory completed with = %d", errorCode); + iReservedPhoneMemory = 0; + } + else + { + TInt newReserveSize = iReservedPhoneMemory - aSpaceToFree; + newReserveSize = newReserveSize >= 0 ? newReserveSize : 0; + errorCode = iReservedPhoneMemoryFs.ReserveDriveSpace( PhoneMemoryRootDriveId(), newReserveSize ); + DEBUGPRINT2A("Freeing partial phone memory completed with = %d", errorCode); + if(KErrNone == errorCode) + { + iReservedPhoneMemory = newReserveSize; + } + } + } + return errorCode; + } diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/sysuiprovider/inc/ssmuispecific.h --- a/sysstatemgmt/sysuiprovider/inc/ssmuispecific.h Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/sysuiprovider/inc/ssmuispecific.h Tue May 04 15:59:45 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -168,18 +168,36 @@ */ IMPORT_C static TInt PhoneMemoryRootDriveId(); + /** + Reserve two ClusterSize in Phone Memory Space on H/W + and 512 bytes for __WINS__ + @return KErrNone if successful or systemwide error + */ + IMPORT_C TInt ReservePhoneMemorySpace(); + + /** + Free reserved bytes from Phone Memory Space. If aSpaceToFree is 0 bytes + then free complete reserved memory + @param aSpaceToFree request to free memory + @return KErrNone if successful or systemwide error + */ + IMPORT_C TInt FreeReservedPhoneMemorySpace(const TInt aSpaceToFree); + private: /** * Constructor. */ CSsmUiSpecific(); + + void ConstructL(); private: // data TStrtSecurityStatus iStrtSecurityStatus; TInt iReferenceCount; - + RFs iReservedPhoneMemoryFs; + TInt iReservedPhoneMemory; }; #endif // SSMUISPECIFIC_H diff -r af68f9c297e3 -r c3ddd27f139f sysstatemgmt/sysuiprovider/src/ssmuispecific.cpp --- a/sysstatemgmt/sysuiprovider/src/ssmuispecific.cpp Tue Apr 20 14:04:39 2010 +0100 +++ b/sysstatemgmt/sysuiprovider/src/ssmuispecific.cpp Tue May 04 15:59:45 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -36,6 +36,8 @@ // Type definitions for a buffer containing a drive id (drive letter + :). const TInt KDriveIdLength = 2; +//Number of clusterSize to be reserve for phone memory space +const TInt KNumberOfCluster = 2; typedef TBuf TDriveId; // ======== MEMBER FUNCTIONS ======== @@ -47,6 +49,7 @@ EXPORT_C CSsmUiSpecific::~CSsmUiSpecific() { FUNC_LOG; + iReservedPhoneMemoryFs.Close(); } @@ -68,6 +71,7 @@ { self = new ( ELeave ) CSsmUiSpecific; CleanupStack::PushL( self ); + self->ConstructL(); User::LeaveIfError( Dll::SetTls( self ) ); CleanupStack::Pop( self ); } @@ -431,7 +435,76 @@ // CSsmUiSpecific::CSsmUiSpecific // --------------------------------------------------------------------------- // -CSsmUiSpecific::CSsmUiSpecific() : iReferenceCount( 1 ) +CSsmUiSpecific::CSsmUiSpecific() : iReferenceCount(1), iReservedPhoneMemory(0) { FUNC_LOG; + } +/** +Leaving construction inside ConstructL +*/ +void CSsmUiSpecific::ConstructL() + { + FUNC_LOG; + + User::LeaveIfError( iReservedPhoneMemoryFs.Connect() ); } + +/** +ReservePhoneMemorySpace +*/ +EXPORT_C TInt CSsmUiSpecific::ReservePhoneMemorySpace() + { + FUNC_LOG; + TVolumeIOParamInfo volumeParamInfo; + const TInt phoneMemoryDriveID = PhoneMemoryRootDriveId(); + TInt errorCode = iReservedPhoneMemoryFs.VolumeIOParam(phoneMemoryDriveID, volumeParamInfo); + if( KErrNone == errorCode ) + { +#ifdef __WINS__ + //512 bytes for __WINS__ + const TInt reservedMemory = 512; +#else + //Reserving two clusterSize Phone memory + const TInt reservedMemory = KNumberOfCluster * (volumeParamInfo.iClusterSize); +#endif //__WINS__ + errorCode = iReservedPhoneMemoryFs.ReserveDriveSpace(phoneMemoryDriveID, reservedMemory); + + if ( KErrNone == errorCode ) + { + iReservedPhoneMemory = reservedMemory; + } + } + return errorCode; + } + +/** +FreeReservedPhoneMemorySpace +*/ +EXPORT_C TInt CSsmUiSpecific::FreeReservedPhoneMemorySpace(const TInt aSpaceToFree) + { + FUNC_LOG; + TInt errorCode(KErrGeneral); + INFO_2("Reserved memory is = %d bytes, Request to free memory is = %d bytes", iReservedPhoneMemory, aSpaceToFree); + if(0 < iReservedPhoneMemory) + { + if(0 == aSpaceToFree) + { + //Free complete reserved phone memory + errorCode = iReservedPhoneMemoryFs.ReserveDriveSpace( PhoneMemoryRootDriveId(), 0 ); + INFO_1("Freeing memory completed with = %d", errorCode); + iReservedPhoneMemory = 0; + } + else + { + TInt newReserveSize = iReservedPhoneMemory - aSpaceToFree; + newReserveSize = newReserveSize >= 0 ? newReserveSize : 0; + errorCode = iReservedPhoneMemoryFs.ReserveDriveSpace( PhoneMemoryRootDriveId(), newReserveSize ); + INFO_1("Freeing partial phone memory completed with = %d", errorCode); + if(KErrNone == errorCode) + { + iReservedPhoneMemory = newReserveSize; + } + } + } + return errorCode; + }