--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonesrv_plat/ss_settings_api/inc/RSSSettings.h Tue Feb 02 01:11:09 2010 +0200
@@ -0,0 +1,383 @@
+/*
+* Copyright (c) 2002-2005 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:
+* Class for getting information about the Clir, Cug, Als and Als blocking
+* status in the phone.
+*
+*/
+
+
+#ifndef RSSSETTINGS_H
+#define RSSSETTINGS_H
+
+// INCLUDES
+#include <etelmm.h>
+#include <RCustomerServiceProfileCache.h>
+
+// DATA TYPES
+
+/**
+* All enumerations are fixed - DO NOT CHANGE!!
+*/
+
+/**
+* It enumerates all SSSettings settings.
+*
+* ESSSettingsCug - closed user group setting,
+* for some values see TSSSettingsCugValue.
+* ESSSettingsClir - default setting for calling line identification
+* restriction, see TSSSettingsClirValue.
+* ESSSettingsAls - selected line, see TSSSettingsAlsValue.
+* ESSSettingsAlsBlocking - line selection blocking, see TSSSettingsAlsBlocking.
+* ESSSettingsCugDefault - value for cug default.
+*/
+enum TSSSettingsSetting
+ {
+ ESSSettingsCug = 0,
+ ESSSettingsClir = 1,
+ ESSSettingsAls = 2,
+ ESSSettingsAlsBlocking = 3,
+ ESSSettingsDefaultCug = 4
+ };
+
+/**
+* It enumerates all values for CLIR.
+*
+* ESSSettingsClirNetworkDefault - use network default
+* ESSSettingsClirExplicitInvoke - by default, invoke CLIR
+* ESSSettingsClirExplicitSuppress - by default, suppress CLIR
+*/
+enum TSSSettingsClirValue
+ {
+ ESSSettingsClirNetworkDefault,
+ ESSSettingsClirExplicitInvoke,
+ ESSSettingsClirExplicitSuppress
+ };
+
+/**
+* It enumerates SOME values for CUG.
+*
+* Alternative CUG default (and min value) can be set on/off from
+* shared data (shareddatakeys.h, key: KPhoneCUGIndexStartValue).
+*
+* CUG value is basically interger.
+*
+* ESSSettingsCugSuppress - special, suppress CUG
+* ESSSettingsCugDefault - special, use network default CUG
+* ESSSettingsCugMin - minimum value for proper CUG index.
+* ESSSettingsCugMax - maximum value for proper CUG index.
+* ESSSettingsAltCugDefault - special, alternative default CUG
+* ESSSettingsAltCugMin - special, alternative minimum for CUG
+*/
+enum TSSSettingsCugValue
+ {
+ ESSSettingsCugSuppress = -1,
+ ESSSettingsCugDefault = 0, //Note: default can be 0 or 65535 (see above)
+ ESSSettingsCugMin = 1, //Note: min value can be 0 or 1 (see above)
+ ESSSettingsCugMax = 32767,
+ ESSSettingsAltCugDefault = 65535,
+ ESSSettingsAltCugMin = 0
+ };
+
+/**
+* It enumerates all values for ALS.
+*
+* ESSSettingsAlsNotSupported - ALS not supported, always primary line.
+* ESSSettingsAlsPrimary - ALS supported, primary line selected.
+* ESSSettingsAlsAlternate - ALS supported, alternate line selected.
+*/
+enum TSSSettingsAlsValue
+ {
+ ESSSettingsAlsNotSupported = 0,
+ ESSSettingsAlsPrimary = 1,
+ ESSSettingsAlsAlternate = 2
+ };
+
+/**
+* It enumerates all values for ALS blocking.
+*
+* ESSSettingsAlsBlockingNotSupported - ALS blocking not supported.
+* ESSSettingsAlsBlockingOff - ALS blocking off.
+* ESSSettingsAlsBlockingOn - ALS blocking on.
+*/
+enum TSSSettingsAlsBlockingValue
+ {
+ ESSSettingsAlsBlockingNotSupported,
+ ESSSettingsAlsBlockingOff,
+ ESSSettingsAlsBlockingOn
+ };
+
+// FORWARD DECLARATIONS
+class MSSSettingsObserver;
+class CSSSettingsNotifier;
+class RMmCustomAPI;
+class CRepository;
+
+
+// CLASS DECLARATION
+
+/**
+* It is class that can be used to fetch phone related settings.
+* @since 1.0
+* @lib sssettings.lib
+*/
+class RSSSettings
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ */
+ IMPORT_C RSSSettings();
+
+ public: // New functions
+
+ /**
+ * Closes SsSettings.
+ *
+ * After the use of the class, the method must be called.
+ */
+ IMPORT_C void Close();
+
+ /**
+ * Opens SsSettings.
+ *
+ * Before using the class, one of Open methods must be called.
+ *
+ * @return error code. KErrNone, if success.
+ */
+ IMPORT_C TInt Open();
+
+ /**
+ * Opens SsSettings.
+ *
+ * Ownership of parameters is NOT transferred. If parameter
+ * is NULL, then the instance creates its own sessions.
+ *
+ * Before using the class, one of Open methods must be called.
+ *
+ * @param aTelServer ETel server session.
+ * @return error code. KErrNone, if success.
+ */
+ IMPORT_C TInt Open(
+ RTelServer* aTelServer );
+
+
+ // CHANGE NOTIFICATIONS
+
+ /**
+ * Registers an observer to receive all changes.
+ *
+ * @param aObserver observer.
+ * @return error code. If other than KErrNone, CancelAll is called
+ * automatically.
+ */
+ IMPORT_C TInt RegisterAll(
+ MSSSettingsObserver& aObserver );
+
+ /**
+ * Registers an observer to receive changes of a setting.
+ *
+ * @param aSetting setting.
+ * @param aObserver observer.
+ * @return error code. KErrNone: observer is added
+ * KErrAlreadyExists: observer is already added
+ * KErrNotReady: Possible when BT SAP is on.
+ * KErrNotSupported: Possible with ALS.
+ * other: observer not registered
+ */
+ IMPORT_C TInt Register(
+ TSSSettingsSetting aSetting,
+ MSSSettingsObserver& aObserver );
+
+ /**
+ * Cancels all registrations of the observer.
+ *
+ * @param aObserver observer.
+ */
+ IMPORT_C void CancelAll(
+ MSSSettingsObserver& aObserver );
+
+ /**
+ * Cancel specific setting.
+ *
+ * @param aSetting setting.
+ * @param aObserver observer.
+ */
+ IMPORT_C void Cancel(
+ TSSSettingsSetting aSetting,
+ MSSSettingsObserver& aObserver );
+
+ // CHANGE & FETCH VALUE
+
+ /**
+ * Fetch value of a setting.
+ *
+ * @param aSetting setting.
+ * @param aValue result will be stored here (if success).
+ * @return error code: KErrNone, all ok aValue updated.
+ * KErrCorrupt, value in shared data is not OK.
+ * KErrNotSupported, aSetting is not a "real" setting
+ * KErrNotReady, get CSP from ETEL has failed.
+ * KErrServerBusy, get CSP from ETEL has failed.
+ */
+ IMPORT_C TInt Get(
+ TSSSettingsSetting aSetting,
+ TInt& aValue );
+
+ /**
+ * Changes value of a setting. Successfull function call generates notify
+ * call to each observer in this object even if the value is the same.
+ * From other objects of this class the observers will get only change
+ * notifications.
+ *
+ * @param aSetting setting.
+ * @param aValue new value for setting.
+ * @return error code. KErrNone in case of non-error.
+ * KErrArgument: parameter not valid
+ * KErrNotSupported: In als, if ME doesn't support
+ * other, from Shared data or from ETel
+ */
+ IMPORT_C TInt Set(
+ TSSSettingsSetting aSetting,
+ TInt aValue );
+
+ // SIM CHANGE EVENT
+
+ /**
+ * It is called when SIM changes.
+ *
+ * @return error code.
+ */
+ IMPORT_C TInt HandleSIMChanged();
+
+ /**
+ * Get previous CUG value
+ * @param aPreviousValue Old value is saved here. 0 if not set
+ * @return Error code
+ */
+ IMPORT_C TInt PreviousCugValue( TInt& aPreviousValue );
+
+ /**
+ * Reset previous CUG value
+ * @return Error code
+ */
+ IMPORT_C TInt ResetPreviousCugValue();
+
+ /**
+ * Handle refresh
+ * @return Error code
+ */
+ IMPORT_C TInt HandleRefresh();
+
+ /**
+ * Check whether or not the given CUG index is valid.
+ * @param aValue CUG index
+ * @return Boolean, is it valid CUG index or not
+ */
+ IMPORT_C TBool IsValueValidCugIndex( const TInt& aValue ) const;
+
+ private:
+
+ /**
+ * Checks if Alternate Line is to be supported.
+ * @param aPpAlsValue parameter to be checked.
+ * @param aSimAlsValue parameter to be checked.
+ * @param aAlsCspSupport parameter to be checked.
+ * @param aAlsCspError parameter to be checked.
+ * @return error code. KErrNone in case of ALS supported.
+ * KErrNotSupported in case if ME doesn't support
+ */
+ TInt IsALSSupported( TInt aPpAlsValue, TInt aSimAlsValue,
+ TBool aAlsCspSupport, TInt aAlsCspError ) const;
+
+ // Gets ALS setting value.
+ TInt GetALSSettingValue( TInt& aValue, const TInt aSimState );
+
+ // Prohibit copy constructor if not deriving from CBase.
+ RSSSettings( const RSSSettings& );
+ // Prohibit assigment operator if not deriving from CBase.
+ RSSSettings& operator= ( const RSSSettings& );
+
+ // Opens connection. Leaves on error cases
+ void OpenL( RTelServer* aTelServer );
+
+ // Closes all connections and deletes own data
+ void DeleteSettingsData();
+
+ // Finds if observer is already added
+ TBool ExistsObserver( TSSSettingsSetting aSetting,
+ MSSSettingsObserver& aObserver );
+
+ // Informs observers about the value change
+ void InformChange( TSSSettingsSetting aSetting , TInt aNewValue );
+
+ // Finds next observer, NULL if there isn't any. Used in deleting data.
+ MSSSettingsObserver* FindOneObserver() const;
+
+ // Async call back for informing observer about own changes.
+ static TInt InformCallBack( TAny* aPtr );
+
+ // CUG value is divided into two parts - needs special handling...
+ TInt GetCug( TInt& aValue ) const;
+ TInt GetDefaultCugL( TInt& aValue ) const;
+ TInt SetCug( const TInt aValue, const TInt aCugDefault ) const;
+
+ private: // Data
+
+ //Private Array type for RSSSettings.
+ typedef RPointerArray<MSSSettingsObserver> RSSSettingsObserverArray;
+
+ /**
+ * All data members are included in one structure.
+ * This it can be changed accoring to needs, but the
+ * BC stays the same.
+ */
+ struct TSSSettingsData
+ {
+ RTelServer* iTelServer; // ETel client
+ TBool iOwnTelServer; // ETrue if own
+ RMobilePhone iMobilePhone; // Mobile Phone
+ RArray<RSSSettingsObserverArray> iObservers;// Array for obs. arrays
+ CAsyncCallBack* iCallBack; // Async call back
+ TInt iCallBackSetting; // Setting that is changed
+ TInt iCallBackValue; // New value.
+ CSSSettingsNotifier* iNotifier; // Change notifier
+ RMmCustomAPI* iCustomPhone; // Custom Phone
+ TInt iCUGDefault; // CUG default
+ CRepository* iRepository; // Central repository.
+ };
+
+ TSSSettingsData* iData; // The data
+
+ protected:
+ // Friend class uses all members in iData. This procedure saves
+ // a lot of function from the API which are not meant for
+ // external use.
+ friend class CSSSettingsNotifier;
+ };
+
+// Panic enums
+enum TSSSettingsPanic
+ {
+ SSSettingsPanicOpenNotDone = 6000, // Some function is called before Open()
+ SSSettingsPanicInvalidRequest, // Given Setting is out of range.
+ SSSettingsPanicConflictInAls // Can't determine ALS state.
+ };
+
+GLREF_C void Panic( TSSSettingsPanic aPanic );
+
+#endif // RSSSETTINGS_H
+
+// End of File