diff options
Diffstat (limited to 'completions/hcitool')
-rw-r--r-- | completions/hcitool | 380 |
1 files changed, 380 insertions, 0 deletions
diff --git a/completions/hcitool b/completions/hcitool new file mode 100644 index 0000000..58bf5a7 --- /dev/null +++ b/completions/hcitool @@ -0,0 +1,380 @@ +# bash completion for bluez utils -*- shell-script -*- + +_bluetooth_addresses() +{ + if [[ -n ${COMP_BLUETOOTH_SCAN:-} ]]; then + COMPREPLY+=($(compgen -W "$(hcitool scan | + awk '/^\t/{print $1}')" -- "$cur")) + fi +} + +_bluetooth_devices() +{ + 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")) +} + +_hcitool() +{ + local cur prev words cword split + _init_completion -s || return + + case $prev in + -i) + _bluetooth_devices + return + ;; + --role) + COMPREPLY=($(compgen -W 'm s' -- "$cur")) + return + ;; + --pkt-type) + _bluetooth_packet_types + return + ;; + esac + + $split && return + + local arg + _get_first_arg + if [[ -z $arg ]]; then + if [[ $cur == -* ]]; then + COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$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 + local args + case $arg in + name | info | dc | rssi | lq | afh | auth | key | clkoff | lst) + _count_args + if ((args == 2)); then + _bluetooth_addresses + fi + ;; + cc) + if [[ $cur == -* ]]; then + COMPREPLY=($(compgen -W '--role --pkt-type' -- "$cur")) + else + _count_args + if ((args == 2)); then + _bluetooth_addresses + fi + fi + ;; + sr) + _count_args + if ((args == 2)); then + _bluetooth_addresses + else + COMPREPLY=($(compgen -W 'master slave' -- "$cur")) + fi + ;; + cpt) + _count_args + if ((args == 2)); then + _bluetooth_addresses + else + _bluetooth_packet_types + fi + ;; + tpl | enc | clock) + _count_args + if ((args == 2)); then + _bluetooth_addresses + else + COMPREPLY=($(compgen -W '0 1' -- "$cur")) + fi + ;; + esac + fi +} && + complete -F _hcitool hcitool + +_sdptool() +{ + local cur prev words cword split + _init_completion -s || return + + case $prev in + --bdaddr) + _bluetooth_addresses + return + ;; + esac + + $split && return + + local arg + _get_first_arg + if [[ -z $arg ]]; then + if [[ $cur == -* ]]; then + COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) + else + COMPREPLY=($(compgen -W 'search browse records add del get + setattr setseq' -- "$cur")) + fi + else + case $arg 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_addresses + 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 words cword + _init_completion || return + + case $prev in + -i) + _bluetooth_devices + return + ;; + -s | -c | -t | -d) + return + ;; + esac + + if [[ $cur == -* ]]; then + COMPREPLY=($(compgen -W '$(_parse_usage "$1")' -- "$cur")) + else + _bluetooth_addresses + fi +} && + complete -F _l2ping l2ping + +_rfcomm() +{ + local cur prev words cword + _init_completion || return + + case $prev in + -f | --config) + _filedir + return + ;; + -i) + _bluetooth_devices + _bluetooth_addresses + return + ;; + esac + + local arg + _get_first_arg + if [[ -z $arg ]]; then + if [[ $cur == -* ]]; then + COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) + else + COMPREPLY=($(compgen -W 'show connect listen watch bind + release' -- "$cur")) + fi + else + local args + _count_args + if ((args == 2)); then + _bluetooth_devices + else + case $arg in + connect | bind) + if ((args == 3)); then + _bluetooth_addresses + fi + ;; + esac + fi + fi +} && + complete -F _rfcomm rfcomm + +_ciptool() +{ + local cur prev words cword + _init_completion || return + + case $prev in + -i) + _bluetooth_devices + _bluetooth_addresses + return + ;; + esac + + local arg + _get_first_arg + if [[ -z $arg ]]; then + if [[ $cur == -* ]]; then + COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) + else + COMPREPLY=($(compgen -W 'show search connect release loopback' \ + -- "$cur")) + fi + else + local args + case $arg in + connect | release | loopback) + _count_args + if ((args == 2)); then + _bluetooth_addresses + fi + ;; + esac + fi +} && + complete -F _ciptool ciptool + +_dfutool() +{ + local cur prev words cword + _init_completion || return + + case $prev in + -d | --device) + _bluetooth_devices + return + ;; + esac + + if [[ $cur == -* ]]; then + COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) + else + local args + _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 prev words cword + _init_completion || return + + local arg + _get_first_arg + if [[ -z $arg ]]; then + if [[ $cur == -* ]]; then + COMPREPLY=($(compgen -W '--help --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 + local args + case $arg in + putkey | delkey) + _count_args + if ((args == 2)); then + _bluetooth_addresses + fi + ;; + lm) + _count_args + if ((args == 2)); then + COMPREPLY=($(compgen -W 'MASTER SLAVE NONE ACCEPT' \ + -- "$cur")) + fi + ;; + ptype) + _count_args + if ((args == 2)); then + _bluetooth_packet_types + fi + ;; + esac + fi +} && + complete -F _hciconfig hciconfig + +_hciattach() +{ + local cur prev words cword + _init_completion || return + + if [[ $cur == -* ]]; then + COMPREPLY=($(compgen -W '-n -p -t -b -s -l' -- "$cur")) + else + local args + _count_args + case $args in + 1) + COMPREPLY=($(printf '%s\n' /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_addresses + ;; + esac + fi +} && + complete -F _hciattach hciattach + +# ex: filetype=sh |