work on chan_lcr
[lcr.git] / bchannel.h
1 /*****************************************************************************\
2 **                                                                           **
3 ** Linux Call Router                                                         **
4 **                                                                           **
5 **---------------------------------------------------------------------------**
6 ** Copyright: Andreas Eversberg                                              **
7 **                                                                           **
8 ** mISDN channel handlin for remote application                              **
9 **                                                                           **
10 \*****************************************************************************/ 
11
12
13 struct bchannel {
14         struct bchannel *next;
15         struct chan_call *call;         /* ink to call process */
16         unsigned long handle;           /* handle for stack id */
17 #ifdef SOCKET_MISDN
18         int b_sock;                     /* socket for b-channel */
19 #else
20         unsigned long b_stid;           /* stack id */
21         unsigned long b_addr;           /* channel address */
22 #endif
23         unsigned short bridge_id;       /* bridge id */
24         struct bchannel *bridge_channel;
25                                         /* remote channel */
26         int b_state;
27         int b_txdata;
28         int b_delay;
29         int b_tx_dejitter;
30         int b_tx_gain, b_rx_gain;
31         char b_pipeline[256];
32         unsigned long b_conf;
33         int b_echo;
34         int b_tone;
35         int b_rxoff;
36         // int b_txmix;
37         int b_dtmf;
38         int b_crypt_len;
39         int b_crypt_type;
40         unsigned char b_crypt_key[128];
41
42         void (*rx_data)(struct bchannel *bchannel, unsigned char *data, int len);
43         void (*rx_dtmf)(struct bchannel *bchannel, char tone);
44 };
45
46
47 extern struct bchannel *bchannel_first;
48
49 int bchannel_initialize(void);
50 void bchannel_deinitialize(void);
51 int bchannel_create(struct bchannel *channel);
52 void bchannel_activate(struct bchannel *channel, int activate);
53 void bchannel_transmit(struct bchannel *channel, unsigned char *data, int len);
54 void bchannel_join(struct bchannel *channel, unsigned short id);
55 int bchannel_handle(void);
56 struct bchannel *find_bchannel_handle(unsigned long handle);
57 struct bchannel *find_bchannel_ref(unsigned long ref);
58 struct bchannel *alloc_bchannel(unsigned long handle);
59 void free_bchannel(struct bchannel *channel);
60