diff -r 6b1d113cdff3 -r 6638e7f4bd8f telephonyutils/telephonywatchers/inc/watcherbase.h --- a/telephonyutils/telephonywatchers/inc/watcherbase.h Mon May 03 13:37:20 2010 +0300 +++ b/telephonyutils/telephonywatchers/inc/watcherbase.h Thu May 06 15:10:38 2010 +0100 @@ -1,242 +1,242 @@ -// Copyright (c) 2000-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: -// - -#ifndef __WATCHERBASE_H__ -#define __WATCHERBASE_H__ - -// System includes -#include -#include -#include -#include - -// User includes -#include "phoneonoff.h" -#include "ModemChangeObserver.h" - -// Test code hooks (when this file is embedded inside an EXE) -#include "WatcherTestHooks.h" - -/** -Constants -@internalComponent -*/ -const TInt KErrorRetryCount = 3; -const TInt KErrorRetryPausePeriod = 60; // Seconds -const TInt KWatcherBaseModemNotDetected = -2017; - -const TUint KPhonePropertyKey = 0; //-- Phone properties key - -#ifdef WATCHER_TESTING - -//-- These UIds used for debugging purposes only by T_WATCHERS test. - -//-- Changing property with this Uid (to any value) informs that CTelPhoneWatcher has re-read modem table from Commdb in -//-- CTelPhoneWatcher::DoRetrieveTSYNameL(). -const TUid KUidTestProp_ModemTableRefreshed = {0x11111111}; - -//-- Property with this Uid is changed in CTelPhoneWatcher::HandleModemChangedL() -//-- when the Commdb modem record has been changed -const TUid KUidTestProp_ModemRecordChanged = {0xDEADBEEF}; - -//-- Property with this Uid is used in CIndicatorWatcher::HandleIndicatorUpdateL() -//-- to simulate call state change by t_watchers test -const TUid KUidTestProp_CallStateChange = {0x12341234}; - -//-- Property with this Uid is used to disable and reset phone watchers -const TUid KUidTestProp_WatchersDisable = {0xFABBBABE}; - -#endif - -// -// ------> CWatcherBase (header) -// -class CWatcherBase : public CActive -/** -@internalComponent -*/ - { -// -public: // DESTRUCT -// - IMPORT_C ~CWatcherBase(); - -// -protected: // CONSTRUCT -// - IMPORT_C CWatcherBase(TInt aPriority = CActive::EPriorityStandard); - IMPORT_C virtual void ConstructL(); - -// -#ifdef WATCHER_TESTING -public: // NEW FUNCTIONS -#else -protected: // NEW FUNCTIONS -#endif -// - IMPORT_C void SuspendFor(TInt aTimeInSeconds); - IMPORT_C void SetDisabled(const TDesC& aLogEntry, TInt aError); - IMPORT_C void RequestNextState(); - IMPORT_C void WaitForPhoneToPowerUpL(); - // - virtual void HandleStateEventL(TInt aCompletionCode) = 0; - virtual void HandleConnectionToChangeNotifierEstablishedL() { } - virtual void HandleCancel() = 0; - virtual void Reset() { } - -// -protected: // INLINE MUTATORS -// - - enum TWatcherPanic - { - EGeneral, - EUnexpectedState, - EUnexpectedActiveState - }; - void WatcherBasePanic(TWatcherPanic aPanicNumber); - - inline TInt ErrorCountIncrement() { return ++iErrorCount; } - inline void ErrorCountReset() { iErrorCount = 0; } - -// -private: // FROM CActive -// - IMPORT_C void RunL(); - IMPORT_C void DoCancel(); - IMPORT_C TInt RunError(TInt aError); - -// -private: // INTERNAL STATE -// - enum TBaseState - { - EBaseStateConnectingToPropertyNotifier, - EBaseStatePassive, - EBaseStateSuspending, - EBaseStateDisabled, - EBaseStateWaitingForPhoneToPowerUp, - // - EBaseStateLast - }; - inline TBaseState& State() { return iBaseState; } - -// -private: // STATEMACHINE -// - - // Error count - TInt iErrorCount; - - // Our current state - TBaseState iBaseState; - - // Retry timer - RTimer iTimer; - - RProperty iPhonePowerProperty; - }; - - - - - -// -// ------> CPhoneWatcher (header) -// -class CPhoneWatcher : public CWatcherBase, public MPhoneOnOffObserver, public MModemChangeObserver -/** -@internalComponent -*/ - { -// -public: // DESTRUCT -// - IMPORT_C ~CPhoneWatcher(); - -// -protected: // CONSTRUCT -// - IMPORT_C CPhoneWatcher(TInt aPriority = CActive::EPriorityStandard); - IMPORT_C void ConstructL(); - -// -protected: // NEW -// - virtual void HandlePhoneStateEventL(TInt aCompletionCode) = 0; - virtual void ReleasePhoneResources() { } - -// -protected: // INLINE MUTATORS -// - inline RMobilePhone& Phone() { return iPhone; } - inline RTelServer& ETel() { return iETelServer; } - -// -protected: // FROM CWatcherBase -// - IMPORT_C void HandleStateEventL(TInt aCompletionCode); - IMPORT_C void Reset(); - -// -protected: // FROM MPhoneOnOffObserver -// - IMPORT_C void PhoneIsOff(); - -// -private: // FROM MModemChangeObserver -// - IMPORT_C void HandleModemChangedL(); - -// -private: // STANDARD SETUP STATE-MACHINE STEPS -// - TInt RetrieveTSYName(); - TInt ConnectToETelServer(); - TInt LoadPhoneModule(); - TInt ConnectToPhone(); - -// -private: // INTERNAL -// - enum TPhoneState - { - EPhoneStateRetrievingTsyName = 0, - EPhoneStateConnectingToETel, - EPhoneStateLoadingPhoneModule, - EPhoneStateConnectingToPhone, - EPhoneStatePassive - }; - inline TPhoneState& PhoneState() { return iPhoneState; } - void DoRetrieveTSYNameL(); - -// -private: // STATE MACHINE MEMBER DATA -// - TName iTSYName; - TPhoneState iPhoneState; - // - RMobilePhone iPhone; - RTelServer iETelServer; - - // Waits to be informed when the phone is turned on or off. - CPhoneOnOff* iPhoneWait; - - // Waits to be informed when the CommsDb modem changes. - CModemChangeObserver* iModemChangeObserver; - }; - - -#endif +// Copyright (c) 2000-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: +// + +#ifndef __WATCHERBASE_H__ +#define __WATCHERBASE_H__ + +// System includes +#include +#include +#include +#include + +// User includes +#include "phoneonoff.h" +#include "ModemChangeObserver.h" + +// Test code hooks (when this file is embedded inside an EXE) +#include "WatcherTestHooks.h" + +/** +Constants +@internalComponent +*/ +const TInt KErrorRetryCount = 3; +const TInt KErrorRetryPausePeriod = 60; // Seconds +const TInt KWatcherBaseModemNotDetected = -2017; + +const TUint KPhonePropertyKey = 0; //-- Phone properties key + +#ifdef WATCHER_TESTING + +//-- These UIds used for debugging purposes only by T_WATCHERS test. + +//-- Changing property with this Uid (to any value) informs that CTelPhoneWatcher has re-read modem table from Commdb in +//-- CTelPhoneWatcher::DoRetrieveTSYNameL(). +const TUid KUidTestProp_ModemTableRefreshed = {0x11111111}; + +//-- Property with this Uid is changed in CTelPhoneWatcher::HandleModemChangedL() +//-- when the Commdb modem record has been changed +const TUid KUidTestProp_ModemRecordChanged = {0xDEADBEEF}; + +//-- Property with this Uid is used in CIndicatorWatcher::HandleIndicatorUpdateL() +//-- to simulate call state change by t_watchers test +const TUid KUidTestProp_CallStateChange = {0x12341234}; + +//-- Property with this Uid is used to disable and reset phone watchers +const TUid KUidTestProp_WatchersDisable = {0xFABBBABE}; + +#endif + +// +// ------> CWatcherBase (header) +// +class CWatcherBase : public CActive +/** +@internalComponent +*/ + { +// +public: // DESTRUCT +// + IMPORT_C ~CWatcherBase(); + +// +protected: // CONSTRUCT +// + IMPORT_C CWatcherBase(TInt aPriority = CActive::EPriorityStandard); + IMPORT_C virtual void ConstructL(); + +// +#ifdef WATCHER_TESTING +public: // NEW FUNCTIONS +#else +protected: // NEW FUNCTIONS +#endif +// + IMPORT_C void SuspendFor(TInt aTimeInSeconds); + IMPORT_C void SetDisabled(const TDesC& aLogEntry, TInt aError); + IMPORT_C void RequestNextState(); + IMPORT_C void WaitForPhoneToPowerUpL(); + // + virtual void HandleStateEventL(TInt aCompletionCode) = 0; + virtual void HandleConnectionToChangeNotifierEstablishedL() { } + virtual void HandleCancel() = 0; + virtual void Reset() { } + +// +protected: // INLINE MUTATORS +// + + enum TWatcherPanic + { + EGeneral, + EUnexpectedState, + EUnexpectedActiveState + }; + void WatcherBasePanic(TWatcherPanic aPanicNumber); + + inline TInt ErrorCountIncrement() { return ++iErrorCount; } + inline void ErrorCountReset() { iErrorCount = 0; } + +// +private: // FROM CActive +// + IMPORT_C void RunL(); + IMPORT_C void DoCancel(); + IMPORT_C TInt RunError(TInt aError); + +// +private: // INTERNAL STATE +// + enum TBaseState + { + EBaseStateConnectingToPropertyNotifier, + EBaseStatePassive, + EBaseStateSuspending, + EBaseStateDisabled, + EBaseStateWaitingForPhoneToPowerUp, + // + EBaseStateLast + }; + inline TBaseState& State() { return iBaseState; } + +// +private: // STATEMACHINE +// + + // Error count + TInt iErrorCount; + + // Our current state + TBaseState iBaseState; + + // Retry timer + RTimer iTimer; + + RProperty iPhonePowerProperty; + }; + + + + + +// +// ------> CPhoneWatcher (header) +// +class CPhoneWatcher : public CWatcherBase, public MPhoneOnOffObserver, public MModemChangeObserver +/** +@internalComponent +*/ + { +// +public: // DESTRUCT +// + IMPORT_C ~CPhoneWatcher(); + +// +protected: // CONSTRUCT +// + IMPORT_C CPhoneWatcher(TInt aPriority = CActive::EPriorityStandard); + IMPORT_C void ConstructL(); + +// +protected: // NEW +// + virtual void HandlePhoneStateEventL(TInt aCompletionCode) = 0; + virtual void ReleasePhoneResources() { } + +// +protected: // INLINE MUTATORS +// + inline RMobilePhone& Phone() { return iPhone; } + inline RTelServer& ETel() { return iETelServer; } + +// +protected: // FROM CWatcherBase +// + IMPORT_C void HandleStateEventL(TInt aCompletionCode); + IMPORT_C void Reset(); + +// +protected: // FROM MPhoneOnOffObserver +// + IMPORT_C void PhoneIsOff(); + +// +private: // FROM MModemChangeObserver +// + IMPORT_C void HandleModemChangedL(); + +// +private: // STANDARD SETUP STATE-MACHINE STEPS +// + TInt RetrieveTSYName(); + TInt ConnectToETelServer(); + TInt LoadPhoneModule(); + TInt ConnectToPhone(); + +// +private: // INTERNAL +// + enum TPhoneState + { + EPhoneStateRetrievingTsyName = 0, + EPhoneStateConnectingToETel, + EPhoneStateLoadingPhoneModule, + EPhoneStateConnectingToPhone, + EPhoneStatePassive + }; + inline TPhoneState& PhoneState() { return iPhoneState; } + void DoRetrieveTSYNameL(); + +// +private: // STATE MACHINE MEMBER DATA +// + TName iTSYName; + TPhoneState iPhoneState; + // + RMobilePhone iPhone; + RTelServer iETelServer; + + // Waits to be informed when the phone is turned on or off. + CPhoneOnOff* iPhoneWait; + + // Waits to be informed when the CommsDb modem changes. + CModemChangeObserver* iModemChangeObserver; + }; + + +#endif