Bläddra i källkod

Add toggle to optionally disable mySentry (#98)

Undo overzealous Omnipod simulator change
Joe Moran 4 år sedan
förälder
incheckning
7ad1fff2e8

+ 19 - 2
Dependencies/rileylink_ios/MinimedKit/PumpManager/MinimedPumpManager.swift

@@ -33,7 +33,7 @@ public class MinimedPumpManager: RileyLinkPumpManager {
         super.init(rileyLinkDeviceProvider: rileyLinkDeviceProvider, rileyLinkConnectionManager: rileyLinkConnectionManager)
 
         // Pump communication
-        let idleListeningEnabled = state.pumpModel.hasMySentry
+        let idleListeningEnabled = state.pumpModel.hasMySentry && state.useMySentry
         self.pumpOps = pumpOps ?? PumpOps(pumpSettings: state.pumpSettings, pumpState: state.pumpState, delegate: self)
 
         self.rileyLinkDeviceProvider.idleListeningState = idleListeningEnabled ? MinimedPumpManagerState.idleListeningEnabledDefaults : .disabled
@@ -745,7 +745,24 @@ extension MinimedPumpManager {
             }
         }
     }
-    
+
+    /// Whether to use MySentry packets on capable pumps:
+    public var useMySentry: Bool {
+        get {
+            return state.useMySentry
+        }
+        set {
+            let oldValue = state.useMySentry
+            setState { (state) in
+                state.useMySentry = newValue
+            }
+            if oldValue != newValue {
+                let useIdleListening = state.pumpModel.hasMySentry && state.useMySentry
+                self.rileyLinkDeviceProvider.idleListeningState = useIdleListening ? MinimedPumpManagerState.idleListeningEnabledDefaults : .disabled
+            }
+        }
+    }
+
 }
 
 

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 9 - 1
Dependencies/rileylink_ios/MinimedKit/PumpManager/MinimedPumpManagerState.swift


+ 11 - 3
Dependencies/rileylink_ios/MinimedKit/PumpManager/PumpState.swift

