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