typedef struct {
char *t;
int fd;
int cfd;
char *id;
char response[128];
char error[128];
int fax;
char phase;
char ftsi[128]; /* remote ID */
long fdcs[8]; /* frame information */
long fpts[8]; /* page reception response */
long fet; /* post page message */
long fhng; /* call termination status */
int pageno; /* current page number */
char pageid[128]; /* current page file */
int pagefd; /* current page fd */
int valid; /* valid page responses */
long time; /* timestamp */
int pid;
char ibuf[1024]; /* modem input buffering */
char *iptr;
long icount;
Biobuf *bp; /* file input buffering */
/* FDCS parameters */
long wd; /* width */
long vr; /* resolution */
long ln; /* page size (length) */
long df; /* huffman encoding */
} Modem;
enum { /* ResultCodes */
Rok = 0,
Rconnect,
Rring,
Rfailure,
Rrerror,
Rcontinue,
Rhangup,
Rnoise,
};
enum { /* ErrorCodes */
Eok = 0, /* no error */
Eattn, /* can't get modem's attention */
Enoresponse, /* no response from modem */
Enoanswer, /* no answer from other side */
Enofax, /* other side isn't a fax machine */
Eincompatible, /* transmission incompatible with receiver */
Esys, /* system call error */
Eproto, /* fax protocol botch */
};
enum { /* things that are valid */
Vfdcs = 0x0001, /* page responses */
Vftsi = 0x0002,
Vfpts = 0x0004,
Vfet = 0x0008,
Vfhng = 0x0010,
Vwd = 0x4000,
Vtype = 0x8000,
};
/* fax2modem.c */
extern int initfaxmodem(Modem*);
extern int fcon(Modem*);
extern int ftsi(Modem*);
extern int fdcs(Modem*);
extern int fcfr(Modem*);
extern int fpts(Modem*);
extern int fet(Modem*);
extern int fhng(Modem*);
/* fax2receive.c */
extern int faxreceive(Modem*, char*);
/* fax2send.c */
extern int faxsend(Modem*, int, char*[]);
/* modem.c */
extern int setflow(Modem*, int);
extern int setspeed(Modem*, int);
extern int rawmchar(Modem*, char*);
extern int getmchar(Modem*, char*, long);
extern int putmchar(Modem*, char*);
extern int command(Modem*, char*);
extern int response(Modem*, int);
extern void initmodem(Modem*, int, int, char*, char*);
extern void xonoff(Modem*, int);
/* spool.c */
extern void setpageid(char*, char*, long, int, int);
extern int createfaxfile(Modem*, char*);
extern int openfaxfile(Modem*, char*);
/* subr.c */
extern void verbose(char*, ...);
extern void error(char*, ...);
extern int seterror(Modem*, int);
extern void faxrlog(Modem*, int);
extern void faxxlog(Modem*, int);
extern int vflag;
|