summaryrefslogtreecommitdiff
path: root/sys/src/cmd/fax/modem.h
diff options
context:
space:
mode:
authorTaru Karttunen <taruti@taruti.net>2011-03-30 15:46:40 +0300
committerTaru Karttunen <taruti@taruti.net>2011-03-30 15:46:40 +0300
commite5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch)
treed8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/cmd/fax/modem.h
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/cmd/fax/modem.h')
-rwxr-xr-xsys/src/cmd/fax/modem.h107
1 files changed, 107 insertions, 0 deletions
diff --git a/sys/src/cmd/fax/modem.h b/sys/src/cmd/fax/modem.h
new file mode 100755
index 000000000..2b5ca17ff
--- /dev/null
+++ b/sys/src/cmd/fax/modem.h
@@ -0,0 +1,107 @@
+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;