HylaFAX The world's most advanced open source fax server

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

AdaptiveAnswer with class 1 modem




Hi,

Sys: Redhat-6.0 Linux 2.2.10 #4 SMP Tue Jun 15 23:08:13 PDT 1999 i586 unknown
Modem: ActionTec Desktalk x2 firmware: ATI1="CD04.08 - 540G Parallel - SP 04"
(http://www.actiontec.com/support/modems/dt56k.php)
HylaFAX: hylafax-4.1beta1-1rh6.i386.rpm


I have a dumb class 1 modem attached to ttyS0.  My modem does not
report the connection type properly; it says "CONNECT" whether its
received a fax or data connection.  So, I configured faxgetty to use
AdaptiveAnswer.  I tested this by using 'faxanswer ttyS0', but I found
that faxgetty only tried the first entry in AnswerRotary, and nothing
after that.  I kept getting these 'ANSWER: Ring detected without
successful handshake' errors after I defined AnswerRotary to be "data
fax".


I dug throught the hylafax sources and found that
faxGettyApp.c++:FIFOMessage() never calls answerPhoneCmd() with
ClassModem::ANSTYPE_ANY.  That means that AdaptiveAnswer will never be
triggered by the 'faxanswer' command.  I changed the source and now
faxanswer works.  I have included a patch below.


Getting my cheapo modem to work has been quite a headache.  mgetty
only handles class 2+ modems.  efax will do an adaptive-answer-like
thing properly, but it only gets the first page of a fax.  HylaFax
gets the fax correctly but doesn't do adaptive answer.  Ugh.  I know
the answer is to get a better modem, but I was determined to make mine
work.

My next project is to call 'mgetty -r %s' as the external getty to use
its AutoPPP feature.  Has anyone got this to work?


By the way, what's the deal with making GettyArgs a configurable
variable, but leaving the PATH_GETTY a compiled constant?  Wouldn't it
be nice to use a GettyPath run-time variable?


Oh, thanks for the good work on HylaFax.  It could be a very useful
tool for me.

--Noel



diff -ur hylafax-4.1beta1/faxd/faxGettyApp.c++ hylafax-4.1beta1-noel/faxd/faxGettyApp.c++
--- hylafax-4.1beta1/faxd/faxGettyApp.c++	Sun Jun 13 00:41:05 1999
+++ hylafax-4.1beta1-noel/faxd/faxGettyApp.c++	Mon Sep  6 13:57:15 1999
@@ -764,18 +764,21 @@
 {
     switch (cp[0]) {
     case 'A':				// answer the phone
-	traceServer("ANSWER %s", cp[1] != '\0' ? cp+1 : "any");
-	if (cp[1] != '\0') {
-	    if (streq(cp+1, "fax"))
-		answerPhoneCmd(ClassModem::ANSTYPE_FAX);
-	    else if (streq(cp+1, "data"))
-		answerPhoneCmd(ClassModem::ANSTYPE_DATA);
-	    else if (streq(cp+1, "voice"))
-		answerPhoneCmd(ClassModem::ANSTYPE_VOICE);
-	    else if (streq(cp+1, "extern"))
-		answerPhoneCmd(ClassModem::ANSTYPE_EXTERN);
-	} else
-	    answerPhoneCmd(answerRotary[0]);
+	traceServer("ANSWER %s", cp[1] != '\0' ? cp+1 : "default");
+	if (streq(cp+1, "fax"))
+	    answerPhoneCmd(ClassModem::ANSTYPE_FAX);
+	else if (streq(cp+1, "data"))
+	    answerPhoneCmd(ClassModem::ANSTYPE_DATA);
+	else if (streq(cp+1, "voice"))
+	    answerPhoneCmd(ClassModem::ANSTYPE_VOICE);
+	else if (streq(cp+1, "extern"))
+	    answerPhoneCmd(ClassModem::ANSTYPE_EXTERN);
+	else {
+	    if( *(cp+1) ) {
+		traceServer("ANSWER WARN unknown answer type: %s using ANSTYPE_ANY", cp+1);
+	    }
+	    answerPhoneCmd(ClassModem::ANSTYPE_ANY);
+	}
 	break;
     case 'C':				// configuration control
 	traceServer("CONFIG \"%s\"", cp+1);




Project hosted by iFAX Solutions