827 lines
26 KiB
C
827 lines
26 KiB
C
|
|
|
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
|
|
//from headers\AWNSFINT.H
|
|
|
|
|
|
WORD EXPORTBC NSxtoBC(PThrdGlbl pTG, IFR ifr, LPLPFR rglpfr, WORD wNumFrame,
|
|
LPBC lpbcOut, WORD wBCSize);
|
|
|
|
WORD EXPORTBC BCtoNSx(PThrdGlbl pTG, IFR ifr, LPBC lpbcIn,
|
|
LPBYTE lpbOut, WORD wMaxOut, LPWORD lpwNumFrame);
|
|
|
|
|
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
|
|
//from protocol\timeouts.h
|
|
|
|
#ifdef MDDI // timeouts
|
|
|
|
|
|
/****************** begin prototypes from timeouts.c *****************/
|
|
void TstartTimeOut(PThrdGlbl pTG, TO * npto, ULONG ulTimeOut);
|
|
BOOL TcheckTimeOut(PThrdGlbl pTG, TO * npto);
|
|
/****************** end prototypes from timeouts.c *****************/
|
|
|
|
#else //MDDI
|
|
|
|
#define TstartTimeOut(pTG, lpto, ulTime) startTimeOut(pTG, lpto, ulTime)
|
|
#define TcheckTimeOut(pTG, lpto) checkTimeOut(pTG, lpto)
|
|
|
|
#endif //MDDI
|
|
|
|
|
|
|
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
|
|
//from headers\timeouts.h
|
|
|
|
/****************** begin prototypes from timeouts.c *****************/
|
|
extern void startTimeOut( PThrdGlbl pTG, TO *lpto, ULONG ulTimeOut);
|
|
extern BOOL checkTimeOut( PThrdGlbl pTG, TO *lpto);
|
|
extern ULONG leftTimeOut( PThrdGlbl pTG, TO *lpto);
|
|
/****************** begin prototypes from timeouts.c *****************/
|
|
|
|
|
|
|
|
|
|
|
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
|
|
//from headers\protapi.h
|
|
|
|
|
|
|
|
#define ProtGetSendMod(pTG) ((USHORT)ProtExtFunction(pTG, GET_SEND_MOD))
|
|
#define ProtGetRecvMod(pTG) ((USHORT)ProtExtFunction(pTG, GET_RECV_MOD))
|
|
#define ProtGetRetransmitMask(pTG) ((LPBYTE)ProtExtFunction(pTG, GET_PPR_FIF))
|
|
#define ProtGetECMFrameSize(pTG) ((USHORT)ProtExtFunction(pTG, GET_ECM_FRAMESIZE))
|
|
#define ProtGetRecvECMFrameSize(pTG) ((USHORT)ProtExtFunction(pTG, GET_RECV_ECM_FRAMESIZE))
|
|
#define ProtReceivingECM(pTG) ((BOOL)ProtExtFunction(pTG, RECEIVING_ECM))
|
|
#define ProtGetWhatNext(pTG) ((LPWHATNEXTPROC)ProtExtFunction(pTG, GET_WHATNEXT))
|
|
#define ProtGetPPS(pTG) ((ULONG)ProtExtFunction(pTG, GET_PPS))
|
|
|
|
// have to use this in SendPhaseC
|
|
#define ProtGetMinBytesPerLine(pTG) ((USHORT)ProtExtFunction(pTG, GET_MINBYTESPERLINE))
|
|
#define ProtGetRecvECMFrameCount(pTG) ((USHORT)ProtExtFunction(pTG, GET_RECVECMFRAMECOUNT))
|
|
#define ProtResetRecvECMFrameCount(pTG) ((USHORT)ProtExtFunction(pTG, RESET_RECVECMFRAMECOUNT))
|
|
#define ProtResetRecvPageAck(pTG) ((USHORT)ProtExtFunction(pTG, RESET_RECVPAGEACK))
|
|
|
|
#define ProtGetSendEncoding(pTG) ((USHORT)ProtExtFunction(pTG, GET_SEND_ENCODING))
|
|
#define ProtGetRecvEncoding(pTG) ((USHORT)ProtExtFunction(pTG, GET_RECV_ENCODING))
|
|
|
|
|
|
|
|
/****************** begin prototypes from protapi.c *****************/
|
|
BOOL ProtGetBC(PThrdGlbl pTG, BCTYPE bctype, BOOL fSleep);
|
|
DWORD_PTR ProtExtFunction(PThrdGlbl pTG, USHORT uFunction);
|
|
|
|
BOOL WINAPI ET30ProtSetProtParams(PThrdGlbl pTG, LPPROTPARAMS lp, USHORT uRecvSpeeds, USHORT uSendSpeeds);
|
|
typedef BOOL (WINAPI *LPFN_ET30PROTSETPROTPARAMS)(PThrdGlbl pTG, LPPROTPARAMS lp, USHORT uRecvSpeeds, USHORT uSendSpeeds);
|
|
BOOL WINAPI ET30ProtClose(PThrdGlbl pTG);
|
|
typedef BOOL (WINAPI *LPFN_ET30PROTCLOSE)(PThrdGlbl pTG);
|
|
BOOL WINAPI iET30ProtSetBC(PThrdGlbl pTG, LPBC lpBC, BCTYPE bctype);
|
|
typedef BOOL (WINAPI *LPFN_IET30PROTSETBC)(PThrdGlbl pTG, LPBC lpBC, BCTYPE bctype);
|
|
void WINAPI ET30ProtRecvPageAck(PThrdGlbl pTG, BOOL fAck);
|
|
typedef void (WINAPI *LPFN_ET30PROTRECVPAGEACK)(PThrdGlbl pTG, BOOL fAck);
|
|
void WINAPI ET30ProtAbort(PThrdGlbl pTG, BOOL fEnable);
|
|
typedef void (WINAPI *LPFN_ET30PROTABORT)(PThrdGlbl pTG, BOOL fEnable);
|
|
BOOL WINAPI ET30ProtOpen(PThrdGlbl pTG, BOOL fCaller);
|
|
typedef BOOL (WINAPI *LPFN_ET30PROTOPEN)(PThrdGlbl pTG, BOOL fCaller);
|
|
|
|
#ifdef OEMNSF
|
|
// Ricoh IFS66 only
|
|
void LoadOEMNSFDll(PThrdGlbl pTG, HINSTANCE hinstModem);
|
|
void UnloadOEMNSFDll(PThrdGlbl pTG, BOOL fNormal);
|
|
#endif
|
|
|
|
#ifdef RICOHAI
|
|
BOOL RicohAIInit(PThrdGlbl pTG);
|
|
void RicohAIEnd(PThrdGlbl pTG);
|
|
void RicohAIInitRecv(PThrdGlbl pTG);
|
|
#endif
|
|
|
|
/***************** end of prototypes from protapi.c *****************/
|
|
|
|
|
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
|
|
//from headers\comapi.h
|
|
|
|
#define FComFilterAsyncWrite(pTG, lpb,cb,fl) (FComFilterWrite(pTG, lpb, cb, fl) == cb)
|
|
// #define FComFilterSyncWrite(lpb,cb) ((FComFilterWrite(lpb, cb)==cb) && FComDrain(TRUE,TRUE))
|
|
#define FComDirectAsyncWrite(pTG, lpb,cb) (FComDirectWrite(pTG, lpb, cb) == cb)
|
|
#define FComDirectSyncWriteFast(pTG, lpb,cb) ((FComDirectWrite(pTG, lpb, cb)==cb) && FComDrain(pTG, FALSE,TRUE))
|
|
|
|
#define FComFlush(pTG) { FComFlushQueue(pTG, 0); FComFlushQueue(pTG, 1); }
|
|
#define FComFlushInput(pTG) { FComFlushQueue(pTG, 1); }
|
|
#define FComFlushOutput(pTG) { FComFlushQueue(pTG, 0); }
|
|
|
|
|
|
extern BOOL FComInit(PThrdGlbl pTG, DWORD dwLineID, DWORD dwLineIDType);
|
|
|
|
extern BOOL FComClose(PThrdGlbl pTG);
|
|
extern BOOL FComSetBaudRate(PThrdGlbl pTG, UWORD uwBaudRate);
|
|
extern void FComFlushQueue(PThrdGlbl pTG, int queue);
|
|
extern BOOL FComXon(PThrdGlbl pTG, BOOL fEnable);
|
|
extern BOOL FComDTR(PThrdGlbl pTG, BOOL fEnable);
|
|
extern UWORD FComDirectWrite(PThrdGlbl pTG, LPB lpb, UWORD cb);
|
|
extern UWORD FComFilterWrite(PThrdGlbl pTG, LPB lpb, UWORD cb, USHORT flags);
|
|
extern BOOL FComDrain(PThrdGlbl pTG, BOOL fLongTimeout, BOOL fDrainComm);
|
|
extern UWORD FComFilterReadBuf(PThrdGlbl pTG, LPB lpb, UWORD cbSize, LPTO lpto, BOOL fClass2, LPSWORD lpswEOF);
|
|
// *lpswEOF is 1 on Class1 EOF, 0 on non-EOF, -1 on Class2 EOF, -2 on error -3 on timeout
|
|
extern SWORD FComFilterReadLine(PThrdGlbl pTG, LPB lpb, UWORD cbSize, LPTO lptoRead);
|
|
|
|
extern void FComInFilterInit(PThrdGlbl pTG);
|
|
extern void FComOutFilterInit(PThrdGlbl pTG);
|
|
extern void FComOutFilterClose(PThrdGlbl pTG);
|
|
|
|
extern void FComAbort(PThrdGlbl pTG, BOOL f);
|
|
extern void FComCritical(PThrdGlbl pTG, BOOL);
|
|
extern void FComSetStuffZERO(PThrdGlbl pTG, USHORT cbLineMin);
|
|
|
|
#if !defined(WFW) && !defined(WFWBG)
|
|
extern BOOL FComCheckRing(PThrdGlbl pTG);
|
|
typedef BOOL (WINAPI *LPFN_FCOMCHECKRING)(PThrdGlbl pTG);
|
|
#endif
|
|
#ifndef MDRV
|
|
BOOL FComGetOneChar(PThrdGlbl pTG, UWORD ch);
|
|
#endif //!MDRV
|
|
|
|
|
|
extern void WINAPI FComOverlappedIO(PThrdGlbl pTG, BOOL fStart);
|
|
|
|
/****************** begin DEBUG prototypes *****************/
|
|
extern void far D_FComPrint(PThrdGlbl pTG, LONG_PTR nCid);
|
|
extern void far D_HexPrint(LPB b1, UWORD incnt);
|
|
|
|
extern void far D_GotError(PThrdGlbl pTG, LONG_PTR nCid, int err, COMSTAT far* lpcs);
|
|
typedef void (far *LPFN_D_GOTERROR)(PThrdGlbl pTG, int nCid, int err, COMSTAT far* lpcs);
|
|
|
|
#ifdef WFWBG
|
|
extern void far FComSetBG(PThrdGlbl pTG, BOOL);
|
|
typedef void (far *LPFN_FCOMSETBG)(PThrdGlbl pTG, BOOL);
|
|
#endif
|
|
/***************** end of prototypes *****************/
|
|
|
|
|
|
|
|
/****************** begin prototypes from modem.c *****************/
|
|
extern USHORT iModemInit(PThrdGlbl pTG, DWORD dwLineID, DWORD dwLineIDType,
|
|
DWORD dwProfileID,
|
|
LPSTR lpszKey,
|
|
BOOL fInstall);
|
|
typedef USHORT (WINAPI *LPFN_IMODEMINIT)(PThrdGlbl pTG, DWORD dwLineID, DWORD dwLineIDType,
|
|
DWORD dwProfileID,
|
|
LPSTR lpszKey,
|
|
BOOL fInstall);
|
|
extern BOOL iModemClose(PThrdGlbl pTG);
|
|
typedef BOOL (WINAPI *LPFN_IMODEMCLOSE)(PThrdGlbl pTG);
|
|
|
|
extern BOOL iModemSetNCUParams(PThrdGlbl pTG, int comma, int speaker, int volume, int fBlind, int fRingAloud);
|
|
extern BOOL iModemHangup(PThrdGlbl pTG);
|
|
extern USHORT iModemDial(PThrdGlbl pTG, LPSTR lpszDial, USHORT uClass);
|
|
extern USHORT iModemAnswer(PThrdGlbl pTG, BOOL fImmediate, USHORT uClass);
|
|
extern LPCMDTAB iModemGetCmdTabPtr(PThrdGlbl pTG);
|
|
|
|
// 6 fixed args, then variable number of CBPSTRs, but there
|
|
// must be at leat 2. One real one and one NULL terminator
|
|
extern UWORD far iiModemDialog(PThrdGlbl pTG, LPSTR szSend, UWORD uwLen, ULONG ulTimeout,
|
|
BOOL fMultiLine, UWORD uwRepeatCount, BOOL fPause,
|
|
CBPSTR w1, CBPSTR w2, ...);
|
|
/***************** end of prototypes from modem.c *****************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
|
|
//from headers\filet30.h
|
|
|
|
|
|
ULONG_PTR ProfileOpen(DWORD dwProfileID, LPSTR lpszSection, DWORD dwFlags);
|
|
// dwProfileID should be one of DEF_BASEKEY or OEM_BASEKEY.
|
|
// lpszSection should be (for example) "COM2" or "TAPI02345a04"
|
|
// If dwProfileID == DEF_BASEKEY, the value is set to be a
|
|
// sub key of:
|
|
// HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\At Work Fax\
|
|
// Local Modems\<lpszSection>.
|
|
// Else if it is DEF_OEMKEY, it is assumed to be a fully-
|
|
// qualified Key name, like "SOFTWARE\MICROSOFT.."
|
|
//
|
|
// Currently both are based of HKEY_LOCAL_MACHINE.
|
|
//
|
|
// When you're finished with this key, call ProfileClose.
|
|
//
|
|
// dwFlags is a combination of one of the fREG keys above..
|
|
//
|
|
// WIN32 ONLY: if lpszSection is NULL, it will open the base key,
|
|
// and return its handle, which can be used in the Reg* functions.
|
|
|
|
|
|
// Following are emulations of Get/WritePrivateProfileInt/String...
|
|
|
|
BOOL
|
|
ProfileWriteString(
|
|
ULONG_PTR dwKey,
|
|
LPSTR lpszValueName,
|
|
LPSTR lpszBuf,
|
|
BOOL fRemoveCR
|
|
);
|
|
|
|
|
|
DWORD ProfileGetString(ULONG_PTR dwKey, LPSTR lpszValueName, LPSTR lpszDefault, LPSTR lpszBuf , DWORD dwcbMax);
|
|
UINT ProfileGetInt(ULONG_PTR dwKey, LPSTR szValueName, UINT uDefault, BOOL *fExist);
|
|
|
|
|
|
UINT
|
|
ProfileListGetInt(
|
|
ULONG_PTR KeyList[10],
|
|
LPSTR lpszValueName,
|
|
UINT uDefault
|
|
);
|
|
|
|
|
|
// Following read/write binary data (type REG_BINARY). Available
|
|
// on Win32 only....
|
|
|
|
// Returns size of data read
|
|
DWORD ProfileGetData(ULONG_PTR dwKey, LPSTR lpszValueName,
|
|
LPBYTE lpbBuf , DWORD dwcbMax);
|
|
// Returns true on success. Deletes Value if lpbBuf is NULL.
|
|
BOOL ProfileWriteData(ULONG_PTR dwKey, LPSTR lpszValueName,
|
|
LPBYTE lpbBuf , DWORD dwcb);
|
|
|
|
void ProfileClose(ULONG_PTR dwKey);
|
|
BOOL ProfileDeleteSection(DWORD dwProfileID, LPSTR lpszSection);
|
|
|
|
BOOL
|
|
ProfileCopySection(
|
|
DWORD dwProfileIDTo,
|
|
LPSTR lpszSectionTo,
|
|
DWORD dwProfileIDFr,
|
|
LPSTR lpszSectionFr,
|
|
BOOL fCreateAlways
|
|
);
|
|
|
|
BOOL ProfileCopyTree(DWORD dwProfileIDTo,
|
|
LPSTR lpszSectionTo, DWORD dwProfileIDFrom, LPSTR lpszSectionFrom);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
|
|
|
|
// from headers\modemddi.h
|
|
|
|
|
|
/****************** begin prototypes from ddi.c *****************/
|
|
USHORT NCUModemInit(PThrdGlbl pTG, DWORD lInitParam);
|
|
void NCUModemDeInit(PThrdGlbl pTG);
|
|
#ifdef UNUSED
|
|
void NCUGetConfig(PThrdGlbl pTG, LPNCUCONFIG lpNCUConfig);
|
|
#endif // UNUSED
|
|
USHORT NCUCheckRing(PThrdGlbl pTG, USHORT uLine);
|
|
USHORT NCUCheckHandset(PThrdGlbl pTG, USHORT uHandset);
|
|
BOOL NCUSetParams(PThrdGlbl pTG, USHORT uLine, LPNCUPARAMS lpNCUParams);
|
|
typedef BOOL (WINAPI *LPFN_NCUSETPARAMS)(PThrdGlbl pTG, USHORT uLine, LPNCUPARAMS lpNCUParams);
|
|
HLINE NCUGetLine(PThrdGlbl pTG, USHORT uLine);
|
|
BOOL NCUReleaseLine(PThrdGlbl pTG, HLINE hLine);
|
|
USHORT NCULink(PThrdGlbl pTG, HLINE hLine, HMODEM hModem, USHORT uHandset, USHORT uFlags);
|
|
USHORT NCUDial(PThrdGlbl pTG, HLINE hLine, LPSTR szPhoneNum);
|
|
USHORT NCUTxDigit(PThrdGlbl pTG, HLINE hLine, char chDigit);
|
|
void NCUAbort(PThrdGlbl pTG, USHORT uLine, BOOL fEnable);
|
|
typedef void (WINAPI *LPFN_NCUABORT)(PThrdGlbl pTG, USHORT uLine, BOOL fEnable);
|
|
HMODEM ModemOpen(PThrdGlbl pTG, USHORT uModemType, USHORT uModem);
|
|
BOOL ModemClose(PThrdGlbl pTG, HMODEM hModem);
|
|
BOOL ModemGetCaps(PThrdGlbl pTG, USHORT uModem, LPMODEMCAPS lpModemCaps);
|
|
typedef BOOL (WINAPI *LPFN_MODEMGETCAPS)(PThrdGlbl pTG, USHORT uModem, LPMODEMCAPS lpModemCaps);
|
|
BOOL ModemSync(PThrdGlbl pTG, HMODEM hModem, ULONG ulTimeout);
|
|
|
|
#ifndef MDDI
|
|
// 4/12/95 JosephJ. +++ Hack to prevent ModemSync from issuing AT
|
|
// on sending DCN.
|
|
BOOL ModemSyncEx(PThrdGlbl pTG, HMODEM hModem, ULONG ulTimeout, DWORD dwFlags);
|
|
// dwFlags -- one of...
|
|
# define fMDMSYNC_DCN 0x1L
|
|
#endif // !MDDI
|
|
|
|
BOOL ModemFlush(PThrdGlbl pTG, HMODEM);
|
|
USHORT ModemConnectTx(PThrdGlbl pTG, HMODEM, ULONG ulTimeout, WORD wFlags);
|
|
USHORT ModemConnectRx(PThrdGlbl pTG, HMODEM, WORD wFlags);
|
|
BOOL ModemSendMode(PThrdGlbl pTG, HMODEM, USHORT uMod, BOOL fHDLC, USHORT ifrHint);
|
|
#ifdef UNUSED
|
|
BOOL ModemSendTCF(PThrdGlbl pTG, HMODEM, USHORT uMod, ULONG ulDuration);
|
|
#endif // UNUSED
|
|
BOOL ModemSendMem(PThrdGlbl pTG, HMODEM, LPBYTE lpb, USHORT uCount, USHORT uParams);
|
|
BOOL ModemSendSilence(PThrdGlbl pTG, HMODEM, USHORT uMillisecs, ULONG ulTimeout);
|
|
BOOL ModemRecvSilence(PThrdGlbl pTG, HMODEM, USHORT uMillisecs, ULONG ulTimeout);
|
|
USHORT ModemRecvMode(PThrdGlbl pTG, HMODEM, USHORT uMod, BOOL fHDLC, ULONG ulTimeout, USHORT ifrHint);
|
|
USHORT ModemRecvMem(PThrdGlbl pTG, HMODEM, LPBYTE lpb, USHORT cbMax, ULONG ulTimeout, USHORT far* lpcbRecv);
|
|
BOOL ModemSetParams(PThrdGlbl pTG, USHORT uModem, LPMODEMPARAMS lpParms);
|
|
typedef BOOL (WINAPI *LPFN_MODEMSETPARAMS)(PThrdGlbl pTG, USHORT uModem, LPMODEMPARAMS lpParms);
|
|
void ModemEndRecv(PThrdGlbl pTG, HMODEM);
|
|
BOOL NCUModemUpdateConfig(PThrdGlbl pTG);
|
|
/***************** end of prototypes from ddi.c *****************/
|
|
|
|
// Modem Diagnostics API
|
|
DWORD NCUModemDiagnostic(PThrdGlbl pTG, HLINE, HMODEM, WORD inparam);
|
|
|
|
|
|
//////////////// This is used for Modem Diagnostics //////////////
|
|
|
|
// Start a Modem diagnostic session
|
|
WORD WINAPI MdmStartDiagnostic(PThrdGlbl pTG);
|
|
// return a handle or 0 on failure (modem busy)
|
|
|
|
// Execute a modem diagnostic & return result
|
|
DWORD WINAPI MdmExecDiagnostic(PThrdGlbl pTG, WORD hndle, WORD inparam);
|
|
// calls Low-level modem driver disgnostic function
|
|
// NCUModemDiagnostic(HLINE, HMODEM, WORD inparam)
|
|
// and returned the DWORD result
|
|
|
|
// Start a Modem transport diagnostic session
|
|
WORD WINAPI MdmEndDiagnostic(PThrdGlbl pTG, WORD hndle);
|
|
|
|
|
|
|
|
|
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
//fxrn
|
|
|
|
void SetFailureCode(PThrdGlbl pTG, T30FAILURECODE uT30Fail);
|
|
void SetStatus(PThrdGlbl pTG, T30STATUS uT30Stat, USHORT uN1, USHORT uN2, USHORT uN3);
|
|
|
|
LPBUFFER MyAllocBuf(PThrdGlbl pTG, LONG sSize);
|
|
BOOL MyFreeBuf(PThrdGlbl pTG, LPBUFFER);
|
|
void MyAllocInit(PThrdGlbl pTG);
|
|
|
|
|
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
//negot.c
|
|
|
|
BOOL NegotiateCaps(PThrdGlbl pTG);
|
|
|
|
|
|
|
|
|
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
// my own stuff
|
|
|
|
|
|
typedef VOID (T30LINECALLBACK)(
|
|
HLINE hLine,
|
|
DWORD hDevice,
|
|
DWORD dwMessage,
|
|
DWORD_PTR dwInstance,
|
|
DWORD_PTR dwParam1,
|
|
DWORD_PTR dwParam2,
|
|
DWORD_PTR dwParam3
|
|
);
|
|
|
|
|
|
VOID
|
|
T30LineCallBackFunction(
|
|
HANDLE hFax,
|
|
DWORD hDevice,
|
|
DWORD dwMessage,
|
|
DWORD_PTR dwInstance,
|
|
DWORD_PTR dwParam1,
|
|
DWORD_PTR dwParam2,
|
|
DWORD_PTR dwParam3
|
|
);
|
|
|
|
|
|
|
|
|
|
VOID FaxDevInit(PThrdGlbl pTG, HLINE hLine,HCALL hCall);
|
|
BOOL T30ComInit( PThrdGlbl pTG, HANDLE hComm);
|
|
PVOID T30AllocThreadGlobalData(VOID);
|
|
BOOL T30Cl1Rx (PThrdGlbl pTG);
|
|
BOOL T30Cl1Tx (PThrdGlbl pTG,LPSTR szPhone);
|
|
|
|
HANDLE T30GetCommHandle(HLINE hLine, HCALL hCall);
|
|
|
|
|
|
|
|
USHORT
|
|
T30ModemInit(PThrdGlbl pTG,HANDLE hComm,DWORD dwLineID,DWORD dwLineIDType,
|
|
DWORD dwProfileID, LPSTR lpszKey, BOOL fInstall);
|
|
|
|
|
|
BOOL itapi_async_setup(PThrdGlbl pTG);
|
|
BOOL itapi_async_wait(PThrdGlbl pTG,DWORD dwRequestID,PDWORD lpdwParam2,PDWORD_PTR lpdwParam3,DWORD dwTimeout);
|
|
BOOL itapi_async_signal(PThrdGlbl pTG, DWORD dwRequestID, DWORD dwParam2, DWORD_PTR dwParam3);
|
|
|
|
|
|
VOID
|
|
MyDebugPrint(
|
|
PThrdGlbl pTG,
|
|
int DbgLevel,
|
|
LPSTR Format,
|
|
...
|
|
);
|
|
|
|
|
|
LPLINECALLPARAMS itapi_create_linecallparams(void);
|
|
|
|
void
|
|
GetCommErrorNT(
|
|
PThrdGlbl pTG,
|
|
HANDLE h,
|
|
int* pn,
|
|
LPCOMSTAT pstat);
|
|
|
|
|
|
int
|
|
ReadFileNT(
|
|
PThrdGlbl pTG,
|
|
HANDLE h,
|
|
LPVOID lpBuffer,
|
|
DWORD BytesToRead,
|
|
LPDWORD BytesHadRead,
|
|
LPOVERLAPPED lpOverlapped,
|
|
DWORD TimeOut,
|
|
HANDLE SecondEvent
|
|
);
|
|
|
|
|
|
void
|
|
ClearCommCache(
|
|
PThrdGlbl pTG
|
|
);
|
|
|
|
int FComFilterFillCache(PThrdGlbl pTG, UWORD cbSize, LPTO lptoRead);
|
|
|
|
|
|
BOOL MonInit(PThrdGlbl pTG, LPMONOPTIONS lpmo);
|
|
// dwPrefNumMRs - preferred number of MONREC structures in circ. buf
|
|
// dwPrefBufSize - preferred size of byte circular buf
|
|
// -- May globally alloc data of the appropriate size.
|
|
// -- May use internal static data
|
|
|
|
|
|
void MonDeInit(PThrdGlbl pTG);
|
|
// Inverse of MonInit.
|
|
|
|
BOOL MonPutComm(PThrdGlbl pTG, WORD wFlags, LPBYTE lpb, WORD wcb);
|
|
// Adds comm info to monitor record.
|
|
|
|
BOOL MonPutEvent(PThrdGlbl pTG, WORD wFlags, WORD wID, WORD wSubID,
|
|
DWORD dwData0, DWORD dwData1, LPSTR lpszTxtMsg);
|
|
// Adds event info to monitor record.
|
|
|
|
void MonDump(PThrdGlbl pTG);
|
|
// Dumps the .mon (byte buffer) and .mrc (MONREC buffer) to the
|
|
// file constructed using lpszStubName, if non NULL.
|
|
// EG: if lpszStubName == "d:\logs\awfax", the files
|
|
// Created would be of the form "d:\logs\awfaxN.mon" and
|
|
// "d:\logs\awfaxN.mrc", where N is a number starting with 0 and
|
|
// incremented each time MonDump is called (it wraps around at 16
|
|
// currently). N is reset to zero each time MonInit is called.
|
|
// If lpszStubName is NULL, a default of "c:\fax" is used instead.
|
|
|
|
UWORD FComStripBuf(PThrdGlbl pTG, LPB lpbOut, LPB lpbIn, UWORD cb, BOOL fClass2, LPSWORD lpswEOF);
|
|
|
|
void InitCapsBC(PThrdGlbl pTG, LPBC lpbc, USHORT uSize, BCTYPE bctype);
|
|
|
|
BOOL
|
|
SignalStatusChange(
|
|
PThrdGlbl pTG,
|
|
DWORD StatusId
|
|
);
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Ansi prototypes
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
VOID CALLBACK
|
|
T30LineCallBackFunctionA(
|
|
HANDLE hFax,
|
|
DWORD hDevice,
|
|
DWORD dwMessage,
|
|
DWORD_PTR dwInstance,
|
|
DWORD_PTR dwParam1,
|
|
DWORD_PTR dwParam2,
|
|
DWORD_PTR dwParam3
|
|
);
|
|
|
|
BOOL WINAPI
|
|
FaxDevInitializeA(
|
|
IN HLINEAPP LineAppHandle,
|
|
IN HANDLE HeapHandle,
|
|
OUT PFAX_LINECALLBACK *LineCallbackFunction,
|
|
IN PFAX_SERVICE_CALLBACK FaxServiceCallback
|
|
);
|
|
|
|
|
|
BOOL WINAPI
|
|
FaxDevStartJobA(
|
|
HLINE LineHandle,
|
|
DWORD DeviceId,
|
|
PHANDLE pFaxHandle,
|
|
HANDLE CompletionPortHandle,
|
|
ULONG_PTR CompletionKey
|
|
);
|
|
|
|
BOOL WINAPI
|
|
FaxDevEndJobA(
|
|
HANDLE FaxHandle
|
|
);
|
|
|
|
|
|
BOOL WINAPI
|
|
FaxDevSendA(
|
|
IN HANDLE FaxHandle,
|
|
IN PFAX_SEND_A FaxSend,
|
|
IN PFAX_SEND_CALLBACK FaxSendCallback
|
|
);
|
|
|
|
BOOL WINAPI
|
|
FaxDevReceiveA(
|
|
HANDLE FaxHandle,
|
|
HCALL CallHandle,
|
|
PFAX_RECEIVE_A FaxReceive
|
|
);
|
|
|
|
BOOL WINAPI
|
|
FaxDevReportStatusA(
|
|
IN HANDLE FaxHandle OPTIONAL,
|
|
OUT PFAX_DEV_STATUS FaxStatus,
|
|
IN DWORD FaxStatusSize,
|
|
OUT LPDWORD FaxStatusSizeRequired
|
|
);
|
|
|
|
BOOL WINAPI
|
|
FaxDevAbortOperationA(
|
|
HANDLE FaxHandle
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HANDLE
|
|
TiffCreateW(
|
|
LPWSTR FileName,
|
|
DWORD CompressionType,
|
|
DWORD ImageWidth,
|
|
DWORD FillOrder,
|
|
DWORD HiRes
|
|
);
|
|
|
|
|
|
|
|
|
|
HANDLE
|
|
TiffOpenW(
|
|
LPWSTR FileName,
|
|
PTIFF_INFO TiffInfo,
|
|
BOOL ReadOnly
|
|
);
|
|
|
|
|
|
|
|
// fast tiff
|
|
|
|
|
|
DWORD
|
|
TiffConvertThreadSafe(
|
|
PThrdGlbl pTG
|
|
);
|
|
|
|
DWORD
|
|
TiffConvertThread(
|
|
PThrdGlbl pTG
|
|
);
|
|
|
|
|
|
DWORD
|
|
PageAckThreadSafe(
|
|
PThrdGlbl pTG
|
|
);
|
|
|
|
DWORD
|
|
PageAckThread(
|
|
PThrdGlbl pTG
|
|
);
|
|
|
|
|
|
VOID
|
|
SignalHelperError(
|
|
PThrdGlbl pTG
|
|
);
|
|
|
|
|
|
|
|
BOOL
|
|
DecodeMHFaxPageAsync(
|
|
PThrdGlbl pTG,
|
|
DWORD *RetFlags,
|
|
char *InFileName
|
|
);
|
|
|
|
|
|
BOOL
|
|
DecodeMRFaxPageAsync(
|
|
PThrdGlbl pTG,
|
|
DWORD *RetFlags,
|
|
char *InFileName,
|
|
BOOL HiRes
|
|
);
|
|
|
|
|
|
DWORD
|
|
ComputeCheckSum(
|
|
LPDWORD BaseAddr,
|
|
DWORD NumDwords
|
|
);
|
|
|
|
BOOL
|
|
SignalRecoveryStatusChange(
|
|
T30_RECOVERY_GLOB *Recovery
|
|
);
|
|
|
|
|
|
VOID
|
|
SimulateError(
|
|
DWORD ErrorType
|
|
);
|
|
|
|
|
|
int
|
|
SearchNewInfFile(
|
|
PThrdGlbl pTG,
|
|
char *Key1,
|
|
char *Key2,
|
|
BOOL fRead
|
|
);
|
|
|
|
|
|
int
|
|
my_strcmp(
|
|
LPSTR sz1,
|
|
LPSTR sz2
|
|
);
|
|
|
|
|
|
void
|
|
TalkToModem (
|
|
PThrdGlbl pTG,
|
|
BOOL fGetClass
|
|
);
|
|
|
|
|
|
BOOL
|
|
SaveInf2Registry (
|
|
PThrdGlbl pTG
|
|
);
|
|
|
|
BOOL
|
|
SaveModemClass2Registry (
|
|
PThrdGlbl pTG
|
|
);
|
|
|
|
|
|
BOOL
|
|
ReadModemClassFromRegistry (
|
|
PThrdGlbl pTG
|
|
);
|
|
|
|
|
|
VOID
|
|
CleanModemInfStrings (
|
|
PThrdGlbl pTG
|
|
);
|
|
|
|
|
|
|
|
BOOL
|
|
RemoveCR (
|
|
LPSTR sz
|
|
);
|
|
|
|
|
|
|
|
/*** BEGIN PROTOTYPES FROM CLASS2.c ***/
|
|
|
|
BOOL
|
|
T30Cl2Rx(
|
|
PThrdGlbl pTG
|
|
);
|
|
|
|
|
|
BOOL
|
|
T30Cl2Tx(
|
|
PThrdGlbl pTG,
|
|
LPSTR szPhone
|
|
);
|
|
|
|
|
|
BOOL Class2Send(PThrdGlbl pTG);
|
|
BOOL Class2Receive(PThrdGlbl pTG);
|
|
USHORT Class2Dial(PThrdGlbl pTG, LPSTR lpszDial);
|
|
USHORT Class2Answer(PThrdGlbl pTG, BOOL fImmediate);
|
|
SWORD Class2ModemSync(PThrdGlbl pTG);
|
|
UWORD Class2iModemDialog(PThrdGlbl pTG, LPSTR szSend, UWORD uwLen, ULONG ulTimeout,
|
|
BOOL fMultiLine, UWORD uwRepeatCount, ...);
|
|
BOOL Class2ModemHangup(PThrdGlbl pTG);
|
|
BOOL Class2ModemAbort(PThrdGlbl pTG);
|
|
SWORD Class2HayesSyncSpeed(PThrdGlbl pTG, BOOL fTryCurrent, C2PSTR cbszCommand, UWORD uwLen);
|
|
USHORT Class2ModemRecvData(PThrdGlbl pTG, LPB lpb, USHORT cbMax, USHORT uTimeout,
|
|
USHORT far* lpcbRecv);
|
|
BOOL Class2ModemSendMem(PThrdGlbl pTG, LPBYTE lpb, USHORT uCount);
|
|
BOOL Class2ModemDrain(PThrdGlbl pTG);
|
|
void Class2TwiddleThumbs(ULONG ulTime);
|
|
LPSTR Class2_fstrstr( LPSTR sz1, LPSTR sz2);
|
|
USHORT Class2MinScanToBytesPerLine(PThrdGlbl pTG, BYTE Minscan, BYTE Baud, BYTE Resolution);
|
|
BOOL Class2ResponseAction(PThrdGlbl pTG, LPPCB lpPcb);
|
|
USHORT Class2ModemRecvBuf(PThrdGlbl pTG, LPBUFFER far* lplpbf, USHORT uTimeout);
|
|
USHORT Class2EndPageResponseAction(PThrdGlbl pTG);
|
|
BOOL Class2GetModemMaker(PThrdGlbl pTG);
|
|
void Class2SetMFRSpecific(PThrdGlbl pTG, LPSTR lpszSection);
|
|
BOOL Class2Parse( PThrdGlbl pTG, CL2_COMM_ARRAY *, BYTE responsebuf[] );
|
|
void Class2InitBC(PThrdGlbl pTG, LPBC lpbc, USHORT uSize, BCTYPE bctype);
|
|
void Class2PCBtoBC(PThrdGlbl pTG, LPBC lpbc, USHORT uMaxSize, LPPCB lppcb);
|
|
void Class2SetDIS_DCSParams(PThrdGlbl pTG, BCTYPE bctype, LPUWORD Encoding, LPUWORD Resolution,
|
|
LPUWORD PageWidth, LPUWORD PageLength, LPSTR szID);
|
|
|
|
void Class2BCHack(PThrdGlbl pTG);
|
|
BOOL Class2GetBC(PThrdGlbl pTG, BCTYPE bctype);
|
|
void Class2GetRecvPageAck(PThrdGlbl pTG);
|
|
void Class2ReadProfile(PThrdGlbl pTG, LPSTR lpszSection);
|
|
void cl2_flip_bytes( LPB lpb, DWORD dw);
|
|
|
|
|
|
BOOL iModemGoClass(PThrdGlbl pTG, USHORT uClass);
|
|
|
|
void Class2Abort(PThrdGlbl pTG, BOOL fEnable);
|
|
BOOL Class2NCUSet(PThrdGlbl pTG, LPNCUPARAMS NCUParams2);
|
|
|
|
void
|
|
Class2Init(
|
|
PThrdGlbl pTG
|
|
);
|
|
|
|
|
|
BOOL
|
|
Class2SetProtParams(
|
|
PThrdGlbl pTG,
|
|
LPPROTPARAMS lp
|
|
);
|
|
|
|
/*** BEGIN PROTOTYPES FROM CLASS2_0.c ***/
|
|
|
|
BOOL
|
|
T30Cl20Rx (
|
|
PThrdGlbl pTG
|
|
);
|
|
|
|
|
|
BOOL
|
|
T30Cl20Tx(
|
|
PThrdGlbl pTG,
|
|
LPSTR szPhone
|
|
);
|
|
|
|
|
|
BOOL Class20Send(PThrdGlbl pTG);
|
|
BOOL Class20Receive(PThrdGlbl pTG);
|
|
|
|
void
|
|
Class20Init(
|
|
PThrdGlbl pTG
|
|
);
|
|
|
|
BOOL Class20GetModemMaker(PThrdGlbl pTG);
|
|
|
|
BOOL Class20Parse( PThrdGlbl pTG, CL2_COMM_ARRAY *, BYTE responsebuf[] );
|
|
|