![]() |
Hi all, I had a problem with an Olitec modem which have a Rockwell chip. This modem can't do the copy quality checking. When receiving a fax it returns FPTS:2,2219,0,0 to the sender after the AT+FDR command is issued. As you can read in the 'Modem Bugs and Gotchas' on the hylafax web site, the modems based on a rockwell chip (Suprafax, Olitec, ...) return a total nonsense AT+FPTS message... For my modem it always returns +FPTS: 2,2219,0,0 whereas the fax is good. And It results in an error on the fax machine sender :( As it is Hylafax which does the quality checking it should modify the FPTS message to say to the sender the fax is good. As I could read in the "Supra/Rockwell Class 2 documentation": "The DCE holds the post page response message to the remote facsimile station (MCF, etc.), represented in the +FPTS parameter until the next +FDR command. The DTE may modify the +FPTS parameter before issuing the +FDR command which releases that message. The DTE must issue a +FDR command to release Post Page Messages." But Hylafax doesn't send the FPTS command to the modem :( I think this is a bug (I'm right ?). Here's the modification I've done in the Class 2 driver of Hylafax. Function recvPage file Class2Recv.C++ ... if (ppr & 1) // page good, work complete { class2Cmd(ptsCmd, ppr); // Added this function call to send the FPTS computed by Hylafax return (TRUE); } } while (!hostDidCQ || class2Cmd(ptsCmd, ppr)); bad: ... What do you think of this modification ? It works for me... I join the patch of my modification. Thanks for your advices. Regards, Benoit Foucher. ----------------------------------- Imprimerie Vincent 29 av Charles Bedaux 37042 Tours Cedex FRANCE
Index: hylafax/faxd/Class2Recv.c++ diff -c hylafax/faxd/Class2Recv.c++:1.1 hylafax/faxd/Class2Recv.c++:1.2 *** hylafax/faxd/Class2Recv.c++:1.1 Thu Feb 11 15:38:27 1999 --- hylafax/faxd/Class2Recv.c++ Tue Mar 9 15:26:39 1999 *************** *** 218,224 **** --- 218,227 ---- recvResetPage(tif); // reset to overwrite data tracePPR("RECV send", ppr); if (ppr & 1) // page good, work complete + { + class2Cmd(ptsCmd, ppr); return (TRUE); + } } while (!hostDidCQ || class2Cmd(ptsCmd, ppr)); bad: if (hangupCode[0] == 0)