📄 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-2005 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.23 2005/04/20 12:23:13 holtmann Exp $ */#ifndef __BLUETOOTH_H#define __BLUETOOTH_H#ifdef __cplusplusextern "C" {#endif#include <stdio.h>#include <stdint.h>#include <string.h>#include <endian.h>#include <byteswap.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 */#define bt_get_unaligned(ptr) \({ \ struct __attribute__((packed)) { \ typeof(*(ptr)) __v; \ } *__p = (void *) (ptr); \ __p->__v; \})#define bt_put_unaligned(val, ptr) \do { \ struct __attribute__((packed)) { \ typeof(*(ptr)) __v; \ } *__p = (void *) (ptr); \ __p->__v = (val); \} while(0)/* 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 ba2oui(const bdaddr_t *ba, char *oui);int baprintf(const char *format, ...);int bafprintf(FILE *stream, const char *format, ...);int basprintf(char *str, const char *format, ...);int basnprintf(char *str, size_t size, const char *format, ...);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 + -