1/*
2 * Copyright (c) 1998-2001 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * The contents of this file constitute Original Code as defined in and
7 * are subject to the Apple Public Source License Version 1.1 (the
8 * "License").  You may not use this file except in compliance with the
9 * License.  Please obtain a copy of the License at
10 * http://www.apple.com/publicsource and read it before using this file.
11 *
12 * This Original Code and all software distributed under the License are
13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
17 * License for the specific language governing rights and limitations
18 * under the License.
19 *
20 * @APPLE_LICENSE_HEADER_END@
21 */
22
23#ifndef _IOKIT_IOFIREWIREAVCUSERCLIENTCOMMON_H_
24#define _IOKIT_IOFIREWIREAVCUSERCLIENTCOMMON_H_
25
26#include <IOKit/avc/IOFireWireAVCConsts.h>
27
28#define kIOFireWireAVCLibConnection 13
29
30enum IOFWAVCUserClientCommandCodes {
31    kIOFWAVCUserClientOpen,						// kIOUCScalarIScalarO 0,0
32    kIOFWAVCUserClientClose,					// kIOUCScalarIScalarO 0,0
33    kIOFWAVCUserClientOpenWithSessionRef,		// kIOUCScalarIScalarO 1,0
34	kIOFWAVCUserClientGetSessionRef,			// kIOUCScalarIScalarO 0,1
35    kIOFWAVCUserClientAVCCommand,				// kIOUCStructIStructO -1,-1
36    kIOFWAVCUserClientAVCCommandInGen,			// kIOUCStructIStructO -1,-1
37    kIOFWAVCUserClientUpdateAVCCommandTimeout,	// kIOUCScalarIScalarO 0,0
38    kIOFWAVCUserClientMakeP2PInputConnection,	// KIOUCScalarIScalarO 1, 0
39    kIOFWAVCUserClientBreakP2PInputConnection,	// KIOUCScalarIScalarO 1, 0
40    kIOFWAVCUserClientMakeP2POutputConnection,	// KIOUCScalarIScalarO 1, 0
41    kIOFWAVCUserClientBreakP2POutputConnection,	// KIOUCScalarIScalarO 1, 0
42	kIOFWAVCUserClientCreateAsyncAVCCommand,	// kIOUCStructIStructO -1,-1
43	kIOFWAVCUserClientSubmitAsyncAVCCommand,	// kIOUCScalarIScalarO 1, 0
44	kIOFWAVCUserClientCancelAsyncAVCCommand,	// kIOUCScalarIScalarO 1, 0
45	kIOFWAVCUserClientReleaseAsyncAVCCommand,	// kIOUCScalarIScalarO 1, 0
46	kIOFWAVCUserClientReinitAsyncAVCCommand,	// // kIOUCScalarIStructI 1, -1
47    kIOFWAVCUserClientNumCommands
48};
49
50enum IOFWAVCUserClientAsyncCommandCodes {
51    kIOFWAVCUserClientInstallAsyncAVCCommandCallback = kIOFWAVCUserClientNumCommands,	// kIOUCScalarIScalarO 1, 1
52    kIOFWAVCUserClientNumAsyncCommands
53};
54
55
56enum IOFWAVCProtocolUserClientCommandCodes {
57    kIOFWAVCProtocolUserClientSendAVCResponse,   		// kIOUCScalarIStructI 2, -1
58    kIOFWAVCProtocolUserClientFreeInputPlug,			// kIOUCScalarIScalarO 1, 0
59    kIOFWAVCProtocolUserClientReadInputPlug,			// kIOUCScalarIScalarO 1, 1
60    kIOFWAVCProtocolUserClientUpdateInputPlug,			// kIOUCScalarIScalarO 3, 0
61    kIOFWAVCProtocolUserClientFreeOutputPlug,			// kIOUCScalarIScalarO 1, 0
62    kIOFWAVCProtocolUserClientReadOutputPlug,			// kIOUCScalarIScalarO 1, 1
63    kIOFWAVCProtocolUserClientUpdateOutputPlug,			// kIOUCScalarIScalarO 3, 0
64    kIOFWAVCProtocolUserClientReadOutputMasterPlug,		// kIOUCScalarIScalarO 0, 1
65    kIOFWAVCProtocolUserClientUpdateOutputMasterPlug,	// kIOUCScalarIScalarO 2, 0
66    kIOFWAVCProtocolUserClientReadInputMasterPlug,		// kIOUCScalarIScalarO 0, 1
67    kIOFWAVCProtocolUserClientUpdateInputMasterPlug,	// kIOUCScalarIScalarO 2, 0
68    kIOFWAVCProtocolUserClientPublishAVCUnitDirectory,	// kIOUCScalarIScalarO 0, 0
69	kIOFWAVCProtocolUserClientSetSubunitPlugSignalFormat, // kIOUCScalarIScalarO 4, 0
70	kIOFWAVCProtocolUserClientGetSubunitPlugSignalFormat, // kIOUCScalarIScalarO 3, 1
71	kIOFWAVCProtocolUserClientConnectTargetPlugs,		// kIOUCStructIStructO
72	kIOFWAVCProtocolUserClientDisconnectTargetPlugs,	// kIOUCScalarIScalarO 6, 0
73	kIOFWAVCProtocolUserClientGetTargetPlugConnection,	// kIOUCStructIStructO
74	kIOFWAVCProtocolUserClientAVCRequestNotHandled,		// kIOUCScalarIStructI 4, -1
75    kIOFWAVCProtocolUserClientNumCommands
76};
77
78enum IOFWAVCProtocolUserClientAsyncCommandCodes {
79    kIOFWAVCProtocolUserClientSetAVCRequestCallback = kIOFWAVCProtocolUserClientNumCommands,   		// kIOUCScalarIScalarO 2, 0
80    kIOFWAVCProtocolUserClientAllocateInputPlug,			// kIOUCScalarIScalarO 1, 1
81    kIOFWAVCProtocolUserClientAllocateOutputPlug,			// kIOUCScalarIScalarO 1, 1
82    kIOFWAVCProtocolUserClientInstallAVCCommandHandler,		// kIOUCScalarIScalarO 4, 0
83    kIOFWAVCProtocolUserClientAddSubunit,					// kIOUCScalarIScalarO 5, 1
84    kIOFWAVCProtocolUserClientNumAsyncCommands
85};
86
87typedef struct _AVCConnectTargetPlugsInParams
88{
89	UInt32 sourceSubunitTypeAndID;
90	IOFWAVCPlugTypes sourcePlugType;
91	UInt32 sourcePlugNum;
92	UInt32 destSubunitTypeAndID;
93	IOFWAVCPlugTypes destPlugType;
94	UInt32 destPlugNum;
95	Boolean lockConnection;
96	Boolean permConnection;
97}AVCConnectTargetPlugsInParams;
98
99typedef struct _AVCConnectTargetPlugsOutParams
100{
101	UInt32 sourcePlugNum;
102	UInt32 destPlugNum;
103}AVCConnectTargetPlugsOutParams;
104
105typedef struct _AVCGetTargetPlugConnectionInParams
106{
107	UInt32 subunitTypeAndID;
108	IOFWAVCPlugTypes plugType;
109	UInt32 plugNum;
110}AVCGetTargetPlugConnectionInParams;
111
112typedef struct _AVCGetTargetPlugConnectionOutParams
113{
114	UInt32 connectedSubunitTypeAndID;
115	IOFWAVCPlugTypes connectedPlugType;
116	UInt32 connectedPlugNum;
117	Boolean lockConnection;
118	Boolean permConnection;
119}AVCGetTargetPlugConnectionOutParams;
120
121#define kAsyncCmdSharedBufInterimRespOffset 0
122#define kAsyncCmdSharedBufFinalRespOffset 512
123
124#endif // _IOKIT_IOFIREWIREAVCUSERCLIENTCOMMON_H_