diff -r 000000000000 -r c9bc50fca66e usbmgmt/usbmgr/device/classcontroller/public/CUsbClassControllerBase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/device/classcontroller/public/CUsbClassControllerBase.h Tue Feb 02 02:02:59 2010 +0200 @@ -0,0 +1,139 @@ +/* +* Copyright (c) 1997-2009 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: +* Implements part of UsbMan USB Class Framework. +* All USB classes to be managed by UsbMan must derive +* from this class. +* +*/ + +/** + @file +*/ + +#ifndef __CUSBCLASSCONTROLLERBASE_H__ +#define __CUSBCLASSCONTROLLERBASE_H__ + +#include +#include + +class MUsbClassControllerNotify; +class TUsbDescriptor; + +class CUsbClassControllerBase : public CActive +/** Base class for Class Controllers. + + @publishedPartner + @released + */ + { +public: + /** Owner + @return The owner of the class controller. + */ + IMPORT_C MUsbClassControllerNotify& Owner() const; + + /** State + @return The service state. + */ + IMPORT_C TUsbServiceState State() const; + + /** StartupPriority + @return The relative priority of this class controller. + */ + IMPORT_C TInt StartupPriority() const; + + /** Compare + Static function to compare two class controllers on the basis of their + startup priorities. + @param aFirst First class controller. + @param aSecond Second class controller. + @return Result of comparison of two class controllers. + */ + IMPORT_C static TInt Compare(const CUsbClassControllerBase& aFirst, + const CUsbClassControllerBase& aSecond); + +public: // Functions derived from CActive to be implemented by derived classes. + /** RunL + Framework function. Class controllers are Active Objects, and may if + relevant use that to register interfaces asynchronously. + */ + virtual void RunL() = 0; + + /** DoCancel + Framework function. + */ + virtual void DoCancel() = 0; + + /** RunError + @param aError The error with which RunL left. + @return Error. + */ + virtual TInt RunError(TInt aError) = 0; + +public: + /** Destructor + */ + IMPORT_C virtual ~CUsbClassControllerBase(); + +public: + /** Start + Called by the server to get this class controller to register its + interfaces. + @param aStatus TRequestStatus to signal completion of the request. + */ + virtual void Start(TRequestStatus& aStatus) = 0; + + /** Stop + Called by the server to get this class controller to deregister its + interfaces. + @param aStatus TRequestStatus to signal completion of the request. + */ + virtual void Stop(TRequestStatus& aStatus) = 0; + + /** GetDescriptorInfo + Returns information on the class controller's descriptors. + @param aDescriptorInfo Structure to return information in. + */ + virtual void GetDescriptorInfo(TUsbDescriptor& aDescriptorInfo) const = 0; + +protected: + /** Constructor + @param aOwner Owner. + @param aStartupPriority Relative startup priority of this class controller. + */ + IMPORT_C CUsbClassControllerBase(MUsbClassControllerNotify& aOwner, TInt aStartupPriority); + +protected: + /** + The relative priority of this class controller. The class controllers + are sorted using their priorities to determine what order to start + them in. + */ + const TInt iStartupPriority; + + /** + The current service state. This must be kept up-to-date depending on + whether this class controller's interfaces are registered or not. + */ + TUsbServiceState iState; + + /** + Owner. + */ + MUsbClassControllerNotify& iOwner; + }; + +#endif //__CUSBCLASSCONTROLLERBASE_H__ +