diff options
-rw-r--r-- | wctdm24xxp/base.c | 7 | ||||
-rw-r--r-- | wctdm24xxp/wctdm24xxp.h | 8 |
2 files changed, 12 insertions, 3 deletions
diff --git a/wctdm24xxp/base.c b/wctdm24xxp/base.c index c789dc6..c91f3fd 100644 --- a/wctdm24xxp/base.c +++ b/wctdm24xxp/base.c @@ -283,6 +283,7 @@ static int fxorxgain = 0; static int fxstxgain = 0; static int fxsrxgain = 0; static int nativebridge = 1; +static int ringdebounce = DEFAULT_RING_DEBOUNCE; #ifdef VPM_SUPPORT static int vpmsupport = 1; static int vpmdtmfsupport = 0; @@ -1300,14 +1301,14 @@ static inline void wctdm_voicedaa_check_hook(struct wctdm *wc, int card) res = wc->cmdq[card].isrshadow[0]; /* Hook/Ring state */ if ((res & 0x60) && wc->mods[card].fxo.battery) { wc->mods[card].fxo.ringdebounce += (ZT_CHUNKSIZE * 4); - if (wc->mods[card].fxo.ringdebounce >= ZT_CHUNKSIZE * RING_DEBOUNCE) { + if (wc->mods[card].fxo.ringdebounce >= ZT_CHUNKSIZE * ringdebounce) { if (!wc->mods[card].fxo.wasringing) { wc->mods[card].fxo.wasringing = 1; zt_hooksig(&wc->chans[card], ZT_RXSIG_RING); if (debug & DEBUG_CARD) printk("RING on %d/%d!\n", wc->span.spanno, card + 1); } - wc->mods[card].fxo.ringdebounce = ZT_CHUNKSIZE * RING_DEBOUNCE; + wc->mods[card].fxo.ringdebounce = ZT_CHUNKSIZE * ringdebounce; } } else { wc->mods[card].fxo.ringdebounce -= ZT_CHUNKSIZE; @@ -4196,6 +4197,7 @@ module_param(fxotxgain, int, 0600); module_param(fxorxgain, int, 0600); module_param(fxstxgain, int, 0600); module_param(fxsrxgain, int, 0600); +module_param(ringdebounce, int, 0600); #ifdef VPM_SUPPORT module_param(vpmsupport, int, 0600); module_param(vpmdtmfsupport, int, 0600); @@ -4219,6 +4221,7 @@ MODULE_PARM(fxotxgain, "i"); MODULE_PARM(fxorxgain, "i"); MODULE_PARM(fxstxgain, "i"); MODULE_PARM(fxsrxgain, "i"); +MODULE_PARM(ringdebounce, "i"); #ifdef VPM_SUPPORT MODULE_PARM(vpmsupport, "i"); MODULE_PARM(vpmdtmfsupport, "i"); diff --git a/wctdm24xxp/wctdm24xxp.h b/wctdm24xxp/wctdm24xxp.h index b7067ca..16260cb 100644 --- a/wctdm24xxp/wctdm24xxp.h +++ b/wctdm24xxp/wctdm24xxp.h @@ -8,7 +8,13 @@ #define WC_MAX_IFACES 128 -#define RING_DEBOUNCE 128 /* Ringer Debounce (in ms) */ +/*! + * \brief Default ringer debounce (in ms) + * + * \todo This value differs from that in wctdm. In that module, it is 64 ms + * instead of 128 ms. Which one is more appropriate? + */ +#define DEFAULT_RING_DEBOUNCE 128 #define DEFAULT_BATT_DEBOUNCE 64 /* Battery debounce (in ms) */ #define POLARITY_DEBOUNCE 64 /* Polarity debounce (in ms) */ #define DEFAULT_BATT_THRESH 3 /* Anything under this is "no battery" */ |