diff -r 4096754ee773 -r 52a167391590 localconnectivityservice/dun/utils/inc/DunNetDataport.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localconnectivityservice/dun/utils/inc/DunNetDataport.h Wed Sep 01 12:20:40 2010 +0100 @@ -0,0 +1,286 @@ +/* +* Copyright (c) 2006-2007 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: Dataport specific network resource accessor implementation +* +*/ + + +#ifndef C_CDUNNETDATAPORT_H +#define C_CDUNNETDATAPORT_H + +#include +#ifdef PRJ_USE_NETWORK_STUBS +#include +#include +#else +#include +#endif + +/** + * Class to store data needed for each separate "call" + * One TDunDataportEntity entity contains objects needed for one network data + * connection + * + * @lib dunutils.lib + * @since S60 v3.2 + */ +NONSHARABLE_CLASS( TDunDataportEntity ) + { + +public: + + /** + * Dataport for one call + */ + RComm iDataport; + + /** + * Call for this entity + */ + RMobileCall iMobileCall; + + /** + * Specifies whether this entity is in use or not + */ + TBool iEntityInUse; + + }; + +/** + * Class for common network resource usage + * This class provides network side independent functionality + * + * @lib dunutils.lib + * @since S60 v3.2 + */ +NONSHARABLE_CLASS( MDunNetwork ) + { + +public: + + /** + * Abstract; Initializes network + * Must be called before any other operation + * + * @since S60 3.2 + * @return None + */ + virtual void InitializeL() = 0; + + }; + +/** + * Class for Dataport specific network resource usage + * This class is provides Dataport (RComm) dependent functionality + * + * @lib dunutils.lib + * @since S60 v3.2 + */ +NONSHARABLE_CLASS( MDunNetDataport ) : public MDunNetwork + { + +public: + + /** + * Abstract; Called when channel was created by transporter + * Initializes network for channel creation + * + * @since S60 3.2 + * @param aComm Network ID returned when allocation successful + * @return Symbian error code on error, KErrNone otherwise + */ + virtual TInt AllocateChannel( RComm*& aComm ) = 0; + + /** + * Abstract; Called when channel was deleted/closed by transporter + * Uninitializes network for channel deletion/close + * + * @since S60 3.2 + * @param aComm Network ID of owning entity that will be freed + * @return Symbian error code on error, KErrNone otherwise + */ + virtual TInt FreeChannel( RComm* aComm ) = 0; + + /** + * Gets index by network ID for Dataport + * + * @since S60 3.2 + * @param aComm Index to get by this network ID + * @return Symbian error code on error, index otherwise + */ + virtual TInt GetIndexById( RComm* aComm ) = 0; + + }; + +/** + * Class for accessing network functionality through Dataport + * This class is needed by CDunTransporter to create abstract "channels" + * for data communication. + * + * @lib dunutils.lib + * @since S60 v3.2 + */ +NONSHARABLE_CLASS( CDunNetDataport ) : public CBase, public MDunNetDataport + { + +public: + + /** + * Two-phased constructor. + * @param aNumOfMaxChannels Maximum number of supported Dataport ports + * for DUN + * @return Instance of self + */ + static CDunNetDataport* NewL( TInt aNumOfMaxChannels ); + + /** + * Destructor. + */ + ~CDunNetDataport(); + +// from base class MDunNetwork (MDunNetDataport -> MDunNetwork) + + /** + * From MDunNetwork (MDunNetDataport -> MDunNetwork). + * Initializes network for Dataport + * Must be called before any other operation + * + * @since S60 3.2 + * @return None + */ + void InitializeL(); + +// from base class MDunNetDataport + + /** + * From MDunNetDataport. + * Called when channel was created by transporter for Dataport + * Initializes network for channel creation + * + * @since S60 3.2 + * @param aComm Network ID returned when allocation successful + * @return Symbian error code on error, KErrNone otherwise + */ + TInt AllocateChannel( RComm*& aComm ); + + /** + * From MDunNetDataport. + * Called when channel was deleted/closed by transporter for Dataport + * Uninitializes network for channel deletion/close + * + * @since S60 3.2 + * @param aComm Network ID of owning entity that will be freed + * @return Symbian error code on error, KErrNone otherwise + */ + TInt FreeChannel( RComm* aComm ); + + /** + * From MDunNetDataport. + * Gets index by network ID for Dataport + * + * @since S60 3.2 + * @param aComm Index to get by this network ID + * @return Symbian error code on error, index otherwise + */ + TInt GetIndexById( RComm* aComm ); + +private: + + CDunNetDataport( TInt aNumOfMaxChannels ); + + void ConstructL(); + + /** + * Allocates phone objects for use + * + * @since S60 3.2 + * @return None + */ + void AllocatePhoneObjectsL(); + + /** + * Initializes first free entity + * + * @since S60 3.2 + * @return Symbian error code on error, found index otherwise + */ + TInt InitializeFirstFreeEntity(); + + /** + * Remove network entity by index + * + * @since S60 3.2 + * @param aIndex Index which entity to remove + * @return Symbian error code on error, KErrNone otherwise + */ + TInt RemoveEntity( TInt aIndex ); + + /** + * Deletes own internal data + * + * @since S60 3.2 + * @return None + */ + void DeleteNetwork(); + + /** + * Deletes one network entity at index aIndex for Dataport + * + * @since S60 3.2 + * @param aIndex Index where to delete an entity + * @param aCheckFree Check free status before deletion + * @return Symbian error code on error, KErrNone otherwise + */ + TInt DeleteNetworkEntity( TInt aIndex, TBool aCheckFree ); + +private: // data + + /** + * Maximum number of supported Dataport ports for DUN + */ + TInt iNumOfMaxChannels; + + /** + * Array of abstractions of each "call". + * One TDunDataportEntity entity contains objects needed for one network + * data connection + */ + RArray iEntities; + + /** + * Communication server needed for Dataport port opening, port information + * fetching, and Dataport communication module loading and unloading + */ + RCommServ iCommServer; + + /** + * Telephony server needed for opening iMobilePhone mobile phone session + * and for telephony module loading and unloading + */ + RTelServer iTelServer; + + /** + * Mobile phone server needed for opening iMobileLine mobile line session + */ + RMobilePhone iMobilePhone; + + /** + * Mobile line server needed for opening new calls to Dataport. + * Each new call is also new network data connection + */ + RMobileLine iMobileLine; + + }; + +#endif // C_CDUNNETDATAPORT_H