~ubuntu-branches/ubuntu/wily/bluez/wily

« back to all changes in this revision

Viewing changes to include/bluetooth.h

ImportĀ upstreamĀ versionĀ 4.81

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 *
3
 
 *  BlueZ - Bluetooth protocol stack for Linux
4
 
 *
5
 
 *  Copyright (C) 2000-2001  Qualcomm Incorporated
6
 
 *  Copyright (C) 2002-2003  Maxim Krasnyansky <maxk@qualcomm.com>
7
 
 *  Copyright (C) 2002-2009  Marcel Holtmann <marcel@holtmann.org>
8
 
 *
9
 
 *
10
 
 *  This program is free software; you can redistribute it and/or modify
11
 
 *  it under the terms of the GNU General Public License as published by
12
 
 *  the Free Software Foundation; either version 2 of the License, or
13
 
 *  (at your option) any later version.
14
 
 *
15
 
 *  This program is distributed in the hope that it will be useful,
16
 
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
 
 *  GNU General Public License for more details.
19
 
 *
20
 
 *  You should have received a copy of the GNU General Public License
21
 
 *  along with this program; if not, write to the Free Software
22
 
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
23
 
 *
24
 
 */
25
 
 
26
 
#ifndef __BLUETOOTH_H
27
 
#define __BLUETOOTH_H
28
 
 
29
 
#ifdef __cplusplus
30
 
extern "C" {
31
 
#endif
32
 
 
33
 
#include <stdio.h>
34
 
#include <stdint.h>
35
 
#include <string.h>
36
 
#include <endian.h>
37
 
#include <byteswap.h>
38
 
 
39
 
#ifndef AF_BLUETOOTH
40
 
#define AF_BLUETOOTH    31
41
 
#define PF_BLUETOOTH    AF_BLUETOOTH
42
 
#endif
43
 
 
44
 
#define BTPROTO_L2CAP   0
45
 
#define BTPROTO_HCI     1
46
 
#define BTPROTO_SCO     2
47
 
#define BTPROTO_RFCOMM  3
48
 
#define BTPROTO_BNEP    4
49
 
#define BTPROTO_CMTP    5
50
 
#define BTPROTO_HIDP    6
51
 
#define BTPROTO_AVDTP   7
52
 
 
53
 
#define SOL_HCI         0
54
 
#define SOL_L2CAP       6
55
 
#define SOL_SCO         17
56
 
#define SOL_RFCOMM      18
57
 
 
58
 
#ifndef SOL_BLUETOOTH
59
 
#define SOL_BLUETOOTH   274
60
 
#endif
61
 
 
62
 
#define BT_SECURITY     4
63
 
struct bt_security {
64
 
        uint8_t level;
65
 
};
66
 
#define BT_SECURITY_SDP         0
67
 
#define BT_SECURITY_LOW         1
68
 
#define BT_SECURITY_MEDIUM      2
69
 
#define BT_SECURITY_HIGH        3
70
 
 
71
 
#define BT_DEFER_SETUP  7
72
 
 
73
 
/* Connection and socket states */
74
 
enum {
75
 
        BT_CONNECTED = 1, /* Equal to TCP_ESTABLISHED to make net code happy */
76
 
        BT_OPEN,
77
 
        BT_BOUND,
78
 
        BT_LISTEN,
79
 
        BT_CONNECT,
80
 
        BT_CONNECT2,
81
 
        BT_CONFIG,
82
 
        BT_DISCONN,
83
 
        BT_CLOSED
84
 
};
85
 
 
86
 
/* Byte order conversions */
87
 
#if __BYTE_ORDER == __LITTLE_ENDIAN
88
 
#define htobs(d)  (d)
89
 
#define htobl(d)  (d)
90
 
#define btohs(d)  (d)
91
 
#define btohl(d)  (d)
92
 
#elif __BYTE_ORDER == __BIG_ENDIAN
93
 
#define htobs(d)  bswap_16(d)
94
 
#define htobl(d)  bswap_32(d)
95
 
#define btohs(d)  bswap_16(d)
96
 
#define btohl(d)  bswap_32(d)
97
 
#else
98
 
#error "Unknown byte order"
99
 
#endif
100
 
 
101
 
/* Bluetooth unaligned access */
102
 
#define bt_get_unaligned(ptr)                   \
103
 
({                                              \
104
 
        struct __attribute__((packed)) {        \
105
 
                typeof(*(ptr)) __v;             \
106
 
        } *__p = (void *) (ptr);                \
107
 
        __p->__v;                               \
108
 
})
109
 
 
110
 
#define bt_put_unaligned(val, ptr)              \
111
 
do {                                            \
112
 
        struct __attribute__((packed)) {        \
113
 
                typeof(*(ptr)) __v;             \
114
 
        } *__p = (void *) (ptr);                \
115
 
        __p->__v = (val);                       \
116
 
} while(0)
117
 
 
118
 
/* BD Address */
119
 
typedef struct {
120
 
        uint8_t b[6];
121
 
} __attribute__((packed)) bdaddr_t;
122
 
 
123
 
#define BDADDR_ANY   (&(bdaddr_t) {{0, 0, 0, 0, 0, 0}})
124
 
#define BDADDR_ALL   (&(bdaddr_t) {{0xff, 0xff, 0xff, 0xff, 0xff, 0xff}})
125
 
#define BDADDR_LOCAL (&(bdaddr_t) {{0, 0, 0, 0xff, 0xff, 0xff}})
126
 
 
127
 
/* Copy, swap, convert BD Address */
128
 
static inline int bacmp(const bdaddr_t *ba1, const bdaddr_t *ba2)
129
 
{
130
 
        return memcmp(ba1, ba2, sizeof(bdaddr_t));
131
 
}
132
 
static inline void bacpy(bdaddr_t *dst, const bdaddr_t *src)
133
 
{
134
 
        memcpy(dst, src, sizeof(bdaddr_t));
135
 
}
136
 
 
137
 
void baswap(bdaddr_t *dst, const bdaddr_t *src);
138
 
bdaddr_t *strtoba(const char *str);
139
 
char *batostr(const bdaddr_t *ba);
140
 
int ba2str(const bdaddr_t *ba, char *str);
141
 
int str2ba(const char *str, bdaddr_t *ba);
142
 
int ba2oui(const bdaddr_t *ba, char *oui);
143
 
int bachk(const char *str);
144
 
 
145
 
int baprintf(const char *format, ...);
146
 
int bafprintf(FILE *stream, const char *format, ...);
147
 
int basprintf(char *str, const char *format, ...);
148
 
int basnprintf(char *str, size_t size, const char *format, ...);
149
 
 
150
 
void *bt_malloc(size_t size);
151
 
void bt_free(void *ptr);
152
 
 
153
 
int bt_error(uint16_t code);
154
 
char *bt_compidtostr(int id);
155
 
 
156
 
#ifdef __cplusplus
157
 
}
158
 
#endif
159
 
 
160
 
#endif /* __BLUETOOTH_H */