Changeset 151 for sbliveos2/trunk/drv16/mpu401.cpp
- Timestamp:
- May 28, 2000, 6:50:46 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sbliveos2/trunk/drv16/mpu401.cpp
r147 r151 40 40 #include "parse.h" 41 41 #include "ossidc.h" 42 #include <dbgos2.h> 43 44 #define TIMEOUT 60000 42 45 43 46 … … 47 50 MIDIAUDIO ( AUDIOHW_MPU401_PLAY, pTimer ) 48 51 { 49 static char szName[] = "SBLive #"; // Instance name for RTMIDI. A number will be appended.52 static char szName[] = "SBLive RTMIDI #"; // Instance name for RTMIDI. A number will be appended. 50 53 static char szSuffix[] = "0"; // Printable char that is appended to szName. 51 54 52 55 // RTMIDI (MIDI.SYS) related stuff 53 ++szSuffix[0]; // Bump number in instance name.56 //// ++szSuffix[0]; // Bump number in instance name. 54 57 strcpy( szRTMIDI_Name, szName ); // Setup instance name. 55 58 strcat( szRTMIDI_Name, szSuffix ); // Append ASCII number to instance name. 56 ulRTMIDI_Caps = MIDICAPSA_INPUT; // Set RTMIDI caps. 57 // When we have an IRQ and a send capability, add next line. 58 // ulCapabilities |= MIDICAPSA_OUTPUT; 59 ulRTMIDI_Caps = MIDICAPSA_INPUT | MIDICAPSA_OUTPUT; // Set RTMIDI caps. 59 60 60 61 midiOutStreamId = 0; … … 124 125 int MPU_401::writeByte(BYTE b) 125 126 { 126 //TODO: 127 if(!midiOutStreamId) { 128 DebugInt3(); 129 return 0; 130 } 131 unsigned int i; 132 133 for (i=0; i<TIMEOUT; i++) { 134 if(OSS16_WriteMidiByte(midiOutStreamId, b)) { 135 return 1; 136 } 137 iodelay(1); 138 } 127 139 return 0; 128 140 } … … 132 144 //TODO: 133 145 return -1; 146 } 147 148 void MPU_401::processIrq(unsigned long streamid) 149 { 150 char buffer[64]; 151 int bufsize; 152 153 MIDIAUDIO* pma = (MIDIAUDIO *) pAudioHWList->Head(); 154 while (pma) { 155 if((pma->ulDeviceType == AUDIOHW_MPU401_CAPTURE) || 156 (pma->ulDeviceType == AUDIOHW_MPU401_PLAY)) { 157 break; 158 } 159 pma = (MIDIAUDIO *) pma->pNext; 160 } 161 if(pma == NULL) { 162 dprintf(("MPU_401::processIrq: mpu device found!!")); 163 return; 164 } 165 166 while(TRUE) { 167 bufsize = OSS16_ReadMidiBytes(streamid, &buffer[0], sizeof(buffer)); 168 for(int i=0;i<bufsize;i++) { 169 pma->pfnSendByte(pma->ulRTMIDI_Handle, buffer[i]); 170 } 171 if(bufsize != sizeof(buffer)) { 172 break; 173 } 174 } 134 175 } 135 176 … … 175 216 USHORT MPU_401::RTMIDI_OpenReceive(void) 176 217 { 218 if(midiOutStreamId == 0) { 219 midiOutStreamId = OSS16_OpenMidiStream(MIDI_RECEIVE); 220 } 221 return (midiOutStreamId) ? 0 : MIDIERRA_HW_FAILED; 222 } 223 224 USHORT MPU_401::RTMIDI_OpenSend(void) 225 { 177 226 if(midiInStreamId == 0) { 178 midiInStreamId = OSS16_OpenMidiStream(MIDI_ RECEIVE);227 midiInStreamId = OSS16_OpenMidiStream(MIDI_SEND); 179 228 } 180 229 return (midiInStreamId) ? 0 : MIDIERRA_HW_FAILED; 181 230 } 182 231 183 USHORT MPU_401::RTMIDI_OpenSend(void)184 {185 if(midiOutStreamId == 0) {186 midiOutStreamId = OSS16_OpenMidiStream(MIDI_SEND);187 }188 return (midiOutStreamId) ? 0 : MIDIERRA_HW_FAILED;189 }190 191 232 USHORT MPU_401::RTMIDI_CloseReceive(void) 192 233 { 193 OSS16_CloseMidiStream(MIDI_RECEIVE, midiInStreamId); 234 if(midiOutStreamId) { 235 OSS16_CloseMidiStream(MIDI_RECEIVE, midiOutStreamId); 236 midiOutStreamId = 0; 237 } 194 238 return 0; 195 239 } … … 197 241 USHORT MPU_401::RTMIDI_CloseSend(void) 198 242 { 199 OSS16_CloseMidiStream(MIDI_SEND, midiOutStreamId); 200 return 0; 201 } 202 243 if(midiInStreamId) { 244 OSS16_CloseMidiStream(MIDI_SEND, midiInStreamId); 245 midiInStreamId = 0; 246 } 247 return 0; 248 } 249
Note:
See TracChangeset
for help on using the changeset viewer.