williamr@2: // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: @file williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: williamr@2: #ifndef CS_MOBILITY_APIEXT_H williamr@2: #define CS_MOBILITY_APIEXT_H williamr@2: williamr@2: #include williamr@2: #include //For RCommsApiExtension williamr@2: #include //For CCommsApiExtensionMsg manipulation, used only with RCommsMobilityApiExt williamr@2: williamr@2: class RCommsMobilityApiExt : public RCommsApiExtension williamr@2: /** williamr@2: Comms Mobility API extension for client not running an Active Scheduler. williamr@2: williamr@2: This class can actually be used by any client, one running an Active Scheduler williamr@2: and one that is not. However, if the Active Scheduler is present, williamr@2: it is recommended to use CActiveCommsMobilityApiExt which is much simpler. williamr@2: williamr@2: @see CActiveCommsMobilityApiExt williamr@2: williamr@2: @internalTechnology williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C explicit RCommsMobilityApiExt(); williamr@2: IMPORT_C void Close(); williamr@2: williamr@2: IMPORT_C void RegisterForMobilityNotification(TDes8& aResponseEventBuf, TRequestStatus& aStatus); williamr@2: IMPORT_C void CancelMobilityNotification(); williamr@2: williamr@2: IMPORT_C void MigrateToPreferredCarrier(); williamr@2: IMPORT_C void IgnorePreferredCarrier(); williamr@2: IMPORT_C void NewCarrierAccepted(); williamr@2: IMPORT_C void NewCarrierRejected(); williamr@2: }; williamr@2: williamr@2: class MMobilityProtocolResp williamr@2: /** williamr@2: Comms Mobility API extension protocol. williamr@2: Used with CActiveCommsMobilityApiExt to reqister for mobility response messages. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: virtual void PreferredCarrierAvailable(TAccessPointInfo aOldAP, TAccessPointInfo aNewAP, TBool aIsUpgrade, TBool aIsSeamless) = 0; williamr@2: virtual void NewCarrierActive(TAccessPointInfo aNewAP, TBool aIsSeamless) = 0; williamr@2: virtual void Error(TInt aError) = 0; williamr@2: }; williamr@2: williamr@2: class CActiveCommsMobilityApiExt : public CActive williamr@2: /** williamr@2: Comms Mobility API extension for client running an Active Scheduler.. Whenever an Active williamr@2: Scheduler is present, this API is recommended over RCommsMobilityApiExt because of its simplicity. williamr@2: williamr@2: With few important exceptions, CActiveCommsMobilityApiExt exports very similar APIs to RCommsMobilityApiExt williamr@2: williamr@2: @see RCommsMobilityApiExt williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CActiveCommsMobilityApiExt* NewL(RCommsSubSession& aExtensionProvider,MMobilityProtocolResp& aProtocol); williamr@2: IMPORT_C ~CActiveCommsMobilityApiExt(); williamr@2: williamr@2: IMPORT_C void MigrateToPreferredCarrier(); williamr@2: IMPORT_C void IgnorePreferredCarrier(); williamr@2: IMPORT_C void NewCarrierAccepted(); williamr@2: IMPORT_C void NewCarrierRejected(); williamr@2: williamr@2: protected: williamr@2: void ConstructL(RCommsSubSession& aExtensionProvider); williamr@2: explicit CActiveCommsMobilityApiExt(MMobilityProtocolResp& aProtocol); williamr@2: williamr@2: private: williamr@2: void DoCancel(); williamr@2: void RunL(); williamr@2: TInt RunError(TInt aError); williamr@2: williamr@2: private: williamr@2: MMobilityProtocolResp& iProtocol; williamr@2: RCommsMobilityApiExt iExtApi; williamr@2: RBuf8 iResponseBuf; williamr@2: }; williamr@2: williamr@2: #endif // CS_MOBILITY_APIEXT_H