/*===========================================================================*/ /* Copyright (c) 1987 - 1988, 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 NOMINMAX TRUE #define NOOPENFILE 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 #include "port1632.h" #include "dcrc.h" #include "dynacomm.h" #include "task.h" #include "connect.h" /*--------------------- >>> Local Global Declarations <<< -------------------*/ static INT retryCnt; static INT timeOutSec; /* mbbx 2.00: display time remaining */ /*---------------------------------------------------------------------------*/ /* dbDialing() - Dialing dialog box message proccessing. */ /*---------------------------------------------------------------------------*/ #define MAX_DIAL_STRLEN 21 /* mbbx 2.00: CUA */ INT_PTR APIENTRY dbDialing(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam) { CHAR tmp1[TMPNSTR], tmp2[TMPNSTR]; COMSTAT serInfo; switch(message) { case WM_INITDIALOG: initDlgPos(hDlg); /* mbbx 2.00: CUA... */ strcpy(tmp1, trmParams.phone); if(strlen(tmp1) > MAX_DIAL_STRLEN) strcpy(tmp1+(MAX_DIAL_STRLEN-3), "..."); SetDlgItemText(hDlg, IDDIALING, tmp1); retryCnt = 0; itemHit = -1; if(!SetTimer(hDlg, -1, 128, NULL)) /* rjs bugs 006 */ { LoadString(hInst, STRERRNOTIMERS, tmp1, TMPNSTR); MessageBox(hDlg, tmp1, NULL, MB_OK | MB_ICONEXCLAMATION); break; } return(TRUE); case WM_TIMER: if(itemHit == -1) { sprintf(tmp1, "%u", timeOutSec = trmParams.dlyRetry); /* mbbx 2.00: time remaining... */ SetDlgItemText(hDlg, IDDIALTIME, tmp1); if(!sPortErr) /* rjs bug2 */ { termSendCmd(trmParams.originate, strlen(trmParams.originate), TRUE); /* mbbx 2.01.19 ... */ getMdmResult(); termSendCmd(trmParams.dialPrefix, strlen(trmParams.dialPrefix), FALSE); strcpy(tmp1, trmParams.phone); /* mbbx 2.01.18 ... */ strcpy(tmp1+strlen(tmp1), trmParams.phone2); termSendCmd(tmp1, strlen(tmp1), 0x0080 | FALSE); termSendCmd(trmParams.dialSuffix, strlen(trmParams.dialSuffix), TRUE); } else modemReset(); dialStart = tickCount(); itemHit = 0; } else if(itemHit == 0) { updateTimer(); if(trmParams.fCarrier) /* mbbx 1.10: CUA... */ mdmConnect(); else if(modemBytes()) { getMdmResult(); mdmOnLine = (mdmValid && (mdmResult[2] == 'C')); // mdmOnLine = TRUE; } if(mdmOnLine) { getMdmResult(); if(trmParams.flgSignal) { sysBeep(); sysBeep(); /* mbbx 2.00: more noise for signal... */ sysBeep(); } timerAction(TRUE, TRUE); /* mbbx 1.03 */ break; } if((tickCount() - dialStart) > (DWORD)((trmParams.dlyRetry > 30) ? (trmParams.dlyRetry * 60) : (30 * 60))) { if((trmParams.flgRetry) && ((retryCnt < trmParams.cntRetry) || (trmParams.cntRetry == 255))) { LoadString(hInst, STR_RETRYCOUNT, tmp1, TMPNSTR); sprintf(tmp2, tmp1, ++retryCnt); SetDlgItemText(hDlg, IDDIALRETRY, tmp2); if(trmParams.flgSignal) /* mbbx 2.00: redial beep optional... */ sysBeep(); itemHit = -1; } else { if(!sPortErr) /* rjs bug2 */ modemWr(CR); break; } } else if((INT)(trmParams.dlyRetry - ((tickCount() - dialStart) / 60)) != timeOutSec) { sprintf(tmp1, "%u", timeOutSec = trmParams.dlyRetry - ((tickCount() - dialStart) / 60)); SetDlgItemText(hDlg, IDDIALTIME, tmp1); } } return(TRUE); case WM_COMMAND: /* mbbx 2.00: only one control... */ modemWr(CR); break; default: return(FALSE); } KillTimer(hDlg, -1); /* mbbx 2.00: eliminate statics... */ EndDialog(hDlg, TRUE); return(TRUE); } /*---------------------------------------------------------------------------*/ /* dialPhone() - [scf] */ /*---------------------------------------------------------------------------*/ VOID dialPhone() { BYTE tmp1[TMPNSTR]; DCB dcb; if(trmParams.comDevRef == ITMDLLCONNECT) /* slc nova 031 */ { DLL_ConnectConnector(ghCCB, TRUE); return; } if(*trmParams.phone == 0) /* Don't dial if no phone no. */ doSettings(IDDBPHON, dbPhon); if(*trmParams.phone == 0) /* Don't dial if no phone no. */ return; while(modemBytes()) rdModem(FALSE); offCursor(); if(mdmOnLine) /* Tell user to hang up */ { LoadString(hInst, STR_HANGUP, tmp1, TMPNSTR); itemHit = testBox(NULL, -(MB_OK | MB_ICONHAND), STR_ERRCAPTION, tmp1); onCursor(); return; } if(trmParams.flgRetry ) trmParams.cntRetry = 255; dialing = TRUE; DialogBox(hInst, MAKEINTRESOURCE(IDDBDIALING), GetFocus(), dbDialing); dialing = FALSE; onCursor(); trmParams.cntRetry = 0; } /*---------------------------------------------------------------------------*/ /* hangUpPhone() - [scf] */ /*---------------------------------------------------------------------------*/ VOID hangUpPhone() { if(trmParams.comDevRef == ITMDLLCONNECT) /* slc nova 031 */ { DLL_DisconnectConnector(ghCCB); return; } SetCursor(LoadCursor(NULL, IDC_WAIT)); /* mbbx 1.10: ala jtf */ delay(33, NULL); /* mbbx 0.62: formerly 66 ticks */ termSendCmd(trmParams.hangSuffix, strlen(trmParams.hangSuffix), 0x0040 | TRUE); /* mbbx 2.01.19 ... */ getMdmResult(); if(trmParams.fCarrier) /* mbbx 1.10: carrier... */ mdmConnect(); else mdmOnLine = FALSE; modemReset(); /* mbbx: isolate COM */ timerAction(FALSE, FALSE); /* mbbx 1.03 */ SetCursor(LoadCursor(NULL, IDC_ARROW)); /* mbbx 1.10: ala jtf */ } /*---------------------------------------------------------------------------*/ /* getMdmResult() - [mbb] */ /*---------------------------------------------------------------------------*/ VOID getMdmResult() { LONG begTime; begTime = tickCount(); *mdmResult = 0; mdmValid = FALSE; repeat { rdModem(TRUE); if(!dialing) idleProcess(); } until(mdmValid || ((tickCount() - begTime) > 90)); if(!mdmValid && (*mdmResult >= 2)) mdmValid = TRUE; /* mbbx: override timeout !!! */ } /*---------------------------------------------------------------------------*/ /* termSendCmd() - [mbb] */ /*---------------------------------------------------------------------------*/ /* convert ==> ABCDEFGHIJKLMNOPQRSTUVWXYZ */ #define PHONE_CHARS "2223334445556667-77888999-" BOOL termSendCmd(BYTE * str, int nBytes, WORD wFlags) { INT ndx; if(wFlags & 0x0040) /* get modem's attention */ { if(nBytes == 0) return(TRUE); termSendCmd(trmParams.hangPrefix, strlen(trmParams.hangPrefix), (3 << 8) | FALSE); delay(66, NULL); getMdmResult(); } for(ndx = 0; ndx < nBytes; ndx += 1) { if(wFlags & 0x0080) /* xlate phone string */ { if((str[ndx] >= 'A') && (str[ndx] <= 'Z')) str[ndx] = PHONE_CHARS[str[ndx] - 'A']; else if((str[ndx] >= 'a') && (str[ndx] <= 'z')) str[ndx] = PHONE_CHARS[str[ndx] - 'a']; } modemWr(str[ndx]); if((wFlags & 0xFF00) > 0) delay(((wFlags >> 8) & 0x00FF), NULL); if(!dialing) /* mbbx 2.01.19: why is this needed ??? */ idleProcess(); } if(wFlags & 0x0001) /* send CR */ modemWr(CR); if(wFlags & 0x0002) /* clear modem response */ getMdmResult(); return(TRUE); }