mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
oppo: dynamically request supported misc configs
This commit is contained in:
+12
-7
@@ -517,13 +517,18 @@ public class OppoHeadphonesProtocol extends GBDeviceProtocol {
|
|||||||
return encodeMessage(OppoCommand.MISC_CONFIG_SET, payload);
|
return encodeMessage(OppoCommand.MISC_CONFIG_SET, payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] encodeMiscConfigReq() {
|
public byte[] encodeMiscConfigReq(List<MiscConfigType> types) {
|
||||||
return encodeMessage(OppoCommand.MISC_CONFIG_REQ, new byte[]{
|
if (types == null || types.isEmpty()) {
|
||||||
(byte) 0x03,
|
return encodeMessage(OppoCommand.MISC_CONFIG_REQ, new byte[]{0x00});
|
||||||
(byte) MiscConfigType.LDAC.getCode(),
|
}
|
||||||
(byte) MiscConfigType.MULTIPOINT.getCode(),
|
|
||||||
(byte) MiscConfigType.GAME_MODE.getCode()
|
byte[] payload = new byte[1 + types.size()];
|
||||||
});
|
payload[0] = (byte) types.size();
|
||||||
|
|
||||||
|
for (int i = 0; i < types.size(); i++) {
|
||||||
|
payload[i + 1] = (byte) types.get(i).getCode();
|
||||||
|
}
|
||||||
|
return encodeMessage(OppoCommand.MISC_CONFIG_REQ, payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] encodeAncConfigSet(final AncConfigValue mode) {
|
public byte[] encodeAncConfigSet(final AncConfigValue mode) {
|
||||||
|
|||||||
+23
-2
@@ -22,11 +22,15 @@ import org.slf4j.Logger;
|
|||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.model.BatteryState;
|
import nodomain.freeyourgadget.gadgetbridge.model.BatteryState;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.btbr.TransactionBuilder;
|
import nodomain.freeyourgadget.gadgetbridge.service.btbr.TransactionBuilder;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.serial.AbstractHeadphoneSerialDeviceSupportV2;
|
import nodomain.freeyourgadget.gadgetbridge.service.serial.AbstractHeadphoneSerialDeviceSupportV2;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.oppo.commands.MiscConfigType;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.devices.oppo.OppoHeadphonesCoordinator;
|
||||||
|
|
||||||
public class OppoHeadphonesSupport extends AbstractHeadphoneSerialDeviceSupportV2<OppoHeadphonesProtocol> {
|
public class OppoHeadphonesSupport extends AbstractHeadphoneSerialDeviceSupportV2<OppoHeadphonesProtocol> {
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(OppoHeadphonesSupport.class);
|
private static final Logger LOG = LoggerFactory.getLogger(OppoHeadphonesSupport.class);
|
||||||
@@ -70,9 +74,26 @@ public class OppoHeadphonesSupport extends AbstractHeadphoneSerialDeviceSupportV
|
|||||||
@Override
|
@Override
|
||||||
protected TransactionBuilder initializeDevice(final TransactionBuilder builder) {
|
protected TransactionBuilder initializeDevice(final TransactionBuilder builder) {
|
||||||
builder.write(mDeviceProtocol.encodeFirmwareVersionReq());
|
builder.write(mDeviceProtocol.encodeFirmwareVersionReq());
|
||||||
builder.write(mDeviceProtocol.encodeMiscConfigReq());
|
|
||||||
|
final OppoHeadphonesCoordinator coordinator = (OppoHeadphonesCoordinator) getDevice().getDeviceCoordinator();
|
||||||
|
final List<MiscConfigType> supportedMiscConfigs = new ArrayList<>();
|
||||||
|
if (coordinator.supportsLdac(getDevice())) {
|
||||||
|
supportedMiscConfigs.add(MiscConfigType.LDAC);
|
||||||
|
}
|
||||||
|
if (coordinator.supportsMultipoint(getDevice())) {
|
||||||
|
supportedMiscConfigs.add(MiscConfigType.MULTIPOINT);
|
||||||
|
}
|
||||||
|
if (coordinator.supportsGameMode(getDevice())) {
|
||||||
|
supportedMiscConfigs.add(MiscConfigType.GAME_MODE);
|
||||||
|
}
|
||||||
|
if (!supportedMiscConfigs.isEmpty()) {
|
||||||
|
builder.write(mDeviceProtocol.encodeMiscConfigReq(supportedMiscConfigs));
|
||||||
|
}
|
||||||
builder.write(mDeviceProtocol.encodeTouchConfigReq());
|
builder.write(mDeviceProtocol.encodeTouchConfigReq());
|
||||||
builder.write(mDeviceProtocol.encodeAncConfigReq());
|
if (coordinator.supportsAnc(getDevice())) {
|
||||||
|
builder.write(mDeviceProtocol.encodeAncConfigReq());
|
||||||
|
}
|
||||||
|
|
||||||
builder.write(mDeviceProtocol.encodeBatteryReq());
|
builder.write(mDeviceProtocol.encodeBatteryReq());
|
||||||
builder.setDeviceState(GBDevice.State.INITIALIZED);
|
builder.setDeviceState(GBDevice.State.INITIALIZED);
|
||||||
scheduleBatteryRequestRetry();
|
scheduleBatteryRequestRetry();
|
||||||
|
|||||||
Reference in New Issue
Block a user