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