usbdrv/peripheral/public/d32usbcshared.h
author hgs
Fri, 23 Jul 2010 15:54:47 +0800
changeset 33 089413cdde3c
child 48 21625e5de155
permissions -rw-r--r--
201028_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33
089413cdde3c 201028_02
hgs
parents:
diff changeset
     1
// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
089413cdde3c 201028_02
hgs
parents:
diff changeset
     2
// All rights reserved.
089413cdde3c 201028_02
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
089413cdde3c 201028_02
hgs
parents:
diff changeset
     4
// under the terms of the License "Eclipse Public License v1.0"
089413cdde3c 201028_02
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
089413cdde3c 201028_02
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
089413cdde3c 201028_02
hgs
parents:
diff changeset
     7
//
089413cdde3c 201028_02
hgs
parents:
diff changeset
     8
// Initial Contributors:
089413cdde3c 201028_02
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
089413cdde3c 201028_02
hgs
parents:
diff changeset
    10
//
089413cdde3c 201028_02
hgs
parents:
diff changeset
    11
// Contributors:
089413cdde3c 201028_02
hgs
parents:
diff changeset
    12
//
089413cdde3c 201028_02
hgs
parents:
diff changeset
    13
// Description:
089413cdde3c 201028_02
hgs
parents:
diff changeset
    14
// e32/include/d32usbcshared.h
089413cdde3c 201028_02
hgs
parents:
diff changeset
    15
// User side class definitions for USB Device support.
089413cdde3c 201028_02
hgs
parents:
diff changeset
    16
// 
089413cdde3c 201028_02
hgs
parents:
diff changeset
    17
//
089413cdde3c 201028_02
hgs
parents:
diff changeset
    18
089413cdde3c 201028_02
hgs
parents:
diff changeset
    19
