|
|
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: uslExpert.c
27:
28: Contains: xxx put contents here xxx
29:
30: Version: xxx put version here xxx
31:
32: Copyright: � 1998 by Apple Computer, Inc., all rights reserved.
33:
34: File Ownership:
35:
36: DRI: xxx put dri here xxx
37:
38: Other Contact: xxx put other contact here xxx
39:
40: Technology: xxx put technology here xxx
41:
42: Writers:
43:
44: (CJK) Craig Keithley
45: (DF) David Ferguson
46: (BT) Barry Twycross
47:
48: Change History (most recent first):
49:
50: <USB7> 9/28/98 BT Add device reset function
51: <USB6> 6/11/98 CJK add reserved params to USBExpertSetDevicePowerStatus. Wanted to
52: get it into the USB.i before freezing C1
53: <USB5> 6/11/98 BT Add power state notification message
54: <USB4> 6/8/98 CJK add USBExpertSetDevicePowerStatus
55: <USB3> 6/6/98 DF Change parameter for USBExpertInstallInterfaceDriver from hubRef
56: to deviceRef
57: <USB2> 5/12/98 BT New interface handling
58: <USB1> 4/26/98 BT first checked in
59: */
60:
61: //#include <errors.h>
62: #include "../USB.h"
63: #include "../USBpriv.h"
64: #include "../driverservices.h"
65: #include "uslpriv.h"
66: #include "../uimpriv.h"
67:
68:
69: static ExpertNotificationProcPtr expert;
70:
71: void SetExpertFunction(void *exProc)
72: {
73: expert = exProc;
74: }
75:
76: OSStatus USBExpertNotify(void *note)
77: {
78: if(expert == nil)
79: {
80: return(kUSBInternalErr); // make up a not inited err
81: }
82: return(*expert)(note);
83: }
84:
85: OSStatus USBExpertStatus(USBDeviceRef ref, void *pointer, UInt32 value)
86: {
87: ExpertNotificationData note;
88: note.notification = kNotifyStatus;
89: note.deviceRef = &ref;
90: note.data = pointer;
91: note.info2 = value;
92: return(USBExpertNotify(¬e));
93: }
94:
95: OSStatus USBExpertFatalError(USBDeviceRef ref, OSStatus status, void *pointer, UInt32 value)
96: {
97: ExpertNotificationData note;
98: note.notification = kNotifyFatalError;
99: note.deviceRef = &ref;
100: note.data = pointer;
101: note.info1 = status;
102: note.info2 = value;
103: return(USBExpertNotify(¬e));
104: }
105:
106:
107: OSStatus USBExpertInstallInterfaceDriver(USBDeviceRef ref, USBDeviceDescriptor *desc,
108: USBInterfaceDescriptor *interface,
109: USBReference deviceRef, UInt32 busPowerAvailable)
110: {
111: ExpertNotificationData note;
112: note.notification = kNotifyAddInterface;
113: note.deviceRef = &ref;
114: note.data = interface;
115: note.info1 = deviceRef;
116: note.info2 = (UInt32) desc;
117: note.busPowerAvailable = busPowerAvailable;
118: return(USBExpertNotify(¬e));
119: }
120:
121: OSStatus USBExpertInstallDeviceDriver(USBDeviceRef ref, USBDeviceDescriptor *desc,
122: USBReference hubRef, UInt32 port,
123: UInt32 busPowerAvailable)
124: {
125: ExpertNotificationData note;
126: note.notification = kNotifyAddDevice;
127: note.deviceRef = &ref;
128: note.data = desc;
129: note.info1 = hubRef;
130: note.info2 = port;
131: note.busPowerAvailable = busPowerAvailable;
132: return(USBExpertNotify(¬e));
133: }
134:
135: OSStatus USBExpertRemoveDeviceDriver(USBDeviceRef ref)
136: {
137: ExpertNotificationData note;
138: note.notification = kNotifyRemoveDevice;
139: note.deviceRef = &ref;
140: return(USBExpertNotify(¬e));
141: }
142:
143: OSStatus USBExpertRemoveInterfaceDriver(USBDeviceRef ref)
144: {
145: ExpertNotificationData note;
146: note.notification = kNotifyRemoveInterface;
147: note.deviceRef = &ref;
148: return(USBExpertNotify(¬e));
149: }
150:
151: OSStatus USBExpertSetDevicePowerStatus(USBDeviceRef ref, UInt32 reserved1, UInt32 reserved2, UInt32 powerStatus, UInt32 busPowerAvailable, UInt32 busPowerNeeded )
152: {
153: #pragma unused (reserved1)
154: #pragma unused (reserved2)
155:
156: ExpertNotificationData note;
157: note.notification = kNotifyPowerState;
158: note.deviceRef = &ref;
159: note.info1 = powerStatus;
160: note.busPowerAvailable = busPowerAvailable;
161: note.info2 = busPowerNeeded;
162: USBExpertStatus(0,"USL - sending power note to expert", powerStatus);
163:
164: return(USBExpertNotify(¬e));
165: }
166:
167: OSStatus USBExpertNotifyParentMsg(USBReference reference, void *pointer)
168: {
169: ExpertNotificationData note;
170:
171: note.notification = kNotifyParentNotify;
172: note.deviceRef = &reference;
173: note.data = pointer;
174: return(USBExpertNotify(¬e));
175: }
176:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.