Exemple #1
0
static int Dr_Neuhaus_set_device (int device)
     {
     reset_watchdog();

     switch (device)
          {
          case NO_DEVICE:
               voice_command("AT+VLS=0", "OK");
               return(OK);
          case DIALUP_LINE:
               voice_command("AT+VLS=2", "OK");
               return(OK);
          case INTERNAL_SPEAKER:
               voice_command("AT+VLS=4", "OK");
               return(OK);
          case INTERNAL_MICROPHONE:
	       /* The Smarty has an INTERNAL_MICROPHONE.
		* -- Raoul Boenisch <*****@*****.**>
		*/
               voice_command("AT+VLS=14", "OK");
               return(OK);

          };

     lprintf(L_WARN, "%s: Unknown output device (%d)", voice_modem_name,
      device);
     return(FAIL);
     }
Exemple #2
0
int Cirrus_Logic_beep (int frequency, int length)
     {
     char buffer[VOICE_BUF_LEN];
     int watchdog_count = 0;

     reset_watchdog();
     sprintf(buffer, "AT#VBP");
     lprintf(L_MESG, "Checking Beep");

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

     while (!check_for_input(voice_fd))
          {
          
          if ((watchdog_count--) <= 0)
               {
               reset_watchdog();
               watchdog_count = cvd.watchdog_timeout.d.i * 1000 /
                cvd.poll_interval.d.i / 2;
               }

          delay(cvd.poll_interval.d.i);
          }

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

     return(OK);
     }
Exemple #3
0
static int Multitech_2834_set_device(int device)
     {
     reset_watchdog();

     switch (device)
          {
          case NO_DEVICE:
               voice_command("AT+VLS=0", "OK");
               return(OK);
          case LOCAL_HANDSET:
               voice_command("AT+VLS=2", "OK");
               return(OK);
          case DIALUP_LINE:
               voice_command("AT+VLS=1", "OK"); /* [email protected] */
               return(OK);
          case EXTERNAL_MICROPHONE:
               voice_command("AT+VLS=11", "OK");
               return(OK);
          case INTERNAL_SPEAKER:
               voice_command("AT+VLS=4", "OK");
               return(OK);
          };

     lprintf(L_WARN, "%s: Unknown output device (%d)", voice_modem_name,
      device);
     return(FAIL);
     }
Exemple #4
0
static int ZyXEL_2864_set_device (int device)
     {
     reset_watchdog();

     switch (device)
          {
          case NO_DEVICE:
               voice_command("AT+VLS=0", "OK");
               return(OK);
          case LOCAL_HANDSET:
               voice_command("AT+VLS=1", "OK");
               return(OK);
          case DIALUP_LINE:
          
               if (voice_command("AT+VLS=2", "OK|CONNECT*") == VMA_USER_2)
                    return(VMA_CONNECT);
                    
               return(OK);
          case EXTERNAL_MICROPHONE:
               voice_command("AT+VLS=8", "OK");
               return(OK);
          case INTERNAL_SPEAKER:
               voice_command("AT+VLS=16", "OK");
               return(OK);
          };

     lprintf(L_WARN, "%s: Unknown output device (%d)", voice_modem_name,
      device);
     return(FAIL);
     }
