Merge ../linus
[linux-2.6] / include / net / irda / irlmp_event.h
1 /*********************************************************************
2  *                
3  * Filename:      irlmp_event.h
4  * Version:       0.1
5  * Description:   IrDA-LMP event handling
6  * Status:        Experimental.
7  * Author:        Dag Brattli <dagb@cs.uit.no>
8  * Created at:    Mon Aug  4 20:40:53 1997
9  * Modified at:   Thu Jul  8 12:18:54 1999
10  * Modified by:   Dag Brattli <dagb@cs.uit.no>
11  * 
12  *     Copyright (c) 1997, 1999 Dag Brattli <dagb@cs.uit.no>, 
13  *     All Rights Reserved.
14  *     Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com>
15  *     
16  *     This program is free software; you can redistribute it and/or 
17  *     modify it under the terms of the GNU General Public License as 
18  *     published by the Free Software Foundation; either version 2 of 
19  *     the License, or (at your option) any later version.
20  *
21  *     Neither Dag Brattli nor University of Tromsø admit liability nor
22  *     provide warranty for any of this software. This material is 
23  *     provided "AS-IS" and at no charge.
24  *
25  ********************************************************************/
26
27 #ifndef IRLMP_EVENT_H
28 #define IRLMP_EVENT_H
29
30 /* A few forward declarations (to make compiler happy) */
31 struct irlmp_cb;
32 struct lsap_cb;
33 struct lap_cb;
34 struct discovery_t;
35
36 /* LAP states */
37 typedef enum {
38         /* IrLAP connection control states */
39         LAP_STANDBY,             /* No LAP connection */
40         LAP_U_CONNECT,           /* Starting LAP connection */
41         LAP_ACTIVE,              /* LAP connection is active */
42 } IRLMP_STATE;
43
44 /* LSAP connection control states */
45 typedef enum {
46         LSAP_DISCONNECTED,        /* No LSAP connection */
47         LSAP_CONNECT,             /* Connect indication from peer */
48         LSAP_CONNECT_PEND,        /* Connect request from service user */
49         LSAP_DATA_TRANSFER_READY, /* LSAP connection established */          
50         LSAP_SETUP,               /* Trying to set up LSAP connection */
51         LSAP_SETUP_PEND,          /* Request to start LAP connection */
52 } LSAP_STATE;
53
54 typedef enum {
55         /* LSAP events */
56         LM_CONNECT_REQUEST,
57         LM_CONNECT_CONFIRM,
58         LM_CONNECT_RESPONSE,
59         LM_CONNECT_INDICATION,  
60         
61         LM_DISCONNECT_INDICATION,
62         LM_DISCONNECT_REQUEST,
63
64         LM_DATA_REQUEST,
65         LM_UDATA_REQUEST,
66         LM_DATA_INDICATION,
67         LM_UDATA_INDICATION,
68
69         LM_WATCHDOG_TIMEOUT,
70
71         /* IrLAP events */
72         LM_LAP_CONNECT_REQUEST,
73         LM_LAP_CONNECT_INDICATION, 
74         LM_LAP_CONNECT_CONFIRM,
75         LM_LAP_DISCONNECT_INDICATION, 
76         LM_LAP_DISCONNECT_REQUEST,
77         LM_LAP_DISCOVERY_REQUEST,
78         LM_LAP_DISCOVERY_CONFIRM,
79         LM_LAP_IDLE_TIMEOUT,
80 } IRLMP_EVENT;
81
82 extern const char *irlmp_state[];
83 extern const char *irlsap_state[];
84
85 void irlmp_watchdog_timer_expired(void *data);
86 void irlmp_discovery_timer_expired(void *data);
87 void irlmp_idle_timer_expired(void *data);
88
89 void irlmp_do_lap_event(struct lap_cb *self, IRLMP_EVENT event, 
90                         struct sk_buff *skb);
91 int irlmp_do_lsap_event(struct lsap_cb *self, IRLMP_EVENT event, 
92                         struct sk_buff *skb);
93
94 #endif /* IRLMP_EVENT_H */
95
96
97
98