From 969d874aabcbf4e57d7beabe9817111e85b7e2fa Mon Sep 17 00:00:00 2001 From: HSZ_HeSongZhen <210202959@qq.com> Date: Tue, 29 Jul 2025 19:56:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20BleGamepadDriver?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hardware/drivers/BleGamepadDriver.java | 30 ++++++++++++++++++++++ .../com/iflytop/handacid/hardware/type/CmdId.java | 1 + 2 files changed, 31 insertions(+) create mode 100644 src/main/java/com/iflytop/handacid/hardware/drivers/BleGamepadDriver.java diff --git a/src/main/java/com/iflytop/handacid/hardware/drivers/BleGamepadDriver.java b/src/main/java/com/iflytop/handacid/hardware/drivers/BleGamepadDriver.java new file mode 100644 index 0000000..60ff803 --- /dev/null +++ b/src/main/java/com/iflytop/handacid/hardware/drivers/BleGamepadDriver.java @@ -0,0 +1,30 @@ +package com.iflytop.handacid.hardware.drivers; + + +import com.iflytop.handacid.hardware.comm.can.A8kCanBusService; +import com.iflytop.handacid.hardware.exception.HardwareException; +import com.iflytop.handacid.hardware.type.A8kPacket; +import com.iflytop.handacid.hardware.type.BleGamepadMid; +import com.iflytop.handacid.hardware.type.CmdId; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +@Slf4j +public class BleGamepadDriver { + private final A8kCanBusService canBus; + + public Boolean is_connected(BleGamepadMid id) throws HardwareException { + return canBus.callcmd(id.mid, CmdId.ble_gamepad_is_connected).getContentI32(0) != 0; + } + + + public void get_power_state(BleGamepadMid id, Integer power, Integer charge_state) throws HardwareException { + A8kPacket packet = canBus.callcmd(id.mid, CmdId.ble_gamepad_power_info); + power = packet.getContentI32(0); + charge_state = packet.getContentI32(1); + log.info("power: {}, charge_state: {}", power, charge_state); + } +} \ No newline at end of file diff --git a/src/main/java/com/iflytop/handacid/hardware/type/CmdId.java b/src/main/java/com/iflytop/handacid/hardware/type/CmdId.java index e3ae72c..e74c411 100644 --- a/src/main/java/com/iflytop/handacid/hardware/type/CmdId.java +++ b/src/main/java/com/iflytop/handacid/hardware/type/CmdId.java @@ -123,6 +123,7 @@ public enum CmdId { event_ble_gamepad_connected(0x5903, "EVENT_BLE_GAMEPAD_CONNECTED"), event_ble_gamepad_disconnected(0x5904, "EVENT_BLE_GAMEPAD_DISCONNECTED"), ble_gamepad_is_connected(0x5905, "BLE_GAMEPAD_IS_CONNECTED"), + ble_gamepad_power_info(0x5906, "BLE_GAMEPAD_POWER_INFO"), ; public final static int ATTACH_IS_BYTES = 1;