1/*
2 * Copyright (c) 1998-2002 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 *  IOFWUserIsochChannel.h
24 *  IOFireWireFamily
25 *
26 *  Created by noggin on Tue May 15 2001.
27 *  Copyright (c) 2001 Apple Computer, Inc. All rights reserved.
28 *
29 */
30
31// public
32#import <IOKit/firewire/IOFWIsochChannel.h>
33
34class IOFWUserIsochChannel: public IOFWIsochChannel
35{
36	typedef IOFWIsochChannel super ;
37
38	OSDeclareDefaultStructors(IOFWUserIsochChannel)
39
40	public :
41
42		virtual bool					init(	IOFireWireController *		control,
43													bool 						doIRM,
44													UInt32 						packetSize,
45													IOFWSpeed 					prefSpeed ) ;
46
47		// IOFWIsochChannel
48		virtual IOReturn 				allocateChannel();
49		virtual IOReturn 				releaseChannel();
50		virtual IOReturn 				start();
51		virtual IOReturn 				stop();
52
53		// me
54		IOReturn						allocateChannelBegin(
55												IOFWSpeed		speed,
56												UInt64			allowedChans,
57												UInt32 *		outChannel )				{ return IOFWIsochChannel::allocateChannelBegin( speed, allowedChans, outChannel ) ; }
58		IOReturn						releaseChannelComplete()							{ return IOFWIsochChannel::releaseChannelComplete() ; }
59		IOReturn						allocateListenerPorts() ;
60		IOReturn						allocateTalkerPort() ;
61		static void						s_exporterCleanup( IOFWUserIsochChannel * channel ) ;
62
63		inline io_user_reference_t *	getUserAsyncRef()									{ return fAsyncRef ; }
64		inline void						setUserAsyncRef( OSAsyncReference64 asyncRef )		{ fAsyncRef = asyncRef ; }
65
66	protected:
67
68		bool					fBandwidthAllocated ;
69		io_user_reference_t *   fAsyncRef ;
70
71	public :
72
73		static IOReturn						isochChannel_ForceStopHandler( void * self, IOFWIsochChannel*, UInt32 stopCondition ) ;
74
75} ;
76