NT4/private/ntos/dd/digibrd/setupdll/dgconfig.h
2020-09-30 17:12:29 +02:00

422 lines
12 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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