ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

midiuart.c
Go to the documentation of this file.
00001 /*
00002     ReactOS Sound System
00003     MIDI UART support
00004 
00005     Author:
00006         Andrew Greenwood (silverblade@reactos.org)
00007 
00008     History:
00009         26 May 2008 - Created
00010 
00011     Notes:
00012         Functions documented in midiuart.h
00013 */
00014 
00015 #include <ntddk.h>
00016 #include "midiuart.h"
00017 
00018 BOOLEAN
00019 WaitForMidiUartStatus(
00020     IN  PUCHAR UartBasePort,
00021     IN  UCHAR StatusFlags,
00022     IN  ULONG Timeout)
00023 {
00024     ULONG RemainingTime = Timeout;
00025 
00026     while ( RemainingTime -- )
00027     {
00028         if ( READ_MIDIUART_STATUS(UartBasePort) & StatusFlags )
00029         {
00030             return TRUE;
00031         }
00032     }
00033 
00034     return FALSE;
00035 }
00036 
00037 BOOLEAN
00038 WriteMidiUartByte(
00039     IN  PUCHAR UartBasePort,
00040     IN  UCHAR Data,
00041     IN  ULONG Timeout)
00042 {
00043     if ( ! WaitForMidiUartCTS(UartBasePort, Timeout) )
00044     {
00045         return FALSE;
00046     }
00047 
00048     WRITE_MIDIUART_DATA(UartBasePort, Data);
00049 
00050     return TRUE;
00051 }
00052 
00053 BOOLEAN
00054 WriteMidiUartMulti(
00055     IN  PUCHAR UartBasePort,
00056     IN  PUCHAR Data,
00057     IN  ULONG DataLength,
00058     IN  ULONG Timeout)
00059 {
00060     ULONG DataIndex;
00061 
00062     for ( DataIndex = 0; DataIndex < DataLength; ++ DataIndex )
00063     {
00064         if ( ! WriteMidiUartByte(UartBasePort, Data[DataIndex], Timeout) )
00065         {
00066             /* We failed - don't try writing any more */
00067             return FALSE;
00068         }
00069     }
00070 
00071     return TRUE;
00072 }
00073 
00074 BOOLEAN
00075 ReadMidiUartByte(
00076     IN  PUCHAR UartBasePort,
00077     OUT UCHAR* Data,
00078     IN  ULONG Timeout)
00079 {
00080     if ( ! Data )
00081     {
00082         return FALSE;
00083     }
00084 
00085     if ( ! WaitForMidiUartDTR(UartBasePort, Timeout) )
00086     {
00087         return FALSE;
00088     }
00089 
00090     *Data = READ_MIDIUART_DATA(UartBasePort);
00091 
00092     return TRUE;
00093 }

Generated on Sat May 26 2012 04:35:03 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.