/**
089413cdde3c 201028_02
hgs
parents:
diff changeset
    20
 @file d32usbcshared.h
089413cdde3c 201028_02
hgs
parents:
diff changeset
    21
 @publishedPartner
089413cdde3c 201028_02
hgs
parents:
diff changeset
    22
 @released
089413cdde3c 201028_02
hgs
parents:
diff changeset
    23
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
    24
089413cdde3c 201028_02
hgs
parents:
diff changeset
    25
#ifndef __D32USBCSHARED_H__
089413cdde3c 201028_02
hgs
parents:
diff changeset
    26
#define __D32USBCSHARED_H__
089413cdde3c 201028_02
hgs
parents:
diff changeset
    27
089413cdde3c 201028_02
hgs
parents:
diff changeset
    28
#include <usb/usb_peripheral_shai_shared.h>
089413cdde3c 201028_02
hgs
parents:
diff changeset
    29
089413cdde3c 201028_02
hgs
parents:
diff changeset
    30
// FIXME: for dummy dcd compitible, move this line to usbcshared.h
089413cdde3c 201028_02
hgs
parents:
diff changeset
    31
// used by shared chunk version LDD's user app interface
089413cdde3c 201028_02
hgs
parents:
diff changeset
    32
typedef TInt TUsbcDeviceState;
089413cdde3c 201028_02
hgs
parents:
diff changeset
    33
089413cdde3c 201028_02
hgs
parents:
diff changeset
    34
// USB driver error codes
089413cdde3c 201028_02
hgs
parents:
diff changeset
    35
089413cdde3c 201028_02
hgs
parents:
diff changeset
    36
/** USB driver specific error codes start from here
089413cdde3c 201028_02
hgs
parents:
diff changeset
    37
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
    38
const TInt KErrUsbDriverBase = -6701;
089413cdde3c 201028_02
hgs
parents:
diff changeset
    39
089413cdde3c 201028_02
hgs
parents:
diff changeset
    40
/**	Attempt at data transfer, or something interface related,
089413cdde3c 201028_02
hgs
parents:
diff changeset
    41
	when neither an Interface has been set up nor Device Control is owned by
089413cdde3c 201028_02
hgs
parents:
diff changeset
    42
	the channel
089413cdde3c 201028_02
hgs
parents:
diff changeset
    43
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
    44
const TInt KErrUsbInterfaceNotReady = -6702;
089413cdde3c 201028_02
hgs
parents:
diff changeset
    45
089413cdde3c 201028_02
hgs
parents:
diff changeset
    46
/**	Attempt at data transfer on an endpoint that does not belong to the active interface
089413cdde3c 201028_02
hgs
parents:
diff changeset
    47
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
    48
const TInt KErrUsbEpNotInInterface = -6703;
089413cdde3c 201028_02
hgs
parents:
diff changeset
    49
089413cdde3c 201028_02
hgs
parents:
diff changeset
    50
/**	Attempt at data transfer in a direction not supported by the endpoint
089413cdde3c 201028_02
hgs
parents:
diff changeset
    51
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
    52
const TInt KErrUsbEpBadDirection = -6704;
089413cdde3c 201028_02
hgs
parents:
diff changeset
    53
089413cdde3c 201028_02
hgs
parents:
diff changeset
    54
/**	The data transfer size specified exceeds that of the source or
089413cdde3c 201028_02
hgs
parents:
diff changeset
    55
	destination buffer descriptor
089413cdde3c 201028_02
hgs
parents:
diff changeset
    56
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
    57
const TInt KErrUsbTransferSize = -6705;
089413cdde3c 201028_02
hgs
parents:
diff changeset
    58
089413cdde3c 201028_02
hgs
parents:
diff changeset
    59
/**	This has multiple uses:
089413cdde3c 201028_02
hgs
parents:
diff changeset
    60
	1) User request completed because device is no longer in configured state
089413cdde3c 201028_02
hgs
parents:
diff changeset
    61
	2) Something endpoint related, stall, unstall, status enquiry etc,
089413cdde3c 201028_02
hgs
parents:
diff changeset
    62
	   that requires the device to be configured
089413cdde3c 201028_02
hgs
parents:
diff changeset
    63
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
    64
const TInt KErrUsbDeviceNotConfigured = -6706;
089413cdde3c 201028_02
hgs
parents:
diff changeset
    65
089413cdde3c 201028_02
hgs
parents:
diff changeset
    66
/**	Requested endpoint properties inconsistent during Interface setup
089413cdde3c 201028_02
hgs
parents:
diff changeset
    67
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
    68
const TInt KErrUsbBadEndpoint = -6707;
089413cdde3c 201028_02
hgs
parents:
diff changeset
    69
089413cdde3c 201028_02
hgs
parents:
diff changeset
    70
/**	User data request completed because channel is closing (channel destructor called)
089413cdde3c 201028_02
hgs
parents:
diff changeset
    71
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
    72
const TInt KErrUsbDeviceClosing = -6708;
089413cdde3c 201028_02
hgs
parents:
diff changeset
    73
089413cdde3c 201028_02
hgs
parents:
diff changeset
    74
/**	User data request completed because current endpoint set is being
089413cdde3c 201028_02
hgs
parents:
diff changeset
    75
	replaced since alternate setting is changing
089413cdde3c 201028_02
hgs
parents:
diff changeset
    76
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
    77
const TInt KErrUsbInterfaceChange = -6709;
089413cdde3c 201028_02
hgs
parents:
diff changeset
    78
089413cdde3c 201028_02
hgs
parents:
diff changeset
    79
/**	User data request completed because cable has been detached (or equivalent)
089413cdde3c 201028_02
hgs
parents:
diff changeset
    80
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
    81
const TInt KErrUsbCableDetached = -6710;
089413cdde3c 201028_02
hgs
parents:
diff changeset
    82
089413cdde3c 201028_02
hgs
parents:
diff changeset
    83
/**	User data request completed because cable has been detached (or equivalent)
089413cdde3c 201028_02
hgs
parents:
diff changeset
    84
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
    85
const TInt KErrUsbDeviceBusReset = -6711;
089413cdde3c 201028_02
hgs
parents:
diff changeset
    86
089413cdde3c 201028_02
hgs
parents:
diff changeset
    87
/**	This means that read data is still available when a write request is made.
089413cdde3c 201028_02
hgs
parents:
diff changeset
    88
	Relates to bidirectional eps only (ep0).
089413cdde3c 201028_02
hgs
parents:
diff changeset
    89
	A bidirectional ep must consume all of its read data before attempting to write.
089413cdde3c 201028_02
hgs
parents:
diff changeset
    90
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
    91
const TInt KErrUsbEpNotReady = -6712;
089413cdde3c 201028_02
hgs
parents:
diff changeset
    92
089413cdde3c 201028_02
hgs
parents:
diff changeset
    93
// FIXME: REMOVE THIS GUY, ONCE DUMMY DCD is modified according to new SHAI.
089413cdde3c 201028_02
hgs
parents:
diff changeset
    94
const TInt EUsbcDeviceStateUndefined = UsbShai::EUsbPeripheralStateUndefined; // 0
089413cdde3c 201028_02
hgs
parents:
diff changeset
    95
const TInt EUsbcDeviceStateAttached = UsbShai::EUsbPeripheralStateAttached; // 1
089413cdde3c 201028_02
hgs
parents:
diff changeset
    96
const TInt EUsbcDeviceStatePowered = UsbShai::EUsbPeripheralStatePowered;// 2
089413cdde3c 201028_02
hgs
parents:
diff changeset
    97
const TInt EUsbcDeviceStateDefault = UsbShai::EUsbPeripheralStateDefault;// 3
089413cdde3c 201028_02
hgs
parents:
diff changeset
    98
const TInt EUsbcDeviceStateAddress = UsbShai::EUsbPeripheralStateAddress; // 4
089413cdde3c 201028_02
hgs
parents:
diff changeset
    99
const TInt EUsbcDeviceStateConfigured = UsbShai::EUsbPeripheralStateConfigured;// 5
089413cdde3c 201028_02
hgs
parents:
diff changeset
   100
const TInt EUsbcDeviceStateSuspended = UsbShai::EUsbPeripheralStateSuspended;// 6
089413cdde3c 201028_02
hgs
parents:
diff changeset
   101
const TInt EUsbcNoState = UsbShai::EUsbPeripheralNoState; // 255 (used as a place holder)
089413cdde3c 201028_02
hgs
parents:
diff changeset
   102
089413cdde3c 201028_02
hgs
parents:
diff changeset
   103
/** The endpoint states.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   104
089413cdde3c 201028_02
hgs
parents:
diff changeset
   105
	@see RDevUsbcClient::EndpointStatus()
089413cdde3c 201028_02
hgs
parents:
diff changeset
   106
	@see RDevUsbcClient::EndpointStatusNotify()
089413cdde3c 201028_02
hgs
parents:
diff changeset
   107
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   108
enum TEndpointState
089413cdde3c 201028_02
hgs
parents:
diff changeset
   109
	{
089413cdde3c 201028_02
hgs
parents:
diff changeset
   110
	EEndpointStateNotStalled,
089413cdde3c 201028_02
hgs
parents:
diff changeset
   111
	EEndpointStateStalled,
089413cdde3c 201028_02
hgs
parents:
diff changeset
   112
	EEndpointStateUnknown
089413cdde3c 201028_02
hgs
parents:
diff changeset
   113
	};
089413cdde3c 201028_02
hgs
parents:
diff changeset
   114
089413cdde3c 201028_02
hgs
parents:
diff changeset
   115
class TUsbcEndpointCaps : public UsbShai::TUsbPeripheralEndpointCaps
089413cdde3c 201028_02
hgs
parents:
diff changeset
   116
    {
089413cdde3c 201028_02
hgs
parents:
diff changeset
   117
    public:
089413cdde3c 201028_02
hgs
parents:
diff changeset
   118
	/** Returns the greatest available packet size for this endpoint. */
