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