Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 17 additions & 6 deletions OmniBLE/PumpManager/OmniBLEPumpManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,13 @@ public class OmniBLEPumpManager: DeviceManager {
delegate?.deviceManager(self, logEventForDeviceIdentifier: podAddress, type: type, message: message, completion: nil)
}
}

// Not persisted
var provideHeartbeat: Bool = false

public func setMustProvideBLEHeartbeat(_ mustProvideBLEHeartbeat: Bool) {
provideHeartbeat = mustProvideBLEHeartbeat
}

private let pumpDelegate = WeakSynchronizedDelegate<PumpManagerDelegate>()

Expand Down Expand Up @@ -1504,12 +1511,7 @@ extension OmniBLEPumpManager: PumpManager {
public func removeStatusObserver(_ observer: PumpManagerStatusObserver) {
statusObservers.removeElement(observer)
}

public func setMustProvideBLEHeartbeat(_ mustProvideBLEHeartbeat: Bool) {
// We can't implement this service for Dash (unless we can find some Dash hook for this).
// XXX PumpManager protocol probably should be updated to not to assume that this service is always available.
}


public func ensureCurrentPumpData(completion: ((Date?) -> Void)?) {
let shouldFetchStatus = setStateWithResult { (state) -> Bool? in
guard state.hasActivePod else {
Expand Down Expand Up @@ -2088,11 +2090,20 @@ extension OmniBLEPumpManager: PodCommsDelegate {
case .success(let session):
let _ = try? session.getStatus(confirmationBeepType: .none)
self.silenceAcknowledgedAlerts()
session.dosesForStorage() { (doses) -> Bool in
return self.store(doses: doses, in: session)
}
if self.provideHeartbeat {
self.pumpDelegate.notify { (delegate) in
delegate?.pumpManagerBLEHeartbeatDidFire(self)
}
}
case .failure:
// Errors can be ignored here.
break
}
}

}

func podComms(_ podComms: PodComms, didChange podState: PodState) {
Expand Down
4 changes: 2 additions & 2 deletions OmniBLE/PumpManager/PodComms.swift
Original file line number Diff line number Diff line change
Expand Up @@ -379,11 +379,11 @@ public class PodComms: CustomDebugStringConvertible {
// Use to serialize a set of Pod Commands for a given session
func runSession(withName name: String, _ block: @escaping (_ result: SessionRunResult) -> Void) {

guard let manager = manager else {
guard let manager = manager, manager.peripheral.state == .connected else {
block(.failure(PodCommsError.podNotConnected))
return
}

manager.runSession(withName: name) { () in
guard self.podState != nil else {
block(.failure(PodCommsError.noPodPaired))
Expand Down
2 changes: 1 addition & 1 deletion OmniBLE/PumpManager/PumpManagerAlert.swift
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ extension PumpManagerAlert: RawRepresentable {
extension PodAlert {
var isIgnored: Bool {
switch self {
case .podSuspendedReminder:
case .podSuspendedReminder, .finishSetupReminder:
return true
default:
return false
Expand Down