modem.h 2.5 KB

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