# HG changeset patch # User Pat Downey # Date 1277374930 -3600 # Node ID a003130def4e6c1ebc5202aa54d80cf7769f2fb0 # Parent d11478a8d5cf578164bdb19e14cdf347fc76fa73# Parent 51d936fe0d0c5abeb0002d440fcf6cb87aaa8d56 Merge workaround for bug 2630. diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessorymonitor/tsrc/public/basic/accmonconnectionemulator/src/AccMonConnectionEmulator.cpp --- a/accessoryservices/accessorymonitor/tsrc/public/basic/accmonconnectionemulator/src/AccMonConnectionEmulator.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessorymonitor/tsrc/public/basic/accmonconnectionemulator/src/AccMonConnectionEmulator.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -98,10 +98,10 @@ TPckgBuf< TTFAccessoryPublishAndSubscribe > buf; // Reset the values and then order the connect - TTFASYReference method; + TTFASYReference method( ETFAsyNone ); TInt64 param1( 0 ); TBool wired( EFalse ); - TUint64 btaddress; + TUint64 btaddress( 0 ); RArray< TUint32 > capabilityArray; TUint8 deviceType; @@ -192,7 +192,6 @@ { #ifdef TEST_BT TBTDevAddr btaddr( btaddress ); - TBool oldTest( EFalse ); TRequestStatus status; RAccessoryServer server; server.Connect(); @@ -322,10 +321,10 @@ TPckgBuf< TTFAccessoryPublishAndSubscribe > buf; // Reset the values and then order the connect - TTFASYReference method; + TTFASYReference method( ETFAsyNone ); TInt64 param1( 0 ); TBool wired( EFalse ); - TUint64 btaddress; + TUint64 btaddress( 0 ); RArray< TUint32 > capabilityArray; switch( aAccDefintion ) @@ -444,13 +443,11 @@ if( aAccInfo->AccPhysicalConnection() == KAccMonWired ) { - TInt err( KErrNone ); TPckgBuf< TTFAccessoryPublishAndSubscribe > buf; // Reset the values and then order the connect TTFASYReference method; TInt64 param1( 0 ); - TBool wired( EFalse ); RArray< TUint32 > capabilityArray; method = ETFAsyDisc; @@ -516,4 +513,5 @@ return retval; } -// End of file \ No newline at end of file +// End of file + diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessorymonitor/tsrc/public/basic/accmonitoringtestmodule/group/envrecall.cmd --- a/accessoryservices/accessorymonitor/tsrc/public/basic/accmonitoringtestmodule/group/envrecall.cmd Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessorymonitor/tsrc/public/basic/accmonitoringtestmodule/group/envrecall.cmd Thu Jun 24 11:22:10 2010 +0100 @@ -19,21 +19,25 @@ @echo Cleaning stubs... pushd ..\..\stubs\group\ -call bldmake bldfiles -call abld test reallyclean +REM call bldmake bldfiles +REM call abld test reallyclean +call sbs -c armv5.test REALLYCLEAN +call sbs -c winscw.test REALLYCLEAN popd @echo Cleaning stubs... Finished @echo build accfwuinotifier... pushd \sf\mw\appsupport\coreapplicationuis\accfwuinotifier\group\ -call bldmake bldfiles -call abld build +REM call bldmake bldfiles +REM call abld build +call sbs popd @echo build accfwuinotifier... Finished @echo build accessoryadaptation... pushd \ncp_sw\corecom\modemadaptation_ext\adaptationlayer_ext\systemadaptation\group\ -call bldmake bldfiles -call abld build accessoryadaptation +REM call bldmake bldfiles +REM call abld build accessoryadaptation +call sbs -p accessoryadaptation popd @echo build accessoryadaptation... Finished \ No newline at end of file diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessorymonitor/tsrc/public/basic/accmonitoringtestmodule/group/envsetup.cmd --- a/accessoryservices/accessorymonitor/tsrc/public/basic/accmonitoringtestmodule/group/envsetup.cmd Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessorymonitor/tsrc/public/basic/accmonitoringtestmodule/group/envsetup.cmd Thu Jun 24 11:22:10 2010 +0100 @@ -19,22 +19,30 @@ @echo Cleaning accfwuinotifier... pushd \sf\mw\appsupport\coreapplicationuis\accfwuinotifier\group\ -call bldmake bldfiles -call abld reallyclean +REM call bldmake bldfiles +REM call abld reallyclean +call sbs -c armv5 REALLYCLEAN +call sbs -c winscw REALLYCLEAN popd @echo Cleaning accfwuinotifier... Finished @echo Cleaning accessoryadaptation... pushd \ncp_sw\corecom\modemadaptation_ext\adaptationlayer_ext\systemadaptation\group\ -call bldmake bldfiles -call abld clean armv5 accessoryadaptation +REM call bldmake bldfiles +REM call abld clean armv5 accessoryadaptation +call sbs -p accessoryadaptation -c armv5 CLEAN +call sbs -p accessoryadaptation -c winscw CLEAN popd @echo Cleaning accessoryadaptation... Finished @echo Setting up stubs... pushd ..\..\stubs\group\ -call bldmake bldfiles -call abld test reallyclean -call abld test build +REM call bldmake bldfiles +REM call abld test reallyclean +call sbs -c armv5.test REALLYCLEAN +call sbs -c winscw.test REALLYCLEAN +REM call abld test build +call sbs -c armv5.test +call sbs -c winscw.test popd @echo Setting up stubs... Finished diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessorymonitor/tsrc/public/basic/accmonitoringtestmodule/src/accMonitoringTestModuleCases.cpp --- a/accessoryservices/accessorymonitor/tsrc/public/basic/accmonitoringtestmodule/src/accMonitoringTestModuleCases.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessorymonitor/tsrc/public/basic/accmonitoringtestmodule/src/accMonitoringTestModuleCases.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -37,9 +37,9 @@ //extern ?external_function( ?arg_type,?arg_type ); // CONSTANTS -_LIT( KEnter, "Enter" ); -_LIT( KOnGoing, "On-going" ); -_LIT( KExit, "Exit" ); +//_LIT( KEnter, "Enter" ); +//_LIT( KOnGoing, "On-going" ); +//_LIT( KExit, "Exit" ); // MACROS //#define ?macro ?macro_def @@ -139,21 +139,21 @@ static TCaseInfoInternal const KCases[] = { // To add new test cases, add new items to this array - ENTRY( "Get connected accessories (no accessories connected)", AccMonitorTestNoL ), - ENTRY( "Get connected accessories test(one accessory)", AccMonitorTestOneL ), - ENTRY( "Get connected accessories test(multiple accessories)", AccMonitorTestMultiL ), - ENTRY( "Test has accessory capa", TestHasAccessoryCapaL ), - ENTRY( "Test has accessory different capas", TestHasAccessoryDifferentCapasL ), - ENTRY( "Start Observer test(all connections)", StartObservingL ), - ENTRY( "Start Observer test(defined type)", StartObserving1L ), - ENTRY( "Start Observer test(defined accessory)", StartObserving2L ), - ENTRY( "Start Observer test(wrong accessory)", StartObserving3L ), - ENTRY( "Start Observer test(monitor non-existing accessory)", StartObserving4L ), - ENTRY( "StopObserving test", StopObservingL ), - ENTRY( "Compare Infos test", CompareInfosL ), - ENTRY( "Get value test", GetValueTestL ), - ENTRY( "Run error test", RunErrTestL ), - ENTRY( "Start observing all capas test", StartObserverAllCapasL ) + ENTRY( "Get connected accessories (no accessories connected)", &CAccMonitoringTestModule::AccMonitorTestNoL ), + ENTRY( "Get connected accessories test(one accessory)", &CAccMonitoringTestModule::AccMonitorTestOneL ), + ENTRY( "Get connected accessories test(multiple accessories)", &CAccMonitoringTestModule::AccMonitorTestMultiL ), + ENTRY( "Test has accessory capa", &CAccMonitoringTestModule::TestHasAccessoryCapaL ), + ENTRY( "Test has accessory different capas", &CAccMonitoringTestModule::TestHasAccessoryDifferentCapasL ), + ENTRY( "Start Observer test(all connections)", &CAccMonitoringTestModule::StartObservingL ), + ENTRY( "Start Observer test(defined type)", &CAccMonitoringTestModule::StartObserving1L ), + ENTRY( "Start Observer test(defined accessory)", &CAccMonitoringTestModule::StartObserving2L ), + ENTRY( "Start Observer test(wrong accessory)", &CAccMonitoringTestModule::StartObserving3L ), + ENTRY( "Start Observer test(monitor non-existing accessory)", &CAccMonitoringTestModule::StartObserving4L ), + ENTRY( "StopObserving test", &CAccMonitoringTestModule::StopObservingL ), + ENTRY( "Compare Infos test", &CAccMonitoringTestModule::CompareInfosL ), + ENTRY( "Get value test", &CAccMonitoringTestModule::GetValueTestL ), + ENTRY( "Run error test", &CAccMonitoringTestModule::RunErrTestL ), + ENTRY( "Start observing all capas test", &CAccMonitoringTestModule::StartObserverAllCapasL ) }; // Verify that case number is valid @@ -747,8 +747,7 @@ TTestResult& aResult ) { __UHEAP_MARK; - _LIT( KStatusTest, "StartObservingTest" ); - + iConnectedAccessory->Reset(); // Enter CAccMonitor* api = CAccMonitor::NewL(); @@ -963,7 +962,7 @@ } result = iConnectedAccessory->Exists( array ); - if( ( err = KErrNone ) && result ) + if( ( err == KErrNone ) && result ) { _LIT( KDescription, "Observer set without errors"); aResult.SetResult( err, KDescription ); @@ -1014,7 +1013,6 @@ TTestResult& aResult ) { __UHEAP_MARK; - _LIT( KStatusTest, "StartObservingTest" ); iConnectedAccessory->Reset(); // Enter @@ -1303,8 +1301,8 @@ CleanupStack::Pop( api ); delete api; someArray.Close(); - __UHEAP_MARKEND; - return err;*/ + __UHEAP_MARKEND;*/ + return err; } TInt CAccMonitoringTestModule::ConnectBTHeadsetL( diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessorymonitor/tsrc/public/basic/group/envrecall.cmd --- a/accessoryservices/accessorymonitor/tsrc/public/basic/group/envrecall.cmd Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessorymonitor/tsrc/public/basic/group/envrecall.cmd Thu Jun 24 11:22:10 2010 +0100 @@ -19,21 +19,25 @@ @echo Cleaning stubs... pushd ..\stubs\group\ -call bldmake bldfiles -call abld test reallyclean +REM call bldmake bldfiles +REM call abld test reallyclean +call sbs -c armv5.test REALLYCLEAN +call sbs -c winscw.test REALLYCLEAN popd @echo Cleaning stubs... Finished @echo build accfwuinotifier... pushd \sf\mw\appsupport\coreapplicationuis\accfwuinotifier\group\ -call bldmake bldfiles -call abld build +REM call bldmake bldfiles +REM call abld build +call sbs popd @echo build accfwuinotifier... Finished @echo build accessoryadaptation... pushd \ncp_sw\corecom\modemadaptation_ext\adaptationlayer_ext\systemadaptation\group\ -call bldmake bldfiles -call abld build accessoryadaptation +REM call bldmake bldfiles +REM call abld build accessoryadaptation +call sbs -p accessoryadaptation popd @echo build accessoryadaptation... Finished \ No newline at end of file diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessorymonitor/tsrc/public/basic/group/envsetup.cmd --- a/accessoryservices/accessorymonitor/tsrc/public/basic/group/envsetup.cmd Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessorymonitor/tsrc/public/basic/group/envsetup.cmd Thu Jun 24 11:22:10 2010 +0100 @@ -19,22 +19,29 @@ @echo Cleaning accfwuinotifier... pushd \sf\mw\appsupport\coreapplicationuis\accfwuinotifier\group\ -call bldmake bldfiles -call abld reallyclean +REM call bldmake bldfiles +REM call abld reallyclean +call sbs -c armv5 REALLYCLEAN +call sbs -c winscw REALLYCLEAN popd @echo Cleaning accfwuinotifier... Finished @echo Cleaning accessoryadaptation... pushd \ncp_sw\corecom\modemadaptation_ext\adaptationlayer_ext\systemadaptation\group\ -call bldmake bldfiles -call abld clean armv5 accessoryadaptation +REM call bldmake bldfiles +REM call abld clean armv5 accessoryadaptation +call sbs -p accessoryadaptation -c armv5 CLEAN popd @echo Cleaning accessoryadaptation... Finished @echo Setting up stubs... pushd ..\stubs\group\ -call bldmake bldfiles -call abld test reallyclean -call abld test build +REM call bldmake bldfiles +REM call abld test reallyclean +call sbs -c armv5.test REALLYCLEAN +call sbs -c winscw.test REALLYCLEAN +REM call abld test build +call sbs -c armv5.test +call sbs -c winscw.test popd @echo Setting up stubs... Finished diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessorymonitor/tsrc/public/basic/stubs/AsyStub/src/AsyStubMainServiceBase.cpp --- a/accessoryservices/accessorymonitor/tsrc/public/basic/stubs/AsyStub/src/AsyStubMainServiceBase.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessorymonitor/tsrc/public/basic/stubs/AsyStub/src/AsyStubMainServiceBase.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -87,7 +87,6 @@ { COMPONENT_TRACE( ( _L( "ASYStub - CASYStubMainServiceBase::GetAndRemoveCapability()" ) ) ); return iService->GetAndRemoveCapability(); - COMPONENT_TRACE( ( _L( "ASYStub - CASYStubMainServiceBase::GetAndRemoveCapability() - return" ) ) ); } // End of file diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessorymonitor/tsrc/public/basic/stubs/accfwuinotifierstub/src/AccFwUiDialogNotifierStub.cpp --- a/accessoryservices/accessorymonitor/tsrc/public/basic/stubs/accfwuinotifierstub/src/AccFwUiDialogNotifierStub.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessorymonitor/tsrc/public/basic/stubs/accfwuinotifierstub/src/AccFwUiDialogNotifierStub.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -35,8 +35,6 @@ // CONSTANTS const TUid KScreenOutputChannel = {0x00000666}; -_LIT(KAccFwUiNotifierResource, "accfwnoteuinotifier.rsc"); - // MACROS diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessorymonitor/tsrc/public/basic/stubs/accfwuinotifierstub/src/AccFwUiNoteNotifierStub.cpp --- a/accessoryservices/accessorymonitor/tsrc/public/basic/stubs/accfwuinotifierstub/src/AccFwUiNoteNotifierStub.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessorymonitor/tsrc/public/basic/stubs/accfwuinotifierstub/src/AccFwUiNoteNotifierStub.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -38,8 +38,7 @@ // CONSTANTS const TUid KScreenOutputChannel = {0x00000666}; - -_LIT(KAccFwUiNotifierResource, "accfwnoteuinotifier.rsc"); + // MACROS // LOCAL CONSTANTS AND MACROS diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessorymonitor/tsrc/public/basic/stubs/accfwuinotifierstub/src/AccFwUiNotifierStubObserver.cpp --- a/accessoryservices/accessorymonitor/tsrc/public/basic/stubs/accfwuinotifierstub/src/AccFwUiNotifierStubObserver.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessorymonitor/tsrc/public/basic/stubs/accfwuinotifierstub/src/AccFwUiNotifierStubObserver.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -70,8 +70,8 @@ TBool booli( EFalse ); booli = 1 & buf().iParam2; - //iService->SetObserverSelection( some, booli/*buf().iParam1, buf().iParam2*/ //); -/* + iService->SetObserverSelection( some, boolibuf().iParam1, buf().iParam2); + if( !IsActive() ) { iStatus = KRequestPending; diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryremotecontrol/tsrc/remcontestcontrol/dsytfstifadapter/group/envrecall.cmd --- a/accessoryservices/accessoryremotecontrol/tsrc/remcontestcontrol/dsytfstifadapter/group/envrecall.cmd Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryremotecontrol/tsrc/remcontestcontrol/dsytfstifadapter/group/envrecall.cmd Thu Jun 24 11:22:10 2010 +0100 @@ -19,30 +19,37 @@ @echo Cleaning stubs pushd ..\..\..\stub\group\ -call bldmake bldfiles -call abld test reallyclean +REM call bldmake bldfiles +REM call abld test reallyclean +call sbs -c armv5.test REALLYCLEAN +call sbs -c winscw.test REALLYCLEAN popd @echo Cleaning stubs done @echo build remconadaptation... pushd \ncp_sw\corecom\modemadaptation_ext\adaptationlayer_ext\systemadaptation\accessoryadaptation\group\ -call bldmake bldfiles -call abld build remconadaptation +REM call bldmake bldfiles +REM call abld build remconadaptation +call sbs -p remconadaptation popd @echo build remconadaptation... Finished @echo build phoneclient... pushd \sf\mw\phonesrv\phoneclientserver\phoneclient\group -call bldmake bldfiles -call abld build +REM call bldmake bldfiles +REM call abld build +call sbs popd @echo build phoneclient... Finished @echo build phonecmdhandler pushd \sf\mw\phonesrv\phonecmdhandler\group\ -call bldmake bldfiles -call abld makefile -call abld reallyclean -call abld build +REM call bldmake bldfiles +REM call abld makefile +REM call abld reallyclean +call sbs -c armv5 REALLYCLEAN +call sbs -c winscw REALLYCLEAN +REM call abld build +call sbs popd @echo build phonecmdhandler done diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryremotecontrol/tsrc/remcontestcontrol/dsytfstifadapter/group/envsetup.cmd --- a/accessoryservices/accessoryremotecontrol/tsrc/remcontestcontrol/dsytfstifadapter/group/envsetup.cmd Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryremotecontrol/tsrc/remcontestcontrol/dsytfstifadapter/group/envsetup.cmd Thu Jun 24 11:22:10 2010 +0100 @@ -19,17 +19,22 @@ @echo Cleaning remconadaptation... pushd \ncp_sw\corecom\modemadaptation_ext\adaptationlayer_ext\systemadaptation\accessoryadaptation\group\ -call bldmake bldfiles -call abld makefile remconadaptation -call abld reallyclean remconadaptation +REM call bldmake bldfiles +REM call abld makefile remconadaptation +REM call abld reallyclean remconadaptation +call sbs -p remconadaptation -c armv5 REALLYCLEAN +call sbs -p remconadaptation -c winscw REALLYCLEAN popd @echo Cleaning remconadaptation... Finished - @echo build/instr stubs pushd ..\..\..\stub\group\ -call bldmake bldfiles -call abld test reallyclean -call abld test build +REM call bldmake bldfiles +REM call abld test reallyclean +call sbs -c armv5.test REALLYCLEAN +call sbs -c winscw.test REALLYCLEAN +REM call abld test build +call sbs -c armv5.test +call sbs -c winscw.test popd @echo build/instr stubs done diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryremotecontrol/tsrc/remcontestcontrol/remcontestcontrolplugin/src/remconcontrol.cpp --- a/accessoryservices/accessoryremotecontrol/tsrc/remcontestcontrol/remcontestcontrolplugin/src/remconcontrol.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryremotecontrol/tsrc/remcontestcontrol/remcontestcontrolplugin/src/remconcontrol.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -472,6 +472,7 @@ break; case ETFRemCon_LaunchAudioClient: + { // reset return channel TRemConClientKeyDataBuf keyDatabuf; TRemConClientKeyData keyData; @@ -495,6 +496,7 @@ retval = status.Int(); } } + } break; case ETFRemCon_CloseAudioClient: @@ -506,6 +508,7 @@ break; case ETFRemCon_CheckClientKey: + { TRemConClientKeyDataBuf keyDataBuf; retval = RProperty::Get( KTFRemConTestProperty, KTFRemConClientKey, keyDataBuf ); if ( retval == KErrNone ) @@ -521,6 +524,7 @@ } } + } break; default: diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryremotecontrol/tsrc/stub/audio/src/audioclientstubAppUi.cpp --- a/accessoryservices/accessoryremotecontrol/tsrc/stub/audio/src/audioclientstubAppUi.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryremotecontrol/tsrc/stub/audio/src/audioclientstubAppUi.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -31,7 +31,6 @@ #include "audioclientstubAppView.h" #include "audioclientstubremconobserver.h" -_LIT(KText, "Hello World!"); // ============================ MEMBER FUNCTIONS =============================== diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryremotecontrol/tsrc/stub/remcon/src/remconstub.cpp --- a/accessoryservices/accessoryremotecontrol/tsrc/stub/remcon/src/remconstub.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryremotecontrol/tsrc/stub/remcon/src/remconstub.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -84,7 +84,6 @@ COMPONENT_TRACE( ( _L( "REMCONSTUB - CRemConStub::ConstructL() - Enter" ) ) ); - TInt retval(KErrNone); TRemConAddress addr; addr.BearerUid() = Uid(); // implementation UID of this bearer Observer().ConnectIndicate(addr); @@ -291,7 +290,7 @@ // This branch is used for following test cases TPhoneCmdHandlerKeyEventBuf cmdDataBuf; - cmdDataBuf().iOperationId = -1; + cmdDataBuf().iOperationId = (TUint)-1; (void)iSubcribeToControl.Set(KTFPhoneCmdHandlerProperty, KTFPhoneCmdHandlerKey,cmdDataBuf); } diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/BWINS/AccPolComU.DEF --- a/accessoryservices/accessoryserver/BWINS/AccPolComU.DEF Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/BWINS/AccPolComU.DEF Thu Jun 24 11:22:10 2010 +0100 @@ -60,4 +60,6 @@ ?ValueInt@CCapValue@@QBEHAAJ@Z @ 59 NONAME ; int CCapValue::ValueInt(long &) const ?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 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/EABI/AccPolComU.DEF --- a/accessoryservices/accessoryserver/EABI/AccPolComU.DEF Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/EABI/AccPolComU.DEF Thu Jun 24 11:22:10 2010 +0100 @@ -69,5 +69,9 @@ _ZTV22CAccPolAccessoryPolicy @ 68 NONAME ; ## _ZTV9CCapValue @ 69 NONAME ; ## _ZTVN18CCapabilityStorage14CListContainerE @ 70 NONAME ; ## - + _ZN22CAccPolAccessoryPolicy20IsCapabilityDefinedLERK16TAccPolGenericIDRKm @ 71 NONAME + _ZN22CAccPolAccessoryPolicyD0Ev @ 72 NONAME + _ZN22CAccPolAccessoryPolicyD1Ev @ 73 NONAME + _ZN22CAccPolAccessoryPolicyD2Ev @ 74 NONAME + _ZN29TAccPolGenericIDArrayAccessor29RemoveIndexFromGenericIDArrayER21TAccPolGenericIDArrayi @ 75 NONAME diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/group/AccServer.mmp --- a/accessoryservices/accessoryserver/group/AccServer.mmp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/group/AccServer.mmp Thu Jun 24 11:22:10 2010 +0100 @@ -59,7 +59,6 @@ USERINCLUDE ../inc/Common USERINCLUDE ../inc/Server -USERINCLUDE ../inc/ChargerContext // System include macro Starter P&S keys OS_LAYER_SYSTEMINCLUDE @@ -77,7 +76,6 @@ LIBRARY hwrmlightclient.lib // Used by accessory settings. LIBRARY efsrv.lib // Used by accessory settings LIBRARY accpolicydb.lib -LIBRARY accchargercontext.lib #ifdef RD_TSP_CLIENT_MAPPER LIBRARY tspclientmapper.lib #endif // RD_TSP_CLIENT_MAPPER diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/group/bld.inf --- a/accessoryservices/accessoryserver/group/bld.inf Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/group/bld.inf Thu Jun 24 11:22:10 2010 +0100 @@ -54,7 +54,6 @@ AccAudioControl.mmp ASYComms.mmp ASYProxy.mmp -AccChargerContext.mmp accpolaudiodevicetopology.mmp // End of File diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/inc/Common/AccPolAccessoryPolicy.h --- a/accessoryservices/accessoryserver/inc/Common/AccPolAccessoryPolicy.h Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/inc/Common/AccPolAccessoryPolicy.h Thu Jun 24 11:22:10 2010 +0100 @@ -195,6 +195,17 @@ * @see AccessoryTypes.h for supported HW device types. */ IMPORT_C TUint32 SupportedHWDevicesL(); + + /** + * Check to see if the requested capability is defined for the genericId + * + * @since S60 3.1 + * @param aGenericID Generic ID of the list to be used + * @param aName Name of the capability + * @return True if the requested capability is defined for the genericId. Else False. + */ + IMPORT_C TBool IsCapabilityDefinedL(const TAccPolGenericID& aGenericId, + const TUint32& aName ); public: // Functions from base classes diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/inc/Common/AccPolGenericIDArrayAccessor.h --- a/accessoryservices/accessoryserver/inc/Common/AccPolGenericIDArrayAccessor.h Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/inc/Common/AccPolGenericIDArrayAccessor.h Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/inc/Server/AccSrvConnectionController.h --- a/accessoryservices/accessoryserver/inc/Server/AccSrvConnectionController.h Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/inc/Server/AccSrvConnectionController.h Thu Jun 24 11:22:10 2010 +0100 @@ -43,7 +43,6 @@ class CAccSrvASYProxyHandler; class CAccSrvSettingsHandler; class CAccSrvWiredConnectionPublisher; -class CAccSrvChargingContextController; // CLASS DECLARATION @@ -298,7 +297,13 @@ TAccPolGenericID& aOldGenericId, const CAccSrvConnectionHandler* aCaller, TInt aError ); - + + + void HandleConnectionUpdateValidationL( const TAccPolGenericID& aGenericID, + TAccPolGenericID& aOldGenericId, + const CAccSrvSettingsHandler* aCaller, + TInt aError ); + /** * From MAccSrvConnectionControllerObserver @@ -381,7 +386,6 @@ CAccSrvModeHandler* iModeHandler; //Owned CAccSrvASYProxyHandler* iASYProxyHandler; //Owned CAccSrvSettingsHandler* iSettingsHandler; //Owned - CAccSrvChargingContextController* iChargingContextController; //Owned RPointerArray iConnectionHandler; //Owned TUint32 iInformationNoteUID; diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/inc/Server/AccSrvServerModel.h --- a/accessoryservices/accessoryserver/inc/Server/AccSrvServerModel.h Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/inc/Server/AccSrvServerModel.h Thu Jun 24 11:22:10 2010 +0100 @@ -172,6 +172,17 @@ void GetLastConnectedAccessoryL( TAccPolGenericID& aGenericID ) const; /** + * Get last connected wired accessory. + * + * @since S60 3.1 + * @param aGenericID On succesful return, contains the Generic ID of + * last connected wired accessory. + * @return TBool On successful return will be ETrue, else EFalse + */ + TBool GetLastConnectedWiredAccessory( TAccPolGenericID& aGenericID ) const; + + + /** * Remove the physical connection from array of detected accessories. * * @since S60 3.1 diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/inc/Server/AccSrvSettingsHandler.h --- a/accessoryservices/accessoryserver/inc/Server/AccSrvSettingsHandler.h Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/inc/Server/AccSrvSettingsHandler.h Thu Jun 24 11:22:10 2010 +0100 @@ -23,6 +23,7 @@ #include #include #include "AccSrvServerModel.h" +#include "AccPolAccessoryPolicy.h" // CONSTANTS _LIT_SECURITY_POLICY_C1(KNoCapability, ECapability_None); @@ -60,7 +61,8 @@ * Two-phased constructor. */ static CAccSrvSettingsHandler* NewL( CAccSrvConnectionController* aConCtrl, - CAccSrvServerModel& aModel ); + CAccSrvServerModel& aModel, + CAccPolAccessoryPolicy* aPolicy ); /** * Destructor. @@ -179,7 +181,8 @@ * C++ default constructor. */ CAccSrvSettingsHandler( CAccSrvConnectionController* aConCtrl, - CAccSrvServerModel& aModel ); + CAccSrvServerModel& aModel, + CAccPolAccessoryPolicy* aPolicy ); /** * By default Symbian 2nd phase constructor is private. @@ -253,6 +256,10 @@ // Tells wheter lights set on or off by accessory server. TAccSettingsLights iLightsOn; + //Handle to the Accessory Policy + CAccPolAccessoryPolicy* iPolicy;//Not owned + + public: // Friend classes protected: // Friend classes diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/rom/AccServer.iby --- a/accessoryservices/accessoryserver/rom/AccServer.iby Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/rom/AccServer.iby Thu Jun 24 11:22:10 2010 +0100 @@ -32,7 +32,6 @@ file=ABI_DIR\BUILD_DIR\AsyComms.dll SHARED_LIB_DIR\AsyComms.dll file=ABI_DIR\BUILD_DIR\AsyProxy.dll SHARED_LIB_DIR\AsyProxy.dll file=ABI_DIR\BUILD_DIR\accsrvutil.dll SHARED_LIB_DIR\accsrvutil.dll -file=ABI_DIR\BUILD_DIR\AccChargerContext.dll SHARED_LIB_DIR\AccChargerContext.dll file=ABI_DIR\BUILD_DIR\accpolaudiodevicetopology.dll SHARED_LIB_DIR\accpolaudiodevicetopology.dll data=ZPRIVATE\100012A5\policy\10205030.spd \private\100012A5\policy\10205030.spd diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/src/ASYProxy/ASYProxyCommandObserver.cpp --- a/accessoryservices/accessoryserver/src/ASYProxy/ASYProxyCommandObserver.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/src/ASYProxy/ASYProxyCommandObserver.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -438,34 +438,34 @@ TInt trId = iAsyProxyTRRecord->TrId(); DoDestroy( trId ); - //Reset buffer - iObjectBuf->Reset(); - if ( ECmdGetObjectValue == iAsyProxyTRRecord->CmdId() ) - { - iObjectBuf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize ); - //Externalize aValue to aBuf - RBufWriteStream wStrm; - (void) wStrm.Open( *iObjectBuf ); - CleanupClosePushL( wStrm ); - aObjectCon.ExternalizeL( wStrm ); - wStrm.CommitL(); - CleanupStack::PopAndDestroy( &wStrm ); - } - else - { - COM_TRACE_( "[AccFW:AsyProxy] CASYProxyCommandObserver::DoProcessResponseL() - Nothing do to!"); - } - - // Release allocated buffer if ( iObjectBuf ) { + //Reset buffer + iObjectBuf->Reset(); + if ( ECmdGetObjectValue == iAsyProxyTRRecord->CmdId() ) + { + iObjectBuf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize ); + //Externalize aValue to aBuf + RBufWriteStream wStrm; + (void) wStrm.Open( *iObjectBuf ); + CleanupClosePushL( wStrm ); + aObjectCon.ExternalizeL( wStrm ); + wStrm.CommitL(); + CleanupStack::PopAndDestroy( &wStrm ); + } + else + { + COM_TRACE_( "[AccFW:AsyProxy] CASYProxyCommandObserver::DoProcessResponseL() - Nothing do to!"); + } + + // Release allocated buffer TPtr8 ptr( iObjectBuf->Ptr(0) ); iAsyProxyCommsSrvc->iAsyComms.ProcessResponse( trId, &ptr, aErrCode ); delete iObjectBuf; - iObjectBuf = NULL; - } + iObjectBuf = NULL; + } else { iAsyProxyCommsSrvc->iAsyComms.ProcessResponse( trId, diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/src/ASYProxy/ASYProxyCommsService.cpp --- a/accessoryservices/accessoryserver/src/ASYProxy/ASYProxyCommsService.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/src/ASYProxy/ASYProxyCommsService.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -141,10 +141,10 @@ { COM_TRACE_( "[AccFW:AsyProxy] CASYProxyCommsService::~CASYProxyCommsService()" ); - Destroy( KDeleteAllRecords ); - if ( iAsyProxyCommsStack ) { + Destroy( KDeleteAllRecords ); + delete iAsyProxyCommsStack; iAsyProxyCommsStack = 0; } diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/src/ChargerContext/ChargingContextFSMBody.cpp --- a/accessoryservices/accessoryserver/src/ChargerContext/ChargingContextFSMBody.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/src/ChargerContext/ChargingContextFSMBody.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -78,7 +78,7 @@ } } // Delete state objects - for (TInt i = 1; i <= EChargerContextStateMaxValue; i++ ) + for (TInt i = 1; i < EChargerContextStateMaxValue; i++ ) { delete iStateArray[i]; iStateArray[i] = NULL; @@ -111,7 +111,7 @@ COM_TRACE_( "[AccFW:AccServer] CChargingContextFSMBody::Transit()" ); TBool retVal(EFalse); if ( ( EChargerContextStateUndefined < aNextState ) && - ( EChargerContextStateMaxValue >= aNextState ) ) + ( EChargerContextStateMaxValue > aNextState ) ) { iCurrentStateId = aNextState; if ( NULL != iStateArray[iCurrentStateId]) @@ -173,7 +173,7 @@ COM_TRACE_( "[AccFW:AccServer] CChargingContextFSMBody::CurrentState()" ); MFSMState* currentState( NULL ); if ( ( EChargerContextStateUndefined < iCurrentStateId ) && - ( EChargerContextStateMaxValue >= iCurrentStateId )) + ( EChargerContextStateMaxValue > iCurrentStateId )) { currentState = iStateArray[iCurrentStateId]; } @@ -191,7 +191,7 @@ TPtrC currentStateName; currentStateName.Set( KNullDesC ); if ( ( EChargerContextStateUndefined < iCurrentStateId ) && - ( EChargerContextStateMaxValue >= iCurrentStateId )) + ( EChargerContextStateMaxValue > iCurrentStateId )) { currentStateName.Set( iStateArray[iCurrentStateId]->Name() ); } diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/src/Policy/AccPolAccessoryPolicy.cpp --- a/accessoryservices/accessoryserver/src/Policy/AccPolAccessoryPolicy.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/src/Policy/AccPolAccessoryPolicy.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -35,7 +35,7 @@ // CONSTANTS -const TInt KAccMaxRules = 6; +const TInt KAccMaxRules = 7; const TInt KAccConfigMaxCapabilityGroups = 64; const TInt KAccGidIntBuf = 100; @@ -80,7 +80,7 @@ } // Destructor -CAccPolAccessoryPolicy::~CAccPolAccessoryPolicy() +EXPORT_C CAccPolAccessoryPolicy::~CAccPolAccessoryPolicy() { API_TRACE_( "[AccFW: ACCPOLICY] CAccPolAccessoryPolicy::~CAccPolAccessoryPolicy()" ); @@ -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}, @@ -1234,4 +1239,13 @@ return supportedDevices; } +EXPORT_C TBool CAccPolAccessoryPolicy::IsCapabilityDefinedL( + const TAccPolGenericID& aGenericId, + const TUint32& aName ) + { + if(iCapabilityStorage->GetCapability(aGenericId,aName) != NULL) + return ETrue; + else + return EFalse; + } // End of File diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/src/Policy/AccPolGenericIDArrayAccessor.cpp --- a/accessoryservices/accessoryserver/src/Policy/AccPolGenericIDArrayAccessor.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/src/Policy/AccPolGenericIDArrayAccessor.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -108,6 +108,31 @@ 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); + + if( (iArrayCount > 0) && (i >= 0) ) + { + 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 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/src/Server/AccSrvConnectionController.cpp --- a/accessoryservices/accessoryserver/src/Server/AccSrvConnectionController.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/src/Server/AccSrvConnectionController.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -30,7 +30,6 @@ #include "AccPolGenericIDAccessor.h" #include "AccSrvSettingsHandler.h" #include "AccPolSubblockNameArrayAccessor.h" -#include "AccSrvChargingContextController.h" #include #include #include "AccSrvWiredConnectionPublisher.h" @@ -99,14 +98,8 @@ iConnectionStatusHandler = CAccSrvConnectionStatusHandler::NewL( this ); iModeHandler = CAccSrvModeHandler::NewL( this ); iASYProxyHandler = CAccSrvASYProxyHandler::NewL( this ); - iSettingsHandler = CAccSrvSettingsHandler::NewL( this, *aServerModel ); + iSettingsHandler = CAccSrvSettingsHandler::NewL( this, *aServerModel, iPolicy ); iWiredConnPublisher = CAccSrvWiredConnectionPublisher::NewL(); - TRAPD( err, iChargingContextController = CAccSrvChargingContextController::NewL() ); - if ( err != KErrNone ) // Server does not need to die on charging context fail. - { - COM_TRACE_1( "[AccFW:AccServer] CAccSrvConnectionController::ConstructL - CAccSrvChargingContextController err %d", err ); - iChargingContextController = NULL; - } COM_TRACE_( "[AccFW:AccServer] CAccSrvConnectionController::ConstructL - return void" ); } @@ -167,11 +160,6 @@ delete iSettingsHandler; } - if( NULL != iChargingContextController ) - { - delete iChargingContextController; - } - delete iWiredConnPublisher; // Handlers must be deleted after iPolicy and iASYProxyHandler @@ -459,6 +447,95 @@ } // ----------------------------------------------------------------------------- +// CAccSrvConnectionController::HandleConnectionUpdateValidationL +// ----------------------------------------------------------------------------- +// +void CAccSrvConnectionController::HandleConnectionUpdateValidationL( + const TAccPolGenericID& aGenericID, + TAccPolGenericID& aOldGenericId, + const CAccSrvSettingsHandler* aCaller, + TInt aError ) + { + COM_TRACE_( "[AccFW:AccServer] CAccSrvConnectionController::HandleConnectionUpdateValidationL()" ); + + TInt err ( KErrNone ); + TAccSrvConnection isValidConnection(EAccSrvConnect); + TBool isConnected( iServerModel->IsConnected( aGenericID ) ); + + if( KErrNone == aError ) + { + isValidConnection = iPolicy->IsValidConnectionL( aGenericID, err ); + } + else + { + err = aError; + isValidConnection = EAccSrvDeny; + } + + if( iServerModel->FindAndRemoveCancelledConnectAccessory( aGenericID.UniqueID() ) ) + { + //Connection of this accessory is cancelled. + err = KErrCancel; + isValidConnection = EAccSrvDeny; + } + + switch( isValidConnection ) + { + case EAccSrvDetect: + { + } + break; + + case EAccSrvConnect: + { + if( isConnected ) + { + //update connection generic id array + iServerModel->UpdateConnectionL( aGenericID); + + // Complete all possible connection status related requests + iNotificationQueue->CompleteControlMessageL( EAccessoryConnectionStatusChanged, + KErrNone, + aGenericID.UniqueID() ); + iNotificationQueue->CompleteControlMessageL( EAccessoryDisconnected, + KErrNone, + aOldGenericId.UniqueID() ); + iNotificationQueue->CompleteControlMessageL( ENewAccessoryConnected, + KErrNone, + aGenericID.UniqueID() ); + } + + } + break; + + case EAccSrvDeny: + { + iServerModel->RemovePhysicalConnection( aGenericID ); + iServerModel->RemoveASYThreadID( aGenericID.UniqueID() );//Remove ThreadID GID mapping + iServerModel->CapabilityStorage().RemoveCapabilityList( aGenericID); + + + } + break; + + default: + { + TRACE_ASSERT_ALWAYS;//unhandled enum + } + break; + } + + iNotificationQueue->CompleteControlMessageL( EConnectAccessory, + err, + aGenericID.UniqueID() ); + + + COM_TRACE_( "[AccFW:AccServer] CAccSrvConnectionController::HandleConnectionUpdateValidationL - return void" ); + } + + + +// ----------------------------------------------------------------------------- // CAccSrvConnectionController::ConnectionHandlingCancel // ----------------------------------------------------------------------------- // @@ -761,12 +838,37 @@ TAccPolAccessoryMode accMode; iServerModel->CurrentConnectionStatusL( genericIDArray ); + + TUint count; + TBool isHDMIConnected = EFalse; + + count = genericIDArray.Count(); + if((1 < count) && (EFalse == aAudioOutputStatus) && (KErrUnknown != aDbId)) + { + for(TInt i( 0 ); i < count; ++i) + { + if(genericIDArray.GetGenericIDL(i).PhysicalConnectionCaps() & KPCHDMI) + { + isHDMIConnected = ETrue; + break; + } + } + } + + if(isHDMIConnected) + { + accMode = iServerModel->AccessoryMode(); + } + else + { + accMode = iPolicy->ResolveAccessoryModeL( genericIDArray, + aDbId, + aAudioOutputStatus, + iServerModel->AccessoryMode(), + iServerModel->UniqueID() ); + } - accMode = iPolicy->ResolveAccessoryModeL( genericIDArray, - aDbId, - aAudioOutputStatus, - iServerModel->AccessoryMode(), - iServerModel->UniqueID() ); + if( iServerModel->SetAccessoryMode( accMode, aDbId ) ) //Store accessory mode { @@ -796,33 +898,35 @@ case EAccModeLoopset: case EAccModeMusicStand: case EAccModeTVOut: - case EAccModeHDMI: case EAccModeHeadphones: { 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 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/src/Server/AccSrvConnectionHandler.cpp --- a/accessoryservices/accessoryserver/src/Server/AccSrvConnectionHandler.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/src/Server/AccSrvConnectionHandler.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -246,95 +246,82 @@ if ( aEvaluateConnectionRules ) { COM_TRACE_( "[AccFW:AccServer] CAccSrvConnectionHandler::StartConnectionHandling() - Evaluate connection rules" ); - - //check rules - TUint32 selectionListBitmask( 0 ); - iPolicy->EvaluateConnectionRulesL( iGenericID, selectionListBitmask ); - - if ( selectionListBitmask ) - { - COM_TRACE_1( "[AccFW:AccServer] CAccSrvConnectionHandler::StartConnectionHandling() - Selection bitmask: 0x%bb", selectionListBitmask); - - //remove not supported items... - selectionListBitmask = selectionListBitmask & iModel->SupportedDevicesL(); - - //Check default selection - TInt defaultSelection( iModel->DeviceType() ); - - if ( selectionListBitmask == ( KASTTY | KASHeadset ) ) - { - if ( defaultSelection != KASTTY ) - { - defaultSelection = KASHeadset; - } - else - { - defaultSelection = KASTTY; - } - } - else - { - if ( defaultSelection == KASHeadset ) - { - defaultSelection = 0; - } - - defaultSelection = selectionListBitmask & defaultSelection; - } - - if ( defaultSelection ) - { - iReplyValue = defaultSelection; - iCallback->SetDefaultAccessoryInformation( iGenericID, defaultSelection ); - CAccSrvHandlerBase::IssueRequest(); - } - else - { - //check that more than one accessories in the selection list - TUint32 bitmask( 1 ); - TInt accCount( 0 ); - for ( TInt i( 0 ); i < 32; i++ ) - { - if ( selectionListBitmask & bitmask ) - { - if ( ++accCount > 1 ) - { - //more than one accessories, stop the loop - break; - } - } - bitmask <<= 1; - } - - if ( accCount > 1 ) - { - //if there is possible selection show UI - SetupSelectionDialogL( selectionListBitmask ); - } - else - { - //only one selection, don't show selection dialog - iState = EGetSelectionFromUser; - iReplyValue = selectionListBitmask; - iCallback->SetDefaultAccessoryInformation( iGenericID, selectionListBitmask ); - CAccSrvHandlerBase::IssueRequest(); - } - } - - } - else - { - iState = EInitializeConnection; - } - + } else { COM_TRACE_( "[AccFW:AccServer] CAccSrvConnectionHandler::StartConnectionHandling() - No connection rules" ); - iState = EInitializeConnection; + + //Check default selection + TInt defaultSelection( iModel->DeviceType() ); + + // Device Type Supplied + if( (iGenericID.PhysicalConnectionCaps() & KPCWired) && + (iGenericID.DeviceTypeCaps(KDTHeadset)) && + (iPolicy->IsCapabilityDefinedL(iGenericID,KAccIntegratedAudioInput)) ) + { + // This is a Headset + if(KASTTY == defaultSelection) + { + iReplyValue = defaultSelection; + } + else + { + iReplyValue = KASHeadset; + } + + if(KASHeadset != iReplyValue) + { + COM_TRACE_( "[AccFW:AccServer] CAccSrvConnectionHandler::StartConnectionHandling- TTY Case" ); + //only one selection, don't show selection dialog + iState = EGetSelectionFromUser; + iCallback->SetDefaultAccessoryInformation( iGenericID, iReplyValue ); + CAccSrvHandlerBase::IssueRequest(); + } + else + { + COM_TRACE_( "[AccFW:AccServer] CAccSrvConnectionHandler::StartConnectionHandling- Headset Case" ); + iState = EInitializeConnection; + } + } + else if( (iGenericID.PhysicalConnectionCaps() & KPCWired) && + (iGenericID.DeviceTypeCaps(KDTHeadset)) && + !(iPolicy->IsCapabilityDefinedL(iGenericID,KAccIntegratedAudioInput)) ) + { + // This is a Headphone + if((KASLineOut == defaultSelection) || + (KASMusicStand == defaultSelection) || + (KASHeadphones == defaultSelection)) + { + iReplyValue = defaultSelection; + } + else + { + iReplyValue = KASHeadphones; + } + + if(KASHeadphones != iReplyValue) + { + COM_TRACE_( "[AccFW:AccServer] CAccSrvConnectionHandler::StartConnectionHandling- LineOut/MusicStand Case" ); + //only one selection, don't show selection dialog + iState = EGetSelectionFromUser; + iCallback->SetDefaultAccessoryInformation( iGenericID, iReplyValue ); + CAccSrvHandlerBase::IssueRequest(); + + } + else + { + COM_TRACE_( "[AccFW:AccServer] CAccSrvConnectionHandler::StartConnectionHandling- Headphone Case" ); + iState = EInitializeConnection; + } + } + + else + { + iState = EInitializeConnection; + } } - // Atleas one Asynchronous request is made for ourselves, // clients ConnectAccessory asynchronous request will be completed // during it. diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/src/Server/AccSrvServerModel.cpp --- a/accessoryservices/accessoryserver/src/Server/AccSrvServerModel.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/src/Server/AccSrvServerModel.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -501,6 +501,43 @@ COM_TRACE_( "[AccFW:AccServer] CAccSrvServerModel::GetLastConnectedAccessoryL - return" ); } + +// ----------------------------------------------------------------------------- +// CAccSrvServerModel::GetLastConnectedWiredAccessory +// +// Last connected wired accessory is to be searched in the iConnectionArray +// ----------------------------------------------------------------------------- +// +TBool CAccSrvServerModel::GetLastConnectedWiredAccessory( TAccPolGenericID& aGenericID ) const + { + COM_TRACE_( "[AccFW:AccServer] CAccSrvServerModel::GetLastConnectedWiredAccessoryL()" ); + + TInt arrCount = 0; + + if ( (arrCount = iConnectionArray.Count()) != 0 ) + { + TUint arrIndex = 0; + TAccPolGenericID iGenericID; + + while(arrIndex < arrCount) + { + iGenericID = iConnectionArray[arrIndex]; + + if( iGenericID.PhysicalConnectionCaps(KPCWired) ) + { + aGenericID = iGenericID; + return ETrue; + } + arrIndex++; + } + } + + COM_TRACE_( "[AccFW:AccServer] CAccSrvServerModel::GetLastConnectedWiredAccessory - return" ); + + return EFalse; + + } + // ----------------------------------------------------------------------------- // CAccSrvServerModel::SetAccessoryMode diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/src/Server/AccSrvSettingsHandler.cpp --- a/accessoryservices/accessoryserver/src/Server/AccSrvSettingsHandler.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/src/Server/AccSrvSettingsHandler.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -73,10 +73,12 @@ // ----------------------------------------------------------------------------- // CAccSrvSettingsHandler::CAccSrvSettingsHandler( CAccSrvConnectionController* aConCtrl, - CAccSrvServerModel& aModel ) + CAccSrvServerModel& aModel, + CAccPolAccessoryPolicy* aPolicy ) : iConCtrl( aConCtrl ), iModel( aModel ), - iLightsOn( EAccSettingsLightsNotSet ) + iLightsOn( EAccSettingsLightsNotSet ), + iPolicy( aPolicy ) { COM_TRACE_( "[AccFW:AccServer] CAccSrvSettingsHandler::CAccSrvSettingsHandler()" ); @@ -122,13 +124,15 @@ // CAccSrvSettingsHandler* CAccSrvSettingsHandler::NewL( CAccSrvConnectionController* aConCtrl, - CAccSrvServerModel& aModel ) + CAccSrvServerModel& aModel, + CAccPolAccessoryPolicy* aPolicy ) { COM_TRACE_( "[AccFW:AccServer] CAccSrvSettingsHandler::NewL()" ); CAccSrvSettingsHandler* self = new( ELeave ) CAccSrvSettingsHandler( aConCtrl, - aModel ); + aModel, + aPolicy ); CleanupStack::PushL( self ); self->ConstructL(); CleanupStack::Pop( self ); @@ -254,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 ); @@ -285,7 +290,8 @@ // Valid settings TUint32 settings = ResolveNewSettingsL( aSettings, aEnable, aForce ); - + TUint32 iOldDeviceType = iModel.DeviceType(); + // Update model iModel.SetDeviceType( settings ); @@ -296,6 +302,99 @@ delete repository; repository = NULL; + //Check default selection. The newly set device-type after the model update. + TInt defaultSelection( iModel.DeviceType() ); + TInt iReplyValue = KASNoDevice; + TAccPolGenericID iGenericID; + + // get the last connected wired accessory + if(iModel.GetLastConnectedWiredAccessory(iGenericID)) + { + // Device Type Supplied + if( iGenericID.DeviceTypeCaps(KDTHeadset) ) + { + // This is a Headset + if( iPolicy->IsCapabilityDefinedL(iGenericID, KAccIntegratedAudioInput) ) + { + if(KASTTY == defaultSelection) + { + iReplyValue = defaultSelection; + } + else + { + iReplyValue = KASHeadset; + } + } + // This is a Headphone + else + { + if(KASMusicStand == defaultSelection) + { + iReplyValue = defaultSelection; + } + else + { + iReplyValue = KASHeadphones; + } + } + } + else if( iGenericID.DeviceTypeCaps(KDTTTY) ) + { + if( iPolicy->IsCapabilityDefinedL(iGenericID, KAccIntegratedAudioInput) ) + { + if(KASHeadset == defaultSelection) + { + iReplyValue = defaultSelection; + } + else + { + iReplyValue = KASTTY; + } + } + } + else if( iGenericID.DeviceTypeCaps(KDTOffice) ) + { + if(KASHeadphones == defaultSelection) + { + iReplyValue = defaultSelection; + } + else + { + iReplyValue = KASMusicStand; + } + } + // Device Type Not Supplied + else if( iGenericID.DeviceTypeCaps() == KASNoDevice ) + { + iReplyValue = defaultSelection; + } + + if( (KASNoDevice != iReplyValue) && (iReplyValue != iOldDeviceType) ) + { + //update generic id + iPolicy->UpdateGenericIDL( iGenericID, iReplyValue); + // Update the "iConnectionArray" of CAccSrvServerModel, + // to reflect the update on generic-id done earlier. + TAccPolGenericID oldGenericId; + iModel.FindWithUniqueIDL( iGenericID.UniqueID(), oldGenericId ); + + iConCtrl->HandleConnectionUpdateValidationL( + iGenericID, oldGenericId, this, KErrNone ); + + TASYCommandParamRecord asyCommandParamRecord; + asyCommandParamRecord.iCmdValue = 0;//Not used in update command + asyCommandParamRecord.iGenericID = iGenericID; + + //Send request to ASY Proxy Handler + COM_TRACE_( "[AccFW:AccServer] CAccSrvConnectionHandler::RunL() - Send update request"); + TInt trId = iConCtrl->HandleASYCommsL( ECmdAccessoryUpdated, + asyCommandParamRecord ); + + iConCtrl->HandleAccessoryModeChangedL(); + + } + } + COM_TRACE_( "[AccFW:AccServer] CAccSrvSettingsHandler::SetHWDeviceSettingsL() - return" ); } diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/src/Server/AccSrvSubAsyComms.cpp --- a/accessoryservices/accessoryserver/src/Server/AccSrvSubAsyComms.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/src/Server/AccSrvSubAsyComms.cpp Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/src/Server/AccSrvSubBTControl.cpp --- a/accessoryservices/accessoryserver/src/Server/AccSrvSubBTControl.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/src/Server/AccSrvSubBTControl.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -408,6 +408,8 @@ TPckg BTDevAddrPckg( BTDevAddr ); aMessage.ReadL( KAccServParamPosFirst, BTDevAddrPckg ); + // coverity[check_return] + // coverity[unchecked_value] iServerModel->FindWithDeviceAddressL( MakeTUint64( BTDevAddr ), uniqueID ); iConnectionController->NotificationQueue().CompleteControlMessageL( EBluetoothAudioLinkOpenReq, KErrNone, uniqueID ); diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/src/Server/AccSrvWiredConnectionPublisher.cpp --- a/accessoryservices/accessoryserver/src/Server/AccSrvWiredConnectionPublisher.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/src/Server/AccSrvWiredConnectionPublisher.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -78,7 +78,7 @@ COM_TRACE_2( "[AccFW:AccServer] CAccSrvWiredConnectionPublisher::HandleConnectL: physConnCaps=0x%x, iConnectionCount=%d", physConnCaps, iConnectionCount ); - if ( physConnCaps & KPCWired ) + if ( physConnCaps & (KPCWired | KPCHDMI) ) { if ( !iConnectionCount++ ) { @@ -102,7 +102,7 @@ COM_TRACE_2( "[AccFW:AccServer] CAccSrvWiredConnectionPublisher::HandleDisconnectL: physConnCaps=0x%x, iConnectionCount=%d", physConnCaps, iConnectionCount ); - if ( (physConnCaps & KPCWired) && iConnectionCount ) + if ( (physConnCaps & (KPCWired | KPCHDMI)) && iConnectionCount ) { if ( !(--iConnectionCount) ) { diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/tsrc/public/basic/AccessoryTestControl/AccessoryTestControlPlugin/src/TfAccessoryTestControlPlugin.cpp --- a/accessoryservices/accessoryserver/tsrc/public/basic/AccessoryTestControl/AccessoryTestControlPlugin/src/TfAccessoryTestControlPlugin.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/tsrc/public/basic/AccessoryTestControl/AccessoryTestControlPlugin/src/TfAccessoryTestControlPlugin.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -1545,6 +1545,7 @@ { ETFAccessoryConnection_Close, 0, 0, 0, 0, 0, 10807, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, }; +#if 0 // // [M10808] [[AccServer] Set TTY Mode After Connection] // @@ -1568,8 +1569,94 @@ { ETFAccessorySettings_Close, 0, 0, 0, 0, 0, 10808, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, { ETFAccessoryConnection_Close, 0, 0, 0, 0, 0, 10808, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, }; +#endif // +// [M10808] [[AccServer] Set TTY Mode After Connection] +// +const TTFAccessoryTestCaseStateControl KTFSetTTYModeAfterConnectionStates[]= + { + { ETFAccessoryConnection_Open, 0, 0, 0, 0, 0, 10808, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFAccessoryMode_Open, 0, 0, 0, 0, 0, 10808, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFAccessorySettings_Open, 0, 0, 0, 0, 0, 10808, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFSetHWDeviceSettings, 0, KASNoDevice, 1, 0, 0, 10808, ETFAsyNone, ReqAccRequestNone, KErrNone, 100000}, + { ETFAccessoryNotifyAccessoryModeChanged, 0, 2, 0, 0, 0, 10808, ETFAsyNone, ReqAccRequestNone, KErrNone, 2000000}, + { ETFConnectWiredAccessory, 0, 0, 1, 0, 0, 10808, ETFAsyConnectHeadset, ReqAccRequestNone, KErrNone, 2000000}, + { ETFFindAndCheckRequest, 0, 1, 0, 0, 0, 10808, ETFAsyNone, ReqNotifyAccessoryModeChanged, KErrNone, 2000000}, // Headset Connected ! + { ETFSetHWDeviceSettings, 0, KASTTY, 1, 0, 0, 10808, ETFAsyNone, ReqAccRequestNone, KErrNone, 3000000}, + { ETFSetHWDeviceSettings, 0, KASTTY, 0, 0, 0, 10808, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFDisconnectWiredAccessory, 0, 0, 0, 0, 0, 10808, ETFAsyDisc, ReqAccRequestNone, KErrNone, 2000000}, + { ETFClearStack, 0, 0, 0, 0, 0, 10808, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFAccessoryMode_Close, 0, 0, 0, 0, 0, 10808, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFAccessorySettings_Close, 0, 0, 0, 0, 0, 10808, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFAccessoryConnection_Close, 0, 0, 0, 0, 0, 10808, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + }; + +// +// [M10809] [[AccServer] Set MusicStand Mode After Connection] +// +const TTFAccessoryTestCaseStateControl KTFSetLoopsetModeBeforeConnectionStates[]= + { + { ETFAccessoryConnection_Open, 0, 0, 0, 0, 0, 10809, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFAccessoryMode_Open, 0, 0, 0, 0, 0, 10809, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFAccessorySettings_Open, 0, 0, 0, 0, 0, 10809, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFSetHWDeviceSettings, 0, KASNoDevice, 1, 0, 0, 10809, ETFAsyNone, ReqAccRequestNone, KErrNone, 100000}, + { ETFAccessoryNotifyAccessoryModeChanged, 0, 2, 0, 0, 0, 10809, ETFAsyNone, ReqAccRequestNone, KErrNone, 2000000}, + { ETFConnectWiredAccessory, 0, 0, 1, 0, 0, 10809, ETFAsyConnectOpenCable3Poles, ReqAccRequestNone, KErrNone, 1000000}, + { ETFFindAndCheckRequest, 0, 9, 0, 0, 0, 10809, ETFAsyNone, ReqNotifyAccessoryModeChanged, KErrNone, 2000000}, // Headphone Connected ! + { ETFSetHWDeviceSettings, 0, KASMusicStand, 1, 0, 0, 10809, ETFAsyNone, ReqAccRequestNone, KErrNone, 3000000}, + { ETFSetHWDeviceSettings, 0, KASMusicStand, 0, 0, 0, 10809, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFDisconnectWiredAccessory, 0, 0, 0, 0, 0, 10809, ETFAsyDisc, ReqAccRequestNone, KErrNone, 2000000}, + { ETFClearStack, 0, 0, 0, 0, 0, 10809, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFAccessoryMode_Close, 0, 0, 0, 0, 0, 10809, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFAccessorySettings_Close, 0, 0, 0, 0, 0, 10809, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFAccessoryConnection_Close, 0, 0, 0, 0, 0, 10809, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + }; + +// +// [M10810] [[AccServer] Default Accessory Set To MusicStand; Connect Headphone; Change accessory settings to Headphones] +// +const TTFAccessoryTestCaseStateControl KTFSetTTYModeBeforeConnectionStates[]= + { + { ETFAccessoryConnection_Open, 0, 0, 0, 0, 0, 10810, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFAccessoryMode_Open, 0, 0, 0, 0, 0, 10810, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFAccessorySettings_Open, 0, 0, 0, 0, 0, 10810, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFSetHWDeviceSettings, 0, KASMusicStand, 1, 0, 0, 10810, ETFAsyNone, ReqAccRequestNone, KErrNone, 100000}, + { ETFAccessoryNotifyAccessoryModeChanged, 0, 2, 0, 0, 0, 10810, ETFAsyNone, ReqAccRequestNone, KErrNone, 2000000}, + { ETFConnectWiredAccessory, 0, 0, 1, 0, 0, 10810, ETFAsyConnectOpenCable3Poles, ReqAccRequestNone, KErrNone, 1000000}, + { ETFFindAndCheckRequest, 0, 7, 0, 0, 0, 10810, ETFAsyNone, ReqNotifyAccessoryModeChanged, KErrNone, 2000000}, // MusicStand Connected ! + { ETFSetHWDeviceSettings, 0, KASHeadphones, 1, 0, 0, 10810, ETFAsyNone, ReqAccRequestNone, KErrNone, 3000000}, + { ETFSetHWDeviceSettings, 0, KASMusicStand, 0, 0, 0, 10810, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFDisconnectWiredAccessory, 0, 0, 0, 0, 0, 10810, ETFAsyDisc, ReqAccRequestNone, KErrNone, 2000000}, + { ETFClearStack, 0, 0, 0, 0, 0, 10810, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFAccessoryMode_Close, 0, 0, 0, 0, 0, 10810, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFAccessorySettings_Close, 0, 0, 0, 0, 0, 10810, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFAccessoryConnection_Close, 0, 0, 0, 0, 0, 10810, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + }; + +// +// [M10811] [[AccServer] Default Accessory Set To TTY; Connect Headset; Change accessory settings to Headset] +// +const TTFAccessoryTestCaseStateControl KTFGetSupportedHWDevicesStates[]= + { + { ETFAccessoryConnection_Open, 0, 0, 0, 0, 0, 10811, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFAccessoryMode_Open, 0, 0, 0, 0, 0, 10811, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFAccessorySettings_Open, 0, 0, 0, 0, 0, 10811, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFSetHWDeviceSettings, 0, KASTTY, 1, 0, 0, 10811, ETFAsyNone, ReqAccRequestNone, KErrNone, 100000}, + { ETFAccessoryNotifyAccessoryModeChanged, 0, 2, 0, 0, 0, 10811, ETFAsyNone, ReqAccRequestNone, KErrNone, 2000000}, + { ETFConnectWiredAccessory, 0, 0, 1, 0, 0, 10811, ETFAsyConnectHeadset, ReqAccRequestNone, KErrNone, 2000000}, + { ETFFindAndCheckRequest, 0, 5, 0, 0, 0, 10811, ETFAsyNone, ReqNotifyAccessoryModeChanged, KErrNone, 2000000}, // Headset identified as TTY! + { ETFSetHWDeviceSettings, 0, KASHeadset, 1, 0, 0, 10811, ETFAsyNone, ReqAccRequestNone, KErrNone, 3000000}, + { ETFSetHWDeviceSettings, 0, KASTTY, 0, 0, 0, 10811, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFDisconnectWiredAccessory, 0, 0, 0, 0, 0, 10811, ETFAsyDisc, ReqAccRequestNone, KErrNone, 2000000}, + { ETFClearStack, 0, 0, 0, 0, 0, 10811, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFAccessoryMode_Close, 0, 0, 0, 0, 0, 10811, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFAccessorySettings_Close, 0, 0, 0, 0, 0, 10811, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + { ETFAccessoryConnection_Close, 0, 0, 0, 0, 0, 10811, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, + }; + +#if 0 +// // [M10809] [[AccServer] Set Loopset Mode Before Connection] // const TTFAccessoryTestCaseStateControl KTFSetLoopsetModeBeforeConnectionStates[15]= @@ -1623,6 +1710,7 @@ { ETFAccessorySettings_Close, 0, 0, 0, 0, 0, 10811, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, }; +#endif // // [M10812] [[AccServer] Accessory Mode Settings (TInt)] // @@ -2218,11 +2306,11 @@ // // [M11102] [[AccServer] Cancel connect Accessory] // -const TTFAccessoryTestCaseStateControl KTFCallTClassMethods[1]= +/*const TTFAccessoryTestCaseStateControl KTFCallTClassMethods[1]= { { ETFCallTClassMethods, 0, 0, 0, 0, 0, 11102, ETFAsyNone, ReqAccRequestNone, KErrNone, 0}, }; - +*/ /************************ ****************************/ /************************ CAccPolObjectBase related testcases (USB) ****************************/ /************************ ****************************/ @@ -2891,6 +2979,10 @@ TF_ADD_TEST_CASE_L( 10804, _L( "[M10804] [[AccServer] Set TTY Mode] ") ); TF_ADD_TEST_CASE_L( 10805, _L( "[M10805] [[AccServer] Get TTY Mode] ") ); TF_ADD_TEST_CASE_L( 10806, _L( "[M10806] [[AccServer] Set And Get TTY Mode] ") ); + TF_ADD_TEST_CASE_L( 10808, _L( "[M10808] [[AccServer] Set TTY Mode After Connection] ") ); + TF_ADD_TEST_CASE_L( 10809, _L( "[M10809] [[AccServer] Set MusicStand Mode After Connection] ") ); + TF_ADD_TEST_CASE_L( 10810, _L( "[M10810] [[AccServer] Default Accessory Set To MusicStand; Connect Headphone; Change accessory settings to Headphones] ") ); + TF_ADD_TEST_CASE_L( 10811, _L( "[M10811] [[AccServer] Default Accessory Set To TTY; Connect Headset; Change accessory settings to Headset] ") ); TF_ADD_TEST_CASE_L( 10812, _L( "[M10812] [[AccServer] Accessory Mode Settings (TInt)] ") ); TF_ADD_TEST_CASE_L( 10813, _L( "[M10813] [[AccServer] Accessory Mode Settings (TBool)] ") ); TF_ADD_TEST_CASE_L( 10814, _L( "[M10814] [[AccServer] Accessory Mode Settings (TDes)] ") ); @@ -2924,9 +3016,9 @@ TF_ADD_TEST_CASE_L( 11001, _L( "[M11001] [[AccServer] Selection dialog test] ")); TF_ADD_TEST_CASE_L( 11002, _L( "[M11002] [[AccServer] Selection dialog open/cancel] ")); - TF_ADD_TEST_CASE_L( 11003, _L( "[M11003] [[AccServer] Connect open cable, user select tv-out]")); + //TF_ADD_TEST_CASE_L( 11003, _L( "[M11003] [[AccServer] Connect open cable, user select tv-out]")); TF_ADD_TEST_CASE_L( 11004, _L( "[M11004] [[AccServer] Connect open cable, ASY selects tv-out]")); - TF_ADD_TEST_CASE_L( 11005, _L( "[M11005] [[AccServer] Connect open cable, User selection device, after that ASY selects tv-out]")); + //TF_ADD_TEST_CASE_L( 11005, _L( "[M11005] [[AccServer] Connect open cable, User selection device, after that ASY selects tv-out]")); TF_ADD_TEST_CASE_L( 11006, _L( "[M11006] [[AccServer] Connect open cable, open selection dialog, disconnect]")); TF_ADD_TEST_CASE_L( 11007, _L( "[M11007] [[AccServer] Connect open cable, connect headset, user select headset]")); TF_ADD_TEST_CASE_L( 11008, _L( "[M11008] [[AccServer] Connect ECI accessory]")); diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/tsrc/public/basic/AccessoryTestControl/dsytfstifadapter/group/envrecall.cmd --- a/accessoryservices/accessoryserver/tsrc/public/basic/AccessoryTestControl/dsytfstifadapter/group/envrecall.cmd Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/tsrc/public/basic/AccessoryTestControl/dsytfstifadapter/group/envrecall.cmd Thu Jun 24 11:22:10 2010 +0100 @@ -19,41 +19,51 @@ @echo Cleaning stubs... pushd ..\..\..\stubs\group\ -call bldmake bldfiles -call abld test reallyclean +REM call bldmake bldfiles +REM call abld test reallyclean +call sbs -c armv5.test REALLYCLEAN +call sbs -c winscw.test REALLYCLEAN popd @echo Cleaning stubs... Finished @echo build BT Audioman Client... pushd \sf\mw\btservices\bluetoothengine\btaudioman\group -call bldmake bldfiles -call abld build +REM call bldmake bldfiles +REM call abld build +call sbs popd @echo build BT Audioman Client... Finished @echo build accfwuinotifier... pushd \sf\mw\appsupport\coreapplicationuis\accfwuinotifier\group -call bldmake bldfiles -call abld build +REM call bldmake bldfiles +REM call abld build +call sbs popd @echo build accfwuinotifier... Finished @echo build accessoryadaptation... pushd \ncp_sw\corecom\modemadaptation_ext\adaptationlayer_ext\systemadaptation\accessoryadaptation\group\ -call bldmake bldfiles -call abld cleanexport -call abld export -call abld build accessoryadaptation +REM call bldmake bldfiles +REM call abld cleanexport +call sbs -c armv5 CLEANEXPORT +call sbs -c winscw CLEANEXPORT +REM call abld export +call sbs -c armv5 EXPORT +call sbs -c winscw EXPORT +REM call abld build accessoryadaptation +call sbs -p accessoryadaptation popd @echo build accessoryadaptation... Finished @echo build Plugged Display ASY... pushd \sf\os\devicesrv\accessoryservices\pluggeddisplay\pluggeddisplayasy\group -call bldmake bldfiles -call abld build +REM call bldmake bldfiles +REM call abld build +call sbs popd @echo build Plugged Display ASY... Finished \ No newline at end of file diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/tsrc/public/basic/AccessoryTestControl/dsytfstifadapter/group/envsetup.cmd --- a/accessoryservices/accessoryserver/tsrc/public/basic/AccessoryTestControl/dsytfstifadapter/group/envsetup.cmd Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/tsrc/public/basic/AccessoryTestControl/dsytfstifadapter/group/envsetup.cmd Thu Jun 24 11:22:10 2010 +0100 @@ -19,43 +19,55 @@ @echo Cleaning BT Audioman Client... pushd \sf\mw\btservices\bluetoothengine\btaudioman\group -call bldmake bldfiles -call abld makefile btaudiomanclient -call abld reallyclean btaudiomanclient +REM call bldmake bldfiles +REM call abld makefile btaudiomanclient +REM call abld reallyclean btaudiomanclient +call sbs -p btaudiomanclient -c armv5 REALLYCLEAN +call sbs -p btaudiomanclient -c winscw REALLYCLEAN popd @echo Cleaning BT Audioman Client... Finished @echo Cleaning accfwuinotifier... pushd \sf\mw\appsupport\coreapplicationuis\accfwuinotifier\group -call bldmake bldfiles -call abld makefile -call abld reallyclean +REM call bldmake bldfiles +REM call abld makefile +REM call abld reallyclean +call sbs -c armv5 REALLYCLEAN +call sbs -c winscw REALLYCLEAN popd @echo Cleaning accfwuinotifier... Finished @echo Cleaning accessoryadaptation... pushd \ncp_sw\corecom\modemadaptation_ext\adaptationlayer_ext\systemadaptation\accessoryadaptation\group\ -call bldmake bldfiles -call abld makefile accessoryadaptation -call abld clean accessoryadaptation +REM call bldmake bldfiles +REM call abld makefile accessoryadaptation +REM call abld clean accessoryadaptation +call sbs -p accessoryadaptation -c armv5 CLEAN +call sbs -p accessoryadaptation -c winscw CLEAN popd @echo Cleaning accessoryadaptation... Finished @echo Cleaning Plugged Display ASY... pushd \sf\os\devicesrv\accessoryservices\pluggeddisplay\pluggeddisplayasy\group -call bldmake bldfiles -call abld reallyclean +REM call bldmake bldfiles +REM call abld reallyclean +call sbs -c armv5 REALLYCLEAN +call sbs -c winscw REALLYCLEAN popd @echo Cleaning Plugged Display ASY... Finished @echo Setting up stubs... pushd ..\..\..\stubs\group\ -call bldmake bldfiles -call abld test reallyclean -call abld test build +REM call bldmake bldfiles +REM call abld test reallyclean +call sbs -c armv5.test REALLYCLEAN +call sbs -c winscw.test REALLYCLEAN +REM call abld test build +call sbs -c armv5.test +call sbs -c winscw.test popd @echo Setting up stubs... Finished diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/tsrc/public/basic/Stubs/AsyStub/src/AsyStubService.cpp --- a/accessoryservices/accessoryserver/tsrc/public/basic/Stubs/AsyStub/src/AsyStubService.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/tsrc/public/basic/Stubs/AsyStub/src/AsyStubService.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -123,6 +123,10 @@ break; case ETFAsyConnOpenCable: + { + } + break; +// case ETFAsyConnOpenCable: case ETFAsyConnectOpenCable3Poles: { TRequestStatus status; @@ -140,7 +144,7 @@ TBuf HWModelID( _L("opencable")); //Set GenericID header - iGenericIDHeader.iAccessoryDeviceType = KDTAVDevice; + iGenericIDHeader.iAccessoryDeviceType = KDTHeadset; iGenericIDHeader.iPhysicalConnection = KPCWired; iGenericIDHeader.iApplicationProtocol = 0x0; @@ -170,7 +174,7 @@ nameValueArray ); nameValueArray.Close(); - iAccessoryControl.ConnectAccessory( status, genericID, ETrue ); + iAccessoryControl.ConnectAccessory( status, genericID, EFalse ); User::WaitForRequest( status ); TInt retval = status.Int(); @@ -311,7 +315,7 @@ nameValueArray ); nameValueArray.Close(); - iAccessoryControl.ConnectAccessory( status, genericID, ETrue ); + iAccessoryControl.ConnectAccessory( status, genericID, EFalse ); User::WaitForRequest( status ); TInt retval = status.Int(); @@ -377,7 +381,7 @@ nameValueArray ); nameValueArray.Close(); - iAccessoryControl.ConnectAccessory( status, genericID, ETrue ); + iAccessoryControl.ConnectAccessory( status, genericID, EFalse ); User::WaitForRequest( status ); TInt retval = status.Int(); diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/tsrc/public/basic/Stubs/accfwuinotifierstub/src/AccFwUiDialogNotifierStub.cpp --- a/accessoryservices/accessoryserver/tsrc/public/basic/Stubs/accfwuinotifierstub/src/AccFwUiDialogNotifierStub.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/tsrc/public/basic/Stubs/accfwuinotifierstub/src/AccFwUiDialogNotifierStub.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -35,7 +35,6 @@ // CONSTANTS const TUid KScreenOutputChannel = {0x00000666}; -_LIT(KAccFwUiNotifierResource, "accfwnoteuinotifier.rsc"); // MACROS diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/tsrc/public/basic/Stubs/accfwuinotifierstub/src/AccFwUiNoteNotifierStub.cpp --- a/accessoryservices/accessoryserver/tsrc/public/basic/Stubs/accfwuinotifierstub/src/AccFwUiNoteNotifierStub.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/tsrc/public/basic/Stubs/accfwuinotifierstub/src/AccFwUiNoteNotifierStub.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -38,8 +38,7 @@ // CONSTANTS const TUid KScreenOutputChannel = {0x00000666}; - -_LIT(KAccFwUiNotifierResource, "accfwnoteuinotifier.rsc"); + // MACROS // LOCAL CONSTANTS AND MACROS diff -r 51d936fe0d0c -r a003130def4e accessoryservices/accessoryserver/tsrc/public/basic/Stubs/accfwuinotifierstub/src/AccFwUiNotifierStubObserver.cpp --- a/accessoryservices/accessoryserver/tsrc/public/basic/Stubs/accfwuinotifierstub/src/AccFwUiNotifierStubObserver.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/accessoryserver/tsrc/public/basic/Stubs/accfwuinotifierstub/src/AccFwUiNotifierStubObserver.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -70,8 +70,8 @@ TBool booli( EFalse ); booli = 1 & buf().iParam2; - //iService->SetObserverSelection( some, booli/*buf().iParam1, buf().iParam2*/ //); -/* + iService->SetObserverSelection( some, boolibuf().iParam1, buf().iParam2); + if( !IsActive() ) { iStatus = KRequestPending; diff -r 51d936fe0d0c -r a003130def4e accessoryservices/gid_pc_tool/Data/CMD/CreateDB.cmd --- a/accessoryservices/gid_pc_tool/Data/CMD/CreateDB.cmd Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/gid_pc_tool/Data/CMD/CreateDB.cmd Thu Jun 24 11:22:10 2010 +0100 @@ -40,8 +40,12 @@ cd%ACCPOL_PATH%\group echo export second xcopy \epoc32\winscw\c\System\Data\DBS_10205030_accpolicydb.db ..\data\ -call abld.bat cleanexport -call abld.bat export +REM call abld.bat cleanexport +call sbs -c armv5 CLEANEXPORT +call sbs -c winscw CLEANEXPORT +REM call abld.bat export +call sbs -c armv5 EXPORT +call sbs -c winscw EXPORT goto end @@ -49,9 +53,13 @@ cd%ACCPOL_PATH%\group echo export first -call bldmake bldfiles -call abld cleanexport -call abld export +REM call bldmake bldfiles +REM call abld cleanexport +call sbs -c armv5 CLEANEXPORT +call sbs -c winscw CLEANEXPORT +REM call abld export +call sbs -c armv5 EXPORT +call sbs -c winscw EXPORT goto importer diff -r 51d936fe0d0c -r a003130def4e accessoryservices/headsetstatusapi/tsrc/public/basic/headsettestmodule/src/headsetTestModuleCases.cpp --- a/accessoryservices/headsetstatusapi/tsrc/public/basic/headsettestmodule/src/headsetTestModuleCases.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/headsetstatusapi/tsrc/public/basic/headsettestmodule/src/headsetTestModuleCases.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -131,14 +131,14 @@ static TCaseInfoInternal const KCases[] = { // To add new test cases, add new items to this array - ENTRY( "HeadsetStatus test", HeadsetStatusTestL ), + ENTRY( "HeadsetStatus test", &CheadsetTestModule::HeadsetStatusTestL ), // Example how to use OOM functionality //OOM_ENTRY( "Loop test with OOM", LoopTest, ETrue, 2, 3), //OOM_FUNCENTRY( PrintTest, ETrue, 1, 3 ), - ENTRY( "SetObserver test", SetObserverL ), - ENTRY( "StartObserving test", StartObservingL ), - ENTRY( "StopObserving test", StopObservingL ) + ENTRY( "SetObserver test", &CheadsetTestModule::SetObserverL ), + ENTRY( "StartObserving test", &CheadsetTestModule::StartObservingL ), + ENTRY( "StopObserving test", &CheadsetTestModule::StopObservingL ) }; // Verify that case number is valid diff -r 51d936fe0d0c -r a003130def4e accessoryservices/pluggeddisplay/edidparser/bwins/edidparseru.def --- a/accessoryservices/pluggeddisplay/edidparser/bwins/edidparseru.def Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/pluggeddisplay/edidparser/bwins/edidparseru.def Thu Jun 24 11:22:10 2010 +0100 @@ -54,4 +54,5 @@ ?GetInterlacedAudioLatency@CCea861EdidParser@@QAEEXZ @ 53 NONAME ; unsigned char CCea861EdidParser::GetInterlacedAudioLatency(void) ?GetInterlacedVideoLatency@CCea861EdidParser@@QAEEXZ @ 54 NONAME ; unsigned char CCea861EdidParser::GetInterlacedVideoLatency(void) ?GetStandardTimings@CEdidParserBase@@QAEEH@Z @ 55 NONAME ; unsigned char CEdidParserBase::GetStandardTimings(int) + ?HasIEEERegistration@CCea861EdidParser@@QAEHXZ @ 56 NONAME ; int CCea861EdidParser::HasIEEERegistration(void) diff -r 51d936fe0d0c -r a003130def4e accessoryservices/pluggeddisplay/edidparser/eabi/edidparseru.def --- a/accessoryservices/pluggeddisplay/edidparser/eabi/edidparseru.def Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/pluggeddisplay/edidparser/eabi/edidparseru.def Thu Jun 24 11:22:10 2010 +0100 @@ -56,4 +56,5 @@ _ZTI17CCea861EdidParser @ 55 NONAME ; ## _ZTV17CCea861EdidParser @ 56 NONAME ; ## _ZN15CEdidParserBase18GetStandardTimingsEi @ 57 NONAME + _ZN17CCea861EdidParser19HasIEEERegistrationEv @ 58 NONAME diff -r 51d936fe0d0c -r a003130def4e accessoryservices/pluggeddisplay/edidparser/inc/cea861edidparser.h --- a/accessoryservices/pluggeddisplay/edidparser/inc/cea861edidparser.h Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/pluggeddisplay/edidparser/inc/cea861edidparser.h Thu Jun 24 11:22:10 2010 +0100 @@ -156,6 +156,14 @@ IMPORT_C TBool IsVendorSpecificDataBlockSupported(); /** + * Indicates whether the sink has IEEE registration or not in the vendor specific data block + * + * @param none + * @return true/false + */ + IMPORT_C TBool HasIEEERegistration(); + + /** * Indicates whether or not Speaker Allocation Data Block is supported * * diff -r 51d936fe0d0c -r a003130def4e accessoryservices/pluggeddisplay/edidparser/src/cea861ediddatatypes.cpp --- a/accessoryservices/pluggeddisplay/edidparser/src/cea861ediddatatypes.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/pluggeddisplay/edidparser/src/cea861ediddatatypes.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -205,26 +205,15 @@ // delete all descriptor blocks while( iDescriptorBlocks ) { - TCEA861TEdidDescriptorBlockList* prev = iDescriptorBlocks; - TCEA861TEdidDescriptorBlockList* last = prev; - /* coverity[var_deref_op]*/ - if( prev->iNext ) - { - last = prev->iNext; - } - while( last->iNext ) // go to last block - { - prev = prev->iNext; - last = last->iNext; - } - prev->iNext = NULL; - if( last == iDescriptorBlocks ) - { - iDescriptorBlocks = NULL; - prev = NULL; - } - delete last; + TCEA861TEdidDescriptorBlockList* node; + + node = iDescriptorBlocks; + iDescriptorBlocks = iDescriptorBlocks->iNext; + + delete node; } + iDescriptorBlocks = NULL; + } // End of file diff -r 51d936fe0d0c -r a003130def4e accessoryservices/pluggeddisplay/edidparser/src/cea861edidparser.cpp --- a/accessoryservices/pluggeddisplay/edidparser/src/cea861edidparser.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/pluggeddisplay/edidparser/src/cea861edidparser.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -19,6 +19,8 @@ #include "cea861edidparser.h" #include "trace.h" +const TInt KIEEERegistrationID = 0x00000C03; + // ======== LOCAL FUNCTIONS ======== @@ -300,6 +302,24 @@ } // ---------------------------------------------------------------------------- +// CCea861EdidParser::HasIEEERegistration +// +// ---------------------------------------------------------------------------- +// +EXPORT_C TBool CCea861EdidParser::HasIEEERegistration() + { + FUNC_LOG; + + if ( iVendorSpecificDataBlockSupported && iParsedInfo->iVendorSpecificData && + iParsedInfo->iVendorSpecificData->iIEEE24bitRegistrationIdentifier == KIEEERegistrationID ) + { + return ETrue; + } + + return EFalse; + } + +// ---------------------------------------------------------------------------- // CCea861EdidParser::GetParsedInformation // // ---------------------------------------------------------------------------- @@ -577,6 +597,8 @@ { return KErrOverflow; } + + TCEA861TEdidDescriptorBlockList* lastnode = iParsedInfo->iDescriptorBlocks; for( TInt index = aIndex; index < KEdidParserSizeOfEdidBlock; index++ ) { @@ -594,32 +616,21 @@ if( aData[index] != KEdidPaddingByte ) // padding = 0x00 { - // start of 18-byte descriptors: See section 3.10.2 of VESA E-EDID Standard [10] - - TBool first = ETrue; - if( iParsedInfo->iDescriptorBlocks == 0 ) - { - iParsedInfo->iDescriptorBlocks - = new ( ELeave ) TCEA861TEdidDescriptorBlockList(); - } - + // start of 18-byte descriptors: See section 3.10.2 of E-EDID Standard [10] // read the descriptors here TEdidDescriptorBlock tmp = GetDescriptorBlock( aData, index ); - if( first ) + + if( iParsedInfo->iDescriptorBlocks == 0 ) { - first = EFalse; - iParsedInfo->iDescriptorBlocks->iData = tmp; - continue; + iParsedInfo->iDescriptorBlocks = new ( ELeave ) TCEA861TEdidDescriptorBlockList(); + lastnode = iParsedInfo->iDescriptorBlocks; } - TCEA861TEdidDescriptorBlockList* last = - iParsedInfo->iDescriptorBlocks; - while( last->iNext != 0 ) // go to last block + else { - last = last->iNext; + lastnode->iNext = new ( ELeave ) TCEA861TEdidDescriptorBlockList(); + lastnode = lastnode->iNext; } - last->iNext = new ( ELeave ) TCEA861TEdidDescriptorBlockList(); - last = last->iNext; - last->iData = tmp; + lastnode->iData = tmp; } else { @@ -1468,6 +1479,7 @@ { case 0: //reserved + ReadUnknownTagCode( aData, aIndex, L1 ); break; case 1: ReadCea861ShortAudioDataBlockL( aData, aIndex, L1 ); @@ -1482,7 +1494,7 @@ ReadCea861SpeakerAllocationDataBlock( aData, aIndex, L1 ); break; case 5: - //VESA DTC Data Block + //DTC Data Block ReadUnknownTagCode( aData, aIndex, L1 ); break; case 6: @@ -1509,10 +1521,6 @@ // TODO: these should be read as well, not just as unknown ReadUnknownTagCode( aData, aIndex, L1 ); break; - default: - // if tag-code is unknown, we still must read through it - ReadUnknownTagCode( aData, aIndex, L1 ); - break; } return KErrNone; @@ -1528,6 +1536,7 @@ const TInt8 aLen ) { FUNC_LOG; + TBool first = EFalse; iAudioDataBlockSupported = ETrue; @@ -1535,6 +1544,8 @@ { iParsedInfo->iShortAudioDescriptors = new ( ELeave ) TCEA861AudioDataBlock(); + first = ETrue; + iParsedInfo->iShortAudioDescriptors->iNext = 0; } TCEA861AudioDataBlock* cur = iParsedInfo->iShortAudioDescriptors; @@ -1543,8 +1554,8 @@ cur = cur->iNext; // jump to the end } - TBool first = ETrue; - for( int i = 0; i < aLen; i++ ) + TInt i = 0; + while (i < aLen) { // read aLen-amount of short video descriptors @@ -1587,20 +1598,20 @@ { FUNC_LOG; - TBool first = ETrue; + TBool first = EFalse; iVideoDataBlockSupported = ETrue; if( !iParsedInfo->iShortVideoDescriptors ) // linked list { iParsedInfo->iShortVideoDescriptors = new ( ELeave ) TCEA861VideoDataBlock(); iParsedInfo->iShortVideoDescriptors->iNext = 0; // make sure there are no stray pointers + first = ETrue; } TCEA861VideoDataBlock* cur = iParsedInfo->iShortVideoDescriptors; while( cur->iNext != 0 ) { cur = cur->iNext; // jump to the end - first = EFalse; // there is already some links, so set first to false } for( int i = 0; i < aLen; i++ ) @@ -1666,11 +1677,13 @@ aLen -= 3; // this is needed: Vendor specific payload length = L4-3bytes - TBool first = ETrue; + TBool first = EFalse; if( iParsedInfo->iVendorSpecificData->iVendorSpecificPayloadStart == 0 ) { iParsedInfo->iVendorSpecificData->iVendorSpecificPayloadStart = new ( ELeave ) TCEA861VendorSpecificDataBlockPayload(); + iParsedInfo->iVendorSpecificData->iVendorSpecificPayloadStart->iNext = 0; + first = ETrue; } TCEA861VendorSpecificDataBlockPayload* cur = iParsedInfo->iVendorSpecificData->iVendorSpecificPayloadStart; @@ -1749,6 +1762,7 @@ const TInt8 aLen ) { FUNC_LOG; + TBool first = EFalse; aIndex++; // jump to the extended tag code (aLen is the length from extended tag to the end) @@ -1756,13 +1770,12 @@ { iParsedInfo->iVideoCapabilityDataBlock = new ( ELeave ) TCEA861VideoCapabilityDataBlock(); + first = ETrue; } TCEA861VideoCapabilityDataBlock* cur = iParsedInfo->iVideoCapabilityDataBlock; - TBool first = ETrue; while( cur->iNext != 0 ) { - first = EFalse; cur = cur->iNext; } diff -r 51d936fe0d0c -r a003130def4e accessoryservices/pluggeddisplay/pluggeddisplayengine/inc/tvoutconfigforhdmi.h --- a/accessoryservices/pluggeddisplay/pluggeddisplayengine/inc/tvoutconfigforhdmi.h Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/pluggeddisplay/pluggeddisplayengine/inc/tvoutconfigforhdmi.h Thu Jun 24 11:22:10 2010 +0100 @@ -23,7 +23,7 @@ #include #include "multifinitestatemachine.h" #include "myasynconeshottimercallback.h" - +#include "pdengine.h" // CONSTANTS diff -r 51d936fe0d0c -r a003130def4e accessoryservices/pluggeddisplay/pluggeddisplayengine/src/compositecablestateconnected.cpp --- a/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/compositecablestateconnected.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/compositecablestateconnected.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -359,7 +359,12 @@ if ( EPDEIfCentralRepositoryWatchEventKeyChanged == aEvent ) { INFO( "Event: EPDEIfCentralRepositoryWatchEventKeyChanged" ); - iResettingInput = ETrue; + iCRWatchForFlickerFilter->Cancel(); + iCRWatchForAspectRatio->Cancel(); + iCRWatchForTvSystem->Cancel(); + ClearAvailableTvOutConfig(); + iTVOutConfigForComposite.Disable(); + iResettingInput = ETrue; Enter(); } else diff -r 51d936fe0d0c -r a003130def4e accessoryservices/pluggeddisplay/pluggeddisplayengine/src/edidhandler.cpp --- a/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/edidhandler.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/edidhandler.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -40,6 +40,7 @@ const TInt KDefaultCEAMode = E640x480p59_94d60Hz4d3; const TInt KDefaultCEAModeIndex = 0; +const TInt KDefaultDMTModeIndex = 3; // Retry Delay for EDID access const TInt KRetryDelay = 50 * 1000; // 50 milliseconds @@ -291,7 +292,86 @@ // Set audio format TUid audioFormat; - audioFormat.iUid = audioDataBlock->iAudioFormatCode; + // Map the audio format code defined in + // cea861ediddatatypes.h to accpolhdmiaudioformat.h + switch ( audioDataBlock->iAudioFormatCode ) + { + case KAudioFormatCodePCM: + { + audioFormat = HdmiAudioFormat::KUidFormatPCM16; + break; + } + case KAudioFormatCodeAC3: + { + audioFormat = HdmiAudioFormat::KUidFormatAC3; + break; + } + case KAudioFormatCodeMPEG1: + { + audioFormat = HdmiAudioFormat::KUidFormatMPEG1; + break; + } + case KAudioFormatCodeMP3: + { + audioFormat = HdmiAudioFormat::KUidFormatMP3; + break; + } + case KAudioFormatCodeMPEG2: + { + audioFormat = HdmiAudioFormat::KUidFormatMPEG2; + break; + } + case KAudioFormatCodeAACLC: + { + audioFormat = HdmiAudioFormat::KUidFormatAACLC; + break; + } + case KAudioFormatCodeDTS: + { + audioFormat = HdmiAudioFormat::KUidFormatDTS; + break; + } + case KAudioFormatCodeATRAC: + { + audioFormat = HdmiAudioFormat::KUidFormatATRAC; + break; + } + case KAudioFormatCodeDSD: + { + audioFormat = HdmiAudioFormat::KUidFormatDSD; + break; + } + case KAudioFormatCodeEAC3: + { + audioFormat = HdmiAudioFormat::KUidFormatEAC3; + break; + } + case KAudioFormatCodeDTSHD: + { + audioFormat = HdmiAudioFormat::KUidFormatDTSHD; + break; + } + case KAudioFormatCodeMLP: + { + audioFormat = HdmiAudioFormat::KUidFormatMLP; + break; + } + case KAudioFormatCodeDST: + { + audioFormat = HdmiAudioFormat::KUidFormatDST; + break; + } + case KAudioFormatCodeWMAPRO: + { + audioFormat = HdmiAudioFormat::KUidFormatWMAPRO; + break; + } + default: + { + audioFormat.iUid = KAudioFormatCodeNA; + break; + } + } hdmiAudioFormat->SetAudioFormat( audioFormat ); // const TUid aAudioFormat, // Set bit resolution @@ -472,9 +552,10 @@ } else { + // No EDID data available from the sink iRetryCounter = KErrNone; - iFSM.Input( EPDEIfEDIDHandler, - EPDEIfEDIDHandlerEventEdidDataFetchFailed ); + ResetData(); + iFSM.Input( EPDEIfEDIDHandler, EPDEIfEDIDHandlerEventEdidDataFetched ); } } break; @@ -564,8 +645,6 @@ { FUNC_LOG; - aTimings.iTvPhysicalImageWidthMm = iEdidParserPtr->GetHorizontalScreenSize() * 10; - aTimings.iTvPhysicalImageHeightMm = iEdidParserPtr->GetVerticalScreenSize() * 10; aTimings.iTvPhysicalImageAspectRatioNumerator = 0; aTimings.iTvPhysicalImageAspectRatioDenominator = 0; aTimings.iHorizontalBorderPixels = 0; @@ -573,15 +652,25 @@ aTimings.iVerticalBorderLinesField2 = 0; aTimings.iLeftBorderPixels = 0; aTimings.iRightBorderPixels = 0; - aTimings.iUnderscanEnabled = EFalse; if( iExtensionParserPtr ) { + INFO("==CEA Extension Exists"); aTimings.iUnderscanEnabled = iExtensionParserPtr->Underscan(); } + else + { + INFO("==No CEA Extension"); + // No CEA Extension so it should be DVI + // Underscan supported always + aTimings.iTvPhysicalImageAspectRatioNumerator = 4; + aTimings.iTvPhysicalImageAspectRatioDenominator = 3; + aTimings.iUnderscanEnabled = ETrue; + } if( aTimings.iUnderscanEnabled ) { + INFO("==Underscan Enabled"); // Underscan aTimings.iLeftTopCorner.iX = 0; aTimings.iLeftTopCorner.iY = 0; @@ -590,23 +679,30 @@ } else { + INFO("==Underscan Disabled"); // Calculate overscan CalculateOverscan( aTimings.iLeftTopCorner, aTimings.iRightBottomCorner ); } - aTimings.iTvPhysicalImageAspectRatioNumerator = iEdidParserPtr->GetAspectRatioLandscape(); - aTimings.iTvPhysicalImageAspectRatioDenominator = iEdidParserPtr->GetAspectRatioPortrait(); aTimings.iConnector = TTvSettings::EHDMI; - aTimings.iTvColorCoordinates.iRed.iX = iEdidParserPtr->GetColorCoordinatesRedX(); - aTimings.iTvColorCoordinates.iRed.iY = iEdidParserPtr->GetColorCoordinatesRedY(); - aTimings.iTvColorCoordinates.iGreen.iX = iEdidParserPtr->GetColorCoordinatesGreenX(); - aTimings.iTvColorCoordinates.iGreen.iY = iEdidParserPtr->GetColorCoordinatesGreenY(); - aTimings.iTvColorCoordinates.iBlue.iX = iEdidParserPtr->GetColorCoordinatesBlueX(); - aTimings.iTvColorCoordinates.iBlue.iY = iEdidParserPtr->GetColorCoordinatesBlueY(); - aTimings.iTvColorCoordinates.iWhite.iX = iEdidParserPtr->GetColorCoordinatesWhiteX(); - aTimings.iTvColorCoordinates.iWhite.iY = iEdidParserPtr->GetColorCoordinatesWhiteY(); - aTimings.iTvHdmiVersion = iEdidParserPtr->GetVersion(); - aTimings.iTvHdmiRevision = iEdidParserPtr->GetRevision(); + + if( iEdidParserPtr ) + { + aTimings.iTvPhysicalImageWidthMm = iEdidParserPtr->GetHorizontalScreenSize() * 10; + aTimings.iTvPhysicalImageHeightMm = iEdidParserPtr->GetVerticalScreenSize() * 10; + aTimings.iTvPhysicalImageAspectRatioNumerator = iEdidParserPtr->GetAspectRatioLandscape(); + aTimings.iTvPhysicalImageAspectRatioDenominator = iEdidParserPtr->GetAspectRatioPortrait(); + aTimings.iTvColorCoordinates.iRed.iX = iEdidParserPtr->GetColorCoordinatesRedX(); + aTimings.iTvColorCoordinates.iRed.iY = iEdidParserPtr->GetColorCoordinatesRedY(); + aTimings.iTvColorCoordinates.iGreen.iX = iEdidParserPtr->GetColorCoordinatesGreenX(); + aTimings.iTvColorCoordinates.iGreen.iY = iEdidParserPtr->GetColorCoordinatesGreenY(); + aTimings.iTvColorCoordinates.iBlue.iX = iEdidParserPtr->GetColorCoordinatesBlueX(); + aTimings.iTvColorCoordinates.iBlue.iY = iEdidParserPtr->GetColorCoordinatesBlueY(); + aTimings.iTvColorCoordinates.iWhite.iX = iEdidParserPtr->GetColorCoordinatesWhiteX(); + aTimings.iTvColorCoordinates.iWhite.iY = iEdidParserPtr->GetColorCoordinatesWhiteY(); + aTimings.iTvHdmiVersion = iEdidParserPtr->GetVersion(); + aTimings.iTvHdmiRevision = iEdidParserPtr->GetRevision(); + } Mem::FillZ( ( TAny* )&aTimings.iProductName, ( sizeof( TChar ) * KProductNameChars ) ); Mem::FillZ( ( TAny* )&aTimings.iProductDescription, ( sizeof( TChar ) * KProductDescriptorsChars ) ); aTimings.iSourceType = THdmiDviTimings::ESourceTypeUnknown; @@ -782,21 +878,44 @@ FUNC_LOG; TInt retVal(KErrNone); - - // Check established timings 1 and 2 - retVal = SetDmtModesFromEstablishedTimings( aTimings ); - - if( KErrNone == retVal ) - { - // Check standard timings - retVal = SetDmtModesFromStandardTimings( aTimings ); - - if( KErrNone == retVal ) - { - // Check timing descriptors - retVal = SetDmtModesFromTimingDescriptors( aTimings ); - } - } + + if( iDataBlockPtr ) + { + // Check established timings 1 and 2 + retVal = SetDmtModesFromEstablishedTimings( aTimings ); + + if( KErrNone == retVal ) + { + // Check standard timings + retVal = SetDmtModesFromStandardTimings( aTimings ); + + if( KErrNone == retVal ) + { + // Check timing descriptors + retVal = SetDmtModesFromTimingDescriptors( aTimings ); + } + } + } + else + { + INFO( "==No EDID available from the Sink. Setting DMT 4" ); + // No EDID data available from the sink + // Default VGA resolution should be selected + THdmiDviTimings timings; + const TTimingItem* item = TimingByIndex( KDefaultDMTModeIndex, ETimingModeDMT ); + if( item ) + { + Mem::FillZ( ( TAny* )&timings, sizeof( timings ) ); + FillHdmiDviTimings( *item, timings ); + retVal = aTimings.Append( timings ); + ERROR_1( retVal, "Failed to append DMT timing: %S in array", item->iTimingName ); + } + else + { + ERROR_1( KErrArgument, "DMT timing item not found for VIC mode: %d", KDefaultDMTModeIndex ); + retVal = KErrNotFound; + } + } return retVal; } @@ -1187,7 +1306,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 @@ -1198,14 +1317,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 @@ -1216,10 +1335,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 ); } @@ -1288,7 +1407,7 @@ { TInt availableIndex = 0; TBool found( EFalse ); - TBool defaultCEAmode( EFalse ); + TBool defaultCEAmode( EFalse ), ceaMode( EFalse ); supportedCount = supportedModes.Count(); INFO_1( "HDMI CONFIGS --- From HW -- Total : %d", supportedCount ); @@ -1304,6 +1423,7 @@ (TSupportedHdmiDviMode::ECea == supportedModes[ supportedIndex ].iStandardModeType) && (aHdmiConfigs[ availableIndex ].iCeaMode == supportedModes[ supportedIndex ].iStandardMode) ) { + ceaMode = ETrue; found = ETrue; if( aHdmiConfigs[ availableIndex].iCeaMode == KDefaultCEAMode ) { @@ -1334,24 +1454,50 @@ availableIndex++; } - - if( ( (KDefaultCEAModePhysImgAspRatioNr == iEdidParserPtr->GetAspectRatioLandscape()) - && (KDefaultCEAModePhysImgAspRatioDr == iEdidParserPtr->GetAspectRatioPortrait()) ) - && !defaultCEAmode ) + // If the Vendor Specific Data Block supported and it has IEEE registration number then it is HDMI + if ( iExtensionParserPtr && iExtensionParserPtr->IsVendorSpecificDataBlockSupported() && iExtensionParserPtr->HasIEEERegistration() ) { - THdmiDviTimings timings; - - // Get a timing item for default CEA Mode (1) - const TTimingItem* item = TimingByIndex( KDefaultCEAModeIndex, ETimingModeCEA ); - if( item ) - { - Mem::FillZ( ( TAny* )&timings, sizeof( timings ) ); - FillHdmiDviTimings( *item, timings ); - retVal = aHdmiConfigs.Append( timings ); - ERROR( retVal, "Failed to append CEA timing in available config array" ); - } - } + INFO( "<<<<<<<<<<<<<>>>>>>>>>>>>>" ); + // Add default CEA mode 1 to the list if it is not there already + if( ( (KDefaultCEAModePhysImgAspRatioNr == iEdidParserPtr->GetAspectRatioLandscape()) + && (KDefaultCEAModePhysImgAspRatioDr == iEdidParserPtr->GetAspectRatioPortrait()) ) + && !defaultCEAmode ) + + { + THdmiDviTimings timings; + + // Get a timing item for default CEA Mode (1) + const TTimingItem* item = TimingByIndex( KDefaultCEAModeIndex, ETimingModeCEA ); + if( item ) + { + Mem::FillZ( ( TAny* )&timings, sizeof( timings ) ); + FillHdmiDviTimings( *item, timings ); + retVal = aHdmiConfigs.Append( timings ); + ERROR( retVal, "Failed to append CEA timing in available config array" ); + } + } + } + else // It is DVI connector + { + TInt modecount = aHdmiConfigs.Count(); + + while( modecount-- ) + { + + if( aHdmiConfigs[ modecount ].iDmtMode && (EFalse == ceaMode) ) + { + INFO( "<<<<<<<<<<<<<>>>>>>>>>>>>>" ); + + // Change it to DVI mode as it is existing in both Supported and available configurations + aHdmiConfigs[ modecount ].iConnector = TTvSettings::EDVI; + + // Version should be zeroed for non-HDMI + aHdmiConfigs[ modecount ].iTvHdmiVersion = 0; + aHdmiConfigs[ modecount ].iTvHdmiRevision = 0; + } + } + } INFO( "Filtered list -- END" ); supportedModes.Close(); diff -r 51d936fe0d0c -r a003130def4e accessoryservices/pluggeddisplay/pluggeddisplayengine/src/pdengine.cpp --- a/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/pdengine.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/pdengine.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -129,7 +129,7 @@ if( iFSMPtr[EPDEFSMIdCompositeCableStatus]->CurrentStateID() != ECompositeCableStateIdle ) { // Forcefully transit CompositeCable FSM to Idle state - ((CCompositeCableStatusFSM*)iFSMPtr[EPDEFSMIdCompositeCableStatus])->Transit(ECompositeCableStateIdle); + ((CCompositeCableStatusFSM*)iFSMPtr[EPDEFSMIdCompositeCableStatus])->Input(EPDEIfAccessoryConnection, EPDEIfAccessoryConnectionEventCableDisconnected); } iFSMPtr[ aFSMId ]->Input( aInterfaceId, aEvent ); } diff -r 51d936fe0d0c -r a003130def4e accessoryservices/pluggeddisplay/pluggeddisplayengine/src/tvoutconfigforhdmi.cpp --- a/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/tvoutconfigforhdmi.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/tvoutconfigforhdmi.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -34,6 +34,11 @@ // CONSTANTS // MACROS +#define SEND_VIA_PDENGINE(event) \ + ((CHDMICableStatusFSM*)&iFSM)->GetPDEngine()->Input( \ + EPDEFSMIdHDMICableStatus, \ + EPDEIfTVOutConfig, \ + event ) // LOCAL CONSTANTS AND MACROS @@ -435,9 +440,8 @@ } else if ( iTvConfig->HdmiCableConnected() ) { - iFSM.Input( - EPDEIfTVOutConfig, - EIfTVOutConfigEventCableConnected ); + // Send connected event to FSM via PDEngine where the multiple connection(analog and hdmi) logic is handled. + SEND_VIA_PDENGINE(EIfTVOutConfigEventCableConnected); } else { diff -r 51d936fe0d0c -r a003130def4e accessoryservices/remotecontrolfw/client/coreapi/public/remconcoreapicontrollerobserver.h --- a/accessoryservices/remotecontrolfw/client/coreapi/public/remconcoreapicontrollerobserver.h Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/remotecontrolfw/client/coreapi/public/remconcoreapicontrollerobserver.h Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e accessoryservices/remotecontrolfw/client/intermediate/src/interfaceselector.cpp --- a/accessoryservices/remotecontrolfw/client/intermediate/src/interfaceselector.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/remotecontrolfw/client/intermediate/src/interfaceselector.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2004-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" @@ -431,6 +431,7 @@ { delete iTargetSession; iTargetSession = NULL; + LEAVEL(err); } } @@ -485,6 +486,7 @@ { delete iTargetSession; iTargetSession = NULL; + LEAVEL(err); } } diff -r 51d936fe0d0c -r a003130def4e accessoryservices/remotecontrolfw/group/remotecontrol.iby --- a/accessoryservices/remotecontrolfw/group/remotecontrol.iby Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/remotecontrolfw/group/remotecontrol.iby Thu Jun 24 11:22:10 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2004-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" @@ -56,7 +56,7 @@ REM *** Now for things which should only be included if the device REM *** supports bluetooth, to save ROM space... -#ifdef SYMBIAN_EXCLUDE_BLUETOOTH +#ifndef __BT REM Feature BLUETOOTH is not in this ROM (remotecontrol.iby) #else // Server @@ -74,6 +74,6 @@ // The concrete Target Selector Plugin. #include -#endif // SYMBIAN_EXCLUDE_BLUETOOTH +#endif // __BT #endif // __REMCON_IBY__ diff -r 51d936fe0d0c -r a003130def4e accessoryservices/tspclientmapper/src/tspclientmapperimpl.cpp --- a/accessoryservices/tspclientmapper/src/tspclientmapperimpl.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/tspclientmapper/src/tspclientmapperimpl.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -545,10 +545,14 @@ if ( (TInt)buf().operator[]( i ) != 0 ) // count of registered clients is lost with TFixedArray, so rely on id being different from 0 { COM_TRACE_1( "[TspClientMapperImpl] CTspClientMapperImpl::GetTspTargetClientsL() first client's Pid = %d", (TInt)buf().operator[]( i ) ); - aPidArray.Append( buf().operator[]( i ) ); - } + returnErr = aPidArray.Append( buf().operator[]( i ) ); + if ( returnErr != KErrNone ) + { + break; + } + } } - COM_TRACE_( "[TspClientMapperImpl] CTspClientMapperImpl::GetTspTargetClientsL() - return" ); + COM_TRACE_1 ( "[TspClientMapperImpl] CTspClientMapperImpl::GetTspTargetClientsL() - returnErr: %d", returnErr ); return returnErr; } diff -r 51d936fe0d0c -r a003130def4e accessoryservices/tspclientmapper/tsrc/public/basic/tspclienttestmodule/init/tspclienttestmodule.ini --- a/accessoryservices/tspclientmapper/tsrc/public/basic/tspclienttestmodule/init/tspclienttestmodule.ini Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/tspclientmapper/tsrc/public/basic/tspclienttestmodule/init/tspclienttestmodule.ini Thu Jun 24 11:22:10 2010 +0100 @@ -1,8 +1,8 @@ # -# 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 the License "Eclipse Public License v1.0" +# 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". # diff -r 51d936fe0d0c -r a003130def4e accessoryservices/tspclientmapper/tsrc/public/basic/tspclienttestmodule/src/tspclientTestModuleCases.cpp --- a/accessoryservices/tspclientmapper/tsrc/public/basic/tspclienttestmodule/src/tspclientTestModuleCases.cpp Fri May 28 14:18:28 2010 +0100 +++ b/accessoryservices/tspclientmapper/tsrc/public/basic/tspclienttestmodule/src/tspclientTestModuleCases.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -33,9 +33,6 @@ //extern ?external_function( ?arg_type,?arg_type ); // CONSTANTS -_LIT( KEnter, "Enter" ); -_LIT( KOnGoing, "On-going" ); -_LIT( KExit, "Exit" ); // MACROS //#define ?macro ?macro_def @@ -138,20 +135,20 @@ static TCaseInfoInternal const KCases[] = { // To add new test cases, add new items to this array - ENTRY( "Set a process id playing", SetProcessIdPlayingL ), - ENTRY( "Set and move a process id playing", SetAndMoveProcessIdPlayingL ), - ENTRY( "Set and remove a process id playing", SetAndRemoveProcessIdPlayingL ), - ENTRY( "Set two and set first process id playing", SetTwoAndSetFirstProcessIdPlayingL ), - ENTRY( "Set a process id registered", SetProcessIdRegisteredL ), - ENTRY( "Set and move a process id registered", SetAndMoveProcessIdRegisteredL ), - ENTRY( "Set and remove a process id registered", SetAndRemoveProcessIdRegisteredL ), - ENTRY( "Set two and set first process id registered", SetTwoAndSetFirstProcessIdRegisteredL ), - ENTRY( "Set a process id stopped", SetProcessIdStoppedL ), - ENTRY( "Set and move a process id stopped", SetAndMoveProcessIdStoppedL ), - ENTRY( "Set and remove a process id stopped", SetAndRemoveProcessIdStoppedL ), - ENTRY( "Set two and set first process id stopped", SetTwoAndSetFirstProcessIdStoppedL ), - ENTRY( "Check out of range", CheckOutOfRangeL ), - ENTRY( "AddAPI Usage from Multiple Threads Simultaneously", MultiThreadTestSyncL ), + ENTRY( "Set a process id playing", &CTspClientTestModule::SetProcessIdPlayingL ), + ENTRY( "Set and move a process id playing", &CTspClientTestModule::SetAndMoveProcessIdPlayingL ), + ENTRY( "Set and remove a process id playing", &CTspClientTestModule::SetAndRemoveProcessIdPlayingL ), + ENTRY( "Set two and set first process id playing", &CTspClientTestModule::SetTwoAndSetFirstProcessIdPlayingL ), + ENTRY( "Set a process id registered", &CTspClientTestModule::SetProcessIdRegisteredL ), + ENTRY( "Set and move a process id registered", &CTspClientTestModule::SetAndMoveProcessIdRegisteredL ), + ENTRY( "Set and remove a process id registered", &CTspClientTestModule::SetAndRemoveProcessIdRegisteredL ), + ENTRY( "Set two and set first process id registered", &CTspClientTestModule::SetTwoAndSetFirstProcessIdRegisteredL ), + ENTRY( "Set a process id stopped", &CTspClientTestModule::SetProcessIdStoppedL ), + ENTRY( "Set and move a process id stopped", &CTspClientTestModule::SetAndMoveProcessIdStoppedL ), + ENTRY( "Set and remove a process id stopped", &CTspClientTestModule::SetAndRemoveProcessIdStoppedL ), + ENTRY( "Set two and set first process id stopped", &CTspClientTestModule::SetTwoAndSetFirstProcessIdStoppedL ), + ENTRY( "Check out of range", &CTspClientTestModule::CheckOutOfRangeL ), + ENTRY( "AddAPI Usage from Multiple Threads Simultaneously", &CTspClientTestModule::MultiThreadTestSyncL ), }; // Verify that case number is valid diff -r 51d936fe0d0c -r a003130def4e commonservices/PlatformEnv/data/estart_mds.txt --- a/commonservices/PlatformEnv/data/estart_mds.txt Fri May 28 14:18:28 2010 +0100 +++ b/commonservices/PlatformEnv/data/estart_mds.txt Thu Jun 24 11:22:10 2010 +0100 @@ -1,18 +1,21 @@ +# ============================================================================ +# Name estart_mds.txt +# Part of # -# Copyright (c) 2007 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". +# Description +# MDS Drive mappings that override default Symbian mappings +# Version # -# Initial Contributors: -# Nokia Corporation - initial contribution. -# -# Contributors: -# -# Description: -# +# Copyright (C) 2007 Nokia Corporation. +# This material, including documentation and any related +# computer programs, is protected by copyright controlled by +# Nokia Corporation. All rights are reserved. Copying, +# including reproducing, storing, adapting or translating, any +# or all of this material requires the prior written consent of +# Nokia Corporation. This material also contains confidential +# information which may not be disclosed to others without the +# prior written consent of Nokia Corporation. +# ============================================================================ E: 1 EFAT32 FAT 0 FS_FORMAT_CORRUPT # MEMORYCARD 1 Partition 0 diff -r 51d936fe0d0c -r a003130def4e commonservices/PlatformEnv/data/estart_mds_ms.txt --- a/commonservices/PlatformEnv/data/estart_mds_ms.txt Fri May 28 14:18:28 2010 +0100 +++ b/commonservices/PlatformEnv/data/estart_mds_ms.txt Thu Jun 24 11:22:10 2010 +0100 @@ -1,18 +1,21 @@ +# ============================================================================ +# Name estart_mds_ms.txt +# Part of # -# Copyright (c) 2008 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". +# Description +# MDS Drive mappings that override default Symbian mappings +# Version # -# Initial Contributors: -# Nokia Corporation - initial contribution. -# -# Contributors: -# -# Description: -# +# Copyright (C) 2008 Nokia Corporation. +# This material, including documentation and any related +# computer programs, is protected by copyright controlled by +# Nokia Corporation. All rights are reserved. Copying, +# including reproducing, storing, adapting or translating, any +# or all of this material requires the prior written consent of +# Nokia Corporation. This material also contains confidential +# information which may not be disclosed to others without the +# prior written consent of Nokia Corporation. +# ============================================================================ E: 1 EFAT32 FAT 0 FS_FORMAT_CORRUPT # MEMORYCARD 1 Partition 0 diff -r 51d936fe0d0c -r a003130def4e commonservices/PlatformEnv/disknotifyhandler/tsrc/disknotifyhandlertest/init/disknotifyhandlertest.ini --- a/commonservices/PlatformEnv/disknotifyhandler/tsrc/disknotifyhandlertest/init/disknotifyhandlertest.ini Fri May 28 14:18:28 2010 +0100 +++ b/commonservices/PlatformEnv/disknotifyhandler/tsrc/disknotifyhandlertest/init/disknotifyhandlertest.ini Thu Jun 24 11:22:10 2010 +0100 @@ -1,3 +1,15 @@ +# 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" +# 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: +# # # This is STIFTestFramework initialization file # Comment lines start with '#'-character. diff -r 51d936fe0d0c -r a003130def4e commonservices/PlatformEnv/platformver/tsrc/platformvertest/init/platformvertest.ini --- a/commonservices/PlatformEnv/platformver/tsrc/platformvertest/init/platformvertest.ini Fri May 28 14:18:28 2010 +0100 +++ b/commonservices/PlatformEnv/platformver/tsrc/platformvertest/init/platformvertest.ini Thu Jun 24 11:22:10 2010 +0100 @@ -1,8 +1,8 @@ # -# 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 the License "Eclipse Public License v1.0" +# 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". # diff -r 51d936fe0d0c -r a003130def4e commonservices/PlatformEnv/platformver/tsrc/platformvertest/src/platformvertestcases.cpp --- a/commonservices/PlatformEnv/platformver/tsrc/platformvertest/src/platformvertestcases.cpp Fri May 28 14:18:28 2010 +0100 +++ b/commonservices/PlatformEnv/platformver/tsrc/platformvertest/src/platformvertestcases.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -134,8 +134,8 @@ { // To add new test cases, add new items to this array //FUNCENTRY( PrintTest ), - ENTRY( "[PlatformVer] GetPlatformVersion", GetPlatformVersion ), - OOM_ENTRY( "[OOM_PlatformVer] GetPlatformVersion", GetPlatformVersion ,ETrue,1,5) + ENTRY( "[PlatformVer] GetPlatformVersion", &CPlatformVerTest::GetPlatformVersion ), + OOM_ENTRY( "[OOM_PlatformVer] GetPlatformVersion", &CPlatformVerTest::GetPlatformVersion ,ETrue,1,5) // Example how to use OOM functionality //OOM_ENTRY( "Loop test with OOM", LoopTest, ETrue, 2, 3), diff -r 51d936fe0d0c -r a003130def4e commonservices/PlatformEnv/sysversioninfo/tsrc/sysutiltests/init/sysutiltests.ini --- a/commonservices/PlatformEnv/sysversioninfo/tsrc/sysutiltests/init/sysutiltests.ini Fri May 28 14:18:28 2010 +0100 +++ b/commonservices/PlatformEnv/sysversioninfo/tsrc/sysutiltests/init/sysutiltests.ini Thu Jun 24 11:22:10 2010 +0100 @@ -1,8 +1,8 @@ # -# 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 the License "Eclipse Public License v1.0" +# 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". # diff -r 51d936fe0d0c -r a003130def4e commonservices/PlatformEnv/sysversioninfo/tsrc/sysutiltests/src/sysutiltests.cpp --- a/commonservices/PlatformEnv/sysversioninfo/tsrc/sysutiltests/src/sysutiltests.cpp Fri May 28 14:18:28 2010 +0100 +++ b/commonservices/PlatformEnv/sysversioninfo/tsrc/sysutiltests/src/sysutiltests.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -110,21 +110,21 @@ { // To add new test cases, add new items to this array - ENTRY( "[SYSUTIL] GetVersionInfo test", CSysUtiltests::GetVersionInfo ), - ENTRY( "[SYSUTIL] GetVersionInfo2 test", CSysUtiltests::GetVersionInfo2 ), - ENTRY( "[SYSUTIL] GetOSVersionInfo test", CSysUtiltests::GetOSVersionInfo ), - ENTRY( "[SYSUTIL] GetProductVersionInfo test", CSysUtiltests::GetProductVersionInfo ), - ENTRY( "[SYSUTIL] GetOSVersionInfo2 test", CSysUtiltests::GetOSVersionInfo2 ), - ENTRY( "[SYSUTIL] GetProductVersionInfo2 test", CSysUtiltests::GetProductVersionInfo2 ), - ENTRY( "[SYSUTIL] GetProductCode test", CSysUtiltests::GetProductCode ), + ENTRY( "[SYSUTIL] GetVersionInfo test", &CSysUtiltests::GetVersionInfo ), + ENTRY( "[SYSUTIL] GetVersionInfo2 test", &CSysUtiltests::GetVersionInfo2 ), + ENTRY( "[SYSUTIL] GetOSVersionInfo test", &CSysUtiltests::GetOSVersionInfo ), + ENTRY( "[SYSUTIL] GetProductVersionInfo test", &CSysUtiltests::GetProductVersionInfo ), + ENTRY( "[SYSUTIL] GetOSVersionInfo2 test", &CSysUtiltests::GetOSVersionInfo2 ), + ENTRY( "[SYSUTIL] GetProductVersionInfo2 test", &CSysUtiltests::GetProductVersionInfo2 ), + ENTRY( "[SYSUTIL] GetProductCode test", &CSysUtiltests::GetProductCode ), - OOM_ENTRY( "[OOM_SYSUTIL] GetVersionInfo test", CSysUtiltests::GetVersionInfo ,ETrue,1,5 ), - OOM_ENTRY( "[OOM_SYSUTIL] GetVersionInfo2 test", CSysUtiltests::GetVersionInfo2,ETrue,1,5 ), - OOM_ENTRY( "[OOM_SYSUTIL] GetOSVersionInfo test", CSysUtiltests::GetOSVersionInfo ,ETrue,1,5), - OOM_ENTRY( "[OOM_SYSUTIL] GetProductVersionInfo test", CSysUtiltests::GetProductVersionInfo ,ETrue,1,5), - OOM_ENTRY( "[OOM_SYSUTIL] GetOSVersionInfo2 test", CSysUtiltests::GetOSVersionInfo2 ,ETrue,1,5), - OOM_ENTRY( "[OOM_SYSUTIL] GetProductVersionInfo2 test", CSysUtiltests::GetProductVersionInfo2 ,ETrue,1,5), - OOM_ENTRY( "[OOM_SYSUTIL] GetProductCode test", CSysUtiltests::GetProductCode ,ETrue,1,5) + OOM_ENTRY( "[OOM_SYSUTIL] GetVersionInfo test", &CSysUtiltests::GetVersionInfo ,ETrue,1,5 ), + OOM_ENTRY( "[OOM_SYSUTIL] GetVersionInfo2 test", &CSysUtiltests::GetVersionInfo2,ETrue,1,5 ), + OOM_ENTRY( "[OOM_SYSUTIL] GetOSVersionInfo test", &CSysUtiltests::GetOSVersionInfo ,ETrue,1,5), + OOM_ENTRY( "[OOM_SYSUTIL] GetProductVersionInfo test", &CSysUtiltests::GetProductVersionInfo ,ETrue,1,5), + OOM_ENTRY( "[OOM_SYSUTIL] GetOSVersionInfo2 test", &CSysUtiltests::GetOSVersionInfo2 ,ETrue,1,5), + OOM_ENTRY( "[OOM_SYSUTIL] GetProductVersionInfo2 test", &CSysUtiltests::GetProductVersionInfo2 ,ETrue,1,5), + OOM_ENTRY( "[OOM_SYSUTIL] GetProductCode test", &CSysUtiltests::GetProductCode ,ETrue,1,5) }; diff -r 51d936fe0d0c -r a003130def4e commonservices/PlatformEnv/tsrc/platformenvtest/init/platformenvtest.ini --- a/commonservices/PlatformEnv/tsrc/platformenvtest/init/platformenvtest.ini Fri May 28 14:18:28 2010 +0100 +++ b/commonservices/PlatformEnv/tsrc/platformenvtest/init/platformenvtest.ini Thu Jun 24 11:22:10 2010 +0100 @@ -1,8 +1,8 @@ # -# 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 the License "Eclipse Public License v1.0" +# 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". # diff -r 51d936fe0d0c -r a003130def4e commonservices/PlatformEnv/tsrc/platformenvtest/src/PlatformEnvTestCases.cpp --- a/commonservices/PlatformEnv/tsrc/platformenvtest/src/PlatformEnvTestCases.cpp Fri May 28 14:18:28 2010 +0100 +++ b/commonservices/PlatformEnv/tsrc/platformenvtest/src/PlatformEnvTestCases.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -132,35 +132,35 @@ { // To add new test cases, add new items to this array //FUNCENTRY( PrintTest ), - ENTRY( "[PLATFORMENV] PathTest", PathTest ), - ENTRY( "[PLATFORMENV] GetPathTest", GetPathTest ), - ENTRY( "[PLATFORMENV] GetRootPathTest", GetRootPathTest ), - ENTRY( "[PLATFORMENV] GetFullPathTest", GetFullPathTest ), - ENTRY( "[PLATFORMENV] PathTypeTest", PathTypeTest ), - ENTRY( "[PLATFORMENV] GetListOfPathsTest", GetListOfPathsTest ), - ENTRY( "[PLATFORMENV] GetDefaultDriveTest", GetDefaultDriveTest ), - ENTRY( "[PLATFORMENV] GetDefaultDriveTest2", GetDefaultDriveTest2 ), - ENTRY( "[PLATFORMENV] GetDriveStatusTest", GetDriveStatusTest ), - ENTRY( "[PLATFORMENV] GetUserVisibleDrivesTest", GetUserVisibleDrivesTest ), - ENTRY( "[PLATFORMENV] StripUserHiddenDrivesTest", StripUserHiddenDrivesTest ), - ENTRY( "[PLATFORMENV] DriveCountTest", DriveCountTest ), - ENTRY( "[PLATFORMENV] DriveArrayTest", DriveArrayTest ), - ENTRY( "[PLATFORMENV] GetUserVisibleDrivesTest2", GetUserVisibleDrivesTest2 ), + ENTRY( "[PLATFORMENV] PathTest", &CPlatformEnvTest::PathTest ), + ENTRY( "[PLATFORMENV] GetPathTest", &CPlatformEnvTest::GetPathTest ), + ENTRY( "[PLATFORMENV] GetRootPathTest", &CPlatformEnvTest::GetRootPathTest ), + ENTRY( "[PLATFORMENV] GetFullPathTest", &CPlatformEnvTest::GetFullPathTest ), + ENTRY( "[PLATFORMENV] PathTypeTest", &CPlatformEnvTest::PathTypeTest ), + ENTRY( "[PLATFORMENV] GetListOfPathsTest", &CPlatformEnvTest::GetListOfPathsTest ), + ENTRY( "[PLATFORMENV] GetDefaultDriveTest", &CPlatformEnvTest::GetDefaultDriveTest ), + ENTRY( "[PLATFORMENV] GetDefaultDriveTest2", &CPlatformEnvTest::GetDefaultDriveTest2 ), + ENTRY( "[PLATFORMENV] GetDriveStatusTest", &CPlatformEnvTest::GetDriveStatusTest ), + ENTRY( "[PLATFORMENV] GetUserVisibleDrivesTest", &CPlatformEnvTest::GetUserVisibleDrivesTest ), + ENTRY( "[PLATFORMENV] StripUserHiddenDrivesTest", &CPlatformEnvTest::StripUserHiddenDrivesTest ), + ENTRY( "[PLATFORMENV] DriveCountTest", &CPlatformEnvTest::DriveCountTest ), + ENTRY( "[PLATFORMENV] DriveArrayTest", &CPlatformEnvTest::DriveArrayTest ), + ENTRY( "[PLATFORMENV] GetUserVisibleDrivesTest2", &CPlatformEnvTest::GetUserVisibleDrivesTest2 ), - OOM_ENTRY( "[OOM_PLATFORMENV] PathTest", PathTest ,ETrue,1,5), - OOM_ENTRY( "[OOM_PLATFORMENV] GetPathTest", GetPathTest ,ETrue,1,5), - OOM_ENTRY( "[OOM_PLATFORMENV] GetRootPathTest", GetRootPathTest ,ETrue,1,5), - OOM_ENTRY( "[OOM_PLATFORMENV] GetFullPathTest", GetFullPathTest ,ETrue,1,5), - OOM_ENTRY( "[OOM_PLATFORMENV] PathTypeTest", PathTypeTest ,ETrue,1,5), - OOM_ENTRY( "[OOM_PLATFORMENV] GetListOfPathsTest", GetListOfPathsTest,ETrue,1,5 ), - OOM_ENTRY( "[OOM_PLATFORMENV] GetDefaultDriveTest", GetDefaultDriveTest ,ETrue,1,5), - OOM_ENTRY( "[OOM_PLATFORMENV] GetDefaultDriveTest2", GetDefaultDriveTest2 ,ETrue,1,5), - OOM_ENTRY( "[OOM_PLATFORMENV] GetDriveStatusTest", GetDriveStatusTest ,ETrue,1,5), - OOM_ENTRY( "[OOM_PLATFORMENV] GetUserVisibleDrivesTest", GetUserVisibleDrivesTest,ETrue,1,5 ), - OOM_ENTRY( "[OOM_PLATFORMENV] StripUserHiddenDrivesTest", StripUserHiddenDrivesTest ,ETrue,1,5), - OOM_ENTRY( "[OOM_PLATFORMENV] DriveCountTest", DriveCountTest ,ETrue,1,5), - OOM_ENTRY( "[OOM_PLATFORMENV] DriveArrayTest", DriveArrayTest ,ETrue,1,5), - OOM_ENTRY( "[OOM_PLATFORMENV] GetUserVisibleDrivesTest2", GetUserVisibleDrivesTest2 ,ETrue,1,5) + OOM_ENTRY( "[OOM_PLATFORMENV] PathTest", &CPlatformEnvTest::PathTest ,ETrue,1,5), + OOM_ENTRY( "[OOM_PLATFORMENV] GetPathTest", &CPlatformEnvTest::GetPathTest ,ETrue,1,5), + OOM_ENTRY( "[OOM_PLATFORMENV] GetRootPathTest", &CPlatformEnvTest::GetRootPathTest ,ETrue,1,5), + OOM_ENTRY( "[OOM_PLATFORMENV] GetFullPathTest", &CPlatformEnvTest::GetFullPathTest ,ETrue,1,5), + OOM_ENTRY( "[OOM_PLATFORMENV] PathTypeTest", &CPlatformEnvTest::PathTypeTest ,ETrue,1,5), + OOM_ENTRY( "[OOM_PLATFORMENV] GetListOfPathsTest", &CPlatformEnvTest::GetListOfPathsTest,ETrue,1,5 ), + OOM_ENTRY( "[OOM_PLATFORMENV] GetDefaultDriveTest", &CPlatformEnvTest::GetDefaultDriveTest ,ETrue,1,5), + OOM_ENTRY( "[OOM_PLATFORMENV] GetDefaultDriveTest2", &CPlatformEnvTest::GetDefaultDriveTest2 ,ETrue,1,5), + OOM_ENTRY( "[OOM_PLATFORMENV] GetDriveStatusTest", &CPlatformEnvTest::GetDriveStatusTest ,ETrue,1,5), + OOM_ENTRY( "[OOM_PLATFORMENV] GetUserVisibleDrivesTest", &CPlatformEnvTest::GetUserVisibleDrivesTest,ETrue,1,5 ), + OOM_ENTRY( "[OOM_PLATFORMENV] StripUserHiddenDrivesTest", &CPlatformEnvTest::StripUserHiddenDrivesTest ,ETrue,1,5), + OOM_ENTRY( "[OOM_PLATFORMENV] DriveCountTest", &CPlatformEnvTest::DriveCountTest ,ETrue,1,5), + OOM_ENTRY( "[OOM_PLATFORMENV] DriveArrayTest", &CPlatformEnvTest::DriveArrayTest ,ETrue,1,5), + OOM_ENTRY( "[OOM_PLATFORMENV] GetUserVisibleDrivesTest2", &CPlatformEnvTest::GetUserVisibleDrivesTest2 ,ETrue,1,5) // Example how to use OOM functionality //OOM_ENTRY( "Loop test with OOM", LoopTest, ETrue, 2, 3), diff -r 51d936fe0d0c -r a003130def4e commonservices/activitymanager/group/activitymanager.mrp --- a/commonservices/activitymanager/group/activitymanager.mrp Fri May 28 14:18:28 2010 +0100 +++ b/commonservices/activitymanager/group/activitymanager.mrp Thu Jun 24 11:22:10 2010 +0100 @@ -1,3 +1,19 @@ +# +# Copyright (c) 2009 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: +# + component activitymanager source \sf\os\devicesrv\commonservices\activitymanager binary \sf\os\devicesrv\commonservices\activitymanager\group all diff -r 51d936fe0d0c -r a003130def4e commonservices/commonengine/conf/commonengine.confml Binary file commonservices/commonengine/conf/commonengine.confml has changed diff -r 51d936fe0d0c -r a003130def4e commonservices/commonengine/conf/commonengine_1020503B.crml Binary file commonservices/commonengine/conf/commonengine_1020503B.crml has changed diff -r 51d936fe0d0c -r a003130def4e commonservices/sysutil/group/sysutil.mrp --- a/commonservices/sysutil/group/sysutil.mrp Fri May 28 14:18:28 2010 +0100 +++ b/commonservices/sysutil/group/sysutil.mrp Thu Jun 24 11:22:10 2010 +0100 @@ -1,3 +1,19 @@ +# +# Copyright (c) 2009 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: +# + component sysutil source \sf\os\devicesrv\commonservices\sysutil binary \sf\os\devicesrv\commonservices\sysutil\group all diff -r 51d936fe0d0c -r a003130def4e devicesrv_info/devicesrv_metadata/devicesrv_metadata.mrp --- a/devicesrv_info/devicesrv_metadata/devicesrv_metadata.mrp Fri May 28 14:18:28 2010 +0100 +++ b/devicesrv_info/devicesrv_metadata/devicesrv_metadata.mrp Thu Jun 24 11:22:10 2010 +0100 @@ -1,3 +1,19 @@ +# +# Copyright (c) 2009 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: +# + component devicesrv_metadata source \sf\os\devicesrv\devicesrv_info\devicesrv_metadata source \sf\os\devicesrv\package_definition.xml diff -r 51d936fe0d0c -r a003130def4e devicesrv_plat/accessory_key_event_handling_api/inc/RemConKeyEventData.h --- a/devicesrv_plat/accessory_key_event_handling_api/inc/RemConKeyEventData.h Fri May 28 14:18:28 2010 +0100 +++ b/devicesrv_plat/accessory_key_event_handling_api/inc/RemConKeyEventData.h Thu Jun 24 11:22:10 2010 +0100 @@ -22,7 +22,9 @@ #define TREMCONKEYEVENTDATA_H // INCLUDES +#ifndef __KERNEL_MODE__ #include +#endif // CONSTANTS diff -r 51d936fe0d0c -r a003130def4e devicesrv_plat/accessory_policy_usb_audio_api/inc/accpolaudiocontrolbase.h --- a/devicesrv_plat/accessory_policy_usb_audio_api/inc/accpolaudiocontrolbase.h Fri May 28 14:18:28 2010 +0100 +++ b/devicesrv_plat/accessory_policy_usb_audio_api/inc/accpolaudiocontrolbase.h Thu Jun 24 11:22:10 2010 +0100 @@ -49,7 +49,7 @@ /** * Destructor. */ - virtual ~CAccPolAudioControlBase(); + IMPORT_C virtual ~CAccPolAudioControlBase(); /** * Assign operator for audio control base class. @@ -112,13 +112,13 @@ /** * C++ default constructor. */ - CAccPolAudioControlBase( TTopologyConObjectType aObjectType, + IMPORT_C CAccPolAudioControlBase( TTopologyConObjectType aObjectType, CAccPolObjectCon* aObject = NULL ); /** * C++ default constructor. */ - CAccPolAudioControlBase( TTopologyConObjectType aObjectType, + IMPORT_C CAccPolAudioControlBase( TTopologyConObjectType aObjectType, TUint32 aChannel ); private: diff -r 51d936fe0d0c -r a003130def4e devicesrv_plat/accessory_policy_usb_audio_api/inc/accpolaudiounitbase.h --- a/devicesrv_plat/accessory_policy_usb_audio_api/inc/accpolaudiounitbase.h Fri May 28 14:18:28 2010 +0100 +++ b/devicesrv_plat/accessory_policy_usb_audio_api/inc/accpolaudiounitbase.h Thu Jun 24 11:22:10 2010 +0100 @@ -37,7 +37,7 @@ /** * Destructor. */ - virtual ~CAccPolAudioUnitBase(); + IMPORT_C virtual ~CAccPolAudioUnitBase(); /** * Assign operator for audio unit base class. diff -r 51d936fe0d0c -r a003130def4e devicesrv_plat/accessory_policy_usb_audio_api/inc/accpolterminalbase.h --- a/devicesrv_plat/accessory_policy_usb_audio_api/inc/accpolterminalbase.h Fri May 28 14:18:28 2010 +0100 +++ b/devicesrv_plat/accessory_policy_usb_audio_api/inc/accpolterminalbase.h Thu Jun 24 11:22:10 2010 +0100 @@ -32,7 +32,7 @@ /** * Destructor. */ - virtual ~CAccPolTerminalBase(); + IMPORT_C virtual ~CAccPolTerminalBase(); /** * Assign operator for audio terminal base class. diff -r 51d936fe0d0c -r a003130def4e devicesrv_plat/accessory_policy_utility_api/inc/accpolobjectbase.h --- a/devicesrv_plat/accessory_policy_utility_api/inc/accpolobjectbase.h Fri May 28 14:18:28 2010 +0100 +++ b/devicesrv_plat/accessory_policy_utility_api/inc/accpolobjectbase.h Thu Jun 24 11:22:10 2010 +0100 @@ -38,7 +38,7 @@ /** * Destructor. */ - virtual ~CAccPolObjectBase(); + IMPORT_C virtual ~CAccPolObjectBase(); /** * Sets the object type. diff -r 51d936fe0d0c -r a003130def4e devicesrv_plat/accessory_policy_utility_api/inc/accpolobjectcon.h --- a/devicesrv_plat/accessory_policy_utility_api/inc/accpolobjectcon.h Fri May 28 14:18:28 2010 +0100 +++ b/devicesrv_plat/accessory_policy_utility_api/inc/accpolobjectcon.h Thu Jun 24 11:22:10 2010 +0100 @@ -34,7 +34,7 @@ /** * Destructor. */ - virtual ~CAccPolObjectCon(); + IMPORT_C virtual ~CAccPolObjectCon(); /** * Resets the object container. diff -r 51d936fe0d0c -r a003130def4e devicesrv_plat/display_language_definition_api/inc/CommonEngineDomainCRKeys.h --- a/devicesrv_plat/display_language_definition_api/inc/CommonEngineDomainCRKeys.h Fri May 28 14:18:28 2010 +0100 +++ b/devicesrv_plat/display_language_definition_api/inc/CommonEngineDomainCRKeys.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2004-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" @@ -41,4 +41,26 @@ **/ const TUint32 KGSDisplayTxtLang = 0x00000001; +/** +* Collation code, integer value +* +* Possible values are: +* 0 (automatic) +* Valid Symbian OS collation(language) code +* +* Default value: 0 +**/ +const TUint32 KGSCollation = 0x00000002; + +/** +* Region code, integer value +* +* Possible values are: +* 0 (automatic) +* Valid Symbian OS region code +* +* Default value: 0 +**/ +const TUint32 KGSRegion = 0x00000003; + #endif // COMMONENGINEDOMAINCRKEYS_H diff -r 51d936fe0d0c -r a003130def4e devicesrv_plat/tv_out_config_api/inc/tvoutconfig.h --- a/devicesrv_plat/tv_out_config_api/inc/tvoutconfig.h Fri May 28 14:18:28 2010 +0100 +++ b/devicesrv_plat/tv_out_config_api/inc/tvoutconfig.h Thu Jun 24 11:22:10 2010 +0100 @@ -124,18 +124,18 @@ //-- Standby Figure --------------------------------------------------- - /** Returns maximum size of TStandByFigure.iTable in bytes. + /** Returns maximum size of TStandByFigure.iTable in bytes. Deprecated since TB10.2. @param aMaxFigureSize Max size of standByFigure in bytes @return KErrNotSupported if not supported. */ virtual TInt StandByFigureMaxSizeInBytes(TUint& aMaxFigureSize) = 0; - /** Sets user defined figure to show on tv. + /** Sets user defined figure to show on tv. Deprecated since TB10.2. @pre SetConfig() is called without errors. @param aStandByFigure TStandByFigure object. @return KErrNone if all success */ virtual TInt StandByFigure(const TStandByFigure& aStandByFigure) = 0; - /** Gets user defined figure to show on tv. + /** Gets user defined figure to show on tv. Deprecated since TB10.2. @see CTvOutConfig::StandByFigureMaxSizeInBytes for getting size of TStandByFigure.iTable. @pre StandByFigure() is called without errors. @param aStandByFigure TStandByFigure object. diff -r 51d936fe0d0c -r a003130def4e devicesrv_plat/tv_out_config_api/inc/tvoutconfigdef.h --- a/devicesrv_plat/tv_out_config_api/inc/tvoutconfigdef.h Fri May 28 14:18:28 2010 +0100 +++ b/devicesrv_plat/tv_out_config_api/inc/tvoutconfigdef.h Thu Jun 24 11:22:10 2010 +0100 @@ -431,11 +431,11 @@ ///ETrue if iLeftTopCorner&iRightBottomCorner are used instead of iHorizontalOverScan&iVerticalOverScan TBool iCornerPointsUsed; - /** Overscan in pixels. Set Left Top corner point. Zero when Tv supports overscan (0=underscan enabled) + /** Overscan in pixels. Set Left Top corner point. Zero when Tv supports underscan (0=underscan enabled) This should be "point" to active image area. Cannot point out of active image area. Cannot across with iRightBottomCorner. And this allows overscan and position tuning. */ TPoint iLeftTopCorner; - /** Overscan in pixels. Set Right Bottom corner point (offset from left top corner). + /** Overscan in pixels. Set Right Bottom corner point (offset from Tv's left top corner). @see iLeftTopCorner Driver returns KErrExtensionNotSupported if driver does not support this settings. If driver supports centralizing only, then this has to be same as iLeftTopCorner. */ @@ -571,17 +571,18 @@ ///Vertical sync polarity, EFalse=Negative, ETrue=Positive. With CEA mode 1 this is EFalse. TBool iVerticalSyncPolarity; /** Wanted pixel repeat, can be used if mode supports. Otherwise horisontal resolution can be increased also. + Value minus one. 0 -> sent once. 9 -> pixel sent 10 times. 0 when repeat is disabled. With CEA mode 1 this is 0. */ TUint8 iPixelRepeat; /** ETrue if Tv supports underscan, and it is enabled (to be always enabled when supported/possible), EFalse otherwise */ TBool iUnderscanEnabled; - /** Overscan in pixels. Set Left Top corner point. Zero when Tv supports overscan (0=underscan enabled) + /** Overscan in pixels. Set Left Top corner point. Zero when Tv supports underscan (0=underscan enabled) This should be "point" to active image area. Cannot point out of active image area. Cannot across with iRightBottomCorner. And this allows overscan and position tuning. */ TPoint iLeftTopCorner; - /** Overscan in pixels. Set Right Bottom corner point (offset from left top corner). + /** Overscan in pixels. Set Right Bottom corner point (offset from Tv's left top corner). @see iLeftTopCorner. Has not affect if iCentralizingOnly==ETrue. */ TPoint iRightBottomCorner; @@ -614,7 +615,13 @@ }; /** -Standby Figure Format +Standby Figure Format. Fully deprecated since TB10.2. +Note for TB9.2 and TB10.1: +- iLeftTopColumn & iLeftTopRow are deprecated and those can be ignored. +- the icon of iColumns x iRows is scaled by (iScaleNumeratorWidth/iScaleDenominatorWidth) and (iScaleNumeratorHeight/iScaleDenominatorHeight) +- the resulting icon is centered to the layer's extent which contained the protected surface +- the scaled and centered icon is clipped against layer extent and screen size. +- pixels inside the layer's extent not covered by the scaled and centered icon are filled with iBackGroundColor. */ class TStandByFigure { @@ -659,9 +666,9 @@ TUint16 iScaleNumeratorHeight; ///Height scaler denominator TUint16 iScaleDenominatorHeight; - ///Start column + ///Start column. Deprecated! TUint16 iLeftTopColumn; - ///Start row + ///Start row. Deprecated! TUint16 iLeftTopRow; ///Back ground color. Input RGB565 RRRR RGGG GGGB BBBB. TUint16 iBackGroundColor; diff -r 51d936fe0d0c -r a003130def4e devicesrv_pub/common_platform_security_definitions_api/inc/data_caged_locations.mk --- a/devicesrv_pub/common_platform_security_definitions_api/inc/data_caged_locations.mk Fri May 28 14:18:28 2010 +0100 +++ b/devicesrv_pub/common_platform_security_definitions_api/inc/data_caged_locations.mk Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ # -# Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). +# Copyright (c) 2002-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,4 +44,5 @@ DC_BOOTDATA_DIR=\resource\bootdata DC_SKINS_DIR=\private\10207114 +DC_QT_TRANSLATIONS_DIR=\resource\qt\translations diff -r 51d936fe0d0c -r a003130def4e devicesrv_pub/common_platform_security_definitions_api/inc/data_caging_path_literals.hrh --- a/devicesrv_pub/common_platform_security_definitions_api/inc/data_caging_path_literals.hrh Fri May 28 14:18:28 2010 +0100 +++ b/devicesrv_pub/common_platform_security_definitions_api/inc/data_caging_path_literals.hrh Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-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" @@ -58,6 +58,7 @@ _LIT(KDC_WINDOW_SERVER_INI_DIR,"\\private\\10003b20\\"); // Window server INI _LIT(KDC_SKINS_DIR,"\\private\\10207114\\"); // Skins _LIT(KDC_BOOTDATA_DIR,"\\resource\\bootdata\\"); // Bootdata +_LIT(KDC_QT_TRANSLATIONS_DIR,"\\resource\\qt\\translations\\"); //Qt Localization #endif diff -r 51d936fe0d0c -r a003130def4e devicesrv_pub/common_platform_security_definitions_api/inc/data_caging_paths.hrh --- a/devicesrv_pub/common_platform_security_definitions_api/inc/data_caging_paths.hrh Fri May 28 14:18:28 2010 +0100 +++ b/devicesrv_pub/common_platform_security_definitions_api/inc/data_caging_paths.hrh Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-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" @@ -57,6 +57,7 @@ #define WINDOW_SERVER_INI_DIR private/10003b20 #define SKINS_DIR private/10207114 #define BOOTDATA_DIR resource/bootdata +#define QT_TRANSLATIONS_DIR resource/qt/translations #endif diff -r 51d936fe0d0c -r a003130def4e devicesrv_pub/common_platform_security_definitions_api/inc/data_caging_paths_for_iby.hrh --- a/devicesrv_pub/common_platform_security_definitions_api/inc/data_caging_paths_for_iby.hrh Fri May 28 14:18:28 2010 +0100 +++ b/devicesrv_pub/common_platform_security_definitions_api/inc/data_caging_paths_for_iby.hrh Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-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" @@ -57,7 +57,7 @@ define WINDOW_SERVER_INI_DIR private/10003b20 define SKINS_DIR private/10207114 define BOOTDATA_DIR resource/bootdata - +define QT_TRANSLATIONS_DIR resource/qt/translations #endif diff -r 51d936fe0d0c -r a003130def4e devicesrv_pub/common_platform_security_definitions_api/inc/data_caging_paths_strings.hrh --- a/devicesrv_pub/common_platform_security_definitions_api/inc/data_caging_paths_strings.hrh Fri May 28 14:18:28 2010 +0100 +++ b/devicesrv_pub/common_platform_security_definitions_api/inc/data_caging_paths_strings.hrh Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-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" @@ -57,5 +57,6 @@ #define WINDOW_SERVER_INI_DIR "\\private\\10003b20" #define SKINS_DIR "\\private\\10207114" #define BOOTDATA_DIR "\\resource\\bootdata" +#define QT_TRANSLATIONS_DIR "\\resource\\qt\\translations" #endif diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticseffectdatagetterfw/group/bld.inf --- a/hwrmhaptics/hapticseffectdatagetterfw/group/bld.inf Fri May 28 14:18:28 2010 +0100 +++ b/hwrmhaptics/hapticseffectdatagetterfw/group/bld.inf Thu Jun 24 11:22:10 2010 +0100 @@ -22,7 +22,6 @@ PRJ_EXPORTS -#include "../plugins/hapticsivtgetterplugin/group/bld.inf" PRJ_MMPFILES hwrmhapticseffectdatagetterfw.mmp diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/data/20021204.rss --- a/hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/data/20021204.rss Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -/* -* Copyright (c) 2009 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: Haptics effect data getter plugin ECom resource file -* -*/ - -#include - -RESOURCE REGISTRY_INFO theInfo - { - dll_uid = 0x20021204; - interfaces = - { - INTERFACE_INFO - { - interface_uid = 0x20021202; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = 0x20021203; - version_no = 1; - display_name = ""; - default_data = ""; - opaque_data = ""; - } - }; - } - }; - } - -// End of file diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/group/bld.inf --- a/hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/group/bld.inf Fri May 28 14:18:28 2010 +0100 +++ b/hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/group/bld.inf Thu Jun 24 11:22:10 2010 +0100 @@ -1,27 +0,0 @@ -/* -* Copyright (c) 2008 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: Build file for effect data getter ECom plugin. -* -*/ - -#include - -PRJ_PLATFORMS -DEFAULT - -PRJ_EXPORTS -../rom/hwrmhapticsivtgetterplugin.iby CORE_OS_LAYER_IBY_EXPORT_PATH(hwrmhapticsivtgetterplugin.iby) - -PRJ_MMPFILES -hwrmhapticsivtgetterplugin.mmp diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/group/hwrmhapticsivtgetterplugin.mmp --- a/hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/group/hwrmhapticsivtgetterplugin.mmp Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -/* -* Copyright (c) 2008 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: Project definition file for effect data getter ECom plugin. -* -*/ - -#include -#include - -TARGET hwrmhapticsivtgetterplugin.dll -TARGETTYPE PLUGIN -UID 0x10009D8D 0x20021204 - -CAPABILITY CAP_ECOM_PLUGIN -VENDORID VID_DEFAULT - -SOURCEPATH ../src -SOURCE hwrmhapticsivtgetter.cpp -SOURCE basisivtgetters.cpp -SOURCE ivthelper.cpp -SOURCE timelineivtgetters.cpp - -USERINCLUDE ../inc -USERINCLUDE ../../../../inc - -// Default system include paths for osext layer modules. -OS_LAYER_SYSTEMINCLUDE -SYSTEMINCLUDE /epoc32/include/stdapis - -SOURCEPATH ../data -START RESOURCE 20021204.rss -TARGETPATH ECOM_RESOURCE_DIR -TARGET hwrmhapticsivtgetterplugin.rsc -END - -LIBRARY euser.lib -LIBRARY efsrv.lib -LIBRARY estlib.lib -LIBRARY ecom.lib -LIBRARY hwrmhapticseffectdatagetterfw.lib diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/inc/basisivtgetters.h --- a/hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/inc/basisivtgetters.h Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -/* -* Copyright (c) 2008 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: Basis effect internal getters header file. -* -*/ - -#ifndef BASISIVTGETTERS_H -#define BASISIVTGETTERS_H - - -#include "ivtinternal.h" - - -/** - * Utility class for getting various basis effect specific information - * from data buffer. - */ -class BasisIVTGetters - { -public: - - /** - * Method for getting basis effect properties. - * - * @param aMsg Pointer to the data buffer containing the - * effect definition. - * @param aDuration Duration of the effect (out param). - * @param aStartDelay Start delay of the effect (out param). - * @param aMagnitude Magnitude of the effect (out param). - * @param aStartFlag Start flag of the effect (out param). - * @param aType Type of the effect (out param). - * @param aFreqPer Period of the effect (out param). - * @param aControlMode Control mode of the effect (out param). - */ - static void VibeIVTGetPeriodic( - const TUint8* aMsg, - TVibeIVTMessageTime* aDuration, - TVibeIVTMessageTime* aStartDelay, - TVibeIVTMagnitude* aMagnitude, - TInt* aStartFlag, - TInt* aType, - TVibeIVTFreqPer* aFreqPer, - TInt* aControlMode ); - - /** - * Method for getting basis effect modifier (envelope) properties. - * - * @param aMsg Pointer to the data buffer containing the - * effect definition. - * @param aImpulseTime Impulse (attack) time of the effect - * (out param). - * @param aFadeTime Fade time of the effect (out param). - * @param aImpulseLevel Impulse (attack) level of the effect - * (out param). - * @param aFadeLevel Fade level of the effect (out param). - */ - static void VibeIVTGetPeriodicModifier( - const TUint8* aMsg, - TVibeIVTMessageTime* aImpulseTime, - TVibeIVTMessageTime* aFadeTime, - TVibeIVTMagnitude* aImpulseLevel, - TVibeIVTMagnitude* aFadeLevel ); - -}; - -#endif /* BASISIVTGETTERS_H */ diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/inc/hwrmhapticsivtgetter.h --- a/hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/inc/hwrmhapticsivtgetter.h Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,123 +0,0 @@ -/* -* Copyright (c) 2008 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: Plugin for reading effect information from IVT effect data. -* -*/ - -#ifndef C_HWRMHAPTICSIVTGETTER_H -#define C_HWRMHAPTICSIVTGETTER_H - -#include - -#include -#include "ivtinternal.h" - -/** - * Ecom plugin for getting haptics ivt data. - * - * @lib hapticsivtgetterplugin.lib - * @since S60 5.1 - */ -NONSHARABLE_CLASS( CHWRMHapticsIVTGetter ): public CHWRMHapticsEffectDataGetter - { -public: - - /** - * 2-phased constructor. - * @return An instance of haptics ivt getter. - */ - static CHWRMHapticsIVTGetter* NewL(); - - /** - * Destructor. - */ - virtual ~CHWRMHapticsIVTGetter(); - -public: // From CHWRMHapticsEffectDataGetter - - /** - * @see CHWRMHapticsEffectDataGetter - */ - TInt GetEffectCount( const TDesC8& aData, TInt& aCount ); - - /** - * @see CHWRMHapticsEffectDataGetter - */ - TInt GetEffectName( const TDesC8& aData, - TInt aEffectIndex, - TDes8& aEffectName ); - - /** - * @see CHWRMHapticsEffectDataGetter - */ - TInt GetEffectIndexFromName( const TDesC8& aData, - const TDesC8& aEffectName, - TInt& aEffectIndex ); - - /** - * @see CHWRMHapticsEffectDataGetter - */ - TInt GetEffectType( const TDesC8& aData, - TInt aEffectIndex, - TInt& aEffectType ); - - /** - * @see CHWRMHapticsEffectDataGetter - */ - TInt GetMagSweepEffectDefinition( - const TDesC8& aData, - TInt aEffectIndex, - CHWRMHaptics::THWRMHapticsMagSweepEffect& aEffect ); - - /** - * @see CHWRMHapticsEffectDataGetter - */ - TInt GetPeriodicEffectDefinition( - const TDesC8& aData, - TInt aEffectIndex, - CHWRMHaptics::THWRMHapticsPeriodicEffect& aEffect ); - - /** - * @see CHWRMHapticsEffectDataGetter - */ - TInt GetEffectDuration( const TDesC8& aData, - TInt aEffectIndex, - TInt& aEffectDuration ); - -private: - - /** - * Constructor. - */ - CHWRMHapticsIVTGetter(); - - /** - * 2nd phase constructor. - */ - void ConstructL(); - -private: - - /** - * Utility method for fetching the effect definition using effect data - * and index. - */ - TInt GetEffectByIndex( const TDesC8& aData, - TInt aEffectIndex, - TVibeEffectDefinition* aEffectDefinition ); - - }; - - -#endif // C_HWRMHAPTICSIVTGETTER_H diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/inc/ivtconstants.h --- a/hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/inc/ivtconstants.h Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* -* Copyright (c) 2008 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: VibeTonz related const definitions header file -* -*/ - -#ifndef _HWRMHAPTICSIVTCONSTANTS_H -#define _HWRMHAPTICSIVTCONSTANTS_H - -#include -#include - -/** - * Invalid index constant - */ -const TInt KVibeInvalidIndex = -1; - -/** - * Maximum effect name length constant - */ -const TInt KVibeMaxEffectNameLength = 128; // Maximum effect name length - -/** - * 'Infinite' time - */ -const TInt KVibeTimeInfinite = INT_MAX; - -/** - * 'Infinite' repeat count value - */ -const TUint8 KVibeRepeatCountInfinite = 255; - - - -#endif // _HWRMHAPTICSIVTCONSTANTS_H diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/inc/ivthelper.h --- a/hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/inc/ivthelper.h Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,339 +0,0 @@ -/* -* Copyright (c) 2008 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: IVT effect getter methods high level helper functions header file. -* -*/ - -#ifndef IVTHELPER_H -#define IVTHELPER_H - -#include "ivtinternal.h" - -/** - * Utility class for parsing various information from effect data buffer. - */ -class IVTHelper - { -public: - /** - * Method for checking that the IVT header is correctly formatted. - * (This includes also version number check). - * - * @param aIVT Pointer to the effect data buffer. - * - * @return ETrue if header is correctly formatted, EFalse otherwise. - */ - static TBool IsValidIVTAddress( const TUint8* aIVT ); - - /** - * Method for getting number of effects within an effect data buffer. - * - * @param aIVT Pointer to the effect data buffer. - * - * @return Number (count) of effects contained within the effect data - * buffer. - */ - static TUint16 GetNumEffects( const TUint8* aIVT ); - - /** - * Method for getting the start address of the sub-buffer (from the - * effect data buffer containing possibly several effect definitions) - * that contains effect definition of the given effect. - * - * @param aIVT Pointer to the effect data buffer. - * @param aEffectIndex Index of the effect (within the effect data - * buffer). - * - * @return Pointer to the effect definition sub-buffer. In case of - * any error, NULL is returned. - */ - static TUint8* GetEffectStorage( const TUint8* aIVT, TInt aEffectIndex ); - - /** - * Method for extracting envelope (attack and fade times and levels) from - * a buffer of effect-specific data. I.e., this is given an address to the - * effect specific part in effect data buffer, not the whole effect data - * buffer. The aPacket param can be obtained e.g. by first calling the - * above GetEffectStorage method. - * - * @param aPacket Pointer to effect specific data (sub-)buffer. - * @param aEnvelope Pointer to a TVibeEnvelopeParams structure to which - * the envelope params are read. - * - * @return ETrue on success, EFalse otherwise. - */ - static TBool ExtractEnvelopeFromPacket( - const TUint8* aPacket, - TVibeEnvelopeParams* aEnvelope ); - - /** - * Method for extracting effect definition from a buffer of effect- - * specific data. I.e., this is given an address to the effect-specific - * part in effect data buffer, not the whole effect data - * buffer. The aPacket param can be obtained e.g. by first calling the - * above GetEffectStorage method. - * - * @param aPacket Pointer to effect specific data (sub-)buffer. - * @param aEffectDefinition Pointer to a TVibeEffectDefinition structure - * to which the effect definition params are - * read. - * @param aPeriodicType The type of the effect (basis vs timeline) is - * written to the TInt located in this address. - * - * @return ETrue on success, EFalse otherwise. - */ - static TBool ExtractEffectDefinitionFromPacket( - const TUint8* aPacket, - TVibeEffectDefinition* aEffectDefinition, - TInt* aPeriodicType ); - - /** - * Method for getting the effect name data sub-buffer address. - * - * @param aIVT Pointer to the effect data buffer. - * @param aEffectIndex Index of the effect (within the effect data - * buffer) which name data is queried. - * - * @return Pointer to the (sub-)buffer containing the effect name data. - * In case of error, returns NULL pointer. - */ - static TUint8* GetEffectNameData( const TUint8* aIVT, TInt aEffectIndex ); - - /** - * Method for getting the effect duration. - * - * @param aIVT Pointer to the effect data buffer. - * @param aEffectIndex Index of the effect (within the effect data - * buffer) which duration is queried. - * - * @return Duration of the effect. - * In case of error, one of Vibe error codes. - */ - static TInt GetIVTEffectDuration( const TUint8* aIVT, TInt aEffectIndex ); - -private: - - /** - * Internal structure for repeat bar. - * iEvent not owned. - */ - struct TVibeRepeatBar - { - TInt iTimeOffsetEnd; - TInt iTimeDuration; - TVibeIVTCount iCount; - const TUint8* iEvent; - }; - - /** - * Structure for timeline effect information - * None of the pointer members are owned. - */ - struct TVibeTimeLineInfo - { - TVibeRepeatBar iRepeatBarStack[KRepeatBarStackMaxSize]; - TInt iRepeatBarStackTop; - TUint8* iOffsetSubBlock; - TUint8* iDataSubBlock; - const TUint8* iNextEvent; - TInt iTimeAllEffectsEnd; - // all events times offest are relative to this time - // when computing effect end time - TInt iTimeOffsetZero; - TInt iTimeRepeat; - TInt iTimeEvent; - }; - - /** - * Method for getting the IVT header from effect data buffer. - * - * @param aIVT Pointer to the effect data buffer. - * - * @return Pointer to the IVT header. - */ - static TVibeIVTHeader* GetIVTHeader( const TUint8* aIVT ); - - /** - * Method for checking if the given effect data buffer contains any effect - * definitions or not. - * - * @param aIVT Pointer to the effect data buffer. - * - * @return ETrue if the buffer contains effect definition, EFalse otherwise. - */ - static TBool IsEmpty( const TUint8* aIVT); - - /** - * Method for getting storage block size from effect data buffer. - * - * @param aIVT Pointer to the effect data buffer. - * - * @return Storage block size. - */ - static TUint16 GetStorageBlockSize( const TUint8* aIVT ); - - /** - * Method for getting name block size from effect data buffer. - * - * @param aIVT Pointer to the effect data buffer. - * - * @return Name block size. - */ - static TUint16 GetNameBlockSize( const TUint8* aIVT ); - - /** - * Method for checking if the given effect data buffer contains any effect - * name block(s) or not. - * - * @param aIVT Pointer to the effect data buffer. - * - * @return ETrue if the buffer contains effect name block(s), EFalse otherwise. - */ - static TBool HasNameBlock( const TUint8* aIVT ); - - /** - * Method for getting the start address of the storage block within the - * effect data buffer. - * - * @param aIVT Pointer to the effect data buffer. - * - * @return Pointer to the start of the storage block. In case of error - * returns NULL. - */ - static TUint8* GetStorageBlock( const TUint8* aIVT ); - - /** - * Method for getting the start address of the storage offset subblock - * within the effect data buffer. - * - * @param aIVT Pointer to the effect data buffer. - * - * @return Pointer to the start of the storage offset subblock. - * In case of error returns NULL. - */ - static TUint8* GetStorageOffsetSubBlock( const TUint8* aIVT ); - - /** - * Method for getting the start address of the storage data subblock - * within the effect data buffer. - * - * @param aIVT Pointer to the effect data buffer. - * - * @return Pointer to the start of the storage data subblock. - * In case of error returns NULL. - */ - static TUint8* GetStorageDataSubBlock( const TUint8* aIVT ); - - /** - * Method for getting the start address of the name block within the - * effect data buffer. - * - * @param aIVT Pointer to the effect data buffer. - * - * @return Pointer to the start of the name block. In case of error - * returns NULL. - */ - static TUint8* GetNameBlock( const TUint8* aIVT ); - - /** - * Method for getting the start address of the name offset subblock - * within the effect data buffer. - * - * @param aIVT Pointer to the effect data buffer. - * - * @return Pointer to the start of the name offset subblock. - * In case of error returns NULL. - */ - static TUint8* GetNameOffsetSubBlock( const TUint8* aIVT ); - - /** - * Method for getting the start address of the name data subblock - * within the effect data buffer. - * - * @param aIVT Pointer to the effect data buffer. - * - * @return Pointer to the start of the name data subblock. - * In case of error returns NULL. - */ - static TUint8* GetNameDataSubBlock( const TUint8* aIVT ); - - /** - * Method for getting size of the effect data buffer (as calculated - * from the header fields). - * - * @param aIVT Pointer to the effect data buffer. - * - * @return Size of the effect data buffer. - */ - static TUint GetIVTSize( const TUint8* aIVT ); - - /** - * Method for converting firmware representation of magnitude to the - * one used in user interface (i.e., returned by various magnitude - * getters). - * - * @param aFwMagnitude Magnitude in firmware representation. - * - * @return Magnitude as seen by users. - */ - static TInt ConvertToUserMagnitude( TInt aFwMagnitude ); - - /** - * Method for converting firmware representation of duration to the - * one used in user interface (i.e., returned by various duration - * getters). - * - * @param aFwDuration Duration in firmware representation. - * - * @return Duration as seen by users. - */ - static TInt ConvertToUserDuration( TVibeIVTMessageTime aFwDuration ); - - /** - * Method for converting firmware representation of frequency period to - * the one used in user interface (i.e., returned by various frequency - * period getters). - * - * @param aFwFrequency Frequency period in firmware representation. - * - * @return Frequency period as seen by users. - */ - static TInt ConvertToUserFrequency( TVibeIVTFreqPer aFwFrequency ); - - /** - * Helper method for processing Launch Playback events when calculating - * timeline effect's duration. - * - * @param Pointer to a timeline info structure which is to be processed. - * - * @return KVibeStatusSuccess in case of successful processing, otherwise - * one of Vibe error statuses. - */ - static TInt TimelineDurationProcessEvent( - TVibeTimeLineInfo* aTimelineInfo ); - - /** - * Helper method for processing Repeat Bar events when calculating - * timeline effect's duration. - * - * @param Pointer to a timeline info structure which is to be processed. - * - * @return KVibeStatusSuccess in case of successful processing, otherwise - * one of Vibe error statuses. - */ - static TInt TimelineDurationProcessRepeatInStack( - TVibeTimeLineInfo* aTimelineInfo ); - }; - -#endif /* IVTHELPER_H */ diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/inc/ivtinternal.h --- a/hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/inc/ivtinternal.h Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,336 +0,0 @@ -/* -* Copyright (c) 2008 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: Basis and timeline effects related constant, macro and function -* prototype definition header file. -*/ - -#ifndef _HWRMHAPTICSVIBEIVTINTERNAL_H -#define _HWRMHAPTICSVIBEIVTINTERNAL_H - - -#include "ivtconstants.h" - -/** - * A few typedefs for internal Vibe (integer) types - */ - -typedef TUint16 TVibeIVTMessageTime; -typedef TUint16 TVibeIVTEffectID; -typedef TUint8 TVibeIVTOverrideFlags; -typedef TInt8 TVibeIVTMagnitude; -typedef TUint16 TVibeIVTFreqPer; -typedef TUint8 TVibeIVTCount; - -/** - * Number of bytes in a basis effect message - */ -const TInt KVibeIvtMessageSize = 8; - -/** - * Basis effect message types - */ -const TUint8 KVibeMessageTypeSetPeriodic = 2; -const TUint8 KVibeMessageTypeSetPeriodicModifier = 3; - -/** - * Periodic type constants. MagSweep effects use KVibePeriodicTypeConstant - * and Periodic effects KVibePeriodicTypeSquare. - * Others are reserved for future developement. - */ -const TInt KVibePeriodicTypeConstant = 0; -const TInt KVibePeriodicTypeSquare = 1; -const TInt KVibePeriodicTypeTriangle = 2; // For future dev -const TInt KVibePeriodicTypeSine = 3; // For future dev -const TInt KVibePeriodicTypeSawtooth = 4; // For future dev -const TInt KVibePeriodicTypeInvertedSawtooth = 5; // For future dev - -/** - * Timeline effect message property types - */ -const TUint8 KVibeIvtPropertyTypeLaunchPlayback = 0xf1; -const TUint8 KVibeIvtPropertyTypeRepeatBar = 0xf2; -const TUint8 KVibeIvtPropertyTypeEndOfList = 0xff; -const TUint8 KVibeIvtPropertyTypeEffectIdU8 = 0xe0; -const TUint8 KVibeIvtPropertyTypeEffectIdU16 = 0xe1; -const TUint8 KVibeIvtPropertyTypeTimeOffsetU16 = 0xe2; -const TUint8 KVibeIvtPropertyTypeTimeOffsetU24 = 0xe3; -const TUint8 KVibeIvtPropertyTypeTimeOffsetU32 = 0xe4; -const TUint8 KVibeIvtPropertyTypeCountU8 = 0xe5; -const TUint8 KVibeIvtPropertyTypeDurationMsU16 = 0xd0; -const TUint8 KVibeIvtPropertyTypeMagnitudeS8 = 0xd1; -const TUint8 KVibeIvtPropertyTypeFreqPeriodU16 = 0xd2; - -/** - * Override flags - */ -const TUint8 KVibeIvtOverrideFlagDuration = ( 1 << 0 ); -const TUint8 KVibeIvtOverrideFlagMagnitude = ( 1 << 1 ); -const TUint8 KVibeIvtOverrideFlagFreqPeriod = ( 1 << 2 ); - -/** - * Style mask - */ -// #define VIBE_STYLE_MASK 0x0F -const TInt KVibeStyleMask = 0x0f; - -/** - * Wave type bit shift value and mask - */ -const TInt KVibeWavetypeShift = 4; -const TInt KVibeWavetypeMask = 0xf0; - -/** - * Const for repeat bar stack size - */ -const TInt KRepeatBarStackMaxSize = 4; - -/** - * Couple of firmware (IVT player) specific constants - */ -const TInt KVibeFirmwareTimeInfinite = 0xFFFF; -const TInt KVibeMaxFirmwareMagnitude = 127; -/** - * General macro for extracting bits from buffer (pointed by p) with mask (m) - * and then shifting right with given shift (s) value - */ -#define VIBE_GET_BIT_FIELD(p,m,s) \ - ( ( *( p ) & ( m ) ) >> ( s ) ) - -/** - * Basis effect macros for extracting values from IVT buffer - */ -#define VIBE_IVT_GET_MESSAGE_TYPE(p) \ - VIBE_GET_BIT_FIELD(p, 0xf0, 4) - -#define VIBE_IVT_GET_PERIODIC_DURATION(p) \ - ( ( ( ( VIBE_GET_BIT_FIELD( ( p ) + 1, 0xff, 0 ) ) | \ - ( VIBE_GET_BIT_FIELD( ( p ) + 2, 0x0f, 0 ) << 8 ) ) << 4 ) | \ - ( VIBE_GET_BIT_FIELD( ( p ) + 7, 0xf0, 4 ) ) ) - -#define VIBE_IVT_GET_PERIODIC_START_DELAY(p) \ - ( VIBE_GET_BIT_FIELD( ( p ) + 2, 0xf0, 0 ) | \ - ( VIBE_GET_BIT_FIELD( ( p ) + 3, 0xff, 0 ) << 4 ) ) - -#define VIBE_IVT_GET_PERIODIC_MAGNITUDE(p) \ - VIBE_GET_BIT_FIELD( ( p ) + 4, 0x7f, 0 ) - -#define VIBE_IVT_GET_PERIODIC_START_FLAG(p) \ - VIBE_GET_BIT_FIELD( ( p ) + 4, 0x80, 7 ) - -#define VIBE_IVT_GET_PERIODIC_TYPE(p) \ - VIBE_GET_BIT_FIELD( ( p ) + 5, 0x0f, 0 ) - -#define VIBE_IVT_GET_PERIODIC_CONTROLMODE(p) \ - VIBE_GET_BIT_FIELD( ( p ) + 7, 0x0f, 0 ) - -#define VIBE_IVT_GET_PERIODIC_FREQPER(p) \ - ( VIBE_GET_BIT_FIELD( ( p ) + 5, 0xf0, 4 ) | \ - ( VIBE_GET_BIT_FIELD( ( p ) + 6, 0xff, 0 ) << 4 ) ) - -#define VIBE_IVT_GET_PERIODIC_MODIFIER_IMPULSE_TIME(p) \ - ( VIBE_GET_BIT_FIELD( ( p ) + 1, 0xff, 0 ) | \ - ( VIBE_GET_BIT_FIELD( (p ) + 2, 0x3f, 0 ) << 8 ) ) - -#define VIBE_IVT_GET_PERIODIC_MODIFIER_FADE_TIME(p) \ - ( VIBE_GET_BIT_FIELD( ( p ) + 3, 0xff, 0 ) | \ - ( VIBE_GET_BIT_FIELD( ( p ) + 4, 0x3f, 0 ) << 8 ) ) - -#define VIBE_IVT_GET_PERIODIC_MODIFIER_IMPULSE_LEVEL(p) \ - VIBE_GET_BIT_FIELD( ( p ) + 5, 0x7f, 0 ) - -#define VIBE_IVT_GET_PERIODIC_MODIFIER_FADE_LEVEL(p) \ - VIBE_GET_BIT_FIELD( ( p ) + 6, 0x7f, 0 ) - -/** - * Timeline effect specific macro - */ -#define VIBE_IVT_IS_OVERRIDE(p) \ - ( 0xd0 == ( *( p ) & 0xf0 ) ) - -/** - * Macros to determine effect type macros */ -#define VIBE_IVT_IS_BASIS_EFFECT(p) \ - ( 0 == ( 0x0f & *( p ) ) ) - -#define VIBE_IVT_IS_TIMELINE_EFFECT(p) \ - ( 0xf0 == ( 0xf0 & *( p ) ) ) - -/** - * Structure for IVT header - */ -struct TVibeIVTHeader - { - /** - * IVT file format major version. (In current version: 0x1) - */ - TUint8 iVersionMajor; - - /** - * IVT file format major version. (In current version: 0x0) - */ - TUint8 iVersionMinor; - - /** - * Lower byte of Number of effects (within the IVT data) - */ - TUint8 iEffects_0_7; - - /** - * Upper byte of Number of effects (within the IVT data) - */ - TUint8 iEffects_8_15; - - /** - * Lower byte of effect storage block size - */ - TUint8 iEffectStorageBlockSize_0_7; - - /** - * Upper byte of effect storage block size - */ - TUint8 iEffectStorageBlockSize_8_15; - - /** - * Lower byte of effect name block size - */ - TUint8 iEffectNameBlockSize_0_7; - - /** - * Upper byte of effect name block size - */ - TUint8 iEffectNameBlockSize_8_15; - }; - -/** - * Structure for effect's envelope parameters (attack and fade params) - */ -struct TVibeEnvelopeParams - { - /** - * Magnitude at the start of the envelope - */ - TInt iAttackLevel; - - /** - * Time to reach the sustain level, in milliseconds - */ - TInt iAttackTime; - - /** - * Magnitude at the end of the envelope - */ - TInt iFadeLevel; - - /** - * Time to reach the fade level, in milliseonds - */ - TInt iFadeTime; - }; - -/** - * Stucture for Periodic effect definition. - */ -struct TVibePeriodicEffectDefinition - { - /** - * Type (bitmasked Wave Type) of the effect - */ - TInt iType; - - /** - * Magnitude of the effect - */ - TInt iMagnitude; - - /** - * Period of the effect - */ - TInt iPeriod; - - /** - * Envelope params of the effect - */ - TVibeEnvelopeParams iEnvelope; - }; - -/** - * Stucture for MagSweep effect definition. - */ -struct TVibeMagSweepEffectDefinition - { - /** - * Magnitude of the effect - */ - TInt iMagnitude; - - /** - * Envelope params of the effect - */ - TVibeEnvelopeParams iEnvelope; - }; - -/** - * Union that contains either Periodic or MagSweep effect definition - */ -union TVibeEffectDefTypeParams - { - /** - * Periodic effect definition - */ - TVibePeriodicEffectDefinition iPeriodicEffectDefinition; - - /** - * MagSweep effect definition - */ - TVibeMagSweepEffectDefinition iMagSweepEffectDefinition; - }; - -/** - * Structure for common effect parameters - */ -struct TVibeEffectCommonParams - { - /** - * Type of the effect - */ - TInt iEffectType; - - /** - * Playing duration of the effect in milliseconds - */ - TInt iDuration; - - /** - * Control mode (a.k.a. Style) of the effect - */ - TInt iControlMode; - }; - -/** - * Structure for complete effect definition - */ -struct TVibeEffectDefinition - { - /** - * Common effect parameters (a structure) - */ - TVibeEffectCommonParams iEffectCommonParams; - - /** - * Effect type specific parameters (an union) - */ - TVibeEffectDefTypeParams iEffectTypeParams; - }; - -#endif /* _HWRMHAPTICSVIBEIVTINTERNAL_H */ diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/inc/timelineivtgetters.h --- a/hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/inc/timelineivtgetters.h Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,190 +0,0 @@ -/* -* Copyright (c) 2008 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: Timeline effect internal getters header file. -* -*/ - -#ifndef TIMELINEIVTGETTERS_H -#define TIMELINEIVTGETTERS_H - - -#include "ivtinternal.h" - -/** - * Utility class for getting various timeline effect specific information - * from data buffer. - */ -class TimelineIVTGetters - { -public: - /** - * Method for getting the effect Id from effect data buffer. - * Takes pointer to the current position in effect data buffer (i.e., - * position from which the Id is read) and sets the pointer to next - * position. - * - * @param aProp Pointer to the current position in effect data buffer - * @param aPProp Double pointer to which new position in effect data - * buffer is written (out param). - * - * @return Id of the effect (that is in current position of the effect - * data buffer). - */ - static TVibeIVTEffectID VibeIVTGetEffectID( const TUint8* aProp, - const TUint8** aPProp ); - - /** - * Method for getting the effect time offset from effect data buffer. - * Takes pointer to the current position in effect data buffer (i.e., - * position from which the time offset is read) and sets the pointer - * to next position. - * - * @param aProp Pointer to the current position in effect data buffer - * @param aPProp Double pointer to which new position in effect data - * buffer is written (out param). - * - * @return Time offset of the effect (that is in current position of - * the effect data buffer). - */ - static TInt VibeIVTGetTimeOffset( const TUint8* aProp, - const TUint8** aPProp ); - - /** - * Method for getting the count value from effect data buffer. - * Takes pointer to the current position in effect data buffer (i.e., - * position from which the count is read) and sets the pointer to next - * position. - * - * @param aProp Pointer to the current position in effect data buffer - * @param aPProp Double pointer to which new position in effect data - * buffer is written (out param). - * - * @return Count value (that is in current position of the effect - * data buffer). - */ - static TVibeIVTCount VibeIVTGetCount( const TUint8* aProp, - const TUint8** aPProp ); - - /** - * Method for getting the effect duration from effect data buffer. - * Takes pointer to the current position in effect data buffer (i.e., - * position from which the duration is read) and sets the pointer to next - * position. - * - * @param aProp Pointer to the current position in effect data buffer - * @param aPProp Double pointer to which new position in effect data - * buffer is written (out param). - * - * @return Duration of the effect (that is in current position of the - * effect data buffer). - */ - static TVibeIVTMessageTime VibeIVTGetDuration( const TUint8* aProp, - const TUint8** aPProp ); - - /** - * Method for getting the effect magnitude from effect data buffer. - * Takes pointer to the current position in effect data buffer (i.e., - * position from which the magnitude is read) and sets the pointer to next - * position. - * - * @param aProp Pointer to the current position in effect data buffer - * @param aPProp Double pointer to which new position in effect data - * buffer is written (out param). - * - * @return Magnitude of the effect (that is in current position of the - * effect data buffer). - */ - static TVibeIVTMagnitude VibeIVTGetMagnitude( - const TUint8* aProp, - const TUint8** aPProp ); - - /** - * Method for getting the effect frequency period from effect data buffer. - * Takes pointer to the current position in effect data buffer (i.e., - * position from which the frequency period is read) and sets the pointer - * to nextposition. - * - * @param aProp Pointer to the current position in effect data buffer. - * @param aPProp Double pointer to which new position in effect data - * buffer is written (out param). - * - * @return Frequency period of the effect (that is in current position of - * the effect data buffer). - */ - static TVibeIVTFreqPer VibeIVTGetFreqPer( const TUint8* aProp, - const TUint8** aPProp ); - - /** - * Method for getting the event time offset from effect data buffer. - * Takes pointer to the current position in effect data buffer (i.e., - * position from which the event offset is read). - * - * @param aProp Pointer to the current position in effect data buffer - * - * @return Time offset of the event (that is in current position of - * the effect data buffer). Time unit depends on the given data. - */ - static TInt VibeIVTGetEventTimeOffset( const TUint8* aProp ); - -private: - - /** - * Method for getting the override values from effect data buffer. - * Takes pointer to the current position in effect data buffer (i.e., - * position from which the overrides are read) and sets the pointer - * to next position. - * - * @param aProp Pointer to the current position in effect data - * buffer. - * @param aOverrideFlags Override flags are read into this (out) param. - * @param aDuration Override duration is read into this (out) param. - * @param aMagnitude Override magnitude is read into this (out) param. - * @param aFreqPer Override frequency period is read into this (out) - * param. - * @param aPProp Double pointer to which new position in effect - * data buffer is written (out param). - * - */ - static void VibeIVTGetOverrides( const TUint8* aProp, - TVibeIVTOverrideFlags* aOverrideFlags, - TVibeIVTMessageTime* aDuration, - TVibeIVTMagnitude* aMagnitude, - TVibeIVTFreqPer* aFreqPer, - const TUint8** aPProp ); - - /** - * Method for getting the launch playback event time offset from effect - * data buffer. - * - * @param aProp Pointer to the current position in effect data buffer. - * - * @return The time offset of the launch playback event. Time unit - * depends on the given data. - */ - static TInt VibeIVTGetLaunchPlaybackEventTimeOffset( - const TUint8* aProp ); - - /** - * Method for getting the repeat bar event time offset from effect - * data buffer. - * - * @param aProp Pointer to the current position in effect data buffer. - * - * @return The time offset of the repeat bar event. Time unit - * depends on the given data. - */ - static TInt VibeIVTGetRepeatBarEventTimeOffset( const TUint8* aProp ); - }; - -#endif /* TIMELINEIVTGETTERS_H*/ diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/rom/hwrmhapticsivtgetterplugin.iby --- a/hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/rom/hwrmhapticsivtgetterplugin.iby Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -/* -* Copyright (c) 2008 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: IBY file for effect data getter ECom plugin. -* -*/ - -#ifndef HAPTICSIVTGETTERPLUGIN_IBY -#define HAPTICSIVTGETTERPLUGIN_IBY - -#include - -ECOM_PLUGIN(hwrmhapticsivtgetterplugin.dll, hwrmhapticsivtgetterplugin.rsc) - -#endif // HAPTICSIVTGETTERPLUGIN_IBY diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/src/basisivtgetters.cpp --- a/hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/src/basisivtgetters.cpp Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,103 +0,0 @@ -/* -* Copyright (c) 2008 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: IVT effect get functions' high level helper functions -* (for basis effects) implementation file. -*/ - -#include "basisivtgetters.h" - -// --------------------------------------------------------------------------- -// Gets the periodic effect data from the effect data buffer to which pointer -// is given as argument. -// --------------------------------------------------------------------------- -// -void BasisIVTGetters::VibeIVTGetPeriodic( - const TUint8* aMsg, - TVibeIVTMessageTime* aDuration, - TVibeIVTMessageTime* aStartDelay, - TVibeIVTMagnitude* aMagnitude, - TInt* aStartFlag, - TInt* aType, - TVibeIVTFreqPer* aFreqPer, - TInt* aControlMode ) - { - if ( aMsg ) - { - if ( aDuration ) - { - *aDuration = VIBE_IVT_GET_PERIODIC_DURATION( aMsg ); - } - if ( aStartDelay ) - { - *aStartDelay = VIBE_IVT_GET_PERIODIC_START_DELAY( aMsg ); - } - if ( aMagnitude ) - { - *aMagnitude = VIBE_IVT_GET_PERIODIC_MAGNITUDE( aMsg ); - } - if ( aStartFlag ) - { - *aStartFlag = VIBE_IVT_GET_PERIODIC_START_FLAG( aMsg ); - } - if ( aType ) - { - *aType = VIBE_IVT_GET_PERIODIC_TYPE( aMsg ); - } - if ( aFreqPer ) - { - *aFreqPer = VIBE_IVT_GET_PERIODIC_FREQPER( aMsg ); - } - if ( aControlMode ) - { - *aControlMode = VIBE_IVT_GET_PERIODIC_CONTROLMODE( aMsg ); - } - } - } - -// --------------------------------------------------------------------------- -// Gets the periodic modifier data from the effect data buffer to which -// pointer is given as argument. -// --------------------------------------------------------------------------- -// -void BasisIVTGetters::VibeIVTGetPeriodicModifier( - const TUint8* aMsg, - TVibeIVTMessageTime* aImpulseTime, - TVibeIVTMessageTime* aFadeTime, - TVibeIVTMagnitude* aImpulseLevel, - TVibeIVTMagnitude* aFadeLevel ) - { - if ( aMsg ) - { - if ( aImpulseTime ) - { - *aImpulseTime = - VIBE_IVT_GET_PERIODIC_MODIFIER_IMPULSE_TIME( aMsg ); - } - if ( aFadeTime ) - { - *aFadeTime = VIBE_IVT_GET_PERIODIC_MODIFIER_FADE_TIME( aMsg ); - } - if ( aImpulseLevel ) - { - *aImpulseLevel = - VIBE_IVT_GET_PERIODIC_MODIFIER_IMPULSE_LEVEL( aMsg ); - } - if ( aFadeLevel ) - { - *aFadeLevel = VIBE_IVT_GET_PERIODIC_MODIFIER_FADE_LEVEL( aMsg ); - } - } - } - -// end of file diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/src/hwrmhapticsivtgetter.cpp --- a/hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/src/hwrmhapticsivtgetter.cpp Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,560 +0,0 @@ -/* -* Copyright (c) 2008 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: Plugin for reading effect information from IVT effect data. -* -*/ - -#include - -#include -#include -#include - -#include "hwrmhapticsivtgetter.h" -#include "hwrmhapticstrace.h" -#include "ivtinternal.h" -#include "ivthelper.h" - -// --------------------------------------------------------------------------- -// Constructor. -// --------------------------------------------------------------------------- -// -CHWRMHapticsIVTGetter::CHWRMHapticsIVTGetter() - { - } - -// --------------------------------------------------------------------------- -// 2nd phase constructor. -// --------------------------------------------------------------------------- -// -void CHWRMHapticsIVTGetter::ConstructL() - { - } - -// --------------------------------------------------------------------------- -// 2-phased constructor. -// --------------------------------------------------------------------------- -// -CHWRMHapticsIVTGetter* CHWRMHapticsIVTGetter::NewL() - { - CHWRMHapticsIVTGetter* self = new ( ELeave ) CHWRMHapticsIVTGetter(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// Destructor. -// --------------------------------------------------------------------------- -// -CHWRMHapticsIVTGetter::~CHWRMHapticsIVTGetter() - { - } - -//--------------------------------------------------------------------------- -// -//--------------------------------------------------------------------------- -// -TInt CHWRMHapticsIVTGetter::GetEffectCount( const TDesC8& aData, - TInt& aCount ) - { - TInt status( KErrArgument ); - if ( IVTHelper::IsValidIVTAddress( aData.Ptr() ) ) - { - aCount = IVTHelper::GetNumEffects( aData.Ptr() ); - status = KErrNone; - } - return status; - } - -//--------------------------------------------------------------------------- -// -//--------------------------------------------------------------------------- -// -TInt CHWRMHapticsIVTGetter::GetEffectName( const TDesC8& aData, - TInt aEffectIndex, - TDes8& aEffectName ) - { - TUint8* effectNameData( 0 ); - char effectNameTemp[KVibeMaxEffectNameLength]; - memset( effectNameTemp, 0, - KVibeMaxEffectNameLength * sizeof( char ) ); - TInt status( KErrNone ); - - if ( IVTHelper::IsValidIVTAddress( aData.Ptr() ) && - 0 <= aEffectIndex && - aEffectIndex < IVTHelper::GetNumEffects( aData.Ptr() ) ) - { - effectNameData = IVTHelper::GetEffectNameData( aData.Ptr(), aEffectIndex ); - if ( effectNameData ) - { - // Convert the name from wchar (VibeWChar) into the - // temporary char format buffer first - TInt stringSize = - wcstombs( effectNameTemp, - reinterpret_cast( effectNameData ), - KVibeMaxEffectNameLength ); - if ( aData.Size() < stringSize ) - { - status = KErrArgument; - } - else - { - aEffectName.Copy( reinterpret_cast( effectNameTemp ), - stringSize ); - } - } - else - { - // IVT data doesn't contain effect name block - // so return empty string - aEffectName.Copy( KNullDesC ); - } - } - else - { - COMPONENT_TRACE( _L("ImmVibeGetIVTEffectName: invalid args.") ); - status = KErrArgument; - } - return status; - } - -//--------------------------------------------------------------------------- -// -//--------------------------------------------------------------------------- -// -TInt CHWRMHapticsIVTGetter::GetEffectIndexFromName( const TDesC8& aData, - const TDesC8& aEffectName, - TInt& aEffectIndex ) - { - TInt i( 0 ); - TInt numEffects( 0 ); - TInt status( KErrGeneral ); - - if ( IVTHelper::IsValidIVTAddress( aData.Ptr() ) ) - { - HBufC8* temp = HBufC8::New( aEffectName.Size() + 1 ); - if ( temp ) - { - TPtr8 effectName = temp->Des(); - effectName.Copy( aEffectName ); - effectName.ZeroTerminate(); - - aEffectIndex = KVibeInvalidIndex; - numEffects = IVTHelper::GetNumEffects( aData.Ptr() ); - for (i = 0; i < numEffects; i++) - { - TUint8 *effectNameData = IVTHelper::GetEffectNameData( aData.Ptr(), i ); - if ( effectNameData ) - { - // Convert the name from wchar (VibeWChar) into char format - char effectNameFromIVT[KVibeMaxEffectNameLength]; - memset( effectNameFromIVT, 0, - KVibeMaxEffectNameLength * sizeof( char ) ); - wcstombs( effectNameFromIVT, - reinterpret_cast( effectNameData ), - KVibeMaxEffectNameLength ); - - if ( !strcmp( reinterpret_cast - ( effectName.Ptr() ), effectNameFromIVT ) ) - { - // Match found, break from the for loop - aEffectIndex = i; - i = numEffects; - status = KErrNone; - } - } - } - delete temp; - temp = NULL; - } - } - else - { - COMPONENT_TRACE( _L("ImmVibeGetIVTEffectIndexFromName: invalid args.") ); - status = KErrArgument; - } - return status; - } - -//--------------------------------------------------------------------------- -// -//--------------------------------------------------------------------------- -// -TInt CHWRMHapticsIVTGetter::GetEffectType( const TDesC8& aData, - TInt aEffectIndex, - TInt& aEffectType ) - { - TUint8 *effectPtr( 0 ); - TInt status( KErrNone ); - - if ( IVTHelper::IsValidIVTAddress( aData.Ptr() ) && - 0 <= aEffectIndex && - aEffectIndex < IVTHelper::GetNumEffects( aData.Ptr() ) ) - { - aEffectType = 0; - effectPtr = IVTHelper::GetEffectStorage( aData.Ptr(), aEffectIndex ); - if ( effectPtr ) - { - // Skip over periodic modifier, if any - if ( KVibeMessageTypeSetPeriodicModifier == - VIBE_IVT_GET_MESSAGE_TYPE( effectPtr ) ) - { - effectPtr += KVibeIvtMessageSize; - } - if ( KVibeMessageTypeSetPeriodic == - VIBE_IVT_GET_MESSAGE_TYPE( effectPtr ) ) - { - // It is either MagSweep or Periodic effect - aEffectType = KVibePeriodicTypeConstant == - VIBE_IVT_GET_PERIODIC_TYPE( effectPtr ) ? - CHWRMHaptics::EHWRMHapticsTypeMagSweep : - CHWRMHaptics::EHWRMHapticsTypePeriodic; - } - else - { - // It has to be timeline effect - aEffectType = CHWRMHaptics::EHWRMHapticsTypeTimeline; - } - } - else - { - COMPONENT_TRACE( _L("ImmVibeGetIVTEffectType: GetEffectStorage failed.") ); - status = KErrGeneral; - } - } - else - { - COMPONENT_TRACE( _L("ImmVibeGetIVTEffectType: invalid args.") ); - status = KErrArgument; - } - - return status; - } - -//--------------------------------------------------------------------------- -// -//--------------------------------------------------------------------------- -// -TInt CHWRMHapticsIVTGetter::GetMagSweepEffectDefinition( - const TDesC8& aData, - TInt aEffectIndex, - CHWRMHaptics::THWRMHapticsMagSweepEffect& aEffect ) - { - TVibeEffectDefinition effectDefinition; - TInt effectType( 0 ); - TInt status ( KErrNone ); - - memset( &effectDefinition, 0, sizeof( effectDefinition ) ); - - // Validity of aEffectIndex is already done in ImmVibeGetIVTEffectType - // For params NULL values just mean "not to be returned" - if ( IVTHelper::IsValidIVTAddress( aData.Ptr() ) ) - { - status = GetEffectType( aData, aEffectIndex, effectType ); - if ( KErrNone == status ) - { - if ( CHWRMHaptics::EHWRMHapticsTypeMagSweep == effectType ) - { - status = - GetEffectByIndex( aData, - aEffectIndex, - &effectDefinition ); - if ( KErrNone == status ) - { - aEffect.iDuration = - effectDefinition.iEffectCommonParams.iDuration; - - aEffect.iMagnitude = - effectDefinition.iEffectTypeParams. - iMagSweepEffectDefinition.iMagnitude; - - aEffect.iStyle = - effectDefinition.iEffectCommonParams.iControlMode; - - aEffect.iAttackTime = - effectDefinition.iEffectTypeParams. - iMagSweepEffectDefinition.iEnvelope. - iAttackTime; - - aEffect.iAttackLevel = - effectDefinition.iEffectTypeParams. - iMagSweepEffectDefinition.iEnvelope. - iAttackLevel; - - aEffect.iFadeTime = - effectDefinition.iEffectTypeParams. - iMagSweepEffectDefinition.iEnvelope.iFadeTime; - - aEffect.iFadeLevel = - effectDefinition.iEffectTypeParams. - iMagSweepEffectDefinition.iEnvelope. - iFadeLevel; - } - else - { - COMPONENT_TRACE( _L("ImmVibeGetIVTMagSweepEffectDefinition: VibeAPIInternalGetIVTEffectByIndex failed.") ); - } - } - else - { - COMPONENT_TRACE( _L("ImmVibeGetIVTMagSweepEffectDefinition: EffectType invalid.") ); - status = KErrNotSupported; - } - } - else - { - COMPONENT_TRACE( _L("ImmVibeGetIVTMagSweepEffectDefinition: ImmVibeGetIVTEffectType failed.") ); - } - } - else - { - COMPONENT_TRACE( _L("ImmVibeGetIVTMagSweepEffectDefinition: invalid data buffer.") ); - status = KErrArgument; - } - return status; - } - -//--------------------------------------------------------------------------- -// -//--------------------------------------------------------------------------- -// -TInt CHWRMHapticsIVTGetter::GetPeriodicEffectDefinition( - const TDesC8& aData, - TInt aEffectIndex, - CHWRMHaptics::THWRMHapticsPeriodicEffect& aEffect ) - { - TVibeEffectDefinition effectDefinition; - TInt effectType( 0 ); - TInt status( KErrNone ); - - memset( &effectDefinition, 0, sizeof( effectDefinition ) ); - - // Validity of aEffectIndex is already done in ImmVibeGetIVTEffectType - // For params NULL values just mean "not to be returned" - if ( IVTHelper::IsValidIVTAddress( aData.Ptr() ) ) - { - status = GetEffectType( aData, aEffectIndex, effectType ); - if ( KErrNone == status ) - { - if ( CHWRMHaptics::EHWRMHapticsTypePeriodic == effectType ) - { - status = - GetEffectByIndex( aData, - aEffectIndex, - &effectDefinition ); - if ( KErrNone == status ) - { - aEffect.iDuration = - effectDefinition.iEffectCommonParams.iDuration; - - aEffect.iMagnitude = - effectDefinition.iEffectTypeParams. - iPeriodicEffectDefinition.iMagnitude; - - aEffect.iPeriod = - effectDefinition.iEffectTypeParams. - iPeriodicEffectDefinition.iPeriod; - - aEffect.iStyle = - (effectDefinition.iEffectCommonParams.iControlMode - & KVibeStyleMask) | - ( ( effectDefinition.iEffectTypeParams. - iPeriodicEffectDefinition.iType - << KVibeWavetypeShift ) & KVibeWavetypeMask ); - - aEffect.iAttackTime = - effectDefinition.iEffectTypeParams. - iPeriodicEffectDefinition.iEnvelope. - iAttackTime; - - aEffect.iAttackLevel = - effectDefinition.iEffectTypeParams. - iPeriodicEffectDefinition.iEnvelope. - iAttackLevel; - - aEffect.iFadeTime = - effectDefinition.iEffectTypeParams. - iPeriodicEffectDefinition.iEnvelope.iFadeTime; - - aEffect.iFadeLevel = - effectDefinition.iEffectTypeParams. - iPeriodicEffectDefinition.iEnvelope. - iFadeLevel; - } - else - { - COMPONENT_TRACE( _L("ImmVibeGetIVTPeriodicEffectDefinition: VibeAPIInternalGetIVTEffectByIndex failed.") ); - } - } - else - { - COMPONENT_TRACE( _L("ImmVibeGetIVTPeriodicEffectDefinition: EffectType invalid.") ); - status = KErrNotSupported; - } - } - else - { - COMPONENT_TRACE( _L("ImmVibeGetIVTPeriodicEffectDefinition: ImmVibeGetIVTEffectType failed.") ); - } - } - else - { - COMPONENT_TRACE( _L("ImmVibeGetIVTPeriodicEffectDefinition: pIVT invalid.") ); - status = KErrArgument; - } - return status; - } - -//--------------------------------------------------------------------------- -// -//--------------------------------------------------------------------------- -// -TInt CHWRMHapticsIVTGetter::GetEffectDuration( const TDesC8& aData, - TInt aEffectIndex, - TInt& aEffectDuration ) - { - TInt status( KErrNone ); - - if ( IVTHelper::IsValidIVTAddress( aData.Ptr() ) && - 0 <= aEffectIndex && - aEffectIndex < IVTHelper::GetNumEffects( aData.Ptr() ) ) - { - aEffectDuration = 0; - TInt effectCount = - IVTHelper::GetIVTEffectDuration( aData.Ptr(), aEffectIndex ); - if ( effectCount < 0 ) - { - COMPONENT_TRACE( _L("ImmVibeGetIVTEffectDuration failed.") ); - aEffectDuration = 0; - status = effectCount; - } - else - { - // On success, GetIVTEffectDuration returns the duration - aEffectDuration = effectCount; - } - } - else - { - COMPONENT_TRACE( _L("ImmVibeGetIVTEffectDuration: invalid args.") ); - status = KErrArgument; - } - - return status; - } - - -// --------------------------------------------------------------------------- -// Internal helper method for getting effect definition by its index -// from the effect data buffer. -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsIVTGetter::GetEffectByIndex( - const TDesC8& aData, - TInt aEffectIndex, - TVibeEffectDefinition* aEffectDefinition ) - { - TInt periodicType; - TUint8* effectPtr; - TVibeEnvelopeParams envelope; - TInt status( KErrNone ); - - memset( &envelope, 0, sizeof( envelope ) ); - - if ( aEffectDefinition && IVTHelper::IsValidIVTAddress( aData.Ptr() ) && - 0 <= aEffectIndex && - aEffectIndex < IVTHelper::GetNumEffects( aData.Ptr() ) ) - { - memset( reinterpret_cast( aEffectDefinition ), - 0, - sizeof( TVibeEffectDefinition ) ); - effectPtr = IVTHelper::GetEffectStorage( aData.Ptr(), aEffectIndex ); - if ( effectPtr ) - { - // Get IVT basis effect envelope - if ( KVibeMessageTypeSetPeriodicModifier == - VIBE_IVT_GET_MESSAGE_TYPE( effectPtr ) ) - { - IVTHelper::ExtractEnvelopeFromPacket( effectPtr, &envelope ); - effectPtr += KVibeIvtMessageSize; - } - if ( KVibeMessageTypeSetPeriodic == - VIBE_IVT_GET_MESSAGE_TYPE( effectPtr ) ) - { - // Get IVT basis effect definition excluding envelope - IVTHelper::ExtractEffectDefinitionFromPacket( - effectPtr, - aEffectDefinition, - &periodicType ); - if ( KVibePeriodicTypeConstant == periodicType ) - { - memcpy( &( aEffectDefinition->iEffectTypeParams. - iMagSweepEffectDefinition.iEnvelope ), - &envelope, sizeof( envelope ) ); - } - else - { - memcpy( &( aEffectDefinition->iEffectTypeParams. - iPeriodicEffectDefinition.iEnvelope ), - &envelope, sizeof( envelope ) ); - - } - } - else - { - COMPONENT_TRACE( _L("VibeAPIInternalGetIVTEffectByIndex: Invalid vibe message type.") ); - status = KErrGeneral; - } - } - else - { - COMPONENT_TRACE( _L("VibeAPIInternalGetIVTEffectByIndex: GetEffectStorage failed.") ); - status = KErrGeneral; - } - } - else - { - COMPONENT_TRACE( _L("VibeAPIInternalGetIVTEffectByIndex: invalid arguments.") ); - status = KErrArgument; - } - - return status; - } - - - -//--------------------------------------------------------------------------- -// ImplementationTable[] -// -//--------------------------------------------------------------------------- -// -const TImplementationProxy ImplementationTable[] = - { - IMPLEMENTATION_PROXY_ENTRY( 0x20021203, CHWRMHapticsIVTGetter::NewL ) - }; - -//--------------------------------------------------------------------------- -// TImplementationProxy* ImplementationGroupProxy() -// -//--------------------------------------------------------------------------- -// -EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount ) - { - aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); - return ImplementationTable; - } - -// End of file diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/src/ivthelper.cpp --- a/hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/src/ivthelper.cpp Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,774 +0,0 @@ -/* -* Copyright (c) 2008 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: IVT effect get functions' high level helper functions -* implementation file. -*/ - -#include -#include - -#include "ivtinternal.h" -#include "ivthelper.h" -#include "timelineivtgetters.h" -#include "basisivtgetters.h" - -// --------------------------------------------------------------------------- -// Checks the validity of IVT header. I.e., basic sanity check. -// --------------------------------------------------------------------------- -// -TBool IVTHelper::IsValidIVTAddress( const TUint8* aIVT ) - { - TBool validity( EFalse ); - // For now, all IVT have the following version number: - // major version number = 1, - // minor version number = 0 - if ( aIVT && - 1 == GetIVTHeader( aIVT )->iVersionMajor && - 0 == GetIVTHeader( aIVT )->iVersionMinor ) - { - if ( IsEmpty ( aIVT ) ) - { - // IVT containing zero effects is considered valid. - validity = ETrue; - } - else - { - // For Non empty IVT, StorageDataSubBlock must start with - // basic effect or timeline definition. - if ( VIBE_IVT_IS_BASIS_EFFECT( - GetStorageDataSubBlock( aIVT ) ) || - VIBE_IVT_IS_TIMELINE_EFFECT( - GetStorageDataSubBlock( aIVT ) ) ) - { - validity = ETrue; - } - } - } - return validity; - } - -// --------------------------------------------------------------------------- -// Gets the number of contained effect definitions from the effect data buffer. -// For empty data buffer returns 0. -// --------------------------------------------------------------------------- -// -TUint16 IVTHelper::GetNumEffects( const TUint8* aIVT ) - { - return aIVT ? - GetIVTHeader( aIVT )->iEffects_0_7 + - ( GetIVTHeader( aIVT )->iEffects_8_15 << 8 ) : 0; - } - -// --------------------------------------------------------------------------- -// Gets the effect storage of the given effect (as indicated by index -// argument) from the effect data buffer. -// --------------------------------------------------------------------------- -// -TUint8* IVTHelper::GetEffectStorage( const TUint8* aIVT, TInt aEffectIndex ) - { - // First get the storage data subblock pointer, and then advance that - // according to correct effect's storage offset. - // The offset is stored in two bytes (corresponding to the index of the - // effect) of the storage offset subblock data area. - return ( IsEmpty( aIVT ) || aEffectIndex >= GetNumEffects( aIVT ) ) ? 0 : - GetStorageDataSubBlock( aIVT ) - + GetStorageOffsetSubBlock( aIVT )[2 * aEffectIndex] - + ( GetStorageOffsetSubBlock( aIVT )[2 * aEffectIndex + 1] << 8 ); - } - -// --------------------------------------------------------------------------- -// Gets the the envelope params (attack and fade params) from the effect data. -// The effect data pointer must point to a specific effect data, not the -// whole effect data buffer as in above functions. -// --------------------------------------------------------------------------- -// -TBool IVTHelper::ExtractEnvelopeFromPacket( const TUint8* aPacket, - TVibeEnvelopeParams* aEnvelope ) - { - TBool status( ETrue ); - if ( aPacket && aEnvelope ) - { - TVibeIVTMessageTime attackTime( 0 ); - TVibeIVTMessageTime fadeTime( 0 ); - TVibeIVTMagnitude attackLevel( 0 ); - TVibeIVTMagnitude fadeLevel( 0 ); - - BasisIVTGetters::VibeIVTGetPeriodicModifier( aPacket, - &attackTime, - &fadeTime, - &attackLevel, - &fadeLevel ); - - aEnvelope->iAttackTime = attackTime; - aEnvelope->iFadeTime = fadeTime; - aEnvelope->iAttackLevel = ConvertToUserMagnitude( attackLevel ); - aEnvelope->iFadeLevel = ConvertToUserMagnitude( fadeLevel ); - } - else - { - status = EFalse; - } - return status; - } - -// --------------------------------------------------------------------------- -// Gets the the effect definition from the effect data. -// The effect data pointer must point to a specific effect data, not the -// whole effect data buffer as in above functions. -// --------------------------------------------------------------------------- -// -TBool IVTHelper::ExtractEffectDefinitionFromPacket( - const TUint8* aPacket, - TVibeEffectDefinition* aEffectDefinition, - TInt* aPeriodicType ) - { - TBool status( ETrue ); - if ( aPacket && aEffectDefinition && aPeriodicType ) - { - TVibeIVTMessageTime duration( 0 ); - TVibeIVTMessageTime startDelay( 0 ); - TVibeIVTMagnitude magnitude( 0 ); - TInt type( 0 ); - TVibeIVTFreqPer freqPer( 0 ); - TInt controlMode( 0 ); - - BasisIVTGetters::VibeIVTGetPeriodic( aPacket, - &duration, - &startDelay, - &magnitude, - 0, - &type, - &freqPer, - &controlMode ); - - *aPeriodicType = VIBE_IVT_GET_PERIODIC_TYPE( aPacket ); - - if ( KVibePeriodicTypeSquare == *aPeriodicType ) - { - // Fill the Periodic specific definition data - aEffectDefinition->iEffectCommonParams.iEffectType = - CHWRMHaptics::EHWRMHapticsTypePeriodic; - aEffectDefinition->iEffectCommonParams.iDuration = - ConvertToUserDuration( duration ); - aEffectDefinition->iEffectCommonParams.iControlMode = - controlMode; - aEffectDefinition->iEffectTypeParams. - iPeriodicEffectDefinition.iType = type; - aEffectDefinition->iEffectTypeParams. - iPeriodicEffectDefinition.iPeriod = - ConvertToUserFrequency( freqPer ); - aEffectDefinition->iEffectTypeParams. - iPeriodicEffectDefinition.iMagnitude = - ConvertToUserMagnitude( magnitude ); - } - else if ( KVibePeriodicTypeConstant == *aPeriodicType ) - { - // Fill the MagSweep specific definition data - aEffectDefinition->iEffectCommonParams.iEffectType = - CHWRMHaptics::EHWRMHapticsTypeMagSweep; - aEffectDefinition->iEffectCommonParams.iDuration = - ConvertToUserDuration( duration ); - aEffectDefinition->iEffectCommonParams.iControlMode = - controlMode; - aEffectDefinition->iEffectTypeParams. - iMagSweepEffectDefinition.iMagnitude = - ConvertToUserMagnitude( magnitude ); - } - else - { - status = EFalse; - } - } - else - { - status = EFalse; - } - return status; - } - -// --------------------------------------------------------------------------- -// Gets the effect name data of the given effect (as indicated by index -// argument) from the effect data buffer. -// --------------------------------------------------------------------------- -// -TUint8* IVTHelper::GetEffectNameData( const TUint8* aIVT, TInt aEffectIndex ) - { - // First get the name data subblock pointer, and then advance that - // according to effect's name offset. - // The offset is stored in two bytes (corresponding to the index of the - // effect) of the name offset subblock data area. - return HasNameBlock( aIVT ) ? - ( GetNameDataSubBlock( aIVT ) - + GetNameOffsetSubBlock( aIVT )[2 * aEffectIndex] - + ( GetNameOffsetSubBlock( aIVT )[2 * aEffectIndex + 1] << 8 ) ) : - 0; - } - -// --------------------------------------------------------------------------- -// GetIVTEffectDuration() -// -// IVT effect duration computation: -// - For Basis effect: this function extracts duration from the BasicEffect -// definition -// - For Timeline effects, this function loops trough all the timeline events -// and compute each basic effects's end time and keep the biggest value of -// them. -// -// The formula: -// BasicEffect's End time = ZeroOffsetTime + EventOffsetTime + -// EffectDuration (Effect definition's duration or override duration) -// -// Every time the end of repeat event is reached, "ZeroOffsetTime" is always -// adjusted (ZeroOffsetTime = ZeroOffsetTime + Repeat duration) and this ´ -// function goes back to the next event following the current repeat event. -// -// Return values: -// -negative values: errors -// -Positive values: duration -// --------------------------------------------------------------------------- -// -TInt IVTHelper::GetIVTEffectDuration( const TUint8* aIVT, TInt aEffectIndex ) - { - TInt status( KErrNone ); - TInt duration( 0 ); - - if ( aIVT && 0 <= aEffectIndex && aEffectIndex < GetNumEffects( aIVT ) ) - { - TUint8* effectPtr( 0 ); - TVibeTimeLineInfo timelineInfo; - memset( &timelineInfo, 0, sizeof( timelineInfo ) ); - - timelineInfo.iOffsetSubBlock = - reinterpret_cast( GetIVTHeader( aIVT ) + 1 ); - timelineInfo.iDataSubBlock = - timelineInfo.iOffsetSubBlock - + 2*( GetIVTHeader( aIVT )->iEffects_0_7 - + ( GetIVTHeader( aIVT )->iEffects_8_15 << 8 ) ); - effectPtr = - timelineInfo.iDataSubBlock - + timelineInfo.iOffsetSubBlock[2*aEffectIndex] - + ( timelineInfo.iOffsetSubBlock[2*aEffectIndex+1] << 8 ); - - // Effect type specific handling - if ( VIBE_IVT_IS_BASIS_EFFECT( effectPtr ) ) - { - // Basis effect - // Skip any messages preceding the SetPeriodic message - while ( KVibeMessageTypeSetPeriodic != - VIBE_IVT_GET_MESSAGE_TYPE( effectPtr ) ) - { - effectPtr += KVibeIvtMessageSize; - } - duration = ConvertToUserDuration( - VIBE_IVT_GET_PERIODIC_DURATION( effectPtr ) ); - } - else if ( VIBE_IVT_IS_TIMELINE_EFFECT( effectPtr ) ) - { - // Timeline effect - timelineInfo.iNextEvent = effectPtr; - timelineInfo.iTimeRepeat = KVibeTimeInfinite; - timelineInfo.iRepeatBarStackTop = -1; - - // Process the timeline effect - // The looping stops either: - // - due to processing error (e.g. invalid effect data) - // - when it has been determined that effect is 'infinite' - // - when the whole effect has been processed - do - { - // Process next event or next closing of repeat bar, - // whichever comes first, provided that its time is up - if ( timelineInfo.iTimeEvent < timelineInfo.iTimeRepeat ) - { - status = TimelineDurationProcessEvent( &timelineInfo ); - } - else - { - status = - TimelineDurationProcessRepeatInStack( &timelineInfo ); - } - - // Only continue loop if the above succeeded and didn't result - // in infinite all effects end value - if ( KErrNone == status && - KVibeTimeInfinite != timelineInfo.iTimeAllEffectsEnd ) - { - - // Check whether there are more events - if ( timelineInfo.iNextEvent ) - { - // Update times for the next event handling round - timelineInfo.iTimeEvent = - TimelineIVTGetters::VibeIVTGetEventTimeOffset( - timelineInfo.iNextEvent ); - } - else - { - timelineInfo.iTimeEvent = KVibeTimeInfinite; - } - - // Check whether there are more repeat bars in stack - if ( 0 <= timelineInfo.iRepeatBarStackTop ) - { - // Update repeat time value for next repeat bar - // handling round - timelineInfo.iTimeRepeat = - timelineInfo.iRepeatBarStack - [timelineInfo.iRepeatBarStackTop].iTimeOffsetEnd; - } - else - { - timelineInfo.iTimeRepeat = KVibeTimeInfinite; - } - } - } while( KErrNone == status && - KVibeTimeInfinite != timelineInfo.iTimeAllEffectsEnd && - ! ( KVibeTimeInfinite == timelineInfo.iTimeEvent && - KVibeTimeInfinite == timelineInfo.iTimeRepeat ) ); - - duration = timelineInfo.iTimeAllEffectsEnd; - } - else - { - // Invalid effect type - status = KErrGeneral; - } - } - else - { - status = KErrGeneral; - } - // return either duration or error status - return KErrNone == status ? duration : status; - } - -// --------------------------------------------------------------------------- -// Gets the TVibeIVTHeader from the effect data buffer. Basically just a cast -// --------------------------------------------------------------------------- -// -TVibeIVTHeader* IVTHelper::GetIVTHeader( const TUint8* aIVT ) - { - return reinterpret_cast( const_cast( aIVT ) ); - } - -// --------------------------------------------------------------------------- -// Returns ETrue if data buffer is either empty or contains zero effects. -// --------------------------------------------------------------------------- -// -TBool IVTHelper::IsEmpty( const TUint8* aIVT ) - { - // If aIVT is NULL, the GetNumEffects returns 0, i.e., no need - // to check for NULL here. - return 0 == GetNumEffects( aIVT ) ? ETrue : EFalse; - } - -// --------------------------------------------------------------------------- -// Gets the effect storage block size from the effect data buffer. -// --------------------------------------------------------------------------- -// -TUint16 IVTHelper::GetStorageBlockSize( const TUint8* aIVT ) - { - return IsEmpty( aIVT ) ? 0 : - GetIVTHeader( aIVT )->iEffectStorageBlockSize_0_7 + - ( GetIVTHeader( aIVT )->iEffectStorageBlockSize_8_15 << 8 ); - } - -// --------------------------------------------------------------------------- -// Gets the effect storage block size from the effect data buffer. -// --------------------------------------------------------------------------- -// -TUint16 IVTHelper::GetNameBlockSize( const TUint8* aIVT ) - { - return IsEmpty( aIVT ) ? 0 : - GetIVTHeader( aIVT )->iEffectNameBlockSize_0_7 + - ( GetIVTHeader( aIVT )->iEffectNameBlockSize_8_15 << 8 ); - } - -// --------------------------------------------------------------------------- -// Returns ETrue if data buffer contains name block. -// --------------------------------------------------------------------------- -// -TBool IVTHelper::HasNameBlock( const TUint8* aIVT ) - { - return 0 != GetNameBlockSize( aIVT ) ? ETrue : EFalse; - } - -// --------------------------------------------------------------------------- -// Gets the storage block from the effect data buffer. -// --------------------------------------------------------------------------- -// -TUint8* IVTHelper::GetStorageBlock( const TUint8* aIVT ) - { - // Storage block starts after the IVT header - return IsEmpty( aIVT ) ? 0 : - reinterpret_cast( GetIVTHeader( aIVT ) + 1 ); - } - -// --------------------------------------------------------------------------- -// Gets the storage offset subblock from the effect data buffer. -// --------------------------------------------------------------------------- -// -TUint8* IVTHelper::GetStorageOffsetSubBlock( const TUint8* aIVT ) - { - // The storage offset subblock is in the beginning of the storage block - return GetStorageBlock( aIVT ); - } - -// --------------------------------------------------------------------------- -// Gets the storage data subblock from the effect data buffer. -// --------------------------------------------------------------------------- -// -TUint8* IVTHelper::GetStorageDataSubBlock( const TUint8* aIVT ) - { - // First get the storage offset subblock start point and then advance - // over the offsets (there are 2 bytes of offset value per effect) - return IsEmpty( aIVT ) ? 0 : - GetStorageOffsetSubBlock( aIVT ) + 2* GetNumEffects( aIVT ); - } - -// --------------------------------------------------------------------------- -// Gets the name block from the effect data buffer. -// --------------------------------------------------------------------------- -// -TUint8* IVTHelper::GetNameBlock( const TUint8* aIVT ) - { - // Name block starts right after the storage block - return IsEmpty( aIVT ) ? 0 : - GetStorageBlock( aIVT ) + GetStorageBlockSize( aIVT ); - } - -// --------------------------------------------------------------------------- -// Gets the name offset subblock from the effect data buffer. -// --------------------------------------------------------------------------- -// -TUint8* IVTHelper::GetNameOffsetSubBlock( const TUint8* aIVT ) - { - // Name offset subblock is in the beginning of the name block - return GetNameBlock( aIVT ); - } - -// --------------------------------------------------------------------------- -// Gets the name data subblock from the effect data buffer. -// --------------------------------------------------------------------------- -// -TUint8* IVTHelper::GetNameDataSubBlock( const TUint8* aIVT ) - { - // First get the name offset subblock start point and then advance - // over the offsets (there are 2 bytes of offset value per effect) - return IsEmpty( aIVT ) ? 0 : - GetNameOffsetSubBlock( aIVT ) + 2 * GetNumEffects( aIVT ); - } - - -// --------------------------------------------------------------------------- -// Calculates the size of the effect data buffer. -// --------------------------------------------------------------------------- -// -TUint IVTHelper::GetIVTSize( const TUint8* aIVT) - { - TUint size( 0 ); - if ( aIVT ) - { - size = sizeof( TVibeIVTHeader ) - + GetIVTHeader( aIVT )->iEffectNameBlockSize_0_7 - + ( GetIVTHeader( aIVT )->iEffectNameBlockSize_8_15 << 8 ) - + GetIVTHeader( aIVT )->iEffectStorageBlockSize_0_7 - + ( GetIVTHeader( aIVT )->iEffectStorageBlockSize_8_15 << 8 ); - } - return size; - } - -// --------------------------------------------------------------------------- -// Converts magnitude from firmware to user interface representation -// --------------------------------------------------------------------------- -// -TInt IVTHelper::ConvertToUserMagnitude( TInt aFwMagnitude ) - { - return ( aFwMagnitude * KHWRMHapticsMaxMagnitude ) / KVibeMaxFirmwareMagnitude; - }; - -// --------------------------------------------------------------------------- -// Converts duration from firmware to user interface representation -// --------------------------------------------------------------------------- -// -TInt IVTHelper::ConvertToUserDuration( TVibeIVTMessageTime aFwDuration ) - { - return KVibeFirmwareTimeInfinite == aFwDuration ? KVibeTimeInfinite : - static_cast( aFwDuration ); - }; - -// --------------------------------------------------------------------------- -// Converts frequency from firmware to user interface representation -// --------------------------------------------------------------------------- -// -TInt IVTHelper::ConvertToUserFrequency( TVibeIVTFreqPer aFwFrequency ) - { - // map received value to a value between 100 and 1000000 - TInt tmpFreq = aFwFrequency >= 2900 ? - 1000000 : - aFwFrequency >= 2000 ? - static_cast( ( aFwFrequency - 1900 ) * 1000 ) : - aFwFrequency >= 1000 ? - static_cast( ( aFwFrequency - 900 ) * 100 ) : - aFwFrequency > 0 ? - static_cast( ( aFwFrequency + 10 ) * 10 ) : - 100; - - return 1000000 / tmpFreq ; - }; - -// --------------------------------------------------------------------------- -// Helper function to process timeline events (substructures within timeline -// effects). -// Used by GetIVTEffectDuration in case it is called for timeline effect. -// --------------------------------------------------------------------------- -// -TInt IVTHelper::TimelineDurationProcessEvent( TVibeTimeLineInfo* aTimelineInfo ) - { - TInt status( KErrNone ); - - if ( aTimelineInfo && aTimelineInfo->iNextEvent ) - { - // pointer for propagating through the timeline info - const TUint8* propPtr = aTimelineInfo->iNextEvent; - - // event specific handling - switch ( *propPtr ) - { - case KVibeIvtPropertyTypeLaunchPlayback: - // Process launch playback event - { - TVibeIVTMessageTime timeLaunchEventDuration( 0 ); - TBool overrides( EFalse ); - TInt effectID = TimelineIVTGetters::VibeIVTGetEffectID( - propPtr + 1, &propPtr ); - TInt timeOffset = TimelineIVTGetters::VibeIVTGetTimeOffset( - propPtr, &propPtr ); - - // loop through overrides and save override duration if found - while ( VIBE_IVT_IS_OVERRIDE( propPtr ) ) - { - // override-type specific handling - switch ( *propPtr ) - { - case KVibeIvtPropertyTypeDurationMsU16: - { - overrides = ETrue; - timeLaunchEventDuration = - TimelineIVTGetters::VibeIVTGetDuration( - propPtr, &propPtr ); - if ( KVibeFirmwareTimeInfinite == - timeLaunchEventDuration ) - { - aTimelineInfo->iTimeAllEffectsEnd = - KVibeTimeInfinite; - } - break; - } - case KVibeIvtPropertyTypeMagnitudeS8: - { - // skip this, following updates propPtr correctly - TimelineIVTGetters::VibeIVTGetMagnitude( - propPtr, &propPtr ); - break; - } - case KVibeIvtPropertyTypeFreqPeriodU16: - { - // skip this, following updates propPtr correctly - TimelineIVTGetters::VibeIVTGetFreqPer( - propPtr, &propPtr ); - break; - } - } - } // override looping - - // We only need to continue if there was no override - // for duration - if ( !overrides ) - { - // No override for duration. Get the basis effect - // duration instead. - // First, get a pointer to the beginning of the effect - // definition of the corresponding effect. - TUint8* timelineBasisEffect = - aTimelineInfo->iDataSubBlock - + aTimelineInfo->iOffsetSubBlock[2*effectID] - + ( aTimelineInfo->iOffsetSubBlock[2*effectID+1] - << 8 ); - - // Skip any (possible) preceding messages before the - // SetPeriodic message - while ( KVibeMessageTypeSetPeriodic != - VIBE_IVT_GET_MESSAGE_TYPE( timelineBasisEffect ) ) - { - timelineBasisEffect += KVibeIvtMessageSize; - } - - timeLaunchEventDuration = - VIBE_IVT_GET_PERIODIC_DURATION( timelineBasisEffect ); - - if ( KVibeFirmwareTimeInfinite == - timeLaunchEventDuration ) - { - // Set the all effects end to infinite value - aTimelineInfo->iTimeAllEffectsEnd = KVibeTimeInfinite; - } - } - - if ( KVibeTimeInfinite != aTimelineInfo->iTimeAllEffectsEnd ) - { - // If the all effects end value is not 'infinite', - // we need to set that value to current effects end - // value (but only if its later than the current all - // effects end value) - TInt timeEffectEnd = - aTimelineInfo->iTimeOffsetZero - + ConvertToUserDuration( timeLaunchEventDuration ) - + timeOffset; - if ( timeEffectEnd > aTimelineInfo->iTimeAllEffectsEnd ) - { - aTimelineInfo->iTimeAllEffectsEnd = timeEffectEnd; - } - - // also update the iNextEvent pointer (note this too has - // only meaning if the all effects end value is not - // 'infinite' - aTimelineInfo->iNextEvent = propPtr; - } - break; - } - case KVibeIvtPropertyTypeRepeatBar: - { - // Process repeat playback event - TInt timeOffsetStart = - TimelineIVTGetters::VibeIVTGetTimeOffset( - propPtr + 1, &propPtr ); - TInt timeOffsetEnd = - TimelineIVTGetters::VibeIVTGetTimeOffset( propPtr, &propPtr ); - TInt count = - TimelineIVTGetters::VibeIVTGetCount( propPtr, &propPtr ); - - if ( KVibeRepeatCountInfinite == count ) - { - aTimelineInfo->iTimeAllEffectsEnd = KVibeTimeInfinite; - } - else if ( KRepeatBarStackMaxSize > - aTimelineInfo->iRepeatBarStackTop + 1 ) - { - // Push repeat bar to repeat bar stack - ++aTimelineInfo->iRepeatBarStackTop; - TVibeRepeatBar& tmp = - aTimelineInfo->iRepeatBarStack - [aTimelineInfo->iRepeatBarStackTop]; - tmp.iTimeOffsetEnd = timeOffsetEnd; - tmp.iTimeDuration = timeOffsetEnd - timeOffsetStart; - tmp.iCount = count; - tmp.iEvent = propPtr; // First event following this repeat - // event, could be outside the - // repeat bar - - // update the iNextEvent pointer - aTimelineInfo->iNextEvent = propPtr; - } - else - { - // More than KHpeRepeatBarStackNum repeat bars in - // the timeline. Bail out. - status = KErrGeneral; - } - break; - } - case KVibeIvtPropertyTypeEndOfList: - { - // End of event list - aTimelineInfo->iNextEvent = 0; - break; - } - default: - { - status = KErrGeneral; - break; - } - } - } - else - { - status = KErrGeneral; - } - return status; - } - -// --------------------------------------------------------------------------- -// Helper function to process timeline repeat bars that are closing. -// Used by GetIVTEffectDuration in case it is called for timeline effect. -// --------------------------------------------------------------------------- -// -TInt IVTHelper::TimelineDurationProcessRepeatInStack( - TVibeTimeLineInfo* aTimelineInfo ) - { - TInt status( KErrNone ); - - // sanity check - if ( aTimelineInfo && - 0 <= aTimelineInfo->iRepeatBarStackTop && - KVibeRepeatCountInfinite != - aTimelineInfo-> - iRepeatBarStack[aTimelineInfo->iRepeatBarStackTop].iCount ) - { - // Processing needed only if count isn't already zero - if ( 0 < - aTimelineInfo-> - iRepeatBarStack[aTimelineInfo->iRepeatBarStackTop].iCount-- ) - { - // update iNextEvent pointer - aTimelineInfo->iNextEvent = - aTimelineInfo->iRepeatBarStack - [aTimelineInfo->iRepeatBarStackTop].iEvent; - - // Update the all effects end value if the end of repeat - // is later than the current value - TInt timeRepeat = - aTimelineInfo->iTimeOffsetZero - + aTimelineInfo-> - iRepeatBarStack[aTimelineInfo->iRepeatBarStackTop]. - iTimeOffsetEnd; - if ( timeRepeat > aTimelineInfo->iTimeAllEffectsEnd ) - { - aTimelineInfo->iTimeAllEffectsEnd = timeRepeat; - } - - // Add the repeat bar duration to the effect start time: - // repeating the last T time is like adding T to the ZeroTime - aTimelineInfo->iTimeOffsetZero += - aTimelineInfo->iRepeatBarStack - [aTimelineInfo->iRepeatBarStackTop].iTimeDuration; - - // If count has reached zero, update the repeat bar stack - // top value (the current top has now been handled) - if (0 == aTimelineInfo->iRepeatBarStack - [aTimelineInfo->iRepeatBarStackTop].iCount) - { - --aTimelineInfo->iRepeatBarStackTop; - } - } - } - else - { - status = KErrGeneral; - } - return status; - } - -// end of file - diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/src/timelineivtgetters.cpp --- a/hwrmhaptics/hapticseffectdatagetterfw/plugins/hapticsivtgetterplugin/src/timelineivtgetters.cpp Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,342 +0,0 @@ -/* -* Copyright (c) 2008 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: IVT effect get functions' high level helper functions -* (for timeline effects) implementation file. -*/ - -#include "timelineivtgetters.h" - -// --------------------------------------------------------------------------- -// Gets the effectID from the current location of the data as pointed by the -// aProp pointer argument and advances the aPProp argument's pointer value to -// the next data location -// --------------------------------------------------------------------------- -// -TVibeIVTEffectID TimelineIVTGetters::VibeIVTGetEffectID( - const TUint8* aProp, - const TUint8** aPProp ) - { - TVibeIVTEffectID effectID( 0 ); - - // aPProp can be NULL if the caller doesn't want to retrieve it - if ( aProp ) - { - switch ( *( aProp++ ) ) - { - case KVibeIvtPropertyTypeEffectIdU16: - effectID |= *( aProp++ ) << 8; - // fall through - case KVibeIvtPropertyTypeEffectIdU8: - effectID |= *( aProp++ ); - break; - default: - { - // We shouldn't come here - break; - } - } - if ( aPProp ) - { - *aPProp = aProp; - } - } - return effectID; - } - -// --------------------------------------------------------------------------- -// Gets the time offset from the current location of the data as pointed by -// the aProp pointer argument and advances the aPProp argument's pointer value -// to the next data location -// --------------------------------------------------------------------------- -// -TInt TimelineIVTGetters::VibeIVTGetTimeOffset( const TUint8* aProp, - const TUint8** aPProp ) - { - TInt time( 0 ); - - // aPProp can be NULL if the caller doesn't want to retrieve it - if ( aProp ) - { - switch ( *( aProp++ ) ) - { - case KVibeIvtPropertyTypeTimeOffsetU32: - time |= *( aProp++ ) << 24; - // fall through - case KVibeIvtPropertyTypeTimeOffsetU24: - time |= *( aProp++ ) << 16; - // fall through - case KVibeIvtPropertyTypeTimeOffsetU16: - time |= *( aProp++ ) << 8; - time |= *( aProp++ ); - break; - default: - { - // We should never come here. - break; - } - } - if ( aPProp ) - { - *aPProp = aProp; - } - } - return time; - } - -// --------------------------------------------------------------------------- -// Gets the count value from the current location of the data as pointed by -// the aProp pointer argument and advances the aPProp argument's pointer value -// to the next data location -// --------------------------------------------------------------------------- -// -TVibeIVTCount TimelineIVTGetters::VibeIVTGetCount( const TUint8* aProp, - const TUint8** aPProp ) - { - TVibeIVTCount count( 0 ); - - // aPProp can be NULL if the caller doesn't want to retrieve it - if ( aProp ) - { - switch ( *( aProp++ ) ) - { - case KVibeIvtPropertyTypeCountU8: - count |= *( aProp++ ); - break; - default: - { - // We should never come here. - break; - } - } - if ( aPProp ) - { - *aPProp = aProp; - } - } - return count; - } - -// --------------------------------------------------------------------------- -// Gets the duration value from the current location of the data as pointed by -// the aProp pointer argument and advances the aPProp argument's pointer value -// to the next data location -// --------------------------------------------------------------------------- -// -TVibeIVTMessageTime TimelineIVTGetters::VibeIVTGetDuration( - const TUint8* aProp, - const TUint8** aPProp ) - { - TVibeIVTMessageTime duration( 0 ); - - // aPProp can be NULL if the caller doesn't want to retrieve it - if ( aProp ) - { - switch ( *( aProp++ ) ) - { - case KVibeIvtPropertyTypeDurationMsU16: - duration |= *( aProp++ ) << 8; - duration |= *( aProp++ ); - break; - default: - { - // We should never come here. - break; - } - } - if ( aPProp ) - { - *aPProp = aProp; - } - } - return duration; - } - -// --------------------------------------------------------------------------- -// Gets the magnitude from the current location of the data as pointed by the -// aProp pointer argument and advances the aPProp argument's pointer value to -// the next data location -// --------------------------------------------------------------------------- -// -TVibeIVTMagnitude TimelineIVTGetters::VibeIVTGetMagnitude( - const TUint8* aProp, - const TUint8** aPProp ) - { - TVibeIVTMagnitude magnitude( 0 ); - - // aPProp can be NULL if the caller doesn't want to retrieve it - if ( aProp ) - { - switch ( *( aProp++ ) ) - { - case KVibeIvtPropertyTypeMagnitudeS8: - magnitude |= *( aProp++ ); - break; - default: - { - // We should never come here. - break; - } - } - if ( aPProp ) - { - *aPProp = aProp; - } - } - return magnitude; - } - -// --------------------------------------------------------------------------- -// Gets the frequency value from the current location of the data as pointed -// by the aProp pointer argument and advances the aPProp argument's pointer -// value to the next data location -// --------------------------------------------------------------------------- -// -TVibeIVTFreqPer TimelineIVTGetters::VibeIVTGetFreqPer( - const TUint8* aProp, - const TUint8** aPProp ) - { - TVibeIVTFreqPer freqper( 0 ); - - // aPProp can be NULL if the caller doesn't want to retrieve it - if ( aProp ) - { - switch ( *( aProp++ ) ) - { - case KVibeIvtPropertyTypeFreqPeriodU16: - freqper |= *( aProp++ ) << 8; - freqper |= *( aProp++ ); - break; - default: - { - // We should never come here. - break; - } - } - if ( aPProp ) - { - *aPProp = aProp; - } - } - return freqper; - } - -// --------------------------------------------------------------------------- -// Gets the event offset time from the current location of the -// data as pointed by the aProp pointer argument. -// This is the generic version that usually is called and that in turn uses -// the above more specific getters. -// --------------------------------------------------------------------------- -// -TInt TimelineIVTGetters::VibeIVTGetEventTimeOffset( const TUint8* aProp ) - { - // Default return value a time that's guaranteed to never play - TInt offset( KVibeTimeInfinite ); - if ( aProp ) - { - // Return the start time depending on the event type - switch ( *aProp ) - { - case KVibeIvtPropertyTypeLaunchPlayback: - offset = VibeIVTGetLaunchPlaybackEventTimeOffset( aProp ); - break; - case KVibeIvtPropertyTypeRepeatBar: - offset = VibeIVTGetRepeatBarEventTimeOffset( aProp ); - break; - default: - { - // We should never come here. - break; - } - } - } - return offset; - } - -// --------------------------------------------------------------------------- -// Gets the override value(s) from the current location of the data as pointed -// by the aProp pointer argument and advances the aPProp argument's pointer -// value to the next data location -// --------------------------------------------------------------------------- -// -void TimelineIVTGetters::VibeIVTGetOverrides( - const TUint8* aProp, - TVibeIVTOverrideFlags* aOverrideFlags, - TVibeIVTMessageTime* aDuration, - TVibeIVTMagnitude* aMagnitude, - TVibeIVTFreqPer* aFreqPer, - const TUint8** aPProp ) - { - // aPProp can be NULL if the caller doesn't want to retrieve it - if ( aProp && aOverrideFlags && aDuration && aMagnitude && aFreqPer ) - { - *aOverrideFlags = 0; - while ( VIBE_IVT_IS_OVERRIDE( aProp ) ) - { - switch ( *aProp ) - { - case KVibeIvtPropertyTypeDurationMsU16: - *aOverrideFlags |= KVibeIvtOverrideFlagDuration; - *aDuration = VibeIVTGetDuration( aProp, &aProp ); - break; - case KVibeIvtPropertyTypeMagnitudeS8: - *aOverrideFlags |= KVibeIvtOverrideFlagMagnitude; - *aMagnitude = VibeIVTGetMagnitude( aProp, &aProp ); - break; - case KVibeIvtPropertyTypeFreqPeriodU16: - *aOverrideFlags |= KVibeIvtOverrideFlagFreqPeriod; - *aFreqPer = VibeIVTGetFreqPer( aProp, &aProp ); - break; - default: - { - // We should never come here. - break; - } - } - } - if ( aPProp ) - { - *aPProp = aProp; - } - } - } - -// --------------------------------------------------------------------------- -// Gets the launch playback event offset time from the current location of the -// data as pointed by the aProp pointer argument -// --------------------------------------------------------------------------- -// -TInt TimelineIVTGetters::VibeIVTGetLaunchPlaybackEventTimeOffset( - const TUint8* aProp ) - { - TInt offset( 0 ); - if ( aProp ) - { - VibeIVTGetEffectID( aProp + 1, &aProp ); // skip the return value - offset = VibeIVTGetTimeOffset( aProp, 0 ); - } - return offset; - } - -// --------------------------------------------------------------------------- -// Gets the repeat event offset time from the current location of the -// data as pointed by the aProp pointer argument -// --------------------------------------------------------------------------- -// -TInt TimelineIVTGetters::VibeIVTGetRepeatBarEventTimeOffset( - const TUint8* aProp ) - { - return aProp ? VibeIVTGetTimeOffset( aProp + 1, 0 ) : 0; - } - -// end of file diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticspacketizer/group/bld.inf --- a/hwrmhaptics/hapticspacketizer/group/bld.inf Fri May 28 14:18:28 2010 +0100 +++ b/hwrmhaptics/hapticspacketizer/group/bld.inf Thu Jun 24 11:22:10 2010 +0100 @@ -20,7 +20,6 @@ PRJ_EXPORTS -#include "../plugins/hapticsvibepacketizerplugin/group/bld.inf" PRJ_MMPFILES hwrmhapticspacketizer.mmp diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticspacketizer/plugins/hapticsivtgetterplugin/group/bld.inf diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticspacketizer/plugins/hapticsvibepacketizerplugin/data/20021206.rss --- a/hwrmhaptics/hapticspacketizer/plugins/hapticsvibepacketizerplugin/data/20021206.rss Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -/* -* Copyright (c) 2009 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: Vibe packetizer plugin's ECom resource file. -* -*/ - -#include - -RESOURCE REGISTRY_INFO theInfo - { - dll_uid = 0x20021206; - interfaces = - { - INTERFACE_INFO - { - interface_uid = 0x20021205; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = 0x20021207; - version_no = 1; - display_name = ""; - default_data = ""; - opaque_data = ""; - } - }; - } - }; - } - -// End of file \ No newline at end of file diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticspacketizer/plugins/hapticsvibepacketizerplugin/group/bld.inf --- a/hwrmhaptics/hapticspacketizer/plugins/hapticsvibepacketizerplugin/group/bld.inf Fri May 28 14:18:28 2010 +0100 +++ b/hwrmhaptics/hapticspacketizer/plugins/hapticsvibepacketizerplugin/group/bld.inf Thu Jun 24 11:22:10 2010 +0100 @@ -1,27 +0,0 @@ -/* -* Copyright (c) 2008 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: Plugin for VibeTonz Haptics command packetizer. -* -*/ - -#include - -PRJ_PLATFORMS -DEFAULT - -PRJ_EXPORTS -../rom/hwrmhapticsvibepacketizerplugin.iby CORE_OS_LAYER_IBY_EXPORT_PATH(hwrmhapticsvibepacketizerplugin.iby) - -PRJ_MMPFILES -hwrmhapticsvibepacketizerplugin.mmp diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticspacketizer/plugins/hapticsvibepacketizerplugin/group/hwrmhapticsvibepacketizerplugin.mmp --- a/hwrmhaptics/hapticspacketizer/plugins/hapticsvibepacketizerplugin/group/hwrmhapticsvibepacketizerplugin.mmp Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* -* Copyright (c) 2008 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: Project definition file for Vibe Packetizer ECom plugin. -* -*/ - -#include -#include - -TARGET hwrmhapticsvibepacketizerplugin.dll -TARGETTYPE PLUGIN -UID 0x10009D8D 0x20021206 - -CAPABILITY CAP_ECOM_PLUGIN -VENDORID VID_DEFAULT - -SOURCEPATH ../src -SOURCE hwrmhapticsvibepacketizer.cpp - -USERINCLUDE ../inc - -// Default system include paths for osext layer modules. -OS_LAYER_SYSTEMINCLUDE -SYSTEMINCLUDE /epoc32/include/stdapis - -SOURCEPATH ../data -START RESOURCE 20021206.rss -TARGETPATH ECOM_RESOURCE_DIR -TARGET hwrmhapticsvibepacketizerplugin.rsc -END - -LIBRARY euser.lib -LIBRARY bafl.lib -LIBRARY ecom.lib -LIBRARY hwrmhapticspacketizer.lib diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticspacketizer/plugins/hapticsvibepacketizerplugin/inc/hwrmhapticsvibeconstants.h --- a/hwrmhaptics/hapticspacketizer/plugins/hapticsvibepacketizerplugin/inc/hwrmhapticsvibeconstants.h Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,145 +0,0 @@ -/* -* Copyright (c) 2008 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: VibeTonz related const definitions header file -* -*/ - -#ifndef _HWRMHAPTICSVIBECONSTANTS_H -#define _HWRMHAPTICSVIBECONSTANTS_H - -#include -#include - -/** - * Invalid index constant - */ -const TInt KVibeInvalidIndex = -1; - -/** - * String maximum length constants - */ -const TInt KVibeMaxEffectNameLength = 128; // Maximum effect name length -const TInt KVibeMaxDeviceNameLength = 64; // Maximum device name length -const TInt KVibeMaxCapabilityStringLength = 64; // Maximum capability string length -const TInt KVibeMaxPropertyStringLength = 64; // Maximum property string length - -/** - * 'Infinite' time - */ -const TInt KVibeTimeInfinite = INT_MAX; - -/** - * Device Default priority value - */ -const TInt KVibeDevicePriorityDefault = 0; - -/** - * 'Infinite' repeat count value - */ -const TUint8 KVibeRepeatCountInfinite = 255; - -/** - * Maximum size of streaming sample (in bytes) - */ -const TInt KVibeMaxStreamingSampleSize = 255; - -/** - * Data value types (used as property and capability data value type) - */ -const TUint8 KVibeValuetypeUnspecified = 0; -const TUint8 KVibeValuetypeInt32 = 1; -const TUint8 KVibeValuetypeBool = 2; -const TUint8 KVibeValuetypeString = 3; - -/** - * Error and Return value codes. - */ -// Success -const TInt KVibeStatusSuccess = 0; - -// Effect is not playing -const TInt KVibeWarningNotPlaying = 1; - -// Effect doesn't have enough priority to play, -// higher priority effect is playing on the device -const TInt KVibeWarningInsufficientPriority = 2; - -// Effects are disabled on the device -const TInt KVibeWarningEffectsDisabled = 3; - -// Trying to resume an effect that is not paused -const TInt KVibeWarningNotPaused = 4; - -// The API is already initialized (this code is obsolete) -const TInt KVibeErrAlreadyInitialized = -1; - -// The API is not initialized -const TInt KVibeErrNotInitialized = -2; - -// Invalid argument was used in a API function call -const TInt KVibeErrInvalidArgument = -3; - -// Generic error -const TInt KVibeErrFail = -4; - -// Incompatible Effect type has been passed into an API call -const TInt KVibeErrIncompatibleEffectType = -5; - -// Incompatible Capability type was used in one of the following API call: -// -ImmVibeGetDeviceCapabilityString -// -ImmVibeSetDeviceCapabilityString -// -ImmVibeGetDeviceCapabilityInt32 -// -ImmVibeGetDeviceCapabilityInt32 -const TInt KVibeErrIncompatibleCapabilityType = -6; - -// Incompatible Property type was used in on of the following API calls: -// -ImmVibeGetDevicePropertyString -// -ImmVibeSetDevicePropertyString -// -ImmVibeGetDevicePropertyBool -// -ImmVibeGetDevicePropertyInt32 -// -ImmVibeSetDevicePropertyInt32 -const TInt KVibeErrIncompatiblePropertyType = -7; - -// Access to the instance of haptics is locked until a valid license key is provided. -// Use ImmVibeSetDevicePropertyString to set the license key. -// The following API functions may return this error -// -ImmVibeGetDevicePropertyBool -// -ImmVibeSetDevicePropertyBool -// -ImmVibeGetDevicePropertyInt32 -// -ImmVibeSetDevicePropertyInt32 -// -ImmVibeGetDevicePropertyString -// -ImmVibeSetDevicePropertyString (except for setting the license key) -// -ImmVibePlayIVTEffect -// -ImmVibePlayIVTEffectRepeat -// -ImmVibeStopPlayingEffect -// -ImmVibePlayMagSweepEffect -// -ImmVibePlayPeriodicEffect -// -ImmVibeModifyPlayingMagSweepEffect -// -ImmVibeModifyPlayingPeriodicEffect -// -ImmVibeStopAllPlayingEffects -const TInt KVibeErrDeviceNeedsLicense = -8; - -// Cannot allocate memory to complete the request -const TInt KVibeErrNotEnoughMemory = -9; - -// ImmVibe service is not running -const TInt KVibeErrServiceNotRunning = -10; - -// Insufficient priority to complete the request (insufficient license key priority) -const TInt KVibeErrInsufficientPriority = -11; - -// ImmVibe service is busy and failed to complete the request -const TInt KVibeErrServiceBusy = -12; - -#endif // _HWRMHAPTICSVIBECONSTANTS_H diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticspacketizer/plugins/hapticsvibepacketizerplugin/inc/hwrmhapticsvibepacketizer.h --- a/hwrmhaptics/hapticspacketizer/plugins/hapticsvibepacketizerplugin/inc/hwrmhapticsvibepacketizer.h Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,377 +0,0 @@ -/* -* Copyright (c) 2008 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: Plugin for handling vibe command packages. -* -*/ - -#ifndef C_HWRMHAPTICSVIBEPACKETIZER_H -#define C_HWRMHAPTICSVIBEPACKETIZER_H - -#include -#include - -class CDesC8ArraySeg; - -/** - * ECom plugin for handling vibe command packages. - * - * @lib hwrmhapticsvibepacketizerplugin.lib - * @since S60 v5.1 - */ -NONSHARABLE_CLASS( CHWRMHapticsVibePacketizer ): public CHWRMHapticsPacketizer - { -public: - - /** - * Two phased constructor. - * - * @return An instance of haptics vibe packetizer. - */ - static CHWRMHapticsVibePacketizer* NewL(); - - /** - * Destructor. - */ - virtual ~CHWRMHapticsVibePacketizer(); - -public: // From CHWRMHapticsPacketizer - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncOpenDeviceReq( THWRMLogicalActuators aLogicalActuator, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncCloseDeviceReq( TInt aDeviceHandle, RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncPlayMagSweepEffectReq( - TInt aDeviceHandle, - CHWRMHaptics::THWRMHapticsMagSweepEffect aEffect, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncPlayPeriodicEffectReq( - TInt aDeviceHandle, - CHWRMHaptics::THWRMHapticsPeriodicEffect aEffect, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncModifyPlayingMagSweepEffectReq( - TInt aDeviceHandle, - TInt aEffectHandle, - CHWRMHaptics::THWRMHapticsMagSweepEffect aEffect, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncModifyPlayingPeriodicEffectReq( - TInt aDeviceHandle, - TInt aEffectHandle, - CHWRMHaptics::THWRMHapticsPeriodicEffect aEffect, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncPausePlayingEffectReq( TInt aDeviceHandle, - TInt aEffectHandle, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncResumePausedEffectReq( TInt aDeviceHandle, - TInt aEffectHandle, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncStopPlayingEffectReq( TInt aDeviceHandle, - TInt aEffectHandle, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncStopAllPlayingEffectsReq( TInt aDeviceHandle, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncPlayEffectIncludeEffectDataReq( TInt aDeviceHandle, - const TDesC8& aData, - TInt aEffectIndex, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncPlayEffectRepeatIncludeEffectDataReq( TInt aDeviceHandle, - const TDesC8& aData, - TInt aEffectIndex, - TUint8 aRepeat, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncPlayEffectRepeatNoDataReq( TInt aDeviceHandle, - TInt aEffectIndex, - TUint8 aRepeat, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncPlayEffectNoDataReq( TInt aDeviceHandle, - TInt aEffectIndex, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncCreateStreamingEffectReq( TInt aDeviceHandle, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncDestroyStreamingEffectReq( TInt aDeviceHandle, - TInt aEffectHandle, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncPlayStreamingSampleReq( TInt aDeviceHandle, - const TDesC8& aStreamingSample, - TInt aEffectHandle, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncPlayStreamingSampleWithOffsetReq( - TInt aDeviceHandle, - const TDesC8& aStreamingSample, - TInt aOffsetTime, - TInt aEffectHandle, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncGetEffectStateReq( TInt aDeviceHandle, - TInt aEffectHandle, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncSetDevicePropertyBoolReq( TInt aDeviceHandle, - TBool aDevPropValue, - TInt aDevPropType, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncSetDevicePropertyIntReq( TInt aDeviceHandle, - TInt aDevPropValue, - TInt aDevPropType, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncSetDevicePropertyStringReq( TInt aDeviceHandle, - const TDesC8& aDevPropValue, - TInt aDevPropType, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncSetPlatformLicenseKeyReq( TInt aDeviceHandle, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncGetDevicePropertyBoolReq( TInt aDeviceHandle, - TInt aDevPropType, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncGetDevicePropertyIntReq( TInt aDeviceHandle, - TInt aDevPropType, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncGetDevicePropertyStringReq( TInt aDeviceHandle, - TInt aDevPropType, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncGetDeviceCapabilityIntReq( TInt aDeviceHandle, - TInt aDevCapType, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt EncGetDeviceCapabilityStringReq( TInt aDeviceHandle, - TInt aDevCapType, - RBuf8& aBuffer ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual CDesC8ArraySeg* DecodeMessageL( const TDesC8& aData, - TInt& aStatus ); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt DeviceHandle(); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt InfiniteRepeat(); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt InfiniteDuration(); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt MaxEffectNameLength(); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt MaxDeviceNameLength(); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt MaxCapabilityStringLength(); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt MaxPropertyStringLength(); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt MaxStreamingSampleSize(); - - /** - * @see MHWRMHapticsPacketizer - */ - virtual TInt DefaultDevicePriority(); - -private: - - /** - * Constructor. - */ - CHWRMHapticsVibePacketizer(); - - /** - * 2nd phase constructor. - */ - void ConstructL(); - - /** - * Internal helper method. Fills Get Device Capability request data. - */ - TInt EncGetDeviceCapabilityReqInternal( TInt aValueType, - TInt aDeviceHandle, - TInt aDevCapType, - RBuf8& aBuffer ); - - /** - * Internal helper method. Fills Get Device Property request data. - */ - TInt EncGetDevicePropertyReqInternal( TInt aValueType, - TInt aDeviceHandle, - TInt aDevPropType, - RBuf8& aBuffer ); - - /** - * Internal helper method. Fills Play Streaming Sample request data. - */ - TInt EncPlayStreamingSampleInternal( TInt aDeviceHandle, - TInt aEffectHandle, - const TDesC8& aStreamingSample, - TInt aOffsetTime, - RBuf8& aBuffer ); - - /** - * Maps Vibe error code to Symbian error code. - * - * @param aVibeError Vibe error code. - * @return Symbian system wide error code. - */ - TInt MapError( TInt aVibeError ); - -private: // data - - /** - * Buffer for request data. - */ - RBuf8 iReqBuf; - - /** - * Buffer for streaming or IVT data. - */ - RBuf8 iDataBuf; - - /** - * Array used for decoded values in DecodeMessageL. Owned. - */ - CDesC8ArraySeg* iReturnArray; - - /** - * Stores the latest value of opened device handle. Initiated - * to KErrNotFound. - */ - TInt iDeviceHandle; - }; - -#endif // C_HWRMHAPTICSVIBEPACKETIZER_H diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticspacketizer/plugins/hapticsvibepacketizerplugin/inc/hwrmhapticsvibepackets.h --- a/hwrmhaptics/hapticspacketizer/plugins/hapticsvibepacketizerplugin/inc/hwrmhapticsvibepackets.h Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,735 +0,0 @@ -/* -* Copyright (c) 2008 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: VibeTonz API protocol packet definition header file -* -*/ - -#ifndef _HWRMHAPTICSVIBEPACKETS_H_ -#define _HWRMHAPTICSVIBEPACKETS_H_ - -/** - * Byte alignment is set to 1 byte boundary with this pragma. - */ -#pragma pack( push, 1 ) - -/** - * Const for largest allowable packet size. It is used - * by packetizer functions that piggyback IVT or streaming - * data in their packets. - */ -const TInt KVibePacketMaxSize = 0xFFFF; - -/** - * Haptics command codes (VibeTonz API command codes) - */ -const TUint16 KVibeCmdProtocolVersion = 0xFF; -const TUint16 KVibeCmdApiVersion = 0x00; -const TUint16 KVibeCmdInitialize = 0x01; -const TUint16 KVibeCmdTerminate = 0x02; -const TUint16 KVibeCmdPlayBasisEffect = 0x03; -const TUint16 KVibeCmdPlayIVTEffectIncludeData = 0x04; -const TUint16 KVibeCmdPlayIVTEffectNoData = 0x05; -const TUint16 KVibeCmdModifyBasisEffect = 0x06; -const TUint16 KVibeCmdStopEffect = 0x07; -const TUint16 KVibeCmdStopAllEffects = 0x08; -const TUint16 KVibeCmdGetDeviceCapabilities = 0x09; -const TUint16 KVibeCmdDebugBuffer = 0x0A; -const TUint16 KVibeCmdResetDebugBuffer = 0x0B; -const TUint16 KVibeCmdStopDesignedBridge = 0x0C; -const TUint16 KVibeCmdGetDeviceState = 0x0D; -const TUint16 KVibeCmdSetKernelParameter = 0x0E; -const TUint16 KVibeCmdGetKernelParameter = 0x0F; -const TUint16 KVibeCmdSetDeviceProperty = 0x10; -const TUint16 KVibeCmdGetDeviceProperty = 0x11; -const TUint16 KVibeCmdOpenDevice = 0x12; -const TUint16 KVibeCmdCloseDevice = 0x13; -const TUint16 KVibeCmdStartDesignerBridge = 0x14; -const TUint16 KVibeCmdDeviceCount = 0x15; -const TUint16 KVibeCmdPlayStreamingSample = 0x16; -const TUint16 KVibeCmdCreateStreamingEffect = 0x17; -const TUint16 KVibeCmdDestroyStreamingEffect = 0x18; -const TUint16 KVibeCmdPausePlayingEffect = 0x19; -const TUint16 KVibeCmdResumePausedEffect = 0x1A; -const TUint16 KVibeCmdGetEffectState = 0x1B; -const TUint16 KVibeCmdPlayMagSweepEffect = 0x1C; -const TUint16 KVibeCmdPlayPeriodicEffect = 0x1D; -const TUint16 KVibeCmdModifyPlayingMagSweepEffect = 0x1E; -const TUint16 KVibeCmdModifyPlayingPeriodicEffect = 0x1F; -const TUint16 KVibeCmdSetLicense = 0x20; - -/** - * Simple request struct contains just command code - */ -struct TVibePacketSimpleRequest - { - TUint16 iCmdCode; - }; - -/** - * Simple response struct contains just command code and status. - */ -struct TVibePacketSimpleResponse - { - TUint16 iCmdCode; - TInt8 iVibeStatus; - }; - -/** - * Packet structures for Protocol Version request and response - * (Implemented since Mobile 2.0 protocol) - */ -typedef TVibePacketSimpleRequest TVibePacketProtocolVersionRequest; - -struct TVibePacketProtocolVersionResponse - { - TUint16 iCmdCode; - TUint8 iVersionMinor; - TUint8 iVersionMajor; - }; - - -/** - * Packet structures for API Version request and response - */ -typedef TVibePacketSimpleRequest TVibePacketApiVersionRequest; - -struct TVibePacketApiVersionResponse - { - TUint16 iCmdCode; - TUint8 iVersionMajor; - TUint8 iVersionMinor; - TUint8 iVersionBuild_7_0; - TUint8 iVersionBuild_15_8; - }; - -/** - * Packet structures for Initialize request and response - */ -struct TVibePacketInitializeRequest - { - TUint16 iCmdCode; - TUint8 iVersionMajor; - TUint8 iVersionMinor; - TUint8 iVersionBuild_7_0; - TUint8 iVersionBuild_15_8; - }; - -typedef TVibePacketSimpleResponse TVibePacketInitializeResponse; - -/** - * Packet structures for Terminate request and response - */ -typedef TVibePacketSimpleRequest TVibePacketTerminateRequest; - -typedef TVibePacketSimpleResponse TVibePacketTerminateResponse; - -/** - * Packet structures for PlayBasisEffect request and response. - * Used with following commands: - * - KVibeCmdPlayBasisEffect - * - KVibeCmdPlayMagSweepEffect - * - KVibeCmdPlayPeriodicEffect - */ -struct TVibePacketPlayBasisEffectRequest - { - TUint16 iCmdCode; - TUint8 iDeviceHandle_7_0; - TUint8 iDeviceHandle_15_8; - TUint8 iDeviceHandle_23_16; - TUint8 iDeviceHandle_31_24; - TUint8 iDuration_7_0; - TUint8 iDuration_15_8; - TUint8 iDuration_23_16; - TUint8 iDuration_31_24; - TUint8 iMagnitude_7_0; - TUint8 iMagnitude_15_8; - TUint8 iMagnitude_23_16; - TUint8 iMagnitude_31_24; - TUint8 iEffectTypeStyle; - TUint8 iPeriod_7_0; - TUint8 iPeriod_15_8; - TUint8 iPeriod_23_16; - TUint8 iPeriod_31_24; - TUint8 iImpulseTime_7_0; - TUint8 iImpulseTime_15_8; - TUint8 iImpulseTime_23_16; - TUint8 iImpulseTime_31_24; - TUint8 iImpulseLevel_7_0; - TUint8 iImpulseLevel_15_8; - TUint8 iImpulseLevel_23_16; - TUint8 iImpulseLevel_31_24; - TUint8 iFadeTime_7_0; - TUint8 iFadeTime_15_8; - TUint8 iFadeTime_23_16; - TUint8 iFadeTime_31_24; - TUint8 iFadeLevel_7_0; - TUint8 iFadeLevel_15_8; - TUint8 iFadeLevel_23_16; - TUint8 iFadeLevel_31_24; - }; - -struct TVibePacketPlayBasisEffectResponse - { - TUint16 iCmdCode; - TInt8 iVibeStatus; - TUint8 iEffectHandle_7_0; - TUint8 iEffectHandle_15_8; - TUint8 iEffectHandle_23_16; - TUint8 iEffectHandle_31_24; - }; - -/** - * Packet structures for PlayIVTEffect requests and responses. - * Used with following commands: - * - KVibeCmdPlayIVTEffectIncludeData - * - KVibeCmdPlayIVTEffectNoData - */ -struct TVibePacketPlayIVTEffectRequest - { - TUint16 iCmdCode; - TUint16 iIvtDataSize; - TUint8 iDeviceHandle_7_0; - TUint8 iDeviceHandle_15_8; - TUint8 iDeviceHandle_23_16; - TUint8 iDeviceHandle_31_24; - TUint8 iIvtIndex_7_0; - TUint8 iIvtIndex_15_8; - TUint8 iRepeat; - TUint8 iIvtData[1]; - }; - -struct TVibePacketPlayIVTEffectResponse - { - TUint16 iCmdCode; - TInt8 iVibeStatus; - TUint8 iEffectHandle_7_0; - TUint8 iEffectHandle_15_8; - TUint8 iEffectHandle_23_16; - TUint8 iEffectHandle_31_24; - }; - -/** - * Packet structures for ModifyBasisEffect request and response. - * Used with following commands: - * - KVibeCmdModifyBasisEffect - * - KVibeCmdModifyPlayingMagSweepEffect - * - KVibeCmdModifyPlayingPeriodicEffect - */ -struct TVibePacketModifyBasisEffectRequest - { - TUint16 iCmdCode; - TUint8 iDeviceHandle_7_0; - TUint8 iDeviceHandle_15_8; - TUint8 iDeviceHandle_23_16; - TUint8 iDeviceHandle_31_24; - TUint8 iEffectHandle_7_0; - TUint8 iEffectHandle_15_8; - TUint8 iEffectHandle_23_16; - TUint8 iEffectHandle_31_24; - TUint8 iDuration_7_0; - TUint8 iDuration_15_8; - TUint8 iDuration_23_16; - TUint8 iDuration_31_24; - TUint8 iMagnitude_7_0; - TUint8 iMagnitude_15_8; - TUint8 iMagnitude_23_16; - TUint8 iMagnitude_31_24; - TUint8 iEffectTypeStyle; - TUint8 iPeriod_7_0; - TUint8 iPeriod_15_8; - TUint8 iPeriod_23_16; - TUint8 iPeriod_31_24; - TUint8 iImpulseTime_7_0; - TUint8 iImpulseTime_15_8; - TUint8 iImpulseTime_23_16; - TUint8 iImpulseTime_31_24; - TUint8 iImpulseLevel_7_0; - TUint8 iImpulseLevel_15_8; - TUint8 iImpulseLevel_23_16; - TUint8 iImpulseLevel_31_24; - TUint8 iFadeTime_7_0; - TUint8 iFadeTime_15_8; - TUint8 iFadeTime_23_16; - TUint8 iFadeTime_31_24; - TUint8 iFadeLevel_7_0; - TUint8 iFadeLevel_15_8; - TUint8 iFadeLevel_23_16; - TUint8 iFadeLevel_31_24; - }; - -typedef TVibePacketSimpleResponse TVibePacketModifyBasisEffectResponse; - -/** - * Packet structures for StopEffect request and response - */ -struct TVibePacketStopEffectRequest - { - TUint16 iCmdCode; - TUint8 iEffectHandle_7_0; - TUint8 iEffectHandle_15_8; - TUint8 iEffectHandle_23_16; - TUint8 iEffectHandle_31_24; - TUint8 iDeviceHandle_7_0; - TUint8 iDeviceHandle_15_8; - TUint8 iDeviceHandle_23_16; - TUint8 iDeviceHandle_31_24; - }; - -typedef TVibePacketSimpleResponse TVibePacketStopEffectResponse; - -/** - * Packet structures for StopAllEffects request and response - */ -struct TVibePacketStopAllEffectsRequest - { - TUint16 iCmdCode; - TUint8 iDeviceHandle_7_0; - TUint8 iDeviceHandle_15_8; - TUint8 iDeviceHandle_23_16; - TUint8 iDeviceHandle_31_24; - }; - -typedef TVibePacketSimpleResponse TVibePacketStopAllEffectsResponse; - -/** - * Packet structures for GetDeviceCapabilities request and response - */ -struct TVibePacketGetDeviceCapabilitiesRequest - { - TUint16 iCmdCode; - TUint8 iCapabilityValueType; - TUint8 iDeviceIndex_7_0; - TUint8 iDeviceIndex_15_8; - TUint8 iDeviceIndex_23_16; - TUint8 iDeviceIndex_31_24; - TUint8 iCapabilityType_7_0; - TUint8 iCapabilityType_15_8; - TUint8 iCapabilityType_23_16; - TUint8 iCapabilityType_31_24; - }; - -struct TVibePacketGetDeviceCapabilitiesResponse - { - TUint16 iCmdCode; - TInt8 iVibeStatus; - TUint8 iCapabilityType_7_0; - TUint8 iCapabilityType_15_8; - TUint8 iCapabilityType_23_16; - TUint8 iCapabilityType_31_24; - TUint8 iCapabilityValueType; - TUint8 iSize; - TUint8 iCapabilityValue[1]; - }; - -/** - * Packet structures for Get DebugBuffer request and response - */ -typedef TVibePacketSimpleRequest TVibePacketGetDebugBufferRequest; - -struct TVibePacketGetDebugBufferResponse - { - TUint16 iCmdCode; - TUint8 iBufferSize_7_0; - TUint8 iBufferSize_15_8; - TUint8 iBuffer[1]; - }; - -/** - * Packet structures for ResetDebugBuffer request and response - */ -typedef TVibePacketSimpleRequest TVibePacketResetDebugBufferRequest; - -typedef TVibePacketSimpleResponse TVibePacketResetDebugBufferResponse; - -/** - * Packet structures for Stop designer Bridge request and response - */ -typedef TVibePacketSimpleRequest TVibePacketStopDesignerBridgeRequest; - -typedef TVibePacketSimpleResponse TVibePacketStopDesignerBridgeResponse; - -/** - * Packet structures for GetDeviceState request and response - */ -struct TVibePacketGetDeviceStateRequest - { - TUint16 iCmdCode; - TUint8 iDeviceIndex_7_0; - TUint8 iDeviceIndex_15_8; - TUint8 iDeviceIndex_23_16; - TUint8 iDeviceIndex_31_24; - }; - -struct TVibePacketGetDeviceStateResponse - { - TUint16 iCmdCode; - TInt8 iVibeStatus; - TUint8 iDeviceState_7_0; - TUint8 iDeviceState_15_8; - TUint8 iDeviceState_23_16; - TUint8 iDeviceState_31_24; - }; - -/** - * Packet structures for Set Device Kernel Parameter request and response - */ -struct TVibePacketSetKernelParameterRequest - { - TUint16 iCmdCode; - TUint8 iDeviceIndex_7_0; - TUint8 iDeviceIndex_15_8; - TUint8 iDeviceIndex_23_16; - TUint8 iDeviceIndex_31_24; - TUint8 iKernelParameterID_7_0; - TUint8 iKernelParameterID_15_8; - TUint8 iKernelParameterValue_7_0; - TUint8 iKernelParameterValue_15_8; - }; - -struct TVibePacketSetKernelParameterResponse - { - TUint16 iCmdCode; - TInt8 iVibeStatus; - TUint8 iKernelParameterID_7_0; - TUint8 iKernelParameterID_15_8; - }; - -/** - * Get Device Kernel Parameter request and response - */ - struct TVibePacketGetKernelParameterRequest - { - TUint16 iCmdCode; - TUint8 iDeviceIndex_7_0; - TUint8 iDeviceIndex_15_8; - TUint8 iDeviceIndex_23_16; - TUint8 iDeviceIndex_31_24; - TUint8 iKernelParameterID_7_0; - TUint8 iKernelParameterID_15_8; - }; - -struct TVibePacketGetKernelParameterResponse - { - TUint16 iCmdCode; - TInt8 iVibeStatus; - TUint8 iKernelParameterID_7_0; - TUint8 iKernelParameterID_15_8; - TUint8 iKernelParameterValue_7_0; - TUint8 iKernelParameterValue_15_8; - }; - -/** - * Packet structures for SetDeviceProperty request and response - */ -struct TVibePacketSetDevicePropertyRequest - { - TUint16 iCmdCode; - TUint8 iDeviceHandle_7_0; - TUint8 iDeviceHandle_15_8; - TUint8 iDeviceHandle_23_16; - TUint8 iDeviceHandle_31_24; - TUint8 iPropertyType_7_0; - TUint8 iPropertyType_15_8; - TUint8 iPropertyType_23_16; - TUint8 iPropertyType_31_24; - TUint8 iPropertyValueType; - TUint8 iSize; - TUint8 iPropertyValue[1]; - }; - -struct TVibePacketSetDevicePropertyResponse - { - TUint16 iCmdCode; - TInt8 iVibeStatus; - TUint8 iPropertyType_7_0; - TUint8 iPropertyType_15_8; - TUint8 iPropertyType_23_16; - TUint8 iPropertyType_31_24; - TUint8 iPropertyValueType; - }; - -/** - * Packet structures for GetDeviceProperty request and response - */ -struct TVibePacketGetDevicePropertyRequest - { - TUint16 iCmdCode; - TUint8 iPropertyValueType; - TUint8 iDeviceHandle_7_0; - TUint8 iDeviceHandle_15_8; - TUint8 iDeviceHandle_23_16; - TUint8 iDeviceHandle_31_24; - TUint8 iPropertyType_7_0; - TUint8 iPropertyType_15_8; - TUint8 iPropertyType_23_16; - TUint8 iPropertyType_31_24; - }; - -struct TVibePacketGetDevicePropertyResponse - { - TUint16 iCmdCode; - TInt8 iVibeStatus; - TUint8 iPropertyType_7_0; - TUint8 iPropertyType_15_8; - TUint8 iPropertyType_23_16; - TUint8 iPropertyType_31_24; - TUint8 iPropertyValueType; - TUint8 iSize; - TUint8 iPropertyValue[1]; - }; - -/** - * Packet structures for OpenDevice - */ -struct TVibePacketOpenDeviceRequest - { - TUint16 iCmdCode; - TUint8 iDeviceIndex_7_0; - TUint8 iDeviceIndex_15_8; - TUint8 iDeviceIndex_23_16; - TUint8 iDeviceIndex_31_24; - }; - -struct TVibePacketOpenDeviceResponse - { - TUint16 iCmdCode; - TInt8 iVibeStatus; - TUint8 iDeviceHandle_7_0; - TUint8 iDeviceHandle_15_8; - TUint8 iDeviceHandle_23_16; - TUint8 iDeviceHandle_31_24; - }; - -/** - * Packet structures for CloseDevice request and response - */ -struct TVibePacketCloseDeviceRequest - { - TUint16 iCmdCode; - TUint8 iDeviceHandle_7_0; - TUint8 iDeviceHandle_15_8; - TUint8 iDeviceHandle_23_16; - TUint8 iDeviceHandle_31_24; - }; - -typedef TVibePacketSimpleResponse TVibePacketCloseDeviceResponse; - -/** - * Packet structures for Start designer Bridge request and response - */ -typedef TVibePacketSimpleRequest TVibePacketStartDesignedBridgeRequest; - -typedef TVibePacketSimpleResponse TVibePacketStartDesignedBridgeResponse; - -/** - * Packet structures for DeviceCount request and response - */ -typedef TVibePacketSimpleRequest TVibePacketDeviceCountRequest; - -// Uses simple response packet struct where vibe_status contains -// the device count (or negative error value) -typedef TVibePacketSimpleResponse TVibePacketDeviceCountResponse; - -/** - * Packet structures for Upload SPE data request and response - */ -struct TVibePacketPlayStreamingSampleRequest - { - TUint16 iCmdCode; - TUint8 iDeviceHandle_7_0; - TUint8 iDeviceHandle_15_8; - TUint8 iDeviceHandle_23_16; - TUint8 iDeviceHandle_31_24; - TUint8 iEffectHandle_7_0; - TUint8 iEffectHandle_15_8; - TUint8 iEffectHandle_23_16; - TUint8 iEffectHandle_31_24; - TUint8 iSize; - TUint8 iEffectOffsetTime_7_0; - TUint8 iEffectOffsetTime_15_8; - TUint8 iStreamingData[1]; - }; - -typedef TVibePacketSimpleResponse TVibePacketPlayStreamingSampleResponse; - -/** - * Packet structures for Create streaming effect request and response - */ -struct TVibePacketCreateStreamingEffectRequest - { - TUint16 iCmdCode; - TUint8 iDeviceHandle_7_0; - TUint8 iDeviceHandle_15_8; - TUint8 iDeviceHandle_23_16; - TUint8 iDeviceHandle_31_24; - }; - -struct TVibePacketCreateStreamingEffectResponse - { - TUint16 iCmdCode; - TInt8 iVibeStatus; - TUint8 iEffectHandle_7_0; - TUint8 iEffectHandle_15_8; - TUint8 iEffectHandle_23_16; - TUint8 iEffectHandle_31_24; - }; - -/** - * Packet structures for Destroy streaming effect request and response - */ -struct TVibePacketDestroyStreamingEffectRequest - { - TUint16 iCmdCode; - TUint8 iEffectHandle_7_0; - TUint8 iEffectHandle_15_8; - TUint8 iEffectHandle_23_16; - TUint8 iEffectHandle_31_24; - TUint8 iDeviceHandle_7_0; - TUint8 iDeviceHandle_15_8; - TUint8 iDeviceHandle_23_16; - TUint8 iDeviceHandle_31_24; - }; - -typedef TVibePacketSimpleResponse TVibePacketDestroyStreamingEffectResponse; - -/** - * Packet structures for Pause Playing Effect request and response - */ -struct TVibePacketPausePlayingEffectRequest - { - TUint16 iCmdCode; - TUint8 iEffectHandle_7_0; - TUint8 iEffectHandle_15_8; - TUint8 iEffectHandle_23_16; - TUint8 iEffectHandle_31_24; - TUint8 iDeviceHandle_7_0; - TUint8 iDeviceHandle_15_8; - TUint8 iDeviceHandle_23_16; - TUint8 iDeviceHandle_31_24; - }; - -typedef TVibePacketSimpleResponse TVibePacketPausePlayingEffectResponse; - -/** - * Packet structures for Resume Paused Effect request and response - */ -typedef TVibePacketPausePlayingEffectRequest TVibePacketResumePlayingEffectRequest; - -typedef TVibePacketSimpleResponse TVibePacketResumePlayingEffectResponse; - -/** - * Packet structures for Get effect state request and response - */ -struct TVibePacketGetEffectStateRequest - { - TUint16 iCmdCode; - TUint8 iEffectHandle_7_0; - TUint8 iEffectHandle_15_8; - TUint8 iEffectHandle_23_16; - TUint8 iEffectHandle_31_24; - TUint8 iDeviceHandle_7_0; - TUint8 iDeviceHandle_15_8; - TUint8 iDeviceHandle_23_16; - TUint8 iDeviceHandle_31_24; - }; - -struct TVibePacketGetEffectStateResponse - { - TUint16 iCmdCode; - TInt8 iVibeStatus; - TInt8 iEffectState; - }; - -/** - * Packet structures for license request and response - * (Uses currently same packet structs as SetProperty) - */ -typedef TVibePacketSetDevicePropertyRequest TVibePacketSetLicenseRequest; - -typedef TVibePacketSetDevicePropertyResponse TVibePacketSetLicenseResponse; - -/** - * Packet union definition, useful for decoder function - */ -union TVibePacket - { - TVibePacketSimpleRequest iSimpleReq; - TVibePacketSimpleResponse iSimpleRsp; - TVibePacketProtocolVersionRequest iProtocolVersionReq; - TVibePacketProtocolVersionResponse iProtocolVersionRsp; - TVibePacketApiVersionRequest iAPIVersionReq; - TVibePacketApiVersionResponse iAPIVersionRsp; - TVibePacketInitializeRequest iInitializeReq; - TVibePacketInitializeResponse iInitializeRsp; - TVibePacketTerminateRequest iTerminateReq; - TVibePacketTerminateResponse iTerminateRsp; - TVibePacketPlayBasisEffectRequest iPlayBasisEffectReq; - TVibePacketPlayBasisEffectResponse iPlayBasisEffectRsp; - TVibePacketPlayIVTEffectRequest iPlayIVTEffectReq; - TVibePacketPlayIVTEffectResponse iPlayIVTEffectRsp; - TVibePacketModifyBasisEffectRequest iModifyBasisEffectReq; - TVibePacketModifyBasisEffectResponse iModifyBasisEffectRsp; - TVibePacketStopEffectRequest iStopEffectReq; - TVibePacketStopEffectResponse iStopEffectRsp; - TVibePacketStopAllEffectsRequest iStopAllEffectsReq; - TVibePacketStopAllEffectsResponse iStopAllEffectsRsp; - TVibePacketGetDeviceCapabilitiesRequest iGetDeviceCapsReq; - TVibePacketGetDeviceCapabilitiesResponse iGetDeviceCapsRsp; - TVibePacketGetDebugBufferRequest iDebugBufferReq; - TVibePacketGetDebugBufferResponse iDebugBufferRsp; - TVibePacketResetDebugBufferRequest iResetDebugBufferReq; - TVibePacketResetDebugBufferResponse iResetDebugBufferRsp; - TVibePacketStopDesignerBridgeRequest iStopDesignerBridgeReq; - TVibePacketStopDesignerBridgeResponse iStopDesignerBridgeRsp; - TVibePacketGetDeviceStateRequest iGetDeviceStateReq; - TVibePacketGetDeviceStateResponse iGetDeviceStateRsp; - TVibePacketSetKernelParameterRequest iSetKernelParamsReq; - TVibePacketSetKernelParameterResponse iSetKernelParamsRsp; - TVibePacketGetKernelParameterRequest iGetKernelParamsReq; - TVibePacketGetKernelParameterResponse iGetKernelParamsRsp; - TVibePacketOpenDeviceRequest iOpenDeviceReq; - TVibePacketOpenDeviceResponse iOpenDeviceRsp; - TVibePacketCloseDeviceRequest iCloseDeviceReq; - TVibePacketCloseDeviceResponse iCloseDeviceRsp; - TVibePacketSetDevicePropertyRequest iSetDevicePropertyReq; - TVibePacketSetDevicePropertyResponse iSetDevicePropertyRsp; - TVibePacketGetDevicePropertyRequest iGetDevicePropertyReq; - TVibePacketGetDevicePropertyResponse iGetDevicePropertyRsp; - TVibePacketDeviceCountRequest iGetDeviceCountReq; - TVibePacketDeviceCountResponse iGetDeviceCountRsp; - TVibePacketStartDesignedBridgeRequest iStartDesignerBridgeReq; - TVibePacketStartDesignedBridgeResponse iStartDesignerBridgeRsp; - TVibePacketPlayStreamingSampleRequest iPlayStreamingSampleReq; - TVibePacketPlayStreamingSampleResponse iPlayStreamingSampleRsp; - TVibePacketCreateStreamingEffectRequest iCreateStreamingEffectReq; - TVibePacketCreateStreamingEffectResponse iCreateStreamingEffectRsp; - TVibePacketDestroyStreamingEffectRequest iDestroyStreamingEffectReq; - TVibePacketDestroyStreamingEffectResponse iDestroyStreamingEffectRsp; - TVibePacketPausePlayingEffectRequest iPausePlayingEffectReq; - TVibePacketPausePlayingEffectResponse iPausePlayingEffectRsp; - TVibePacketResumePlayingEffectRequest iResumePausedEffectReq; - TVibePacketResumePlayingEffectResponse iResumePausedEffectRsp; - TVibePacketGetEffectStateRequest iGetEffectStateReq; - TVibePacketGetEffectStateResponse iGetEffectStateRsp; - TVibePacketSetLicenseRequest iSetLicenseReq; - TVibePacketSetLicenseResponse iSetLicenseRsp; - }; - -/** - * The 1-byte alignment pack pragma definitions pop'ed out of stack. - */ -#pragma pack( pop ) - -#endif /* _HWRMHAPTICSVIBEPACKETS_H_ */ - diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticspacketizer/plugins/hapticsvibepacketizerplugin/rom/hwrmhapticsvibepacketizerplugin.iby --- a/hwrmhaptics/hapticspacketizer/plugins/hapticsvibepacketizerplugin/rom/hwrmhapticsvibepacketizerplugin.iby Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -/* -* Copyright (c) 2008 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: IBY file for the Vibe Packetizer plugin. -* -*/ - -#ifndef HWRMHAPTICSVIBEPACKETIZERPLUGIN_IBY -#define HWRMHAPTICSVIBEPACKETIZERPLUGIN_IBY - -#include - -ECOM_PLUGIN(hwrmhapticsvibepacketizerplugin.dll, hwrmhapticsvibepacketizerplugin.rsc) - -#endif // HWRMHAPTICSVIBEPACKETIZERPLUGIN_IBY diff -r 51d936fe0d0c -r a003130def4e hwrmhaptics/hapticspacketizer/plugins/hapticsvibepacketizerplugin/src/hwrmhapticsvibepacketizer.cpp --- a/hwrmhaptics/hapticspacketizer/plugins/hapticsvibepacketizerplugin/src/hwrmhapticsvibepacketizer.cpp Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1905 +0,0 @@ -/* -* Copyright (c) 2008 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: Plugin for handling vibe command packages. -* -*/ - -#include -#include -#include - -#include "hwrmhapticsvibepacketizer.h" -#include "hwrmhapticsvibepackets.h" -#include "hwrmhapticsvibeconstants.h" - -// Default request message size (enough for any request message) -const TInt KMsgDefaultSize = 80; - -// const for shifts -const TInt KShiftByte = 8; -const TInt KShift2Bytes = 16; -const TInt KShift3Bytes = 24; - -const TInt KArrayElements = 10; - -// --------------------------------------------------------------------------- -// Two phased constructor. -// --------------------------------------------------------------------------- -// -CHWRMHapticsVibePacketizer* CHWRMHapticsVibePacketizer::NewL() - { - CHWRMHapticsVibePacketizer* self = - new ( ELeave ) CHWRMHapticsVibePacketizer(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// Destructor. -// --------------------------------------------------------------------------- -// -CHWRMHapticsVibePacketizer::~CHWRMHapticsVibePacketizer() - { - iReqBuf.Close(); - iDataBuf.Close(); - - if( iReturnArray ) - { - delete iReturnArray; - iReturnArray = NULL; - } - } - -// --------------------------------------------------------------------------- -// Constructor. -// --------------------------------------------------------------------------- -// -CHWRMHapticsVibePacketizer::CHWRMHapticsVibePacketizer() - : iDeviceHandle( KErrNotFound ) - { - } - -// --------------------------------------------------------------------------- -// 2nd phase constructor. -// --------------------------------------------------------------------------- -// -void CHWRMHapticsVibePacketizer::ConstructL() - { - User::LeaveIfError( iReqBuf.CreateMax( KMsgDefaultSize ) ); - User::LeaveIfError( iDataBuf.CreateMax( KMsgDefaultSize ) ); - - iReturnArray = new (ELeave) CDesC8ArraySeg( KArrayElements ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncOpenDeviceReq( - THWRMLogicalActuators aLogicalActuator, RBuf8& aBuffer ) - { - TVibePacketOpenDeviceRequest* pReq = - reinterpret_cast - ( const_cast( iReqBuf.Ptr() ) ); - - if ( pReq ) - { - pReq->iCmdCode = KVibeCmdOpenDevice; - pReq->iDeviceIndex_7_0 = - static_cast( aLogicalActuator & 0xFF ); - pReq->iDeviceIndex_15_8 = - static_cast( ( aLogicalActuator >> KShiftByte ) & 0xFF ); - pReq->iDeviceIndex_23_16 = - static_cast( - ( aLogicalActuator >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceIndex_31_24 = - static_cast( - ( aLogicalActuator >> KShift3Bytes ) & 0xFF ); - iReqBuf.SetLength( sizeof ( TVibePacketOpenDeviceRequest ) ); - } - else - { - iReqBuf.SetLength( 0 ); - } - - return aBuffer.Create( iReqBuf ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncCloseDeviceReq( TInt aDeviceHandle, - RBuf8& aBuffer ) - { - TVibePacketCloseDeviceRequest* pReq = - reinterpret_cast - ( const_cast( iReqBuf.Ptr() ) ); - - if ( pReq ) - { - pReq->iCmdCode = KVibeCmdCloseDevice; - pReq->iDeviceHandle_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceHandle_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceHandle_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes) & 0xFF ); - pReq->iDeviceHandle_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes) & 0xFF ); - iReqBuf.SetLength( sizeof( TVibePacketCloseDeviceRequest ) ); - } - else - { - iReqBuf.SetLength( 0 ); - } - - return aBuffer.Create( iReqBuf ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncPlayMagSweepEffectReq( - TInt aDeviceHandle, CHWRMHaptics::THWRMHapticsMagSweepEffect aEffect, - RBuf8& aBuffer ) - { - TVibePacketPlayBasisEffectRequest* pReq = - reinterpret_cast - ( const_cast( iReqBuf.Ptr() ) ); - - if ( pReq ) - { - pReq->iCmdCode = KVibeCmdPlayMagSweepEffect; - pReq->iDeviceHandle_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceHandle_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceHandle_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceHandle_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes ) & 0xFF ); - pReq->iDuration_7_0 = - static_cast( aEffect.iDuration & 0xFF ); - pReq->iDuration_15_8 = - static_cast( ( aEffect.iDuration >> KShiftByte ) & 0xFF ); - pReq->iDuration_23_16 = - static_cast( - ( aEffect.iDuration >> KShift2Bytes ) & 0xFF ); - pReq->iDuration_31_24 = - static_cast( - ( aEffect.iDuration >> KShift3Bytes ) & 0xFF ); - pReq->iMagnitude_7_0 = - static_cast( aEffect.iMagnitude & 0xFF ); - pReq->iMagnitude_15_8 = - static_cast( - ( aEffect.iMagnitude >> KShiftByte ) & 0xFF ); - pReq->iMagnitude_23_16 = - static_cast( - ( aEffect.iMagnitude >> KShift2Bytes ) & 0xFF ); - pReq->iMagnitude_31_24 = - static_cast( - ( aEffect.iMagnitude >> KShift3Bytes ) & 0xFF ); - pReq->iEffectTypeStyle = - static_cast( ( aEffect.iStyle << 4 ) & 0xF0 ); - pReq->iPeriod_7_0 = 0x0; - pReq->iPeriod_15_8 = 0x0; - pReq->iPeriod_23_16 = 0x0; - pReq->iPeriod_31_24 = 0x0; - pReq->iImpulseTime_7_0 = - static_cast( aEffect.iAttackTime & 0xFF ); - pReq->iImpulseTime_15_8 = - static_cast( - ( aEffect.iAttackTime >> KShiftByte ) & 0xFF ); - pReq->iImpulseTime_23_16 = - static_cast( - ( aEffect.iAttackTime >> KShift2Bytes ) & 0xFF ); - pReq->iImpulseTime_31_24 = - static_cast( - ( aEffect.iAttackTime >> KShift3Bytes ) & 0xFF ); - pReq->iImpulseLevel_7_0 = - static_cast( aEffect.iAttackLevel & 0xFF ); - pReq->iImpulseLevel_15_8 = - static_cast( - ( aEffect.iAttackLevel >> KShiftByte ) & 0xFF ); - pReq->iImpulseLevel_23_16 = - static_cast( - ( aEffect.iAttackLevel >> KShift2Bytes ) & 0xFF ); - pReq->iImpulseLevel_31_24 = - static_cast( - ( aEffect.iAttackLevel >> KShift3Bytes ) & 0xFF ); - pReq->iFadeTime_7_0 = - static_cast( aEffect.iFadeTime & 0xFF ); - pReq->iFadeTime_15_8 = - static_cast( ( aEffect.iFadeTime >> KShiftByte ) & 0xFF ); - pReq->iFadeTime_23_16 = - static_cast( - ( aEffect.iFadeTime >> KShift2Bytes ) & 0xFF ); - pReq->iFadeTime_31_24 = - static_cast( - ( aEffect.iFadeTime >> KShift3Bytes ) & 0xFF ); - pReq->iFadeLevel_7_0 = - static_cast( aEffect.iFadeLevel & 0xFF ); - pReq->iFadeLevel_15_8 = - static_cast( - ( aEffect.iFadeLevel >> KShiftByte ) & 0xFF ); - pReq->iFadeLevel_23_16 = - static_cast( - ( aEffect.iFadeLevel >> KShift2Bytes ) & 0xFF ); - pReq->iFadeLevel_31_24 = - static_cast( - ( aEffect.iFadeLevel >> KShift3Bytes ) & 0xFF ); - iReqBuf.SetLength( sizeof( TVibePacketPlayBasisEffectRequest ) ); - } - else - { - iReqBuf.SetLength( 0 ); - } - - return aBuffer.Create( iReqBuf ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncPlayPeriodicEffectReq( TInt aDeviceHandle, - CHWRMHaptics::THWRMHapticsPeriodicEffect aEffect, RBuf8& aBuffer ) - { - TVibePacketPlayBasisEffectRequest* pReq = - reinterpret_cast - ( const_cast( iReqBuf.Ptr() ) ); - - if ( pReq ) - { - pReq->iCmdCode = KVibeCmdPlayPeriodicEffect; - pReq->iDeviceHandle_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceHandle_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceHandle_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceHandle_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes ) & 0xFF ); - pReq->iDuration_7_0 = - static_cast( aEffect.iDuration & 0xFF ); - pReq->iDuration_15_8 = - static_cast( ( aEffect.iDuration >> KShiftByte ) & 0xFF ); - pReq->iDuration_23_16 = - static_cast( - ( aEffect.iDuration >> KShift2Bytes ) & 0xFF ); - pReq->iDuration_31_24 = - static_cast( - ( aEffect.iDuration >> KShift3Bytes ) & 0xFF ); - pReq->iMagnitude_7_0 = - static_cast( aEffect.iMagnitude & 0xFF ); - pReq->iMagnitude_15_8 = - static_cast( - ( aEffect.iMagnitude >> KShiftByte ) & 0xFF ); - pReq->iMagnitude_23_16 = - static_cast( - ( aEffect.iMagnitude >> KShift2Bytes ) & 0xFF ); - pReq->iMagnitude_31_24 = - static_cast( - ( aEffect.iMagnitude >> KShift3Bytes ) & 0xFF ); - pReq->iEffectTypeStyle = - static_cast( ( ( aEffect.iStyle << 4 ) & 0xF0 ) | 0x01 ); - pReq->iPeriod_7_0 = - static_cast( aEffect.iPeriod & 0xFF ); - pReq->iPeriod_15_8 = - static_cast( ( aEffect.iPeriod >> KShiftByte ) & 0xFF ); - pReq->iPeriod_23_16 = - static_cast( ( aEffect.iPeriod >> KShift2Bytes ) & 0xFF ); - pReq->iPeriod_31_24 = - static_cast( ( aEffect.iPeriod >> KShift3Bytes ) & 0xFF ); - pReq->iImpulseTime_7_0 = - static_cast( aEffect.iAttackTime & 0xFF ); - pReq->iImpulseTime_15_8 = - static_cast( - ( aEffect.iAttackTime >> KShiftByte ) & 0xFF ); - pReq->iImpulseTime_23_16 = - static_cast( - ( aEffect.iAttackTime >> KShift2Bytes ) & 0xFF ); - pReq->iImpulseTime_31_24 = - static_cast( - ( aEffect.iAttackTime >> KShift3Bytes ) & 0xFF ); - pReq->iImpulseLevel_7_0 = - static_cast( aEffect.iAttackLevel & 0xFF ); - pReq->iImpulseLevel_15_8 = - static_cast( - ( aEffect.iAttackLevel >> KShiftByte ) & 0xFF ); - pReq->iImpulseLevel_23_16 = - static_cast( - ( aEffect.iAttackLevel >> KShift2Bytes ) & 0xFF ); - pReq->iImpulseLevel_31_24 = - static_cast( - ( aEffect.iAttackLevel >> KShift3Bytes ) & 0xFF ); - pReq->iFadeTime_7_0 = - static_cast( aEffect.iFadeTime & 0xFF ); - pReq->iFadeTime_15_8 = - static_cast( ( aEffect.iFadeTime >> KShiftByte ) & 0xFF ); - pReq->iFadeTime_23_16 = - static_cast( - ( aEffect.iFadeTime >> KShift2Bytes ) & 0xFF ); - pReq->iFadeTime_31_24 = - static_cast( - ( aEffect.iFadeTime >> KShift3Bytes ) & 0xFF ); - pReq->iFadeLevel_7_0 = - static_cast( aEffect.iFadeLevel & 0xFF ); - pReq->iFadeLevel_15_8 = - static_cast( - ( aEffect.iFadeLevel >> KShiftByte ) & 0xFF ); - pReq->iFadeLevel_23_16 = - static_cast( - ( aEffect.iFadeLevel >> KShift2Bytes ) & 0xFF ); - pReq->iFadeLevel_31_24 = - static_cast( - ( aEffect.iFadeLevel >> KShift3Bytes ) & 0xFF ); - iReqBuf.SetLength( sizeof( TVibePacketPlayBasisEffectRequest ) ); - } - else - { - iReqBuf.SetLength( 0 ); - } - - return aBuffer.Create( iReqBuf ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncModifyPlayingMagSweepEffectReq( - TInt aDeviceHandle, TInt aEffectHandle, - CHWRMHaptics::THWRMHapticsMagSweepEffect aEffect, RBuf8& aBuffer ) - { - TVibePacketModifyBasisEffectRequest* pReq = - reinterpret_cast - ( const_cast( iReqBuf.Ptr() ) ); - - if ( pReq ) - { - pReq->iCmdCode = KVibeCmdModifyPlayingMagSweepEffect; - pReq->iDeviceHandle_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceHandle_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceHandle_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceHandle_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes ) & 0xFF ); - pReq->iEffectHandle_7_0 = - static_cast( aEffectHandle & 0xFF ); - pReq->iEffectHandle_15_8 = - static_cast( ( aEffectHandle >> KShiftByte ) & 0xFF ); - pReq->iEffectHandle_23_16 = - static_cast( ( aEffectHandle >> KShift2Bytes ) & 0xFF ); - pReq->iEffectHandle_31_24 = - static_cast( ( aEffectHandle >> KShift3Bytes ) & 0xFF ); - pReq->iDuration_7_0 = - static_cast( aEffect.iDuration & 0xFF ); - pReq->iDuration_15_8 = - static_cast( ( aEffect.iDuration >> KShiftByte ) & 0xFF ); - pReq->iDuration_23_16 = - static_cast( - ( aEffect.iDuration >> KShift2Bytes ) & 0xFF ); - pReq->iDuration_31_24 = - static_cast( - ( aEffect.iDuration >> KShift3Bytes ) & 0xFF ); - pReq->iMagnitude_7_0 = - static_cast( aEffect.iMagnitude & 0xFF ); - pReq->iMagnitude_15_8 = - static_cast( - ( aEffect.iMagnitude >> KShiftByte ) & 0xFF ); - pReq->iMagnitude_23_16 = - static_cast( - ( aEffect.iMagnitude >> KShift2Bytes ) & 0xFF ); - pReq->iMagnitude_31_24 = - static_cast( - ( aEffect.iMagnitude >> KShift3Bytes ) & 0xFF ); - pReq->iEffectTypeStyle = - static_cast( ( aEffect.iStyle << 4 ) & 0xF0 ); - pReq->iPeriod_7_0 = 0x0; - pReq->iPeriod_15_8 = 0x0; - pReq->iPeriod_23_16 = 0x0; - pReq->iPeriod_31_24 = 0x0; - pReq->iImpulseTime_7_0 = - static_cast( aEffect.iAttackTime & 0xFF ); - pReq->iImpulseTime_15_8 = - static_cast( - ( aEffect.iAttackTime >> KShiftByte ) & 0xFF ); - pReq->iImpulseTime_23_16 = - static_cast( - ( aEffect.iAttackTime >> KShift2Bytes ) & 0xFF ); - pReq->iImpulseTime_31_24 = - static_cast( - ( aEffect.iAttackTime >> KShift3Bytes ) & 0xFF ); - pReq->iImpulseLevel_7_0 = - static_cast( aEffect.iAttackLevel & 0xFF ); - pReq->iImpulseLevel_15_8 = - static_cast( - ( aEffect.iAttackLevel >> KShiftByte ) & 0xFF ); - pReq->iImpulseLevel_23_16 = - static_cast( - ( aEffect.iAttackLevel >> KShift2Bytes ) & 0xFF ); - pReq->iImpulseLevel_31_24 = - static_cast( - ( aEffect.iAttackLevel >> KShift3Bytes ) & 0xFF ); - pReq->iFadeTime_7_0 = - static_cast( aEffect.iFadeTime & 0xFF ); - pReq->iFadeTime_15_8 = - static_cast( ( aEffect.iFadeTime >> KShiftByte ) & 0xFF ); - pReq->iFadeTime_23_16 = - static_cast( - ( aEffect.iFadeTime >> KShift2Bytes ) & 0xFF ); - pReq->iFadeTime_31_24 = - static_cast( - ( aEffect.iFadeTime >> KShift3Bytes ) & 0xFF ); - pReq->iFadeLevel_7_0 = - static_cast( aEffect.iFadeLevel & 0xFF ); - pReq->iFadeLevel_15_8 = - static_cast( - ( aEffect.iFadeLevel >> KShiftByte ) & 0xFF ); - pReq->iFadeLevel_23_16 = - static_cast( - ( aEffect.iFadeLevel >> KShift2Bytes ) & 0xFF ); - pReq->iFadeLevel_31_24 = - static_cast( - ( aEffect.iFadeLevel >> KShift3Bytes ) & 0xFF ); - iReqBuf.SetLength( sizeof( TVibePacketModifyBasisEffectRequest ) ); - } - else - { - iReqBuf.SetLength( 0 ); - } - - return aBuffer.Create( iReqBuf ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncModifyPlayingPeriodicEffectReq( - TInt aDeviceHandle, TInt aEffectHandle, - CHWRMHaptics::THWRMHapticsPeriodicEffect aEffect, RBuf8& aBuffer ) - { - TVibePacketModifyBasisEffectRequest* pReq = - reinterpret_cast - ( const_cast( iReqBuf.Ptr() ) ); - - if ( pReq ) - { - pReq->iCmdCode = KVibeCmdModifyPlayingPeriodicEffect; - pReq->iDeviceHandle_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceHandle_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceHandle_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceHandle_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes ) & 0xFF ); - pReq->iEffectHandle_7_0 = - static_cast( aEffectHandle & 0xFF ); - pReq->iEffectHandle_15_8 = - static_cast( ( aEffectHandle >> KShiftByte ) & 0xFF ); - pReq->iEffectHandle_23_16 = - static_cast( ( aEffectHandle >> KShift2Bytes ) & 0xFF ); - pReq->iEffectHandle_31_24 = - static_cast( ( aEffectHandle >> KShift3Bytes ) & 0xFF ); - pReq->iDuration_7_0 = - static_cast( aEffect.iDuration & 0xFF ); - pReq->iDuration_15_8 = - static_cast( - ( aEffect.iDuration >> KShiftByte ) & 0xFF ); - pReq->iDuration_23_16 = - static_cast( - ( aEffect.iDuration >> KShift2Bytes ) & 0xFF ); - pReq->iDuration_31_24 = - static_cast( - ( aEffect.iDuration >> KShift3Bytes ) & 0xFF ); - pReq->iMagnitude_7_0 = - static_cast( aEffect.iMagnitude & 0xFF ); - pReq->iMagnitude_15_8 = - static_cast( - ( aEffect.iMagnitude >> KShiftByte ) & 0xFF ); - pReq->iMagnitude_23_16 = - static_cast( - ( aEffect.iMagnitude >> KShift2Bytes ) & 0xFF ); - pReq->iMagnitude_31_24 = - static_cast( - ( aEffect.iMagnitude >> KShift3Bytes ) & 0xFF ); - pReq->iEffectTypeStyle = - static_cast( ( ( aEffect.iStyle << 4 ) & 0xF0 ) | 0x01 ); - pReq->iPeriod_7_0 = - static_cast( aEffect.iPeriod & 0xFF ); - pReq->iPeriod_15_8 = - static_cast( ( aEffect.iPeriod >> KShiftByte ) & 0xFF ); - pReq->iPeriod_23_16 = - static_cast( ( aEffect.iPeriod >> KShift2Bytes ) & 0xFF ); - pReq->iPeriod_31_24 = - static_cast( ( aEffect.iPeriod >> KShift3Bytes ) & 0xFF ); - pReq->iImpulseTime_7_0 = - static_cast( aEffect.iAttackTime & 0xFF ); - pReq->iImpulseTime_15_8 = - static_cast( - ( aEffect.iAttackTime >> KShiftByte ) & 0xFF ); - pReq->iImpulseTime_23_16 = - static_cast( - ( aEffect.iAttackTime >> KShift2Bytes ) & 0xFF ); - pReq->iImpulseTime_31_24 = - static_cast( - ( aEffect.iAttackTime >> KShift3Bytes ) & 0xFF ); - pReq->iImpulseLevel_7_0 = - static_cast( aEffect.iAttackLevel & 0xFF ); - pReq->iImpulseLevel_15_8 = - static_cast( - ( aEffect.iAttackLevel >> KShiftByte ) & 0xFF ); - pReq->iImpulseLevel_23_16 = - static_cast( - ( aEffect.iAttackLevel >> KShift2Bytes ) & 0xFF ); - pReq->iImpulseLevel_31_24 = - static_cast( - ( aEffect.iAttackLevel >> KShift3Bytes ) & 0xFF ); - pReq->iFadeTime_7_0 = - static_cast( aEffect.iFadeTime & 0xFF ); - pReq->iFadeTime_15_8 = - static_cast( ( aEffect.iFadeTime >> KShiftByte ) & 0xFF ); - pReq->iFadeTime_23_16 = - static_cast( - ( aEffect.iFadeTime >> KShift2Bytes ) & 0xFF ); - pReq->iFadeTime_31_24 = - static_cast( - ( aEffect.iFadeTime >> KShift3Bytes ) & 0xFF ); - pReq->iFadeLevel_7_0 = - static_cast( aEffect.iFadeLevel & 0xFF ); - pReq->iFadeLevel_15_8 = - static_cast( - ( aEffect.iFadeLevel >> KShiftByte ) & 0xFF ); - pReq->iFadeLevel_23_16 = - static_cast( - ( aEffect.iFadeLevel >> KShift2Bytes ) & 0xFF ); - pReq->iFadeLevel_31_24 = - static_cast( - ( aEffect.iFadeLevel >> KShift3Bytes ) & 0xFF ); - iReqBuf.SetLength( sizeof( TVibePacketModifyBasisEffectRequest ) ); - } - else - { - iReqBuf.SetLength( 0 ); - } - - return aBuffer.Create( iReqBuf ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncPausePlayingEffectReq( - TInt aDeviceHandle, TInt aEffectHandle, RBuf8& aBuffer ) - { - TVibePacketPausePlayingEffectRequest* pReq = - reinterpret_cast - (const_cast( iReqBuf.Ptr() ) ); - - if ( pReq ) - { - pReq->iCmdCode = KVibeCmdPausePlayingEffect; - pReq->iEffectHandle_7_0 = - static_cast( aEffectHandle & 0xFF ); - pReq->iEffectHandle_15_8 = - static_cast( ( aEffectHandle >> KShiftByte ) & 0xFF ); - pReq->iEffectHandle_23_16 = - static_cast( ( aEffectHandle >> KShift2Bytes ) & 0xFF ); - pReq->iEffectHandle_31_24 = - static_cast( ( aEffectHandle >> KShift3Bytes ) & 0xFF ); - pReq->iDeviceHandle_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceHandle_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceHandle_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceHandle_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes ) & 0xFF ); - iReqBuf.SetLength( sizeof( TVibePacketPausePlayingEffectRequest ) ); - } - else - { - iReqBuf.SetLength( 0 ); - } - - return aBuffer.Create( iReqBuf ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncResumePausedEffectReq( - TInt aDeviceHandle, TInt aEffectHandle, RBuf8& aBuffer ) - { - TVibePacketResumePlayingEffectRequest* pReq = - reinterpret_cast - ( const_cast( iReqBuf.Ptr() ) ); - - if ( pReq ) - { - pReq->iCmdCode = KVibeCmdResumePausedEffect; - pReq->iEffectHandle_7_0 = - static_cast( aEffectHandle & 0xFF ); - pReq->iEffectHandle_15_8 = - static_cast( ( aEffectHandle >> KShiftByte ) & 0xFF ); - pReq->iEffectHandle_23_16 = - static_cast( ( aEffectHandle >> KShift2Bytes ) & 0xFF ); - pReq->iEffectHandle_31_24 = - static_cast( ( aEffectHandle >> KShift3Bytes ) & 0xFF ); - pReq->iDeviceHandle_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceHandle_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceHandle_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceHandle_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes ) & 0xFF ); - iReqBuf.SetLength( sizeof( TVibePacketResumePlayingEffectRequest ) ); - } - else - { - iReqBuf.SetLength( 0 ); - } - - return aBuffer.Create( iReqBuf ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncStopPlayingEffectReq( - TInt aDeviceHandle, TInt aEffectHandle, RBuf8& aBuffer ) - { - TVibePacketStopEffectRequest* pReq = - reinterpret_cast - ( const_cast( iReqBuf.Ptr() ) ); - - if ( pReq ) - { - pReq->iCmdCode = KVibeCmdStopEffect; - pReq->iDeviceHandle_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceHandle_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceHandle_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceHandle_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes ) & 0xFF ); - pReq->iEffectHandle_7_0 = - static_cast( aEffectHandle & 0xFF ); - pReq->iEffectHandle_15_8 = - static_cast( ( aEffectHandle >> KShiftByte ) & 0xFF ); - pReq->iEffectHandle_23_16 = - static_cast( ( aEffectHandle >> KShift2Bytes ) & 0xFF ); - pReq->iEffectHandle_31_24 = - static_cast( ( aEffectHandle >> KShift3Bytes ) & 0xFF ); - iReqBuf.SetLength( sizeof( TVibePacketStopEffectRequest ) ); - } - else - { - iReqBuf.SetLength( 0 ); - } - - return aBuffer.Create( iReqBuf ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncStopAllPlayingEffectsReq( - TInt aDeviceHandle, RBuf8& aBuffer ) - { - TVibePacketStopAllEffectsRequest* pReq = - reinterpret_cast - ( const_cast( iReqBuf.Ptr() ) ); - - if ( pReq ) - { - pReq->iCmdCode = KVibeCmdStopAllEffects; - pReq->iDeviceHandle_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceHandle_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceHandle_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceHandle_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes ) & 0xFF ); - iReqBuf.SetLength( sizeof( TVibePacketStopAllEffectsRequest ) ); - } - else - { - iReqBuf.SetLength( 0 ); - } - - return aBuffer.Create( iReqBuf ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncPlayEffectIncludeEffectDataReq( - TInt aDeviceHandle, const TDesC8& aData, TInt aEffectIndex, - RBuf8& aBuffer ) - { - iDataBuf.Close(); - TInt err = iDataBuf.Create( aData.Size() + KMsgDefaultSize ); - - TVibePacketPlayIVTEffectRequest* pReq = - reinterpret_cast - ( const_cast( iDataBuf.Ptr() ) ); - - if ( !err && pReq && - ( ( aData.Size() + KMsgDefaultSize ) <= KVibePacketMaxSize ) ) - { - pReq->iCmdCode = KVibeCmdPlayIVTEffectIncludeData; - pReq->iIvtDataSize = aData.Size(); - pReq->iDeviceHandle_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceHandle_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceHandle_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceHandle_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes ) & 0xFF ); - pReq->iIvtIndex_7_0 = - static_cast( aEffectIndex & 0xFF ); - pReq->iIvtIndex_15_8 = - static_cast( ( aEffectIndex >> KShiftByte ) & 0xFF ); - pReq->iRepeat = 0x0; - - memcpy( pReq->iIvtData, aData.Ptr(), aData.Size() ); - - // the data buffer length is set to the size of the request packet - // plus size of the data minus 1 (minus 1, because first byte of the - // data is already calculated as part of the request packet size). - iDataBuf.SetLength( - sizeof( TVibePacketPlayIVTEffectRequest ) + aData.Size() -1 ); - } - else - { - iDataBuf.SetLength( 0 ); - } - - return aBuffer.Create( iDataBuf ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncPlayEffectRepeatIncludeEffectDataReq( - TInt aDeviceHandle, const TDesC8& aData, TInt aEffectIndex, - TUint8 aRepeat, RBuf8& aBuffer ) - { - iDataBuf.Close(); - TInt err = iDataBuf.Create( aData.Size() + KMsgDefaultSize ); - - TVibePacketPlayIVTEffectRequest* pReq = - reinterpret_cast - ( const_cast( iDataBuf.Ptr() ) ); - - if ( !err && pReq && - ( ( aData.Size() + KMsgDefaultSize ) <= KVibePacketMaxSize ) ) - { - pReq->iCmdCode = KVibeCmdPlayIVTEffectIncludeData; - pReq->iIvtDataSize = aData.Size(); - pReq->iDeviceHandle_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceHandle_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceHandle_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceHandle_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes ) & 0xFF ); - pReq->iIvtIndex_7_0 = - static_cast( aEffectIndex & 0xFF ); - pReq->iIvtIndex_15_8 = - static_cast( ( aEffectIndex >> KShiftByte ) & 0xFF ); - pReq->iRepeat = aRepeat; - - memcpy( pReq->iIvtData, aData.Ptr(), aData.Size() ); - - // the data buffer length is set to the size of the request packet - // plus size of the data minus 1 (minus 1, because first byte of the - // data is already calculated as part of the request packet size). - iDataBuf.SetLength( - sizeof( TVibePacketPlayIVTEffectRequest ) + aData.Size() -1 ); - } - else - { - iDataBuf.SetLength( 0 ); - } - - return aBuffer.Create( iDataBuf ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncPlayEffectRepeatNoDataReq( - TInt aDeviceHandle, TInt aEffectIndex, TUint8 aRepeat, RBuf8& aBuffer ) - { - TVibePacketPlayIVTEffectRequest* pReq = - reinterpret_cast - ( const_cast( iReqBuf.Ptr() ) ); - - if ( pReq ) - { - pReq->iCmdCode = KVibeCmdPlayIVTEffectNoData; - pReq->iIvtDataSize = 0x0; - pReq->iDeviceHandle_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceHandle_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceHandle_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceHandle_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes ) & 0xFF ); - pReq->iIvtIndex_7_0 = - static_cast( aEffectIndex & 0xFF ); - pReq->iIvtIndex_15_8 = - static_cast( ( aEffectIndex >> KShiftByte ) & 0xFF ); - pReq->iRepeat = aRepeat; - iReqBuf.SetLength( sizeof( TVibePacketPlayIVTEffectRequest ) ); - } - else - { - iReqBuf.SetLength( 0 ); - } - - return aBuffer.Create( iReqBuf ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncPlayEffectNoDataReq( - TInt aDeviceHandle, TInt aEffectIndex, RBuf8& aBuffer ) - { - TVibePacketPlayIVTEffectRequest* pReq = - reinterpret_cast - ( const_cast( iReqBuf.Ptr() ) ); - - if ( pReq ) - { - pReq->iCmdCode = KVibeCmdPlayIVTEffectNoData; - pReq->iIvtDataSize = 0x0; - pReq->iDeviceHandle_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceHandle_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceHandle_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceHandle_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes ) & 0xFF ); - pReq->iIvtIndex_7_0 = - static_cast( aEffectIndex & 0xFF ); - pReq->iIvtIndex_15_8 = - static_cast( ( aEffectIndex >> KShiftByte ) & 0xFF ); - pReq->iRepeat = 0x0; - iReqBuf.SetLength( sizeof( TVibePacketPlayIVTEffectRequest ) ); - } - else - { - iReqBuf.SetLength( 0 ); - } - - return aBuffer.Create( iReqBuf ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncCreateStreamingEffectReq( - TInt aDeviceHandle, RBuf8& aBuffer ) - { - TVibePacketCreateStreamingEffectRequest* pReq = - reinterpret_cast - ( const_cast( iReqBuf.Ptr() ) ); - - if ( pReq ) - { - pReq->iCmdCode = KVibeCmdCreateStreamingEffect; - pReq->iDeviceHandle_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceHandle_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceHandle_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceHandle_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes ) & 0xFF ); - iReqBuf.SetLength( - sizeof( TVibePacketCreateStreamingEffectRequest ) ); - } - else - { - iReqBuf.SetLength( 0 ); - } - - return aBuffer.Create( iReqBuf ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncDestroyStreamingEffectReq( - TInt aDeviceHandle, TInt aEffectHandle, RBuf8& aBuffer ) - { - TVibePacketDestroyStreamingEffectRequest* pReq = - reinterpret_cast - ( const_cast( iReqBuf.Ptr() ) ); - - if ( pReq ) - { - pReq->iCmdCode = KVibeCmdDestroyStreamingEffect; - pReq->iEffectHandle_7_0 = - static_cast( aEffectHandle & 0xFF ); - pReq->iEffectHandle_15_8 = - static_cast( ( aEffectHandle >> KShiftByte ) & 0xFF ); - pReq->iEffectHandle_23_16 = - static_cast( ( aEffectHandle >> KShift2Bytes ) & 0xFF ); - pReq->iEffectHandle_31_24 = - static_cast( ( aEffectHandle >> KShift3Bytes ) & 0xFF ); - pReq->iDeviceHandle_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceHandle_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceHandle_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceHandle_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes ) & 0xFF ); - iReqBuf.SetLength( - sizeof( TVibePacketDestroyStreamingEffectRequest ) ); - } - else - { - iReqBuf.SetLength( 0 ); - } - - return aBuffer.Create( iReqBuf ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncPlayStreamingSampleReq( - TInt aDeviceHandle, const TDesC8& aStreamingSample, TInt aEffectHandle, - RBuf8& aBuffer ) - { - return EncPlayStreamingSampleInternal( aDeviceHandle, - aEffectHandle, - aStreamingSample, - 0, aBuffer ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncPlayStreamingSampleWithOffsetReq( - TInt aDeviceHandle, const TDesC8& aStreamingSample, TInt aOffsetTime, - TInt aEffectHandle, RBuf8& aBuffer ) - { - return EncPlayStreamingSampleInternal( aDeviceHandle, - aEffectHandle, - aStreamingSample, - aOffsetTime, - aBuffer ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncGetEffectStateReq( - TInt aDeviceHandle, TInt aEffectHandle, RBuf8& aBuffer ) - { - TVibePacketGetEffectStateRequest* pReq = - reinterpret_cast - ( const_cast( iReqBuf.Ptr() ) ); - - if ( pReq ) - { - pReq->iCmdCode = KVibeCmdGetEffectState; - pReq->iEffectHandle_7_0 = - static_cast( aEffectHandle & 0xFF ); - pReq->iEffectHandle_15_8 = - static_cast( ( aEffectHandle >> KShiftByte ) & 0xFF ); - pReq->iEffectHandle_23_16 = - static_cast( ( aEffectHandle >> KShift2Bytes ) & 0xFF ); - pReq->iEffectHandle_31_24 = - static_cast( ( aEffectHandle >> KShift3Bytes ) & 0xFF ); - pReq->iDeviceHandle_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceHandle_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceHandle_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceHandle_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes ) & 0xFF ); - iReqBuf.SetLength( sizeof( TVibePacketGetEffectStateRequest ) ); - } - else - { - iReqBuf.SetLength( 0 ); - } - - return aBuffer.Create( iReqBuf ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncSetDevicePropertyBoolReq( - TInt aDeviceHandle, TBool aDevPropValue, TInt aDevPropType, - RBuf8& aBuffer ) - { - TVibePacketSetDevicePropertyRequest* pReq = - reinterpret_cast - ( const_cast( iReqBuf.Ptr() ) ); - - if ( pReq ) - { - pReq->iCmdCode = KVibeCmdSetDeviceProperty; - pReq->iDeviceHandle_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceHandle_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceHandle_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceHandle_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes ) & 0xFF ); - pReq->iPropertyType_7_0 = - static_cast( aDevPropType & 0xFF ); - pReq->iPropertyType_15_8 = - static_cast( ( aDevPropType >> KShiftByte ) & 0xFF ); - pReq->iPropertyType_23_16 = - static_cast( ( aDevPropType >> KShift2Bytes ) & 0xFF ); - pReq->iPropertyType_31_24 = - static_cast( ( aDevPropType >> KShift3Bytes ) & 0xFF ); - pReq->iPropertyValueType = - static_cast( KVibeValuetypeBool ); - pReq->iSize = 1; // size of bool data is 1 byte - pReq->iPropertyValue[0] = - static_cast( aDevPropValue ); - iReqBuf.SetLength( sizeof( TVibePacketSetDevicePropertyRequest ) ); - } - else - { - iReqBuf.SetLength( 0 ); - } - - return aBuffer.Create( iReqBuf ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncSetDevicePropertyIntReq( - TInt aDeviceHandle, TInt aDevPropValue, TInt aDevPropType, - RBuf8& aBuffer ) - { - TVibePacketSetDevicePropertyRequest* pReq = - reinterpret_cast - ( const_cast( iReqBuf.Ptr() ) ); - - if ( pReq ) - { - pReq->iCmdCode = KVibeCmdSetDeviceProperty; - pReq->iDeviceHandle_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceHandle_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceHandle_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceHandle_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes ) & 0xFF ); - pReq->iPropertyType_7_0 = - static_cast( aDevPropType & 0xFF ); - pReq->iPropertyType_15_8 = - static_cast( ( aDevPropType >> KShiftByte ) & 0xFF ); - pReq->iPropertyType_23_16 = - static_cast( ( aDevPropType >> KShift2Bytes ) & 0xFF ); - pReq->iPropertyType_31_24 = - static_cast( ( aDevPropType >> KShift3Bytes ) & 0xFF ); - pReq->iPropertyValueType = - static_cast( KVibeValuetypeInt32 ); - pReq->iSize = 4; // Size of int32 value is 4 bytes - pReq->iPropertyValue[0] = - static_cast( aDevPropValue & 0xFF ); - pReq->iPropertyValue[1] = - static_cast( ( aDevPropValue >> KShiftByte ) & 0xFF ); - pReq->iPropertyValue[2] = - static_cast( ( aDevPropValue >> KShift2Bytes ) & 0xFF ); - pReq->iPropertyValue[3] = - static_cast( ( aDevPropValue >> KShift3Bytes ) & 0xFF ); - // the data buffer length is set to the size of the request packet - // plus size of the data minus 1. Since int32 type data is always - // 4 bytes, the extra size needed for data is 3 bytes (4-1). - iReqBuf.SetLength( - sizeof( TVibePacketSetDevicePropertyRequest ) +3 ); - } - else - { - iReqBuf.SetLength( 0 ); - } - - return aBuffer.Create( iReqBuf ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncSetDevicePropertyStringReq( - TInt aDeviceHandle, const TDesC8& aDevPropValue, TInt aDevPropType, - RBuf8& aBuffer ) - { - iDataBuf.Close(); - TInt err = iDataBuf.Create( aDevPropValue.Size() + KMsgDefaultSize ); - - TVibePacketSetDevicePropertyRequest* pReq = - reinterpret_cast - ( const_cast( iDataBuf.Ptr() ) ); - - if ( !err && pReq && - ( ( aDevPropValue.Size() + KMsgDefaultSize ) <= KVibePacketMaxSize ) ) - { - pReq->iCmdCode = KVibeCmdSetDeviceProperty; - pReq->iDeviceHandle_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceHandle_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceHandle_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceHandle_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes ) & 0xFF ); - pReq->iPropertyType_7_0 = - static_cast( aDevPropType & 0xFF ); - pReq->iPropertyType_15_8 = - static_cast( ( aDevPropType >> KShiftByte ) & 0xFF ); - pReq->iPropertyType_23_16 = - static_cast( ( aDevPropType >> KShift2Bytes ) & 0xFF ); - pReq->iPropertyType_31_24 = - static_cast( ( aDevPropType >> KShift3Bytes ) & 0xFF ); - pReq->iPropertyValueType = - static_cast( KVibeValuetypeString ); - pReq->iSize = - static_cast( aDevPropValue.Size() ); - - memcpy ( pReq->iPropertyValue, - reinterpret_cast( - const_cast( aDevPropValue.Ptr() ) ), - aDevPropValue.Size() ); - - // the data buffer length is set to the size of the request packet - // plus size of the data minus 1 (minus 1, because first byte of the - // data is already calculated as part of the request packet size). - iDataBuf.SetLength( - sizeof( TVibePacketSetDevicePropertyRequest ) + pReq->iSize -1 ); - } - else - { - iDataBuf.SetLength( 0 ); - } - - return aBuffer.Create( iDataBuf ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncSetPlatformLicenseKeyReq( - TInt aDeviceHandle, RBuf8& aBuffer ) - { - TInt ret = EncSetDevicePropertyStringReq( aDeviceHandle, KNullDesC8, - CHWRMHaptics::EHWRMHapticsLicensekey, - aBuffer ); - - // change the command id from general device property to setting - // license key - if ( ret == KErrNone ) - { - TVibePacketSetDevicePropertyRequest* tmpReq = - reinterpret_cast - ( const_cast( aBuffer.Ptr() ) ); - - if ( tmpReq ) - { - tmpReq->iCmdCode = KVibeCmdSetLicense; - } - } - - return ret; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncGetDevicePropertyBoolReq( - TInt aDeviceHandle, TInt aDevPropType, RBuf8& aBuffer ) - { - return EncGetDevicePropertyReqInternal( - KVibeValuetypeBool, aDeviceHandle, aDevPropType, aBuffer ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncGetDevicePropertyIntReq( - TInt aDeviceHandle, TInt aDevPropType, RBuf8& aBuffer ) - { - return EncGetDevicePropertyReqInternal( - KVibeValuetypeInt32, aDeviceHandle, aDevPropType, aBuffer ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncGetDevicePropertyStringReq( - TInt aDeviceHandle, TInt aDevPropType, RBuf8& aBuffer ) - { - return EncGetDevicePropertyReqInternal( - KVibeValuetypeString, aDeviceHandle, aDevPropType, aBuffer ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncGetDeviceCapabilityIntReq( - TInt aDeviceHandle, TInt aDevCapType, RBuf8& aBuffer ) - { - return EncGetDeviceCapabilityReqInternal( KVibeValuetypeInt32, - aDeviceHandle, - aDevCapType, - aBuffer ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncGetDeviceCapabilityStringReq( - TInt aDeviceHandle, TInt aDevCapType, RBuf8& aBuffer ) - { - return EncGetDeviceCapabilityReqInternal( KVibeValuetypeString, - aDeviceHandle, - aDevCapType, - aBuffer ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -CDesC8ArraySeg* CHWRMHapticsVibePacketizer::DecodeMessageL( - const TDesC8& aData, TInt& aStatus ) - { - // Clear Array before use - iReturnArray->Reset(); - - TVibePacket* pRsp = - reinterpret_cast( const_cast( aData.Ptr() ) ); - - switch( pRsp->iSimpleRsp.iCmdCode ) - { - case KVibeCmdOpenDevice: - { - aStatus = pRsp->iOpenDeviceRsp.iVibeStatus; - iDeviceHandle = - pRsp->iOpenDeviceRsp.iDeviceHandle_7_0 | - pRsp->iOpenDeviceRsp.iDeviceHandle_15_8 << KShiftByte | - pRsp->iOpenDeviceRsp.iDeviceHandle_23_16 << KShift2Bytes | - pRsp->iOpenDeviceRsp.iDeviceHandle_31_24 << KShift3Bytes; - - TPckg deviceHandlePckg( iDeviceHandle ); - - iReturnArray->AppendL( deviceHandlePckg ); - break; - } - - case KVibeCmdCloseDevice: - { - aStatus = pRsp->iCloseDeviceRsp.iVibeStatus; - iDeviceHandle = KErrNotFound; - break; - } - - case KVibeCmdSetDeviceProperty: // flow through - case KVibeCmdSetLicense: - { - aStatus = pRsp->iSetDevicePropertyRsp.iVibeStatus; - break; - } - - case KVibeCmdGetDeviceProperty: - { - TInt propertyValueType = - pRsp->iGetDevicePropertyRsp.iPropertyValueType; - - switch( propertyValueType ) - { - case KVibeValuetypeBool: - { - aStatus = pRsp->iGetDevicePropertyRsp.iVibeStatus; - - TUint8* intArr = - pRsp->iGetDevicePropertyRsp.iPropertyValue; - - TUint value = ( TUint( intArr[0] ) ); - TPckg devicePropertyValuePckg( value ); - - iReturnArray->AppendL( devicePropertyValuePckg ); - break; - } - case KVibeValuetypeInt32: - { - aStatus = pRsp->iGetDevicePropertyRsp.iVibeStatus; - - TUint8* intArr = - pRsp->iGetDevicePropertyRsp.iPropertyValue; - - TUint value = ( TUint( intArr[0] ) ) - | ( TUint( intArr[1] ) << KShiftByte ) - | ( TUint( intArr[2] ) << KShift2Bytes ) - | ( TUint( intArr[3] ) << KShift3Bytes ); - TPckg devicePropertyValuePckg( value ); - - iReturnArray->AppendL( devicePropertyValuePckg ); - break; - } - - case KVibeValuetypeString: - { - aStatus = pRsp->iGetDevicePropertyRsp.iVibeStatus; - TInt stringSize = pRsp->iGetDevicePropertyRsp.iSize; - - if( stringSize > MaxPropertyStringLength() ) - { - // truncate string if too long - stringSize = MaxPropertyStringLength(); - } - - TUint8* text = reinterpret_cast( - pRsp->iGetDevicePropertyRsp.iPropertyValue ); - TPtrC8 ptr( text, stringSize ); - - iReturnArray->AppendL( ptr ); - break; - } - default: - break; - }// switch - break; - } - - case KVibeCmdPlayMagSweepEffect: // flow through - case KVibeCmdPlayPeriodicEffect: - { - aStatus = pRsp->iPlayBasisEffectRsp.iVibeStatus; - TInt effectHandle = - pRsp->iPlayBasisEffectRsp.iEffectHandle_7_0 | - pRsp->iPlayBasisEffectRsp.iEffectHandle_15_8 << KShiftByte | - pRsp->iPlayBasisEffectRsp.iEffectHandle_23_16 << KShift2Bytes | - pRsp->iPlayBasisEffectRsp.iEffectHandle_31_24 << KShift3Bytes; - - TPckg effectHandlePckg( effectHandle ); - iReturnArray->AppendL( effectHandlePckg ); - break; - } - - case KVibeCmdPlayIVTEffectIncludeData: // flow through - case KVibeCmdPlayIVTEffectNoData: - { - aStatus = pRsp->iPlayIVTEffectRsp.iVibeStatus; - TInt effectHandle = - pRsp->iPlayIVTEffectRsp.iEffectHandle_7_0 | - pRsp->iPlayIVTEffectRsp.iEffectHandle_15_8 << KShiftByte | - pRsp->iPlayIVTEffectRsp.iEffectHandle_23_16 << KShift2Bytes | - pRsp->iPlayIVTEffectRsp.iEffectHandle_31_24 << KShift3Bytes; - - TPckg effectHandlePckg( effectHandle ); - iReturnArray->AppendL( effectHandlePckg ); - break; - } - - case KVibeCmdModifyPlayingMagSweepEffect: // flow through - case KVibeCmdModifyPlayingPeriodicEffect: - { - aStatus = pRsp->iModifyBasisEffectRsp.iVibeStatus; - break; - } - - case KVibeCmdStopEffect: - { - aStatus = pRsp->iStopEffectRsp.iVibeStatus; - break; - } - - case KVibeCmdStopAllEffects: - { - aStatus = pRsp->iStopAllEffectsRsp.iVibeStatus; - break; - } - - case KVibeCmdGetDeviceCapabilities: - { - TInt capabilityValueType = - pRsp->iGetDeviceCapsRsp.iCapabilityValueType; - - switch( capabilityValueType ) - { - case KVibeValuetypeInt32: - { - aStatus = pRsp->iGetDeviceCapsRsp.iVibeStatus; - TUint8* intArr = - pRsp->iGetDeviceCapsRsp.iCapabilityValue; - - TUint value = ( TUint( intArr[0] ) ) - | ( TUint( intArr[1] ) << KShiftByte ) - | ( TUint( intArr[2] ) << KShift2Bytes ) - | ( TUint( intArr[3] ) << KShift3Bytes ); - - TPckg deviceCapabilityValuePckg( value ); - iReturnArray->AppendL( deviceCapabilityValuePckg ); - break; - } - - case KVibeValuetypeString: - { - aStatus = pRsp->iGetDeviceCapsRsp.iVibeStatus; - TUint8* text = - reinterpret_cast( - pRsp->iGetDeviceCapsRsp.iCapabilityValue ); - TInt stringSize ( pRsp->iGetDeviceCapsRsp.iSize ); - - if( stringSize > MaxCapabilityStringLength() ) - { - // truncate string if too long - stringSize = MaxCapabilityStringLength(); - } - TPtrC8 ptr( text, stringSize ); - - iReturnArray->AppendL( ptr ); - break; - } - default: - break; - }// switch - break; - } - - case KVibeCmdPlayStreamingSample: - { - aStatus = pRsp->iPlayStreamingSampleRsp.iVibeStatus; - break; - } - - case KVibeCmdCreateStreamingEffect: - { - aStatus = pRsp->iCreateStreamingEffectRsp.iVibeStatus; - - TInt effectHandle = - pRsp->iCreateStreamingEffectRsp.iEffectHandle_7_0 | - pRsp->iCreateStreamingEffectRsp.iEffectHandle_15_8 - << KShiftByte | - pRsp->iCreateStreamingEffectRsp.iEffectHandle_23_16 - << KShift2Bytes | - pRsp->iCreateStreamingEffectRsp.iEffectHandle_31_24 - << KShift3Bytes; - - TPckg effectHandlePckg( effectHandle ); - iReturnArray->AppendL( effectHandlePckg ); - break; - } - - case KVibeCmdDestroyStreamingEffect: - { - aStatus = pRsp->iDestroyStreamingEffectRsp.iVibeStatus; - break; - } - - case KVibeCmdPausePlayingEffect: - { - aStatus = pRsp->iPausePlayingEffectRsp.iVibeStatus; - break; - } - - case KVibeCmdResumePausedEffect: - { - aStatus = pRsp->iResumePausedEffectRsp.iVibeStatus; - break; - } - - case KVibeCmdGetEffectState: - { - aStatus = pRsp->iGetEffectStateRsp.iVibeStatus; - TInt effectState = pRsp->iGetEffectStateRsp.iEffectState; - - TPckg effectStatePckg( effectState ); - iReturnArray->AppendL( effectStatePckg ); - break; - } - - default: - User::Leave( KErrGeneral ); - } - - // convert vibe error code to Symbian error code - aStatus = MapError( aStatus ); - - return iReturnArray; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::DeviceHandle() - { - return iDeviceHandle; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::InfiniteRepeat() - { - return static_cast( KVibeRepeatCountInfinite ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::InfiniteDuration() - { - return KVibeTimeInfinite; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::MaxEffectNameLength() - { - return KVibeMaxEffectNameLength; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::MaxDeviceNameLength() - { - return KVibeMaxDeviceNameLength; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::MaxCapabilityStringLength() - { - return KVibeMaxCapabilityStringLength; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::MaxPropertyStringLength() - { - return KVibeMaxPropertyStringLength; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::MaxStreamingSampleSize() - { - return KVibeMaxStreamingSampleSize; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::DefaultDevicePriority() - { - return KVibeDevicePriorityDefault; - } - -// --------------------------------------------------------------------------- -// Internal helper method. Fills Get Device Capability request data. -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncGetDeviceCapabilityReqInternal( - TInt aValueType, TInt aDeviceHandle, TInt aDevCapType, RBuf8& aBuffer ) - { - TVibePacketGetDeviceCapabilitiesRequest* pReq = - reinterpret_cast - ( const_cast( iReqBuf.Ptr() ) ); - - if ( pReq ) - { - pReq->iCmdCode = KVibeCmdGetDeviceCapabilities; - pReq->iCapabilityValueType = - static_cast( aValueType ); - pReq->iDeviceIndex_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceIndex_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceIndex_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceIndex_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes ) & 0xFF ); - pReq->iCapabilityType_7_0 = - static_cast( aDevCapType & 0xFF ); - pReq->iCapabilityType_15_8 = - static_cast( ( aDevCapType >> KShiftByte ) & 0xFF ); - pReq->iCapabilityType_23_16 = - static_cast( ( aDevCapType >> KShift2Bytes ) & 0xFF ); - pReq->iCapabilityType_31_24 = - static_cast( ( aDevCapType >> KShift3Bytes ) & 0xFF ); - iReqBuf.SetLength( - sizeof ( TVibePacketGetDeviceCapabilitiesRequest ) ); - } - else - { - iReqBuf.SetLength( 0 ); - } - - return aBuffer.Create( iReqBuf ); - } - -// --------------------------------------------------------------------------- -// Internal helper method. Fills Get Device Property request data. -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncGetDevicePropertyReqInternal( - TInt aValueType, TInt aDeviceHandle, TInt aDevPropType, RBuf8& aBuffer ) - { - TVibePacketGetDevicePropertyRequest* pReq = - reinterpret_cast - ( const_cast( iReqBuf.Ptr() ) ); - - if ( pReq ) - { - pReq->iCmdCode = KVibeCmdGetDeviceProperty; - pReq->iPropertyValueType = - static_cast( aValueType ); - pReq->iDeviceHandle_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceHandle_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceHandle_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceHandle_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes ) & 0xFF ); - pReq->iPropertyType_7_0 = - static_cast( aDevPropType & 0xFF ); - pReq->iPropertyType_15_8 = - static_cast( ( aDevPropType >> KShiftByte ) & 0xFF ); - pReq->iPropertyType_23_16 = - static_cast( ( aDevPropType >> KShift2Bytes ) & 0xFF ); - pReq->iPropertyType_31_24 = - static_cast( ( aDevPropType >> KShift3Bytes ) & 0xFF ); - iReqBuf.SetLength( sizeof ( TVibePacketGetDevicePropertyRequest ) ); - } - else - { - iReqBuf.SetLength( 0 ); - } - - return aBuffer.Create( iReqBuf ); - } - -// --------------------------------------------------------------------------- -// Internal helper method. Fills Play Streaming Sample request data. -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::EncPlayStreamingSampleInternal( - TInt aDeviceHandle, TInt aEffectHandle, const TDesC8& aStreamingSample, - TInt aOffsetTime, RBuf8& aBuffer ) - { - iDataBuf.Close(); - TInt err = iDataBuf.Create( aStreamingSample.Size() + KMsgDefaultSize ); - - TVibePacketPlayStreamingSampleRequest* pReq = - reinterpret_cast - ( const_cast( iDataBuf.Ptr() ) ); - - if ( !err && pReq && - ( ( aStreamingSample.Size() + KMsgDefaultSize ) <= - KVibePacketMaxSize ) ) - { - pReq->iCmdCode = KVibeCmdPlayStreamingSample; - pReq->iDeviceHandle_7_0 = - static_cast( aDeviceHandle & 0xFF ); - pReq->iDeviceHandle_15_8 = - static_cast( ( aDeviceHandle >> KShiftByte ) & 0xFF ); - pReq->iDeviceHandle_23_16 = - static_cast( ( aDeviceHandle >> KShift2Bytes ) & 0xFF ); - pReq->iDeviceHandle_31_24 = - static_cast( ( aDeviceHandle >> KShift3Bytes ) & 0xFF ); - pReq->iEffectHandle_7_0 = - static_cast( aEffectHandle & 0xFF ); - pReq->iEffectHandle_15_8 = - static_cast( ( aEffectHandle >> KShiftByte ) & 0xFF ); - pReq->iEffectHandle_23_16 = - static_cast( ( aEffectHandle >> KShift2Bytes ) & 0xFF ); - pReq->iEffectHandle_31_24 = - static_cast( ( aEffectHandle >> KShift3Bytes ) & 0xFF ); - pReq->iSize = static_cast( aStreamingSample.Size() ); - pReq->iEffectOffsetTime_7_0 = - static_cast( aOffsetTime & 0xFF ); - pReq->iEffectOffsetTime_15_8 = - static_cast( ( aOffsetTime >> KShiftByte ) & 0xFF ); - - memcpy( pReq->iStreamingData, - reinterpret_cast( - const_cast( aStreamingSample.Ptr() ) ), - aStreamingSample.Size() ); - - iDataBuf.SetLength( - sizeof ( TVibePacketPlayStreamingSampleRequest ) - + aStreamingSample.Size() -1 ); - } - else - { - iDataBuf.SetLength( 0 ); - } - - return aBuffer.Create( iDataBuf ); - } - -// --------------------------------------------------------------------------- -// Maps Vibe error code to Symbian error code. -// --------------------------------------------------------------------------- -// -TInt CHWRMHapticsVibePacketizer::MapError( TInt aVibeError ) - { - TInt error = KErrNone; - - switch ( aVibeError ) - { - case KVibeErrAlreadyInitialized: - { - error = KErrAlreadyExists; - break; - } - - case KVibeErrNotInitialized: - { - error = KErrNotReady; - break; - } - - case KVibeWarningNotPlaying: // flow through - case KVibeErrInvalidArgument: - { - error = KErrArgument; - break; - } - - case KVibeErrFail: - { - error = KErrGeneral; - break; - } - - case KVibeErrIncompatibleEffectType: // flow through - case KVibeErrIncompatibleCapabilityType: // flow through - case KVibeErrIncompatiblePropertyType: - { - error = KErrNotSupported; - break; - } - - case KVibeErrDeviceNeedsLicense: - { - error = KErrAccessDenied; - break; - } - - case KVibeErrNotEnoughMemory: - { - error = KErrNoMemory; - break; - } - - case KVibeErrServiceNotRunning: - { - error = KErrNotReady; - break; - } - - case KVibeErrInsufficientPriority: - { - error = KErrAccessDenied; - break; - } - - case KVibeErrServiceBusy: - { - error = KErrInUse; - break; - } - - case KVibeStatusSuccess: - { - error = KErrNone; - break; - } - - default: - { - // All the warning codes, except KVibeWarningNotPlaying - // are handled here. Thus they are converted to KErrNone. - break; - } - } - - return error; - } - -// --------------------------------------------------------------------------- -// ImplementationTable[] -// --------------------------------------------------------------------------- -// -const TImplementationProxy ImplementationTable[] = - { - IMPLEMENTATION_PROXY_ENTRY( 0x20021207, CHWRMHapticsVibePacketizer::NewL ) - }; - -// --------------------------------------------------------------------------- -// TImplementationProxy* ImplementationGroupProxy() -// --------------------------------------------------------------------------- -// -EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount ) - { - aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); - return ImplementationTable; - } - -// End of file diff -r 51d936fe0d0c -r a003130def4e layers.sysdef.xml --- a/layers.sysdef.xml Fri May 28 14:18:28 2010 +0100 +++ b/layers.sysdef.xml Thu Jun 24 11:22:10 2010 +0100 @@ -14,6 +14,8 @@ + + diff -r 51d936fe0d0c -r a003130def4e mediator/data/MediatorDebug.rss --- a/mediator/data/MediatorDebug.rss Fri May 28 14:18:28 2010 +0100 +++ b/mediator/data/MediatorDebug.rss Thu Jun 24 11:22:10 2010 +0100 @@ -32,4 +32,5 @@ categories={}; options=KLogCommands+KLogEvents+KLogParameterData; output_file = "mediator.txt"; - } \ No newline at end of file + } + diff -r 51d936fe0d0c -r a003130def4e mediator/inc/Client/MediatorCommandInitiatorBody.h --- a/mediator/inc/Client/MediatorCommandInitiatorBody.h Fri May 28 14:18:28 2010 +0100 +++ b/mediator/inc/Client/MediatorCommandInitiatorBody.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005 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" @@ -93,6 +93,11 @@ * From CActive::DoCancel() */ void DoCancel(); + + /** + * From CActive::RunError() + */ + TInt RunError( TInt aError ); private: // new functions /** diff -r 51d936fe0d0c -r a003130def4e mediator/inc/Client/MediatorCommandResponderBody.h --- a/mediator/inc/Client/MediatorCommandResponderBody.h Fri May 28 14:18:28 2010 +0100 +++ b/mediator/inc/Client/MediatorCommandResponderBody.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005 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" @@ -153,6 +153,11 @@ * From CActive::DoCancel() */ void DoCancel(); + + /** + * From CActive::RunError() + */ + TInt RunError( TInt aError ); private: // new functions diff -r 51d936fe0d0c -r a003130def4e mediator/inc/Client/MediatorEventConsumerBody.h --- a/mediator/inc/Client/MediatorEventConsumerBody.h Fri May 28 14:18:28 2010 +0100 +++ b/mediator/inc/Client/MediatorEventConsumerBody.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005 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" @@ -121,6 +121,11 @@ * From CActive::DoCancel() */ void DoCancel(); + + /** + * From CActive::RunError() + */ + TInt RunError( TInt aError ); private: // New functions diff -r 51d936fe0d0c -r a003130def4e mediator/inc/Server/MediatorDebug.hrh --- a/mediator/inc/Server/MediatorDebug.hrh Fri May 28 14:18:28 2010 +0100 +++ b/mediator/inc/Server/MediatorDebug.hrh Thu Jun 24 11:22:10 2010 +0100 @@ -33,4 +33,5 @@ #define KLogStatus 0x04 // status reporting #define KLogParameterData 0x08 // log parameter data -#endif // MEDIATORDEBUG_HRH \ No newline at end of file +#endif // MEDIATORDEBUG_HRH + diff -r 51d936fe0d0c -r a003130def4e mediator/src/Client/MediatorCommandInitiatorBody.cpp --- a/mediator/src/Client/MediatorCommandInitiatorBody.cpp Fri May 28 14:18:28 2010 +0100 +++ b/mediator/src/Client/MediatorCommandInitiatorBody.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2007 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" @@ -172,6 +172,23 @@ } // ----------------------------------------------------------------------------- +// CMediatorCommandInitiatorBody::RunError +// This will be called when there is a leave from ResetDataBufferL() or CommandResponseL() from RunL +// +// ----------------------------------------------------------------------------- +// +#ifdef _DEBUG +TInt CMediatorCommandInitiatorBody::RunError( TInt aError ) +#else +TInt CMediatorCommandInitiatorBody::RunError( TInt /*aError*/ ) +#endif //_DEBUG + { + ERROR_TRACE(Print(_L("[Mediator Server]\t CMediatorCommandInitiatorBody::RunError called with Error %d\n"), aError )); + //Ignore the error. + return KErrNone; + } + +// ----------------------------------------------------------------------------- // CMediatorCommandInitiatorBody::WaitForCommandResponse // // (other items were commented in a header). diff -r 51d936fe0d0c -r a003130def4e mediator/src/Client/MediatorCommandResponderBody.cpp --- a/mediator/src/Client/MediatorCommandResponderBody.cpp Fri May 28 14:18:28 2010 +0100 +++ b/mediator/src/Client/MediatorCommandResponderBody.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005 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" @@ -162,6 +162,23 @@ StartCommandReceiving(); } + +// ----------------------------------------------------------------------------- +// CMediatorCommandResponderBody::RunError +// This will be called when there is a leave from ResetDataBufferL() +// +// ----------------------------------------------------------------------------- +// +#ifdef _DEBUG +TInt CMediatorCommandResponderBody::RunError( TInt aError ) +#else +TInt CMediatorCommandResponderBody::RunError( TInt /*aError*/ ) +#endif //_DEBUG + { + ERROR_TRACE(Print(_L("[Mediator Server]\t CMediatorCommandResponderBody::RunError called with Error %d\n"), aError )); + //Ignore the error + return KErrNone; + } // ----------------------------------------------------------------------------- // CMediatorCommandResponderBody::RegisterCommandL diff -r 51d936fe0d0c -r a003130def4e mediator/src/Client/MediatorEventConsumerBody.cpp --- a/mediator/src/Client/MediatorEventConsumerBody.cpp Fri May 28 14:18:28 2010 +0100 +++ b/mediator/src/Client/MediatorEventConsumerBody.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005 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" @@ -120,7 +120,24 @@ } StartEventReceiving(); } - + +// ----------------------------------------------------------------------------- +// CMediatorEventConsumerBody::RunError +// This will be called when there is a leave from ResetDataBufferL() and MediatorEventL() of RunL() +// +// ----------------------------------------------------------------------------- +// +#ifdef _DEBUG +TInt CMediatorEventConsumerBody::RunError( TInt aError ) +#else +TInt CMediatorEventConsumerBody::RunError( TInt /*aError*/ ) +#endif //_DEBUG + { + ERROR_TRACE(Print(_L("[Mediator Server]\t CMediatorEventConsumerBody::RunError called with Error %d\n"), aError )); + //Ignore the error + return KErrNone; + } + // ----------------------------------------------------------------------------- // CMediatorEventConsumerBody::DoCancel // diff -r 51d936fe0d0c -r a003130def4e mediator/tsrc/public/basic/group/MediatorTest.pkg --- a/mediator/tsrc/public/basic/group/MediatorTest.pkg Fri May 28 14:18:28 2010 +0100 +++ b/mediator/tsrc/public/basic/group/MediatorTest.pkg Thu Jun 24 11:22:10 2010 +0100 @@ -28,3 +28,6 @@ "\epoc32\release\armv5\urel\mediatortest.dll"-"c:\sys\bin\mediatortest.dll" "..\init\mediatortest.ini"-"c:\testframework\mediatortest.ini" +"\epoc32\release\armv5\urel\MediatorTestPlugin.dll"-"c:\sys\bin\MediatorTestPlugin.dll" +"\epoc32\data\z\resource\plugins\MediatorTestPlugin.rsc"-"c:\data\z\resource\plugins\MediatorTestPlugin.rsc" +"\epoc32\data\z\private\10207449\events\StaticEvents.rsc"-"c:\data\z\private\10207449\events\StaticEvents.rsc" diff -r 51d936fe0d0c -r a003130def4e mediator/tsrc/public/basic/src/MediatorTestCases.cpp --- a/mediator/tsrc/public/basic/src/MediatorTestCases.cpp Fri May 28 14:18:28 2010 +0100 +++ b/mediator/tsrc/public/basic/src/MediatorTestCases.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -154,101 +154,101 @@ static TCaseInfoInternal const KCases[] = { // To add new test cases, add new items to this array - FUNCENTRY( RegisterOneEvent ), - FUNCENTRY( GetListOfDomainsInitL ), - FUNCENTRY( GetListOfDomains1DomainL ), - FUNCENTRY( GetListOfEvents1EventInCategoryL ), - FUNCENTRY( RegisterMultipleEventsL ), - FUNCENTRY( RegisterOver500EventsL ), - FUNCENTRY( UnregisterNonExistingEventDom ), - FUNCENTRY( GetListOfDomainsMultipleDomainsL ), - FUNCENTRY( UnregisterNonExistingEventCat ), - FUNCENTRY( UnregisterNonExistingEventEve ), - FUNCENTRY( UnregisterExistingEvent ), - FUNCENTRY( UnregisterRxistingEventDifferentSID ), - FUNCENTRY( UnregisterAListOfEventsL ), - FUNCENTRY( UnregisterAListOfEventsNotRegisteredL ), - FUNCENTRY( SubscribeToNonExistingEventDom ), - FUNCENTRY( SubscribeToNonExistingEventCat ), - FUNCENTRY( SubscribeToNonExistingEventEve ), - FUNCENTRY( SubscribeToWrongEventVersionMajor ), - FUNCENTRY( SubscribeToEventNonExistCapabilities ), - FUNCENTRY( SubscribeToEventCorrectParam ), - FUNCENTRY( SubscribeToListOfEventsCorrectParamL ), - FUNCENTRY( SubscribeToListOfEventsOneInfoIncorrectL ), - FUNCENTRY( RaiseNonExistingEventWrongDomainL ), - FUNCENTRY( RaiseNonExistingEventWrongCatL ), - FUNCENTRY( RaiseNonExistingEventEveL ), - FUNCENTRY( RaiseEventWithWrongEventVerMajorL ), - FUNCENTRY( RaiseEventRequiresNotExistingCapsInPubL ), - FUNCENTRY( RaiseExistingEventL ), - FUNCENTRY( SubscribeExistingEventRaiseFromPublisherSideL ), - FUNCENTRY( SubscribeExistingEventRaiseFromPublisherSideDataOver1kBL ), - FUNCENTRY( SubscribeToEventDeleteConsumerInstanceRaiseEventFromPublisherL ), - FUNCENTRY( Add2ndSubscriberToEventRaiseEventFromPublisherL ), - FUNCENTRY( UnsubscribeFrom1stSubscriberL ), - FUNCENTRY( SubscribeToEventRaise500TimesInLoopL ), - FUNCENTRY( RegisterOneCommandToMediator ), - FUNCENTRY( RegisterMultipleCommandsToMediatorL ), - FUNCENTRY( RegisterOver500CommandsWithinOneCatL ), - FUNCENTRY( RegisterCommandWithDomainUID0 ), - FUNCENTRY( RegisterCommandWithCategoryUID0 ), - FUNCENTRY( RegisterCommandWithCommandID0 ), - FUNCENTRY( RegisterCommandWithTimeoutValue0 ), - FUNCENTRY( IssueNonExistingCommandWrongDomainL ), - FUNCENTRY( IssueNonExistingCommandWrongCatL ), - FUNCENTRY( IssueNonExistingCommandIdL ), - FUNCENTRY( IssueCommandWrongCommandVerMajorL ), - FUNCENTRY( IssueCommandL ), - FUNCENTRY( IssueCommand2L ), - FUNCENTRY( IssueExistingCommandSameInitiatorWhileProcessingL ), - FUNCENTRY( IssueCommandWaitWithoutRespondingToCommandL ), - FUNCENTRY( IssueCommandCancelFromInitiatorBeforeTimeoutL ), - FUNCENTRY( IssueCommandRespondCorrectlyFromResponderL ), - FUNCENTRY( IssueCommandALotOfParameterDataL ), - FUNCENTRY( IssueCommandRespondALotOfResponseDataL ), - //FUNCENTRY( GetListOfDomainsOver500Domains ), - FUNCENTRY( GetListOfCategoriesNoCategoriesL ), - FUNCENTRY( GetListOfCategoriesIncorrectDomainUIDL ), - FUNCENTRY( GetListOfCategoriesMultipleCategoriesL ), - FUNCENTRY( GetListOfCommandsL ), - FUNCENTRY( GetListOfCommandsIncorrectDomainUIDL ), - FUNCENTRY( GetListOfCommandsIncorrectCategoryUIDL ), - FUNCENTRY( GetListOfCommands1CommandL ), - FUNCENTRY( GetListOfCommandsMultipleCommandsL ), - FUNCENTRY( GetListOfCommandsOver500CommandsL ), - FUNCENTRY( GetListOfEventsNoEventsInCategoryL ), - FUNCENTRY( GetListOfEventsWithIncorrectDomainUIDL ), - FUNCENTRY( GetListOfEventsWithIncorrectCategoryUIDL ), - FUNCENTRY( GetListOfEventsMultipleEventsInCategoryL ), - FUNCENTRY( GetListOfEventsOver500EventsInCategoryL ), - FUNCENTRY( SubscribeNotificationReceiver ), - FUNCENTRY( ReSubscribeNotificationReceiver ), - FUNCENTRY( ReUnsubscribeNotificationReceiver ), - FUNCENTRY( SubscribeNotificationReceiverRegisterCommandsL ), - FUNCENTRY( SubscribeNotificationReceiverUnregCommandsSoThatCatIsEmptyL ), - FUNCENTRY( SubscribeNotificationReceiverRegisterEventsL ), - FUNCENTRY( SubscribeNotificationReceiverUnregisterEventsL ), - FUNCENTRY( SubscribeNotificationReceiverUnregisterEventsSoThatCatIsEmptyL ), - FUNCENTRY( SubscribeNotificationReceiverRegisterCommandsSoThatErrorInRegistrationL ), - FUNCENTRY( SubscribeNotificationReceiverUnegisterCommandsSoThatErrorInRegistrationL ), - FUNCENTRY( SubscribeNotificationReceiverRegisterEventsSoThatErrorInRegistration ), - FUNCENTRY( SubscribeNotificationReceiverUnregisterEventsSoThatErrorInRegistration ), - FUNCENTRY( IssueCommandCancelAndReissueL ), - FUNCENTRY( IssueCommandCancelAndIssueNewCommandL ), - FUNCENTRY( InstantiateAndDeleteMediatorPluginL ), - FUNCENTRY( IssueCommandNoDataL ), - FUNCENTRY( RaiseEventNoDataL ), - FUNCENTRY( RegisterMultipleEventsWithMultipleUIDsL ), - FUNCENTRY( RegisterMultipleCommandsWithMultipleUIDsL ), - FUNCENTRY( IssueCommandRespondIncorrectlyFromResponderL ), - FUNCENTRY( OOMForEventProviderTestL ), - FUNCENTRY( OOMForEventConsumerTestL ), - FUNCENTRY( OOMForEventProviderwithListTestL ), - FUNCENTRY( OOMForEventConsumerWithEventTestL ), - FUNCENTRY( OOMForCommandInitiatorTestL ), - FUNCENTRY( OOMForCommandInitiatorCommandListTestL ), - FUNCENTRY( OOMForMediatorNotificationsTestL ) + ENTRY( "[CMediatorTest] RegisterOneEvent", &CMediatorTest::RegisterOneEvent ), + ENTRY( "[CMediatorTest] GetListOfDomainsInitL", &CMediatorTest::GetListOfDomainsInitL ), + ENTRY( "[CMediatorTest] GetListOfDomains1DomainL", &CMediatorTest::GetListOfDomains1DomainL ), + ENTRY( "[CMediatorTest] GetListOfEvents1EventInCategoryL", &CMediatorTest::GetListOfEvents1EventInCategoryL ), + ENTRY( "[CMediatorTest] RegisterMultipleEventsL", &CMediatorTest::RegisterMultipleEventsL ), + ENTRY( "[CMediatorTest] RegisterOver500EventsL", &CMediatorTest::RegisterOver500EventsL ), + ENTRY( "[CMediatorTest] UnregisterNonExistingEventDom", &CMediatorTest::UnregisterNonExistingEventDom ), + ENTRY( "[CMediatorTest] GetListOfDomainsMultipleDomainsL", &CMediatorTest::GetListOfDomainsMultipleDomainsL ), + ENTRY( "[CMediatorTest] UnregisterNonExistingEventCat", &CMediatorTest::UnregisterNonExistingEventCat ), + ENTRY( "[CMediatorTest] UnregisterNonExistingEventEve", &CMediatorTest::UnregisterNonExistingEventEve ), + ENTRY( "[CMediatorTest] UnregisterExistingEvent", &CMediatorTest::UnregisterExistingEvent ), + ENTRY( "[CMediatorTest] UnregisterRxistingEventDifferentSID", &CMediatorTest::UnregisterRxistingEventDifferentSID ), + ENTRY( "[CMediatorTest] UnregisterAListOfEventsL", &CMediatorTest::UnregisterAListOfEventsL ), + ENTRY( "[CMediatorTest] UnregisterAListOfEventsNotRegisteredL", &CMediatorTest::UnregisterAListOfEventsNotRegisteredL ), + ENTRY( "[CMediatorTest] SubscribeToNonExistingEventDom", &CMediatorTest::SubscribeToNonExistingEventDom ), + ENTRY( "[CMediatorTest] SubscribeToNonExistingEventCat", &CMediatorTest::SubscribeToNonExistingEventCat ), + ENTRY( "[CMediatorTest] SubscribeToNonExistingEventEve", &CMediatorTest::SubscribeToNonExistingEventEve ), + ENTRY( "[CMediatorTest] SubscribeToWrongEventVersionMajor", &CMediatorTest::SubscribeToWrongEventVersionMajor ), + ENTRY( "[CMediatorTest] SubscribeToEventNonExistCapabilities", &CMediatorTest::SubscribeToEventNonExistCapabilities ), + ENTRY( "[CMediatorTest] SubscribeToEventCorrectParam", &CMediatorTest::SubscribeToEventCorrectParam ), + ENTRY( "[CMediatorTest] SubscribeToListOfEventsCorrectParamL", &CMediatorTest::SubscribeToListOfEventsCorrectParamL ), + ENTRY( "[CMediatorTest] SubscribeToListOfEventsOneInfoIncorrectL", &CMediatorTest::SubscribeToListOfEventsOneInfoIncorrectL ), + ENTRY( "[CMediatorTest] RaiseNonExistingEventWrongDomainL", &CMediatorTest::RaiseNonExistingEventWrongDomainL ), + ENTRY( "[CMediatorTest] RaiseNonExistingEventWrongCatL", &CMediatorTest::RaiseNonExistingEventWrongCatL ), + ENTRY( "[CMediatorTest] RaiseNonExistingEventEveL", &CMediatorTest::RaiseNonExistingEventEveL ), + ENTRY( "[CMediatorTest] RaiseEventWithWrongEventVerMajorL", &CMediatorTest::RaiseEventWithWrongEventVerMajorL ), + ENTRY( "[CMediatorTest] RaiseEventRequiresNotExistingCapsInPubL", &CMediatorTest::RaiseEventRequiresNotExistingCapsInPubL ), + ENTRY( "[CMediatorTest] RaiseExistingEventL", &CMediatorTest::RaiseExistingEventL ), + ENTRY( "[CMediatorTest] SubscribeExistingEventRaiseFromPublisherSideL", &CMediatorTest::SubscribeExistingEventRaiseFromPublisherSideL ), + ENTRY( "[CMediatorTest] SubscribeExistingEventRaiseFromPublisherSideDataOver1kBL", &CMediatorTest::SubscribeExistingEventRaiseFromPublisherSideDataOver1kBL ), + ENTRY( "[CMediatorTest] SubscribeToEventDeleteConsumerInstanceRaiseEventFromPublisherL", &CMediatorTest::SubscribeToEventDeleteConsumerInstanceRaiseEventFromPublisherL ), + ENTRY( "[CMediatorTest] Add2ndSubscriberToEventRaiseEventFromPublisherL", &CMediatorTest::Add2ndSubscriberToEventRaiseEventFromPublisherL ), + ENTRY( "[CMediatorTest] UnsubscribeFrom1stSubscriberL", &CMediatorTest::UnsubscribeFrom1stSubscriberL ), + ENTRY( "[CMediatorTest] SubscribeToEventRaise500TimesInLoopL", &CMediatorTest::SubscribeToEventRaise500TimesInLoopL ), + ENTRY( "[CMediatorTest] RegisterOneCommandToMediator", &CMediatorTest::RegisterOneCommandToMediator ), + ENTRY( "[CMediatorTest] RegisterMultipleCommandsToMediatorL", &CMediatorTest::RegisterMultipleCommandsToMediatorL ), + ENTRY( "[CMediatorTest] RegisterOver500CommandsWithinOneCatL", &CMediatorTest::RegisterOver500CommandsWithinOneCatL ), + ENTRY( "[CMediatorTest] RegisterCommandWithDomainUID0", &CMediatorTest::RegisterCommandWithDomainUID0 ), + ENTRY( "[CMediatorTest] RegisterCommandWithCategoryUID0", &CMediatorTest::RegisterCommandWithCategoryUID0 ), + ENTRY( "[CMediatorTest] RegisterCommandWithCommandID0", &CMediatorTest::RegisterCommandWithCommandID0 ), + ENTRY( "[CMediatorTest] RegisterCommandWithTimeoutValue0", &CMediatorTest::RegisterCommandWithTimeoutValue0 ), + ENTRY( "[CMediatorTest] IssueNonExistingCommandWrongDomainL", &CMediatorTest::IssueNonExistingCommandWrongDomainL ), + ENTRY( "[CMediatorTest] IssueNonExistingCommandWrongCatL", &CMediatorTest::IssueNonExistingCommandWrongCatL ), + ENTRY( "[CMediatorTest] IssueNonExistingCommandIdL", &CMediatorTest::IssueNonExistingCommandIdL ), + ENTRY( "[CMediatorTest] IssueCommandWrongCommandVerMajorL", &CMediatorTest::IssueCommandWrongCommandVerMajorL ), + ENTRY( "[CMediatorTest] IssueCommandL", &CMediatorTest::IssueCommandL ), + ENTRY( "[CMediatorTest] IssueCommand2L", &CMediatorTest::IssueCommand2L ), + ENTRY( "[CMediatorTest] IssueExistingCommandSameInitiatorWhileProcessingL", &CMediatorTest::IssueExistingCommandSameInitiatorWhileProcessingL ), + ENTRY( "[CMediatorTest] IssueCommandWaitWithoutRespondingToCommandL", &CMediatorTest::IssueCommandWaitWithoutRespondingToCommandL ), + ENTRY( "[CMediatorTest] IssueCommandCancelFromInitiatorBeforeTimeoutL", &CMediatorTest::IssueCommandCancelFromInitiatorBeforeTimeoutL ), + ENTRY( "[CMediatorTest] IssueCommandRespondCorrectlyFromResponderL", &CMediatorTest::IssueCommandRespondCorrectlyFromResponderL ), + ENTRY( "[CMediatorTest] IssueCommandALotOfParameterDataL", &CMediatorTest::IssueCommandALotOfParameterDataL ), + ENTRY( "[CMediatorTest] IssueCommandRespondALotOfResponseDataL", &CMediatorTest::IssueCommandRespondALotOfResponseDataL ), + //ENTRY( "[CMediatorTest] GetListOfDomainsOver500Domains", &CMediatorTest::GetListOfDomainsOver500Domains ), + ENTRY( "[CMediatorTest] GetListOfCategoriesNoCategoriesL", &CMediatorTest::GetListOfCategoriesNoCategoriesL ), + ENTRY( "[CMediatorTest] GetListOfCategoriesIncorrectDomainUIDL", &CMediatorTest::GetListOfCategoriesIncorrectDomainUIDL ), + ENTRY( "[CMediatorTest] GetListOfCategoriesMultipleCategoriesL", &CMediatorTest::GetListOfCategoriesMultipleCategoriesL ), + ENTRY( "[CMediatorTest] GetListOfCommandsL", &CMediatorTest::GetListOfCommandsL ), + ENTRY( "[CMediatorTest] GetListOfCommandsIncorrectDomainUIDL", &CMediatorTest::GetListOfCommandsIncorrectDomainUIDL ), + ENTRY( "[CMediatorTest] GetListOfCommandsIncorrectCategoryUIDL", &CMediatorTest::GetListOfCommandsIncorrectCategoryUIDL ), + ENTRY( "[CMediatorTest] GetListOfCommands1CommandL", &CMediatorTest::GetListOfCommands1CommandL ), + ENTRY( "[CMediatorTest] GetListOfCommandsMultipleCommandsL", &CMediatorTest::GetListOfCommandsMultipleCommandsL ), + ENTRY( "[CMediatorTest] GetListOfCommandsOver500CommandsL", &CMediatorTest::GetListOfCommandsOver500CommandsL ), + ENTRY( "[CMediatorTest] GetListOfEventsNoEventsInCategoryL", &CMediatorTest::GetListOfEventsNoEventsInCategoryL ), + ENTRY( "[CMediatorTest] GetListOfEventsWithIncorrectDomainUIDL", &CMediatorTest::GetListOfEventsWithIncorrectDomainUIDL ), + ENTRY( "[CMediatorTest] GetListOfEventsWithIncorrectCategoryUIDL", &CMediatorTest::GetListOfEventsWithIncorrectCategoryUIDL ), + ENTRY( "[CMediatorTest] GetListOfEventsMultipleEventsInCategoryL", &CMediatorTest::GetListOfEventsMultipleEventsInCategoryL ), + ENTRY( "[CMediatorTest] GetListOfEventsOver500EventsInCategoryL", &CMediatorTest::GetListOfEventsOver500EventsInCategoryL ), + ENTRY( "[CMediatorTest] SubscribeNotificationReceiver", &CMediatorTest::SubscribeNotificationReceiver ), + ENTRY( "[CMediatorTest] ReSubscribeNotificationReceiver", &CMediatorTest::ReSubscribeNotificationReceiver ), + ENTRY( "[CMediatorTest] ReUnsubscribeNotificationReceiver", &CMediatorTest::ReUnsubscribeNotificationReceiver ), + ENTRY( "[CMediatorTest] SubscribeNotificationReceiverRegisterCommandsL", &CMediatorTest::SubscribeNotificationReceiverRegisterCommandsL ), + ENTRY( "[CMediatorTest] SubscribeNotificationReceiverUnregCommandsSoThatCatIsEmptyL", &CMediatorTest::SubscribeNotificationReceiverUnregCommandsSoThatCatIsEmptyL ), + ENTRY( "[CMediatorTest] SubscribeNotificationReceiverRegisterEventsL", &CMediatorTest::SubscribeNotificationReceiverRegisterEventsL ), + ENTRY( "[CMediatorTest] SubscribeNotificationReceiverUnregisterEventsL", &CMediatorTest::SubscribeNotificationReceiverUnregisterEventsL ), + ENTRY( "[CMediatorTest] SubscribeNotificationReceiverUnregisterEventsSoThatCatIsEmptyL", &CMediatorTest::SubscribeNotificationReceiverUnregisterEventsSoThatCatIsEmptyL ), + ENTRY( "[CMediatorTest] SubscribeNotificationReceiverRegisterCommandsSoThatErrorInRegistrationL", &CMediatorTest::SubscribeNotificationReceiverRegisterCommandsSoThatErrorInRegistrationL ), + ENTRY( "[CMediatorTest] SubscribeNotificationReceiverUnegisterCommandsSoThatErrorInRegistrationL", &CMediatorTest::SubscribeNotificationReceiverUnegisterCommandsSoThatErrorInRegistrationL ), + ENTRY( "[CMediatorTest] SubscribeNotificationReceiverRegisterEventsSoThatErrorInRegistration", &CMediatorTest::SubscribeNotificationReceiverRegisterEventsSoThatErrorInRegistration ), + ENTRY( "[CMediatorTest] SubscribeNotificationReceiverUnregisterEventsSoThatErrorInRegistration", &CMediatorTest::SubscribeNotificationReceiverUnregisterEventsSoThatErrorInRegistration ), + ENTRY( "[CMediatorTest] IssueCommandCancelAndReissueL", &CMediatorTest::IssueCommandCancelAndReissueL ), + ENTRY( "[CMediatorTest] IssueCommandCancelAndIssueNewCommandL", &CMediatorTest::IssueCommandCancelAndIssueNewCommandL ), + ENTRY( "[CMediatorTest] InstantiateAndDeleteMediatorPluginL", &CMediatorTest::InstantiateAndDeleteMediatorPluginL ), + ENTRY( "[CMediatorTest] IssueCommandNoDataL", &CMediatorTest::IssueCommandNoDataL ), + ENTRY( "[CMediatorTest] RaiseEventNoDataL", &CMediatorTest::RaiseEventNoDataL ), + ENTRY( "[CMediatorTest] RegisterMultipleEventsWithMultipleUIDsL", &CMediatorTest::RegisterMultipleEventsWithMultipleUIDsL ), + ENTRY( "[CMediatorTest] RegisterMultipleCommandsWithMultipleUIDsL", &CMediatorTest::RegisterMultipleCommandsWithMultipleUIDsL ), + ENTRY( "[CMediatorTest] IssueCommandRespondIncorrectlyFromResponderL", &CMediatorTest::IssueCommandRespondIncorrectlyFromResponderL ), + ENTRY( "[CMediatorTest] OOMForEventProviderTestL", &CMediatorTest::OOMForEventProviderTestL ), + ENTRY( "[CMediatorTest] OOMForEventConsumerTestL", &CMediatorTest::OOMForEventConsumerTestL ), + ENTRY( "[CMediatorTest] OOMForEventProviderwithListTestL", &CMediatorTest::OOMForEventProviderwithListTestL ), + ENTRY( "[CMediatorTest] OOMForEventConsumerWithEventTestL", &CMediatorTest::OOMForEventConsumerWithEventTestL ), + ENTRY( "[CMediatorTest] OOMForCommandInitiatorTestL", &CMediatorTest::OOMForCommandInitiatorTestL ), + ENTRY( "[CMediatorTest] OOMForCommandInitiatorCommandListTestL", &CMediatorTest::OOMForCommandInitiatorCommandListTestL ), + ENTRY( "[CMediatorTest] OOMForMediatorNotificationsTestL", &CMediatorTest::OOMForMediatorNotificationsTestL ) // Example how to use OOM functionality //OOM_ENTRY( "Loop test with OOM", LoopTest, ETrue, 2, 3 ), //OOM_FUNCENTRY( PrintTest, ETrue, 1, 3 ), diff -r 51d936fe0d0c -r a003130def4e psmservices/psmserver/src/client/psmclientimpl.cpp --- a/psmservices/psmserver/src/client/psmclientimpl.cpp Fri May 28 14:18:28 2010 +0100 +++ b/psmservices/psmserver/src/client/psmclientimpl.cpp Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e psmservices/psmserver/src/engine/psmbackupstorage.cpp --- a/psmservices/psmserver/src/engine/psmbackupstorage.cpp Fri May 28 14:18:28 2010 +0100 +++ b/psmservices/psmserver/src/engine/psmbackupstorage.cpp Thu Jun 24 11:22:10 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" @@ -194,6 +194,7 @@ // Search correct set item for aKey TBool setFound( EFalse ); RXmlEngNodeList nodeList; + CleanupClosePushL(nodeList); aConfigSet.GetElementsByTagNameL(nodeList, KPsmSetItem); TXmlEngElement setItem = nodeList.Next().AsElement(); @@ -205,7 +206,7 @@ if ( aKey == setItemKey ) { - // Set found, no need to loop anumore + // Set found, no need to loop any more setFound = ETrue; } else @@ -214,7 +215,8 @@ setItem = nodeList.Next().AsElement(); } } - + + CleanupStack::PopAndDestroy(&nodeList); if ( !setFound ) { COMPONENT_TRACE( ( _L( "PSM Server - CPsmBackupStorage::FindSetItemL() - Not found id:%i, LEAVE" ), aKey ) ); diff -r 51d936fe0d0c -r a003130def4e psmservices/psmserver/src/engine/psmstorage.cpp --- a/psmservices/psmserver/src/engine/psmstorage.cpp Fri May 28 14:18:28 2010 +0100 +++ b/psmservices/psmserver/src/engine/psmstorage.cpp Thu Jun 24 11:22:10 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" @@ -112,6 +112,7 @@ TBool setFound( EFalse ); TXmlEngElement settings; RXmlEngNodeList nodeList; + CleanupClosePushL(nodeList); if ( iStorageRoot.NotNull() ) { @@ -141,7 +142,7 @@ settings = nodeList.Next().AsElement(); } } - + CleanupStack::PopAndDestroy(&nodeList); if ( !setFound ) { COMPONENT_TRACE( ( _L( "PSM Server - CPsmStorage::FindConfigurationSet() - Mode not found: %i, LEAVE" ), aMode ) ); @@ -166,6 +167,7 @@ // Get first setElemens RXmlEngNodeList nodeList; + CleanupClosePushL(nodeList); settings.GetElementsByTagNameL(nodeList, KPsmSetItem); TXmlEngElement setElement = nodeList.Next().AsElement(); @@ -207,7 +209,7 @@ // handle next element set setElement = nodeList.Next().AsElement(); } - + CleanupStack::PopAndDestroy(&nodeList); COMPONENT_TRACE( ( _L( "PSM Server - CPsmStorage::CreateConfigArrayL() - return" ) ) ); } @@ -227,6 +229,7 @@ // Get first setElemens RXmlEngNodeList nodeList; + CleanupClosePushL(nodeList); settings.GetElementsByTagNameL(nodeList, KPsmSetItem); TXmlEngElement setElement = nodeList.Next().AsElement(); @@ -287,6 +290,7 @@ setElement = nodeList.Next().AsElement(); } + CleanupStack::PopAndDestroy(&nodeList); COMPONENT_TRACE( ( _L( "PSM Server - CPsmStorage::GetConfigurationL() - return" ) ) ); } diff -r 51d936fe0d0c -r a003130def4e psmservices/psmserver/src/server/psmsrvsession.cpp --- a/psmservices/psmserver/src/server/psmsrvsession.cpp Fri May 28 14:18:28 2010 +0100 +++ b/psmservices/psmserver/src/server/psmsrvsession.cpp Thu Jun 24 11:22:10 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" @@ -15,7 +15,8 @@ * */ - +#include +#include #include #include "psmmanager.h" #include "psmsrvserver.h" @@ -167,7 +168,18 @@ { User::Leave( KErrArgument ); } - + + TInt keyVal = -1; + User::LeaveIfError( RProperty::Get( KUidSystemCategory, conn::KUidBackupRestoreKey, keyVal ) ); + //if backup or restore is in progress, change in power save mode + //is not allowed as it will not be possible to do write + //operation in cenrep and it would leave the device in unstable power saving mode state + if( (( keyVal & conn::KBURPartTypeMask ) != conn::EBURNormal ) + && (( keyVal & conn::KBURPartTypeMask ) != conn::EBURUnset )) + { + User::Leave( KErrNotSupported ); + } + iNotifyModeMessage->Initialize( aMessage ); iPsmManager.NotifyPowerSaveModeChangeL( mode ); break; diff -r 51d936fe0d0c -r a003130def4e psmservices/psmserver/tsrc/PsmTestModule/group/PsmTestModule.pkg --- a/psmservices/psmserver/tsrc/PsmTestModule/group/PsmTestModule.pkg Fri May 28 14:18:28 2010 +0100 +++ b/psmservices/psmserver/tsrc/PsmTestModule/group/PsmTestModule.pkg Thu Jun 24 11:22:10 2010 +0100 @@ -29,3 +29,11 @@ "..\conf\PsmTestModule.cfg"-"c:\testframework\PsmTestModule.cfg" "..\init\PsmTestModule_armi.ini"-"c:\testframework\PsmTestModule_armi.ini" +;data files + +"\epoc32\data\z\private\2000B187\10200EE1.xml"-"c:\private\2000B187\10200EE1.xml" +"\epoc32\data\z\private\2000B187\10200EE2.xml"-"c:\private\2000B187\10200EE2.xml" +"\epoc32\data\z\private\2000B187\10200EE4.xml"-"c:\private\2000B187\10200EE4.xml" +"\epoc32\data\z\private\2000B187\10200EE5.xml"-"c:\private\2000B187\10200EE5.xml" +"\epoc32\data\z\private\2000B187\cenrep\10200EE3.xml"-"c:\private\2000B187\cenrep\10200EE3.xml" +"\epoc32\data\z\private\10202BE9\10200EE3.txt"-"c:\private\10202BE9\10200EE3.txt" \ No newline at end of file diff -r 51d936fe0d0c -r a003130def4e resourceinterfaces/fmtransmittercontrol/group/FmTx_HWRM.iby --- a/resourceinterfaces/fmtransmittercontrol/group/FmTx_HWRM.iby Fri May 28 14:18:28 2010 +0100 +++ b/resourceinterfaces/fmtransmittercontrol/group/FmTx_HWRM.iby Thu Jun 24 11:22:10 2010 +0100 @@ -21,7 +21,7 @@ #include // Feature Registry (featreg.dll) -#ifndef SYMBIAN_EXCLUDE_FMTX +#ifdef FF_FMTX file=ABI_DIR\DEBUG_DIR\HWRMFmTxClient.dll SYSTEM_BINDIR\HWRMFmTxClient.dll #endif diff -r 51d936fe0d0c -r a003130def4e resourceinterfaces/fmtransmittercontrol/group/telephony_hwrmfmtx.mrp --- a/resourceinterfaces/fmtransmittercontrol/group/telephony_hwrmfmtx.mrp Fri May 28 14:18:28 2010 +0100 +++ b/resourceinterfaces/fmtransmittercontrol/group/telephony_hwrmfmtx.mrp Thu Jun 24 11:22:10 2010 +0100 @@ -1,3 +1,19 @@ +# +# Copyright (c) 2009 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: +# + component telephony_hwrmfmtx source \sf\os\devicesrv\resourceinterfaces\fmtransmittercontrol binary \sf\os\devicesrv\resourceinterfaces\fmtransmittercontrol\group all diff -r 51d936fe0d0c -r a003130def4e resourcemgmt/hwresourcesmgr/documentation/HWRM Central Repository keys.xls Binary file resourcemgmt/hwresourcesmgr/documentation/HWRM Central Repository keys.xls has changed diff -r 51d936fe0d0c -r a003130def4e resourcemgmt/hwresourcesmgr/group/telephony_hwrm.mrp --- a/resourcemgmt/hwresourcesmgr/group/telephony_hwrm.mrp Fri May 28 14:18:28 2010 +0100 +++ b/resourcemgmt/hwresourcesmgr/group/telephony_hwrm.mrp Thu Jun 24 11:22:10 2010 +0100 @@ -1,3 +1,19 @@ +# +# Copyright (c) 2009 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: +# + component telephony_hwrm source \sf\os\devicesrv\resourcemgmt\hwresourcesmgr\client diff -r 51d936fe0d0c -r a003130def4e resourcemgmt/hwresourcesmgr/test/data/featreg/RemovableFeatures.iby --- a/resourcemgmt/hwresourcesmgr/test/data/featreg/RemovableFeatures.iby Fri May 28 14:18:28 2010 +0100 +++ b/resourcemgmt/hwresourcesmgr/test/data/featreg/RemovableFeatures.iby Thu Jun 24 11:22:10 2010 +0100 @@ -17,18 +17,18 @@ #define __REMOVABLEFEATURES_IBY__ #define SYMBIAN_EXCLUDE_FAX -#define SYMBIAN_EXCLUDE_PRINT -#define SYMBIAN_EXCLUDE_MMC +#undef __UPNP_PRINT_FRAMEWORK +#undef __MMC #define SYMBIAN_EXCLUDE_RTP_RTCP #define SYMBIAN_EXCLUDE_PC_CONNECTIVITY_EXCEPT_SECURE_BACKUP -#define SYMBIAN_EXCLUDE_INFRARED -#define SYMBIAN_EXCLUDE_BLUETOOTH +#undef __IRDA +#undef __BT #define SYMBIAN_EXCLUDE_OBEX -#define SYMBIAN_EXCLUDE_USB +#undef __USB #define SYMBIAN_EXCLUDE_DRM_AGENT_PLUGINS -#define SYMBIAN_EXCLUDE_IPSEC +#undef __IPSEC #define SYMBIAN_EXCLUDE_QOS_PROTPLUGINS -#define SYMBIAN_EXCLUDE_DHCP +#undef __DHCP #define SYMBIAN_EXCLUDE_MOBILEIP #define SYMBIAN_EXCLUDE_LOCATION #define SYMBIAN_EXCLUDE_SIP @@ -36,13 +36,13 @@ #define SYMBIAN_EXCLUDE_OMA_DATASYNC #define SYMBIAN_EXCLUDE_OMA_DEVMAN #define SYMBIAN_EXCLUDE_OMA_DS_HOSTSERVERS -#define SYMBIAN_EXCLUDE_MTP +#undef __MTP_PROTOCOL_SUPPORT // Include HWRM features by uncommenting their exclusion macros -//#define SYMBIAN_EXCLUDE_FMTX -//#define SYMBIAN_EXCLUDE_VIBRA -//#define SYMBIAN_EXCLUDE_AMBIENT_LIGHT_SENSOR -//#define SYMBIAN_EXCLUDE_COVER_DISPLAY -//#define SYMBIAN_EXCLUDE_KEYPAD_NO_SLIDER +//#undef FF_FMTX +//#undef __VIBRA +//#undef __SERIES60_AMBIENT_LIGHT_SENSOR +//#undef __COVER_DISPLAY +//#undef __SERIES60_KEYPAD_NO_SLIDER #endif diff -r 51d936fe0d0c -r a003130def4e resourcemgmt/hwresourcesmgrconfig/telephony_hwrm-config.mrp --- a/resourcemgmt/hwresourcesmgrconfig/telephony_hwrm-config.mrp Fri May 28 14:18:28 2010 +0100 +++ b/resourcemgmt/hwresourcesmgrconfig/telephony_hwrm-config.mrp Thu Jun 24 11:22:10 2010 +0100 @@ -1,3 +1,19 @@ +# +# Copyright (c) 2009 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: +# + component telephony_hwrm-config source \sf\os\devicesrv\resourcemgmt\hwresourcesmgrconfig diff -r 51d936fe0d0c -r a003130def4e resourcemgmt/hwrmfmtxwatcherplugin/data/20012401.rss --- a/resourcemgmt/hwrmfmtxwatcherplugin/data/20012401.rss Fri May 28 14:18:28 2010 +0100 +++ b/resourcemgmt/hwrmfmtxwatcherplugin/data/20012401.rss Thu Jun 24 11:22:10 2010 +0100 @@ -43,4 +43,5 @@ }; } }; - } \ No newline at end of file + } + diff -r 51d936fe0d0c -r a003130def4e resourcemgmt/hwrmfmtxwatcherplugin/src/hwrmfmtxusbobserver.cpp --- a/resourcemgmt/hwrmfmtxwatcherplugin/src/hwrmfmtxusbobserver.cpp Fri May 28 14:18:28 2010 +0100 +++ b/resourcemgmt/hwrmfmtxwatcherplugin/src/hwrmfmtxusbobserver.cpp Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e resourcemgmt/hwrmtargetmodifierplugin/data/10281B9B.rss --- a/resourcemgmt/hwrmtargetmodifierplugin/data/10281B9B.rss Fri May 28 14:18:28 2010 +0100 +++ b/resourcemgmt/hwrmtargetmodifierplugin/data/10281B9B.rss Thu Jun 24 11:22:10 2010 +0100 @@ -45,4 +45,5 @@ }; } }; - } \ No newline at end of file + } + diff -r 51d936fe0d0c -r a003130def4e resourcemgmt/powerandmemorynotificationservice/group/syslibs_pwrcli.mrp --- a/resourcemgmt/powerandmemorynotificationservice/group/syslibs_pwrcli.mrp Fri May 28 14:18:28 2010 +0100 +++ b/resourcemgmt/powerandmemorynotificationservice/group/syslibs_pwrcli.mrp Thu Jun 24 11:22:10 2010 +0100 @@ -1,3 +1,19 @@ +# +# Copyright (c) 2009 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: +# + component syslibs_pwrcli source \sf\os\devicesrv\resourcemgmt\powerandmemorynotificationservice binary \sf\os\devicesrv\resourcemgmt\powerandmemorynotificationservice\group all diff -r 51d936fe0d0c -r a003130def4e sensorservices/orientationssy/inc/SsyConfiguration.h --- a/sensorservices/orientationssy/inc/SsyConfiguration.h Fri May 28 14:18:28 2010 +0100 +++ b/sensorservices/orientationssy/inc/SsyConfiguration.h Thu Jun 24 11:22:10 2010 +0100 @@ -156,8 +156,7 @@ KNoRealValue, 0, // iMinValue KNoRealValue, - ETrue, // iReadOnly. Default value is not readonly, it is set - // to read only when updated. + ETrue, // iReadOnly. ESensrvIntProperty // iPropertyType } }; diff -r 51d936fe0d0c -r a003130def4e sensorservices/orientationssy/src/SsyChannel.cpp --- a/sensorservices/orientationssy/src/SsyChannel.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sensorservices/orientationssy/src/SsyChannel.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -303,17 +303,6 @@ break; case EChannelOpening: { - // Before completing channel opening, get max data rate from actual SSY - if ( !iSensorProperties->DataRateUpdated() ) - { - TSensrvProperty maxdatarate; - RSensrvChannelList affectedChannels; - // Get max data rate - iOrientationHandler->GetMaxDataRateL( maxdatarate ); - // Set property - iSensorProperties->SetProperty( maxdatarate, affectedChannels ); - } - SetChannelState( EChannelOpen ); iCallback->ChannelOpened( iChannelInfo.iChannelId, iStatus.Int(), this, this ); break; @@ -808,7 +797,9 @@ { aChannelPropertyList.Append( channelProperties[index] ); } - + + channelProperties.Close(); + SSY_TRACE_OUT(); } diff -r 51d936fe0d0c -r a003130def4e sensorservices/orientationssy/src/SsyProperty.cpp --- a/sensorservices/orientationssy/src/SsyProperty.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sensorservices/orientationssy/src/SsyProperty.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -297,14 +297,13 @@ else if ( aProperty.GetPropertyId() == KSensrvPropIdDataRate ) { - SSY_TRACE( EExtended, "ORIENTATIONSSY: Updating data rate property" ); - // Data rate property is replaced in a different way than others. - // Note that this can be done only once as this property is set to read only. - aProperty.GetValue( intValue ); - // Leave value to 0, update only max value because that is the only value we can provide + // Since Orientation is an event, the data rate property is made readonly. + // In ssyconfiguration.h file, the datarate property is defined as writable, + // it is not modified due to backward compatibility. + // Now it is changed and the orientation channel property is made readonly always. + if( iChannelProperties.Count() >= index ) { - iChannelProperties[index].iIntMaxValue = intValue; iChannelProperties[index].iReadOnly = ETrue; } diff -r 51d936fe0d0c -r a003130def4e sensorservices/sensorserver/src/server/sensrvpluginproxy.cpp --- a/sensorservices/sensorserver/src/server/sensrvpluginproxy.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sensorservices/sensorserver/src/server/sensrvpluginproxy.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -30,6 +30,10 @@ #include "sensrvclientserver.h" #include "sensrvthreadmonitor.h" #include "sensrvchanneldatareader.h" +#include +#include + + // --------------------------------------------------------------------------- // 2-phase constructor @@ -251,14 +255,13 @@ { buf->Des().AppendNum(iProxyManager.GenerateUniqueId()); + err = iSsyThread.Create(*buf, SsyThreadFunction, ProxyManager().SsyStackSize(), - KSensrvSsyHeapInitialSize, - ProxyManager().SsyHeapMaxSize(), + NULL, (TAny*)this); - if (err == KErrAlreadyExists) { COMPONENT_TRACE( ( _L( "Sensor Server - CSensrvPluginProxy::InitializePluginL - Thread name is already in use, recreating..." ) ) ); @@ -1339,7 +1342,7 @@ return KErrBadHandle; } - __UHEAP_MARK; + // __UHEAP_MARK; #ifdef MEMORY_TRACE_DEBUG // TRACE heap usage @@ -1425,7 +1428,7 @@ MEMORY_TRACE( ( _L( "#### Sensor Server, SSY exit - HEAP: Size: %d, Available: %d, Used: %d, Change in used: %d" ), heapSize, heapAvail, newUsed, newUsed - used ) ); #endif - __UHEAP_MARKEND; + // __UHEAP_MARKEND; return err; } diff -r 51d936fe0d0c -r a003130def4e sensorservices/sensorserver/tsrc/sensorsrvtest/SensorTestModule/cenrepsample/1020507E.txt Binary file sensorservices/sensorserver/tsrc/sensorsrvtest/SensorTestModule/cenrepsample/1020507E.txt has changed diff -r 51d936fe0d0c -r a003130def4e sensorservices/sensorserver/tsrc/sensorsrvtest/SensorTestModule/cenrepsample/10282DEE.txt Binary file sensorservices/sensorserver/tsrc/sensorsrvtest/SensorTestModule/cenrepsample/10282DEE.txt has changed diff -r 51d936fe0d0c -r a003130def4e sensorservices/sensorserver/tsrc/sensorsrvtest/SensorTestModule/cenrepsample/sensorframework.confml Binary file sensorservices/sensorserver/tsrc/sensorsrvtest/SensorTestModule/cenrepsample/sensorframework.confml has changed diff -r 51d936fe0d0c -r a003130def4e sensorservices/sensorserver/tsrc/sensorsrvtest/SensorTestModule/cenrepsample/sensorframework_10282DEE.crml Binary file sensorservices/sensorserver/tsrc/sensorsrvtest/SensorTestModule/cenrepsample/sensorframework_10282DEE.crml has changed diff -r 51d936fe0d0c -r a003130def4e sensorservices/sensorserver/tsrc/sensorsrvtest/SensorTestModule/group/bld.inf --- a/sensorservices/sensorserver/tsrc/sensorsrvtest/SensorTestModule/group/bld.inf Fri May 28 14:18:28 2010 +0100 +++ b/sensorservices/sensorserver/tsrc/sensorsrvtest/SensorTestModule/group/bld.inf Thu Jun 24 11:22:10 2010 +0100 @@ -27,15 +27,13 @@ // NOTE: If using ARS requirements all export operations should be done under this. // 'abld test export' + +../cenrepsample/sensorframework.confml OS_LAYER_CONFML(sensorframework.confml) +../cenrepsample/sensorframework_10282DEE.crml OS_LAYER_CRML(sensorframework_10282DEE.crml) + ../../conf/SensorTestModule.cfg /epoc32/winscw/c/testframework/SensorTestModule.cfg ../../init/SensorTestModule.ini /epoc32/winscw/c/testframework/SensorTestModule.ini -../cenrepsample/10282DEE.txt /epoc32/RELEASE/winscw/UDEB/Z/private/10202BE9/10282DEE.txt -../cenrepsample/10282DEE.txt /epoc32/RELEASE/winscw/UREL/Z/private/10202BE9/10282DEE.txt -../cenrepsample/10282DEE.txt /epoc32/data/Z/private/10202BE9/10282DEE_stub.txt -../cenrepsample/1020507E.txt /epoc32/RELEASE/winscw/UDEB/Z/private/10202BE9/1020507E.txt -../cenrepsample/1020507E.txt /epoc32/RELEASE/winscw/UREL/Z/private/10202BE9/1020507E.txt -../cenrepsample/1020507E.txt /epoc32/data/Z/private/10202BE9/1020507E_stub.txt ../../rom/SensorServer_ats3.iby CORE_OS_LAYER_IBY_EXPORT_PATH(SensorServer_ats3.iby) diff -r 51d936fe0d0c -r a003130def4e sensorservices/sensorserver/tsrc/sensorsrvtest/conf/SensorTestModule_OOM.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sensorservices/sensorserver/tsrc/sensorsrvtest/conf/SensorTestModule_OOM.cfg Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,2953 @@ +/* +* Copyright (c) 2009 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: ?Description +* +*/ + + +// Publish&Subscribe definitions +// From SensrvInternalPSKeys.h +[Define] +KSensrvLeaveFirstStubConstruction 1 +KSensrvLeaveSecondStubConstruction 2 +KSensrvStubConstructionDelay 3 +KSensrvFirstStubChannelCount 4 +KSensrvSecondStubChannelCount 5 +KSensrvLatestOpenedChannel 6 +KSensrvLatestClosedChannel 7 +KSensrvLatestStartListeningChannel 8 +KSensrvLatestStopListeningChannel 9 +KSensrvSamplingInterval 10 +KSensrvStubConstructionJam 11 +KSensrvStartListeningJam 12 +KSensrvStopListeningJam 13 +KSensrvOpenChannelAsyncJam 14 +KSensrvCloseChannelAsyncJam 15 +KSensrvChannelOpenedError 16 +KSensrvChannelClosedError 17 +KSensrvStartListeningLeave 18 +KSensrvStopListeningLeave 19 +KSensrvDataListeningJam 20 +KSensrvDataListeningBufferFilledError 21 +KSensrvForceBufferFilledJam 22 +KSensrvForceBufferFilledLeave 23 +KSensrvOpenChannelMethodJam 24 +KSensrvCloseChannelMethodJam 25 +KSensrvOpenChannelError 26 +KSensrvCloseChannelError 27 +KSensrvChannelOpenedWithError 28 +KSensrvPropertyChanged 29 +KSensrvOpenChannelMethodPanic 30 +KSensrvOpenChannelAsyncPanic 31 +KSensrvCloseChannelMethodPanic 32 +KSensrvCloseChannelAsyncPanic 33 +KSensrvStartListeningMethodPanic 34 +KSensrvDataListeningPanic 35 +KSensrvStopListeningMethodPanic 36 +KSensrvStopListeningAsyncPanic 37 +KSensrvForceBufferFilledPanic 38 +KSensrvSSYUnloadingCount 39 +KSensrvBufferFilledNegativeCount 40 +KSensrvGetAllPropertyCount 41 +KSensrvGetPropertyLeave 42 +KSensrvGetPropertyJam 43 +KSensrvSetPropertyLeave 44 +KSensrvSetPropertyJam 45 +KSensrvGetAllPropertiesLeave 46 +KSensrvGetAllPropertiesJam 47 +KSensrvGetPropertyPanic 48; +KSensrvSetPropertyPanic 49; +KSensrvGetAllPropertiesPanic 50; +KSensrvCheckPropertyDependenciesLeave 51 +KSensrvCheckPropertyDependenciesJam 52 +KSensrvCheckPropertyDependenciesPanic 53 +KSensrvGetDataOverflowTest 54 +KSensrvGetDataNotFoundTest 55 +KSensorTestModuleProcessCommand 56 +KSensrvSingleBufferFilledNegativeCount 57 +KSensrvCreateNewChannelsFirst 58 +KSensrvCreateNewChannelsSecond 59 +KSensrvRemoveNewChannelsFirst 60 +KSensrvRemoveNewChannelsSecond 61 +KSensrvRegisterZeroChannels 62 +KSensrvRegisterInvalidChannels 63 +KSensrvFirstStubDoubleTappingChannelCount 64 +KSensrvSetPropertyArray 65 +KSensrvCheckPluginLoaded 66 + +KSensrvSignalAftedDataReseived 100 +KSensrvWaitTestCompletion 101 + +KSensorTestModuleComplete1 200 +KSensorTestModuleComplete2 201 +KSensorTestModuleComplete3 202 +KSensorTestModuleComplete4 203 +KSensorTestModuleComplete5 204 +KSensorTestModuleComplete6 205 +KSensorTestModuleComplete7 206 +KSensorTestModuleComplete8 207 +KSensorTestModuleComplete9 208 +KSensorTestModuleComplete10 209 +KSensorTestModuleComplete11 210 +KSensorTestModuleComplete12 211 +KSensorTestModuleComplete13 212 +KSensorTestModuleComplete14 213 +KSensorTestModuleComplete15 214 + +// Errors +KErrNotFound -1 +KErrGeneral -2 +KErrCancel -3 +KErrNoMemory -4 +KErrNotSupported -5 +KErrArgument -6 +KErrOverflow -9 +KErrAlreadyExists -11 +KErrPermissionDenied -46 +KErrAccessDenied -21 + +ESensrvMinor 1 +ESensrvFatal 2 + +// Property from sensrvgeneralproperties.h +KSensrvPropIdDataRate 2 +KSensrvPropIdAvailability 4 +KSensrvPropIdMeasureRange 5 +KSensrvPropIdChannelScale 9 +KSensrvSensorDescription 19 + +// Commands for test process (SensorTestModuleTypes.h) +KProcessCommandSetProperty 1 +KProcessCommandOpenChannel 2 +KProcessCommandCloseChannel 3 +KProcessCommandFindChannel 4 + +// Condition enumerations +ESensrvOrConditionSet 0 +ESensrvAndConditionSet 1 + +ESensrvSingleLimitCondition 0 +ESensrvRangeConditionLowerLimit 1 +ESensrvRangeConditionUpperLimit 2 +ESensrvBinaryCondition 3 + +ESensrvOperatorEquals 0 +ESensrvOperatorGreaterThan 1 +ESensrvOperatorGreaterThanOrEquals 2 +ESensrvOperatorLessThan 3 +ESensrvOperatorLessThanOrEquals 4 +ESensrvOperatorBinaryAnd 5 +ESensrvOperatorBinaryAll 6 + +KSensorTestModuleEventChannelType 519761901 +KSensrvChannelIdAccelerometerXYZAxisData 270553214 +KSensrvChannelTypeIdAccelerometerDoubleTappingData 270553217 + +KSensrvAccelerometerDataItemSize 20 +KSensrvEventChannelDataItemSize 16 +KSensrvDoubleTappingDataItemSize 12 + +iAxisX 1 +iAxisY 2 +iAxisZ 3 + +iTimeStampFromEventPlugin 0 +iTimeStampFromAccelerometerPlugin 1 + +iDirection 1 + +KSensrvUncertainExpectedValue 99999999 + +// Change types +ESensrvChannelRemoved 1 +ESensrvChannelAdded 2 + +// SetPropertyIndication types +ESetPropertyIndicationUnknown 0 +ESetPropertyIndicationAvailable 1 +ESetPropertyIndicationPossible 2 +ESetPropertyIndicationUnavailable 3 + +//OOM Testing +KNumberToRepeatOOMTest 5 +[Enddefine] + + +[StifSettings] +// Add stif settings here +CheckHeapBalance= on +[EndStifSettings] + +[Test] +title Check plugin loaded just once channel opened +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + + +testClass ShutdownServer +pause 2000 +testClass StartServer +pause 2000 +testClass GetPSValue KSensrvCheckPluginLoaded 0 +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass GetPSValue KSensrvCheckPluginLoaded 1 +testClass ShutdownServer + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +[Endtest] + +[Test] +title Open and Close two channels +create SensorTestModule testClass +create SensorTestModule testClass1 + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass1 SetCompletedKey KSensorTestModuleComplete2 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass1 OpenChannel 0 0 0 0 0 First2 VendorFirst +testClass1 CloseChannel +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +delete testClass1 +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + + + +[Test] +title Start server without Ssystubs +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass ShutdownServer +testClass SetPSValue KSensrvLeaveFirstStubConstruction KErrNoMemory +testClass SetPSValue KSensrvLeaveSecondStubConstruction KErrNoMemory +testClass StartServer +pause 3000 +testClass ShutdownServer + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +[Endtest] + +[Test] +title Start server with one Ssystub +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass ShutdownServer +testClass SetPSValue KSensrvLeaveFirstStubConstruction KErrNoMemory +testClass StartServer +pause 3000 +testClass ShutdownServer + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +[Endtest] + +[Test] +title Start server with two Ssystub +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass ShutdownServer +testClass StartServer +pause 3000 +testClass ShutdownServer + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +[Endtest] + + +// Invalid because of new static channel registration +/* +[Test] +title Start server with zero and one channel +create SensorTestModule testClass +testClass ShutdownServer +testClass SetPSValue KSensrvFirstStubChannelCount 0 +testClass SetPSValue KSensrvSecondStubChannelCount 1 +testClass StartServer +pause 3000 +testClass ShutdownServer +delete testClass +[Endtest] +*/ + + +[Test] +title Create and destroy channel finder +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass CreateAndDestroyChannelFinder +testClass ShutdownServer + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +[Endtest] + +[Test] +title Create two channel finders +create SensorTestModule testClass +create SensorTestModule testClass1 + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass1 SetCompletedKey KSensorTestModuleComplete2 +testClass CreateAndDestroyChannelFinder +testClass1 CreateAndDestroyChannelFinder +testClass ShutdownServer + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +delete testClass1 +[Endtest] + +[Test] +title Find channel: Find all channels +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass FindChannels 0 0 0 0 0 + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Find channel: Find one channel "First1 VendorFirst" +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass FindChannels 0 0 0 0 0 First1 VendorFirst + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Find channels: Channel not found "Second1 VendorFirst" +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass FindChannels 0 0 0 0 0 Second1 VendorFirst + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Find channels: Requery +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvFirstStubChannelCount 10 +testClass SetPSValue KSensrvSecondStubChannelCount 3 +testClass FindChannels 0 0 0 0 0 + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Find channels: Ssystubs construction jam +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvStubConstructionJam 1 +testClass FindChannels 0 0 0 0 0 + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Find channels: Ssystubs construction delay +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvStubConstructionDelay 5 +testClass FindChannels 0 0 0 0 0 + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Find channels: Ssystubs construction delay(two client) +create SensorTestModule testClass +testClass SetCompletedKey KSensorTestModuleComplete1 +create SensorTestModule testClass1 +testClass1 SetCompletedKey KSensorTestModuleComplete2 + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetPSValue KSensrvStubConstructionDelay 5 +testClass SetPSValue KSensrvWaitTestCompletion 0 +testClass FindChannels 0 0 0 0 0 +testClass1 SetPSValue KSensrvWaitTestCompletion 1 +testClass1 FindChannels 0 0 0 0 0 +testClass WaitCompletedKey + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +delete testClass1 +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Find channels: Ssystubs construction delay(three client) +create SensorTestModule testClass +create SensorTestModule testClass1 +create SensorTestModule testClass2 + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass1 SetCompletedKey KSensorTestModuleComplete2 +testClass2 SetCompletedKey KSensorTestModuleComplete3 +testClass SetPSValue KSensrvStubConstructionDelay 5 +testClass SetPSValue KSensrvWaitTestCompletion 0 +testClass FindChannels 0 0 0 0 0 +testClass1 FindChannels 0 0 0 0 0 +testClass2 SetPSValue KSensrvWaitTestCompletion 1 +testClass2 FindChannels 0 0 0 0 0 +testClass WaitCompletedKey +testClass1 WaitCompletedKey + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +delete testClass1 +delete testClass2 +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Find channel: Find all channels(CAP_SERVER capabilities) +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass CreateNewProcess 1 +testClass SetProcessPSValue 1 KProcessCommandFindChannel 0 0 0 0 +testClass WaitCompletedKey +testClass KillProcess + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Find channel: Find all channels(WriteDeviceData capabilities) +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass CreateNewProcess 3 +testClass SetProcessPSValue 3 KProcessCommandFindChannel 0 0 0 0 +testClass WaitCompletedKey +testClass KillProcess + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Find channel: Find all channels(ReadDeviceData capabilities) +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass CreateNewProcess 4 +testClass SetProcessPSValue 4 KProcessCommandFindChannel 0 0 0 0 +testClass WaitCompletedKey +testClass KillProcess + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Open and Close channel +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Open channel twice +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +allownextresult KErrAlreadyExists +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Open and Close two channels +create SensorTestModule testClass +create SensorTestModule testClass1 + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass1 SetCompletedKey KSensorTestModuleComplete2 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass1 OpenChannel 0 0 0 0 0 First2 VendorFirst +testClass1 CloseChannel +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +delete testClass1 +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Open channel asynchronous error +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvChannelOpenedWithError KErrGeneral +allownextresult KErrGeneral +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass SetPSValue KSensrvChannelOpenedWithError 0 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Open channel return error +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvOpenChannelError KErrGeneral +allownextresult KErrGeneral +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass SetPSValue KSensrvOpenChannelError 0 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Close channel return error +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass SetPSValue KSensrvCloseChannelError KErrGeneral +testClass CloseChannel +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass SetPSValue KSensrvCloseChannelError 0 +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title SSY do not call ChannelOpened +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvChannelOpenedError 1 +allownextresult KErrCancel +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass SetPSValue KSensrvChannelOpenedError 0 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title SSY do not call ChannelClosed +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvChannelClosedError 1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass CloseChannel +testClass SetPSValue KSensrvChannelClosedError 0 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Listening: Start listening twice +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvSamplingInterval 100 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartDataListening 15 10000 3 +allownextresult KErrAlreadyExists +testClass StartDataListening 15 10000 3 +testClass WaitCompletedKey +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Listening: two channels +create SensorTestModule testClass +create SensorTestModule testClass1 + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass1 SetCompletedKey KSensorTestModuleComplete2 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartDataListening 22 1000 5 +testClass1 OpenChannel 0 0 0 0 0 Second0 VendorSecond +testClass1 StartDataListening 22 1000 10 +testClass WaitCompletedKey +testClass CloseChannel +delete testClass +testClass1 WaitCompletedKey +testClass1 CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass1 +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Listening: two same channels: +create SensorTestModule testClass +create SensorTestModule testClass1 + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass1 SetCompletedKey KSensorTestModuleComplete2 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartDataListening 22 1000 5 +testClass1 OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass1 StartDataListening 22 1000 10 +testClass WaitCompletedKey +testClass CloseChannel +testClass1 WaitCompletedKey +testClass1 CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +delete testClass1 +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Listening: Start listening Leave +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvStartListeningLeave KErrGeneral +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +allownextresult KErrGeneral +testClass StartDataListening 15 10000 3 +testClass SetPSValue KSensrvStartListeningLeave 0 +testClass StartDataListening 15 10000 3 +testClass WaitCompletedKey +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Listening: Stop listening Leave +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvStopListeningLeave KErrGeneral +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartDataListening 15 10000 3 +testClass WaitCompletedKey +testClass SetPSValue KSensrvStopListeningLeave 0 +testClass StartDataListening 15 10000 3 +testClass WaitCompletedKey + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Listening: Start listening when channel is not open +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass FindChannels 0 0 0 0 0 First1 VendorFirst +allownextresult KErrNotFound +testClass StartListeningWhenChannelIsNotOpen 15 10000 3 + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Listening: ForceBufferFilled Leave +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvForceBufferFilledLeave KErrGeneral +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass SetPSValue KSensrvSamplingInterval 200 +testClass StartDataListening 22 1000 10 +testClass WaitCompletedKey +testClass SetPSValue KSensrvForceBufferFilledLeave 0 +testClass StartDataListening 22 1000 10 +testClass WaitCompletedKey +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Listening: GetData overflow test +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass SetPSValue KSensrvGetDataOverflowTest 1 +testClass StartDataListening 10 1000 5 +allownextresult KErrOverflow +testClass WaitCompletedKey +testClass SetPSValue KSensrvGetDataOverflowTest 0 +testClass StartDataListening 10 1000 5 +testClass WaitCompletedKey +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Listening: GetData 'data not found' test +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass SetPSValue KSensrvGetDataNotFoundTest 1 +testClass StartDataListening 10 1000 5 +allownextresult KErrNotFound +testClass WaitCompletedKey +testClass SetPSValue KSensrvGetDataNotFoundTest 0 +testClass StartDataListening 10 1000 5 +testClass WaitCompletedKey +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Listening: Sample size 1 +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvSamplingInterval 200 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartDataListening 1 10000 10 +testClass WaitCompletedKey +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Listening: One per channel, six channels +create SensorTestModule testClass +create SensorTestModule testClass1 +create SensorTestModule testClass2 +create SensorTestModule testClass3 +create SensorTestModule testClass4 +create SensorTestModule testClass5 + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass1 SetCompletedKey KSensorTestModuleComplete2 +testClass2 SetCompletedKey KSensorTestModuleComplete3 +testClass3 SetCompletedKey KSensorTestModuleComplete4 +testClass4 SetCompletedKey KSensorTestModuleComplete5 +testClass5 SetCompletedKey KSensorTestModuleComplete6 +testClass SetPSValue KSensrvSamplingInterval 10 +testClass SetPSValue KSensrvFirstStubChannelCount 10 +testClass OpenChannel 0 0 0 0 0 First0 VendorFirst +testClass StartDataListening 10 0 200 +testClass1 OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass1 StartDataListening 3 0 600 +testClass2 OpenChannel 0 0 0 0 0 First2 VendorFirst +testClass2 StartDataListening 1 0 2000 +testClass3 OpenChannel 0 0 0 0 0 First3 VendorFirst +testClass3 StartDataListening 1 10 2000 +testClass4 OpenChannel 0 0 0 0 0 First4 VendorFirst +testClass4 StartDataListening 3 30 600 +testClass5 OpenChannel 0 0 0 0 0 First5 VendorFirst +testClass5 StartDataListening 10 100 200 +testClass WaitCompletedKey +testClass CloseChannel +testClass1 WaitCompletedKey +testClass1 CloseChannel +testClass2 WaitCompletedKey +testClass2 CloseChannel +testClass3 WaitCompletedKey +testClass3 CloseChannel +testClass4 WaitCompletedKey +testClass4 CloseChannel +testClass5 WaitCompletedKey +testClass5 CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +delete testClass1 +delete testClass2 +delete testClass3 +delete testClass4 +delete testClass5 +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Listening: Restarting listening +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetPSValue KSensrvSamplingInterval 10 +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartDataListening 3 10000 40 +testClass WaitCompletedKey +testClass CloseChannel +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartDataListening 5 10000 30 +testClass WaitCompletedKey +testClass StartDataListening 4 10000 20 +testClass WaitCompletedKey +testClass StartDataListening 3 10000 10 +testClass WaitCompletedKey +testClass StartDataListening 2 10000 5 +testClass WaitCompletedKey +testClass StartDataListening 1 10000 1 +testClass WaitCompletedKey +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Listening: Extreme values +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetPSValue KSensrvSamplingInterval 10 +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartDataListening 2000000000 2000000000 10 +testClass WaitCompletedKey +//testClass StartDataListening 0 0 10 +//testClass WaitCompletedKey +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Listening: Buffer write error (negative count on buffer filled) +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass SetPSValue KSensrvBufferFilledNegativeCount 1 +testClass StartDataListening 15 10000 2 +allownextresult ESensrvMinor +testClass WaitCompletedKey +allownextresult ESensrvFatal +testClass WaitCompletedKey +testClass SetPSValue KSensrvBufferFilledNegativeCount 0 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartDataListening 15 10000 2 +testClass WaitCompletedKey +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title SSY Unloading: Unloading after normal close +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartDataListening 15 10000 1 +testClass WaitCompletedKey +testClass CloseChannel +testClass WaitSSYUnloading 1 + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title SSY Unloading: Unloading after open error +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvOpenChannelError KErrGeneral +allownextresult KErrGeneral +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass WaitSSYUnloading 1 + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title SSY Unloading: Unloading after close error +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartDataListening 15 10000 1 +testClass WaitCompletedKey +testClass SetPSValue KSensrvCloseChannelError KErrGeneral +testClass CloseChannel +testClass WaitSSYUnloading 1 + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title SSY Unloading: Unloading after server start +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass FindChannels 0 0 0 0 0 First1 VendorFirst +testClass WaitSSYUnloading 2 // 2 dynamic channel SSYs are loaded when FindChannels queries all channels to verify result + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: Set and Get a property. Property type TInt +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass SetProperty KSensrvPropIdDataRate 1 200 +testClass GetProperty KSensrvPropIdDataRate 1 200 +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: Set and Get a property. Property type TReal +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass SetProperty KSensrvPropIdMeasureRange 1 200 +testClass GetProperty KSensrvPropIdMeasureRange 1 200 +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: Set and Get a property. Property type TDes +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass SetProperty KSensrvSensorDescription 1 test +testClass GetProperty KSensrvSensorDescription 1 test +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: Get all properties +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvGetAllPropertyCount 10 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass GetAllProperties +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: Get all properties ( Requery ) +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvGetAllPropertyCount 50 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass GetAllProperties +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: Get array property +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvSetPropertyArray 3 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass GetAllPropertiesWithPropertyId +testClass GetAllPropertiesWithArrayIndex +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property Listening: Start and stop property listening +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvPropertyChanged 500 ms +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartPropertyListening +pause 2000 // pause for 2 seconds +testClass StopPropertyListening +testClass CheckPropertyChangedCount +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property Listening: Start property listening twice +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvPropertyChanged 500 ms +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartPropertyListening +allownextresult KErrAlreadyExists +testClass StartPropertyListening +pause 2000 // pause for 2 seconds +testClass StopPropertyListening +testClass CheckPropertyChangedCount +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property Listening: Start and stop property and data listening +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvPropertyChanged 500 ms +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartDataListening 20 10000 30 +testClass StartPropertyListening +pause 2000 // pause for 2 seconds +testClass StopPropertyListening +testClass WaitCompletedKey +testClass CheckPropertyChangedCount +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property Listening: Restart property listening +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvPropertyChanged 200 ms +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartDataListening 20 10000 30 +testClass StartPropertyListening +pause 1000 // pause for 1 seconds +testClass StopPropertyListening +testClass CheckPropertyChangedCount +pause 1000 // pause for 1 seconds +testClass CheckPropertyChangedCount 0 +testClass StartPropertyListening +pause 1000 // pause for 1 seconds +testClass StopPropertyListening +testClass CheckPropertyChangedCount +testClass WaitCompletedKey +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property Listening: Three clients listening +create SensorTestModule testClass1 +testClass1 SetCompletedKey KSensorTestModuleComplete1 +create SensorTestModule testClass2 +testClass2 SetCompletedKey KSensorTestModuleComplete2 +create SensorTestModule testClass3 + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass3 SetCompletedKey KSensorTestModuleComplete3 +testClass1 OpenChannel 0 0 0 0 0 First0 VendorFirst +testClass2 OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass3 OpenChannel 0 0 0 0 0 First2 VendorFirst +testClass1 StartDataListening 10 10000 30 +testClass2 StartDataListening 10 10000 30 +testClass3 StartDataListening 10 10000 30 +testClass1 StartPropertyListening +testClass2 StartPropertyListening +testClass3 StartPropertyListening +testClass1 SetProperty KSensrvPropIdDataRate 1 200 +testClass1 SetProperty KSensrvPropIdMeasureRange 1 200 +testClass1 SetProperty KSensrvSensorDescription 1 test +testClass2 SetProperty KSensrvPropIdDataRate 1 200 +testClass2 SetProperty KSensrvPropIdMeasureRange 1 200 +testClass2 SetProperty KSensrvSensorDescription 1 test +testClass3 SetProperty KSensrvPropIdDataRate 1 200 +testClass3 SetProperty KSensrvPropIdMeasureRange 1 200 +testClass3 SetProperty KSensrvSensorDescription 1 test +pause 1000 // pause for 1 seconds +testClass1 CheckPropertyChangedCount 6 +testClass2 CheckPropertyChangedCount 6 +testClass3 CheckPropertyChangedCount 6 +testClass1 StopPropertyListening +testClass2 StopPropertyListening +testClass3 StopPropertyListening +testClass1 WaitCompletedKey +testClass2 WaitCompletedKey +testClass3 WaitCompletedKey +testClass1 CloseChannel +testClass2 CloseChannel +testClass3 CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass1 +delete testClass2 +delete testClass3 +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: SetProperty Leave +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass SetPSValue KSensrvSetPropertyLeave KErrPermissionDenied +allownextresult KErrPermissionDenied +testClass SetProperty KSensrvPropIdDataRate 1 200 +testClass SetPSValue KSensrvSetPropertyLeave 0 +testClass SetProperty KSensrvPropIdDataRate 1 200 +testClass GetProperty KSensrvPropIdDataRate 1 200 +testClass StartDataListening 10 10000 5 +testClass WaitCompletedKey +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: SetProperty Leave when data listening and property listening +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartDataListening 20 10000 30 +testClass StartPropertyListening +testClass SetPSValue KSensrvSetPropertyLeave KErrPermissionDenied +allownextresult KErrPermissionDenied +testClass SetProperty KSensrvPropIdDataRate 1 200 +testClass SetPSValue KSensrvSetPropertyLeave 0 +create SensorTestModule testClass1 +testClass1 SetCompletedKey KSensorTestModuleComplete2 +testClass1 OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass1 StartPropertyListening +testClass SetProperty KSensrvPropIdDataRate 1 200 +testClass GetProperty KSensrvPropIdDataRate 1 200 +testClass CheckPropertyChangedCount 0 +testClass1 CheckPropertyChangedCount 1 +testClass StopPropertyListening +testClass1 StopPropertyListening +testClass WaitCompletedKey +testClass CloseChannel +testClass1 CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +delete testClass1 +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: GetProperty Leave +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass SetPSValue KSensrvGetPropertyLeave KErrPermissionDenied +allownextresult KErrPermissionDenied +testClass GetProperty KSensrvPropIdDataRate 1 200 +testClass SetPSValue KSensrvGetPropertyLeave 0 +testClass SetProperty KSensrvPropIdDataRate 1 200 +testClass GetProperty KSensrvPropIdDataRate 1 200 +testClass StartDataListening 10 10000 5 +testClass WaitCompletedKey +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: GetProperty Leave when data listening and property listening +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartDataListening 30 10000 30 +testClass StartPropertyListening +testClass SetPSValue KSensrvGetPropertyLeave KErrPermissionDenied +allownextresult KErrPermissionDenied +testClass GetProperty KSensrvPropIdDataRate 1 200 +testClass SetPSValue KSensrvGetPropertyLeave 0 +create SensorTestModule testClass1 +testClass1 SetCompletedKey KSensorTestModuleComplete2 +testClass1 OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass1 StartPropertyListening +testClass SetProperty KSensrvPropIdDataRate 1 200 +testClass GetProperty KSensrvPropIdDataRate 1 200 +testClass CheckPropertyChangedCount 0 +testClass1 CheckPropertyChangedCount 1 +testClass StopPropertyListening +testClass1 StopPropertyListening +testClass WaitCompletedKey +testClass CloseChannel +testClass1 CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +delete testClass1 +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: GetAllProperties Leave +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvGetAllPropertyCount 10 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass SetPSValue KSensrvGetAllPropertiesLeave KErrPermissionDenied +allownextresult KErrPermissionDenied +testClass GetAllProperties +testClass SetPSValue KSensrvGetAllPropertiesLeave 0 +testClass StartDataListening 10 10000 10 +testClass GetAllProperties +testClass WaitCompletedKey +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: GetAllProperties Leave when data listening and property listening +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvGetAllPropertyCount 10 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartDataListening 20 10000 30 +testClass StartPropertyListening +testClass SetPSValue KSensrvGetAllPropertiesLeave KErrPermissionDenied +allownextresult KErrPermissionDenied +testClass GetAllProperties +testClass SetPSValue KSensrvGetAllPropertiesLeave 0 +create SensorTestModule testClass1 +testClass1 SetCompletedKey KSensorTestModuleComplete2 +testClass1 OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass1 StartPropertyListening +testClass GetAllProperties +testClass SetProperty KSensrvPropIdDataRate 1 200 +pause 2000 +testClass CheckPropertyChangedCount 0 +testClass1 CheckPropertyChangedCount 1 +testClass StopPropertyListening +testClass1 StopPropertyListening +testClass WaitCompletedKey +testClass CloseChannel +testClass1 CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +delete testClass1 +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: CheckPropertyDependenciesL Leave +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass SetPSValue KSensrvCheckPropertyDependenciesLeave KErrArgument +allownextresult KErrArgument +testClass SetProperty KSensrvPropIdDataRate 1 200 +testClass SetPSValue KSensrvCheckPropertyDependenciesLeave 0 +testClass SetProperty KSensrvPropIdDataRate 1 200 +testClass GetProperty KSensrvPropIdDataRate 1 200 +testClass StartDataListening 10 10000 5 +testClass WaitCompletedKey +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: CheckPropertyDependenciesL Leave when data listening and property listening +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartDataListening 20 10000 30 +testClass StartPropertyListening +testClass SetPSValue KSensrvCheckPropertyDependenciesLeave KErrArgument +allownextresult KErrArgument +testClass SetProperty KSensrvPropIdDataRate 1 200 +testClass SetPSValue KSensrvCheckPropertyDependenciesLeave 0 +create SensorTestModule testClass1 +testClass1 SetCompletedKey KSensorTestModuleComplete2 +testClass1 OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass1 StartPropertyListening +testClass SetProperty KSensrvPropIdDataRate 1 200 +testClass GetProperty KSensrvPropIdDataRate 1 200 +testClass CheckPropertyChangedCount 0 +testClass1 CheckPropertyChangedCount 1 +testClass StopPropertyListening +testClass1 StopPropertyListening +testClass WaitCompletedKey +testClass CloseChannel +testClass1 CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +delete testClass1 +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: SetProperty - Capability test +create SensorTestModule testClass +create SensorTestModule testClass1 + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartPropertyListening +testClass1 SetCompletedKey KSensorTestModuleComplete2 +testClass1 OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass1 StartPropertyListening +allownextresult KErrPermissionDenied +testClass SetProperty KSensrvPropIdChannelScale 1 200 +testClass SetProperty KSensrvPropIdDataRate 1 200 +testClass GetProperty KSensrvPropIdDataRate 1 200 +testClass StartDataListening 10 10000 5 +testClass WaitCompletedKey +testClass CheckPropertyChangedCount 0 +testClass1 CheckPropertyChangedCount 1 +testClass CloseChannel +testClass1 CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +delete testClass1 +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: Set a property from multiple processes, set is denyed for process 2. +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass CreateNewProcess 2 +testClass SetProcessPSValue 1 KProcessCommandOpenChannel 0 0 0 0 +testClass WaitCompletedKey +testClass SetProcessPSValue 2 KProcessCommandOpenChannel 0 0 0 0 +testClass WaitCompletedKey +testClass SetProcessPSValue 1 KProcessCommandSetProperty 0 KSensrvPropIdDataRate 1 200 +testClass WaitCompletedKey +testClass SetProcessPSValue 2 KProcessCommandSetProperty -21 KSensrvPropIdDataRate 1 200 +testClass WaitCompletedKey +testClass SetProcessPSValue 1 KProcessCommandCloseChannel 0 0 0 0 +testClass WaitCompletedKey +testClass SetProcessPSValue 2 KProcessCommandCloseChannel 0 0 0 0 +testClass WaitCompletedKey +testClass KillProcess +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Reg: SSY registers and removes new channels +create SensorTestModule testClass +create SensorTestModule testClass1 + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass1 SetCompletedKey KSensorTestModuleComplete2 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass1 OpenChannel 0 0 0 0 0 First2 VendorFirst +testClass CloseChannel +testClass FindChannels 0 0 0 0 0 NULL VendorNew +testClass CheckFoundChannelCount 0 +testClass StartChannelChangeListening 0 0 0 0 0 NULL VendorNew +testClass AdjustChannels 4 VendorNew KSensrvCreateNewChannelsFirst +testClass WaitCompletedKey +testClass FindChannels 0 0 0 0 0 NULL VendorNew +testClass CheckFoundChannelCount 4 +testClass OpenChannel 0 0 0 0 0 NULL VendorNew +testClass StartDataListening 15 10000 3 +testClass WaitCompletedKey +testClass CloseChannel +testClass AdjustChannels 2 VendorNew KSensrvRemoveNewChannelsFirst +testClass SetPSValue KSensrvWaitTestCompletion 1 +testClass FindChannels 0 0 0 0 0 NULL VendorNew +testClass CheckFoundChannelCount 2 +testClass StopChannelChangeListening 0 0 0 0 0 NULL VendorNew +testClass1 CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +delete testClass1 +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Reg: Restart listening after stopping it. +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass CloseChannel +testClass FindChannels 0 0 0 0 0 NULL VendorNew +testClass CheckFoundChannelCount 0 +testClass StartChannelChangeListening 0 0 0 0 0 NULL VendorNew +testClass AdjustChannels 4 VendorNew KSensrvCreateNewChannelsFirst +testClass WaitCompletedKey +testClass FindChannels 0 0 0 0 0 NULL VendorNew +testClass CheckFoundChannelCount 4 +testClass AdjustChannels 2 VendorNew KSensrvRemoveNewChannelsFirst +testClass WaitCompletedKey +testClass FindChannels 0 0 0 0 0 NULL VendorNew +testClass CheckFoundChannelCount 2 +testClass StopChannelChangeListening 0 0 0 0 0 NULL VendorNew +testClass AdjustChannels 5 VendorNew KSensrvCreateNewChannelsFirst +pause 100 //0.1s +testClass FindChannels 0 0 0 0 0 NULL VendorNew +testClass CheckFoundChannelCount 7 +testClass StartChannelChangeListening 0 0 0 0 0 NULL VendorNew +testClass AdjustChannels 4 VendorNew KSensrvRemoveNewChannelsFirst +testClass WaitCompletedKey +testClass FindChannels 0 0 0 0 0 NULL VendorNew +testClass CheckFoundChannelCount 3 +testClass StopChannelChangeListening 0 0 0 0 0 NULL VendorNew + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Reg: Two SSYs register and remove new channels, with two listeners +create SensorTestModule testClass +create SensorTestModule testClass1 + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass CloseChannel +testClass1 SetCompletedKey KSensorTestModuleComplete2 +testClass1 OpenChannel 0 0 0 0 0 Second1 VendorSecond +testClass1 CloseChannel +testClass StartChannelChangeListening 0 0 0 0 0 NULL VendorNew +testClass1 StartChannelChangeListening 0 0 0 0 0 NULL VendorNew +pause 500 +testClass AdjustChannels 7 VendorNew KSensrvCreateNewChannelsFirst 4 +testClass1 AdjustChannels 7 VendorNew KSensrvCreateNewChannelsSecond 3 +testClass WaitCompletedKey +testClass1 WaitCompletedKey +testClass FindChannels 0 0 0 0 0 NULL VendorNew +testClass CheckFoundChannelCount 7 +testClass AdjustChannels 4 VendorNew KSensrvRemoveNewChannelsFirst 2 +testClass1 AdjustChannels 4 VendorNew KSensrvRemoveNewChannelsSecond 2 +testClass WaitCompletedKey +testClass FindChannels 0 0 0 0 0 NULL VendorNew +testClass CheckFoundChannelCount 3 +testClass StopChannelChangeListening 0 0 0 0 0 NULL VendorNew +testClass1 StopChannelChangeListening 0 0 0 0 0 NULL VendorNew + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +delete testClass1 +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Reg: SSY unregisters an active channel +create SensorTestModule testClass +create SensorTestModule testClass1 + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetPSValue KSensrvSamplingInterval 100 +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass CloseChannel +testClass1 SetCompletedKey KSensorTestModuleComplete2 +testClass1 OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass1 CloseChannel +testClass1 FindChannels 0 0 0 0 0 NULL VendorNew +testClass1 CheckFoundChannelCount 0 +testClass1 AdjustChannels 1 VendorNew KSensrvCreateNewChannelsFirst +pause 500 +testClass1 StartChannelChangeListening 0 0 0 0 0 NULL VendorNew +testClass OpenChannel 0 0 0 0 0 NULL VendorNew +testClass StartDataListening 3 10000 30 +pause 500 +testClass1 AdjustChannels 1 VendorNew KSensrvRemoveNewChannelsFirst +// Since the failure to open proxy completes quite fast, +// it might be that minor error completion is not yet handled, +// when fatal comes, so allow both results for the wait +allownextresult ESensrvMinor +allownextresult ESensrvFatal +testClass WaitCompletedKey +testClass1 WaitCompletedKey +testClass1 FindChannels 0 0 0 0 0 NULL VendorNew +testClass1 CheckFoundChannelCount 0 +testClass1 StopChannelChangeListening 0 0 0 0 0 NULL VendorNew +allownextresult KErrNotFound +testClass OpenChannel 0 0 0 0 0 NULL VendorNew + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +delete testClass1 +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Reg: Previously registered and removed channels get correct id upon re-registration +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass CloseChannel +testClass StartChannelChangeListening 0 0 0 0 0 NULL VendorNew +pause 500 +testClass AdjustChannels 20 VendorNew KSensrvCreateNewChannelsFirst +testClass WaitCompletedKey +testClass FindChannels 0 0 0 0 0 NULL VendorNew +testClass CheckFoundChannelCount 20 +testClass StoreFoundChannels 1 +testClass AdjustChannels 6 VendorNew KSensrvRemoveNewChannelsFirst +testClass WaitCompletedKey +testClass AdjustChannels 10 VendorNew KSensrvCreateNewChannelsFirst +testClass WaitCompletedKey +testClass AdjustChannels 21 VendorNew KSensrvRemoveNewChannelsFirst +testClass WaitCompletedKey +testClass AdjustChannels 3 VendorNew KSensrvRemoveNewChannelsFirst +testClass WaitCompletedKey +testClass FindChannels 0 0 0 0 0 NULL VendorNew +testClass CheckFoundChannelCount 0 +testClass AdjustChannels 11 VendorNew KSensrvCreateNewChannelsFirst +testClass WaitCompletedKey +testClass AdjustChannels 2 VendorNew KSensrvRemoveNewChannelsFirst +testClass WaitCompletedKey +testClass AdjustChannels 11 VendorNew KSensrvCreateNewChannelsFirst +testClass WaitCompletedKey +testClass FindChannels 0 0 0 0 0 NULL VendorNew +testClass CheckFoundChannelCount 20 +testClass StoreFoundChannels 0 +testClass AdjustChannels 20 VendorNew KSensrvRemoveNewChannelsFirst +testClass WaitCompletedKey +testClass FindChannels 0 0 0 0 0 NULL VendorNew +testClass CheckFoundChannelCount 0 +testClass StopChannelChangeListening 0 0 0 0 0 NULL VendorNew + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: Start listening set success indicator, listener with same priority appears +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartPropertyListening +testClass CreateNewProcess 1 +testClass SetProcessPSValue 1 KProcessCommandOpenChannel 0 0 0 0 +testClass WaitCompletedKey +testClass CheckListenedSetPropertySuccessIndicator ESetPropertyIndicationPossible 1 +testClass SetProcessPSValue 1 KProcessCommandSetProperty 0 KSensrvPropIdDataRate 1 200 +testClass WaitCompletedKey +testClass CheckListenedSetPropertySuccessIndicator ESetPropertyIndicationUnavailable 1 +//testClass WaitCompletedKey +testClass StopPropertyListening +testClass SetProcessPSValue 1 KProcessCommandCloseChannel 0 0 0 0 +testClass WaitCompletedKey +testClass KillProcess +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: Start listening set success indicator, listener with same priority disappears +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartPropertyListening +testClass CreateNewProcess 1 +testClass SetProcessPSValue 1 KProcessCommandOpenChannel 0 0 0 0 +pause 2000 +testClass SetProcessPSValue 1 KProcessCommandCloseChannel 0 0 0 0 +pause 2000 +testClass CheckListenedSetPropertySuccessIndicator ESetPropertyIndicationAvailable 2 +testClass StopPropertyListening +testClass KillProcess +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: Start listening set success indicator, listener with lower priority appears +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartPropertyListening +testClass CreateNewProcess 2 +testClass SetProcessPSValue 2 KProcessCommandOpenChannel 0 0 0 0 +testClass WaitCompletedKey +testClass SetProcessPSValue 2 KProcessCommandSetProperty -21 KSensrvPropIdDataRate 1 200 +testClass WaitCompletedKey +testClass CheckListenedSetPropertySuccessIndicator -1 0 +testClass StopPropertyListening +testClass SetProcessPSValue 2 KProcessCommandCloseChannel 0 0 0 0 +testClass WaitCompletedKey +testClass KillProcess +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: Start listening set success indicator, listener with lower priority disappears +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartPropertyListening +testClass CreateNewProcess 2 +testClass SetProcessPSValue 2 KProcessCommandOpenChannel 0 0 0 0 +pause 2000 +testClass SetProcessPSValue 2 KProcessCommandCloseChannel 0 0 0 0 +pause 2000 +testClass CheckListenedSetPropertySuccessIndicator -1 0 +testClass StopPropertyListening +testClass KillProcess +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: Start listening set success indicator, listener with higher priority appears +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartPropertyListening +testClass CreateNewProcess 3 +testClass SetProcessPSValue 3 KProcessCommandOpenChannel 0 0 0 0 +testClass SetProcessPSValue 3 KProcessCommandSetProperty 0 KSensrvPropIdDataRate 1 200 +testClass WaitCompletedKey +testClass CheckListenedSetPropertySuccessIndicator ESetPropertyIndicationUnavailable 1 +testClass StopPropertyListening +testClass SetProcessPSValue 3 KProcessCommandCloseChannel 0 0 0 0 +testClass WaitCompletedKey +testClass KillProcess +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: Start listening set success indicator, listener with higher priority disappears +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartPropertyListening +testClass CreateNewProcess 3 +testClass SetProcessPSValue 3 KProcessCommandOpenChannel 0 0 0 0 +pause 2000 +testClass SetProcessPSValue 3 KProcessCommandCloseChannel 0 0 0 0 +pause 2000 +testClass CheckListenedSetPropertySuccessIndicator ESetPropertyIndicationAvailable 2 +testClass StopPropertyListening +testClass KillProcess +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Property: Start listening set success indicator, listener with higher priority disappears but same remains +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass StartPropertyListening +testClass CreateNewProcess 3 +testClass SetProcessPSValue 3 KProcessCommandOpenChannel 0 0 0 0 +pause 2000 +testClass CreateNewProcess 1 +testClass SetProcessPSValue 1 KProcessCommandOpenChannel 0 0 0 0 +pause 2000 +testClass SetProcessPSValue 3 KProcessCommandCloseChannel 0 0 0 0 +pause 2000 +testClass CheckListenedSetPropertySuccessIndicator ESetPropertyIndicationPossible 2 +testClass SetProcessPSValue 1 KProcessCommandCloseChannel 0 0 0 0 +testClass StopPropertyListening +testClass KillProcess +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Auto-shutdown: start first client +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +pause 2000 +testClass CheckServerAlive 1 +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Auto-shutdown: start second client +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +allownextresult KErrAlreadyExists +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass CheckServerAlive 1 +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Auto-shutdown: shutdown first client +create SensorTestModule testClass +create SensorTestModule testClass1 + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass1 SetCompletedKey KSensorTestModuleComplete2 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass1 OpenChannel 0 0 0 0 0 First2 VendorFirst +testClass1 CloseChannel +delete testClass1 +pause 5000 +testClass CheckServerAlive 1 +testClass CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Auto-shutdown: shutdown second client +create SensorTestModule testClass +create SensorTestModule testClass1 + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass1 SetCompletedKey KSensorTestModuleComplete2 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass1 OpenChannel 0 0 0 0 0 First2 VendorFirst +testClass1 CloseChannel +testClass CloseChannel +pause 10000 +testClass CheckServerAlive 0 + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass1 +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title DynChannels: SSY loaded for query channels, channel is available +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvFirstStubChannelCount 11 +pause 100 +testClass SetPSValue KSensrvWaitTestCompletion 0 +testClass FindChannels 0 0 0 0 0 First10 VendorFirst +testClass WaitCompletedKey +testClass CheckFoundChannelCount 1 + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title DynChannels: SSY loaded for query channels, channel is unavailable +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvFirstStubChannelCount 10 +pause 100 +testClass SetPSValue KSensrvWaitTestCompletion 0 +testClass FindChannels 0 0 0 0 0 First10 VendorFirst +testClass WaitCompletedKey +testClass CheckFoundChannelCount 0 + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title DynChannels: SSY loaded for change listening +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass GetPSValue KSensrvCheckPluginLoaded 0 +testClass StartChannelChangeListening 0 0 0 0 0 First10 VendorFirst +pause 100 +testClass StopChannelChangeListening 0 0 0 0 0 NULL VendorFirst +testClass GetPSValue KSensrvCheckPluginLoaded 1 + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title DynChannels: Change listening, SSY unload is denied +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass GetPSValue KSensrvCheckPluginLoaded 0 +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass GetPSValue KSensrvCheckPluginLoaded 1 +testClass CloseChannel +testClass StartChannelChangeListening 0 0 0 0 0 First10 VendorFirst +testClass WaitSSYUnloading 0 +testClass StopChannelChangeListening 0 0 0 0 0 NULL VendorFirst + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title DynChannels: Change listening, SSY unload is allowed +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass GetPSValue KSensrvCheckPluginLoaded 0 +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass GetPSValue KSensrvCheckPluginLoaded 1 +testClass CloseChannel +testClass StartChannelChangeListening 0 0 0 0 0 First10 VendorFirst +testClass StopChannelChangeListening 0 0 0 0 0 NULL VendorFirst +testClass WaitSSYUnloading 1 + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title DynChannels: Two clients change listening, SSY unload is denied +create SensorTestModule testClass +create SensorTestModule testClass1 + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass GetPSValue KSensrvCheckPluginLoaded 0 +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass1 SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass GetPSValue KSensrvCheckPluginLoaded 1 +testClass CloseChannel +testClass1 OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass1 CloseChannel +testClass StartChannelChangeListening 0 0 0 0 0 First10 VendorFirst +testClass1 StartChannelChangeListening 0 0 0 0 0 First10 VendorFirst +testClass WaitSSYUnloading 0 +testClass StopChannelChangeListening 0 0 0 0 0 NULL VendorFirst +testClass1 StopChannelChangeListening 0 0 0 0 0 NULL VendorFirst + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +delete testClass1 +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title DynChannels: Two clients change listening, SSY unload is allowed +create SensorTestModule testClass +create SensorTestModule testClass1 + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass GetPSValue KSensrvCheckPluginLoaded 0 +testClass SetCompletedKey KSensorTestModuleComplete1 + +testClass1 SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass GetPSValue KSensrvCheckPluginLoaded 1 +testClass CloseChannel +testClass1 OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass1 CloseChannel +testClass StartChannelChangeListening 0 0 0 0 0 First10 VendorFirst +testClass1 StartChannelChangeListening 0 0 0 0 0 First10 VendorFirst +testClass StopChannelChangeListening 0 0 0 0 0 NULL VendorFirst +testClass1 StopChannelChangeListening 0 0 0 0 0 NULL VendorFirst +testClass WaitSSYUnloading 1 + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +delete testClass1 +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Dependent Channels: Open and Close two channels +create SensorTestModule testClass +create SensorTestModule testClass1 + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass1 SetCompletedKey KSensorTestModuleComplete2 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass1 SetPSValue KSensrvChannelOpenedError KErrNotSupported +testClass1 OpenChannel 0 0 0 0 0 First2 VendorFirst +testClass GetProperty KSensrvPropIdAvailability 1 1 +testClass1 GetProperty KSensrvPropIdAvailability 1 0 +testClass CloseChannel +testClass1 GetProperty KSensrvPropIdAvailability 1 1 +testClass1 CloseChannel + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +delete testClass1 +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +[Test] +title Dependent Channels: Three dependent channels, listener with higher priority appears for the unavailable channel +create SensorTestModule testClass +create SensorTestModule testClass1 +create SensorTestModule testClass2 + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass2 SetCompletedKey KSensorTestModuleComplete3 +testClass2 OpenChannel 0 0 0 0 0 First2 VendorFirst 1 +testClass1 SetCompletedKey KSensorTestModuleComplete2 +testClass1 OpenChannel 0 0 0 0 0 First0 VendorFirst 1 +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass SetPSValue KSensrvChannelOpenedError KErrNotSupported +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst 0 +testClass GetProperty KSensrvPropIdAvailability 1 0 +testClass1 GetProperty KSensrvPropIdAvailability 1 1 +testClass2 GetProperty KSensrvPropIdAvailability 1 1 +testClass CreateNewProcess 3 +testClass SetProcessPSValue 3 KProcessCommandOpenChannel 0 0 0 0 +testClass GetProperty KSensrvPropIdAvailability 1 0 +testClass1 GetProperty KSensrvPropIdAvailability 1 1 +testClass SetProcessPSValue 3 KProcessCommandCloseChannel 0 0 0 0 +testClass WaitCompletedKey +testClass GetProperty KSensrvPropIdAvailability 1 1 +testClass1 GetProperty KSensrvPropIdAvailability 1 1 +testClass CloseChannel +testClass1 GetProperty KSensrvPropIdAvailability 1 1 +testClass1 CloseChannel +testClass KillProcess + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +delete testClass1 +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +// This case panics intensionally in debug builds +[Test] +title Reg: SSY registers zero channels (UDEB panics!) +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass CloseChannel +testClass SetPSValue KSensrvRegisterZeroChannels 0 +pause 500 +testClass FindChannels 0 0 0 0 0 NULL VendorNew +testClass CheckFoundChannelCount 0 +allownextresult KErrArgument +testClass GetPsResult KSensrvRegisterZeroChannels +testClass FindChannels 0 0 0 0 0 NULL VendorNew +testClass CheckFoundChannelCount 0 + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] + +// This case panics intensionally in debug builds +[Test] +title Reg: SSY registers invalid channels (UDEB panics!) +create SensorTestModule testClass + +oomignorefailure ON +loop KNumberToRepeatOOMTest +oomheapfailnext 5 + +testClass SetCompletedKey KSensorTestModuleComplete1 +testClass OpenChannel 0 0 0 0 0 First1 VendorFirst +testClass CloseChannel +testClass SetPSValue KSensrvRegisterInvalidChannels 0 +pause 500 +testClass FindChannels 0 0 0 0 0 NULL VendorNew +testClass CheckFoundChannelCount 0 +allownextresult KErrArgument +testClass GetPsResult KSensrvRegisterInvalidChannels +testClass FindChannels 0 0 0 0 0 NULL VendorNew +testClass CheckFoundChannelCount 0 + +endloop +oomignorefailure OFF +oomheaptonormal + +delete testClass +create SensorTestModule sd +sd ShutdownServer +delete sd +[Endtest] diff -r 51d936fe0d0c -r a003130def4e sensorservices/sensorserver/tsrc/sensorsrvtest/rom/sensorserver_ats3.iby --- a/sensorservices/sensorserver/tsrc/sensorsrvtest/rom/sensorserver_ats3.iby Fri May 28 14:18:28 2010 +0100 +++ b/sensorservices/sensorserver/tsrc/sensorsrvtest/rom/sensorserver_ats3.iby Thu Jun 24 11:22:10 2010 +0100 @@ -29,9 +29,6 @@ ECOM_PLUGIN(sensrvcondeval.dll, sensrvcondeval.rsc) -data=ZPRIVATE\10202BE9\10282DEE_stub.txt PRIVATE\10202BE9\10282DEE.txt -data=ZPRIVATE\10202BE9\1020507E_stub.txt PRIVATE\10202BE9\1020507E.txt - #endif // SENSORSERVERTEST_IBY diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/inc/ssmcommonlocale.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/inc/ssmcommonlocale.h Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,69 @@ +/* +* 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: Declaration of TLanguageRegion structure. +* +*/ +#ifndef __SSMCOMMONLOCALE_H__ +#define __SSMCOMMONLOCALE_H__ +#include + +_LIT( KLanguageDllNameBase, "elocl_lan" ); +_LIT( KRegionDllNameBase, "elocl_reg" ); +_LIT( KCollationDllNameBase, "elocl_col" ); +_LIT( KDllExtensionFormat, ".%u" ); +_LIT( KDllExtensionPadding, "0" ); +const TInt KMaxDllNameLength = 16; +const TInt KMaxDllExtensionLength = 6; +const TInt KMinDllExtensionLength = 4; +const TInt KDllExtensionPaddingPosition = 1; + +/** +* Used for mapping associated regions for the languages +*/ +class TLanguageRegion + { +public: + + /** + * Default constructor. + */ + TLanguageRegion () : iLanguage( 0 ), iRegion ( 0 ) + { + } + + /** + * Overloaded constructor. + */ + TLanguageRegion ( const TInt aLanguage ) + : iLanguage( aLanguage ), iRegion ( 0 ) + { + } + + /** + * Overloaded constructor. + */ + TLanguageRegion (const TInt aLanguage, const TInt aRegion) + : iLanguage( aLanguage ), iRegion ( aRegion ) + { + } + +public: + /** Mapped language code */ + TInt iLanguage; + + /** Mapped region code */ + TInt iRegion; +}; + +#endif // __SSMCOMMONLOCALE_H__ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/inc/ssmlocalepskeys.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/inc/ssmlocalepskeys.h Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,30 @@ +/* +* 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: PSKey definition. +* +*/ +#ifndef __SSMLOCALEPSKEYS_H__ +#define __SSMLOCALEPSKEYS_H__ +#include + +/** Publish and Subscribe key used for observing Collation code changes. */ +static const TInt KSSMCollationPSKey = 501; + +/** Publish and Subscribe key used for observing Region code changes. */ +static const TInt KSSMRegionPSKey = 502; + +/** Publish and Subscribe key used for observing UI Language code changes. */ +static const TInt KSSMUILanguagePSKey = 503; + +#endif // __SSMLOCALEPSKEYS_H__ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmcmdlists/data/alarm_charging.rss --- a/sysstatemgmt/ssmcmdlists/data/alarm_charging.rss Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmcmdlists/data/alarm_charging.rss Thu Jun 24 11:22:10 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" @@ -226,7 +226,7 @@ name = "z:\\sys\\bin\\locod.exe"; execution_behaviour = ESsmFireAndForget; monitor_info = r_mon_3_restarts_ignore; - conditional_information = r_cond_feat_testatcommand; + conditional_information = r_cond_testatcommand_or_enableisicommunicationinusbchargingmode; } // --------------------------------------------------------------------------- @@ -535,6 +535,26 @@ feature_id = KFeatureIdTestATCommand; } +// --------------------------------------------------------------------------- +// r_cond_feat_enableisicommunicationinusbchargingmode +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_FEATURE_VALUE r_cond_feat_enableisicommunicationinusbchargingmode + { + feature_id = KFeatureIdEnableIsiCommunicationInUsbChargingMode; + } + +// --------------------------------------------------------------------------- +// r_cond_testatcommand_or_certtesting +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_LOGICAL_OR r_cond_testatcommand_or_enableisicommunicationinusbchargingmode + { + lhs = r_cond_feat_testatcommand; + rhs = r_cond_feat_enableisicommunicationinusbchargingmode; + } + + // monitoring.rss contains resource definitions, so it may not be included // before entry point. #include "monitoring.rss" diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmcmdlists/data/criticalappscmdlist.rss --- a/sysstatemgmt/ssmcmdlists/data/criticalappscmdlist.rss Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmcmdlists/data/criticalappscmdlist.rss Thu Jun 24 11:22:10 2010 +0100 @@ -72,7 +72,6 @@ r_cmd_selftest, r_cmd_cfserver, r_cmd_sysap, - r_cmd_calsrv, r_cmd_profmon, // prio 0xFFE6 r_cmd_multiwaitforever @@ -84,17 +83,6 @@ // =========================================================================== // -// --------------------------------------------------------------------------- -// r_cmd_calsrv -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_calsrv - { - priority = 0xFFE7; - name = "calensvr.exe"; - execution_behaviour = ESsmFireAndForget; - monitor_info = r_mon_100_restarts_reset; - } // --------------------------------------------------------------------------- // r_cmd_cfserver diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmcmdlists/data/noncriticalcmdlist.rss --- a/sysstatemgmt/ssmcmdlists/data/noncriticalcmdlist.rss Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmcmdlists/data/noncriticalcmdlist.rss Thu Jun 24 11:22:10 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" @@ -12,7 +12,7 @@ * Contributors: * * Description: -* Command list for the Non-critical startup state. +* Command list for the Non-critical startup state in minimal startup mode. * */ @@ -73,94 +73,17 @@ r_cmd_psstate, // prio 0xFFF0 // prio 0xFFE7 r_cmd_simcheck, - r_cmd_clearstartupreason, + r_cmd_clearstartupreason, r_cmd_createswp_uiphase, r_cmd_createswp_rfstatus, r_cmd_waitforofflinequery, // prio 0xFFD7 r_cmd_setswp_uistart, // After offline query has been made - r_cmd_adtupdater, // Location, date & time queries r_cmd_bsengine, - r_cmd_waitforphone, // prio 0xFFC7 r_cmd_setswp_rfon, r_cmd_setswp_rfoff, - r_cmd_waitidle, - // prio 0xFFB7 -#ifdef __JAVA - r_cmd_javacaptain, -#endif // __JAVA - r_cmd_watcher, - r_cmd_dmutilsrv, - r_cmd_mediasyncserver, // Should be executed before contentharvester - // prio 0xFFA7 - r_cmd_contentharvester, - r_cmd_harvestersrv, - r_cmd_predefinedcontacts, - r_cmd_xnthemesrv, - r_cmd_ncnlist, - r_cmd_satsrv, - r_cmd_cbssrv, - r_cmd_schedsrv, - r_cmd_aosrv, - r_cmd_ippushman, - r_cmd_remotefe, - r_cmd_supllistener, - r_cmd_autolock, - r_cmd_pocstarter, - r_cmd_gsserver, - r_cmd_vcommandmgr, - r_cmd_dmallreasons, - r_cmd_locod, -#ifdef FF_LBT_ENGINE - r_cmd_lbtsrv, -#endif // FF_LBT_ENGINE - r_cmd_fsemail, - // prio 0xFFA6 - r_cmd_dmfirstbootreason, - r_cmd_fota, - // prio 0x7F87 - r_cmd_waitcleanbootinfo, - // prio 0x7F97 - r_cmd_dcmo, - r_cmd_amastart, - // prio 0x7EFF - r_cmd_activitymonitor1, - // prio 0x7EFE - r_cmd_logs, - // prio 0x7EFD - r_cmd_activitymonitor2, - // prio 0x7EFC - r_cmd_pbk2, - // prio 0x7EFB - r_cmd_activitymonitor3, - // prio 0x7EFA - r_cmd_mce, - // prio 0x7EF9 - r_cmd_activitymonitor4, - // prio 0x7EF8 - r_cmd_clockapp, - // prio 0x7EF7 - r_cmd_activitymonitor5, - // prio 0x7EF6 - r_cmd_videocenter, - // prio 0x7EF5 - r_cmd_activitymonitor6, - // prio 0x7EF4 - r_cmd_iaupdatebg, - // prio 0x7EF3 - r_cmd_activitymonitor7, - // prio 0x7EF2 - r_cmd_screensaver, - // prio 0x7EEF - r_cmd_activitymonitor8, - // prio 0x7EEE - r_cmd_autosync, - // prio 0x7EED - r_cmd_activitymonitor9, - // prio 0x7EEC - r_cmd_mylocationsengine, - r_cmd_startupready // Last command, prio 0x0000 + r_cmd_startupready // Last command, prio 0x0000 }; } @@ -168,188 +91,6 @@ // Command items in alphabetical order // =========================================================================== // - -// --------------------------------------------------------------------------- -// r_cmd_activitymonitor1 -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_activitymonitor1 - { - priority = 0x7EFF; - severity = ECmdCriticalSeverity; - execution_behaviour = ESsmWaitForSignal; - dllname = "ssmactivitycmd.dll"; - ordinal = 1; // SsmActivityCmdNewL - retries = 2; - dll_data = r_dlldata_activitymonitor_timeout; - } - -// --------------------------------------------------------------------------- -// r_cmd_activitymonitor2 -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_activitymonitor2 - { - priority = 0x7EFD; - severity = ECmdCriticalSeverity; - execution_behaviour = ESsmWaitForSignal; - dllname = "ssmactivitycmd.dll"; - ordinal = 1; // SsmActivityCmdNewL - retries = 2; - dll_data = r_dlldata_activitymonitor_timeout; - } - -// --------------------------------------------------------------------------- -// r_cmd_activitymonitor3 -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_activitymonitor3 - { - priority = 0x7EFB; - severity = ECmdCriticalSeverity; - execution_behaviour = ESsmWaitForSignal; - dllname = "ssmactivitycmd.dll"; - ordinal = 1; // SsmActivityCmdNewL - retries = 2; - dll_data = r_dlldata_activitymonitor_timeout; - } - -// --------------------------------------------------------------------------- -// r_cmd_activitymonitor4 -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_activitymonitor4 - { - priority = 0x7EF9; - severity = ECmdCriticalSeverity; - execution_behaviour = ESsmWaitForSignal; - dllname = "ssmactivitycmd.dll"; - ordinal = 1; // SsmActivityCmdNewL - retries = 2; - dll_data = r_dlldata_activitymonitor_timeout; - } - -// --------------------------------------------------------------------------- -// r_cmd_activitymonitor5 -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_activitymonitor5 - { - priority = 0x7EF7; - severity = ECmdCriticalSeverity; - execution_behaviour = ESsmWaitForSignal; - dllname = "ssmactivitycmd.dll"; - ordinal = 1; // SsmActivityCmdNewL - retries = 2; - dll_data = r_dlldata_activitymonitor_timeout; - } - -// --------------------------------------------------------------------------- -// r_cmd_activitymonitor6 -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_activitymonitor6 - { - priority = 0x7EF5; - severity = ECmdCriticalSeverity; - execution_behaviour = ESsmWaitForSignal; - dllname = "ssmactivitycmd.dll"; - ordinal = 1; // SsmActivityCmdNewL - retries = 2; - dll_data = r_dlldata_activitymonitor_timeout; - } - -// --------------------------------------------------------------------------- -// r_cmd_activitymonitor7 -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_activitymonitor7 - { - priority = 0x7EF3; - severity = ECmdCriticalSeverity; - execution_behaviour = ESsmWaitForSignal; - dllname = "ssmactivitycmd.dll"; - ordinal = 1; // SsmActivityCmdNewL - retries = 2; - dll_data = r_dlldata_activitymonitor_timeout; - } - -// --------------------------------------------------------------------------- -// r_cmd_activitymonitor8 -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_activitymonitor8 - { - priority = 0x7EEF; - severity = ECmdCriticalSeverity; - execution_behaviour = ESsmWaitForSignal; - dllname = "ssmactivitycmd.dll"; - ordinal = 1; // SsmActivityCmdNewL - retries = 2; - dll_data = r_dlldata_activitymonitor_timeout; - } - -// --------------------------------------------------------------------------- -// r_cmd_activitymonitor9 -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_activitymonitor9 - { - priority = 0x7EED; - severity = ECmdCriticalSeverity; - execution_behaviour = ESsmWaitForSignal; - dllname = "ssmactivitycmd.dll"; - ordinal = 1; // SsmActivityCmdNewL - retries = 2; - dll_data = r_dlldata_activitymonitor_timeout; - } - -// --------------------------------------------------------------------------- -// r_cmd_adtupdater -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_adtupdater - { - priority = 0xFFD7; - name = "adtupdater.exe"; - execution_behaviour = ESsmFireAndForget; - } - -// --------------------------------------------------------------------------- -// r_cmd_amastart -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_AMA_STARTER r_cmd_amastart - { - priority = 0x7F97; - conditional_information = r_cond_ps_normalboot; - } - -// --------------------------------------------------------------------------- -// r_cmd_autosync -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_autosync - { - priority = 0x7EEE; - execution_behaviour = ESsmFireAndForget; - retries = 3; - name = "cctautosync.exe"; - } - -// --------------------------------------------------------------------------- -// r_cmd_aosrv -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_aosrv - { - priority = 0xFFA7; - name = "z:\\sys\\bin\\alwaysonlinestarter.exe"; - execution_behaviour = ESsmFireAndForget; - conditional_information = r_cond_feat_alwaysonline; - monitor_info = r_mon_3_restarts_ignore; - } - // --------------------------------------------------------------------------- // r_cmd_bsengine // --------------------------------------------------------------------------- @@ -363,46 +104,6 @@ } // --------------------------------------------------------------------------- -// r_cmd_autolock -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_APP_INFO r_cmd_autolock - { - priority = 0xFFA7; - name = "z:\\sys\\bin\\lockapp.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - background = 1; // To background - monitor_info = r_mon_3_restarts_ignore; - } - -// --------------------------------------------------------------------------- -// r_cmd_cbssrv -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_cbssrv - { - priority = 0xFFA7; - name = "z:\\sys\\bin\\cbsserver.exe"; - execution_behaviour = ESsmFireAndForget; - conditional_information = r_cond_feat_cellbroadcast; - monitor_info = r_mon_3_restarts_ignore; - } - -// --------------------------------------------------------------------------- -// r_cmd_clockapp -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_APP_INFO r_cmd_clockapp - { - priority = 0x7EF8; - name = "z:\\sys\\bin\\clockapp.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - background = 1; // To background - } - -// --------------------------------------------------------------------------- // r_cmd_createswp_rfstatus // --------------------------------------------------------------------------- // @@ -427,271 +128,6 @@ } // --------------------------------------------------------------------------- -// 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 -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_dcmo - { - priority = 0x7F97; - execution_behaviour = ESsmFireAndForget; - dllname = "dcmostartupcustcmd.dll"; - ordinal = 1; // DCMO command - conditional_information = r_cond_feat_runtime_dcmo; - } - -// --------------------------------------------------------------------------- -// r_cmd_dmallreasons -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_dmallreasons - { - priority = 0xFFA7; - execution_behaviour = ESsmWaitForSignal; - dllname = "fotacustcmds.dll"; - ordinal = 1; // AllReasons command - retries = 2; - conditional_information = r_cond_syncml_dm_or_pnp_mobile_services; - } - -// --------------------------------------------------------------------------- -// r_cmd_dmfirstbootreason -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_dmfirstbootreason - { - priority = 0xFFA6; - execution_behaviour = ESsmWaitForSignal; - dllname = "fotacustcmds.dll"; - ordinal = 3; // FirstBoot command - retries = 2; - conditional_information = r_cond_pnp_mobile_services_and_firstboot; - } - -// --------------------------------------------------------------------------- -// r_cmd_dmutilsrv -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_dmutilsrv - { - priority = 0xFFB7; - name = "z:\\sys\\bin\\dmutilserver.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - monitor_info = r_mon_3_restarts_reset; - conditional_information = r_cond_feat_sappolicymgmt; - } - -// --------------------------------------------------------------------------- -// r_cmd_fota -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_fota - { - priority = 0xFFA6; - execution_behaviour = ESsmWaitForSignal; - dllname = "fotacustcmds.dll"; - ordinal = 2; // Fota command - retries = 2; - conditional_information = r_cond_syncml_dm_fota_and_fotareset; - } - -// --------------------------------------------------------------------------- -// r_cmd_fsemail -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_APP_INFO r_cmd_fsemail - { - priority = 0xFFA7; - name = "fsmailserver.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - background = 1; // To background - monitor_info = r_mon_3_restarts_ignore; - conditional_information = r_cond_feat_emailfw; - } - -// --------------------------------------------------------------------------- -// r_cmd_gsserver -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_gsserver - { - priority = 0xFFA7; - name = "z:\\sys\\bin\\gsserver.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - monitor_info = r_mon_3_restarts_ignore; - conditional_information = r_cond_feat_tvout; - } - -// --------------------------------------------------------------------------- -// r_cmd_harvestersrv -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_harvestersrv - { - priority = 0xFFA7; - name = "harvesterserver.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - monitor_info = r_mon_3_restarts_ignore; - } - -// --------------------------------------------------------------------------- -// r_cmd_iaupdatebg -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_iaupdatebg - { - priority = 0x7EF4; - name = "iaupdatebg.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - conditional_information = r_cond_feat_iadv2; - } - -// --------------------------------------------------------------------------- -// r_cmd_loadsup_ippushman -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_ippushman - { - priority = 0xFFA7; - name = "z:\\sys\\bin\\ippushman.exe"; - execution_behaviour = ESsmFireAndForget; // -- does not call Rendezvous() -- - conditional_information = r_cond_feat_ippush; - } - -// --------------------------------------------------------------------------- -// r_cmd_lbtsrv -// --------------------------------------------------------------------------- -// -#ifdef FF_LBT_ENGINE -RESOURCE SSM_START_PROCESS_INFO r_cmd_lbtsrv - { - priority = 0xFFA7; - name = "z:\\sys\\bin\\lbtserver.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - } -#endif // FF_LBT_ENGINE - -// --------------------------------------------------------------------------- -// r_cmd_locod -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_locod - { - priority = 0xFFA7; - name = "z:\\sys\\bin\\locod.exe"; - execution_behaviour = ESsmFireAndForget; - monitor_info = r_mon_3_restarts_ignore; - } - -// --------------------------------------------------------------------------- -// r_cmd_logs -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_APP_INFO r_cmd_logs - { - priority = 0x7EFE; - name = "z:\\sys\\bin\\logs.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - background = 1; // To background - } - -// --------------------------------------------------------------------------- -// r_cmd_mce -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_APP_INFO r_cmd_mce - { - priority = 0x7EFA; - name = "mce.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - background = 1; // To background - } - -// --------------------------------------------------------------------------- -// r_cmd_mediasyncserver -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_mediasyncserver - { - priority = 0xFFA6; - name = "z:\\sys\\bin\\mediasyncserver.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - monitor_info = r_mon_3_restarts_ignore; - } - -// --------------------------------------------------------------------------- -// r_cmd_ncnlist -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_ncnlist - { - priority = 0xFFA7; - name = "z:\\sys\\bin\\ncnlist.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - monitor_info = r_mon_3_restarts_ignore; - } - -// --------------------------------------------------------------------------- -// r_cmd_pbk2 -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_APP_INFO r_cmd_pbk2 - { - priority = 0x7EFC; - name = "z:\\sys\\bin\\phonebook2.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - background = 1; // To background - } - -// --------------------------------------------------------------------------- -// r_cmd_pocstarter -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_pocstarter - { - priority = 0xFFA7; - name = "z:\\sys\\bin\\pocstarter.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - conditional_information = r_cond_feat_omapoc; - } - -// --------------------------------------------------------------------------- -// r_cmd_predefinedcontacts -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_predefinedcontacts - { - priority = 0xFFA7; - name = "z:\\sys\\bin\\predefinedcontacts.exe"; - execution_behaviour = ESsmWaitForSignal; - retries = 2; - conditional_information = r_cond_firstboot_or_fotareset_or_deeprfsreset; - } - -// --------------------------------------------------------------------------- // r_cmd_psstate // --------------------------------------------------------------------------- // @@ -716,19 +152,6 @@ } // --------------------------------------------------------------------------- -// r_cmd_remotefe -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_remotefe - { - priority = 0xFFA7; - name = "z:\\sys\\bin\\rsfwbootmounter.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - conditional_information = r_cond_feat_remotestoragefw; - } - -// --------------------------------------------------------------------------- // r_cmd_sastate // --------------------------------------------------------------------------- // @@ -744,46 +167,6 @@ } // --------------------------------------------------------------------------- -// r_cmd_satsrv -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_satsrv - { - priority = 0xFFA7; - name = "z:\\sys\\bin\\satserver.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - monitor_info = r_mon_3_restarts_ignore; - conditional_information = r_cond_feat_simcard; - } - -// --------------------------------------------------------------------------- -// r_cmd_schedsrv -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_schedsrv - { - priority = 0xFFA7; - name = "z:\\sys\\bin\\schexe.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - } - -// --------------------------------------------------------------------------- -// r_cmd_screensaver -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_APP_INFO r_cmd_screensaver - { - priority = 0x7EF2; - name = "z:\\sys\\bin\\screensaver.exe"; - background = 1; // To background - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - monitor_info = r_mon_3_restarts_ignore; - } - -// --------------------------------------------------------------------------- // r_cmd_setswp_rfoff // --------------------------------------------------------------------------- // @@ -849,89 +232,6 @@ } // --------------------------------------------------------------------------- -// r_cmd_supllistener -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_supllistener - { - priority = 0xFFA7; - name = "z:\\sys\\bin\\epos_omasupllistener.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - monitor_info = r_mon_3_restarts_ignore; - conditional_information = r_cond_feat_omasuplplugins; - } - -// --------------------------------------------------------------------------- -// r_cmd_systemams -// --------------------------------------------------------------------------- -// -#ifdef __JAVA -RESOURCE SSM_START_PROCESS_INFO r_cmd_javacaptain - { - priority = 0xFFB7; - name = "javacaptain.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - } -#endif // __JAVA -// --------------------------------------------------------------------------- -// r_cmd_vcommandmgr -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_APP_INFO r_cmd_vcommandmgr - { - priority = 0xFFA7; - name = "z:\\sys\\bin\\vcommandmanager.exe"; - background = 1; // To background - execution_behaviour = ESsmFireAndForget; // -- does not call Rendezvous() -- - conditional_information = r_cond_sind_and_no_sdnd; - } - -// --------------------------------------------------------------------------- -// r_cmd_videocenter -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_videocenter - { - priority = 0x7EF6; - name = "cseschedulerserver.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - } - -// --------------------------------------------------------------------------- -// r_cmd_waitcleanbootinfo -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_waitcleanbootinfo - { - priority = 0x7F87; - severity = ECmdCriticalSeverity; - dllname = "ssmsystemcmds.dll"; - ordinal = 6; // WaitPsKeyRange - dll_data = r_dlldata_waitcleanbootinfo; - retries = 2; - execution_behaviour = ESsmWaitForSignal; - } - -// --------------------------------------------------------------------------- -// r_cmd_waitforidle -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_waitidle - { - priority = 0xFFC7; - severity = ECmdCriticalSeverity; - dllname = "ssmsystemcmds.dll"; - ordinal = 5; // WaitPsKeyExact - dll_data = r_dlldata_waitidle; - unload_on_finish = ENeverUnload; - retries = 2; - execution_behaviour = ESsmWaitForSignal; - } - -// --------------------------------------------------------------------------- // r_cmd_waitforofflinequery // --------------------------------------------------------------------------- // @@ -948,46 +248,6 @@ } // --------------------------------------------------------------------------- -// r_cmd_waitforphone -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_waitforphone - { - priority = 0xFFD7; - severity = ECmdCriticalSeverity; - dllname = "ssmsystemcmds.dll"; - ordinal = 5; // WaitPsKeyExact - dll_data = r_dlldata_waitphone; - unload_on_finish = ENeverUnload; - retries = 2; - execution_behaviour = ESsmWaitForSignal; - } - -// --------------------------------------------------------------------------- -// r_cmd_watcher -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_watcher - { - priority = 0xFFB7; - name = "z:\\sys\\bin\\watcher.exe"; - monitor_info = r_mon_3_restarts_ignore; - } - -// --------------------------------------------------------------------------- -// r_cmd_xnthemesrv -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_xnthemesrv - { - priority = 0xFFA7; - name = "z:\\sys\\bin\\xnthemeserver.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - monitor_info = r_mon_3_restarts_ignore; - } - -// --------------------------------------------------------------------------- // r_cmd_clearstartupreason // --------------------------------------------------------------------------- // @@ -1001,7 +261,6 @@ execution_behaviour = ESsmWaitForSignal; } - // =========================================================================== // DLL data items in alphabetical order // =========================================================================== @@ -1039,17 +298,6 @@ } // --------------------------------------------------------------------------- -// r_dlldata_waitidle -// --------------------------------------------------------------------------- -// -RESOURCE CMD_PARAM_WAIT_PS r_dlldata_waitidle - { - category = 0x101F8766; // KPSUidStartup - key = 0x00000043; // KPSIdlePhase1Ok - target = 101; // EIdlePhase1Ok - } - -// --------------------------------------------------------------------------- // r_dlldata_waitofflinequery // --------------------------------------------------------------------------- // @@ -1072,18 +320,6 @@ target = 101; // EPhonePhase1Ok } - -// --------------------------------------------------------------------------- -// r_cmd_mylocationsengine -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_mylocationsengine - { - priority = 0x7EEC; - name = "z:\\sys\\bin\\mylocationsengine.exe"; - execution_behaviour = ESsmFireAndForget; - } - // =========================================================================== // Conditional blocks in alphabetical order // =========================================================================== diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmcmdlists/data/noncriticalcmdlist_ext.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/ssmcmdlists/data/noncriticalcmdlist_ext.rss Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,707 @@ +/* +* 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: +* Command list for the Non-critical startup state in extended startup mode. +* +*/ + +#include +#include +#include +#include + +#include "ssmswp.hrh" +#include "ssmsubstateext.hrh" +#include "ssmdlldatadefs.rh" + +// Identify command list type +UID2 KUidSsmCommandListResourceFile + +// --------------------------------------------------------------------------- +// r_entry_point +// This must be the first resource +// --------------------------------------------------------------------------- +// +RESOURCE SSM_COMMAND_LIST_ROOT r_entry_point + { + command_list_mapping = r_map; + } + +// --------------------------------------------------------------------------- +// r_map +// Mapping of command list ids to resource ids. +// --------------------------------------------------------------------------- +// +RESOURCE SSM_COMMAND_LIST_MAPPING r_map + { + mappings = + { + SSM_COMMANDLISTID_TO_RESOURCEID + { + command_list_id = ESsmStateNonCritical; + resource_id = r_cmds; + } + }; + } + +// =========================================================================== +// Command lists in alphabetical order +// =========================================================================== +// + +// --------------------------------------------------------------------------- +// r_cmds +// --------------------------------------------------------------------------- +// +RESOURCE SSM_COMMAND_LIST r_cmds + { + commands = + { + // prio 0xFFB7 +#ifdef __JAVA + r_cmd_javacaptain, +#endif // __JAVA + r_cmd_watcher, + r_cmd_dmutilsrv, + // prio 0xFFA7 + r_cmd_mdswatchdog, + r_cmd_satsrv, + r_cmd_cbssrv, + r_cmd_schedsrv, + r_cmd_aosrv, + r_cmd_ippushman, + r_cmd_remotefe, + r_cmd_supllistener, + r_cmd_autolock, + r_cmd_dmallreasons, + r_cmd_locod, +#ifdef FF_LBT_ENGINE + r_cmd_lbtsrv, +#endif // FF_LBT_ENGINE + //prio 0xFFA6 + r_cmd_dmfirstbootreason, + r_cmd_fota, + // prio 0x7F87 + r_cmd_waitcleanbootinfo, + // prio 0x7F97 + r_cmd_dcmo, + r_cmd_amastart, + // prio 0x7F96 + r_cmd_multiple_wait, + // prio 0x7F55 + r_cmd_createswp_noncriticalphase, + // prio 0x7F54 + r_cmd_setswp_noncriticalstart + }; + } + +// =========================================================================== +// Command items in alphabetical order +// =========================================================================== +// + +// --------------------------------------------------------------------------- +// r_cmd_amastart +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_AMA_STARTER r_cmd_amastart + { + priority = 0x7F97; + conditional_information = r_cond_ps_normalboot; + } + +// --------------------------------------------------------------------------- +// r_cmd_aosrv +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_aosrv + { + priority = 0xFFA7; + name = "z:\\sys\\bin\\alwaysonlinestarter.exe"; + execution_behaviour = ESsmFireAndForget; + conditional_information = r_cond_feat_alwaysonline; + monitor_info = r_mon_3_restarts_ignore; + } + +// --------------------------------------------------------------------------- +// r_cmd_autolock +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_APP_INFO r_cmd_autolock + { + priority = 0xFFA7; + name = "z:\\sys\\bin\\lockapp.exe"; + execution_behaviour = ESsmWaitForSignal; + timeout = 10000; + background = 1; // To background + monitor_info = r_mon_3_restarts_ignore; + } + +// --------------------------------------------------------------------------- +// r_cmd_cbssrv +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_cbssrv + { + priority = 0xFFA7; + name = "z:\\sys\\bin\\cbsserver.exe"; + execution_behaviour = ESsmFireAndForget; + conditional_information = r_cond_feat_cellbroadcast; + monitor_info = r_mon_3_restarts_ignore; + } + + +// --------------------------------------------------------------------------- +// r_cmd_createswp_noncriticalphase +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CREATE_SYSTEM_WIDE_PROPERTY r_cmd_createswp_noncriticalphase + { + priority = 0x7F55; + severity = ECmdCriticalSeverity; + key = SWP_UID_SSM_NONCRITICAL_PHASE; + filename = "ssmnoncriticalswppolicy.dll"; + } + +// --------------------------------------------------------------------------- +// r_cmd_setswp_noncriticalstart +// --------------------------------------------------------------------------- +// +RESOURCE SSM_REQUEST_SYSTEM_WIDE_PROPERTY r_cmd_setswp_noncriticalstart + { + priority = 0x7F54; + key = SWP_UID_SSM_NONCRITICAL_PHASE; + value = ESsmNonCriticalPhaseStarted; + } + +// --------------------------------------------------------------------------- +// r_cmd_dcmo +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_dcmo + { + priority = 0x7F97; + execution_behaviour = ESsmFireAndForget; + dllname = "dcmostartupcustcmd.dll"; + ordinal = 1; // DCMO command + conditional_information = r_cond_feat_runtime_dcmo; + } + +// --------------------------------------------------------------------------- +// r_cmd_dmallreasons +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_dmallreasons + { + priority = 0xFFA7; + execution_behaviour = ESsmWaitForSignal; + dllname = "fotacustcmds.dll"; + ordinal = 1; // AllReasons command + retries = 2; + conditional_information = r_cond_syncml_dm_or_pnp_mobile_services; + } + +// --------------------------------------------------------------------------- +// r_cmd_dmfirstbootreason +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_dmfirstbootreason + { + priority = 0xFFA6; + execution_behaviour = ESsmWaitForSignal; + dllname = "fotacustcmds.dll"; + ordinal = 3; // FirstBoot command + retries = 2; + conditional_information = r_cond_pnp_mobile_services_and_firstboot; + } + +// --------------------------------------------------------------------------- +// r_cmd_dmutilsrv +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_dmutilsrv + { + priority = 0xFFB7; + name = "z:\\sys\\bin\\dmutilserver.exe"; + execution_behaviour = ESsmWaitForSignal; + timeout = 10000; + monitor_info = r_mon_3_restarts_reset; + conditional_information = r_cond_feat_sappolicymgmt; + } + +// --------------------------------------------------------------------------- +// r_cmd_fota +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_fota + { + priority = 0xFFA6; + execution_behaviour = ESsmWaitForSignal; + dllname = "fotacustcmds.dll"; + ordinal = 2; // Fota command + retries = 2; + conditional_information = r_cond_syncml_dm_fota_and_fotareset; + } + +// --------------------------------------------------------------------------- +// r_cmd_mdswatchdog +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_mdswatchdog + { + priority = 0xFFA7; + name = "mdswatchdog.exe"; + execution_behaviour = ESsmFireAndForget; + } + +// --------------------------------------------------------------------------- +// r_cmd_ippushman +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_ippushman + { + priority = 0xFFA7; + name = "z:\\sys\\bin\\ippushman.exe"; + execution_behaviour = ESsmFireAndForget; // -- does not call Rendezvous() -- + conditional_information = r_cond_feat_ippush; + } + +// --------------------------------------------------------------------------- +// r_cmd_lbtsrv +// --------------------------------------------------------------------------- +// +#ifdef FF_LBT_ENGINE +RESOURCE SSM_START_PROCESS_INFO r_cmd_lbtsrv + { + priority = 0xFFA7; + name = "z:\\sys\\bin\\lbtserver.exe"; + execution_behaviour = ESsmWaitForSignal; + timeout = 10000; + } +#endif // FF_LBT_ENGINE + +// --------------------------------------------------------------------------- +// r_cmd_locod +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_locod + { + priority = 0xFFA7; + name = "z:\\sys\\bin\\locod.exe"; + execution_behaviour = ESsmFireAndForget; + monitor_info = r_mon_3_restarts_ignore; + } + + +// --------------------------------------------------------------------------- +// r_cmd_psstate +// --------------------------------------------------------------------------- +// +RESOURCE SSM_SET_PUBLISH_AND_SUBSCRIBE r_cmd_psstate + { + priority = 0xFFF0; + severity = ECmdCriticalSeverity; + category = 0x101F8766; // KPSUidStartup + key = 0x00000041; // KPSGlobalSystemState + value = 104; // ESwStateCriticalPhaseOK + } + +// --------------------------------------------------------------------------- +// r_cmd_remotefe +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_remotefe + { + priority = 0xFFA7; + name = "z:\\sys\\bin\\rsfwbootmounter.exe"; + execution_behaviour = ESsmWaitForSignal; + timeout = 10000; + conditional_information = r_cond_feat_remotestoragefw; + } + +// --------------------------------------------------------------------------- +// r_cmd_satsrv +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_satsrv + { + priority = 0xFFA7; + name = "z:\\sys\\bin\\satserver.exe"; + execution_behaviour = ESsmWaitForSignal; + timeout = 10000; + monitor_info = r_mon_3_restarts_ignore; + conditional_information = r_cond_feat_simcard; + } + +// --------------------------------------------------------------------------- +// r_cmd_schedsrv +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_schedsrv + { + priority = 0xFFA7; + name = "z:\\sys\\bin\\schexe.exe"; + execution_behaviour = ESsmWaitForSignal; + timeout = 10000; + } + +// --------------------------------------------------------------------------- +// r_cmd_supllistener +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_supllistener + { + priority = 0xFFA7; + name = "z:\\sys\\bin\\epos_omasupllistener.exe"; + execution_behaviour = ESsmWaitForSignal; + timeout = 10000; + monitor_info = r_mon_3_restarts_ignore; + conditional_information = r_cond_feat_omasuplplugins; + } + +// --------------------------------------------------------------------------- +// r_cmd_multiple_wait +// --------------------------------------------------------------------------- +// +RESOURCE SSM_MULTIPLE_WAIT r_cmd_multiple_wait + { + priority = 0x7F96; + } + +// --------------------------------------------------------------------------- +// r_cmd_waitcleanbootinfo +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_waitcleanbootinfo + { + priority = 0x7F87; + severity = ECmdCriticalSeverity; + dllname = "ssmsystemcmds.dll"; + ordinal = 6; // WaitPsKeyRange + dll_data = r_dlldata_waitcleanbootinfo; + retries = 2; + execution_behaviour = ESsmWaitForSignal; + } + +// --------------------------------------------------------------------------- +// r_cmd_watcher +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_watcher + { + priority = 0xFFB7; + name = "z:\\sys\\bin\\watcher.exe"; + monitor_info = r_mon_3_restarts_ignore; + } + +// --------------------------------------------------------------------------- +// r_cmd_javacaptain +// --------------------------------------------------------------------------- +// +#ifdef __JAVA +RESOURCE SSM_START_PROCESS_INFO r_cmd_javacaptain + { + priority = 0xFFB7; + name = "javacaptain.exe"; + execution_behaviour = ESsmWaitForSignal; + timeout = 10000; + } +#endif // __JAVA + +// =========================================================================== +// DLL data items in alphabetical order +// =========================================================================== +// + +// --------------------------------------------------------------------------- +// r_dlldata_waitcleanbootinfo +// --------------------------------------------------------------------------- +// +RESOURCE CMD_PARAM_WAIT_PS_2 r_dlldata_waitcleanbootinfo + { + category = 0x101F8766; // KPSUidStartup + key = 0x00000012; // KStartupCleanBoot + target1 = 101; // EStartupNormalBoot + target2 = 102; // EStartupCleanBoot + } + +// =========================================================================== +// Conditional blocks in alphabetical order +// =========================================================================== +// + +// --------------------------------------------------------------------------- +// r_cond_ps_firstboot +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_PUB_SUB_VALUE r_cond_ps_firstboot + { + category = 0x101F8766; // KPSUidStartup + key = 0x00000013; // KPSStartupFirstBoot + value = 101; // EPSStartupFirstBoot + } + +// --------------------------------------------------------------------------- +// r_cond_feat_alwaysonline +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_FEATURE_VALUE r_cond_feat_alwaysonline + { + feature_id = KFeatureIdAlwaysOnLine; + } + +// --------------------------------------------------------------------------- +// r_cond_feat_cellbroadcast +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_FEATURE_VALUE r_cond_feat_cellbroadcast + { + feature_id = KFeatureIdCellBroadcast; + } + +// --------------------------------------------------------------------------- +// r_cond_feat_ippush +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_FEATURE_VALUE r_cond_feat_ippush + { + feature_id = KFeatureIdIpPush; + } + +// --------------------------------------------------------------------------- +// r_cond_feat_omasuplplugins +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_FEATURE_VALUE r_cond_feat_omasuplplugins + { + feature_id = KFeatureIdOmaSuplPlugins; + } + +// --------------------------------------------------------------------------- +// r_cond_feat_pnp_mobile_services +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_FEATURE_VALUE r_cond_feat_pnp_mobile_services + { + feature_id = KFeatureIdPlugAndPlayMobileServices; + } + +// --------------------------------------------------------------------------- +// r_cond_feat_remotestoragefw +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_FEATURE_VALUE r_cond_feat_remotestoragefw + { + feature_id = KFeatureIdRemoteStorageFw; + } + +// --------------------------------------------------------------------------- +// r_cond_feat_runtime_dcmo; +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_FEATURE_VALUE r_cond_feat_runtime_dcmo + { + feature_id = KFeatureIdFfRuntimeDeviceCapabilityConfiguration; + } + +// --------------------------------------------------------------------------- +// r_cond_feat_sappolicymgmt +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_FEATURE_VALUE r_cond_feat_sappolicymgmt + { + feature_id = KFeatureIdSapPolicyManagement; + } + +// --------------------------------------------------------------------------- +// r_cond_feat_sdnd +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_FEATURE_VALUE r_cond_feat_sdnd + { + feature_id = KFeatureIdSdnd; + } + +// --------------------------------------------------------------------------- +// r_cond_feat_simcard +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_FEATURE_VALUE r_cond_feat_simcard + { + feature_id = KFeatureIdSimCard; + } + +// --------------------------------------------------------------------------- +// r_cond_feat_sind +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_FEATURE_VALUE r_cond_feat_sind + { + feature_id = KFeatureIdSind; + } + +// --------------------------------------------------------------------------- +// r_cond_feat_syncml_dm +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_FEATURE_VALUE r_cond_feat_syncml_dm + { + feature_id = KFeatureIdSyncMlDm; + } + +// --------------------------------------------------------------------------- +// r_cond_feat_syncml_dm_fota +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_FEATURE_VALUE r_cond_feat_syncml_dm_fota + { + feature_id = KFeatureIdSyncMlDmFota; + } + +// --------------------------------------------------------------------------- +// r_cond_no_sdnd +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_LOGICAL_NOT r_cond_no_sdnd + { + sub_condition = r_cond_feat_sdnd; + } + +// --------------------------------------------------------------------------- +// r_cond_pnp_mobile_services_and_firstboot +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_LOGICAL_AND r_cond_pnp_mobile_services_and_firstboot + { + lhs = r_cond_feat_pnp_mobile_services; + rhs = r_cond_ps_firstboot; + } + +// --------------------------------------------------------------------------- +// r_cond_ps_bootoffline +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_PUB_SUB_VALUE r_cond_ps_bootoffline + { + category = 0x101F8766; // KPSUidStartup + key = 0x00000011; // KStartupBootIntoOffline + value = 102; // EBootIntoOfflineMode + } + +// --------------------------------------------------------------------------- +// r_cond_ps_bootonline +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_PUB_SUB_VALUE r_cond_ps_bootonline + { + category = 0x101F8766; // KPSUidStartup + key = 0x00000011; // KStartupBootIntoOffline + value = 101; // EBootIntoOnlineMode + } + +// --------------------------------------------------------------------------- +// r_cond_ps_fotareset +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_PUB_SUB_VALUE r_cond_ps_fotareset + { + category = 0x101F8766; // KPSUidStartup + key = 0x00000045; // KPSStartupReason + value = EFirmwareUpdate; + } + +// --------------------------------------------------------------------------- +// r_cond_ps_normalboot +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_PUB_SUB_VALUE r_cond_ps_normalboot + { + category = 0x101F8766; // KPSUidStartup + key = 0x00000012; // KStartupCleanBoot + value = 101; // EStartupNormalBoot + } + +// --------------------------------------------------------------------------- +// r_cond_ps_simusable +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_PUB_SUB_VALUE r_cond_ps_simusable + { + category = 0x101F8766; // KPSUidStartup + key = 0x00000031; // KPSSimStatus + value = 101; // ESimUsable + } + +// --------------------------------------------------------------------------- +// r_cond_simnotusable +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_LOGICAL_NOT r_cond_simnotusable + { + sub_condition = r_cond_ps_simusable; + } + +// --------------------------------------------------------------------------- +// r_cond_simnotusable_or_bootoffline +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_LOGICAL_OR r_cond_simnotusable_or_bootoffline + { + lhs = r_cond_simnotusable; + rhs = r_cond_ps_bootoffline; + } + +// --------------------------------------------------------------------------- +// r_cond_simusable_and_bootonline +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_LOGICAL_AND r_cond_simusable_and_bootonline + { + lhs = r_cond_ps_simusable; + rhs = r_cond_ps_bootonline; + } + +// --------------------------------------------------------------------------- +// r_cond_sind_and_no_sdnd +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_LOGICAL_AND r_cond_sind_and_no_sdnd + { + lhs = r_cond_feat_sind; + rhs = r_cond_no_sdnd; + } + +// --------------------------------------------------------------------------- +// r_cond_syncml_dm_fota_and_fotareset +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_LOGICAL_AND r_cond_syncml_dm_fota_and_fotareset + { + lhs = r_cond_feat_syncml_dm_fota; + rhs = r_cond_ps_fotareset; + } + +// --------------------------------------------------------------------------- +// r_cond_syncml_dm_or_pnp_mobile_services +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_LOGICAL_OR r_cond_syncml_dm_or_pnp_mobile_services + { + lhs = r_cond_feat_syncml_dm; + rhs = r_cond_feat_pnp_mobile_services; + } + +// monitoring.rss contains resource definitions, so it may not be included +// before entry point. +#include "monitoring.rss" diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmcmdlists/data/noncriticalcmdlist_hw.rss --- a/sysstatemgmt/ssmcmdlists/data/noncriticalcmdlist_hw.rss Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmcmdlists/data/noncriticalcmdlist_hw.rss Thu Jun 24 11:22:10 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" @@ -72,7 +72,6 @@ r_cmd_sipprofilesrv, #endif // defined !SYMBIAN_EXCLUDE_SIP r_cmd_remotelock, - r_cmd_hotspotsrv, // prio 0x7EF1 r_cmd_activitymonitor1, // prio 0x7EF0 @@ -133,19 +132,6 @@ // --------------------------------------------------------------------------- -// r_cmd_hotspotsrv -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_hotspotsrv - { - priority = 0xFFA7; - name = "hotspotserver.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - conditional_information = r_cond_protwlan_and_firstboot_or_deeprfs_or_normalrfs; - } - -// --------------------------------------------------------------------------- // r_cmd_provisioning // --------------------------------------------------------------------------- // @@ -206,26 +192,6 @@ // // --------------------------------------------------------------------------- -// r_cond_ps_firstboot -// --------------------------------------------------------------------------- -// -RESOURCE SSM_CND_PUB_SUB_VALUE r_cond_ps_firstboot - { - category = 0x101F8766; // KPSUidStartup - key = 0x00000013; // KPSStartupFirstBoot - value = 101; // EPSStartupFirstBoot - } - -// --------------------------------------------------------------------------- -// r_cond_feat_protocolwlan -// --------------------------------------------------------------------------- -// -RESOURCE SSM_CND_FEATURE_VALUE r_cond_feat_protocolwlan - { - feature_id = KFeatureIdProtocolWlan; - } - -// --------------------------------------------------------------------------- // r_cond_feat_remotelock // --------------------------------------------------------------------------- // @@ -244,60 +210,6 @@ } // --------------------------------------------------------------------------- -// r_cond_firstboot_or_deeprfs -// --------------------------------------------------------------------------- -// -RESOURCE SSM_CND_LOGICAL_OR r_cond_firstboot_or_deeprfs - { - lhs = r_cond_ps_deep_rfs; - rhs = r_cond_ps_firstboot; - } - -// --------------------------------------------------------------------------- -// r_cond_firstboot_or_deeprfs_or_normalrfs -// --------------------------------------------------------------------------- -// -RESOURCE SSM_CND_LOGICAL_OR r_cond_firstboot_or_deeprfs_or_normalrfs - { - lhs = r_cond_ps_normal_rfs; - rhs = r_cond_firstboot_or_deeprfs; - } - -// --------------------------------------------------------------------------- -// r_cond_ps_normal_rfs -// --------------------------------------------------------------------------- -// -RESOURCE SSM_CND_PUB_SUB_VALUE r_cond_ps_normal_rfs - { - category = 0x101F8766; // KPSUidStartup - key = 0x00000045; // KPSStartupReason - value = ENormalRFSReset; - } - -// --------------------------------------------------------------------------- -// r_cond_ps_deep_rfs -// --------------------------------------------------------------------------- -// -RESOURCE SSM_CND_PUB_SUB_VALUE r_cond_ps_deep_rfs - { - category = 0x101F8766; // KPSUidStartup - key = 0x00000045; // KPSStartupReason - value = EDeepRFSReset; - } - -// --------------------------------------------------------------------------- -// r_cond_protwlan_and_firstboot_or_deeprfs_or_normalrfs -// ( protocol WLAN ) AND ( first boot OR deep RFS OR normal RFS ) -// --------------------------------------------------------------------------- -// -RESOURCE SSM_CND_LOGICAL_AND r_cond_protwlan_and_firstboot_or_deeprfs_or_normalrfs - { - lhs = r_cond_feat_protocolwlan; - rhs = r_cond_firstboot_or_deeprfs_or_normalrfs; - } - - -// --------------------------------------------------------------------------- // r_dlldata_activitymonitor_timeout // --------------------------------------------------------------------------- // diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmcmdlists/data/noncriticalswpcmdlists.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/ssmcmdlists/data/noncriticalswpcmdlists.rss Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,431 @@ +/* +* 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: +* Command lists for the noncritical phase SWP: +* - non-critical phase Started +* +*/ + +#include +#include + +#include "ssmswp.hrh" +#include "ssmdlldatadefs.rh" + +// Identify command list type +UID2 KUidSsmCommandListResourceFile + +// --------------------------------------------------------------------------- +// r_entry_point +// This must be the first resource +// --------------------------------------------------------------------------- +// +RESOURCE SSM_COMMAND_LIST_ROOT r_entry_point + { + command_list_mapping = r_map; + } + +// --------------------------------------------------------------------------- +// r_map +// Mapping of command list ids to resource ids. +// --------------------------------------------------------------------------- +// +RESOURCE SSM_COMMAND_LIST_MAPPING r_map + { + mappings = + { + SSM_COMMANDLISTID_TO_RESOURCEID + { + command_list_id = ESsmNonCriticalPhaseStarted; + resource_id = r_noncriticalphase_commands; + } + }; + } + +// =========================================================================== +// Command lists in alphabetical order +// =========================================================================== +// + +// --------------------------------------------------------------------------- +// r_started_commands +// --------------------------------------------------------------------------- +// +RESOURCE SSM_COMMAND_LIST r_noncriticalphase_commands + { + commands = + { + // prio 0xFFF1 + r_cmd_publishswp, + // prio 0x7EF7 + r_cmd_activitymonitor1, + // prio 0x7EF6 + r_cmd_videocenter, + // prio 0x7EF5 + r_cmd_activitymonitor2, + // prio 0x7EF4 + r_cmd_iaupdatebg, + // prio 0x7EF2 + r_cmd_activitymonitor3, + // prio 0x7EEE + r_cmd_autosync, + // prio 0x7EED + r_cmd_activitymonitor4, + // prio 0x7EEC + r_cmd_mylocationsengine, + //prio 0x7EEA + r_cmd_activitymonitor5, + //prio 0x7EE9 + r_cmd_conversationserver, //SBSA-7YZGCQ + //prio 0x7EE8 + r_cmd_activitymonitor6, + //prio 0x7EE7 + r_cmd_msgnotifier //SBSA-82ZBMC +#ifdef FF_ATT_ADDRESS_BK + //prio 0x7EE6 + ,r_cmd_activitymonitor7, + //prio 0x7EE5 + r_cmd_aab +#endif +#ifdef FF_SEARCH_SW + //prio 0x7EE4 + ,r_cmd_activitymonitor8, + //prio 0x7EE3 + r_cmd_searchsw //SLAR-832C9T +#endif //FF_SEARCH_SW +#ifdef FF_EMAIL_FRAMEWORK + //prio 0x7EE2 + ,r_cmd_activitymonitor9, + //prio 0x7EE1 + r_cmd_nmailagent //MBEN-83CFQE +#endif //FF_EMAIL_FRAMEWORK + }; + } + +// =========================================================================== +// Command items in alphabetical order +// =========================================================================== +// + +// ----------------------------------------------------------------------------- +// r_cmd_aab +// ----------------------------------------------------------------------------- +// +#ifdef FF_ATT_ADDRESS_BK +RESOURCE SSM_START_APP_INFO r_cmd_aab + { + priority = 0x7EE5; + name = "z:\\sys\\bin\\AABPhonebookapp.exe"; + retries = 2; + background = 1; // To background + monitor_info = r_mon_3_restarts_ignore; + } +#endif + +// --------------------------------------------------------------------------- +// r_cmd_activitymonitor1 +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_activitymonitor1 + { + priority = 0x7EF7; + severity = ECmdCriticalSeverity; + execution_behaviour = ESsmWaitForSignal; + dllname = "ssmactivitycmd.dll"; + ordinal = 1; // SsmActivityCmdNewL + retries = 2; + dll_data = r_dlldata_activitymonitor_timeout; + } + +// --------------------------------------------------------------------------- +// r_cmd_activitymonitor2 +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_activitymonitor2 + { + priority = 0x7EF5; + severity = ECmdCriticalSeverity; + execution_behaviour = ESsmWaitForSignal; + dllname = "ssmactivitycmd.dll"; + ordinal = 1; // SsmActivityCmdNewL + retries = 2; + dll_data = r_dlldata_activitymonitor_timeout; + } + +// --------------------------------------------------------------------------- +// r_cmd_activitymonitor3 +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_activitymonitor3 + { + priority = 0x7EF2; + severity = ECmdCriticalSeverity; + execution_behaviour = ESsmWaitForSignal; + dllname = "ssmactivitycmd.dll"; + ordinal = 1; // SsmActivityCmdNewL + retries = 2; + dll_data = r_dlldata_activitymonitor_timeout; + } + +// --------------------------------------------------------------------------- +// r_cmd_activitymonitor4 +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_activitymonitor4 + { + priority = 0x7EED; + severity = ECmdCriticalSeverity; + execution_behaviour = ESsmWaitForSignal; + dllname = "ssmactivitycmd.dll"; + ordinal = 1; // SsmActivityCmdNewL + retries = 2; + dll_data = r_dlldata_activitymonitor_timeout; + } + +// --------------------------------------------------------------------------- +// r_cmd_activitymonitor5 +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_activitymonitor5 + { + priority = 0x7EEA; + severity = ECmdCriticalSeverity; + execution_behaviour = ESsmWaitForSignal; + dllname = "ssmactivitycmd.dll"; + ordinal = 1; // SsmActivityCmdNewL + retries = 2; + dll_data = r_dlldata_activitymonitor_timeout; + } + +// --------------------------------------------------------------------------- +// r_cmd_activitymonitor6 +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_activitymonitor6 + { + priority = 0x7EE8; + severity = ECmdCriticalSeverity; + execution_behaviour = ESsmWaitForSignal; + dllname = "ssmactivitycmd.dll"; + ordinal = 1; // SsmActivityCmdNewL + retries = 2; + dll_data = r_dlldata_activitymonitor_timeout; + } + +// --------------------------------------------------------------------------- +// r_cmd_activitymonitor7 +// --------------------------------------------------------------------------- +// +#ifdef FF_ATT_ADDRESS_BK +RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_activitymonitor7 + { + priority = 0x7EE6; + severity = ECmdCriticalSeverity; + execution_behaviour = ESsmWaitForSignal; + dllname = "ssmactivitycmd.dll"; + ordinal = 1; // SsmActivityCmdNewL + retries = 2; + dll_data = r_dlldata_activitymonitor_timeout; + } +#endif + +// --------------------------------------------------------------------------- +// r_cmd_activitymonitor8 +// --------------------------------------------------------------------------- +// +#ifdef FF_SEARCH_SW +RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_activitymonitor8 + { + 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_activitymonitor9 +// --------------------------------------------------------------------------- +// +#ifdef FF_EMAIL_FRAMEWORK +RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_activitymonitor9 + { + 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_autosync +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_autosync + { + priority = 0x7EEE; + execution_behaviour = ESsmFireAndForget; + retries = 3; + name = "cctautosync.exe"; + } + +// --------------------------------------------------------------------------- +// r_cmd_conversationserver +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_conversationserver + { + priority = 0x7EE9; + name = "csserver.exe"; + execution_behaviour = ESsmWaitForSignal; + } + + +// --------------------------------------------------------------------------- +// r_cmd_msgnotifier +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_APP_INFO r_cmd_msgnotifier + { + priority = 0x7EE7; + name = "msgnotifier.exe"; + execution_behaviour = ESsmFireAndForget; + retries = 3; + } + +// --------------------------------------------------------------------------- +// r_cmd_mylocationsengine +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_mylocationsengine + { + priority = 0x7EEC; + name = "z:\\sys\\bin\\mylocationsengine.exe"; + execution_behaviour = ESsmFireAndForget; + } + +// --------------------------------------------------------------------------- +// r_cmd_publishswp +// --------------------------------------------------------------------------- +// +RESOURCE SSM_PUBLISH_SYSTEM_WIDE_PROPERTY r_cmd_publishswp + { + priority = 0xFFF1; + severity = ECmdCriticalSeverity; + } + +// --------------------------------------------------------------------------- +// 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_iaupdatebg +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_iaupdatebg + { + priority = 0x7EF4; + name = "iaupdatebg.exe"; + execution_behaviour = ESsmWaitForSignal; + timeout = 10000; + conditional_information = r_cond_feat_iadv2; + } + +//--------------------------------------------------------------------------- +// 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_videocenter +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_videocenter + { + priority = 0x7EF6; + name = "cseschedulerserver.exe"; + execution_behaviour = ESsmWaitForSignal; + timeout = 10000; + } + +// =========================================================================== +// DLL data items in alphabetical order +// =========================================================================== +// + +// --------------------------------------------------------------------------- +// r_dlldata_activitymonitor_timeout +// --------------------------------------------------------------------------- +// +RESOURCE CMD_PARAM_TIMEOUT r_dlldata_activitymonitor_timeout + { + timeout = 2; + } + +// --------------------------------------------------------------------------- +// r_cond_feat_iadv2 +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_FEATURE_VALUE r_cond_feat_iadv2 + { + feature_id = KFeatureIdFfIaupdatePhase2; + } + +// monitoring.rss contains resource definitions, so it may not be included +// before entry point. +#include "monitoring.rss" diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmcmdlists/data/securitycheckcmdlist.rss --- a/sysstatemgmt/ssmcmdlists/data/securitycheckcmdlist.rss Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmcmdlists/data/securitycheckcmdlist.rss Thu Jun 24 11:22:10 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" @@ -69,19 +69,16 @@ r_cmd_publishstate, // prio 0xFFF1 r_cmd_psstate, // prio 0xFFF0 // prio 0xFFE7 - r_cmd_menu, - r_cmd_idle, - // prio 0xFFE6 + r_cmd_hbthemeserver, + // prio 0xFFE6 r_cmd_multiwaitforever1, // prio 0xFFE3 r_cmd_startup, r_cmd_phone, - r_cmd_nitz, - // prio 0xFFE2 + r_cmd_clockserver, r_cmd_multiwaitforever2, // prio 0xFFDF - r_cmd_touchscreen, - r_cmd_touchplg, + r_cmd_idle, // prio 0xFFDE r_cmd_multiwaitforever3, // prio 0xFFD8 @@ -97,7 +94,17 @@ // Command items in alphabetical order // =========================================================================== // - +// ----------------------------------------------------------------------------- +// r_cmd_clockserver +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_clockserver + { + priority = 0xFFE3; + name = "clockserver.exe"; + execution_behaviour = ESsmDeferredWaitForSignal; + } + // --------------------------------------------------------------------------- // r_cmd_createswp_simstatus // --------------------------------------------------------------------------- @@ -109,32 +116,32 @@ key = 0x00000031; // KPSSimStatus filename = "ssm.swp.policy.simstatus.dll"; } - + +// --------------------------------------------------------------------------- +// r_cmd_hbthemeserver +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_hbthemeserver + { + priority = 0xFFE7; + name = "z:\\sys\\bin\\hbthemeserver.exe"; + execution_behaviour = ESsmDeferredWaitForSignal; + monitor_info = r_mon_100_restarts_reset; + } + // --------------------------------------------------------------------------- // r_cmd_idle // --------------------------------------------------------------------------- // -RESOURCE SSM_START_PROCESS_INFO r_cmd_idle +RESOURCE SSM_START_APP_INFO r_cmd_idle { - priority = 0xFFE7; - name = "z:\\sys\\bin\\ailaunch.exe"; + priority = 0xFFDF; + name = "z:\\sys\\bin\\hsapplication.exe"; execution_behaviour = ESsmDeferredWaitForSignal; monitor_info = r_mon_max_restarts_ignore; } // --------------------------------------------------------------------------- -// r_cmd_menu -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_APP_INFO r_cmd_menu - { - priority = 0xFFE7; - name = "z:\\sys\\bin\\matrixmenu.exe"; - execution_behaviour = ESsmDeferredWaitForSignal; - background = 1; // To background - } - -// --------------------------------------------------------------------------- // r_cmd_multiwaitforever1 // --------------------------------------------------------------------------- // @@ -162,18 +169,6 @@ } // --------------------------------------------------------------------------- -// r_cmd_nitz -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_nitz - { - priority = 0xFFE3; - name = "z:\\sys\\bin\\clockserver.exe"; - execution_behaviour = ESsmFireAndForget; // -- does not call Rendezvous() -- - monitor_info = r_mon_3_restarts_ignore; - } - -// --------------------------------------------------------------------------- // r_cmd_phone // --------------------------------------------------------------------------- // @@ -181,8 +176,7 @@ { priority = 0xFFE3; name = "z:\\sys\\bin\\phoneui.exe"; - execution_behaviour = ESsmDeferredWaitForSignal; - severity = ECmdCriticalSeverity; + execution_behaviour = ESsmFireAndForget; retries = 2; background = 1; // To background monitor_info = r_mon_reset; @@ -265,32 +259,6 @@ retries = 2; } -// --------------------------------------------------------------------------- -// r_cmd_touchplg -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_touchplg - { - priority = 0xFFDF; - severity = ECmdCriticalSeverity; - dllname = "tsccustcmds.dll"; - ordinal = 1; - retries = 2; - execution_behaviour = ESsmDeferredWaitForSignal; - conditional_information = r_cond_firstboot_and_tscinstartup; - } - -// --------------------------------------------------------------------------- -// r_cmd_touchscreen -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_touchscreen - { - priority = 0xFFDF; - name = "z:\\sys\\bin\\touchscreencalib.exe"; - execution_behaviour = ESsmDeferredWaitForSignal; - conditional_information = r_cond_firstboot_and_tscinstartup; - } // =========================================================================== // DLL data items in alphabetical order diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmcmdlists/data/shutdowncmdlists.rss --- a/sysstatemgmt/ssmcmdlists/data/shutdowncmdlists.rss Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmcmdlists/data/shutdowncmdlists.rss Thu Jun 24 11:22:10 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" @@ -214,6 +214,7 @@ { priority = 0xFFF1; severity = ECmdCriticalSeverity; + direction = 1; // ETraverseChildrenFirst, Transition children first for graceful shutdown. retries = 2; } diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmcmdlists/data/uiservicescmdlist.rss --- a/sysstatemgmt/ssmcmdlists/data/uiservicescmdlist.rss Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmcmdlists/data/uiservicescmdlist.rss Thu Jun 24 11:22:10 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" @@ -12,7 +12,7 @@ * Contributors: * * Description: -* Command list for the UI-Services startup state (UI shell version). +* Command list for the UI-Services startup state (UI shell version) for minimal startup. * */ @@ -78,25 +78,19 @@ // prio 0xFFC7 r_cmd_initclkeys, r_cmd_initramdrive, - // prio 0xFFA7 - r_cmd_splash, - // prio 0xFF97 - r_cmd_tzsrv, - r_cmd_cntsrv, - r_cmd_randsrv, - r_cmd_mediator, - r_cmd_hwrmsrv, - r_cmd_rtc, - // prio 0xFF96 - tzsrv, randsrv, cntsrv, mediator, hwrmsrv + 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, // prio 0xFF87 - r_cmd_dbrecovery, r_cmd_accsrv, r_cmd_selectlanguage, // Select UI language to use - // prio 0xFF86 - dbrecovery, accsrv, seleclanguage + // prio 0xFF86 - accsrv, seleclanguage (dbrecovery has been moved to extended startup list but uses the same multiplewait command)) r_cmd_multiwaitforever2, // prio 0xFF85 r_cmd_loadlocalesup, // Observes changes in locale data + r_cmd_loadcollation, // Observes changes in Collation setting + r_cmd_loadregion, // Observes changes in Region setting + r_cmd_loaduilanguage, // Observes changes in UI Language setting // prio 0xFF79 r_cmd_aknstart, // UI Framework // prio 0xFF77 @@ -148,57 +142,6 @@ } // --------------------------------------------------------------------------- -// r_cmd_cntsrv -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_cntsrv - { - priority = 0xFF97; - name = "Z:\\sys\\bin\\cntsrv.exe"; - args = "-nontransient"; - severity = ECmdCriticalSeverity; - execution_behaviour = ESsmDeferredWaitForSignal; - } - -// --------------------------------------------------------------------------- -// r_cmd_dbrecovery -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_dbrecovery - { - priority = 0xFF87; - name = "z:\\sys\\bin\\dbrecovery.exe"; - execution_behaviour = ESsmDeferredWaitForSignal; - } - -// --------------------------------------------------------------------------- -// r_cmd_hwrmsrv -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_hwrmsrv - { - priority = 0xFF97; - name = "Z:\\sys\\bin\\hwrmserver.exe"; - severity = ECmdCriticalSeverity; - execution_behaviour = ESsmDeferredWaitForSignal; - retries = 2; - } - -// --------------------------------------------------------------------------- -// r_cmd_mediator -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_mediator - { - priority = 0xFF97; - name = "Z:\\sys\\bin\\mediatorserver.exe"; - severity = ECmdCriticalSeverity; - execution_behaviour = ESsmDeferredWaitForSignal; - monitor_info = r_mon_3_restarts_reset; - conditional_information = r_cond_feat_mediator; - } - -// --------------------------------------------------------------------------- // r_cmd_initclkeys // --------------------------------------------------------------------------- // @@ -240,6 +183,39 @@ } // --------------------------------------------------------------------------- +// r_cmd_loadcollation +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_SSM_UTILITY_PLUGIN r_cmd_loadcollation + { + priority = 0xFF85; + filename = "ssmlocaleobserversup.dll"; + ordinal = 2; + } + +// --------------------------------------------------------------------------- +// r_cmd_loadregion +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_SSM_UTILITY_PLUGIN r_cmd_loadregion + { + priority = 0xFF85; + filename = "ssmlocaleobserversup.dll"; + ordinal = 3; + } + +// --------------------------------------------------------------------------- +// r_cmd_loaduilanguage +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_SSM_UTILITY_PLUGIN r_cmd_loaduilanguage + { + priority = 0xFF85; + filename = "ssmlocaleobserversup.dll"; + ordinal = 4; + } + +// --------------------------------------------------------------------------- // r_cmd_loadpowersup // --------------------------------------------------------------------------- // @@ -294,19 +270,6 @@ } // --------------------------------------------------------------------------- -// r_cmd_randsrv -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_randsrv - { - priority = 0xFF97; - name = "Z:\\sys\\bin\\randsvr.exe"; - severity = ECmdCriticalSeverity; - execution_behaviour = ESsmWaitForSignal; - retries = 2; - } - -// --------------------------------------------------------------------------- // r_cmd_rfsdeep // --------------------------------------------------------------------------- // @@ -401,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 // --------------------------------------------------------------------------- // @@ -424,18 +377,6 @@ retries = 2; } -// --------------------------------------------------------------------------- -// r_cmd_tzsrv -// --------------------------------------------------------------------------- -// -RESOURCE SSM_START_PROCESS_INFO r_cmd_tzsrv - { - priority = 0xFF97; - name = "Z:\\sys\\bin\\tzserver.exe"; - severity = ECmdCriticalSeverity; - execution_behaviour = ESsmDeferredWaitForSignal; - } - // =========================================================================== // DLL data items in alphabetical order // =========================================================================== @@ -489,14 +430,6 @@ value = 102; // ENormalRFSReset } -// --------------------------------------------------------------------------- -// r_cond_feat_mediator -// --------------------------------------------------------------------------- -// -RESOURCE SSM_CND_FEATURE_VALUE r_cond_feat_mediator - { - feature_id = KFeatureIdMediator; - } // monitoring.rss contains resource definitions, so it may not be included // before entry point. diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmcmdlists/data/uiservicescmdlist_ext.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/ssmcmdlists/data/uiservicescmdlist_ext.rss Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,159 @@ +/* +* 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: +* Command list for the UI-Services startup state (UI shell version) for extended startup. +* +*/ + +#include +#include + +#include "ssmsubstateext.hrh" +#include "ssmdlldatadefs.rh" + +// Identify command list type +UID2 KUidSsmCommandListResourceFile + +// --------------------------------------------------------------------------- +// r_entry_point +// This must be the first resource +// --------------------------------------------------------------------------- +// +RESOURCE SSM_COMMAND_LIST_ROOT r_entry_point + { + command_list_mapping = r_map; + } + +// --------------------------------------------------------------------------- +// r_map +// Mapping of command list ids to resource ids. +// --------------------------------------------------------------------------- +// +RESOURCE SSM_COMMAND_LIST_MAPPING r_map + { + mappings = + { + SSM_COMMANDLISTID_TO_RESOURCEID + { + command_list_id = ESsmStateStartingUiServices; + resource_id = r_cmds; + } + }; + } + +// =========================================================================== +// Command lists in alphabetical order +// =========================================================================== +// + +// --------------------------------------------------------------------------- +// r_cmds +// --------------------------------------------------------------------------- +// +RESOURCE SSM_COMMAND_LIST r_cmds + { + commands = + { + //prio 0xFFA7 + r_cmd_splash, + // prio 0xFF99 + r_cmd_tzsrv, + r_cmd_mediator, + r_cmd_hwrmsrv, + // prio 0xFF89 + r_cmd_dbrecovery + }; + } + +// =========================================================================== +// Command items in alphabetical order +// =========================================================================== +// + +// --------------------------------------------------------------------------- +// r_cmd_dbrecovery +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_dbrecovery + { + priority = 0xFF89; + name = "z:\\sys\\bin\\dbrecovery.exe"; + execution_behaviour = ESsmDeferredWaitForSignal; + } + +// --------------------------------------------------------------------------- +// r_cmd_hwrmsrv +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_hwrmsrv + { + priority = 0xFF99; + name = "Z:\\sys\\bin\\hwrmserver.exe"; + severity = ECmdCriticalSeverity; + execution_behaviour = ESsmDeferredWaitForSignal; + retries = 2; + } + +// --------------------------------------------------------------------------- +// r_cmd_mediator +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_mediator + { + priority = 0xFF99; + name = "Z:\\sys\\bin\\mediatorserver.exe"; + severity = ECmdCriticalSeverity; + execution_behaviour = ESsmDeferredWaitForSignal; + monitor_info = r_mon_3_restarts_reset; + 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 +// --------------------------------------------------------------------------- +// +RESOURCE SSM_START_PROCESS_INFO r_cmd_tzsrv + { + priority = 0xFF99; + name = "Z:\\sys\\bin\\tzserver.exe"; + severity = ECmdCriticalSeverity; + execution_behaviour = ESsmDeferredWaitForSignal; + } + +// =========================================================================== +// DLL data items in alphabetical order +// =========================================================================== +// + +// --------------------------------------------------------------------------- +// r_cond_feat_mediator +// --------------------------------------------------------------------------- +// +RESOURCE SSM_CND_FEATURE_VALUE r_cond_feat_mediator + { + feature_id = KFeatureIdMediator; + } +// monitoring.rss contains resource definitions, so it may not be included +// before entry point. +#include "monitoring.rss" diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmcmdlists/data/usbwatcher_hw.rss --- a/sysstatemgmt/ssmcmdlists/data/usbwatcher_hw.rss Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmcmdlists/data/usbwatcher_hw.rss Thu Jun 24 11:22:10 2010 +0100 @@ -74,7 +74,7 @@ { #ifdef RD_USB_CHARGING r_cmd_usbwatcher -#endif RD_USB_CHARGING +#endif //RD_USB_CHARGING }; } diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmcmdlists/group/ssmcmdlists.mmp --- a/sysstatemgmt/ssmcmdlists/group/ssmcmdlists.mmp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmcmdlists/group/ssmcmdlists.mmp Thu Jun 24 11:22:10 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" @@ -29,7 +29,7 @@ TARGETPATH /private/2000d75b/startup/0 // Private directory of sysstatemgr.exe END -START RESOURCE uiservicescmdlist.rss // Starting UI-Services startup state +START RESOURCE uiservicescmdlist.rss // Starting UI-Services startup state for minimal bootup TARGETPATH /private/2000d75b/startup/0 // Private directory of sysstatemgr.exe END @@ -49,7 +49,7 @@ TARGETPATH /private/2000d75b/startup/0 // Private directory of sysstatemgr.exe END -START RESOURCE noncriticalcmdlist.rss // Non-critical startup state +START RESOURCE noncriticalcmdlist.rss // Non-critical startup state for minimal bootup TARGETPATH /private/2000d75b/startup/0 // Private directory of sysstatemgr.exe END @@ -57,6 +57,14 @@ TARGETPATH /private/2000d75b/startup/0 // Private directory of sysstatemgr.exe END +START RESOURCE noncriticalcmdlist_ext.rss // Non-critical startup state for extended bootup +TARGETPATH /private/2000d75b/startup/0_ext // Private directory of sysstatemgr.exe +END + +START RESOURCE uiservicescmdlist_ext.rss // Starting UI-Services startup state for extended bootup +TARGETPATH /private/2000d75b/startup/0_ext // Private directory of sysstatemgr.exe +END + // Command lists specific to HW START RESOURCE wserv_hw.rss // Window server command list (HW version) @@ -99,6 +107,10 @@ TARGETPATH /private/2000d75b/swpui // Private directory of sysstatemgr.exe END +START RESOURCE noncriticalswpcmdlists.rss // noncritical phase SWP +TARGETPATH /private/2000d75b/swpnoncritical // Private directory of sysstatemgr.exe +END + USERINCLUDE ../inc USERINCLUDE ../../inc diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmcmdlists/rom/ssmcmdlists.iby --- a/sysstatemgmt/ssmcmdlists/rom/ssmcmdlists.iby Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmcmdlists/rom/ssmcmdlists.iby Thu Jun 24 11:22:10 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" @@ -27,6 +27,8 @@ data=DATAZ_\private\2000D75B\startup\0\securitycheckcmdlist.rsc \private\2000D75B\startup\0\securitycheckcmdlist.rsc data=DATAZ_\private\2000D75B\startup\0\noncriticalcmdlist.rsc \private\2000D75B\startup\0\noncriticalcmdlist.rsc data=DATAZ_\private\2000D75B\startup\0\emergencycallsonlycmdlist.rsc \private\2000D75B\startup\0\emergencycallsonlycmdlist.rsc +data=DATAZ_\private\2000D75B\startup\0_ext\uiservicescmdlist_ext.rsc \private\2000D75B\startup\0\uiservicescmdlist_ext.rsc +data=DATAZ_\private\2000D75B\startup\0_ext\noncriticalcmdlist_ext.rsc \private\2000D75B\startup\0\noncriticalcmdlist_ext.rsc data=DATAZ_\private\2000D75B\hw\wserv_hw.rsc \private\2000D75B\startup\0\wserv.rsc data=DATAZ_\private\2000D75B\hw\noncriticalcmdlist_hw.rsc \private\2000D75B\startup\0\noncriticalcmdlist_hw.rsc data=DATAZ_\private\2000D75B\hw\usbwatcher_hw.rsc \private\2000D75B\startup\0\usbwatcher.rsc @@ -34,5 +36,6 @@ data=DATAZ_\private\2000D75B\shutdown\shutdowncmdlists.rsc \private\2000D75B\shutdown\shutdowncmdlists.rsc data=DATAZ_\private\2000D75B\rfstatusswpcmdlist\rfswpcmdlists.rsc \private\2000D75B\rfstatusswpcmdlist\rfswpcmdlists.rsc data=DATAZ_\private\2000D75B\swpui\uiswpcmdlists.rsc \private\2000D75B\swpui\uiswpcmdlists.rsc +data=DATAZ_\private\2000D75B\swpnoncritical\noncriticalswpcmdlists.rsc \private\2000D75B\swpnoncritical\noncriticalswpcmdlists.rsc #endif // SSMCMDLISTS_IBY diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmcustcmds/ssmsystemcmds/src/ssminitpskeys.cpp --- a/sysstatemgmt/ssmcustcmds/ssmsystemcmds/src/ssminitpskeys.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmcustcmds/ssmsystemcmds/src/ssminitpskeys.cpp Thu Jun 24 11:22:10 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" @@ -20,6 +20,7 @@ #include "ssmmapperutility.h" #include "ssmmapperutilityinternalpskeys.h" #include "ssmcustcmdsprivatepskeys.h" +#include "ssmlocalepskeys.h" #include "trace.h" #include @@ -273,6 +274,39 @@ KReadDeviceDataPolicy, KWriteDeviceDataPolicy ); SetL( KPSStarterUid, KRTCPropertyKey, 0 ); + + //Used for observing the Collation code change in CSsmCollationObserver + INFO( "KPSStarterUid::KSSMCollationPSKey" ); + DefineL( KPSStarterUid, + KSSMCollationPSKey, + KReadDeviceDataPolicy, + KWriteDeviceDataPolicy ); + SetL( KPSStarterUid, KSSMCollationPSKey, 0 ); + + //Used for observing the Region code change in CSsmRegionObserver + INFO( "KPSStarterUid::KSSMRegionPSKey" ); + DefineL( KPSStarterUid, + KSSMRegionPSKey, + KReadDeviceDataPolicy, + KWriteDeviceDataPolicy ); + SetL( KPSStarterUid, KSSMRegionPSKey, 0 ); + + + INFO( "KPSStarterUid::KSSMUiLanguagePSKey " ); + DefineL( KPSStarterUid, + KSSMUILanguagePSKey , + KReadDeviceDataPolicy, + 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 ); diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmmapperutility/inc/ssmmapperutility.h --- a/sysstatemgmt/ssmmapperutility/inc/ssmmapperutility.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmmapperutility/inc/ssmmapperutility.h Thu Jun 24 11:22:10 2010 +0100 @@ -105,7 +105,7 @@ * @aMessage Client message * @return ETrue if capabilities ok, otherwise EFalse */ - virtual TBool CheckCaps( const RMessagePtr2& aMessage ); + IMPORT_C virtual TBool CheckCaps( const RMessagePtr2& aMessage ); /** * First phase constructor. Exported for diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmpolicyplugins/group/bld.inf --- a/sysstatemgmt/ssmpolicyplugins/group/bld.inf Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmpolicyplugins/group/bld.inf Thu Jun 24 11:22:10 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" @@ -37,3 +37,5 @@ #include "../ssmfailpolicy/group/bld.inf" #include "../ssmshutdownpolicy/group/bld.inf" #include "../ssmuiswppolicy/group/bld.inf" +#include "../ssmnoncriticalswppolicy/group/bld.inf" + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmpolicyplugins/inc/ssmswp.hrh --- a/sysstatemgmt/ssmpolicyplugins/inc/ssmswp.hrh Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmpolicyplugins/inc/ssmswp.hrh Thu Jun 24 11:22:10 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" @@ -32,6 +32,19 @@ }; /** +* Startup NonCritical phase SWP. +* +* These identifiers are also used as command list ids to find the correct +* command list among all command lists in the system. +*/ +#define SWP_UID_SSM_NONCRITICAL_PHASE 0x2002EA5B + +enum TSwpStartupNonCriticalPhase + { + ESsmNonCriticalPhaseStarted = 0xb1 + }; + +/** * System-wide property for RF status. * * These identifiers are also used as command list ids to find the correct diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmpolicyplugins/rom/ssmpolicyplugins.iby --- a/sysstatemgmt/ssmpolicyplugins/rom/ssmpolicyplugins.iby Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmpolicyplugins/rom/ssmpolicyplugins.iby Thu Jun 24 11:22:10 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" @@ -26,5 +26,6 @@ file=ABI_DIR\BUILD_DIR\ssm.state.policy.0002.dll SHARED_LIB_DIR\ssm.state.policy.0002.dll file=ABI_DIR\BUILD_DIR\ssm.state.policy.0003.dll SHARED_LIB_DIR\ssm.state.policy.0003.dll file=ABI_DIR\BUILD_DIR\ssmuiswppolicy.dll SHARED_LIB_DIR\ssmuiswppolicy.dll +file=ABI_DIR\BUILD_DIR\ssmnoncriticalswppolicy.dll SHARED_LIB_DIR\ssmnoncriticalswppolicy.dll #endif // SSMPOLICYPLUGINS_IBY diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmpolicyplugins/ssmnoncriticalswppolicy/bwins/ssmnoncriticalswppolicyu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/ssmpolicyplugins/ssmnoncriticalswppolicy/bwins/ssmnoncriticalswppolicyu.def Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,3 @@ +EXPORTS + ?NewL@CSsmNonCriticalSwpPolicy@@SAPAVMSsmSwpPolicy@@XZ @ 1 NONAME ; class MSsmSwpPolicy * CSsmNonCriticalSwpPolicy::NewL(void) + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmpolicyplugins/ssmnoncriticalswppolicy/eabi/ssmnoncriticalswppolicyu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/ssmpolicyplugins/ssmnoncriticalswppolicy/eabi/ssmnoncriticalswppolicyu.def Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,3 @@ +EXPORTS + _ZN24CSsmNonCriticalSwpPolicy4NewLEv @ 1 NONAME + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmpolicyplugins/ssmnoncriticalswppolicy/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/ssmpolicyplugins/ssmnoncriticalswppolicy/group/bld.inf Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,28 @@ +/* +* 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: +* Build information file for the ssmnoncriticalswppolicy project. +* +*/ + +#include + +PRJ_PLATFORMS +DEFAULT + +PRJ_EXPORTS + +PRJ_MMPFILES +ssmnoncriticalswppolicy.mmp + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmpolicyplugins/ssmnoncriticalswppolicy/group/ssmnoncriticalswppolicy.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/ssmpolicyplugins/ssmnoncriticalswppolicy/group/ssmnoncriticalswppolicy.mmp Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,55 @@ +/* +* 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: +* Project definition file for the ssmnoncriticalswppolicy project. +* +*/ + +#include + +TARGET ssmnoncriticalswppolicy.dll +TARGETTYPE dll +UID 0x2000D765 0x2002EA59 + +CAPABILITY PowerMgmt ReadDeviceData WriteDeviceData ProtServ DiskAdmin SwEvent +VENDORID VID_DEFAULT + +SOURCEPATH ../src +SOURCE ssmnoncriticalswppolicy.cpp + +USERINCLUDE ../inc +USERINCLUDE ../../inc +USERINCLUDE ../../ssmpolicybase/inc +USERINCLUDE ../../ssmswppolicybase/inc +USERINCLUDE ../../../inc + +OS_LAYER_SYSTEMINCLUDE + +LIBRARY euser.lib +LIBRARY ssmcmd.lib +LIBRARY ssmcmn.lib +LIBRARY ssmpolicybase.lib +LIBRARY ssmswppolicybase.lib + +// >>> uncomment to enable function-level tracing +// MACRO __SSM_FUNC_TRACE__ +// <<< uncomment to enable function-level tracing + +// >>> uncomment to direct trace output to file +// MACRO __SSM_TRACE_INTO_FILE__ +// LIBRARY flogger.lib +// <<< uncomment to direct trace output to file + +SMPSAFE + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmpolicyplugins/ssmnoncriticalswppolicy/inc/ssmnoncriticalswppolicy.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/ssmpolicyplugins/ssmnoncriticalswppolicy/inc/ssmnoncriticalswppolicy.h Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,65 @@ +/* +* 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: Declaration of CSsmNonCriticalSwpPolicy class. +* +*/ + +#ifndef SSMNONCRITICALSWPPOLICY_H +#define SSMNONCRITICALSWPPOLICY_H + +#include "ssmswppolicybase.h" + +/** + * Policy plugin for noncritical phase SWP. + */ +NONSHARABLE_CLASS( CSsmNonCriticalSwpPolicy ) : public CSsmSwpPolicyBase + { + +public: + + /** + * Constructs a CSsmNonCriticalSwpPolicy object. + * + * @return The new object + */ + IMPORT_C static MSsmSwpPolicy* NewL(); + + /** + * Destructor. + */ + virtual ~CSsmNonCriticalSwpPolicy(); + +private: // From CSsmPolicyBase + + void GetCommandListPathL( TDes& aCmdListPath ); + +private: // From MSsmSwpPolicy + + /** + * @see MSsmSwpPolicy. + */ + TResponse TransitionAllowed( + const TSsmSwp& aSwp, + const RMessagePtr2& aMessage ); + +private: + + /** + * First phase constructor. + */ + CSsmNonCriticalSwpPolicy(); + + }; + +#endif // SSMNONCRITICALSWPPOLICY_H diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmpolicyplugins/ssmnoncriticalswppolicy/src/ssmnoncriticalswppolicy.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/ssmpolicyplugins/ssmnoncriticalswppolicy/src/ssmnoncriticalswppolicy.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,117 @@ +/* +* 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: Implementation of CSsmNonCriticalSwpPolicy class. +* +*/ + +#include +#include + +#include "ssmnoncriticalswppolicy.h" +#include "ssmswp.hrh" +#include "ssmmapperutility.h" +#include "trace.h" +#include "ssmsubstateext.hrh" + +/** +* SWP noncritical phase policy resource file path format : "\private\\swpnoncritical\" +*/ +_LIT( KCommandListPath, "Z:\\private\\2000D75B\\swpnoncritical\\" ); + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CSsmNonCriticalSwpPolicy::NewL +// --------------------------------------------------------------------------- +// +EXPORT_C MSsmSwpPolicy* CSsmNonCriticalSwpPolicy::NewL() + { + FUNC_LOG; + + CSsmNonCriticalSwpPolicy* self = new( ELeave ) CSsmNonCriticalSwpPolicy; + CleanupStack::PushL( self ); + self->BaseConstructL(); + CleanupStack::Pop( self ); + return self; + } + + +// --------------------------------------------------------------------------- +// CSsmNonCriticalSwpPolicy::~CSsmNonCriticalSwpPolicy +// --------------------------------------------------------------------------- +// +CSsmNonCriticalSwpPolicy::~CSsmNonCriticalSwpPolicy() + { + FUNC_LOG; + } + + +// --------------------------------------------------------------------------- +// CSsmNonCriticalSwpPolicy::GetCommandListPathL +// --------------------------------------------------------------------------- +// +void CSsmNonCriticalSwpPolicy::GetCommandListPathL( TDes& aCmdListPath ) + { + FUNC_LOG; + + aCmdListPath = KCommandListPath; + iUtil->GetCommandListPath( aCmdListPath ); + } + + +// --------------------------------------------------------------------------- +// CSsmNonCriticalSwpPolicy::TransitionAllowed +// --------------------------------------------------------------------------- +// +MSsmSwpPolicy::TResponse CSsmNonCriticalSwpPolicy::TransitionAllowed( + const TSsmSwp& aSwp, + const RMessagePtr2& aMessage ) + { + FUNC_LOG; + INFO_2( "Requested SWP transition: 0x%08x::0x%08x", aSwp.Key(), aSwp.Value() ); + + TResponse response = ENotAllowed; + if ( iUtil->CheckCaps( aMessage ) ) + { + TSsmState currentState; + const TInt errorCode = GetCurrentState(currentState); + ERROR( errorCode, "Failed to get current state" ); + + // this SwP transition would be allowed only once per boot(during the system startup). + if ((KErrNone == errorCode) && (ESsmStartup == currentState.MainState()) && (aSwp.Value() == ESsmNonCriticalPhaseStarted)) + { + response = EAllowed; + } + else + { + INFO( "Requested SWP transition not allowed" ); + } + } + else + { + INFO( "Capability Check Failed" ); + } + + return response; + } + + +// --------------------------------------------------------------------------- +// CSsmNonCriticalSwpPolicy::CSsmNonCriticalSwpPolicy +// --------------------------------------------------------------------------- +// +CSsmNonCriticalSwpPolicy::CSsmNonCriticalSwpPolicy() + { + FUNC_LOG; + } diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmpolicyplugins/ssmshutdownpolicy/group/ssmshutdownpolicy.mmp --- a/sysstatemgmt/ssmpolicyplugins/ssmshutdownpolicy/group/ssmshutdownpolicy.mmp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmpolicyplugins/ssmshutdownpolicy/group/ssmshutdownpolicy.mmp Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmpolicyplugins/ssmshutdownpolicy/src/ssmshutdownpolicy.cpp --- a/sysstatemgmt/ssmpolicyplugins/ssmshutdownpolicy/src/ssmshutdownpolicy.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmpolicyplugins/ssmshutdownpolicy/src/ssmshutdownpolicy.cpp Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmpolicyplugins/ssmswppolicybase/src/ssmswppolicybase.cpp --- a/sysstatemgmt/ssmpolicyplugins/ssmswppolicybase/src/ssmswppolicybase.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmpolicyplugins/ssmswppolicybase/src/ssmswppolicybase.cpp Thu Jun 24 11:22:10 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" @@ -22,6 +22,7 @@ #include #include #include +#include #include "ssmswppolicybase.h" #include "trace.h" @@ -135,27 +136,30 @@ } else { - RSsmStateManager session; - TInt errorCode = session.Connect(); - ERROR( errorCode, "Failed to connect to RSsmStateManager" ); - if ( errorCode == KErrNone ) - { - if ( ResetLimitReached() ) // Updates the reset count - { - INFO( "SWP transition failed -> Fail" ); - errorCode = session.RequestStateTransition( - TSsmStateTransition( ESsmFail, KSsmAnySubState, 0 ) ); - } - else - { - INFO( "SWP transition failed -> Reset" ); - errorCode = session.RequestStateTransition( - TSsmStateTransition( ESsmShutdown, KSsmAnySubState, - RStarterSession::EUnknownReset ) ); - } + TSsmState currentState; + TInt errorCode = GetCurrentState(currentState); - session.Close(); - } + if ( ((currentState.MainState() != ESsmShutdown) && (currentState.MainState() != ESsmFail)) || KErrNone != errorCode) + { + RSsmStateManager session; + errorCode = session.Connect(); + ERROR( errorCode, "Failed to connect to RSsmStateManager" ); + if ( KErrNone == errorCode ) + { + if ( ResetLimitReached() ) // Updates the reset count + { + INFO_1( "SWP 0x%08x transition failed -> Fail", aSwp.Key() ); + errorCode = session.RequestStateTransition( TSsmStateTransition( ESsmFail, KSsmAnySubState, 0 ) ); + } + else + { + INFO_1( "SWP 0x%08x transition failed -> Reset", aSwp.Key() ); + errorCode = session.RequestStateTransition( + TSsmStateTransition( ESsmShutdown, KSsmAnySubState, RStarterSession::EUnknownReset ) ); + } + session.Close(); + } + } TRequestStatus* status = &aStatus; User::RequestComplete( status, errorCode ); diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/bwins/ssmlocaleobserversupu.def --- a/sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/bwins/ssmlocaleobserversupu.def Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/bwins/ssmlocaleobserversupu.def Thu Jun 24 11:22:10 2010 +0100 @@ -1,3 +1,6 @@ EXPORTS ?NewL@CSsmLocaleObserverSup@@SAPAVMSsmUtility@@XZ @ 1 NONAME ; class MSsmUtility * CSsmLocaleObserverSup::NewL(void) + ?NewL@CSsmCollationObserver@@SAPAVMSsmUtility@@XZ @ 2 NONAME ; class MSsmUtility * CSsmCollationObserver::NewL(void) + ?NewL@CSsmRegionObserver@@SAPAVMSsmUtility@@XZ @ 3 NONAME ; class MSsmUtility * CSsmRegionObserver::NewL(void) + ?NewL@CSsmUiLanguageObserver@@SAPAVMSsmUtility@@XZ @ 4 NONAME ; class MSsmUtility * CSsmUiLanguageObserver::NewL(void) diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/eabi/ssmlocaleobserversupu.def --- a/sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/eabi/ssmlocaleobserversupu.def Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/eabi/ssmlocaleobserversupu.def Thu Jun 24 11:22:10 2010 +0100 @@ -1,3 +1,6 @@ EXPORTS _ZN21CSsmLocaleObserverSup4NewLEv @ 1 NONAME + _ZN18CSsmRegionObserver4NewLEv @ 2 NONAME + _ZN21CSsmCollationObserver4NewLEv @ 3 NONAME + _ZN22CSsmUiLanguageObserver4NewLEv @ 4 NONAME diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/group/ssmlocaleobserversup.mmp --- a/sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/group/ssmlocaleobserversup.mmp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/group/ssmlocaleobserversup.mmp Thu Jun 24 11:22:10 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" @@ -28,6 +28,9 @@ SOURCEPATH ../src SOURCE ssmlocaleobserversup.cpp +SOURCE ssmcollationobserversup.cpp +SOURCE ssmregionobserversup.cpp +SOURCE ssmuilanguageobserversup.cpp USERINCLUDE ../inc USERINCLUDE ../../inc @@ -41,6 +44,8 @@ LIBRARY euser.lib LIBRARY ssmcmn.lib LIBRARY ssmmapperutility.lib +LIBRARY centralrepository.lib + // >>> uncomment to enable function-level tracing // MACRO __SSM_FUNC_TRACE__ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/inc/ssmcollationobserversup.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/inc/ssmcollationobserversup.h Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,91 @@ +/* +* 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: Declaration of CSsmCollationObserver class. +* +*/ + +#ifndef __SSMCOLLATIONOBSERVER_H__ +#define __SSMCOLLATIONOBSERVER_H__ + +#include +#include +#include + +/** +* SSM Utility plugin to observe the Collation code changes and load the new collation +* when it is changed. +*/ +NONSHARABLE_CLASS( CSsmCollationObserver ) : public CActive, public MSsmUtility + { +public: + //From MSsmUtility + void InitializeL(); + void StartL(); + void Release(); + +public: + /** + * Two-phased constructor. + */ + IMPORT_C static MSsmUtility* NewL(); + +protected: + // from base class CActive + + /** + * Implements cancellation of an outstanding request. + */ + void DoCancel(); + + /** + * Handles an active object’s request completion event. + * This RunL will never leave, so RunError not needed. + */ + void RunL(); + +private: + /** + * Destructor. + */ + ~CSsmCollationObserver(); + + /** + * C++ default constructor. + */ + CSsmCollationObserver(); + + /** + * Activate the active object. + */ + void Activate(); + + /** + * Loads the Collation set in the PS key. + */ + void LoadCollation(); + + /** + * Store the Collation code to Central Repository. + * @param aCollation The Collation code to store. + */ + void StoreCollationToCentRep( const TInt aCollation ); + +private: // data + + /** + * Used for observing Collation code changes. + */ + RProperty iCollationProperty; + }; +#endif // __SSMCOLLATIONOBSERVER_H__ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/inc/ssmlocaleobserversup.h --- a/sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/inc/ssmlocaleobserversup.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/inc/ssmlocaleobserversup.h Thu Jun 24 11:22:10 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" @@ -15,13 +15,15 @@ * */ -#ifndef C_SSMLOCALEOBSERVERSUP_H -#define C_SSMLOCALEOBSERVERSUP_H +#ifndef __SSMLOCALEOBSERVERSUP_H__ +#define __SSMLOCALEOBSERVERSUP_H__ +#include "ssmcommonlocale.h" #include #include #include #include +#include class CEnvironmentChangeNotifier; @@ -75,34 +77,32 @@ /** * Copied fron SysLocale. * SaveLocaleL saves TLocale class to the given directory - * and initiates missing independent data, if any. - * Note, that independent data is created only once and it is - * shared by all the locales. Therefore, it is recommended - * to call this method upon early boot phase of a device. + * * @param aPath Directory path containing locale data files. * (e.g. "c:\dir" or c:\dir\") */ - void SaveLocaleL( const TDesC& aPath ); + void SaveRegionL( const TDesC& aPath ); /** * Copied fron SysLocale. - * LoadLocaleL restores TLocale class from the given directory. - * If locale independent data (see note) - * exists, its data overrides the restored TLocale data. + * LoadRegionL restores TLocale class from the given directory. + * * @param aPath Directory path containing locale data files * (e.g. "c:\dir" or c:\dir\") */ - void LoadLocaleL( const TDesC& aPath ); - + void LoadRegionL( const TDesC& aPath ); + /** - * Stores locale independent data. + * Initialize the language region mapping + * */ - void SaveIndependentDataL( const TLocale& aLocale, const TDesC& aPath ); - + void InitializeRegionMappingL(); + /** - * Loads locale independent data. + * Gets the associated region for the given language + * */ - void LoadIndependentDataL( TLocale& aLocale, const TDesC& aPath ); + TInt MappedRegionL(const TInt aLanguage); private: // data @@ -127,6 +127,10 @@ */ RFs iFs; + /** + * Array of language and region mappings. + */ + RHashSet iLangRegionMappingHashSet; }; -#endif // C_SSMLOCALEOBSERVERSUP_H +#endif // __SSMLOCALEOBSERVERSUP_H__ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/inc/ssmregionobserversup.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/inc/ssmregionobserversup.h Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,91 @@ +/* +* 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: Declaration of CSsmRegionObserver class. +* +*/ +#ifndef __SSMREGIONOBSERVER_H__ +#define __SSMREGIONOBSERVER_H__ + +#include +#include +#include +#include "trace.h" + +/** +* SSM Utility plugin to observe the Region code changes and load the new Region +* when it is changed. +*/ +NONSHARABLE_CLASS( CSsmRegionObserver ) : public CActive, public MSsmUtility + { +public: + //From MSsmUtility + void InitializeL(); + void StartL(); + void Release(); + +public: + /** + * Two-phased constructor. + */ + IMPORT_C static MSsmUtility* NewL(); + +protected: + // from base class CActive + + /** + * Implements cancellation of an outstanding request. + */ + void DoCancel(); + + /** + * Handles an active object’s request completion event. + * This RunL will never leave, so RunError not needed. + */ + void RunL(); + +private: + /** + * Destructor. + */ + ~CSsmRegionObserver(); + + /** + * C++ default constructor. + */ + CSsmRegionObserver(); + + /** + * Activate the active object. + */ + void Activate(); + + /** + * Loads the Region set in the PS key. + */ + void LoadRegion(); + + /** + * Store the Region code to Central Repository. + * @param aRegion The Region code to store. + */ + void StoreRegionToCentRep( const TInt aRegion); + +private: // data + + /** + * Used for observing Region code changes. + */ + RProperty iRegionProperty; + }; +#endif // __SSMREGIONOBSERVER_H__ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/inc/ssmuilanguageobserversup.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/inc/ssmuilanguageobserversup.h Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,91 @@ +/* +* 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: Declaration of CSsmUiLanguageObserver class. +* +*/ +#ifndef __SSMUILANGUAGEOBSERVER_H__ +#define __SSMUILANGUAGEOBSERVER_H__ + +#include +#include +#include +#include "trace.h" + +/** +* SSM Utility plugin to observe the UI Language code changes and load the new UI Language +* when it is changed. +*/ +NONSHARABLE_CLASS( CSsmUiLanguageObserver ) : public CActive, public MSsmUtility + { +public: + //From MSsmUtility + void InitializeL(); + void StartL(); + void Release(); + +public: + /** + * Two-phased constructor. + */ + IMPORT_C static MSsmUtility* NewL(); + +protected: + // from base class CActive + + /** + * Implements cancellation of an outstanding request. + */ + void DoCancel(); + + /** + * Handles an active object’s request completion event. + * This RunL will never leave, so RunError not needed. + */ + void RunL(); + +private: + /** + * Destructor. + */ + ~CSsmUiLanguageObserver(); + + /** + * C++ default constructor. + */ + CSsmUiLanguageObserver(); + + /** + * Activate the active object. + */ + void Activate(); + + /** + * Loads the Language set in the PS key. + */ + void LoadUILanguage(); + + /** + * Store the Language code to Central Repository. + * @param aUILanguage The Language code to store. + */ + void StoreUILanguageToCentRep( const TInt aUILanguage); + +private: // data + + /** + * Used for observing UI Language code changes. + */ + RProperty iUILanguageProperty; + }; +#endif // __SSMUILANGUAGEOBSERVER_H__ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/src/ssmcollationobserversup.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/src/ssmcollationobserversup.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,195 @@ +/* +* 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: Implementation of CSsmCollationObserver class. +* +*/ +#include "ssmcollationobserversup.h" +#include "ssmlocalepskeys.h" +#include "ssmmapperutilityinternalpskeys.h" +#include "ssmcommonlocale.h" +#include "trace.h" +#include +#include + +// --------------------------------------------------------------------------- +// CSsmCollationObserver::NewL() +// --------------------------------------------------------------------------- +// +EXPORT_C MSsmUtility* CSsmCollationObserver::NewL() + { + FUNC_LOG; + CSsmCollationObserver* self = new( ELeave ) CSsmCollationObserver(); + return self; + } + +// --------------------------------------------------------------------------- +// CSsmCollationObserver::InitializeL() +// --------------------------------------------------------------------------- +// +void CSsmCollationObserver::InitializeL() + { + + } + +// --------------------------------------------------------------------------- +// CSsmCollationObserver::StartL() +// --------------------------------------------------------------------------- +// +void CSsmCollationObserver::StartL() + { + FUNC_LOG; + TInt errorCode = iCollationProperty.Attach( KPSStarterUid, KSSMCollationPSKey ); + ERROR_2( errorCode, "Failed to attach to property 0x%08x::0x%08x", KPSStarterUid.iUid, KSSMCollationPSKey ); + Activate(); + } + +// --------------------------------------------------------------------------- +// CSsmCollationObserver::Release() +// --------------------------------------------------------------------------- +// +void CSsmCollationObserver::Release() + { + FUNC_LOG; + delete this; + } + +// --------------------------------------------------------------------------- +// CSsmCollationObserver::~CSsmCollationObserver() +// --------------------------------------------------------------------------- +// +CSsmCollationObserver::~CSsmCollationObserver() + { + FUNC_LOG; + Cancel(); + iCollationProperty.Close(); + } + +// --------------------------------------------------------------------------- +// CSsmCollationObserver::DoCancel() +// --------------------------------------------------------------------------- +// +void CSsmCollationObserver::DoCancel() + { + FUNC_LOG; + iCollationProperty.Cancel(); + } + +// --------------------------------------------------------------------------- +// CSsmCollationObserver::RunL() +// --------------------------------------------------------------------------- +// +void CSsmCollationObserver::RunL() + { + FUNC_LOG; + const TInt errorCode = iStatus.Int(); + if (KErrNone == errorCode ) + { + Activate(); + LoadCollation(); + } + else + { + INFO_1( "CSsmCollationObserver::RunL()completed with: %d - not reactivating", iStatus.Int() ); + } + } + +// --------------------------------------------------------------------------- +// CSsmCollationObserver::LoadCollation() +// --------------------------------------------------------------------------- +// +void CSsmCollationObserver::LoadCollation() + { + FUNC_LOG; + TInt collation(0); + TInt errorCode = iCollationProperty.Get( collation ); + + if( KErrNone != errorCode ) + { + INFO_1( "Failed to get KSSMCollationPSKey value with error %d", errorCode ); + return; + } + + // Dot plus three digit locale + TBuf extension; + extension.Format( KDllExtensionFormat, collation ); + + // Padd ".1" to ".001" for compatibility. + for( ; extension.Length() < KMinDllExtensionLength ;) + { + extension.Insert( KDllExtensionPaddingPosition, + KDllExtensionPadding ); + } + + TBuf collationDllName( KCollationDllNameBase ); + collationDllName.Append( extension ); + INFO_1( "Loading Collation DLL named '%S'", &collationDllName ); + + TExtendedLocale extLocale; + extLocale.LoadSystemSettings(); + errorCode = extLocale.LoadLocaleAspect( collationDllName ); + + if ( KErrNone == errorCode ) + { + errorCode = extLocale.SaveSystemSettings(); + ERROR( errorCode, "Failed to save locale (Collation) settings" ); + TLocale().Set(); + StoreCollationToCentRep( collation ); + } + else + { + INFO_1( "Failed to load locale (Collation) with error %d", errorCode ); + } + } + +// --------------------------------------------------------------------------- +// CSsmCollationObserver::StoreCollationToCentRep +// --------------------------------------------------------------------------- +// +void CSsmCollationObserver::StoreCollationToCentRep( const TInt aCollation ) + { + FUNC_LOG; + CRepository* cenrep = NULL; + TRAPD( errorCode, cenrep = CRepository::NewL( KCRUidCommonEngineKeys ) ); + ERROR_1( errorCode, "Failed to initialize cen rep %d", errorCode ); + + if ( KErrNone == errorCode ) + { + errorCode = cenrep->Set( KGSCollation, aCollation); + ERROR_1( errorCode, "Failed to store collation code to CentRep, %d", + errorCode ); + delete cenrep; + } + } + +// --------------------------------------------------------------------------- +// CSsmCollationObserver::CSsmCollationObserver() +// --------------------------------------------------------------------------- +// +CSsmCollationObserver::CSsmCollationObserver() : CActive( EPriorityStandard ) + { + FUNC_LOG; + CActiveScheduler::Add( this ); + } + +// --------------------------------------------------------------------------- +// CSsmCollationObserver::Activate() +// --------------------------------------------------------------------------- +// +void CSsmCollationObserver::Activate() + { + FUNC_LOG; + ASSERT( !IsActive() ); + iCollationProperty.Subscribe( iStatus ); + SetActive(); + } diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/src/ssmlocaleobserversup.cpp --- a/sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/src/ssmlocaleobserversup.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/src/ssmlocaleobserversup.cpp Thu Jun 24 11:22:10 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" @@ -19,6 +19,7 @@ #include #include #include +#include #include "ssmmapperutilitystatic.h" #include "ssmlocaleobserversup.h" @@ -30,9 +31,8 @@ */ _LIT( KLocaleDataDir, "\\private\\2000d766\\localedata\\" ); -/** Name is LocaleData.Dnn or CommonData.D00 */ -_LIT( KFileName, "LocaleData.D" ); -_LIT( KCommonFileName, "CommonData.D" ); +/** Name is RegionData.Dnn */ +_LIT( KFileName, "RegionData.D" ); /** * Version number from 1..255 to indicate data @@ -41,6 +41,9 @@ */ const TInt KCurrentVersionNumber = 2; // For fixing TChar r/w +/** The maximum number of regions to be appended to the hash set. */ +const TInt KMaxNumberOfRegions = 56; + // ======== LOCAL FUNCTIONS ======== // --------------------------------------------------------------------------- @@ -64,7 +67,7 @@ static HBufC* MakeFileNameL( const TDesC& aPath, const TDesC& aName, const TInt aCode ) { FUNC_LOG; - INFO_3( "Locale data dir: %S, file name base: %S, lang code: %d", &aPath, &aName, aCode ); + INFO_3( "Region data dir: %S, file name base: %S, region code: %d", &aPath, &aName, aCode ); TInt length = aPath.Length(); @@ -84,11 +87,21 @@ } ptr.AppendNum( aCode ); - INFO_1( "Locale data file: %S", buffer ); + INFO_1( "Region data file: %S", buffer ); return buffer; } +inline TUint32 HashLangRegionMappingFunction(const TLanguageRegion& aMapping) + { + return aMapping.iLanguage; + } + +inline TBool HashLangRegionMappingIdentityRelation(const TLanguageRegion& aMapping1, + const TLanguageRegion& aMapping2) + { + return (aMapping1.iLanguage == aMapping2.iLanguage); + } // ======== MEMBER FUNCTIONS ======== @@ -112,6 +125,7 @@ FUNC_LOG; Cancel(); + iLangRegionMappingHashSet.Close(); delete iEnvChangeNotifier; iFs.Close(); iProperty.Close(); @@ -133,7 +147,7 @@ if ( !iRestoreActive && ( changes & EChangesLocale ) ) { TParsePtrC parse( KLocaleDataDir ); - SaveLocaleL( parse.FullName() ); + SaveRegionL( parse.FullName() ); } if( changes & EChangesSystemTime ) @@ -185,9 +199,9 @@ iRestoreActive = EFalse; TParsePtrC parse( KLocaleDataDir ); - TRAP( err, LoadLocaleL( parse.FullName() ) ); + TRAP( err, LoadRegionL( parse.FullName() ) ); ERROR( err, "Failed to load locale" ); - // Can not do anything about the error - just continue. + // Cannot do anything about the error - just continue. } } } @@ -218,6 +232,8 @@ ERROR( err, "Failed to connect to file server" ); User::LeaveIfError( err ); + InitializeRegionMappingL(); + TRAP( err, iEnvChangeNotifier = CEnvironmentChangeNotifier::NewL( CActive::EPriorityStandard, TCallBack( EnvChangeNotifierCallback, this ) ) ); @@ -235,8 +251,8 @@ FUNC_LOG; TParsePtrC parse( KLocaleDataDir ); - TRAPD_ERR( err, LoadLocaleL( parse.FullName() ) ); - ERROR( err, "Failed to load locale data the first time" ); + TRAPD_ERR( err, LoadRegionL( parse.FullName() ) ); + ERROR( err, "Failed to load region data the first time" ); if ( iEnvChangeNotifier ) { @@ -268,7 +284,8 @@ // CSsmLocaleObserverSup::CSsmLocaleObserverSup() : CActive( EPriorityNormal ), - iRestoreActive( EFalse ) + iRestoreActive( EFalse ), + iLangRegionMappingHashSet( &::HashLangRegionMappingFunction, &::HashLangRegionMappingIdentityRelation ) { FUNC_LOG; @@ -291,15 +308,16 @@ // --------------------------------------------------------------------------- -// CSsmLocaleObserverSup::SaveLocaleL +// CSsmLocaleObserverSup::SaveRegionL // --------------------------------------------------------------------------- // -void CSsmLocaleObserverSup::SaveLocaleL( const TDesC& aPath ) +void CSsmLocaleObserverSup::SaveRegionL( const TDesC& aPath ) { FUNC_LOG; - INFO( "Saving locale data" ); - - HBufC* fName = MakeFileNameL( aPath, KFileName, User::Language() ); + INFO( "Saving region data" ); + + TInt region = MappedRegionL(User::Language()); + HBufC* fName = MakeFileNameL( aPath, KFileName, region); CleanupStack::PushL( fName ); RFileWriteStream fStream; @@ -365,9 +383,6 @@ fStream.WriteInt8L( locale.NegativeCurrencySymbolOpposite() ); fStream.WriteInt16L( locale.DigitType() ); - // Then save display language independent data - SaveIndependentDataL( locale, aPath ); - // If CommitL leaves it means probably full disk. // It is here assumed that data has not been changed if this leaves. fStream.CommitL(); @@ -378,15 +393,16 @@ // --------------------------------------------------------------------------- -// CSsmLocaleObserverSup::LoadLocaleL +// CSsmLocaleObserverSup::LoadRegionL // --------------------------------------------------------------------------- // -void CSsmLocaleObserverSup::LoadLocaleL( const TDesC& aPath ) +void CSsmLocaleObserverSup::LoadRegionL( const TDesC& aPath ) { FUNC_LOG; - INFO( "Loading locale data" ); + INFO( "Loading region data" ); - HBufC* fName = MakeFileNameL( aPath, KFileName, User::Language() ); + TInt region = MappedRegionL(User::Language()); + HBufC* fName = MakeFileNameL( aPath, KFileName, region); CleanupStack::PushL( fName ); TLocale locale; // copy current values @@ -404,7 +420,7 @@ if ( err == KErrNone ) { TInt version = fStream.ReadInt8L(); - INFO_1( "Locale file version: %d", version ); + INFO_1( "Region file version: %d", version ); locale.SetCountryCode( fStream.ReadInt16L() ); fStream.ReadInt16L(); // obsolete @@ -450,10 +466,6 @@ locale.SetDigitType( static_cast< TDigitType >( fStream.ReadInt16L() ) ); } - // Then patch data with locale independent data (code 00) - // No changes to locale if no independent data can be found (the very first boot) - LoadIndependentDataL( locale, aPath ); - // Save changes to the system. locale.Set(); @@ -461,93 +473,83 @@ CleanupStack::PopAndDestroy( fName ); } +void CSsmLocaleObserverSup::InitializeRegionMappingL() + { + //Reserve the memory for the number of mappings to be appended + iLangRegionMappingHashSet.ReserveL( KMaxNumberOfRegions ); + + //Insert the Language - Region mapping + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangEnglish, ERegGBR ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangFrench, ERegFRA ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangGerman, ERegDEU ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangSpanish, ERegESP ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangItalian, ERegITA ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangSwedish, ERegSWE ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangDanish, ERegDNK ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangNorwegian, ERegNOR ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangFinnish, ERegFIN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangAmerican, ERegUSA ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangPortuguese, ERegPRT ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangTurkish, ERegTUR ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangIcelandic, ERegISL ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangRussian, ERegRUS ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangHungarian, ERegHUN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangDutch, ERegNLD ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangBelgianFlemish, ERegBEL ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangCzech, ERegCZE ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangSlovak, ERegSVK ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangPolish, ERegPOL ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangSlovenian, ERegSVN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangTaiwanChinese, ERegTWN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangHongKongChinese, ERegHKG ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangPrcChinese, ERegCHN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangJapanese, ERegJPN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangThai, ERegTHA ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangArabic, ERegARE ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangTagalog, ERegPHL ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangBulgarian, ERegBGR ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangCatalan, ERegESP ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangCroatian, ERegHRV ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangEstonian, ERegEST ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangFarsi, ERegIRN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangCanadianFrench, ERegCAN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangGreek, ERegGRC ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangHebrew, ERegISR ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangHindi, ERegIND ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangIndonesian, ERegIDN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangLatvian, ERegLVA ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangLithuanian, ERegLTU ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangMalay, ERegMYS ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangBrazilianPortuguese, ERegBRA ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangRomanian, ERegROU ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangSerbian, ERegSCG ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangLatinAmericanSpanish, ERegMEX )); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangUkrainian, ERegUKR ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangUrdu, ERegPAK ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangVietnamese, ERegVNM ) ); +#ifdef __E32LANG_H__ + // 5.0 + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangBasque, ERegESP ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangGalician, ERegESP ) ); +#endif //__E32LANG_H__ +#if !defined(__SERIES60_31__) + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangEnglish_Apac, ERegGBR ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangEnglish_Taiwan, ERegTWN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangEnglish_HongKong, ERegHKG ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangEnglish_Prc, ERegCHN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangEnglish_Japan, ERegJPN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangEnglish_Thailand, ERegTHA ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangMalay_Apac, ERegMYS ) ); +#endif //!defined(__SERIES60_31__) + } // --------------------------------------------------------------------------- -// CSsmLocaleObserverSup::SaveIndependentDataL +// CSsmLocaleObserverSup::MappedRegionL // --------------------------------------------------------------------------- // -void CSsmLocaleObserverSup::SaveIndependentDataL( - const TLocale& aLocale, - const TDesC& aPath ) +TInt CSsmLocaleObserverSup::MappedRegionL(const TInt aLanguage) { FUNC_LOG; - - // Get old independent data, if any. - TLocale savedLoc; - TRAPD( err, LoadIndependentDataL( savedLoc, aPath ) ); - ERROR( err, "Failed to load locale independent data" ); - - HBufC* fName = MakeFileNameL( aPath, KCommonFileName, 0 ); - CleanupStack::PushL( fName ); - RFileWriteStream fStream; - CleanupClosePushL( fStream ); - - err = iFs.MkDirAll( *fName ); // Ignore errors - err = fStream.Create( iFs, *fName, EFileWrite ); - if ( err == KErrAlreadyExists ) - { - // Override - err = fStream.Open( iFs, *fName, EFileWrite ); - ERROR_1( err, "Failed to create stream %S", fName ); - } - User::LeaveIfError( err ); - - // Write first the version number to enable support for file format changes. - fStream.WriteInt8L( KCurrentVersionNumber ); - fStream.WriteInt32L( 0 ); // Universal time offset is not part of TLocale - // any more. Write zero here to keep file structure. - // Clock format is also common. - fStream.WriteUint32L( aLocale.ClockFormat() ); - fStream.WriteUint32L( 0 ); // reserved 2 - fStream.WriteUint32L( 0 ); // reserved 3 - - fStream.CommitL(); - - CleanupStack::PopAndDestroy( &fStream ); - CleanupStack::PopAndDestroy( fName ); - } - - -// --------------------------------------------------------------------------- -// CSsmLocaleObserverSup::LoadIndependentDataL -// --------------------------------------------------------------------------- -// -void CSsmLocaleObserverSup::LoadIndependentDataL( - TLocale& aLocale, - const TDesC& aPath ) - { - FUNC_LOG; - - HBufC* fName = MakeFileNameL( aPath, KCommonFileName, 0 ); - CleanupStack::PushL( fName ); - - RFileReadStream fStream; - CleanupClosePushL( fStream ); - TInt err = fStream.Open( iFs, *fName, EFileRead ); - if ( err != KErrNotFound && err != KErrPathNotFound ) - { - ERROR_1( err, "Failed to open stream %S", fName ); - // Data file is missing upon the first boot or when switching into a - // language for the first time - } - - if ( err == KErrNotFound || err == KErrPathNotFound ) - { - // File not found --> Not an error because - // this is a new file and older builds do not have this file. - INFO( "No locale data found" ); - } - else - { - User::LeaveIfError( err ); - - fStream.ReadInt8L(); // Version. - fStream.ReadInt32L(); // Universal time offset was stored here. - aLocale.SetClockFormat( ( TClockFormat ) fStream.ReadUint32L() ); - fStream.ReadUint32L(); // reserved 2 - fStream.ReadUint32L(); // reserved 3 - } - - CleanupStack::PopAndDestroy( &fStream ); - CleanupStack::PopAndDestroy( fName ); - } + TLanguageRegion langRegion = iLangRegionMappingHashSet.FindL(TLanguageRegion(aLanguage)); + return langRegion.iRegion; + } diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/src/ssmregionobserversup.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/src/ssmregionobserversup.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,191 @@ +/* +* 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: Implementation of CSsmRegionObserver class. +* +*/ +#include "ssmregionobserversup.h" +#include "ssmlocalepskeys.h" +#include "ssmmapperutilityinternalpskeys.h" +#include "ssmcommonlocale.h" +#include "trace.h" +#include +#include + +// --------------------------------------------------------------------------- +// CSsmRegionObserver::NewL +// --------------------------------------------------------------------------- +// +EXPORT_C MSsmUtility* CSsmRegionObserver::NewL() + { + FUNC_LOG; + CSsmRegionObserver* self = new( ELeave ) CSsmRegionObserver(); + return self; + } + +// --------------------------------------------------------------------------- +// CSsmRegionObserver::InitializeL +// --------------------------------------------------------------------------- +// +void CSsmRegionObserver::InitializeL() + { + + } + +// --------------------------------------------------------------------------- +// CSsmRegionObserver::StartL +// --------------------------------------------------------------------------- +// +void CSsmRegionObserver::StartL() + { + FUNC_LOG; + TInt errorCode = iRegionProperty.Attach( KPSStarterUid, KSSMRegionPSKey ); + ERROR_2( errorCode, "Failed to attach to property 0x%08x::0x%08x", KPSStarterUid.iUid, KSSMRegionPSKey ); + Activate(); + } + +// --------------------------------------------------------------------------- +// CSsmRegionObserver::Release +// --------------------------------------------------------------------------- +// +void CSsmRegionObserver::Release() + { + FUNC_LOG; + delete this; + } + +// --------------------------------------------------------------------------- +// CSsmRegionObserver::~CSsmRegionObserver +// --------------------------------------------------------------------------- +// +CSsmRegionObserver::~CSsmRegionObserver() + { + FUNC_LOG; + Cancel(); + iRegionProperty.Close(); + } + +// --------------------------------------------------------------------------- +// CSsmRegionObserver::DoCancel +// --------------------------------------------------------------------------- +// +void CSsmRegionObserver::DoCancel() + { + FUNC_LOG; + iRegionProperty.Cancel(); + } + +// --------------------------------------------------------------------------- +// CSsmRegionObserver::RunL +// --------------------------------------------------------------------------- +// +void CSsmRegionObserver::RunL() + { + FUNC_LOG; + const TInt errorCode = iStatus.Int(); + if ( KErrNone == errorCode ) + { + Activate(); + LoadRegion(); + } + else + { + INFO_1("CSsmRegionObserver::RunL()completed with: %d - not reactivating", iStatus.Int()); + } + } + +// --------------------------------------------------------------------------- +// CSsmRegionObserver::LoadRegion +// --------------------------------------------------------------------------- +// +void CSsmRegionObserver::LoadRegion() + { + TInt region(0); + TInt errorCode = iRegionProperty.Get( region); + if( KErrNone != errorCode ) + { + INFO_1( "Failed to get KSSMRegionPSKey value with error %d", errorCode ); + return; + } + + // Dot plus five digit locale + TBuf extension; + extension.Format( KDllExtensionFormat, region); + + // Padd ".1" to ".01" for compatibility. + for( ; extension.Length() < KMinDllExtensionLength ;) + { + extension.Insert( KDllExtensionPaddingPosition, + KDllExtensionPadding ); + } + + TBuf regionDllName( KRegionDllNameBase ); + regionDllName.Append( extension ); + INFO_1( "Loading region DLL named '%S'", ®ionDllName ); + + TExtendedLocale extLocale; + extLocale.LoadSystemSettings(); + errorCode = extLocale.LoadLocaleAspect(regionDllName ); + + ERROR( errorCode, "Failed to load region" ); + + if ( KErrNone == errorCode ) + { + errorCode = extLocale.SaveSystemSettings(); + ERROR( errorCode, "Failed to set region" ); + TLocale().Set(); + StoreRegionToCentRep( region ); + } + } + +// --------------------------------------------------------------------------- +// CSsmRegionObserver::StoreRegionToCentRep +// --------------------------------------------------------------------------- +// +void CSsmRegionObserver::StoreRegionToCentRep( const TInt aRegion ) + { + FUNC_LOG; + CRepository* cenrep = NULL; + TRAPD( errorCode, cenrep = CRepository::NewL( KCRUidCommonEngineKeys ) ); + ERROR_1( errorCode, "Failed to initialize cen rep %d", errorCode ); + + if ( KErrNone == errorCode ) + { + errorCode = cenrep->Set( KGSRegion, aRegion); + ERROR_1( errorCode, "Failed to store region code to CentRep, %d", + errorCode ); + delete cenrep; + } + } + +// --------------------------------------------------------------------------- +// CSsmRegionObserver::CSsmRegionObserver +// --------------------------------------------------------------------------- +// +CSsmRegionObserver::CSsmRegionObserver() : CActive( EPriorityStandard ) + { + CActiveScheduler::Add( this ); + } + +// --------------------------------------------------------------------------- +// CSsmRegionObserver::Activate +// --------------------------------------------------------------------------- +// +void CSsmRegionObserver::Activate() + { + FUNC_LOG; + ASSERT( !IsActive() ); + iRegionProperty.Subscribe( iStatus ); + SetActive(); + } + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/src/ssmuilanguageobserversup.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/ssmutilityplugins/ssmlocaleobserversup/src/ssmuilanguageobserversup.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,192 @@ +/* +* 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: Implementation of CSsmUiLanguageObserver class. +* +*/ +#include "ssmuilanguageobserversup.h" +#include "ssmlocalepskeys.h" +#include "ssmmapperutilityinternalpskeys.h" +#include "ssmcommonlocale.h" +#include "trace.h" +#include +#include + +// --------------------------------------------------------------------------- +// CSsmUiLanguageObserver::NewL +// --------------------------------------------------------------------------- +// +EXPORT_C MSsmUtility* CSsmUiLanguageObserver::NewL() + { + FUNC_LOG; + CSsmUiLanguageObserver* self = new( ELeave ) CSsmUiLanguageObserver(); + return self; + } + +// --------------------------------------------------------------------------- +// CSsmUiLanguageObserver::InitializeL +// --------------------------------------------------------------------------- +// +void CSsmUiLanguageObserver::InitializeL() + { + + } + +// --------------------------------------------------------------------------- +// CSsmUiLanguageObserver::StartL +// --------------------------------------------------------------------------- +// +void CSsmUiLanguageObserver::StartL() + { + FUNC_LOG; + TInt errorCode = iUILanguageProperty.Attach( KPSStarterUid, KSSMUILanguagePSKey ); + ERROR_2( errorCode, "Failed to attach to property 0x%08x::0x%08x", KPSStarterUid.iUid, KSSMUILanguagePSKey ); + Activate(); + } + +// --------------------------------------------------------------------------- +// CSsmUiLanguageObserver::Release +// --------------------------------------------------------------------------- +// +void CSsmUiLanguageObserver::Release() + { + FUNC_LOG; + delete this; + } + +// --------------------------------------------------------------------------- +// CSsmUiLanguageObserver::~CSsmUiLanguageObserver +// --------------------------------------------------------------------------- +// +CSsmUiLanguageObserver::~CSsmUiLanguageObserver() + { + FUNC_LOG; + Cancel(); + iUILanguageProperty.Close(); + } + +// --------------------------------------------------------------------------- +// CSsmUiLanguageObserver::DoCancel +// --------------------------------------------------------------------------- +// +void CSsmUiLanguageObserver::DoCancel() + { + FUNC_LOG; + iUILanguageProperty.Cancel(); + } + +// --------------------------------------------------------------------------- +// CSsmUiLanguageObserver::RunL +// --------------------------------------------------------------------------- +// +void CSsmUiLanguageObserver::RunL() + { + FUNC_LOG; + const TInt errorCode = iStatus.Int(); + if (KErrNone == errorCode ) + { + Activate(); + LoadUILanguage(); + } + else + { + INFO_1("CSsmUiLanguageObserver::RunL()completed with: %d - not reactivating", iStatus.Int()); + } + } + +// --------------------------------------------------------------------------- +// CSsmUiLanguageObserver::LoadUILanguage +// --------------------------------------------------------------------------- +// +void CSsmUiLanguageObserver::LoadUILanguage() + { + FUNC_LOG; + TInt uiLanguage(0); + TInt errorCode = iUILanguageProperty.Get( uiLanguage ); + + if( KErrNone != errorCode ) + { + INFO_1( "Failed to get KSSMUILanguagePSKey value with error %d", errorCode ); + return; + } + + // Dot plus five digit locale + TBuf extension; + extension.Format( KDllExtensionFormat, uiLanguage ); + + // Padd ".1" to ".001" for compatibility. + for( ; extension.Length() < KMinDllExtensionLength ;) + { + extension.Insert( KDllExtensionPaddingPosition, + KDllExtensionPadding ); + } + + TBuf uiLanguageDllName( KLanguageDllNameBase ); + uiLanguageDllName.Append( extension ); + INFO_1( "Loading UI Language DLL named '%S'", &uiLanguageDllName ); + + TExtendedLocale extLocale; + extLocale.LoadSystemSettings(); + errorCode = extLocale.LoadLocaleAspect( uiLanguageDllName ); + ERROR( errorCode, "Failed to load locale" ); + + if ( errorCode == KErrNone ) + { + errorCode = extLocale.SaveSystemSettings(); + ERROR( errorCode, "Failed to set locale" ); + TLocale().Set(); + StoreUILanguageToCentRep( uiLanguage ); + } + } + +// --------------------------------------------------------------------------- +// CSsmUiLanguageObserver::StoreUILanguageToCentRep +// --------------------------------------------------------------------------- +// +void CSsmUiLanguageObserver::StoreUILanguageToCentRep( const TInt aUILanguage ) + { + FUNC_LOG; + CRepository* cenrep = NULL; + TRAPD( errorCode, cenrep = CRepository::NewL( KCRUidCommonEngineKeys ) ); + ERROR_1( errorCode, "Failed to initialize cen rep %d", errorCode ); + + if ( KErrNone == errorCode ) + { + errorCode = cenrep->Set( KGSDisplayTxtLang, aUILanguage); + ERROR_1( errorCode, "Failed to store UI Language code to CentRep, %d", + errorCode ); + delete cenrep; + } + } + +// --------------------------------------------------------------------------- +// CSsmUiLanguageObserver::CSsmUiLanguageObserver +// --------------------------------------------------------------------------- +// +CSsmUiLanguageObserver::CSsmUiLanguageObserver() : CActive( EPriorityStandard ) + { + FUNC_LOG; + CActiveScheduler::Add( this ); + } + +// --------------------------------------------------------------------------- +// CSsmUiLanguageObserver::Activate +// --------------------------------------------------------------------------- +// +void CSsmUiLanguageObserver::Activate() + { + FUNC_LOG; + ASSERT( !IsActive() ); + iUILanguageProperty.Subscribe( iStatus ); + SetActive(); + } diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/syslangutil/rom/syslangutil.iby --- a/sysstatemgmt/syslangutil/rom/syslangutil.iby Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/syslangutil/rom/syslangutil.iby Thu Jun 24 11:22:10 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" @@ -22,4 +22,20 @@ file=ABI_DIR\BUILD_DIR\ssmlangselcmd.dll SHARED_LIB_DIR\ssmlangselcmd.dll file=ABI_DIR\BUILD_DIR\syslangutil.dll SHARED_LIB_DIR\syslangutil.dll + +//If elocl.iby changes doesnt come on time then the epoc will not boot. Hence adding +//these dlls temporarily to avoid such problems +//Remove this once elocl.iby is updated with these dlls + +#ifdef EKA2 +file=ABI_DIR\BUILD_DIR\elocl_lan.001 SHARED_LIB_DIR\elocl_lan.001 +file=ABI_DIR\BUILD_DIR\elocl_reg.826 SHARED_LIB_DIR\elocl_reg.826 +file=ABI_DIR\BUILD_DIR\elocl_col.001 SHARED_LIB_DIR\elocl_col.001 +#else +file=\epoc32\release\armi\DEBUG_DIR\elocl_lan.001 System\libs\elocl_lan.001 +file=\epoc32\release\armi\DEBUG_DIR\elocl_reg.826 System\libs\elocl_reg.826 +file=\epoc32\release\armi\DEBUG_DIR\elocl_col.001 System\libs\elocl_col.001 +#endif //EKA2 +// + #endif // SYSLANGUTIL_IBY diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/syslangutil/ssmlangselcmd/inc/ssmlangselcmd.h --- a/sysstatemgmt/syslangutil/ssmlangselcmd/inc/ssmlangselcmd.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/syslangutil/ssmlangselcmd/inc/ssmlangselcmd.h Thu Jun 24 11:22:10 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" @@ -19,9 +19,11 @@ #ifndef SSMLANGSELCMD_H #define SSMLANGSELCMD_H +#include "ssmcommonlocale.h" #include #include #include +#include class CSsmMapperUtility; @@ -157,6 +159,97 @@ */ void UseLanguage(const TInt aLang); + /** + * Initialize the language region mapping + * + */ + void InitializeRegionMappingL(); + + /** + * Used to check whether the region is valid or not + * + * @param aRegion Region to be validated + * + * @return ETrue if the region code was found in the list, EFalse otherwise. + */ + TBool IsRegionValidL(const TInt aRegion) const; + + /** + * Get the stored Region and Collation code from Central Repository + * + * @param aRegion On return, will store the Region code fetched from CR + * @param aCollation On return, will store the Collation code fetched from CR + * + */ + void GetIndividualSettingsFromCentRepL(TInt& aRegion, TInt& aCollation); + + /** + * Store the given Region and Collation code to Central Repository + * + * @param aRegion Region code to be stored in CR + * @param aCollation Collation code to be stored in CR + * + * @return Success code, Contains any of the error code in case of any error. + */ + TInt SetIndividualSettingsToCentRep(const TInt aRegion, const TInt aCollation); + + /** + * Gets the selected Region and Collation codes. If not set will get the asscoiated codes + * for the language + * + * @param aLastSelectedLang Contains the seleted Language code + * @param aLastSelectedRegion On success contains the Region code + * @param aLastSelectedCollation On success contains the Collation code + * + * @return ETrue If the Region and Collation codes are valid or found the mapped Region + * incase of auto selection, EFalse otherwise. + */ + TBool ValidateAndGetSettings(const TInt aLastSelectedLang, TInt& aLastSelectedRegion, TInt& aLastSelectedCollation); + + /** + * Gets the selected Region and Collation codes. If not set will get the asscoiated codes + * for the language + * + * @param aLastSelectedLang Contains the seleted Language code + * @param aLastSelectedRegion On success contains the Region code + * @param aLastSelectedCollation On success contains the Collation code + * + * @return ETrue If the Region and Collation codes are valid or found the mapped Region + * incase of auto selection, EFalse otherwise. Leaves with any of error code incase of any error + */ + TBool ValidateAndGetSettingsL(const TInt aLastSelectedLang, TInt& aLastSelectedRegion, TInt& aLastSelectedCollation); + + /** + * Loads the default language setting if it is valid + * + * @return KErrNone if the default language settings are valid and loaded successfully, + * any of the error code otherwise. + */ + TInt ValidateAndUseDefaultLanguage(); + + /** + * Loads the corresponsing locale codes + * + * @param aLang Language code to be loaded + * @param aRegion Region code to be loaded + * @param aCollation Collation code to be loaded + * + * @return Success code, Contains any of the error code in case of any error. + */ + TInt UseLocale( const TInt aLang, const TInt aRegion, const TInt aCollation ); + + /** + * Gets the region mapped with the given language after validating + * + * @param aLanguage Language code for getting associated Region code + * @param aRegion On return contains the Region code associated with + * the given language code + * + * @return ETrue if the region code was found in the list, EFalse otherwise. + */ + + TBool ValidateAndGetMappedRegion( const TInt aLanguage, TInt& aRegion ); + private: // data /** Custom command environment. Not owned. Set in Initialise. */ @@ -191,14 +284,20 @@ /** Internal state of the object. */ enum TState { + EQueryListNone = 0, EQueryListSize = 1, - EQueryListContent + EQueryListContent = 2 }; TState iState; // The mapper utility instance, owned. CSsmMapperUtility* iMapperUtility; + /** Array of language and region mappings. */ + RHashSet iLangRegionMappingHashSet; + + /** Array of valid regions. */ + RArray iRegionsArray; }; #endif // SSMLANGSELCMD_H diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/syslangutil/ssmlangselcmd/inc/ssmlanguageloader.h --- a/sysstatemgmt/syslangutil/ssmlangselcmd/inc/ssmlanguageloader.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/syslangutil/ssmlangselcmd/inc/ssmlanguageloader.h Thu Jun 24 11:22:10 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" @@ -11,8 +11,7 @@ * * Contributors: * -* Description: -* Declaration of SsmLanguageLoader class. +* Description: Declaration of SsmLanguageLoader class. * */ @@ -34,15 +33,15 @@ public: /** - * Store language code to HAL and load corresponding locale DLL. + * Store language code to HAL and load corresponding Language, Region and Collation DLLs. * - * @since S60 3.2 - * @param aLanguage Language code identifying which locale DLL to load. + * @param aLanguage Language code identifying which language DLL to load. + * @param aRegion Region code identifying which region DLL to load. + * @param aCollation Collation code identifying which collation DLL to load. * @return KErrNone if loading was successful, one of Symbian error codes * otherwise. */ - static TInt LoadLanguage( const TInt aLanguage ); - + static TInt LoadLocale( const TInt aLanguage, const TInt aRegion, const TInt aCollation); private: /** @@ -55,23 +54,13 @@ static TInt StoreLanguageToHal( const TInt aLanguage ); /** - * Find the correct locale DLL to use by language code and take it to - * use. + * Loads the given Language, Region and Collation DLLs and saves the settings * - * @param aLanguageCode The language code to find a locale dll for. + * @param aLanguageDllName The name of the Language DLL to load. + * @param aRegionDllName The name of the Region DLL to load. + * @param aCollationDllName The name of the Collation DLL to load. * @return KErrNone if successful, one of Symbian error codes otherwise. */ - static TInt LoadLocaleDll( const TInt aLanguage ); - - /** - * Take a locale DLL to use by name. - * - * @param aLocaleDllName The name of the locale DLL to load. - * @return KErrNone if successful, one of Symbian error codes otherwise. - */ - static TInt ChangeLocale( const TDesC& aLocaleDllName ); - + static TInt ChangeLocale( const TDesC& aLanguageDllName, const TDesC& aRegionDllName, const TDesC& aCollationDllName ); }; - - #endif // SSMLANGUAGELOADER_H diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/syslangutil/ssmlangselcmd/src/ssmlangselcmd.cpp --- a/sysstatemgmt/syslangutil/ssmlangselcmd/src/ssmlangselcmd.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/syslangutil/ssmlangselcmd/src/ssmlangselcmd.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -1,8 +1,8 @@ /* -* 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" +* under the terms of the License "Eclipse Public License v1.0" * which accompanies this distribution, and is available * at the URL "http://www.eclipse.org/legal/epl-v10.html". * @@ -22,7 +22,10 @@ #include "ssmlanguageloader.h" #include "syslangutilprivatecrkeys.h" #include "trace.h" +#include "ssmlocalepskeys.h" +#include "ssmmapperutilityinternalpskeys.h" +#include #include #include #include @@ -31,6 +34,55 @@ /** Default granularity for list of installed languages. */ const TInt KLanguageListGranularity( 4 ); +/** Any of the code set to zero means auto selection is enabled. */ +const TInt KSettingAutomatic = 0; + +/** The maximum number of regions to be appended to the hash set. */ +const TInt KMaxNumberOfRegions = 56; + +// ======== LOCAL FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// HashLangRegionMappingFunction +// --------------------------------------------------------------------------- +// +inline TUint32 HashLangRegionMappingFunction(const TLanguageRegion& aMapping) + { + return aMapping.iLanguage; + } + +// --------------------------------------------------------------------------- +// LangRegionMappingIdentityRelation +// --------------------------------------------------------------------------- +// +inline TBool LangRegionMappingIdentityRelation(const TLanguageRegion& aMapping1, + const TLanguageRegion& aMapping2) + { + return (aMapping1.iLanguage == aMapping2.iLanguage); + } + +// --------------------------------------------------------------------------- +// RegionLangMappingIdentityRelation +// --------------------------------------------------------------------------- +// +inline TBool RegionLangMappingIdentityRelation(const TLanguageRegion& aMapping1, + const TLanguageRegion& aMapping2) + { + return (aMapping1.iRegion == aMapping2.iRegion); + } + +// --------------------------------------------------------------------------- +// CompareLanguageMapping +// --------------------------------------------------------------------------- +// +static TInt CompareLanguageMapping(TLanguageRegion const &aLanguage1, TLanguageRegion const &aLanguage2) + { + if( aLanguage1.iLanguage == aLanguage2.iLanguage ) + { + return 0; + } + return ( aLanguage1.iLanguage < aLanguage2.iLanguage ) ? -1 : 1; + } // ======== MEMBER FUNCTIONS ======== @@ -48,6 +100,18 @@ return self; } +// --------------------------------------------------------------------------- +// CSsmLangSelCmd::CSsmLangSelCmd +// --------------------------------------------------------------------------- +// +CSsmLangSelCmd::CSsmLangSelCmd() : CActive( EPriorityNormal ), + iState( EQueryListNone ), + iLangRegionMappingHashSet( &::HashLangRegionMappingFunction, &::LangRegionMappingIdentityRelation ) + { + FUNC_LOG; + + CActiveScheduler::Add( this ); + } // --------------------------------------------------------------------------- // CSsmLangSelCmd::~CSsmLangSelCmd @@ -56,11 +120,501 @@ CSsmLangSelCmd::~CSsmLangSelCmd() { FUNC_LOG; + Cancel(); delete iLangList; delete iMapperUtility; } // --------------------------------------------------------------------------- +// CSsmLangSelCmd::ConstructL +// --------------------------------------------------------------------------- +// +void CSsmLangSelCmd::ConstructL() + { + FUNC_LOG; + iMapperUtility = CSsmMapperUtility::NewL(); + } + +// --------------------------------------------------------------------------- +// CSsmLangSelCmd::Initialize +// --------------------------------------------------------------------------- +// + TInt CSsmLangSelCmd::Initialize( CSsmCustomCommandEnv* aCmdEnv ) + { + FUNC_LOG; + + iEnv = aCmdEnv; + TRAPD( errorCode, InitializeL() ); + return errorCode; + } + +// --------------------------------------------------------------------------- +// CSsmLangSelCmd::InitializeL +// --------------------------------------------------------------------------- +// +void CSsmLangSelCmd::InitializeL() + { + FUNC_LOG; + ASSERT_TRACE( iEnv ); + + iValidLanguages = new ( ELeave ) CArrayFixFlat( KLanguageListGranularity ); + + RFs* fsSession = &( const_cast( iEnv->Rfs() ) ); + + //Get the list of installed languages + TInt errorCode = SysLangUtil::GetInstalledLanguages( iValidLanguages, + fsSession ); + + ERROR( errorCode, "Failed to get installed languages" ); + User::LeaveIfError( errorCode ); + + //Initialize the Language and Region mapping hash set + InitializeRegionMappingL(); + + //Get the number of installed languages + const TInt validLangCount = iValidLanguages->Count(); + TLinearOrder order(&CompareLanguageMapping); + + //Get the mapped regions for the installed languages + for(TInt index = 0; index < validLangCount; ++index) + { + TLanguageRegion region = iLangRegionMappingHashSet.FindL(TLanguageRegion(iValidLanguages->At(index))); + INFO_2( "Found Region code = %d for language %d", region.iRegion, region.iLanguage ); + iRegionsArray.InsertInOrderL(region, order); + } + + //Connect to Misc adaptation + errorCode = iAdaptation.Connect(); + ERROR( errorCode, "Failed to connect to RSsmMiscAdaptation" ); + User::LeaveIfError( errorCode ); + } + +// --------------------------------------------------------------------------- +// CSsmLangSelCmd::InitializeRegionMappingL +// --------------------------------------------------------------------------- +// +void CSsmLangSelCmd::InitializeRegionMappingL() + { + //Reserve the memory for the number of mappings to be appended + iLangRegionMappingHashSet.ReserveL( KMaxNumberOfRegions ); + + //Insert the Language - Region mapping + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangEnglish, ERegGBR ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangFrench, ERegFRA ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangGerman, ERegDEU ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangSpanish, ERegESP ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangItalian, ERegITA ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangSwedish, ERegSWE ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangDanish, ERegDNK ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangNorwegian, ERegNOR ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangFinnish, ERegFIN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangAmerican, ERegUSA ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangPortuguese, ERegPRT ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangTurkish, ERegTUR ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangIcelandic, ERegISL ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangRussian, ERegRUS ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangHungarian, ERegHUN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangDutch, ERegNLD ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangBelgianFlemish, ERegBEL ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangCzech, ERegCZE ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangSlovak, ERegSVK ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangPolish, ERegPOL ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangSlovenian, ERegSVN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangTaiwanChinese, ERegTWN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangHongKongChinese, ERegHKG ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangPrcChinese, ERegCHN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangJapanese, ERegJPN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangThai, ERegTHA ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangArabic, ERegARE ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangTagalog, ERegPHL ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangBulgarian, ERegBGR ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangCatalan, ERegESP ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangCroatian, ERegHRV ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangEstonian, ERegEST ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangFarsi, ERegIRN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangCanadianFrench, ERegCAN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangGreek, ERegGRC ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangHebrew, ERegISR ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangHindi, ERegIND ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangIndonesian, ERegIDN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangLatvian, ERegLVA ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangLithuanian, ERegLTU ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangMalay, ERegMYS ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangBrazilianPortuguese, ERegBRA ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangRomanian, ERegROU ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangSerbian, ERegSCG ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangLatinAmericanSpanish, ERegMEX )); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangUkrainian, ERegUKR ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangUrdu, ERegPAK ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangVietnamese, ERegVNM ) ); +#ifdef __E32LANG_H__ + // 5.0 + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangBasque, ERegESP ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangGalician, ERegESP ) ); +#endif //__E32LANG_H__ +#if !defined(__SERIES60_31__) + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangEnglish_Apac, ERegGBR ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangEnglish_Taiwan, ERegTWN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangEnglish_HongKong, ERegHKG ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangEnglish_Prc, ERegCHN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangEnglish_Japan, ERegJPN ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangEnglish_Thailand, ERegTHA ) ); + iLangRegionMappingHashSet.InsertL( TLanguageRegion( ELangMalay_Apac, ERegMYS ) ); +#endif //!defined(__SERIES60_31__) + } + +// --------------------------------------------------------------------------- +// CSsmLangSelCmd::Execute +// --------------------------------------------------------------------------- +// +void CSsmLangSelCmd::Execute( const TDesC8& /*aParams*/, TRequestStatus& aRequest ) + { + FUNC_LOG; + + ASSERT_TRACE( !iClientStatus ); + ASSERT_TRACE( !IsActive() ); + ASSERT_TRACE( iEnv ); + + aRequest = KRequestPending; + iClientStatus = &aRequest; + + RFs* fsSession = &( const_cast( iEnv->Rfs() ) ); + + //Get the default language + TInt errorCode = SysLangUtil::GetDefaultLanguage( iDefaultLanguage, fsSession ); + ERROR( errorCode, "Failed to get default language" ); + + //Get the language selected + TInt lastSelectedLang = GetLastSelectedLang(); + TInt lastSelectedRegion ( KErrNotFound ); + TInt lastSelectedCollation ( KErrNotFound ); + + //Reset error code to KErrNotFound + errorCode = KErrNotFound; + + if ( KSettingAutomatic == lastSelectedLang ) + { + //Auto selection is enabled + SetIndividualSettingsToCentRep( KSettingAutomatic, KSettingAutomatic ); + PrepareNextList(); + } + else if ( ValidateAndGetSettings( lastSelectedLang, lastSelectedRegion, lastSelectedCollation ) ) + { + //Validate and get the selected Language, Region and Collation code + errorCode = UseLocale( lastSelectedLang , lastSelectedRegion, lastSelectedCollation ); + ERROR( errorCode, "Failed to load selected Language, Region and Collation" ); + } + + //Load the default Language, Region and Collation in case of loading selected codes failed + //and auto selection is disabled. + if( KErrNone != errorCode && KSettingAutomatic != lastSelectedLang ) + { + //Validate and use the default codes + errorCode = ValidateAndUseDefaultLanguage(); + ERROR( errorCode, "Failed to load default Language, Region and Collation" ); + } + } + +// --------------------------------------------------------------------------- +// CSsmLangSelCmd::GetLastSelectedLang +// +// --------------------------------------------------------------------------- +// +TInt CSsmLangSelCmd::GetLastSelectedLang() + { + FUNC_LOG; + + TInt value( 0 ); + TInt errorCode = iMapperUtility->CrValue( KCRUidCommonEngineKeys, + KGSDisplayTxtLang, + value ); + if( KErrNone == errorCode ) + { + errorCode = RProperty::Set( KPSStarterUid, KSSMUILanguagePSKey, value ); + ERROR_1( errorCode, "Failed to set read KSSMUILanguagePSKey PS key %d", errorCode ); + } + else + { + INFO_1( "Failed read KGSDisplayTxtLang CenRep key with error= %d", errorCode ); + } + + INFO_1( "Last selected language is %d", value ); + return value; + } + +// --------------------------------------------------------------------------- +// CSsmLangSelCmd::SetIndividualSettingsToCentRep +// +// --------------------------------------------------------------------------- +// +TInt CSsmLangSelCmd::SetIndividualSettingsToCentRep( const TInt aRegion, const TInt aCollation ) + { + FUNC_LOG; + CRepository* cenrep = NULL; + TRAPD( errorCode, cenrep = CRepository::NewL( KCRUidCommonEngineKeys ) ); + + if ( KErrNone == errorCode ) + { + //Set the Region CR with the given value + errorCode = cenrep->Set( KGSRegion, aRegion ); + if ( KErrNone == errorCode ) + { + //Set the Region PS key which is used in Region SUP + TInt err = RProperty::Set( KPSStarterUid, KSSMRegionPSKey, aRegion ); + ERROR( err, "Failed to Set Region PS key"); + } + else + { + INFO_1( "Failed to Set Region code to CentRep, %d", errorCode ); + } + } + else + { + INFO_1( "Failed to initialize cen rep %d", errorCode ); + } + + if ( KErrNone == errorCode ) + { + //Set the Collation CR with the given value + errorCode = cenrep->Set( KGSCollation, aCollation ); + if ( KErrNone == errorCode ) + { + //Set the Collation PS key which is used in Collation SUP + errorCode = RProperty::Set( KPSStarterUid, KSSMCollationPSKey, aCollation ); + ERROR( errorCode, "Failed to Set Collation PS key " ); + } + else + { + INFO_1( "Failed to Set Collation code to CentRep, %d", errorCode ); + } + } + delete cenrep; + return errorCode; + } + +// --------------------------------------------------------------------------- +// CSsmLangSelCmd::ValidateAndGetSettings +// +// --------------------------------------------------------------------------- +// +TBool CSsmLangSelCmd::ValidateAndGetSettings( const TInt aLastSelectedLang, TInt& aLastSelectedRegion, TInt& aLastSelectedCollation ) + { + TBool isValid( EFalse ); + //Validate and get the selected settings + TRAPD( errorCode, isValid = ValidateAndGetSettingsL( aLastSelectedLang, aLastSelectedRegion, aLastSelectedCollation ) ); + ERROR_1( errorCode, "Validation failed for the selected Language, region and Collation with error %d", errorCode ); + return isValid; + } + +// --------------------------------------------------------------------------- +// CSsmLangSelCmd::ValidateAndGetSettingsL +// +// --------------------------------------------------------------------------- +// +TBool CSsmLangSelCmd::ValidateAndGetSettingsL( const TInt aLastSelectedLang, TInt& aLastSelectedRegion, TInt& aLastSelectedCollation ) + { + TBool isValid( EFalse ); + + //Get the selected Region and Collation + GetIndividualSettingsFromCentRepL( aLastSelectedRegion, aLastSelectedCollation ); + + //Check whether the selected Language is valid or not + if( IsValid( aLastSelectedLang ) ) + { + if (KSettingAutomatic >= aLastSelectedRegion ) + { + //Selected Region is Automatic. Get the Region associated + //with the Language being loaded + if( ValidateAndGetMappedRegion( aLastSelectedLang, aLastSelectedRegion ) ) + { + isValid = ETrue; + } + } + else if( IsRegionValidL( aLastSelectedRegion ) ) + { + //Selected Region is a valid Region + isValid = ETrue; + } + + if ( KSettingAutomatic >= aLastSelectedCollation ) + { + //Collation is not set. Use the language code as the collation code + aLastSelectedCollation = aLastSelectedLang; + } + } + + return isValid; + } + +// --------------------------------------------------------------------------- +// CSsmLangSelCmd::IsValid +// +// --------------------------------------------------------------------------- +// +TBool CSsmLangSelCmd::IsValid( const TInt aLanguage ) const + { + FUNC_LOG; + ASSERT_TRACE( iValidLanguages ); + + TBool valid( EFalse ); + TKeyArrayFix keyProp( 0, ECmpTInt ); + TInt index( KErrNotFound ); + // Returns zero if element is found. + if ( 0 == iValidLanguages->Find( aLanguage, keyProp, index ) ) + { + valid = ETrue; + } + + return valid; + } + +// --------------------------------------------------------------------------- +// CSsmLangSelCmd::GetLanguageFromCentRep +// +// --------------------------------------------------------------------------- +// +TInt CSsmLangSelCmd::GetLanguageFromCentRep() + { + FUNC_LOG; + + TInt lang = iDefaultLanguage; + TInt errorCode = iMapperUtility->CrValue( KCRUidSysLangUtil, + KSysLangUtilSimLanguage, + lang ); + + ERROR_1( errorCode, "Failed to read language code from CenRep %d", + errorCode ); + return lang; + } + +// --------------------------------------------------------------------------- +// CSsmLangSelCmd::IsRegionValidL +// +// --------------------------------------------------------------------------- +// +TBool CSsmLangSelCmd::IsRegionValidL( const TInt aRegion ) const + { + FUNC_LOG; + TInt index = iRegionsArray.FindL(TLanguageRegion(0, aRegion), &::RegionLangMappingIdentityRelation); + + return ETrue; + } + +// --------------------------------------------------------------------------- +// CSsmLangSelCmd::ValidRegionAndGetMappedLanguage +// +// --------------------------------------------------------------------------- +// +TBool CSsmLangSelCmd::ValidateAndGetMappedRegion( const TInt aLanguage, TInt& aRegion ) + { + FUNC_LOG; + + TBool valid( EFalse ); + TLanguageRegion lang( aLanguage ); + + //Find the Language - Region mapping for the given Language + TInt index = iRegionsArray.Find( lang, &::LangRegionMappingIdentityRelation ); + if( 0 <= index ) + { + //Set the Region associated with the given Language + aRegion = iRegionsArray[index].iRegion; + INFO_1( "ValidRegionAndGetMappedLanguage:: Found region %d", aRegion); + valid = ETrue; + } + else + { + INFO_1( "ValidRegionAndGetMappedLanguage:: Not Found region for lang %d", aLanguage); + } + + return valid; + } + +// --------------------------------------------------------------------------- +// CSsmLangSelCmd::GetIndividualSettingsFromCentRepL +// +// --------------------------------------------------------------------------- +// +void CSsmLangSelCmd::GetIndividualSettingsFromCentRepL( TInt& aRegion, TInt& aCollation ) + { + FUNC_LOG; + CRepository* cenrep = CRepository::NewL( KCRUidCommonEngineKeys ); + CleanupStack::PushL( cenrep ); + + //Get the last selected Region from central repository + User::LeaveIfError(cenrep->Get( KGSRegion, aRegion)); + + //Set the Region PS key which is used in Region SUP + User::LeaveIfError(RProperty::Set( KPSStarterUid, KSSMRegionPSKey, aRegion )); + + //Get the last selected Collation from central repository + User::LeaveIfError(cenrep->Get( KGSCollation, aCollation)); + + //Set the Collation PS key which is used in Collation SUP + User::LeaveIfError(RProperty::Set( KPSStarterUid, KSSMCollationPSKey, aCollation )); + + INFO_2( "Last selected region %d and collation %d", aRegion, aCollation ); + CleanupStack::PopAndDestroy( cenrep ); + } + +// --------------------------------------------------------------------------- +// CSsmLangSelCmd::ValidateAndUseDefaultLanguage +// +// --------------------------------------------------------------------------- +// +TInt CSsmLangSelCmd::ValidateAndUseDefaultLanguage() + { + FUNC_LOG; + TLanguageRegion langRegion; + + //Get the Region associated with default Language + TRAPD( error, langRegion = iLangRegionMappingHashSet.FindL( TLanguageRegion( iDefaultLanguage ) ) ); + if( KErrNone == error ) + { + //Load the settings for default Language + error = UseLocale( iDefaultLanguage, langRegion.iRegion, iDefaultLanguage ); + ERROR_1( error, "Failed to load default language setting %d", error ); + } + else + { + INFO_1( "Failed to find the Region associated with default Language %d", error ); + } + + if ( iClientStatus ) + { + ERROR_1( error, "Language selection custom command completed with error %d", error ); + User::RequestComplete( iClientStatus, error ); + iClientStatus = NULL; + } + + return error; + } + +// --------------------------------------------------------------------------- +// CSsmLangSelCmd::UseLocale +// +// --------------------------------------------------------------------------- +// +TInt CSsmLangSelCmd::UseLocale( const TInt aLang, const TInt aRegion, const TInt aCollation ) + { + FUNC_LOG; + TInt errorCode(KErrNotFound); + + //Load the given Language, Region and Collation DLLs + errorCode = SsmLanguageLoader::LoadLocale( aLang, aRegion, aCollation ); + + if( KErrNone != errorCode ) + { + INFO_1( "Loading failed with error %d", errorCode); + } + else if ( iClientStatus ) + { + User::RequestComplete( iClientStatus, errorCode ); + iClientStatus = NULL; + } + return errorCode; + } + +// --------------------------------------------------------------------------- // CSsmLangSelCmd::RunL // // --------------------------------------------------------------------------- @@ -86,74 +640,41 @@ } } - // --------------------------------------------------------------------------- -// CSsmLangSelCmd::DoCancel +// CSsmLangSelCmd::UseLanguage // // --------------------------------------------------------------------------- // -void CSsmLangSelCmd::DoCancel() - { - FUNC_LOG; - } - - -// --------------------------------------------------------------------------- -// CSsmLangSelCmd::Initialize -// --------------------------------------------------------------------------- -// -TInt CSsmLangSelCmd::Initialize( CSsmCustomCommandEnv* aCmdEnv ) +void CSsmLangSelCmd::UseLanguage( const TInt aLang ) { FUNC_LOG; - - iEnv = aCmdEnv; - TRAPD( errorCode, InitializeL() ); - return errorCode; - } - - -// --------------------------------------------------------------------------- -// CSsmLangSelCmd::Execute -// --------------------------------------------------------------------------- -// -void CSsmLangSelCmd::Execute( - const TDesC8& /*aParams*/, - TRequestStatus& aRequest ) - { - FUNC_LOG; - - ASSERT_TRACE( !iClientStatus ); - ASSERT_TRACE( !IsActive() ); - ASSERT_TRACE( iEnv ); + TInt errorCode = KErrNotFound; + TInt region = KErrNotFound; - aRequest = KRequestPending; - iClientStatus = &aRequest; - - - RFs* fsSession = &( const_cast( iEnv->Rfs() ) ); - TInt errorCode = SysLangUtil::GetDefaultLanguage( iDefaultLanguage, - fsSession ); - ERROR( errorCode, "Failed to get default language" ); - - TInt lastSelectedLang = GetLastSelectedLang(); - // Revert to automatic selection if fetching last used language - // fails, last used language is not valid (and obviously when last - // selection is automatic). - if ( lastSelectedLang == 0 ) + //Validate and get associated Region + if( ValidateAndGetMappedRegion( aLang, region ) ) { - PrepareNextList(); - } - else if ( IsValid( lastSelectedLang ) ) - { - UseLanguage( lastSelectedLang ); + errorCode = SsmLanguageLoader::LoadLocale( aLang, region, aLang ); } else { - UseLanguage( iDefaultLanguage ); - } + INFO_1( "Validation failed for the language (auto) %d", aLang ); + } + + if( KErrNone != errorCode ) + { + INFO_1( "Loading the auto settings failed with error %d", errorCode ); + + //Use the default setting as the selected one failed + errorCode = ValidateAndUseDefaultLanguage(); + } + else if ( iClientStatus ) + { + User::RequestComplete( iClientStatus, errorCode ); + iClientStatus = NULL; + } } - // --------------------------------------------------------------------------- // CSsmLangSelCmd::ExecuteCancel // --------------------------------------------------------------------------- @@ -165,6 +686,27 @@ Cancel(); } +// --------------------------------------------------------------------------- +// CSsmLangSelCmd::DoCancel +// +// --------------------------------------------------------------------------- +// +void CSsmLangSelCmd::DoCancel() + { + FUNC_LOG; + + //Cancel the pending request with misc adaptation + if( EQueryListNone != iState ) + { + iAdaptation.Cancel(); + } + + if ( iClientStatus ) + { + User::RequestComplete( iClientStatus, KErrCancel ); + iClientStatus = NULL; + } + } // --------------------------------------------------------------------------- // CSsmLangSelCmd::Close @@ -175,7 +717,8 @@ FUNC_LOG; delete iValidLanguages; iValidLanguages = NULL; - + iRegionsArray.Close(); + iLangRegionMappingHashSet.Close(); iAdaptation.Close(); } @@ -190,95 +733,6 @@ delete this; } -// --------------------------------------------------------------------------- -// CSsmLangSelCmd::CSsmLangSelCmd -// --------------------------------------------------------------------------- -// - -CSsmLangSelCmd::CSsmLangSelCmd() - : CActive( EPriorityNormal ) - { - FUNC_LOG; - - CActiveScheduler::Add( this ); - } - - -// --------------------------------------------------------------------------- -// CSsmLangSelCmd::ConstructL -// --------------------------------------------------------------------------- -// -void CSsmLangSelCmd::ConstructL() - { - iMapperUtility = CSsmMapperUtility::NewL(); - } - - -// --------------------------------------------------------------------------- -// CSsmLangSelCmd::InitializeL -// --------------------------------------------------------------------------- -// -void CSsmLangSelCmd::InitializeL() - { - - FUNC_LOG; - ASSERT_TRACE( iEnv ); - - iValidLanguages = new ( ELeave ) CArrayFixFlat( - KLanguageListGranularity ); - RFs* fsSession = &( const_cast( iEnv->Rfs() ) ); - TInt errorCode = SysLangUtil::GetInstalledLanguages( iValidLanguages, - fsSession ); - - ERROR( errorCode, "Failed to get installed languages" ); - User::LeaveIfError( errorCode ); - - errorCode = iAdaptation.Connect(); - ERROR( errorCode, "Failed to connect to RSsmMiscAdaptation" ); - User::LeaveIfError( errorCode ); - } - -// --------------------------------------------------------------------------- -// CSsmLangSelCmd::GetLastSelectedLang -// -// --------------------------------------------------------------------------- -// -TInt CSsmLangSelCmd::GetLastSelectedLang() - { - FUNC_LOG; - - TInt value( 0 ); - TInt errorCode = iMapperUtility->CrValue( KCRUidCommonEngineKeys, - KGSDisplayTxtLang, - value ); - - ERROR( errorCode, "Failed read KGSDisplayTxtLang CenRep key" ); - INFO_1( "Last selected language = %d", value ); - return value; - } - - -// --------------------------------------------------------------------------- -// CSsmLangSelCmd::IsValid -// -// --------------------------------------------------------------------------- -// -TBool CSsmLangSelCmd::IsValid( const TInt aLanguage ) const - { - FUNC_LOG; - ASSERT_TRACE( iValidLanguages ); - - TBool valid( EFalse ); - TKeyArrayFix keyProp( 0, ECmpTInt ); - TInt index( KErrNotFound ); - // Returns zero if element is found. - if ( 0 == iValidLanguages->Find( aLanguage, keyProp, index ) ) - { - valid = ETrue; - } - return valid; - } - // --------------------------------------------------------------------------- // CSsmLangSelCmd::PrepareNextList @@ -329,7 +783,6 @@ } } - // --------------------------------------------------------------------------- // CSsmLangSelCmd::InterpretResult // @@ -437,7 +890,6 @@ } } - // --------------------------------------------------------------------------- // CSsmLangSelCmd::StoreLanguageToCentRep // @@ -459,49 +911,3 @@ delete cenrep; } } - - -// --------------------------------------------------------------------------- -// CSsmLangSelCmd::GetLanguageFromCentRep -// -// --------------------------------------------------------------------------- -// -TInt CSsmLangSelCmd::GetLanguageFromCentRep() - { - FUNC_LOG; - - TInt lang = iDefaultLanguage; - TInt errorCode = iMapperUtility->CrValue( KCRUidSysLangUtil, - KSysLangUtilSimLanguage, - lang ); - - ERROR_1( errorCode, "Failed to read language code from CenRep %d", - errorCode ); - return lang; - } - - -// --------------------------------------------------------------------------- -// CSsmLangSelCmd::UseLanguage -// -// --------------------------------------------------------------------------- -// -void CSsmLangSelCmd::UseLanguage( const TInt aLang ) - { - FUNC_LOG; - - TInt errorCode = aLang; - if ( aLang > KErrNone ) - { - errorCode = SsmLanguageLoader::LoadLanguage( aLang ); - ERROR( errorCode, "Failed to load language" ); - } - - ERROR( errorCode, "Language selection failed" ); - - if ( iClientStatus ) - { - User::RequestComplete( iClientStatus, errorCode ); - } - } - diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/syslangutil/ssmlangselcmd/src/ssmlanguageloader.cpp --- a/sysstatemgmt/syslangutil/ssmlangselcmd/src/ssmlanguageloader.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/syslangutil/ssmlangselcmd/src/ssmlanguageloader.cpp Thu Jun 24 11:22:10 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" @@ -20,39 +20,11 @@ #include #include "ssmlanguageloader.h" +#include "ssmcommonlocale.h" #include "trace.h" -_LIT( KLocaleDllNameBase, "ELOCL" ); -_LIT( KLocaleDllExtensionFormat, ".%u" ); -_LIT( KLocaleDllExtensionPadding, "0" ); -_LIT( KDefaultLocaleDllNameExtension, ".LOC" ); -const TInt KMaxLocaleDllNameLength = 16; -const TInt KMaxLocaleDllExtensionLength = 6; -const TInt KMinLocaleDllExtensionLength = 3; -const TInt KLocaleDllExtensionPaddingPosition = 1; - // ======== MEMBER FUNCTIONS ======== -// --------------------------------------------------------------------------- -// SsmLanguageLoader::LoadLanguage -// -// --------------------------------------------------------------------------- -// -TInt SsmLanguageLoader::LoadLanguage( const TInt aLanguage ) - { - FUNC_LOG; - INFO_1( "Loading language %d", aLanguage ); - - TInt errorCode = StoreLanguageToHal( aLanguage ); - ERROR( errorCode, "Failed to store language code to HAL" ); - - errorCode = LoadLocaleDll( aLanguage ); - ERROR( errorCode, "Failed to load locale DLL" ); - - return errorCode; - } - - // ----------------------------------------------------------------------------- // SsmLanguageLoader::StoreLanguageToHal // @@ -67,70 +39,96 @@ } -// ----------------------------------------------------------------------------- -// SsmLanguageLoader::LoadLocaleDll +// --------------------------------------------------------------------------- +// SsmLanguageLoader::LoadLocale // -// ----------------------------------------------------------------------------- +// --------------------------------------------------------------------------- // -TInt SsmLanguageLoader::LoadLocaleDll( const TInt aLanguage ) +TInt SsmLanguageLoader::LoadLocale( const TInt aLanguage, const TInt aRegion, const TInt aCollation) { FUNC_LOG; - // Dot plus five digit locale - TBuf extension; - extension.Format( KLocaleDllExtensionFormat, aLanguage ); - - // Padd ".1" to ".01" for compatibility. - if ( extension.Length() < KMinLocaleDllExtensionLength ) + TInt errorCode = StoreLanguageToHal( aLanguage ); + ERROR( errorCode, "Failed to store language code to HAL" ); + + //Format the language dll to be loaded + //Dot plus four to six digit locale + TBuf extension; + extension.Format( KDllExtensionFormat, aLanguage ); + + //Padd with zero to make the file extension length to be minimum of four + for( ; extension.Length() < KMinDllExtensionLength ;) { - extension.Insert( KLocaleDllExtensionPaddingPosition, - KLocaleDllExtensionPadding ); - } - - TBuf localeDllName; - localeDllName = KLocaleDllNameBase; - localeDllName.Append( extension ); - - INFO_1( "Loading DLL named '%S'", &localeDllName ); - - TInt errorCode = ChangeLocale( localeDllName ); - - if ( errorCode == KErrNotFound ) // Try default locale - { - INFO( "SsmLanguageLoader: Loading default locale" ); - - localeDllName = KLocaleDllNameBase; - localeDllName.Append( KDefaultLocaleDllNameExtension ); - - errorCode = ChangeLocale( localeDllName ); + extension.Insert( KDllExtensionPaddingPosition, KDllExtensionPadding ); } + TBuf languageDllName( KLanguageDllNameBase ); + languageDllName.Append( extension ); + INFO_1( "Loading language DLL named '%S'", &languageDllName ); + + //Format the region dll to be loaded + //Dot plus four to six digit locale + extension.Zero(); + extension.Format( KDllExtensionFormat, aRegion ); + + //Padd with zero to make the file extension length to be minimum of four + for( ; extension.Length() < KMinDllExtensionLength ;) + { + extension.Insert( KDllExtensionPaddingPosition, KDllExtensionPadding ); + } + + TBuf regionDllName( KRegionDllNameBase ); + regionDllName.Append( extension ); + INFO_1( "Loading Region DLL named '%S'", ®ionDllName ); + + + //Format the collation file to be loaded + //Dot plus four to six digit locale + extension.Zero(); + extension.Format( KDllExtensionFormat, aCollation ); + + //Padd with zero to make the file extension length to be minimum of four + for( ; extension.Length() < KMinDllExtensionLength ;) + { + extension.Insert( KDllExtensionPaddingPosition, KDllExtensionPadding ); + } + + TBuf collationDllName( KCollationDllNameBase ); + collationDllName.Append( extension ); + INFO_1( "Loading Collation DLL named '%S'", &collationDllName ); + + //Load the given Language, Region and Collation dlls + errorCode = ChangeLocale( languageDllName, regionDllName, collationDllName ); if ( errorCode == KErrNone ) { TLocale().Set(); } - return errorCode; } - -// ----------------------------------------------------------------------------- +// --------------------------------------------------------------------------- // SsmLanguageLoader::ChangeLocale // -// ----------------------------------------------------------------------------- +// --------------------------------------------------------------------------- // -TInt SsmLanguageLoader::ChangeLocale( const TDesC& aLocaleDllName ) +TInt SsmLanguageLoader::ChangeLocale( const TDesC& aLanguageDllName, const TDesC& aRegionDllName, const TDesC& aCollationDllName ) { FUNC_LOG; + TExtendedLocale extLocale; - TExtendedLocale extLocale; - TInt errorCode = extLocale.LoadLocale( aLocaleDllName ); - ERROR( errorCode, "Failed to load locale" ); - + INFO_3( "Loading Language dll '%S', Region dll '%S' and Collation dll '%S'", + &aLanguageDllName, &aRegionDllName, &aCollationDllName ); + TInt errorCode = extLocale.LoadLocale( aLanguageDllName, aRegionDllName, aCollationDllName); if ( errorCode == KErrNone ) { + //Save the loaded locale settings errorCode = extLocale.SaveSystemSettings(); - ERROR( errorCode, "Failed to set locale" ); + ERROR( errorCode, "Failed to save locale settings" ); + } + else + { + INFO_3( "Failed to load Language dll '%S', Region dll '%S' and Collation dll '%S'", + &aLanguageDllName, &aRegionDllName, &aCollationDllName ); } return errorCode; diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstarter/documentation/9.5/SSA HowTo Diagrams.ppt Binary file sysstatemgmt/systemstarter/documentation/9.5/SSA HowTo Diagrams.ppt has changed diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstarter/group/app-framework_sysstart.mrp --- a/sysstatemgmt/systemstarter/group/app-framework_sysstart.mrp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstarter/group/app-framework_sysstart.mrp Thu Jun 24 11:22:10 2010 +0100 @@ -1,3 +1,19 @@ +# +# Copyright (c) 2009 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: +# + component app-framework_sysstart source \sf\os\devicesrv\sysstatemgmt\systemstarter binary \sf\os\devicesrv\sysstatemgmt\systemstarter\group all diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstarter/test/testappgood/testappgood_reg.rss --- a/sysstatemgmt/systemstarter/test/testappgood/testappgood_reg.rss Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstarter/test/testappgood/testappgood_reg.rss Thu Jun 24 11:22:10 2010 +0100 @@ -29,4 +29,4 @@ // filename of application binary (minus extension) app_file="testappgood"; } - \ No newline at end of file + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstarter/test/tsysstart/inc/appfwk_sysstart_test_dll.rh --- a/sysstatemgmt/systemstarter/test/tsysstart/inc/appfwk_sysstart_test_dll.rh Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstarter/test/tsysstart/inc/appfwk_sysstart_test_dll.rh Thu Jun 24 11:22:10 2010 +0100 @@ -41,5 +41,3 @@ WORD arg2 = 22; WORD arg3 = 23; } - - \ No newline at end of file diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/cle/src/cmdlistexecutor.cpp --- a/sysstatemgmt/systemstatemgr/cle/src/cmdlistexecutor.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/cle/src/cmdlistexecutor.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-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" @@ -198,6 +198,7 @@ if (iCommandList) { iCommandList->DeferredDelete(); + iCommandList = NULL; } } diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/cmd/inc/ssmcommandlistresourcereaderimpl.h --- a/sysstatemgmt/systemstatemgr/cmd/inc/ssmcommandlistresourcereaderimpl.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/cmd/inc/ssmcommandlistresourcereaderimpl.h Thu Jun 24 11:22:10 2010 +0100 @@ -55,7 +55,8 @@ EInitialiseNextStep, EInitialiseSysDriveStep, EPrepareFirstStep, - EPrepareNextStep + EPrepareNextStep, + EInitialiseExtFolderStep }; NONSHARABLE_CLASS(TMapping) @@ -118,6 +119,9 @@ void DoInitialiseNextStepL(); #ifdef SYMBIAN_SSM_FLEXIBLE_MERGE void DoInitialiseSysDriveStepL(); +#ifdef __WINS__ + void DoInitialiseExtFolderStepL(); +#endif #endif CResourceFile* OpenResourceFileL(const TDesC& aFileName); void ParseFileL(CResourceFile* aResourceFile); @@ -135,6 +139,12 @@ RBuf iSystemDrivePath; CDir* iRssFileEntriesInSysDrive; TInt iSysDriveEntryIndex; +#ifdef __WINS__ + CDir* iExtendedResourceFileEntries; + RBuf iExtendedPath; + TInt iExtendedEntryIndex; +#endif //__WINS__ + #endif //SYMBIAN_SSM_FLEXIBLE_MERGE }; diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/cmd/src/ssmcommandfactory.cpp --- a/sysstatemgmt/systemstatemgr/cmd/src/ssmcommandfactory.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/cmd/src/ssmcommandfactory.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -333,7 +333,7 @@ { CSsmCommandBase* cmd = NULL; TSsmCommandType const cmdType = aSsmCommand.Type(); - DEBUGPRINT2A("Adding command type in CLE commandlist: %d", cmdType); + DEBUGPRINT2A("Adding command type in CLE commandlist: %d", cmdType); switch(cmdType) { diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/cmd/src/ssmcommandlistimpl.cpp --- a/sysstatemgmt/systemstatemgr/cmd/src/ssmcommandlistimpl.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/cmd/src/ssmcommandlistimpl.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -237,8 +237,6 @@ //@panic ECmdNullPtr if the information used to create command is null void CSsmCommandListImpl::Execute( const TInt aIndex, TRequestStatus& aStatus ) { - DEBUGPRINT2A("CSsmCommandListImpl::Execute - List Count() = %d", Count()); - __ASSERT_DEBUG( __IN_RANGE(aIndex, iCmdList.Count()), PanicNow(KPanicCmdList, ECmdListBadIdx)); __ASSERT_DEBUG( iCmdList[ aIndex ], PanicNow(KPanicCmdList, ECmdNullPtr)); @@ -333,9 +331,9 @@ SSMLOGLEAVE(KErrArgument); } - const TSsmCommandType cmdType = aCmd->Type(); + const TSsmCommandType cmdType = aCmd->Type(); DEBUGPRINT2A("Adding command type: %d", cmdType); - + if (ESsmCmdPublishSystemState == cmdType) { ++iPublishSysStateCmdCount; diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/cmd/src/ssmcommandlistresourcereader.cpp --- a/sysstatemgmt/systemstatemgr/cmd/src/ssmcommandlistresourcereader.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/cmd/src/ssmcommandlistresourcereader.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -19,6 +19,7 @@ #include "ssmpanic.h" #include "ssmcommandlistresourcereaderimpl.h" #include "ssmcommandlistimpl.h" +#include "ssmdebug.h" /** Constructs a new command list resource reader object. @@ -207,6 +208,7 @@ EXPORT_C CSsmCommandList* CSsmCommandListResourceReader::GetCommandList() { __ASSERT_DEBUG(iImpl->IsCommandListReady(), PanicNow(KPanicCmdResourceReader, ENoPreparedCommandList)); + DEBUGPRINT2A("CSsmCommandListResourceReader::GetCommandList - List Count() = %d", iCommandList->Count()); CSsmCommandList* const commandList = iCommandList; iCommandList = NULL; // return ownership of command list to the caller return commandList; diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/cmd/src/ssmcommandlistresourcereaderimpl.cpp --- a/sysstatemgmt/systemstatemgr/cmd/src/ssmcommandlistresourcereaderimpl.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/cmd/src/ssmcommandlistresourcereaderimpl.cpp Thu Jun 24 11:22:10 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" @@ -29,7 +29,25 @@ #include "ssmpanic.h" #ifdef SYMBIAN_SSM_FLEXIBLE_MERGE #include "ssmcommandlistimpl.h" -#endif +#ifdef __WINS__ +#include + +//Literal to be appended with the main folder path to get the extended folder path +_LIT(KExtendedCommandListPath, "_ext\\"); + +//Used for checking the presence of keyword for using extended folder in epoc.ini +static TBool IsExtendedFolderDisabled() + { + TBool isMinimalBootDisable = EFalse; + + //If the keyword "MINIMALSTART" is found in epoc.ini then only commands from main folder are + //executed else commands from both main and extended folder are executed. + UserSvr::HalFunction(EHalGroupEmulator, EEmulatorHalBoolProperty, (TAny*)"MINIMALSTART", &isMinimalBootDisable); + return isMinimalBootDisable; + } +#endif // __WINS__ +#endif //SYMBIAN_SSM_FLEXIBLE_MERGE + CSsmCommandListResourceReaderImpl* CSsmCommandListResourceReaderImpl::NewL(RFs& aFs, const TDesC& aCommandListPath, MSsmConditionalCallback& aConditionalCallback) { @@ -180,7 +198,7 @@ break; } } - DEBUGPRINT3(_L("Mapping Array for substate %d Contains %d entries"), iMappings[mappingIndex].iCommandListId, aMappingArray.Count()); + DEBUGPRINT3(_L("Mapping Array for substate %04x Contains %d entries"), iMappings[mappingIndex].iCommandListId, aMappingArray.Count()); } #else @@ -276,6 +294,9 @@ CSsmCommandListResourceReaderImpl::CInitialiser::CInitialiser(RFs& aFs, CResourcePool& aResourcePool) :CActiveBase(EPriorityStandard), iFs(aFs), iResourcePool(aResourcePool) +#if defined(SYMBIAN_SSM_FLEXIBLE_MERGE) && defined(__WINS__) + , iExtendedEntryIndex(0) +#endif //SYMBIAN_SSM_FLEXIBLE_MERGE && __WINS__ { CActiveScheduler::Add(this); } @@ -287,6 +308,10 @@ iPath.Close(); #ifdef SYMBIAN_SSM_FLEXIBLE_MERGE iSystemDrivePath.Close(); +#ifdef __WINS__ + iExtendedPath.Close(); +#endif //__WINS__ + #endif } @@ -300,6 +325,10 @@ #ifdef SYMBIAN_SSM_FLEXIBLE_MERGE delete iRssFileEntriesInSysDrive; iRssFileEntriesInSysDrive = NULL; +#ifdef __WINS__ + delete iExtendedResourceFileEntries; + iExtendedResourceFileEntries = NULL; +#endif //__WINS__ #endif } @@ -351,7 +380,12 @@ #ifdef SYMBIAN_SSM_FLEXIBLE_MERGE case EInitialiseSysDriveStep: DoInitialiseSysDriveStepL(); - break; + break; +#ifdef __WINS__ + case EInitialiseExtFolderStep: + DoInitialiseExtFolderStepL(); + break; +#endif //__WINS__ #endif default: PanicNow(KPanicCmdResourceReader, EInvalidRunLAction); @@ -404,6 +438,24 @@ iEntryIndex = iResourceFileEntries->Count(); #ifdef SYMBIAN_SSM_FLEXIBLE_MERGE +#ifdef __WINS__ + if(!IsExtendedFolderDisabled()) + { + TFileName extPath(iPath); + extPath.Replace(iPath.Length() - 1, 1, KExtendedCommandListPath); + iExtendedPath.CreateL(extPath); + DEBUGPRINT2(_L("Extended list path is %S"), &extPath); + + extPath.Append(KStar); + const TInt extErr = (iFs.GetDir(extPath, TUidType(KUidResourceFile, TUid::Uid(KUidSsmCommandListResourceFile)), ESortNone, iExtendedResourceFileEntries)); + if (KErrNone == extErr) + { + iExtendedEntryIndex = iExtendedResourceFileEntries->Count(); + DEBUGPRINT2(_L("Number of resource files in extended folder : %d"), iExtendedEntryIndex); + } + } +#endif //__WINS__ + DEBUGPRINT2(_L("Number of resource files in ROM Drive : %d"),iEntryIndex ); // Now, get list of command list resource filenames from system drive too TFileName sysPath(iSystemDrivePath); @@ -471,16 +523,44 @@ } else { - // initialisation complete - iAction = EIdle; - delete iRssFileEntriesInSysDrive; - iRssFileEntriesInSysDrive = NULL; + iAction = EIdle; + delete iRssFileEntriesInSysDrive; + iRssFileEntriesInSysDrive = NULL; + +#ifdef __WINS__ + if(!IsExtendedFolderDisabled()) + { + //Initialise the command list from extended list only if it is enabled + iAction = EInitialiseExtFolderStep; + } +#endif //__WINS__ } } -#endif + +#ifdef __WINS__ +void CSsmCommandListResourceReaderImpl::CInitialiser::DoInitialiseExtFolderStepL() + { + //Append the file names from the extended folder only if it is enabled + if (iExtendedEntryIndex--) + { + TFileName filename(iExtendedPath); + filename.Append((*iExtendedResourceFileEntries)[iExtendedEntryIndex].iName); + CResourceFile* const resourceFile = OpenResourceFileL(filename); + ParseFileL(resourceFile); + } + else + { + // initialisation complete + iAction = EIdle; + delete iExtendedResourceFileEntries; + iExtendedResourceFileEntries = NULL; + } + } +#endif //__WINS__ +#endif //SYMBIAN_SSM_FLEXIBLE_MERGE + CResourceFile* CSsmCommandListResourceReaderImpl::CInitialiser::OpenResourceFileL(const TDesC& aFileName) { - // open the resource file RFile file; CleanupClosePushL(file); @@ -721,6 +801,12 @@ inProgress = EFalse; break; } + else if((iCommandIndexInRssFile[iCurrentCommandListInMapping] == 0)) + { + //The current commandlist is empty + //go to the next commandlist in the mapping. + continue; + } else { //open the next resource id and read the commands @@ -733,7 +819,6 @@ iListReader.AdvanceL(sizeof(TUint16)); } } - DEBUGPRINT2A("The value of RssFile's current command is %d ", iCommandIndexInRssFile[iCurrentCommandListInMapping]); #else while(iCommandIndex && iBatchIndex--) { @@ -741,7 +826,6 @@ #endif // open command resource const TInt commandResourceId = iListReader.ReadInt32L(); - DEBUGPRINT2A("Reading command resource id %x", commandResourceId); RResourceReader commandReader; #ifdef SYMBIAN_SSM_FLEXIBLE_MERGE commandReader.OpenLC(iMappingArray[iCurrentCommandListInMapping].iResourceFile, commandResourceId); diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/group/app-framework_ssma.mrp --- a/sysstatemgmt/systemstatemgr/group/app-framework_ssma.mrp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/group/app-framework_ssma.mrp Thu Jun 24 11:22:10 2010 +0100 @@ -1,3 +1,19 @@ +# +# Copyright (c) 2009 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: +# + component app-framework_ssma source \sf\os\devicesrv\sysstatemgmt\systemstatemgr binary \sf\os\devicesrv\sysstatemgmt\systemstatemgr\group all diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/inc/ssmadaptationcli.h --- a/sysstatemgmt/systemstatemgr/inc/ssmadaptationcli.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/inc/ssmadaptationcli.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-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,8 +36,12 @@ public: IMPORT_C TInt Connect(); IMPORT_C TInt Connect(TInt aAsyncMessageSlotCount); + //Used by testcode only +#ifdef TEST_SSM_SERVER + TInt Connect(const TDesC& aServerName); +#endif //TEST_SSM_SERVER private: - TInt DoConnect(TInt aAsyncMessageSlotCount); + TInt DoConnect(const TDesC& aServerName, TInt aAsyncMessageSlotCount); TVersion Version() const; }; diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/ssm/group/ssmserver.mmp --- a/sysstatemgmt/systemstatemgr/ssm/group/ssmserver.mmp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/ssm/group/ssmserver.mmp Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/ssm/inc/ssmserver.h --- a/sysstatemgmt/systemstatemgr/ssm/inc/ssmserver.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/ssm/inc/ssmserver.h Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/ssm/src/ssmserver.cpp --- a/sysstatemgmt/systemstatemgr/ssm/src/ssmserver.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/ssm/src/ssmserver.cpp Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/sus/inc/ssmadaptationcmn.h --- a/sysstatemgmt/systemstatemgr/sus/inc/ssmadaptationcmn.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/sus/inc/ssmadaptationcmn.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-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" @@ -30,13 +30,11 @@ TInt Int0() const; void ReadL(TInt aParamNumber,TPtr8 aParam); TInt GetDesLength(TInt aParam); + void SetMessage(const RMessage2& aMessage); private: RMessage2 iMessage; - TBool iMessageAvailable; public : - TSusAdaptionServerRequests iRequestType; - //To know whether the object is created using reserved heap or not. - TBool iUsingReservedHeap; + TSusAdaptionServerRequests iRequestType; }; class RSsmAdaptationRequestQueue @@ -48,14 +46,11 @@ void RemoveFromQueueAndComplete(const RMessage2 &aMessage); TInt Queue(CAdaptationMessage *aPendingRequest); void NotifyAndRemoveAll(); - void RemoveFromQueueAndComplete(const RMessage2 &aMessage, RHeap *aReservedHeap); - void NotifyAndRemoveAll(RHeap *aReservedHeap); - TInt Reserve(TInt aReserverCount); - TInt Count(); - + TInt Count(); private: RPointerArray iQueue; }; + #endif __SSMADAPTATIONCMN_H__ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/sus/inc/susadaptionserver.h --- a/sysstatemgmt/systemstatemgr/sus/inc/susadaptionserver.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/sus/inc/susadaptionserver.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-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" @@ -37,6 +37,8 @@ { public: static CSsmAdaptationServer* NewLC(); + static CSsmAdaptationServer* NewLC(const TDesC& aServerName); + ~CSsmAdaptationServer(); //State Adaptation services @@ -73,7 +75,7 @@ void DoDeactivateRfForEmergencyCallL(const RMessage2& aMessage); void DoEmergencyCallRfCancelL(const RMessage2& aMessage); TInt SetAsPriorityClientL(CSsmAdaptationSession* aSession); - void RemovePriorityClient(CSsmAdaptationSession* aSession); + void RemovePriorityClient(CSsmAdaptationSession* aSession); #ifdef _DEBUG void UnloadAdaptationsAndObservers(); #endif @@ -86,7 +88,7 @@ //From Policy Server CPolicyServer::TCustomResult CustomSecurityCheckL(const RMessage2& aMsg, TInt& aAction, TSecurityInfo& aMissing); CSsmAdaptationServer(); - void ConstructL(); + void ConstructL(const TDesC& aServerName); //from CServer2 CSession2* NewSessionL(const TVersion& aVersion, const RMessage2& aMessage) const; void LoadStateAdaptationL(); diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/sus/inc/susemergencycallrfadaptation.h --- a/sysstatemgmt/systemstatemgr/sus/inc/susemergencycallrfadaptation.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/sus/inc/susemergencycallrfadaptation.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-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" @@ -37,12 +37,11 @@ @internalComponent */ - - +class CEmergencyAdaptationMessage; class CEmergencyCallRfAdaptation : public CActive { public: - static CEmergencyCallRfAdaptation* NewL(MEmergencyCallRfAdaptation& aAdaptation); + static CEmergencyCallRfAdaptation* NewL(MEmergencyCallRfAdaptation* aAdaptation); ~CEmergencyCallRfAdaptation(); void Release(); @@ -52,38 +51,71 @@ void SetPriorityClientSession(CSsmAdaptationSession* aPriorityClientSession); void RemovePriorityClientSession(); void ReserveMemoryL(); + void DeleteAdaptationMessage(); + void NotifyAndRemoveAll(); + void Dequeue(CEmergencyAdaptationMessage *&aCurrentMessage); protected: void RunL(); TInt RunError( TInt aError ); void DoCancel(); + void ConstructL(MEmergencyCallRfAdaptation* aAdaptation); private: - CEmergencyCallRfAdaptation(MEmergencyCallRfAdaptation& aAdaptation); + CEmergencyCallRfAdaptation(); void SubmitOrQueueL(const RMessage2 &aMessage); - void Submit(CAdaptationMessage*& aMessage); + void Submit(CEmergencyAdaptationMessage*& aMessage); private: - CAdaptationMessage *iCurrentMessage; - RSsmAdaptationRequestQueue iPendingRequestsQueue; + CEmergencyAdaptationMessage *iCurrentMessage; + RPointerArrayiPendingEmergencyRequestsQueue; - MEmergencyCallRfAdaptation& iEmergencyCallRfAdaptation; - //Reserving Heap to create CAdaptationMessage in OOM condition for priority clients - RHeap* iReservedHeap; + MEmergencyCallRfAdaptation* iEmergencyCallRfAdaptation; //For storing PriorityClientsession CSsmAdaptationSession* iPriorityClientSession; + + //Count of unused reserved pointers. + TInt iReserveMsgCount; + //Pointer Array to store reserved adaptation message pointers + RPointerArray iAdaptationReservedMessageArray; }; +enum TMessageStatus + { + EMsgStatusNULL = 0, //Default status of Message is 0 + EMsgReserved = 1, //Flag to indicate the message is using Reserved memory. + EMsgInUse = 2 //Flag to indicate the Reserved message is Used. + }; /** - * Used for pushing the CAdaptationMessage object in to cleanup stack. This is needed as - * the message is created using the reserved heap should be freed back to reserved heap - * instead of deleting. - * @internalComponent + * Class to hold CAdaptationMessage pointer and the value to know whether the current message is from reserved pool + * or normal message. */ -struct TStoreAdaptationMessage +class CEmergencyAdaptationMessage : public CBase { +public: + static CEmergencyAdaptationMessage* NewL(const RMessage2& aMessage); + static CEmergencyAdaptationMessage* NewL(const RMessage2& aMessage, const TInt8 aMessageStatus); + + ~CEmergencyAdaptationMessage(); + + inline void UnsetMessageStatus(const TInt8 aMessageStatus); + inline void SetMessageStatus(const TInt8 aMessageStatus); + inline TBool IsMessageReserved() const; + inline TBool IsMessageInuse() const; + void SetMessage(const RMessage2& aMessage); + TInt Function() const; + CSession2 *Session() const; + void Complete(TInt aReason); + +protected: + void ConstructL(const RMessage2& aMessage); + +private: + CEmergencyAdaptationMessage(const TInt8 aMessageStatus); + +private: CAdaptationMessage* iAdaptationMessage; - RHeap* iReservedHeap; + // To know the Adaptation Message status. + TInt8 iMessageStatus; }; - #endif // __SUSEMERGENCYCALLRFADAPTATION_H__ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/sus/inc/suspanic.h --- a/sysstatemgmt/systemstatemgr/sus/inc/suspanic.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/sus/inc/suspanic.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-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,7 +36,12 @@ //CSusAdaptionServer errors EAdaptionServerError1, EAdaptionServerError2, - ELibraryAlreadyOpen + ELibraryAlreadyOpen, + + //Emergency Adaptation panic codes + EEmergencyCallRfAdaptationNullPtrError1, + EEmergencyCallRfAdaptationNullPtrError2, + EEmergencyAdaptationMessageNullPtrError }; #endif // __SUSPANICCODES_H__ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/sus/src/ssmadaptationcli.cpp --- a/sysstatemgmt/systemstatemgr/sus/src/ssmadaptationcli.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/sus/src/ssmadaptationcli.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-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" @@ -33,8 +33,7 @@ */ EXPORT_C TInt RSsmAdaptationBase::Connect() { - const TInt err = DoConnect(KAsyncMessageSlots); - return err; + return Connect(KAsyncMessageSlots); } /** @@ -52,15 +51,30 @@ */ EXPORT_C TInt RSsmAdaptationBase::Connect(TInt aAsyncMessageSlotCount) { - const TInt err = DoConnect(aAsyncMessageSlotCount); + const TInt err = DoConnect(KSusAdaptionServerName, aAsyncMessageSlotCount); return err; - } + } + +/** + * This exists for testing purposes only + * @internalComponent + */ +#ifdef TEST_SSM_SERVER -TInt RSsmAdaptationBase::DoConnect(TInt aAsyncMessageSlotCount) +TInt RSsmAdaptationBase::Connect(const TDesC& aServerName) + { + return DoConnect(aServerName, KAsyncMessageSlots); + } +#endif //TEST_SSM_SERVER + +/** + @internalComponent + */ +TInt RSsmAdaptationBase::DoConnect(const TDesC& aServerName, const TInt aAsyncMessageSlotCount) { if(!Handle()) { - return CreateSession(KSusAdaptionServerName, Version(), aAsyncMessageSlotCount); + return CreateSession(aServerName, Version(), aAsyncMessageSlotCount); } return KErrAlreadyExists; diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/sus/src/susadaptionserver.cpp --- a/sysstatemgmt/systemstatemgr/sus/src/susadaptionserver.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/sus/src/susadaptionserver.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-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" @@ -59,8 +59,8 @@ }; //ESetAsPriorityClient request is allowed only for priotity clients(Telephony). Inorder to prevent the access -//client request will be policed using C32 SID -#define KC32SecureId 0x10003D33 +//client request will be policed using C32exe.exe SID +#define KC32SecureId 0x101F7989 /** Array containing the different security checks performed by this server @@ -168,8 +168,7 @@ } -CSsmAdaptationServer::CSsmAdaptationServer( ): CPolicyServer(EPriorityStandard, KSusAdaptionServerPolicy) -,iPriorityClientSession(NULL) +CSsmAdaptationServer::CSsmAdaptationServer(): CPolicyServer(EPriorityStandard, KSusAdaptionServerPolicy) { } @@ -207,15 +206,26 @@ */ CSsmAdaptationServer* CSsmAdaptationServer::NewLC( ) { - CSsmAdaptationServer* server = new(ELeave) CSsmAdaptationServer(); - CleanupStack::PushL (server ); - server->ConstructL ( ); - return server; + return CSsmAdaptationServer::NewLC(KSusAdaptionServerName); } /** + * Overloaded NewLC, which starts the server with the provided name. + @param aServerName - Name of the Server. */ -void CSsmAdaptationServer::ConstructL( ) +CSsmAdaptationServer* CSsmAdaptationServer::NewLC(const TDesC& aServerName) + { + CSsmAdaptationServer* server = new(ELeave) CSsmAdaptationServer(); + CleanupStack::PushL(server); + server->ConstructL(aServerName); + return server; + } + + +/** + * ConstructL() + */ +void CSsmAdaptationServer::ConstructL(const TDesC& aServerName) { __ASSERT_ALWAYS( KErrNone == User::SetCritical(User::ESystemCritical), @@ -225,7 +235,7 @@ User::Panic(KPanicSsmSus, EAdaptionServerError2)); iSusAdaptationPluginLoader = CSusAdaptationPluginLoader::NewL(); - TInt err = Start(KSusAdaptionServerName); + TInt err = Start(aServerName); #ifdef TESTSUSADAPTATIONPLUGINLOAD_OOM if (err != KErrNone && err != KErrAlreadyExists) { @@ -501,12 +511,8 @@ { LoadEmergencyCallRfAdaptationL(); } - iEmergencyCallRfAdaptation->DoEmergencyCallRfAdaptationCancelL(aMessage); } - - - void CSsmAdaptationServer::LoadStateAdaptationL() { @@ -564,11 +570,9 @@ { MEmergencyCallRfAdaptation *emergencyCallRfAdaptationPlugin = iSusAdaptationPluginLoader->CreateEmergencyCallRfAdaptationL(); CleanupReleasePushL(*emergencyCallRfAdaptationPlugin); - //From here emergencyCallRfAdaptationPlugin object will be owned by iEmergencyCallRfAdaptation - iEmergencyCallRfAdaptation = CEmergencyCallRfAdaptation::NewL(*emergencyCallRfAdaptationPlugin); + //From here emergencyCallRfAdaptationPlugin object will be owned by iEmergencyCallRfAdaptation + iEmergencyCallRfAdaptation = CEmergencyCallRfAdaptation::NewL(emergencyCallRfAdaptationPlugin); CleanupStack::Pop(emergencyCallRfAdaptationPlugin); - //Reserve memory for performing Emergency call during OOM condition - iEmergencyCallRfAdaptation->ReserveMemoryL(); } #ifdef _DEBUG @@ -656,15 +660,21 @@ } CAdaptationMessage::CAdaptationMessage(const RMessage2 &aMessage): CBase(),iMessage(aMessage) -,iMessageAvailable(ETrue),iUsingReservedHeap(EFalse) { } void CAdaptationMessage::Complete(TInt aReason) { - iMessage.Complete(aReason); + if (!(iMessage.IsNull())) + { + iMessage.Complete(aReason); + } } +void CAdaptationMessage::SetMessage(const RMessage2& aMessage) + { + iMessage = const_cast (aMessage); + } void RSsmAdaptationRequestQueue::NotifyAndRemoveAll() { @@ -679,26 +689,6 @@ iQueue.Reset(); } -void RSsmAdaptationRequestQueue::NotifyAndRemoveAll(RHeap *aReservedHeap) - { - TInt index,count = iQueue.Count(); - - for(index =0;index < count ;index++) - { - iQueue[index]->Complete(KErrServerTerminated); - if(iQueue[index]->iUsingReservedHeap) - { - aReservedHeap->Free(iQueue[index]); - } - else - { - delete iQueue[index]; - } - iQueue[index] = NULL; - } - iQueue.Reset(); - } - void RSsmAdaptationRequestQueue::Close() { iQueue.Close(); @@ -736,33 +726,6 @@ } -void RSsmAdaptationRequestQueue::RemoveFromQueueAndComplete(const RMessage2 &aMessage, RHeap *aReservedHeap ) - { - - CAdaptationMessage *messageToBeDeleted; - - // iQueue.Count() is recalculated each time as the object is removed from the - // array(which reduces the number of object pointers in the array - for(TInt index = 0; index < iQueue.Count(); ++index ) - { - if(aMessage.Session() == iQueue[index]->Session()) - { - messageToBeDeleted = iQueue[index]; - DEBUGPRINT2A("RSsmAdaptationRequestQueue(aMessage,ReservedHeap)called to cancel the request with function id: %d", messageToBeDeleted->Function()); - iQueue.Remove(index); - messageToBeDeleted->Complete(KErrCancel); - if(messageToBeDeleted->iUsingReservedHeap) - { - aReservedHeap->Free(messageToBeDeleted); - } - else - { - delete messageToBeDeleted; - } - --index; - } - } - } void RSsmAdaptationRequestQueue::Dequeue(CAdaptationMessage *&aCurrentMessage) { aCurrentMessage = iQueue[0]; @@ -773,11 +736,6 @@ return iQueue.Append(aPendingRequest); } -TInt RSsmAdaptationRequestQueue::Reserve(TInt aReserverCount) - { - return(iQueue.Reserve(aReserverCount)); - } - /** * Method to get number of object pointers in the Queue */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/sus/src/susemergencycallrfadaptation.cpp --- a/sysstatemgmt/systemstatemgr/sus/src/susemergencycallrfadaptation.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/sus/src/susemergencycallrfadaptation.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-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" @@ -18,23 +18,27 @@ #include #include #include "susemergencycallrfadaptation.h" +#include "suspanic.h" +//Count to reserve space for one Activate Rf call + one Deactive Rf message in Queue +const TInt KReserveCount = 2; /** - * Function used to cleanup the CAdaptationMessage object which is pushed to cleanup stack incase of Leave - * CAdaptationMessage message will be freed back to reserved heap incase of it is created using reserved heap. + * Function used to cleanup the CAdaptationMessage object which is pushed on to the cleanup stack incase of Leave. + * CAdaptationMessage message will be reset to hold default values, if it is using the precreated message pointer. * or else message will be deleted. */ static void DoCleanUp(TAny* aAdaptationMessage) { - TStoreAdaptationMessage* storeMessage = static_cast (aAdaptationMessage); - if(storeMessage->iAdaptationMessage->iUsingReservedHeap) + CEmergencyAdaptationMessage* storeAdaptationMessage = static_cast (aAdaptationMessage); + storeAdaptationMessage->Complete(KErrNone); + if(storeAdaptationMessage->IsMessageReserved()) { - storeMessage->iReservedHeap->Free(storeMessage->iAdaptationMessage); + storeAdaptationMessage->UnsetMessageStatus(EMsgInUse); } else { - delete storeMessage->iAdaptationMessage; + delete storeAdaptationMessage; } } @@ -43,71 +47,83 @@ */ void CEmergencyCallRfAdaptation::SubmitOrQueueL(const RMessage2 &aMessage) { - CAdaptationMessage *messageCopy = NULL; - TRAPD(err , messageCopy = new(ELeave) CAdaptationMessage(aMessage)); - //Use preallocated heap for creating CAdaptationMessage under OOM condition, if it is a priority client + CEmergencyAdaptationMessage *storeAdaptationMessage = NULL; + TRAPD(err, storeAdaptationMessage = CEmergencyAdaptationMessage::NewL(aMessage)); + + //Allow only priority client to perform emergency call. if (KErrNoMemory == err && aMessage.Session() == iPriorityClientSession) { - DEBUGPRINT1A("CAdaptationMessage will be created using Reserved Heap"); - TAny* messagePtr = iReservedHeap->AllocL(sizeof(CAdaptationMessage)); - messageCopy = new (messagePtr)CAdaptationMessage(aMessage); - messageCopy->iUsingReservedHeap = ETrue; + DEBUGPRINT1A("CEmergencyAdaptationMessage will be created using reserved pointers"); + if ( iReserveMsgCount == 0 ) + { + DEBUGPRINT1A("There is no reserved message to perform emergency call"); + User::Leave(err); + } + //Traverse through the reserved message array to look for free message. + for ( TInt index = 0 ; index < KReserveCount ; ++index ) + { + //Use the reserve message, if it is not already used. + if (!(iAdaptationReservedMessageArray[index]->IsMessageInuse())) + { + iAdaptationReservedMessageArray[index]->SetMessage(aMessage); + iAdaptationReservedMessageArray[index]->SetMessageStatus(EMsgInUse); + storeAdaptationMessage = iAdaptationReservedMessageArray[index]; + --iReserveMsgCount; + break; + } + } } else { User::LeaveIfError(err); } - if(!IsActive()) { - Submit(messageCopy); + Submit(storeAdaptationMessage); } else { - //Store the CAdaptationMessage pointer and iReservedHeap in a struct inorder to cleanup - //depending on the reserved heap/normal heap used. - TStoreAdaptationMessage storeMessage; - storeMessage.iAdaptationMessage = messageCopy; - storeMessage.iReservedHeap = iReservedHeap; - CleanupStack::PushL(TCleanupItem(DoCleanUp, &storeMessage )); + //Push the CEmergencyAdaptationMessage pointer on to the cleanup stack and reset/delete the pointer + //depending on using precreated pointer/new pointer. + CleanupStack::PushL(TCleanupItem(DoCleanUp, storeAdaptationMessage )); DEBUGPRINT2A("CEmergencyCallRfAdaptationRequests queueing request with function id: %d", aMessage.Function()); - //Reserve heap only in non OOM condition - if(messageCopy->iUsingReservedHeap == EFalse) + //Reserve slot only in non OOM condition + if(!(storeAdaptationMessage->IsMessageReserved())) { - //Always reserve 2 slots in queue for Emergency call requests. Slots will be reserved if count - //to request memory(RPointerArray.Reserve(count)) is greater than the existing reserved memory in - //RPonterArray. So there will be memory allocation only when - //iPendingRequestsQueue.Count()+ reserveCount + 1(for the present message)) - // > already reserved memory. - const TInt reserveCount = 2; - err = iPendingRequestsQueue.Reserve(iPendingRequestsQueue.Count() + reserveCount + 1 ); + //Priority clients are allowed to queue only two(KReserveCount) emergengency call request in the OOM condition. + //So always request to reserve only iPendingRequestsQueue.Count()+ iReserveMsgCount + 1 + //slots. + //Memory will be only reserved if (iPendingRequestsQueue.Count()+ iReserveMsgCount + 1) > + //already reserved memory + TRAP(err, iPendingEmergencyRequestsQueue.ReserveL(iPendingEmergencyRequestsQueue.Count() + iReserveMsgCount + 1 )); } if(KErrNone == err || (KErrNoMemory == err && aMessage.Session() == iPriorityClientSession)) { - User::LeaveIfError(iPendingRequestsQueue.Queue(messageCopy)); + iPendingEmergencyRequestsQueue.AppendL(storeAdaptationMessage); } else { User::Leave(err); } - CleanupStack::Pop(&storeMessage); + CleanupStack::Pop(storeAdaptationMessage); } } -void CEmergencyCallRfAdaptation::Submit(CAdaptationMessage*& aMessage) +void CEmergencyCallRfAdaptation::Submit(CEmergencyAdaptationMessage*& aMessage) { + __ASSERT_ALWAYS((iEmergencyCallRfAdaptation != NULL), User::Panic(KPanicSsmSus, EEmergencyCallRfAdaptationNullPtrError1)); DEBUGPRINT2A("CEmergencyCallRfAdaptationRequests immediate submission of request with function id: %d", aMessage->Function()); iCurrentMessage = aMessage; switch(aMessage->Function()) { case EActivateRfForEmergencyCall : { - iEmergencyCallRfAdaptation.ActivateRfForEmergencyCall(iStatus); + iEmergencyCallRfAdaptation->ActivateRfForEmergencyCall(iStatus); break; } case EDeactivateRfForEmergencyCall : { - iEmergencyCallRfAdaptation.DeactivateRfForEmergencyCall(iStatus); + iEmergencyCallRfAdaptation->DeactivateRfForEmergencyCall(iStatus); break; } default : @@ -126,53 +142,80 @@ @internalComponent */ -CEmergencyCallRfAdaptation* CEmergencyCallRfAdaptation::NewL(MEmergencyCallRfAdaptation& aAdaptation) +CEmergencyCallRfAdaptation* CEmergencyCallRfAdaptation::NewL(MEmergencyCallRfAdaptation* aAdaptation) { - CEmergencyCallRfAdaptation* self = new(ELeave) CEmergencyCallRfAdaptation(aAdaptation); - return self; + CEmergencyCallRfAdaptation* self = new(ELeave) CEmergencyCallRfAdaptation(); + CleanupStack::PushL(self); + self->ConstructL(aAdaptation); + CleanupStack::Pop(self); + return self; } + +void CEmergencyCallRfAdaptation::ConstructL(MEmergencyCallRfAdaptation* aAdaptation) + { + ReserveMemoryL(); + //Taking the ownership of emergencyCallRfAdaptationPlugin after all the leaving function have passed. + //If some function leaves before taking ownership of emergencyCallRfAdaptationPlugin, it will be released twice, which causes system to panic. + iEmergencyCallRfAdaptation = aAdaptation; + } + /** * Function to reserve memory to make emergency call during OOM condition */ void CEmergencyCallRfAdaptation :: ReserveMemoryL() { //Reserve space for one Activate Rf call + one Deactive Rf message in Queue. - const TInt reserveCount = 2; - // heap requested for one Active Rf call + one Deactive Rf - const TInt reservedHeap = reserveCount * sizeof(CAdaptationMessage); - //heap is reserved for storing CAdaptationMessage during OOM condition. - iReservedHeap = UserHeap::ChunkHeap(NULL, reservedHeap, reservedHeap); - //Leave with KErrNoMemory if iReservedHeap is NULL - if(iReservedHeap == NULL) + iPendingEmergencyRequestsQueue.ReserveL(KReserveCount); + + //Pre-create an array to hold CEmergencyAdaptationMessage pointer, this is of size CEmergencyAdaptationMessage. + RMessage2 message; + for( TInt index = 0 ; index < KReserveCount ; ++index ) { - User::Leave(KErrNoMemory); + CEmergencyAdaptationMessage* adaptationMessage = NULL; + adaptationMessage = CEmergencyAdaptationMessage::NewL(message, EMsgReserved); + CleanupStack::PushL(adaptationMessage); + iAdaptationReservedMessageArray.AppendL(adaptationMessage); + CleanupStack::Pop(adaptationMessage); } - User::LeaveIfError(iPendingRequestsQueue.Reserve(reserveCount)); } - CEmergencyCallRfAdaptation::~CEmergencyCallRfAdaptation() { - iPendingRequestsQueue.NotifyAndRemoveAll(iReservedHeap); + NotifyAndRemoveAll(); Cancel(); - iPendingRequestsQueue.Close(); - if(iReservedHeap != NULL) - { - iReservedHeap->Reset(); - iReservedHeap->Close(); - } + iPendingEmergencyRequestsQueue.Close(); + iAdaptationReservedMessageArray.ResetAndDestroy(); Release(); } -CEmergencyCallRfAdaptation::CEmergencyCallRfAdaptation(MEmergencyCallRfAdaptation& aAdaptation) : CActive(EPriorityStandard), iEmergencyCallRfAdaptation(aAdaptation) -, iReservedHeap(NULL) +void CEmergencyCallRfAdaptation::NotifyAndRemoveAll() + { + TInt count = iPendingEmergencyRequestsQueue.Count(); + + for(TInt index =0; index < count; ++index) + { + iPendingEmergencyRequestsQueue[index]->Complete(KErrServerTerminated); + if (!(iPendingEmergencyRequestsQueue[index]->IsMessageReserved())) + { + delete iPendingEmergencyRequestsQueue[index]; + } + iPendingEmergencyRequestsQueue[index] = NULL; + } + iPendingEmergencyRequestsQueue.Reset(); + } + +CEmergencyCallRfAdaptation::CEmergencyCallRfAdaptation() : CActive(EPriorityStandard) +,iReserveMsgCount(KReserveCount) { CActiveScheduler::Add(this); } void CEmergencyCallRfAdaptation::Release() { - iEmergencyCallRfAdaptation.Release(); + if(iEmergencyCallRfAdaptation != NULL) + { + iEmergencyCallRfAdaptation->Release(); + } } void CEmergencyCallRfAdaptation::DoActivateRfForEmergencyCallL(const RMessage2& aMessage) @@ -187,15 +230,37 @@ void CEmergencyCallRfAdaptation::DoEmergencyCallRfAdaptationCancelL(const RMessage2& aMessage) { - + __ASSERT_ALWAYS((iEmergencyCallRfAdaptation != NULL), User::Panic(KPanicSsmSus, EEmergencyCallRfAdaptationNullPtrError2)); + if(iCurrentMessage != NULL) { if(aMessage.Session() == iCurrentMessage->Session()) { DEBUGPRINT1A("CEmergencyCallRfAdaptationRequests cancelling current request as requested"); - iEmergencyCallRfAdaptation.Cancel(); + iEmergencyCallRfAdaptation->Cancel(); } - iPendingRequestsQueue.RemoveFromQueueAndComplete(aMessage, iReservedHeap); + CEmergencyAdaptationMessage *messageToBeDeleted; + for(TInt index = 0; index < iPendingEmergencyRequestsQueue.Count(); ++index ) + { + if(aMessage.Session() == iPendingEmergencyRequestsQueue[index]->Session()) + { + messageToBeDeleted = iPendingEmergencyRequestsQueue[index]; + DEBUGPRINT2A("RSsmAdaptationRequestQueue(aMessage,ReservedHeap)called to cancel the request with function id: %d", messageToBeDeleted->Function()); + iPendingEmergencyRequestsQueue.Remove(index); + messageToBeDeleted->Complete(KErrCancel); + //Reset the AdaptationMessage if it is created using reserved pointer or delete the pointer + if(messageToBeDeleted->IsMessageReserved()) + { + messageToBeDeleted->UnsetMessageStatus(EMsgInUse); + ++iReserveMsgCount; + } + else + { + delete messageToBeDeleted; + } + --index; + } + } aMessage.Complete(KErrNone); } @@ -209,23 +274,16 @@ void CEmergencyCallRfAdaptation::RunL() { - + __ASSERT_DEBUG((iCurrentMessage != NULL), User::Panic(KPanicSsmSus, EEmergencyAdaptationMessageNullPtrError)); DEBUGPRINT2A("CEmergencyCallRfAdaptationRequests processed the request with funtion id: %d", iCurrentMessage->Function()); iCurrentMessage->Complete(iStatus.Int()); - if(iCurrentMessage->iUsingReservedHeap) - { - iReservedHeap->Free(iCurrentMessage); - } - else - { - delete iCurrentMessage; - } + DeleteAdaptationMessage(); iCurrentMessage = NULL; - if( (iPendingRequestsQueue.IsEmpty()) == EFalse ) + if( (iPendingEmergencyRequestsQueue.Count()) > 0 ) { - CAdaptationMessage *messageCopy = NULL; - iPendingRequestsQueue.Dequeue(messageCopy); + CEmergencyAdaptationMessage *messageCopy = NULL; + Dequeue(messageCopy); Submit(messageCopy); } } @@ -235,32 +293,18 @@ if(iCurrentMessage != NULL) { - iCurrentMessage->Complete(aError); - if(iCurrentMessage->iUsingReservedHeap) - { - iReservedHeap->Free(iCurrentMessage); - } - else - { - delete iCurrentMessage; - } + iCurrentMessage->Complete(aError); + DeleteAdaptationMessage(); iCurrentMessage = NULL; } - while( (iPendingRequestsQueue.IsEmpty()) == EFalse ) - { - iPendingRequestsQueue.Dequeue(iCurrentMessage); - iCurrentMessage->Complete(aError); - if(iCurrentMessage->iUsingReservedHeap) - { - iReservedHeap->Free(iCurrentMessage); - } - else - { - delete iCurrentMessage; - } - iCurrentMessage = NULL; - } + while( (iPendingEmergencyRequestsQueue.Count() > 0 )) + { + Dequeue(iCurrentMessage); + iCurrentMessage->Complete(aError); + DeleteAdaptationMessage(); + iCurrentMessage = NULL; + } return KErrNone; @@ -271,30 +315,16 @@ if(iCurrentMessage != NULL) { iCurrentMessage->Complete(KErrCancel); - if(iCurrentMessage->iUsingReservedHeap) - { - iReservedHeap->Free(iCurrentMessage); - } - else - { - delete iCurrentMessage; - } + DeleteAdaptationMessage(); iCurrentMessage = NULL; } - while( (iPendingRequestsQueue.IsEmpty()) == EFalse ) + while( (iPendingEmergencyRequestsQueue.Count() > 0 )) { - iPendingRequestsQueue.Dequeue(iCurrentMessage); - iCurrentMessage->Complete(KErrCancel); - if(iCurrentMessage->iUsingReservedHeap) - { - iReservedHeap->Free(iCurrentMessage); - } - else - { - delete iCurrentMessage; - } - iCurrentMessage = NULL; + Dequeue(iCurrentMessage); + iCurrentMessage->Complete(KErrCancel); + DeleteAdaptationMessage(); + iCurrentMessage = NULL; } } @@ -314,3 +344,128 @@ iPriorityClientSession = NULL; } +/** + * Reset the AdaptationMessage if it is created using reserved pointer or delete the pointer + */ +void CEmergencyCallRfAdaptation::DeleteAdaptationMessage() + { + if(iCurrentMessage->IsMessageReserved()) + { + iCurrentMessage->UnsetMessageStatus(EMsgInUse); + ++iReserveMsgCount; + } + else + { + delete iCurrentMessage; + } + } + +void CEmergencyCallRfAdaptation::Dequeue(CEmergencyAdaptationMessage *&aCurrentMessage) + { + aCurrentMessage = iPendingEmergencyRequestsQueue[0]; + iPendingEmergencyRequestsQueue.Remove(0); + } + +/** + * Constructor. + */ +CEmergencyAdaptationMessage::CEmergencyAdaptationMessage(const TInt8 aMessageStatus): iAdaptationMessage(NULL), iMessageStatus(0) + { + iMessageStatus |= aMessageStatus ; + } + +/** + * Destructor. + */ +CEmergencyAdaptationMessage::~CEmergencyAdaptationMessage() + { + if (iAdaptationMessage != NULL) + { + delete iAdaptationMessage; + } + } + +CEmergencyAdaptationMessage* CEmergencyAdaptationMessage::NewL(const RMessage2& aMessage) + { + return CEmergencyAdaptationMessage::NewL(aMessage, EMsgStatusNULL); + } + +CEmergencyAdaptationMessage* CEmergencyAdaptationMessage::NewL(const RMessage2& aMessage, const TInt8 aMessageStatus) + { + CEmergencyAdaptationMessage* self = new(ELeave) CEmergencyAdaptationMessage(aMessageStatus); + //custom cleanup is not required here as it is a normal message till this point. + CleanupStack::PushL(self); + self->ConstructL(aMessage); + CleanupStack::Pop(self); + return self; + } + +void CEmergencyAdaptationMessage::ConstructL(const RMessage2& aMessage) + { + iAdaptationMessage = new (ELeave)CAdaptationMessage(aMessage); + } + +void CEmergencyAdaptationMessage::Complete(TInt aReason) + { + if (iAdaptationMessage != NULL) + { + iAdaptationMessage->Complete(aReason); + } + } + +/** + * Function to check whether the messages is using reserved heap or not. + */ +inline TBool CEmergencyAdaptationMessage::IsMessageReserved() const + { + return (iMessageStatus & EMsgReserved)? ETrue:EFalse; + } + +/** + * Function to check whether the reserved messages is in use or not. + */ +inline TBool CEmergencyAdaptationMessage::IsMessageInuse() const + { + return (iMessageStatus & EMsgInUse)? ETrue:EFalse; + } + +/** + * Unset the message status . + */ +inline void CEmergencyAdaptationMessage::UnsetMessageStatus(const TInt8 aMessageStatus) + { + iMessageStatus &= ~aMessageStatus ; + } + +/** + * Set the message status . + */ +inline void CEmergencyAdaptationMessage::SetMessageStatus(const TInt8 aMessageStatus) + { + iMessageStatus |= aMessageStatus ; + } + +/** + * Sets the RMessage2 . + */ +void CEmergencyAdaptationMessage::SetMessage(const RMessage2& aMessage) + { + iAdaptationMessage->SetMessage(aMessage); + } + +/** + * Returns the Function . + */ +TInt CEmergencyAdaptationMessage::Function() const + { + return iAdaptationMessage->Function(); + } + +/** + * Returns the Session . + */ +CSession2 *CEmergencyAdaptationMessage::Session() const + { + return iAdaptationMessage->Session(); + } + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/test/tcmd/group/ssmatest_cmd.iby --- a/sysstatemgmt/systemstatemgr/test/tcmd/group/ssmatest_cmd.iby Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/tcmd/group/ssmatest_cmd.iby Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/test/tcmd/group/tcmd_server.mmp --- a/sysstatemgmt/systemstatemgr/test/tcmd/group/tcmd_server.mmp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/tcmd/group/tcmd_server.mmp Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/test/tcmd/inc/tcmd_step_resourcereader.h --- a/sysstatemgmt/systemstatemgr/test/tcmd/inc/tcmd_step_resourcereader.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/tcmd/inc/tcmd_step_resourcereader.h Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e 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 Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e 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 Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e 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 Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/test/tcmd/resource/tcmd_cmdlist_swp_builtincmd.rss --- a/sysstatemgmt/systemstatemgr/test/tcmd/resource/tcmd_cmdlist_swp_builtincmd.rss Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/tcmd/resource/tcmd_cmdlist_swp_builtincmd.rss Thu Jun 24 11:22:10 2010 +0100 @@ -347,4 +347,4 @@ severity = ECmdMediumSeverity; power_state = 1; } - \ No newline at end of file + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/test/tcmd/src/tcmd_step_resourcereader.cpp --- a/sysstatemgmt/systemstatemgr/test/tcmd/src/tcmd_step_resourcereader.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/tcmd/src/tcmd_step_resourcereader.cpp Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/test/testapps/src/ssmcletestapplication_reg.rss --- a/sysstatemgmt/systemstatemgr/test/testapps/src/ssmcletestapplication_reg.rss Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/testapps/src/ssmcletestapplication_reg.rss Thu Jun 24 11:22:10 2010 +0100 @@ -30,4 +30,4 @@ app_file="ssmcletestapplication"; newfile = KAppDoesNotSupportNewFile; } - \ No newline at end of file + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestappgood_reg.rss --- a/sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestappgood_reg.rss Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestappgood_reg.rss Thu Jun 24 11:22:10 2010 +0100 @@ -30,4 +30,4 @@ app_file="ssmtestappgood"; newfile = KAppDoesNotSupportNewFile; } - \ No newline at end of file + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestappnorv_reg.rss --- a/sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestappnorv_reg.rss Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestappnorv_reg.rss Thu Jun 24 11:22:10 2010 +0100 @@ -29,4 +29,4 @@ // filename of application binary (minus extension) app_file="ssmtestappnorv"; } - \ No newline at end of file + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestapppanic_reg.rss --- a/sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestapppanic_reg.rss Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestapppanic_reg.rss Thu Jun 24 11:22:10 2010 +0100 @@ -29,4 +29,4 @@ // filename of application binary (minus extension) app_file="ssmtestapppanic"; } - \ No newline at end of file + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestapppaniczero_reg.rss --- a/sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestapppaniczero_reg.rss Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestapppaniczero_reg.rss Thu Jun 24 11:22:10 2010 +0100 @@ -29,4 +29,4 @@ // filename of application binary (minus extension) app_file="ssmtestapppaniczero"; } - \ No newline at end of file + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestapprvafterretry_reg.rss --- a/sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestapprvafterretry_reg.rss Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestapprvafterretry_reg.rss Thu Jun 24 11:22:10 2010 +0100 @@ -29,4 +29,4 @@ // filename of application binary (minus extension) app_file="ssmtestapprvafterretry"; } - \ No newline at end of file + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestapprverror_reg.rss --- a/sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestapprverror_reg.rss Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestapprverror_reg.rss Thu Jun 24 11:22:10 2010 +0100 @@ -29,4 +29,4 @@ // filename of application binary (minus extension) app_file="ssmtestapprverror"; } - \ No newline at end of file + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestappslow_reg.rss --- a/sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestappslow_reg.rss Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestappslow_reg.rss Thu Jun 24 11:22:10 2010 +0100 @@ -29,4 +29,4 @@ // filename of application binary (minus extension) app_file="ssmtestappslow"; } - \ No newline at end of file + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestappsucessfulafterretry_reg.rss --- a/sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestappsucessfulafterretry_reg.rss Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/testapps/src/ssmtestappsucessfulafterretry_reg.rss Thu Jun 24 11:22:10 2010 +0100 @@ -29,4 +29,4 @@ // filename of application binary (minus extension) app_file="ssmtestappsucessfulafterretry"; } - \ No newline at end of file + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/test/tssm/group/tssm_server.mmp --- a/sysstatemgmt/systemstatemgr/test/tssm/group/tssm_server.mmp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/tssm/group/tssm_server.mmp Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/test/tsus/group/tsus_ssmutilsrv.mmp --- a/sysstatemgmt/systemstatemgr/test/tsus/group/tsus_ssmutilsrv.mmp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/tsus/group/tsus_ssmutilsrv.mmp Thu Jun 24 11:22:10 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-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" @@ -33,6 +33,9 @@ OS_LAYER_SYSTEMINCLUDE_SYMBIAN +// Used for making the production code changes in the server available only for test code. +macro TEST_SSM_SERVER + // production code USERINCLUDE ../../../localinc @@ -57,6 +60,7 @@ SOURCE susmiscadaptation.cpp SOURCE susemergencycallrfadaptation.cpp SOURCE susadaptationpluginloader.cpp +SOURCE ssmadaptationcli.cpp // testcode @@ -69,6 +73,7 @@ SOURCE tsus_server.cpp SOURCE tsus_ssmsuscli.cpp SOURCE tsus_startserver.cpp +SOURCE tsus_startadaptationserver.cpp SOURCE tsus_step_supinfo.cpp SOURCE tsus_step_suploader.cpp SOURCE tsus_step_platsec.cpp @@ -79,12 +84,12 @@ SOURCE tsus_step_susadaptationpluginloader.cpp SOURCE tsus_step_loadadaptationserver.cpp + LIBRARY euser.lib LIBRARY efsrv.lib LIBRARY estor.lib LIBRARY testexecuteutils.lib LIBRARY testexecutelogclient.lib LIBRARY ssmcmn.lib -LIBRARY ssmadaptationcli.lib SMPSAFE diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/test/tsus/inc/tsus_startadaptationserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/systemstatemgr/test/tsus/inc/tsus_startadaptationserver.h Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,35 @@ +// 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" +// 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:Test Adaptation server +// + +/** + @file + @test + @internalComponent - Internal Symbian test code +*/ + + +#ifndef __TSUS_STARTADAPTATIONSERVER_H__ +#define __TSUS_STARTADAPTATIONSERVER_H__ + +#include + +_LIT(KTestAdaptationServerName, "AdaptationSrvTest"); + +extern void RunAdaptationTestSrvL(); +extern TInt TestAdaptationSrvInitFunction(TAny* /*aNothing*/); +extern TInt StartAdaptationServer(RThread& aServer); + + +#endif //__TSUS_STARTADAPTATIONSERVER_H__ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/test/tsus/inc/tsus_step_adaptionserver.h --- a/sysstatemgmt/systemstatemgr/test/tsus/inc/tsus_step_adaptionserver.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/tsus/inc/tsus_step_adaptionserver.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-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" @@ -16,7 +16,7 @@ /** @file @test - @internalComponent - Internal Symbian test code + @internalComponent - Internal test code */ @@ -33,8 +33,14 @@ class RTestSusAdaptationCli : public RSsmEmergencyCallRfAdaptation { public: +#ifdef TEST_SSM_SERVER + TInt Connect(const TDesC& aServerName); +#endif TInt SetHeapFailure(TInt aFailureRate); TInt UnSetHeapFailure(); + TInt SetHeapMark(); + TInt UnSetHeapMark(); + }; class CSusAdaptionServerTest : public CTestStep @@ -51,11 +57,15 @@ private: void doTestForMemoryLeaksL(); void doTestProcessCriticalL(); - void doTestOOML(); + void doTestOOML(); + void StartAndDestroyServerL(); +#ifdef TEST_SSM_SERVER void doTestForEmergencyCallOOM(); - void StartAndDestroyServerL(); void doTestForSettingPriorityClient(); void doTestForNormalEmergencyCallinOOM(); + void doTestForMultipleClientinOOMcondition(); + void doTestForEmergencyCallOOMIterative(); +#endif }; #endif diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/test/tsus/scripts/ssmatest_sus_adaptionserver.script --- a/sysstatemgmt/systemstatemgr/test/tsus/scripts/ssmatest_sus_adaptionserver.script Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/tsus/scripts/ssmatest_sus_adaptionserver.script Thu Jun 24 11:22:10 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-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" @@ -16,7 +16,7 @@ PRINT Run SusAdaptionServerStep tests //Set the server with SID of telephony(c32 process) to test the emergency call under OOM condition -RUN_PROGRAM -1 setcap tsus_ssmutilsrv.exe 0003FFFE -SID 10003D33 tsus_ssmutilsrv_WithC32_SID.exe +RUN_PROGRAM -1 setcap tsus_ssmutilsrv.exe 00001134 -SID 101F7989 tsus_ssmutilsrv_WithC32_SID.exe LOAD_SUITE tsus_ssmutilsrv_WithC32_SID @@ -36,6 +36,7 @@ //! 4.Test to set SetPriorityClient() from two diff client //! 5.Normal client calling Activate/DeactivateRfForEmergencyCall Rf in OOM condition //! 6.Multiple client performing Activate/DeactivateRfForEmergencyCall during OOM situation +//! 7.Iterate the OOM through Activate/DeactivateRfForEmergencyCall //! @SYMTestExpectedResults The test ends with the following results: //! 1.No error is reported a new object is created and the process is set to ESystemCritical. //! 2.Intermediate iterations finish with KErrNoMemory with successful one completing with KErrNone. Memory is not leaked in any iteration. @@ -43,5 +44,6 @@ //! 4.Call to SetPriorityClient() with error KErrAlreadyExists fails from the second client //! 5.Call fails with KErrNoMemory. //! 6.Only Priority client will be able to perform Activate/DeactivateRfForEmergencyCall, for other client KErrNoMemory will be returned +//! 7.Activate/DeactivateRfForEmergencyCall works fine. RUN_TEST_STEP 100 tsus_ssmutilsrv_WithC32_SID SusAdaptionServerStep -END_TESTCASE DEVSRVS-SSMA-SUS-0011 \ No newline at end of file +END_TESTCASE DEVSRVS-SSMA-SUS-0011 diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/test/tsus/src/tsus_startadaptationserver.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/systemstatemgr/test/tsus/src/tsus_startadaptationserver.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,92 @@ +// 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" +// 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:Test Adaptation server +// + +/** + @file + @test + @internalComponent - Internal test code +*/ + +#include +#include "tsus_startadaptationserver.h" +#include "susadaptionserver.h" +#include "ssmdebug.h" + + + +//////////////////////////////////////////////////////////////////////////////// +// Test-Server startup code +//////////////////////////////////////////////////////////////////////////////// + +void RunAdaptationTestSrvL() + { + __UHEAP_MARK; + CActiveScheduler* sched = new(ELeave) CActiveScheduler(); + CleanupStack::PushL( sched ); + CActiveScheduler::Install( sched ); + + CSsmAdaptationServer* server = CSsmAdaptationServer::NewLC(KTestAdaptationServerName); + RThread::Rendezvous( KErrNone ); + + CActiveScheduler::Start(); + + CleanupStack::PopAndDestroy( server ); + CleanupStack::PopAndDestroy( sched ); + __UHEAP_MARKEND; + } //lint !e1746 Suppress parameter 'aSid' could be made const reference + +/** + This function is called when the TestServer's thread is resumed. + */ +TInt TestAdaptationSrvInitFunction(TAny* /*aNothing*/) + { + CTrapCleanup* cleanup=CTrapCleanup::New(); + TInt err = KErrNoMemory; + if (cleanup) + { + TRAP( err, RunAdaptationTestSrvL()); + delete cleanup; + } + return err; + } + +/** + */ +TInt StartAdaptationServer(RThread& aServer) + { + DEBUGPRINT2( _L("Starting test-server %S"), &KTestAdaptationServerName ); + + const TInt KMinHeapSize = 0x1000; // 4kB + const TInt KMaxHeapSize = 0x100000;// 1MB + + + TInt err = aServer.Create( KTestAdaptationServerName, &TestAdaptationSrvInitFunction, + KDefaultStackSize, KMinHeapSize, KMaxHeapSize, + NULL); + if( KErrNone == err ) + { + TRequestStatus trs; + aServer.Rendezvous( trs ); + aServer.Resume(); + + User::WaitForRequest( trs ); + + //We can't use the 'exit reason' if the server panicked as this is the + //panic 'reason' and may be '0' which cannot be distinguished from KErrNone + err = (aServer.ExitType()==EExitPanic) ? KErrGeneral : trs.Int(); + } + + return err; + } diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatemgr/test/tsus/src/tsus_step_adaptionserver.cpp --- a/sysstatemgmt/systemstatemgr/test/tsus/src/tsus_step_adaptionserver.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatemgr/test/tsus/src/tsus_step_adaptionserver.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-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" @@ -20,9 +20,19 @@ */ #include "susadaptionserver.h" - +#include #include "tsus_step_adaptionserver.h" +#include "tsus_startadaptationserver.h" +#ifdef TEST_SSM_SERVER +/** + * Overloaded function to Connect to the Test Adaptation server + */ +TInt RTestSusAdaptationCli::Connect(const TDesC& aServerName) + { + return RSsmEmergencyCallRfAdaptation::Connect(aServerName); + } +#endif //TEST_SSM_SERVER /** * Client interface to simulate Heap failure at server side */ @@ -46,6 +56,27 @@ } return KErrDisconnected; } + +TInt RTestSusAdaptationCli::SetHeapMark() + { + if(Handle()) + { + return SendReceive(EDebugMarkHeap); + } + return KErrDisconnected; + } + +/** + * Client interface to restore Heap Mark + */ +TInt RTestSusAdaptationCli::UnSetHeapMark() + { + if(Handle()) + { + return SendReceive(EDebugMarkHeapEnd); + } + return KErrDisconnected; + } CSusAdaptionServerTest::~CSusAdaptionServerTest() { @@ -79,11 +110,13 @@ TEST(KErrNone == err || KErrAlreadyExists == err); TRAP(err, doTestOOML()); TEST(err == KErrNone); - +#ifdef TEST_SSM_SERVER doTestForNormalEmergencyCallinOOM(); doTestForEmergencyCallOOM(); doTestForSettingPriorityClient(); - + doTestForMultipleClientinOOMcondition(); + doTestForEmergencyCallOOMIterative(); +#endif //TEST_SSM_SERVER __UHEAP_MARKEND; INFO_PRINTF1(_L("....CSusAdaptionServerTest tests completed!")); @@ -191,7 +224,7 @@ INFO_PRINTF1(_L("Destroy SSM adaptation server.")); delete server; } - +#ifdef TEST_SSM_SERVER /** * Tests for client calling Activate/Deactivate Rf without setting as priorityclient. */ @@ -199,16 +232,20 @@ { INFO_PRINTF1(_L("doTestForNormalEmergencyCallinOOM started.")); __UHEAP_MARK; + RThread thread; + CleanupClosePushL(thread); + TESTL(KErrNone == StartAdaptationServer(thread)); + RTestSusAdaptationCli adaptationclitest; - TInt err = adaptationclitest.Connect(); + TInt err = adaptationclitest.Connect(KTestAdaptationServerName); INFO_PRINTF2(_L("Connect() returned Error %d : Expected Error is KErrNone."),err); TEST(err == KErrNone); TRequestStatus status; // Simulate OOM condition - User::__DbgSetAllocFail(EFalse, RAllocator::EDeterministic, 1); User::__DbgSetAllocFail(ETrue, RAllocator::EDeterministic, 1); //Simulate OOM at Serverside adaptationclitest.SetHeapFailure(1); + adaptationclitest.SetHeapMark(); //Normal client calling ActivateRfForEmergencyCall Rf in OOM condition. This call must fail with KErrNoMemory //as there is no memory reserved. adaptationclitest.ActivateRfForEmergencyCall(status); @@ -216,10 +253,12 @@ User::WaitForRequest(status); //Restore OOM condition adaptationclitest.UnSetHeapFailure(); - adaptationclitest.Close(); - User::__DbgSetAllocFail(EFalse, RAllocator::ENone, 1); + adaptationclitest.UnSetHeapMark(); + adaptationclitest.Close(); User::__DbgSetAllocFail(ETrue, RAllocator::ENone, 1); TEST(status.Int() == KErrNoMemory); + thread.Kill(KErrNone); + CleanupStack::PopAndDestroy(&thread); __UHEAP_MARKEND; INFO_PRINTF1(_L("doTestForNormalEmergencyCallinOOM completed.")); } @@ -233,18 +272,18 @@ { INFO_PRINTF1(_L("doTestForEmergencyCallOOM started.")); __UHEAP_MARK; + RThread thread; + CleanupClosePushL(thread); + TESTL(KErrNone == StartAdaptationServer(thread)); RTestSusAdaptationCli adaptationclitest; - TInt err = adaptationclitest.Connect(); + TInt err = adaptationclitest.Connect(KTestAdaptationServerName); INFO_PRINTF2(_L("Connect() returned Error %d : Expected Error is KErrNone."),err); - TEST(err == KErrNone); + TEST(err == KErrNone); err = adaptationclitest.SetAsPriorityClient(); + adaptationclitest.SetHeapMark(); INFO_PRINTF2(_L("SetAsPriorityClient() returned Error %d : Expected Error is KErrNone."),err); TEST(err == KErrNone); - //Activate Rf + Deactivate Rf during non OOM situation. - //Calls will be queued and processed one after the other. After 3 consecutive requests for - //ActivateRfForEmergencyCall(), first call will be submitted directly to process and other two calls - // will get queued. By end of this process will be having (count + 2) reserved memory in queue.i.e 4 reserved slots - TRequestStatus status1,status2,status3,status4,status5,status6; + TRequestStatus status1,status2,status3,status4,status5,status6,status7; adaptationclitest.ActivateRfForEmergencyCall(status1); adaptationclitest.ActivateRfForEmergencyCall(status2); adaptationclitest.ActivateRfForEmergencyCall(status3); @@ -256,41 +295,47 @@ TEST(status2.Int() == KErrNone); TEST(status3.Int() == KErrNone); // Simulate OOM condition - User::__DbgSetAllocFail(EFalse, RAllocator::EDeterministic, 1); User::__DbgSetAllocFail(ETrue, RAllocator::EDeterministic, 1); //Simulate OOM at Serverside adaptationclitest.SetHeapFailure(1); - //After the above 2 calls to Activate the Rfs, will be left with 4 reserved memory in queue, so in OOM - //condition client can queue 4 activate/deactivate requests.The 5th request will fail with KErrNoMemory + //Two simulataneous calls for Active/deactivate Rf are allowed. The 3rd simultaneous request fail with KErrNoMemory adaptationclitest.ActivateRfForEmergencyCall(status1); - adaptationclitest.ActivateRfForEmergencyCall(status2); - adaptationclitest.DeactivateRfForEmergencyCall(status3); - adaptationclitest.DeactivateRfForEmergencyCall(status4); - adaptationclitest.DeactivateRfForEmergencyCall(status5); - adaptationclitest.DeactivateRfForEmergencyCall(status6); + adaptationclitest.DeactivateRfForEmergencyCall(status2); + adaptationclitest.ActivateRfForEmergencyCall(status3); // Wait for completion of requests User::WaitForRequest(status1); User::WaitForRequest(status2); User::WaitForRequest(status3); + + //If the previous request for Activate/Deactivate is already finished. User can perform 2 more calls. + adaptationclitest.ActivateRfForEmergencyCall(status4); + adaptationclitest.DeactivateRfForEmergencyCall(status5); + User::WaitForRequest(status4); User::WaitForRequest(status5); - User::WaitForRequest(status6); + + adaptationclitest.ActivateRfForEmergencyCall(status6); + adaptationclitest.DeactivateRfForEmergencyCall(status7); + adaptationclitest.Cancel(); + // Wait for completion of requests + User::WaitForRequest(status6); + User::WaitForRequest(status7); //Restore OOM condition adaptationclitest.UnSetHeapFailure(); - User::__DbgSetAllocFail(EFalse, RAllocator::ENone, 1); User::__DbgSetAllocFail(ETrue, RAllocator::ENone, 1); TEST(status1.Int() == KErrNone); TEST(status2.Int() == KErrNone); - TEST(status3.Int() == KErrNone); + TEST(status3.Int() == KErrNoMemory); TEST(status4.Int() == KErrNone); TEST(status5.Int() == KErrNone); - //6th request will fail with KErrNoMemory if, above 5 requests are still queued and there is no reserved slot for - //6th one..otherwise, 6th request will be queued and processed - TEST(status6.Int() == KErrNoMemory || status6.Int() == KErrNone); - + TEST(status6.Int() == KErrNone); + TEST(status7.Int() == KErrCancel); + adaptationclitest.UnSetHeapMark(); adaptationclitest.Close(); + thread.Kill(KErrNone); + CleanupStack::PopAndDestroy(&thread); __UHEAP_MARKEND; INFO_PRINTF1(_L("doTestForEmergencyCallOOM completed.")); } @@ -302,13 +347,16 @@ { INFO_PRINTF1(_L("doTestForSettingPriorityClient started.")); __UHEAP_MARK; + RThread thread; + CleanupClosePushL(thread); + TESTL(KErrNone == StartAdaptationServer(thread)); RTestSusAdaptationCli adaptationclitest1; - TInt err = adaptationclitest1.Connect(); + TInt err = adaptationclitest1.Connect(KTestAdaptationServerName); INFO_PRINTF2(_L("adaptationclitest1.Connect() returned Error %d : Expected Error is KErrNone."),err); TEST(err == KErrNone); RTestSusAdaptationCli adaptationclitest2; - err = adaptationclitest2.Connect(); + err = adaptationclitest2.Connect(KTestAdaptationServerName); INFO_PRINTF2(_L("adaptationclitest2.Connect() returned Error %d : Expected Error is KErrNone."),err); TEST(err == KErrNone); @@ -323,7 +371,152 @@ // Restore OOM condition adaptationclitest1.Close(); adaptationclitest2.Close(); + + thread.Kill(KErrNone); + CleanupStack::PopAndDestroy(&thread); __UHEAP_MARKEND; INFO_PRINTF1(_L("doTestForSettingPriorityClient completed.")); } +/** + * Multiple clients performing Emergency call during OOM situation + */ +void CSusAdaptionServerTest::doTestForMultipleClientinOOMcondition() + { + INFO_PRINTF1(_L("doTestForMultipleClientinOOMcondition started.")); + __UHEAP_MARK; + RThread thread; + CleanupClosePushL(thread); + + TESTL(KErrNone == StartAdaptationServer(thread)); + RTestSusAdaptationCli adaptationclitest1; + TInt err = adaptationclitest1.Connect(KTestAdaptationServerName); + INFO_PRINTF2(_L("adaptationclitest1.Connect() returned Error %d : Expected Error is KErrNone."),err); + TEST(err == KErrNone); + + RTestSusAdaptationCli adaptationclitest2; + err = adaptationclitest2.Connect(KTestAdaptationServerName); + INFO_PRINTF2(_L("adaptationclitest2.Connect() returned Error %d : Expected Error is KErrNone."),err); + TEST(err == KErrNone); + + RTestSusAdaptationCli adaptationclitest3; + err = adaptationclitest3.Connect(KTestAdaptationServerName); + INFO_PRINTF2(_L("adaptationclitest3.Connect() returned Error %d : Expected Error is KErrNone."),err); + TEST(err == KErrNone); + + err = adaptationclitest1.SetAsPriorityClient(); + INFO_PRINTF2(_L("adaptationclitest1.SetAsPriorityClient() returned Error %d : Expected Error is KErrNone."),err); + TEST(err == KErrNone); + + err = adaptationclitest2.SetAsPriorityClient(); + INFO_PRINTF2(_L("adaptationclitest2.SetAsPriorityClient() returned Error %d : Expected Error is KErrAlreadyExists."),err); + TEST(err == KErrAlreadyExists); + + err = adaptationclitest3.SetAsPriorityClient(); + INFO_PRINTF2(_L("adaptationclitest3.SetAsPriorityClient() returned Error %d : Expected Error is KErrAlreadyExists."),err); + TEST(err == KErrAlreadyExists); + + TRequestStatus status1,status2,status3,status4,status5,status6; + // Simulate OOM condition + User::__DbgSetAllocFail(ETrue, RAllocator::EDeterministic, 1); + //Simulate OOM Condition on server side + adaptationclitest1.SetHeapFailure(1); + adaptationclitest1.SetHeapMark(); + adaptationclitest1.ActivateRfForEmergencyCall(status1); + adaptationclitest2.ActivateRfForEmergencyCall(status2); + adaptationclitest3.ActivateRfForEmergencyCall(status3); + adaptationclitest1.DeactivateRfForEmergencyCall(status4); + adaptationclitest2.DeactivateRfForEmergencyCall(status5); + adaptationclitest3.DeactivateRfForEmergencyCall(status6); + + User::WaitForRequest(status1); + User::WaitForRequest(status2); + User::WaitForRequest(status3); + User::WaitForRequest(status4); + User::WaitForRequest(status5); + User::WaitForRequest(status6); + // Restore OOM condition + adaptationclitest1.Close(); + adaptationclitest2.Close(); + adaptationclitest3.Close(); + //Restore OOM condition + adaptationclitest1.UnSetHeapMark(); + adaptationclitest1.UnSetHeapFailure(); + User::__DbgSetAllocFail(ETrue, RAllocator::ENone, 1); + //Priority client Performing Activate Rf returns KErrNone + TEST(status1.Int() == KErrNone); + //Normal clients performing Activate Rf fail with KErrNoMemory in OOM codition + TEST(status2.Int() == KErrNoMemory); + TEST(status3.Int() == KErrNoMemory); + //Priority client Performing Deactivate Rf returns KErrNone + TEST(status4.Int() == KErrNone); + //Normal clients peforming Deactivate Rf fail with KErrNoMemory in OOM codition + TEST(status5.Int() == KErrNoMemory); + TEST(status6.Int() == KErrNoMemory); + thread.Kill(KErrNone); + CleanupStack::PopAndDestroy(&thread); + __UHEAP_MARKEND; + INFO_PRINTF1(_L("doTestForMultipleClientinOOMcondition completed.")); + } + +/** + * Tests for iterating heapfailure in ActivateRfForEmergencyCall and DeactivateRfForEmergencyCall. + */ +void CSusAdaptionServerTest::doTestForEmergencyCallOOMIterative() + { + INFO_PRINTF1(_L("doTestForEmergencyCallOOMIterative started.")); + __UHEAP_MARK; + RThread thread; + CleanupClosePushL(thread); + TESTL(KErrNone == StartAdaptationServer(thread)); + RTestSusAdaptationCli adaptationclitest; + TInt err = adaptationclitest.Connect(KTestAdaptationServerName); + INFO_PRINTF2(_L("Connect() returned Error %d : Expected Error is KErrNone."),err); + TEST(err == KErrNone); + err = adaptationclitest.SetAsPriorityClient(); + INFO_PRINTF2(_L("SetAsPriorityClient() returned Error %d : Expected Error is KErrNone."),err); + TEST(err == KErrNone); + TRequestStatus status1,status2; + //simulate OOM at kernel + User::__DbgSetAllocFail(ETrue, RAllocator::EDeterministic, 1); + TInt maximumAllocation = 3; + //Iterate through the ActivateRfForEmergencyCall. + adaptationclitest.SetHeapMark(); + for(TInt allocFailRate=1; allocFailRate <= 2*maximumAllocation; ++allocFailRate) + { + INFO_PRINTF2(_L("allocFailRateL %d:."), allocFailRate); + adaptationclitest.SetHeapFailure(allocFailRate); + adaptationclitest.ActivateRfForEmergencyCall(status1); + adaptationclitest.ActivateRfForEmergencyCall(status2); + User::WaitForRequest(status1); + User::WaitForRequest(status2); + TEST(status1.Int() == KErrNone); + TEST(status2.Int() == KErrNone); + } + + //Iterate through the DeactivateRfForEmergencyCall. + for(TInt allocFailRate=1; allocFailRate < 2*maximumAllocation; allocFailRate++) + { + INFO_PRINTF2(_L("allocFailRateL %d:."), allocFailRate); + adaptationclitest.SetHeapFailure(allocFailRate); + adaptationclitest.DeactivateRfForEmergencyCall(status1); + adaptationclitest.DeactivateRfForEmergencyCall(status2); + User::WaitForRequest(status1); + User::WaitForRequest(status2); + TEST(status1.Int() == KErrNone); + TEST(status2.Int() == KErrNone); + } + adaptationclitest.UnSetHeapMark(); + //Restore OOM condition + adaptationclitest.UnSetHeapFailure(); + User::__DbgSetAllocFail(ETrue, RAllocator::ENone, 1); + adaptationclitest.Close(); + thread.Kill(KErrNone); + CleanupStack::PopAndDestroy(&thread); + __UHEAP_MARKEND; + INFO_PRINTF1(_L("doTestForEmergencyCallOOMIterative completed.")); + } + +#endif //TEST_SSM_SERVER + + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstateplugins/conditionevaluator/inc/cndcentralrepository.h --- a/sysstatemgmt/systemstateplugins/conditionevaluator/inc/cndcentralrepository.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstateplugins/conditionevaluator/inc/cndcentralrepository.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -12,23 +12,8 @@ * Contributors: * * Description: -* Name : conditiononcentrep.h -* Part of : System Startup / Condition -* Interface : None * Declaration of CConditionOnCentRep and CConditionOnCentRepFlag * classes. -* Version : %version: 1 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.0 -* Nokia Core OS * -* File renamed from conditiononcentrep.h to cndcentralrepository.h as part of Core OS transfer. -* */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstateplugins/conditionevaluator/inc/cndfeature.h --- a/sysstatemgmt/systemstateplugins/conditionevaluator/inc/cndfeature.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstateplugins/conditionevaluator/inc/cndfeature.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -12,22 +12,7 @@ * Contributors: * * Description: -* Name : conditiononfeature.h -* Part of : System Startup / Condition -* Interface : None * Declaration of CConditionOnFeature class -* Version : %version: 1 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.0 -* Nokia Core OS * -* File renamed from conditiononfeature.h to cndfeature.h as part of Core OS transfer. -* */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstateplugins/conditionevaluator/inc/cndlogical.h --- a/sysstatemgmt/systemstateplugins/conditionevaluator/inc/cndlogical.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstateplugins/conditionevaluator/inc/cndlogical.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -12,23 +12,8 @@ * Contributors: * * Description: -* Name : boolexpr.h -* Part of : System Startup / Condition -* Interface : None * Declaration of CBoolExpr, CLogicalNot, CLogicalAnd and * CLogicalOr classes. -* Version : %version: 1 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.0 -* Nokia Core OS * -* File renamed from boolexpr.h to cndlogical.h as part of Core OS transfer. -* */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstateplugins/conditionevaluator/inc/cndpublishsubscribe.h --- a/sysstatemgmt/systemstateplugins/conditionevaluator/inc/cndpublishsubscribe.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstateplugins/conditionevaluator/inc/cndpublishsubscribe.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -13,22 +13,8 @@ * * Description: * Name : conditiononpubsub.h -* Part of : System Startup / Condition -* Interface : None * Declaration of CConditionOnPubSub and CConditionOnPubSubFlag * classes -* Version : %version: 1 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.0 -* Nokia Core OS * -* File renamed from conditiononpubsub.h to cndpublishsubscribe.h as part of Core OS transfer. -* */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstateplugins/conditionevaluator/inc/conditionevaluate.h --- a/sysstatemgmt/systemstateplugins/conditionevaluator/inc/conditionevaluate.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstateplugins/conditionevaluator/inc/conditionevaluate.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -13,21 +13,7 @@ * * Description: * Name : resourcecondition.h -* Part of : System Startup / Condition -* Interface : None * Declaration of ResourceCondition class -* Version : %version: 1 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.1 -* Nokia Core OS * -* File renamed from resourcecondition.h to CConditionEvaluate.h as part of Core OS transfer. -* */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstateplugins/conditionevaluator/inc/conditionevaluatebase.h --- a/sysstatemgmt/systemstateplugins/conditionevaluator/inc/conditionevaluatebase.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstateplugins/conditionevaluator/inc/conditionevaluatebase.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -13,22 +13,8 @@ * * Description: * Name : conditiononpubsub.h -* Part of : System Startup / Condition -* Interface : None * Declaration of CConditionOnPubSub and CConditionOnPubSubFlag * classes -* Version : %version: 1 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.0 -* Nokia Core OS * -* File renamed from conditiononpubsub.h to conditionevaluatebase.h as part of Core OS transfer. -* */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstateplugins/conditionevaluator/inc/conditionresourcetypes.rh --- a/sysstatemgmt/systemstateplugins/conditionevaluator/inc/conditionresourcetypes.rh Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstateplugins/conditionevaluator/inc/conditionresourcetypes.rh Thu Jun 24 11:22:10 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" @@ -11,19 +11,7 @@ // Contributors: // // Description: -// Name : conditionresourcetypes.rh -// Part of : System Startup / Condition // Resource structure declarations for conditional checks. -// Version : %version: 1 % -// This material, including documentation and any related computer -// programs, is protected by copyright controlled by Nokia. All -// rights are reserved. Copying, including reproducing, storing, -// adapting or translating, any or all of this material requires the -// prior written consent of Nokia. This material also contains -// confidential information which may not be disclosed to others -// without the prior written consent of Nokia. -// Template version: 4.0 -// Nokia Core OS * // diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstateplugins/conditionevaluator/inc/conditiontypes.hrh --- a/sysstatemgmt/systemstateplugins/conditionevaluator/inc/conditiontypes.hrh Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstateplugins/conditionevaluator/inc/conditiontypes.hrh Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -12,22 +12,8 @@ * Contributors: * * Description: -* Name : conditiontypes.hrh -* Part of : System Startup / Condition -* Interface : None * Identifiers for different condition types, for use in resource * structs. -* Version : %version: 1 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.0 -* Nokia Core OS * -* */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstateplugins/conditionevaluator/src/cndcentralrepository.cpp --- a/sysstatemgmt/systemstateplugins/conditionevaluator/src/cndcentralrepository.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstateplugins/conditionevaluator/src/cndcentralrepository.cpp Thu Jun 24 11:22:10 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" @@ -11,21 +11,8 @@ // Contributors: // // Description: -// Name : conditiononcentrep.cpp -// Part of : System Startup / Condition // Implementation of CConditionOnCentRep and // CConditionOnCentRepFlag classes. -// Version : %version: 1 % -// This material, including documentation and any related computer -// programs, is protected by copyright controlled by Nokia. All -// rights are reserved. Copying, including reproducing, storing, -// adapting or translating, any or all of this material requires the -// prior written consent of Nokia. This material also contains -// confidential information which may not be disclosed to others -// without the prior written consent of Nokia. -// Template version: 4.1 -// Nokia Core OS * -// File renamed from conditiononcentrep.cpp to cndcentralrepository.cpp as part of Core OS transfer. // diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstateplugins/conditionevaluator/src/cndfeature.cpp --- a/sysstatemgmt/systemstateplugins/conditionevaluator/src/cndfeature.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstateplugins/conditionevaluator/src/cndfeature.cpp Thu Jun 24 11:22:10 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" @@ -11,24 +11,12 @@ // Contributors: // // Description: -// Name : conditiononfeature.cpp -// Part of : System Startup / Starter // Implementation of CConditionOnFeature class -// Version : %version: 1 % -// This material, including documentation and any related computer -// programs, is protected by copyright controlled by Nokia. All -// rights are reserved. Copying, including reproducing, storing, -// adapting or translating, any or all of this material requires the -// prior written consent of Nokia. This material also contains -// confidential information which may not be disclosed to others -// without the prior written consent of Nokia. -// Template version: 4.1 -// Nokia Core OS * -// File renamed from conditiononfeature.cpp to cndfeature.cpp as part of Core OS transfer. // + #include "cndfeature.h" #include #include diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstateplugins/conditionevaluator/src/cndlogical.cpp --- a/sysstatemgmt/systemstateplugins/conditionevaluator/src/cndlogical.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstateplugins/conditionevaluator/src/cndlogical.cpp Thu Jun 24 11:22:10 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" @@ -11,20 +11,7 @@ // Contributors: // // Description: -// Name : resourcecondition.cpp -// Part of : System Startup / Condition // Implementation of ResourceCondition class -// Version : %version: 1 % -// This material, including documentation and any related computer -// programs, is protected by copyright controlled by Nokia. All -// rights are reserved. Copying, including reproducing, storing, -// adapting or translating, any or all of this material requires the -// prior written consent of Nokia. This material also contains -// confidential information which may not be disclosed to others -// without the prior written consent of Nokia. -// Template version: 4.1 -// Nokia Core OS * -// File renamed from resourcecondition.cpp to cndlogical.cpp as part of Core OS transfer. // diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstateplugins/conditionevaluator/src/cndpublishsubscribe.cpp --- a/sysstatemgmt/systemstateplugins/conditionevaluator/src/cndpublishsubscribe.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstateplugins/conditionevaluator/src/cndpublishsubscribe.cpp Thu Jun 24 11:22:10 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" @@ -11,21 +11,8 @@ // Contributors: // // Description: -// Name : conditiononpubsub.cpp -// Part of : System Startup / Condition // Implementation of CConditionOnPubSub and CConditionOnPubSubFlag // classes -// Version : %version: 1 % -// This material, including documentation and any related computer -// programs, is protected by copyright controlled by Nokia. All -// rights are reserved. Copying, including reproducing, storing, -// adapting or translating, any or all of this material requires the -// prior written consent of Nokia. This material also contains -// confidential information which may not be disclosed to others -// without the prior written consent of Nokia. -// Template version: 4.1 -// Nokia Core OS * -// File renamed from conditiononpubsub.cpp to cndpublishsubscribe.cpp as part of Core OS transfer. // diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstateplugins/conditionevaluator/src/conditionevaluate.cpp --- a/sysstatemgmt/systemstateplugins/conditionevaluator/src/conditionevaluate.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstateplugins/conditionevaluator/src/conditionevaluate.cpp Thu Jun 24 11:22:10 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" @@ -11,20 +11,7 @@ // Contributors: // // Description: -// Name : resourcecondition.cpp -// Part of : System Startup / Condition // Implementation of ResourceCondition class -// Version : %version: 1 % -// This material, including documentation and any related computer -// programs, is protected by copyright controlled by Nokia. All -// rights are reserved. Copying, including reproducing, storing, -// adapting or translating, any or all of this material requires the -// prior written consent of Nokia. This material also contains -// confidential information which may not be disclosed to others -// without the prior written consent of Nokia. -// Template version: 4.1 -// Nokia Core OS * -// File renamed from resourcecondition.cpp to conditionevaluate.cpp as part of Core OS transfer. // diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstateplugins/group/app-framework_ssplugins.mrp --- a/sysstatemgmt/systemstateplugins/group/app-framework_ssplugins.mrp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstateplugins/group/app-framework_ssplugins.mrp Thu Jun 24 11:22:10 2010 +0100 @@ -1,3 +1,19 @@ +# +# Copyright (c) 2009 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: +# + component app-framework_ssplugins source \sf\os\devicesrv\sysstatemgmt\systemstateplugins binary \sf\os\devicesrv\sysstatemgmt\systemstateplugins\group all diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstateplugins/test/testapps/src/gsatestappgood_reg.rss --- a/sysstatemgmt/systemstateplugins/test/testapps/src/gsatestappgood_reg.rss Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstateplugins/test/testapps/src/gsatestappgood_reg.rss Thu Jun 24 11:22:10 2010 +0100 @@ -29,4 +29,4 @@ // filename of application binary (minus extension) app_file="gsatestappgood"; } - \ No newline at end of file + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstateplugins/test/tunitconditionevaluator/resource/tunitconditionevaluator.rss --- a/sysstatemgmt/systemstateplugins/test/tunitconditionevaluator/resource/tunitconditionevaluator.rss Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstateplugins/test/tunitconditionevaluator/resource/tunitconditionevaluator.rss Thu Jun 24 11:22:10 2010 +0100 @@ -176,4 +176,5 @@ { key = 0x2; bitmask = 0x0010; - } \ No newline at end of file + } + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstateplugins/test/tunitutilityplugin/src/tutilityplugin_step.cpp --- a/sysstatemgmt/systemstateplugins/test/tunitutilityplugin/src/tutilityplugin_step.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstateplugins/test/tunitutilityplugin/src/tutilityplugin_step.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -157,27 +157,27 @@ // OOM tests start here __UHEAP_MARK; - TRAP(err, doOOMTestL(&doTest1L)); + TRAP(err, doOOMTestL(&CUtilityPluginTest::doTest1L)); TEST(err == KErrNone); __UHEAP_MARKEND; __UHEAP_MARK; - TRAP(err, doOOMTestL(&doTest2L)); + TRAP(err, doOOMTestL(&CUtilityPluginTest::doTest2L)); TEST(err == KErrNone); __UHEAP_MARKEND; __UHEAP_MARK; - TRAP(err, doOOMTestL(&doTest3L)); + TRAP(err, doOOMTestL(&CUtilityPluginTest::doTest3L)); TEST(err == KErrNone); __UHEAP_MARKEND; __UHEAP_MARK; - TRAP(err, doOOMTestL(&doTest5L)); + TRAP(err, doOOMTestL(&CUtilityPluginTest::doTest5L)); TEST(err == KErrNone); __UHEAP_MARKEND; __UHEAP_MARK; - TRAP(err, doOOMTestL(&doTest6L)); + TRAP(err, doOOMTestL(&CUtilityPluginTest::doTest6L)); TEST(err == KErrNone); __UHEAP_MARKEND; diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/group/bld.inf --- a/sysstatemgmt/systemstatereferenceplugins/clayer/group/bld.inf Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/group/bld.inf Thu Jun 24 11:22:10 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" @@ -47,8 +47,8 @@ ../inc/securitynotification.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(ssm/securitynotification.h) ../inc/ssmpropertyobserver.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(ssm/ssmpropertyobserver.h) ../inc/strtsecuritystatus.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(ssm/strtsecuritystatus.h) -#ifdef SYMBIAN_OLD_EXPORT_LOCATION -../inc/startupadaptationadapter.h /epoc32/include/ssm/startupadaptationadapter.h -#endif + +../inc/startupadaptationadapter.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(ssm/startupadaptationadapter.h) + ../inc/clayerswp.hrh /epoc32/include/ssm/clayerswp.hrh ../inc/clayerdlldatadefs.rh SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(ssm/clayerdlldatadefs.rh) diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/group/ssmclayersup.mmp --- a/sysstatemgmt/systemstatereferenceplugins/clayer/group/ssmclayersup.mmp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/group/ssmclayersup.mmp Thu Jun 24 11:22:10 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" @@ -32,7 +32,6 @@ USERINCLUDE ../inc USERINCLUDE ../../localinc USERINCLUDE ../../custcmd/inc -USERINCLUDE ../../../../../../os/devicesrv/sysstatemgmt/systemstatereferenceplugins/custcmd/inc SOURCEPATH ../src SOURCE ssmsecurityeventobserver.cpp @@ -45,6 +44,9 @@ SOURCEPATH ../../custcmd/src SOURCE ssmsecuritychecknotifier.cpp +SOURCEPATH ../../localsrc +SOURCE ssmpanic.cpp + LIBRARY euser.lib LIBRARY ssmuiproviderdll.lib diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/inc/securitynotification.h --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/securitynotification.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/securitynotification.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2006-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" @@ -12,21 +12,9 @@ * Contributors: * * Description: -* Name : securitynotification.h -* Part of : System Startup / Starter * Interface : Domain, Security Notification API * Parameter and constant definitions for launching * security-related notifications using the Notifier Framework. -* Version : %version: ou1s60rt#2.1.1 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.1 -* Nokia Core OS * * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/inc/simutils.h --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/simutils.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/simutils.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -12,20 +12,8 @@ * Contributors: * * Description: -* Name : simutils.h -* Part of : System Startup / Starter * Interface : Domain, SIM Utils API * This file contains SIM Utils definitions of Startup subsystem. -* Version : %version: 1 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.2 -* Nokia Core OS * * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/inc/ssmsecurityeventobserver.h --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/ssmsecurityeventobserver.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/ssmsecurityeventobserver.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -12,20 +12,7 @@ * Contributors: * * Description: -* Name : strtsecurityeventobserver.h -* Part of : System Startup / StrtSecObs * Declaration of CStrtSecurityEventObserver class -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.2 -* Nokia Core OS * -* File renamed from strtsecurityeventobserver.h to ssmsecurityeventobserver.h as part of Core OS transfer. * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/inc/ssmsecuritynotecontroller.h --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/ssmsecuritynotecontroller.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/ssmsecuritynotecontroller.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -12,20 +12,7 @@ * Contributors: * * Description: -* Name : strtsecuritynotecontroller.h -* Part of : System Startup / StrtSecObs * Declaration of CStrtSecurityNoteController class -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.2 -* Nokia Core OS * -* File renamed from strtsecuritynotecontroller.h to ssmsecuritynotecontroller.h as part of Core OS transfer. * */ @@ -43,6 +30,7 @@ * @released */ + class CSsmSecurityCheckNotifier; class CStrtSecNoteRequestQueue; @@ -98,10 +86,16 @@ /** * From CActive. * Handles an active object's request completion event. - * Never leaves. */ virtual void RunL(); + /** + * From CActive. + * Handles any leaves originating from the active object's RunL(). + */ + + virtual TInt RunError(TInt aError); + private: /** diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/inc/starter.hrh --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/starter.hrh Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/starter.hrh Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-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" @@ -12,20 +12,8 @@ * Contributors: * * Description: -* Name : starter.hrh -* Part of : System Startup / Starter * Interface : Domain, Extended Startup API * Resource headers for projects StarterServer and StarterClient. -* Version : %version: 6 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.0 -* Nokia Core OS * * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/inc/starterclient.h --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/starterclient.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/starterclient.h Thu Jun 24 11:22:10 2010 +0100 @@ -12,20 +12,8 @@ * Contributors: * * Description: -* Name : starterclient.h -* Part of : System Startup / Starter * Interface : Domain, System State Control API and Extended Startup API * Declaration of RStarterSession interface -* Version : %version: ou1s60rt#8 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.0 -* Nokia Core OS * * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/inc/starterdomaincrkeys.h --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/starterdomaincrkeys.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/starterdomaincrkeys.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -12,20 +12,8 @@ * Contributors: * * Description: -* Name : starterdomaincrkeys.h -* Part of : System Startup / Starter * Interface : Domain, Startup Status API. * Domain Central Repository definitions of System Startup subsystem. -* Version : %version: 1 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.0 -* Nokia Core OS * * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/inc/starterprivatecrkeys.h --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/starterprivatecrkeys.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/starterprivatecrkeys.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -12,20 +12,8 @@ * Contributors: * * Description: -* Name : starterprivatecrkeys.h -* Part of : System Startup / Starter * Interface : Private, Starter Configuration API. * Private Central Repository definitions of Starter component. -* Version : %version: 2 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.0 -* Nokia Core OS * * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupadaptation.h --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupadaptation.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupadaptation.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2004-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" @@ -12,21 +12,9 @@ * Contributors: * * Description: -* Name : startupadaptation.h -* Part of : System Startup / Starter * Interface : Domain, Startup Adaptation API * This header file defines the Startup Adaptation API command * interface used to issue commands towards adaptation. -* Version : %version: ou1s60rt#6 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.0 -* Nokia Core OS * * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupadaptation.inl --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupadaptation.inl Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupadaptation.inl Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2004-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" @@ -12,21 +12,9 @@ * Contributors: * * Description: -* Name : startupadaptation.inl -* Part of : System Startup / Starter * Interface : Domain, Startup Adaptation API * Implementation for inline functions of CStartupAdaptation * class. -* Version : %version: ou1s60rt#7 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.0 -* Nokia Core OS * * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupadaptationcommands.h --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupadaptationcommands.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupadaptationcommands.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2004-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" @@ -12,8 +12,6 @@ * Contributors: * * Description: -* Name : startupadaptationcommands.h -* Part of : System Startup / Starter * Interface : Domain, Startup Adaptation API * This header file defines the startup adaptation API commands * and their parameters. @@ -21,16 +19,6 @@ * - Command definitions * - Command parameter definitions * - Response parameter definitions -* Version : %version: ou1s60rt#12.1.4 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.0 -* Nokia Core OS * * */ @@ -661,52 +649,58 @@ */ enum TPreferredLanguage - { // ISO 639 GSM 0338 - EPrefLangEnglish = 1, // EN 1 - EPrefLangFrench = 2, // FR 3 - EPrefLangGerman = 3, // DE 0 - EPrefLangSpanish = 4, // ES 4 - EPrefLangItalian = 5, // IT 2 - EPrefLangSwedish = 6, // SV 6 - EPrefLangDanish = 7, // DA 7 - EPrefLangNorwegian = 8, // NO 10 - EPrefLangFinnish = 9, // FI 9 - EPrefLangPortuguese = 13, // PT 8 - EPrefLangTurkish = 14, // TR 12 - EPrefLangIcelandic = 15, // IS 36 - EPrefLangRussian = 16, // RU 35 - EPrefLangHungarian = 17, // HU 13 - EPrefLangDutch = 18, // NL 5 - EPrefLangCzech = 25, // CS 32 - EPrefLangSlovak = 26, // SK - EPrefLangPolish = 27, // PL 14 - EPrefLangSlovenian = 28, // SL - EPrefLangPrcChinese = 31, // ZH - EPrefLangJapanese = 32, // JA - EPrefLangThai = 33, // TH - EPrefLangArabic = 37, // AR 34 - EPrefLangTagalog = 39, // TL - EPrefLangBulgarian = 42, // BG - EPrefLangCatalan = 44, // CA - EPrefLangCroatian = 45, // HR - EPrefLangEstonian = 49, // ET - EPrefLangFarsi = 50, // FA - EPrefLangGreek = 54, // EL 11 - EPrefLangHebrew = 57, // IW 33 - EPrefLangHindi = 58, // HI - EPrefLangIndonesian = 59, // IN - EPrefLangKorean = 65, // KO - EPrefLangLatvian = 67, // LV - EPrefLangLithuanian = 68, // LT - EPrefLangMalay = 70, // MS - EPrefLangMarathi = 72, // MR - EPrefLangRomanian = 78, // RO - EPrefLangSerbian = 79, // SR - EPrefLangUkrainian = 93, // UK - EPrefLangUrdu = 94, // UR - EPrefLangVietnamese = 96, // VI - EPrefLangBasque = 102, // EU - EPrefLangGalician = 103 // GL + { // ISO 639 GSM 0338 + EPrefLangEnglish = 1, // EN 1 + EPrefLangFrench = 2, // FR 3 + EPrefLangGerman = 3, // DE 0 + EPrefLangSpanish = 4, // ES 4 + EPrefLangItalian = 5, // IT 2 + EPrefLangSwedish = 6, // SV 6 + EPrefLangDanish = 7, // DA 7 + EPrefLangNorwegian = 8, // NO 10 + EPrefLangFinnish = 9, // FI 9 + EPrefLangAmerican = 10, // EN + EPrefLangPortuguese = 13, // PT 8 + EPrefLangTurkish = 14, // TR 12 + EPrefLangIcelandic = 15, // IS 36 + EPrefLangRussian = 16, // RU 35 + EPrefLangHungarian = 17, // HU 13 + EPrefLangDutch = 18, // NL 5 + EPrefLangCzech = 25, // CS 32 + EPrefLangSlovak = 26, // SK + EPrefLangPolish = 27, // PL 14 + EPrefLangSlovenian = 28, // SL + EPrefLangTaiwanChinese = 29, // TC + EPrefLangHongKongChinese = 30, // HK + EPrefLangPrcChinese = 31, // ZH + EPrefLangJapanese = 32, // JA + EPrefLangThai = 33, // TH + EPrefLangArabic = 37, // AR 34 + EPrefLangTagalog = 39, // TL + EPrefLangBulgarian = 42, // BG + EPrefLangCatalan = 44, // CA + EPrefLangCroatian = 45, // HR + EPrefLangEstonian = 49, // ET + EPrefLangFarsi = 50, // FA + EPrefLangCanadianFrench = 51, // CF + EPrefLangGreek = 54, // EL 11 + EPrefLangHebrew = 57, // IW 33 + EPrefLangHindi = 58, // HI + EPrefLangIndonesian = 59, // IN + EPrefLangKorean = 65, // KO + EPrefLangLatvian = 67, // LV + EPrefLangLithuanian = 68, // LT + EPrefLangMalay = 70, // MS + EPrefLangMarathi = 72, // MR + EPrefLangBrazilianPortuguese = 76, // BP + EPrefLangRomanian = 78, // RO + EPrefLangSerbian = 79, // SR + EPrefLangLatinAmericanSpanish = 83, // LS + EPrefLangUkrainian = 93, // UK + EPrefLangUrdu = 94, // UR + EPrefLangVietnamese = 96, // VI + EPrefLangBasque = 102, // EU + EPrefLangGalician = 103 // GL }; diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupadaptationcommands.inl --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupadaptationcommands.inl Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupadaptationcommands.inl Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2006-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" @@ -12,21 +12,9 @@ * Contributors: * * Description: -* Name : startupadaptationcommands.inl -* Part of : System Startup / Starter * Interface : Domain, Startup Adaptation API * Implementation for inline functions of classes defined in * startupadaptationcommands.h. -* Version : %version: 2 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.0 -* Nokia Core OS * * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupadaptationevents.h --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupadaptationevents.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupadaptationevents.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2004-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" @@ -12,24 +12,12 @@ * Contributors: * * Description: -* Name : startupadaptationevents.h -* Part of : System Startup / Starter * Interface : Domain, Startup Adaptation API * This header file defines the startup adaptation API events * and their parameters. * This file contains the following sections: * - Event definitions * - Event parameter definitions -* Version : %version: 5 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.0 -* Nokia Core OS * * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupadaptationobserver.h --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupadaptationobserver.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupadaptationobserver.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2004-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" @@ -12,21 +12,9 @@ * Contributors: * * Description: -* Name : startupadaptationobserver.h -* Part of : System Startup / Starter * Interface : Domain, Startup Adaptation API * This header file defines the startup adaptation API observer * interface used to return responses and deliver events. -* Version : %version: ou1s60rt#5 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.1 -* Nokia Core OS * * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupdomainpskeys.h --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupdomainpskeys.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupdomainpskeys.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-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" @@ -12,20 +12,8 @@ * Contributors: * * Description: -* Name : startupdomainpskeys.h -* Part of : System Startup / Starter * Interface : Domain, System State API * This file contains Domain Publish & Subscribe definitions of Startup subsystem. -* Version : %version: ou1s60rt#12 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.0 -* Nokia Core OS * * */ @@ -46,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 // ============================================================================= @@ -271,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 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupreason.h --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupreason.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupreason.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -12,20 +12,8 @@ * Contributors: * * Description: -* Name : startupreason.h -* Part of : System Startup / Starter * Interface : Domain, Startup Reason API * Contains enumeration of valid system startup reasons. -* Version : %version: 2 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.1 -* Nokia Core OS * * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/inc/strtsecnoterequestqueue.h --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/strtsecnoterequestqueue.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/strtsecnoterequestqueue.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -12,20 +12,7 @@ * Contributors: * * Description: -* Name : strtsecnoterequestqueue.h -* Part of : System Startup / StrtSecObs * Declaration of CStrtSecNoteRequestQueue class -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.2 -* Nokia Core OS * -* */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/inc/strtsecphaseobserver.h --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/strtsecphaseobserver.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/strtsecphaseobserver.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -12,19 +12,7 @@ * Contributors: * * Description: -* Name : strtsecphaseobserver.h -* Part of : System Startup / StrtSecObs * Declaration of CStrtSecPhaseObserver class -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.2 -* Nokia Core OS * * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/inc/strtsecuritynotetype.h --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/strtsecuritynotetype.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/strtsecuritynotetype.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -12,19 +12,7 @@ * Contributors: * * Description: -* Name : strtsecuritynotetype.h -* Part of : System Startup / StrtSecNote * Definition of TStrtSecurityNoteType enumeration. -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.2 -* Nokia Core OS * * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/inc/strtsecuritystatus.h --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/strtsecuritystatus.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/strtsecuritystatus.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2004-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" @@ -12,20 +12,7 @@ * Contributors: * * Description: -* Name : strtsecuritystatus.h -* Part of : System Startup / Starter -* Interface : None * TStrtSecurityStatus enumeration. -* Version : %version: ou1s60rt#4 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.1 -* Nokia Core OS * * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/src/ssmsecurityeventobserver.cpp --- a/sysstatemgmt/systemstatereferenceplugins/clayer/src/ssmsecurityeventobserver.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/src/ssmsecurityeventobserver.cpp Thu Jun 24 11:22:10 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" @@ -11,24 +11,11 @@ // Contributors: // // Description: -// Name : strtsecurityeventobserver.cpp -// Part of : System Startup / StrtSecObs // Implementation of CStrtSecurityEventObserver class -// Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. -// This material, including documentation and any related computer -// programs, is protected by copyright controlled by Nokia. All -// rights are reserved. Copying, including reproducing, storing, -// adapting or translating, any or all of this material requires the -// prior written consent of Nokia. This material also contains -// confidential information which may not be disclosed to others -// without the prior written consent of Nokia. -// Template version: 4.1.1 -// Nokia Core OS * -// File renamed from strtsecurityeventobserver.cpp to ssmsecurityeventobserver.cpp as part of Core OS transfer. // - +#include #include "strtsecphaseobserver.h" #include "ssmsecurityeventobserver.h" #include "ssmsecuritynotecontroller.h" @@ -139,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; @@ -151,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 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/src/ssmsecuritynotecontroller.cpp --- a/sysstatemgmt/systemstatereferenceplugins/clayer/src/ssmsecuritynotecontroller.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/src/ssmsecuritynotecontroller.cpp Thu Jun 24 11:22:10 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" @@ -11,20 +11,7 @@ // Contributors: // // Description: -// Name : strtsecuritynotecontroller.cpp -// Part of : System Startup / StrtSecObs // Implementation of CStrtSecurityNoteController class -// Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. -// This material, including documentation and any related computer -// programs, is protected by copyright controlled by Nokia. All -// rights are reserved. Copying, including reproducing, storing, -// adapting or translating, any or all of this material requires the -// prior written consent of Nokia. This material also contains -// confidential information which may not be disclosed to others -// without the prior written consent of Nokia. -// Template version: 4.1.1 -// Nokia Core OS * -// File renamed from strtsecuritynotecontroller.cpp to ssmsecuritynotecontroller.cpp as part of Core OS transfer. // @@ -33,6 +20,9 @@ #include "ssmsecuritynotecontroller.h" #include "ssmsecuritychecknotifier.h" #include "ssmdebug.h" +#include "ssmpanic.h" +#include +#include CStrtSecurityNoteController* CStrtSecurityNoteController::NewL() { @@ -89,6 +79,36 @@ SetActive(); } } +#ifdef _DEBUG +TInt CStrtSecurityNoteController::RunError(TInt aError) +#else +TInt CStrtSecurityNoteController::RunError(TInt) +#endif // _DEBUG + { + DEBUGPRINT2A("CStrtSecurityNoteController RunL completed with error %d", aError); +#ifdef _DEBUG + PanicNow(KPanicSecurityNoteController, aError); +#else + RSsmStateManager session; + TInt errorCode = session.Connect(); + if ( KErrNone == errorCode ) + { + TSsmStateTransition stateinfo( ESsmShutdown, KSsmAnySubState, EUnknownReset ); + errorCode = session.RequestStateTransition( stateinfo ); + if( KErrNone != errorCode ) + { + PanicNow(KPanicSecurityNoteController, errorCode); + } + session.Close(); + } + else + { + PanicNow(KPanicSecurityNoteController, errorCode); + } +#endif //_DEBUG + + return KErrNone; + } CStrtSecurityNoteController::CStrtSecurityNoteController() : CActive( EPriorityStandard ), diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/src/ssmsimstatusobserver.cpp --- a/sysstatemgmt/systemstatereferenceplugins/clayer/src/ssmsimstatusobserver.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/src/ssmsimstatusobserver.cpp Thu Jun 24 11:22:10 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" @@ -155,10 +155,16 @@ * * @internalComponent */ +#ifdef _DEBUG TInt CSsmSimStatusObserver::RunError(TInt aError) +#else +TInt CSsmSimStatusObserver::RunError(TInt) +#endif // _DEBUG { DEBUGPRINT2A("CSsmSimStatusObserver RunError received error: %d", aError); - return aError; + //Errors are thrown if SWP transitions are not allowed. + //So, handles such errors gracefully. + return KErrNone; } /** diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/src/strtsecnoterequestqueue.cpp --- a/sysstatemgmt/systemstatereferenceplugins/clayer/src/strtsecnoterequestqueue.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/src/strtsecnoterequestqueue.cpp Thu Jun 24 11:22:10 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" @@ -11,19 +11,7 @@ // Contributors: // // Description: -// Name : strtsecnoterequestqueue.cpp -// Part of : System Startup / StrtSecObs // Implementation of CStrtSecNoteRequestQueue class -// Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. -// This material, including documentation and any related computer -// programs, is protected by copyright controlled by Nokia. All -// rights are reserved. Copying, including reproducing, storing, -// adapting or translating, any or all of this material requires the -// prior written consent of Nokia. This material also contains -// confidential information which may not be disclosed to others -// without the prior written consent of Nokia. -// Template version: 4.1.1 -// Nokia Core OS * // diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/clayer/src/strtsecphaseobserver.cpp --- a/sysstatemgmt/systemstatereferenceplugins/clayer/src/strtsecphaseobserver.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/src/strtsecphaseobserver.cpp Thu Jun 24 11:22:10 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" @@ -11,19 +11,7 @@ // Contributors: // // Description: -// Name : strtsecphaseobserver.cpp -// Part of : System Startup / StrtSecObs // Implementation of CStrtSecPhaseObserver class -// Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. -// This material, including documentation and any related computer -// programs, is protected by copyright controlled by Nokia. All -// rights are reserved. Copying, including reproducing, storing, -// adapting or translating, any or all of this material requires the -// prior written consent of Nokia. This material also contains -// confidential information which may not be disclosed to others -// without the prior written consent of Nokia. -// Template version: 4.1.1 -// Nokia Core OS * // diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/custcmd/bwins/ssmuiproviderdllswitchu.def --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/bwins/ssmuiproviderdllswitchu.def Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/bwins/ssmuiproviderdllswitchu.def Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/custcmd/bwins/ssmuiproviderdllu.def --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/bwins/ssmuiproviderdllu.def Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/bwins/ssmuiproviderdllu.def Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/custcmd/eabi/ssmuiproviderdllu.def --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/eabi/ssmuiproviderdllu.def Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/eabi/ssmuiproviderdllu.def Thu Jun 24 11:22:10 2010 +0100 @@ -28,3 +28,5 @@ _ZN14CSsmUiSpecific22ValidateRTCPropertyKeyEv @ 27 NONAME _ZN14CSsmUiSpecific27ValidateRTCPropertyCategoryEv @ 28 NONAME _ZN14CSsmUiSpecific22PhoneMemoryRootDriveIdEv @ 29 NONAME + _ZN14CSsmUiSpecific23ReservePhoneMemorySpaceEv @ 30 NONAME + _ZN14CSsmUiSpecific28FreeReservedPhoneMemorySpaceEi @ 31 NONAME diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/custcmd/group/ssmuiproviderdlldefault.mmp --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/group/ssmuiproviderdlldefault.mmp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/group/ssmuiproviderdlldefault.mmp Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/custcmd/inc/cmddevicesecuritycheck.h --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/inc/cmddevicesecuritycheck.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/inc/cmddevicesecuritycheck.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -12,20 +12,7 @@ * Contributors: * * Description: -* Name : strtdevlockcheck.h -* Part of : System Startup / StrtDevLockPlg * Declaration of CStrtDevLockCheck class. -* Version : %version: 1 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.2 -* Nokia Core OS * -* File renamed from strtdevlockcheck.h to cmddevicesecuritycheck.h as part of Core OS transfer. * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/custcmd/inc/cmdsimsecuritycheck.h --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/inc/cmdsimsecuritycheck.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/inc/cmdsimsecuritycheck.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -12,20 +12,7 @@ * Contributors: * * Description: -* Name : strtsecuritychecktask.h -* Part of : System Startup / Starter * Declaration of CStrtSecurityCheckTask class -* Version : %version: ou1s60rt#5.1.1 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.0 -* Nokia Core OS * -* File renamed from strtsecuritychecktask.h to cmdsimsecuritycheck.h as part of Core OS transfer. * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/custcmd/inc/securitynoteobserver.h --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/inc/securitynoteobserver.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/inc/securitynoteobserver.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -12,21 +12,7 @@ * Contributors: * * Description: -* Name : strtsecuritynoteobserver.h -* Part of : System Startup / Starter -* Interface : None * Declaration of CStrtSecurityNoteObserver class. -* Version : %version: ou1s60rt#4 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.0 -* Nokia Core OS * -* File renamed from strtsecuritynoteobserver.h to securitynoteobserver.h as part of Core OS transfer. * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/custcmd/inc/ssmrefcustomcmdcommon.h --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/inc/ssmrefcustomcmdcommon.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/inc/ssmrefcustomcmdcommon.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -12,20 +12,7 @@ * Contributors: * * Description: -* Name : strtsecuritychecktask.h -* Part of : System Startup / Starter * Declaration of CStrtSecurityCheckTask class -* Version : %version: ou1s60rt#5.1.1 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.0 -* Nokia Core OS * -* File renamed from strtsecuritychecktask.h to ssmrefcustomcmdcommon.h as part of Core OS transfer. * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/custcmd/inc/ssmsecuritychecknotifier.h --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/inc/ssmsecuritychecknotifier.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/inc/ssmsecuritychecknotifier.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -12,21 +12,7 @@ * Contributors: * * Description: -* Name : strtsecuritynote.h -* Part of : System Startup / Starter -* Interface : None * Declaration of CStrtSecurityNote class. -* Version : %version: ou1s60rt#4 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.0 -* Nokia Core OS * -* File renamed from strtsecuritynote.h to ssmsecuritychecknotifier.h as part of Core OS transfer. * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/custcmd/inc/ssmuiproviderdll.h --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/inc/ssmuiproviderdll.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/inc/ssmuiproviderdll.h Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/custcmd/inc/ssmuiproviderdllswitch_stubs.h --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/inc/ssmuiproviderdllswitch_stubs.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/inc/ssmuiproviderdllswitch_stubs.h Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/custcmd/inc/swppolicy_simstatus.h --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/inc/swppolicy_simstatus.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/inc/swppolicy_simstatus.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* 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" @@ -12,20 +12,7 @@ * Contributors: * * Description: -* Name : strtsimstatusmgr.h -* Part of : System Startup / Starter -* Interface : None * Declaration of TStrtSimStatusMgr class. -* Version : %version: ou1s60rt#7 % -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing, -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* Template version: 4.0 -* Nokia Core OS * * */ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/custcmd/src/cmddevicesecuritycheck.cpp --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/src/cmddevicesecuritycheck.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/src/cmddevicesecuritycheck.cpp Thu Jun 24 11:22:10 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" @@ -11,20 +11,7 @@ // Contributors: // // Description: -// Name : strtdevlockcheck.cpp -// Part of : System Startup / StrtDevLockPlg // Implementation of CStrtDevLockCheck class. -// Version : %version: 1 % -// This material, including documentation and any related computer -// programs, is protected by copyright controlled by Nokia. All -// rights are reserved. Copying, including reproducing, storing, -// adapting or translating, any or all of this material requires the -// prior written consent of Nokia. This material also contains -// confidential information which may not be disclosed to others -// without the prior written consent of Nokia. -// Template version: 4.1.1 -// Nokia Core OS * -// File renamed from strtdevlockcheck.cpp to cmddevicesecuritycheck.cpp as part of Core OS transfer. // diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/custcmd/src/cmdsimsecuritycheck.cpp --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/src/cmdsimsecuritycheck.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/src/cmdsimsecuritycheck.cpp Thu Jun 24 11:22:10 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" @@ -11,20 +11,7 @@ // Contributors: // // Description: -// Name : strtsecuritychecktask.cpp -// Part of : System Startup / Starter // Implementation of CStrtSecurityCheckTask class -// Version : %version: ou1s60rt#7.1.1 % -// This material, including documentation and any related computer -// programs, is protected by copyright controlled by Nokia. All -// rights are reserved. Copying, including reproducing, storing, -// adapting or translating, any or all of this material requires the -// prior written consent of Nokia. This material also contains -// confidential information which may not be disclosed to others -// without the prior written consent of Nokia. -// Template version: 4.1 -// Nokia Core OS * -// File renamed from strtsecuritychecktask.cpp to cmdsimsecuritycheck.cpp as part of Core OS transfer. // diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/custcmd/src/securitynoteobserver.cpp --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/src/securitynoteobserver.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/src/securitynoteobserver.cpp Thu Jun 24 11:22:10 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" @@ -11,20 +11,7 @@ // Contributors: // // Description: -// Name : strtsecuritynoteobserver.cpp -// Part of : System Startup / Starter // Implementation of CStrtSecurityNoteObserver class. -// Version : %version: 3 % -// This material, including documentation and any related computer -// programs, is protected by copyright controlled by Nokia. All -// rights are reserved. Copying, including reproducing, storing, -// adapting or translating, any or all of this material requires the -// prior written consent of Nokia. This material also contains -// confidential information which may not be disclosed to others -// without the prior written consent of Nokia. -// Template version: 4.1 -// Nokia Core OS * -// File renamed from strtsecuritynoteobserver.cpp to securitynoteobserver.cpp as part of Core OS transfer. // diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/custcmd/src/ssmsecuritychecknotifier.cpp --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/src/ssmsecuritychecknotifier.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/src/ssmsecuritychecknotifier.cpp Thu Jun 24 11:22:10 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" @@ -11,20 +11,7 @@ // Contributors: // // Description: -// Name : strtsecuritynote.cpp -// Part of : System Startup / Starter // Implementation of CStrtSecurityNote class. -// Version : %version: 4 % -// This material, including documentation and any related computer -// programs, is protected by copyright controlled by Nokia. All -// rights are reserved. Copying, including reproducing, storing, -// adapting or translating, any or all of this material requires the -// prior written consent of Nokia. This material also contains -// confidential information which may not be disclosed to others -// without the prior written consent of Nokia. -// Template version: 4.1 -// Nokia Core OS * -// File renamed from strtsecuritynote.cpp to ssmsecuritychecknotifier.cpp as part of Core OS transfer. // @@ -42,7 +29,8 @@ #include #include #include -#include +#include +#include static TBool NoteTypeToEvent( TInt& aEventCode, const TStrtSecurityNoteType aNoteType ) @@ -215,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(); @@ -248,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 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/custcmd/src/ssmuiproviderdlldefault.cpp --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/src/ssmuiproviderdlldefault.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/src/ssmuiproviderdlldefault.cpp Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/custcmd/src/swppolicy_simstatus.cpp --- a/sysstatemgmt/systemstatereferenceplugins/custcmd/src/swppolicy_simstatus.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/custcmd/src/swppolicy_simstatus.cpp Thu Jun 24 11:22:10 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" @@ -11,19 +11,7 @@ // Contributors: // // Description: -// Name : strtsimstatusmgr.cpp -// Part of : System Startup / Starter // Implementation of TStrtSimStatusMgr class. -// Version : %version: 7 % -// This material, including documentation and any related computer -// programs, is protected by copyright controlled by Nokia. All -// rights are reserved. Copying, including reproducing, storing, -// adapting or translating, any or all of this material requires the -// prior written consent of Nokia. This material also contains -// confidential information which may not be disclosed to others -// without the prior written consent of Nokia. -// Template version: 4.1 -// Nokia Core OS * // @@ -37,6 +25,7 @@ #include "ssmuiproviderdll.h" #include "swppolicy_simstatus.h" +#include "ssmdebug.h" #include #include @@ -221,9 +210,20 @@ { (void)aSwp; (void)aSeverity; + (void)aError; TRequestStatus* rs = &aStatus; +#if defined(_DEBUG) + if(KErrNone != aError) + { + DEBUGPRINT3A("ERROR: Request SwP change for SIM status (SwP key %d) completed with error %d", aSwp.Key(), aError); + } + //Complete the status with the error which inturn panics SSM server User::RequestComplete(rs, aError); +#else // _DEBUG + //Completing the status with KErrNone to avoid panic in SSM server + User::RequestComplete(rs, KErrNone); +#endif // _DEBUG } void CSimStatuspolicy::HandleCleReturnValueCancel() diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/group/app-framework_ssrefplugins.mrp --- a/sysstatemgmt/systemstatereferenceplugins/group/app-framework_ssrefplugins.mrp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/group/app-framework_ssrefplugins.mrp Thu Jun 24 11:22:10 2010 +0100 @@ -1,3 +1,19 @@ +# +# Copyright (c) 2009 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: +# + component app-framework_ssrefplugins source \sf\os\devicesrv\sysstatemgmt\systemstatereferenceplugins binary \sf\os\devicesrv\sysstatemgmt\systemstatereferenceplugins\group all diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/localinc/ssmpanic.h --- a/sysstatemgmt/systemstatereferenceplugins/localinc/ssmpanic.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/localinc/ssmpanic.h Thu Jun 24 11:22:10 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" @@ -48,6 +48,7 @@ _LIT(KPanicSsmUiSpecific, "CSsmUiSpecific"); _LIT(KPanicCustomCmdDeviceSecurityCheck, "CCustomCmdDeviceSecurityCheck"); _LIT(KPanicSecurityCheckNotifier, "CSsmSecurityCheckNotifier"); +_LIT(KPanicSecurityNoteController, "CStrtSecurityNoteController"); /** Defines all possible panic codes within System State Management component diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/test/tclayer/group/tclayer_server.mmp --- a/sysstatemgmt/systemstatereferenceplugins/test/tclayer/group/tclayer_server.mmp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/test/tclayer/group/tclayer_server.mmp Thu Jun 24 11:22:10 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" @@ -141,4 +141,8 @@ //Needed for security event observer SOURCE ssmsecuritychecknotifier.cpp +//Needed for security note controller +SOURCEPATH ../../../localsrc +SOURCE ssmpanic.cpp + SMPSAFE diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/test/tintcustcmd/group/101F8762.txt Binary file sysstatemgmt/systemstatereferenceplugins/test/tintcustcmd/group/101F8762.txt has changed diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/group/101F8762.txt Binary file sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/group/101F8762.txt has changed diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/inc/tcmd_step_publishstartupmode.h --- a/sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/inc/tcmd_step_publishstartupmode.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/inc/tcmd_step_publishstartupmode.h Thu Jun 24 11:22:10 2010 +0100 @@ -25,12 +25,13 @@ #include -_LIT(KTCCustomCmdTestPublishStartupMode, "CCustomCmdTestPublishStartupMode"); +_LIT(KTestPublishStartupModeWithCap, "TestPublishStartupModeWithCap"); +_LIT(KTestPublishStartupModeWithoutCap,"TestPublishStartupModeWithoutCap"); class CCustomCmdTestPublishStartupMode: public CTestStep { public: - CCustomCmdTestPublishStartupMode(); + CCustomCmdTestPublishStartupMode(const TDesC& aTestStepName); ~CCustomCmdTestPublishStartupMode(); //from CTestStep @@ -48,6 +49,7 @@ CActiveScheduler* iActiveScheduler; CAsyncCallBack* iAsyncStopScheduler; TRequestStatus iRequestStatus; + const TDesC& iTestStepName; }; #endif // __TCMD_STEP_PUBLISHSTARTUPMODE_H__ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/scripts/ssrefpluginstest_custcmd_publishstartupmode.script --- a/sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/scripts/ssrefpluginstest_custcmd_publishstartupmode.script Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/scripts/ssrefpluginstest_custcmd_publishstartupmode.script Thu Jun 24 11:22:10 2010 +0100 @@ -19,11 +19,10 @@ START_TESTCASE DEVSRVS-SSREFPLUGINS-CUSTCMD-0022 //! @SYMTestCaseID DEVSRVS-SSREFPLUGINS-CUSTCMD-0022 -//! @SYMPREQ PREQ1871 //! @SYMTestType UT //! @SYMTestPriority High //! @SYMTestStatus Implemented -//! @SYMTestCaseDesc Tests the behaviour of CCustomCmdPublishStartupMode. +//! @SYMTestCaseDesc Tests the behaviour of CCustomCmdPublishStartupMode with all the required capabilities (PowerMgmt,ProtServ & WriteDeviceData). //! Tests the cancel behaviour of CCustomCmdPublishStartupMode. //! @SYMTestActions doTestCreateExecuteAndDestroyL() The test performs operations on a CCustomCmdPublishStartupMode object, namely calling the following methods: //! 1. NewL - Creating the object @@ -37,6 +36,59 @@ //! 4. ExecuteCancel - Cancels the custom command //! 5. Close - Closes the custom command //! @SYMTestExpectedResults Command should execute normally and should complete with KErrNone. -RUN_TEST_STEP 100 tunitcustcmd_server CCustomCmdTestPublishStartupMode +RUN_TEST_STEP 100 tunitcustcmd_server TestPublishStartupModeWithCap END_TESTCASE DEVSRVS-SSREFPLUGINS-CUSTCMD-0022 +RUN_PROGRAM 50 setcap.exe tunitcustcmd_server.exe 000024 tunitcustcmd_server_WithoutCap1.exe + +LOAD_SUITE tunitcustcmd_server_WithoutCap1 + +START_TESTCASE DEVSRVS-SSREFPLUGINS-CUSTCMD-0032 +//! @SYMTestCaseID DEVSRVS-SSREFPLUGINS-CUSTCMD-0032 +//! @TaskID bh1sosd4#32 +//! @SYMTestType UT +//! @SYMTestPriority High +//! @SYMTestStatus Implemented +//! @SYMTestCaseDesc Tests whether setting the Central Repository key 101f8762 fails without proper write capabilities (without ProtServ capability) +//! @SYMTestActions doTestStepPreambleL() The test performs operations on a CRepository object, namely calling the following methods: +//! 1. NewL - Creating the object +//! 2. Set - Setting the Central Repository key +//! @SYMTestExpectedResults Setting the Central Repository key 101f8762 should fail & complete with KErrPermissionDenied. +RUN_TEST_STEP 100 tunitcustcmd_server_WithoutCap1 TestPublishStartupModeWithoutCap +END_TESTCASE DEVSRVS-SSREFPLUGINS-CUSTCMD-0032 + +RUN_PROGRAM 50 setcap.exe tunitcustcmd_server.exe 000120 tunitcustcmd_server_WithoutCap2.exe + +LOAD_SUITE tunitcustcmd_server_WithoutCap2 + +START_TESTCASE DEVSRVS-SSREFPLUGINS-CUSTCMD-0033 +//! @SYMTestCaseID DEVSRVS-SSREFPLUGINS-CUSTCMD-0033 +//! @TaskID bh1sosd4#32 +//! @SYMTestType UT +//! @SYMTestPriority High +//! @SYMTestStatus Implemented +//! @SYMTestCaseDesc Tests whether setting the Central repository key 101f8762 fails without write capabilities (without PowerMgmt capability) +//! @SYMTestActions doTestStepPreambleL() The test performs operations on a CRepository object, namely calling the following methods: +//! 1. NewL - Creating the object +//! 2. Set - Setting the Central Repository key +//! @SYMTestExpectedResults Setting the Central Repository key 101f8762 should fail & complete with KErrPermissionDenied. +RUN_TEST_STEP 100 tunitcustcmd_server_WithoutCap2 TestPublishStartupModeWithoutCap +END_TESTCASE DEVSRVS-SSREFPLUGINS-CUSTCMD-0033 + +RUN_PROGRAM 50 setcap.exe tunitcustcmd_server.exe 000104 tunitcustcmd_server_WithoutCap3.exe + +LOAD_SUITE tunitcustcmd_server_WithoutCap3 + +START_TESTCASE DEVSRVS-SSREFPLUGINS-CUSTCMD-0034 +//! @SYMTestCaseID DEVSRVS-SSREFPLUGINS-CUSTCMD-0034 +//! @TaskID bh1sosd4#32 +//! @SYMTestType UT +//! @SYMTestPriority High +//! @SYMTestStatus Implemented +//! @SYMTestCaseDesc Tests whether setting the Central repository key 101f8762 fails without write capabilities (without WriteDeviceData capability) +//! @SYMTestActions doTestStepPreambleL() The test performs operations on a CRepository object, namely calling the following methods: +//! 1. NewL - Creating the object +//! 2. Set - Setting the Central Repository key +//! @SYMTestExpectedResults Setting the Central Repository key 101f8762 should fail & complete with KErrPermissionDenied. +RUN_TEST_STEP 100 tunitcustcmd_server_WithoutCap3 TestPublishStartupModeWithoutCap +END_TESTCASE DEVSRVS-SSREFPLUGINS-CUSTCMD-0034 \ No newline at end of file diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/src/tcmd_server.cpp --- a/sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/src/tcmd_server.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/src/tcmd_server.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -126,10 +126,14 @@ { testStep = new CCustomCmdTestCoopSysStateChange(); } - else if (aStepName == KTCCustomCmdTestPublishStartupMode) + else if (aStepName == KTestPublishStartupModeWithCap) { - testStep = new CCustomCmdTestPublishStartupMode(); + testStep = new CCustomCmdTestPublishStartupMode(KTestPublishStartupModeWithCap); } + else if (aStepName == KTestPublishStartupModeWithoutCap) + { + testStep = new CCustomCmdTestPublishStartupMode(KTestPublishStartupModeWithoutCap); + } else if (aStepName == KTCCustomCmdTestPublishSimOwnedAndChanged) { testStep = new CCustomCmdTestPublishSimOwnedAndChanged(); diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/src/tcmd_step_publishstartupmode.cpp --- a/sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/src/tcmd_step_publishstartupmode.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/src/tcmd_step_publishstartupmode.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -32,6 +32,7 @@ #include #include #include +#include #include //Exe name which defines startup PS keys @@ -44,12 +45,19 @@ delete iAsyncStopScheduler; } -CCustomCmdTestPublishStartupMode::CCustomCmdTestPublishStartupMode() +CCustomCmdTestPublishStartupMode::CCustomCmdTestPublishStartupMode(const TDesC& aTestStepName):iTestStepName(aTestStepName) { - SetTestStepName(KTCCustomCmdTestPublishStartupMode); + if (iTestStepName == KTestPublishStartupModeWithCap) + { + SetTestStepName(KTestPublishStartupModeWithCap); + } + else + { + SetTestStepName(KTestPublishStartupModeWithoutCap); + } } -// + static TInt CallBackL(TAny* aCCustomCmdTestPublishStartupMode) { //Call back function to stop active scheduler @@ -74,32 +82,35 @@ TVerdict CCustomCmdTestPublishStartupMode::doTestStepPreambleL() { - INFO_PRINTF1(_L("doTestStepPreambleL")); - //Create and install active scheduler - iActiveScheduler = new(ELeave) CActiveScheduler; - CActiveScheduler::Install (iActiveScheduler); - - //Needed for calling callback for stopping active scheduler - iAsyncStopScheduler = new(ELeave) CAsyncCallBack(CActive::EPriorityIdle); - - INFO_PRINTF1(_L("Define global startup mode property")); - - RProcess process; - //Start the test exe which defines startup related property keys - TInt err = process.Create(KExeToDefineStartUpPS, KStartUpPSKeys()); - INFO_PRINTF2(_L("Define global startup mode property process created with %d"), err); - TEST(KErrNone == err); - User::LeaveIfError(err); - process.Resume(); - - process.Rendezvous(iRequestStatus); - User::WaitForRequest(iRequestStatus); - TEST(KErrNone == iRequestStatus.Int()); - - //Kill the define startup ps process - process.Kill(KErrNone); - process.Close(); - + INFO_PRINTF1(_L("doTestStepPreambleL")); + if (iTestStepName == KTestPublishStartupModeWithCap) + { + RProcess process; + CleanupClosePushL(process); + //Create and install active scheduler + iActiveScheduler = new(ELeave) CActiveScheduler; + CActiveScheduler::Install (iActiveScheduler); + + //Needed for calling callback for stopping active scheduler + iAsyncStopScheduler = new(ELeave) CAsyncCallBack(CActive::EPriorityIdle); + + INFO_PRINTF1(_L("Define global startup mode property")); + + //Start the test exe which defines startup related property keys + TInt err = process.Create(KExeToDefineStartUpPS, KStartUpPSKeys()); + INFO_PRINTF2(_L("Define global startup mode property process created with %d"), err); + TEST(KErrNone == err); + User::LeaveIfError(err); + process.Resume(); + + process.Rendezvous(iRequestStatus); + User::WaitForRequest(iRequestStatus); + TEST(KErrNone == iRequestStatus.Int()); + + //Kill the define startup ps process + process.Kill(KErrNone); + CleanupStack::PopAndDestroy(&process); + } return CTestStep::doTestStepPreambleL(); } @@ -112,13 +123,30 @@ { INFO_PRINTF1(_L("Entering test for publish startup mode custom command")); __UHEAP_MARK; - - TRAPD(err, doTestCreateExecuteAndDestroyL()); - TEST(err == KErrNone); - - TRAP(err, doTestFactoryCreateAndExecuteCancelL()); - TEST(err == KErrNone); - + RProcess process(KCurrentProcessHandle); + if(!(process.HasCapability(ECapabilityPowerMgmt) && + process.HasCapability(ECapabilityWriteDeviceData)&& + process.HasCapability(ECapabilityProtServ))) + { + TUid KCentRepId = {0x101f8762}; + CRepository* repository = NULL; + repository = CRepository::NewL(KCentRepId); + + TInt ret = repository->Set(KStartupReason, ENormalStartup); + delete repository; + INFO_PRINTF3(_L("Setting Central Repository key 101f8762 Return value = %d Expected value = %d"),ret, KErrPermissionDenied); + TEST(ret == KErrPermissionDenied); + } + else + { + TRAPD(err, doTestCreateExecuteAndDestroyL()); + TEST(err == KErrNone); + + TRAP(err, doTestFactoryCreateAndExecuteCancelL()); + TEST(err == KErrNone); + + + } __UHEAP_MARKEND; INFO_PRINTF1(_L("Leaving test for publish startup mode custom command")); return TestStepResult(); @@ -138,8 +166,10 @@ TUid KCentRepId = {0x101f8762}; CRepository* repository = CRepository::NewL(KCentRepId); TInt ret = repository->Set(KStartupReason, ENormalStartup); - delete repository; - + delete repository; + INFO_PRINTF3(_L("Setting Central Repository key 101f8762 Return value = %d Expected value = %d"),ret, KErrNone); + TEST(ret == KErrNone); + TInt startUpMode = -1; //Setting inital value of startUpMode as -1 diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/sysuiprovider/inc/ssmuispecific.h --- a/sysstatemgmt/sysuiprovider/inc/ssmuispecific.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/sysuiprovider/inc/ssmuispecific.h Thu Jun 24 11:22:10 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 51d936fe0d0c -r a003130def4e sysstatemgmt/sysuiprovider/src/ssmuispecific.cpp --- a/sysstatemgmt/sysuiprovider/src/ssmuispecific.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/sysuiprovider/src/ssmuispecific.cpp Thu Jun 24 11:22:10 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; + } diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/tsrc/public/basic/MT_SysLangUtil/MT_SysLangUtil.cpp --- a/sysstatemgmt/tsrc/public/basic/MT_SysLangUtil/MT_SysLangUtil.cpp Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,175 +0,0 @@ -/* -* Copyright (c) 2002 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: ?Description -* -*/ - - -// CLASS HEADER -#include "MT_SysLangUtil.h" - -// EXTERNAL INCLUDES -#include -#include -#include - -// CONSTRUCTION -MT_SysLangUtil* MT_SysLangUtil::NewL() - { - MT_SysLangUtil* self = MT_SysLangUtil::NewLC(); - CleanupStack::Pop(); - return self; - } - -MT_SysLangUtil* MT_SysLangUtil::NewLC() - { - MT_SysLangUtil* self = new( ELeave ) MT_SysLangUtil(); - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - -// Destructor (virtual by CBase) -MT_SysLangUtil::~MT_SysLangUtil() - { - Teardown(); - } - -// Default constructor -MT_SysLangUtil::MT_SysLangUtil() - { - } - -// Second phase construct -void MT_SysLangUtil::ConstructL() - { - // The ConstructL from the base class CEUnitTestSuiteClass must be called. - // It generates the test case table. - CEUnitTestSuiteClass::ConstructL(); - } - -// METHODS -void MT_SysLangUtil::SetupL() - { - User::LeaveIfError( iFs.Connect() ); - } - -void MT_SysLangUtil::Teardown() - { - iFs.Close(); - } - -void MT_SysLangUtil::T_SysLangUtil_IsValidLanguageL() - { - // Get default language - TInt language = 0; - TInt result = SysLangUtil::GetDefaultLanguage( language ); - EUNIT_ASSERT_EQUALS( result, KErrNone ); - - // Default language should be valid language - TBool valid = SysLangUtil::IsValidLanguage( language ); - EUNIT_ASSERT( valid ); - - // Default language should be valid language - valid = SysLangUtil::IsValidLanguage( language, &iFs ); - EUNIT_ASSERT( valid ); - } - -void MT_SysLangUtil::T_SysLangUtil_GetDefaultLanguageL() - { - // Get default language - TInt language = 0; - TInt result = SysLangUtil::GetDefaultLanguage( language ); - EUNIT_ASSERT_EQUALS( result, KErrNone ); - - result = SysLangUtil::GetDefaultLanguage( language, &iFs ); - EUNIT_ASSERT_EQUALS( result, KErrNone ); - } - -void MT_SysLangUtil::T_SysLangUtil_GetInstalledLanguagesL() - { - // Create array for languages - CArrayFixFlat* array = new( ELeave ) CArrayFixFlat( 3 ); - CleanupStack::PushL( array ); - - // Get installed languages - TInt res = SysLangUtil::GetInstalledLanguages( array ); - EUNIT_ASSERT_EQUALS( res, KErrNone ); - - array->Reset(); - res = SysLangUtil::GetInstalledLanguages( array, &iFs ); - EUNIT_ASSERT_EQUALS( res, KErrNone ); - - TInt count = array->Count(); - EUNIT_ASSERT( count > 0 ); - - // Assert that each received language is a valid language - for( TInt i = 0; i < count; ++i ) - { - EUNIT_ASSERT( SysLangUtil::IsValidLanguage( array->At( i ) ) ); - } - - CleanupStack::PopAndDestroy( array ); - } - -void MT_SysLangUtil::T_SysLangUtil_RestoreSIMLanguageL() - { - // Get default language - TInt language = 0; - TInt result = SysLangUtil::GetDefaultLanguage( language ); - EUNIT_ASSERT_EQUALS( result, KErrNone ); - - // Default language should be valid language - TInt res = SysLangUtil::RestoreSIMLanguage( language ); - EUNIT_ASSERT_EQUALS( res, KErrNone ); - - // Default language should be valid language - res = SysLangUtil::RestoreSIMLanguage( language, &iFs ); - EUNIT_ASSERT_EQUALS( res, KErrNone ); - } - -// TEST TABLE -EUNIT_BEGIN_TEST_TABLE( - MT_SysLangUtil, - "SysLangUtil API Test", - "MODULE" ) - -EUNIT_TEST( - "#1 Test IsValidLanguage()", - "SysLangUtil", - "IsValidLanguage", - "FUNCTIONALITY", - SetupL, T_SysLangUtil_IsValidLanguageL, Teardown) - -EUNIT_TEST( - "#2 Test GetDefaultLanguage()", - "SysLangUtil", - "GetDefaultLanguage", - "FUNCTIONALITY", - SetupL, T_SysLangUtil_GetDefaultLanguageL, Teardown) - -EUNIT_TEST( - "#3 Test GetInstalledLanguages()", - "SysLangUtil", - "GetInstalledLanguages", - "FUNCTIONALITY", - SetupL, T_SysLangUtil_GetInstalledLanguagesL, Teardown) - -EUNIT_TEST( - "#4 Test RestoreSIMLanguage()", - "SysLangUtil", - "RestoreSIMLanguage", - "FUNCTIONALITY", - SetupL, T_SysLangUtil_RestoreSIMLanguageL, Teardown) -EUNIT_END_TEST_TABLE diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/tsrc/public/basic/MT_SysLangUtil/MT_SysLangUtil.h --- a/sysstatemgmt/tsrc/public/basic/MT_SysLangUtil/MT_SysLangUtil.h Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,64 +0,0 @@ -/* -* Copyright (c) 2002 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: ?Description -* -*/ - - -#ifndef __MT_SYSLANGUTIL_H__ -#define __MT_SYSLANGUTIL_H__ - -// EXTERNAL INCLUDES -#include -#include -#include - -// CLASS DEFINITION -/** - * SysLangUtil API test - */ -NONSHARABLE_CLASS( MT_SysLangUtil ) - : public CEUnitTestSuiteClass - { - public: // Constructors and destructors - /** - * Two phase construction - */ - static MT_SysLangUtil* NewL(); - static MT_SysLangUtil* NewLC(); - /** - * Destructor - */ - ~MT_SysLangUtil(); - - private: // Constructors and destructors - MT_SysLangUtil(); - void ConstructL(); - - private: // New methods - void SetupL(); - void Teardown(); - void T_SysLangUtil_IsValidLanguageL(); - void T_SysLangUtil_GetDefaultLanguageL(); - void T_SysLangUtil_GetInstalledLanguagesL(); - void T_SysLangUtil_RestoreSIMLanguageL(); - - private: // Data - EUNIT_DECLARE_TEST_TABLE; - - // Own: file server session - RFs iFs; - }; - -#endif // __MT_SYSLANGUTIL_H__ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/tsrc/public/basic/MT_SysLangUtil/MT_SysLangUtil_DllMain.cpp --- a/sysstatemgmt/tsrc/public/basic/MT_SysLangUtil/MT_SysLangUtil_DllMain.cpp Fri May 28 14:18:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* -* Copyright (c) 2002 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: ?Description -* -*/ - - -// CLASS HEADER -#include "MT_SysLangUtil.h" - -// EXTERNAL INCLUDES -#include - -EXPORT_C MEUnitTest* CreateTestSuiteL() - { - return MT_SysLangUtil::NewL(); - } diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/tsrc/public/basic/bwins/mt_rstartersessionU.DEF --- a/sysstatemgmt/tsrc/public/basic/bwins/mt_rstartersessionU.DEF Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/tsrc/public/basic/bwins/mt_rstartersessionU.DEF Thu Jun 24 11:22:10 2010 +0100 @@ -1,2 +1,3 @@ EXPORTS - ?CreateTestSuiteL@@YAPAVMEUnitTest@@XZ @ 1 NONAME ; class MEUnitTest * __cdecl CreateTestSuiteL(void) + ?LibEntryL@@YAPAVMT_RStarterSession@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class MT_RStarterSession * LibEntryL(class CTestModuleIf &) + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/tsrc/public/basic/eabi/mt_rstartersessionU.DEF --- a/sysstatemgmt/tsrc/public/basic/eabi/mt_rstartersessionU.DEF Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/tsrc/public/basic/eabi/mt_rstartersessionU.DEF Thu Jun 24 11:22:10 2010 +0100 @@ -1,3 +1,3 @@ EXPORTS - _Z16CreateTestSuiteLv @ 1 NONAME + _Z9LibEntryLR13CTestModuleIf @ 1 NONAME diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/tsrc/public/basic/group/bld.inf --- a/sysstatemgmt/tsrc/public/basic/group/bld.inf Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/tsrc/public/basic/group/bld.inf Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2004-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" @@ -11,19 +11,20 @@ * * Contributors: * -* Description: +* Description: Unit test code for RStarterSession class * */ - - PRJ_PLATFORMS ARMV5 GCCE WINSCW PRJ_EXPORTS +PRJ_TESTEXPORTS +../init/mt_rstartersession.ini /epoc32/winscw/c/testframework/mt_rstartersession.ini +../rom/mt_rstartersession.iby CORE_OS_LAYER_IBY_EXPORT_PATH( mt_rstartersession.iby ) + PRJ_MMPFILES - PRJ_TESTMMPFILES mt_rstartersession.mmp diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/tsrc/public/basic/group/mt_rstartersession.mmp --- a/sysstatemgmt/tsrc/public/basic/group/mt_rstartersession.mmp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/tsrc/public/basic/group/mt_rstartersession.mmp Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2006-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" @@ -11,33 +11,30 @@ * * Contributors: * -* Description: +* Description: Unit test code for RStarterSession class * */ - #include TARGET MT_RStarterSession.dll TARGETTYPE dll -UID 0x1000af5a 0x01700000 +UID 0x1000008D 0x101FB3E7 +VENDORID VID_DEFAULT CAPABILITY ALL -TCB -VENDORID VID_DEFAULT SOURCEPATH ../mt_rstartersession SOURCE MT_RStarterSession.cpp -SOURCE MT_RStarterSession_DllMain.cpp USERINCLUDE ../mt_rstartersession -SYSTEMINCLUDE /epoc32/include/digia/eunit +OS_LAYER_SYSTEMINCLUDE OS_LAYER_SYSTEMINCLUDE -LIBRARY EUnit.lib -LIBRARY EUnitUtil.lib LIBRARY euser.lib +LIBRARY stiftestinterface.lib LIBRARY StarterClient.lib SMPSAFE diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/tsrc/public/basic/group/mt_rstartersession.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/tsrc/public/basic/group/mt_rstartersession.pkg Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,29 @@ +; +; 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: Unit test code for RStarterSession class +; +;Languages +&EN + +#{"mt_rstartersession"},(0x101FB3A7),1,0,0,TYPE=SA + +;Localised Vendor name +%{"mt_rstartersession EN"} + +; Vendor name +: "mt_rstartersession" + +"\epoc32\release\armv5\urel\MT_RStarterSession.dll" - "c:\sys\bin\MT_RStarterSession.dll" +"..\init\MT_RStarterSession.ini"-"c:\testframework\MT_RStarterSession.ini" + diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/tsrc/public/basic/mt_rstartersession/MT_RStarterSession.cpp --- a/sysstatemgmt/tsrc/public/basic/mt_rstartersession/MT_RStarterSession.cpp Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/tsrc/public/basic/mt_rstartersession/MT_RStarterSession.cpp Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2006-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" @@ -11,7 +11,7 @@ * * Contributors: * -* Description: +* Description: Unit test code for RStarterSession class * */ @@ -20,30 +20,30 @@ #include "MT_RStarterSession.h" // EXTERNAL INCLUDES -#include -#include +#include +#include // INTERNAL INCLUDES #include #include -// CONSTRUCTION -MT_RStarterSession* MT_RStarterSession::NewL() +// --------------------------------------------------------- +// MT_RStarterSession::LibEntryL +// Returns: Poiter to MT_RStarterSession class +// --------------------------------------------------------- +EXPORT_C MT_RStarterSession* LibEntryL( CTestModuleIf& aTestModuleIf ) { - MT_RStarterSession* self = MT_RStarterSession::NewLC(); - CleanupStack::Pop(); - - return self; + RDebug::Printf("MT_RStarterSession* LibEntryL"); + MT_RStarterSession* libEntry( MT_RStarterSession::NewL( aTestModuleIf ) ); + return libEntry; } -MT_RStarterSession* MT_RStarterSession::NewLC() +// CONSTRUCTION +MT_RStarterSession* MT_RStarterSession::NewL(CTestModuleIf& aTestModuleIf) { - MT_RStarterSession* self = new( ELeave ) MT_RStarterSession(); - CleanupStack::PushL( self ); - - self->ConstructL(); - + RDebug::Printf("MT_RStarterSession* NewL"); + MT_RStarterSession* self = new ( ELeave ) MT_RStarterSession( aTestModuleIf ); return self; } @@ -54,28 +54,163 @@ } // Default constructor -MT_RStarterSession::MT_RStarterSession() +MT_RStarterSession::MT_RStarterSession(CTestModuleIf& /*aTestModuleIf*/) { } -// Second phase construct -void MT_RStarterSession::ConstructL() +// ----------------------------------------------------------------------------- +// MT_SysLangUtil::Case +// Returns a test case by number. +// +// This function contains an array of all available test cases +// i.e pair of case name and test function. If case specified by parameter +// aCaseNumber is found from array, then that item is returned. +// +// The reason for this rather complicated function is to specify all the +// test cases only in one place. It is not necessary to understand how +// function pointers to class member functions works when adding new test +// cases. See function body for instructions how to add new test case. +// ----------------------------------------------------------------------------- +// +const TCaseInfo MT_RStarterSession::Case( const TInt aCaseNumber ) const { - // The ConstructL from the base class CEUnitTestSuiteClass must be called. - // It generates the test case table. - CEUnitTestSuiteClass::ConstructL(); + + /** + * To add new test cases, implement new test case function and add new + * line to KCases array specify the name of the case and the function + * doing the test case + * In practice, do following + * 1) Make copy of existing test case function and change its name + * and functionality. Note that the function must be added to + * CenRepNotifyHandlerTest.cpp file and to CenRepNotifyHandlerTest.h + * header file. + * 2) Add entry to following KCases array either by using FUNCENTRY or + * ENTRY macro. + * ENTRY macro takes two parameters: test case name and test case + * function name. + * FUNCENTRY macro takes only test case function name as a parameter and uses + * that as a test case name and test case function name. + */ + RDebug::Printf("MT_RStarterSession* case"); + static TCaseInfoInternal const KCases[] = + { + // To add new test cases, add new items to this array + ENTRY( "1 [RStarterSession] Test ConectL", &MT_RStarterSession::T_RStarterSession_Connect ), + ENTRY( "2 [RStarterSession] Test SetState to Normal", &MT_RStarterSession::T_RStarterSession_SetStateToNormal), + ENTRY( "3 [RStarterSession] Test SetStateti Alarm", &MT_RStarterSession::T_RStarterSession_SetStateToAlarm), + ENTRY( "4 [RStarterSession] Test SetState to Charging", &MT_RStarterSession::T_RStarterSession_SetStateToCharging), + ENTRY( "5 [RStarterSession] Test SetState to OffLine", &MT_RStarterSession::T_RStarterSession_SetStateToOffLine), + ENTRY( "6 [RStarterSession] Test SetState to BTSap", &MT_RStarterSession::T_RStarterSession_SetStateToBTSap), + ENTRY( "7 [RStarterSession] Test ResetNetwork", &MT_RStarterSession::T_RStarterSession_ResetNetwork), + ENTRY( "8 [RStarterSession] Test IsRTCTimeValid", &MT_RStarterSession::T_RStarterSession_IsRTCTimeValid), + ENTRY( "9 [RStarterSession] Test ActivateRfForEmergencyCall", &MT_RStarterSession::T_RStarterSession_ActivateRfForEmergencyCall ), + ENTRY( "10 [RStarterSession] Test DeactivateRfAfterEmergencyCall", &MT_RStarterSession::T_RStarterSession_DeactivateRfAfterEmergencyCall), + ENTRY( "11 [RStarterSession] Test EndSplashScreen", &MT_RStarterSession::T_RStarterSession_EndSplashScreen), + ENTRY( "12 [RStarterSession] Test Reset", &MT_RStarterSession::T_RStarterSession_Reset), + ENTRY( "13 [RStarterSession] Test Shutdown", &MT_RStarterSession:: T_RStarterSession_Shutdown) + }; + + // Verify that case number is valid + if( (TUint) aCaseNumber >= sizeof( KCases ) / sizeof( TCaseInfoInternal ) ) + { + // Invalid case, construct empty object + TCaseInfo null( (const TText*) L"" ); + null.iMethod = NULL; + return null; + } + + // Construct TCaseInfo object and return it + TCaseInfo tmp ( KCases[aCaseNumber].iCaseName ); + tmp.iMethod = KCases[aCaseNumber].iMethod; + tmp.iIsOOMTest = KCases[ aCaseNumber ].iIsOOMTest; + tmp.iFirstMemoryAllocation = KCases[ aCaseNumber ].iFirstMemoryAllocation; + tmp.iLastMemoryAllocation = KCases[ aCaseNumber ].iLastMemoryAllocation; + + return tmp; + } + +// ----------------------------------------------------------------------------- +// MT_SysLangUtil::GetTestCasesL +// GetTestCases is used to inquire test cases from the Test Module. Test +// cases are stored to array of test cases. The Test Framework will be +// the owner of the data in the RPointerArray after GetTestCases return +// and it does the memory deallocation. +// ----------------------------------------------------------------------------- +// +TInt MT_RStarterSession::GetTestCasesL( const TFileName& /*aConfig*/, + RPointerArray& aTestCases ) + { + RDebug::Printf("MT_RStarterSession* gettestcase"); + // Loop through all test cases and create new + // TTestCaseInfo items and append items to aTestCase array + for( TInt i = 0; Case(i).iMethod != NULL; i++ ) + { + + // Allocate new TTestCaseInfo from heap for a testcase definition. + TTestCaseInfo* newCase = new( ELeave ) TTestCaseInfo; + + // PushL TTestCaseInfo to CleanupStack. + CleanupStack::PushL( newCase ); + + // Set number for the testcase. + // When the testcase is run, this comes as a parameter to RunTestCaseL. + newCase->iCaseNumber = i; + + // Set title for the test case. This is shown in UI to user. + newCase->iTitle.Copy( Case(i).iCaseName ); + + // Append TTestCaseInfo to the testcase array. After appended + // successfully the TTestCaseInfo object is owned (and freed) + // by the TestServer. + User::LeaveIfError(aTestCases.Append ( newCase ) ); + + // Pop TTestCaseInfo from the CleanupStack. + CleanupStack::Pop( newCase ); + } + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// MT_SysLangUtil::RunTestCaseL +// RunTestCaseL is used to run an individual test case specified +// by aTestCase. Test cases that can be run may be requested from +// Test Module by GetTestCases method before calling RunTestCase. +// ----------------------------------------------------------------------------- +// +TInt MT_RStarterSession::RunTestCaseL( const TInt aCaseNumber, + const TFileName& /*aConfig*/, + TTestResult& aResult ) + { + + // Return value + TInt execStatus = KErrNone; + + // Get the pointer to test case function + TCaseInfo tmp = Case ( aCaseNumber ); + + // Check that case number was valid + if ( tmp.iMethod != NULL ) + { + // Valid case was found, call it via function pointer + iMethod = tmp.iMethod; + execStatus = ( this->*iMethod )( aResult ); + } + else + { + // Valid case was not found, return error. + execStatus = KErrNotFound; + } + + // Return case execution status (not the result of the case execution) + return execStatus; } // METHODS - - -void MT_RStarterSession::SetupEmptyL( ) - { - } void MT_RStarterSession::SetupL( ) { - iRStarterSession.Connect(); + TInt err = iRStarterSession.Connect(); + RDebug::Print(_L("MT_RStarterSession* SetupL Connected to RStarterSession with % error"),err); } void MT_RStarterSession::Teardown( ) @@ -83,221 +218,195 @@ iRStarterSession.Close(); } -void MT_RStarterSession::TeardownEmpty( ) - { - } - -void MT_RStarterSession::T_RStarterSession_ConnectL( ) +TInt MT_RStarterSession::T_RStarterSession_Connect( TTestResult& aResult ) { RStarterSession session; TInt err = session.Connect(); - EUNIT_PRINT( _L("Connect() err = %d"), err ); - EUNIT_ASSERT_DESC( err == KErrNone, "Incorrect return value"); - + if ( err != KErrNone ) + { + _LIT( KDescription, "Incorrect return value in T_RStarterSession_Connect" ); + aResult.SetResult( err, KDescription ); + return err; + } session.Close(); - } - -void MT_RStarterSession::T_RStarterSession_SetStateL( ) - { - // Perhaps test also other values... - TInt err = iRStarterSession.SetState( RStarterSession::ENormal ); - EUNIT_PRINT( _L("SetState() err = %d"), err ); - EUNIT_ASSERT_DESC( err == KErrNone, "Incorrect return value"); - } - -void MT_RStarterSession::T_RStarterSession_ResetL( ) - { - // Perhaps test also other values... - iRStarterSession.Reset( (RStarterSession::TResetReason)-1 ); - } - -void MT_RStarterSession::T_RStarterSession_ShutdownL( ) - { - EUNIT_PRINT( _L("Calling Shutdown()") ); - iRStarterSession.Shutdown( ); - } - -void MT_RStarterSession::T_RStarterSession_ResetNetworkL( ) - { - TInt err = iRStarterSession.ResetNetwork( ); - EUNIT_PRINT( _L("ResetNetwork() err = %d"), err ); - - EUNIT_ASSERT_DESC( err == KErrNone, "Incorrect return value"); - } - -void MT_RStarterSession::T_RStarterSession_IsRTCTimeValidL( ) - { - TBool valid = iRStarterSession.IsRTCTimeValid(); - EUNIT_PRINT( _L("IsRTCTimeValid() returned = %d"), valid ); - } - -void MT_RStarterSession::T_RStarterSession_ActivateRfForEmergencyCallL( ) - { - TInt err = iRStarterSession.ActivateRfForEmergencyCall( ); - EUNIT_PRINT( _L("ActivateRfForEmergencyCall() err = %d"), err ); - // Do not check the return value since in some cases it is normal that - // KErrGeneral(-2) is returned - //EUNIT_ASSERT_DESC( err == KErrNone, "Incorrect return value" ); + return err; } -void MT_RStarterSession::T_RStarterSession_DeactivateRfAfterEmergencyCallL( ) +TInt MT_RStarterSession::T_RStarterSession_SetStateToNormal( TTestResult& aResult ) { - TInt err = iRStarterSession.DeactivateRfAfterEmergencyCall( ); - EUNIT_PRINT( _L("DeactivateRfAfterEmergencyCall() err = %d"), err ); - EUNIT_ASSERT_DESC( err == KErrNone, "Incorrect return value" ); + SetupL(); + // State transition from Normal to normal + TInt err = iRStarterSession.SetState( RStarterSession::ENormal ); + + if ( (err != KErrArgument) && (err != KErrGeneral) && (err != KErrNone)) + { + _LIT( KDescription, "Incorrect return value in T_RStarterSession_SetStateToNormal " ); + aResult.SetResult( err, KDescription ); + return err; + } + Teardown(); + return KErrNone; + } - // Activate RF again - err = iRStarterSession.ActivateRfForEmergencyCall( ); - EUNIT_PRINT( _L("ActivateRfForEmergencyCall() err = %d"), err ); - // Do not check the return value since in some cases it is normal that - // KErrGeneral(-2) is returned - //EUNIT_ASSERT_DESC( err == KErrNone, "Incorrect return value" ); - } +TInt MT_RStarterSession::T_RStarterSession_SetStateToAlarm( TTestResult& aResult ) + { + SetupL(); + // State transition from normal to Alarm + TInt err = iRStarterSession.SetState( RStarterSession::EAlarm ); -void MT_RStarterSession::T_RStarterSession_EndSplashScreenL( ) - { - TInt err = iRStarterSession.EndSplashScreen( ); - EUNIT_PRINT( _L("EndSplashScreen() err = %d"), err ); - EUNIT_ASSERT_DESC( err == KErrNone, "Incorrect return value" ); + if ( err != KErrNotSupported ) + { + _LIT( KDescription, "Incorrect return value T_RStarterSession_SetStateToAlarm" ); + aResult.SetResult( err, KDescription ); + return err; + } + Teardown(); + return KErrNone; } - -void MT_RStarterSession::T_RStarterSession_AddItemInStartListLL( ) + +TInt MT_RStarterSession::T_RStarterSession_SetStateToCharging( TTestResult& aResult ) { - TPtrC8 md5hash( KNullDesC8 ); - TInt err = iRStarterSession.AddItemInStartListL( - KNullDesC, - EMonNone, - EExecutableType, - 0, - md5hash ); - EUNIT_PRINT( _L("AddItemInStartListL() err = %d"), err ); - EUNIT_ASSERT_DESC( err == KErrPermissionDenied, "Incorrect return value. SID check has failed" ); + SetupL(); + // State transition from normal to ECharging + TInt err = iRStarterSession.SetState( RStarterSession::ECharging ); + + if ( err != KErrNotSupported ) + { + _LIT( KDescription, "Incorrect return value in T_RStarterSession_SetStateEToCharging " ); + aResult.SetResult( err, KDescription ); + return err; + } + Teardown(); + return KErrNone; } - -void MT_RStarterSession::T_RStarterSession_AddItemInStartListL2L( ) + +TInt MT_RStarterSession::T_RStarterSession_SetStateToOffLine( TTestResult& aResult ) { - TInt err = iRStarterSession.AddItemInStartListL( - KNullDesC, - EMonNone, - EExecutableType, - 0 ); - EUNIT_PRINT( _L("AddItemInStartListL() err = %d"), err ); - EUNIT_ASSERT_DESC( err == KErrPermissionDenied, "Incorrect return value. SID check has failed" ); + SetupL(); + // State transition from normal to EOffline + TInt err = iRStarterSession.SetState( RStarterSession::EOffline ); + + if ( err != KErrNone ) + { + _LIT( KDescription, "Incorrect return value in T_RStarterSession_SetStateTOOffLine " ); + aResult.SetResult( err, KDescription ); + return err; + } + Teardown(); + return err; } - -void MT_RStarterSession::T_RStarterSession_RemoveItemFromStartListLL( ) + +TInt MT_RStarterSession::T_RStarterSession_SetStateToBTSap( TTestResult& aResult ) { - TInt err = iRStarterSession.RemoveItemFromStartListL( KNullDesC ); - EUNIT_PRINT( _L("RemoveItemFromStartListL() err = %d"), err ); - EUNIT_ASSERT_DESC( err == KErrPermissionDenied, "Incorrect return value. SID check has failed" ); + SetupL(); + // State transition from ENormal to EBTSap + TInt err = iRStarterSession.SetState( RStarterSession::EBTSap ); + + if ( err != KErrNone ) + { + _LIT( KDescription, "Incorrect return value in T_RStarterSession_SetStateToBTSap " ); + aResult.SetResult( err, KDescription ); + return err; + } + Teardown(); + return err; } -void MT_RStarterSession::T_RStarterSession_SearchStartlistLL( ) +TInt MT_RStarterSession::T_RStarterSession_Reset( TTestResult& aResult ) + { + SetupL(); + // Other values will be tested in BAT testing (Manual testing)... + iRStarterSession.Reset( (RStarterSession::TResetReason)-1 ); + // Make request and ignore return value + _LIT( KDescription, "T_RStarterSession_Reset - Calling Reset()" ); + aResult.SetResult( KErrNone, KDescription ); + Teardown(); + return KErrNone; + } + +TInt MT_RStarterSession::T_RStarterSession_Shutdown(TTestResult& aResult ) { - TInt err = iRStarterSession.SearchStartlistL( KNullDesC ); - EUNIT_PRINT( _L("SearchStartlistL() err = %d"), err ); - EUNIT_ASSERT_DESC( err == KErrPermissionDenied, "Incorrect return value. SID check has failed" ); + SetupL(); + iRStarterSession.Shutdown( ); + _LIT( KDescription, "T_RStarterSession_Shutdown - Calling Shutdown()" ); + aResult.SetResult( KErrNone, KDescription ); + Teardown(); + return KErrNone; + } + +TInt MT_RStarterSession::T_RStarterSession_ResetNetwork(TTestResult& aResult ) + { + SetupL(); + TInt err = iRStarterSession.ResetNetwork( ); + if ( err != KErrNone ) + { + _LIT( KDescription, "T_RStarterSession_ResetNetwork - Incorrect return value in " ); + aResult.SetResult( err, KDescription ); + return err; + } + Teardown(); + return err; } - -// TEST TABLE -EUNIT_BEGIN_TEST_TABLE( - MT_RStarterSession, - "Add test suite description here.", - "UNIT" ) - -EUNIT_TEST( - "Connect - test0", - "RStarterSession", - "Connect - test0", - "FUNCTIONALITY", - SetupEmptyL, T_RStarterSession_ConnectL, TeardownEmpty) - -EUNIT_TEST( - "SetState - test1", - "RStarterSession", - "SetState - test1", - "FUNCTIONALITY", - SetupL, T_RStarterSession_SetStateL, Teardown) +TInt MT_RStarterSession::T_RStarterSession_IsRTCTimeValid(TTestResult& aResult ) + { + SetupL(); + TBool valid = iRStarterSession.IsRTCTimeValid(); + if ( !valid ) + { + _LIT( KDescription, "Incorrect return value in T_RStarterSession_IsRTCTimeValid " ); + aResult.SetResult( valid, KDescription ); + return valid; + } + Teardown(); + return KErrNone; + } -EUNIT_TEST( - "Reset - test2", - "RStarterSession", - "Reset - test2", - "FUNCTIONALITY", - SetupL, T_RStarterSession_ResetL, Teardown) - -EUNIT_TEST( - "ResetNetwork - test4", - "RStarterSession", - "ResetNetwork - test4", - "FUNCTIONALITY", - SetupL, T_RStarterSession_ResetNetworkL, Teardown) - -EUNIT_TEST( - "IsRTCTimeValid - test5", - "RStarterSession", - "IsRTCTimeValid - test5", - "FUNCTIONALITY", - SetupL, T_RStarterSession_IsRTCTimeValidL, Teardown) - -EUNIT_TEST( - "ActivateRfForEmergencyCall - test6", - "RStarterSession", - "ActivateRfForEmergencyCall - test6", - "FUNCTIONALITY", - SetupL, T_RStarterSession_ActivateRfForEmergencyCallL, Teardown) +TInt MT_RStarterSession::T_RStarterSession_ActivateRfForEmergencyCall(TTestResult& aResult ) + { + SetupL(); + TInt err = iRStarterSession.ActivateRfForEmergencyCall( ); + + if (( err != KErrNone) && (err != KErrGeneral)) + { + _LIT( KDescription, "Incorrect return value in T_RStarterSession_ActivateRfForEmergencyCall" ); + aResult.SetResult( err, KDescription ); + return err; + } + Teardown(); + return err; + } -EUNIT_TEST( - "DeactivateRfAfterEmergencyCall - test7", - "RStarterSession", - "DeactivateRfAfterEmergencyCall - test7", - "FUNCTIONALITY", - SetupL, T_RStarterSession_DeactivateRfAfterEmergencyCallL, Teardown) - -EUNIT_TEST( - "EndSplashScreen - test8", - "RStarterSession", - "EndSplashScreen - test8", - "FUNCTIONALITY", - SetupL, T_RStarterSession_EndSplashScreenL, Teardown) - -EUNIT_TEST( - "AddItemInStartListL - test9", - "RStarterSession", - "AddItemInStartListL - test9", - "FUNCTIONALITY", - SetupL, T_RStarterSession_AddItemInStartListLL, Teardown) +TInt MT_RStarterSession::T_RStarterSession_DeactivateRfAfterEmergencyCall( TTestResult& aResult ) + { + SetupL(); + TInt err = iRStarterSession.DeactivateRfAfterEmergencyCall( ); -EUNIT_TEST( - "AddItemInStartListL - test10", - "RStarterSession", - "AddItemInStartListL - test10", - "FUNCTIONALITY", - SetupL, T_RStarterSession_AddItemInStartListL2L, Teardown) - -EUNIT_TEST( - "RemoveItemFromStartListL - test11", - "RStarterSession", - "RemoveItemFromStartListL - test11", - "FUNCTIONALITY", - SetupL, T_RStarterSession_RemoveItemFromStartListLL, Teardown) + if (( err != KErrNone) && (err != KErrGeneral)) + { + _LIT( KDescription, "Incorrect return value in T_RStarterSession_DeactivateRfAfterEmergencyCall" ); + aResult.SetResult( err, KDescription ); + return err; + } + // Activate RF again + err = iRStarterSession.ActivateRfForEmergencyCall( ); + Teardown(); + return err; + } -EUNIT_TEST( - "SearchStartlistL - test12", - "RStarterSession", - "SearchStartlistL - test12", - "FUNCTIONALITY", - SetupL, T_RStarterSession_SearchStartlistLL, Teardown) -/* -EUNIT_TEST( - "Shutdown - test3", - "RStarterSession", - "Shutdown - test3", - "FUNCTIONALITY", - SetupL, T_RStarterSession_ShutdownL, Teardown)*/ - -EUNIT_END_TEST_TABLE +TInt MT_RStarterSession::T_RStarterSession_EndSplashScreen( TTestResult& aResult ) + { + SetupL(); + TInt err = iRStarterSession.EndSplashScreen( ); + if ( err != KErrNone ) + { + _LIT( KDescription, "Incorrect return value in T_RStarterSession_EndSplashScreen" ); + aResult.SetResult( err, KDescription ); + return err; + } + Teardown(); + return err; + } -// END OF FILE +//END OF FILE diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/tsrc/public/basic/mt_rstartersession/MT_RStarterSession.h --- a/sysstatemgmt/tsrc/public/basic/mt_rstartersession/MT_RStarterSession.h Fri May 28 14:18:28 2010 +0100 +++ b/sysstatemgmt/tsrc/public/basic/mt_rstartersession/MT_RStarterSession.h Thu Jun 24 11:22:10 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2006-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" @@ -11,39 +11,50 @@ * * Contributors: * -* Description: +* Description: Unit test code for RStarterSession class * */ - - #ifndef __MT_RSTARTERSESSION_H__ #define __MT_RSTARTERSESSION_H__ +#if defined (_MSC_VER) && (_MSC_VER >= 1000) +#pragma once +#endif +// Function pointer related internal definitions +#ifndef __GCC32__ +#define GETPTR +#else +#define GETPTR & +#endif +#define ENTRY(str,func) {_S(str), GETPTR func,0,0,0} +#define FUNCENTRY(func) {_S(#func), GETPTR func,0,0,0} + // EXTERNAL INCLUDES -#include -#include - +#include // INTERNAL INCLUDES #include -// FORWARD DECLARATIONS - - +// FORWARD DECLARATIONS +class TCaseInfo; +class MT_RStarterSession; +// DESCRIPTION +// This a Test Module interface template +// that does not really do anything. +typedef TInt ( MT_RStarterSession::*TestFunction )( TTestResult& ); // CLASS DEFINITION /** * */ NONSHARABLE_CLASS( MT_RStarterSession ) - : public CEUnitTestSuiteClass + : public CTestModuleBase { public: // Constructors and destructors /** * Two phase construction */ - static MT_RStarterSession* NewL(); - static MT_RStarterSession* NewLC(); + static MT_RStarterSession* NewL(CTestModuleIf& aTestModuleIf); /** * Destructor */ @@ -51,35 +62,85 @@ private: // Constructors and destructors - MT_RStarterSession(); - void ConstructL(); + MT_RStarterSession( CTestModuleIf& aTestModuleIf ); + + /** + * Function returning test case name and pointer to test case function + */ + const TCaseInfo Case( const TInt aCaseNumber ) const; + + public: // Functions from base classes + // @see CTestModuleBase + virtual TInt GetTestCasesL( const TFileName& aTestCaseFile, + RPointerArray& aTestCases ); + + // @see CTestModuleBase + virtual TInt RunTestCaseL( const TInt aCaseNumber, + const TFileName& aTestCaseFile, + TTestResult& aResult ); + private: // New methods void SetupL(); - void SetupEmptyL(); void Teardown(); - void TeardownEmpty(); - void T_RStarterSession_ConnectL(); - void T_RStarterSession_SetStateL(); - void T_RStarterSession_ResetL(); - void T_RStarterSession_ShutdownL(); - void T_RStarterSession_ResetNetworkL(); - void T_RStarterSession_IsRTCTimeValidL(); - void T_RStarterSession_ActivateRfForEmergencyCallL(); - void T_RStarterSession_DeactivateRfAfterEmergencyCallL(); - void T_RStarterSession_EndSplashScreenL(); - void T_RStarterSession_AddItemInStartListLL(); - void T_RStarterSession_AddItemInStartListL2L(); - void T_RStarterSession_RemoveItemFromStartListLL(); - void T_RStarterSession_SearchStartlistLL(); + TInt T_RStarterSession_Connect(TTestResult& aResult); + TInt T_RStarterSession_SetState(TTestResult& aResult); + TInt T_RStarterSession_SetStateToNormal(TTestResult& aResult); + TInt T_RStarterSession_SetStateToAlarm(TTestResult& aResult); + TInt T_RStarterSession_SetStateToCharging(TTestResult& aResult); + TInt T_RStarterSession_SetStateToOffLine(TTestResult& aResult); + TInt T_RStarterSession_SetStateToBTSap(TTestResult& aResult); + TInt T_RStarterSession_Reset(TTestResult& aResult); + TInt T_RStarterSession_Shutdown(TTestResult& aResult); + TInt T_RStarterSession_ResetNetwork(TTestResult& aResult); + TInt T_RStarterSession_IsRTCTimeValid(TTestResult& aResult); + TInt T_RStarterSession_ActivateRfForEmergencyCall(TTestResult& aResult); + TInt T_RStarterSession_DeactivateRfAfterEmergencyCall(TTestResult& aResult); + TInt T_RStarterSession_EndSplashScreen(TTestResult& aResult); private: // Data - + TestFunction iMethod; RStarterSession iRStarterSession; - EUNIT_DECLARE_TEST_TABLE; + + }; + +// Function pointer related internal definitions + +// Hack around known GCC bug. +#ifndef __GCC32__ + #define GETPTR +#else + #define GETPTR & +#endif + +// An internal structure containing a test case name and +// the pointer to function doing the test +class TCaseInfoInternal + { + public: + const TText* iCaseName; + TestFunction iMethod; + TBool iIsOOMTest; + TInt iFirstMemoryAllocation; + TInt iLastMemoryAllocation; + }; + +// An internal structure containing a test case name and +// the pointer to function doing the test +class TCaseInfo + { + public: + TPtrC iCaseName; + TestFunction iMethod; + TBool iIsOOMTest; + TInt iFirstMemoryAllocation; + TInt iLastMemoryAllocation; + TCaseInfo( const TText* a ) : iCaseName( ( TText* ) a ) + { + }; }; #endif // __MT_RSTARTERSESSION_H__ diff -r 51d936fe0d0c -r a003130def4e sysstatemgmt/tsrc/public/basic/rom/mt_rstartersession.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/tsrc/public/basic/rom/mt_rstartersession.iby Thu Jun 24 11:22:10 2010 +0100 @@ -0,0 +1,24 @@ +/* +* 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: Unit test code for RStarterSession class +* Image description file for rstartersession test +* +*/ + +#ifndef MT_RSTARTERSESSION_IBY +#define MT_RSTARTERSESSION_IBY + +file=ABI_DIR\BUILD_DIR\MT_RStarterSession.dll SHARED_LIB_DIR\MT_RStarterSession.dll + +#endif // MT_RSTARTERSESSION_IBY \ No newline at end of file diff -r 51d936fe0d0c -r a003130def4e systemhealthmanagement/systemhealthmgr/group/app-framework_shma.mrp --- a/systemhealthmanagement/systemhealthmgr/group/app-framework_shma.mrp Fri May 28 14:18:28 2010 +0100 +++ b/systemhealthmanagement/systemhealthmgr/group/app-framework_shma.mrp Thu Jun 24 11:22:10 2010 +0100 @@ -1,3 +1,19 @@ +# +# Copyright (c) 2009 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: +# + component app-framework_shma source \sf\os\devicesrv\systemhealthmanagement\systemhealthmgr binary \sf\os\devicesrv\systemhealthmanagement\systemhealthmgr\group all diff -r 51d936fe0d0c -r a003130def4e systemhealthmanagement/systemhealthmgr/test/testappgood/shmatestappgood_reg.rss --- a/systemhealthmanagement/systemhealthmgr/test/testappgood/shmatestappgood_reg.rss Fri May 28 14:18:28 2010 +0100 +++ b/systemhealthmanagement/systemhealthmgr/test/testappgood/shmatestappgood_reg.rss Thu Jun 24 11:22:10 2010 +0100 @@ -29,4 +29,4 @@ // filename of application binary (minus extension) app_file="shmatestappgood"; } - \ No newline at end of file +