Merge ../linux-2.6
[linux-2.6] / include / net / irda / iriap_event.h
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