Annotation of gcl520h/commlib.h, revision 1.1.1.1

1.1       root        1: #ifndef COMMLIB_DOT_H
                      2: #define COMMLIB_DOT_H
                      3: 
                      4: /*
                      5:  * COMMLIB.H       5.20A  June 8, 1995
                      6:  *
                      7:  * The Greenleaf Comm Library
                      8:  *
                      9:  * Copyright (C) 1985-1995 Greenleaf Software Inc.  All Rights Reserved.
                     10:  *
                     11:  * NOTES
                     12:  *
                     13:  *  This is the master include file for CommLib Level 2 functions.  You
                     14:  *  pretty much have to include this file.  It has all the prototypes,
                     15:  *  macros, and structures needed to use CommLib Level 2.
                     16:  *
                     17:  * MODIFICATIONS
                     18:  *
                     19:  * December 12, 1992  4.00A : Initial release
                     20:  *
                     21:  * December 13, 1994  5.10A : Updated to include 5.00D patch.
                     22:  */
                     23: 
                     24: /*
                     25:  * If you have a custom header file that you want to include in every
                     26:  * source module in CommLib, you can automatically add it to all of the
                     27:  * library modules by simply replacing the bland GFCUSTOM.H supplied with
                     28:  * our libraries.  This will always be the first file included by any
                     29:  * of our source files, so you are guaranteed specific behavior.  See
                     30:  * header file memchk.h for an example of how to build a version of
                     31:  * commlib that is linked to memcheck.
                     32:  */
                     33: 
                     34: #include "gfcustom.h"
                     35: 
                     36: #include "compiler.h"
                     37: #if defined( GF_WATCOM_C ) || defined( GF_WATCOM_C_386 )
                     38: #  if defined( GF_WATCOM_S )
                     39: #    include "wat3s.h"
                     40: #  endif
                     41: #endif
                     42: 
                     43: /*
                     44:  * _DEFS386.H and _DEFS286.H are both similar to COMPILER.H, but for
                     45:  * 16 and 32 bit DOS Extenders
                     46:  */
                     47: 
                     48: #include "_defs286.h"
                     49: #include "_defs386.h"
                     50: 
                     51: #if defined( GF_WINDOWS ) || defined( GF_WIN32 )
                     52: #include <windows.h>
                     53: #if defined( GF_WIN32 )
                     54: #define HTASK   HANDLE
                     55: #endif
                     56: #endif
                     57: 
                     58: #define COMLIBVERSION   0x520           /* Comm library Version  */
                     59: 
                     60: /*
                     61:  * 16550 trigger definitions are used across more than one driver.
                     62:  */
                     63: typedef enum trigger_level{
                     64:     TRIGGER_DISABLE    = 0x00,
                     65:     TRIGGER_01         = 0x01,
                     66:     TRIGGER_04         = 0x41,
                     67:     TRIGGER_08         = 0x81,
                     68:     TRIGGER_14         = 0xc1
                     69: } TRIGGER_LEVEL;
                     70: 
                     71: /*
                     72:  * People wonder why COM1 is an int instead of a macro.  The reason goes back
                     73:  * to the cutover to Commlib 3.2.  Lots of functions that used to take an
                     74:  * int port number in 3.1 changed to taking a PORT structure pointer in
                     75:  * 3.2.  Normally, if you try to pass an int as a pointer you will get an
                     76:  * error, so users that didn't update their code properly could count on
                     77:  * getting an error from the compiler.  However, COM1 is defined as 0, and
                     78:  * 0 is a special value that can be passed as a pointer.  So defining it
                     79:  * as an extern int avoids that particular problem, and will cause an
                     80:  * error if somebody tries to pass COM1 as an argument to ZmodemSend().
                     81:  */
                     82: 
                     83: #define COM1       (int)0
                     84: #define COM2            1
                     85: #define COM3            2
                     86: #define COM4            3
                     87: #define COM5            4
                     88: #define COM6            5
                     89: #define COM7            6
                     90: #define COM8            7
                     91: #define COM9            8
                     92: #define COM10           9
                     93: #define COM11           10
                     94: #define COM12           11
                     95: #define COM13           12
                     96: #define COM14           13
                     97: #define COM15           14
                     98: #define COM16           15
                     99: #define COM17           16
                    100: #define COM18           17
                    101: #define COM19           18
                    102: #define COM20           19
                    103: #define COM21           20
                    104: #define COM22           21
                    105: #define COM23           22
                    106: #define COM24           23
                    107: #define COM25           24
                    108: #define COM26           25
                    109: #define COM27           26
                    110: #define COM28           27
                    111: #define COM29           28
                    112: #define COM30           29
                    113: #define COM31           30
                    114: #define COM32           31
                    115: #define COM33           32
                    116: #define COM34           33
                    117: #define COM35           34
                    118: 
                    119: /*
                    120:  * Macro's and constants to ease the reading of Micro Channel POS
                    121:  * registers.
                    122:  */
                    123: #define POSCHNLSELECT            0x96         /* POS Channel Select */
                    124: #define POSLOWIDPORT             0x100        /* POS I.D. Low byte */
                    125: #define POSHIGHIDPORT            0x101        /* POS I.D. High byte */
                    126: #define POS2PORT                 0x102        /* POS Adapter info ports 2-5*/
                    127: #define POS3PORT                 0x103
                    128: #define POS4PORT                 0x104
                    129: #define POS5PORT                 0x105
                    130: #define POSCHMIN                 0x08         /* Minimum channel */
                    131: #define POSCHMAX                 0x0f         /* Maximum channel */
                    132: #define POSCHNLDISABLE           0x00         /* Disable channel access */
                    133: 
                    134: #define POSSELECTCHANNEL( p )    _asoutb( POSCHNLSELECT, p )               /* Tag: L1 private */
                    135: #define POSDESELECTCHANNEL( p )  _asoutb( POSCHNLSELECT, POSCHNLDISABLE )  /* Tag: L1 private */
                    136: #define POSID()                  /* Tag: L1 private */ \
                    137:                                  ( ( _asinb( POSHIGHIDPORT ) << 8 ) + \
                    138:                                  _asinb( POSLOWIDPORT ) )
                    139: #define POS2INFO()               _asinb(POS2PORT)                          /* Tag: L1 private */
                    140: #define POS3INFO()               _asinb(POS3PORT)                          /* Tag: L1 private */
                    141: #define POS4INFO()               _asinb(POS4PORT)                          /* Tag: L1 private */
                    142: #define POS5INFO()               _asinb(POS5PORT)                          /* Tag: L1 private */
                    143: 
                    144: #define TICKS_PER_SECOND              18
                    145: #define MILLISECONDS_PER_TICK         55
                    146: 
                    147: #ifndef TRUE
                    148: #define TRUE            1
                    149: #endif
                    150: 
                    151: #ifndef FALSE
                    152: #define FALSE           0
                    153: #endif
                    154: 
                    155: #define GF_MKFP( seg, offset )     /* Tag: Misc private */              \
                    156:                                    ( void GF_FAR *) ( ( (unsigned long) \
                    157:                                    ( seg ) << 16 ) + ( offset ) )
                    158: #define GF_MKFFP( seg, offset )    /* Tag: Misc private */                  \
                    159:                                    (void (GF_FAR * )()) ( ( (unsigned long) \
                    160:                                    ( seg ) << 16 ) + ( offset ) )
                    161: 
                    162: #define IRQ0   0
                    163: #define IRQ1   1
                    164: #define IRQ2   2
                    165: #define IRQ3   3
                    166: #define IRQ4   4
                    167: #define IRQ5   5
                    168: #define IRQ6   6
                    169: #define IRQ7   7
                    170: #define IRQ8   8
                    171: #define IRQ9   9
                    172: #define IRQ10 10
                    173: #define IRQ11 11
                    174: #define IRQ12 12
                    175: #define IRQ13 13
                    176: #define IRQ14 14
                    177: #define IRQ15 15
                    178: 
                    179: /*
                    180:  * Line Status
                    181:  */
                    182: #define OVERRUN 2
                    183: #define PARERR  4
                    184: #define FRAMERR 8
                    185: #define BREAKDET 16
                    186: #define THRE 32
                    187: #define TEMT 64
                    188: 
                    189: /*
                    190:  * Modem Status
                    191:  */
                    192: #define CTSCHG  1
                    193: #define DSRCHG  2
                    194: #define RITRAIL 4
                    195: #define CDCHG   8
                    196: #define CTS     16
                    197: #define DSR     32
                    198: #define RI      64
                    199: #define CD      128
                    200: 
                    201: /*
                    202:  * Error codes returned by all functions OR in _aserror.
                    203:  */
                    204: #define ASSUCCESS                0
                    205: #define ASGENERALERROR          -1
                    206: #define ASINVPORT               -2
                    207: #define ASINUSE                 -3
                    208: #define ASINVBUFSIZE            -4
                    209: #define ASNOMEMORY              -5
                    210: #define ASNOTSETUP              -6
                    211: #define ASINVPAR                -7
                    212: #define ASBUFREMPTY             -8
                    213: #define ASBUFRFULL              -9
                    214: #define ASTIMEOUT               -10
                    215: #define ASNOCTS                 -11
                    216: #define ASNOCD                  -12
                    217: #define ASNODSR                 -13
                    218: #define ASNO8250                -14
                    219: #define ASXMSTATUS              -15
                    220: #define ASUSERABORT             -16
                    221: #define ASFILERR                -17
                    222: #define ASXMERROR               -18
                    223: #define ASNOWIDERX              -19
                    224: #define ASCONFLICT              -20
                    225: #define ASCRCMODE               -21
                    226: #define ASNOHAYESOK             -22
                    227: #define ASNOHAYESRESPONSE       -23
                    228: #define ASNOTSUPPORTED          -24
                    229: #define ASILLEGALBAUDRATE       -25
                    230: #define ASILLEGALPARITY         -26
                    231: #define ASILLEGALWORDLENGTH     -27
                    232: #define ASILLEGALSTOPBITS       -28
                    233: #define ASNOCOPYRIGHTNOTICE     -29
                    234: #define ASDRIVERNOTINSTALLED    -30
                    235: #define ASOVERFLOW              -31
                    236: #define ASCONNECTFAILURE        -32
                    237: #define ASDOSEXTENDERERROR      -33
                    238: #define ASILLEGALBOARDNUMBER    -34
                    239: #define ASBOARDINUSE            -35
                    240: #define ASHANDSHAKEBLOCK        -36
                    241: #define ASMAXPORTSEXCEEDED      -37
                    242: #define ASILLEGALIRQ            -38
                    243: #define ASIRQINUSE              -39
                    244: #define AS_THUNK_SETUP_FAILED   -40
                    245: #define AS_NASI_ERROR           -41
                    246: #define AS_PACKING_ERROR        -42
                    247: #define ASUSERDEFINEDERROR      -75
                    248: /*
                    249:  * Number of ports supported by Windows
                    250:  */
                    251: #define MAXWINPORTS     9
                    252: 
                    253: #ifdef __cplusplus
                    254: extern "C" {
                    255: #endif
                    256: extern char ParityLetter[ 5 ];
                    257: #ifdef __cplusplus
                    258: }
                    259: #endif
                    260: 
                    261: typedef enum { OUT_OF_MEMORY = -1,
                    262:                GREENLEAF,
                    263:                BIOS,
                    264:                EXTENDED_BIOS,
                    265:                FOSSIL,
                    266:                DIGIBOARD_COMXI,
                    267:                DIGIBOARD_PCXE,
                    268:                DIGIBOARD_UNIVERSAL,
                    269:                GREENLEAF_FAST,
                    270:                MODEM_ASSIST,
                    271:                PHAR_LAP_286,
                    272:                RATIONAL_SYSTEMS_DOS_16M,
                    273:                SPARKLE,
                    274:                ARNET,
                    275:                STARGATE,
                    276:                MICROSOFT_WINDOWS,
                    277:                MICROSOFT_WIN32,
                    278:                MICROSOFT_WIN32S,
                    279:                NASI,
                    280:                OTHER
                    281:              } DRIVER_TYPE;
                    282: 
                    283: typedef enum { OVERRUN_ERROR  = 2,
                    284:                PARITY_ERROR   = 4,
                    285:                FRAMING_ERROR  = 8,
                    286:                BREAK_DETECTED = 16
                    287:              } LINE_STATUS_CODES;
                    288: 
                    289: typedef enum { CTS_SET  = 0x10,
                    290:                DSR_SET  = 0x20,
                    291:                RI_SET   = 0x40,
                    292:                CD_SET   = 0x80
                    293:              } MODEM_STATUS_CODES;
                    294: 
                    295: typedef enum { RX_CHAR           = 0x0001,
                    296:                RX_EVENT_FLAG     = 0x0002,
                    297:                TX_EMPTY          = 0x0004,
                    298:                CTS_STATE_CHANGE  = 0x0008,
                    299:                DSR_STATE_CHANGE  = 0x0010,
                    300:                RLSD_STATE_CHANGE = 0x0020,
                    301:                BREAK_STATE       = 0x0040,
                    302:                LINE_STATUS_ERR   = 0x0080,
                    303:                RI_STATE          = 0x0100,
                    304:                CTS_STATE         = 0x0400,
                    305:                DSR_STATE         = 0x0800,
                    306:                RLSD_STATE        = 0x1000,
                    307:                TERI_STATE        = 0x2000
                    308:              } EVENT_CODES;
                    309: 
                    310: 
                    311: typedef  void ( GF_DLL_FAR GF_CONV *PORT_DUMPER )( char GF_DLL_FAR *data );
                    312: 
                    313: 
                    314: 
                    315: /*
                    316:  * This is the PORT structure that everything else in Level 2 revolves
                    317:  * around.  All driver routines operate on PORT structures.
                    318:  */
                    319: 
                    320: struct GFINSTANCEDATAtag;
                    321: 
                    322: #define PORT struct _tag_port
                    323: 
                    324: struct _tag_port {
                    325: #if defined( GF_X32 )
                    326:     GF_FARPTR32 driver;
                    327: #elif defined( GF_X16 )
                    328:     void far *driver;
                    329: #else
                    330:     void GF_DLL_FAR *driver;
                    331: #endif
                    332:     PORT GF_DLL_FAR *next_port;
                    333:     int handle;
                    334:     int status;
                    335:     DRIVER_TYPE driver_type;
                    336:     int dialing_method;
                    337:     unsigned int count;
                    338:     int ( GF_CONV * read_char )( PORT GF_DLL_FAR *port );
                    339:     int ( GF_CONV * peek_char )( PORT GF_DLL_FAR *port );
                    340:     int ( GF_CONV * write_char )( PORT GF_DLL_FAR *port, int c );
                    341:     int ( GF_CONV * port_close )( PORT GF_DLL_FAR *port );
                    342:     int ( GF_CONV * port_set )( PORT GF_DLL_FAR *port,
                    343:                                 long baud_rate,
                    344:                                 char parity,
                    345:                                 int word_length,
                    346:                                 int stop_bits );
                    347:     int ( GF_CONV * use_xon_xoff)( PORT GF_DLL_FAR *port, int control );
                    348:     int ( GF_CONV * use_rts_cts )( PORT GF_DLL_FAR *port, int control );
                    349:     int ( GF_CONV * use_dtr_dsr )( PORT GF_DLL_FAR *port, int control );
                    350:     int ( GF_CONV * set_dtr )( PORT GF_DLL_FAR *port, int control );
                    351:     int ( GF_CONV * set_rts )( PORT GF_DLL_FAR *port, int control );
                    352:     long ( GF_CONV * space_free_in_TX_buffer )( PORT GF_DLL_FAR *port );
                    353:     long ( GF_CONV * space_used_in_TX_buffer )( PORT GF_DLL_FAR *port );
                    354:     long ( GF_CONV * space_free_in_RX_buffer )( PORT GF_DLL_FAR *port );
                    355:     long ( GF_CONV * space_used_in_RX_buffer )( PORT GF_DLL_FAR *port );
                    356:     int ( GF_CONV * clear_TX_buffer )( PORT GF_DLL_FAR *port );
                    357:     int ( GF_CONV * write_buffer )( PORT GF_DLL_FAR *port,
                    358:                                     char GF_DLL_FAR *buffer,
                    359:                                     unsigned int count );
                    360:     int ( GF_CONV * read_buffer )( PORT GF_DLL_FAR *port,
                    361:                                    char GF_DLL_FAR *buffer,
                    362:                                    unsigned int count );
                    363:     int ( GF_CONV * dump_port_status )( PORT GF_DLL_FAR *port,
                    364:                                         PORT_DUMPER printer );
                    365:     int ( GF_CONV * send_break )( PORT GF_DLL_FAR *port,
                    366:                                   int milliseconds );
                    367:     int ( GF_CONV * get_modem_status )( PORT GF_DLL_FAR *port );
                    368:     int ( GF_CONV * get_line_status )( PORT GF_DLL_FAR *port );
                    369:     int ( GF_CONV * clear_line_status)( PORT GF_DLL_FAR *port );
                    370:     int ( GF_CONV * block )( PORT GF_DLL_FAR *port, int control );
                    371:     void ( GF_CONV * clear_error )( PORT GF_DLL_FAR *port );
                    372:     void GF_FAR *user_data;
                    373:     struct GFINSTANCEDATAtag GF_FAR *lpThis;
                    374: };
                    375: 
                    376: #undef PORT
                    377: 
                    378: typedef struct _tag_port PORT;
                    379: 
                    380: /* The GFINSTANCEDATAtag structure below is used for PowerComm only.
                    381:  * A pointer to this structure has been added to the PORT structure
                    382:  * for internal use.
                    383:  */
                    384: 
                    385: struct GFINSTANCEDATAtag {
                    386:     int ( GF_CONV * _PortIdleFunctionPtr )( PORT GF_DLL_FAR *port );
                    387:     int ( GF_CONV * _AbortModemFunctionPtr )( PORT GF_DLL_FAR *port );
                    388:     void * ( GF_CONV GF_DLL_FAR * _XferFileOpenFunctionPtr )(
                    389:                           void GF_DLL_FAR *status,
                    390:                           char GF_DLL_FAR *name,
                    391:                           char GF_DLL_FAR *mode );
                    392:     int ( GF_CONV * _AbortXferFunctionPtr )( void GF_DLL_FAR *status );
                    393:     int _AbortedTransfer;
                    394:     void GF_DLL_FAR *_xfer_last_status;
                    395:     int _DefaultAbortKey;
                    396:     char GF_DLL_FAR * ( GF_CONV *_UserErrorNameFunctionPtr )(
                    397:                           int error_code );
                    398:     TRIGGER_LEVEL Default16550TriggerLevel;
                    399:     TRIGGER_LEVEL DefaultFast16550TriggerLevel;
                    400:     long hm_delay_value;
                    401:     char GF_FAR *hm_match_string;
                    402:     void ( GF_CONV *hm_character_printer )( char c );
                    403:     int _hm_abort_key;
                    404:     int _aserror;
                    405:     unsigned int _DefaultRXBufferSize;
                    406:     unsigned int _DefaultTXBufferSize;
                    407: #if defined( GF_WINDOWS ) || defined( GF_WIN32 )
                    408:     HTASK hTask;
                    409: #else
                    410:     int hTask;
                    411: #endif
                    412:     int nRefCount;
                    413: };
                    414: 
                    415: typedef struct GFINSTANCEDATAtag GFINSTANCEDATA;
                    416: typedef GFINSTANCEDATA GF_FAR * LPGFINSTANCEDATA;
                    417: LPGFINSTANCEDATA GF_CONV GetGFInstanceDataPtr( void );
                    418: LPGFINSTANCEDATA GF_CONV AddOrGetGFInstanceData( void );
                    419: 
                    420: /*
                    421:  * This function pointer is set up as a typedef so we can set up the
                    422:  * prototypes for idle and abort functions with a type that won't cause
                    423:  * problems with certain C++ compilers.
                    424:  */
                    425: typedef  int ( GF_DLL_FAR GF_CONV *PORT_HOOK )( PORT GF_DLL_FAR *port );
                    426: 
                    427: /*
                    428:  * The following macros define pseudo-functions.  These are all the
                    429:  * virtual functions defined in the PORT structure.  The macros just
                    430:  * make it easier to access the functions without worrying about the
                    431:  * port structure.
                    432:  */
                    433: #define ReadChar( p )               p->read_char( p )                 /* Tag: L2 public */
                    434: #define PeekChar( p )               p->peek_char( p )                 /* Tag: L2 public */
                    435: #define WriteChar( p, c )           p->write_char( p, c )             /* Tag: L2 public */
                    436: #define PortClose( p )              p->port_close( p )                /* Tag: L2 public */
                    437: #define PortSet( p, b, py, wl, sb ) p->port_set( p, b, py, wl, sb )   /* Tag: L2 public */
                    438: #define UseXonXoff( p, c )          p->use_xon_xoff( p, c )           /* Tag: L2 public */
                    439: #define UseRtsCts( p, c )           p->use_rts_cts( p, c )            /* Tag: L2 public */
                    440: #define UseDtrDsr( p, c )           p->use_dtr_dsr( p, c )            /* Tag: L2 public */
                    441: #define DumpPortStatus( p, f )      p->dump_port_status( p, f )       /* Tag: L2 public */
                    442: #define SetDtr( p, c )              p->set_dtr( p, c )                /* Tag: L2 public */
                    443: #define SetRts( p, c )              p->set_rts( p, c )                /* Tag: L2 public */
                    444: #define SpaceFreeInTXBuffer( p )    p->space_free_in_TX_buffer( p )   /* Tag: L2 public */
                    445: #define SpaceFreeInRXBuffer( p )    p->space_free_in_RX_buffer( p )   /* Tag: L2 public */
                    446: #define SpaceUsedInTXBuffer( p )    p->space_used_in_TX_buffer( p )   /* Tag: L2 public */
                    447: #define SpaceUsedInRXBuffer( p )    p->space_used_in_RX_buffer( p )   /* Tag: L2 public */
                    448: #define ClearTXBuffer( p )          p->clear_TX_buffer( p )           /* Tag: L2 public */
                    449: #define WriteBuffer( p, b, i )      p->write_buffer( p, b, i )        /* Tag: L2 public */
                    450: #define ReadBuffer( p, b, i )       p->read_buffer( p, b, i )         /* Tag: L2 public */
                    451: #define SendBreak( p, t )           p->send_break( p, t )             /* Tag: L2 public */
                    452: #define GetModemStatus( p )         p->get_modem_status( p )          /* Tag: L2 public */
                    453: #define GetLineStatus( p )          p->get_line_status( p )           /* Tag: L2 public */
                    454: #define ClearLineStatus( p )        p->clear_line_status( p )         /* Tag: L2 public */
                    455: #define Block( p, c )               p->block( p, c )                  /* Tag: L2 public */
                    456: #define ClearError( p )             p->clear_error( p )               /* Tag: L2 public */
                    457: 
                    458: #ifdef __cplusplus
                    459: extern "C" {
                    460: #endif
                    461: 
                    462: unsigned short int GF_CONV CalculateBlockCRC16( unsigned int count,
                    463:                                                 unsigned short int startvalue,
                    464:                                                 void GF_DLL_FAR *buffer );
                    465: unsigned short int GF_CONV CalculateCharacterCRC16( unsigned short int crc,
                    466:                                                     unsigned char c );
                    467: unsigned short int GF_CONV CalculateCharacterCRC16m( unsigned short int crc,
                    468:                                                      unsigned char c );
                    469: unsigned long     GF_CONV  CalculateBlockCRC32( unsigned int count,
                    470:                                                 unsigned long startvalue,
                    471:                                                 void GF_DLL_FAR *buffer );
                    472: unsigned long     GF_CONV CalculateCharacterCRC32( unsigned long crc,
                    473:                                                    unsigned char c );
                    474: void              GF_CDECL _assti( void );
                    475: void              GF_CDECL _ascli( void );
                    476: int               GF_CDECL _asinb( unsigned io_address );
                    477: int               GF_CDECL _asoutb( unsigned io_address, int value );
                    478: int               GF_CONV  asitime( void );
                    479: long              GF_CONV _asgetdivisor( unsigned io_address, int ier_mask );
                    480: 
                    481: /*
                    482:  * This function is also used in Data Windows.  We don't define it
                    483:  * twice so as to not get a compiler error.
                    484:  */
                    485: #if !defined( DW_DOT_H )
                    486: unsigned          GF_CDECL machine( void );
                    487: #endif
                    488: 
                    489: void              GF_CONV  timer( unsigned ticks );
                    490: int               GF_CONV  submodel( void );
                    491: 
                    492: char GF_DLL_FAR * GF_CONV CommErrorName( int error_code );
                    493: char GF_DLL_FAR * GF_CONV AsciiControlCharacterName( int c );
                    494: int               GF_CONV Change8259Priority( int irq );
                    495: int               GF_CONV IsMicroChannel( void );
                    496: /*
                    497:  * Removed in 5.10B
                    498:  *
                    499: unsigned int      GF_CONV get_bios_segment( void );
                    500:  *
                    501:  */
                    502: long              GF_CONV ElapsedTime( void );
                    503: int               GF_CONV PortKillTime( PORT GF_DLL_FAR *port,
                    504:                                         long milliseconds );
                    505: int               GF_CONV DESQViewRunning( void );
                    506: int               GF_CONV WindowsEnhancedMode( void );
                    507: void              GF_CONV YieldWindowsTimeSlice( void );
                    508: void              GF_CONV YieldDESQViewTimeSlice( void );
                    509: void GF_CONV SetDefaultBufferSize( unsigned int rx_buffer_size,
                    510:                                    unsigned int tx_buffer_size );
                    511: 
                    512: 
                    513: 
                    514: int GF_CONV GetDsr( PORT GF_DLL_FAR *p );
                    515: int GF_CONV GetCd( PORT GF_DLL_FAR *p );
                    516: int GF_CONV GetRi( PORT GF_DLL_FAR *p );
                    517: int GF_CONV GetCts( PORT GF_DLL_FAR *p );
                    518: int GF_CONV GetParityError( PORT GF_DLL_FAR *p );
                    519: int GF_CONV GetOverrunError( PORT GF_DLL_FAR *p );
                    520: int GF_CONV GetFramingError( PORT GF_DLL_FAR *p );
                    521: int GF_CONV GetBreakDetect( PORT GF_DLL_FAR *p );
                    522: int GF_CONV WriteString( PORT GF_DLL_FAR *p, char GF_DLL_FAR *string,
                    523:                          int termination_sequence );
                    524: int GF_CONV WriteStringTimed( PORT GF_DLL_FAR *p, char GF_DLL_FAR *string,
                    525:                               int termination_sequence,
                    526:                               long milliseconds );
                    527: int GF_CONV WriteBufferTimed( PORT GF_DLL_FAR *p, char GF_DLL_FAR *buffer,
                    528:                               unsigned int count, long milliseconds );
                    529: int GF_CONV ReadCharTimed( PORT GF_DLL_FAR *p, long milliseconds );
                    530: int GF_CONV WriteCharTimed( PORT GF_DLL_FAR *port, int c, long milliseconds );
                    531: int GF_CONV ReadBufferTimed( PORT GF_DLL_FAR *port, char GF_DLL_FAR *buffer,
                    532:                              unsigned int count, long milliseconds );
                    533: int GF_CONV ReadString( PORT GF_DLL_FAR *port, char GF_DLL_FAR *buffer,
                    534:                         unsigned int size, int termination_sequence );
                    535: int GF_CONV ReadStringTimed( PORT GF_DLL_FAR *port, char GF_DLL_FAR *buffer,
                    536:                              unsigned int size,
                    537:                              int termination_sequence,
                    538:                              long milliseconds );
                    539: int GF_CONV ClearRXBuffer( PORT GF_DLL_FAR *port );
                    540: int GF_CONV IsTXEmpty( PORT GF_DLL_FAR *port );
                    541: int GF_CONV IsRXEmpty( PORT GF_DLL_FAR *port );
                    542: int GF_CONV IsTXFull( PORT GF_DLL_FAR *port );
                    543: int GF_CONV IsRXFull( PORT GF_DLL_FAR *port );
                    544: 
                    545: PORT * GF_CONV PortOpenFossil( int port_number, long baud_rate, char parity,
                    546:                                int word_length, int stop_bits );
                    547: 
                    548: PORT * GF_CONV PortOpenSmartDigiboard( int port_number, long baud_rate,
                    549:                                        char parity, int word_length,
                    550:                                        int stop_bits  );
                    551: 
                    552: PORT GF_DLL_FAR * GF_CONV GF_DLL_FAR PortOpenGreenleaf( int port_number, long baud_rate,
                    553:                                              char parity, int word_length,
                    554:                                              int stop_bits );
                    555: 
                    556: PORT * GF_CONV PortOpenGreenleafPolled( int port_number, long baud_rate,
                    557:                                         char parity, int word_length,
                    558:                                         int stop_bits  );
                    559: 
                    560: PORT * GF_CONV PortOpenModemAssist( int port_number, long baud_rate,
                    561:                                     char parity, int word_length,
                    562:                                     int stop_bits );
                    563: 
                    564: PORT * GF_CONV PortOpenGreenleafFast( int port_number, long baud_rate,
                    565:                                       char parity, int word_length,
                    566:                                       int stop_bits  );
                    567: PORT * GF_CONV PortOpenBIOS( int port_number, long baud_rate,
                    568:                              char parity, int word_length,
                    569:                              int stop_bits  );
                    570: 
                    571: PORT * GF_CONV PortOpenExtendedBIOS( int port_number, long baud_rate,
                    572:                                      char parity, int word_length,
                    573:                                      int stop_bits  );
                    574: 
                    575: PORT * GF_CONV PortOpenSparkle( int port_number, long baud_rate,
                    576:                                 char parity, int word_length,
                    577:                                 int stop_bits  );
                    578: 
                    579: PORT * GF_CONV PortOpenSmartArnet( int port_number, long baud_rate,
                    580:                                    char parity, int word_length,
                    581:                                    int stop_bits  );
                    582: 
                    583: PORT * GF_CONV PortOpenSmartStarGate( int port_number, long baud_rate,
                    584:                                       char parity, int word_length,
                    585:                                       int stop_bits  );
                    586: 
                    587: PORT * GF_CONV PortOpenNasi( char GF_DLL_FAR *name, long baud_rate,
                    588:                              char parity, int word_length,
                    589:                              int stop_bits );
                    590: 
                    591: #if defined( GF_WINDOWS ) && !defined( GF_WIN32 )
                    592: PORT GF_DLL_FAR * GF_CONV PortOpenMSWindows( int port_number, long baud_rate,
                    593:                                   char parity, int word_length,
                    594:                                   int stop_bits
                    595:                                   );
                    596: unsigned int GF_CONV PortMSWindowsGetEventMask( PORT GF_DLL_FAR *port );
                    597: unsigned int GF_CONV PortMSWindowsGetMaskedEvents( PORT GF_DLL_FAR *port );
                    598: int GF_CONV PortEnableCommNotification( PORT GF_DLL_FAR *port,
                    599:                                         HWND hwnd,
                    600:                                         int in_notify,
                    601:                                         int out_notify,
                    602:                                         unsigned int event_mask );
                    603: #elif defined( GF_WIN32 )
                    604: PORT * GF_CONV PortOpenMSWin32( int port_number, long baud_rate,
                    605:                                 char parity, int word_length,
                    606:                                 int stop_bits );
                    607: unsigned int GF_CONV PortMSWin32GetEventMask( PORT *port );
                    608: HANDLE GF_CONV PortMSWin32GetCommHandle( PORT *port );
                    609: #endif
                    610: 
                    611: void GF_CONV SetPortIdleFunctionPtr( PORT_HOOK idle_fn );
                    612: /* void GF_CONV SetPortIdleFunctionPtr( int (GF_CONV GF_DLL_FAR *f)( PORT GF_DLL_FAR *port) );
                    613:  */
                    614: void GF_CONV SetUserErrorNameFunctionPtr( char *(GF_CONV GF_DLL_FAR *f)( int error ) );
                    615: void GF_CONV SetAbortModemFunctionPtr( PORT_HOOK abort_fn );
                    616: #ifdef VGFD
                    617: int GF_CONV InitGreenleaf( void );
                    618: int GF_CONV Get_COM1( void );
                    619: #endif
                    620: 
                    621: #ifdef __cplusplus
                    622: }
                    623: #endif
                    624: 
                    625: /*
                    626:  * Things after this point are all in place in order to have compatibility
                    627:  * with earlier versions of the CommLib.  Feel free to delete everything
                    628:  * from here down if you are not using any of the old function names.
                    629:  */
                    630: 
                    631: #define OFF             0
                    632: #define ON              1
                    633: 
                    634: #define glcrc( l, c, b )        CalculateBlockCRC16( l, c, b )  /* Tag: Misc private */
                    635: #ifdef COMPAT32
                    636: #if COMPAT32 > 0
                    637: #error Compatibility with the 3.x versions of CommLib are no longer supported!
                    638: #endif
                    639: #endif
                    640: 
                    641: /*
                    642:  * _debug.h has macros and prototypes for the heap debugger.  This will only
                    643:  * be invoked for certain configurations when the _DEBUG macro is
                    644:  * turned on.  If memory debugging gets turned on, we set the macro
                    645:  * GF_HEAP_DEBUGGER.  If you want to build a debug library, but don't want
                    646:  * to use our debugger, define GF_DISABLE_HEAP_DEBUGGER, and none of the
                    647:  * stuff in _DEBUG.H will get turned on.  You can define that constant
                    648:  * in either your project, or the appropriate place in BUILD.INI.
                    649:  */
                    650: 
                    651: #include "_debug.h"
                    652: 
                    653: #endif /* #ifndef COMMLIB_DOT_H */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.