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
BTGATT_BIN=/usr/bin/btgatt-server
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
ATTACH_PIDFILE=/var/run/hciattach.pid
BTGATT_PIDFILE=/var/run/btgatt-server.pid
BLUETOOTHD_PIDFILE=/var/run/bluetoothd.pid
wait_for_hci()
{
"${HCI_TOOL}" wait "${HCI_DEV}" "${HCI_WAIT_TIMEOUT}"
"${HCI_TOOL}" wait "${HCI_DEV}" "${HCI_WAIT_TIMEOUT}"
}
bring_hci_up()
{
"${HCI_TOOL}" up "${HCI_DEV}"
}
set_hci_name()
{
"${HCI_TOOL}" name "${HCI_DEV}" "${BT_LOCAL_NAME}"
"${HCI_TOOL}" up "${HCI_DEV}"
}
start_bt()
{
echo "[BT] Init AIC8800..."
insmod /lib/modules/5.10.44/kernel/drivers/net/wireless/aic8800/aic8800_btlpm/aic8800_btlpm.ko
sleep 1
echo "[BT] Init AIC8800..."
insmod /lib/modules/5.10.44/kernel/drivers/net/wireless/aic8800/aic8800_btlpm/aic8800_btlpm.ko 2>/dev/null
sleep 1
killall hciattach 2>/dev/null
killall btgatt-server 2>/dev/null
rm -f "${ATTACH_PIDFILE}" "${BTGATT_PIDFILE}"
killall hciattach 2>/dev/null
killall bluetoothd 2>/dev/null
killall btgatt-server 2>/dev/null
rm -f "${ATTACH_PIDFILE}" "${BLUETOOTHD_PIDFILE}" "${BTGATT_PIDFILE}"
"${HCIATTACH_BIN}" ${HCIATTACH_ARGS} &
echo $! > "${ATTACH_PIDFILE}"
"${HCIATTACH_BIN}" ${HCIATTACH_ARGS} &
echo $! > "${ATTACH_PIDFILE}"
if ! wait_for_hci; then
echo "[BT] ERROR: ${HCI_DEV} not ready"
return 1
fi
if ! wait_for_hci; then
echo "[BT] ERROR: ${HCI_DEV} not ready"
return 1
fi
if ! bring_hci_up; then
echo "[BT] ERROR: failed to bring ${HCI_DEV} up"
return 1
fi
if ! bring_hci_up; then
echo "[BT] ERROR: failed to bring ${HCI_DEV} up"
return 1
fi
if ! set_hci_name; then
echo "[BT] WARN: failed to set controller local name"
fi
echo "[BT] HCI ready"
"${BTGATT_BIN}" ${BTGATT_ARGS} >/dev/null 2>&1 &
echo $! > "${BTGATT_PIDFILE}"
echo "[BT] GATT server started"
# 先启动 LE 广播
hciconfig ${HCI_DEV} leadv 0
sleep 1
# 启动 bluetoothd
"${BLUETOOTHD_BIN}" &
echo $! > "${BLUETOOTHD_PIDFILE}"
# 启动 btgatt-server设置广播数据包含名称
"${BTGATT_BIN}" ${BTGATT_ARGS} >/dev/null 2>&1 &
echo $! > "${BTGATT_PIDFILE}"
echo "[BT] Bluetooth ready with GATT server"
}
stop_bt()
{
if [ -f "${BTGATT_PIDFILE}" ]; then
kill "$(cat "${BTGATT_PIDFILE}")" 2>/dev/null
rm -f "${BTGATT_PIDFILE}"
else
killall btgatt-server 2>/dev/null
fi
hciconfig ${HCI_DEV} noleadv 2>/dev/null
if [ -f "${ATTACH_PIDFILE}" ]; then
kill "$(cat "${ATTACH_PIDFILE}")" 2>/dev/null
rm -f "${ATTACH_PIDFILE}"
else
killall hciattach 2>/dev/null
fi
if [ -f "${BTGATT_PIDFILE}" ]; then
kill "$(cat "${BTGATT_PIDFILE}")" 2>/dev/null
rm -f "${BTGATT_PIDFILE}"
else
killall btgatt-server 2>/dev/null
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
start)
start_bt
;;
stop)
stop_bt
;;
restart)
stop_bt
sleep 1
start_bt
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
start)
start_bt
;;
stop)
stop_bt
;;
restart)
stop_bt
sleep 1
start_bt
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit $?

Binary file not shown.