Better time synchronization for DanaRS
This commit is contained in:
parent
fc56af7add
commit
7cf2505276
|
@ -71,8 +71,10 @@ import info.nightscout.androidaps.plugins.PumpDanaRS.comm.DanaRS_Packet_Notify_D
|
|||
import info.nightscout.androidaps.plugins.PumpDanaRS.comm.DanaRS_Packet_Option_Get_Pump_Time;
|
||||
import info.nightscout.androidaps.plugins.PumpDanaRS.comm.DanaRS_Packet_Option_Set_Pump_Time;
|
||||
import info.nightscout.androidaps.queue.Callback;
|
||||
import info.nightscout.utils.DateUtil;
|
||||
import info.nightscout.utils.NSUpload;
|
||||
import info.nightscout.utils.SP;
|
||||
import info.nightscout.utils.T;
|
||||
|
||||
public class DanaRSService extends Service {
|
||||
private static Logger log = LoggerFactory.getLogger(DanaRSService.class);
|
||||
|
@ -145,8 +147,10 @@ public class DanaRSService extends Service {
|
|||
bleComm.sendMessage(new DanaRS_Packet_Option_Get_Pump_Time());
|
||||
long timeDiff = (danaRPump.pumpTime.getTime() - System.currentTimeMillis()) / 1000L;
|
||||
log.debug("Pump time difference: " + timeDiff + " seconds");
|
||||
if (Math.abs(timeDiff) > 10) {
|
||||
bleComm.sendMessage(new DanaRS_Packet_Option_Set_Pump_Time(new Date()));
|
||||
if (Math.abs(timeDiff) > 3) {
|
||||
waitForWholeMinute(); // Dana can set only whole minute
|
||||
// add 10sec to be sure we are over minute (will be cutted off anyway)
|
||||
bleComm.sendMessage(new DanaRS_Packet_Option_Set_Pump_Time(new Date(DateUtil.now() + T.secs(10).msecs())));
|
||||
bleComm.sendMessage(new DanaRS_Packet_Option_Get_Pump_Time());
|
||||
timeDiff = (danaRPump.pumpTime.getTime() - System.currentTimeMillis()) / 1000L;
|
||||
log.debug("Pump time difference: " + timeDiff + " seconds");
|
||||
|
@ -458,4 +462,14 @@ public class DanaRSService extends Service {
|
|||
log.debug("EventAppExit finished");
|
||||
}
|
||||
|
||||
void waitForWholeMinute() {
|
||||
while (true) {
|
||||
long time = DateUtil.now();
|
||||
long timeToWholeMinute = (60000 - time % 60000);
|
||||
if (timeToWholeMinute > 59800 || timeToWholeMinute < 300)
|
||||
break;
|
||||
MainApp.bus().post(new EventPumpStatusChanged(MainApp.gs(R.string.waitingfortimesynchronization, (int)(timeToWholeMinute / 1000))));
|
||||
SystemClock.sleep(Math.min(timeToWholeMinute, 100));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue