1/*********************************************************************
2 *
3 * Filename:      iriap_event.h
4 * Version:
5 * Description:
6 * Status:        Experimental.
7 * Author:        Dag Brattli <dagb@cs.uit.no>
8 * Created at:    Mon Aug  4 20:40:53 1997
9 * Modified at:   Sun Oct 31 22:02:54 1999
10 * Modified by:   Dag Brattli <dagb@cs.uit.no>
11 *
12 *     Copyright (c) 1998-1999 Dag Brattli <dagb@cs.uit.no>, All Rights Reserved.
13 *
14 *     This program is free software; you can redistribute it and/or
15 *     modify it under the terms of the GNU General Public License as
16 *     published by the Free Software Foundation; either version 2 of
17 *     the License, or (at your option) any later version.
18 *
19 *     Neither Dag Brattli nor University of Troms� admit liability nor
20 *     provide warranty for any of this software. This material is
21 *     provided "AS-IS" and at no charge.
22 *
23 ********************************************************************/
24
25#ifndef IRIAP_FSM_H
26#define IRIAP_FSM_H
27
28/* Forward because of circular include dependecies */
29struct iriap_cb;
30
31/* IrIAP states */
32typedef enum {
33	/* Client */
34	S_DISCONNECT,
35	S_CONNECTING,
36	S_CALL,
37
38	/* S-Call */
39	S_MAKE_CALL,
40	S_CALLING,
41	S_OUTSTANDING,
42	S_REPLYING,
43	S_WAIT_FOR_CALL,
44	S_WAIT_ACTIVE,
45
46	/* Server */
47	R_DISCONNECT,
48	R_CALL,
49
50	/* R-Connect */
51	R_WAITING,
52	R_WAIT_ACTIVE,
53	R_RECEIVING,
54	R_EXECUTE,
55	R_RETURNING,
56} IRIAP_STATE;
57
58typedef enum {
59	IAP_CALL_REQUEST,
60	IAP_CALL_REQUEST_GVBC,
61	IAP_CALL_RESPONSE,
62	IAP_RECV_F_LST,
63	IAP_LM_DISCONNECT_INDICATION,
64	IAP_LM_CONNECT_INDICATION,
65	IAP_LM_CONNECT_CONFIRM,
66} IRIAP_EVENT;
67
68void iriap_next_client_state   (struct iriap_cb *self, IRIAP_STATE state);
69void iriap_next_call_state     (struct iriap_cb *self, IRIAP_STATE state);
70void iriap_next_server_state   (struct iriap_cb *self, IRIAP_STATE state);
71void iriap_next_r_connect_state(struct iriap_cb *self, IRIAP_STATE state);
72
73
74void iriap_do_client_event(struct iriap_cb *self, IRIAP_EVENT event,
75			   struct sk_buff *skb);
76void iriap_do_call_event  (struct iriap_cb *self, IRIAP_EVENT event,
77			   struct sk_buff *skb);
78
79void iriap_do_server_event   (struct iriap_cb *self, IRIAP_EVENT event,
80			      struct sk_buff *skb);
81void iriap_do_r_connect_event(struct iriap_cb *self, IRIAP_EVENT event,
82			      struct sk_buff *skb);
83
84#endif /* IRIAP_FSM_H */
85
86