1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27#include <linux/module.h>
28
29#include <linux/kernel.h>
30#include <linux/stddef.h>
31#include <linux/string.h>
32#include <asm/errno.h>
33
34#include <net/bluetooth/bluetooth.h>
35
36void baswap(bdaddr_t *dst, bdaddr_t *src)
37{
38 unsigned char *d = (unsigned char *) dst;
39 unsigned char *s = (unsigned char *) src;
40 unsigned int i;
41
42 for (i = 0; i < 6; i++)
43 d[i] = s[5 - i];
44}
45EXPORT_SYMBOL(baswap);
46
47char *batostr(bdaddr_t *ba)
48{
49 static char str[2][18];
50 static int i = 1;
51
52 i ^= 1;
53 sprintf(str[i], "%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X",
54 ba->b[0], ba->b[1], ba->b[2],
55 ba->b[3], ba->b[4], ba->b[5]);
56
57 return str[i];
58}
59EXPORT_SYMBOL(batostr);
60
61
62int bt_err(__u16 code)
63{
64 switch (code) {
65 case 0:
66 return 0;
67
68 case 0x01:
69 return EBADRQC;
70
71 case 0x02:
72 return ENOTCONN;
73
74 case 0x03:
75 return EIO;
76
77 case 0x04:
78 return EHOSTDOWN;
79
80 case 0x05:
81 return EACCES;
82
83 case 0x06:
84 return EBADE;
85
86 case 0x07:
87 return ENOMEM;
88
89 case 0x08:
90 return ETIMEDOUT;
91
92 case 0x09:
93 return EMLINK;
94
95 case 0x0a:
96 return EMLINK;
97
98 case 0x0b:
99 return EALREADY;
100
101 case 0x0c:
102 return EBUSY;
103
104 case 0x0d:
105 case 0x0e:
106 case 0x0f:
107 return ECONNREFUSED;
108
109 case 0x10:
110 return ETIMEDOUT;
111
112 case 0x11:
113 case 0x27:
114 case 0x29:
115 case 0x20:
116 return EOPNOTSUPP;
117
118 case 0x12:
119 return EINVAL;
120
121 case 0x13:
122 case 0x14:
123 case 0x15:
124 return ECONNRESET;
125
126 case 0x16:
127 return ECONNABORTED;
128
129 case 0x17:
130 return ELOOP;
131
132 case 0x18:
133 return EACCES;
134
135 case 0x1a:
136 return EPROTONOSUPPORT;
137
138 case 0x1b:
139 return ECONNREFUSED;
140
141 case 0x19:
142 case 0x1e:
143 case 0x23:
144 case 0x24:
145 case 0x25:
146 return EPROTO;
147
148 default:
149 return ENOSYS;
150 }
151}
152EXPORT_SYMBOL(bt_err);
153