mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2025-02-16 12:26:47 +01:00
Refactoring class HPlusDataRecordDaySummary
This commit is contained in:
parent
051d1e7390
commit
93ae57bd60
@ -10,7 +10,7 @@ import java.util.GregorianCalendar;
|
|||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
|
|
||||||
class HPlusDataRecordSteps extends HPlusDataRecord{
|
class HPlusDataRecordDaySummary extends HPlusDataRecord{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Year of the record reported by the device
|
* Year of the record reported by the device
|
||||||
@ -59,7 +59,7 @@ class HPlusDataRecordSteps extends HPlusDataRecord{
|
|||||||
*/
|
*/
|
||||||
public int calories;
|
public int calories;
|
||||||
|
|
||||||
HPlusDataRecordSteps(byte[] data) {
|
HPlusDataRecordDaySummary(byte[] data) {
|
||||||
super(data);
|
super(data);
|
||||||
|
|
||||||
year = (data[10] & 0xFF) * 256 + (data[9] & 0xFF);
|
year = (data[10] & 0xFF) * 256 + (data[9] & 0xFF);
|
@ -35,10 +35,12 @@ import nodomain.freeyourgadget.gadgetbridge.service.serial.GBDeviceIoThread;
|
|||||||
class HPlusHandlerThread extends GBDeviceIoThread {
|
class HPlusHandlerThread extends GBDeviceIoThread {
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(HPlusHandlerThread.class);
|
private static final Logger LOG = LoggerFactory.getLogger(HPlusHandlerThread.class);
|
||||||
|
|
||||||
private int SYNC_PERIOD = 60 * 10;
|
private int CURRENT_DAY_SYNC_PERIOD = 60 * 10;
|
||||||
private int SYNC_RETRY_PERIOD = 6;
|
private int CURRENT_DAY_SYNC_RETRY_PERIOD = 6;
|
||||||
private int SLEEP_SYNC_PERIOD = 12 * 60 * 60;
|
private int SLEEP_SYNC_PERIOD = 12 * 60 * 60;
|
||||||
private int SLEEP_RETRY_PERIOD = 30;
|
private int SLEEP_SYNC_RETRY_PERIOD = 30;
|
||||||
|
|
||||||
|
private int DAY_SUMMARY_SYNC_PERIOD = 24 * 60 * 60;
|
||||||
|
|
||||||
private int HELLO_INTERVAL = 60;
|
private int HELLO_INTERVAL = 60;
|
||||||
|
|
||||||
@ -51,6 +53,7 @@ class HPlusHandlerThread extends GBDeviceIoThread {
|
|||||||
private Calendar mHelloTime = GregorianCalendar.getInstance();
|
private Calendar mHelloTime = GregorianCalendar.getInstance();
|
||||||
private Calendar mGetDaySlotsTime = GregorianCalendar.getInstance();
|
private Calendar mGetDaySlotsTime = GregorianCalendar.getInstance();
|
||||||
private Calendar mGetSleepTime = GregorianCalendar.getInstance();
|
private Calendar mGetSleepTime = GregorianCalendar.getInstance();
|
||||||
|
private Calendar mGetDaySummaryTime = GregorianCalendar.getInstance();
|
||||||
|
|
||||||
private HPlusDataRecordRealtime prevRealTimeRecord = null;
|
private HPlusDataRecordRealtime prevRealTimeRecord = null;
|
||||||
|
|
||||||
@ -62,10 +65,6 @@ class HPlusHandlerThread extends GBDeviceIoThread {
|
|||||||
mQuit = false;
|
mQuit = false;
|
||||||
|
|
||||||
mHPlusSupport = hplusSupport;
|
mHPlusSupport = hplusSupport;
|
||||||
|
|
||||||
mLastSleepDayReceived.setTimeInMillis(0);
|
|
||||||
mGetSleepTime.setTimeInMillis(0);
|
|
||||||
mGetDaySlotsTime.setTimeInMillis(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -105,6 +104,10 @@ class HPlusHandlerThread extends GBDeviceIoThread {
|
|||||||
requestNextSleepData();
|
requestNextSleepData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(now.compareTo(mGetDaySummaryTime) > 0) {
|
||||||
|
requestDaySummaryData();
|
||||||
|
}
|
||||||
|
|
||||||
now = GregorianCalendar.getInstance();
|
now = GregorianCalendar.getInstance();
|
||||||
waitTime = Math.min(Math.min(mGetDaySlotsTime.getTimeInMillis(), mGetSleepTime.getTimeInMillis()), mHelloTime.getTimeInMillis()) - now.getTimeInMillis();
|
waitTime = Math.min(Math.min(mGetDaySlotsTime.getTimeInMillis(), mGetSleepTime.getTimeInMillis()), mHelloTime.getTimeInMillis()) - now.getTimeInMillis();
|
||||||
}
|
}
|
||||||
@ -122,6 +125,7 @@ class HPlusHandlerThread extends GBDeviceIoThread {
|
|||||||
public void sync() {
|
public void sync() {
|
||||||
mGetSleepTime.setTimeInMillis(0);
|
mGetSleepTime.setTimeInMillis(0);
|
||||||
mGetDaySlotsTime.setTimeInMillis(0);
|
mGetDaySlotsTime.setTimeInMillis(0);
|
||||||
|
mGetDaySummaryTime.setTimeInMillis(0);
|
||||||
|
|
||||||
TransactionBuilder builder = new TransactionBuilder("startSyncDayStats");
|
TransactionBuilder builder = new TransactionBuilder("startSyncDayStats");
|
||||||
|
|
||||||
@ -154,6 +158,14 @@ class HPlusHandlerThread extends GBDeviceIoThread {
|
|||||||
mHelloTime.add(Calendar.SECOND, HELLO_INTERVAL);
|
mHelloTime.add(Calendar.SECOND, HELLO_INTERVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void requestDaySummaryData(){
|
||||||
|
TransactionBuilder builder = new TransactionBuilder("startSyncDaySummary");
|
||||||
|
builder.write(mHPlusSupport.ctrlCharacteristic, new byte[]{HPlusConstants.CMD_GET_DAY_DATA});
|
||||||
|
builder.queue(mHPlusSupport.getQueue());
|
||||||
|
|
||||||
|
mGetDaySummaryTime.add(Calendar.SECOND, DAY_SUMMARY_SYNC_PERIOD);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean processIncomingDaySlotData(byte[] data) {
|
public boolean processIncomingDaySlotData(byte[] data) {
|
||||||
|
|
||||||
HPlusDataRecordDaySlot record;
|
HPlusDataRecordDaySlot record;
|
||||||
@ -223,7 +235,7 @@ class HPlusHandlerThread extends GBDeviceIoThread {
|
|||||||
mLastSlotRequested = 0;
|
mLastSlotRequested = 0;
|
||||||
mLastSlotReceived = 0;
|
mLastSlotReceived = 0;
|
||||||
mGetDaySlotsTime = GregorianCalendar.getInstance();
|
mGetDaySlotsTime = GregorianCalendar.getInstance();
|
||||||
mGetDaySlotsTime.add(Calendar.SECOND, SYNC_PERIOD);
|
mGetDaySlotsTime.add(Calendar.SECOND, CURRENT_DAY_SYNC_PERIOD);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -231,7 +243,7 @@ class HPlusHandlerThread extends GBDeviceIoThread {
|
|||||||
if (nextHour > GregorianCalendar.getInstance().get(GregorianCalendar.HOUR_OF_DAY)) {
|
if (nextHour > GregorianCalendar.getInstance().get(GregorianCalendar.HOUR_OF_DAY)) {
|
||||||
LOG.debug("Day data is up to date");
|
LOG.debug("Day data is up to date");
|
||||||
mGetDaySlotsTime = GregorianCalendar.getInstance();
|
mGetDaySlotsTime = GregorianCalendar.getInstance();
|
||||||
mGetDaySlotsTime.add(Calendar.SECOND, SYNC_PERIOD);
|
mGetDaySlotsTime.add(Calendar.SECOND, CURRENT_DAY_SYNC_PERIOD);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -243,7 +255,7 @@ class HPlusHandlerThread extends GBDeviceIoThread {
|
|||||||
builder.queue(mHPlusSupport.getQueue());
|
builder.queue(mHPlusSupport.getQueue());
|
||||||
|
|
||||||
mGetDaySlotsTime = GregorianCalendar.getInstance();
|
mGetDaySlotsTime = GregorianCalendar.getInstance();
|
||||||
mGetDaySlotsTime.add(Calendar.SECOND, SYNC_RETRY_PERIOD);
|
mGetDaySlotsTime.add(Calendar.SECOND, CURRENT_DAY_SYNC_RETRY_PERIOD);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean processIncomingSleepData(byte[] data){
|
public boolean processIncomingSleepData(byte[] data){
|
||||||
@ -305,7 +317,7 @@ class HPlusHandlerThread extends GBDeviceIoThread {
|
|||||||
|
|
||||||
private void requestNextSleepData() {
|
private void requestNextSleepData() {
|
||||||
mGetSleepTime = GregorianCalendar.getInstance();
|
mGetSleepTime = GregorianCalendar.getInstance();
|
||||||
mGetSleepTime.add(GregorianCalendar.SECOND, SLEEP_RETRY_PERIOD);
|
mGetSleepTime.add(GregorianCalendar.SECOND, SLEEP_SYNC_RETRY_PERIOD);
|
||||||
|
|
||||||
TransactionBuilder builder = new TransactionBuilder("requestSleepStats");
|
TransactionBuilder builder = new TransactionBuilder("requestSleepStats");
|
||||||
builder.write(mHPlusSupport.ctrlCharacteristic, new byte[]{HPlusConstants.CMD_GET_SLEEP});
|
builder.write(mHPlusSupport.ctrlCharacteristic, new byte[]{HPlusConstants.CMD_GET_SLEEP});
|
||||||
@ -373,14 +385,16 @@ class HPlusHandlerThread extends GBDeviceIoThread {
|
|||||||
|
|
||||||
|
|
||||||
public boolean processStepStats(byte[] data) {
|
public boolean processStepStats(byte[] data) {
|
||||||
HPlusDataRecordSteps record;
|
LOG.debug("Process Step Stats");
|
||||||
|
HPlusDataRecordDaySummary record;
|
||||||
|
|
||||||
try{
|
try{
|
||||||
record = new HPlusDataRecordSteps(data);
|
record = new HPlusDataRecordDaySummary(data);
|
||||||
} catch(IllegalArgumentException e){
|
} catch(IllegalArgumentException e){
|
||||||
LOG.debug((e.getMessage()));
|
LOG.debug((e.getMessage()));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
LOG.debug("Received: " + record);
|
||||||
|
|
||||||
try (DBHandler dbHandler = GBApplication.acquireDB()) {
|
try (DBHandler dbHandler = GBApplication.acquireDB()) {
|
||||||
HPlusHealthSampleProvider provider = new HPlusHealthSampleProvider(getDevice(), dbHandler.getDaoSession());
|
HPlusHealthSampleProvider provider = new HPlusHealthSampleProvider(getDevice(), dbHandler.getDaoSession());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user