[BACK]Return to bluetooth.h CVS log [TXT][DIR] Up to [local] / sys / netbt

Annotation of sys/netbt/bluetooth.h, Revision 1.1.1.1

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

CVSweb