summaryrefslogtreecommitdiff
path: root/contrib/bluez-utils
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/bluez-utils')
-rw-r--r--contrib/bluez-utils452
1 files changed, 452 insertions, 0 deletions
diff --git a/contrib/bluez-utils b/contrib/bluez-utils
new file mode 100644
index 00000000..f4d56ea5
--- /dev/null
+++ b/contrib/bluez-utils
@@ -0,0 +1,452 @@
+# bash completion for bluez-utils
+
+have hcitool && {
+_bluetooth_adresses()
+{
+ if [ -n "${COMP_BLUETOOTH_SCAN:-}" ]; then
+ COMPREPLY=( ${COMPREPLY[@]:-} $( compgen -W "$( hcitool scan | \
+ awk '/^\t/{print $1}' )" -- "$cur" ) )
+ fi
+}
+
+_bluetooth_devices()
+{
+ COMPREPLY=( ${COMPREPLY[@]:-} $( compgen -W "$( hcitool dev | \
+ awk '/^\t/{print $1}' )" -- "$cur" ) )
+}
+
+_bluetooth_services()
+{
+ COMPREPLY=( $( compgen -W 'DID SP DUN LAN FAX OPUSH FTP HS HF HFAG \
+ SAP NAP GN PANU HCRP HID CIP A2SRC A2SNK AVRCT AVRTG UDIUE \
+ UDITE SYNCML' -- "$cur" ) )
+}
+
+_bluetooth_packet_types()
+{
+ COMPREPLY=( $( compgen -W 'DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3' \
+ -- "$cur" ) )
+}
+
+_get_command()
+{
+ local i
+
+ command=
+ for (( i=1; i < COMP_CWORD; i++ )); do
+ if [[ "${COMP_WORDS[i]}" != -* ]]; then
+ command=${COMP_WORDS[i]}
+ break
+ fi
+ done
+}
+
+_hcitool()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ cur=`_get_cword`
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ _split_longopt && split=true
+
+ case $prev in
+ -i)
+ _bluetooth_devices
+ return 0;
+ ;;
+ --role)
+ COMPREPLY=( $( compgen -W 'm s' -- "$cur" ) )
+ return 0;
+ ;;
+ --pkt-type)
+ _bluetooth_packet_types
+ return 0;
+ ;;
+ esac
+
+ $split && return 0
+
+ _get_command
+ if [ -z $command ]; then
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-h -i' -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -W 'dev inq scan name info \
+ spinq epinq cmd con cc dc sr cpt rssi lq tpl \
+ afh lst auth enc key clkoff clock' -- "$cur" ) )
+ fi
+ else
+ case $command in
+ @(name|info|dc|rssi|lq|afh|auth|key|clkoff|lst))
+ _count_args
+ if [ $args -eq 2 ]; then
+ _bluetooth_adresses
+ fi
+ ;;
+ cc)
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--role --pkt-type' -- "$cur" ) )
+ else
+ _count_args
+ if [ $args -eq 2 ]; then
+ _bluetooth_adresses
+ fi
+ fi
+ ;;
+ sr)
+ _count_args
+ if [ $args -eq 2 ]; then
+ _bluetooth_adresses
+ else
+ COMPREPLY=( $( compgen -W 'master slave' -- "$cur" ) )
+ fi
+ ;;
+ cpt)
+ _count_args
+ if [ $args -eq 2 ]; then
+ _bluetooth_adresses
+ else
+ _bluetooth_packet_types
+ fi
+ ;;
+ @(tpl|enc|clock))
+ _count_args
+ if [ $args -eq 2 ]; then
+ _bluetooth_adresses
+ else
+ COMPREPLY=( $( compgen -W '0 1' -- "$cur" ) )
+ fi
+ ;;
+ esac
+ fi
+}
+complete -F _hcitool hcitool
+
+_sdptool()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ cur=`_get_cword`
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ _split_longopt && split=true
+
+ case $prev in
+ --bdaddr)
+ _bluetooth_adresses
+ return 0;
+ ;;
+ esac
+
+ $split && return 0
+
+ _get_command
+ if [ -z $command ]; then
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--help' -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -W 'search browse records add \
+ del get setattr setseq' -- "$cur" ) )
+ fi
+ else
+ case $command in
+ search)
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--bdaddr \
+ --tree --raw --xml' -- "$cur" ) )
+ else
+ _bluetooth_services
+ fi
+ ;;
+ @(browse|records))
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--tree --raw --xml' -- "$cur" ) )
+ else
+ _bluetooth_adresses
+ fi
+ ;;
+ add)
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--handle --channel' -- "$cur" ) )
+ else
+ _bluetooth_services
+ fi
+ ;;
+ get)
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--bdaddr \
+ --tree --raw --xml' -- "$cur" ) )
+ fi
+ ;;
+ esac
+ fi
+}
+complete -F _sdptool sdptool
+
+_l2ping()
+{
+ local cur prev
+
+ COMPREPLY=()
+ cur=`_get_cword`
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ case $prev in
+ -i)
+ _bluetooth_devices
+ return 0;
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-i -s -c -t -f -r' -- "$cur" ) )
+ else
+ _bluetooth_adresses
+ fi
+
+}
+complete -F _l2ping l2ping
+
+_rfcomm()
+{
+ local cur prev
+
+ COMPREPLY=()
+ cur=`_get_cword`
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ case $prev in
+ -@(f|-config))
+ _filedir
+ return 0;
+ ;;
+ -i)
+ _bluetooth_devices
+ _bluetooth_adresses
+ return 0;
+ ;;
+ esac
+
+ _get_command
+ if [ -z $command ]; then
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-h --help -a -r --raw -f \
+ --config -i -A --auth -E --encrypt -S --secure \
+ -M --master' -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -W 'show connect listen watch \
+ bind release' -- "$cur" ) )
+ fi
+ else
+ _count_args
+ if [ $args -eq 2 ]; then
+ _bluetooth_devices
+ else
+ case $command in
+ @(connect|bind))
+ if [ $args -eq 3 ]; then
+ _bluetooth_adresses
+ fi
+ ;;
+ esac
+ fi
+ fi
+}
+complete -F _rfcomm rfcomm
+
+_ciptool()
+{
+ local cur prev
+
+ COMPREPLY=()
+ cur=`_get_cword`
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ case $prev in
+ -i)
+ _bluetooth_devices
+ _bluetooth_adresses
+ return 0;
+ ;;
+ esac
+
+ _get_command
+ if [ -z $command ]; then
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-h --help -i' -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -W 'show search connect release \
+ loopback' -- "$cur" ) )
+ fi
+ else
+ case $command in
+ @(connect|release|loopback))
+ _count_args
+ if [ $args -eq 2 ]; then
+ _bluetooth_adresses
+ fi
+ ;;
+ esac
+ fi
+}
+complete -F _ciptool ciptool
+
+_dfutool()
+{
+ local cur prev
+
+ COMPREPLY=()
+ cur=`_get_cword`
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ case $prev in
+ -@(d|-device))
+ _bluetooth_devices
+ return 0;
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-h --help -d --device' -- "$cur" ) )
+ else
+ _count_args
+ case $args in
+ 1)
+ COMPREPLY=( $( compgen -W 'verify modify \
+ upgrade archive' -- "$cur" ) )
+ ;;
+ 2)
+ _filedir
+ ;;
+ esac
+ fi
+}
+complete -F _dfutool dfutool
+
+_hciconfig()
+{
+ local cur
+
+ COMPREPLY=()
+ cur=`_get_cword`
+
+ _get_command
+ if [ -z $command ]; then
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-h --help -a --all' -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -W 'up down reset rstat auth \
+ noauth encrypt noencrypt secmgr nosecmgr \
+ piscan noscan iscan pscan ptype name class \
+ voice iac inqmode inqdata inqtype inqparams \
+ pageparms pageto afhmode aclmtu scomtu putkey \
+ delkey commands features version revision lm' \
+ -- "$cur" ) )
+ fi
+ else
+ case $command in
+ @(putkey|delkey))
+ _count_args
+ if [ $args -eq 2 ]; then
+ _bluetooth_adresses
+ fi
+ ;;
+ lm)
+ _count_args
+ if [ $args -eq 2 ]; then
+ COMPREPLY=( $( compgen -W 'MASTER \
+ SLAVE NONE ACCEPT' -- "$cur" ) )
+ fi
+ ;;
+ ptype)
+ _count_args
+ if [ $args -eq 2 ]; then
+ _bluetooth_packet_types
+ fi
+ ;;
+ esac
+ fi
+}
+complete -F _hciconfig hciconfig
+
+_hciattach()
+{
+ local cur
+
+ COMPREPLY=()
+ cur=`_get_cword`
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-n -p -t -b -s -l' -- "$cur" ) )
+ else
+ _count_args
+ case $args in
+ 1)
+ COMPREPLY=( $( command ls /dev/tty* ) )
+ COMPREPLY=( $( compgen -W '${COMPREPLY[@]} \
+ ${COMPREPLY[@]#/dev/}' -- "$cur" ) )
+ ;;
+ 2)
+ COMPREPLY=( $( compgen -W 'any ericsson digi \
+ xircom csr bboxes swave bcsp 0x0105 \
+ 0x080a 0x0160 0x0002' -- "$cur" ) )
+ ;;
+ 3)
+ COMPREPLY=( $( compgen -W '9600 19200 38400 \
+ 57600 115200 230400 460800 921600' -- "$cur" ) )
+ ;;
+ 4)
+ COMPREPLY=( $( compgen -W 'flow noflow' -- "$cur" ) )
+ ;;
+ 5)
+ _bluetooth_adresses
+ ;;
+ esac
+ fi
+
+}
+complete -F _hciattach hciattach
+
+_hid2hci()
+{
+ local cur
+
+ COMPREPLY=()
+ cur=`_get_cword`
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-h --help -q --quiet -0 --tohci -1 \
+ --tohid' -- "$cur" ) )
+ fi
+}
+complete -F _hid2hci hid2hci
+
+_avctrl()
+{
+ local cur
+
+ COMPREPLY=()
+ cur=`_get_cword`
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-h --help -q --quiet' -- "$cur" ) )
+ else
+ _count_args
+ if [ $args -eq 1 ]; then
+ COMPREPLY=( $( compgen -W 'discover switch' -- "$cur" ) )
+ fi
+ fi
+}
+complete -F _avctrl avctrl
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh