]> git.ipfire.org Git - thirdparty/HylaFAX.git/commitdiff
Bug 507: add CRP reception support to recvEnd()
authorLee Howard <faxguy@howardsilvan.com>
Wed, 30 Mar 2005 21:17:56 +0000 (21:17 +0000)
committerLee Howard <faxguy@howardsilvan.com>
Wed, 30 Mar 2005 21:17:56 +0000 (21:17 +0000)
CHANGES
faxd/Class1Recv.c++

diff --git a/CHANGES b/CHANGES
index 8bbc384f52a82b441b0a42aeb0e9abdad8707d3d..2aaff7529485cd9c3c1b9b289c9c1f9fbe99d786 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,7 @@
 
 Changelog for HylaFAX
 
+* add last-page CRP reception support in Phase D (30 Mar 2005)
 * handle TSI, DCS, and other signals when in ECM (29 Mar 2005)
 * don't transmit DCN after getting EOT (24 Mar 2005)
 * improve the usage of T4 and T2 timers throughout (23 Mar 2005)
index c78cfb4f15db5fd40cc8a34b7ac96a429605ea76..318baf2ed6b75119ca06d5070330c013575a5cd8 100644 (file)
@@ -1643,18 +1643,22 @@ Class1Modem::recvEnd(fxStr&)
        HDLCFrame frame(conf.class1FrameOverhead);
        do {
            if (recvFrame(frame, FCF_RCVR, conf.t2Timer)) {
+               tracePPM("RECV recv", frame.getFCF());
                switch (frame.getFCF()) {
                case FCF_PPS:
-                   tracePPM("RECV recv", FCF_PPS);
                case FCF_EOP:
-                   tracePPM("RECV recv", FCF_EOP);
+               case FCF_CRP:
+                   if (!useV34) atCmd(conf.class1SwitchingCmd, AT_OK);
                    (void) transmitFrame(FCF_MCF|FCF_RCVR);
                    tracePPR("RECV send", FCF_MCF);
                    break;
                case FCF_DCN:
+                   recvdDCN = true;
                    break;
                default:
+                   if (!useV34) atCmd(conf.class1SwitchingCmd, AT_OK);
                    transmitFrame(FCF_DCN|FCF_RCVR);
+                   recvdDCN = true;
                    break;
                }
            } else if (!wasTimeout() && lastResponse != AT_FCERROR && lastResponse != AT_FRH3) {
@@ -1665,8 +1669,7 @@ Class1Modem::recvEnd(fxStr&)
                 */
                break;
            }
-       } while ((unsigned) Sys::now()-start < t1 &&
-           (!frame.isOK() || frame.getFCF() == FCF_EOP || frame.getFCF() == FCF_PPS));
+       } while ((unsigned) Sys::now()-start < t1 && (!frame.isOK() || !recvdDCN));
     }
     setInputBuffering(true);
     return (true);