summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--wctdm24xxp/base.c7
-rw-r--r--wctdm24xxp/wctdm24xxp.h8
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" */