Initial project commit

This commit is contained in:
2020-07-18 21:44:27 -04:00
parent 8a1141b373
commit fea891a268
127 changed files with 20838 additions and 0 deletions

View File

@@ -0,0 +1,87 @@
package com.eveningoutpost.dexdrip.Models;
import android.provider.BaseColumns;
import com.activeandroid.Model;
import com.activeandroid.annotation.Column;
import com.activeandroid.annotation.Table;
import com.activeandroid.query.Select;
import com.eveningoutpost.dexdrip.Home;
import java.util.List;
/**
* Created by Emma Black on 12/9/14.
*/
@Table(name = "CalibrationRequest", id = BaseColumns._ID)
public class CalibrationRequest extends Model {
private static final int max = 250;
private static final int min = 70;
private static final String TAG = CalibrationRequest.class.getSimpleName();
@Column(name = "requestIfAbove")
public double requestIfAbove;
@Column(name = "requestIfBelow")
public double requestIfBelow;
public static void createRange(double low, double high) {
CalibrationRequest calibrationRequest = new CalibrationRequest();
calibrationRequest.requestIfAbove = low;
calibrationRequest.requestIfBelow = high;
calibrationRequest.save();
}
static void createOffset(double center, double distance) {
CalibrationRequest calibrationRequest = new CalibrationRequest();
calibrationRequest.requestIfAbove = center + distance;
calibrationRequest.requestIfBelow = max;
calibrationRequest.save();
calibrationRequest = new CalibrationRequest();
calibrationRequest.requestIfAbove = min;
calibrationRequest.requestIfBelow = center - distance;
calibrationRequest.save();
}
static void clearAll(){
List<CalibrationRequest> calibrationRequests = new Select()
.from(CalibrationRequest.class)
.execute();
if (calibrationRequests.size() >=1) {
for (CalibrationRequest calibrationRequest : calibrationRequests) {
calibrationRequest.delete();
}
}
}
public static boolean shouldRequestCalibration(BgReading bgReading) {
CalibrationRequest calibrationRequest = new Select()
.from(CalibrationRequest.class)
.where("requestIfAbove < ?", bgReading.calculated_value)
.where("requestIfBelow > ?", bgReading.calculated_value)
.executeSingle();
return (calibrationRequest != null && isSlopeFlatEnough(bgReading, 1));
}
public static boolean isSlopeFlatEnough() {
BgReading bgReading = BgReading.last(true);
if (bgReading == null) return false;
if (JoH.msSince(bgReading.timestamp) > Home.stale_data_millis()) {
UserError.Log.d(TAG, "Slope cannot be flat enough as data is stale");
return false;
}
// TODO check if stale, check previous slope also, check that reading parameters also
return isSlopeFlatEnough(bgReading);
}
public static boolean isSlopeFlatEnough(BgReading bgReading) {
return isSlopeFlatEnough(bgReading, 1);
}
public static boolean isSlopeFlatEnough(BgReading bgReading, double limit) {
if (bgReading == null) return false;
// TODO use BestGlucose
return Math.abs(bgReading.calculated_value_slope * 60000) < limit;
}
}