distribution/packages/jelos/sources/scripts/batocera-bluetooth
2022-02-05 09:23:32 -05:00

110 lines
1.7 KiB
Bash
Executable file

#!/bin/bash
ACTION=$1
shift
do_help() {
echo "${1} list" >&2
echo "${1} trust" >&2
echo "${1} remove <device address>" >&2
}
do_list() {
find /storage/.cache/bluetooth -type f -name info |
while read FILE
do
if grep -qE '^Trusted=true$' "${FILE}"
then
DEVNAME=$(grep -E '^Name=' "${FILE}" | sed -e s+"^Name="++)
DEVADDR=$(basename $(dirname "${FILE}"))
echo "${DEVADDR} ${DEVNAME}"
fi
done
}
do_remove() {
DEV="${1}"
# output is never nice
if ! (echo "untrust ${DEV}" ; echo "remove ${DEV}") | bluetoothctl >/dev/null 2>/dev/null
then
return 1
fi
return 0
}
do_trust() {
NPID=$(pgrep -f batocera-bluetooth-agent)
test -z "${NPID}" && return 0
touch "/var/run/bt_status" || retrun 1
LAST_MSG=$(cat "/var/run/bt_status")
# start discovering
kill -10 "${NPID}"
trap "kill -12 ${NPID}" 2 3
N=30
while test $N -gt 0
do
NEW_MSG=$(cat "/var/run/bt_status")
if test "${LAST_MSG}" != "${NEW_MSG}"
then
LAST_MSG="${NEW_MSG}"
echo "${NEW_MSG}"
fi
sleep 1
let N--
done
# stop discovering
kill -12 "${NPID}"
}
do_starttrust() {
NPID=$(pgrep -f batocera-bluetooth-agent)
test -z "${NPID}" && exit 0
# start discovering
kill -10 "${NPID}"
}
do_stoptrust() {
NPID=$(pgrep -f batocera-bluetooth-agent)
test -z "${NPID}" && exit 0
# stop discovering
kill -12 "${NPID}"
}
case "${ACTION}" in
"list")
do_list
;;
"trust")
do_trust
;;
"starttrust")
do_starttrust
;;
"stoptrust")
do_stoptrust
;;
"remove")
if test $# = 1
then
do_remove "${1}" || exit 1
else
do_help "${0}"
exit 1
fi
;;
*)
do_help "${0}"
exit 1
esac
exit 0