listdev() {
    local path=$1; shift
    ls -d "$path"/* 2>/dev/null
}

printnode() {
    local depth=$1; shift
    local msg=$1; shift

    local i=0
    while [ "$i" -ne "$depth" ];
    do
        printf '    '
        i=$((i + 1))
    done

    printf "%s\n" "$msg"
}

printattr()
{
    local device_path=$1
    local attr_name=$2

    local value
    value=$(/lib/udev/enyx-hfp-device-get-attr "$attr_name" "$device_path")
    printf "%s: " "${attr_name}"
    if [ -n "${value}" ]; then
        printf "%s" "$value"
    else
        printf '<unavailable>'
    fi
}

print_bus_alias() {
    local bus_id=$1; shift
    local name
    name=$(cat "/sys/class/enyx_hfp_bus/enyx_hfp_bus${bus_id}/bus_alias")
    if [ -n "${name}" ]; then
        printf "%s" "${name}"
    else
        printf "<unavailable>"
    fi
}