089413cdde3c 201028_02
hgs
parents:
diff changeset
   119
	TInt MaxPacketSize() const;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   120
	/** Returns the smallest available packet size for this endpoint. */
089413cdde3c 201028_02
hgs
parents:
diff changeset
   121
	TInt MinPacketSize() const;    
089413cdde3c 201028_02
hgs
parents:
diff changeset
   122
    };
089413cdde3c 201028_02
hgs
parents:
diff changeset
   123
089413cdde3c 201028_02
hgs
parents:
diff changeset
   124
/** Endpoint resources/behaviours.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   125
089413cdde3c 201028_02
hgs
parents:
diff changeset
   126
	@see AllocateEndpointResource()
089413cdde3c 201028_02
hgs
parents:
diff changeset
   127
	@see DeAllocateEndpointResource()
089413cdde3c 201028_02
hgs
parents:
diff changeset
   128
	@see QueryEndpointResourceUse()
089413cdde3c 201028_02
hgs
parents:
diff changeset
   129
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   130
enum TUsbcEndpointResource
089413cdde3c 201028_02
hgs
parents:
diff changeset
   131
	{
089413cdde3c 201028_02
hgs
parents:
diff changeset
   132
	/** Requests the use of DMA. */
089413cdde3c 201028_02
hgs
parents:
diff changeset
   133
	EUsbcEndpointResourceDMA = 0,
