// ****************************************************************************
//
//		CLayla24DspCommObject.H
//
//		Include file for EchoGals generic driver Layla24 DSP interface class.
//
// ----------------------------------------------------------------------------
//
//		Copyright Echo Digital Audio Corporation (c) 1998 - 2002
//		All rights reserved
//		www.echoaudio.com
//		
//		Permission is hereby granted, free of charge, to any person obtaining a
//		copy of this software and associated documentation files (the
//		"Software"), to deal with the Software without restriction, including
//		without limitation the rights to use, copy, modify, merge, publish,
//		distribute, sublicense, and/or sell copies of the Software, and to
//		permit persons to whom the Software is furnished to do so, subject to
//		the following conditions:
//		
//		- Redistributions of source code must retain the above copyright
//		notice, this list of conditions and the following disclaimers.
//		
//		- Redistributions in binary form must reproduce the above copyright
//		notice, this list of conditions and the following disclaimers in the
//		documentation and/or other materials provided with the distribution.
//		
//		- Neither the name of Echo Digital Audio, nor the names of its
//		contributors may be used to endorse or promote products derived from
//		this Software without specific prior written permission.
//
//		THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
//		EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
//		MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
//		IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR
//		ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
//		TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
//		SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.
//
// ****************************************************************************

#ifndef	_LAYLA24DSPCOMMOBJECT_
#define	_LAYLA24DSPCOMMOBJECT_

#include "CGMLDspCommObject.h"

class CLayla24DspCommObject : public CGMLDspCommObject
{
protected:

public:
	//
	//	Construction/destruction
	//
	CLayla24DspCommObject( PDWORD pdwRegBase, PCOsSupport pOsSupport );
	virtual ~CLayla24DspCommObject();

	//
	//	Set the DSP sample rate.
	//	Return rate that was set, -1 if error
	//
	virtual DWORD SetSampleRate( DWORD dwNewSampleRate );
	//
	//	Send current setting to DSP & return what it is
	//
	virtual DWORD SetSampleRate()
		{ return( SetSampleRate( GetSampleRate() ) ); }
	//
	//	Set digital mode
	//
	virtual ECHOSTATUS SetDigitalMode
	(
		BYTE	byNewMode
	);
	//
	//	Get mask of all supported digital modes
	//	(See ECHOCAPS_HAS_DIGITAL_MODE_??? defines in EchoGalsXface.h)
	//
	virtual DWORD GetDigitalModes()
		{ return( ECHOCAPS_HAS_DIGITAL_MODE_SPDIF_RCA	  |
					 ECHOCAPS_HAS_DIGITAL_MODE_SPDIF_OPTICAL |
					 ECHOCAPS_HAS_DIGITAL_MODE_ADAT			); }

	//
	//	Card information
	//
	virtual WORD GetCardType()
		{ return( LAYLA24 ); }

	virtual BOOL IsMidiOutActive();

protected:

	virtual BOOL LoadASIC();

	//
	//	Switch the external ASIC if not already loaded.
	//	Mute monitors during this operation
	//
	BOOL SwitchAsic
	(
		BYTE *	pbyAsicNeeded,
		DWORD		dwAsicSize
	);

	//
	//	Set input clock
	//
	virtual ECHOSTATUS SetInputClock(WORD wClock);

	BYTE *	m_pbyAsic;					// Current ASIC code

};		// class CLayla24DspCommObject

typedef CLayla24DspCommObject * PCLayla24DspCommObject;

#endif

// **** Layla2424DspCommObject.h ****