@@ -16,6 +16,8 @@ public struct PumpState: RawRepresentable, Equatable {
     
     public var pumpModel: PumpModel?
     
+    public var useMySentry: Bool
+    
     public var awakeUntil: Date?
     
     public var lastValidFrequency: Measurement<UnitFrequency>?
@@ -34,23 +36,27 @@ public struct PumpState: RawRepresentable, Equatable {
 
     public init() {
         self.timeZone = .currentFixed
+        self.useMySentry = true
     }
 
-    public init(timeZone: TimeZone, pumpModel: PumpModel) {
+    public init(timeZone: TimeZone, pumpModel: PumpModel, useMySentry: Bool) {
         self.timeZone = timeZone
         self.pumpModel = pumpModel
+        self.useMySentry = useMySentry
     }
 
     public init?(rawValue: RawValue) {
         guard
             let timeZoneSeconds = rawValue["timeZone"] as? Int,
-            let timeZone = TimeZone(secondsFromGMT: timeZoneSeconds)
+            let timeZone = TimeZone(secondsFromGMT: timeZoneSeconds),
+            let useMySentry = rawValue["useMySentry"] as? Bool
         else {
             return nil
         }
 
         self.timeZone = timeZone
-        
+        self.useMySentry = useMySentry
+
         if let pumpModelNumber = rawValue["pumpModel"] as? PumpModel.RawValue {
             pumpModel = PumpModel(rawValue: pumpModelNumber)
         }
@@ -63,6 +69,7 @@ public struct PumpState: RawRepresentable, Equatable {
     public var rawValue: RawValue {
         var rawValue: RawValue = [
             "timeZone": timeZone.secondsFromGMT(),
+            "useMySentry": useMySentry,
         ]
 
         if let pumpModel = pumpModel {
@@ -85,6 +92,7 @@ extension PumpState: CustomDebugStringConvertible {
             "## PumpState",
             "timeZone: \(timeZone)",
             "pumpModel: \(pumpModel?.rawValue ?? "")",
+            "useMySentry: \(useMySentry)",
             "awakeUntil: \(awakeUntil ?? .distantPast)",
             "lastValidFrequency: \(String(describing: lastValidFrequency))",
             "lastTuned: \(awakeUntil ?? .distantPast))",

+ 18 - 1
Dependencies/rileylink_ios/MinimedKitUI/MinimedPumpSettingsViewController.swift

@@ -101,6 +101,8 @@ class MinimedPumpSettingsViewController: RileyLinkSettingsViewController {
         case batteryChemistry
         case preferredInsulinDataSource
         case insulinType
+        // This should always be last so it can be omitted for non-MySentry pumps:
+        case useMySentry
     }
 
     // MARK: UITableViewDataSource
@@ -116,7 +118,8 @@ class MinimedPumpSettingsViewController: RileyLinkSettingsViewController {
         case .actions:
             return ActionsRow.allCases.count
         case .settings:
-            return SettingsRow.allCases.count
+            let settingsRowCount = pumpManager.state.pumpModel.hasMySentry ? SettingsRow.allCases.count : SettingsRow.allCases.count - 1
+            return settingsRowCount
         case .rileyLinks:
             return super.tableView(tableView, numberOfRowsInSection: section)
         case .delete:
@@ -188,6 +191,9 @@ class MinimedPumpSettingsViewController: RileyLinkSettingsViewController {
             case .preferredInsulinDataSource:
                 cell.textLabel?.text = LocalizedString("Preferred Data Source", comment: "The title text for the preferred insulin data source config")
                 cell.detailTextLabel?.text = String(describing: pumpManager.preferredInsulinDataSource)
+            case .useMySentry:
+                cell.textLabel?.text = LocalizedString("Use MySentry", comment: "The title text for the preferred MySentry setting config")
+                cell.detailTextLabel?.text = pumpManager.useMySentry ? "Yes" : "No"
             case .timeZoneOffset:
                 cell.textLabel?.text = LocalizedString("Change Time Zone", comment: "The title of the command to change pump time zone")
 
@@ -269,6 +275,11 @@ class MinimedPumpSettingsViewController: RileyLinkSettingsViewController {
                 vc.title = LocalizedString("Insulin Type", comment: "Controller title for insulin type selection screen")
                 
                 show(vc, sender: sender)
+            case .useMySentry:
+                let vc = RadioSelectionTableViewController.useMySentry(pumpManager.useMySentry)
+                vc.title = sender?.textLabel?.text
+                vc.delegate = self
+                show(vc, sender: sender)
             }
         case .rileyLinks:
             let device = devicesDataSource.devices[indexPath.row]
@@ -312,6 +323,8 @@ class MinimedPumpSettingsViewController: RileyLinkSettingsViewController {
                 break
             case .preferredInsulinDataSource:
                 break
+            case .useMySentry:
+                break
             }
         case .info, .actions, .rileyLinks, .delete:
             break
@@ -339,6 +352,10 @@ extension MinimedPumpSettingsViewController: RadioSelectionTableViewControllerDe
                 if let selectedIndex = controller.selectedIndex, let dataSource = MinimedKit.BatteryChemistryType(rawValue: selectedIndex) {
                     pumpManager.batteryChemistry = dataSource
                 }
+            case .useMySentry:
+                if let selectedIndex = controller.selectedIndex {
+                    pumpManager.useMySentry = selectedIndex == 0
+                }
             default:
                 assertionFailure()
             }

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 10 - 0
Dependencies/rileylink_ios/MinimedKitUI/RadioSelectionTableViewController.swift


+ 1 - 1
Dependencies/rileylink_ios/OmniKit/PumpManager/OmnipodPumpManager.swift

@@ -567,7 +567,7 @@ extension OmnipodPumpManager {
     private func jumpStartPod(address: UInt32, lot: UInt32, tid: UInt32, fault: DetailedStatus? = nil, startDate: Date? = nil, mockFault: Bool) {
         let start = startDate ?? Date()
         var podState = PodState(address: address, piVersion: "jumpstarted", pmVersion: "jumpstarted", lot: lot, tid: tid, insulinType: .novolog)
-        podState.setupProgress = .completed
+        podState.setupProgress = .podPaired
         podState.activatedAt = start
         podState.expiresAt = start + .hours(72)