# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1266617100 -7200 # Node ID a811597961f0a33be0b736f26567f79b529ac479 # Parent 4e1aa6a622a05c8b82896ab917aad381cef59455 Revision: 201003 Kit: 201007 diff -r 4e1aa6a622a0 -r a811597961f0 accessoryservices/accessoryserver/src/Server/AccSrvConnectionController.cpp --- a/accessoryservices/accessoryserver/src/Server/AccSrvConnectionController.cpp Tue Feb 02 00:53:00 2010 +0200 +++ b/accessoryservices/accessoryserver/src/Server/AccSrvConnectionController.cpp Sat Feb 20 00:05:00 2010 +0200 @@ -796,7 +796,6 @@ case EAccModeLoopset: case EAccModeMusicStand: case EAccModeTVOut: - case EAccModeHDMI: case EAccModeHeadphones: { TAccPolGenericID genericID; diff -r 4e1aa6a622a0 -r a811597961f0 accessoryservices/pluggeddisplay/pluggeddisplayengine/src/edidhandler.cpp --- a/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/edidhandler.cpp Tue Feb 02 00:53:00 2010 +0200 +++ b/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/edidhandler.cpp Sat Feb 20 00:05:00 2010 +0200 @@ -291,7 +291,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 diff -r 4e1aa6a622a0 -r a811597961f0 commonservices/PlatformEnv/data/estart_mds.txt --- a/commonservices/PlatformEnv/data/estart_mds.txt Tue Feb 02 00:53:00 2010 +0200 +++ b/commonservices/PlatformEnv/data/estart_mds.txt Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 commonservices/PlatformEnv/data/estart_mds_ms.txt --- a/commonservices/PlatformEnv/data/estart_mds_ms.txt Tue Feb 02 00:53:00 2010 +0200 +++ b/commonservices/PlatformEnv/data/estart_mds_ms.txt Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 mediator/tsrc/public/basic/group/MediatorTest.pkg --- a/mediator/tsrc/public/basic/group/MediatorTest.pkg Tue Feb 02 00:53:00 2010 +0200 +++ b/mediator/tsrc/public/basic/group/MediatorTest.pkg Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 psmservices/psmserver/tsrc/PsmTestModule/group/PsmTestModule.pkg --- a/psmservices/psmserver/tsrc/PsmTestModule/group/PsmTestModule.pkg Tue Feb 02 00:53:00 2010 +0200 +++ b/psmservices/psmserver/tsrc/PsmTestModule/group/PsmTestModule.pkg Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 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 Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/ssmcmdlists/data/noncriticalcmdlist.rss --- a/sysstatemgmt/ssmcmdlists/data/noncriticalcmdlist.rss Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/ssmcmdlists/data/noncriticalcmdlist.rss Sat Feb 20 00:05:00 2010 +0200 @@ -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" @@ -92,10 +92,9 @@ #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_mdswatchdog, r_cmd_predefinedcontacts, r_cmd_xnthemesrv, r_cmd_ncnlist, @@ -115,7 +114,8 @@ #ifdef FF_LBT_ENGINE r_cmd_lbtsrv, #endif // FF_LBT_ENGINE - r_cmd_fsemail, + r_cmd_emailsrvrmon, + r_cmd_taskswitcher, // prio 0xFFA6 r_cmd_dmfirstbootreason, r_cmd_fota, @@ -124,6 +124,8 @@ // prio 0x7F97 r_cmd_dcmo, r_cmd_amastart, + // prio 0x7F96 + r_cmd_multiple_wait, // prio 0x7EFF r_cmd_activitymonitor1, // prio 0x7EFE @@ -160,7 +162,13 @@ r_cmd_activitymonitor9, // prio 0x7EEC r_cmd_mylocationsengine, - r_cmd_startupready // Last command, prio 0x0000 +#ifdef FF_ATT_ADDRESS_BK + //prio 0x7EEA + r_cmd_activitymonitor10, + //prio 0x7EE9 + r_cmd_aab, +#endif + r_cmd_startupready // Last command, prio 0x0000 }; } @@ -169,6 +177,21 @@ // =========================================================================== // +// ----------------------------------------------------------------------------- +// r_cmd_aab +// ----------------------------------------------------------------------------- +// +#ifdef FF_ATT_ADDRESS_BK +RESOURCE SSM_START_APP_INFO r_cmd_aab + { + priority = 0x7EE9; + name = "z:\\sys\\bin\\AABPhonebookapp.exe"; + retries = 2; + background = 1; // To background + monitor_info = r_mon_3_restarts_ignore; + } +#endif + // --------------------------------------------------------------------------- // r_cmd_activitymonitor1 // --------------------------------------------------------------------------- @@ -305,6 +328,23 @@ } // --------------------------------------------------------------------------- +// r_cmd_activitymonitor10 +// --------------------------------------------------------------------------- +// +#ifdef FF_ATT_ADDRESS_BK +RESOURCE SSM_START_CUSTOM_COMMAND r_cmd_activitymonitor10 + { + priority = 0x7EEA; + severity = ECmdCriticalSeverity; + execution_behaviour = ESsmWaitForSignal; + dllname = "ssmactivitycmd.dll"; + ordinal = 1; // SsmActivityCmdNewL + retries = 2; + dll_data = r_dlldata_activitymonitor_timeout; + } +#endif + +// --------------------------------------------------------------------------- // r_cmd_adtupdater // --------------------------------------------------------------------------- // @@ -508,17 +548,14 @@ } // --------------------------------------------------------------------------- -// r_cmd_fsemail +// r_cmd_emailsrvrmon // --------------------------------------------------------------------------- // -RESOURCE SSM_START_APP_INFO r_cmd_fsemail +RESOURCE SSM_START_APP_INFO r_cmd_emailsrvrmon { priority = 0xFFA7; - name = "fsmailserver.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - background = 1; // To background - monitor_info = r_mon_3_restarts_ignore; + name = "emailservermonitor.exe"; + execution_behaviour = ESsmFireAndForget; conditional_information = r_cond_feat_emailfw; } @@ -537,16 +574,14 @@ } // --------------------------------------------------------------------------- -// r_cmd_harvestersrv +// r_cmd_mdswatchdog // --------------------------------------------------------------------------- // -RESOURCE SSM_START_PROCESS_INFO r_cmd_harvestersrv +RESOURCE SSM_START_PROCESS_INFO r_cmd_mdswatchdog { priority = 0xFFA7; - name = "harvesterserver.exe"; - execution_behaviour = ESsmWaitForSignal; - timeout = 10000; - monitor_info = r_mon_3_restarts_ignore; + name = "mdswatchdog.exe"; + execution_behaviour = ESsmFireAndForget; } // --------------------------------------------------------------------------- @@ -627,19 +662,6 @@ } // --------------------------------------------------------------------------- -// 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 // --------------------------------------------------------------------------- // @@ -1084,6 +1106,27 @@ execution_behaviour = ESsmFireAndForget; } +// --------------------------------------------------------------------------- +// r_cmd_item_taskswitcher +// --------------------------------------------------------------------------- +RESOURCE SSM_START_APP_INFO r_cmd_taskswitcher + { + priority = 0xFFA7; + name = "z:\\sys\\bin\\taskswitcher.exe"; + execution_behaviour = ESsmDeferredWaitForSignal; + background = 1; // To background + monitor_info = r_mon_3_restarts_ignore; + } + +// --------------------------------------------------------------------------- +// r_cmd_multiple_wait +// --------------------------------------------------------------------------- +// +RESOURCE SSM_MULTIPLE_WAIT r_cmd_multiple_wait + { + priority = 0x7F96; + } + // =========================================================================== // Conditional blocks in alphabetical order // =========================================================================== diff -r 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/ssmcmdlists/data/noncriticalcmdlist_hw.rss --- a/sysstatemgmt/ssmcmdlists/data/noncriticalcmdlist_hw.rss Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/ssmcmdlists/data/noncriticalcmdlist_hw.rss Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/ssmcmdlists/data/uiservicescmdlist.rss --- a/sysstatemgmt/ssmcmdlists/data/uiservicescmdlist.rss Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/ssmcmdlists/data/uiservicescmdlist.rss Sat Feb 20 00:05:00 2010 +0200 @@ -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" @@ -83,11 +83,10 @@ // 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 + // prio 0xFF96 - tzsrv, cntsrv, mediator, hwrmsrv r_cmd_multiwaitforever1, // prio 0xFF87 r_cmd_dbrecovery, @@ -294,19 +293,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 // --------------------------------------------------------------------------- // diff -r 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatemgr/cmd/inc/ssmcommandlistresourcereaderimpl.h --- a/sysstatemgmt/systemstatemgr/cmd/inc/ssmcommandlistresourcereaderimpl.h Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatemgr/cmd/inc/ssmcommandlistresourcereaderimpl.h Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatemgr/cmd/src/ssmcommandfactory.cpp --- a/sysstatemgmt/systemstatemgr/cmd/src/ssmcommandfactory.cpp Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatemgr/cmd/src/ssmcommandfactory.cpp Sat Feb 20 00:05:00 2010 +0200 @@ -333,7 +333,6 @@ { CSsmCommandBase* cmd = NULL; TSsmCommandType const cmdType = aSsmCommand.Type(); - DEBUGPRINT2A("Adding command type in CLE commandlist: %d", cmdType); switch(cmdType) { diff -r 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatemgr/cmd/src/ssmcommandlistimpl.cpp --- a/sysstatemgmt/systemstatemgr/cmd/src/ssmcommandlistimpl.cpp Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatemgr/cmd/src/ssmcommandlistimpl.cpp Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatemgr/cmd/src/ssmcommandlistresourcereader.cpp --- a/sysstatemgmt/systemstatemgr/cmd/src/ssmcommandlistresourcereader.cpp Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatemgr/cmd/src/ssmcommandlistresourcereader.cpp Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatemgr/cmd/src/ssmcommandlistresourcereaderimpl.cpp --- a/sysstatemgmt/systemstatemgr/cmd/src/ssmcommandlistresourcereaderimpl.cpp Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatemgr/cmd/src/ssmcommandlistresourcereaderimpl.cpp Sat Feb 20 00:05:00 2010 +0200 @@ -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); @@ -733,7 +813,6 @@ iListReader.AdvanceL(sizeof(TUint16)); } } - DEBUGPRINT2A("The value of RssFile's current command is %d ", iCommandIndexInRssFile[iCurrentCommandListInMapping]); #else while(iCommandIndex && iBatchIndex--) { @@ -741,7 +820,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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatemgr/inc/ssmadaptationcli.h --- a/sysstatemgmt/systemstatemgr/inc/ssmadaptationcli.h Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatemgr/inc/ssmadaptationcli.h Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatemgr/sus/inc/ssmadaptationcmn.h --- a/sysstatemgmt/systemstatemgr/sus/inc/ssmadaptationcmn.h Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatemgr/sus/inc/ssmadaptationcmn.h Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatemgr/sus/inc/susadaptionserver.h --- a/sysstatemgmt/systemstatemgr/sus/inc/susadaptionserver.h Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatemgr/sus/inc/susadaptionserver.h Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatemgr/sus/inc/susemergencycallrfadaptation.h --- a/sysstatemgmt/systemstatemgr/sus/inc/susemergencycallrfadaptation.h Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatemgr/sus/inc/susemergencycallrfadaptation.h Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatemgr/sus/inc/suspanic.h --- a/sysstatemgmt/systemstatemgr/sus/inc/suspanic.h Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatemgr/sus/inc/suspanic.h Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatemgr/sus/src/ssmadaptationcli.cpp --- a/sysstatemgmt/systemstatemgr/sus/src/ssmadaptationcli.cpp Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatemgr/sus/src/ssmadaptationcli.cpp Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatemgr/sus/src/susadaptionserver.cpp --- a/sysstatemgmt/systemstatemgr/sus/src/susadaptionserver.cpp Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatemgr/sus/src/susadaptionserver.cpp Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatemgr/sus/src/susemergencycallrfadaptation.cpp --- a/sysstatemgmt/systemstatemgr/sus/src/susemergencycallrfadaptation.cpp Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatemgr/sus/src/susemergencycallrfadaptation.cpp Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatemgr/test/tsus/group/tsus_ssmutilsrv.mmp --- a/sysstatemgmt/systemstatemgr/test/tsus/group/tsus_ssmutilsrv.mmp Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatemgr/test/tsus/group/tsus_ssmutilsrv.mmp Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 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 Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatemgr/test/tsus/inc/tsus_step_adaptionserver.h --- a/sysstatemgmt/systemstatemgr/test/tsus/inc/tsus_step_adaptionserver.h Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatemgr/test/tsus/inc/tsus_step_adaptionserver.h Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatemgr/test/tsus/scripts/ssmatest_sus_adaptionserver.script --- a/sysstatemgmt/systemstatemgr/test/tsus/scripts/ssmatest_sus_adaptionserver.script Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatemgr/test/tsus/scripts/ssmatest_sus_adaptionserver.script Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 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 Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatemgr/test/tsus/src/tsus_step_adaptionserver.cpp --- a/sysstatemgmt/systemstatemgr/test/tsus/src/tsus_step_adaptionserver.cpp Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatemgr/test/tsus/src/tsus_step_adaptionserver.cpp Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatereferenceplugins/clayer/group/bld.inf --- a/sysstatemgmt/systemstatereferenceplugins/clayer/group/bld.inf Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/group/bld.inf Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatereferenceplugins/clayer/group/ssmclayersup.mmp --- a/sysstatemgmt/systemstatereferenceplugins/clayer/group/ssmclayersup.mmp Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/group/ssmclayersup.mmp Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatereferenceplugins/clayer/inc/ssmsecuritynotecontroller.h --- a/sysstatemgmt/systemstatereferenceplugins/clayer/inc/ssmsecuritynotecontroller.h Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/ssmsecuritynotecontroller.h Sat Feb 20 00:05:00 2010 +0200 @@ -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" @@ -15,7 +15,7 @@ * Name : strtsecuritynotecontroller.h * Part of : System Startup / StrtSecObs * Declaration of CStrtSecurityNoteController class -* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: 2 % << 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, @@ -43,6 +43,7 @@ * @released */ + class CSsmSecurityCheckNotifier; class CStrtSecNoteRequestQueue; @@ -98,10 +99,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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatereferenceplugins/clayer/src/ssmsecuritynotecontroller.cpp --- a/sysstatemgmt/systemstatereferenceplugins/clayer/src/ssmsecuritynotecontroller.cpp Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/src/ssmsecuritynotecontroller.cpp Sat Feb 20 00:05:00 2010 +0200 @@ -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" @@ -14,7 +14,7 @@ // Name : strtsecuritynotecontroller.cpp // Part of : System Startup / StrtSecObs // Implementation of CStrtSecurityNoteController class -// Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +// Version : %version: 2 % << 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, @@ -33,6 +33,9 @@ #include "ssmsecuritynotecontroller.h" #include "ssmsecuritychecknotifier.h" #include "ssmdebug.h" +#include "ssmpanic.h" +#include +#include CStrtSecurityNoteController* CStrtSecurityNoteController::NewL() { @@ -89,6 +92,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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatereferenceplugins/clayer/src/ssmsimstatusobserver.cpp --- a/sysstatemgmt/systemstatereferenceplugins/clayer/src/ssmsimstatusobserver.cpp Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatereferenceplugins/clayer/src/ssmsimstatusobserver.cpp Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatereferenceplugins/localinc/ssmpanic.h --- a/sysstatemgmt/systemstatereferenceplugins/localinc/ssmpanic.h Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatereferenceplugins/localinc/ssmpanic.h Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatereferenceplugins/test/tclayer/group/tclayer_server.mmp --- a/sysstatemgmt/systemstatereferenceplugins/test/tclayer/group/tclayer_server.mmp Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatereferenceplugins/test/tclayer/group/tclayer_server.mmp Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatereferenceplugins/test/tintcustcmd/group/101F8762.txt Binary file sysstatemgmt/systemstatereferenceplugins/test/tintcustcmd/group/101F8762.txt has changed diff -r 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/group/101F8762.txt Binary file sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/group/101F8762.txt has changed diff -r 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/inc/tcmd_step_publishstartupmode.h --- a/sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/inc/tcmd_step_publishstartupmode.h Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/inc/tcmd_step_publishstartupmode.h Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/scripts/ssrefpluginstest_custcmd_publishstartupmode.script --- a/sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/scripts/ssrefpluginstest_custcmd_publishstartupmode.script Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/scripts/ssrefpluginstest_custcmd_publishstartupmode.script Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/src/tcmd_server.cpp --- a/sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/src/tcmd_server.cpp Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/src/tcmd_server.cpp Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/src/tcmd_step_publishstartupmode.cpp --- a/sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/src/tcmd_step_publishstartupmode.cpp Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/systemstatereferenceplugins/test/tunitcustcmd/src/tcmd_step_publishstartupmode.cpp Sat Feb 20 00:05:00 2010 +0200 @@ -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 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/tsrc/public/basic/group/mt_rstartersession.mmp --- a/sysstatemgmt/tsrc/public/basic/group/mt_rstartersession.mmp Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/tsrc/public/basic/group/mt_rstartersession.mmp Sat Feb 20 00:05:00 2010 +0200 @@ -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" @@ -31,7 +31,7 @@ USERINCLUDE ../mt_rstartersession -SYSTEMINCLUDE /epoc32/include/digia/eunit +SYSTEMINCLUDE /epoc32/include/platform/digia/eunit OS_LAYER_SYSTEMINCLUDE diff -r 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/tsrc/public/basic/mt_rstartersession/MT_RStarterSession.cpp --- a/sysstatemgmt/tsrc/public/basic/mt_rstartersession/MT_RStarterSession.cpp Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/tsrc/public/basic/mt_rstartersession/MT_RStarterSession.cpp Sat Feb 20 00:05:00 2010 +0200 @@ -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" @@ -162,45 +162,6 @@ EUNIT_ASSERT_DESC( err == KErrNone, "Incorrect return value" ); } -void MT_RStarterSession::T_RStarterSession_AddItemInStartListLL( ) - { - 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" ); - } - -void MT_RStarterSession::T_RStarterSession_AddItemInStartListL2L( ) - { - 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" ); - } - -void MT_RStarterSession::T_RStarterSession_RemoveItemFromStartListLL( ) - { - TInt err = iRStarterSession.RemoveItemFromStartListL( KNullDesC ); - EUNIT_PRINT( _L("RemoveItemFromStartListL() err = %d"), err ); - EUNIT_ASSERT_DESC( err == KErrPermissionDenied, "Incorrect return value. SID check has failed" ); - } - -void MT_RStarterSession::T_RStarterSession_SearchStartlistLL( ) - { - TInt err = iRStarterSession.SearchStartlistL( KNullDesC ); - EUNIT_PRINT( _L("SearchStartlistL() err = %d"), err ); - EUNIT_ASSERT_DESC( err == KErrPermissionDenied, "Incorrect return value. SID check has failed" ); - } - - // TEST TABLE EUNIT_BEGIN_TEST_TABLE( MT_RStarterSession, @@ -263,33 +224,6 @@ "FUNCTIONALITY", SetupL, T_RStarterSession_EndSplashScreenL, Teardown) -EUNIT_TEST( - "AddItemInStartListL - test9", - "RStarterSession", - "AddItemInStartListL - test9", - "FUNCTIONALITY", - SetupL, T_RStarterSession_AddItemInStartListLL, Teardown) - -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) - -EUNIT_TEST( - "SearchStartlistL - test12", - "RStarterSession", - "SearchStartlistL - test12", - "FUNCTIONALITY", - SetupL, T_RStarterSession_SearchStartlistLL, Teardown) /* EUNIT_TEST( "Shutdown - test3", diff -r 4e1aa6a622a0 -r a811597961f0 sysstatemgmt/tsrc/public/basic/mt_rstartersession/MT_RStarterSession.h --- a/sysstatemgmt/tsrc/public/basic/mt_rstartersession/MT_RStarterSession.h Tue Feb 02 00:53:00 2010 +0200 +++ b/sysstatemgmt/tsrc/public/basic/mt_rstartersession/MT_RStarterSession.h Sat Feb 20 00:05:00 2010 +0200 @@ -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" @@ -70,10 +70,6 @@ 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(); private: // Data