/[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.7 by chupa, Tue Nov 26 01:22:31 2002 UTC revision 1.8 by chupa, Sun Dec 1 01:19:07 2002 UTC
# Line 32  Line 32 
32  #include <termios.h>  #include <termios.h>
33  #include <unistd.h>  #include <unistd.h>
34    
35    #include "gettext.h"
36  #include "log.h"  #include "log.h"
37  #include "modem/modem.h"  #include "modem/modem.h"
38  #include "modem/devlock.h"  #include "modem/devlock.h"
# Line 154  struct termios t, old_t; Line 155  struct termios t, old_t;
155  int  int
156  modem_connect ()  modem_connect ()
157  {  {
158      
159    if (!modem_open    if (!modem_open
160        (PARAM_MODEM_DEVICE, PARAM_MODEM_LINE_SPEED, PARAM_MODEM_RTSCTS))        (PARAM_MODEM_DEVICE, PARAM_MODEM_LINE_SPEED, PARAM_MODEM_RTSCTS))
161      return 0;      return 0;
162    log (LOG_NOTICE, "Using %s device...\n", PARAM_MODEM_DEVICE);    log (LOG_NOTICE, gettext ("Using %s device...\n"), PARAM_MODEM_DEVICE);
163    debug (1, "Device %s opened\n", PARAM_MODEM_DEVICE);    debug (1, "Device %s opened\n", PARAM_MODEM_DEVICE);
164    
165    if (!modem_init ())    if (!modem_init ())
# Line 167  modem_connect () Line 168  modem_connect ()
168    if (!modem_dial ())    if (!modem_dial ())
169      return 0;      return 0;
170    
171    log (LOG_NOTICE, "Executing chat script (%s)...\n", PARAM_MODEM_CHAT_SCRIPT);    log (LOG_NOTICE, gettext ("Executing chat script (%s)...\n"),
172    switch(chat_connect())         PARAM_MODEM_CHAT_SCRIPT);
173      {    switch (chat_connect ())
174        {
175      case 1:      case 1:
176        log (LOG_NOTICE, "Chat success, connected...\n");        log (LOG_NOTICE, gettext ("Chat success, connected...\n"));
177        tcflush (fd, TCIOFLUSH);        tcflush (fd, TCIOFLUSH);
178        return 1;        return 1;
179      case 0:      case 0:
180        log (LOG_WARNING, "Chat failure, you're not connected...\n");        log (LOG_WARNING, gettext ("Chat failure, you're not connected...\n"));
181        tcflush (fd, TCIOFLUSH);        tcflush (fd, TCIOFLUSH);
182        break;        break;
183      default:      default:
184        log (LOG_ERR, "Chat return a non boolean value.\n");        log (LOG_ERR, gettext ("Chat return a non boolean value.\n"));
185        log (LOG_ERR, "Please verify your chat script.\n");              log (LOG_ERR, gettext ("Please verify your chat script.\n"));
186        tcflush (fd, TCIOFLUSH);        tcflush (fd, TCIOFLUSH);
187        return 0;        return 0;
188      }      }
# Line 200  modem_init () Line 202  modem_init ()
202        !modem_send_init_string (PARAM_MODEM_INITSTR (8)) ||        !modem_send_init_string (PARAM_MODEM_INITSTR (8)) ||
203        !modem_send_init_string (PARAM_MODEM_INITSTR (9)))        !modem_send_init_string (PARAM_MODEM_INITSTR (9)))
204      {      {
205        log (LOG_ERR,"Unable to initialize the modem\n");        log (LOG_ERR, gettext ("Unable to initialize the modem\n"));
206        return 0;        return 0;
207      }      }
208    
# Line 238  modem_dial () Line 240  modem_dial ()
240  {  {
241    int i;    int i;
242    
243    log (LOG_NOTICE, "Dialing provider...\n");    log (LOG_NOTICE, gettext ("Dialing provider...\n"));
244    for (i = 0; i < PARAM_MODEM_DIAL_RETRY; i++)    for (i = 0; i < PARAM_MODEM_DIAL_RETRY; i++)
245      if (modem_dial_to (PARAM_MODEM_PHONE (0)) ||      if (modem_dial_to (PARAM_MODEM_PHONE (0)) ||
246          modem_dial_to (PARAM_MODEM_PHONE (1)) ||          modem_dial_to (PARAM_MODEM_PHONE (1)) ||
# Line 249  modem_dial () Line 251  modem_dial ()
251        break;        break;
252    if (i >= PARAM_MODEM_DIAL_RETRY)    if (i >= PARAM_MODEM_DIAL_RETRY)
253      {      {
254        log (LOG_ERR, "Too many failures, dialing process aborted.\n");        log (LOG_ERR, gettext ("Too many failures, dialing process aborted.\n"));
255        return 0;        return 0;
256      }      }
257    return 1;    return 1;
# Line 265  modem_dial_to (phone) Line 267  modem_dial_to (phone)
267    if (!phone)    if (!phone)
268      return 0;      return 0;
269    
270    log(LOG_INFO, "Dialing %s\n",phone);    log (LOG_INFO, gettext ("Dialing %s\n"), phone);
271    if (!PARAM_MODEM_DIAL_PREFIX)    if (!PARAM_MODEM_DIAL_PREFIX)
272      snprintf (dialcmd, sizeof (dialcmd), "%s%s", PARAM_MODEM_DIALSTR, phone);      snprintf (dialcmd, sizeof (dialcmd), "%s%s", PARAM_MODEM_DIALSTR, phone);
273    else    else
# Line 277  modem_dial_to (phone) Line 279  modem_dial_to (phone)
279    switch (modem_response_value (response))    switch (modem_response_value (response))
280      {      {
281      case RESPONSE_ERROR:       /* ERROR */      case RESPONSE_ERROR:       /* ERROR */
282        log (LOG_ERR, "Bad string\n"        log (LOG_ERR, gettext ("Bad string\n"
283             "Please verify the phone number, dial string and prefix\n");             "Please verify the phone number, dial string and prefix\n"));
284        return 0;        return 0;
285        break;        break;
286    
# Line 287  modem_dial_to (phone) Line 289  modem_dial_to (phone)
289        break;        break;
290    
291      case RESPONSE_NO_CARRIER:  /* NO CARRIER */      case RESPONSE_NO_CARRIER:  /* NO CARRIER */
292        log (LOG_WARNING, "No carrier detected\n");        log (LOG_WARNING, gettext ("No carrier detected\n"));
293        return 0;        return 0;
294        break;        break;
295    
296      case RESPONSE_NO_DIALTONE: /* NO DIALTONE */      case RESPONSE_NO_DIALTONE: /* NO DIALTONE */
297        log (LOG_WARNING, "No dial tone detected\n");        log (LOG_WARNING, gettext ("No dial tone detected\n"));
298        return 0;        return 0;
299        break;        break;
300    
301      case RESPONSE_BUSY:        /* BUSY */      case RESPONSE_BUSY:        /* BUSY */
302        log (LOG_WARNING, "Provider is busy\n");        log (LOG_WARNING, gettext ("Provider is busy\n"));
303        return 0;        return 0;
304        break;        break;
305    
306      case RESPONSE_DELAYED:     /* DELAYED */      case RESPONSE_DELAYED:     /* DELAYED */
307        log (LOG_WARNING, "Response delayed\n");        log (LOG_WARNING, gettext ("Response delayed\n"));
308        return 0;        return 0;
309        break;        break;
310    
311      case RESPONSE_VOICE:       /* VOICE */      case RESPONSE_VOICE:       /* VOICE */
312        log (LOG_WARNING, "Response voice\n");        log (LOG_WARNING, gettext ("Response voice\n"));
313        return 0;        return 0;
314        break;        break;
315    
316      case RESPONSE_FAX:         /* FCLASS */      case RESPONSE_FAX:         /* FCLASS */
317        log (LOG_WARNING, "You have been connected to a fax\n"        log (LOG_WARNING, gettext ("You have been connected to a fax\n"
318             "Please verify the phone number\n");             "Please verify the phone number\n"));
319        return 0;        return 0;
320        break;        break;
321    
322      case RESPONSE_NO_ANSWER:   /* NO ANSWER */      case RESPONSE_NO_ANSWER:   /* NO ANSWER */
323        log (LOG_WARNING, "There was no answer\n");        log (LOG_WARNING, gettext ("There was no answer\n"));
324        return 0;        return 0;
325        break;        break;
326    
# Line 326  modem_dial_to (phone) Line 328  modem_dial_to (phone)
328        break;        break;
329    
330      default:                   /* TIMEOUT */      default:                   /* TIMEOUT */
331        log (LOG_WARNING, "Modem timed out during dialing\n");        log (LOG_WARNING, gettext ("Modem timed out during dialing\n"));
332        return 0;        return 0;
333      }      }
334    return 0;    return 0;
# Line 343  modem_open (filename, _baud, rtscts) Line 345  modem_open (filename, _baud, rtscts)
345    
346    if (!device_lock (filename))    if (!device_lock (filename))
347      {      {
348        log (LOG_ERR, "Device %s is locked\n", filename);        log (LOG_ERR, gettext ("Device %s is locked\n"), filename);
349        return 0;        return 0;
350      }      }
351    
# Line 388  setup_modem (rtscts) Line 390  setup_modem (rtscts)
390      {      {
391        for (i = 0; i < 5; i++)        for (i = 0; i < 5; i++)
392          {          {
393            modem_sync_write ( "\r", 1);            modem_sync_write ("\r", 1);
394            usleep (10 * 1000);            usleep (10 * 1000);
395          }          }
396        tcdrain (fd);        tcdrain (fd);
# Line 465  modem_hangup () Line 467  modem_hangup ()
467       we should only do this if we have received any response from the modem       we should only do this if we have received any response from the modem
468     */     */
469    tcdrain (fd);    tcdrain (fd);
470    modem_sync_write ( "\r", 1);    modem_sync_write ("\r", 1);
471    for (i = 0; !modem_data_ready (200) && i < 10; i++)    for (i = 0; !modem_data_ready (200) && i < 10; i++)
472      modem_sync_write ( "\r", 1);      modem_sync_write ("\r", 1);
473    tcdrain (fd);    tcdrain (fd);
474    
475    /* drop DTR for a while, if still online */    /* drop DTR for a while, if still online */
# Line 485  modem_hangup () Line 487  modem_hangup ()
487    if (modem_carrier ())    if (modem_carrier ())
488      {      {
489        /* need to do +++ manual-disconnect stuff */        /* need to do +++ manual-disconnect stuff */
490        modem_sync_write ( "+++", 3);  /* command line mode */        modem_sync_write ("+++", 3);      /* command line mode */
491        usleep (1500 * 1000);        usleep (1500 * 1000);
492        modem_sync_write ( "ATH\r", 4);        /* hang-up command */        modem_sync_write ("ATH\r", 4);    /* hang-up command */
493    
494        for (i = 0; modem_carrier () && i < 5; i++)        for (i = 0; modem_carrier () && i < 5; i++)
495          usleep (100 * 1000);          usleep (100 * 1000);
# Line 594  modem_send_command (command, timeout, re Line 596  modem_send_command (command, timeout, re
596  {  {
597    debug (2, "Sending: %s\n", command);    debug (2, "Sending: %s\n", command);
598    
599    modem_sync_write ( command, strlen (command));    modem_sync_write (command, strlen (command));
600    modem_sync_write ( "\r", 1);    modem_sync_write ("\r", 1);
601    
602    /* Get the response from the modem with/without echo enabled */    /* Get the response from the modem with/without echo enabled */
603    if (!modem_readline (response, timeout, size))    if (!modem_readline (response, timeout, size))
# Line 696  modem_readline (response, timeout, size) Line 698  modem_readline (response, timeout, size)
698    
699  /* Simulate a synchronous write */  /* Simulate a synchronous write */
700  int  int
701  modem_sync_write ( string, size)  modem_sync_write (string, size)
702       char *string;       char *string;
703       size_t size;       size_t size;
704  {  {
# Line 732  modem_sync_write ( string, size) Line 734  modem_sync_write ( string, size)
734  }  }
735    
736  int  int
737  modem_valid_speed(speed)  modem_valid_speed (speed)
738       int speed;       int speed;
739  {  {
740    int i;    int i;
741    for(i=0; i<sizeof(speeds); i++)    for (i = 0; i < sizeof (speeds); i++)
742      if(speed==speeds[i].baud) return 1;      if (speed == speeds[i].baud)
743          return 1;
744    return 0;    return 0;
745  }  }
746    
747  int  int
748  modem_readc ( c )  modem_readc (c)
749       char *c;       char *c;
750  {  {
751    return read(fd , c, 1);    return read (fd, c, 1);
752  }  }

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

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