Exemple #5
0
static int Dolphin_set_device (int device)
{
    reset_watchdog();

    switch (device)
    {
    case NO_DEVICE:

        if (voice_write("AT+VLS=0") != OK)
            return(FAIL);

        if (voice_command("", "AT+VLS=0|OK") == VMA_USER_1)
            voice_command("", "OK");

        return(OK);
    case DIALUP_LINE:
        voice_command("AT+VLS=2", "VCON");
        return(OK);
    case INTERNAL_SPEAKER:
        voice_command("AT+VLS=16", "VCON");
        return(OK);
    };

    lprintf(L_WARN, "%s: Unknown output device (%d)", voice_modem_name,
            device);
    return(FAIL);
}
Exemple #6
0
static int Multitech_2834_voice_mode_on(void)
{
	char buffer[VOICE_BUF_LEN];

	if (voice_command(voice_modem->ask_mode_cmnd, "") != OK)
		return FAIL;

	do {
		if (voice_read(mode_save) != OK)
			return FAIL;
	} while (strlen(mode_save) == 0);

	if (strncmp(mode_save, "+FCLASS=", 8) == 0)
        	memmove(mode_save, mode_save + 8, strlen(mode_save) - 8 + 1);

	if ((voice_command("", voice_modem->ask_mode_answr) & VMA_USER) != VMA_USER)
		return FAIL;

	sprintf(buffer, "%s%s", voice_modem->switch_mode_cmnd,
		voice_modem->voice_mode_id);

	if ((voice_command(buffer, voice_modem->switch_mode_answr) & VMA_USER) !=
	    VMA_USER)
		return FAIL;

	Multitech_2834_fix_modem(0);

	return OK;
}
Exemple #7
0
static int Dolphin_init (void)
{
    char buffer[VOICE_BUF_LEN];

    reset_watchdog();
    voice_modem_state = INITIALIZING;
    lprintf(L_MESG, "initializing Dolphin voice modem");

    /*
     * AT+VNH=1 - Disable automatic hangup.
     */

    if (voice_command("AT+VNH=1", "OK") != VMA_USER_1)
        lprintf(L_WARN, "disabling automatic hangup didn't work");

    /*
     * AT+VSD=x,y - Set silence threshold and duration.
     */

    sprintf(buffer, "AT+VSD=%d,%d", (int)cvd.rec_silence_threshold.d.i * 31 / 100,
            (int)cvd.rec_silence_len.d.i);

    if (voice_command(buffer, "OK") != VMA_USER_1)
        lprintf(L_WARN, "setting recording preferences didn't work");

    voice_modem_state = IDLE;
    return(OK);
}
Exemple #8
0
int Cirrus_Logic_set_device (int device)
     {
     reset_watchdog();
     lprintf(L_MESG, "Setting device");

     switch (device)
          {
          case NO_DEVICE:
               voice_command("AT#VLN=0", "OK");
               return(OK);
          case DIALUP_LINE:
               voice_command("AT#VLN=1", "OK");
               return(OK);
          case EXTERNAL_MICROPHONE:
               voice_command("AT#VLN=32", "OK");
               return(OK);
          case INTERNAL_SPEAKER:
               voice_command("AT#VLN=16", "OK");
               return(OK);
          case LOCAL_HANDSET:
               voice_command("AT#VLN=2","OK");
               return(OK);
          }

     lprintf(L_WARN, "%s: Unknown output device (%d)", voice_modem_name,
      device);
     return(FAIL);
     }
int Multitech_5634ZPX_set_compression(p_int *compression, p_int *speed,
 int *bits)
     {
     char buffer[VOICE_BUF_LEN];

     reset_watchdog();

     if (*compression == 0)
          *compression = 132;

     if (*speed == 0)
          *speed = 8000;

     if (*speed != 8000)
          {
          lprintf(L_WARN, "%s: Illegal sample rate (%d)", voice_modem_name,
           (int)*speed);
          return(FAIL);
          }

     /*
        VSM=cml,vsr,scs,sel
	cml: 128-256 (compression method)
		128,"8-BIT LINEAR",(7200,8000,11025)
		129,"16-BIT LINEAR",(7200,8000,11025)
		130,"8-BIT ALAW",(8000)
		131,"8-BIT ULAW",(8000)
		132,"IMA ADPCM",(7200,8000,11025)
	vsr: (voice sample rate)
	scs: 0 (disabled), 1-n (how much noise is silence)
	sel: 0 (disabled), 1-n (.1 sec incr: silence expansion)
     */
     switch (*compression)
          {
          case 4:
               *bits = 4;
               sprintf(buffer, "AT+VSM=2,%d", (int)*speed);

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

               break;
          case 132:
               *bits = 4;
               sprintf(buffer, "AT+VSM=132,%d", (int)*speed);

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

               break;
          default:
               lprintf(L_WARN, "%s: Illegal voice compression method (%d)",
                voice_modem_name, (int)*compression);
               return(FAIL);
          }

     return(OK);
     }
