#!/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 }