Hylafax Mailing List Archives |
Regards, Ivan
Ivan Petrov wrote:
Hi guys,
I found another issue - when I dial the numbers automatically (from my fax machine and add pauses to bypass the voice greeting, then the desired DTMF code - everything works great, but if I enter the code manually (pressing the keys longer than instantaneous) code does not get recorded properly but with repetitions - for example if I enter 1234, I get 1123 or 1112. Is there a away to avoid "autorepeat" and force the modem to read the digits no matter how long a single digit DTMF is being received? I found the modem extremely sensitive - if you don't press the keys as quickly as possible you will usually get repetitions.
(OS -RHEL 3 U6, HylaFAX 4.2.4.1, modem LT V.92 1.0 MT5634ZPX-PCI-U INTERNAL DATA/FAX/VOICE MODEM VERSION 1.32K(MULTI-TECH SYSTEMS MT5634ZPX-PCI-U/1.32k)
Ivan,
Please test the attached patch (if you used source tarball). If you used RPM, then I've uploaded a 4.2.4.1 RH7 RPM (that includes this patch, which is not part of 4.2.4.1) to:
http://sourceforge.net/project/showfiles.php?group_id=148904
I forgot that IS-101 "book-ends" DTMF digits with a leading <DLE></> and a trailing <DLE><~> and then repeats the digit every 70 ms while the tone is present.
Let me know how it goes.
Thanks,
Lee.
--- hylafax.orig/faxd/ClassModem.c++ 2005-12-22 09:24:30.000000000 -0800
+++ hylafax/faxd/ClassModem.c++ 2006-01-04 21:25:31.754091072 -0800
@@ -1376,13 +1376,25 @@
for (u_int j = 0 ; j < conf.idConfig.length(); j++) {
if (conf.idConfig[j].pattern == "SHIELDED_DTMF") { // retrieve DID, e.g. via voice DTMF
ringstart = Sys::now();
+ bool marked = false, gotdigit = false;
do {
int c = server.getModemChar(10000);
if (c == 0x10) c = server.getModemChar(10000);
if (c == 0x23 || c == 0x2A || (c >= 0x30 && c <= 0x39)) {
// a DTMF digit was received...
- protoTrace("MODEM HEARD DTMF: %c", c);
- callid[j].append(fxStr::format("%c", c));
+ if (!marked || (marked && !gotdigit)) {
+ protoTrace("MODEM HEARD DTMF: %c", c);
+ callid[j].append(fxStr::format("%c", c));
+ gotdigit = true;
+ }
+ } else if (c == 0x2F) {
+ // got IS-101 DTMF lead marker
+ marked = true;
+ gotdigit = false;
+ } else if (c == 0x7E) {
+ // got IS-101 DTMF end marker
+ marked = false;
+ gotdigit = false;
} else if (c == 0x73) {
// got silence, keep waiting
protoTrace("MODEM HEARD SILENCE");
____________________ HylaFAX(tm) Users Mailing List _______________________ To subscribe/unsubscribe, click http://lists.hylafax.org/cgi-bin/lsg2.cgi On UNIX: mail -s unsubscribe hylafax-users-request@xxxxxxxxxxx < /dev/null *To learn about commercial HylaFAX(tm) support, mail sales@xxxxxxxxx*
|