Module: sems
Branch: 1.2
Commit: 04eb64c84f4d7462a03c5c392248762013f2641a
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=04eb64c84f4d7462a03c5c392248762013f2641a

Author: Stefan Sayer <[email protected]>
Committer: Stefan Sayer <[email protected]>
Date:   Wed Jun 30 14:09:10 2010 +0200

report changed key in KeyPressed, verbouse DBG

---

 core/AmDtmfDetector.cpp |   23 +++++++++++++++++++++++
 1 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/core/AmDtmfDetector.cpp b/core/AmDtmfDetector.cpp
index 4b94f6b..67ed455 100644
--- a/core/AmDtmfDetector.cpp
+++ b/core/AmDtmfDetector.cpp
@@ -240,7 +240,9 @@ void AmDtmfDetector::process(AmEvent *evt)
 
 void AmDtmfDetector::flushKey(unsigned int event_id) {
   // flush the current key if it corresponds to the one with event_id
+  DBG("flushKey\n");
   if (m_eventPending && m_current_eventid_i && event_id == m_current_eventid) {
+    DBG("flushKey - reportEvent()\n");
     reportEvent();
   }
 }
@@ -254,6 +256,7 @@ void AmDtmfDetector::registerKeyReleased(int event, 
Dtmf::EventSource source,
   // push out it now
   if ((m_eventPending && m_currentEvent != event) ||
       (m_eventPending && has_eventid && m_current_eventid_i && (event_id != 
m_current_eventid))) {
+    DBG("event differs - reportEvent()\n");
     reportEvent();
   }
 
@@ -296,12 +299,22 @@ void AmDtmfDetector::registerKeyPressed(int event, 
Dtmf::EventSource type, bool
     }
   else
     {
+      // Old event has not been sent yet
+      // push out it now
+      if ((m_currentEvent != event) ||
+         (has_eventid && m_current_eventid_i && (event_id != 
m_current_eventid))) {
+       DBG("event differs - reportEvent() from key pressed\n");
+       reportEvent();
+      }
+
       long delta_msec = (tm.tv_sec - m_lastReportTime.tv_sec) * 1000 +
        (tm.tv_usec - m_lastReportTime.tv_usec) / 1000;
       // SIP INFO can report stop time is in future so avoid changing 
       // m_lastReportTime during that period
       if (delta_msec > 0)
        memcpy(&m_lastReportTime, &tm, sizeof(struct timeval));
+
+
     }
 
   if (has_eventid) {
@@ -372,11 +385,14 @@ void AmRtpDtmfDetector::process(AmRtpDtmfEvent *evt)
 
       if (m_lastTS_i && m_lastTS == evt->ts()) {
        // ignore events from past key press which was already reported
+       DBG("ignore RTP event ts ==%u\n", evt->ts());
        return;
       }
 
       if (!m_eventPending)
         {
+         DBG("new m_eventPending, event()==%d, ts=%u\n", evt->event(), 
evt->ts());
+
          gettimeofday(&m_startTime, NULL);
          m_eventPending = true;
          m_currentEvent = evt->event();
@@ -385,10 +401,14 @@ void AmRtpDtmfDetector::process(AmRtpDtmfEvent *evt)
         }
       else
         {
+         DBG("RTP event, event()==%d, m_currentEvent == %d, m_currentTS_i=%s, 
evt->ts=%u, m_currentTS=%u\n",
+             evt->event(), m_currentEvent, m_currentTS_i?"true":"false", 
evt->ts(), m_currentTS);
+
          if ((evt->event() != m_currentEvent) || 
              (m_currentTS_i && (evt->ts() != m_currentTS)))
             {
              // Previous event does not end correctly so send out it now...
+             DBG("flushKey %u\n", m_currentTS);
              m_keysink->flushKey(m_currentTS);
              // ... and reinitialize to process current event
              gettimeofday(&m_startTime, NULL);
@@ -398,6 +418,7 @@ void AmRtpDtmfDetector::process(AmRtpDtmfEvent *evt)
              m_currentTS_i = true;
             }
         }
+      DBG("registerKeyPressed %d, %u\n", m_currentEvent, m_currentTS);
       m_keysink->registerKeyPressed(m_currentEvent, Dtmf::SOURCE_RTP, true, 
m_currentTS);
     }
 }
@@ -408,6 +429,7 @@ void AmRtpDtmfDetector::sendPending()
     {
       struct timeval end_time;
       gettimeofday(&end_time, NULL);
+      DBG("registerKeyReleased(%d, ... %u)\n", m_currentEvent, m_currentTS);
       m_keysink->registerKeyReleased(m_currentEvent, Dtmf::SOURCE_RTP, 
m_startTime, end_time, true, m_currentTS);
       m_eventPending = false;
       m_currentTS_i = false;
@@ -420,6 +442,7 @@ void AmRtpDtmfDetector::checkTimeout()
 {
   if (m_eventPending && m_packetCount++ > MAX_PACKET_WAIT)
     {
+      DBG("idle timeout ... sendPending()\n");
       sendPending();
     }
 }

_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev

Reply via email to