Browse Source

增加 BleGamepadDriver

master
HSZ_HeSongZhen 5 days ago
parent
commit
969d874aab
  1. 30
      src/main/java/com/iflytop/handacid/hardware/drivers/BleGamepadDriver.java
  2. 1
      src/main/java/com/iflytop/handacid/hardware/type/CmdId.java

30
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);
}
}

1
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_connected(0x5903, "EVENT_BLE_GAMEPAD_CONNECTED"),
event_ble_gamepad_disconnected(0x5904, "EVENT_BLE_GAMEPAD_DISCONNECTED"), event_ble_gamepad_disconnected(0x5904, "EVENT_BLE_GAMEPAD_DISCONNECTED"),
ble_gamepad_is_connected(0x5905, "BLE_GAMEPAD_IS_CONNECTED"), 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; public final static int ATTACH_IS_BYTES = 1;

Loading…
Cancel
Save