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 */
29 struct iriap_cb;
30 
31 /* IrIAP states */
32 typedef 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 
58 typedef 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 
68 void iriap_next_client_state   (struct iriap_cb *self, IRIAP_STATE state);
69 void iriap_next_call_state     (struct iriap_cb *self, IRIAP_STATE state);
70 void iriap_next_server_state   (struct iriap_cb *self, IRIAP_STATE state);
71 void iriap_next_r_connect_state(struct iriap_cb *self, IRIAP_STATE state);
72 
73 
74 void iriap_do_client_event(struct iriap_cb *self, IRIAP_EVENT event,
75 			   struct sk_buff *skb);
76 void iriap_do_call_event  (struct iriap_cb *self, IRIAP_EVENT event,
77 			   struct sk_buff *skb);
78 
79 void iriap_do_server_event   (struct iriap_cb *self, IRIAP_EVENT event,
80 			      struct sk_buff *skb);
81 void 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