diff -r 3dcb815346df -r 4096754ee773 localconnectivityservice/dun/plugins/inc/usb/DunUsbPlugin.h --- a/localconnectivityservice/dun/plugins/inc/usb/DunUsbPlugin.h Thu Aug 19 10:46:39 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,362 +0,0 @@ -/* -* 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: DUN USB plugin -* -*/ - - -#ifndef C_CDUNUSBPLUGIN_H -#define C_CDUNUSBPLUGIN_H - -#include -#include -#include "DunTransporter.h" -#include "DunUsbListen.h" -#include "DunUsbConfig.h" -#include "DunPlugin.h" - -/** - * DUN USB plugin's port entity - * This class is used to keep track of N number of USB ports and port - * numbers associated to them (for CDunUsbConfig's purposes). - * - * @lib dunusb.lib - * @since S60 v3.2 - */ -NONSHARABLE_CLASS( TUsbPortEntity ) - { - -public: - - /** - * Port number for USB local media side - */ - TInt iPortNum; - - /** - * Port for USB local media side - */ - RComm iUsbPort; - - }; - -/** - * DUN USB plugin's main class - * This class creates new transporter channel(s) when configured USB is - * detected by CDunUsbListen class and acts on transporter's state changes. - * Also acts on DUN server's requests. - * - * @lib dunusb.lib - * @since S60 v3.2 - */ -NONSHARABLE_CLASS( CDunUsbPlugin ) : public CBase, - public MDunLocalMediaPlugin, - public MDunListenCallback, - public MDunBufferCorrection, - public MDunConnMon, - public MDunUsbConfig - { - -public: - - CDunUsbPlugin(); - - /** - * Destructor. - */ - virtual ~CDunUsbPlugin(); - -private: - - /** - * State of this plugin - * - * @since S60 3.2 - * @return State of plugin - */ - TDunPluginState PluginState(); - - /** - * Constructs a listener object for this plugin - * - * @since S60 3.2 - * @return None - */ - void ConstructListenerL(); - - /** - * Initializes USB by loading LDD - * - * @since S60 3.2 - * @return None - */ - void InitUsbL(); - - /** - * Initializes all usable USB ports for DUN - * - * @since S60 3.2 - * @return Symbian error code on error, KErrNone otherwise - */ - TInt InitPorts(); - - /** - * Creates empty usable USB ports that can be used by DUN - * - * @since S60 3.2 - * @return Symbian error code on error, KErrNone otherwise - */ - TInt CreateAllPorts(); - - /** - * Initializes one USB port for DUN - * - * @since S60 3.2 - * @param aEntity Pointer to port entity - * @return Symbian error code on error, KErrNone otherwise - */ - TInt InitOnePort( TUsbPortEntity* aEntity ); - - /** - * Sets channel for one USB port - * - * @since S60 3.2 - * @param aEntity Pointer to port entity - * @return None - */ - void SetChannelL( TUsbPortEntity* aEntity ); - - /** - * Adds skipped error code to Transporter - * The skipped error is added to local media's read and write operations - * - * @since S60 3.2 - * @param aError Skipped error code to add - * @param aComm RComm object for which to add the error code - * @return None - */ - void AddSkippedErrorL( TInt aError, RComm* aComm ); - - /** - * Sets 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 - * @return Symbian error code on error, KErrNone otherwise - */ - TInt ReportStateChangeUp( TDunPluginState aPluginState ); - - /** - * Sets 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 - * @return Symbian error code on error, KErrNone otherwise - */ - TInt ReportStateChangeDown( TDunPluginState aPluginState ); - - /** - * Frees existing channels - * - * @since S60 3.2 - * @return Symbian error code on error, KErrNone otherwise - */ - TInt FreeChannels(); - - /** - * Uninitializes this plugin - * - * @since S60 3.2 - * @return Symbian error code on error, KErrNone otherwise - */ - TInt Uninitialize(); - - /** - * Gets port's index and entity by connection ID - * - * @since S60 3.2 - * @param aConnId Connection ID of the connection to find - * @param aEntity Returned port entity - * @return KErrNotFound if entity not found, found index otherwise - */ - TInt GetEntityByConnId( TConnId aConnId, TUsbPortEntity*& aEntity ); - - /** - * Gets port's entity by port number - * - * @since S60 3.2 - * @param aPortNum Port number of the connection to find - * @param aEntity Returned port entity - * @return KErrNotFound if entity not found, found index otherwise - */ - TInt GetEntityByPortNumber( TInt aPortNum, TUsbPortEntity*& aEntity ); - - /** - * Gets first free port's index and entity - * - * @since S60 3.2 - * @param aEntity Returned port entity - * @return KErrNotFound if entity not found, found index otherwise - */ - TInt GetFirstFreeEntity( TUsbPortEntity*& aEntity ); - -// from base class MDunLocalMediaPlugin - - void ConstructL( MDunServerCallback* aServer, - CDunTransporter* aTransporter ); - - /** - * From MDunLocalMediaPlugin. - * Gets called when server changes a plugin's state - * - * @since S60 3.2 - * @param aPluginState New changed state - * @return Symbian error code on error, KErrNone otherwise - */ - TInt NotifyServerStateChange( TDunPluginState aPluginState ); - - /** - * From MDunLocalMediaPlugin. - * Gets called when server needs to know the active connection - * (For testing purposes only) - * - * @since S60 5.0 - * @return Active connection, NULL otherwise - */ - TConnId ActiveConnection(); - -// from base class MDunListenCallback - - /** - * From MDunListenCallback. - * Gets called when new channel must be created - * - * @since S60 3.2 - * @param aNoFreeChans ETrue if no free channels, EFalse otherwise - * @return Symbian error code on error, KErrNone otherwise - */ - TInt NotifyChannelAllocate( TBool& aNoFreeChans ); - - /** - * From MDunListenCallback. - * Gets called when an existing channel must be freed - * - * @since S60 3.2 - * @return Symbian error code on error, KErrNone otherwise - */ - TInt NotifyChannelFree(); - -// from base class MDunConnMon - - /** - * From MDunConnMon. - * Gets called when line status changes or when any type of error is - * detected - * - * @since S60 3.2 - * @param aConnId Connection ID for callback - * @param aConnReason Reason for progress change - * @return None - */ - void NotifyProgressChangeL( TConnId aConnId, - TDunConnectionReason aConnReason ); - -// from base class MDunBufferCorrection - - /** - * Gets called when request to change local media's buffer size - * - * @since S60 3.2 - * @param aLength Suggested buffer length that will be used if no - * correction done - * @return New (corrected) buffer length - */ - TInt NotifyBufferCorrection( TInt aLength ); - -// from base class MDunUsbConfig - - /** - * Gets called when one or more ACM configurations are added - * - * @since S60 3.2 - * @param aIndex Index (also port number) of added ACM configuration - * @return Symbian error code on error, KErrNone otherwise - */ - TInt NotifyConfigAddition( TInt aIndex ); - - /** - * Gets called when one or more ACM configurations are removed - * - * @since S60 3.2 - * @param aIndex Index (also port number) of removed ACM configuration - * @return Symbian error code on error, KErrNone otherwise - */ - TInt NotifyConfigRemoval( TInt aIndex ); - -private: // data - - /** - * Callback to call when notification via MDunServerCallback to be made - * Not own. - */ - MDunServerCallback* iServer; - - /** - * Listener for detecting attached USB cable and configured ACM - * Notifies this class to create new channel - * Own. - */ - CDunUsbListen* iUsbListen; - - /** - * Listener and accessor for detecting USB ACM configuration change - * Own. - */ - CDunUsbConfig* iUsbConfig; - - /** - * Communications server used to load ECACM and open USB port(s) - * Also used to get port information to calculate number of supported ACMs - */ - RCommServ iCommServer; - - /** - * USB server (USB manager) needed for device state notifications - * Device states needed to create transporter channel - */ - RUsb iUsbServer; - - /** - * Array of port(s) for USB local media side - */ - RArray iUsbPorts; - - /** - * Transporter to use for network side communication - * Not own. - */ - CDunTransporter* iTransporter; - - /** - * Flag to be set on if CDunUsbPlugin is waiting for shutdown. - * This flag is used to skip subsequent higher-level error codes after - * driver based error occurred. - */ - TBool iShutdown; - - }; - -#endif // C_CDUNUSBPLUGIN_H