mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
4.0 KiB
104 lines
4.0 KiB
/***************************************************************************
|
|
Name : FCOMINt.H
|
|
Comment : Interface between FaxComm driver (entirely different for
|
|
Windows and DOS) and everything else.
|
|
|
|
Copyright (c) Microsoft Corp. 1991, 1992, 1993
|
|
|
|
Num Date Name Description
|
|
--- -------- ---------- -----------------------------------------------
|
|
***************************************************************************/
|
|
|
|
#define WRITEQUANTUM (pTG->Comm.cbOutSize / 8) // totally arbitrary
|
|
|
|
#define CR 0x0d
|
|
#define LF 0x0a
|
|
#define DLE 0x10 // DLE = ^P = 16d = 10h
|
|
#define ETX 0x03
|
|
|
|
|
|
|
|
|
|
|
|
#define FComGetError(pTG) \
|
|
{ GetCommErrorNT ( pTG, (HANDLE) pTG->Comm.nCid, &pTG->Comm.CommErr, &(pTG->Comm.comstat)); \
|
|
if(pTG->Comm.CommErr) D_GotError(pTG, pTG->Comm.nCid, pTG->Comm.CommErr, &(pTG->Comm.comstat));\
|
|
iModemSetError(pTG, MODEMERR_COMPORT, 0, 0); }
|
|
|
|
#ifdef WIN32 // WIN32 Overlapped I/O internal routines...
|
|
BOOL ov_init(PThrdGlbl pTG);
|
|
BOOL ov_deinit(PThrdGlbl pTG);
|
|
OVREC * ov_get(PThrdGlbl pTG);
|
|
BOOL ov_write(PThrdGlbl pTG, OVREC *lpovr, LPDWORD lpdwcbWrote);
|
|
BOOL ov_drain(PThrdGlbl pTG, BOOL fLongTO);
|
|
BOOL ov_unget(PThrdGlbl pTG, OVREC *lpovr);
|
|
BOOL iov_flush(PThrdGlbl pTG, OVREC *lpovr, BOOL fLongTO);
|
|
#endif // WIN32
|
|
|
|
BOOL FComGetSettings(PThrdGlbl pTG, LPFCOMSETTINGS);
|
|
BOOL FComSetSettings(PThrdGlbl pTG, LPFCOMSETTINGS);
|
|
// nothing
|
|
#define iModemSetError(pTG, a,b,c)
|
|
|
|
#ifdef WIN32
|
|
# define MONINBASE
|
|
# define MONOUTBASE
|
|
# define MONINOUTBASE
|
|
#else
|
|
# define MONINBASE __based(__segname("_MONIN"))
|
|
# define MONOUTBASE __based(__segname("_MONOUT"))
|
|
# define MONINOUTBASE __based(__segname("_MONINOUT"))
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
/****************** begin prototypes from filter.c *****************/
|
|
/****************** end of prototypes from filter.c *****************/
|
|
|
|
|
|
/****************** begin prototypes from ncuparms.c *****************/
|
|
void iNCUParamsReset(PThrdGlbl pTG);
|
|
void FComInitGlobals(PThrdGlbl pTG);
|
|
/***************** end of prototypes from ncuparms.c *****************/
|
|
|
|
#ifdef DEBUG
|
|
# ifndef WIN32
|
|
# define SLIPMULT 2
|
|
# define SLIPDIV 2
|
|
# else
|
|
# define SLIPMULT 1
|
|
# define SLIPDIV 4
|
|
# endif
|
|
# define BEFORESLEEP DWORD t1, t2; t1=GetTickCount();
|
|
# define AFTERSLEEP(x) t2=GetTickCount(); \
|
|
if((t2-t1) > (((x)*SLIPMULT)+((x)/SLIPDIV))) \
|
|
DEBUGMSG(1, ("!!!SLEPT %ld. Wanted only %d!!!\r\n", (t2-t1), (x)));
|
|
#else
|
|
# define BEFORESLEEP
|
|
# define AFTERSLEEP(arg)
|
|
#endif
|
|
|
|
////////// Variables controlling Sleep ///////////
|
|
//
|
|
// Comm.fBG -- used only in WFW, because can't call DllSleep in FG!
|
|
// Comm.bDontYield -- enabled during T30 "critical" sections. In non-premptive
|
|
// systems this should disable sleeping completely
|
|
//
|
|
//////////////////////////////////////////////////
|
|
|
|
// ACTIVESLICE defined in mysched.h
|
|
#define IDLESLICE 500
|
|
|
|
|
|
|
|
|
|
#if defined(WIN32) && defined(THREAD)
|
|
# define MySleep(x) \
|
|
{BG_CHK(x); \
|
|
{ BEFORESLEEP; Sleep(pTG->Comm.bDontYield?0:(x)); AFTERSLEEP(x); }}
|
|
// Note. Until 12/9/94, we used to call Sleep(1) if bDontYield as in :
|
|
// if (Comm.bDontYield) { BEFORESLEEP; Sleep(1); AFTERSLEEP(x); }
|
|
#endif //WIN32 && THREAD
|
|
|