Exemple #10
0
static int UMC_beep(int frequency, int length)
     {
#ifdef UMC_VTS_WORKAROUND
     /*
      * generate a beep with 900Hz
      * sorry: just a near miss.
      */

     TIO tio;
     char *sinewave="\x37\x8c\xc8\x73";
     int sinelen=4;
     int i;

     tio_get(voice_fd, &tio);
     tio_set_flow_control(voice_fd, &tio, FLOW_HARD);
     tio_set(voice_fd, &tio);

     voice_command("AT#VBS=4", "OK");
     voice_command("AT#VTX", "CONNECT");

     lprintf(L_JUNK, "%s->%s: sinewave", program_name, voice_modem_name);

     for (i=length; i>0; i--)
          {

          if (write(voice_fd,sinewave,sinelen) != sinelen)
               lprintf(L_WARN, "%s->%s: write error (errno 0x%x)",
                program_name, voice_modem_name, errno);

          }

     lprintf(L_JUNK, "%s->%s: <DLE> <ETX>", program_name, voice_modem_name);

     if (write(voice_fd, dletx , 2) != 2)
          lprintf(L_WARN, "%s->%s: write error (errno 0x%x)",
           program_name, voice_modem_name, errno);

     tio_set(voice_fd, &voice_tio);
     voice_command("", "VCON");
#else
     char buffer[VOICE_BUF_LEN];

     reset_watchdog();
     if (length > 4000 )
          lprintf(L_WARN, "%s->%s: Warning beeps longer than 4000 ms might not be supported.",
	   program_name, voice_modem_name);

     lprintf(L_JUNK, "%s->%s: Some UMC modems beep with fixed frequency. This is a not a software bug.",
      program_name, voice_modem_name);

     sprintf(buffer, "AT#VTS=[%d,0,%d]", frequency, length / 100);

     if (voice_command(buffer, "OK") != VMA_USER_1)
          return(FAIL);
#endif
     return(OK);
     }
static int
Multitech_5600ZDXv_set_compression (p_int *compression, p_int *speed, int *bits)
{
  char buf[VOICE_BUF_LEN];

  reset_watchdog();
  /*
   * Build the speed command and send it
   */
  switch (*speed) {
    case 0:
      *speed = 7200;
      /* FALL THROUGH */
    case 7200:
    case 11025:
      break;

    default:
      lprintf(L_WARN, "%s: Illegal sample rate (%d)", voice_modem_name, (int)*speed);
      return(FAIL);
  }
  if (sprintf(buf, "AT#VSR=%d", (int)*speed) == -1) {
    lprintf(L_ERROR, "%s: Command too long", __FUNCTION__);
  }
  if (voice_command(buf, "OK") != VMA_USER_1) {
    return(FAIL);
  }
  /*
   * Build the number of bits and send it
   */
  switch (*compression) {
    case 0:
      *compression = 2;
      /* FALL THROUGH */
    case 2:
    case 4:
    case 8:
      *bits = *compression;
      break;

    default:
      lprintf(L_WARN,
              "ROCKWELL handle event: Illegal voice compression method (%d)",
              *compression);
      return(FAIL);
  }
  if (sprintf(buf, "AT#VBS=%d", *bits) == -1) {
    lprintf(L_ERROR, "%s: Command too long", __FUNCTION__);
  }
  if (voice_command(buf, "OK") != VMA_USER_1) {
    return(FAIL);
  }
  return (OK);
}
Exemple #12
0
int Cirrus_Logic_answer_phone (void)
     {
     reset_watchdog();
     lprintf(L_MESG, "Answering Call");

     if (voice_command("AT#VLN=1", "OK") != VMA_USER_1)
          return(VMA_ERROR);

     if (voice_command("AT#VIP=1", "OK") != VMA_USER_1)
          return(VMA_ERROR);

     return(VMA_OK);
     }
Exemple #13
0
static int ISDN4Linux_set_compression(int *compression, int *speed, int *bits)
     {
     char buffer[VOICE_BUF_LEN];
     reset_watchdog();

     if (*compression == 0)
          *compression = 2;

     *speed = 8000;

     switch (*compression)
          {
          case 2:
               *bits = 2;

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

               return(OK);
          case 3:
               *bits = 3;

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

               return(OK);
          case 4:
               *bits = 4;

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

               return(OK);
          case 5:
          case 6:
               *bits = 8;

               sprintf(buffer,"AT+VSM=%d",*compression);

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

               return(OK);
          }

     lprintf(L_WARN,
      "ISDN4Linux handle event: Illegal voice compression method (%d)",
      *compression);
     return(FAIL);
     }
Exemple #14
0
static int Dr_Neuhaus_set_compression (int *compression, int *speed, int *bits)
     {
     reset_watchdog();

     if (*compression == 0)
          *compression = 129;

     if (*speed == 0)
          *speed = 8000;

     if (*speed != 8000)
          {
          lprintf(L_WARN, "%s: Illegal sample rate (%d)", voice_modem_name,
           *speed);
          return(FAIL);
          };

     switch (*compression)
          {
          case 128:
               *bits = 8;

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

               break;
          case 129:
               *bits = 2;

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

               break;
          case 130:
               *bits = 3;

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

               break;
          default:
               lprintf(L_WARN, "%s: Illegal voice compression method (%d)",
                voice_modem_name, *compression);
               return(FAIL);
          };

     return(OK);
     }