089413cdde3c 201028_02
hgs
parents:
diff changeset
   134
	/** Requests the use of double FIFO buffering. */
089413cdde3c 201028_02
hgs
parents:
diff changeset
   135
	EUsbcEndpointResourceDoubleBuffering = 1
089413cdde3c 201028_02
hgs
parents:
diff changeset
   136
	};
089413cdde3c 201028_02
hgs
parents:
diff changeset
   137
089413cdde3c 201028_02
hgs
parents:
diff changeset
   138
const TUint KUsbcEndpointInfoFeatureWord1_DMA = UsbShai::KUsbEndpointInfoFeatureWord1_DMA;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   139
const TUint KUsbcEndpointInfoFeatureWord1_DoubleBuffering = UsbShai::KUsbEndpointInfoFeatureWord1_DoubleBuffering;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   140
    
089413cdde3c 201028_02
hgs
parents:
diff changeset
   141
/** The USB client device capability class.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   142
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   143
class TCapsDevUsbc
089413cdde3c 201028_02
hgs
parents:
diff changeset
   144
	{
089413cdde3c 201028_02
hgs
parents:
diff changeset
   145
    public:
089413cdde3c 201028_02
hgs
parents:
diff changeset
   146
	/** The device version. */
089413cdde3c 201028_02
hgs
parents:
diff changeset
   147
	TVersion version;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   148
	};
089413cdde3c 201028_02
hgs
parents:
diff changeset
   149
089413cdde3c 201028_02
hgs
parents:
diff changeset
   150
/** The maximum number of endpoints supported by the device, excluding ep0.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   151
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   152
const TInt KUsbcMaxEndpoints = 30;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   153
089413cdde3c 201028_02
hgs
parents:
diff changeset
   154
/** The maximum number of endpoints per interface, excluding ep0.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   155
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   156
const TInt KMaxEndpointsPerClient = 5;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   157
089413cdde3c 201028_02
hgs
parents:
diff changeset
   158
/** @internalComponent
089413cdde3c 201028_02
hgs
parents:
diff changeset
   159
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   160
const TInt KInvalidEndpointNumber = 31;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   161
089413cdde3c 201028_02
hgs
parents:
diff changeset
   162
/** The alternate setting flag; when this bit is set the state change notified by
089413cdde3c 201028_02
hgs
parents:
diff changeset
   163
	RDevUsbcClient::AlternateDeviceStatusNotify() is an alternate setting number.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   164
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   165
const TUint KUsbAlternateSetting = 0x80000000;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   166
089413cdde3c 201028_02
hgs
parents:
diff changeset
   167
/** The USB cable detection feature flag; used by TUsbDeviceCapsV01::iFeatureWord1.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   168
	When this bit is set then the USB controller hardware (UDC) supports detection
089413cdde3c 201028_02
hgs
parents:
diff changeset
   169
	of a plugged-in USB cable even when not powered.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   170
089413cdde3c 201028_02
hgs
parents:
diff changeset
   171
	@see TUsbDeviceCapsV01
089413cdde3c 201028_02
hgs
parents:
diff changeset
   172
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   173
const TUint KUsbDevCapsFeatureWord1_CableDetectWithoutPower = 0x00000001;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   174
089413cdde3c 201028_02
hgs
parents:
diff changeset
   175
/** If this flag is set then the driver supports the new endpoint resource
089413cdde3c 201028_02
hgs
parents:
diff changeset
   176
	allocation scheme for DMA and Double-buffering via
089413cdde3c 201028_02
hgs
parents:
diff changeset
   177
	TUsbcEndpointInfo::iFeatureWord1.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   178
089413cdde3c 201028_02
hgs
parents:
diff changeset
   179
	@see TUsbDeviceCapsV01
089413cdde3c 201028_02
hgs
parents:
diff changeset
   180
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   181
const TUint KUsbDevCapsFeatureWord1_EndpointResourceAllocV2 = 0x00000002;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   182
089413cdde3c 201028_02
hgs
parents:
diff changeset
   183
089413cdde3c 201028_02
hgs
parents:
diff changeset
   184
/** Device USB capabilities.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   185
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   186
class TUsbDeviceCapsV01
089413cdde3c 201028_02
hgs
parents:
diff changeset
   187
	{
089413cdde3c 201028_02
hgs
parents:
diff changeset
   188
public:
089413cdde3c 201028_02
hgs
parents:
diff changeset
   189
	/** The total number of endpoints on the device. */
