1207 lines
36 KiB
C
1207 lines
36 KiB
C
/*===========================================================================*/
|
|
/* Copyright (c) 1987 - 1990, Future Soft Engineering, Inc. */
|
|
/* Houston, Texas */
|
|
/*===========================================================================*/
|
|
|
|
#define NOGDICAPMASKS TRUE
|
|
#define NOVIRTUALKEYCODES TRUE
|
|
#define NOICONS TRUE
|
|
#define NOKEYSTATES TRUE
|
|
#define NOSYSCOMMANDS TRUE
|
|
#define NOATOM TRUE
|
|
#define NOCLIPBOARD TRUE
|
|
#define NODRAWTEXT TRUE
|
|
#define NOMB TRUE
|
|
#define NOMINMAX TRUE
|
|
#define NOSCROLL TRUE
|
|
#define NOHELP TRUE
|
|
#define NOPROFILER TRUE
|
|
#define NODEFERWINDOWPOS TRUE
|
|
#define NOPEN TRUE
|
|
#define NO_TASK_DEFINES TRUE
|
|
#define NOLSTRING TRUE
|
|
#define WIN31
|
|
#define USECOMM
|
|
|
|
#include <windows.h>
|
|
#include <port1632.h>
|
|
#include "dcrc.h"
|
|
#include "dynacomm.h"
|
|
#include "network.h"
|
|
#include "video.h"
|
|
#include "connect.h"
|
|
|
|
|
|
/**************************************************************************/
|
|
/* */
|
|
/* initConnectors */
|
|
/* */
|
|
/**************************************************************************/
|
|
|
|
BOOL initConnectors(BOOL bInit)
|
|
{
|
|
LPCONNECTORS lpConnectors; /* slc nova 031 */
|
|
|
|
if(bInit) /* we are initializing stuff */
|
|
{
|
|
ghConnectors = GlobalAlloc(GHND | GMEM_ZEROINIT, (DWORD) sizeof(CONNECTORS));
|
|
if(ghConnectors == NULL)
|
|
return(FALSE);
|
|
|
|
/* slc nova 031 */
|
|
ghCCB = GlobalAlloc(GHND | GMEM_ZEROINIT, (DWORD)sizeof(CONNECTOR_CONTROL_BLOCK));
|
|
|
|
/* the lpConnectors struct not really used by DynaComm at this time */
|
|
/* let's go ahead and allocate room for one CCB */
|
|
lpConnectors = (LPCONNECTORS) GlobalLock(ghConnectors);
|
|
lpConnectors->hCCBArray = ghCCB;
|
|
|
|
if(lpConnectors->hCCBArray == NULL)
|
|
{
|
|
GlobalUnlock(ghConnectors);
|
|
GlobalFree(ghConnectors);
|
|
return(FALSE);
|
|
}
|
|
|
|
lpConnectors->lpCCB[0] = (LPCONNECTOR_CONTROL_BLOCK)GlobalLock(lpConnectors->hCCBArray);
|
|
|
|
GlobalUnlock(ghConnectors);
|
|
}
|
|
else
|
|
{ /* we are unloading this stuff */
|
|
GlobalFree(ghCCB); /* slc nova 031 */
|
|
GlobalFree(ghConnectors); /* slc nova 031 */
|
|
}
|
|
|
|
return(TRUE);
|
|
}
|
|
|
|
|
|
/**************************************************************************/
|
|
/* */
|
|
/* addConnectorList */
|
|
/* */
|
|
/**************************************************************************/
|
|
|
|
VOID addConnectorList(HWND hDlg, WORD wId) /* slc nova 031 */
|
|
{
|
|
HANDLE theHandle;
|
|
OFSTRUCT ofDummy;
|
|
|
|
if (MOpenFile((LPSTR)"LANMAN.DLL", (LPOFSTRUCT)&ofDummy, OF_EXIST) != -1)
|
|
SendDlgItemMessage(hDlg, wId, LB_INSERTSTRING, -1, (LPARAM)"LANMAN");
|
|
}
|
|
|
|
|
|
/**************************************************************************/
|
|
/* */
|
|
/* DLL_ConnectConnector seh nova 005 */
|
|
/* */
|
|
/**************************************************************************/
|
|
|
|
WORD DLL_ConnectConnector(HANDLE hCCB, BOOL bShow) /* slc nova 031 seh nova 005 */
|
|
{
|
|
FARPROC lpfnGetType;
|
|
LPCONNECTOR_CONTROL_BLOCK lpCCB;
|
|
WORD wResult = 0;
|
|
|
|
if(hCCB == NULL) /* slc nova 028 */
|
|
return(0);
|
|
|
|
if((lpCCB = (LPCONNECTOR_CONTROL_BLOCK)GlobalLock(hCCB)) == NULL)
|
|
return(0);
|
|
|
|
if((lpfnGetType = GetProcAddress(lpCCB->hConnectorInst,
|
|
MAKEINTRESOURCE(ORD_CONNECTCONNECTOR))) != NULL)
|
|
{
|
|
wResult = ((WORD)(*lpfnGetType)(dlgGetFocus(), lpCCB, (BOOL)bShow));
|
|
}
|
|
|
|
GlobalUnlock(hCCB);
|
|
return(wResult);
|
|
}
|
|
|
|
|
|
/**************************************************************************/
|
|
/* */
|
|
/* DLL_DisconnectConnector seh nova 005 */
|
|
/* */
|
|
/**************************************************************************/
|
|
|
|
WORD DLL_DisconnectConnector(HANDLE hCCB)
|
|
{
|
|
FARPROC lpfnGetType;
|
|
LPCONNECTOR_CONTROL_BLOCK lpCCB;
|
|
WORD wResult = 0;
|
|
|
|
if(hCCB == NULL)
|
|
return(0);
|
|
|
|
if((lpCCB = (LPCONNECTOR_CONTROL_BLOCK)GlobalLock(hCCB)) == NULL)
|
|
return(0);
|
|
|
|
if((lpfnGetType = GetProcAddress(lpCCB->hConnectorInst,
|
|
MAKEINTRESOURCE(ORD_DISCONNECTCONNECTOR))) != NULL)
|
|
{
|
|
/* wResult = ((WORD)(*lpfnGetType)(dlgGetFocus(), lpCCB)); */
|
|
}
|
|
|
|
GlobalUnlock(hCCB);
|
|
return(wResult);
|
|
}
|
|
|
|
|
|
/**************************************************************************/
|
|
/* */
|
|
/* DLL_modemSendBreak */
|
|
/* */
|
|
/**************************************************************************/
|
|
|
|
WORD DLL_modemSendBreak(HANDLE hCCB, INT nTimes)
|
|
{
|
|
LPCONNECTOR_CONTROL_BLOCK lpCCB;
|
|
FARPROC lpfnCommandConnector;
|
|
WORD wResult = 0;
|
|
|
|
if(hCCB == NULL)
|
|
return(0);
|
|
|
|
if((lpCCB = (LPCONNECTOR_CONTROL_BLOCK)GlobalLock(hCCB)) == NULL)
|
|
return(0);
|
|
|
|
if((lpfnCommandConnector = GetProcAddress(lpCCB->hConnectorInst,
|
|
MAKEINTRESOURCE(ORD_COMMANDCONNECTOR))) != NULL)
|
|
{
|
|
}
|
|
|
|
GlobalUnlock(hCCB);
|
|
return(wResult);
|
|
}
|
|
|
|
|
|
/**************************************************************************/
|
|
/* */
|
|
/* DLL_ReadConnector */
|
|
/* */
|
|
/**************************************************************************/
|
|
|
|
WORD DLL_ReadConnector(HANDLE hCCB) /* slc nova 031 */
|
|
{
|
|
LPCONNECTOR_CONTROL_BLOCK lpCCB;
|
|
FARPROC lpfnRead;
|
|
WORD wResult = 0;
|
|
|
|
if(hCCB == NULL) /* slc nova 028 */
|
|
return(0);
|
|
|
|
if((lpCCB = (LPCONNECTOR_CONTROL_BLOCK)GlobalLock(hCCB)) == NULL)
|
|
return(0);
|
|
|
|
if((lpfnRead = GetProcAddress(lpCCB->hConnectorInst,
|
|
MAKEINTRESOURCE(ORD_READCONNECTOR))) != NULL)
|
|
{
|
|
wResult = (WORD)(*lpfnRead)(lpCCB);
|
|
}
|
|
|
|
GlobalUnlock(hCCB);
|
|
return(wResult);
|
|
}
|
|
|
|
|
|
/**************************************************************************/
|
|
/* */
|
|
/* DLL_ConnectBytes */
|
|
/* */
|
|
/**************************************************************************/
|
|
|
|
WORD DLL_ConnectBytes(HANDLE hCCB) /* slc nova 031 */
|
|
{
|
|
if(hCCB == NULL)
|
|
{
|
|
serCount = 0;
|
|
return(FALSE);
|
|
}
|
|
|
|
return(DLL_ReadConnector(hCCB));
|
|
}
|
|
|
|
|
|
/**************************************************************************/
|
|
/* */
|
|
/* DLL_WriteConnector */
|
|
/* */
|
|
/**************************************************************************/
|
|
|
|
WORD DLL_WriteConnector(HANDLE hCCB) /* slc nova 031 */
|
|
{
|
|
LPCONNECTOR_CONTROL_BLOCK lpCCB;
|
|
WORD wResult = FALSE;
|
|
FARPROC lpfnWrite;
|
|
|
|
if(hCCB == NULL) /* slc nova 028 */
|
|
{
|
|
serCount = 0;
|
|
return(wResult);
|
|
}
|
|
|
|
if((lpCCB = (LPCONNECTOR_CONTROL_BLOCK)GlobalLock(hCCB)) == NULL)
|
|
return(0);
|
|
|
|
if((lpfnWrite = GetProcAddress(lpCCB->hConnectorInst,
|
|
MAKEINTRESOURCE(ORD_WRITECONNECTOR))) != NULL)
|
|
{
|
|
wResult = (WORD)(*lpfnWrite)(lpCCB);
|
|
}
|
|
|
|
GlobalUnlock(hCCB);
|
|
return(wResult);
|
|
}
|
|
|
|
|
|
/**************************************************************************/
|
|
/* */
|
|
/* DLL_ExitConnector */
|
|
/* */
|
|
/**************************************************************************/
|
|
|
|
WORD DLL_ExitConnector(HANDLE hCCB, recTrmParams *pTrmParams)
|
|
{
|
|
LPCONNECTOR_CONTROL_BLOCK lpCCB;
|
|
FARPROC lpfnGetType;
|
|
|
|
if(hCCB == NULL) /* slc nova 028 */
|
|
return(0);
|
|
|
|
if((lpCCB = (LPCONNECTOR_CONTROL_BLOCK)GlobalLock(hCCB)) == NULL)
|
|
return(0);
|
|
|
|
if((lpfnGetType = GetProcAddress(lpCCB->hConnectorInst,
|
|
MAKEINTRESOURCE(ORD_EXITCONNECTOR))) != NULL)
|
|
{
|
|
}
|
|
|
|
if(lpCCB->hConnectorInst != 0) /* slc nova 031 */
|
|
FreeLibrary(lpCCB->hConnectorInst);
|
|
lpCCB->hConnectorInst = 0;
|
|
|
|
GlobalUnlock(hCCB);
|
|
|
|
return(0);
|
|
}
|
|
|
|
|
|
/**************************************************************************/
|
|
/* */
|
|
/* DLL_ResetConnector */
|
|
/* */
|
|
/**************************************************************************/
|
|
|
|
WORD DLL_ResetConnector(HANDLE hCCB, BOOL bShow) /* slc nova 031 */
|
|
{
|
|
LPCONNECTOR_CONTROL_BLOCK lpCCB;
|
|
FARPROC lpfnGetType;
|
|
WORD wResult = 0;
|
|
|
|
if((lpCCB = (LPCONNECTOR_CONTROL_BLOCK)GlobalLock(hCCB)) == NULL)
|
|
return(0);
|
|
|
|
if((lpfnGetType = GetProcAddress(lpCCB->hConnectorInst,
|
|
MAKEINTRESOURCE(ORD_RESETCONNECTOR))) != NULL)
|
|
{
|
|
wResult = (WORD)(*lpfnGetType)(dlgGetFocus(), lpCCB, (BOOL)bShow);
|
|
}
|
|
|
|
GlobalUnlock(hCCB);
|
|
return(wResult);
|
|
}
|
|
|
|
|
|
/**************************************************************************/
|
|
/* */
|
|
/* DLL_SetupConnector */
|
|
/* */
|
|
/**************************************************************************/
|
|
|
|
WORD DLL_SetupConnector(HANDLE hCCB, BOOL bShow) /* slc nova 031 */
|
|
{
|
|
LPCONNECTOR_CONTROL_BLOCK lpCCB;
|
|
FARPROC lpfnProcAddr;
|
|
WORD wResult = 0;
|
|
|
|
if((lpCCB = (LPCONNECTOR_CONTROL_BLOCK)GlobalLock(hCCB)) == NULL)
|
|
return(0);
|
|
|
|
if((lpfnProcAddr = GetProcAddress(lpCCB->hConnectorInst,
|
|
MAKEINTRESOURCE(ORD_SETUPCONNECTOR))) != NULL)
|
|
{
|
|
ccbFromTrmParams(lpCCB, &trmParams);
|
|
wResult = (WORD)(*lpfnProcAddr)(dlgGetFocus(), lpCCB, (BOOL)bShow);
|
|
ccbToTrmParams(&trmParams, lpCCB);
|
|
}
|
|
|
|
GlobalUnlock(hCCB);
|
|
return(wResult);
|
|
}
|
|
|
|
|
|
/**************************************************************************/
|
|
/* */
|
|
/* loadConnector */
|
|
/* */
|
|
/**************************************************************************/
|
|
|
|
HANDLE loadConnector(HWND hTopWnd, HANDLE hCCB, LPSTR lpszConnector, BOOL bShow)
|
|
{
|
|
LPCONNECTOR_CONTROL_BLOCK lpCCB;
|
|
FARPROC lpfnGetType;
|
|
CHAR szWork[PATHLEN];
|
|
HANDLE hResult = NULL;
|
|
|
|
if((lpCCB = (LPCONNECTOR_CONTROL_BLOCK)GlobalLock(hCCB)) == NULL)
|
|
return(0);
|
|
|
|
if(lpCCB->hConnectorInst != 0)
|
|
FreeLibrary(lpCCB->hConnectorInst);
|
|
lpCCB->hConnectorInst = 0;
|
|
|
|
if(*lpszConnector)
|
|
{
|
|
if(!lstrcmp(lpszConnector, (LPSTR)"LANMAN"))
|
|
{
|
|
lstrcpy((LPSTR)szWork, lpszConnector);
|
|
strcat(szWork, ".DLL");
|
|
}
|
|
lpCCB->hConnectorInst = LoadLibrary((LPSTR)szWork); /* slc nova 028 */
|
|
}
|
|
|
|
/* in win30 <32 rc is an error, but in win32 rc is NULL in case of an error -sdj*/
|
|
|
|
#ifdef ORGCODE
|
|
if(lpCCB->hConnectorInst < 32)
|
|
lpCCB->hConnectorInst = 0;
|
|
#else
|
|
if(lpCCB->hConnectorInst == NULL)
|
|
lpCCB->hConnectorInst = (HANDLE)0;
|
|
#endif
|
|
|
|
if(lpCCB->hConnectorInst != 0)
|
|
{ /* check to see if we have a DC_CONNECTOR type dll */
|
|
if((lpfnGetType = GetProcAddress(lpCCB->hConnectorInst,
|
|
MAKEINTRESOURCE(ORD_GETDLLTYPE))) == NULL)
|
|
{
|
|
FreeLibrary(lpCCB->hConnectorInst);
|
|
lpCCB->hConnectorInst = 0;
|
|
}
|
|
else
|
|
{
|
|
if((WORD)(*lpfnGetType)((HWND)hTopWnd, (BOOL)bShow) != DC_CONNECTOR)
|
|
{
|
|
FreeLibrary(lpCCB->hConnectorInst);
|
|
lpCCB->hConnectorInst = 0;
|
|
}
|
|
}
|
|
}
|
|
hResult = lpCCB->hConnectorInst;
|
|
GlobalUnlock(hCCB);
|
|
|
|
if(hResult) /* slc nova 031 */
|
|
DLL_ResetConnector(hCCB, FALSE);
|
|
|
|
return(hResult);
|
|
}
|
|
|
|
|
|
/**************************************************************************/
|
|
/* */
|
|
/* DLL_HasSetupBox seh nova 006 */
|
|
/* */
|
|
/**************************************************************************/
|
|
|
|
BOOL DLL_HasSetupBox(HANDLE hCCB)
|
|
{
|
|
LPCONNECTOR_CONTROL_BLOCK lpCCB;
|
|
FARPROC lpProc;
|
|
BOOL bHasSetup;
|
|
|
|
if(hCCB == NULL) /* slc nova 028 */
|
|
return(0);
|
|
|
|
lpCCB = (LPCONNECTOR_CONTROL_BLOCK)GlobalLock(hCCB); /* slc nova 031 */
|
|
|
|
if((lpProc = GetProcAddress(lpCCB->hConnectorInst,
|
|
MAKEINTRESOURCE(ORD_GETEXTENDEDINFO))) == NULL)
|
|
{
|
|
bHasSetup = FALSE;
|
|
}
|
|
else
|
|
{
|
|
bHasSetup = (WORD)(*lpProc)((WORD)GI_IDENTIFY, (WORD)GI_SETUPBOX, (LPSTR)NULL);
|
|
}
|
|
|
|
return(bHasSetup);
|
|
}
|
|
|
|
|
|
/**************************************************************************/
|
|
/* */
|
|
/* getConnectorCaps */
|
|
/* */
|
|
/**************************************************************************/
|
|
|
|
WORD getConnectorCaps(LPCONNECTOR_CONTROL_BLOCK lpCCB) /* slc nova 031 */
|
|
{
|
|
FARPROC lpProc;
|
|
WORD wReturn;
|
|
|
|
if((lpProc = GetProcAddress(lpCCB->hConnectorInst,
|
|
MAKEINTRESOURCE(ORD_GETCONNECTCAPS))) != NULL)
|
|
{
|
|
wReturn = (WORD)(*lpProc)((WORD)SET_PARAMETERS);
|
|
}
|
|
|
|
return(wReturn);
|
|
}
|
|
|
|
|
|
/**************************************************************************/
|
|
/* */
|
|
/* getConnectorSettings */
|
|
/* */
|
|
/**************************************************************************/
|
|
|
|
WORD getConnectorSettings(LPCONNECTOR_CONTROL_BLOCK lpCCB, BOOL bShow) /* slc nova 031 */
|
|
{
|
|
FARPROC lpProc;
|
|
WORD wReturn;
|
|
WORD wPassVal = SP_GETDEFAULT;
|
|
|
|
if(bShow)
|
|
wPassVal |= SP_SHOW;
|
|
|
|
if((lpProc = GetProcAddress(lpCCB->hConnectorInst,
|
|
MAKEINTRESOURCE(ORD_SETPARAMETERS))) != NULL)
|
|
{
|
|
wReturn = (WORD)(*lpProc)((WORD)wPassVal, (LPCONNECTOR_CONTROL_BLOCK)lpCCB);
|
|
}
|
|
|
|
return(wReturn);
|
|
}
|
|
|
|
|
|
/**************************************************************************/
|
|
/* */
|
|
/* setConnectorSettings */
|
|
/* */
|
|
/**************************************************************************/
|
|
|
|
WORD setConnectorSettings(HWND hDlg, HANDLE hCCB, BOOL bDefaults) /* slc nova 031 */
|
|
{
|
|
LPCONNECTOR_CONTROL_BLOCK lpCCB; /* slc nova 031 */
|
|
LPCONNECTORS lpConnectors; /* slc nova 031 */
|
|
FARPROC lpProc;
|
|
WORD wSettings;
|
|
WORD wWorkSettings, wWork;
|
|
|
|
if(hCCB == NULL) /* slc nova 028 */
|
|
return(0);
|
|
|
|
lpCCB = (LPCONNECTOR_CONTROL_BLOCK)GlobalLock(hCCB); /* slc nova 031 */
|
|
if(lpCCB->hConnectorInst == 0) /* slc nova 046 */
|
|
{
|
|
GlobalUnlock(hCCB);
|
|
return(0);
|
|
}
|
|
|
|
if((lpProc = GetProcAddress(lpCCB->hConnectorInst,
|
|
MAKEINTRESOURCE(ORD_GETEXTENDEDINFO))) != NULL)
|
|
{
|
|
wSettings = (WORD)(*lpProc)((WORD)GI_IDENTIFY, (WORD)GI_SETUPBOX, (LPSTR)NULL);
|
|
}
|
|
|
|
if(wSettings)
|
|
{
|
|
EnableWindow(GetDlgItem(hDlg, ITMSETUP), TRUE); /* seh nova 005 */
|
|
ShowWindow(GetDlgItem(hDlg, ITMSETUP), SW_SHOW); /* seh nova 005 */
|
|
}
|
|
else
|
|
{
|
|
EnableWindow(GetDlgItem(hDlg, ITMSETUP), FALSE); /* seh nova 005 */
|
|
ShowWindow(GetDlgItem(hDlg, ITMSETUP), SW_HIDE); /* seh nova 005 */
|
|
}
|
|
|
|
wSettings = getConnectorCaps(lpCCB); /* slc nova 031 */
|
|
getConnectorSettings(lpCCB, FALSE); /* slc nova 031 */
|
|
if(bDefaults) /* slc nova 031 */
|
|
{
|
|
ccbFromTrmParams(lpCCB, &trmParams);
|
|
ccbToTrmParams(&trmParams, lpCCB);
|
|
}
|
|
|
|
/* enable baud rates */
|
|
for(wWork = ITMBD110; wWork <= ITMBD192; wWork++)
|
|
EnableWindow(GetDlgItem(hDlg, wWork), FALSE);
|
|
|
|
if((wSettings & SP_BAUD) == SP_BAUD)
|
|
{
|
|
wWorkSettings = lpCCB->wBaudFlags;
|
|
|
|
if((wWorkSettings & BAUD_110) == BAUD_110)
|
|
EnableWindow(GetDlgItem(hDlg, ITMBD110), TRUE);
|
|
|
|
if((wWorkSettings & BAUD_300) == BAUD_300)
|
|
EnableWindow(GetDlgItem(hDlg, ITMBD300), TRUE);
|
|
|
|
if((wWorkSettings & BAUD_600) == BAUD_600)
|
|
EnableWindow(GetDlgItem(hDlg, ITMBD600), TRUE);
|
|
|
|
if((wWorkSettings & BAUD_120) == BAUD_120)
|
|
EnableWindow(GetDlgItem(hDlg, ITMBD120), TRUE);
|
|
|
|
if((wWorkSettings & BAUD_240) == BAUD_240)
|
|
EnableWindow(GetDlgItem(hDlg, ITMBD240), TRUE);
|
|
|
|
if((wWorkSettings & BAUD_480) == BAUD_480)
|
|
EnableWindow(GetDlgItem(hDlg, ITMBD480), TRUE);
|
|
|
|
if((wWorkSettings & BAUD_960) == BAUD_960)
|
|
EnableWindow(GetDlgItem(hDlg, ITMBD960), TRUE);
|
|
|
|
if((wWorkSettings & BAUD_192) == BAUD_192)
|
|
EnableWindow(GetDlgItem(hDlg, ITMBD192), TRUE);
|
|
|
|
CheckRadioButton(hDlg, ITMBD110, ITMBD192, putCCB_BAUDITM(lpCCB->wBaudSet));
|
|
}
|
|
|
|
/* enable data bits */
|
|
for(wWork = ITMDATA5; wWork <= ITMDATA8; wWork++)
|
|
EnableWindow(GetDlgItem(hDlg, wWork), FALSE);
|
|
|
|
if((wSettings & SP_DATABITS) == SP_DATABITS)
|
|
{
|
|
wWorkSettings = lpCCB->wDataBitFlags;
|
|
|
|
if((wWorkSettings & DATABITS_5) == DATABITS_5)
|
|
EnableWindow(GetDlgItem(hDlg, ITMDATA5), TRUE);
|
|
|
|
if((wWorkSettings & DATABITS_6) == DATABITS_6)
|
|
EnableWindow(GetDlgItem(hDlg, ITMDATA6), TRUE);
|
|
|
|
if((wWorkSettings & DATABITS_7) == DATABITS_7)
|
|
EnableWindow(GetDlgItem(hDlg, ITMDATA7), TRUE);
|
|
|
|
if((wWorkSettings & DATABITS_8) == DATABITS_8)
|
|
EnableWindow(GetDlgItem(hDlg, ITMDATA8), TRUE);
|
|
|
|
CheckRadioButton(hDlg, ITMDATA5, ITMDATA8, putCCB_DATABITS(lpCCB->wDataBitSet));
|
|
}
|
|
|
|
/* enable stop bits */
|
|
for(wWork = ITMSTOP1; wWork <= ITMSTOP2; wWork++)
|
|
EnableWindow(GetDlgItem(hDlg, wWork), FALSE);
|
|
|
|
if((wSettings & SP_STOPBITS) == SP_STOPBITS)
|
|
{
|
|
wWorkSettings = lpCCB->wStopBitFlags;
|
|
|
|
if((wWorkSettings & STOPBITS_10) == STOPBITS_10)
|
|
EnableWindow(GetDlgItem(hDlg, ITMSTOP1), TRUE);
|
|
|
|
if((wWorkSettings & STOPBITS_15) == STOPBITS_15)
|
|
EnableWindow(GetDlgItem(hDlg, ITMSTOP5), TRUE);
|
|
|
|
if((wWorkSettings & STOPBITS_20) == STOPBITS_20)
|
|
EnableWindow(GetDlgItem(hDlg,ITMSTOP2), TRUE);
|
|
|
|
CheckRadioButton(hDlg, ITMSTOP1, ITMSTOP2, putCCB_STOPBITS(lpCCB->wStopBitSet));
|
|
}
|
|
|
|
/* enable parity options */
|
|
for(wWork = ITMNOPARITY; wWork <= ITMSPACEPARITY; wWork++)
|
|
EnableWindow(GetDlgItem(hDlg, wWork), FALSE);
|
|
|
|
if((wSettings & SP_PARITY) == SP_PARITY)
|
|
{
|
|
wWorkSettings = lpCCB->wParityFlags;
|
|
|
|
if((wWorkSettings & PARITY_NONE) == PARITY_NONE)
|
|
EnableWindow(GetDlgItem(hDlg, ITMNOPARITY), TRUE);
|
|
|
|
if((wWorkSettings & PARITY_ODD) == PARITY_ODD)
|
|
EnableWindow(GetDlgItem(hDlg, ITMODDPARITY), TRUE);
|
|
|
|
if((wWorkSettings & PARITY_EVEN) == PARITY_EVEN)
|
|
EnableWindow(GetDlgItem(hDlg, ITMEVENPARITY), TRUE);
|
|
|
|
if((wWorkSettings & PARITY_MARK) == PARITY_MARK)
|
|
EnableWindow(GetDlgItem(hDlg, ITMMARKPARITY), TRUE);
|
|
|
|
if((wWorkSettings & PARITY_SPACE) == PARITY_SPACE)
|
|
EnableWindow(GetDlgItem(hDlg, ITMSPACEPARITY), TRUE);
|
|
|
|
CheckRadioButton(hDlg, ITMNOPARITY, ITMSPACEPARITY, putCCB_PARITY(lpCCB->wParitySet));
|
|
}
|
|
|
|
/* enable handshake options */
|
|
for(wWork = ITMXONFLOW; wWork <= ITMNOFLOW; wWork++)
|
|
EnableWindow(GetDlgItem(hDlg, wWork), FALSE);
|
|
|
|
if((wSettings & SP_HANDSHAKING) == SP_HANDSHAKING)
|
|
{
|
|
wWorkSettings = lpCCB->wHandshakeFlags;
|
|
|
|
if((wWorkSettings & HANDSHAKE_XONXOFF) == HANDSHAKE_XONXOFF)
|
|
EnableWindow(GetDlgItem(hDlg, ITMXONFLOW), TRUE);
|
|
|
|
if((wWorkSettings & HANDSHAKE_HARDWARE) == HANDSHAKE_HARDWARE)
|
|
EnableWindow(GetDlgItem(hDlg, ITMHARDFLOW), TRUE);
|
|
|
|
if((wWorkSettings & HANDSHAKE_NONE) == HANDSHAKE_NONE)
|
|
EnableWindow(GetDlgItem(hDlg, ITMNOFLOW), TRUE);
|
|
|
|
CheckRadioButton(hDlg, ITMXONFLOW, ITMNOFLOW, putCCB_FLOWCTRL(lpCCB->wHandshakeSet));
|
|
}
|
|
|
|
/* enable carrier detect button */
|
|
//if((wSettings & SP_RLSD) == SP_RLSD) needs to be changed to SP_CARRIER_DETECT
|
|
//{
|
|
// EnableWindow(GetDlgItem(hDlg, ITMCARRIER), TRUE);
|
|
//}
|
|
//else
|
|
//{
|
|
EnableWindow(GetDlgItem(hDlg, ITMCARRIER), FALSE);
|
|
//}
|
|
|
|
/* enable parity check button */
|
|
if((wSettings & SP_PARITY_CHECK) == SP_PARITY_CHECK)
|
|
{
|
|
EnableWindow(GetDlgItem(hDlg, ITMPARITY), TRUE);
|
|
}
|
|
else
|
|
{
|
|
EnableWindow(GetDlgItem(hDlg, ITMPARITY), FALSE);
|
|
}
|
|
|
|
GlobalUnlock(hCCB); /* slc nova 031 */
|
|
return(wSettings);
|
|
}
|
|
|
|
/**************************************************************************/
|
|
|
|
INT GetDynaCommProfileString(LPSTR lpsz1, LPSTR lpsz2, LPSTR lpsz3,
|
|
LPSTR lpsz4, INT nSize, LPSTR lpsz5)
|
|
{
|
|
return GetPrivateProfileString(lpsz1, lpsz2, lpsz3, lpsz4, nSize, lpsz5);
|
|
}
|
|
|
|
|
|
/**************************************************************************/
|
|
/* getConnectType seh nova 005 */
|
|
/**************************************************************************/
|
|
|
|
WORD getConnectType(HANDLE hConnector, HANDLE hCCB)
|
|
{
|
|
LPCONNECTOR_CONTROL_BLOCK lpCCB;
|
|
WORD wResult;
|
|
|
|
lpCCB = (LPCONNECTOR_CONTROL_BLOCK)GlobalLock(hCCB);
|
|
wResult = (WORD)lpCCB->wType;
|
|
GlobalUnlock(hCCB);
|
|
|
|
return(wResult);
|
|
}
|
|
|
|
|
|
/**************************************************************************/
|
|
/* ccbFromTrmParams slc nova 028 */
|
|
/**************************************************************************/
|
|
|
|
/**************************************************************************/
|
|
/* getCCB_BAUD seh nova 005 */
|
|
/**************************************************************************/
|
|
|
|
WORD getCCB_BAUD(WORD wSpeed)
|
|
{
|
|
WORD wReturn;
|
|
|
|
switch(wSpeed) /* from DC to CCB */
|
|
{
|
|
case 75:
|
|
wReturn = BAUD_075;
|
|
break;
|
|
case 110:
|
|
wReturn = BAUD_110;
|
|
break;
|
|
case 300:
|
|
wReturn = BAUD_300;
|
|
break;
|
|
case 600:
|
|
wReturn = BAUD_600;
|
|
break;
|
|
case 1200:
|
|
wReturn = BAUD_120;
|
|
break;
|
|
case 2400:
|
|
wReturn = BAUD_240;
|
|
break;
|
|
case 4800:
|
|
wReturn = BAUD_480;
|
|
break;
|
|
case 9600:
|
|
wReturn = BAUD_960;
|
|
break;
|
|
case 19200:
|
|
wReturn = BAUD_192;
|
|
break;
|
|
default:
|
|
wReturn = (WORD)BAUD_USER;
|
|
break;
|
|
}
|
|
|
|
return(wReturn);
|
|
}
|
|
|
|
/**************************************************************************/
|
|
/* getCCB_DATABITS slc nova 028 */
|
|
/**************************************************************************/
|
|
|
|
WORD getCCB_DATABITS(WORD wInput)
|
|
{
|
|
WORD wReturn;
|
|
|
|
switch(wInput)
|
|
{
|
|
case ITMDATA5:
|
|
wReturn = DATABITS_5;
|
|
break;
|
|
case ITMDATA6:
|
|
wReturn = DATABITS_6;
|
|
break;
|
|
case ITMDATA7:
|
|
wReturn = DATABITS_7;
|
|
break;
|
|
case ITMDATA8:
|
|
wReturn = DATABITS_8;
|
|
break;
|
|
default:
|
|
wReturn = DATABITS_8;
|
|
break;
|
|
}
|
|
|
|
return(wReturn);
|
|
}
|
|
|
|
/**************************************************************************/
|
|
/* getCCB_PARITY slc nova 028 */
|
|
/**************************************************************************/
|
|
|
|
WORD getCCB_PARITY(WORD wInput)
|
|
{
|
|
WORD wReturn;
|
|
|
|
switch(wInput)
|
|
{
|
|
case ITMNOPARITY:
|
|
wReturn = PARITY_NONE;
|
|
break;
|
|
case ITMODDPARITY:
|
|
wReturn = PARITY_ODD;
|
|
break;
|
|
case ITMEVENPARITY:
|
|
wReturn = PARITY_EVEN;
|
|
break;
|
|
case ITMMARKPARITY:
|
|
wReturn = PARITY_MARK;
|
|
break;
|
|
case ITMSPACEPARITY:
|
|
wReturn = PARITY_SPACE;
|
|
break;
|
|
default:
|
|
wReturn = PARITY_NONE;
|
|
break;
|
|
}
|
|
|
|
return(wReturn);
|
|
}
|
|
|
|
/**************************************************************************/
|
|
/* getCCB_STOPBITS slc nova 028 */
|
|
/**************************************************************************/
|
|
|
|
WORD getCCB_STOPBITS(WORD wInput)
|
|
{
|
|
WORD wReturn;
|
|
|
|
switch(wInput)
|
|
{
|
|
case ITMSTOP1:
|
|
wReturn = STOPBITS_10;
|
|
break;
|
|
case ITMSTOP5:
|
|
wReturn = STOPBITS_15;
|
|
break;
|
|
case ITMSTOP2:
|
|
wReturn = STOPBITS_20;
|
|
break;
|
|
default:
|
|
wReturn = STOPBITS_10;
|
|
break;
|
|
}
|
|
|
|
return(wReturn);
|
|
}
|
|
|
|
/**************************************************************************/
|
|
/* getCCB_FLOWCTRL slc nova 028 */
|
|
/**************************************************************************/
|
|
|
|
WORD getCCB_FLOWCTRL(WORD wInput)
|
|
{
|
|
WORD wReturn;
|
|
|
|
switch(wInput)
|
|
{
|
|
case ITMXONFLOW:
|
|
wReturn = HANDSHAKE_XONXOFF;
|
|
break;
|
|
case ITMHARDFLOW:
|
|
wReturn = HANDSHAKE_HARDWARE;
|
|
break;
|
|
case ITMNOFLOW:
|
|
wReturn = HANDSHAKE_NONE;
|
|
break;
|
|
case ITMETXFLOW:
|
|
wReturn = HANDSHAKE_ETXFLOW;
|
|
break;
|
|
default:
|
|
wReturn = HANDSHAKE_XONXOFF;
|
|
break;
|
|
}
|
|
|
|
return(wReturn);
|
|
}
|
|
|
|
/**************************************************************************/
|
|
/* getCCB_MISCSET slc nova 028 */
|
|
/**************************************************************************/
|
|
|
|
WORD getCCB_MISCSET(WORD wInput1, WORD wInput2)
|
|
{
|
|
WORD wReturn = 0;
|
|
|
|
if(wInput1)
|
|
wReturn = MISC_CARRIER_DETECT;
|
|
|
|
if(wInput2)
|
|
wReturn |= MISC_PARITY_CHECK;
|
|
|
|
return(wReturn);
|
|
}
|
|
|
|
/**************************************************************************/
|
|
|
|
VOID ccbFromTrmParams(LPCONNECTOR_CONTROL_BLOCK lpCCB, recTrmParams *pTrmParams)
|
|
{
|
|
|
|
// -sdj, dec'91 If the trmparams structure is packed with 1 byte alignment
|
|
// -sdj, MIPS compiler breaks while compiling this funciton, I think the line
|
|
// -sdj, is: lpCCB->byPadChar = (pTrmParams->commFlags & DCS_CF_NETNAMEPADDING) ? 0x20 : 0x00;
|
|
// -sdj, the Fix for this cc bug wont make it into the pdk2, so lets bypass
|
|
// -sdj, this function code for the time being
|
|
// #ifdef BUGBYPASS
|
|
// #else
|
|
|
|
lstrcpy(lpCCB->szDLLName, (LPSTR)pTrmParams->szConnectorName); /* slc nova 106 */
|
|
|
|
lpCCB->wSpeed = pTrmParams->speed; /* seh nova 005 */
|
|
lpCCB->wBaudSet = getCCB_BAUD(lpCCB->wSpeed); /* seh nova 005 */
|
|
lpCCB->wDataBitSet = getCCB_DATABITS(pTrmParams->dataBits);
|
|
lpCCB->wParitySet = getCCB_PARITY(pTrmParams->parity);
|
|
lpCCB->wStopBitSet = getCCB_STOPBITS(pTrmParams->stopBits);
|
|
lpCCB->wHandshakeSet = getCCB_FLOWCTRL(pTrmParams->flowControl);
|
|
lpCCB->wMiscSet = getCCB_MISCSET(pTrmParams->fCarrier,
|
|
pTrmParams->fParity);
|
|
|
|
lstrcpy(lpCCB->szPhoneNumber, (LPSTR)pTrmParams->phone); /* slc nova 106 */
|
|
lstrcpy(lpCCB->szClient, (LPSTR)pTrmParams->localName); /* slc nova 106 */
|
|
lstrcpy(lpCCB->szServer, (LPSTR)pTrmParams->remoteName); /* slc nova 106 */
|
|
lpCCB->byPadChar = (pTrmParams->commFlags & DCS_CF_NETNAMEPADDING) ? 0x20 : 0x00;
|
|
|
|
lmovmem((LPSTR)pTrmParams->connectorConfigData, lpCCB->configBuffer, 32); /* slc nova 106 */
|
|
|
|
// #endif
|
|
|
|
}
|
|
|
|
/**************************************************************************/
|
|
/* ccbToTrmParams slc nova 028 */
|
|
/**************************************************************************/
|
|
|
|
/**************************************************************************/
|
|
/* putCCB_BAUDITM seh nova 005 */
|
|
/**************************************************************************/
|
|
|
|
WORD putCCB_BAUDITM(WORD wID) /* called by setConnectorSettings() */
|
|
{
|
|
WORD wReturn;
|
|
|
|
switch(wID)
|
|
{
|
|
case BAUD_075:
|
|
wReturn = ITMBD110; /* dc does not support yet */
|
|
break;
|
|
case BAUD_110:
|
|
wReturn = ITMBD110;
|
|
break;
|
|
case BAUD_300:
|
|
wReturn = ITMBD300;
|
|
break;
|
|
case BAUD_600:
|
|
wReturn = ITMBD600;
|
|
break;
|
|
case BAUD_120:
|
|
wReturn = ITMBD120;
|
|
break;
|
|
case BAUD_240:
|
|
wReturn = ITMBD240;
|
|
break;
|
|
case BAUD_480:
|
|
wReturn = ITMBD480;
|
|
break;
|
|
case BAUD_960:
|
|
wReturn = ITMBD960;
|
|
break;
|
|
case BAUD_192:
|
|
wReturn = ITMBD192;
|
|
break;
|
|
default:
|
|
wReturn = ITMBD120;
|
|
break;
|
|
}
|
|
|
|
return(wReturn);
|
|
}
|
|
|
|
/**************************************************************************/
|
|
/* putCCB_BAUD seh nova 005 */
|
|
/**************************************************************************/
|
|
|
|
WORD putCCB_BAUD(WORD wID)
|
|
{
|
|
WORD wReturn;
|
|
|
|
switch(wID)
|
|
{
|
|
case BAUD_075:
|
|
wReturn = 75;
|
|
break;
|
|
case BAUD_110:
|
|
wReturn = 110;
|
|
break;
|
|
case BAUD_300:
|
|
wReturn = 300;
|
|
break;
|
|
case BAUD_600:
|
|
wReturn = 600;
|
|
break;
|
|
case BAUD_120:
|
|
wReturn = 1200;
|
|
break;
|
|
case BAUD_240:
|
|
wReturn = 2400;
|
|
break;
|
|
case BAUD_480:
|
|
wReturn = 4800;
|
|
break;
|
|
case BAUD_960:
|
|
wReturn = 9600;
|
|
break;
|
|
case BAUD_192:
|
|
wReturn = 19200;
|
|
break;
|
|
default:
|
|
wReturn = 1200;
|
|
break;
|
|
}
|
|
|
|
return(wReturn);
|
|
}
|
|
|
|
/**************************************************************************/
|
|
/* putCCB_DATABITS slc nova 028 */
|
|
/**************************************************************************/
|
|
|
|
WORD putCCB_DATABITS(WORD wInput)
|
|
{
|
|
WORD wReturn;
|
|
|
|
switch(wInput)
|
|
{
|
|
case DATABITS_5:
|
|
wReturn = ITMDATA5;
|
|
break;
|
|
case DATABITS_6:
|
|
wReturn = ITMDATA6;
|
|
break;
|
|
case DATABITS_7:
|
|
wReturn = ITMDATA7;
|
|
break;
|
|
case DATABITS_8:
|
|
wReturn = ITMDATA8;
|
|
break;
|
|
default:
|
|
wReturn = ITMDATA8;
|
|
break;
|
|
}
|
|
|
|
return(wReturn);
|
|
}
|
|
|
|
/**************************************************************************/
|
|
/* putCCB_PARITY slc nova 028 */
|
|
/**************************************************************************/
|
|
|
|
WORD putCCB_PARITY(WORD wInput)
|
|
{
|
|
WORD wReturn;
|
|
|
|
switch(wInput)
|
|
{
|
|
case PARITY_NONE:
|
|
wReturn = ITMNOPARITY;
|
|
break;
|
|
case PARITY_ODD:
|
|
wReturn = ITMODDPARITY;
|
|
break;
|
|
case PARITY_EVEN:
|
|
wReturn = ITMEVENPARITY;
|
|
break;
|
|
case PARITY_MARK:
|
|
wReturn = ITMMARKPARITY;
|
|
break;
|
|
case PARITY_SPACE:
|
|
wReturn = ITMSPACEPARITY;
|
|
break;
|
|
default:
|
|
wReturn = ITMNOPARITY;
|
|
break;
|
|
}
|
|
|
|
return(wReturn);
|
|
}
|
|
|
|
/**************************************************************************/
|
|
/* putCCB_STOPBITS slc nova 028 */
|
|
/**************************************************************************/
|
|
|
|
WORD putCCB_STOPBITS(WORD wInput)
|
|
{
|
|
WORD wReturn;
|
|
|
|
switch(wInput)
|
|
{
|
|
case STOPBITS_10:
|
|
wReturn = ITMSTOP1;
|
|
break;
|
|
case STOPBITS_15:
|
|
wReturn = ITMSTOP5;
|
|
break;
|
|
case STOPBITS_20:
|
|
wReturn = ITMSTOP2;
|
|
break;
|
|
default:
|
|
wReturn = ITMSTOP1;
|
|
break;
|
|
}
|
|
|
|
return(wReturn);
|
|
}
|
|
|
|
/**************************************************************************/
|
|
/* putCCB_FLOWCTRL slc nova 028 */
|
|
/**************************************************************************/
|
|
|
|
WORD putCCB_FLOWCTRL(WORD wInput)
|
|
{
|
|
WORD wReturn;
|
|
|
|
switch(wInput)
|
|
{
|
|
case HANDSHAKE_XONXOFF:
|
|
wReturn = ITMXONFLOW;
|
|
break;
|
|
case HANDSHAKE_HARDWARE:
|
|
wReturn = ITMHARDFLOW;
|
|
break;
|
|
case HANDSHAKE_NONE:
|
|
wReturn = ITMNOFLOW;
|
|
break;
|
|
case HANDSHAKE_ETXFLOW:
|
|
wReturn = ITMETXFLOW;
|
|
break;
|
|
default:
|
|
wReturn = ITMXONFLOW;
|
|
break;
|
|
}
|
|
|
|
return(wReturn);
|
|
}
|
|
|
|
/**************************************************************************/
|
|
/* putCCB_MISCSET slc nova 028 */
|
|
/**************************************************************************/
|
|
|
|
WORD putCCB_MISCSET(WORD wInput1, WORD wInput2)
|
|
{
|
|
WORD wReturn = 0;
|
|
|
|
if(wInput1)
|
|
wReturn = MISC_CARRIER_DETECT;
|
|
|
|
if(wInput2)
|
|
wReturn |= MISC_PARITY_CHECK;
|
|
|
|
return(wReturn);
|
|
}
|
|
|
|
/**************************************************************************/
|
|
|
|
VOID ccbToTrmParams(recTrmParams *pTrmParams, LPCONNECTOR_CONTROL_BLOCK lpCCB)
|
|
{
|
|
// -sdj, dec'91 If the trmparams structure is packed with 1 byte alignment
|
|
// -sdj, MIPS compiler breaks while compiling this funciton,
|
|
// -sdj, the Fix for this cc bug wont make it into the pdk2, so lets bypass
|
|
// -sdj, this function code for the time being
|
|
// #ifdef BUGBYPASS
|
|
// #else
|
|
|
|
lstrcpy((LPSTR)pTrmParams->szConnectorName, lpCCB->szDLLName); /* slc nova 106 */
|
|
|
|
pTrmParams->speed = putCCB_BAUD(lpCCB->wBaudSet);
|
|
pTrmParams->dataBits = (BYTE)putCCB_DATABITS(lpCCB->wDataBitSet);
|
|
pTrmParams->parity = (BYTE)putCCB_PARITY(lpCCB->wParitySet);
|
|
pTrmParams->stopBits = (BYTE)putCCB_STOPBITS(lpCCB->wStopBitSet);
|
|
pTrmParams->flowControl = (BYTE)putCCB_FLOWCTRL(lpCCB->wHandshakeSet);
|
|
pTrmParams->fCarrier = (lpCCB->wMiscSet & MISC_CARRIER_DETECT) ? 1 : 0;
|
|
pTrmParams->fParity = (lpCCB->wMiscSet & MISC_PARITY_CHECK) ? 1 : 0;
|
|
|
|
lstrcpy((LPSTR)pTrmParams->phone, lpCCB->szPhoneNumber); /* slc nova 106 */
|
|
lstrcpy((LPSTR)pTrmParams->localName, lpCCB->szClient); /* slc nova 106 */
|
|
lstrcpy((LPSTR)pTrmParams->remoteName, lpCCB->szServer); /* slc nova 106 */
|
|
if(lpCCB->byPadChar == 0x20)
|
|
{
|
|
pTrmParams->commFlags |= DCS_CF_NETNAMEPADDING;
|
|
NETNAMEPADDING = ' ';
|
|
}
|
|
else
|
|
{
|
|
pTrmParams->commFlags &= ~DCS_CF_NETNAMEPADDING;
|
|
NETNAMEPADDING = '\0';
|
|
}
|
|
|
|
lmovmem(lpCCB->configBuffer, (LPSTR)pTrmParams->connectorConfigData, 32); /* slc nova 106 */
|
|
|
|
// #endif
|
|
}
|
|
|
|
/* the end */
|