]> git.ipfire.org Git - thirdparty/HylaFAX.git/commitdiff
Class1/Class2: Allow disabling V17
authorAidan Van Dyk <aidan@ifax.com>
Fri, 11 May 2007 15:31:11 +0000 (15:31 +0000)
committerAidan Van Dyk <aidan@ifax.com>
Fri, 11 May 2007 15:31:11 +0000 (15:31 +0000)
From Lee:
| commit ffc20fd438a03b1f7ab35156903f3bd9c14a92d7
| Author: Lee Howard <faxguy@howardsilvan.com>
| Date:   Tue Mar 6 20:19:30 2007 +0000
|
|   Assuming we can find a command to disable V.17 (S-register), then
|   We'll want to set it with Class2DisableV17Cmd.

and:
| commit 9dbd1f2b510d08a11020c6703a46b8d634799d7d
| Author: Lee Howard <faxguy@howardsilvan.com>
| Date:   Tue Mar 6 21:53:41 2007 +0000
|
|   A little more required for disabling V.17.

faxd/Class1.c++
faxd/Class1.h
faxd/Class2.c++
faxd/Class2.h
faxd/FaxModem.h
faxd/FaxSend.c++
faxd/ModemConfig.c++
faxd/ModemConfig.h
man/hylafax-config.4f

index aeba4af3c79d57905c9682d9cdc7d30faa569ebb..f4ee847b868c2c7f50d690699accbed1cafffb44 100644 (file)
@@ -322,7 +322,7 @@ Class1Modem::setupFlowControl(FlowControl fc)
  * for sending facsimile.
  */
 bool
-Class1Modem::faxService(bool enableV34)
+Class1Modem::faxService(bool enableV34, bool enableV17)
 {
     if (!atCmd(classCmd)) return (false);
     if (conf.class1EnableV34Cmd != "" && enableV34)
index b4810b948255d328d5a502f44bee2f14d13f8d2f..8bdc9640c37766bf3a2fc30234b527fe4ef74585 100644 (file)
@@ -235,7 +235,7 @@ public:
                    fxStr& emsg);
 
 // miscellaneous
-    bool       faxService(bool enableV34);     // switch to fax mode (send)
+    bool       faxService(bool enableV34, bool enableV17);     // switch to fax mode (send)
     bool       reset(long ms);                 // reset modem
     bool       ready(long ms);                 // ready modem for receive
     void       setLID(const fxStr& number);    // set local id string
index d94ff7815ca76952286aa227cb615e262dcdd02d..42034242a75a440f2a8498ea2e33e6fdd9417d0b 100644 (file)
@@ -281,7 +281,7 @@ Class2Modem::pokeConfig(bool isSend)
  * followed by setup of receive-specific parameters.
  */
 bool
-Class2Modem::setupClass2Parameters(bool enableV34)
+Class2Modem::setupClass2Parameters(bool enableV34, bool enableV17)
 {
     if (modemServices & serviceType) {         // when resetting at startup
        setupFlowControl(flowControl);          // flow control
@@ -314,7 +314,7 @@ Class2Modem::setupClass2Parameters(bool enableV34)
         * Force the DCC so that we can override
         * whatever the modem defaults are.
         */
-       setupDCC(enableV34);
+       setupDCC(enableV34, enableV17);
     }
     return (true);
 }
@@ -368,10 +368,11 @@ Class2Modem::setupFlowControl(FlowControl fc)
  * Setup DCC to reflect best capabilities of the server.
  */
 bool
