/[pengfork]/pengfork/src/modem/modem.c
ViewVC logotype

Diff of /pengfork/src/modem/modem.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.13 by chupa, Sat Dec 7 14:01:25 2002 UTC revision 1.14 by chupa, Fri Dec 13 15:29:15 2002 UTC
# Line 70  Line 70 
70  #include "modem/modem.h"  #include "modem/modem.h"
71  #include "modem/devlock.h"  #include "modem/devlock.h"
72  #include "modem/script.h"  #include "modem/script.h"
73    #include "modem/phonetab.h"
74  #include "options.h"  #include "options.h"
75  #include "utils.h"  #include "utils.h"
76  #include "access.h"  #include "access.h"
# Line 195  modem_connect () Line 196  modem_connect ()
196    log (LOG_NOTICE, gettext ("Using %s device...\n"), PARAM_MODEM_DEVICE);    log (LOG_NOTICE, gettext ("Using %s device...\n"), PARAM_MODEM_DEVICE);
197    debug (1, "Device %s opened\n", PARAM_MODEM_DEVICE);    debug (1, "Device %s opened\n", PARAM_MODEM_DEVICE);
198    
   if (!modem_init ())  
     return 0;  
   
199    if (!modem_dial ())    if (!modem_dial ())
200      return 0;      return 0;
201    
202    log (LOG_NOTICE, gettext ("Executing chat script (%s)...\n"),    return 1;
        PARAM_MODEM_CHAT_SCRIPT);  
   switch (chat_connect ())  
     {  
     case 1:  
       log (LOG_NOTICE, gettext ("Chat success, connected...\n"));  
       tcflush (fd, TCIOFLUSH);  
       return 1;  
     case 0:  
       log (LOG_WARNING, gettext ("Chat failure, you're not connected...\n"));  
       tcflush (fd, TCIOFLUSH);  
       break;  
     default:  
       log (LOG_ERR, gettext ("Chat return a non boolean value.\n"));  
       log (LOG_ERR, gettext ("Please verify your chat script.\n"));  
       tcflush (fd, TCIOFLUSH);  
       return 0;  
     }  
   return 0;  
