summaryrefslogtreecommitdiff
path: root/xpp/card_fxo.c
diff options
context:
space:
mode:
authortzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2006-09-04 21:58:47 +0000
committertzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2006-09-04 21:58:47 +0000
commitfa2e39e7130a75e0a446095ff0a55cd003a0c165 (patch)
treee0f2709b7a8d976eab36dbde7f339c8ce46b723a /xpp/card_fxo.c
parent4d1a1aac91bcb80a42ccefa2b6ae50a00a2585a3 (diff)
Minor code cleanup: No more SETHOOK method. It's only used in FXO, so
now it's an internal function: __do_sethook() git-svn-id: http://svn.digium.com/svn/zaptel/trunk@1383 5390a7c7-147a-4af0-8ec9-7488f05a26cb
Diffstat (limited to 'xpp/card_fxo.c')
-rw-r--r--xpp/card_fxo.c58
1 files changed, 28 insertions, 30 deletions
diff --git a/xpp/card_fxo.c b/xpp/card_fxo.c
index 4bd9221..1b3e6cc 100644
--- a/xpp/card_fxo.c
+++ b/xpp/card_fxo.c
@@ -59,7 +59,6 @@ enum fxo_leds {
static /* 0x0F */ DECLARE_CMD(FXO, CHAN_ENABLE, xpp_line_t lines, bool on);
static /* 0x0F */ DECLARE_CMD(FXO, CHAN_CID, int pos);
static /* 0x0F */ DECLARE_CMD(FXO, RING, int pos, bool on);
-static /* 0x0F */ DECLARE_CMD(FXO, SETHOOK, int pos, bool offhook);
static /* 0x0F */ DECLARE_CMD(FXO, RELAY_OUT, byte which, bool on);
static /* 0x0F */ DECLARE_CMD(FXO, DAA_QUERY, int pos, byte reg_num);
@@ -212,6 +211,33 @@ 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)
+{
+ int ret = 0;
+ xpacket_t *pack;
+ slic_cmd_t *sc;
+ int len;
+ bool value;
+ struct FXO_priv_data *priv;
+
+ BUG_ON(!xbus);
+ BUG_ON(!xpd);
+ priv = (struct FXO_priv_data*)xpd->priv;
+ value = (offhook) ? 0x09 : 0x08;
+ // value |= BIT(3); /* Bit 3 is for CID */
+ DBG("%s/%s/%d: SETHOOK: value=0x%02X %s\n", xbus->busname, xpd->xpdname, pos, value, (offhook)?"OFFHOOK":"ONHOOK");
+ MARK_LED(xpd, pos, LED_GREEN, (offhook)?LED_ON:LED_OFF);
+ XPACKET_NEW(pack, xbus, FXO, DAA_WRITE, xpd->id);
+ sc = &RPACKET_FIELD(pack, FXO, DAA_WRITE, slic_cmd);
+ len = slic_cmd_direct_write(sc, BIT(pos), 0x05, value);
+ pack->datalen = len;
+ packet_send(xbus, pack);
+ if(!offhook)
+ mark_ring(xpd, pos, 0); // No more rings
+ priv->ring_sig[pos] = 0;
+ return ret;
+}
+
static void do_sethook(xpd_t *xpd, int pos, bool offhook)
{
unsigned long flags;
@@ -227,7 +253,7 @@ static void do_sethook(xpd_t *xpd, int pos, bool offhook)
spin_lock_irqsave(&xpd->lock, flags);
mark_ring(xpd, pos, 0); // No more rings
priv->ring_sig[pos] = 0;
- CALL_XMETHOD(SETHOOK, xpd->xbus, xpd, pos, offhook);
+ __do_sethook(xpd->xbus, xpd, pos, offhook);
if(offhook) {
BIT_SET(xpd->hookstate, pos);
} else {
@@ -604,33 +630,6 @@ static /* 0x0F */ HOSTCMD(FXO, RING, int pos, bool on)
return ret;
}
-static /* 0x0F */ HOSTCMD(FXO, SETHOOK, int pos, bool offhook)
-{
- int ret = 0;
- xpacket_t *pack;
- slic_cmd_t *sc;
- int len;
- bool value;
- struct FXO_priv_data *priv;
-
- BUG_ON(!xbus);
- BUG_ON(!xpd);
- priv = (struct FXO_priv_data*)xpd->priv;
- value = (offhook) ? 0x09 : 0x08;
- // value |= BIT(3); /* Bit 3 is for CID */
- DBG("%s/%s/%d: SETHOOK: value=0x%02X %s\n", xbus->busname, xpd->xpdname, pos, value, (offhook)?"OFFHOOK":"ONHOOK");
- MARK_LED(xpd, pos, LED_GREEN, (offhook)?LED_ON:LED_OFF);
- XPACKET_NEW(pack, xbus, FXO, DAA_WRITE, xpd->id);
- sc = &RPACKET_FIELD(pack, FXO, DAA_WRITE, slic_cmd);
- len = slic_cmd_direct_write(sc, BIT(pos), 0x05, value);
- pack->datalen = len;
- packet_send(xbus, pack);
- if(!offhook)
- mark_ring(xpd, pos, 0); // No more rings
- priv->ring_sig[pos] = 0;
- return ret;
-}
-
static /* 0x0F */ HOSTCMD(FXO, RELAY_OUT, byte which, bool on)
{
return -ENOSYS;
@@ -806,7 +805,6 @@ xproto_table_t PROTO_TABLE(FXO) = {
.card_ioctl = FXO_card_ioctl,
.RING = XPROTO_CALLER(FXO, RING),
- .SETHOOK = XPROTO_CALLER(FXO, SETHOOK),
.RELAY_OUT = XPROTO_CALLER(FXO, RELAY_OUT),
.CHAN_ENABLE = XPROTO_CALLER(FXO, CHAN_ENABLE),
.CHAN_CID = XPROTO_CALLER(FXO, CHAN_CID),