diff options
author | tzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2007-07-12 22:49:13 +0000 |
---|---|---|
committer | tzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2007-07-12 22:49:13 +0000 |
commit | 5e3f82cf4b7a4788fc9e0a78782ad05988c4502c (patch) | |
tree | db449f3f67ff0991e55df5aca04ff1c6b9419981 /xpp/xproto.h | |
parent | eeb46da049ee996c180b0bbc716bcabdf1931e7e (diff) |
xpp driver r4371:
* Update to zaptel-1.2.18 and zaptel-1.4.3 (r4308 onward)
* Fix a critical race with zaptel synchronization (r4362)
* Added a /proc/xpp/cmds for statistics about command timing (r4360)
* Fix a digit mapping bug with hardware dtmf detection (r4357)
* In xpp/utils/Makefile add perl syntax checks to our scripts (r4337)
* Better USB data error checking (r4336)
* udev rules (xpp.rules) avoid false calls from wrong nodes (r4331)
* Improve hardware detection and reporting in lszaptel,
zaptel_hardware. zapconf is basically functional.
* Leds are blinked synchronously on all Astribanks now (r4262)
* Fix a BRI bug if OPTIMIZE_CHANMUTE was compiled into zaptel (r4258)
(This feature was not yet accepted into official zaptel)
* Removed compile warning about HZ != 1000 (r4218)
* Firmware updates.
* fpga_load now supports USB pathes without zeros (r4211)
* XPD numbers have changed to '<Unit><Subunit>' (r4196)
* Proper support for ZT_VMWI ioctl, if used in zaptel (r4092)
* Fix FXO power denial detection (r4054)
* FXO could accidentally go off-hook with some compilers (r4048)
git-svn-id: http://svn.digium.com/svn/zaptel/branches/1.2@2732 5390a7c7-147a-4af0-8ec9-7488f05a26cb
Diffstat (limited to 'xpp/xproto.h')
-rw-r--r-- | xpp/xproto.h | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/xpp/xproto.h b/xpp/xproto.h index 24d61b1..30140b0 100644 --- a/xpp/xproto.h +++ b/xpp/xproto.h @@ -59,11 +59,7 @@ typedef struct xpd_addr { } PACKED xpd_addr_t; bool valid_xpd_addr(const xpd_addr_t *addr); -int xpd_addr2num(const xpd_addr_t *addr); void xpd_set_addr(xpd_addr_t *addr, int xpd_num); -xpd_t *xpd_by_addr(const xbus_t *xbus, int unit, int subunit); - -#define XPD_NUM(x) xpd_addr2num(&x) #define XPROTO_NAME(card,op) card ## _ ## op #define XPROTO_HANDLER(card,op) XPROTO_NAME(card,op ## _handler) @@ -124,11 +120,11 @@ xpd_t *xpd_by_addr(const xbus_t *xbus, int unit, int subunit); frm = xbus->ops->xframe_new(xbus, GFP_ATOMIC); \ if(!frm) \ return -ENOMEM; \ - p = xframe_next_packet(frm, len); \ - if(!p) \ + (p) = xframe_next_packet(frm, len); \ + if(!(p)) \ return -ENOMEM; \ XPACKET_INIT(p, card, op); \ - xpd_set_addr(&p->addr, to); \ + xpd_set_addr(&(p)->addr, (to)); \ } while(0) #endif @@ -206,19 +202,18 @@ xproto_handler_t xproto_global_handler(byte opcode); (xpd)->xops->name(xbus, xpd, ## __VA_ARGS__ ) struct xops { - xpd_t *(*card_new)(xbus_t *xbus, int xpd_num, const xproto_table_t *proto_table, byte revision); + xpd_t *(*card_new)(xbus_t *xbus, int unit, int subunit, const xproto_table_t *proto_table, byte revision); int (*card_init)(xbus_t *xbus, xpd_t *xpd); int (*card_remove)(xbus_t *xbus, xpd_t *xpd); int (*card_tick)(xbus_t *xbus, xpd_t *xpd); + void (*card_pcm_fromspan)(xbus_t *xbus, xpd_t *xpd, xpp_line_t lines, xpacket_t *pack); + void (*card_pcm_tospan)(xbus_t *xbus, xpd_t *xpd, xpacket_t *pack); int (*card_zaptel_preregistration)(xpd_t *xpd, bool on); int (*card_zaptel_postregistration)(xpd_t *xpd, bool on); int (*card_hooksig)(xbus_t *xbus, xpd_t *xpd, int pos, zt_txsig_t 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 (*span_startup)(xpd_t *xpd); - int (*span_shutdown)(xpd_t *xpd); - int (*chan_onhooktransfer)(xbus_t *xbus, xpd_t *xpd, lineno_t chan, int millies); int (*XPD_STATE)(xbus_t *xbus, xpd_t *xpd, bool on); int (*RING)(xbus_t *xbus, xpd_t *xpd, lineno_t chan, bool on); @@ -234,7 +229,7 @@ struct xproto_entry { struct xproto_table { struct module *owner; - xproto_entry_t entries[255]; /* Indexed by opcode */ + xproto_entry_t entries[256]; /* Indexed by opcode */ xops_t xops; xpd_type_t type; const char *name; @@ -259,6 +254,7 @@ enum opcodes { XPROTO_NAME(GLOBAL, SYNC_REPLY) = 0x1A, /**/ XPROTO_NAME(GLOBAL, ERROR_CODE) = 0x22, + XPROTO_NAME(GLOBAL, RESET_SYNC_COUNTERS) = 0x23, }; @@ -289,8 +285,9 @@ struct xpacket { } PACKED; void dump_packet(const char *msg, xpacket_t *packet, bool print_dbg); -void dump_reg_cmd(const char msg[], reg_cmd_t *regcmd); +void dump_reg_cmd(const char msg[], const reg_cmd_t *regcmd, bool writing); int xframe_receive(xbus_t *xbus, xframe_t *xframe); +void notify_bad_xpd(const char *funcname, xbus_t *xbus, const xpd_addr_t addr, const char *msg); int xproto_register(const xproto_table_t *proto_table); void xproto_unregister(const xproto_table_t *proto_table); const xproto_entry_t *xproto_global_entry(byte opcode); |