/*
* Copyright (c) 2008-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:
* Shared HOST definitions
*
*/
/**
@file
@publishedPartner
*/
#ifndef __USBHOSTDEFS_H__
#define __USBHOSTDEFS_H__
#include <e32std.h>
/** An event in the attachment-detachment lifecycle of a USB device. */
enum TUsbHostStackEventType
{
/** A device attachment has occurred. */
EDeviceAttachment = 0,
/** An attempt to load Function Driver(s) has occurred. */
EDriverLoad = 1,
/** A device detachment has occurred. */
EDeviceDetachment = 2,
};
/** For a 'driver loading' event, whether the attempt to load drivers was
successful, partially successful, or unsuccessful. */
const TUint KMultipleDriversFound = 0x00000004;
enum TDriverLoadStatus
{
/** Driver loading was successful for all the device's interfaces. */
EDriverLoadSuccess = 0,
/** Driver loading was successful for one or more of the device's
interfaces, but not for all of them. */
EDriverLoadPartialSuccess = 1,
/** Driver loading was successful for none of the device's interfaces. */
EDriverLoadFailure = 2,
/** Driver loading was successful for all the device's interfaces, with multiple drivers found */
EDriverLoadSuccessMultipleDriversFound = EDriverLoadSuccess|KMultipleDriversFound,
/** Driver loading was successful for one or more of the device's
interfaces, but not for all of them, with multiple drivers found. */
EDriverLoadPartialSuccessMultipleDriversFound = EDriverLoadPartialSuccess|KMultipleDriversFound,
/** Driver loading was successful for none of the device's interfaces, with multiple drivers found. */
EDriverLoadFailureMultipleDriversFound = EDriverLoadFailure|KMultipleDriversFound
};
NONSHARABLE_CLASS(TDeviceEventInformation)
{
public:
inline TDeviceEventInformation()
// These initialisations are arbitrary
: iDeviceId(0),
iEventType(EDeviceAttachment),
iError(KErrNone),
iDriverLoadStatus(EDriverLoadSuccess),
iVid(0),
iPid(0)
{}
// Always relevant- the ID of the device the event relates to.
TUint iDeviceId;
// Always relevant- the type of event that has occurred.
TUsbHostStackEventType iEventType;
// Relevant to attachment and driver load events.
TInt iError;
// Relevant to driver load events only.
TDriverLoadStatus iDriverLoadStatus;
// Relevant to attachments with iError KErrNone.
TUint16 iVid;
// Relevant to attachments with iError KErrNone.
TUint16 iPid;
};
const TInt KUsbMaxSupportedLanguageIds = 127; // Max number of supported USB Language Ids
enum TUsbOtgAttributes
{
/** Device supported SRP protocol */
EUsbOtgSRPSupported = 0x01,
/** Device supported HNP protocol */
EUsbOtgHNPSupported = 0x02,
EUsbOtgAttributeCount,
};
NONSHARABLE_CLASS(TOtgDescriptor)
{
public:
inline TOtgDescriptor()
: iDeviceId(0),
iAttributes(0),
iReserved1(0),
iReserved2(0),
iReserved3(0)
{}
// The ID of the device the OTG descriptor relates to.
TUint iDeviceId;
// The OTG attributes - currently only D0 and D1 are used for SRP and HNP.
TUint8 iAttributes;
// Reserved
TInt iReserved1;
// Reserved
TInt iReserved2;
// Reserved
TInt iReserved3;
};
#endif //__USBHOSTDEFS_H__