summaryrefslogtreecommitdiff
path: root/xpp/card_fxo.c
diff options
context:
space:
mode:
authortzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2006-09-04 22:42:02 +0000
committertzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2006-09-04 22:42:02 +0000
commit909d1e663eab279fa8736a0d14fda263b66e9556 (patch)
treea0b413575864a49759ec9eff0bd5b95ac0fa6590 /xpp/card_fxo.c
parentacf2b09dc842fd687446b9d725ca0fbb694aa5bd (diff)
Fix FXO polling (separate poll_counter for each unit)
git-svn-id: http://svn.digium.com/svn/zaptel/trunk@1387 5390a7c7-147a-4af0-8ec9-7488f05a26cb
Diffstat (limited to 'xpp/card_fxo.c')
-rw-r--r--xpp/card_fxo.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/xpp/card_fxo.c b/xpp/card_fxo.c
index 1b3e6cc..56ed05a 100644
--- a/xpp/card_fxo.c
+++ b/xpp/card_fxo.c
@@ -82,6 +82,7 @@ static int process_slic_cmdline(xpd_t *xpd, char *cmdline);
struct FXO_priv_data {
struct proc_dir_entry *xpd_slic;
struct proc_dir_entry *fxo_info;
+ uint poll_counter;
slic_reply_t requested_reply;
slic_reply_t last_reply;
xpp_line_t battery;
@@ -211,7 +212,7 @@ static void mark_ring(xpd_t *xpd, lineno_t pos, bool on)
}
}
-static __do_sethook(xbus_t *xbus, xpd_t *xpd, int pos, bool offhook)
+static int __do_sethook(xbus_t *xbus, xpd_t *xpd, int pos, bool offhook)
{
int ret = 0;
xpacket_t *pack;
@@ -496,21 +497,20 @@ static void poll_ring(xbus_t *xbus, xpd_t *xpd)
static int FXO_card_tick(xbus_t *xbus, xpd_t *xpd)
{
- static unsigned rate_limit = 0;
struct FXO_priv_data *priv;
BUG_ON(!xpd);
priv = xpd->priv;
BUG_ON(!priv);
- rate_limit++;
- if(poll_battery_interval != 0 && (rate_limit % poll_battery_interval) == 0) {
+ if(poll_battery_interval != 0 && (priv->poll_counter % poll_battery_interval) == 0) {
poll_battery(xbus, xpd);
}
#ifdef SOFT_RING
- if((rate_limit % POLL_RING_INTERVAL) == 0)
+ if((priv->poll_counter % POLL_RING_INTERVAL) == 0)
poll_ring(xbus, xpd);
#endif
handle_fxo_leds(xpd);
+ priv->poll_counter++;
return 0;
}