089413cdde3c 201028_02
hgs
parents:
diff changeset
   190
	TInt iTotalEndpoints;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   191
	/** Indicates whether the device supports software connect/disconnect. */
089413cdde3c 201028_02
hgs
parents:
diff changeset
   192
	TBool iConnect;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   193
	/** Indicates whether the device is self powered. */
089413cdde3c 201028_02
hgs
parents:
diff changeset
   194
	TBool iSelfPowered;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   195
	/** Indicates whether the device can send Remote Wakeup. */
089413cdde3c 201028_02
hgs
parents:
diff changeset
   196
	TBool iRemoteWakeup;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   197
	/** Indicates whether the device supports High-speed mode. */
089413cdde3c 201028_02
hgs
parents:
diff changeset
   198
	TBool iHighSpeed;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   199
	/** 32 flag bits indicating miscellaneous UDC/device features.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   200
		Currently defined are:
089413cdde3c 201028_02
hgs
parents:
diff changeset
   201
		- KUsbDevCapsFeatureWord1_CableDetectWithoutPower = 0x00000001
089413cdde3c 201028_02
hgs
parents:
diff changeset
   202
		- KUsbDevCapsFeatureWord1_EndpointResourceAllocV2 = 0x00000002
089413cdde3c 201028_02
hgs
parents:
diff changeset
   203
	*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   204
	TUint32 iFeatureWord1;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   205
	/** Reserved for future use. */
089413cdde3c 201028_02
hgs
parents:
diff changeset
   206
	TUint32 iReserved;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   207
	};
089413cdde3c 201028_02
hgs
parents:
diff changeset
   208
089413cdde3c 201028_02
hgs
parents:
diff changeset
   209
