123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- #include <u.h>
- #include <libc.h>
- #include <bio.h>
- #include "modem.h"
- int
- initfaxmodem(Modem *m)
- {
- m->fax = 1;
- m->phase = 'A';
- m->valid = 0;
- return Eok;
- }
- static int
- parameters(long a[], char *s)
- {
- char *p;
- int i;
- i = 0;
- if((p = strchr(s, ':')) == 0)
- return 0;
- p++;
- while(s = strchr(p, ',')){
- a[i++] = strtol(p, 0, 10);
- p = s+1;
- }
- if(p)
- a[i++] = strtol(p, 0, 10);
- return i;
- }
- int
- fcon(Modem *m)
- {
- verbose("fcon: %s", m->response);
- if(m->fax == 0 || m->phase != 'A')
- return Rrerror;
- m->phase = 'B';
- return Rcontinue;
- }
- int
- ftsi(Modem *m)
- {
- char *p, *q;
- verbose("ftsi: %s", m->response);
- if((p = strchr(m->response, '"')) == 0 || (q = strrchr(p+1, '"')) == 0)
- return Rrerror;
- while(*++p == ' ')
- ;
- *q = 0;
- if((m->valid & Vftsi) == 0){
- strncpy(m->ftsi, p, sizeof(m->ftsi)-1);
- m->valid |= Vftsi;
- }
- return Rcontinue;
- }
- int
- fdcs(Modem *m)
- {
- verbose("fdcs: %s", m->response);
- parameters(m->fdcs, m->response);
- m->valid |= Vfdcs;
- return Rcontinue;
- }
- int
- fcfr(Modem *m)
- {
- verbose("fcfr: %s", m->response);
- if(m->fax == 0)
- return Rrerror;
- /* ???? */
- return Rcontinue;
- }
- int
- fpts(Modem *m)
- {
- verbose("fpts: %s", m->response);
- if(m->fax == 0)
- return Rrerror;
- parameters(m->fpts, m->response);
- m->valid |= Vfpts;
- return Rcontinue;
- }
- int
- fet(Modem *m)
- {
- char *p;
- verbose("fet: %s", m->response);
- if(m->fax == 0 || (p = strchr(m->response, ':')) == 0)
- return Rrerror;
- m->fet = strtol(p+1, 0, 10);
- m->valid |= Vfet;
- return Rcontinue;
- }
- int
- fhng(Modem *m)
- {
- char *p;
- verbose("fhng: %s", m->response);
- if(m->fax == 0 || (p = strchr(m->response, ':')) == 0)
- return Rrerror;
- m->fhng = strtol(p+1, 0, 10);
- m->valid |= Vfhng;
- return Rhangup;
- }
|