* for sending facsimile.
*/
bool
-Class1Modem::faxService(bool enableV34)
+Class1Modem::faxService(bool enableV34, bool enableV17)
{
if (!atCmd(classCmd)) return (false);
if (conf.class1EnableV34Cmd != "" && enableV34)
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
* 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
* Force the DCC so that we can override
* whatever the modem defaults are.
*/
- setupDCC(enableV34);
+ setupDCC(enableV34, enableV17);
}
return (true);
}
* 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();
* 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)
{
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();
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
* 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&,
* 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;
}
{ "class1switchingcmd", &ModemConfig::class1SwitchingCmd, "AT+FRS=7" },
{ "class2cmd", &ModemConfig::class2Cmd },
{ "class2borcmd", &ModemConfig::class2BORCmd },
+{ "class2disablev17cmd", &ModemConfig::class2DisableV17Cmd },
{ "class2relcmd", &ModemConfig::class2RELCmd },
{ "class2cqcmd", &ModemConfig::class2CQCmd },
{ "class2abortcmd", &ModemConfig::class2AbortCmd },
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
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
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