Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
COMM_DEVICE
Abstract:
This module contains the definition for the COMM_DEVICE class.
Author:
Ramon J. San Andres (ramonsa) 08-Jul-91
Environment:
ULIB, User Mode
Notes:
--*/
#if !defined (_COMM_DEVICE_)
#define _COMM_DEVICE_
DECLARE_CLASS( FSN_FILE ); DECLARE_CLASS( FILE_STREAM ); DECLARE_CLASS( COMM_DEVICE );
//
// PARITY
//
enum PARITY { COMM_PARITY_NONE = NOPARITY, COMM_PARITY_EVEN = EVENPARITY, COMM_PARITY_ODD = ODDPARITY, COMM_PARITY_MARK = MARKPARITY, COMM_PARITY_SPACE = SPACEPARITY };
//
// STOP BITS
//
enum STOPBITS {
COMM_STOPBITS_1 = ONESTOPBIT, COMM_STOPBITS_15 = ONE5STOPBITS, COMM_STOPBITS_2 = TWOSTOPBITS };
//
// DTR control
//
enum DTR_CONTROL { DTR_ENABLE = DTR_CONTROL_ENABLE, DTR_DISABLE = DTR_CONTROL_DISABLE, DTR_HANDSHAKE = DTR_CONTROL_HANDSHAKE };
//
// RTS control
//
enum RTS_CONTROL { RTS_ENABLE = RTS_CONTROL_ENABLE, RTS_DISABLE = RTS_CONTROL_DISABLE, RTS_HANDSHAKE = RTS_CONTROL_HANDSHAKE, RTS_TOGGLE = RTS_CONTROL_TOGGLE };
class COMM_DEVICE : public OBJECT {
public:
DECLARE_CAST_MEMBER_FUNCTION( COMM_DEVICE );
ULIB_EXPORT DECLARE_CONSTRUCTOR( COMM_DEVICE );
VIRTUAL ULIB_EXPORT ~COMM_DEVICE( );
NONVIRTUAL ULIB_EXPORT BOOLEAN Initialize ( IN PCPATH PortName, OUT PBOOLEAN OpenError DEFAULT NULL );
NONVIRTUAL ULIB_EXPORT BOOLEAN CommitState ( );
NONVIRTUAL ULONG QueryBaudRate ( ) CONST;
NONVIRTUAL ULONG QueryDataBits ( ) CONST;
NONVIRTUAL DTR_CONTROL QueryDtrControl ( ) CONST;
NONVIRTUAL BOOLEAN QueryIdsr ( ) CONST;
NONVIRTUAL BOOLEAN QueryOcts ( ) CONST;
NONVIRTUAL BOOLEAN QueryOdsr ( ) CONST;
NONVIRTUAL PARITY QueryParity ( ) CONST;
NONVIRTUAL RTS_CONTROL QueryRtsControl ( ) CONST;
NONVIRTUAL STOPBITS QueryStopBits ( ) CONST;
NONVIRTUAL ULIB_EXPORT BOOLEAN QueryTimeOut ( ) CONST;
NONVIRTUAL BOOLEAN QueryXon ( ) CONST;
NONVIRTUAL BOOLEAN ReadState ( );
NONVIRTUAL ULIB_EXPORT BOOLEAN SetBaudRate ( IN ULONG BaudRate );
NONVIRTUAL ULIB_EXPORT BOOLEAN SetDataBits ( IN ULONG DataBits );
NONVIRTUAL ULIB_EXPORT BOOLEAN SetDtrControl ( IN DTR_CONTROL DtrControl );
NONVIRTUAL ULIB_EXPORT BOOLEAN SetIdsr ( IN BOOLEAN Idsr );
NONVIRTUAL ULIB_EXPORT BOOLEAN SetOcts ( IN BOOLEAN Octs );
NONVIRTUAL ULIB_EXPORT BOOLEAN SetOdsr ( IN BOOLEAN Odsr );
NONVIRTUAL ULIB_EXPORT BOOLEAN SetParity ( IN PARITY Parity );
NONVIRTUAL ULIB_EXPORT BOOLEAN SetRtsControl ( IN RTS_CONTROL RtsControl );
NONVIRTUAL ULIB_EXPORT BOOLEAN SetStopBits ( IN STOPBITS StopBits );
NONVIRTUAL ULIB_EXPORT BOOLEAN SetTimeOut ( IN BOOLEAN TimeOut );
NONVIRTUAL ULIB_EXPORT BOOLEAN SetXon ( IN BOOLEAN Xon );
protected:
private:
VOID Construct ( );
NONVIRTUAL VOID Destroy ( );
HANDLE _Handle; // Handle to the port
DCB _Dcb; // DCB Structure.
#if DBG==1
BOOLEAN _Initialized; // Object has been initialized
#endif // DBG
};
INLINE ULONG COMM_DEVICE::QueryBaudRate ( ) CONST
/*++
Routine Description:
Queries the baud rate
Arguments:
none
Return Value:
ULONG - The baud rate.
--*/
{
DebugAssert( _Initialized );
return (ULONG)_Dcb.BaudRate;
}
INLINE ULONG COMM_DEVICE::QueryDataBits ( ) CONST
/*++
Routine Description:
Queries the number of data bits
Arguments:
none
Return Value:
ULONG - The number of data bits
--*/
{
DebugAssert( _Initialized );
return (ULONG)_Dcb.ByteSize;
}
INLINE DTR_CONTROL COMM_DEVICE::QueryDtrControl ( ) CONST
/*++
Routine Description:
Queries the DTR control
Arguments:
none
Return Value:
DTR_CONTROL - The DTR control
--*/
{
DebugAssert( _Initialized );
return (DTR_CONTROL)_Dcb.fDtrControl;
}
INLINE BOOLEAN COMM_DEVICE::QueryIdsr ( ) CONST
/*++
Routine Description:
Queries whether DSR sensitivity is enabled or disabled
Arguments:
none
Return Value:
BOOLEAN - TRUE if DSR sensitivity enabled. FALSE otherwise.
--*/
{
DebugAssert( _Initialized );
return ( _Dcb.fDsrSensitivity != 0 );
}
INLINE BOOLEAN COMM_DEVICE::QueryOcts ( ) CONST
/*++
Routine Description:
Queries whether hanshaking using the CTS circuit is enabled or not.
Arguments:
none
Return Value:
BOOLEAN - TRUE if handshaking enabled. FALSE otherwise.
--*/
{
DebugAssert( _Initialized );
return ( _Dcb.fOutxCtsFlow != 0 );
}
INLINE BOOLEAN COMM_DEVICE::QueryOdsr ( ) CONST
/*++
Routine Description:
Queries whether handshaking using the DSR circuit is enabled or not
Arguments:
none
Return Value:
BOOLEAN - TRUE if handshaking enabled. FALSE otherwise.
--*/
{
DebugAssert( _Initialized );
return ( _Dcb.fOutxDsrFlow != 0 );
}
INLINE PARITY COMM_DEVICE::QueryParity ( ) CONST
/*++
Routine Description:
Queries the parity
Arguments:
none
Return Value:
BYTE - The parity value.
--*/
{
DebugAssert( _Initialized );
return (PARITY)_Dcb.Parity;
}
INLINE RTS_CONTROL COMM_DEVICE::QueryRtsControl ( ) CONST
/*++
Routine Description:
Queries the RTS control
Arguments:
none
Return Value:
RTS_CONTROL - The RTS control
--*/
{
DebugAssert( _Initialized );
return (RTS_CONTROL)_Dcb.fRtsControl;
}
INLINE STOPBITS COMM_DEVICE::QueryStopBits ( ) CONST
/*++
Routine Description:
Queries the number of stop bits
Arguments:
none
Return Value:
BYTE - The number of stop bits
--*/
{
DebugAssert( _Initialized );
return (STOPBITS)_Dcb.StopBits; }
INLINE BOOLEAN COMM_DEVICE::QueryXon ( ) CONST
/*++
Routine Description:
Queries whether XON/XOFF protocol is enabled or not.
Arguments:
none
Return Value:
BOOLEAN - TRUE if protocol enabled, FALSE otherwise
--*/
{
DebugAssert( _Initialized );
return ( _Dcb.fInX && _Dcb.fOutX ); }
#endif // _COMM_DEVICE_
|