committed head of chan_misdn with a lot of new features. Most important of all: chan_...
[asterisk/asterisk.git] / channels / misdn / isdn_lib_intern.h
1 #ifndef ISDN_LIB_INTERN
2 #define ISDN_LIB_INTERN
3
4
5 #include <mISDNuser/mISDNlib.h>
6 #include <mISDNuser/isdn_net.h>
7 #include <mISDNuser/l3dss1.h>
8 #include <mISDNuser/net_l3.h>
9
10 #include <pthread.h>
11
12 #include "isdn_lib.h"
13
14 #define QI_ELEMENT(a) a.off
15
16
17 #ifndef mISDNUSER_HEAD_SIZE
18
19 #ifdef MISDNUSER_JOLLY
20 #define mISDNUSER_HEAD_SIZE (sizeof(mISDNuser_head_t))
21 #else
22 #define mISDNUSER_HEAD_SIZE (sizeof(mISDN_head_t))
23 #endif
24 #endif
25
26
27 ibuffer_t *astbuf;
28 ibuffer_t *misdnbuf;
29
30
31 struct isdn_msg {
32         unsigned long misdn_msg;
33   
34         enum layer_e layer;
35         enum event_e event;
36   
37         void (*msg_parser)(struct isdn_msg *msgs, msg_t *msg, struct misdn_bchannel *bc, int nt);
38         msg_t *(*msg_builder)(struct isdn_msg *msgs, struct misdn_bchannel *bc, int nt);
39         char *info;
40   
41 } ; 
42
43 /* for isdn_msg_parser.c */
44 msg_t *create_l3msg(int prim, int mt, int dinfo , int size, int nt);
45
46
47
48 struct misdn_stack {
49         /** is first element because &nst equals &mISDNlist **/
50         net_stack_t nst;
51         manager_t mgr;
52   
53         int d_stid;
54   
55         int b_num;
56   
57         int b_stids[MAX_BCHANS + 1];
58   
59         int ptp;
60
61         int l2_id;
62         int lower_id;
63         int upper_id;
64   
65         int l2link;
66   
67         time_t l2establish;
68   
69         int l1link;
70         int midev;
71   
72         int nt;
73         
74         int pri;
75   
76
77         int procids[0x100+1];
78
79         msg_queue_t downqueue;
80         int busy;
81   
82         int port;
83         struct misdn_bchannel bc[MAX_BCHANS + 1];
84   
85         struct misdn_bchannel* bc_list; 
86   
87         int channels[MAX_BCHANS + 1];
88
89   
90         struct misdn_bchannel *holding; /* Queue which holds holded channels :) */
91   
92         struct misdn_stack *next;
93 }; 
94
95
96 struct misdn_stack* get_stack_by_bc(struct misdn_bchannel *bc);
97
98 #endif