1// ****************************************************************************
2//
3//		CIndigoIO.H
4//
5//		Include file for interfacing with the CIndigo generic driver class
6//		Set editor tabs to 3 for your viewing pleasure.
7//
8// ----------------------------------------------------------------------------
9//
10// This file is part of Echo Digital Audio's generic driver library.
11// Copyright Echo Digital Audio Corporation (c) 1998 - 2005
12// All rights reserved
13// www.echoaudio.com
14//
15// This library is free software; you can redistribute it and/or
16// modify it under the terms of the GNU Lesser General Public
17// License as published by the Free Software Foundation; either
18// version 2.1 of the License, or (at your option) any later version.
19//
20// This library is distributed in the hope that it will be useful,
21// but WITHOUT ANY WARRANTY; without even the implied warranty of
22// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
23// Lesser General Public License for more details.
24//
25// You should have received a copy of the GNU Lesser General Public
26// License along with this library; if not, write to the Free Software
27// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
28//
29// ****************************************************************************
30
31//	Prevent problems with multiple includes
32#ifndef _INDIGOIO_OBJECT_
33#define _INDIGOIO_OBJECT_
34
35#include "CEchoGalsVmixer.h"
36#include "CIndigoIODspCommObject.h"
37
38//
39//	Class used for interfacing with the Indigo IO Cardbus adapter
40//
41class CIndigoIO : public CEchoGalsVmixer
42{
43public:
44	//
45	//	Construction/destruction
46	//
47	CIndigoIO( PCOsSupport pOsSupport );
48
49	virtual ~CIndigoIO();
50
51	//
52	// Setup & initialization methods
53	//
54	virtual ECHOSTATUS InitHw();
55
56	//
57	//	Adapter information methods
58	//
59
60	//
61	//	Return the capabilities of this card; card type, card name,
62	//	# analog inputs, # analog outputs, # digital channels,
63	//	# MIDI ports and supported clocks.
64	//	See ECHOGALS_CAPS definition above.
65	//
66	virtual ECHOSTATUS GetCapabilities
67	(
68		PECHOGALS_CAPS	pCapabilities
69	);
70
71	//
72	// Ask if a given sample rate is supported
73	//
74	virtual ECHOSTATUS QueryAudioSampleRate
75	(
76		DWORD		dwSampleRate
77	);
78
79	virtual void QuerySampleRateRange(DWORD &dwMinRate,DWORD &dwMaxRate);
80
81	//
82	//	Overload new & delete so memory for this object is allocated from
83	//	non-paged memory.
84	//
85	PVOID operator new( size_t Size );
86	VOID  operator delete( PVOID pVoid );
87
88	//
89	// Get the hardware audio latency
90	//
91	virtual void GetAudioLatency(ECHO_AUDIO_LATENCY *pLatency);
92
93protected:
94	//
95	//	Get access to the appropriate DSP comm object
96	//
97	PCIndigoIODspCommObject GetDspCommObject()
98		{ return( (PCIndigoIODspCommObject) m_pDspCommObject ); }
99};		// class IndigoIO
100
101typedef CIndigoIO * PCIndigoIO;
102
103#endif
104
105// *** CIndigoIO.H ***
106