Commit | Line | Data |
---|---|---|
8e87d142 | 1 | /* |
1da177e4 LT |
2 | CMTP implementation for Linux Bluetooth stack (BlueZ). |
3 | Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org> | |
4 | ||
5 | This program is free software; you can redistribute it and/or modify | |
6 | it under the terms of the GNU General Public License version 2 as | |
7 | published by the Free Software Foundation; | |
8 | ||
9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
10 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
11 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. | |
12 | IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY | |
8e87d142 YH |
13 | CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES |
14 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
1da177e4 LT |
16 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
17 | ||
8e87d142 YH |
18 | ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, |
19 | COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS | |
1da177e4 LT |
20 | SOFTWARE IS DISCLAIMED. |
21 | */ | |
22 | ||
23 | #ifndef __CMTP_H | |
24 | #define __CMTP_H | |
25 | ||
26 | #include <linux/types.h> | |
27 | #include <net/bluetooth/bluetooth.h> | |
28 | ||
29 | #define BTNAMSIZ 18 | |
30 | ||
31 | /* CMTP ioctl defines */ | |
32 | #define CMTPCONNADD _IOW('C', 200, int) | |
33 | #define CMTPCONNDEL _IOW('C', 201, int) | |
34 | #define CMTPGETCONNLIST _IOR('C', 210, int) | |
35 | #define CMTPGETCONNINFO _IOR('C', 211, int) | |
36 | ||
37 | #define CMTP_LOOPBACK 0 | |
38 | ||
39 | struct cmtp_connadd_req { | |
40 | int sock; // Connected socket | |
41 | __u32 flags; | |
42 | }; | |
43 | ||
44 | struct cmtp_conndel_req { | |
45 | bdaddr_t bdaddr; | |
46 | __u32 flags; | |
47 | }; | |
48 | ||
49 | struct cmtp_conninfo { | |
50 | bdaddr_t bdaddr; | |
51 | __u32 flags; | |
52 | __u16 state; | |
53 | int num; | |
54 | }; | |
55 | ||
56 | struct cmtp_connlist_req { | |
57 | __u32 cnum; | |
58 | struct cmtp_conninfo __user *ci; | |
59 | }; | |
60 | ||
61 | int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock); | |
62 | int cmtp_del_connection(struct cmtp_conndel_req *req); | |
63 | int cmtp_get_connlist(struct cmtp_connlist_req *req); | |
64 | int cmtp_get_conninfo(struct cmtp_conninfo *ci); | |
65 | ||
66 | /* CMTP session defines */ | |
67 | #define CMTP_INTEROP_TIMEOUT (HZ * 5) | |
68 | #define CMTP_INITIAL_MSGNUM 0xff00 | |
69 | ||
70 | struct cmtp_session { | |
71 | struct list_head list; | |
72 | ||
73 | struct socket *sock; | |
74 | ||
75 | bdaddr_t bdaddr; | |
76 | ||
77 | unsigned long state; | |
78 | unsigned long flags; | |
79 | ||
80 | uint mtu; | |
81 | ||
82 | char name[BTNAMSIZ]; | |
83 | ||
84 | atomic_t terminate; | |
85 | ||
86 | wait_queue_head_t wait; | |
87 | ||
88 | int ncontroller; | |
89 | int num; | |
90 | struct capi_ctr ctrl; | |
91 | ||
92 | struct list_head applications; | |
93 | ||
94 | unsigned long blockids; | |
95 | int msgnum; | |
96 | ||
97 | struct sk_buff_head transmit; | |
98 | ||
99 | struct sk_buff *reassembly[16]; | |
100 | }; | |
101 | ||
102 | struct cmtp_application { | |
103 | struct list_head list; | |
104 | ||
105 | unsigned long state; | |
106 | int err; | |
107 | ||
108 | __u16 appl; | |
109 | __u16 mapping; | |
110 | ||
111 | __u16 msgnum; | |
112 | }; | |
113 | ||
114 | struct cmtp_scb { | |
115 | int id; | |
116 | int data; | |
117 | }; | |
118 | ||
119 | int cmtp_attach_device(struct cmtp_session *session); | |
120 | void cmtp_detach_device(struct cmtp_session *session); | |
121 | ||
122 | void cmtp_recv_capimsg(struct cmtp_session *session, struct sk_buff *skb); | |
123 | ||
124 | static inline void cmtp_schedule(struct cmtp_session *session) | |
125 | { | |
126 | struct sock *sk = session->sock->sk; | |
127 | ||
128 | wake_up_interruptible(sk->sk_sleep); | |
129 | } | |
130 | ||
131 | /* CMTP init defines */ | |
132 | int cmtp_init_sockets(void); | |
133 | void cmtp_cleanup_sockets(void); | |
134 | ||
135 | #endif /* __CMTP_H */ |