bluetooth can be found e_player can run

This commit is contained in:
hyx 2026-04-09 12:30:22 +08:00
parent 356d026942
commit 16ee54451d
2 changed files with 71 additions and 60 deletions

View File

@ -9,94 +9,105 @@ HCIATTACH_ARGS="-s 1500000 ${UART_DEV} any 1500000 flow nosleep"
HCI_TOOL=/usr/bin/bt-hci-tool HCI_TOOL=/usr/bin/bt-hci-tool
BTGATT_BIN=/usr/bin/btgatt-server BTGATT_BIN=/usr/bin/btgatt-server
BTGATT_ARGS="-i ${HCI_DEV} -s low -t public" BTGATT_ARGS="-i ${HCI_DEV} -s low -t public"
BT_LOCAL_NAME="DSL-ETAG" BLUETOOTHD_BIN=/usr/libexec/bluetooth/bluetoothd
BT_LOCAL_NAME="AIC-BT"
HCI_WAIT_TIMEOUT=10 HCI_WAIT_TIMEOUT=10
ATTACH_PIDFILE=/var/run/hciattach.pid ATTACH_PIDFILE=/var/run/hciattach.pid
BTGATT_PIDFILE=/var/run/btgatt-server.pid BTGATT_PIDFILE=/var/run/btgatt-server.pid
BLUETOOTHD_PIDFILE=/var/run/bluetoothd.pid
wait_for_hci() wait_for_hci()
{ {
"${HCI_TOOL}" wait "${HCI_DEV}" "${HCI_WAIT_TIMEOUT}" "${HCI_TOOL}" wait "${HCI_DEV}" "${HCI_WAIT_TIMEOUT}"
} }
bring_hci_up() bring_hci_up()
{ {
"${HCI_TOOL}" up "${HCI_DEV}" "${HCI_TOOL}" up "${HCI_DEV}"
}
set_hci_name()
{
"${HCI_TOOL}" name "${HCI_DEV}" "${BT_LOCAL_NAME}"
} }
start_bt() start_bt()
{ {
echo "[BT] Init AIC8800..." echo "[BT] Init AIC8800..."
insmod /lib/modules/5.10.44/kernel/drivers/net/wireless/aic8800/aic8800_btlpm/aic8800_btlpm.ko insmod /lib/modules/5.10.44/kernel/drivers/net/wireless/aic8800/aic8800_btlpm/aic8800_btlpm.ko 2>/dev/null
sleep 1 sleep 1
killall hciattach 2>/dev/null killall hciattach 2>/dev/null
killall btgatt-server 2>/dev/null killall bluetoothd 2>/dev/null
rm -f "${ATTACH_PIDFILE}" "${BTGATT_PIDFILE}" killall btgatt-server 2>/dev/null
rm -f "${ATTACH_PIDFILE}" "${BLUETOOTHD_PIDFILE}" "${BTGATT_PIDFILE}"
"${HCIATTACH_BIN}" ${HCIATTACH_ARGS} & "${HCIATTACH_BIN}" ${HCIATTACH_ARGS} &
echo $! > "${ATTACH_PIDFILE}" echo $! > "${ATTACH_PIDFILE}"
if ! wait_for_hci; then if ! wait_for_hci; then
echo "[BT] ERROR: ${HCI_DEV} not ready" echo "[BT] ERROR: ${HCI_DEV} not ready"
return 1 return 1
fi fi
if ! bring_hci_up; then if ! bring_hci_up; then
echo "[BT] ERROR: failed to bring ${HCI_DEV} up" echo "[BT] ERROR: failed to bring ${HCI_DEV} up"
return 1 return 1
fi fi
if ! set_hci_name; then # 先启动 LE 广播
echo "[BT] WARN: failed to set controller local name" hciconfig ${HCI_DEV} leadv 0
fi sleep 1
echo "[BT] HCI ready" # 启动 bluetoothd
"${BLUETOOTHD_BIN}" &
"${BTGATT_BIN}" ${BTGATT_ARGS} >/dev/null 2>&1 & echo $! > "${BLUETOOTHD_PIDFILE}"
echo $! > "${BTGATT_PIDFILE}"
echo "[BT] GATT server started" # 启动 btgatt-server设置广播数据包含名称
"${BTGATT_BIN}" ${BTGATT_ARGS} >/dev/null 2>&1 &
echo $! > "${BTGATT_PIDFILE}"
echo "[BT] Bluetooth ready with GATT server"
} }
stop_bt() stop_bt()
{ {
if [ -f "${BTGATT_PIDFILE}" ]; then hciconfig ${HCI_DEV} noleadv 2>/dev/null
kill "$(cat "${BTGATT_PIDFILE}")" 2>/dev/null
rm -f "${BTGATT_PIDFILE}"
else
killall btgatt-server 2>/dev/null
fi
if [ -f "${ATTACH_PIDFILE}" ]; then if [ -f "${BTGATT_PIDFILE}" ]; then
kill "$(cat "${ATTACH_PIDFILE}")" 2>/dev/null kill "$(cat "${BTGATT_PIDFILE}")" 2>/dev/null
rm -f "${ATTACH_PIDFILE}" rm -f "${BTGATT_PIDFILE}"
else else
killall hciattach 2>/dev/null killall btgatt-server 2>/dev/null
fi fi
if [ -f "${BLUETOOTHD_PIDFILE}" ]; then
kill "$(cat "${BLUETOOTHD_PIDFILE}")" 2>/dev/null
rm -f "${BLUETOOTHD_PIDFILE}"
else
killall bluetoothd 2>/dev/null
fi
if [ -f "${ATTACH_PIDFILE}" ]; then
kill "$(cat "${ATTACH_PIDFILE}")" 2>/dev/null
rm -f "${ATTACH_PIDFILE}"
else
killall hciattach 2>/dev/null
fi
} }
case "$1" in case "$1" in
start) start)
start_bt start_bt
;; ;;
stop) stop)
stop_bt stop_bt
;; ;;
restart) restart)
stop_bt stop_bt
sleep 1 sleep 1
start_bt start_bt
;; ;;
*) *)
echo "Usage: $0 {start|stop|restart}" echo "Usage: $0 {start|stop|restart}"
exit 1 exit 1
;; ;;
esac esac
exit $? exit $?

Binary file not shown.