ReactOS  0.4.14-dev-342-gdc047f9
card.c
Go to the documentation of this file.
1 /*
2  Sound card operations
3 
4  http://www.cae.wisc.edu/~brodskye/sb16doc/sb16doc.html
5 */
6 
7 #include <ntddk.h>
8 #include "sndblst.h"
9 
10 VOID SetOutputSampleRate(ULONG BasePort, ULONG SampleRate)
11 {
12  // This only works for DSP v4.xx ONLY - need a workaround!
13  DPRINT("Setting output sample rate\n");
14 
15  // WAIT
16 // if (! WaitToSend(BasePort))
17 // return;
18 
20  SB_WRITE_BYTE(BasePort, SampleRate / 256); // high
21  SB_WRITE_BYTE(BasePort, SampleRate % 256); // low
22 }
23 
24 
25 VOID EnableSpeaker(ULONG BasePort, BOOLEAN SpeakerOn)
26 {
27  DPRINT("Setting speaker status %d\n", SpeakerOn);
28 
29 // if (! WaitForWrite(BasePort))
30 // return;
31 
32  SB_WRITE_BYTE(BasePort, SpeakerOn ? SB_ENABLE_SPEAKER : SB_DISABLE_SPEAKER);
33 }
34 
35 
37 {
38  DPRINT("Obtaining speaker status\n");
39 
40 // if (! WaitToSend(BasePort))
41 // return FALSE;
42 
44  if (! WaitToReceive(BasePort))
45  return FALSE;
46 
47  return SB_READ_DATA(BasePort) == 0xff;
48 }
49 
50 
51 VOID BeginPlayback(ULONG BasePort, ULONG BitDepth, ULONG Channels, ULONG BlockSize)
52 {
53  DPRINT("BeginPlayback(%d, %d, %d, %d)\n", BasePort, BitDepth, Channels, BlockSize);
54 
55 // switch(BitDepth)
56 // {
57 // case 8 : Command = 0xc0; break;
58 // case 16 : Command = 0xb0; break; // Make sure we support it
59 // default : Command = 0xc0;
60 // }
61 
62  DPRINT("Initiating playback\n");
63 
64  // TEMPORARY:
65  SB_WRITE_BYTE(BasePort, 0xc6);
66  SB_WRITE_BYTE(BasePort, 0); // mode - TEMPORARY
67  SB_WRITE_BYTE(BasePort, BlockSize % 256);
68  SB_WRITE_BYTE(BasePort, BlockSize / 256);
69 }
#define SB_WRITE_BYTE(bp, x)
Definition: sndblst.h:84
unsigned char BOOLEAN
void DPRINT(...)
Definition: polytest.cpp:61
#define SB_DISABLE_SPEAKER
Definition: sndblst.h:62
BOOLEAN WaitToReceive(ULONG BasePort)
Definition: portio.c:40
#define SB_GET_SPEAKER_STATUS
Definition: sndblst.h:63
#define SB_ENABLE_SPEAKER
Definition: sndblst.h:61
#define SB_READ_DATA(bp)
Definition: sndblst.h:70
BOOLEAN IsSpeakerEnabled(ULONG BasePort)
Definition: card.c:36
VOID SetOutputSampleRate(ULONG BasePort, ULONG SampleRate)
Definition: card.c:10
unsigned int ULONG
Definition: retypes.h:1
VOID EnableSpeaker(ULONG BasePort, BOOLEAN SpeakerOn)
Definition: card.c:25
#define SB_SET_OUTPUT_RATE
Definition: sndblst.h:58
VOID BeginPlayback(ULONG BasePort, ULONG BitDepth, ULONG Channels, ULONG BlockSize)
Definition: card.c:51