WIP regarding heart rate profile
This commit is contained in:
parent
0341c7f61f
commit
d4b134a490
|
@ -0,0 +1,23 @@
|
||||||
|
package nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.heartrate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Body Sensor Location characteristic of the device is used to describe the intended location of the heart rate measurement for the device.
|
||||||
|
*
|
||||||
|
* https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.characteristic.body_sensor_location.xml
|
||||||
|
*/
|
||||||
|
public enum BodySensorLocation {
|
||||||
|
Other(0),
|
||||||
|
Checst(1),
|
||||||
|
Wrist(2),
|
||||||
|
Finger(3),
|
||||||
|
Hand(4),
|
||||||
|
EarLobe(5),
|
||||||
|
Foot(6);
|
||||||
|
// others are reserved
|
||||||
|
|
||||||
|
private final int val;
|
||||||
|
|
||||||
|
BodySensorLocation(int val) {
|
||||||
|
this.val = val;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
package nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.heartrate;
|
||||||
|
|
||||||
|
import android.bluetooth.BluetoothGatt;
|
||||||
|
import android.bluetooth.BluetoothGattCharacteristic;
|
||||||
|
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.service.btle.AbstractBTLEDeviceSupport;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.service.btle.GattCharacteristic;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.AbstractBleProfile;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.service.heart_rate.xml
|
||||||
|
*/
|
||||||
|
public class HeartRateProfile<T extends AbstractBTLEDeviceSupport> extends AbstractBleProfile<T> {
|
||||||
|
/**
|
||||||
|
* Returned when a request to the heart rate control point is not supported by the device
|
||||||
|
*/
|
||||||
|
public static final int ERR_CONTROL_POINT_NOT_SUPPORTED = 0x80;
|
||||||
|
|
||||||
|
public HeartRateProfile(T support) {
|
||||||
|
super(support);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void resetEnergyExpended(TransactionBuilder builder) {
|
||||||
|
writeToControlPoint((byte) 0x01, builder);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void writeToControlPoint(byte value, TransactionBuilder builder) {
|
||||||
|
builder.write(getCharacteristic(GattCharacteristic.UUID_CHARACTERISTIC_HEART_RATE_CONTROL_POINT), new byte[] { value });
|
||||||
|
}
|
||||||
|
|
||||||
|
public void requestBodySensorLocation(TransactionBuilder builder) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void requestHeartRateMeasurement(TransactionBuilder builder) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
|
||||||
|
// if (UUID_HEART_RATE_MEASUREMENT.equals(characteristic.getUuid())) {
|
||||||
|
// int flag = characteristic.getProperties();
|
||||||
|
// int format = -1;
|
||||||
|
// if ((flag & 0x01) != 0) {
|
||||||
|
// format = BluetoothGattCharacteristic.FORMAT_UINT16;
|
||||||
|
// } else {
|
||||||
|
// format = BluetoothGattCharacteristic.FORMAT_UINT8;
|
||||||
|
// }
|
||||||
|
// final int heartRate = characteristic.getIntValue(format, 1); }
|
||||||
|
}
|
Loading…
Reference in New Issue