summaryrefslogtreecommitdiff
path: root/drivers/dahdi/xpp/xproto.h
diff options
context:
space:
mode:
authorTzafrir Cohen <tzafrir.cohen@xorcom.com>2011-01-30 14:14:14 +0000
committerTzafrir Cohen <tzafrir.cohen@xorcom.com>2011-01-30 14:14:14 +0000
commit12efc4bad60d197754df29080c2de66d98041e5a (patch)
tree00241d7c5c38817a2fd68a4ae6065d45ba1e4a39 /drivers/dahdi/xpp/xproto.h
parent5ad21bfc23dc09b0e2acd0763e83b107b4e1dc80 (diff)
xpp: phonedev: Cleanup method macros
* Caller to CALL_XMETHOD() no longer need to explicitly pass xbus (calculate xpd->xbus) * Create CALL_PHONE_METHOD() similar to CALL_XMETHOD() -- inlining the extra parameters (more readable) * Reverse parameter order in PHONE_METHOD() and CALL_PHONE_METHOD() to be consistent with XMETHOD() and CALL_XMETHOD() * Rename XPD_STATE phonedev method to card_state: - Consistency with other phonedev methods. - These calls now Wrap internal calls to XPD_STATE protocol HOSTCMD in PRI, BRI, FXS, FXO Signed-off-by: Oron Peled <oron@actcom.co.il> Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com> git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9706 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'drivers/dahdi/xpp/xproto.h')
-rw-r--r--drivers/dahdi/xpp/xproto.h30
1 files changed, 20 insertions, 10 deletions
diff --git a/drivers/dahdi/xpp/xproto.h b/drivers/dahdi/xpp/xproto.h
index c772273..78ef980 100644
--- a/drivers/dahdi/xpp/xproto.h
+++ b/drivers/dahdi/xpp/xproto.h
@@ -213,24 +213,34 @@ xproto_handler_t xproto_card_handler(const xproto_table_t *table, byte opcode);
const xproto_entry_t *xproto_global_entry(byte opcode);
xproto_handler_t xproto_global_handler(byte opcode);
-#define CALL_XMETHOD(name, xbus, xpd, ...) \
- (xpd)->xops->name(xbus, xpd, ## __VA_ARGS__ )
+/*
+ * XMETHOD() resolve to method pointer (NULL for optional methods)
+ * CALL_XMETHOD() calls the method, passing mandatory arguments
+ */
+#define XMETHOD(name, xpd) ((xpd)->xops->name)
+#define CALL_XMETHOD(name, xpd, ...) \
+ (XMETHOD(name, (xpd))((xpd)->xbus, (xpd), ## __VA_ARGS__ ))
-#define PHONE_METHOD(xpd, name) PHONEDEV(xpd).phoneops->name
+/*
+ * PHONE_METHOD() resolve to method pointer (NULL for optional methods)
+ * CALL_PHONE_METHOD() calls the method, passing mandatory arguments
+ */
+#define PHONE_METHOD(name, xpd) (PHONEDEV(xpd).phoneops->name)
+#define CALL_PHONE_METHOD(name, xpd, ...) \
+ (PHONE_METHOD(name, (xpd))((xpd), ## __VA_ARGS__ ))
struct phoneops {
- void (*card_pcm_recompute)(xbus_t *xbus, xpd_t *xpd, xpp_line_t pcm_mask);
- void (*card_pcm_fromspan)(xbus_t *xbus, xpd_t *xpd, xpacket_t *pack);
- void (*card_pcm_tospan)(xbus_t *xbus, xpd_t *xpd, xpacket_t *pack);
- int (*card_timing_priority)(xbus_t *xbus, xpd_t *xpd);
+ void (*card_pcm_recompute)(xpd_t *xpd, xpp_line_t pcm_mask);
+ void (*card_pcm_fromspan)(xpd_t *xpd, xpacket_t *pack);
+ void (*card_pcm_tospan)(xpd_t *xpd, xpacket_t *pack);
+ int (*card_timing_priority)(xpd_t *xpd);
int (*card_dahdi_preregistration)(xpd_t *xpd, bool on);
int (*card_dahdi_postregistration)(xpd_t *xpd, bool on);
- int (*card_hooksig)(xbus_t *xbus, xpd_t *xpd, int pos, enum dahdi_txsig txsig);
+ int (*card_hooksig)(xpd_t *xpd, int pos, enum dahdi_txsig txsig);
int (*card_ioctl)(xpd_t *xpd, int pos, unsigned int cmd, unsigned long arg);
int (*card_open)(xpd_t *xpd, lineno_t pos);
int (*card_close)(xpd_t *xpd, lineno_t pos);
-
- int (*XPD_STATE)(xbus_t *xbus, xpd_t *xpd, bool on);
+ int (*card_state)(xpd_t *xpd, bool on);
};
struct xops {