Exemple #15
0
static int Dolphin_set_compression (p_int *compression, p_int *speed, int *bits)
{
    reset_watchdog();

    if (*compression == 0)
        *compression = 2;

    if (*speed == 0)
        *speed = 9600;

    if (*speed != 9600)
    {
        lprintf(L_WARN, "%s: Illegal sample rate (%d)", voice_modem_name,
                *speed);
        return(FAIL);
    };

    if (*compression != 2)
    {
        lprintf(L_WARN, "%s: Illegal voice compression method (%d)",
                voice_modem_name, *compression);
        return(FAIL);
    };

    *bits = 2;

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

    return(OK);
}
Exemple #16
0
static int Multitech_2834_set_compression(p_int *compression, p_int *speed,
 int *bits)
     {
     char buffer[VOICE_BUF_LEN];

     reset_watchdog();

     if (*compression == 0)
          *compression = 4;

     if (*speed == 0)
          *speed = 8000;

     if (*speed != 8000)
          {
          lprintf(L_WARN, "%s: Illegal sample rate (%d)", voice_modem_name,
           *speed);
          return(FAIL);
          }

     switch (*compression)
          {
          case 4:
               *bits = 4;
               sprintf(buffer, "AT+VSM=2,%d", (int)*speed);

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

               break;
          case 132:
               *bits = 4;
               sprintf(buffer, "AT+VSM=132,%d", (int)*speed);

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

               break;
          default:
               lprintf(L_WARN, "%s: Illegal voice compression method (%d)",
                voice_modem_name, *compression);
               return(FAIL);
          }

     return(OK);
     }
Exemple #17
0
static int Multitech_5634ZPX_set_device(int device)
     {
     reset_watchdog();

     /*
       0,"",B0000000,B0000000,B0000000
       1,"T",0BC01800,0BC01800,0BC01800
       2,"L",00000000,00000000,B0000000
       3,"LT",0BC01800,0BC01800,0BC01800
       4,"S",00000000,00000000,B0000000
       5,"ST",0BC01800,0BC01800,0BC01800
       6,"M",00000000,00000000,B0000000
       7,"MST",0BC01800,0BC01800,0BC01800
       where:
       0 "" on-hook, local phone->telco
       1 T  off-hook, modem->telco
       2 L  off-hook, local phone->telco
       3 LT off-hook, local phone&modem->telco
       4 S  on-hook, spkr->modem, local phone->telco
       5 ST off-hook, spkr->telco, modem->telco
       6 M  on-hook, mike->modem, local phone->telco
       7 MST  off-hook, mike&spkr->telco, modem->telco
     */
     switch (device)
          {
          case NO_DEVICE:
               voice_command("AT+VLS=0", "OK");
               return(OK);
          case LOCAL_HANDSET:
               voice_command("AT+VLS=2", "OK");
               return(OK);
          case DIALUP_LINE:
               voice_command("AT+VLS=0", "OK"); /* MD: Changed from 1 to 0 -> now vm dials out */
               return(OK);
          case EXTERNAL_MICROPHONE:
               voice_command("AT+VLS=11", "OK");
               return(OK);
          case INTERNAL_SPEAKER:
               voice_command("AT+VLS=4", "OK");
               return(OK);
          };

     lprintf(L_WARN, "%s: Unknown output device (%d)", voice_modem_name,
      device);
     return(FAIL);
     }
Exemple #18
0
int ISDN4Linux_handle_dle(char data)
     {
     switch (data)
        {
        case DC4:
             lprintf(L_WARN, "%s: <DLE> <DC4> received", program_name);
             voice_stop_current_action();
             
             switch (voice_command("", "OK|VCON|NO CARRIER"))
                  {
                  case VMA_USER_3:
                       queue_event(create_event(NO_CARRIER));
                       break;
                  case VMA_USER_1:
                  case VMA_USER_2:
                       break;
                  default:
                       return FAIL;
                  }
             
             got_DLE_DC4 = TRUE;
             return (OK);

        case ETX:
             lprintf(L_WARN, "%s: <DLE> <ETX> received", program_name);
             voice_stop_current_action();
             
             switch (voice_command("", "OK|VCON|NO CARRIER"))
                  {
                  case VMA_USER_3:
                       queue_event(create_event(NO_CARRIER));
                       break;
                  case VMA_USER_1:
                  case VMA_USER_2:
                       break;
                  default:
                       return FAIL;
                  }
             
             return (OK);
             
        default:
             return(IS_101_handle_dle(data));
        }
     }