/** Package buffer for a TUsbDeviceCapsV01 object.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   210
089413cdde3c 201028_02
hgs
parents:
diff changeset
   211
	@see TUsbDeviceCapsV01
089413cdde3c 201028_02
hgs
parents:
diff changeset
   212
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   213
typedef TPckgBuf<TUsbDeviceCapsV01> TUsbDeviceCaps;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   214
089413cdde3c 201028_02
hgs
parents:
diff changeset
   215
/** Bitmaps for TUsbcEndpointCaps.iSizes.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   216
089413cdde3c 201028_02
hgs
parents:
diff changeset
   217
	This endpoint is not available (= no size).
089413cdde3c 201028_02
hgs
parents:
diff changeset
   218
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   219
const TUint KUsbEpNotAvailable = 0x00000000;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   220
/**	Max packet size is continuously variable up to some size specified.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   221
	(Interrupt and Isochronous endpoints only.)
089413cdde3c 201028_02
hgs
parents:
diff changeset
   222
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   223
const TUint KUsbEpSizeCont     = 0x00000001;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   224
/** Max packet size 8 bytes is supported
089413cdde3c 201028_02
hgs
parents:
diff changeset
   225
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   226
const TUint KUsbEpSize8        = 0x00000008;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   227
/** Max packet size 16 bytes is supported
089413cdde3c 201028_02
hgs
parents:
diff changeset
   228
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   229
const TUint KUsbEpSize16       = 0x00000010;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   230
/** Max packet size 32 bytes is supported
089413cdde3c 201028_02
hgs
parents:
diff changeset
   231
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   232
const TUint KUsbEpSize32       = 0x00000020;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   233
/** Max packet size 64 bytes is supported
089413cdde3c 201028_02
hgs
parents:
diff changeset
   234
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   235
const TUint KUsbEpSize64       = 0x00000040;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   236
/** Max packet size 128 bytes is supported
089413cdde3c 201028_02
hgs
parents:
diff changeset
   237
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   238
const TUint KUsbEpSize128      = 0x00000080;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   239
/** Max packet size 256 bytes is supported
089413cdde3c 201028_02
hgs
parents:
diff changeset
   240
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   241
const TUint KUsbEpSize256      = 0x00000100;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   242
/** Max packet size 512 bytes is supported
089413cdde3c 201028_02
hgs
parents:
diff changeset
   243
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   244
const TUint KUsbEpSize512      = 0x00000200;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   245
/** Max packet size 1023 bytes is supported
089413cdde3c 201028_02
hgs
parents:
diff changeset
   246
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   247
const TUint KUsbEpSize1023     = 0x00000400;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   248
/** Max packet size 1024 bytes is supported
089413cdde3c 201028_02
hgs
parents:
diff changeset
   249
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   250
const TUint KUsbEpSize1024     = 0x00000800;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   251
089413cdde3c 201028_02
hgs
parents:
diff changeset
   252
/** Bitmaps for TUsbcEndpointCaps.iSupportedTypesAndDir.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   253
089413cdde3c 201028_02
hgs
parents:
diff changeset
   254
	Endpoint supports Control transfer type.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   255
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   256
const TUint KUsbEpTypeControl     = UsbShai::KUsbEpTypeControl;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   257
/** Endpoint supports Isochronous transfer type.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   258
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   259
const TUint KUsbEpTypeIsochronous = UsbShai::KUsbEpTypeIsochronous;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   260
/** Endpoint supports Bulk transfer type.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   261
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   262
const TUint KUsbEpTypeBulk        = UsbShai::KUsbEpTypeBulk;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   263
/** Endpoint supports Interrupt transfer type.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   264
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   265
const TUint KUsbEpTypeInterrupt   = UsbShai::KUsbEpTypeInterrupt;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   266
/** Endpoint supports IN transfers.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   267
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   268
const TUint KUsbEpDirIn           = UsbShai::KUsbEpDirIn;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   269
/** Endpoint supports OUT transfers.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   270
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   271
const TUint KUsbEpDirOut          = UsbShai::KUsbEpDirOut;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   272
/** Endpoint supports bidirectional (Control) transfers only.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   273
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   274
const TUint KUsbEpDirBidirect     = UsbShai::KUsbEpDirBidirect;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   275
089413cdde3c 201028_02
hgs
parents:
diff changeset
   276
089413cdde3c 201028_02
hgs
parents:
diff changeset
   277
/** Converts an absolute size value into a KUsbEpSize... mask.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   278
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   279
static inline TUint PacketSize2Mask(TInt aSize);
089413cdde3c 201028_02
hgs
parents:
diff changeset
   280
089413cdde3c 201028_02
hgs
parents:
diff changeset
   281
/** Converts an endpoint type mask KUsbEpType...  into an endpoint attribute
089413cdde3c 201028_02
hgs
parents:
diff changeset
   282
	value KUsbEpAttr_....
089413cdde3c 201028_02
hgs
parents:
diff changeset
   283
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   284
static inline TUint EpTypeMask2Value(TInt aType);
089413cdde3c 201028_02
hgs
parents:
diff changeset
   285
089413cdde3c 201028_02
hgs
parents:
diff changeset
   286
089413cdde3c 201028_02
hgs
parents:
diff changeset
   287
/** Endpoint capabilities as returned by RDevUsbcClient::EndpointCaps().
089413cdde3c 201028_02
hgs
parents:
diff changeset
   288
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   289
class TUsbcEndpointData
089413cdde3c 201028_02
hgs
parents:
diff changeset
   290
	{
089413cdde3c 201028_02
hgs
parents:
diff changeset
   291
public:
089413cdde3c 201028_02
hgs
parents:
diff changeset
   292
	/** Detail of endpoint capabilities. */
089413cdde3c 201028_02
hgs
parents:
diff changeset
   293
	TUsbcEndpointCaps iCaps;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   294
	/** Indicates whether this endpoint is already claimed. */
089413cdde3c 201028_02
hgs
parents:
diff changeset
   295
	TBool iInUse;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   296
	};
