📄 bluetooth.h
字号:
/* * * BlueZ - Bluetooth protocol stack for Linux * * Copyright (C) 2000-2001 Qualcomm Incorporated * Copyright (C) 2002-2003 Maxim Krasnyansky <maxk@qualcomm.com> * Copyright (C) 2002-2004 Marcel Holtmann <marcel@holtmann.org> * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation; * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY * CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * * ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, * COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS * SOFTWARE IS DISCLAIMED. * * * $Id: bluetooth.h,v 1.17 2004/08/12 21:59:42 pkj Exp $ */#ifndef __BLUETOOTH_H#define __BLUETOOTH_H#ifdef __cplusplusextern "C" {#endif#include <stdint.h>#include <endian.h>#include <byteswap.h>#include <string.h>#ifndef AF_BLUETOOTH#define AF_BLUETOOTH 31#define PF_BLUETOOTH AF_BLUETOOTH#endif#define BTPROTO_L2CAP 0#define BTPROTO_HCI 1#define BTPROTO_SCO 2#define BTPROTO_RFCOMM 3#define BTPROTO_BNEP 4#define BTPROTO_CMTP 5#define BTPROTO_HIDP 6#define BTPROTO_AVDTP 7#define SOL_HCI 0#define SOL_L2CAP 6#define SOL_SCO 17#define SOL_RFCOMM 18/* Connection and socket states */enum { BT_CONNECTED = 1, /* Equal to TCP_ESTABLISHED to make net code happy */ BT_OPEN, BT_BOUND, BT_LISTEN, BT_CONNECT, BT_CONNECT2, BT_CONFIG, BT_DISCONN, BT_CLOSED};/* Byte order conversions */#if __BYTE_ORDER == __LITTLE_ENDIAN#define htobs(d) (d)#define htobl(d) (d)#define btohs(d) (d)#define btohl(d) (d)#elif __BYTE_ORDER == __BIG_ENDIAN#define htobs(d) bswap_16(d)#define htobl(d) bswap_32(d)#define btohs(d) bswap_16(d)#define btohl(d) bswap_32(d)#else#error "Unknown byte order"#endif/* Bluetooth unaligned access */#if defined(__i386__) || defined(__x86_64__) || defined(__powerpc__) || defined(__s390__) || defined(__cris__)#define bt_get_unaligned(ptr) (*(ptr))#define bt_put_unaligned(val, ptr) ((void)( *(ptr) = (val) ))#else#define bt_get_unaligned(ptr) \ ({ __typeof__(*(ptr)) __tmp; memmove(&__tmp, (ptr), sizeof(*(ptr))); __tmp; })#define bt_put_unaligned(val, ptr) \ ({ __typeof__(*(ptr)) __tmp = (val); \ memmove((ptr), &__tmp, sizeof(*(ptr))); \ (void)0; })#endif/* BD Address */typedef struct { uint8_t b[6];} __attribute__((packed)) bdaddr_t;#define BDADDR_ANY (&(bdaddr_t) {{0, 0, 0, 0, 0, 0}})#define BDADDR_ALL (&(bdaddr_t) {{0xff, 0xff, 0xff, 0xff, 0xff, 0xff}})#define BDADDR_LOCAL (&(bdaddr_t) {{0, 0, 0, 0xff, 0xff, 0xff}})/* Copy, swap, convert BD Address */static inline int bacmp(const bdaddr_t *ba1, const bdaddr_t *ba2){ return memcmp(ba1, ba2, sizeof(bdaddr_t));}static inline void bacpy(bdaddr_t *dst, const bdaddr_t *src){ memcpy(dst, src, sizeof(bdaddr_t));}void baswap(bdaddr_t *dst, const bdaddr_t *src);bdaddr_t *strtoba(const char *str);char *batostr(const bdaddr_t *ba);int ba2str(const bdaddr_t *ba, char *str);int str2ba(const char *str, bdaddr_t *ba);int bt_error(uint16_t code);char *bt_compidtostr(int id);#ifdef __cplusplus}#endif#endif /* __BLUETOOTH_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -