#!/bin/sh /etc/rc.common
|
|
# Copyright (C) 2007 OpenWrt.org
|
|
|
|
#start after dbus (60)
|
|
START=62
|
|
|
|
append_bool() {
|
|
local section="$1"
|
|
local option="$2"
|
|
local value="$3"
|
|
local _val
|
|
config_get_bool _val "$section" "$option" '0'
|
|
[ $_val -gt 0 ] && append args "$3"
|
|
}
|
|
|
|
append_string() {
|
|
local section="$1"
|
|
local option="$2"
|
|
local value="$3"
|
|
local default="$4"
|
|
local _val
|
|
config_get _val "$section" "$option" "$default"
|
|
[ -n "$_val" ] && append args "$3 $_val"
|
|
}
|
|
|
|
hcid_config() {
|
|
local cfg="$1"
|
|
config_get_bool enabled "$cfg" "enabled" '1'
|
|
[ $enabled -gt 0 ] || return 1
|
|
args=""
|
|
append_bool "$cfg" nodaemon "-n"
|
|
append_string "$cfg" config "-f"
|
|
service_start /usr/sbin/hcid $args
|
|
}
|
|
|
|
hciattach_config() {
|
|
local cfg="$1"
|
|
config_get_bool enabled "$cfg" "enabled" '1'
|
|
[ $enabled -gt 0 ] || return 1
|
|
args=""
|
|
append_string "$cfg" initspeed "-s" "115200"
|
|
append_string "$cfg" tty " " "ttyS1"
|
|
append_string "$cfg" type " " "csr"
|
|
append_string "$cfg" speed " " "115200"
|
|
append_string "$cfg" flow " " "noflow"
|
|
service_start /usr/sbin/hciattach $args
|
|
}
|
|
|
|
rfcomm_config() {
|
|
local cfg="$1"
|
|
config_get_bool enabled "$cfg" "enabled" '1'
|
|
[ $enabled -gt 0 ] || return 1
|
|
args=""
|
|
append_string "$cfg" config "-f"
|
|
/usr/bin/rfcomm $args bind all
|
|
}
|
|
|
|
dund_config() {
|
|
local cfg="$1"
|
|
config_get_bool enabled "$cfg" "enabled" '1'
|
|
[ $enabled -gt 0 ] || return 1
|
|
args=""
|
|
append_bool "$cfg" listen "--listen"
|
|
append_string "$cfg" connect "--connect"
|
|
append_string "$cfg" mrouter "--mrouter"
|
|
append_bool "$cfg" search "--search"
|
|
append_string "$cfg" channel "--channel"
|
|
append_string "$cfg" device "--device"
|
|
append_bool "$cfg" nosdp "--nosdp"
|
|
append_bool "$cfg" auth "--auth"
|
|
append_bool "$cfg" encrypt "--encrypt"
|
|
append_bool "$cfg" secure "--secure"
|
|
append_bool "$cfg" master "--master"
|
|
append_bool "$cfg" nodetach "--nodetach"
|
|
append_bool "$cfg" persist "--persist"
|
|
append_string "$cfg" pppd "--pppd"
|
|
append_bool "$cfg" msdun "--msdun"
|
|
append_bool "$cfg" activesync "--activesync"
|
|
append_bool "$cfg" cache "--cache"
|
|
|
|
append_string "$cfg" pppdopts ""
|
|
config_get ifn "$cfg" interface
|
|
if [ -n "$ifn" ]; then
|
|
config_get unit "$cfg" unit
|
|
[ -z "$unit" ] || append args "unit $unit ipparam $ifn linkname $ifn"
|
|
fi
|
|
|
|
service_start /usr/bin/dund $args
|
|
}
|
|
|
|
pand_config() {
|
|
local cfg="$1"
|
|
config_get_bool enabled "$cfg" "enabled" '1'
|
|
[ $enabled -gt 0 ] || return 1
|
|
args=""
|
|
append_bool "$cfg" listen "--listen"
|
|
append_string "$cfg" connect "--connect"
|
|
append_bool "$cfg" autozap "--autozap"
|
|
append_bool "$cfg" search "--search"
|
|
append_string "$cfg" role "--role"
|
|
append_string "$cfg" service "--service"
|
|
append_string "$cfg" ethernet "--ethernet"
|
|
append_string "$cfg" device "--device"
|
|
append_bool "$cfg" nosdp "-D"
|
|
append_bool "$cfg" auth "-A"
|
|
append_bool "$cfg" encrypt "-E"
|
|
append_bool "$cfg" secure "-S"
|
|
append_bool "$cfg" master "-M"
|
|
append_bool "$cfg" nodetach "-n"
|
|
append_bool "$cfg" persist "--persist"
|
|
append_bool "$cfg" cache "--cache"
|
|
append_string "$cfg" pidfile "--pidfile"
|
|
service_start /usr/bin/pand $args
|
|
}
|
|
|
|
start() {
|
|
config_load bluetooth
|
|
config_foreach hcid_config hcid
|
|
config_foreach hciattach_config hciattach
|
|
config_foreach rfcomm_config rfcomm
|
|
config_foreach dund_config dund
|
|
config_foreach pand_config pand
|
|
}
|
|
|
|
stop() {
|
|
service_stop /usr/bin/dund
|
|
service_stop /usr/bin/pand
|
|
/usr/bin/rfcomm release all
|
|
service_stop /usr/sbin/hciattach
|
|
service_stop /usr/sbin/hcid
|
|
}
|