Exemple #19
0
static int Lucent_set_device (int device)
     {
     reset_watchdog();

     switch (device)
          {
	  case DIALUP_WITH_LOCAL_HANDSET:
          case NO_DEVICE:
               voice_command("AT+VLS=0", "OK");
               return(OK);
          case DIALUP_LINE:
               voice_command("AT+VLS=1", "OK");
               return(OK);
	  case LOCAL_HANDSET:
	    voice_command("AT+VLS=2", "OK");
	    return(OK);
          case INTERNAL_SPEAKER:
               voice_command("AT+VLS=4", "OK");
               return(OK);
          case INTERNAL_MICROPHONE:
               voice_command("AT+VLS=6", "OK");
               return(OK);
	  case DIALUP_WITH_INT_SPEAKER:
	    voice_command("AT+VLS=5", "OK");
	    return(OK);
	  case DIALUP_WITH_INTERNAL_MIC_AND_SPEAKER:
	    voice_command("AT+VLS=7", "OK");
	    return(OK);

          };

     lprintf(L_WARN, "%s: Unknown output device (%d)", voice_modem_name,
      device);
     return(FAIL);
     }
Exemple #20
0
int Lucent_beep(int frequency, int length)
     {
     char buffer[VOICE_BUF_LEN];
     int true_length = length / voice_modem->beep_timeunit;

     reset_watchdog();
     sprintf(buffer, voice_modem->beep_cmnd, frequency, frequency, true_length);

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

     delay(((length - 1000) > 0) ? (length - 1000) : 0);

     if ((voice_command("", voice_modem->beep_answr) & VMA_USER) != VMA_USER)
          return(FAIL);

     return(OK);
     }
Exemple #21
0
static int UMC_init(void)
     {
     char buffer[VOICE_BUF_LEN];

     reset_watchdog();
     lprintf(L_MESG, "initializing UMC voice modem");
     voice_modem_state = INITIALIZING;
     sprintf(buffer, "AT#VSP=%1u", cvd.rec_silence_len.d.i);

     if (voice_command(buffer, "OK") != VMA_USER_1)
          lprintf(L_WARN, "can't set silence period");

     if (voice_command("AT#VSD=0", "OK") != VMA_USER_1)
         lprintf(L_WARN, "can't disable silence deletion");

    if (voice_command("AT#VTD=3F,3F,3F", "OK") != VMA_USER_1)
         lprintf(L_WARN, "can't set DLE responses");

     if ((cvd.rec_silence_threshold.d.i > 100) ||
      (cvd.rec_silence_threshold.d.i < 0))
          {
          lprintf(L_WARN, "Invalid threshold value.");
          return(ERROR);
          }

     sprintf(buffer, "AT#VSS=%1u", cvd.rec_silence_threshold.d.i * 3 / 100);

     if (voice_command(buffer, "OK") != VMA_USER_1)
          lprintf(L_WARN, "can't set silence threshold");

     if (voice_command("AT\\Q3", "OK") == VMA_USER_1)
          {
          TIO tio;
          tio_get(voice_fd, &tio);
          tio_set_flow_control(voice_fd, &tio, FLOW_HARD);
          tio_set(voice_fd, &tio);
          }
     else
          lprintf(L_WARN, "can't turn on hardware flow control");

     voice_modem_state = IDLE;
     return(OK);
     }
Exemple #22
0
static int Digi_RAS_set_device (int device)
     {
     reset_watchdog();

     switch (device)
          {
          case NO_DEVICE:
               voice_command("AT+VLS=0", "OK");
               return(OK);
          case DIALUP_LINE:
               /* voice_command("AT+VLS=2", "OK"); */
               voice_command("AT+VLS=1", "OK");
               return(OK);
          };

     lprintf(L_WARN, "%s: Unknown output device (%d)", voice_modem_name,
      device);
     return(FAIL);
     }
