|
|
1.1 root 1: /*
2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights
7: * Reserved. This file contains Original Code and/or Modifications of
8: * Original Code as defined in and that are subject to the Apple Public
9: * Source License Version 1.1 (the "License"). You may not use this file
10: * except in compliance with the License. Please obtain a copy of the
11: * License at http://www.apple.com/publicsource and read it before using
12: * this file.
13: *
14: * The Original Code and all software distributed under the License are
15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
19: * License for the specific language governing rights and limitations
20: * under the License.
21: *
22: * @APPLE_LICENSE_HEADER_END@
23: */
24:
25: /*
26: File: CompositeClassDriver.h
27:
28: Contains: Header file for Composite Class Driver
29:
30: Version: xxx put version here xxx
31:
32: Copyright: � 1997-1998 by Apple Computer, Inc., all rights reserved.
33:
34: File Ownership:
35:
36: DRI: Craig Keithley
37:
38: Other Contact: xxx put other contact here xxx
39:
40: Technology: xxx put technology here xxx
41:
42: Writers:
43:
44: (TC) Tom Clark
45: (BG) Bill Galcher
46: (BT) Barry Twycross
47: (CJK) Craig Keithley
48:
49: Change History (most recent first):
50:
51: <USB6> 9/4/98 TC Update CompositeDriverNotifyProc to use version 1.1 of dispatch
52: table.
53: <USB5> 6/8/98 CJK remove driverentry; not needed
54: <USB4> 6/5/98 BG Add missing prototype - DriverEntry().
55: <USB3> 6/5/98 CJK add state to handle USBNewInterfaceRef. add some new fields to
56: the global structs to keep track of the interfacerefs, as well
57: as flag when it's okay to tear things down.
58: <USB2> 4/9/98 CJK change to use USB.h
59: <1> 4/7/98 CJK first checked in as CompositeClassDriver
60: <25> 3/26/98 CJK look at problem with Microsoft keyboard
61: <24> 3/17/98 CJK Replace "};" with just "}" (where appropriate). This eliminates
62: some error messages from MetroWerks. Added function prototypes.
63: <23> 2/26/98 CJK change pFullConfigurationDescriptor type to
64: USBConfigurationDescriptorPtr
65: <22> 2/9/98 CJK remove HID Emulation related items (no more HID fields in
66: Composite struct, no more include of HIDEmulation.h, etc.)
67: <21> 2/6/98 CJK Crank 50ms delay back down to 10ms. Changed name of state to not
68: say how many ms.
69: <20> 2/3/98 CJK move device descriptor 'next to' the other USB descriptors.
70: Removed unused fields from the CompositePBStruct.
71: <19> 2/2/98 CJK Add XXGetHIDDescriptor prototype
72: <18> 1/30/98 CJK Revise HIDModuleDispatchTable to have better names for the
73: dispatch table entries.
74: <17> 1/27/98 CJK Add HIDModuleDispatch Table definition
75: <16> 1/26/98 CJK change to match codebert
76: <15> 1/26/98 BT Mangle names after design review
77: <14> 1/26/98 CJK Add other USB/ADB shim dispatch functions
78: <13> 1/23/98 CJK remove hub related timer fields from Composite struct.
79: <12> 1/23/98 CJK Implement HID data change detection
80: <11> 1/23/98 CJK Work on configuration parsing
81: <10> 1/22/98 CJK Add configuration pointer and configuration descriptors to
82: Composite struct.
83: <9> 1/22/98 CJK Add RetryTransaction flag
84: <8> 1/20/98 CJK Add configuration parser function prototypes.
85: <7> 1/20/98 CJK Add other state values
86: <6> 1/15/98 CJK Change include of USL.h to USBServicesLib.h
87: <5> 1/14/98 CJK Add enum for 'kChangeState'
88: <4> 1/8/98 CJK Removed initialize & finalize function prototypes (they're not
89: needed now that the functions are in the description.c file).
90: <3> 1/6/98 CJK Add prototypes for TaskTimeProc, ExpertEntryProc, and related
91: functions.
92: <2> 12/17/97 CJK Add BBS file header
93: <1> 12/17/97 CJK First time checkin
94: */
95: #ifndef __CompositeCLASSDRIVERH__
96: #define __CompositeCLASSDRIVERH__
97:
98: //naga#include "../types.h"
99: //naga#include <Devices.h>
100: //naga#include "../driverservices.h"
101: //naga#include <Processes.h>
102: //naga#include "../USB.h"
103:
104: Boolean immediateError(OSStatus err);
105: void CompositeDeviceInitiateTransaction(USBPB *pb);
106: void CompositeDeviceCompletionProc(USBPB *pb);
107: void InitParamBlock(USBDeviceRef theDeviceRef, USBPB * paramblock);
108:
109: OSStatus CompositeDriverInitInterface(UInt32 interfaceNum, USBInterfaceDescriptor *interfaceDesc, USBDeviceDescriptor *deviceDesc, USBDeviceRef device);
110: OSStatus CompositeDriverNotifyProc(UInt32 notification, void *pointer, UInt32 refcon);
111: OSStatus CompositeDriverValidateHW(USBDeviceRef device, USBDeviceDescriptor *desc);
112: OSStatus CompositeDriverInitialize(USBDeviceRef device, USBDeviceDescriptorPtr pDesc, UInt32 busPowerAvailable);
113: OSStatus CompositeDriverFinalize(USBDeviceRef theDeviceRef, USBDeviceDescriptorPtr pDesc);
114:
115: void DeviceInitialize(USBDeviceRef device, USBDeviceDescriptorPtr pDeviceDescriptor, UInt32 busPowerAvailable);
116:
117: OSErr GetInterfaceDescriptor(LogicalAddress pConfigDesc, UInt32 ReqInterface, USBInterfaceDescriptorPtr *hInterfaceDesc);
118:
119: #define kCompositeRetryCount 5
120:
121: enum driverstates
122: {
123: kUndefined = 0,
124: kSetConfig,
125: kGetFullConfiguration0,
126: kGetFullConfiguration1,
127: kNewInterfaceRef,
128: kExitDriver = 0x1000,
129: kRetryTransaction = 0x2000,
130: kSyncTransaction = 0x4000,
131: kCompletionPending = 0x8000
132: };
133:
134: typedef struct
135: {
136: USBPB pb;
137: void (*handler)(USBPB *pb);
138:
139: USBDeviceRef deviceRef;
140:
141: Boolean disposeCompletedFlag;
142: Boolean okayToFinalizeFlag;
143:
144: USBDeviceDescriptor deviceDescriptor;
145: USBConfigurationDescriptor partialConfigDescriptor;
146: USBConfigurationDescriptorPtr pFullConfigDescriptor;
147:
148: USBInterfaceDescriptor interfaceDescriptors[32];
149: USBInterfaceRef interfaceRefArray[32];
150: USBRqIndex interfaceCount;
151: USBRqIndex interfaceIndex;
152:
153: SInt32 retryCount;
154: SInt32 delayLevel;
155: SInt32 transDepth;
156: UInt32 busPowerAvailable;
157: } usbCompositePBStruct;
158:
159: #endif //__CompositeCLASSDRIVERH__
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.