089413cdde3c 201028_02
hgs
parents:
diff changeset
   297
089413cdde3c 201028_02
hgs
parents:
diff changeset
   298
class TUsbcEndpointInfo : public UsbShai::TUsbPeripheralEndpointInfo 
089413cdde3c 201028_02
hgs
parents:
diff changeset
   299
    {
089413cdde3c 201028_02
hgs
parents:
diff changeset
   300
    public:
089413cdde3c 201028_02
hgs
parents:
diff changeset
   301
	TUsbcEndpointInfo(TUint aType=UsbShai::KUsbEpTypeBulk, TUint aDir=UsbShai::KUsbEpDirOut,
089413cdde3c 201028_02
hgs
parents:
diff changeset
   302
					  TInt aSize=0, TInt aInterval=0, TInt aExtra=0);
089413cdde3c 201028_02
hgs
parents:
diff changeset
   303
	
089413cdde3c 201028_02
hgs
parents:
diff changeset
   304
	TInt AdjustEpSizes(TInt& aEpSize_Fs, TInt& aEpSize_Hs) const;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   305
	
089413cdde3c 201028_02
hgs
parents:
diff changeset
   306
    TInt AdjustPollInterval();
089413cdde3c 201028_02
hgs
parents:
diff changeset
   307
    };
089413cdde3c 201028_02
hgs
parents:
diff changeset
   308
    
089413cdde3c 201028_02
hgs
parents:
diff changeset
   309
/** USB Class information used in RDevUsbcClient::SetInterface().
089413cdde3c 201028_02
hgs
parents:
diff changeset
   310
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   311
class TUsbcClassInfo
089413cdde3c 201028_02
hgs
parents:
diff changeset
   312
	{
089413cdde3c 201028_02
hgs
parents:
diff changeset
   313
public:
089413cdde3c 201028_02
hgs
parents:
diff changeset
   314
	TUsbcClassInfo(TInt aClass=0, TInt aSubClass=0, TInt aProtocol=0);
089413cdde3c 201028_02
hgs
parents:
diff changeset
   315
public:
089413cdde3c 201028_02
hgs
parents:
diff changeset
   316
	/** The class type number. */
089413cdde3c 201028_02
hgs
parents:
diff changeset
   317
	TInt iClassNum;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   318
	/** The sub-class type number. */
089413cdde3c 201028_02
hgs
parents:
diff changeset
   319
	TInt iSubClassNum;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   320
	/** The protocol number. */
089413cdde3c 201028_02
hgs
parents:
diff changeset
   321
	TInt iProtocolNum;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   322
	/** Reserved for future use. */
089413cdde3c 201028_02
hgs
parents:
diff changeset
   323
	TUint32 iReserved;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   324
	};
089413cdde3c 201028_02
hgs
parents:
diff changeset
   325
089413cdde3c 201028_02
hgs
parents:
diff changeset
   326
089413cdde3c 201028_02
hgs
parents:
diff changeset
   327
/** The Ep0 Setup request 'unsubscribe' flag; used by
089413cdde3c 201028_02
hgs
parents:
diff changeset
   328
	TUsbcInterfaceInfo::iFeatureWord. When this bit is set then valid vendor-
089413cdde3c 201028_02
hgs
parents:
diff changeset
   329
	or class-specific Ep0 requests addressed to this interface or any of its
089413cdde3c 201028_02
hgs
parents:
diff changeset
   330
	endpoints will be stalled by the USB PDD PIL.
089413cdde3c 201028_02
hgs
parents:
diff changeset
   331
089413cdde3c 201028_02
hgs
parents:
diff changeset
   332
	@see TUsbcInterfaceInfo
089413cdde3c 201028_02
hgs
parents:
diff changeset
   333
*/
089413cdde3c 201028_02
hgs
parents:
diff changeset
   334
const TUint KUsbcInterfaceInfo_NoEp0RequestsPlease = 0x00000001;
089413cdde3c 201028_02
hgs
parents:
diff changeset
   335
089413cdde3c 201028_02
hgs
parents:
diff changeset
   336
#include <usb/d32usbcshared.inl>
089413cdde3c 201028_02
hgs
parents:
diff changeset
   337
089413cdde3c 201028_02
hgs
parents:
diff changeset
   338
#endif