878ed22696
Has been seen to work on several cards and communicating with several mobile phones to use them as modems etc. We are still talking with 3com to try get them to allow us to include the firmware for their pccard in the driver but the driver is here.. In the mean time it can be downloaded from the 3com website and loaded using the utility bt3cfw(8) (supplied) (instructions in the man page) Not yet linked to the build Submitted by: Maksim Yevmenkin <myevmenk@exodus.net> Approved by: re
256 lines
8.2 KiB
Groff
256 lines
8.2 KiB
Groff
.\" ng_btsocket.4
|
|
.\"
|
|
.\" Copyright (c) 2001-2002 Maksim Yevmenkin <m_evmenkin@yahoo.com>
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" $Id: ng_btsocket.4,v 1.4 2002/11/12 22:31:39 max Exp $
|
|
.\" $FreeBSD$
|
|
.Dd July 8, 2002
|
|
.Dt NG_BTSOCKET 4
|
|
.Os
|
|
.Sh NAME
|
|
.Nm btsocket
|
|
.Nd Bluetooth sockets layer
|
|
.Sh SYNOPSIS
|
|
.In sys/types.h
|
|
.In sys/socket.h
|
|
.In bitstring.h
|
|
.In netgraph.h
|
|
.In ng_hci.h
|
|
.In ng_l2cap.h
|
|
.In ng_btsocket.h
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Nm
|
|
module implements three Netgraph node types. Each type in its turn implements
|
|
one protocol within
|
|
.Dv PF_BLUETOOTH
|
|
domain.
|
|
.Pp
|
|
.Sh BLUETOOTH_PROTO_HCI protocol
|
|
.Ss SOCK_RAW HCI sockets
|
|
Implemented by
|
|
.Cm btsock_hci_raw
|
|
Netgraph type. Raw HCI sockets allow sending of raw HCI command datagrams
|
|
only to correspondents named in
|
|
.Xr send 2
|
|
calls. Raw HCI datagrams (HCI commands, events and data) are generally
|
|
received with
|
|
.Xr recvfrom 2 ,
|
|
which returns the next datagram with its return address. Also raw HCI
|
|
sockets can be used to control HCI nodes.
|
|
.Pp
|
|
The Bluetooth raw HCI socket address is defined as follows:
|
|
.Bd -literal -offset indent
|
|
/* Bluetooth version of struct sockaddr for raw HCI sockets */
|
|
struct sockaddr_hci {
|
|
u_char hci_len; /* total length */
|
|
u_char hci_family; /* address family */
|
|
char hci_node[16]; /* HCI node name */
|
|
};
|
|
.Ed
|
|
.Pp
|
|
Raw HCI sockets support number of
|
|
.Xr ioctl 2
|
|
requests such as:
|
|
.Bl -tag -width foo
|
|
.It Dv SIOC_HCI_RAW_NODE_GET_STATE
|
|
Returns current state for the HCI node.
|
|
.It Dv SIOC_HCI_RAW_NODE_INIT
|
|
Turn on
|
|
.Dq inited
|
|
bit for the HCI node.
|
|
.It Dv SIOC_HCI_RAW_NODE_GET_DEBUG
|
|
Returns current debug level for the HCI node.
|
|
.It Dv SIOC_HCI_RAW_NODE_SET_DEBUG
|
|
Sets current debug level for the HCI node.
|
|
.It Dv SIOC_HCI_RAW_NODE_GET_BUFFER
|
|
Returns current state of data buffers for the HCI node.
|
|
.It Dv SIOC_HCI_RAW_NODE_GET_BDADDR
|
|
Returns BD_ADDR for the HCI node.
|
|
.It Dv SIOC_HCI_RAW_NODE_GET_FEATURES
|
|
Returns the list of features supported by hardware for the HCI node.
|
|
.It Dv SIOC_HCI_RAW_NODE_GET_STAT
|
|
Returns various statistic counters for the HCI node.
|
|
.It Dv SIOC_HCI_RAW_NODE_RESET_STAT
|
|
Resets all statistic counters for the HCI node to zero.
|
|
.It Dv SIOC_HCI_RAW_NODE_FLUSH_NEIGHBOR_CACHE
|
|
Remove all neighbor cache entries for the HCI node.
|
|
.It Dv SIOC_HCI_RAW_NODE_GET_NEIGHBOR_CACHE
|
|
Returns content of the neighbor cache for the HCI node.
|
|
.It Dv SIOC_HCI_RAW_NODE_GET_CON_LIST
|
|
Returns list of active baseband connections (i.e. ACL and SCO links) for
|
|
the HCI node.
|
|
.It SIOC_HCI_RAW_NODE_GET_LINK_POLICY_MASK
|
|
Returns current link policy settings mask for the HCI node.
|
|
.It SIOC_HCI_RAW_NODE_SET_LINK_POLICY_MASK
|
|
Sets current link policy settings mask for the HCI node.
|
|
.It SIOC_HCI_RAW_NODE_GET_PACKET_MASK
|
|
Returns current packet mask for the HCI node.
|
|
.It SIOC_HCI_RAW_NODE_SET_PACKET_MASK
|
|
Sets current packet mask for the HCI node.
|
|
.El
|
|
.Pp
|
|
Raw HCI sockets support filters. The application can filter certain
|
|
HCI datagram types. For HCI event datagrams the application can set
|
|
additional filter. The raw HCI socket filter defined as follows:
|
|
.Bd -literal -offset indent
|
|
/*
|
|
* Raw HCI socket filter.
|
|
*
|
|
* For packet mask use (1 << (HCI packet indicator - 1))
|
|
* For event mask use (1 << (Event - 1))
|
|
*/
|
|
|
|
struct ng_btsocket_hci_raw_filter {
|
|
bitstr_t bit_decl(packet_mask, 32);
|
|
bitstr_t bit_decl(event_mask, (NG_HCI_EVENT_MASK_SIZE * 8));
|
|
};
|
|
.Ed
|
|
.Pp
|
|
The
|
|
.Dv SO_HCI_RAW_FILTER
|
|
option defined at
|
|
.Dv SOL_HCI_RAW
|
|
level can be used to obtain via
|
|
.Xr getsockopt 2
|
|
or change via
|
|
.Xr setsockopt 2
|
|
raw HCI socket's filter.
|
|
.Pp
|
|
.Sh BLUETOOTH_PROTO_L2CAP protocol
|
|
The Bluetooth L2CAP socket address is defined as follows:
|
|
.Bd -literal -offset indent
|
|
/* Bluetooth version of struct sockaddr for L2CAP sockets */
|
|
struct sockaddr_l2cap {
|
|
u_char l2cap_len; /* total length */
|
|
u_char l2cap_family; /* address family */
|
|
u_int16_t l2cap_psm; /* Protocol/Service Multiplexor */
|
|
bdaddr_t l2cap_bdaddr; /* address */
|
|
};
|
|
.Ed
|
|
.Pp
|
|
.Ss SOCK_RAW L2CAP sockets
|
|
Implemented by
|
|
.Cm btsock_l2c_raw
|
|
Netgraph type.
|
|
Raw L2CAP sockets do not provide access to raw L2CAP datagrams. These
|
|
sockets used to control L2CAP nodes and to issue special L2CAP requests
|
|
such as ECHO_REQUEST and GET_INFO request.
|
|
.Pp
|
|
Raw L2CAP sockets support number of
|
|
.Xr ioctl 2
|
|
requests such as:
|
|
.Bl -tag -width foo
|
|
.It Dv SIOC_L2CAP_NODE_GET_FLAGS
|
|
Returns current state for the L2CAP node.
|
|
.It Dv SIOC_L2CAP_NODE_GET_DEBUG
|
|
Returns current debug level for the L2CAP node.
|
|
.It Dv SIOC_L2CAP_NODE_SET_DEBUG
|
|
Sets current debug level for the L2CAP node.
|
|
.It Dv SIOC_L2CAP_NODE_GET_CON_LIST
|
|
Returns list of active baseband connections (i.e. ACL links) for the L2CAP
|
|
node.
|
|
.It Dv SIOC_L2CAP_NODE_GET_CHAN_LIST
|
|
Returns list of active channels for the L2CAP node.
|
|
.It Dv SIOC_L2CAP_L2CA_PING
|
|
Issues L2CAP ECHO_REQUEST.
|
|
.It Dv SIOC_L2CAP_L2CA_GET_INFO
|
|
Issues L2CAP GET_INFO request.
|
|
.El
|
|
.Pp
|
|
.Ss SOCK_SEQPACKET L2CAP sockets
|
|
Implemented by
|
|
.Cm btsock_l2c
|
|
Netgraph type.
|
|
L2CAP sockets are either
|
|
.Dq active
|
|
or
|
|
.Dq passive .
|
|
Active sockets initiate connections to passive sockets. By default L2CAP
|
|
sockets are created active; to create a passive socket the
|
|
.Xr listen 2
|
|
system call must be used after binding the socket with the
|
|
.Xr bind 2
|
|
system call. Only passive sockets may use the
|
|
.Xr accept 2
|
|
call to accept incoming connections. Only active sockets may use the
|
|
.Xr connect 2
|
|
call to initiate connections.
|
|
.Pp
|
|
L2CAP sockets supports
|
|
.Dq wildcard addressing .
|
|
In this case socket must be bound to
|
|
.Dv NG_HCI_BDADDR_ANY
|
|
address. Note that PSM (Protocol/Service Multiplexor) filed is always
|
|
required. Once a connection has been established the socket's address is
|
|
fixed by the peer entity's location. The address assigned the socket is
|
|
the address associated with the Bluetooth device through which packets are
|
|
being transmitted and received, and PSM (Protocol/Service Multiplexor).
|
|
.Pp
|
|
L2CAP sockets support number of options defined at
|
|
.Dv SOL_L2CAP
|
|
level which can be set with
|
|
.Xr setsockopt 2
|
|
and tested with
|
|
.Xr getsockopt 2 :
|
|
.Bl -tag -width foo
|
|
.It Dv SO_L2CAP_IMTU
|
|
Get (set) maximum payload size the local socket is capable of accepting.
|
|
.It Dv SO_L2CAP_OMTU
|
|
Get maximum payload size the remote socket is capable of accepting.
|
|
.It Dv SO_L2CAP_IFLOW
|
|
Get incoming flow specification for the socket.
|
|
.Em Not implemented .
|
|
.It Dv SO_L2CAP_OFLOW
|
|
Get (set) outgoing flow specification for the socket.
|
|
.Em Not implemented .
|
|
.It Dv SO_L2CAP_FLUSH
|
|
Get (set) value of the flush timeout.
|
|
.Em Not implemeted .
|
|
.El
|
|
.Sh HOOKS
|
|
This node type supports hooks with arbitrary names (as long as they are
|
|
unique) and always accepts hook connection requests.
|
|
.Sh NETGRAPH CONTROL MESSAGES
|
|
This node type supports the generic control messages.
|
|
.Sh SHUTDOWN
|
|
These nodes are persistent and cannot be shut down.
|
|
.Sh BUGS
|
|
Most likely. Please report if found.
|
|
.Sh SEE ALSO
|
|
.Xr socket 2 ,
|
|
.Xr netgraph 4 ,
|
|
.Xr ngctl 8 ,
|
|
.Xr ng_hci 4 ,
|
|
.Xr ng_l2cap 4 ,
|
|
.Xr btsockstat 1
|
|
.Sh HISTORY
|
|
The
|
|
.Nm
|
|
node type was implemented in
|
|
.Fx 5.0 .
|
|
.Sh AUTHORS
|
|
.An Maksim Yevmenkin Aq m_evmenkin@yahoo.com
|