summaryrefslogtreecommitdiffstats
path: root/share/examples/netgraph
diff options
context:
space:
mode:
authorjulian <julian@FreeBSD.org>2003-05-10 21:53:43 +0000
committerjulian <julian@FreeBSD.org>2003-05-10 21:53:43 +0000
commit3816c42ae465f1f3c7024dc48c9fc07386b4473c (patch)
treedca4b12d40f6031bf9880491ac4e81658e69c3ef /share/examples/netgraph
parentfe2526340b1a2d7ed079617d2eca31aa6425d937 (diff)
downloadFreeBSD-src-3816c42ae465f1f3c7024dc48c9fc07386b4473c.zip
FreeBSD-src-3816c42ae465f1f3c7024dc48c9fc07386b4473c.tar.gz
This file just didn't want to commit in the last batch of bluetooth files.
Approved by: re@
Diffstat (limited to 'share/examples/netgraph')
-rw-r--r--share/examples/netgraph/bluetooth/rc.bluetooth267
1 files changed, 267 insertions, 0 deletions
diff --git a/share/examples/netgraph/bluetooth/rc.bluetooth b/share/examples/netgraph/bluetooth/rc.bluetooth
new file mode 100644
index 0000000..6d11c81a
--- /dev/null
+++ b/share/examples/netgraph/bluetooth/rc.bluetooth
@@ -0,0 +1,267 @@
+#!/bin/sh
+#
+# rc.bluetooth
+#
+# 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: rc.bluetooth,v 1.5 2003/03/30 04:03:16 max Exp $
+# $FreeBSD$
+#
+
+ logger="/usr/bin/logger -i -s -p user.err"
+ kldstat="/sbin/kldstat"
+ kldload="/sbin/kldload"
+ sysctl="/sbin/sysctl"
+ ngctl="/usr/sbin/ngctl"
+ hcseriald="/usr/sbin/hcseriald"
+ hccontrol="/usr/sbin/hccontrol"
+ hci_debug_level=3
+l2cap_debug_level=3
+
+##############################################################################
+# Display usage info
+##############################################################################
+
+usage()
+{
+ script=$1
+ shift
+
+ echo "Usage:"
+ echo " ${script} start device"
+ echo "or"
+ echo " ${script} stop device"
+} # usage
+
+##############################################################################
+# Verify and load if required kernel module
+##############################################################################
+
+load_module()
+{
+ module=$1
+ shift
+
+ ${kldstat} -n ${module} > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ ${kldload} ${module} > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ ${logger} "Failed to load ${module}"
+ exit 1
+ fi
+ fi
+} # load_module
+
+##############################################################################
+# Setup Bluetooth stack. Create and connect nodes
+##############################################################################
+
+setup_stack()
+{
+ dev=$1
+ shift
+ hook=$1
+ shift
+
+ # Setup HCI
+ ${ngctl} mkpeer ${dev}: hci ${hook} drv || exit 1
+ ${ngctl} name ${dev}:${hook} ${dev}hci || exit 1
+ ${ngctl} msg ${dev}hci: set_debug ${hci_debug_level} || exit 1
+
+ # Setup L2CAP
+ ${ngctl} mkpeer ${dev}hci: l2cap acl hci || exit 1
+ ${ngctl} name ${dev}hci:acl ${dev}l2cap || exit 1
+ ${ngctl} msg ${dev}l2cap: set_debug ${l2cap_debug_level} || exit 1
+
+ # Connect HCI node to the Bluetooth sockets layer
+ ${ngctl} connect ${dev}hci: btsock_hci_raw: raw ${dev}raw || exit 1
+
+ # Connect L2CAP node to Bluetooth sockets layer
+ ${ngctl} connect ${dev}l2cap: btsock_l2c_raw: ctl ${dev}ctl || exit 1
+ ${ngctl} connect ${dev}l2cap: btsock_l2c: l2c ${dev}l2c || exit 1
+
+ # Initilalize HCI node
+ ${hccontrol} -n ${dev}hci reset || exit 1
+# ${hccontrol} -n ${dev}hci read_local_name || exit 1
+ ${hccontrol} -n ${dev}hci read_bd_addr || exit 1
+ ${hccontrol} -n ${dev}hci read_local_supported_features || exit 1
+ ${hccontrol} -n ${dev}hci read_buffer_size || exit 1
+ ${hccontrol} -n ${dev}hci write_scan_enable 3 || exit 1
+# ${hccontrol} -n ${dev}hci read_scan_enable || exit 1
+
+ # We need to write class of device here because of Service Class
+ # Filtering. For more info on Class_Of_Device field see
+ # http://www.bluetooth.org/assigned-numbers/baseband.htm
+
+ ${hccontrol} -n ${dev}hci write_class_of_device ff:01:0c || exit 1
+
+ # Enable this if you have trouble with accepting incomming connections.
+ # By default we will try to perform role switch and become Master on
+ # incomming connection (if local device supports it). Some devices
+ # do not support role switch and thus incomming connection from such
+ # devices will fail.
+
+# ${hccontrol} -n ${dev}hci write_node_role_switch 0 || exit 1
+
+ ${hccontrol} -n ${dev}hci change_local_name "`uname -n` (${dev})" || exit 1
+ ${hccontrol} -n ${dev}hci initialize || exit 1
+} # setup_stack
+
+##############################################################################
+# Shutdown Bluetooth stack. Destroy all nodes
+##############################################################################
+
+shutdown_stack()
+{
+ dev=$1
+ shift
+
+ ${ngctl} shutdown ${dev}hci: > /dev/null 2>&1
+ ${ngctl} shutdown ${dev}l2cap: > /dev/null 2>&1
+ echo -n ""
+} # shutdown_stack
+
+##############################################################################
+# Start here
+##############################################################################
+
+if [ $# -lt 2 ]; then
+ usage $0
+ exit 1
+fi
+
+startstop=$1
+shift
+dev=$1
+shift
+
+case ${startstop} in
+[Ss][Tt][Aa][Rr][Tt])
+ # Load required kernel modules
+ load_module ng_bluetooth
+ load_module ng_hci
+ load_module ng_l2cap
+ load_module ng_btsocket
+
+ $0 stop ${dev} || exit 1
+
+ # Try to figure out device type by looking at device name
+ case ${dev} in
+ # sioX - serial/UART Bluetooth device
+ sio*)
+ hook="hook"
+
+ load_module ng_h4
+
+ # Obtain unit number from device.
+ unit=`expr ${dev} : 'sio\([0-9]\{1,\}\)'`
+ if [ -z ${unit} ]; then
+ ${logger} "Unable to get sio unit number: ${dev}"
+ exit 1
+ fi
+
+ ${hcseriald} -f /dev/cuaa${unit} -n ${dev}
+ sleep 1 # wait a little bit
+
+ if [ ! -f "/var/run/hcseriald.${dev}.pid" ]; then
+ ${logger} "Failed to setup ${dev}"
+ exit 1
+ fi
+ ;;
+
+ # 3Com Bluetooth Adapter 3CRWB60-A
+ btccc*)
+ hook="hook"
+
+ # Obtain unit number from device.
+ unit=`expr ${dev} : 'btccc\([0-9]\{1,\}\)'`
+ if [ -z ${unit} ]; then
+ ${logger} "Unable to get bt3c unit number: ${dev}"
+ exit 1
+ fi
+ ;;
+
+ # USB Bluetooth adapters
+ ubt*)
+ hook="hook"
+
+ # Obtain unit number from device.
+ unit=`expr ${dev} : 'ubt\([0-9]\{1,\}\)'`
+ if [ -z ${unit} ]; then
+ ${logger} "Unable to get ubt unit number: ${dev}"
+ exit 1
+ fi
+ ;;
+
+ # Unknown
+ *)
+ ${logger} "Unsupported device: ${dev}"
+ exit 1
+ ;;
+ esac
+
+# ${sysctl} net.bluetooth.hci.sockets.raw.debug_level=9
+# ${sysctl} net.bluetooth.l2cap.sockets.raw.debug_level=9
+# ${sysctl} net.bluetooth.l2cap.sockets.seq.debug_level=9
+# ${sysctl} net.bluetooth.rfcomm.sockets.stream.debug_level=9
+
+ setup_stack ${dev} ${hook}
+ ;;
+
+[Ss][Tt][Oo][Pp])
+ # Try to figure out device type by looking at device name
+ case ${dev} in
+ # sioX - serial/UART Bluetooth device
+ sio*)
+ if [ -f "/var/run/hcseriald.${dev}.pid" ]; then
+ kill `cat /var/run/hcseriald.${dev}.pid`
+ sleep 1 # wait a little bit
+ fi
+ ;;
+
+ # 3Com Bluetooth Adapter 3CRWB60-A
+ btccc*)
+ ;;
+
+ # USB Bluetooth adapters
+ ubt*)
+ ;;
+
+ # Unknown
+ *)
+ ${logger} "Unsupported device: ${dev}"
+ exit 1
+ ;;
+ esac
+
+ shutdown_stack ${dev}
+ ;;
+
+*)
+ usage $0
+ exit 1
+ ;;
+esac
+
OpenPOWER on IntegriCloud