-
Notifications
You must be signed in to change notification settings - Fork 407
/
Preferences.swift
122 lines (118 loc) · 4.74 KB
/
Preferences.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import Foundation
struct Preferences: JSON {
var maxIOB: Decimal = 0
var maxDailySafetyMultiplier: Decimal = 3
var currentBasalSafetyMultiplier: Decimal = 4
var autosensMax: Decimal = 1.2
var autosensMin: Decimal = 0.7
var smbDeliveryRatio: Decimal = 0.5
var rewindResetsAutosens: Bool = true
var highTemptargetRaisesSensitivity: Bool = false
var lowTemptargetLowersSensitivity: Bool = false
var sensitivityRaisesTarget: Bool = false
var resistanceLowersTarget: Bool = false
var advTargetAdjustments: Bool = false
var exerciseMode: Bool = false
var halfBasalExerciseTarget: Decimal = 160
var maxCOB: Decimal = 120
var wideBGTargetRange: Bool = false
var skipNeutralTemps: Bool = false
var unsuspendIfNoTemp: Bool = false
var min5mCarbimpact: Decimal = 8
var autotuneISFAdjustmentFraction: Decimal = 1.0
var remainingCarbsFraction: Decimal = 1.0
var remainingCarbsCap: Decimal = 90
var enableUAM: Bool = false
var a52RiskEnable: Bool = false
var enableSMBWithCOB: Bool = false
var enableSMBWithTemptarget: Bool = false
var enableSMBAlways: Bool = false
var enableSMBAfterCarbs: Bool = false
var allowSMBWithHighTemptarget: Bool = false
var maxSMBBasalMinutes: Decimal = 30
var maxUAMSMBBasalMinutes: Decimal = 30
var smbInterval: Decimal = 3
var bolusIncrement: Decimal = 0.1
var curve: InsulinCurve = .rapidActing
var useCustomPeakTime: Bool = false
var insulinPeakTime: Decimal = 75
var carbsReqThreshold: Decimal = 1.0
var noisyCGMTargetMultiplier: Decimal = 1.3
var suspendZerosIOB: Bool = false
var timestamp: Date?
var maxDeltaBGthreshold: Decimal = 0.2
var adjustmentFactor: Decimal = 0.8
var adjustmentFactorSigmoid: Decimal = 0.5
var sigmoid: Bool = false
var enableDynamicCR: Bool = false
var useNewFormula: Bool = false
var useWeightedAverage: Bool = false
var weightPercentage: Decimal = 0.65
var tddAdjBasal: Bool = false
var enableSMB_high_bg: Bool = false
var enableSMB_high_bg_target: Decimal = 110
var threshold_setting: Decimal = 65
var updateInterval: Decimal = 20
}
extension Preferences {
private enum CodingKeys: String, CodingKey {
case maxIOB = "max_iob"
case maxDailySafetyMultiplier = "max_daily_safety_multiplier"
case currentBasalSafetyMultiplier = "current_basal_safety_multiplier"
case autosensMax = "autosens_max"
case autosensMin = "autosens_min"
case smbDeliveryRatio = "smb_delivery_ratio"
case rewindResetsAutosens = "rewind_resets_autosens"
case highTemptargetRaisesSensitivity = "high_temptarget_raises_sensitivity"
case lowTemptargetLowersSensitivity = "low_temptarget_lowers_sensitivity"
case sensitivityRaisesTarget = "sensitivity_raises_target"
case resistanceLowersTarget = "resistance_lowers_target"
case advTargetAdjustments = "adv_target_adjustments"
case exerciseMode = "exercise_mode"
case halfBasalExerciseTarget = "half_basal_exercise_target"
case maxCOB
case wideBGTargetRange = "wide_bg_target_range"
case skipNeutralTemps = "skip_neutral_temps"
case unsuspendIfNoTemp = "unsuspend_if_no_temp"
case min5mCarbimpact = "min_5m_carbimpact"
case autotuneISFAdjustmentFraction = "autotune_isf_adjustmentFraction"
case remainingCarbsFraction
case remainingCarbsCap
case enableUAM
case a52RiskEnable = "A52_risk_enable"
case enableSMBWithCOB = "enableSMB_with_COB"
case enableSMBWithTemptarget = "enableSMB_with_temptarget"
case enableSMBAlways = "enableSMB_always"
case enableSMBAfterCarbs = "enableSMB_after_carbs"
case allowSMBWithHighTemptarget = "allowSMB_with_high_temptarget"
case maxSMBBasalMinutes
case maxUAMSMBBasalMinutes
case smbInterval = "SMBInterval"
case bolusIncrement = "bolus_increment"
case curve
case useCustomPeakTime
case insulinPeakTime
case carbsReqThreshold
case noisyCGMTargetMultiplier
case suspendZerosIOB = "suspend_zeros_iob"
case maxDeltaBGthreshold = "maxDelta_bg_threshold"
case adjustmentFactor
case adjustmentFactorSigmoid
case sigmoid
case enableDynamicCR
case useNewFormula
case useWeightedAverage
case weightPercentage
case tddAdjBasal
case enableSMB_high_bg
case enableSMB_high_bg_target
case threshold_setting
case updateInterval
}
}
enum InsulinCurve: String, JSON, Identifiable, CaseIterable {
case rapidActing = "rapid-acting"
case ultraRapid = "ultra-rapid"
case bilinear
var id: InsulinCurve { self }
}