Merged revisions 67334 via svnmerge from
[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 #if !defined MISDNUSER_VERSION_CODE || (MISDNUSER_VERSION_CODE < MISDNUSER_VERSION(1, 0, 3))
15 #error "You need a newer version of mISDNuser ..."
16 #endif
17
18
19 #define QI_ELEMENT(a) a.off
20
21
22 #ifndef mISDNUSER_HEAD_SIZE
23
24 #define mISDNUSER_HEAD_SIZE (sizeof(mISDNuser_head_t))
25 /*#define mISDNUSER_HEAD_SIZE (sizeof(mISDN_head_t))*/
26 #endif
27
28
29 ibuffer_t *astbuf;
30 ibuffer_t *misdnbuf;
31
32 struct send_lock {
33         pthread_mutex_t lock;
34 };
35
36
37 struct isdn_msg {
38         unsigned long misdn_msg;
39   
40         enum layer_e layer;
41         enum event_e event;
42   
43         void (*msg_parser)(struct isdn_msg *msgs, msg_t *msg, struct misdn_bchannel *bc, int nt);
44         msg_t *(*msg_builder)(struct isdn_msg *msgs, struct misdn_bchannel *bc, int nt);
45         char *info;
46   
47 } ; 
48
49 /* for isdn_msg_parser.c */
50 msg_t *create_l3msg(int prim, int mt, int dinfo , int size, int nt);
51
52
53
54 struct misdn_stack {
55         /** is first element because &nst equals &mISDNlist **/
56         net_stack_t nst;
57         manager_t mgr;
58   
59         int d_stid;
60   
61         int b_num;
62   
63         int b_stids[MAX_BCHANS + 1];
64   
65         int ptp;
66
67         int l2upcnt;
68
69         int l2_id;
70         int lower_id;
71         int upper_id;
72   
73
74         int blocked;
75
76         int l2link;
77   
78         time_t l2establish;
79   
80         int l1link;
81         int midev;
82   
83         int nt;
84         
85         int pri;
86   
87
88         int procids[0x100+1];
89
90         msg_queue_t downqueue;
91         msg_queue_t upqueue;
92         int busy;
93   
94         int port;
95         struct misdn_bchannel bc[MAX_BCHANS + 1];
96   
97         struct misdn_bchannel* bc_list; 
98   
99         int channels[MAX_BCHANS + 1];
100
101   
102         struct misdn_bchannel *holding; /* Queue which holds holded channels :) */
103   
104         struct misdn_stack *next;
105 }; 
106
107
108 struct misdn_stack* get_stack_by_bc(struct misdn_bchannel *bc);
109
110 int isdn_msg_get_index(struct isdn_msg msgs[], msg_t *frm, int nt);
111 enum event_e isdn_msg_get_event(struct isdn_msg msgs[], msg_t *frm, int nt);
112 int isdn_msg_parse_event(struct isdn_msg msgs[], msg_t *frm, struct misdn_bchannel *bc, int nt);
113 char * isdn_get_info(struct isdn_msg msgs[], enum event_e event, int nt);
114 msg_t * isdn_msg_build_event(struct isdn_msg msgs[], struct misdn_bchannel *bc, enum event_e event, int nt);
115 int isdn_msg_get_index_by_event(struct isdn_msg msgs[], enum event_e event, int nt);
116 char * isdn_msg_get_info(struct isdn_msg msgs[], msg_t *msg, int nt);
117
118
119 #endif