Hylafax Developers Mailing List Archives

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

[hylafax-devel] Re: New Feature Contribution: V.34 fax



guillaume.legoupil@conexant.com writes:

> Dmitry,
> see coments below,
> Guillaume
>
>
>
> 
> Can you explain, why did you make the following changes:
> 
> [---cut---]
> --- mainline.000309.14/faxd/Class2.c++   Sun Jun 13 00:41:01 1999
> +++ mainline.000309.14EcmV34/faxd/Class2.c++  Fri Mar 10 18:42:43 2000
> @@ -111,6 +111,13 @@
>      return (false);
>      }
>      traceModemParams();
> +    /*
> +     * Because V.34 fax use a V.8 negociation, we have to enable pre-dial
> DIS command hack
> +     */
> +    if(modemParams.br > BR_ALL_NO_V34) {
> +      modemSupports("V.34, force pre-dial DIS command hack");
> +      ddisCmd = disCmd;
> +    }
>      /*
>       * Check to see if the modem supports copy quality checking.
>       * If the modem is capable, then enable it using the configured
> [---cut---]
> 
> Why this DIS command hack is really needed? Before each dial attempt
> Hylafax invokes setupDCC(), which sets the modem's best via AT+FCC=..., so
> (I think) v.8 should be enabled by default without any hack. Wrong?
> 
> *********************
> At this point, we need to make the difference between V.34 fax and no V.34
> fax. AT+FCC=... represents the best capabilities of the modem and
> AT+DIS=... 

AT+FIS

> represents the capabilities for the current session.

Yes, but according to T.class2, FIS (current session) capabilities are
_copied_ from FCC capabilities (which is set to modem's best by Hylafax),
i.e. V.8 is already enabled.

> V.34 fax (br>5)(speed>14400) use V.8 for the negociation, so when we
> receive
> +FIS:.... (capabilities of the negociated session), the negociation is done
> and can not be modified, so if we send an AT+FDIS=...,

AT+FIS, but why AT+FCC=,13,,,,,,  before dialing (done by Hylafax) is not
enough? 

>  it will have no
> effect, that's why we need to set the capabilities of the current cession
> before dialing.
> Other cases, the capabilities used for the negociation are the best ones
> and not the desired ones.
> 
> [---cut---]
> diff -uNr mainline.000309.14/faxd/Class2.h
> mainline.000309.14EcmV34/faxd/Class2.h
> --- mainline.000309.14/faxd/Class2.h     Sun Jun 13 00:41:01 1999
> +++ mainline.000309.14EcmV34/faxd/Class2.h    Fri Mar 10 11:19:54 2000
> @@ -43,6 +43,7 @@
>      fxStr     dccCmd;             // set configuration parameters command
>      fxStr     dccQueryCmd;        // modem capabilities query command
>      fxStr     disCmd;             // set session parameters command
> +    fxStr     ddisCmd;            // set ses. params. command before dial
>      fxStr     cigCmd;             // set polling ID string command
>      fxStr     splCmd;             // set polling request command
>      fxStr     nrCmd;              // negotiation message reporting control
> diff -uNr mainline.000309.14/faxd/Class20.c++
> mainline.000309.14EcmV34/faxd/Class20.c++
> --- mainline.000309.14/faxd/Class20.c++  Sun Jun 13 00:41:01 1999
> +++ mainline.000309.14EcmV34/faxd/Class20.c++      Fri Mar 10 11:18:37 2000
> @@ -48,6 +48,7 @@
>      setupDefault(lidCmd,     conf.class2LIDCmd,   "AT+FLI");
>      setupDefault(dccCmd,     conf.class2DCCCmd,   "AT+FCC");
>      setupDefault(disCmd,     conf.class2DISCmd,   "AT+FIS");
> +    setupDefault(ddisCmd,    conf.class2DISCmd,   "");
>      setupDefault(cigCmd,     conf.class2CIGCmd,   "AT+FPI");
>      setupDefault(splCmd,     conf.class2SPLCmd,   "AT+FSP");
>      setupDefault(ptsCmd,     conf.class2PTSCmd,   "AT+FPS");
> diff -uNr mainline.000309.14/faxd/Class2Send.c++
> mainline.000309.14EcmV34/faxd/Class2Send.c++
> --- mainline.000309.14/faxd/Class2Send.c++    Sun Jun 13 00:41:01 1999
> +++ mainline.000309.14EcmV34/faxd/Class2Send.c++   Fri Mar 10 16:39:47 2000
> @@ -59,8 +59,8 @@
>          Class2Params::bitRateNames[req.minsp], cmdFailed);
>      return (false);
>      }
> -    if (conf.class2DDISCmd != "") {
> -    if (!class2Cmd(conf.class2DDISCmd, dis)) {
> +    if (ddisCmd != "") {
> +    if (!class2Cmd(ddisCmd, dis)) {
>          emsg = fxStr::format("Unable to setup session parameters "
>           "prior to call%s", cmdFailed);
>          return (false);
> [---cut---]
> 
> Well, if the hack is really needed, you should use conf.class2DDISCmd in
> setupDefault() above, not conf.class2DISCmd.
> 
> *********************
> Yes, that right, I did not wanted to change the all conception of the
> package.
> Here, ddisCmd is set if we want to enable pre-dial DIS command hack. But it
> is required for V.34. So if V.34 is desired, I set it.

But after your changes Class2DDISCmd parameter in config.<device> is
totally ignored. Not a good news for those who really used it to get their
buggy non-V34.fax modems work (see "man config" for details on this
parameter).

> I taugth you had good reasons to do that way. And it works fine, so why
> changing it?

Excuse me, but I do not understand, whether you accept my correction to
your fixes or not. Once again:

+    setupDefault(ddisCmd,    conf.class2DDISCmd,   "");
instead of your
+    setupDefault(ddisCmd,    conf.class2DISCmd,   "");

It changes neither current Hylafax logic, nor your V.34 hack. So?

> BTW, which modem did you use to test your ECM & V.34 fixes?
> 
> *********************
> I use chipset we (Conexant) produce, a CSM (Central Site Modem).

Is it already available on the market?

> Class2.0 ECM and V.34 fax are new features we are working in.

If not, maybe you know other modem in mass production which supports ECM in 
Class2.0?

Hope to hear from you soon,
Dmitry



____________________ HylaFAX(tm) Developers Mailing List ____________________
 To unsub: mail -s unsubscribe hylafax-devel-request@hylafax.org < /dev/null



Home
Report any problems to webmaster@hylafax.org

HylaFAX is a trademark of Silicon Graphics Corporation.
Internet connectivity for hylafax.org is provided by:
VirtuALL Private Host Services