HylaFAX The world's most advanced open source fax server

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

Re: [hylafax-users] [hylafax-devel] ATDT%s@ trick



Hi,

OK, I found an old manual...

The way it works is when dialing a fax machine, the remote fax machine 
answers the phone and immediately starts generating connection tones.

The @ says if you don't hear the tones, then there wasn't a fax machine
attached to the other end of the phone line, so ... report a "NO ANSWER"
result code ( from the MT2834BL Modem manual ... ) rather than a NO CARRIER,
which is typically returned on NOTHING answering the phone...

If it does hear the tones, then everthing is fine.

As to the different handling, I guess the code proves my memory completely
wrong!!

I'm really swamped today, but a QUICK boo at the code ( thanks for including 
it!! ) would seem to indicate that a "NO ANSWER" doesn't examine the
NoCarrierRetries counter..... HUM.... that seems weird...

I'm not too sure what the code is trying to do, but hopefully this clears
up a LITTLE what the intent of it is...

> 
> Steve Williams <steve@genie96.com> writes:
> 
> > This is from memory, I haven't used it for about 4 years...I THINK it
> > was an old MultiTech 1432, but I went through LOTS of modems, so not 
> > 100 % sure on it.. and yes, it did work!
> > 
> > The @ at the end of the dial string causes the modem to report NO CARRIER
> > if the remote end answers, but does not issue a carrier.
> 
> According to the manual '@' means "Wait for 5-sec" silence. If no silence
> is detected, report NO ANSWER". What is the "silence" here? If the modem
> hears ringbacks, is it "silence" or not? If it immediately hears v.21
> response from remote what should it do? (IMHO according to the specs it
> should give up with "NO ANSWER". Am I wrong?)
> 
> > It reports NO ANSWER if the remote end DOES NOT ANSWER... So, there is 
> > a big difference between the two.
> 
> That's clear but I still cannot understand how '@' was supposed to achieve
> that ...
> 
> > On the cheaper ZDX MultiTechs, I'm not 100 % sure if it works or not.
> > 
> > My gut feeling is that it doesn't, or I would be using it....
> > 
> > I think it's only the top end modems that are using it... maybe if the
> > operator of TPC.INT in England is on the list, he could indicate if 
> > he is using the @ in the dial string... For the volume of faxes they
> > put through, they should have a good feeling on it!
> > 
> > No Answer & No Carrier are handled differently by HylaFAX, I THINK 
> > a NO ANSWER will cause HylaFAX to not try that number again ( fail the
> > fax ), whereas a NO CARRIER let's it go on with the maximum number of
> > tries..
> 
> No. Here is the actual code:
> 
> [---cut---]
> 	switch (callstat) {
> 	case ClassModem::NOCARRIER:	// no carrier detected on remote side
> 	    /*
> 	     * Since some modems can not distinguish between ``No Carrier''
> 	     * and ``No Answer'' we offer this configurable hack whereby
> 	     * we'll retry the job <n> times in the face of ``No Carrier''
> 	     * dialing errors; if we've never previously reached a facsimile
> 	     * machine at that number.  This should not be used except if
> 	     * the modem is incapable of distinguishing betwee ``No Carrier''
> 	     * and ``No Answer''.
> 	     */
> 	    if (!clientInfo.getCalledBefore() && fax.ndials > noCarrierRetrys)
> 		sendFailed(fax, send_failed, notice);
> 	    else if (fax.retrytime != 0)
> 		sendFailed(fax, send_retry, notice, fax.retrytime);
> 	    else
> 		sendFailed(fax, send_retry, notice, requeueTTS[callstat]);
> 	    break;
> 	case ClassModem::NODIALTONE:	// no local dialtone, possibly unplugged
> 	case ClassModem::ERROR:		// modem might just need to be reset
> 	case ClassModem::FAILURE:	// modem returned something unexpected
> 	    sendFailed(fax, send_retry, notice, requeueTTS[callstat]);
> 	    break;
> 	case ClassModem::NOFCON:	// carrier seen, but handshake failed
> 	case ClassModem::DATACONN:	// data connection established
> 	    clientInfo.setCalledBefore(true);
> 	    /* fall thru... */
> 	case ClassModem::BUSY:		// busy signal
> 	case ClassModem::NOANSWER:	// no answer or ring back
> 	    if (fax.retrytime != 0)
> 		sendFailed(fax, send_retry, notice, fax.retrytime);
> 	    else
> 		sendFailed(fax, send_retry, notice, requeueTTS[callstat]);
> 	    /* fall thru... */
> 	case ClassModem::OK:		// call was aborted by user
> 	    break;
> 	}
> [---cut---]
> 
> You can see that "NO ANSWER" is treated as "BUSY". The wrong destination
> will be tried over and over again :-(
> 
> Hope to hear from you soon,
> Dmitry
> 
> 


-- 
	Steve Williams, Calgary, Alberta, Canada
	Genie Computer Systems Inc.
	steve@genie96.com

"A man doesn't begin to attain wisdom until he recognizes that he is 
 no longer indispensable."
- Admiral Richard E. Byrd ( 1888-1957 )


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




Project hosted by iFAX Solutions