/* com.h -- Exported definitions for main communications routines * * Copyright 1994 by Hilgraeve Inc. -- Monroe, MI * All rights reserved * * $Revision: 5 $ * $Date: 3/22/02 3:21p $ */ #if !defined(H_COM) #define H_COM // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-= CONSTANTS =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- #define COM_VERSION 20 // Function return codes #define COM_OK 0 #define COM_INVALID_HANDLE 1 #define COM_NOT_ENOUGH_MEMORY 2 #define COM_PORT_NOT_OPEN 3 #define COM_PORT_OPEN 4 #define COM_PORT_UNINITIALIZED 5 #define COM_PORT_IN_USE 6 #define COM_PORT_INVALID_NAME 7 #define COM_CANCELLED 8 #define COM_SEND_QUEUE_STUCK 12 #define COM_DEVICE_INVALID 13 #define COM_DEVICE_VERSION_ERROR 15 #define COM_DEVICE_ERROR 16 #define COM_DEVICE_LIBERROR 14 #define COM_DEVICE_INVALID_SETTING 17 #define COM_BUSY 18 #define COM_NOT_SUPPORTED 19 #define COM_FAILED 21 #define COM_NOT_FOUND 22 #define COM_CANT_OVERRIDE 25 // bits in fsStatus value #define COMSB_WAIT_XON 0x01 #define COMSB_WAIT_CTS 0x02 #define COMSB_WAIT_DSR 0x04 #define COMSB_WAIT_DCD 0x08 #define COMSB_WAIT_BUSY 0x40 /* flow controlled off for some other reason */ #define COMSB_RESERVED 0x80 /* reserved for use by textsend */ // Bit definition of common fields #define COM_BAUD 0x01 #define COM_DATABITS 0x02 #define COM_STOPBITS 0x04 #define COM_PARITY 0x08 #define COM_AUTO 0x10 // Common field constants #define COM_PARITY_MIN 0 #define COM_PARITY_NONE 0 #define COM_PARITY_ODD 1 #define COM_PARITY_EVEN 2 #define COM_PARITY_MARK 3 #define COM_PARITY_SPACE 4 #define COM_PARITY_MAX 4 #define COM_STOPBITS_1 0 #define COM_STOPBITS_1_5 1 #define COM_STOPBITS_2 2 /* Values for usReason arg. to caller supplied status functions */ #define COMSEND_LOCAL 0 /* so callers can call their own handler function without confusion */ #define COMSEND_FIRSTCALL 1 /* Handler is being registered */ #define COMSEND_LASTCALL 2 /* Handler is being replaced */ #define COMSEND_DATA_WAITING 3 /* Unbuffered data is pending */ #define COMSEND_NORMAL 4 /* Routine call, all data is buffered */ /* Return values from caller supplied status functions */ #define COMSEND_OK 0 #define COMSEND_GIVEUP 1 #define COMSEND_CLEAR_DATA 2 #define COMSEND_FORCE_CONTINUATION 3 // Options for ComOverride() #define COM_OVERRIDE_8BIT 0x0001 // forces 8-bit (no parity) mode #define COM_OVERRIDE_RCVALL 0x0002 // suspends any features that would // prevent any character from // being received (XON/XOFF etc.) #define COM_OVERRIDE_SNDALL 0x0004 // ditto for sending // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-= TYPES =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- // Enumeration type for ComNotify enum COM_EVENTS { CONNECT, DATA_RECEIVED, NODATA, SEND_STARTED, SEND_DONE }; // Type for use with ComSend routines typedef int (*STATUSFUNCT)(int, unsigned, long); typedef struct s_com_control { // Pointers to allow quick macros to access received chars. UCHAR FAR *puchRBData; // points to next valid received char. UCHAR FAR *puchRBDataLimit; // limit of valid received chars. } ST_COM_CONTROL; // Structure for transferring common data into & out of driver typedef struct s_common { unsigned afItem; long lBaud; int nDataBits; int nStopBits; int nParity; int fAutoDetect; int nPrivateSize; } ST_COMMON; // -=-=-=-=-=-=-=-=-=-=-=-=-=- PROTOTYPES -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- extern int ComCreateHandle(const HSESSION hSession, HCOM *phcom); extern int ComDestroyHandle(HCOM *phCom); extern int ComInitHdl(const HCOM pstCom); extern int ComLoadHdl(const HCOM pstCom); extern int ComSaveHdl(const HCOM pstCom); extern int ComSetDeviceFromName(const HCOM pstCom, const TCHAR * const pszDeviceName); extern int ComSetDeviceFromFile(const HCOM pstCom, const TCHAR * const pszFileName); extern int ComGetDeviceName(const HCOM pstCom, TCHAR * const pszName, int * const pnLen); extern HANDLE ComGetRcvEvent(HCOM pstCom); extern int ComGetSession(const HCOM pstCom, HSESSION * const phSession); extern void ComNotify(const HCOM pstCom, enum COM_EVENTS event); extern int ComIsActive(const HCOM pstCom); extern int ComSetPortName(const HCOM pstCom, const TCHAR * const pszPortName); extern int ComGetPortName(const HCOM pstCom, TCHAR * const pszName, int nLen); extern int ComGetBaud(const HCOM pstCom, long * const plBaud); extern int ComSetBaud(const HCOM pstCom, const long lBaud); extern int ComGetDataBits(const HCOM pstCom, int * const pnDataBits); extern int ComSetDataBits(const HCOM pstCom, const int nDataBits); extern int ComGetStopBits(const HCOM pstCom, int * const pnStopBits); extern int ComSetStopBits(const HCOM pstCom, const int nStopBits); extern int ComGetParity(const HCOM pstCom, int * const pnParity); extern int ComSetParity(const HCOM pstCom, const int nParity); extern int ComGetAutoDetect(HCOM pstCom, int *pfAutoDetect); extern int ComSetAutoDetect(HCOM pstCom, int fAutoDetect); extern int ComPreconnect(const HCOM pstCom); extern int ComActivatePort(const HCOM pstCom, DWORD_PTR dwMediaHdl); extern int ComDeactivatePort(const HCOM pstCom); extern int ComOverride(const HCOM pstCom, const unsigned afOptions, unsigned * const pafOldOptions); extern int ComQueryOverride(HCOM pstCom, unsigned *pafOptions); extern int ComConfigurePort(const HCOM pstCom); extern int ComRcvBufrRefill(const HCOM pstCom, TCHAR * const tc, const int fRemoveChar); extern int ComRcvBufrClear(const HCOM pstCom); extern int ComSndBufrSend( const HCOM pstCom, void * const pvBufr, const int nCount, const int nWait); extern int ComSndBufrBusy(const HCOM pstCom); extern int ComSndBufrWait(const HCOM pstCom, const int nWait); extern int ComSndBufrClear(const HCOM pstCom); extern int ComSndBufrQuery(const HCOM pstCom, unsigned * const pafStatus, long * const plHandshakeDelay); extern int ComDeviceDialog(const HCOM pstCom, const HWND hwndParent); extern int ComDriverSpecial(const HCOM pstCom, const TCHAR * const pszInstructions, TCHAR * const pszResults, const int nBufrSize); extern int ComSendChar(const HCOM pstCom, const TCHAR chCode); extern int ComSendCharNow(const HCOM pstCom, const TCHAR chCode); extern int ComSendPush(const HCOM pstCom); extern int ComSendWait(const HCOM pstCom); extern int ComSendClear(const HCOM pstCom); extern int ComSendSetStatusFunction(const HCOM pstCom, STATUSFUNCT pfNewStatusFunct, STATUSFUNCT *ppfOldStatusFunct); extern int ComLoadWinsockDriver(HCOM pstCom); extern int ComLoadStdcomDriver(HCOM pstCom); extern int ComValidHandle(HCOM pstCom); // Function replacement macros #define PCOM ST_COM_CONTROL * #define mComRcvChar(h,p) ((((PCOM)h)->puchRBData < ((PCOM)h)->puchRBDataLimit) ? \ (*(p) = *((PCOM)h)->puchRBData++, TRUE) : \ ComRcvBufrRefill((h), (p), TRUE)) #define mComRcvBufrPeek(h,p) ((((PCOM)h)->puchRBData < ((PCOM)h)->puchRBDataLimit) ? \ (*(p) = *((PCOM)h)->puchRBData, TRUE) : \ ComRcvBufrRefill((h), (p), FALSE)) #define mComRcvBufrPutback(h,c) ((VOID)(*--((PCOM)h)->puchRBData = (TCHAR)(c))) #endif // !defined(H_COM)