Changeset 468 for OCO/trunk/drv16/ioctl.cpp
- Timestamp:
- Nov 4, 2009, 4:21:24 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
OCO/trunk/drv16/ioctl.cpp
r33 r468 72 72 // stream idle bit in the stream state then write the sysfilenum 73 73 // into the request packet, set rc = 0 and return 74 if (p->sMode == IDLE) { 75 pstream = FindStream_fromFile((ULONG) prp->s.ioctl.usSysFileNum); 76 if (pstream) 77 pstream->ulStreamState |= STREAM_IDLE; 78 p->pvReserved = (VOID FAR *) (ULONG)prp->s.ioctl.usSysFileNum; 79 p->sReturnCode = 0; 80 return; 74 if (p->sMode == IDLE) 75 { 76 pstream = FindStream_fromFile((ULONG) prp->s.ioctl.usSysFileNum); 77 if (pstream) 78 pstream->ulStreamState |= STREAM_IDLE; 79 p->pvReserved = (VOID FAR *) (ULONG)prp->s.ioctl.usSysFileNum; 80 p->sReturnCode = 0; 81 return; 81 82 } 82 83 // call FindStream_fromFile to see if there is already a stream … … 182 183 //HACK BEGIN 183 184 if(pfnSHD) { 184 dprintf(("Stream was previously registered; reregister it"));185 // dprintf(("Stream was previously registered; reregister it")); 185 186 pstream->pfnSHD = pfnSHD; 186 187 pstream->hstream = hstream; … … 201 202 ULONG ulDevicetype; 202 203 204 #ifdef DEBUG 205 // dprintf(("IACapability: src type: %d, op %d",(USHORT)p->ulDataType, (USHORT)p->ulOperation)); 206 #endif 207 203 208 // get the hardware device type based on the datatype and operation 204 209 ulDevicetype = GetHardwareType((USHORT)p->ulDataType,(USHORT)p->ulOperation,LDev); 205 210 206 211 #ifdef DEBUG 207 // dprintf((" dev type: %d, ldev %d",ulDevicetype, LDev));212 // dprintf(("IACapability: dev type: %d, ldev %d",ulDevicetype, LDev)); 208 213 #endif 209 214 … … 215 220 // bailout if no hardware object is returned.. 216 221 pHWobj = GetHardwareDevice(ulDevicetype); 217 if (pHWobj) { 222 if (pHWobj) 223 { 218 224 pHWobj->DevCaps(p); 219 225 if (p->ulSupport != SUPPORT_SUCCESS) { 226 dprintf(("IACapability: Error support")); 220 227 prp->usStatus |= RPERR; 221 228 } … … 223 230 else { 224 231 #ifdef DEBUG 225 dprintf((" Error getting hardware object"));232 dprintf(("IACapability: Error get HW obj")); 226 233 #endif 227 234 p->ulSupport = UNSUPPORTED_DATATYPE; … … 248 255 ULONG addr; 249 256 250 if (p->usIOCtlRequest != AUDIO_CHANGE) { 257 if (p->usIOCtlRequest != AUDIO_CHANGE) 258 { 259 dprintf(("IAudioControl: Error support req:%x",p->usIOCtlRequest)); 251 260 p->sReturnCode = INVALID_REQUEST; 252 261 prp->usStatus |= RPERR | RPBADCMD; … … 260 269 addr = OFFSETOF(pAudChange); 261 270 addr += sizeof(MCI_AUDIO_CHANGE); 262 if(addr >= 0x10000UL) { 263 dprintf(("Invalid MCI_AUDIO_CHANGE pointer %lx!!", (ULONG)pAudChange)); 271 if(addr >= 0x10000UL) 272 { 273 dprintf(("Invalid MCI_AUDIO_CHANGE pnt %lx!!", (ULONG)pAudChange)); 264 274 p->sReturnCode = INVALID_REQUEST; 265 275 prp->usStatus |= RPERR | RPBADCMD; … … 271 281 addr = OFFSETOF(pMasterVol); 272 282 addr += sizeof(MCI_TRACK_INFO); 273 if(addr >= 0x10000UL) { 274 dprintf(("Invalid MCI_TRACK_INFO pointer %lx!!", (ULONG)pMasterVol)); 283 if(addr >= 0x10000UL) 284 { 285 dprintf(("Invalid MCI_TRACK_INFO pnt %lx!!", (ULONG)pMasterVol)); 275 286 p->sReturnCode = INVALID_REQUEST; 276 287 prp->usStatus |= RPERR | RPBADCMD; … … 280 291 pStream = FindStream_fromFile((ULONG) prp->s.ioctl.usSysFileNum); 281 292 if(pStream == NULL) { 282 dprintf(("I octlAudioControl stream %lx not found!", (ULONG) prp->s.ioctl.usSysFileNum));293 dprintf(("IAudioControl stream %lx not found!", (ULONG) prp->s.ioctl.usSysFileNum)); 283 294 DebugInt3(); 284 295 return; … … 287 298 pStream->SetProperty(PROPERTY_BALANCE, pAudChange->lBalance); 288 299 289 if(pAudChange->lVolume != AUDIO_IGNORE) { 300 if (pAudChange->lVolume != AUDIO_IGNORE) 301 { 290 302 // stream volume ranges from 0 to 0x7FFFFFFF (linear) 291 303 volume = pAudChange->lVolume >> 16UL; … … 295 307 } 296 308 297 if (pMasterVol && pMasterVol->usMasterVolume != AUDIO_IGNORE)309 if (pMasterVol && pMasterVol->usMasterVolume != AUDIO_IGNORE) 298 310 { 299 311 // master volume ranges from 0 to 0x7FFF (linear) 300 312 volume = pMasterVol->usMasterVolume; 301 313 volume = (volume*OSS32_MAX_VOLUME)/0x7FFFUL; 302 if(volume > OSS32_MAX_VOLUME) { 314 if (volume > OSS32_MAX_VOLUME) 315 { 303 316 volume = OSS32_MAX_VOLUME; 304 317 } 305 // dprintf((" Set mastervolumeto %d", volume));318 // dprintf(("IlAudioControl:Set MV to %d", volume)); 306 319 MixerSetVolume(MixerStreamId, OSS32_MIX_VOLUME_MASTER_FRONT, MAKE_VOLUME_LR(volume, volume)); 307 if(mixcaps.fuCtrlCaps & OSS32_MIX_FLAG(OSS32_MIX_VOLUME_MASTER_REAR)) { 320 if(mixcaps.fuCtrlCaps & OSS32_MIX_FLAG(OSS32_MIX_VOLUME_MASTER_REAR)) 321 { 308 322 MixerSetVolume(MixerStreamId, OSS32_MIX_VOLUME_MASTER_REAR, MAKE_VOLUME_LR(volume, volume)); 309 323 } … … 345 359 volume = OSS32_MAX_VOLUME; 346 360 } 347 // dprintf((" Set input gainof %x to %d", prp->s.ioctl.usSysFileNum, volume));361 // dprintf(("IAudioControl:Set IG of %x to %d", prp->s.ioctl.usSysFileNum, volume)); 348 362 pStream->SetProperty(PROPERTY_INPUTGAIN, MAKE_VOLUME_LR(volume, volume)); 349 363 } … … 353 367 void IoctlDirectAudio(PREQPACKET prp) 354 368 { 369 dprintf(("IoctlDirectAudio")); 355 370 if(prp->s.ioctl.bCode == DAUDIO_OPEN) 356 371 { … … 362 377 if(DevHelp_VerifyAccess(SELECTOROF(pInit), sizeof(MCI_AUDIO_INIT), OFFSETOF(pInit), VERIFY_READWRITE)) 363 378 { 364 dprintf(("Invalid MCI_AUDIO_INIT p ointer%lx!!", (ULONG)pInit));379 dprintf(("Invalid MCI_AUDIO_INIT pnt %lx!!", (ULONG)pInit)); 365 380 prp->usStatus |= RPERR | RPBADCMD; 366 381 return; … … 382 397 pHWobj->DevCaps(&audioCaps); 383 398 if (audioCaps.ulSupport != SUPPORT_SUCCESS) { 384 dprintf(("I octlDirectAudio: DevCaps failed"));399 dprintf(("IDirectAudio: DevCaps failed")); 385 400 pInit->sReturnCode = INVALID_REQUEST; 386 401 prp->usStatus |= RPERR; … … 396 411 pStream = new DWAVESTREAM(AUDIOHW_WAVE_PLAY, pInit, prp->s.ioctl.usSysFileNum, MixerStreamId); 397 412 if(pStream == NULL) { 413 dprintf(("IDirectAudio: pStream")); 398 414 DebugInt3(); 399 415 pInit->sReturnCode = INVALID_REQUEST; … … 404 420 if(!pStream->IsEverythingOk()) { 405 421 delete pStream; 422 dprintf(("IlDirectAudio: IsEverythingOk")); 406 423 DebugInt3(); 407 424 pInit->sReturnCode = INVALID_REQUEST; … … 429 446 if(DevHelp_VerifyAccess(SELECTOROF(pInit), sizeof(MCI_AUDIO_INIT), OFFSETOF(pInit), VERIFY_READWRITE)) 430 447 { 431 dprintf(("Invalid MCI_AUDIO_INIT p ointer%lx!!", (ULONG)pInit));448 dprintf(("Invalid MCI_AUDIO_INIT pnt %lx!!", (ULONG)pInit)); 432 449 prp->usStatus |= RPERR | RPBADCMD; 433 450 return; … … 449 466 pHWobj->DevCaps(&audioCaps); 450 467 if (audioCaps.ulSupport != SUPPORT_SUCCESS) { 451 dprintf(("I octlDirectAudio: DevCaps failed"));468 dprintf(("IlDirectAudio: DevCaps failed")); 452 469 prp->usStatus |= RPERR; 453 470 pInit->sReturnCode = INVALID_REQUEST; … … 471 488 if(DevHelp_VerifyAccess(SELECTOROF(lpCaps), sizeof(OSS32_DEVCAPS), OFFSETOF(lpCaps), VERIFY_READWRITE)) 472 489 { 473 dprintf(("Invalid OSS32_DEVCAPS p ointer%lx!!", (ULONG)lpCaps));490 dprintf(("Invalid OSS32_DEVCAPS pnt %lx!!", (ULONG)lpCaps)); 474 491 prp->usStatus |= RPERR | RPBADCMD; 475 492 return; … … 493 510 pStream = FindStream_fromFile((ULONG) prp->s.ioctl.usSysFileNum); 494 511 if(pStream == NULL) { 495 dprintf(("I octlDirectAudio stream %lx not found!", (ULONG) prp->s.ioctl.usSysFileNum));512 dprintf(("IDirectAudio stream %lx not found!", (ULONG) prp->s.ioctl.usSysFileNum)); 496 513 DebugInt3(); 497 514 prp->usStatus |= RPERR | RPBADCMD; … … 504 521 if(DevHelp_VerifyAccess(SELECTOROF(pDAudioCmd), sizeof(DAUDIO_CMD), OFFSETOF(pDAudioCmd), VERIFY_READWRITE)) 505 522 { 506 dprintf(("Invalid DAUDIO_CMD p ointer%lx!!", (ULONG)pDAudioCmd));523 dprintf(("Invalid DAUDIO_CMD pnt %lx!!", (ULONG)pDAudioCmd)); 507 524 prp->usStatus |= RPERR | RPBADCMD; 508 525 return; … … 627 644 { 628 645 #ifdef DEBUG 629 // dprintf(("StrategyIoctl. cat %d, code: %d,dev %d", prp->s.ioctl.bCategory, prp->s.ioctl.bCode, current_device));646 dprintf(("StrategyIoctl:cat:0x%x, code:0x%x dev %d", prp->s.ioctl.bCategory, prp->s.ioctl.bCode, current_device)); 630 647 #endif 631 if(prp->s.ioctl.bCategory == DAUDIO_IOCTL_CAT) { 648 if (prp->s.ioctl.bCategory == DAUDIO_IOCTL_CAT) 649 { 632 650 IoctlDirectAudio(prp); 633 651 return; 634 652 } 635 653 636 if(prp->s.ioctl.bCategory == 0x90) { 654 if (prp->s.ioctl.bCategory == 0x90) 655 { 637 656 IoctlMixer(prp, LDev); 638 657 return; 639 658 } 640 if(prp->s.ioctl.bCategory != AUDIO_IOCTL_CAT) { 659 if (prp->s.ioctl.bCategory != AUDIO_IOCTL_CAT) 660 { 641 661 prp->usStatus |= RPERR | RPBADCMD; 642 662 return; … … 645 665 switch (prp->s.ioctl.bCode) 646 666 { 647 case AUDIO_INIT: 648 IoctlAudioInit(prp, LDev); 649 break; 650 case AUDIO_CONTROL: 651 IoctlAudioControl(prp); 652 break; 653 case AUDIO_CAPABILITY: 654 IoctlAudioCapability(prp, LDev); 655 break; 656 default: 657 prp->usStatus |= RPERR | RPBADCMD; 658 break; 659 } 667 case AUDIO_INIT: 668 IoctlAudioInit(prp, LDev); 669 break; 670 case AUDIO_CONTROL: 671 IoctlAudioControl(prp); 672 break; 673 case AUDIO_CAPABILITY: 674 IoctlAudioCapability(prp, LDev); 675 break; 676 default: 677 prp->usStatus |= RPERR | RPBADCMD; 678 break; 679 } 680 681 #ifdef DEBUG 682 dprintf(("StrategyIoctl:ret:0x%x", (USHORT)prp->usStatus)); 683 #endif 660 684 return; 661 685 }
Note:
See TracChangeset
for help on using the changeset viewer.