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 */
|
||
/****************************************************************************/
|
||
|