mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
Fossil Q: Support calibration of physical hands
This commit is contained in:
committed by
Arjan Schrijver
parent
9e3e381680
commit
79363b0cbb
+2
-2
@@ -269,7 +269,7 @@ public class QHybridCoordinator extends AbstractBLEDeviceCoordinator {
|
||||
deviceSpecificSettings.addRootScreen(R.xml.devicesettings_fossilqhybrid_legacy);
|
||||
deviceSpecificSettings.addRootScreen(R.xml.devicesettings_qhybrid);
|
||||
deviceSpecificSettings.addRootScreen(R.xml.devicesettings_fossilhybridhr_vibration);
|
||||
// deviceSpecificSettings.addRootScreen(R.xml.devicesettings_fossilhybridhr_calibration); // TODO
|
||||
deviceSpecificSettings.addRootScreen(R.xml.devicesettings_fossilhybridhr_calibration);
|
||||
final List<Integer> developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER);
|
||||
developer.add(R.xml.devicesettings_fossilhybrids_dev);
|
||||
return deviceSpecificSettings;
|
||||
@@ -345,7 +345,7 @@ public class QHybridCoordinator extends AbstractBLEDeviceCoordinator {
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean isHybridHR(GBDevice device){
|
||||
public boolean isHybridHR(GBDevice device){
|
||||
if(!isFossilHybrid(device)) return false;
|
||||
return device.getName().startsWith("Hybrid HR") || device.getName().equals("Fossil Gen. 6 Hybrid");
|
||||
}
|
||||
|
||||
+4
-1
@@ -58,6 +58,7 @@ import nodomain.freeyourgadget.gadgetbridge.database.DBHelper;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.qhybrid.HybridHRActivitySampleProvider;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.qhybrid.NotificationConfiguration;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.qhybrid.PackageConfigHelper;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.qhybrid.QHybridCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.entities.HybridHRActivitySample;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.ActivityUser;
|
||||
@@ -372,7 +373,9 @@ public class FossilWatchAdapter extends WatchAdapter {
|
||||
|
||||
@Override
|
||||
public void setHands(MoveHandsRequest.MovementConfiguration movement) {
|
||||
queueWrite(new MoveHandsRequest(movement), false);
|
||||
GBDevice dev = getDeviceSupport().getDevice();
|
||||
boolean isHybridHR = ((QHybridCoordinator) dev.getDeviceCoordinator()).isHybridHR(dev);
|
||||
queueWrite(new MoveHandsRequest(movement, isHybridHR), false);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-1
@@ -385,7 +385,7 @@ public class MisfitWatchAdapter extends WatchAdapter {
|
||||
|
||||
@Override
|
||||
public void setHands(MoveHandsRequest.MovementConfiguration movement) {
|
||||
queueWrite(new MoveHandsRequest(movement));
|
||||
queueWrite(new MoveHandsRequest(movement, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+14
-5
@@ -22,7 +22,10 @@ import java.nio.ByteBuffer;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.Request;
|
||||
|
||||
public class MoveHandsRequest extends Request {
|
||||
public MoveHandsRequest(MovementConfiguration movement){
|
||||
private boolean isHybridHR;
|
||||
|
||||
public MoveHandsRequest(MovementConfiguration movement, boolean isHybridHR){
|
||||
this.isHybridHR = isHybridHR;
|
||||
init(movement);
|
||||
}
|
||||
|
||||
@@ -37,8 +40,10 @@ public class MoveHandsRequest extends Request {
|
||||
buffer.put((byte)count);
|
||||
|
||||
if(movement.isHourSet()){
|
||||
short degrees = (short)Math.abs(movement.getHourDegrees());
|
||||
if (!isHybridHR && degrees == 1) degrees++;
|
||||
buffer.put((byte)1);
|
||||
buffer.putShort((short)Math.abs(movement.getHourDegrees()));
|
||||
buffer.putShort(degrees);
|
||||
if(movement.isRelativeMovement()){
|
||||
buffer.put(movement.getHourDegrees() >= 0 ? (byte) 1 : (byte) 2);
|
||||
}else {
|
||||
@@ -48,8 +53,10 @@ public class MoveHandsRequest extends Request {
|
||||
}
|
||||
|
||||
if(movement.isMinuteSet()){
|
||||
short degrees = (short)Math.abs(movement.getMinuteDegrees());
|
||||
if (!isHybridHR && degrees == 1) degrees++;
|
||||
buffer.put((byte)2);
|
||||
buffer.putShort((short)Math.abs(movement.getMinuteDegrees()));
|
||||
buffer.putShort(degrees);
|
||||
if(movement.isRelativeMovement()){
|
||||
buffer.put(movement.getMinuteDegrees() >= 0 ? (byte) 1 : (byte) 2);
|
||||
}else {
|
||||
@@ -59,8 +66,10 @@ public class MoveHandsRequest extends Request {
|
||||
}
|
||||
|
||||
if(movement.isSubSet()){
|
||||
short degrees = (short)Math.abs(movement.getSubDegrees());
|
||||
if (!isHybridHR && degrees == 1) degrees++;
|
||||
buffer.put((byte)3);
|
||||
buffer.putShort((short)Math.abs(movement.getSubDegrees()));
|
||||
buffer.putShort(degrees);
|
||||
if(movement.isRelativeMovement()){
|
||||
buffer.put(movement.getSubDegrees() >= 0 ? (byte) 1 : (byte) 2);
|
||||
}else {
|
||||
@@ -74,7 +83,7 @@ public class MoveHandsRequest extends Request {
|
||||
|
||||
@Override
|
||||
public byte[] getStartSequence() {
|
||||
return new byte[]{2, 21, 3};
|
||||
return new byte[]{0x02, 0x15, 0x03};
|
||||
}
|
||||
|
||||
static public class MovementConfiguration{
|
||||
|
||||
Reference in New Issue
Block a user