358 lines
15 KiB
C
358 lines
15 KiB
C
|
|
||
|
/***************************************************************************
|
||
|
Name : DEFS.H
|
||
|
Comment :
|
||
|
|
||
|
Copyright (c) Microsoft Corp. 1991, 1992, 1993
|
||
|
|
||
|
Revision Log
|
||
|
Date Name Description
|
||
|
-------- ----- ---------------------------------------------------------
|
||
|
***************************************************************************/
|
||
|
|
||
|
|
||
|
#pragma warning(disable:4001) /** nonstd extensions **/
|
||
|
#pragma warning(error:4002) // too many actual params for macro
|
||
|
#pragma warning(error:4003) // too few actual params for macro
|
||
|
#pragma warning(error:4005) // macro redefined
|
||
|
#pragma warning(error:4020) // too many actual params for function
|
||
|
#pragma warning(error:4021) // too few actual params for function
|
||
|
|
||
|
|
||
|
#pragma warning(disable:4050) // different code attributes on fn ptr
|
||
|
#pragma warning(disable:4057) // indirection to slightly different types
|
||
|
#pragma warning(disable:4101) // unreferenced local variable
|
||
|
//// ignoring this warning resulted in bug when 'case' keyword was omitted!!//
|
||
|
// #pragma warning(disable:4102) // unreferenced label
|
||
|
#pragma warning(disable:4135) // conv between integral types
|
||
|
#pragma warning(disable:4200) // nonstd ext: zero sized array in struct
|
||
|
#pragma warning(disable:4201) // nonstd ext: nameless struct/union
|
||
|
#pragma warning(disable:4206) // nonstd ext: trans unit is empty (whole file ifdefd out)
|
||
|
#pragma warning(disable:4209) // nonstd ext: benign typedef redefinition
|
||
|
#pragma warning(disable:4214) // nonstd ext: non-int bitfield
|
||
|
#pragma warning(disable:4704) // inline asm precludes global optimization
|
||
|
#pragma warning(disable:4705) // statement has no effect
|
||
|
#pragma warning(disable:4706) // Assignment within conditional expression
|
||
|
#pragma warning(disable:4791) // Loss of debugging info
|
||
|
|
||
|
|
||
|
#define UECM // REQD!! DON'T DELETE EVER!! (This is incorrect-->use ECM for NON-EFAX G3 machines. (Ortho))
|
||
|
// This directly controls the ECM bit in the DIS
|
||
|
#define SMM // Static mem (for temp) (Reqd for WFW. Currently reqd for all)
|
||
|
// uses 2k in fcom\filter.c 350 in class1\framing.c 500 in t30\t30.c--use it always
|
||
|
#define PDUMP // Protocol dump. Uses 500bytes extra. Ortho to all else
|
||
|
|
||
|
|
||
|
#if defined(WFW) || defined(WFWBG)
|
||
|
# pragma message ("Compiling for WFW")
|
||
|
#ifdef DEBUG
|
||
|
# define MON // monitor bytes (Ortho)
|
||
|
#endif //DEBUG
|
||
|
# define FASTLOG // recv file list/log is FASTER (REQD--old one doesn't work)
|
||
|
# define VS // Vertical Scaling in Send. (Ortho)
|
||
|
# define NOPRE // no pre-emption. Reqd for WFW. Useless for IF (Ortho)
|
||
|
# define DYNL // Dynamic loading of DLLs. (WFW and !MDRV)
|
||
|
# define VC // uses VCOMM Comm driver thru DLLSCHED (WFW)
|
||
|
# define LPZ // CBSZ ptrs are far ptrs. Reqd for split driver/WFW
|
||
|
# define CAS // CAS support (Ortho)
|
||
|
# define CL2 // Class2 support (Ortho)
|
||
|
# define CL2_0 // Class2.0 support (Ortho)
|
||
|
# define PCR // Page Critical. Reqd for safe recv. (!MDDI)
|
||
|
# define CHK // check recvd data using old or new FAXCODEC (req !REC)
|
||
|
# define FILET30 // all file io & filet30 api
|
||
|
# define FAXWATCH // write out a FAXWATCH.LOG
|
||
|
# define STATUS // send out STATUS messages
|
||
|
# define INIFILE // read INI file settings
|
||
|
# define PCMODEMS // AT-cmd, serial modems
|
||
|
# define NEGOT // do negotiation
|
||
|
# define DOSIO // use DOSIO calls thru DLLSCHED
|
||
|
# define DISCARDFIX // Declare discardable & fix in LibMain
|
||
|
//# define SEC // recode send data to MR/MMR with new FAXCODEC. Doesn't work yet
|
||
|
//# define REC // recode recv data with new FAXCODEC (!CHK and RECODE_TO). Doesn't work yet
|
||
|
//# define RECODE_TO MH_DATA // for old Pumps
|
||
|
//# define RECODE_TO MMR_DATA // for compactness
|
||
|
#endif //WFW || WFWBG
|
||
|
|
||
|
|
||
|
#if defined(IFAX) && !defined(WINPAD)
|
||
|
# pragma message ("Compiling for IFAX")
|
||
|
#ifdef DEBUG
|
||
|
//# define MON // monitor bytes (Ortho) // can't use it without KFIL or DOSIO
|
||
|
#endif //DEBUG
|
||
|
// # define IFP
|
||
|
|
||
|
|
||
|
// Receive spool options to control anti-RNR
|
||
|
#define RXSPOOLFIFO // initiate receive spool FIFO if printer cannot keep up
|
||
|
#define END_PSIFAX_WHENFLUSHING // early cleanup of PSIFAX when receive is
|
||
|
// complete and FIFO is being flushed
|
||
|
|
||
|
# define CHKDATA // check recvd data in MSGSVR
|
||
|
# define RECOVER // save recvd data in MSGSVR for later recovery
|
||
|
# define RECOVER2 // continue recving after jobproc has croaked
|
||
|
# define LPZ // CBSZ ptrs are far ptrs. Reqd for split driver/WFW
|
||
|
# define OEMNSF // support fro OEMNSF DLLs
|
||
|
# define RICOHAI // support fro Ricoh AI protocol (requires OEMNSF also)
|
||
|
# define PSI // PSI version--reqd to compile anything in PSIFAX dir
|
||
|
# define TSK // BGT30 is a Process. No DLLSCHED. REQD for some vague stuff in FCOM
|
||
|
# define IFK // Use IFKERNEL services (Alloc/Free etc)
|
||
|
# define BOSS // Make WEP FIXED etc...
|
||
|
//#define COMMCRIT // put CritSection() around access to COMM.DRV
|
||
|
//#define CL2 // Use CL2 or 2.0 driver, not T30+ET30PROT+Class1/OEM driver
|
||
|
//# define PCR // PageCrit. Reqd for safe recv with Class1. (need !MDDI). BREAKS! with OEM modem drivers
|
||
|
|
||
|
// The Cactus is a MDDI based on our Class1 driver. So we need PCR!
|
||
|
#if defined(CACTUS)
|
||
|
# define PCR
|
||
|
# pragma message("Enabling PCR for CACTUS")
|
||
|
#endif // CACTUS
|
||
|
|
||
|
# define MDDI // exact ModemDDI (rev 0.90) (need MDRV && !DYNL). REQD if using OEM driver. REQD to diable if using Class1 driver.
|
||
|
# define MDRV // monolith drv. REQD for OEM driver (need !WFW & !DYNL). Incompatible with CL2. Optional for Class1.
|
||
|
# define STATUS // support for sending STATUS msgs. Optional.
|
||
|
# define NVLOG // log errors to NVRAM
|
||
|
// these two must be OFF for IFAX, ON for Winpad
|
||
|
// (if left on in IFAX UI & Transport use different option struct sizes)
|
||
|
//# define INIFILE // read INI file settings. Optional. (advisable for Cl1 & Cl2)
|
||
|
//# define PCMODEMS// read AT cmd INI file settings. Reqd for Class1 & CL2. (i.e. if not OEM driver or !MDDI) (need INIFILE also).
|
||
|
#endif //IFAX && !WINPAD
|
||
|
|
||
|
|
||
|
|
||
|
#if defined(WINPAD)
|
||
|
# pragma message ("Compiling for WINPAD")
|
||
|
#ifdef DEBUG
|
||
|
# define MON // monitor bytes (Ortho) // can't use it without KFIL or DOSIO
|
||
|
#endif //DEBUG
|
||
|
# define TSK // BGT30 is a Process. No DLLSCHED. REQD for some vague stuff in FCOM
|
||
|
//# define MDDI // exact ModemDDI (rev 0.90) (need MDRV && !DYNL). REQD if using OEM driver. REQD to diable if using Class1 driver.
|
||
|
//# define MDRV // monolith drv. REQD for OEM driver (need !WFW & !DYNL). Incompatible with CL2. Optional for Class1.
|
||
|
# define LPZ // CBSZ ptrs are far ptrs. Reqd for split driver/WFW
|
||
|
# define CL2 // Class2 support (Ortho)
|
||
|
//# define CL2_0 // Class2.0 support (Ortho)
|
||
|
# define PCR // Page Critical. Reqd for safe recv. (!MDDI)
|
||
|
//# define STATUS // send out STATUS messages
|
||
|
# define INIFILE // read INI file settings
|
||
|
# define PCMODEMS // AT-cmd, serial modems
|
||
|
# define PSI // PSI version--reqd to compile anything in PSIFAX dir
|
||
|
# define IFK // Use IFKERNEL services (Alloc/Free etc)
|
||
|
# define KFIL // use kernel file APIs
|
||
|
# define COMMCRIT // put CritSection() around access to COMM.DRV
|
||
|
#endif //WINPAD
|
||
|
|
||
|
|
||
|
|
||
|
#if defined(WIN32)
|
||
|
# pragma message ("Compiling for WIN32")
|
||
|
#define AWG3 // Use AWG3 instead of MG3
|
||
|
#ifdef DEBUG
|
||
|
# define MON // monitor bytes (Ortho)
|
||
|
// Can't monitor bytes in WIN 32 -- why not?
|
||
|
#endif //DEBUG
|
||
|
# define POLLREQ // send poll req. (ortho)
|
||
|
# define FASTLOG // recv file list/log is FASTER (REQD--old one doesn't work)
|
||
|
# define VS // Vertical Scaling in Send. (Ortho)
|
||
|
//# define NOPRE // no pre-emption. Reqd for WFW. Useless for all others?
|
||
|
//# define TSK // BGT30 is a Process. No DLLSCHED. doesn't work in WIN32
|
||
|
# define THREAD // BGT30 becomes a WIN32 thread inside EFAXRUN
|
||
|
# define DYNL // Dynamic loading of DLLs. (WFW and !MDRV)
|
||
|
//# define VC // uses VCOMM Comm driver thru DLLSCHED (WFW)
|
||
|
# define LPZ // CBSZ ptrs are far ptrs. Reqd for split driver/WFW
|
||
|
# define CAS // CAS support (Ortho)
|
||
|
# define CL2 // Class2 support (Ortho)
|
||
|
# define CL2_0 // Class2.0 support (Ortho)
|
||
|
# define PCR // Page Critical. Reqd for safe recv. (!MDDI)
|
||
|
# define CHK // check recvd data using old or new FAXCODEC (req !REC)
|
||
|
# define FILET30 // all file io & filet30 api
|
||
|
# define FAXWATCH // write out a FAXWATCH.LOG
|
||
|
# define STATUS // send out STATUS messages
|
||
|
# define INIFILE // read INI file settings
|
||
|
# define PCMODEMS // AT-cmd, serial modems
|
||
|
# define NEGOT // do negotiation
|
||
|
# define KFIL // use Kernel File Calls
|
||
|
# define SEC // recode send MMR data to MR/MH with AWCODC32. Works now.
|
||
|
//# define REC // recode recv data with new FAXCODEC (req NFC and !CHK and RECODE_TO). Doesn't work yet
|
||
|
//# define RECODE_TO MH_DATA // for old Pumps
|
||
|
//# define RECODE_TO MMR_DATA // for compactness
|
||
|
# define IFDbgPrintf MyIFDbgPrintf // +++ Redirect dbg msgs to efaxrun for now..
|
||
|
# define METAPORT // FCom can deal with port handles as well as port number.
|
||
|
# define UNIMEXT // Unimodem MCX aware
|
||
|
# define TAPI // TAPI aware
|
||
|
# define COMPRESS // Linearized messages are RejeevD-compressed.
|
||
|
# define ADAPTIVE_ANSWER // Ataptive-answer handoff to another TAPI app..
|
||
|
# define USECAPI // Capabilities saved via registry, not via
|
||
|
// Post-message, textcaps, etc.
|
||
|
# define MON3 // Extended COMM monitoring features (retail AND debug)
|
||
|
# ifndef DEBUG
|
||
|
# define SHIP_BUILD
|
||
|
# endif // !DEBUG
|
||
|
# ifdef DEBUG
|
||
|
# define NSF_TEST_HOOKS // hooks for testing NSF compatibility.
|
||
|
# endif // DEBUG
|
||
|
# define PORTABLE_CODE
|
||
|
#endif // WIN32
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
//////// JUNE Demo IFAX /////////////////////////////////////////
|
||
|
// #if defined(IFFGPROC) || defined(IFBGPROC)
|
||
|
// # pragma message ("Compiling for IFAX")
|
||
|
// # define MDRV // monolithic driver. reqd for IF (!WFW & !DYNL)
|
||
|
// # define TSK // it's a Process--Can use win msging. No DLLSCHED
|
||
|
// # define IFK // Use IFKERNEL services (Alloc/Free etc)
|
||
|
// # define KFIL // Use Win Kernel FILEIO services
|
||
|
// //# define PCR // Page Critical. Reqd for safe recv. (!MDDI)
|
||
|
// # define MDDI // exact ModemDDI (rev 0.90) (MDRV && T3TO && !DYNL)
|
||
|
// # define T3TO // use local timeouts (not from fcom) in T30 (MDDI)
|
||
|
// # define JUNE // june 6th demo
|
||
|
// # define FASTLOG // take this out along with JUNE
|
||
|
// // # ifdef DEBUG
|
||
|
// // # define MON // monitor bytes (Ortho)
|
||
|
// // # endif //DEBUG
|
||
|
// #endif //IFFGPROC
|
||
|
/////////////////////////////////////////////////////////////////////
|
||
|
// +++ josephj Ifaxos was changed so that DEBUGCHK calls DBGCHK,
|
||
|
// which is not so harmful
|
||
|
//#ifdef DEBUG
|
||
|
// // not safe to call in BG (snowball==>GPF, IFAX==>timing problems)
|
||
|
//# define DEBUGCHK_UNSAFE_IN_WFWBG
|
||
|
//# define DEBUGCHK UNSAFE_IN_WFWBG
|
||
|
//#endif //DEBUG
|
||
|
|
||
|
#if (defined(CHK) && defined(REC))
|
||
|
# error REC and CHK combination invalid
|
||
|
#endif
|
||
|
#if defined(MDDI) && !defined(MDRV)
|
||
|
# error MDDI requires MDRV
|
||
|
#endif
|
||
|
#if defined(DYNL) && defined(MDRV)
|
||
|
# error DYNL requires !MDRV
|
||
|
#endif
|
||
|
#if !defined(MDRV) && !defined(LPZ)
|
||
|
# error !MDRV requires LPZ
|
||
|
#endif
|
||
|
#if !defined(LPZ)
|
||
|
# error New modem-init scheme requires LPZ in _all_ builds
|
||
|
#endif
|
||
|
|
||
|
#if !defined(FILET30) && (defined(FASTLOG) || defined(FAXWATCH))
|
||
|
# error NOFILE--cant have FASTLOG or FAXWATCH
|
||
|
#endif
|
||
|
|
||
|
#ifdef WIN32
|
||
|
# ifdef IFK
|
||
|
# error "IFK option illegal under WIN32"
|
||
|
# endif
|
||
|
//# ifndef TSK
|
||
|
//# error "must use TSK in WIN32. Dllsched option NYI"
|
||
|
//# endif
|
||
|
# ifdef NOPRE
|
||
|
# error NOPRE not supported in WIN32 (cant lockup machine)
|
||
|
# endif
|
||
|
# ifdef MDDI
|
||
|
# error MDDI not supported in WIN32 (need FComCritical())
|
||
|
# endif
|
||
|
#endif
|
||
|
|
||
|
#ifdef TMR
|
||
|
# error "TMR option no longer supported"
|
||
|
#endif
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#ifdef DISCARDFIX
|
||
|
# define CODEFIXED DISCARDABLE
|
||
|
# define DATAFIXED FIXED
|
||
|
#else //DISCARDFIX
|
||
|
# define CODEFIXED FIXED
|
||
|
# define DATAFIXED FIXED
|
||
|
#endif // DISCARDFIX
|
||
|
|
||
|
|
||
|
#ifdef COMMENTS_NEED_TO_BE_REMOVED
|
||
|
|
||
|
/////////////////////////////////////// Tasking/Sleep/Timing options ///////
|
||
|
//
|
||
|
// There are 4 options available
|
||
|
// (1) Tasking/Sleeping thru DLLSCHED: #defs reqd are !TSK !TMR and !IFK
|
||
|
// (2) Tasking/Sleeping thru an IFKERNEL BGproc: #defs reqd TSK IFK and !TMR
|
||
|
// (3) Tasking thru WIN32: #defs reqd WIN32 TSK !IFK !TMR
|
||
|
// (4) Use WM_TIMERs to sleep: #defs reqd TSK TMR -- NOT SUPPORTED anymore
|
||
|
//
|
||
|
/////////////////////////////////////// Tasking/Sleep/Timing options ///////
|
||
|
|
||
|
|
||
|
//######## GENERAL ##############################
|
||
|
//
|
||
|
// anything labelled (Ortho) is orthogonal to everything else and can be
|
||
|
// added or removed independently. All others have conditions marked
|
||
|
// or described below.
|
||
|
//
|
||
|
//
|
||
|
// WFW--requires VC and SMM and !IFK and !KFIL. Can use DYNL or not.
|
||
|
// If DYNL used then LPZ is reqd & MDRV excluded
|
||
|
// IFF--requires MDRV and TSK and IFK and !DYNL. Can use TMR and/or NTF
|
||
|
// but currently thats broken. Requires KFIL if any file calls are
|
||
|
// made.
|
||
|
//
|
||
|
//
|
||
|
// TMR--use Timers & messaging (requires TSK)
|
||
|
// NTF--use WM_NOTIFY msgs also (requires TSK and TMR)
|
||
|
// DYNL & split drivers don't work with IF.
|
||
|
// DYNL and MDRV are mutually exclusive (though both can be absent)
|
||
|
//
|
||
|
//
|
||
|
// Modem Strings. Can use -D LPZ(far) CBZ(code-based) or nothing (near)
|
||
|
// for CBSZ ptrs, but the latter 2 work only with FCOM & CLASS1
|
||
|
// as one piece (i.e. with MDRV defined).
|
||
|
// For WFW--MUST be LPZ. For IF--can be nothing or LPZ. near is better
|
||
|
// CBZ doesn't work yet
|
||
|
//
|
||
|
//######## Debug ##############################
|
||
|
//
|
||
|
// MON-- monitor bytes to port, can be set orthogonal to DEBUG
|
||
|
// DEFS= $(DEFS) -DNOVCOM ## don't use VCOMM (use with dummy DDRV)
|
||
|
//
|
||
|
//######## WFW specific ##############################
|
||
|
//
|
||
|
// WFW--assumes disk available for r/w during ECM
|
||
|
// only reasonable combos are (T30PROC and not WFW) and (not T30PROC and WFW)
|
||
|
// STATICM--never dynamically allocs. Must be set for WFW
|
||
|
// UCOM--call comm driver thru USER (not directly). Must *not* be set
|
||
|
// for WFW. Probably don't use for IFF or IFB
|
||
|
//
|
||
|
//######## OBSOLETE BUT USABLE ##############################
|
||
|
//
|
||
|
// SLOW--double all timeouts,
|
||
|
// TO_REALLY_VERBOSE--trace every TO check
|
||
|
//
|
||
|
//######## TOTALLY OBSOLETE -- DO NOT USE ###############
|
||
|
//
|
||
|
// T3TO -- T30 timeouts are local (NPTOs) instead of from FCOM (now foled into MDDI)
|
||
|
//
|
||
|
//######## NOT TESTED IN A WHILE -- DO NOT USE ###############
|
||
|
//
|
||
|
// NCR--don't preempt during negotiation
|
||
|
// DYNMON -- monitor bufs are dynamically alloced. Must be off for WFW
|
||
|
// OLDECM -- old (non-seeking/non-buffered) ver of ECM
|
||
|
//
|
||
|
//######## BROKEN -- DO NOT USE ##############################
|
||
|
//
|
||
|
// Hack for RC224ATF
|
||
|
// DEFS= $(DEFS) -DS7H ## don't turn this ON. It's broken & not reqd
|
||
|
//
|
||
|
//######## NOT YET IMPLEM ##########################
|
||
|
//
|
||
|
// RECVOEMNSF--not yet implem. Only for IFAX
|
||
|
// PRI--not yet implem, may never be
|
||
|
// USECRP--not tested, may never be
|
||
|
// MMR_AVAIL -- runtime rendering not yet implem. will be soon
|
||
|
//
|
||
|
//##################################################
|
||
|
|
||
|
#endif
|