-Class2Modem::setupDCC(bool enableV34)
+Class2Modem::setupDCC(bool enableV34, bool enableV17)
 {
     params.vr = getVRes();
     params.br = enableV34 ? getBestSignallingRate() : fxmin((u_int) BR_14400, getBestSignallingRate());
+    params.br = enableV17 ? params.br : fxmin((u_int) BR_9600, getBestSignallingRate());
     params.wd = getBestPageWidth();
     params.ln = getBestPageLength();
     params.df = useExtendedDF ? modemParams.df : getBestDataFormat();
@@ -465,11 +466,13 @@ Class2Modem::parseClass2Capabilities(const char* cap, Class2Params& params, bool
  * for sending facsimile.
  */
 bool
-Class2Modem::faxService(bool enableV34)
+Class2Modem::faxService(bool enableV34, bool enableV17)
 {
-    return setupClass2Parameters(enableV34);
+    if (!enableV17 && conf.class2DisableV17Cmd != "" && !atCmd(conf.class2DisableV17Cmd)) return (false);
+    return setupClass2Parameters(enableV34, enableV17);
 }
 
+
 bool
 Class2Modem::setupRevision(fxStr& revision)
 {
index 4ffad81ef71b9abbaa3839b2c667b140044602d1..9d087e6b233990bd9ac6ea1468e8b58f1f422b00 100644 (file)
@@ -76,8 +76,8 @@ protected:
     virtual bool setupModem(bool isSend = true);
     virtual bool setupModel(fxStr& model);
     virtual bool setupRevision(fxStr& rev);
-    virtual bool setupDCC(bool enableV34 = true);
-    virtual bool setupClass2Parameters(bool enableV34 = true);
+    virtual bool setupDCC(bool enableV34 = true, bool enableV17 = true);
+    virtual bool setupClass2Parameters(bool enableV34 = true, bool enableV17 = true);
     virtual bool setupFlowControl(FlowControl fc);
 // transmission support
     bool       dataTransfer();
@@ -159,7 +159,7 @@ public:
                    fxStr& emsg);
 
 // miscellaneous
-    bool       faxService(bool enableV34);     // switch to fax mode (send)
+    bool       faxService(bool enableV34, bool enableV17);     // switch to fax mode (send)
     bool       reset(long ms);                 // reset modem
     void       setLID(const fxStr& number);    // set local id string
     bool       supportsPolling() const;        // modem capability
index 7f644168932ab7d8dd206c7e015c80ea0ebcd828..39fa894cef1df48f736c56c01c865aed22bc11c1 100644 (file)
@@ -240,7 +240,7 @@ public:
      * for doing things like keeping cover pages & documents in a
      * single T.30 document.
      */
-    virtual bool faxService(bool enableV34) = 0;
+    virtual bool faxService(bool enableV34, bool enableV17) = 0;
     virtual bool sendSetup(FaxRequest&, const Class2Params& dis, fxStr& emsg);
     virtual void sendBegin();
     virtual FaxSendStatus getPrologue(Class2Params&,
index c8bb7b2c2775cd75aecd6737cead7e9de0db47c0..808b418e59055f2943fdce6c362038a516319a86 100644 (file)
@@ -177,7 +177,8 @@ FaxServer::sendFax(FaxRequest& fax, FaxMachineInfo& clientInfo, const fxStr& num
      * requesting polling.
      */
     if ((batched & BATCH_FIRST) &&
-       !modem->faxService(!clientInfo.getHasV34Trouble() && clientParams.ec != EC_DISABLE && clientParams.br > BR_14400)) {
+       !modem->faxService(!clientInfo.getHasV34Trouble() && clientParams.ec != EC_DISABLE && clientParams.br > BR_14400,
+           !clientInfo.getHasV17Trouble() && clientParams.br > BR_9600)) {
        sendFailed(fax, send_failed, "Unable to configure modem for fax use");
        return;
     }
index 8534476006c91e3ff87e1a4b52389ae62ad543ab..75b30cc1eae897402752a0b5e26686676bcc3a0e 100644 (file)
@@ -124,6 +124,7 @@ static struct {
 { "class1switchingcmd",                &ModemConfig::class1SwitchingCmd, "AT+FRS=7" },
 { "class2cmd",                 &ModemConfig::class2Cmd },
 { "class2borcmd",              &ModemConfig::class2BORCmd },
+{ "class2disablev17cmd",       &ModemConfig::class2DisableV17Cmd },
 { "class2relcmd",              &ModemConfig::class2RELCmd },
 { "class2cqcmd",               &ModemConfig::class2CQCmd },
 { "class2abortcmd",            &ModemConfig::class2AbortCmd },
index 3f5c7a81f2bba1a1f1e8a07bf13253087e2c9aff..e268055abb2928bad4e017cfec36041125a29b9e 100644 (file)
@@ -178,6 +178,7 @@ public:
     fxStr      class2DCCQueryCmd;      // cmd to query modem capabilities
     fxStr      class2CQQueryCmd;       // cmd to query copy quality checking
     fxStr      class2BORCmd;           // cmd to set bit order
+    fxStr      class2DisableV17Cmd;    // cmd to disable V.17 support
     fxStr      class2RELCmd;           // cmd to enable byte-aligned EOL
     fxStr      class2CQCmd;            // cmd to setup copy quality checking
     fxStr      class2AbortCmd;         // cmd to abort a session
index d1e329f0276dfd5ddeb3df63f4784648d90fc695..9a199777a73ef6f2ab571a011df1b88ac8b35bcc 100644 (file)
@@ -335,6 +335,7 @@ Class2CQCmd string  \-      Class 2: command to setup copy quality parameters
 Class2CQQueryCmd       string  \s-1AT+FCQ=?\s+1        Class 2: command to query modem copy quality capabilities
 Class2DCCCmd   string  \s-1AT+FDCC\s+1 Class 2: command to set modem capabilities
 Class2DCCQueryCmd      string  \s-1AT+FDCC=?\s+1       Class 2: command to query modem capabilities
+Class2DisableV17Cmd    string \-       Class 2: command to disable V.17 support
 Class2DISCmd   string  \s-1AT+FDIS\s+1 Class 2: command to set session parameters
 Class2DDISCmd  string  \-      Class 2: command to set session parameters before dialing
 Class2ECMType  string  \s-1``2''\s+1   Class 2: ECM specification type to follow
@@ -370,6 +371,7 @@ Class2CQCmd string  \-      Class 2.0: command to setup copy quality parameters
 Class2CQQueryCmd       string  \s-1AT+FCQ=?\s+1        Class 2.0: command to query modem copy quality capabilities
 Class2DCCCmd   string  \s-1AT+FCC\s+1  Class 2.0: command to set modem capabilities
 Class2DCCQueryCmd      string  \s-1AT+FCC=?\s+1        Class 2.0: command to query modem capabilities
+Class2DisableV17Cmd    string \-       Class 2.0: command to disable V.17 support
 Class2DISCmd   string  \s-1AT+FIS\s+1  Class 2.0: command to set session parameters
 Class2ECMType  string  \s-1``2.0''\s+1 Class 2.0: ECM specification type to follow
 Class2HexNSF   boolean \s-1Yes\s+1     Class 2.0: parse NSF strings as hex values