Karsten Keil | 960366c | 2008-07-27 01:56:38 +0200 | [diff] [blame] | 1 | #ifndef __mISDNdsp_H__ |
| 2 | #define __mISDNdsp_H__ |
| 3 | |
| 4 | struct mISDN_dsp_element_arg { |
| 5 | char *name; |
| 6 | char *def; |
| 7 | char *desc; |
| 8 | }; |
| 9 | |
| 10 | struct mISDN_dsp_element { |
| 11 | char *name; |
| 12 | void *(*new)(const char *arg); |
| 13 | void (*free)(void *p); |
| 14 | void (*process_tx)(void *p, unsigned char *data, int len); |
Andreas Eversberg | 7cfa153 | 2009-05-22 11:04:46 +0000 | [diff] [blame] | 15 | void (*process_rx)(void *p, unsigned char *data, int len, |
| 16 | unsigned int txlen); |
Karsten Keil | 960366c | 2008-07-27 01:56:38 +0200 | [diff] [blame] | 17 | int num_args; |
| 18 | struct mISDN_dsp_element_arg |
| 19 | *args; |
| 20 | }; |
| 21 | |
| 22 | extern int mISDN_dsp_element_register(struct mISDN_dsp_element *elem); |
| 23 | extern void mISDN_dsp_element_unregister(struct mISDN_dsp_element *elem); |
| 24 | |
| 25 | struct dsp_features { |
| 26 | int hfc_id; /* unique id to identify the chip (or -1) */ |
| 27 | int hfc_dtmf; /* set if HFCmulti card supports dtmf */ |
Karsten Keil | db9bb63 | 2009-05-22 11:04:53 +0000 | [diff] [blame] | 28 | int hfc_conf; /* set if HFCmulti card supports conferences */ |
Karsten Keil | 960366c | 2008-07-27 01:56:38 +0200 | [diff] [blame] | 29 | int hfc_loops; /* set if card supports tone loops */ |
| 30 | int hfc_echocanhw; /* set if card supports echocancelation*/ |
| 31 | int pcm_id; /* unique id to identify the pcm bus (or -1) */ |
| 32 | int pcm_slots; /* number of slots on the pcm bus */ |
| 33 | int pcm_banks; /* number of IO banks of pcm bus */ |
| 34 | int unclocked; /* data is not clocked (has jitter/loss) */ |
| 35 | int unordered; /* data is unordered (packets have index) */ |
| 36 | }; |
| 37 | |
| 38 | #endif |
| 39 | |