diff -r 453dfc402455 -r 0aa8cc770c8a localconnectivityservice/dun/utils/inc/DunPlugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localconnectivityservice/dun/utils/inc/DunPlugin.h Tue Aug 31 16:03:15 2010 +0300 @@ -0,0 +1,243 @@ +/* +* Copyright (c) 2006-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: Common definitions and classes needed by DUN plugins +* +*/ + + +#ifndef DUN_PLUGIN_H +#define DUN_PLUGIN_H + +#include + +typedef TAny* TConnId; // supported now: RSocket*, RComm* + +enum TDunPluginState + { + EDunStateNone = KErrNotFound, // -1 + EDunStateZombie = 0, // 0 + EDunStateTryUninitialize, // 1 + EDunStateUninitialized, // 2 + EDunStateTryLoad, // 3 + EDunStateLoaded, // 4 + EDunStateTryListen, // 5 + EDunStateListening, // 6 + EDunStateTryChannel, // 7 + EDunStateChanneled // 8 + }; + +const TInt KDunLocalMediaPluginInterfaceUidValue = 0x101F6E2D; +const TUid KDunLocalMediaPluginInterfaceUid = { KDunLocalMediaPluginInterfaceUidValue }; + +const TInt KDunBtPluginUidValue = 0x101F6E2B; +const TUid KDunBtPluginUid = { KDunBtPluginUidValue }; +const TInt KDunIrPluginUidValue = 0x101FBAEB; +const TUid KDunIrPluginUid = { KDunIrPluginUidValue }; +const TInt KDunUsbPluginUidValue = 0x101F6E2F; +const TUid KDunUsbPluginUid = { KDunUsbPluginUidValue }; + +class CDunTransporter; + +/** + * Notification interface class to report request for plugin enqueue + * This reqeust is made when there are not enough network resources for a + * certain plugin's needs + * + * @lib dunutils.lib + * @since S60 v3.2 + */ +NONSHARABLE_CLASS( MDunPluginManager ) + { + +public: + + /** + * Gets called when old plugin should be enqueued + * + * @since S60 3.2 + * @param aPluginUid UID of the plugin that should be enqueued + * @return Symbian error code on error, KErrNone otherwise + */ + virtual TInt NotifyPluginEnqueueRequest( TUid aPluginUid ) = 0; + + /** + * Gets called when new plugin should be dequeued + * + * @since S60 3.2 + * @param aPluginUid UID of the local media plugin to dequeue + * @return Symbian error code on error, KErrNone otherwise + */ + virtual TInt NotifyPluginDequeueRequest( TUid aPluginUid ) = 0; + + /** + * Get callen when plugin should be closed + * + * @since S60 3.2 + * @param aPluginUid UID of the local media plugin to close + * @param aSelfClose ETrue if plugin closes itself, EFalse otherwise + * @return Symbian error code on error, KErrNone otherwise + */ + virtual TInt NotifyPluginCloseRequest( TUid aPluginUid, + TBool aSelfClose ) = 0; + + }; + +/** + * Interface class for accessing CDunServer's functionality + * Shares basic interface for all plugins to use when plugin needs to access + * server's functionality + * + * @lib dunutils.lib + * @since S60 v3.2 + */ +NONSHARABLE_CLASS( MDunServerCallback ) : public MDunPluginManager + { + +public: + + /** + * Callback from plugins to server to get a plugin's state + * + * @since S60 3.2 + * @param aPluginUid Plugin's UID which state to get + * @return Plugin's state + */ + virtual TDunPluginState GetPluginStateByUid( TUid aPluginUid ) = 0; + + /** + * Callback from plugins to server to set a new state + * New state must be one more than the old state + * + * @since S60 3.2 + * @param aPluginState New state to set for a plugin + * @param aPluginUid Plugin's UID for which to change state + * @return Symbian error code on error, KErrNone otherwise + */ + virtual TInt NotifyPluginStateChangeUp( TDunPluginState aPluginState, + TUid aPluginUid ) = 0; + + /** + * Callback from plugins to server to set a new state + * New state must be one less than the old state + * + * @since S60 3.2 + * @param aPluginState New state to set for a plugin + * @param aPluginUid Plugin's UID for which to change state + * @return Symbian error code on error, KErrNone otherwise + */ + virtual TInt NotifyPluginStateChangeDown( TDunPluginState aPluginState, + TUid aPluginUid ) = 0; + + /** + * Callback from plugins to server to restart a plugin + * Restarting must be done by uninitialization->listening switch since + * context is in plugin + * + * @since S60 3.2 + * @param aPluginUid Plugin's UID to restart + * @return Symbian error code on error, KErrNone otherwise + */ + virtual TInt NotifyPluginRestart( TUid aPluginUid ) = 0; + + /** + * Callback from plugins to server to reopen a plugin from queue + * + * @since S60 3.2 + * @return Symbian error code on error, KErrNone otherwise + */ + virtual TInt NotifyPluginReopenRequest() = 0; + + }; + +/** + * Interface class for accessing plugins' functionality + * Shares basic interface for server to use when server needs to access + * plugin's functionality + * + * @lib dunutils.lib + * @since S60 v3.2 + */ +NONSHARABLE_CLASS( MDunLocalMediaPlugin ) + { + +public: + + /** + * Destructor. Derived class must have virtual destructor also as a plugin + * module is always destructed via M-class. + */ + inline virtual ~MDunLocalMediaPlugin() {}; + + /** + * Symbian 2nd phase constructor. + */ + virtual void ConstructL( MDunServerCallback* aServer, + CDunTransporter* aTransporter ) = 0; + + /** + * Callback from server to plugins to notify when server changes a + * plugin's state + * + * @since S60 3.2 + * @param aPluginState New changed state + * @return Symbian error code on error, KErrNone otherwise + */ + virtual TInt NotifyServerStateChange( TDunPluginState aPluginState ) = 0; + + /** + * Callback from server to plugins to ask for current active connection + * (For testing purposes only) + * + * @since S60 5.0 + * @return Active connection, NULL otherwise + */ + virtual TConnId ActiveConnection() = 0; + + }; + +/** + * Interface class for accessing plugin's main class when its listener + * reports that channel can be created. Can be used also to notify plugin's + * main class when channel can be deleted. + * + * @lib dunutils.lib + * @since S60 v3.2 + */ +NONSHARABLE_CLASS( MDunListenCallback ) + { + +public: + + /** + * Callback from plugin's listener to plugin to notify about need to + * allocate new channel + * + * @since S60 3.2 + * @param aNoFreeChan ETrue if no free channels, EFalse otherwise + * @return Symbian error code on error, KErrNone otherwise + */ + virtual TInt NotifyChannelAllocate( TBool& aNoFreeChans ) = 0; + + /** + * Callback from plugin's listener to plugin to notify about need to free + * an existing channel + * + * @since S60 3.2 + * @return Symbian error code on error, KErrNone otherwise + */ + virtual TInt NotifyChannelFree() = 0; + + }; + +#endif // DUN_PLUGIN_H