diff -r f742655b05bf -r d38647835c2e callcontinuity/vcchotrigger/inc/vcchotrigger.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/callcontinuity/vcchotrigger/inc/vcchotrigger.h Wed Sep 01 12:29:57 2010 +0100 @@ -0,0 +1,374 @@ +/* +* Copyright (c) 2007-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". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Definition of the class which handles handover triggering. +* +*/ + + + +#ifndef C_VCCHOTRIGGER_H +#define C_VCCHOTRIGGER_H + + +#include +#include +#include + +#include "vccsignallevelobserver.h" +#include "vcccchobserver.h" +#include "vcchopolicy.h" +#include "vccunittesting.h" + +class CVccUiPsProperty; +class CVccWlanSignalLevelHandler; +class CVccGsmSignalLevelHandler; +class CVccHoPolicyReader; +class CVccCchMonitor; +class CVccEngPsProperty; +class CVccPerformer; + +/** + * This class handles the triggering of the handover from + * one network to another. + * + * + * @code + * CMyClass::ConstructL() + * { + * iHoTrigger = CVccHoTrigger::NewL(); + * } + * + * CMyClass::FunctionL() + * { + * iHoTrigger->Start(); + * } + * + * CMyClass::DomainChanged() + * { + * // Use swapped the domain of an active call + * iHoTrigger->SetCurrentDomain( iActiveCallDomain ); + * } + * + * CMyClass::CallPutToHold() + * { + * // Stop all network monitoring. + * iHoTrigger->Stop(); + * } + * + * CMyClass::CallActivated() + * { + * // Start all network monitors + * iHoTrigger->Start(); + * } + * + * CMyClass::~CMyClass() + * { + * delete iHoTrigger; + * } + * + * @endcode + * + * @lib vcchotrigger.lib + * @since S60 v3.2 + */ +class CVccHoTrigger : public CBase, + public MVccSignalLevelObserver, + public MVccCchObserver + { + +public: + + + /** Domain types */ + enum TCallDomainType + { + /** PS domain */ + ECallDomainTypePS, + /** CS domain */ + ECallDomainTypeCS + }; + + + /** + * Two-phased constructor. + */ + IMPORT_C static CVccHoTrigger* NewL(); + + /** + * Destructor. + */ + virtual ~CVccHoTrigger(); + + + /** + * Stop all network monitors + * + * @since S60 v3.2 + */ + IMPORT_C void Stop(); + + /** + * Stop all network monitors + * + * @since S60 v3.2 + */ + IMPORT_C void Stop( CVccPerformer& aStopper ); + + /** + * Start all network monitors + * + * @since S60 v3.2 + */ + IMPORT_C void Start( CVccPerformer& aWhoStartedMe, TBool aCsOriginated ); + + /** + * Set the current domain of the active call + * + * @since S60 v3.2 + * @param aDomainType is the domain of the current (active) call. + */ + IMPORT_C void SetCurrentDomainType( TCallDomainType aDomainType ); + + /** + * Set the preferred domain of the active call + * + * @since S60 v3.2 + * @param aDomainType is the callīs preferred domain type. + */ + IMPORT_C void SetPreferredDomainType( TVccHoPolicyPreferredDomain aDomainType ); + + + /** + * Set immediate domain transfer setting + * + * @since S60 v3.2 + * @param aDomainType is the callīs preferred domain type. + */ + IMPORT_C void SetImmediateDomainTransfer( TBool aImmediateDT ); + +// from base class MVccSignalLevelObserver + + /** + * @see MVccSignalLevelObserver::WlanSignalChanged() + */ + void WlanSignalChanged( TInt32 aSignalStrength, + TSignalStrengthClass aClass ); + + /** + * @see MVccSignalLevelObserver::GsmSignalChanged() + */ + void GsmSignalChanged( TInt32 aSignalStrength, + TSignalStrengthClass aClass ); + +// from base class MVccCchMonitorObserver + + /** + * @see MVccCchMonitorObserver::CchServiceStatusChanged + */ + void CchServiceStatusChanged( TServiceStatus aStatus ); + +public: + /** + * When manual handover is started no automatic handovers should + * be made. + * + * @since S60 3.2 + */ + IMPORT_C void ManualHoCallStarted(); + + /** + * After manual handover call has been released, automatic + * handovers can be made again. + * + * @since S60 3.2 + */ + IMPORT_C void ManualHoCallReleased(); + + /** + * During conference call HO is not allowed + * + * @since S60 3.2 + */ + IMPORT_C void HoNotAllowedL(); + + /** + * After conference call HO is allowed again + * + * @since S60 3.2 + */ + IMPORT_C void HoAllowed(); + + /** + * Reads the settings to get the info if ho is allowed when cs originated call + * @since s60 3.2 + */ + IMPORT_C void ReadHoAllowedWhenCsOriginatedSettingL(); + +private: + + /** + * C++ constructor + * + * @since S60 v3.2 + */ + CVccHoTrigger(); + + /** + * Symbian second-phase constructor + * + * @since S60 v3.2 + */ + void ConstructL(); + + /** + * Check if PS or CS are available (to do handover). + * + * @since S60 v3.2 + * @return ETrue if service is available, else return EFalse + */ + TBool ServicesAvailable(); + + /** + * Update (write) service status state to P&S. + * + * @since S60 v3.2 + */ + void UpdatePsKeysL(); + + /** + * Initiates the actual handover if its ok to start ho. + * + * @since S60 v3.2 + */ + void TriggerHo(); + + /** + * Initiate immediate ho. + * + * @since S60 v3.2 + * @return ETrue if immediate HO was initiated, EFalse otherwise + */ + TBool DoImmediateHo(); + +private: // data + + + /** + * VCC P&S key manager for UI side + * Own. + */ + CVccUiPsProperty* iProperty; + + /** + * PS property writer to write TVccHoStatus values + * Own. + */ + CVccEngPsProperty* iEngPsProperty; + + /** + * VCC Wlan signal level observer + * Own. + */ + CVccWlanSignalLevelHandler* iWlanSignalLevelHandler; + + /** + * VCC GSM signal level observer + * Own. + */ + CVccGsmSignalLevelHandler* iGsmSignalLevelHandler; + + /** + * Call domain type + */ + TCallDomainType iDomainType; + + + /** + * GSM signal class + */ + TSignalStrengthClass iGsmClass; + + /** + * Previous GSM signal class + */ + TSignalStrengthClass iPreviousGsmClass; + + /** + * WLAN signal class. + */ + TSignalStrengthClass iWlanClass; + + /** + * Previous WLAN signal class. + */ + TSignalStrengthClass iPreviousWlanClass; + + /** + * CenRep reader for VCC HO policy + * Own. + */ + CVccHoPolicyReader* iHoPolicyReader; + + /** VCC HO policy */ + TVccHoPolicy iPolicy; + + /** + * CCH monitor. + * Own + */ + CVccCchMonitor* iCchMonitor; + + /** + * CCH status (PS service availability) + */ + MVccCchObserver::TServiceStatus iCchServiceStatus; + + /** + * CS status (i.e. signal level) + */ + TInt iCsSignalLevel; + + /** + * Are we stopped or active (i.e. monitoring) + */ + TBool iStarted; + + /** + * Has manual ho been made + */ + TBool iManualHoDone; + + /** + * Ho allowed or not (conference, video, data, multimedia sharing) + */ + TBool iHoNotAllowed; + + /** + * Performer that started trigger + * Not own. + */ + CVccPerformer* iWhoStartedMe; + + /* + * Is ho allowed if the originating domain of the + * original call was CS + */ + TBool iHoAllowedIfCsOriginated; + + friend class T_CVccPerformer; + + VCC_UNITTEST( UT_CVccHoTrigger ) + }; + +#endif // C_VCCHOTRIGGER_H