Dropping call before beep on USR Sportster 33.6 voice

Marc Eberhard (marc@athene.thphy.uni-duesseldorf.de)
Fri, 13 Feb 1998 07:30:45 +0100


-----BEGIN PGP SIGNED MESSAGE-----

Hi!

Brian J. McGovern wrote:
> Ok. Here is the updated log at log level 9, as per your request, Gert. It 
> looks like (towards the end) that the voice modem isn't flushing an AT
> command, and vgetty is barfing on the AT in the queue.

Thanks for the log.

> 02/10 18:14:59 yd2 detecting voice modem type
> 02/10 18:14:59 yd2 vgetty: ATE0

You are using the new default with modem echo turned off, fine...

[...]
> 02/10 18:16:34 yd2 vgetty: ATE0#VTX

This is a special thing for USR modems. They echo playback data back
to the host, so we have to disable the command echo, which was
already turned off. But this causes no problems here.

> 02/10 18:16:34 yd2 US Robotics: CONNECT
> 02/10 18:16:47 yd2 vgetty: <VOICE DATA 28404 bytes>
> 02/10 18:16:47 yd2 vgetty: queued event RESET_WATCHDOG at position 0002
> 02/10 18:16:47 yd2 vgetty: <STOP PLAY>
> 02/10 18:16:47 yd2 voice command: '' -> 'OK|VCON'
> 02/10 18:16:47 yd2 US Robotics: VCON
> 02/10 18:16:49 yd2 vgetty: unqueued event RESET_WATCHDOG at position 0002
> 02/10 18:16:49 yd2 vgetty: voice_handle_event got event RESET_WATCHDOG with data <
> 02/10 18:16:49 yd2 voice command: '' -> 'OK|VCON'
> 02/10 18:16:49 yd2 US Robotics: OK
> 02/10 18:16:49 yd2 voice command: 'AT' -> 'OK'
> 02/10 18:16:49 yd2 vgetty: AT
> 02/10 18:16:49 yd2 US Robotics: AT
> 02/10 18:16:49 yd2 vgetty: Invalid modem answer: Undefined error: 0
> 02/10 18:16:49 yd2 US Robotics: OK

Look at this part of US_Robotics.c:

static int USR_stop_play_file(void)
  {
  int stop_playing = IS_101_stop_play_file();

  if (voice_write_raw("ATE1\r",5) != OK)
  return(FAIL);

  if ((voice_command("", "OK|VCON") & VMA_USER) != VMA_USER)
  return(FAIL);

  if (voice_command("AT", "OK") != VMA_USER_1)
  return(FAIL);

Here we reenable the command echo and that causes the problem,
because vgetty is set to not expect a command echo, so this is a
really nice bug... it should be this way:

  if (cvd.enable_command_echo.d.i) 
  {

  if (voice_write_raw("ATE1\r",5) != OK)
   return(FAIL);

  if ((voice_command("", "OK|VCON") & VMA_USER) != VMA_USER)
   return(FAIL);

  }

Fixed for the next release, thanks for the logs! The quick & dirty
hack around this is to enable command echo in your voice.conf.

Bye,
Marc
_______________________________________________________________________________
Email: Marc.Eberhard@Poseidon.ThPhy.Uni-Duesseldorf.DE
WWW: http://Poseidon.ThPhy.Uni-Duesseldorf.DE/~marc/
PGP: http://Poseidon.ThPhy.Uni-Duesseldorf.DE/~marc/Marc_PGP.key

-----BEGIN PGP SIGNATURE-----
Version: 2.6.3ia
Charset: noconv

iQCVAwUBNOPolDR1rYTfG0TdAQEucAQAi4W5OhBx3dw/SMObpMFA8EylpxgEhz7O
zLlKKJsIWPXIBwUD5MxH/AISNEh/wH7VR44zyF7tRjKBa9kNhh9NN+Upgh65JUcz
ggm6kgLYGyBN7SPc0iz9yP2ODNnkB1wqawUrWWZkZuw9alT2p+U63gO5yKSs2X7y
5xKkLmBsf84=
=NJ6J
-----END PGP SIGNATURE-----
.