| #!/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 |
| 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" || exit |
| done |
| |
| usb="$(basename "$1")" |
| 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[@]}" |