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 48 CGinaDspCommObject::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 85 CGinaDspCommObject::~CGinaDspCommObject() 86 { 87 } // CGinaDspCommObject::~CGinaDspCommObject() 88 89 90 91 92 /**************************************************************************** 93 94 Hardware config 95 96 ****************************************************************************/ 97 98 //=========================================================================== 99 // 100 // Destructor 101 // 102 //=========================================================================== 103 104 ECHOSTATUS 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