Merge branch 'master' of ssh://
[lcr.git] / dss1.h
1 /*****************************************************************************\
2 **                                                                           **
3 ** PBX4Linux                                                                 **
4 **                                                                           **
5 **---------------------------------------------------------------------------**
6 ** Copyright: Andreas Eversberg                                              **
7 **                                                                           **
8 ** dss1-port header file                                                     **
9 **                                                                           **
10 \*****************************************************************************/ 
12 /* DSS1 port classes */
13 class Pdss1 : public PmISDN
14 {
15         public:
16         Pdss1(int type, struct mISDNport *mISDNport, char *portname, struct port_settings *settings, int channel, int exclusive);
17         ~Pdss1();
18 #ifdef SOCKET_MISDN
19         unsigned int p_m_d_l3id;                /* current l3 process id */
20         void message_isdn(unsigned int cmd, unsigned int pid, struct l3_msg *l3m);
21 #else
22         int p_m_d_l3id;                         /* current l3 process id */
23         void message_isdn(unsigned long prim, unsigned long dinfo, void *data);
24 #endif
25         int p_m_d_ces;                          /* ntmode: tei&sapi */
26         int handler(void);
27         int message_epoint(unsigned long epoint_id, int message, union parameter *param);
29         int p_m_d_ntmode;                       /* flags the nt-mode */
30         struct lcr_msg *p_m_d_queue;            /* queue for SETUP if link is down */
31         struct lcr_msg *p_m_d_notify_pending;   /* queue for NOTIFY if not connected */
33         int p_m_d_collect_cause;                /* collecting cause and location */
34         int p_m_d_collect_location;
36         void new_state(int state);              /* set new state */
37 //      void isdn_show_send_message(unsigned long prim, msg_t *msg);
38         int hunt_bchannel(int exclusive, int channel);
39 #ifdef SOCKET_MISDN
40         int received_first_reply_to_setup(unsigned long cmd, int channel, int exclusive);
41         void information_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m);
42         void setup_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m);
43         void setup_acknowledge_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m);
44         void proceeding_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m);
45         void alerting_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m);
46         void connect_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m);
47         void disconnect_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m);
48         void release_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m);
49         void release_complete_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m);
50         void disconnect_ind_i(unsigned int cmd, unsigned int pid, struct l3_msg *l3m);
51         void t312_timeout_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m);
52         void notify_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m);
53         void facility_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m);
54         void hold_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m);
55         void retrieve_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m);
56         void suspend_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m);
57         void resume_ind(unsigned int cmd, unsigned int pid, struct l3_msg *l3m);
58 #else
59         int received_first_reply_to_setup(unsigned long prim, int channel, int exclusive);
60         void information_ind(unsigned long prim, unsigned long dinfo, void *data);
61         void setup_ind(unsigned long prim, unsigned long dinfo, void *data);
62         void setup_acknowledge_ind(unsigned long prim, unsigned long dinfo, void *data);
63         void proceeding_ind(unsigned long prim, unsigned long dinfo, void *data);
64         void alerting_ind(unsigned long prim, unsigned long dinfo, void *data);
65         void connect_ind(unsigned long prim, unsigned long dinfo, void *data);
66         void disconnect_ind(unsigned long prim, unsigned long dinfo, void *data);
67         void release_ind(unsigned long prim, unsigned long dinfo, void *data);
68         void release_complete_ind(unsigned long prim, unsigned long dinfo, void *data);
69         void disconnect_ind_i(unsigned long prim, unsigned long dinfo, void *data);
70         void t312_timeout_ind(unsigned long prim, unsigned long dinfo, void *data);
71         void notify_ind(unsigned long prim, unsigned long dinfo, void *data);
72         void facility_ind(unsigned long prim, unsigned long dinfo, void *data);
73         void hold_ind(unsigned long prim, unsigned long dinfo, void *data);
74         void retrieve_ind(unsigned long prim, unsigned long dinfo, void *data);
75         void suspend_ind(unsigned long prim, unsigned long dinfo, void *data);
76         void resume_ind(unsigned long prim, unsigned long dinfo, void *data);
77 #endif
78         void message_information(unsigned long epoint_id, int message_id, union parameter *param);
79         void message_setup(unsigned long epoint_id, int message_id, union parameter *param);
80         void message_notify(unsigned long epoint_id, int message_id, union parameter *param);
81         void message_facility(unsigned long epoint_id, int message_id, union parameter *param);
82         void message_overlap(unsigned long epoint_id, int message_id, union parameter *param);
83         void message_proceeding(unsigned long epoint_id, int message_id, union parameter *param);
84         void message_alerting(unsigned long epoint_id, int message_id, union parameter *param);
85         void message_connect(unsigned long epoint_id, int message_id, union parameter *param);
86         void message_disconnect(unsigned long epoint_id, int message_id, union parameter *param);
87         void message_release(unsigned long epoint_id, int message_id, union parameter *param);
89         /* IE conversion */
90 #ifdef SOCKET_MISDN
91         void enc_ie_complete(struct l3_msg *l3m, int complete);
92         void dec_ie_complete(struct l3_msg *l3m, int *complete);
93         void enc_ie_bearer(struct l3_msg *l3m, int coding, int capability, int mode, int rate, int multi, int user);
94         void dec_ie_bearer(struct l3_msg *l3m, int *coding, int *capability, int *mode, int *rate, int *multi, int *user);
95         void enc_ie_call_id(struct l3_msg *l3m, unsigned char *callid, int callid_len);
96         void dec_ie_call_id(struct l3_msg *l3m, unsigned char *callid, int *callid_len);
97         void enc_ie_called_pn(struct l3_msg *l3m, int type, int plan, unsigned char *number);
98         void dec_ie_called_pn(struct l3_msg *l3m, int *type, int *plan, unsigned char *number, int number_len);
99         void enc_ie_calling_pn(struct l3_msg *l3m, int type, int plan, int present, int screen, unsigned char *number);
100         void dec_ie_calling_pn(struct l3_msg *l3m, int *type, int *plan, int *present, int *screen, unsigned char *number, int number_len);
101         void enc_ie_connected_pn(struct l3_msg *l3m, int type, int plan, int present, int screen, unsigned char *number);
102         void dec_ie_connected_pn(struct l3_msg *l3m, int *type, int *plan, int *present, int *screen, unsigned char *number, int number_len);
103         void enc_ie_cause(struct l3_msg *l3m, int location, int cause);
104         void dec_ie_cause(struct l3_msg *l3m, int *location, int *cause);
105         void enc_ie_channel_id(struct l3_msg *l3m, int exclusive, int channel);
106         void dec_ie_channel_id(struct l3_msg *l3m, int *exclusive, int *channel);
107         void enc_ie_date(struct l3_msg *l3m, time_t ti, int seconds);
108         void enc_ie_display(struct l3_msg *l3m, unsigned char *display);
109         void dec_ie_display(struct l3_msg *l3m, unsigned char *display, int display_len);
110         void enc_ie_keypad(struct l3_msg *l3m, unsigned char *keypad);
111         void dec_ie_keypad(struct l3_msg *l3m, unsigned char *keypad, int keypad_len);
112         void enc_ie_notify(struct l3_msg *l3m, int notify);
113         void dec_ie_notify(struct l3_msg *l3m, int *notify);
114         void enc_ie_progress(struct l3_msg *l3m, int coding, int location, int progress);
115         void dec_ie_progress(struct l3_msg *l3m, int *coding, int *location, int *progress);
116         void enc_ie_hlc(struct l3_msg *l3m, int coding, int interpretation, int presentation, int hlc, int exthlc);
117         void dec_ie_hlc(struct l3_msg *l3m, int *coding, int *interpretation, int *presentation, int *hlc, int *exthlc);
118         void enc_ie_redir_nr(struct l3_msg *l3m, int type, int plan, int present, int screen, int reason, unsigned char *number);
119         void dec_ie_redir_nr(struct l3_msg *l3m, int *type, int *plan, int *present, int *screen, int *reason, unsigned char *number, int number_len);
120         void enc_ie_redir_dn(struct l3_msg *l3m, int type, int plan, int present, unsigned char *number);
121         void dec_ie_redir_dn(struct l3_msg *l3m, int *type, int *plan, int *present, unsigned char *number, int number_len);
122         void enc_ie_facility(struct l3_msg *l3m, unsigned char *facility, int facility_len);
123         void dec_ie_facility(struct l3_msg *l3m, unsigned char *facility, int *facility_len);
124         void dec_facility_centrex(struct l3_msg *l3m, unsigned char *cnip, int cnip_len);
125         void enc_ie_useruser(struct l3_msg *l3m, int protocol, unsigned char *user, int user_len);
126         void dec_ie_useruser(struct l3_msg *l3m, int *protocol, unsigned char *user, int *user_len);
127 #else
128         void enc_ie_complete(unsigned char **ntmode, msg_t *msg, int complete);
129         void dec_ie_complete(unsigned char *p, Q931_info_t *qi, int *complete);
130         void enc_ie_bearer(unsigned char **ntmode, msg_t *msg, int coding, int capability, int mode, int rate, int multi, int user);
131         void dec_ie_bearer(unsigned char *p, Q931_info_t *qi, int *coding, int *capability, int *mode, int *rate, int *multi, int *user);
132         void enc_ie_call_id(unsigned char **ntmode, msg_t *msg, unsigned char *callid, int callid_len);
133         void dec_ie_call_id(unsigned char *p, Q931_info_t *qi, unsigned char *callid, int *callid_len);
134         void enc_ie_called_pn(unsigned char **ntmode, msg_t *msg, int type, int plan, unsigned char *number);
135         void dec_ie_called_pn(unsigned char *p, Q931_info_t *qi, int *type, int *plan, unsigned char *number, int number_len);
136         void enc_ie_calling_pn(unsigned char **ntmode, msg_t *msg, int type, int plan, int present, int screen, unsigned char *number);
137         void dec_ie_calling_pn(unsigned char *p, Q931_info_t *qi, int *type, int *plan, int *present, int *screen, unsigned char *number, int number_len);
138         void enc_ie_connected_pn(unsigned char **ntmode, msg_t *msg, int type, int plan, int present, int screen, unsigned char *number);
139         void dec_ie_connected_pn(unsigned char *p, Q931_info_t *qi, int *type, int *plan, int *present, int *screen, unsigned char *number, int number_len);
140         void enc_ie_cause(unsigned char **ntmode, msg_t *msg, int location, int cause);
141         void dec_ie_cause(unsigned char *p, Q931_info_t *qi, int *location, int *cause);
142         void enc_ie_channel_id(unsigned char **ntmode, msg_t *msg, int exclusive, int channel);
143         void dec_ie_channel_id(unsigned char *p, Q931_info_t *qi, int *exclusive, int *channel);
144         void enc_ie_date(unsigned char **ntmode, msg_t *msg, time_t ti, int seconds);
145         void enc_ie_display(unsigned char **ntmode, msg_t *msg, unsigned char *display);
146         void dec_ie_display(unsigned char *p, Q931_info_t *qi, unsigned char *display, int display_len);
147         void enc_ie_keypad(unsigned char **ntmode, msg_t *msg, unsigned char *keypad);
148         void dec_ie_keypad(unsigned char *p, Q931_info_t *qi, unsigned char *keypad, int keypad_len);
149         void enc_ie_notify(unsigned char **ntmode, msg_t *msg, int notify);
150         void dec_ie_notify(unsigned char *p, Q931_info_t *qi, int *notify);
151         void enc_ie_progress(unsigned char **ntmode, msg_t *msg, int coding, int location, int progress);
152         void dec_ie_progress(unsigned char *p, Q931_info_t *qi, int *coding, int *location, int *progress);
153         void enc_ie_hlc(unsigned char **ntmode, msg_t *msg, int coding, int interpretation, int presentation, int hlc, int exthlc);
154         void dec_ie_hlc(unsigned char *p, Q931_info_t *qi, int *coding, int *interpretation, int *presentation, int *hlc, int *exthlc);
155         void enc_ie_redir_nr(unsigned char **ntmode, msg_t *msg, int type, int plan, int present, int screen, int reason, unsigned char *number);
156         void dec_ie_redir_nr(unsigned char *p, Q931_info_t *qi, int *type, int *plan, int *present, int *screen, int *reason, unsigned char *number, int number_len);
157         void enc_ie_redir_dn(unsigned char **ntmode, msg_t *msg, int type, int plan, int present, unsigned char *number);
158         void dec_ie_redir_dn(unsigned char *p, Q931_info_t *qi, int *type, int *plan, int *present, unsigned char *number, int number_len);
159         void enc_ie_facility(unsigned char **ntmode, msg_t *msg, unsigned char *facility, int facility_len);
160         void dec_ie_facility(unsigned char *p, Q931_info_t *qi, unsigned char *facility, int *facility_len);
161         void dec_facility_centrex(unsigned char *p, Q931_info_t *qi, unsigned char *cnip, int cnip_len);
162         void enc_ie_useruser(unsigned char **ntmode, msg_t *msg, int protocol, unsigned char *user, int user_len);
163         void dec_ie_useruser(unsigned char *p, Q931_info_t *qi, int *protocol, unsigned char *user, int *user_len);
164 #endif
166 };