diff options
author | Tzafrir Cohen <tzafrir.cohen@xorcom.com> | 2011-01-30 14:14:14 +0000 |
---|---|---|
committer | Tzafrir Cohen <tzafrir.cohen@xorcom.com> | 2011-01-30 14:14:14 +0000 |
commit | 12efc4bad60d197754df29080c2de66d98041e5a (patch) | |
tree | 00241d7c5c38817a2fd68a4ae6065d45ba1e4a39 /drivers/dahdi/xpp/xproto.h | |
parent | 5ad21bfc23dc09b0e2acd0763e83b107b4e1dc80 (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.h | 30 |
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 { |