summaryrefslogtreecommitdiff
path: root/xpp/xproto.h
diff options
context:
space:
mode:
authortzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2007-08-02 12:21:11 +0000
committertzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2007-08-02 12:21:11 +0000
commitc88eaa22e13bd4c092b367a28e57064659660466 (patch)
tree2978dd7342b09b60bf9dbe5e333d043fb43d9114 /xpp/xproto.h
parent183cf9c2af77e6444450cf5d2b5c62ca6b875fbe (diff)
Merge xpp r4372:
* 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) (From branches/1.2 r2732, r2735 - branches/1.4 2736) git-svn-id: http://svn.digium.com/svn/zaptel/trunk@2813 5390a7c7-147a-4af0-8ec9-7488f05a26cb
Diffstat (limited to 'xpp/xproto.h')
-rw-r--r--xpp/xproto.h23
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);