//*****************************************************************************
//
// serial.h : Declarations and definitions for serial data communications
//    support.
//
// Author:  Reed Bement 04/09/2004
//
//*****************************************************************************

#define MAX_ERROR       255
#define MAX_PORTNAME    4
#define MAX_PORTS       8

// Serial error constants

#define BAD_PORT_NUM       0
#define BAD_BAUD_RATE      1
#define W32_COMM_ERR       2
#define COMM_ERR           3
#define SERIAL_UNINIT      4
#define READ_SIZE_ERR      5
#define BLOCK_TOO_BIG      6
#define LAST_SER_ERR       7

// The serial communications context.

typedef struct 
{
   DWORD          dwSize;
   DWORD          dwComPort;
   DWORD          dwBaudRate;
   DCB            dcb;
   HANDLE         hCom;
   DWORD          dwError;
   COMMTIMEOUTS   cto;
   char           szPortName[MAX_PORTNAME];
   char           szError[MAX_ERROR];
   DWORD          dwMaxBuffer;
} SERIAL_CONTEXT, *PSERIAL_CONTEXT; 


// Public function declarations

BOOL  InitSerial(PSERIAL_CONTEXT psc, DWORD dwComPort, DWORD dwBaudRate);
void  CloseSerial(PSERIAL_CONTEXT psc);
BOOL  SendSerialByte(PSERIAL_CONTEXT psc, BYTE b);
BOOL  RecvSerialByte(PSERIAL_CONTEXT psc, PBYTE pb);
BOOL  SendSerialBlock(PSERIAL_CONTEXT psc, PBYTE pb, DWORD dwByteCount);
BOOL  RecvSerialBlock(PSERIAL_CONTEXT psc, PBYTE pb, DWORD dwByteCount);
BOOL CheckCommStatus(PSERIAL_CONTEXT psc, PDWORD pdwRxCount, PDWORD pdwTxCount);

