bluetooth.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:4k
源码类别:

系统编程

开发平台:

Unix_Linux

  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-2008  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. #ifndef __BLUETOOTH_H
  26. #define __BLUETOOTH_H
  27. #ifdef __cplusplus
  28. extern "C" {
  29. #endif
  30. #include <stdio.h>
  31. #include <stdint.h>
  32. #include <string.h>
  33. #include <endian.h>
  34. #include <byteswap.h>
  35. #ifndef AF_BLUETOOTH
  36. #define AF_BLUETOOTH 31
  37. #define PF_BLUETOOTH AF_BLUETOOTH
  38. #endif
  39. #ifndef SOL_BLUETOOTH
  40. #define SOL_BLUETOOTH 274
  41. #endif
  42. #define BTPROTO_L2CAP 0
  43. #define BTPROTO_HCI 1
  44. #define BTPROTO_SCO 2
  45. #define BTPROTO_RFCOMM 3
  46. #define BTPROTO_BNEP 4
  47. #define BTPROTO_CMTP 5
  48. #define BTPROTO_HIDP 6
  49. #define BTPROTO_AVDTP 7
  50. #define SOL_HCI 0
  51. #define SOL_L2CAP 6
  52. #define SOL_SCO 17
  53. #define SOL_RFCOMM 18
  54. /* Connection and socket states */
  55. enum {
  56. BT_CONNECTED = 1, /* Equal to TCP_ESTABLISHED to make net code happy */
  57. BT_OPEN,
  58. BT_BOUND,
  59. BT_LISTEN,
  60. BT_CONNECT,
  61. BT_CONNECT2,
  62. BT_CONFIG,
  63. BT_DISCONN,
  64. BT_CLOSED
  65. };
  66. /* Byte order conversions */
  67. #if __BYTE_ORDER == __LITTLE_ENDIAN
  68. #define htobs(d)  (d)
  69. #define htobl(d)  (d)
  70. #define btohs(d)  (d)
  71. #define btohl(d)  (d)
  72. #elif __BYTE_ORDER == __BIG_ENDIAN
  73. #define htobs(d)  bswap_16(d)
  74. #define htobl(d)  bswap_32(d)
  75. #define btohs(d)  bswap_16(d)
  76. #define btohl(d)  bswap_32(d)
  77. #else
  78. #error "Unknown byte order"
  79. #endif
  80. /* Bluetooth unaligned access */
  81. #define bt_get_unaligned(ptr)
  82. ({
  83. struct __attribute__((packed)) {
  84. typeof(*(ptr)) __v;
  85. } *__p = (void *) (ptr);
  86. __p->__v;
  87. })
  88. #define bt_put_unaligned(val, ptr)
  89. do {
  90. struct __attribute__((packed)) {
  91. typeof(*(ptr)) __v;
  92. } *__p = (void *) (ptr);
  93. __p->__v = (val);
  94. } while(0)
  95. /* BD Address */
  96. typedef struct {
  97. uint8_t b[6];
  98. } __attribute__((packed)) bdaddr_t;
  99. #define BDADDR_ANY   (&(bdaddr_t) {{0, 0, 0, 0, 0, 0}})
  100. #define BDADDR_ALL   (&(bdaddr_t) {{0xff, 0xff, 0xff, 0xff, 0xff, 0xff}})
  101. #define BDADDR_LOCAL (&(bdaddr_t) {{0, 0, 0, 0xff, 0xff, 0xff}})
  102. /* Copy, swap, convert BD Address */
  103. static inline int bacmp(const bdaddr_t *ba1, const bdaddr_t *ba2)
  104. {
  105. return memcmp(ba1, ba2, sizeof(bdaddr_t));
  106. }
  107. static inline void bacpy(bdaddr_t *dst, const bdaddr_t *src)
  108. {
  109. memcpy(dst, src, sizeof(bdaddr_t));
  110. }
  111. void baswap(bdaddr_t *dst, const bdaddr_t *src);
  112. bdaddr_t *strtoba(const char *str);
  113. char *batostr(const bdaddr_t *ba);
  114. int ba2str(const bdaddr_t *ba, char *str);
  115. int str2ba(const char *str, bdaddr_t *ba);
  116. int ba2oui(const bdaddr_t *ba, char *oui);
  117. int bachk(const char *str);
  118. int baprintf(const char *format, ...);
  119. int bafprintf(FILE *stream, const char *format, ...);
  120. int basprintf(char *str, const char *format, ...);
  121. int basnprintf(char *str, size_t size, const char *format, ...);
  122. void *bt_malloc(size_t size);
  123. void bt_free(void *ptr);
  124. int bt_error(uint16_t code);
  125. char *bt_compidtostr(int id);
  126. #ifdef __cplusplus
  127. }
  128. #endif
  129. #endif /* __BLUETOOTH_H */