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