422 lines
12 KiB
C
422 lines
12 KiB
C
|
/*++
|
|||
|
|
|||
|
*****************************************************************************
|
|||
|
* *
|
|||
|
* This software contains proprietary and confiential information of *
|
|||
|
* *
|
|||
|
* Digi International Inc. *
|
|||
|
* *
|
|||
|
* By accepting transfer of this copy, Recipient agrees to retain this *
|
|||
|
* software in confidence, to prevent disclosure to others, and to make *
|
|||
|
* no use of this software other than that for which it was delivered. *
|
|||
|
* This is an unpublished copyrighted work of Digi International Inc. *
|
|||
|
* Except as permitted by federal law, 17 USC 117, copying is strictly *
|
|||
|
* prohibited. *
|
|||
|
* *
|
|||
|
*****************************************************************************
|
|||
|
|
|||
|
Module Name:
|
|||
|
|
|||
|
dgconfig.h
|
|||
|
|
|||
|
Abstract:
|
|||
|
|
|||
|
This module contains various definitions, prototypes, and
|
|||
|
type definitions used by the DGCONFIG.DLL.
|
|||
|
|
|||
|
Revision History:
|
|||
|
|
|||
|
* $Log: dgconfig.h $
|
|||
|
* Revision 1.10 1995/10/23 12:58:02 dirkh
|
|||
|
* Use PATHSIZE and NAMESIZE (display) for buffer allocation.
|
|||
|
*
|
|||
|
* Revision 1.9 1994/09/15 09:27:36 rik
|
|||
|
* Added Winhelp macro calls which allow the help system to popup the
|
|||
|
* correct technical support information.
|
|||
|
*
|
|||
|
* Revision 1.8 1994/01/31 14:02:30 rik
|
|||
|
* Updated to include support for StarGates ClusStar controller.
|
|||
|
*
|
|||
|
* Revision 1.7 1994/01/24 18:10:09 rik
|
|||
|
* Updated to support new configuration which supports the EPC controller.
|
|||
|
*
|
|||
|
* Currently have the new configuration exporting from the DLL to the .INF.
|
|||
|
*
|
|||
|
* Revision 1.6 1993/08/27 09:55:25 rik
|
|||
|
* Added support for DigiBoards Microchannel controllers.
|
|||
|
*
|
|||
|
* Revision 1.5 1993/07/15 07:21:26 rik
|
|||
|
* Added support PC/16i and PC/16e controllers.
|
|||
|
* Fixed problem with addding and deleting PC/Xem concentrators.
|
|||
|
*
|
|||
|
* Revision 1.4 1993/06/23 16:52:43 rik
|
|||
|
* Added support for the new 8K 4Port(PC/4e), 8K 8Port(PC/8e), and changed
|
|||
|
* the controller type from DIGIBOARD_PC2E to DIGIBOARD_2PORT. New naming
|
|||
|
* convention for this line of controllers.
|
|||
|
*
|
|||
|
* Revision 1.3 1993/06/14 14:37:03 rik
|
|||
|
* Added support for Speed button in the Concentrator Dialog box.
|
|||
|
*
|
|||
|
* Revision 1.1 1993/05/07 11:51:12 rik
|
|||
|
* Initial revision
|
|||
|
*
|
|||
|
--*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/****************************************************************************/
|
|||
|
/* Definitions */
|
|||
|
/****************************************************************************/
|
|||
|
|
|||
|
// Default Buffer sizes
|
|||
|
#define PATHSIZE 128
|
|||
|
#define NAMESIZE 40
|
|||
|
|
|||
|
// Types of Adapters
|
|||
|
#define DIGIBOARD_UNKNOWN -1
|
|||
|
#define DIGIBOARD_PC8E 0
|
|||
|
#define DIGIBOARD_PC8I 1
|
|||
|
#define DIGIBOARD_PCXEM 2
|
|||
|
#define DIGIBOARD_CX 3
|
|||
|
#define DIGIBOARD_2PORT 4
|
|||
|
#define DIGIBOARD_PC4E 5
|
|||
|
#define DIGIBOARD_4PORT 6
|
|||
|
#define DIGIBOARD_8PORT 7
|
|||
|
#define DIGIBOARD_PC16E 8
|
|||
|
#define DIGIBOARD_PC16I 9
|
|||
|
#define DIGIBOARD_MC4I 10
|
|||
|
#define DIGIBOARD_EPC 11
|
|||
|
#define STARGATE_CLUSSTAR 12
|
|||
|
#define IBM_8PORT 13
|
|||
|
|
|||
|
//
|
|||
|
// Types of Concentrators
|
|||
|
//
|
|||
|
// The different types of concentrators are separted based on their string
|
|||
|
// name number. e.g. IDS_EPC_CONC is used for both the ConcType, and
|
|||
|
// as an indicator of which string represents the
|
|||
|
// concentrator.
|
|||
|
//
|
|||
|
|
|||
|
// Line speeds
|
|||
|
#define LINEMODE_00 0x00
|
|||
|
#define LINEMODE_01 0x01
|
|||
|
#define LINEMODE_02 0x02
|
|||
|
#define LINEMODE_03 0x03
|
|||
|
#define LINEMODE_04 0x04
|
|||
|
#define LINEMODE_05 0x05
|
|||
|
#define LINEMODE_06 0x06
|
|||
|
#define LINEMODE_07 0x07
|
|||
|
#define LINEMODE_08 0x08
|
|||
|
#define LINEMODE_09 0x09
|
|||
|
#define LINEMODE_0A 0x0A
|
|||
|
#define LINEMODE_0B 0x0B
|
|||
|
#define LINEMODE_0C 0x0C
|
|||
|
#define LINEMODE_0D 0x0D
|
|||
|
#define LINEMODE_0E 0x0E
|
|||
|
#define LINEMODE_0F 0x0F
|
|||
|
#define LINEMODE_10 0x10
|
|||
|
#define LINEMODE_11 0x11
|
|||
|
#define LINEMODE_12 0x12
|
|||
|
#define LINEMODE_13 0x13
|
|||
|
#define LINEMODE_14 0x14
|
|||
|
#define LINEMODE_15 0x15
|
|||
|
#define LINEMODE_16 0x16
|
|||
|
#define LINEMODE_17 0x17
|
|||
|
#define LINEMODE_18 0x18
|
|||
|
#define LINEMODE_19 0x19
|
|||
|
#define LINEMODE_1A 0x1A
|
|||
|
#define LINEMODE_1B 0x1B
|
|||
|
#define LINEMODE_1C 0x1C
|
|||
|
#define LINEMODE_1D 0x1D
|
|||
|
#define LINEMODE_1E 0x1E
|
|||
|
#define LINEMODE_1F 0x1F
|
|||
|
#define LINEMODE_20 0x20
|
|||
|
#define LINEMODE_21 0x21
|
|||
|
#define LINEMODE_22 0x22
|
|||
|
#define LINEMODE_23 0x23
|
|||
|
#define LINEMODE_24 0x24
|
|||
|
#define LINEMODE_25 0x25
|
|||
|
#define LINEMODE_26 0x26
|
|||
|
#define LINEMODE_27 0x27
|
|||
|
#define LINEMODE_28 0x28
|
|||
|
#define LINEMODE_29 0x29
|
|||
|
#define LINEMODE_2A 0x2A
|
|||
|
#define LINEMODE_2B 0x2B
|
|||
|
#define LINEMODE_2C 0x2C
|
|||
|
#define LINEMODE_2D 0x2D
|
|||
|
#define LINEMODE_2E 0x2E
|
|||
|
#define LINEMODE_2F 0x2F
|
|||
|
#define LINEMODE_30 0x30
|
|||
|
#define LINEMODE_31 0x31
|
|||
|
#define LINEMODE_32 0x32
|
|||
|
#define LINEMODE_33 0x33
|
|||
|
#define LINEMODE_34 0x34
|
|||
|
#define LINEMODE_35 0x35
|
|||
|
#define LINEMODE_36 0x36
|
|||
|
#define LINEMODE_37 0x37
|
|||
|
#define LINEMODE_38 0x38
|
|||
|
#define LINEMODE_39 0x39
|
|||
|
#define LINEMODE_3A 0x3A
|
|||
|
#define LINEMODE_3B 0x3B
|
|||
|
#define LINEMODE_3C 0x3C
|
|||
|
#define LINEMODE_3D 0x3D
|
|||
|
#define LINEMODE_3E 0x3E
|
|||
|
#define LINEMODE_3F 0x3F
|
|||
|
#define LINEMODE_40 0x40
|
|||
|
#define LINEMODE_41 0x41
|
|||
|
#define LINEMODE_42 0x42
|
|||
|
#define LINEMODE_43 0x43
|
|||
|
#define LINEMODE_44 0x44
|
|||
|
#define LINEMODE_45 0x45
|
|||
|
#define LINEMODE_46 0x46
|
|||
|
#define LINEMODE_47 0x47
|
|||
|
#define LINEMODE_48 0x48
|
|||
|
#define LINEMODE_49 0x49
|
|||
|
#define LINEMODE_4A 0x4A
|
|||
|
|
|||
|
#define SubclassWindow( hWnd, lpfn ) \
|
|||
|
((WNDPROC)SetWindowLong((hWnd), GWL_WNDPROC, \
|
|||
|
(LPARAM)(WNDPROC)(lpfn)))
|
|||
|
|
|||
|
/****************************************************************************/
|
|||
|
/* Global Type Definitions */
|
|||
|
/****************************************************************************/
|
|||
|
|
|||
|
//
|
|||
|
// VOID
|
|||
|
// InitializeListHead(
|
|||
|
// PLIST_ENTRY ListHead
|
|||
|
// );
|
|||
|
//
|
|||
|
|
|||
|
#define InitializeListHead(ListHead) (\
|
|||
|
(ListHead)->Flink = (ListHead)->Blink = (ListHead))
|
|||
|
|
|||
|
//
|
|||
|
// BOOLEAN
|
|||
|
// IsListEmpty(
|
|||
|
// PLIST_ENTRY ListHead
|
|||
|
// );
|
|||
|
//
|
|||
|
|
|||
|
#define IsListEmpty(ListHead) \
|
|||
|
((ListHead)->Flink == (ListHead))
|
|||
|
|
|||
|
//
|
|||
|
// PLIST_ENTRY
|
|||
|
// RemoveHeadList(
|
|||
|
// PLIST_ENTRY ListHead
|
|||
|
// );
|
|||
|
//
|
|||
|
|
|||
|
#define RemoveHeadList(ListHead) \
|
|||
|
(ListHead)->Flink;\
|
|||
|
{RemoveEntryList((ListHead)->Flink)}
|
|||
|
|
|||
|
//
|
|||
|
// PLIST_ENTRY
|
|||
|
// RemoveTailList(
|
|||
|
// PLIST_ENTRY ListHead
|
|||
|
// );
|
|||
|
//
|
|||
|
|
|||
|
#define RemoveTailList(ListHead) \
|
|||
|
(ListHead)->Blink;\
|
|||
|
{RemoveEntryList((ListHead)->Blink)}
|
|||
|
|
|||
|
//
|
|||
|
// VOID
|
|||
|
// RemoveEntryList(
|
|||
|
// PLIST_ENTRY Entry
|
|||
|
// );
|
|||
|
//
|
|||
|
|
|||
|
#define RemoveEntryList(Entry) {\
|
|||
|
PLIST_ENTRY _EX_Blink;\
|
|||
|
PLIST_ENTRY _EX_Flink;\
|
|||
|
_EX_Flink = (Entry)->Flink;\
|
|||
|
_EX_Blink = (Entry)->Blink;\
|
|||
|
_EX_Blink->Flink = _EX_Flink;\
|
|||
|
_EX_Flink->Blink = _EX_Blink;\
|
|||
|
}
|
|||
|
|
|||
|
//
|
|||
|
// VOID
|
|||
|
// InsertTailList(
|
|||
|
// PLIST_ENTRY ListHead,
|
|||
|
// PLIST_ENTRY Entry
|
|||
|
// );
|
|||
|
//
|
|||
|
|
|||
|
#define InsertTailList(ListHead,Entry) {\
|
|||
|
PLIST_ENTRY _EX_Blink;\
|
|||
|
PLIST_ENTRY _EX_ListHead;\
|
|||
|
_EX_ListHead = (ListHead);\
|
|||
|
_EX_Blink = _EX_ListHead->Blink;\
|
|||
|
(Entry)->Flink = _EX_ListHead;\
|
|||
|
(Entry)->Blink = _EX_Blink;\
|
|||
|
_EX_Blink->Flink = (Entry);\
|
|||
|
_EX_ListHead->Blink = (Entry);\
|
|||
|
}
|
|||
|
|
|||
|
//
|
|||
|
// VOID
|
|||
|
// InsertHeadList(
|
|||
|
// PLIST_ENTRY ListHead,
|
|||
|
// PLIST_ENTRY Entry
|
|||
|
// );
|
|||
|
//
|
|||
|
|
|||
|
#define InsertHeadList(ListHead,Entry) {\
|
|||
|
PLIST_ENTRY _EX_Flink;\
|
|||
|
PLIST_ENTRY _EX_ListHead;\
|
|||
|
_EX_ListHead = (ListHead);\
|
|||
|
_EX_Flink = _EX_ListHead->Flink;\
|
|||
|
(Entry)->Flink = _EX_Flink;\
|
|||
|
(Entry)->Blink = _EX_ListHead;\
|
|||
|
_EX_Flink->Blink = (Entry);\
|
|||
|
_EX_ListHead->Flink = (Entry);\
|
|||
|
}
|
|||
|
|
|||
|
//
|
|||
|
// Identifiers for what kind of object is being used.
|
|||
|
//
|
|||
|
typedef enum _DGOBJECT_TYPE
|
|||
|
{
|
|||
|
CONFIG_OBJECT,
|
|||
|
CONTROLLER_OBJECT,
|
|||
|
LINE_OBJECT,
|
|||
|
CONC_OBJECT,
|
|||
|
PORT_OBJECT
|
|||
|
} DGOBJECT_TYPE, FAR *LPDGOBJECT_TYPE;
|
|||
|
|
|||
|
struct _DGCTRL_OBJECT;
|
|||
|
struct _DGLINE_OBJECT;
|
|||
|
struct _DGCONC_OBJECT;
|
|||
|
struct _DGPORT_OBJECT;
|
|||
|
struct _DGCONFIG_OBJECT;
|
|||
|
|
|||
|
typedef struct _DGCTRL_OBJECT
|
|||
|
{
|
|||
|
DGOBJECT_TYPE Type;
|
|||
|
BOOL bDisplayLineName;
|
|||
|
DWORD NumberOfLines;
|
|||
|
char CtrlName[PATHSIZE];
|
|||
|
char CtrlDisplayName[NAMESIZE];
|
|||
|
LIST_ENTRY LineList;
|
|||
|
} DGCTRL_OBJECT, FAR *LPDGCTRL_OBJECT;
|
|||
|
|
|||
|
typedef struct _DGLINE_OBJECT
|
|||
|
{
|
|||
|
DGOBJECT_TYPE Type; // The following items must line up with the
|
|||
|
LPDGCTRL_OBJECT ParentObject; // CONC_OBJECT defined below!
|
|||
|
HGLOBAL hLineObject; // |
|
|||
|
DWORD LineSpeed; // |
|
|||
|
LIST_ENTRY ListEntry; // |
|
|||
|
// |
|
|||
|
DWORD NumberOfConcs; // |
|
|||
|
LIST_ENTRY ConcList; // V
|
|||
|
// ------------------------------------------------
|
|||
|
|
|||
|
BOOL bDisplayConcName;
|
|||
|
DWORD LineIndex;
|
|||
|
DWORD DefaultLineSpeed; // Default Speed to use for new Conc.
|
|||
|
|
|||
|
CHAR LineName[PATHSIZE];
|
|||
|
CHAR LineDisplayName[NAMESIZE];
|
|||
|
} DGLINE_OBJECT, FAR *LPDGLINE_OBJECT;
|
|||
|
|
|||
|
typedef struct _DGCONC_OBJECT
|
|||
|
{
|
|||
|
DGOBJECT_TYPE Type; // The following items must line up with the
|
|||
|
LPDGLINE_OBJECT ParentObject; // LINE_OBJECT defined above!
|
|||
|
HGLOBAL hConcObject; // |
|
|||
|
DWORD LineSpeed; // |
|
|||
|
LIST_ENTRY ListEntry; // |
|
|||
|
// |
|
|||
|
DWORD NumberOfConcs; // |
|
|||
|
LIST_ENTRY ConcList; // V
|
|||
|
// ------------------------------------------------
|
|||
|
|
|||
|
|
|||
|
DWORD NumberOfPorts;
|
|||
|
LIST_ENTRY PortList;
|
|||
|
|
|||
|
DWORD ConcType;
|
|||
|
CHAR ConcName[PATHSIZE];
|
|||
|
CHAR ConcDisplayName[NAMESIZE];
|
|||
|
} DGCONC_OBJECT, FAR *LPDGCONC_OBJECT;
|
|||
|
|
|||
|
typedef struct _DGPORT_OBJECT
|
|||
|
{
|
|||
|
DGOBJECT_TYPE Type;
|
|||
|
LPDGCONC_OBJECT ParentObject;
|
|||
|
HANDLE hPortObject;
|
|||
|
DWORD ControllerPortIndex; // The Index of a port from the
|
|||
|
// controllers point of view.
|
|||
|
// e.g. Port12 on controller 2
|
|||
|
HGLOBAL hDosDevicesName;
|
|||
|
LPSTR DosDevicesName; // Name to use port by
|
|||
|
LIST_ENTRY ListEntry;
|
|||
|
CHAR PortName[PATHSIZE];
|
|||
|
CHAR PortDisplayName[NAMESIZE];
|
|||
|
} DGPORT_OBJECT, FAR *LPDGPORT_OBJECT;
|
|||
|
|
|||
|
typedef LRESULT (*PDGCONFIG_ADDADAPTER)(
|
|||
|
struct _DGCONFIG_OBJECT *DGConfigObject );
|
|||
|
|
|||
|
typedef LRESULT (*PDGCONFIG_REMOVEADAPTER)(
|
|||
|
struct _DGCONFIG_OBJECT *DGConfigObject );
|
|||
|
|
|||
|
typedef LRESULT (*PDGCONFIG_CONFIGADAPTER)(
|
|||
|
struct _DGCONFIG_OBJECT *DGConfigObject,
|
|||
|
HWND hDlg );
|
|||
|
|
|||
|
typedef LRESULT (*LPDGCONFIG_CONCENTRATOR)(
|
|||
|
HWND hWnd,
|
|||
|
struct _DGCONFIG_OBJECT *lpDGConfigObject );
|
|||
|
|
|||
|
typedef struct _DGCONFIG_OBJECT
|
|||
|
{
|
|||
|
DGOBJECT_TYPE Type;
|
|||
|
LONG AdapterType;
|
|||
|
LPDGCONFIG_CONCENTRATOR lfpConc;
|
|||
|
LPSTR AdapterDesc;
|
|||
|
LPSTR IRQList;
|
|||
|
LONG IRQListSize;
|
|||
|
LONG IRQDefault;
|
|||
|
LPSTR MemoryList;
|
|||
|
LONG MemoryListSize;
|
|||
|
LONG MemoryDefault;
|
|||
|
LPSTR IOList;
|
|||
|
LONG IOListSize;
|
|||
|
LONG IODefault;
|
|||
|
LPSTR PortNameList;
|
|||
|
LONG PortNameListSize;
|
|||
|
BOOL AutoArrange;
|
|||
|
LIST_ENTRY SerialCommList;
|
|||
|
DGCTRL_OBJECT CtrlObject;
|
|||
|
} DGCONFIG_OBJECT, FAR *LPDGCONFIG_OBJECT;
|
|||
|
|
|||
|
typedef struct _SERIALCOMM_OBJECT
|
|||
|
{
|
|||
|
HGLOBAL hSerialCommObject;
|
|||
|
HGLOBAL hDosDevicesName;
|
|||
|
LPSTR DosDevicesName;
|
|||
|
LIST_ENTRY ListEntry;
|
|||
|
} SERIALCOMM_OBJECT, *LPSERIALCOMM_OBJECT;
|
|||
|
|
|||
|
|
|||
|
/****************************************************************************/
|
|||
|
/* Global Variables */
|
|||
|
/****************************************************************************/
|
|||
|
|
|||
|
extern HANDLE ghMod;
|
|||
|
|
|||
|
|
|||
|
/****************************************************************************/
|
|||
|
/* Function Prototypes */
|
|||
|
/****************************************************************************/
|
|||
|
|