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.
172 lines
5.5 KiB
172 lines
5.5 KiB
/*==========================================================================
|
|
*
|
|
* Copyright (C) 1998-2000 Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
* File: ComPortData.h
|
|
* Content: Serial communications port data management class
|
|
*
|
|
*
|
|
* History:
|
|
* Date By Reason
|
|
* ==== == ======
|
|
* 01/20/1998 jtk Created
|
|
* 04/25/2000 jtk Derived from ComPort class
|
|
***************************************************************************/
|
|
|
|
#ifndef __COM_PORT_DATA_H__
|
|
#define __COM_PORT_DATA_H__
|
|
|
|
//**********************************************************************
|
|
// Constant definitions
|
|
//**********************************************************************
|
|
|
|
//
|
|
// maximum length of comport string
|
|
//
|
|
#define MAX_COMPORT_LENGTH 10
|
|
|
|
//
|
|
// enumerated values for noting which components have been initialized
|
|
//
|
|
typedef enum _COMPORT_PARSE_KEY_INDEX
|
|
{
|
|
COMPORT_PARSE_KEY_DEVICE = 0,
|
|
COMPORT_PARSE_KEY_BAUDRATE,
|
|
COMPORT_PARSE_KEY_STOPBITS,
|
|
COMPORT_PARSE_KEY_PARITY,
|
|
COMPORT_PARSE_KEY_FLOWCONTROL,
|
|
|
|
// this must be the last item
|
|
COMPORT_PARSE_KEY_MAX
|
|
} COMPORT_PARSE_KEY_INDEX;
|
|
|
|
//**********************************************************************
|
|
// Macro definitions
|
|
//**********************************************************************
|
|
|
|
//**********************************************************************
|
|
// Structure definitions
|
|
//**********************************************************************
|
|
|
|
//
|
|
// string blocks for parsing com port parameters
|
|
//
|
|
typedef enum _ADDRESS_TYPE ADDRESS_TYPE;
|
|
typedef struct _STRING_BLOCK STRING_BLOCK;
|
|
|
|
extern STRING_BLOCK g_BaudRate[];
|
|
extern const DWORD g_dwBaudRateCount;
|
|
extern STRING_BLOCK g_StopBits[];
|
|
extern const DWORD g_dwStopBitsCount;
|
|
extern STRING_BLOCK g_Parity[];
|
|
extern const DWORD g_dwParityCount;
|
|
extern STRING_BLOCK g_FlowControl[];
|
|
extern const DWORD g_dwFlowControlCount;
|
|
|
|
//**********************************************************************
|
|
// Variable definitions
|
|
//**********************************************************************
|
|
|
|
//**********************************************************************
|
|
// Function prototypes
|
|
//**********************************************************************
|
|
|
|
//**********************************************************************
|
|
// Class definition
|
|
//**********************************************************************
|
|
|
|
class CComPortData
|
|
{
|
|
public:
|
|
CComPortData();
|
|
~CComPortData();
|
|
|
|
HRESULT CComPortData::ComPortDataFromDP8Addresses( IDirectPlay8Address *const pHostAddress,
|
|
IDirectPlay8Address *const pDeviceAddress );
|
|
IDirectPlay8Address *CComPortData::DP8AddressFromComPortData( const ADDRESS_TYPE AddressType ) const;
|
|
|
|
DWORD GetDeviceID( void ) const { return m_dwDeviceID; }
|
|
HRESULT SetDeviceID( const DWORD dwDeviceID );
|
|
|
|
SP_BAUD_RATE GetBaudRate( void ) const { return m_BaudRate; }
|
|
HRESULT SetBaudRate( const SP_BAUD_RATE BaudRate );
|
|
|
|
SP_STOP_BITS GetStopBits( void ) const { return m_StopBits; }
|
|
HRESULT SetStopBits( const SP_STOP_BITS StopBits );
|
|
|
|
SP_PARITY_TYPE GetParity( void ) const { return m_Parity; }
|
|
HRESULT SetParity( const SP_PARITY_TYPE Parity );
|
|
|
|
SP_FLOW_CONTROL GetFlowControl( void ) const { return m_FlowControl; }
|
|
HRESULT SetFlowControl( const SP_FLOW_CONTROL FlowControl );
|
|
|
|
void ClearComPortName( void ) { memset( &m_ComPortName, 0x00, sizeof( m_ComPortName ) ); }
|
|
TCHAR *ComPortName( void ) { return m_ComPortName; }
|
|
|
|
BOOL IsEqual ( const CComPortData *const pOtherData ) const;
|
|
void Copy( const CComPortData *const pOtherData );
|
|
|
|
void Reset( void )
|
|
{
|
|
SetDeviceID( INVALID_DEVICE_ID );
|
|
SetBaudRate( CBR_57600 );
|
|
SetStopBits( ONESTOPBIT );
|
|
SetParity( NOPARITY );
|
|
SetFlowControl( FLOW_NONE );
|
|
memset( &m_ComponentInitializationState, 0x00, sizeof( m_ComponentInitializationState ) );
|
|
}
|
|
|
|
protected:
|
|
|
|
private:
|
|
DWORD m_dwDeviceID;
|
|
|
|
//
|
|
// com port information
|
|
//
|
|
TCHAR m_ComPortName[ MAX_COMPORT_LENGTH ]; // name of com port
|
|
|
|
//
|
|
// communications parameters
|
|
//
|
|
SP_BAUD_RATE m_BaudRate; // baud rate
|
|
SP_STOP_BITS m_StopBits; // stop bits
|
|
SP_PARITY_TYPE m_Parity; // parity
|
|
SP_FLOW_CONTROL m_FlowControl; // flow control
|
|
|
|
//
|
|
// values indicating which components have been initialized
|
|
//
|
|
SP_ADDRESS_COMPONENT_STATE m_ComponentInitializationState[ COMPORT_PARSE_KEY_MAX ];
|
|
|
|
static HRESULT ParseDevice( const void *const pAddressComponent,
|
|
const DWORD dwComponentSize,
|
|
const DWORD dwComponentType,
|
|
void *const pContext );
|
|
|
|
static HRESULT ParseBaud( const void *const pAddressComponent,
|
|
const DWORD dwComponentSize,
|
|
const DWORD dwComponentType,
|
|
void *const pContext );
|
|
|
|
static HRESULT ParseStopBits( const void *const pAddressComponent,
|
|
const DWORD dwComponentSize,
|
|
const DWORD dwComponentType,
|
|
void *const pContext );
|
|
|
|
static HRESULT ParseParity( const void *const pAddressComponent,
|
|
const DWORD dwComponentSize,
|
|
const DWORD dwComponentType,
|
|
void *const pContext );
|
|
|
|
static HRESULT ParseFlowControl( const void *const pAddressComponent,
|
|
const DWORD dwComponentSize,
|
|
const DWORD dwComponentType,
|
|
void *const pContext );
|
|
|
|
// prevent unwarranted copies
|
|
CComPortData( const CComPortData & );
|
|
CComPortData& operator=( const CComPortData & );
|
|
};
|
|
|
|
#endif // __COM_PORT_DATA_H__
|