sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupadaptationcommands.h
changeset 0 4e1aa6a622a0
child 7 1a73e8f1b64d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sysstatemgmt/systemstatereferenceplugins/clayer/inc/startupadaptationcommands.h	Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,786 @@
+/*
+* Copyright (c) 2004-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:
+* Name        : startupadaptationcommands.h
+* Part of     : System Startup / Starter
+* Interface   : Domain, Startup Adaptation API
+* This header file defines the startup adaptation API commands
+* and their parameters.
+* This file contains the following sections:
+* - Command definitions
+* - Command parameter definitions
+* - Response parameter definitions
+* Version     : %version: ou1s60rt#12.1.4 %
+* This material, including documentation and any related computer
+* programs, is protected by copyright controlled by Nokia.  All
+* rights are reserved.  Copying, including reproducing, storing,
+* adapting or translating, any or all of this material requires the
+* prior written consent of Nokia.  This material also contains
+* confidential information which may not be disclosed to others
+* without the prior written consent of Nokia.
+* Template version: 4.0
+* Nokia Core OS *
+*
+*/
+
+
+
+#ifndef __STARTUPADAPTATIONCOMMANDS_H__
+#define __STARTUPADAPTATIONCOMMANDS_H__
+
+#include <e32std.h>
+
+/*****************************************************
+*       Series 60 Customer
+*       Needs customer implementation
+*****************************************************/
+
+/**
+* All command and event definitions of Startup Adaptation API belong to
+* StartupAdaptation namespace.
+*
+* @file
+* @publishedPartner
+* @released
+*
+*/
+namespace StartupAdaptation
+    {
+
+    /**
+    * Command definitions
+    * All commands contain a command id and a set of parameters. The command ids
+    * are defined first and after that parameters for each command.
+    *
+    * This interface is asynchronous. A command is interpreted of being
+    * completed after a response for that command is received.
+    *
+    * @param field means the parameter for the command.
+    * @return field means the parameter for the response.
+    */
+    enum TCommand
+        {
+        /**
+        * This command is used to change the global state of an S60 device.
+        *
+        * When changing the global state, S60 starter server issues a state
+        * change command to startup adaptation via the startup adaptation API.
+        * After receiving a response, S60 starter server will publish the new
+        * state using Publish & Subscribe and execute operations required in
+        * that state.
+        *
+        * @param  TGlobalStateChangePckg The requested global state.
+        * @return TResponsePckg The success status of the state change.
+        */
+        EGlobalStateChange = 100,
+
+        /**
+        * Security state change request. Used only when global state is security
+        * check.
+        *
+        * @param  TSecurityStateChangePckg The requested security state.
+        * @return TSecurityStateResponsePckg The success status of the state
+        * change and, if the operation was successful, additional information
+        * which depends on the state.
+        */
+        ESecurityStateChange = 101,
+
+        /**
+        * Get global startup mode.
+        *
+        * The global startup mode indicates the mode in which the device has
+        * been started. The startup mode can also be seen as a reason for the
+        * startup.
+        *
+        * @param  None.
+        * @return TGlobalStartupModeResponsePckg The success status of the
+        * operation and, if the operation was successful, the global startup
+        * mode.
+        */
+        EGetGlobalStartupMode = 102,
+
+        /**
+        * Request Domestic OS to perform self tests.
+        *
+        * Before launching any software components that are using some specific
+        * hardware, self-tests need to be executed for the hardware. This
+        * command is used to request licensee-specific self-tests to be
+        * executed. It is allowed to perform the self-tests before this command,
+        * but when this command is issued, S60 starter server expects to get the
+        * result of the self-tests.
+        *
+        * @param  None.
+        * @return TResponsePckg The success status of the self tests.
+        */
+        EExecuteSelftests = 103,
+
+        /**
+        * Get the language codes that are stored in the SIM card preferred
+        * language lists.
+        *
+        * Primary language list will be queried first. Unless it contains
+        * at least one language that can be taken into use, the secondary
+        * preferred list will be queried for. Only if there is no acceptable
+        * languages in the secondary list either, will the tertiary list be
+        * queried for.
+        *
+        * @param  TLanguageListPriorityPckg.
+        * @return TLanguageListResponsePckg The list of languages mapped to
+        * Symbian language codes.
+        */
+        EGetSIMLanguages = 104,
+
+        /**
+        * This command is used to check the validity of Real Time Clock (RTC).
+        *
+        * @param  None.
+        * @return TResponsePckg The success status of the operation. KErrNone
+        * if the RTC time is valid, any other value indicates that it is not
+        * valid.
+        */
+        EValidateRTCTime = 107,
+
+        /**
+        * Query whether the current SIM card is different from the previous one.
+        *
+        * The SIM changed status indicates whether the currently inserted SIM
+        * card has changed since the last startup. This information can be used
+        * for example to query whether the user wants to clear phone call logs.
+        *
+        * S60 starter server makes this query only if there is a SIM card
+        * present. This command will only be issued in ESWStateCriticalPhaseOK
+        * state.
+        *
+        * @param  None.
+        * @return TBooleanResponsePckg Success status of the operation, and if
+        * the operation was successful, indication whether the SIM card has been
+        * changed after the last boot or not.
+        */
+        EGetSimChanged = 108, //This Enum should not be used.
+
+        /**
+        * Query whether the current SIM card is among the last used cards.
+        *
+        * It is up to the startup adaptation to decide the number of SIM cards
+        * that are considered owned.
+        *
+        * If the SIM owned status is false, then the SIM changed status must be
+        * true.
+        *
+        * S60 starter server makes this query only if there is a SIM card
+        * present. This command will only be issued in ESWStateCriticalPhaseOK
+        * state.
+        *
+        * @param  None.
+        * @return TBooleanResponsePckg Success status of the operation, and if
+        * the operation was successful, indication whether the SIM card is among
+        * the five last used cards or not.
+        */
+        EGetSimOwned = 109,
+
+        /**
+        * This command is used to set a wake-up alarm time so that the device is
+        * powered up by an alarm when it goes off, i.e. the device will be
+        * started in the alarm mode.
+        *
+        * @see Command EGetGlobalStartupMode.
+        *
+        * @param  TWakeupAlarmPckg The time for the alarm.
+        * @return TResponsePckg Success status of the operation.
+        */
+        ESetWakeupAlarm = 110,
+
+        /**
+        * This command is used to cancel a wake-up alarm.
+        *
+        * @param  None.
+        * @return None Cancels must always succeed.
+        */
+        ECancelWakeupAlarm = 111,
+
+        /**
+        * A reboot request.
+        *
+        * This command is used to inform the startup adaptation that a reset
+        * will be executed. The command also reports the reason for the reset
+        * in case there is a need for some licensee-specific actions.
+        *
+        * This command will only be executed in the state ESWStateShuttingDown.
+        * After receiving a response to the command, the S60 starter server will
+        * only clean up itself and then call UserHal::SwitchOff().
+        *
+        * @param  TResetReasonPckg The reason for resetting.
+        * @return TResponsePckg Success status of the operation.
+        */
+        EExecuteReset = 112,
+
+        /**
+        * A shutdown request.
+        *
+        * This command is used to inform the startup adaptation that the device
+        * is going to be shut down.
+        *
+        * This command will only be executed in the state ESWStateShuttingDown.
+        * After receiving a response to the command, the S60 starter server will
+        * only clean up itself and then call UserHal::SwitchOff().
+        *
+        * @param  None.
+        * @return TResponsePckg Success status of the operation.
+        */
+        EExecuteShutdown = 113,
+
+        /**
+        * Restore the factory settings of Domestic OS.
+        *
+        * Restoring factory settings may require some licensee-specific actions
+        * to be performed. This command is used to request those actions to be
+        * executed. The command will be issued during start-up sequence
+        * following a reset caused by user-initiated RFS operation.
+        *
+        * @param  TRFSReasonPckg Indicates whether normal or deep RFS is
+        * required.
+        * @return TResponsePckg Success status of the operation.
+        */
+        EExecuteDOSRfs = 114,
+
+        /**
+        * Activate RF tranceiver for making an emergency call.
+        *
+        * Emergency calls have a high priority in S60 devices. Emergency calls
+        * must be allowed whenever they are technically possible. There are two
+        * cases, where the state of the device does not allow a mobile
+        * originated call, but it must allow an emergency call.
+        * - When the device is in offline mode. Applies also for the global
+        *   state ESWStateEmergencyCallsOnly.
+        * - When the device startup is in progress and RF transceiver is not
+        *   yet switched on.
+        * This command is used to switch RF transceiver on for making an
+        * emergency call. As soon as the emergency call is finished, there will
+        * be a command for switching RF transceiver off.
+        *
+        * @see Command EDeactivateRfAfterEmergencyCall.
+        *
+        * @param  None.
+        * @return TResponsePckg Success status of the operation.
+        */
+        EActivateRfForEmergencyCall = 115,
+
+        /**
+        * Deactivate RF transceiver after making an emergency call.
+        *
+        * This command is used to switch RF transceiver off after an emergency
+        * call.
+        *
+        * @see Command EActivateRfForEmergencyCall.
+        *
+        * @param  None.
+        * @return TResponsePckg Success status of the operation.
+        */
+        EDeactivateRfAfterEmergencyCall = 116,
+        
+        /**
+        * Query whether the current boot is a hidden reset.
+        * Hidden reset means that boot-time queries and animations should not
+        * be shown to the user.
+        *
+        * Boot-time queries and animations will be hidden from the user if the
+        * system is executing a controlled reset (EExecuteReset command) or
+        * this query returns ETrue.
+        *
+        * This query should return ETrue if the ongoing boot is caused by SW
+        * reset (either controlled, initiated by EExecuteReset command, or
+        * uncontrolled, caused by critical SW failure).
+        * This query should return EFalse if the ongoing boot is initiated by
+        * any other means (such as user pressing the power key or a wakeup
+        * alarm occurring).
+        *
+        * This command will always be issued in ESWStateStartingUiServices
+        * state.
+        */
+        EGetHiddenReset = 117
+
+        };
+
+    /*
+    * ==========================================================================
+    * Command parameter definitions
+    * ==========================================================================
+    */
+
+    /**
+    * Parameter definition for EGlobalStateChange.
+     * Parameter indicates the global state to move to.
+    *
+    * Possible state transitions are:
+    * ESWStateStartingUiServices -> ESWStateStartingCriticalApps
+    * ESWStateStartingCriticalApps -> ESWStateSelfTestOK
+    * ESWStateSelfTestOK -> ESWStateSecurityCheck
+    * ESWStateSelfTestOK -> ESWStateCharging
+    * ESWStateSelfTestOK -> ESWStateAlarm
+    * ESWStateSelfTestOK -> ESWStateTest
+    * ESWStateSecurityCheck -> ESWStateCriticalPhaseOK
+    * ESWStateSecurityCheck -> ESWStateEmergencyCallsOnly
+    * ESWStateCriticalPhaseOK -> ESWStateNormalRfOn
+    * ESWStateCriticalPhaseOK -> ESWStateNormalRfOff
+    * ESWStateNormalRfOn -> ESWStateNormalRfOff
+    * ESWStateNormalRfOn -> ESWStateNormalBTSap
+    * ESWStateNormalRfOff -> ESWStateNormalRfOn
+    * ESWStateNormalRfOff -> ESWStateNormalBTSap
+    * ESWStateNormalBTSap -> ESWStateNormalRfOn
+    * ESWStateNormalBTSap -> ESWStateNormalRfOff
+    * ESWStateCharging -> ESWStateChargingToAlarm
+    * ESWStateCharging -> ESWStateChargingToNormal
+    * ESWStateAlarm -> ESWStateAlarmToCharging
+    * ESWStateAlarm -> ESWStateAlarmToNormal
+    * ESWStateChargingToAlarm -> ESWStateAlarm
+    * ESWStateAlarmToCharging -> ESWStateCharging
+    * ESWStateChargingToNormal -> ESWStateSecurityCheck
+    * ESWStateAlarmToNormal -> ESWStateSecurityCheck
+    * (Any state except ESWStateStartingUiServices, ESWStateTest,
+    *  ESWStateFatalStartupError and ESWStateShuttingDown) -> ESWStateFatalStartupError
+    * (Any state except ESWStateTest and ESWStateShuttingDown) -> ESWStateShuttingDown
+    */
+    enum TGlobalState
+        {
+        ESWStateStartingUiServices = 100,
+        ESWStateStartingCriticalApps,
+        ESWStateSelfTestOK,
+
+        // States for the security check phase.
+        ESWStateSecurityCheck,
+        ESWStateCriticalPhaseOK,
+        ESWStateEmergencyCallsOnly,
+
+        // Terminal states defined by the boot mode (and some other variables such as offline mode).
+        ESWStateTest,
+        ESWStateCharging,
+        ESWStateAlarm,
+        ESWStateNormalRfOn,
+        ESWStateNormalRfOff,
+        ESWStateNormalBTSap,
+
+        // States for notifying adaptation about a terminal state change.
+        ESWStateAlarmToCharging,
+        ESWStateChargingToAlarm,
+        ESWStateChargingToNormal,
+        ESWStateAlarmToNormal,
+
+        // Shutdown-related states.
+        ESWStateShuttingDown,
+
+        // Error states.
+        ESWStateFatalStartupError
+        };
+
+    /**
+    * Buffer descriptor containing TGlobalState object.
+    */
+    typedef TPckgBuf<TGlobalState> TGlobalStateChangePckg;
+
+    /**
+    * Parameter definition for ESecurityStateChange.
+    * Parameter indicates the security state to move to.
+    *
+    * Possible state transitions are:
+    * ESIMPresent -> ESIMReadable
+    * ESIMPresent -> ESIMLessOfflineSupported
+    * ESIMReadable -> ESIMInvalid
+    * ESIMInvalid -> ESecurityCheckFailed
+    * ESIMInvalid -> ESIMRejected
+    * ESIMRejected -> ESIMBlocked
+    * ESIMRejected -> ESecurityCheckFailed
+    * ESIMBlocked -> EPINRequired
+    * ESIMBlocked -> EAskPUK
+    * EPINRequired -> EAskPIN
+    * EPINRequired -> ESIMCodesOK
+    * EAskPIN -> EAskPUK
+    * EAskPIN -> ESIMCodesOK
+    * EAskPUK -> ESIMCodesOK
+    * EAskPUK -> ESecurityCheckFailed
+    * ESIMCodesOK -> ESIMLock
+    * ESIMCodesOK -> ESECCodeRequired
+    * ESIMLock -> ESecurityCheckOK
+    * ESIMLock -> ESecurityCheckFailed
+    * ESIMLessOfflineSupported -> ESIMLock
+    * ESIMLessOfflineSupported -> ESECCodeRequired
+    * ESIMLessOfflineSupported -> ESecurityCheckFailed
+    * ESECCodeRequired -> EAskSEC
+    * ESECCodeRequired -> ESECCodeOK
+    * EAskSEC -> ESECBlocked
+    * EAskSEC -> ESECCodeOK
+    * ESECBlocked -> EAskSEC
+    * ESECCodeOK -> ESIMLock
+    */
+    enum TSecurityState
+        {
+        ESIMPresent = 100,       ///< Response param: Yes/No
+        ESIMReadable,            ///< Response param: None (wait until SIM readable)
+        ESIMRejected,            ///< Response param: Yes/No
+        ESIMBlocked,             ///< Response param: No/PUK1/UPUK
+        EPINRequired,            ///< Response param: No/PIN1/UPIN
+        ESECCodeRequired,        ///< Response param: No/SEC/Master
+
+        ESIMLessOfflineSupported,///< Response param: None (inform adaptation only)
+        ESIMLock,                ///< Response param: SimLockRestricted/SimLockRestrictionOn/
+                                 ///< SimLockRestrictionPending/SimLockOk
+        ESECBlocked,             ///< Response param: None (inform adaptation only)
+
+        EAskPIN,                 ///< Response param: None (inform adaptation only)
+        EAskPUK,                 ///< Response param: None (inform adaptation only)
+        EAskSEC,                 ///< Response param: None (inform adaptation only)
+        ESIMCodesOK,             ///< Response param: None (inform adaptation only)
+        ESECCodeOK,              ///< Response param: None (inform adaptation only)
+        ESecurityCheckOK,        ///< Response param: None (inform adaptation only)
+        ESecurityCheckFailed,     ///< Response param: None (inform adaptation only)
+        ESIMInvalid              ///< Response param: Yes/No
+        };
+
+    /**
+    * Buffer descriptor containing TSecurityState object.
+    */
+    typedef TPckgBuf<TSecurityState> TSecurityStateChangePckg;
+
+
+    /**
+    * Parameter definition for EGetSIMLanguages.
+    */
+    enum TLanguageListPriority
+        {
+        /**
+        * Return list of language codes based on the most preferred language
+        * list. In GSM the most preferred language list is stored in EF_LI
+        * (see 3GPP TS 31.102).
+        */
+        EPrimaryLanguages = 100,
+        /**
+        * Return list of language codes based on the second preferred language
+        * list. In GSM the second preferred language list is stored in EF_PL
+        * (see 3GPP TS 51.011).
+        */
+        ESecondaryLanguages,
+        /**
+        * Return list of language codes based on the third preferred language
+        * list. In GSM the third preferred language list is stored in EF_LP
+        * (see 3GPP TS 51.011).
+        */
+        ETertiaryLanguages,
+        };
+
+    /**
+    * Buffer descriptor containing TLanguageListPriority object.
+    */
+    typedef TPckgBuf<TLanguageListPriority> TLanguageListPriorityPckg;
+
+    /**
+    * Parameter definition for ESetWakeupAlarm and ECancelWakeupAlarm.
+    */
+    NONSHARABLE_STRUCT( TWakeupAlarmTime )
+        {
+        /**
+        * The local time for the alarm. Startup adaptation needs to take the
+        * offsets into account.
+        */
+        TTime iTime;
+        /**
+        * Universal time offset in seconds.
+        */
+        TTimeIntervalSeconds iUniversalTimeOffset;
+        /**
+        * Daylight saving offset in seconds, if not taken into account by the
+        * universal time offset parameter.
+        */
+        TTimeIntervalSeconds iDaylightSavingOffset;
+        };
+
+    /**
+    * Buffer descriptor containing TWakeupAlarmTime object.
+    */
+    typedef TPckgBuf<TWakeupAlarmTime> TWakeupAlarmPckg;
+
+    /**
+    * Parameter definition for EExecuteReset.
+    */
+    enum TResetReason
+        {
+        /** A reset due to display language switch. */
+        ELanguageSwitchReset = 100,
+        /** A reset due to restoring factory settings. */
+        ENormalRFSReset = 101,
+        /** A reset due to restoring factory settings (deep). */
+        EDeepRFSReset = 102,
+        /** A reset due to firmware update. */
+        EFirmwareUpdate = 104,
+        /** A reset due to an error. */
+        EUnknownReset = 105,
+        /** A reset due to removing operator settings. */
+        EOperatorSettingReset = 106,
+        /** A reset due to network mode change. */
+        ENetworkModeChangeReset = 107,
+        /** A reset due removing/inserting SIM card. */
+        ESIMStatusChangeReset = 108,
+        EDRMReset = 109,
+        /** A reset after restoring backed-up data. */
+        EDataRestoreReset = 110,
+        /** A reset required by Field Test software. */
+        EFieldTestReset = 111
+        };
+
+    /**
+    * Buffer descriptor containing TResetReason object.
+    */
+    typedef TPckgBuf<TResetReason> TResetReasonPckg;
+
+
+    /**
+    * Parameter definition for EExecuteDOSRfs.
+    */
+    enum TRFSReason
+        {
+        ENormalRFS = 100,
+        EDeepRFS
+        };
+
+    /**
+    * Buffer descriptor containing TRFSReason object.
+    */
+    typedef TPckgBuf<TRFSReason> TRFSReasonPckg;
+
+    /*
+    * ==========================================================================
+    * Response parameter definitions
+    * ==========================================================================
+    */
+
+    /**
+    * Parameter definition for command responses that need only success or
+    * failure information.
+    */
+    typedef TPckgBuf<TInt> TResponsePckg;
+
+
+    /**
+    * Parameter definition for ESecurityStateChange command response.
+    */
+    enum TSecurityStateInfo
+        {
+        EYes = 100,
+        ENo,
+
+        EPUK1Required,              // Only for SIMBlocked
+        EUPUKRequired,              // Only for SIMBlocked
+
+        EPIN1Required,              // Only for PINRequired
+        EUPINRequired,              // Only for PINRequired
+
+        ESecurityCodeRequired,      // Only for SECCodeRequired
+        EMasterCodeRequired,        // Only for SECCodeRequired
+
+        ESimLockRestricted,         // Only for SIMLock
+        ESimLockRestrictionOn,      // Only for SIMLock
+        ESimLockRestrictionPending, // Only for SIMLock
+        ESimLockOk,                 // Only for SIMLock
+
+        ENoValue                    // For SIMReadable, SIMLessOfflineSupported,
+                                    // SECBlocked, AskPIN, AskPUK, AskSEC,
+                                    // SIMCodesOK, SECCodeOK,
+                                    // SecurityCheckOK, SecurityCheckFailed
+        };
+
+    /**
+    * Parameter definition for ESecurityStateChange command response.
+    */
+    NONSHARABLE_STRUCT( TSecurityStateResponse )
+        {
+        /**
+        * Indicates whether operation was successful or if not, the reason why.
+        */
+        TInt iErrorCode;
+        /**
+        * Response value. Valid only if iErrorCode is KErrNone.
+        */
+        TSecurityStateInfo iValue;
+        };
+
+    /**
+    * Buffer descriptor containing TSecurityStateResponse object.
+    */
+    typedef TPckgBuf<TSecurityStateResponse> TSecurityStateResponsePckg;
+
+
+    /**
+    * Parameter definition for EGetGlobalStartupMode command response.
+    */
+    enum TGlobalStartupMode
+        {
+        ENormal = 100,
+        EAlarm,
+        ECharging,
+        ETest
+        };
+
+    /**
+    * Parameter definition for EGetGlobalStartupMode command response.
+    */
+    struct TGlobalStartupModeResponse
+        {
+        /**
+        * Indicates whether operation was successful or if not, the reason why.
+        */
+        TInt iErrorCode;
+        /**
+        * Response value. Valid only if iErrorCode is KErrNone.
+        */
+        TGlobalStartupMode iValue;
+        };
+
+    /**
+    * Buffer descriptor containing TGlobalStartupModeResponse object.
+    */
+    typedef TPckgBuf<TGlobalStartupModeResponse> TGlobalStartupModeResponsePckg;
+
+
+    /**
+    * Enumeration of preferred languages for EGetSIMLanguages command response.
+    *
+    * Implementation should map each entry in the physical list stored in
+    * SIM card to a corresponding S60 preferred language code (one of the values
+    * of TPreferredLanguage enumerations).
+    * Implementation may skip the entries for which there is no corresponding
+    * value in the TPreferredLanguage enumeration.
+    */
+
+    enum TPreferredLanguage
+        {                         // ISO 639 GSM 0338
+        EPrefLangEnglish = 1,     // EN      1
+        EPrefLangFrench = 2,      // FR      3
+        EPrefLangGerman = 3,      // DE      0
+        EPrefLangSpanish = 4,     // ES      4
+        EPrefLangItalian = 5,     // IT      2
+        EPrefLangSwedish = 6,     // SV      6
+        EPrefLangDanish = 7,      // DA      7
+        EPrefLangNorwegian = 8,   // NO      10
+        EPrefLangFinnish = 9,     // FI      9
+        EPrefLangPortuguese = 13, // PT      8
+        EPrefLangTurkish = 14,    // TR      12
+        EPrefLangIcelandic = 15,  // IS      36
+        EPrefLangRussian = 16,    // RU      35
+        EPrefLangHungarian = 17,  // HU      13
+        EPrefLangDutch = 18,      // NL      5
+        EPrefLangCzech = 25,      // CS      32
+        EPrefLangSlovak = 26,     // SK
+        EPrefLangPolish = 27,     // PL      14
+        EPrefLangSlovenian = 28,  // SL
+        EPrefLangPrcChinese = 31, // ZH
+        EPrefLangJapanese = 32,   // JA
+        EPrefLangThai = 33,       // TH
+        EPrefLangArabic = 37,     // AR      34
+        EPrefLangTagalog = 39,    // TL
+        EPrefLangBulgarian = 42,  // BG
+        EPrefLangCatalan = 44,    // CA
+        EPrefLangCroatian = 45,   // HR
+        EPrefLangEstonian = 49,   // ET
+        EPrefLangFarsi = 50,      // FA
+        EPrefLangGreek = 54,      // EL      11
+        EPrefLangHebrew = 57,     // IW      33
+        EPrefLangHindi = 58,      // HI
+        EPrefLangIndonesian = 59, // IN
+        EPrefLangKorean = 65,     // KO
+        EPrefLangLatvian = 67,    // LV
+        EPrefLangLithuanian = 68, // LT
+        EPrefLangMalay = 70,      // MS
+        EPrefLangMarathi = 72,    // MR
+        EPrefLangRomanian = 78,   // RO
+        EPrefLangSerbian = 79,    // SR
+        EPrefLangUkrainian = 93,  // UK
+        EPrefLangUrdu = 94,       // UR
+        EPrefLangVietnamese = 96, // VI
+        EPrefLangBasque = 102,    // EU
+        EPrefLangGalician = 103   // GL
+        };
+
+
+    /**
+    * Array of preferred languages for EGetSIMLanguages command response.
+    */
+    typedef RArray<TPreferredLanguage> RLanguageList;
+
+
+    /**
+    * Parameter definition for EGetSIMLanguages command response.
+    */
+    NONSHARABLE_CLASS( RLanguageListResponse )
+        {
+    private:
+        RLanguageListResponse( const RLanguageListResponse& );
+        RLanguageListResponse& operator= ( const RLanguageListResponse& );
+
+    public:
+
+        /**
+        * Constructor.
+        */
+        inline RLanguageListResponse();
+
+        /**
+        * Closes the language code array and frees all memory allocated to the
+        * array.
+        *
+        * The function must be called before this object is destroyed.
+        */
+        inline void Close();
+
+        /**
+        * Use KErrNotFound to indicate that there is no SIM card present or the
+        * SIM card does not contain the requested list.
+        */
+        TInt iErrorCode;
+
+        /**
+        * Array of zero or more languages codes.
+        */
+        RLanguageList iLanguages;
+        };
+
+    /**
+    * Pointer descriptor representing an RLanguageListResponse object.
+    */
+    typedef TPckg<RLanguageListResponse> TLanguageListResponsePckg;
+
+
+    /**
+    * Parameter definition for command responses that need success or failure
+    * information and a boolean return value.
+    */
+    struct TBooleanResponse
+        {
+        /**
+        * Indicates whether operation was successful or if not, the reason why.
+        */
+        TInt iErrorCode;
+        /**
+        * Response value. Valid only if iErrorCode is KErrNone.
+        */
+        TBool iValue;
+        };
+
+    /**
+    * Buffer descriptor containing TBooleanResponse object.
+    */
+    typedef TPckgBuf<TBooleanResponse> TBooleanResponsePckg;
+
+    }
+
+#include <ssm/startupadaptationcommands.inl>
+
+#endif // __STARTUPADAPTATIONCOMMANDS_H__