]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/fax/modem.h
togif: -E flag to read animation from stdin
[plan9front.git] / sys / src / cmd / fax / modem.h
1 typedef struct {
2         char    *t;
3         int     fd;
4         int     cfd;
5         char    *id;
6         char    response[128];
7         char    error[128];
8
9         int     fax;
10         char    phase;
11         char    ftsi[128];              /* remote ID */
12         long    fdcs[8];                /* frame information */
13         long    fpts[8];                /* page reception response */
14         long    fet;                    /* post page message */
15         long    fhng;                   /* call termination status */
16         int     pageno;                 /* current page number */
17         char    pageid[128];            /* current page file */
18         int     pagefd;                 /* current page fd */
19         int     valid;                  /* valid page responses */
20         long    time;                   /* timestamp */
21         int     pid;
22
23         char    ibuf[1024];             /* modem input buffering */
24         char    *iptr;
25         long    icount;
26
27         Biobuf  *bp;                    /* file input buffering */
28
29         /* FDCS parameters */
30         long    wd;                     /* width */
31         long    vr;                     /* resolution */
32         long    ln;                     /* page size (length) */
33         long    df;                     /* huffman encoding */
34 } Modem;
35
36 enum {                                  /* ResultCodes */
37         Rok             = 0,
38         Rconnect,
39         Rring,
40         Rfailure,
41         Rrerror,
42         Rcontinue,
43         Rhangup,
44         Rnoise,
45 };
46
47 enum {                                  /* ErrorCodes */
48         Eok     = 0,    /* no error */
49         Eattn,          /* can't get modem's attention */
50         Enoresponse,    /* no response from modem */
51         Enoanswer,      /* no answer from other side */
52         Enofax,         /* other side isn't a fax machine */
53         Eincompatible,  /* transmission incompatible with receiver */
54         Esys,           /* system call error */
55         Eproto,         /* fax protocol botch */
56 };
57
58 enum {                                  /* things that are valid */
59         Vfdcs           = 0x0001,       /* page responses */
60         Vftsi           = 0x0002,
61         Vfpts           = 0x0004,
62         Vfet            = 0x0008,
63         Vfhng           = 0x0010,
64
65         Vwd             = 0x4000,
66         Vtype           = 0x8000,
67 };
68
69 /* fax2modem.c */
70 extern int initfaxmodem(Modem*);
71 extern int fcon(Modem*);
72 extern int ftsi(Modem*);
73 extern int fdcs(Modem*);
74 extern int fcfr(Modem*);
75 extern int fpts(Modem*);
76 extern int fet(Modem*);
77 extern int fhng(Modem*);
78
79 /* fax2receive.c */
80 extern int faxreceive(Modem*, char*);
81
82 /* fax2send.c */
83 extern int faxsend(Modem*, int, char*[]);
84
85 /* modem.c */
86 extern int setflow(Modem*, int);
87 extern int setspeed(Modem*, int);
88 extern int rawmchar(Modem*, char*);
89 extern int getmchar(Modem*, char*, long);
90 extern int putmchar(Modem*, char*);
91 extern int command(Modem*, char*);
92 extern int response(Modem*, int);
93 extern void initmodem(Modem*, int, int, char*, char*);
94 extern void xonoff(Modem*, int);
95
96 /* spool.c */
97 extern void setpageid(char*, char*, long, int, int);
98 extern int createfaxfile(Modem*, char*);
99 extern int openfaxfile(Modem*, char*);
100
101 /* subr.c */
102 extern void verbose(char*, ...);
103 extern void error(char*, ...);
104 extern int seterror(Modem*, int);
105 extern void faxrlog(Modem*, int);
106 extern void faxxlog(Modem*, int);
107 extern int vflag;