|  | #!/bin/bash | 
|  | declare -A HOTH_USB_NAMES=() | 
|  | declare -A HOTH_ADDRESS_MODE=() | 
|  | declare -A TARGET_RESET=() | 
|  | declare -A IGNORE_ADDRESS_MODE=() | 
|  | declare -A UART_CHANNEL_ID=() | 
|  | shopt -s nullglob | 
|  |  | 
|  | usb="$(basename "$1")" | 
|  |  | 
|  | for cfg in '@datadir@'/hothd/usb-config/*.sh; do | 
|  | # Followed https://www.shellcheck.net/wiki/SC1090 for dynamic source target | 
|  | # shellcheck source=/dev/null | 
|  | source "$cfg" "$usb" || exit | 
|  | done | 
|  |  | 
|  | name="${HOTH_USB_NAMES["$usb"]}" | 
|  | if [ -z "$name" ]; then | 
|  | echo "Missing mapping for $usb" >&2 | 
|  | exit 10 | 
|  | fi | 
|  | address_mode="${HOTH_ADDRESS_MODE["$usb"]}" | 
|  | if [ -z "$address_mode" ]; then | 
|  | address_mode="4" | 
|  | fi | 
|  | args=() | 
|  | case "_${TARGET_RESET["$usb"]}" in | 
|  | '_ignore_fail') | 
|  | args+=(-rignore_fail) | 
|  | ;; | 
|  | '_disable_passthrough') | 
|  | args+=(-rneeded_active) | 
|  | ;; | 
|  | '_') | 
|  | ;; | 
|  | *) | 
|  | args+=(-r) | 
|  | ;; | 
|  | esac | 
|  | if [ -n "${IGNORE_ADDRESS_MODE["$usb"]}" ]; then | 
|  | args+=(-i) | 
|  | fi | 
|  | if [ -n "${UART_CHANNEL_ID["$usb"]}" ]; then | 
|  | args+=(-u "${UART_CHANNEL_ID["$usb"]}") | 
|  | fi | 
|  |  | 
|  | exec '@libexecdir@'/hothd -n "$name" -m usb:"$usb" -a "$address_mode" "${args[@]}" |