Files
DexcomBluetoothUploader/lib/nightscout/com/eveningoutpost/dexdrip/G5Model/G6CalibrationParameters.java
2020-07-18 21:44:27 -04:00

141 lines
3.1 KiB
Java

package com.eveningoutpost.dexdrip.G5Model;
import com.eveningoutpost.dexdrip.UtilityModels.PersistentStore;
import lombok.Getter;
public class G6CalibrationParameters {
public static final String PREF_CURRENT_CODE = "G6-Current-Sensor-Code";
@Getter
private final String code;
@Getter
private final int paramA;
@Getter
private final int paramB;
public G6CalibrationParameters(String code) {
this.code = code;
switch (code) {
// special null code
case "0000":
paramA = 1;
paramB = 0;
break;
case "5915":
paramA = 3100;
paramB = 3600;
break;
case "5917":
paramA = 3000;
paramB = 3500;
break;
case "5931":
paramA = 2900;
paramB = 3400;
break;
case "5937":
paramA = 2800;
paramB = 3300;
break;
case "5951":
paramA = 3100;
paramB = 3500;
break;
case "5955":
paramA = 3000;
paramB = 3400;
break;
case "7171":
paramA = 2700;
paramB = 3300;
break;
case "9117":
paramA = 2700;
paramB = 3200;
break;
case "9159":
paramA = 2600;
paramB = 3200;
break;
case "9311":
paramA = 2600;
paramB = 3100;
break;
case "9371":
paramA = 2500;
paramB = 3100;
break;
case "9515":
paramA = 2500;
paramB = 3000;
break;
case "9551":
paramA = 2400;
paramB = 3000;
break;
case "9577":
paramA = 2400;
paramB = 2900;
break;
case "9713":
paramA = 2300;
paramB = 2900;
break;
default:
paramA = -1;
paramB = -1;
}
}
public boolean isValid() {
return paramA > 0;
}
public boolean isNullCode() {
return isValid() && paramB == 0;
}
public static boolean checkCode(String code) {
return new G6CalibrationParameters(code).isValid();
}
public static String getCurrentSensorCode() {
final String code = PersistentStore.getString(PREF_CURRENT_CODE);
return code.equals("") ? null : code;
}
public static void setCurrentSensorCode(String code) {
if (checkCode(code)) {
PersistentStore.setString(PREF_CURRENT_CODE, code);
} else {
PersistentStore.setString(PREF_CURRENT_CODE, "");
throw new RuntimeException("Invalid sensor code: " + code);
}
}
}