Fixed again the off-hook detection logic, was generating too many events.

git-svn-id: http://voip.null.ro/svn/yate@2122 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
paulc 2008-08-01 19:19:59 +00:00
parent 665bbe7a12
commit 4f109956a3
1 changed files with 6 additions and 11 deletions

View File

@ -1053,20 +1053,15 @@ void ZapDevice::pollHook()
if (!ioctl(GetParams,&par))
return;
if (m_rxHookSig == par.rxhooksig)
int rxsig = par.rxhooksig;
if (rxsig != RxSigOnHook)
rxsig = RxSigOffHook;
if (m_rxHookSig == rxsig)
return;
// state changed, save the event for later
m_rxHookSig = par.rxhooksig;
m_rxHookSig = rxsig;
// states are reversed but that's how Zaptel is...
switch (m_rxHookSig) {
case RxSigInitial:
case RxSigOffHook:
m_savedEvent = ZT_EVENT_ONHOOK;
break;
case RxSigOnHook:
m_savedEvent = ZT_EVENT_WINKFLASH;
break;
}
m_savedEvent = (rxsig == RxSigOnHook) ? ZT_EVENT_WINKFLASH : ZT_EVENT_ONHOOK;
}
// Send hook events