# bash completion for bluez-utils # $Id: vpnc 341 2007-01-16 10:57:23Z guillomovitch $ _bluetooth_adresses() { if [ -n "${COMP_BLUETOOTH_SCAN:-}" ]; then COMPREPLY=( ${COMPREPLY[@]:-} $( hcitool scan | \ awk '/^\t/{print $1}' | grep "^$cur" ) ) fi } _bluetooth_devices() { COMPREPLY=( ${COMPREPLY[@]:-} $( hcitool dev | \ awk '/^\t/{print $1}' | grep "^$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 COMPREPLY=() cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} case $prev in -i) _bluetooth_devices return 0; ;; esac # --name=value style option if [[ "$cur" == *=* ]]; then prev=${cur/=*/} cur=${cur/*=/} case $prev in --role) COMPREPLY=( $( compgen -W 'm s' -- $cur ) ) return 0; ;; --pkt-type) _bluetooth_packet_types return 0; ;; esac fi _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 COMPREPLY=() cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} case $prev in --bdaddr) _bluetooth_adresses return 0; ;; esac _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=${COMP_WORDS[COMP_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=${COMP_WORDS[COMP_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=${COMP_WORDS[COMP_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=${COMP_WORDS[COMP_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=${COMP_WORDS[COMP_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=${COMP_WORDS[COMP_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=${COMP_WORDS[COMP_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=${COMP_WORDS[COMP_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