203  }  }
204    
205  int  int
# Line 271  modem_send_init_string (string) Line 251  modem_send_init_string (string)
251  int  int
252  modem_dial ()  modem_dial ()
253  {  {
254    int i;    int i, j;
255      int connected = 0;
256      char script_file[1024];
257    
258    log (LOG_NOTICE, gettext ("Dialing provider...\n"));    log (LOG_NOTICE, gettext ("Dialing provider...\n"));
259    for (i = 0; i < PARAM_MODEM_DIAL_RETRY; i++)    if(!get_phonetab())
260      if (modem_dial_to (PARAM_MODEM_PHONE (0)) ||      return 0;
261          modem_dial_to (PARAM_MODEM_PHONE (1)) ||    for (i = 0; !connected && i < PARAM_MODEM_DIAL_RETRY; i++)
262          modem_dial_to (PARAM_MODEM_PHONE (2)) ||      {
263          modem_dial_to (PARAM_MODEM_PHONE (3)) ||        for(j=0; phonetab[j].phone; j++)
264          modem_dial_to (PARAM_MODEM_PHONE (4)) ||          if(modem_dial_to (phonetab[j].phone))
265          modem_dial_to (PARAM_MODEM_PHONE (5)))          {
266        break;            snprintf(script_file, sizeof(script_file),"%s/%s.scm",
267    if (i >= PARAM_MODEM_DIAL_RETRY)                   PARAM_MODEM_CHAT_PATH,
268                     phonetab[j].script? phonetab[j].script : DEFAULT_CHAT_FILE);
269              if(modem_exec_script(script_file))
270                connected = 1;
271            }
272        }
273      if(connected)
274        free_phonetab ();
275      if(!connected)
276      {      {
277        if(status!=sexit)        if(status!=sexit)
278          log (LOG_ERR, gettext ("Too many failures, dialing process aborted.\n"));          log (LOG_ERR, gettext ("Too many failures, dialing process aborted.\n"));
# Line 302  modem_dial_to (phone) Line 292  modem_dial_to (phone)
292    if (!phone || status == sexit)    if (!phone || status == sexit)
293      return 0;      return 0;
294    
295      if (!modem_init ())
296        return 0;
297    
298    log (LOG_INFO, gettext ("Dialing %s\n"), phone);    log (LOG_INFO, gettext ("Dialing %s\n"), phone);
299    if (!PARAM_MODEM_DIAL_PREFIX)    if (!PARAM_MODEM_DIAL_PREFIX)
300      snprintf (dialcmd, sizeof (dialcmd), "%s%s", PARAM_MODEM_DIALSTR, phone);      snprintf (dialcmd, sizeof (dialcmd), "%s%s", PARAM_MODEM_DIALSTR, phone);
# Line 315  modem_dial_to (phone) Line 308  modem_dial_to (phone)
308      {      {
309      case RESPONSE_ERROR:       /* ERROR */      case RESPONSE_ERROR:       /* ERROR */
310        log (LOG_ERR, gettext ("Bad string\n"        log (LOG_ERR, gettext ("Bad string\n"
311             "Please verify the phone number, dial string and prefix\n"));                           "Please verify the phone number, dial string and prefix\n"));
312        return 0;        return 0;
313        break;        break;
314    
# Line 359  modem_dial_to (phone) Line 352  modem_dial_to (phone)
352    
353      case RESPONSE_FAX:         /* FCLASS */      case RESPONSE_FAX:         /* FCLASS */
354        log (LOG_WARNING, gettext ("You have been connected to a fax\n"        log (LOG_WARNING, gettext ("You have been connected to a fax\n"
355             "Please verify the phone number\n"));                             "Please verify the phone number\n"));
356        return 0;        return 0;
357        break;        break;
358    
# Line 379  modem_dial_to (phone) Line 372  modem_dial_to (phone)
372  }  }
373    
374  int  int
375    modem_exec_script (filename)
376         char *filename;
377    {
378      log (LOG_NOTICE, gettext ("Executing chat script (%s)...\n"),filename);
379      switch (chat_connect (filename))
380        {
381        case 1:
382          log (LOG_NOTICE, gettext ("Chat success, connected...\n"));
383          tcflush (fd, TCIOFLUSH);
384          return 1;
385        case 0:
386          log (LOG_WARNING, gettext ("Chat failure, you're not connected...\n"));
387          tcflush (fd, TCIOFLUSH);
388          break;
389        default:
390          log (LOG_ERR, gettext ("Chat returned a non boolean value.\n"
391                             "Please verify your chat script.\n"));
392          tcflush (fd, TCIOFLUSH);
393          return 0;
394        }
395      return 0;
396    }
397    
398    int
399  modem_open (filename, _baud, rtscts)  modem_open (filename, _baud, rtscts)
400       char *filename;       char *filename;
401       int _baud;       int _baud;
# Line 466  modem_setattr (rtscts) Line 483  modem_setattr (rtscts)
483  {  {
484    /* set up the terminal characteristics.    /* set up the terminal characteristics.
485       see "man tcsetattr" for more information about these options. */       see "man tcsetattr" for more information about these options. */
486    t.c_iflag &= ~(BRKINT | ISTRIP | IUCLC | IXON | IXANY | IXOFF | IMAXBEL);  
487      /* input flags */
488      t.c_iflag &= ~(BRKINT | ISTRIP | IXON | IXOFF);
489    #ifdef IUCLC
490      t.c_iflag &= ~IUCLC;
491    #endif
492    #ifdef IXANY
493      t.c_iflag &= ~IXANY;
494    #endif
495    #ifdef IMAXBEL
496      t.c_iflag &= ~IMAXBEL;
497    #endif
498    t.c_iflag |= (IGNBRK | IGNPAR);    t.c_iflag |= (IGNBRK | IGNPAR);
499    
500      /* output flags */
501    #ifdef OLCUC
502    t.c_oflag &= ~(OLCUC);    t.c_oflag &= ~(OLCUC);
503    #else
504      t.c_oflag = 0;
505    #endif
506    
507      /* control flags */
508    t.c_cflag &= ~(CSIZE | CSTOPB | PARENB | PARODD);    t.c_cflag &= ~(CSIZE | CSTOPB | PARENB | PARODD);
509    t.c_cflag |= (CS8 | CREAD | HUPCL | CLOCAL);    t.c_cflag |= (CS8 | CREAD | HUPCL | CLOCAL);
510    if (rtscts)    if (rtscts)
511      t.c_cflag |= CRTSCTS;      {
512    t.c_lflag &= ~(ISIG | XCASE | ECHO);  #ifdef CRTSCTS
513    # ifdef CCTS_OFLOW
514          t.c_cflag |= CCTS_OFLOW;
515    # else
516          t.c_cflag |= CRTSCTS;
517    # endif
518    #endif
519    #ifdef CRTS_IFLOW
520          t.c_cflag |= CRTS_IFLOW;
521    #endif
522        }
523    
524      /* local flags */
525      t.c_lflag &= ~(ISIG | ECHO);
526    #ifdef XCASE
527      t.c_lflag &= ~XCASE;
528    #endif
529    
530    tcsetattr (fd, TCSANOW, &t);    tcsetattr (fd, TCSANOW, &t);
531    

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26