home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / comos2.zip / COMMOS2.H < prev    next >
C/C++ Source or Header  |  1993-02-21  |  9KB  |  220 lines

  1. /**************************************************************************
  2.  *
  3.  *  COMMOS2.H
  4.  *
  5.  *  This file provides the headers for the IOPL and basic serial services
  6.  *  provided by this library.
  7.  *_________________________________________________________________________
  8.  *
  9.  *  Copyright (c) 1992 by ASH Software, Inc.
  10.  *
  11.  *  Update History
  12.  *
  13.  *    11/28/1992 - Module created
  14.  *
  15.  **************************************************************************/
  16.  
  17. #if !defined(COMMOS2__H)
  18.   #define COMMOS2__H
  19.  
  20.   //
  21.   // Type definitions
  22.   //
  23.  
  24.   #define HCOMMPORT                   USHORT
  25.   typedef HCOMMPORT *PHCOMMPORT;
  26.  
  27.   //
  28.   // Basic definitions
  29.   //
  30.  
  31.   #define TIMEOUT_INDEFINITE          -1L
  32.  
  33.   #define PARITY_NONE                  0
  34.   #define PARITY_ODD                   1
  35.   #define PARITY_EVEN                  2
  36.   #define PARITY_MARK                  3
  37.   #define PARITY_SPACE                 4
  38.  
  39.   #define STOPBITS_1                   0
  40.   #define STOPBITS_1_POINT_5           1
  41.   #define STOPBITS_2                   2
  42.  
  43.   #define TRANSMIT_BREAK               0x01
  44.   #define TRANSMIT_NO_BREAK            0x00
  45.  
  46.   //
  47.   // Comm Mode definitions
  48.   //
  49.  
  50.   #define COMM_MODE_NOTSTARTED                     0ul
  51.   #define COMM_MODE_OPEN                           1ul
  52.   #define COMM_MODE_WRITE                          2ul
  53.   #define COMM_MODE_READ                           3ul
  54.   #define COMM_MODE_READTIMEOUT                    4ul
  55.   #define COMM_MODE_READUNTILBYTE                  5ul
  56.   #define COMM_MODE_SETBAUD                        6ul
  57.   #define COMM_MODE_SETLINECNTRL                   7ul
  58.   #define COMM_MODE_CLEARTXBUFFER                  8ul
  59.   #define COMM_MODE_CLEARRXBUFFER                  9ul
  60.   #define COMM_MODE_QUERYRXCOUNT                  10ul
  61.   #define COMM_MODE_QUERYRXBUFSIZE                11ul
  62.   #define COMM_MODE_QUERYTXCOUNT                  12ul
  63.   #define COMM_MODE_QUERYTXBUFSIZE                13ul
  64.   #define COMM_MODE_GETDCBINFO                    14ul
  65.   #define COMM_MODE_SETDCBINFO                    15ul
  66.   #define COMM_MODE_SETREADTIMEOUT                16ul
  67.   #define COMM_MODE_SETWRITETIMEOUT               17ul
  68.  
  69.   //
  70.   // Comm Error Codes
  71.   //
  72.  
  73.   #define COMM_ERROR_NOERROR                       0ul
  74.   #define COMM_ERROR_SYSINITFAILED                 1ul
  75.   #define COMM_ERROR_INVALIDMAXPORTS               2ul
  76.   #define COMM_ERROR_ALREADYINITIALIZED            3ul
  77.   #define COMM_ERROR_MAXPORTSEXCEEDED              4ul
  78.   #define COMM_ERROR_OPENFAILED                    5ul
  79.   #define COMM_ERROR_PORTNOTFOUND                  6ul
  80.   #define COMM_ERROR_WRITEFAILED                   7ul
  81.   #define COMM_ERROR_READFAILED                    8ul
  82.   #define COMM_ERROR_IOCTLFAILED                   9ul
  83.   #define COMM_ERROR_TIMEOUTEXCEEDED              10ul
  84.   #define COMM_ERROR_BAUDFAILED                   11ul
  85.   #define COMM_ERROR_LINECNTRLFAILED              12ul
  86.   #define COMM_ERROR_CLEARBUFFERFAILED            13ul
  87.   #define COMM_ERROR_SEMAPHOREFAILED              14ul
  88.   #define COMM_ERROR_DCBINFOFAILED                15ul
  89.   #define COMM_ERROR_SETTIMEOUTFAILED             16ul
  90.  
  91.   //
  92.   // This section is used with 16-bit applications (OS/2 1.x).
  93.   //
  94.  
  95.   #if defined(INCL_COMMOS2_16BIT)
  96.     #define CommStartSystem       COMMSTART16
  97.     #define CommStopSystem        COMMSTOP16
  98.     #define CommGetLastError      COMMERROR16
  99.     #define CommOpen              COMMOPEN16
  100.     #define CommInit              COMMINIT16
  101.     #define CommClear             COMMCLEAR16
  102.     #define CommClearTxBuffer     COMMTXBUF16
  103.     #define CommClearRxBuffer     COMMRXBUF16
  104.     #define CommClose             COMMCLOSE16
  105.     #define CommClear             COMMCLEAR16
  106.     #define CommWrite             COMMWRITE16
  107.     #define CommRead              COMMREAD16
  108.     #define CommReadTimeOut       COMMREADTIMEOUT16
  109.     #define CommReadUntilByte     COMMREADUNTILBYTE16
  110.     #define CommQueryHPortFile    COMMQHPORTFILE16
  111.     #define CommQueryRxCount      COMMQRXCOUNT16
  112.     #define CommQueryRxBufSize    COMMQRXBUFSIZE16
  113.     #define CommQueryTxCount      COMMQTXCOUNT16
  114.     #define CommQueryTxBufSize    COMMQTXBUFSIZE16
  115.     #define CommGetDCBInfo        COMMGETDCB16
  116.     #define CommSetDCBInfo        COMMSETDCB16
  117.     #define CommSetReadTimeOut    COMMSETREADTIMEOUT16
  118.     #define CommSetWriteTimeOut   COMMSETWRITETIMEOUT16
  119.  
  120.     //
  121.     // IOPL 16-bit interface function prototypes which may be called by
  122.     // 16-bit applications
  123.     //
  124.  
  125.     VOID PortOutByte(USHORT usPortAddress,BYTE bParam);
  126.     VOID PortOutWord(USHORT usPortAddress,USHORT usParam);
  127.     USHORT PortInpByte(USHORT usPortAddress);
  128.     USHORT PortInpWord(USHORT usPortAddress);
  129.  
  130.     //
  131.     // 16-bit IOPL Assembler prototypes which can be called directly
  132.     // by 16-bit applications.
  133.     //
  134.  
  135.     extern int  far pascal ioplinp (unsigned int portaddress);
  136.     extern int  far pascal ioplinpw(unsigned int portaddress);
  137.     extern void far pascal ioplout (unsigned int portaddress,
  138.       UCHAR outputbyte);
  139.     extern void far pascal ioploutw(unsigned int portaddress,
  140.       unsigned int outputword);
  141.  
  142.   #endif
  143.  
  144.   //
  145.   // This section is used with 32-bit applications (OS/2 2.x).
  146.   //
  147.  
  148.   #if defined(INCL_COMMOS2_32BIT)
  149.     #define CommStartSystem       COMMSTART32
  150.     #define CommStopSystem        COMMSTOP32
  151.     #define CommGetLastError      COMMERROR32
  152.     #define CommOpen              COMMOPEN32
  153.     #define CommInit              COMMINIT32
  154.     #define CommClear             COMMCLEAR32
  155.     #define CommClearTxBuffer     COMMTXBUF32
  156.     #define CommClearRxBuffer     COMMRXBUF32
  157.     #define CommClose             COMMCLOSE32
  158.     #define CommWrite             COMMWRITE32
  159.     #define CommRead              COMMREAD32
  160.     #define CommReadTimeOut       COMMREADTIMEOUT32
  161.     #define CommReadUntilByte     COMMREADUNTILBYTE32
  162.     #define CommQueryHPortFile    COMMQHPORTFILE32
  163.     #define CommQueryRxCount      COMMQRXCOUNT32
  164.     #define CommQueryRxBufSize    COMMQRXBUFSIZE32
  165.     #define CommQueryTxCount      COMMQTXCOUNT32
  166.     #define CommQueryTxBufSize    COMMQTXBUFSIZE32
  167.     #define CommGetDCBInfo        COMMGETDCB32
  168.     #define CommSetDCBInfo        COMMSETDCB32
  169.     #define CommSetReadTimeOut    COMMSETREADTIMEOUT32
  170.     #define CommSetWriteTimeOut   COMMSETWRITETIMEOUT32
  171.  
  172.     //
  173.     // IOPL 16-bit interface function prototypes to be called by
  174.     // 32-bit applications
  175.     //
  176.  
  177.     VOID APIENTRY16 PortOutByte(USHORT usPortAddress,BYTE bParam);
  178.     VOID APIENTRY16 PortOutWord(USHORT usPortAddress,USHORT usParam);
  179.     APIRET16 APIENTRY16 PortInpByte(USHORT usPortAddress);
  180.     APIRET16 APIENTRY16 PortInpWord(USHORT usPortAddress);
  181.  
  182.   #endif
  183.  
  184.   //
  185.   // This section includes support for basic serial port access from
  186.   // an OS/2 application.
  187.   //
  188.  
  189.   ULONG CommStartSystem(int iCommPorts);
  190.   ULONG CommStopSystem(void);
  191.   ULONG CommGetLastError(HCOMMPORT hCommPort,ULONG *ulCommError,
  192.         ULONG *ulDosError,ULONG *ulCommMode);
  193.   ULONG CommOpen(int iCommPort,PHCOMMPORT phCommPort);
  194.   ULONG CommInit(HCOMMPORT hCommPort,USHORT usBaudRate,USHORT usParity,
  195.         USHORT usDataBits,USHORT usStopBits,USHORT usTxBreak);
  196.   ULONG CommClear(HCOMMPORT hCommPort);
  197.   ULONG CommClearTxBuffer(HCOMMPORT hCommPort);
  198.   ULONG CommClearRxBuffer(HCOMMPORT hCommPort);
  199.   ULONG CommClose(HCOMMPORT hCommPort);
  200.   ULONG CommWrite(HCOMMPORT hCommPort,UCHAR *pucDataArea,
  201.         USHORT usDataAreaSize,ULONG *pulWritten);
  202.   ULONG CommRead(HCOMMPORT hCommPort,UCHAR *pucDataArea,
  203.         USHORT usDataAreaSize,ULONG *pulRead);
  204.   ULONG CommReadTimeOut(HCOMMPORT hCommPort,UCHAR *pucDataArea,
  205.         USHORT usDataAreaSize,ULONG *pulRead,long lTimeOutmSec);
  206.   ULONG CommReadUntilByte(HCOMMPORT hCommPort,UCHAR *pucDataArea,
  207.         USHORT usDataAreaSize,ULONG *pulRead,UCHAR ucWaitByte,
  208.         long lTimeOutmSec);
  209.   HFILE CommQueryHPortFile(HCOMMPORT hCommPort);
  210.   ULONG CommQueryRxCount(HCOMMPORT hCommPort,ULONG *ulCount);
  211.   ULONG CommQueryRxBufSize(HCOMMPORT hCommPort,ULONG *ulSize);
  212.   ULONG CommQueryTxCount(HCOMMPORT hCommPort,ULONG *ulCount);
  213.   ULONG CommQueryTxBufSize(HCOMMPORT hCommPort,ULONG *ulSize);
  214.   ULONG CommGetDCBInfo(HCOMMPORT hCommPort);
  215.   ULONG CommSetDCBInfo(HCOMMPORT hCommPort);
  216.   ULONG CommSetReadTimeOut(HCOMMPORT hCommPort,ULONG ulTimeMsec);
  217.   ULONG CommSetWriteTimeOut(HCOMMPORT hCommPort,ULONG ulTimeMsec);
  218.  
  219. #endif
  220.