The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/netbt/bluetooth.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /* $DragonFly: src/sys/netbt/bluetooth.h,v 1.2 2008/03/18 13:41:42 hasso Exp $ */
    2 /* $OpenBSD: src/sys/netbt/bluetooth.h,v 1.5 2008/02/24 21:34:48 uwe Exp $ */
    3 /* $NetBSD: bluetooth.h,v 1.6 2007/09/17 01:23:17 rillig Exp $ */
    4 
    5 /*-
    6  * Copyright (c) 2005 Iain Hibbert.
    7  * Copyright (c) 2006 Itronix Inc.
    8  * All rights reserved.
    9  *
   10  * Redistribution and use in source and binary forms, with or without
   11  * modification, are permitted provided that the following conditions
   12  * are met:
   13  * 1. Redistributions of source code must retain the above copyright
   14  *    notice, this list of conditions and the following disclaimer.
   15  * 2. Redistributions in binary form must reproduce the above copyright
   16  *    notice, this list of conditions and the following disclaimer in the
   17  *    documentation and/or other materials provided with the distribution.
   18  * 3. The name of Itronix Inc. may not be used to endorse
   19  *    or promote products derived from this software without specific
   20  *    prior written permission.
   21  *
   22  * THIS SOFTWARE IS PROVIDED BY ITRONIX INC. ``AS IS'' AND
   23  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   24  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   25  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL ITRONIX INC. BE LIABLE FOR ANY
   26  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
   27  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
   28  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   29  * ON ANY THEORY OF LIABILITY, WHETHER IN
   30  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   31  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   32  * POSSIBILITY OF SUCH DAMAGE.
   33  */
   34 
   35 #ifndef _NETBT_BLUETOOTH_H_
   36 #define _NETBT_BLUETOOTH_H_
   37 
   38 #include <sys/socket.h>
   39 #include <sys/types.h>
   40 
   41 /*
   42  * Bluetooth Address Family Protocol Numbers
   43  */
   44 #define BTPROTO_HCI     1
   45 #define BTPROTO_L2CAP   2
   46 #define BTPROTO_RFCOMM  3
   47 #define BTPROTO_SCO     4
   48 
   49 /* All sizes are in bytes */
   50 #define BLUETOOTH_BDADDR_SIZE   6
   51 
   52 /*
   53  * Bluetooth device address
   54  */
   55 typedef struct {
   56         uint8_t b[BLUETOOTH_BDADDR_SIZE];
   57 } __attribute__ ((packed)) bdaddr_t;
   58 
   59 /*
   60  * bdaddr utility functions
   61  */
   62 static __inline int
   63 bdaddr_same(const bdaddr_t *a, const bdaddr_t *b)
   64 {
   65 
   66         return (a->b[0] == b->b[0] && a->b[1] == b->b[1]
   67                 && a->b[2] == b->b[2] && a->b[3] == b->b[3]
   68                 && a->b[4] == b->b[4] && a->b[5] == b->b[5]);
   69 }
   70 
   71 static __inline int
   72 bdaddr_any(const bdaddr_t *a)
   73 {
   74 
   75         return (a->b[0] == 0 && a->b[1] == 0 && a->b[2] == 0
   76                 && a->b[3] == 0 && a->b[4] == 0 && a->b[5] == 0);
   77 }
   78 
   79 static __inline void
   80 bdaddr_copy(bdaddr_t *d, const bdaddr_t *s)
   81 {
   82 
   83         d->b[0] = s->b[0];
   84         d->b[1] = s->b[1];
   85         d->b[2] = s->b[2];
   86         d->b[3] = s->b[3];
   87         d->b[4] = s->b[4];
   88         d->b[5] = s->b[5];
   89 }
   90 
   91 /*
   92  * Socket address used by Bluetooth protocols
   93  */
   94 struct sockaddr_bt {
   95         uint8_t         bt_len;
   96         sa_family_t     bt_family;
   97         bdaddr_t        bt_bdaddr;
   98         uint16_t        bt_psm;
   99         uint8_t         bt_channel;
  100         uint8_t         bt_zero[5];
  101 };
  102 
  103 /* Note: this is actually 6 bytes including terminator */
  104 #define BDADDR_ANY      ((const bdaddr_t *) "\000\000\000\000\000")
  105 
  106 #ifdef _KERNEL
  107 #include <sys/malloc.h>
  108 #include <sys/bus.h>
  109 
  110 MALLOC_DECLARE(M_BLUETOOTH);
  111 
  112 /*
  113  * Bluetooth Protocol API callback methods
  114  */
  115 struct mbuf;
  116 struct btproto {
  117         void (*connecting)(void *);
  118         void (*connected)(void *);
  119         void (*disconnected)(void *, int);
  120         void *(*newconn)(void *, struct sockaddr_bt *, struct sockaddr_bt *);
  121         void (*complete)(void *, int);
  122         void (*linkmode)(void *, int);
  123         void (*input)(void *, struct mbuf *);
  124 };
  125 
  126 /*
  127  * Debugging stuff
  128  */
  129 #ifdef BLUETOOTH_DEBUG
  130 extern int bluetooth_debug;
  131 # define DPRINTF(fmt, args...)  do {                    \
  132         if (bluetooth_debug)                            \
  133                 kprintf("%s: "fmt, __func__ , ##args);  \
  134 } while (/* CONSTCOND */0)
  135 
  136 # define DPRINTFN(n, fmt, args...)      do {            \
  137         if (bluetooth_debug > (n))                      \
  138                 kprintf("%s: "fmt, __func__ , ##args);  \
  139 } while (/* CONSTCOND */0)
  140 
  141 # define UNKNOWN(value)                 \
  142                 kprintf("%s: %s = %d unknown!\n", __func__, #value, (value));
  143 #else
  144 # define DPRINTF(...) ((void)0)
  145 # define DPRINTFN(...) ((void)0)
  146 # define UNKNOWN(x) ((void)0)
  147 #endif  /* BLUETOOTH_DEBUG */
  148 
  149 #define sbspace(sb) \
  150     ((long) imin((int)((sb)->ssb_hiwat - (sb)->ssb_cc), \
  151          (int)((sb)->ssb_mbmax - (sb)->ssb_mbcnt)))
  152 #endif  /* _KERNEL */
  153 
  154 #define letoh16(x)              le16toh(x)
  155 #define letoh32(x)              le32toh(x)
  156 
  157 #endif  /* _NETBT_BLUETOOTH_H_ */

Cache object: eb1dfb6d8e3b72653bd764b31da6538b


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.