mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2025-01-24 00:27:33 +01:00
HPlus: Refactoring and added comments to the message decoders members
This commit is contained in:
parent
510427e30b
commit
ae0718c398
@ -11,7 +11,14 @@ public class HPlusDataRecord {
|
||||
public final static int TYPE_SLEEP = 1;
|
||||
public int activityKind = ActivityKind.TYPE_UNKNOWN;
|
||||
|
||||
/**
|
||||
* Time of this record in seconds
|
||||
*/
|
||||
public int timestamp;
|
||||
|
||||
/**
|
||||
* Raw data as sent from the device
|
||||
*/
|
||||
public byte[] rawData;
|
||||
|
||||
public HPlusDataRecord(byte[] data){
|
||||
@ -24,8 +31,19 @@ public class HPlusDataRecord {
|
||||
}
|
||||
|
||||
public class RecordInterval {
|
||||
/**
|
||||
* Start time of this interval in seconds
|
||||
*/
|
||||
public int timestampFrom;
|
||||
|
||||
/**
|
||||
* End time of this interval in seconds
|
||||
*/
|
||||
public int timestampTo;
|
||||
|
||||
/**
|
||||
* Type of activity {@link ActivityKind}
|
||||
*/
|
||||
public int activityKind;
|
||||
|
||||
RecordInterval(int timestampFrom, int timestampTo, int activityKind) {
|
||||
|
@ -9,13 +9,31 @@ import java.util.GregorianCalendar;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
|
||||
|
||||
|
||||
public class HPlusDataRecordDay extends HPlusDataRecord {
|
||||
public class HPlusDataRecordDaySlot extends HPlusDataRecord {
|
||||
|
||||
/**
|
||||
* The device reports data aggregated in slots.
|
||||
* There are 144 slots in a given day, summarizing 10 minutes of data
|
||||
* Integer with the slot number from 0 to 143
|
||||
*/
|
||||
public int slot;
|
||||
|
||||
/**
|
||||
* Number of steps
|
||||
*/
|
||||
public int steps;
|
||||
|
||||
/**
|
||||
* Number of seconds without activity (TBC)
|
||||
*/
|
||||
public int secondsInactive;
|
||||
|
||||
/**
|
||||
* Average Heart Rate in Beats Per Minute
|
||||
*/
|
||||
public int heartRate;
|
||||
|
||||
public HPlusDataRecordDay(byte[] data) {
|
||||
public HPlusDataRecordDaySlot(byte[] data) {
|
||||
super(data);
|
||||
|
||||
int a = (data[4] & 0xFF) * 256 + (data[5] & 0xFF);
|
||||
@ -23,13 +41,13 @@ public class HPlusDataRecordDay extends HPlusDataRecord {
|
||||
throw new IllegalArgumentException("Invalid Slot Number");
|
||||
}
|
||||
|
||||
slot = a; // 10 minute slots as an offset from 0:00 AM
|
||||
heartRate = data[1] & 0xFF; //Average Heart Rate ?
|
||||
slot = a;
|
||||
heartRate = data[1] & 0xFF;
|
||||
|
||||
if(heartRate == 255)
|
||||
heartRate = ActivityKind.TYPE_NOT_MEASURED;
|
||||
|
||||
steps = (data[2] & 0xFF) * 256 + data[3] & 0xFF; // Steps in this period
|
||||
steps = (data[2] & 0xFF) * 256 + data[3] & 0xFF;
|
||||
|
||||
//?? data[6];
|
||||
secondsInactive = data[7] & 0xFF; // ?
|
@ -12,11 +12,36 @@ import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
|
||||
|
||||
|
||||
class HPlusDataRecordRealtime extends HPlusDataRecord {
|
||||
|
||||
/**
|
||||
* Distance accumulated during the day in meters
|
||||
*/
|
||||
public int distance;
|
||||
|
||||
/**
|
||||
* Calories consumed during the day in KCalories
|
||||
*/
|
||||
public int calories;
|
||||
|
||||
/**
|
||||
* Instantaneous Heart Rate measured in Beats Per Minute
|
||||
*/
|
||||
public int heartRate;
|
||||
|
||||
/**
|
||||
* Battery level from 0 to 100
|
||||
*/
|
||||
public byte battery;
|
||||
|
||||
/**
|
||||
* Time active (To be determined how it works)
|
||||
*/
|
||||
public int activeTime;
|
||||
|
||||
/**
|
||||
* Computing intensity
|
||||
* To be calculated appropriately
|
||||
*/
|
||||
public int intensity;
|
||||
|
||||
public HPlusDataRecordRealtime(byte[] data) {
|
||||
|
@ -14,14 +14,56 @@ import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
|
||||
|
||||
public class HPlusDataRecordSleep extends HPlusDataRecord {
|
||||
|
||||
/**
|
||||
* Time which the device determined to be the bed time in seconds
|
||||
*/
|
||||
public int bedTimeStart;
|
||||
|
||||
/**
|
||||
* Time which the device determined to be the end of this sleep period in seconds
|
||||
*/
|
||||
public int bedTimeEnd;
|
||||
|
||||
/**
|
||||
* Number of minutes in Deep Sleep
|
||||
*/
|
||||
public int deepSleepMinutes;
|
||||
|
||||
/**
|
||||
* Number of minutes in Light Sleep
|
||||
* This is considered as Light Sleep
|
||||
|
||||
*/
|
||||
public int lightSleepMinutes;
|
||||
|
||||
/**
|
||||
* Number of minutes to start sleeping (??)
|
||||
* This is considered as Light Sleep
|
||||
*/
|
||||
public int enterSleepMinutes;
|
||||
|
||||
/**
|
||||
* Number of minutes with Sleep Spindles (??)
|
||||
* This is considered as Light Sleep
|
||||
*/
|
||||
public int spindleMinutes;
|
||||
|
||||
/**
|
||||
* Number of minutes in REM sleep
|
||||
* This is considered as Light Sleep
|
||||
|
||||
*/
|
||||
public int remSleepMinutes;
|
||||
|
||||
/**
|
||||
* Number of wake up minutes during the sleep period
|
||||
* This is not considered as a sleep activity
|
||||
*/
|
||||
public int wakeupMinutes;
|
||||
|
||||
/**
|
||||
* Number of times the user woke up
|
||||
*/
|
||||
public int wakeupCount;
|
||||
|
||||
public HPlusDataRecordSleep(byte[] data) {
|
||||
|
@ -11,16 +11,52 @@ import java.util.Locale;
|
||||
|
||||
|
||||
class HPlusDataRecordSteps extends HPlusDataRecord{
|
||||
|
||||
/**
|
||||
* Year of the record reported by the device
|
||||
* Sometimes the device will report a low number (e.g, 116) which will be "corrected"
|
||||
* by adding 1900
|
||||
*/
|
||||
public int year;
|
||||
|
||||
/**
|
||||
* Month of the record reported by the device from 1 to 12
|
||||
*/
|
||||
public int month;
|
||||
|
||||
/**
|
||||
* Day of the record reported by the device
|
||||
*/
|
||||
public int day;
|
||||
|
||||
/**
|
||||
* Number of steps accumulated in the day reported
|
||||
*/
|
||||
public int steps;
|
||||
|
||||
/**
|
||||
* Distance in meters accumulated in the day reported
|
||||
*/
|
||||
public int distance;
|
||||
|
||||
/**
|
||||
* Amount of time active in the day (Units are To Be Determined)
|
||||
*/
|
||||
public int activeTime;
|
||||
|
||||
/**
|
||||
* Max Heart Rate recorded in Beats Per Minute
|
||||
*/
|
||||
public int maxHeartRate;
|
||||
|
||||
/**
|
||||
* Min Heart Rate recorded in Beats Per Minute
|
||||
*/
|
||||
public int minHeartRate;
|
||||
|
||||
/**
|
||||
* Amount of estimated calories consumed during the day in KCalories
|
||||
*/
|
||||
public int calories;
|
||||
|
||||
HPlusDataRecordSteps(byte[] data) {
|
||||
@ -31,6 +67,7 @@ class HPlusDataRecordSteps extends HPlusDataRecord{
|
||||
day = data[12] & 0xFF;
|
||||
|
||||
//Recover from bug in firmware where year is corrupted
|
||||
//data[10] will be set to 0, effectively offsetting values by minus 1900 years
|
||||
if(year < 1900)
|
||||
year += 1900;
|
||||
|
||||
|
@ -156,9 +156,9 @@ class HPlusHandlerThread extends GBDeviceIoThread {
|
||||
|
||||
public boolean processIncomingDaySlotData(byte[] data) {
|
||||
|
||||
HPlusDataRecordDay record;
|
||||
HPlusDataRecordDaySlot record;
|
||||
try{
|
||||
record = new HPlusDataRecordDay(data);
|
||||
record = new HPlusDataRecordDaySlot(data);
|
||||
} catch(IllegalArgumentException e){
|
||||
LOG.debug((e.getMessage()));
|
||||
return true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user