williamr@4: // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@4: // All rights reserved. williamr@4: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@4: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@4: // williamr@4: // Initial Contributors: williamr@4: // Nokia Corporation - initial contribution. williamr@4: // williamr@4: // Contributors: williamr@4: // williamr@4: // Description: williamr@4: // williamr@4: williamr@4: #ifndef __SSMCMD_HRH__ williamr@4: #define __SSMCMD_HRH__ williamr@4: williamr@4: /** UID2 for SSM command list resource files. williamr@4: williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: #define KUidSsmCommandListResourceFile 0x2000D764 williamr@4: williamr@4: #ifdef SYMBIAN_SSM_FLEXIBLE_MERGE williamr@4: /** The value of default priority of a command if it is not supplied williamr@4: This value is a TUint16 value and will deafult to 10000 williamr@4: williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: #define KDefaultCommandPriority 10000 williamr@4: #endif williamr@4: williamr@4: /** Supported verions of command list resource files. williamr@4: williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TSsmResourceVersion williamr@4: { williamr@4: ESsmInitialVersion = 1 williamr@4: }; williamr@4: williamr@4: /** Identifiers for different command types. williamr@4: williamr@4: Note: To add a new command type, extend this enum and add a williamr@4: new struct to ssmcmd.rh. williamr@4: All command structs must start with the following header: williamr@4: 1. LLINK conditional_information - set to zero for a command that must always williamr@4: be included in the command list or the id of a resource (in the same resource file) williamr@4: containing information used by the policy to determine whether the command williamr@4: will be included in the command list. williamr@4: 2. WORD type - Command type declared by TSsmCommandType. williamr@4: 3. WORD version - Supported version for the new command type. williamr@4: williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TSsmCommandType williamr@4: { williamr@4: /** williamr@4: Command not defined. williamr@4: */ williamr@4: ESsmCmdUndefined = 0, williamr@4: /** williamr@4: This command is used for starting processes. williamr@4: */ williamr@4: ESsmCmdStartProcess, williamr@4: /** williamr@4: This command is used for starting apps. williamr@4: */ williamr@4: ESsmCmdStartApp, williamr@4: /** williamr@4: This command is used to wait for apparc to initialise its list of applications. williamr@4: */ williamr@4: ESsmCmdWaitForApparcInit, williamr@4: /** williamr@4: This command is used to wait until all previous commands with williamr@4: start_method ESsmDeferredWaitForSignal have completed. williamr@4: */ williamr@4: ESsmCmdMultipleWait, williamr@4: /** williamr@4: This command is used for starting AMAStarter with a particular DSC. williamr@4: */ williamr@4: ESsmCmdAMAStarter, williamr@4: williamr@4: /** williamr@4: This command is used for publishing a system state change. williamr@4: */ williamr@4: ESsmCmdPublishSystemState, williamr@4: /** williamr@4: This command is used for publishing a system-wide property change. williamr@4: */ williamr@4: ESsmCmdPublishSwp, williamr@4: /** williamr@4: This command is used for creating a system-wide property. williamr@4: */ williamr@4: ESsmCmdCreateSwp, williamr@4: /** williamr@4: This command is used for requesting a change to a system-wide property. williamr@4: */ williamr@4: ESsmCmdReqSwProperty, williamr@4: /** williamr@4: This command is used for loading a State Utility Plugin. williamr@4: */ williamr@4: ESsmCmdLoadSup, williamr@4: /** williamr@4: This command is used for initiating a device restart or shutdown. williamr@4: */ williamr@4: ESsmCmdPowerOff, williamr@4: /** williamr@4: This command is used for finalising drives. williamr@4: */ williamr@4: ESsmCmdFinaliseDrives, williamr@4: /** williamr@4: This command is used for persisting HAL attributes. williamr@4: */ williamr@4: ESsmCmdPersistHalAttributes, williamr@4: /** williamr@4: This command is used for starting an old-style custom command. williamr@4: */ williamr@4: ESsmCmdLoadDLL, williamr@4: /** williamr@4: This command is used for starting a custom command. williamr@4: */ williamr@4: ESsmCmdCustomCommand, williamr@4: /** williamr@4: This command is used to set the publish and subscribe key. williamr@4: */ williamr@4: ESsmCmdSetPAndSKey, williamr@4: /** williamr@4: It is used to store the monitor information for a process/app. williamr@4: */ williamr@4: ESsmMonitorInfo williamr@4: }; williamr@4: williamr@4: enum TSsmSoftwareReasons williamr@4: { williamr@4: ESoftwareNormal, williamr@4: ERestoreFactorySettings, williamr@4: EFirstBoot, williamr@4: EUnconditionalSoftwareReason = 0xFFFFFFFF williamr@4: }; williamr@4: williamr@4: enum TSsmHardwareReasons williamr@4: { williamr@4: EHardwareNormal, williamr@4: ETest, williamr@4: EUnconditionalHardwareReason = 0xFFFFFFFF williamr@4: }; williamr@4: williamr@4: /** Identifiers for each start-up method. williamr@4: williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TSsmExecutionBehaviour williamr@4: { williamr@4: /** williamr@4: By using this type the starter can continue immediately williamr@4: with executing its next command. williamr@4: */ williamr@4: ESsmFireAndForget = 1, williamr@4: /** williamr@4: By using this type the starter cannot continue with the williamr@4: next command until a command is completed. williamr@4: It means rendezvous for StartApp and StartProcess and completion of Execute() for other commands. williamr@4: */ williamr@4: ESsmWaitForSignal, williamr@4: /** williamr@4: By using this type the starter will continue with the next command williamr@4: before commands completion. However the completion will be checked later when a williamr@4: MULTIPLE_WAIT command is encountered. williamr@4: */ williamr@4: ESsmDeferredWaitForSignal williamr@4: }; williamr@4: williamr@4: /** Identifier for the level of severity to be associated with a command failure. williamr@4: williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TCmdErrorSeverity williamr@4: { williamr@4: /** williamr@4: Ignore the command failure. williamr@4: */ williamr@4: ECmdIgnoreFailure = 0, williamr@4: williamr@4: /** williamr@4: */ williamr@4: ECmdLowSeverity = 25, williamr@4: williamr@4: /** williamr@4: */ williamr@4: ECmdMediumSeverity = 50, williamr@4: williamr@4: /** williamr@4: */ williamr@4: ECmdHighSeverity = 75, williamr@4: williamr@4: /** williamr@4: */ williamr@4: ECmdCriticalSeverity = 100 williamr@4: }; williamr@4: williamr@4: /** williamr@4: Identifier for the versions of individual Built-In Commands williamr@4: */ williamr@4: williamr@4: /** williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TCmdPublishSystemStateVersion williamr@4: { williamr@4: ECmdPublishSystemStateInitialVersion = 1 williamr@4: #ifdef SYMBIAN_SSM_FLEXIBLE_MERGE williamr@4: /* williamr@4: The ECmdPublishSystemStateVersionWithPriority will support the priority field in the command williamr@4: */ williamr@4: , ECmdPublishSystemStateVersionWithPriority williamr@4: #endif williamr@4: }; williamr@4: williamr@4: /** williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TCmdPublishSwpVersion williamr@4: { williamr@4: ECmdPublishSwpInitialVersion = 1 williamr@4: #ifdef SYMBIAN_SSM_FLEXIBLE_MERGE williamr@4: /* williamr@4: The ECmdPublishSwpVersionWithPriority will support the priority field in the command williamr@4: */ williamr@4: , ECmdPublishSwpVersionWithPriority williamr@4: #endif williamr@4: }; williamr@4: williamr@4: /** williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TCmdCreateSwpVersion williamr@4: { williamr@4: ECmdCreateSwpInitialVersion = 1 williamr@4: #ifdef SYMBIAN_SSM_FLEXIBLE_MERGE williamr@4: /* williamr@4: The ECmdCreateSwpVersionWithPriority will support the priority field in the command williamr@4: */ williamr@4: , ECmdCreateSwpVersionWithPriority williamr@4: #endif williamr@4: }; williamr@4: williamr@4: /** williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TCmdReqSwPropertyVersion williamr@4: { williamr@4: ECmdReqSwPropertyInitialVersion = 1 williamr@4: #ifdef SYMBIAN_SSM_FLEXIBLE_MERGE williamr@4: /* williamr@4: The ECmdReqSwPropertyVersionWithPriority will support the priority field in the command williamr@4: */ williamr@4: , ECmdReqSwPropertyVersionWithPriority williamr@4: #endif williamr@4: }; williamr@4: williamr@4: /** williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TCmdLoadSupVersion williamr@4: { williamr@4: ECmdLoadSupInitialVersion = 1 williamr@4: #ifdef SYMBIAN_SSM_FLEXIBLE_MERGE williamr@4: /* williamr@4: The ECmdLoadSupVersionWithPriority will support the priority field in the command williamr@4: */ williamr@4: , ECmdLoadSupVersionWithPriority williamr@4: #endif williamr@4: }; williamr@4: williamr@4: /** williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TCmdPowerOffVersion williamr@4: { williamr@4: ECmdPowerOffInitialVersion = 1 williamr@4: }; williamr@4: williamr@4: /** williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TCmdFinaliseDrivesVersion williamr@4: { williamr@4: ECmdFinaliseDrivesInitialVersion = 1 williamr@4: }; williamr@4: williamr@4: /** williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TCmdPersistHalAttributesVersion williamr@4: { williamr@4: ECmdPersistHalAttributesInitialVersion = 1 williamr@4: }; williamr@4: williamr@4: /** williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TCmdCustomCommandVersion williamr@4: { williamr@4: ECmdCustomCommandInitialVersion = 1 williamr@4: #ifdef SYMBIAN_SSM_FLEXIBLE_MERGE williamr@4: /* williamr@4: The ECmdCustomCommandVersionWithPriority will support the priority field in the command williamr@4: */ williamr@4: , ECmdCustomCommandVersionWithPriority williamr@4: #endif williamr@4: }; williamr@4: williamr@4: /** williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TCmdAmaStarterVersion williamr@4: { williamr@4: ECmdAmaStarterInitialVersion = 1 williamr@4: #ifdef SYMBIAN_SSM_FLEXIBLE_MERGE williamr@4: /* williamr@4: The ECmdAmaStarterVersionWithPriority will support the priority field in the command williamr@4: */ williamr@4: , ECmdAmaStarterVersionWithPriority williamr@4: #endif williamr@4: }; williamr@4: williamr@4: /** williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TCmdMultipleWaitVersion williamr@4: { williamr@4: ECmdMultipleWaitInitialVersion = 1 williamr@4: #ifdef SYMBIAN_SSM_FLEXIBLE_MERGE williamr@4: /* williamr@4: The ECmdMultipleWaitVersionWithPriority will support the priority field in the command williamr@4: */ williamr@4: , ECmdMultipleWaitVersionWithPriority williamr@4: #endif //SYMBIAN_SSM_FLEXIBLE_MERGE williamr@4: }; williamr@4: williamr@4: /** williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TCmdSetPAndSKeyVersion williamr@4: { williamr@4: ECmdSetPAndSKeyInitialVersion = 1 williamr@4: #ifdef SYMBIAN_SSM_FLEXIBLE_MERGE williamr@4: /* williamr@4: The ECmdSetPAndSKeyVersionWithPriority will support the priority field in the command williamr@4: */ williamr@4: , ECmdSetPAndSKeyVersionWithPriority williamr@4: #endif williamr@4: }; williamr@4: williamr@4: /** williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TCmdStartAppVersion williamr@4: { williamr@4: ECmdStartAppInitialVersion = 1 williamr@4: #ifdef SYMBIAN_SSM_FLEXIBLE_MERGE williamr@4: /* williamr@4: The ECmdStartAppVersionWithPriority will support the priority field in the command williamr@4: */ williamr@4: , ECmdStartAppVersionWithPriority williamr@4: #endif williamr@4: }; williamr@4: williamr@4: /** williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TCmdStartProcessVersion williamr@4: { williamr@4: ECmdStartProcessInitialVersion = 1 williamr@4: #ifdef SYMBIAN_SSM_FLEXIBLE_MERGE williamr@4: /* williamr@4: The ECmdStartProcessVersionWithPriority will support the priority field in the command williamr@4: */ williamr@4: , ECmdStartProcessVersionWithPriority williamr@4: #endif williamr@4: }; williamr@4: williamr@4: /** williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TCmdWaitForApparcInitVersion williamr@4: { williamr@4: ECmdWaitForApparcInitInitialVersion = 1 williamr@4: #ifdef SYMBIAN_SSM_FLEXIBLE_MERGE williamr@4: /* williamr@4: The ECmdWaitForApparcInitVersionWithPriority will support the priority field in the command williamr@4: */ williamr@4: , ECmdWaitForApparcInitVersionWithPriority williamr@4: #endif williamr@4: }; williamr@4: williamr@4: /** williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TSsmMonitorInfoVersion williamr@4: { williamr@4: ESsmMonitorInfoInitialVersion = 1 williamr@4: }; williamr@4: williamr@4: /** Defines the possible unloading options for the custom command dll williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TCmdCustomCommandLibUnloading williamr@4: { williamr@4: EUnloadOnCommandCompletion = 0, // once Custom Command has completed, the dll is unloaded williamr@4: ENeverUnload // no attempt is made to unload the dll williamr@4: }; williamr@4: williamr@4: /** Defines the action to be taken on component failure. williamr@4: This should be used to set the restart_policy member of SSM_MONITOR_INFO structure to determine what to do williamr@4: when all retry attempts of the component have failed. williamr@4: williamr@4: @publishedPartner williamr@4: @released williamr@4: */ williamr@4: enum TSsmRecoveryMethod williamr@4: { williamr@4: /** williamr@4: Ignore the command failure williamr@4: */ williamr@4: ESsmIgnoreOnFailure, williamr@4: /** williamr@4: Reboot the OS williamr@4: */ williamr@4: ESsmRestartOS, williamr@4: /** williamr@4: Reboot the OS in a particular mode williamr@4: */ williamr@4: ESsmRestartOSWithMode, williamr@4: /** williamr@4: Reboot the OS (with no attempts to restart the component being attempted) williamr@4: */ williamr@4: ESsmCriticalNoRetries williamr@4: }; williamr@4: williamr@4: #endif // __SSMCMD_HRH__