campo-sirio/ba/faxdll.h

325 lines
11 KiB
C
Raw Normal View History

//////////////////////////////////////////////////////////////////////////////
//
// faxdll.h
//
// Copyright(c) 1994,1995 Data Techniques, Inc.
//
//////////////////////////////////////////////////////////////////////////////
//$Header: /test/repos/ba/faxdll.h,v 1.1 1996-07-31 07:08:42 guy Exp $
//$History: FAXDLL.H $
//
// ***************** Version 37 *****************
// User: Johnd Date: 3/05/96 Time: 10:00a
// Updated in $/FaxMan/Server
// Added FAXMODEMDONE Msg
//
// ***************** Version 36 *****************
// User: Johnd Date: 7/07/95 Time: 11:51a
// Updated in $/FaxMan/Server
// Fixed Bug #358, added FAXERR_PORTINIT to Fax Error enum
//
// ***************** Version 35 *****************
// User: Johnd Date: 5/25/95 Time: 2:28p
// Updated in $/FaxMan/DLL
// Added FAR to second parameter of FaxLogFind prototype.
//
// ***************** Version 34 *****************
// User: Johnd Date: 4/18/95 Time: 6:15p
// Updated in $/FaxMan/Ole Control
// Chgd some params from LPSTR to LPCSTRs.
//
// ***************** Version 30 *****************
// User: Johnd Date: 3/29/95 Time: 4:53p
// Updated in $/FaxMan/Server
// Added new FAXERR enums for Class 1.
//
// ***************** Version 29 *****************
// User: Timk Date: 3/10/95 Time: 3:22p
// Updated in $/faxman/server
// Added _ to SERVERCONFIG
//
// ***************** Version 28 *****************
// User: Timk Date: 3/10/95 Time: 3:06p
// Updated in $/faxman/server
// Added nMaxLen parameter to FaxGetConfig function.
//
// ***************** Version 27 *****************
// User: Timk Date: 3/09/95 Time: 6:56p
// Updated in $/faxman/server
// Added stuff for Setting/Getting server configuration.
//
#ifndef PORTABLE
typedef short SHORT;
typedef unsigned short USHORT;
#endif
#define SEND_FAX_STRUCT_REV 1
#define EXPORT_WINAPI WINAPI _export
#define MAXLEN 128
#define MAXITERATORS 100 //max # of simultaneous iteratations
#define FAXIDLEN 22 //len of FAXID fields (+2 for /0 and padding)
#define MAXPATH 128
#define APPNAMESIZE 30
#define WM_FAXMSG WM_USER+1000
// These identifiers should be responded to by the client apps.
#define FAXSENDMSG 0
#define FAXPRINTMSG 1
#define FAXGETFILENAME 2
#define FAXLOGADD 3
#define FAXLOGREMOVE 4
#define FAXCONFIGMSG 5
#define FAXMODEMMSG 6
#define FAXSERVERCONFIGMSG 7
#define FAXMODEMDONE 8
typedef enum {
LOGERR_NOITERATORS = MAXITERATORS+1,
LOGERR_OK,
LOGERR_CONTINUEIT, //continue iteration
LOGERR_ENDIT, //end of iteration - nothing else in list
LOGERR_NOENTRIES, //no entries to iterate through
} LOGERR;
typedef enum {
FAX_0 = 0,
FAX_1,
FAX_2,
FAX_20
} FAXCLASS;
typedef enum {
FAXST_ERROR = 0,
FAXST_OK,
FAXST_INIT,
FAXST_WAITFORSEND,
FAXST_SEND_INIT, //initializing a send operation
FAXST_SEND_DIALING, //we're dialing...
FAXST_SEND_WAIT_FCON, //waiting for connect message
FAXST_SEND_FCON, //Connected!
FAXST_SEND_WAIT_FCSI, //waiting for FCSI
FAXST_SEND_FCSI, //Receiver's ID string
FAXST_SEND_WAIT_FDIS, //waiting for remote +FDIS
FAXST_SEND_FDIS, //Remote T.30 parameters
FAXST_SEND_WAIT_CONNECT, //wait for connect
FAXST_SEND_FDCS, //negotiated T.30 parms
FAXST_SENDING, //actually sending data - no longer in command mode
FAXST_PAGE_END, //end of page
FAXST_PORTSHUT, //comm port deleted
FAXST_ABORT, //abort the current FAX operation and reset faxmodem
FAXST_COMPLETE, //we're done, and can dismantle our faxing apparatus
// Receiving fax states
FAXST_INITRX, //initialize faxmodem for receive
FAXST_WAITFORRX, //waiting for RING
FAXST_ANSWERING, //answering the phone
FAXST_RX_NEGOTIATE, //negotiating RX parms
FAXST_RXDATA, //receiving fax data
FAXST_RX_PAGE_END, //end of rx page
} FAXSTATE;
// FAXERROR is a list of error codes possible in FAXST_ERROR state
typedef enum {
FAXERR_OK,
FAXERR_ACK, // Command wasn't acknowledged w/OK
FAXERR_BADFAXMODEM, // Faxmodem doesn't support FaxModem-level ops
FAXERR_INIT, // error initializing faxmodem
FAXERR_FDIS, // bad FDIS settings
FAXERR_FLID, // some kind of error setting local ID
FAXERR_DIAL, // error dialing
FAXERR_FCON_ERR, // error trying to connect to remote fax
FAXERR_FCSI, // bad FCSI string
FAXERR_NEG_FDIS, // error receiving Negotiated +FDIS
FAXERR_BADSTATE, // tried to do something at wrong time
FAXERR_BUSY, // line is busy
FAXERR_NODIALTONE, // no dialtone found when dialing
FAXERR_NOCONNECT, // didn't get expected CONNECT msg
FAXERR_CANCEL, // user cancel
FAXERR_FPTS, // bad or no FPTS when expected
FAXERR_FHNG, // bad FHNG exit code or no FHNG when expected
FAXERR_FDCS, // +FDCS: not found when expected
FAXERR_ERROR, // general unspecific error w/faxmodem
FAXERR_FILE, // invalid fax file or files specified
FAXERR_VERSION, // incompatible DLL/Server versions
FAXERR_TIMEOUT, // Timeout during fax send/recv
FAXERR_NO_MPS_RESP, // Sent MPS 3 times w/o response
FAXERR_NO_EOP_RESP, // Sent EOP 3 times w/o response
FAXERR_NOTRAIN, // Unable to train with remote system
FAXERR_PORTINIT, // Error Opening/Initializing Port
} FAXERROR;
typedef struct tagSendFaxStruct {
// FaxMan uses these first 3 items for security
// Don't change them unless you know what to do with 'em
char sentinel[4]; //should be 'FMAN'
WORD wStructRev; //revision # of structure
WORD wStructSize; //size of structure, including variable strings
LPSTR szDestName; //who the fax is to
LPSTR szDestFax; //destination fax phone number
LPSTR szSubject; //what the fax is about
LPSTR szFromLine; //who the fax is from
LPSTR szBanner; //defines the banner line for this fax
LPSTR szCover; //file containing cover page
LPSTR szComments; //String containing fax comments
LPSTR szFromCompany; //company of the person sending the fax
LPSTR szToCompany; //company of the fax recipient
LPSTR szFromFax; //fax number of the sending fax
LPSTR szFromPhone; //phone number to contact fax sender at
LPSTR szUserDefined; //client-specific string
char szLocalID[FAXIDLEN]; //Fax ID of sending station ***LocalID***
SHORT nTimeout; //Timeout val
SHORT nRetries; //# of retries
SHORT nRetryDelay; //seconds before a retry
SHORT nYear; //year to send (1970-2038)
SHORT nMonth; //month to send (1-12)
SHORT nDay; //Day to send
SHORT nHour; //hour to send (0-23)
SHORT nMin; //minute to send (0-59)
SHORT nSecond; //second to send (0-59)
SHORT nSendRes; //requested resolution to send fax - 0=low, 1=high
LPSTR szFileList; //list of files to fax
// items below here are filled in by FaxMan - clients shouldn't change them.
WORD hWndNotify; //notification window
char szAppName[APPNAMESIZE]; //name of app that sent the fax
char szRemoteID[FAXIDLEN]; //String ID of the fax we're connected to
DWORD dwSpeed; //Connect speed
SHORT nFaxRes; //Fax resolution (0 = LOW, 1 = HIGH)
SHORT nTotPages; //# of pages in this fax (total)
SHORT nTotCurPage; //current page (total)
SHORT nCurPages; //# of pages in current file (faxfile)
SHORT nCurPage; //currently sending page in current file
SHORT nPagesSent; //actual # of pages sent (may be different from nTotPages)
SHORT nPercent; //percent complete on current page
DWORD dwID; //FaxMan Generated "handle" to this fax
SHORT nHangCode; //+FHNG result (it's int 'cause it's initialized to -1)
SHORT nPort; //comm port
SHORT nRetryCnt; //actual # of retries attempted by server
SHORT nSendYear; // time of actual transmission
SHORT nSendMonth; //
SHORT nSendDay; //
SHORT nSendHour; //
SHORT nSendMin; //
SHORT nSendSecond; //
DWORD dwDuration; //duration of send event
FAXCLASS faxclass; //type of faxmodem we're dealin' with
WORD wLog; //current log this fax is in
FAXSTATE fs; //current fax state (dialing, waiting, connected, etc...)
FAXERROR fe; //current fax error state (if applicable)
char szStrs[1]; //strings
} SEND_FAX, FAR *PSEND_FAX;
typedef struct tagAppInfo {
DWORD sentinel;
char AppName[APPNAMESIZE];
WORD wndNotify; //notification window
WORD wIterator; //iterator value
WORD wDevIterator; //device iterator
WORD fSubscribe; //subscribe flags
} APPINFO, FAR *PAPPINFO;
typedef enum {
PRN_OK, //printing completed OK
PRN_ABORT, //aborted by user
PRN_DISKFULL, //full disk error
PRN_ERROR, //undefined error
} PRN_STATUS;
typedef struct tagPrintStat {
WORD nPages; //# of pages printed
char FileName[MAXPATH]; //Name of file created by driver
PRN_STATUS pStat; //status of print job
} PRINTSTAT, FAR *PPRINTSTAT;
#define PORT_SEND 0x01
#define PORT_RX 0x02
#define PORT_SENDING 0x04
#define PORT_RECEIVING 0x08
#define PORT_CLS1 0x10
#define PORT_CLS2 0x20
#define PORT_CLS20 0x40
#define PORT_BLOCKED 0x80 //some kind of error on this port...
#define PORT_BUSY (PORT_RECEIVING | PORT_SENDING)
#define MAXCOMMSTRLEN 128
typedef struct tagDevice {
int nPort; //comm port this device is on
WORD wFlags; //tells a little about the port...
char szInit[MAXCOMMSTRLEN]; //init string for this device
char szReset[MAXCOMMSTRLEN]; //reset string for this device
} FAXDEVICE, FAR *PFAXDEVICE;
// Subscription identifier flags
//
#define SUBSCRIBE_LOG_PENDING 0x01 // lParam == PSEND_FAX
#define SUBSCRIBE_LOG_SENDING 0x02 //
#define SUBSCRIBE_LOG_COMPLETE 0x04
#define SUBSCRIBE_LOG_FAILED 0x08
#define SUBSCRIBE_LOG_RECEIVE 0x10
#define SUBSCRIBE_LOG_ALL 0x1f
//faxmodem initialization/configuration messages
#define SUBSCRIBE_FAX_CONFIG 0x20 // lParam == PFAXDEVICE
//faxmodem state changes
#define SUBSCRIBE_FAXMODEM 0x40 // lParam == PFAXDEVICE
#define SUBSCRIBE_SERVER_CONFIG 0x80 // lParam = PSERVERCONFIG
typedef enum {
FAXINIT_INIT,
FAXINIT_TXCLASS,
FAXINIT_RXCLASS,
FAXINIT_DONE,
FAXINIT_ERROPEN, //unable to open the comm port
FAXINIT_ERRNOPORTS, //no ports were found!
FAXINIT_ERRTIMEOUT, //timeout waiting for response from modem
} FAXINIT_STEP;
typedef struct tagFAX_INIT {
FAXINIT_STEP fStep; //init step we're currently on
WORD nPort; //faxmodem port we're initializing
FAXCLASS fClass; //faxmodem class
} FAX_INIT, FAR *PFAX_INIT;
typedef struct tagSERVER_CONFIG {
LPSTR lpKey;
LPSTR lpValue;
} SERVER_CONFIG, FAR *PSERVER_CONFIG;
#ifdef __cplusplus
extern "C" {
#endif
// FaxLog interface - these function are called by client apps
PAPPINFO EXPORT_WINAPI FaxRegisterApp(LPCSTR lpAppName, WORD AppNotifyWnd);
BOOL EXPORT_WINAPI FaxUnregisterApp(PAPPINFO);
BOOL EXPORT_WINAPI FaxCloseServer(PAPPINFO);
void EXPORT_WINAPI FaxInitSendStruct(PAPPINFO, PSEND_FAX);
DWORD EXPORT_WINAPI FaxSchedule(PAPPINFO, PSEND_FAX); //returns dwID
BOOL EXPORT_WINAPI FaxCancel(PAPPINFO, DWORD);
int EXPORT_WINAPI FaxEnumDevices(PAPPINFO);
int EXPORT_WINAPI FaxAddDevice(PAPPINFO, int);
int EXPORT_WINAPI FaxRemoveDevice(PAPPINFO, int);
int EXPORT_WINAPI FaxConfigureDevice(PAPPINFO, PFAXDEVICE);
WORD EXPORT_WINAPI FaxLogFind(PAPPINFO, PSEND_FAX FAR *, DWORD); //find an item in the log
WORD EXPORT_WINAPI FaxLogInit(PAPPINFO, WORD); //initialize log iteration
WORD EXPORT_WINAPI FaxLogNext(PAPPINFO, PSEND_FAX); //find next item in log
WORD EXPORT_WINAPI FaxLogDelete(PAPPINFO, DWORD, WORD); //delete fax w/dwID
WORD EXPORT_WINAPI FaxSetConfig(PAPPINFO, LPCSTR, LPCSTR);
WORD EXPORT_WINAPI FaxGetConfig(PAPPINFO, LPCSTR, LPSTR, WORD nLen);
int EXPORT_WINAPI FaxSubscribe(PAPPINFO, WORD); //subscribe to specified fax events
PSEND_FAX EXPORT_WINAPI FaxCopy(PSEND_FAX);
WORD EXPORT_WINAPI FaxCreate(PAPPINFO, LPCSTR, LPCSTR, DWORD);
#ifdef __cplusplus
}
#endif