428 lines
16 KiB
C
428 lines
16 KiB
C
/* connect.h */
|
|
|
|
/*************************************************************************
|
|
* If defined, the following flags inhibit definition
|
|
* of the indicated items.
|
|
*
|
|
* JUST COPY AND PASTE THE DEFINES THAT YOU NEED
|
|
*************************************************************************
|
|
#define NOORDINALS TRUE
|
|
#define NOPROTOTYPES TRUE
|
|
#define NODLLPROTOTYPES TRUE
|
|
#define NODCPROTOTYPES TRUE
|
|
#define NOCONSTANTS TRUE
|
|
#define NOCONNECTORS TRUE
|
|
#define NOGLOBALS TRUE
|
|
#define NO TRUE
|
|
|
|
*************************************************************************
|
|
*/
|
|
|
|
#ifndef MINCONSTR /* seh nova 005 */
|
|
#define MINCONSTR 64 /* seh nova 005 */
|
|
#endif
|
|
#ifndef MINRESSTR
|
|
#define MINRESSTR 32 /* seh nova 005 this must match dynacomm.h */
|
|
#endif
|
|
|
|
#ifndef NOORDINALS
|
|
/* define ordinal values for all exported functions */
|
|
#define ORD_GETDLLTYPE 959
|
|
#define ORD_GETCONNECTCAPS 962
|
|
#define ORD_SETPARAMETERS 800
|
|
#define ORD_GETEXTENDEDINFO 801
|
|
#define ORD_RESETCONNECTOR 802
|
|
#define ORD_EXITCONNECTOR 803
|
|
#define ORD_CONNECTCONNECTOR 804
|
|
#define ORD_READCONNECTOR 805
|
|
#define ORD_WRITECONNECTOR 806
|
|
#define ORD_COMMANDCONNECTOR 807
|
|
#define ORD_DISCONNECTCONNECTOR 808
|
|
#define ORD_SETUPCONNECTOR 809
|
|
|
|
#endif /* NOORDINALS */
|
|
|
|
|
|
|
|
#ifndef NOCONSTANTS
|
|
/* constants defined here (listed by function that uses them */
|
|
|
|
/* GetDLLType */
|
|
#define GDT_SHOW_EGO TRUE
|
|
#define GDT_QUIET FALSE
|
|
#define DC_CONNECTOR 4257
|
|
|
|
|
|
/* GetConnectCaps, SetParameters */
|
|
#define SET_PARAMETERS 0x0001
|
|
|
|
#define SP_GETCAPS 0x0001
|
|
#define SP_QUIET 0x0000
|
|
#define SP_SHOW 0x0002
|
|
#define SP_GETDEFAULT 0x0004
|
|
#define SP_SETDEFAULT 0x0008
|
|
|
|
#ifdef ORGCODE
|
|
#define SP_PARITY 0x0001
|
|
#define SP_BAUD 0x0002
|
|
#define SP_DATABITS 0x0004
|
|
#define SP_STOPBITS 0x0008
|
|
#define SP_HANDSHAKING 0x0010
|
|
#define SP_PARITY_CHECK 0x0020
|
|
#define SP_CARRIER_DETECT 0x0040
|
|
#endif
|
|
|
|
/* available baud rates */
|
|
#define GP_AVAIL_BAUD 0x0002
|
|
/* values can be.... */
|
|
#ifdef ORGCODE
|
|
#define BAUD_075 0x0001
|
|
#define BAUD_110 0x0002
|
|
#define BAUD_300 0x0004
|
|
#define BAUD_600 0x0008
|
|
|
|
#define BAUD_120 0x0010
|
|
#define BAUD_240 0x0020
|
|
#define BAUD_480 0x0040
|
|
#define BAUD_960 0x0080
|
|
#define BAUD_192 0x0100
|
|
#else
|
|
#define BAUD_120 BAUD_1200
|
|
#define BAUD_240 BAUD_2400
|
|
#define BAUD_480 BAUD_4800
|
|
#define BAUD_960 BAUD_9600
|
|
#define BAUD_192 BAUD_19200
|
|
|
|
#endif
|
|
|
|
#ifdef ORGCODE
|
|
#define BAUD_USER 0x0200
|
|
#endif
|
|
|
|
#define BAUD_ALL (BAUD_075+BAUD_110+BAUD_300+BAUD_600+BAUD_120+BAUD_240+BAUD_480+BAUD_960+BAUD_192+BAUD_USER)
|
|
#define BAUD_OFFSET 0x1000 /* tge used for resources */
|
|
|
|
/* available data bits */
|
|
#define GP_AVAIL_DATABITS 0x0004
|
|
/* values can be.... */
|
|
#ifdef ORGCODE
|
|
#define DATABITS_5 0x0001
|
|
#define DATABITS_6 0x0002
|
|
#define DATABITS_7 0x0004
|
|
#define DATABITS_8 0x0008
|
|
#endif
|
|
|
|
#define DATABITS_ALL (DATABITS_5+DATABITS_6+DATABITS_7+DATABITS_8)
|
|
#define DATABITS_OFFSET 0x2000 /* tge used for resources */
|
|
|
|
/* available stops bits */
|
|
#define GP_AVAIL_STOPBITS 0x0008
|
|
/* values can be.... */
|
|
#ifdef ORGCODE
|
|
#define STOPBITS_10 0x0001
|
|
#define STOPBITS_15 0x0002
|
|
#define STOPBITS_20 0x0004
|
|
#endif
|
|
|
|
#define STOPBITS_ALL (STOPBITS_10+STOPBITS_15+STOPBITS_20)
|
|
#define STOPBITS_OFFSET 0x3000 /* tge used for resources */
|
|
|
|
/* available parity options */
|
|
#define GP_AVAIL_PARITY 0x0010
|
|
/* values can be ... */
|
|
#ifdef ORGCODE
|
|
#define PARITY_NONE 0x0001
|
|
#define PARITY_ODD 0x0002
|
|
#define PARITY_EVEN 0x0004
|
|
#define PARITY_MARK 0x0008
|
|
#define PARITY_SPACE 0x0010
|
|
#endif
|
|
|
|
#define PARITY_ALL (PARITY_NONE+PARITY_ODD+PARITY_EVEN+PARITY_MARK+PARITY_SPACE)
|
|
#define PARITY_OFFSET 0x4000 /* tge used for resources */
|
|
|
|
/* available handshaking */
|
|
#define GP_AVAIL_HANDSHAKE 0x0020
|
|
/* values can be...*/
|
|
#define HANDSHAKE_XONXOFF 0x0001
|
|
#define HANDSHAKE_HARDWARE 0x0002
|
|
#define HANDSHAKE_NONE 0x0004
|
|
#define HANDSHAKE_ETXFLOW 0x0008
|
|
|
|
#define HANDSHAKE_ALL (HANDSHAKE_XONXOFF+HANDSHAKE_HARDWARE+HANDSHAKE_NONE+HANDSHAKE_ETXFLOW)
|
|
#define HANDSHAKE_OFFSET 0x5000 /* tge used for resources */
|
|
|
|
/* misc. options */
|
|
#define GP_AVAIL_MISC 0x0040
|
|
/* values can be... */
|
|
#define MISC_CARRIER_DETECT 0x0001
|
|
#define MISC_PARITY_CHECK 0x0002
|
|
|
|
#define MISC_ALL (MISC_CARRIER_DETECT+MISC_PARITY_CHECK)
|
|
#define MISC_NONE 0x0000
|
|
#define MISC_OFFSET 0x6000 /* tge used for resources */
|
|
|
|
|
|
/* GetExtendedInfo */
|
|
#define GI_STRSIZE 80
|
|
/* if GetExtendedInfo does not have extended info for what we want,
|
|
it gives us this message */
|
|
#define GIN_NOINFO 0xffff
|
|
/* else, the following stuff is used */
|
|
|
|
/* we send GetExtendedInfo this in parameter one and error code in param 2 */
|
|
#define GI_ERROR 0x0000
|
|
/* and GetExtended info returns this ... */
|
|
#define GIN_ERRWARNING 0x0000
|
|
#define GIN_ERRDLLCRASH 0x0001
|
|
#define GIN_ERRAPPCRASH 0x0002
|
|
#define GIN_ERRSYSCRASH 0x0003
|
|
#define GIN_ERRFATAL 0x0004
|
|
|
|
/* we send GetExtendedInfo this is param 1 */
|
|
#define GI_IDENTIFY 0x0001
|
|
/* and one of these in param 2 */
|
|
#define GI_DLLFILENAME 0x0000 /* put dll file name is param 3 */
|
|
#define GI_DLLNAME 0x0001 /* put dll name is param 3 (used in listbox) */
|
|
#define GI_CLIENTNAME 0x0002 /* put client name is param 3 */
|
|
#define GI_SERVERNAME 0x0003 /* put server name is param 3 */
|
|
#define GI_DLLVERSION 0x0004 /* put version # in param 3 */
|
|
#define GI_DLLINIFILENAME 0x0005 /* put ini filename in param 3 */
|
|
#define GI_SETUPBOX 0x0006 /* return TRUE if setup button should be enabled */
|
|
/* and GetExtended info returns this ... */
|
|
#define GI_OK TRUE
|
|
|
|
/* connector read and write errors */
|
|
#define CONNECT_READ_ERROR 0xffff
|
|
#define CONNECT_WRITE_ERROR (CONNECT_READ_ERROR)
|
|
|
|
/* connector ini list error */
|
|
#define CONNECT_NO_CONNECTORS (-2)
|
|
|
|
|
|
/* CommandConnector */
|
|
#define DLL_CMD_BREAK 0x0001
|
|
|
|
/* ConnectConnector */
|
|
#define STAT_CONNECTED 1 /* slc nova xxx */
|
|
#define STAT_NOT_CONNECTED 2 /* slc nova xxx */
|
|
#define STAT_WAIT_CONNECT 3 /* bjw nova 002 */
|
|
#define STAT_ERROR 4 /* bjw nova 002 */
|
|
|
|
/* control block constants */
|
|
#define TYPE_MODEM 0x0001
|
|
#define TYPE_NETWORK 0x0002
|
|
#define TYPE_PHYSICAL 0x0003
|
|
|
|
#endif /* NOCONSTANTS */
|
|
|
|
|
|
#ifndef NOCONNECTORS
|
|
/* User Union (not to be mistaken with the AFL-CIO */
|
|
|
|
#define CCB_UNION_SIZE 512 /* seh/slc nova */
|
|
|
|
typedef union
|
|
{
|
|
BYTE Byte[CCB_UNION_SIZE];
|
|
WORD Word[CCB_UNION_SIZE / sizeof(WORD)];
|
|
LONG Long[CCB_UNION_SIZE / sizeof(LONG)];
|
|
PSTR Pstr[CCB_UNION_SIZE / sizeof(PSTR)];
|
|
LPSTR Lpstr[CCB_UNION_SIZE / sizeof(LPSTR)];
|
|
HANDLE Handle[CCB_UNION_SIZE / sizeof(HANDLE)];
|
|
} USER_UNION;
|
|
|
|
/* Connector Control Block */
|
|
typedef struct
|
|
{
|
|
WORD wVersion; /* version number (always equals 100) */
|
|
HANDLE hConnectorInst; /* instance handle of connector DLL */
|
|
WORD wType; /* Type of connection (network, physical, ect...) */
|
|
WORD wStatus; /* Status (connected, not connected, ect... */
|
|
WPARAM wParamFlags; /* flags returned by GetConnectCaps(SET_PARAMETERS) */
|
|
WORD wBaudFlags; /* flags returned by GetConnectCaps(GP_AVAIL_BAUD) */
|
|
WORD wDataBitFlags; /* flags returned by GetConnectCaps(GP_AVAIL_DATABITS) */
|
|
WORD wStopBitFlags; /* flags returned by GetConnectCaps(GP_AVAIL_STOPBITS) */
|
|
WORD wParityFlags; /* flags returned by GetConnectCaps(GP_AVAIL_PARITY) */
|
|
WORD wHandshakeFlags; /* flags returned by GetConnectCaps(GP_AVAIL_HANDSHAKE) */
|
|
WORD wMiscFlags; /* flags returned by GetConnectCaps(GP_AVAIL_MISC) */
|
|
|
|
WORD wSpeed; /* currently set baud rate (actual value) */ /* seh nova 005 */
|
|
WORD wBaudSet; /* currently set baud rate (control id) */
|
|
WORD wDataBitSet; /* currently set data bits (control id) */
|
|
WORD wStopBitSet; /* currently set stop bits (control id) */
|
|
WORD wParitySet; /* currently set parity (control id) */
|
|
WORD wHandshakeSet; /* currently set handshaking (control id) */
|
|
WORD wMiscSet; /* currently set misc (bit flags) */
|
|
|
|
BYTE szPhoneNumber[MINRESSTR]; /* Phone Number to Dial */
|
|
BYTE szDLLFileName[MINRESSTR]; /* DOS filename for DLL */
|
|
BYTE szDLLName[MINRESSTR]; /* Name used in connectors listbox */
|
|
|
|
BYTE szClient[16]; /* client name (for network DLL use) */
|
|
BYTE szServer[64]; /* server name (for network DLL use) */
|
|
WORD wNetBiosLNum; /* slc nova NetBIOS Local Session Number */
|
|
WORD wNetBiosRNum; /* slc nova NetBIOS Remote Session Number */
|
|
WORD byPadChar; /* char used for blank padding */
|
|
|
|
WORD wReadBufferSize; /* size of read transfer buffer */
|
|
WORD wReadBufferRead; /* actual bytes read */ /* bjw nova 002 */
|
|
LPSTR lpReadBuffer; /* address of read transfer buffer */
|
|
HANDLE hReadBuffer; /* handle to read transfer buffer */
|
|
WORD wWriteBufferSize; /* size of write transfer buffer */
|
|
WORD wWriteBufferUsed; /* size of write transfer buffer used */ /* seh nova 005 */
|
|
LPSTR lpWriteBuffer; /* address of write transfer buffer */
|
|
HANDLE hWriteBuffer; /* handle to write transfer buffer */
|
|
LPSTR lpNCB; /* address of NetBIOS Control Block */
|
|
HANDLE hNCB; /* handle to NetBIOS Control Block */
|
|
LPSTR lpNCBWrite; /* address of NetBIOS Control Block */
|
|
HANDLE hNCBWrite; /* handle to NetBIOS Control Block */
|
|
LPSTR lpNCBRead; /* address of NetBIOS Control Block */
|
|
HANDLE hNCBRead; /* handle to NetBIOS Control Block */
|
|
WORD wTimeRemain; /* NetBIOS Listen Timeout */
|
|
BYTE configBuffer[32]; /* Saved in DCS file (for DLL use) */
|
|
|
|
USER_UNION User; /* DLL's are free to use this space
|
|
in anyway that they would like to */
|
|
} CONNECTOR_CONTROL_BLOCK, *PCONNECTOR_CONTROL_BLOCK, FAR *LPCONNECTOR_CONTROL_BLOCK;
|
|
|
|
/* connector array structure */
|
|
typedef struct
|
|
{
|
|
WORD wNumOfChannels; /* number of opened channels */
|
|
WORD wTopChannel; /* if a session window is the top window, */
|
|
/* then this is it's index into CCB array */
|
|
HANDLE hCCBArray;
|
|
LPCONNECTOR_CONTROL_BLOCK lpCCB[1]; /* array of CCB's (dynamically allocated) */
|
|
} CONNECTORS, *PCONNECTORS, FAR *LPCONNECTORS;
|
|
|
|
#endif /* NOCONNECTORS */
|
|
|
|
|
|
#ifndef NOGLOBALS
|
|
|
|
HANDLE ghConnectors; /* global handle to connector data struct */
|
|
HANDLE ghCCB; /* global handle CONNECTOR_CONTROL_BLOCK */
|
|
LPCONNECTORS xglpConnectors; /* not used anymore - long pointer to connector data structure */
|
|
HANDLE ghWorkConnector; /* handle for temporary connector work (settings) */
|
|
BYTE gszWork[MINCONSTR]; /* slc nova xxx */
|
|
|
|
#endif /* NOGLOBALS */
|
|
|
|
|
|
#ifndef NOPROTOTYPES
|
|
/* exported functions prototypes */
|
|
|
|
#ifndef NODLLPROTOTYPES
|
|
/* Connect DLL's */
|
|
WORD APIENTRY GetDLLType(HWND, BOOL);
|
|
WORD APIENTRY GetConnectCaps(WORD);
|
|
WORD APIENTRY SetParameters(WORD, LPCONNECTOR_CONTROL_BLOCK);
|
|
WORD APIENTRY GetExtendedInfo(WORD, WORD, LPSTR);
|
|
WORD APIENTRY ResetConnector(HWND, LPCONNECTOR_CONTROL_BLOCK, BOOL);
|
|
WORD APIENTRY ExitConnector(HWND, LPCONNECTOR_CONTROL_BLOCK, BOOL);
|
|
WORD APIENTRY ConnectConnector(HWND, LPCONNECTOR_CONTROL_BLOCK, BOOL);
|
|
WORD APIENTRY ReadConnector(LPCONNECTOR_CONTROL_BLOCK);
|
|
WORD APIENTRY WriteConnector(LPCONNECTOR_CONTROL_BLOCK);
|
|
WORD APIENTRY CommandConnector(HWND, LPCONNECTOR_CONTROL_BLOCK, WORD, LONG);
|
|
WORD APIENTRY DisconnectConnector(HANDLE, LPCONNECTOR_CONTROL_BLOCK);
|
|
|
|
#endif /* NODLLPROTOTYPES */
|
|
|
|
#ifndef NODCPROTOTYPES
|
|
/* DynaComm */
|
|
BOOL initConnectors(BOOL);
|
|
VOID addConnectorList(HWND, WORD); /* slc nova 031 */
|
|
HANDLE loadConnector(HWND, HANDLE, LPSTR, BOOL); /* slc nova 031 */
|
|
WORD getConnectorCaps(LPCONNECTOR_CONTROL_BLOCK); /* slc nova 031 */
|
|
WORD setConnectorSettings(HWND, HANDLE, BOOL);
|
|
WORD getConnectorSettings(LPCONNECTOR_CONTROL_BLOCK, BOOL); /* slc nova 031 */
|
|
WORD DLL_ResetConnector(HANDLE, BOOL); /* slc nova 031 */
|
|
WORD DLL_SetupConnector(HANDLE, BOOL); /* slc nova 031 */
|
|
WORD DLL_ExitConnector(HANDLE, recTrmParams *);
|
|
WORD DLL_ConnectConnector(HANDLE, BOOL); /* slc nova 031 */
|
|
WORD DLL_ReadConnector(HANDLE); /* slc nova 031 */
|
|
WORD DLL_WriteConnector(HANDLE); /* slc nova 031 */
|
|
WORD DLL_CommandConnector(HANDLE, LPCONNECTOR_CONTROL_BLOCK, WORD, LONG);
|
|
WORD DLL_DisconnectConnector(HANDLE hCCB); /* slc nova 031 seh nova 005 */
|
|
WORD DLL_modemSendBreak(HANDLE, INT);
|
|
WORD DLL_ConnectBytes(HANDLE); /* slc nova 031 */
|
|
WORD getConnectType(HANDLE hConnector, HANDLE hCCB); /* seh nova 005 */
|
|
VOID ccbFromTrmParams(LPCONNECTOR_CONTROL_BLOCK, recTrmParams *);
|
|
VOID ccbToTrmParams(recTrmParams *, LPCONNECTOR_CONTROL_BLOCK);
|
|
BOOL DLL_HasSetupBox(HANDLE hConnector); /* seh nova 006 */
|
|
|
|
WORD putCCB_BAUDITM(WORD); /* slc nova xxx */
|
|
WORD putCCB_BAUD(WORD);
|
|
WORD putCCB_DATABITS(WORD);
|
|
WORD putCCB_PARITY(WORD);
|
|
WORD putCCB_STOPBITS(WORD);
|
|
WORD putCCB_FLOWCTRL(WORD);
|
|
WORD putCCB_MISCSET(WORD, WORD);
|
|
|
|
#endif /* NODCPROTOTYPES */
|
|
#endif /* NOPROTOTYPES */
|
|
|
|
/* taken from dcrc.h bjw nova 002 */
|
|
#ifdef NEED_DCRC
|
|
/* bjw gold 027 - the evil warning! */
|
|
/*****************************************************************************
|
|
* B I G - T I M E , W A R N I N G !, W A R N I N G !, W A R N I N G !
|
|
*
|
|
* WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING!
|
|
*
|
|
* If any of the folling ID's change (and you better have a good reason!)
|
|
* make sure and change the corresponding ID's in any DLL that uses them and
|
|
* recompile DynaComm and ALL connector DLL's.
|
|
* If you really have to change one of these items, DynaComm will no longer
|
|
* be compatible with earlier settings files or connector DLL's.
|
|
* I WARNED YOU!
|
|
*
|
|
******************************************************************************/
|
|
|
|
#define ITMSETUP 3 /* seh nova 005 */
|
|
|
|
#define IDDBCOMM 7
|
|
|
|
#define ITMBD110 11
|
|
#define ITMBD300 12
|
|
#define ITMBD600 13 /* mbbx 2.00: support 600 baud */
|
|
#define ITMBD120 14
|
|
#define ITMBD240 15
|
|
#define ITMBD480 16
|
|
#define ITMBD960 17
|
|
#define ITMBD192 18
|
|
|
|
#define ITMDATA4 21 /* not used */
|
|
#define ITMDATA5 22
|
|
#define ITMDATA6 23
|
|
#define ITMDATA7 24
|
|
#define ITMDATA8 25
|
|
|
|
#define ITMSTOP1 31
|
|
#define ITMSTOP5 32
|
|
#define ITMSTOP2 33
|
|
|
|
#define ITMNOPARITY 41
|
|
#define ITMODDPARITY 42
|
|
#define ITMEVENPARITY 43
|
|
#define ITMMARKPARITY 44
|
|
#define ITMSPACEPARITY 45
|
|
|
|
#define ITMXONFLOW 51
|
|
#define ITMHARDFLOW 52
|
|
#define ITMNOFLOW 53
|
|
#define ITMETXFLOW 54 /* jtfx 2.01.75 ... */
|
|
|
|
#define ITMCONNECTOR 61
|
|
|
|
#define ITMPARITY 91
|
|
#define ITMCARRIER 92
|
|
|
|
#endif /* NEED_DCRC */
|
|
|
|
/* WINCIM typedef's */
|
|
|
|
typedef CONNECTOR_CONTROL_BLOCK CCB;
|
|
typedef CCB FAR * LPCCB;
|