1// **************************************************************************** 2// 3// CGinaDspCommObject.cpp 4// 5// Implementation file Gina20 DSP interface class. 6// 7// ---------------------------------------------------------------------------- 8// 9// This file is part of Echo Digital Audio's generic driver library. 10// Copyright Echo Digital Audio Corporation (c) 1998 - 2005 11// All rights reserved 12// www.echoaudio.com 13// 14// This library is free software; you can redistribute it and/or 15// modify it under the terms of the GNU Lesser General Public 16// License as published by the Free Software Foundation; either 17// version 2.1 of the License, or (at your option) any later version. 18// 19// This library is distributed in the hope that it will be useful, 20// but WITHOUT ANY WARRANTY; without even the implied warranty of 21// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 22// Lesser General Public License for more details. 23// 24// You should have received a copy of the GNU Lesser General Public 25// License along with this library; if not, write to the Free Software 26// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 27// 28// **************************************************************************** 29 30#include "CEchoGals.h" 31#include "CGinaDspCommObject.h" 32 33#include "Gina20DSP.c" 34 35 36/**************************************************************************** 37 38 Construction and destruction 39 40 ****************************************************************************/ 41 42//=========================================================================== 43// 44// Constructor 45// 46//=========================================================================== 47 48CGinaDspCommObject::CGinaDspCommObject 49( 50 PDWORD pdwRegBase, // Virtual ptr to DSP registers 51 PCOsSupport pOsSupport 52) : CGdDspCommObject( pdwRegBase, pOsSupport ) 53{ 54 strcpy( m_szCardName, "Gina" ); 55 m_pdwDspRegBase = pdwRegBase; // Virtual addr DSP's register base 56 57 m_wNumPipesOut = 10; 58 m_wNumPipesIn = 4; 59 m_wNumBussesOut = 10; 60 m_wNumBussesIn = 4; 61 m_wFirstDigitalBusOut = 8; 62 m_wFirstDigitalBusIn = 2; 63 64 m_fHasVmixer = FALSE; 65 66 m_wNumMidiOut = 0; // # MIDI out channels 67 m_wNumMidiIn = 0; // # MIDI in channels 68 69 m_pwDspCodeToLoad = pwGina20DSP; 70 71 // 72 // Since this card has no ASIC, mark it as loaded so everything works OK 73 // 74 m_bASICLoaded = TRUE; 75 76} // CGinaDspCommObject::CGinaDspCommObject( DWORD dwPhysRegBase ) 77 78 79//=========================================================================== 80// 81// Destructor 82// 83//=========================================================================== 84 85CGinaDspCommObject::~CGinaDspCommObject() 86{ 87} // CGinaDspCommObject::~CGinaDspCommObject() 88 89 90 91 92/**************************************************************************** 93 94 Hardware config 95 96 ****************************************************************************/ 97 98//=========================================================================== 99// 100// Destructor 101// 102//=========================================================================== 103 104ECHOSTATUS CGinaDspCommObject::SetInputClock(WORD wClock) 105{ 106 ECHO_DEBUGPRINTF( ( "CGinaDspCommObject::SetInputClock:\n" ) ); 107 108 switch ( wClock ) 109 { 110 case ECHO_CLOCK_INTERNAL : 111 112 // Reset the audio state to unknown (just in case) 113 m_byGDCurrentClockState = GD_CLOCK_UNDEF; 114 m_byGDCurrentSpdifStatus = GD_SPDIF_STATUS_UNDEF; 115 116 SetSampleRate(); 117 118 m_wInputClock = wClock; 119 120 ECHO_DEBUGPRINTF( ( "\tSet Gina clock to INTERNAL\n" ) ); 121 break; 122 123 case ECHO_CLOCK_SPDIF : 124 m_pDspCommPage->byGDClockState = GD_CLOCK_SPDIFIN; 125 m_pDspCommPage->byGDSpdifStatus = GD_SPDIF_STATUS_NOCHANGE; 126 127 ClearHandshake(); 128 SendVector( DSP_VC_SET_GD_AUDIO_STATE ); 129 130 m_byGDCurrentClockState = GD_CLOCK_SPDIFIN; 131 132 ECHO_DEBUGPRINTF( ( "\tSet Gina clock to SPDIF\n" ) ); 133 134 m_wInputClock = wClock; 135 break; 136 137 default : 138 return ECHOSTATUS_CLOCK_NOT_SUPPORTED; 139 140 } // switch ( wClock ) 141 142 return ECHOSTATUS_OK; 143 144} // ECHOSTATUS CGinaDspCommObject::SetInputClock() 145 146 147// **** GinaDspCommObject.cpp **** 148