1/*
2 * DSS.1 module definitions
3 *
4 * Copyright (C) 1996 Universidade de Lisboa
5 *
6 * Written by Pedro Roque Marques (roque@di.fc.ul.pt)
7 *
8 * This software may be used and distributed according to the terms of
9 * the GNU General Public License, incorporated herein by reference.
10 */
11
12#ifndef EDSS1_H
13#define EDSS1_H
14
15/* ISDN states */
16
17#define ST_NULL      0
18#define ST_CALL_INIT 1    /* Call initiated */
19#define ST_OVER_SEND 2    /* Overlap sending - Requests More Info 4 call */
20#define ST_CALL_PROC 3    /* Call Proceeding */
21#define ST_CALL_DELV 4
22#define ST_CALL_PRES 6    /* Call Present - Received CONN.IND */
23#define ST_CALL_RECV 7    /* Alerting sent */
24#define ST_CONN_REQ  8    /* Answered - waiting 4 CONN.CONF */
25#define ST_INCM_PROC 9
26#define ST_ACTIVE    10
27#define ST_DISC_REQ  11
28#define ST_DISC_IND  12
29#define ST_SUSP_REQ  15
30#define ST_RESM_REQ  17
31#define ST_RELS_REQ  19
32#define ST_OVER_RECV 25
33
34#define ST_ACTIVE_SELP 26 /* Select protocol on B-Channel */
35#define ST_ACTIVE_ACTV 27 /* Activate B-channel protocol  */
36
37#define MAX_STATE ST_ACTIVE_ACTV
38
39#define EV_NULL               0
40#define EV_USR_SETUP_REQ      1
41#define EV_USR_SETUP_RESP     2
42#define EV_USR_PROCED_REQ     3
43#define EV_USR_RELEASE_REQ    4
44#define EV_USR_REJECT_REQ     4
45
46#define EV_NET_SETUP          16
47#define EV_NET_CALL_PROC      17
48#define EV_NET_SETUP_ACK      18
49#define EV_NET_CONN           19
50#define EV_NET_CONN_ACK       20
51
52#define EV_NET_SELP_RESP      21
53#define EV_NET_ACTV_RESP      22
54
55#define EV_NET_DISC           23
56#define EV_NET_RELEASE        24
57#define EV_NET_RELEASE_COMP   25
58
59#define EV_TIMER              26
60#define EV_ERROR              32
61
62/*
63 *  Cause values
64 *  only the ones we use
65 */
66
67#define CAUSE_NORMAL          0x10U
68#define CAUSE_NOCHAN          0x22U
69
70struct callb_data {
71	unsigned short type;
72	union {
73		struct ConnInfo {
74			char *CalledPN;
75			char *CallingPN;
76		} setup;
77		unsigned short cause;
78	} data;
79};
80
81struct fsm_entry {
82	unsigned short init;
83	unsigned short final;
84	unsigned short event;
85	void (*callb)(struct pcbit_dev *, struct pcbit_chan *, struct callb_data*);
86};
87
88struct fsm_timer_entry {
89	unsigned short init;
90	unsigned long timeout;          /* in seconds */
91};
92
93extern char * isdn_state_table[];
94
95void pcbit_fsm_event(struct pcbit_dev *, struct pcbit_chan *,
96		     unsigned short event, struct callb_data *);
97char * strisdnevent(ushort ev);
98
99#endif
100