Exemple #23
0
static int ISDN4Linux_set_device(int device)
     {
     int result;
     reset_watchdog();

     switch (device)
          {
          case NO_DEVICE:
               voice_write("AT+VLS=0");
               result = voice_command("", "OK|NO CARRIER|AT+VLS=0");

               if (result == VMA_USER_3)
                    result = voice_command("", "OK|NO CARRIER");

               switch(result)
                    {
                    case VMA_USER_2:
                         queue_event(create_event(NO_CARRIER));
                         /* Fall through */
                    case VMA_USER_1:
                         return (OK);
                    }

               return(FAIL);
          case DIALUP_LINE:

               switch (voice_command("AT+VLS=2", "VCON|OK|NO CARRIER"))
                    {
                    case VMA_USER_3:
                         queue_event(create_event(NO_CARRIER));
                         /* Fall through */
                    case VMA_USER_1:
                    case VMA_USER_2:
                         return(OK);
                    }

               return(FAIL);
          }

     lprintf(L_WARN, "ISDN4Linux handle event: Unknown output device (%d)",
      device);
     return(FAIL);
     }
Exemple #24
0
int UMC_switch_to_data_fax(char *mode)
     {
     char buffer[VOICE_BUF_LEN];
     reset_watchdog();
     sprintf(buffer, "AT#CLS=%s", mode);

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

     return(OK);
     }
Exemple #25
0
static int Digi_RAS_set_compression (int *compression, int *speed, int *bits)
     {
     reset_watchdog();

     if (*compression == 0)
          *compression = 4;

     if (*speed == 0)
          *speed = 8000;

     if (*speed != 8000)
          {
          lprintf(L_WARN, "%s: Illegal sample rate (%d)", voice_modem_name,
           *speed);
          return(FAIL);
          };

     switch (*compression)
          {
          case 4:
               *bits = 8;

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

               break;
          case 5:
               *bits = 8;

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

               break;
          default:
               lprintf(L_WARN, "%s: Illegal voice compression method (%d)",
                voice_modem_name, *compression);
               return(FAIL);
          };

     return(OK);
     }
Exemple #26
0
static int UMC_set_compression(int *compression, int *speed, int *bits)
     {
     reset_watchdog();

     if (*compression == 0)
          *compression = 4;

     if (*speed == 0)
          *speed = 7200;

     switch (*compression)
          {
          case 2:
               *bits=2;

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

               return (OK);
          case 3:
               *bits=3;

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

               return (OK);
          case 4:
               *bits=4;

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

               return (OK);
          }

     lprintf(L_WARN,
      "UMC handle event: Illegal voice compression method (%d)",
      *compression);
     return(FAIL);
     }
Exemple #27
0
int Cirrus_Logic_switch_to_data_fax (char *mode)
     {
     char buffer[VOICE_BUF_LEN];

     lprintf(L_MESG, "Switching to data/fax");
     reset_watchdog();
     sprintf(buffer, "AT+FCLASS=%s", mode);

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

     return(OK);
     }
Exemple #28
0
static int Cirrus_Logic_set_compression (p_int *compression, p_int *speed,
 int *bits)
     {
     lprintf(L_MESG, "Setting compression");
     reset_watchdog();

     if (*compression == 0)
          *compression = 1;

     if (*speed == 0)
          *speed = 9600;

     if (*speed != 9600)
          {
          lprintf(L_WARN, "%s: Illegal sample speed (%d)",
           voice_modem_name, *speed);
          return(FAIL);
          }

     voice_command("AT#VSR=9600", "OK");

     switch (*compression)
          {
          case 3:
               voice_command("AT#VSM=AD3", "OK");
               *bits = 3;
               return(OK);
          case 4:
               voice_command("AT#VSM=AD4", "OK");
               *bits = 4;
               return(OK);
          default:
               voice_command("AT#VSM=CL1", "OK");
               *bits = 5;
               return(OK);
          }

     return(OK);
     }
Exemple #29
0
static int Multitech_2834_voice_mode_off(void)
{
	char buffer[VOICE_BUF_LEN];

	sprintf(buffer, "%s%s", voice_modem->switch_mode_cmnd, mode_save);

	if ((voice_command(buffer, voice_modem->switch_mode_answr) & VMA_USER) !=
	    VMA_USER)
		return FAIL;

	Multitech_2834_fix_modem(1);

	return OK;
}
Exemple #30
0
int Multitech_5634ZPX_switch_to_data_fax(char *mode)
{
	char buffer[VOICE_BUF_LEN];

	sprintf(buffer, "%s%s", voice_modem->switch_mode_cmnd, mode);

	if ((voice_command(buffer, voice_modem->switch_mode_answr) & VMA_USER) !=
	    VMA_USER)
		return FAIL;

	Multitech_5634ZPX_fix_modem(1);

	return OK;
}