blob: 41d1eeb9b3bd5ea554308dd22bffbd05a8c23050 [file] [log] [blame]
Karsten Keil960366c2008-07-27 01:56:38 +02001#ifndef __mISDNdsp_H__
2#define __mISDNdsp_H__
3
4struct mISDN_dsp_element_arg {
5 char *name;
6 char *def;
7 char *desc;
8};
9
10struct 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 Eversberg7cfa1532009-05-22 11:04:46 +000015 void (*process_rx)(void *p, unsigned char *data, int len,
16 unsigned int txlen);
Karsten Keil960366c2008-07-27 01:56:38 +020017 int num_args;
18 struct mISDN_dsp_element_arg
19 *args;
20};
21
22extern int mISDN_dsp_element_register(struct mISDN_dsp_element *elem);
23extern void mISDN_dsp_element_unregister(struct mISDN_dsp_element *elem);
24
25struct 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 Keildb9bb632009-05-22 11:04:53 +000028 int hfc_conf; /* set if HFCmulti card supports conferences */
Karsten Keil960366c2008-07-27 01:56:38 +020029 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