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 *const irlmp_state[];
83 extern const char *const 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 
99