|
@@ -8,20 +8,28 @@ extension WatchState {
|
|
|
/// - Parameters:
|
|
/// - Parameters:
|
|
|
/// - amount: The insulin amount to be delivered
|
|
/// - amount: The insulin amount to be delivered
|
|
|
func sendBolusRequest(_ amount: Decimal) {
|
|
func sendBolusRequest(_ amount: Decimal) {
|
|
|
- guard let session = session, session.isReachable else { return }
|
|
|
|
|
|
|
+ guard let session = session, session.isReachable else {
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Bolus request aborted: session unreachable")
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
isBolusCanceled = false // Reset canceled state when starting new bolus
|
|
isBolusCanceled = false // Reset canceled state when starting new bolus
|
|
|
activeBolusAmount = Double(truncating: amount as NSNumber) // Set active bolus amount
|
|
activeBolusAmount = Double(truncating: amount as NSNumber) // Set active bolus amount
|
|
|
|
|
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Sending bolus request: \(amount)U")
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ isBolusCanceled = false, activeBolusAmount = \(activeBolusAmount)")
|
|
|
|
|
+
|
|
|
let message: [String: Any] = [
|
|
let message: [String: Any] = [
|
|
|
WatchMessageKeys.bolus: amount
|
|
WatchMessageKeys.bolus: amount
|
|
|
]
|
|
]
|
|
|
|
|
|
|
|
session.sendMessage(message, replyHandler: nil) { error in
|
|
session.sendMessage(message, replyHandler: nil) { error in
|
|
|
- print("Error sending bolus request: \(error.localizedDescription)")
|
|
|
|
|
|
|
+ WatchLogger.shared.log("Error sending bolus request: \(error.localizedDescription)")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Display pending communication animation
|
|
// Display pending communication animation
|
|
|
showCommsAnimation = true
|
|
showCommsAnimation = true
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ showCommsAnimation = true")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// Sends a carbohydrate entry request to the paired iPhone
|
|
/// Sends a carbohydrate entry request to the paired iPhone
|
|
@@ -29,7 +37,12 @@ extension WatchState {
|
|
|
/// - amount: The amount of carbs in grams
|
|
/// - amount: The amount of carbs in grams
|
|
|
/// - date: The timestamp for the carb entry (defaults to current time)
|
|
/// - date: The timestamp for the carb entry (defaults to current time)
|
|
|
func sendCarbsRequest(_ amount: Int, _ date: Date = Date()) {
|
|
func sendCarbsRequest(_ amount: Int, _ date: Date = Date()) {
|
|
|
- guard let session = session, session.isReachable else { return }
|
|
|
|
|
|
|
+ guard let session = session, session.isReachable else {
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Carbs request aborted: session unreachable")
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Sending carbs request: \(amount)g at \(date)")
|
|
|
|
|
|
|
|
let message: [String: Any] = [
|
|
let message: [String: Any] = [
|
|
|
WatchMessageKeys.carbs: amount,
|
|
WatchMessageKeys.carbs: amount,
|
|
@@ -37,104 +50,141 @@ extension WatchState {
|
|
|
]
|
|
]
|
|
|
|
|
|
|
|
session.sendMessage(message, replyHandler: nil) { error in
|
|
session.sendMessage(message, replyHandler: nil) { error in
|
|
|
- print("Error sending carbs request: \(error.localizedDescription)")
|
|
|
|
|
|
|
+ WatchLogger.shared.log("Error sending carbs request: \(error.localizedDescription)")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Display pending communication animation
|
|
// Display pending communication animation
|
|
|
- showCommsAnimation = true
|
|
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ showCommsAnimation = true")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// Sends a request to cancel the current override preset to the paired iPhone
|
|
/// Sends a request to cancel the current override preset to the paired iPhone
|
|
|
func sendCancelOverrideRequest() {
|
|
func sendCancelOverrideRequest() {
|
|
|
- guard let session = session, session.isReachable else { return }
|
|
|
|
|
|
|
+ guard let session = session, session.isReachable else {
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Cancel override request aborted: session unreachable")
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Sending cancel override request")
|
|
|
|
|
|
|
|
let message: [String: Any] = [
|
|
let message: [String: Any] = [
|
|
|
WatchMessageKeys.cancelOverride: true
|
|
WatchMessageKeys.cancelOverride: true
|
|
|
]
|
|
]
|
|
|
|
|
|
|
|
session.sendMessage(message, replyHandler: nil) { error in
|
|
session.sendMessage(message, replyHandler: nil) { error in
|
|
|
- print("⌚️ Error sending cancel override request: \(error.localizedDescription)")
|
|
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Error sending cancel override request: \(error.localizedDescription)")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Display pending communication animation
|
|
// Display pending communication animation
|
|
|
showCommsAnimation = true
|
|
showCommsAnimation = true
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ showCommsAnimation = true")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// Sends a request to activate an override preset to the paired iPhone
|
|
/// Sends a request to activate an override preset to the paired iPhone
|
|
|
/// - Parameter presetName: The name of the override preset to activate
|
|
/// - Parameter presetName: The name of the override preset to activate
|
|
|
func sendActivateOverrideRequest(presetName: String) {
|
|
func sendActivateOverrideRequest(presetName: String) {
|
|
|
- guard let session = session, session.isReachable else { return }
|
|
|
|
|
|
|
+ guard let session = session, session.isReachable else {
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Activate override request aborted: session unreachable")
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Sending activate override request for preset: \(presetName)")
|
|
|
|
|
|
|
|
let message: [String: Any] = [
|
|
let message: [String: Any] = [
|
|
|
WatchMessageKeys.activateOverride: presetName
|
|
WatchMessageKeys.activateOverride: presetName
|
|
|
]
|
|
]
|
|
|
|
|
|
|
|
session.sendMessage(message, replyHandler: nil) { error in
|
|
session.sendMessage(message, replyHandler: nil) { error in
|
|
|
- print("⌚️ Error sending activate override request: \(error.localizedDescription)")
|
|
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Error sending activate override request: \(error.localizedDescription)")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Display pending communication animation
|
|
// Display pending communication animation
|
|
|
showCommsAnimation = true
|
|
showCommsAnimation = true
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ showCommsAnimation = true")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// Sends a request to cancel the current temporary target to the paired iPhone
|
|
/// Sends a request to cancel the current temporary target to the paired iPhone
|
|
|
func sendCancelTempTargetRequest() {
|
|
func sendCancelTempTargetRequest() {
|
|
|
- guard let session = session, session.isReachable else { return }
|
|
|
|
|
|
|
+ guard let session = session, session.isReachable else {
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Cancel temp target request aborted: session unreachable")
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Sending cancel temp target request")
|
|
|
|
|
|
|
|
let message: [String: Any] = [
|
|
let message: [String: Any] = [
|
|
|
WatchMessageKeys.cancelTempTarget: true
|
|
WatchMessageKeys.cancelTempTarget: true
|
|
|
]
|
|
]
|
|
|
|
|
|
|
|
session.sendMessage(message, replyHandler: nil) { error in
|
|
session.sendMessage(message, replyHandler: nil) { error in
|
|
|
- print("⌚️ Error sending cancel temp target request: \(error.localizedDescription)")
|
|
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Error sending cancel temp target request: \(error.localizedDescription)")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Display pending communication animation
|
|
// Display pending communication animation
|
|
|
showCommsAnimation = true
|
|
showCommsAnimation = true
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ showCommsAnimation = true")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// Sends a request to activate a temporary target preset to the paired iPhone
|
|
/// Sends a request to activate a temporary target preset to the paired iPhone
|
|
|
/// - Parameter presetName: The name of the temporary target preset to activate
|
|
/// - Parameter presetName: The name of the temporary target preset to activate
|
|
|
func sendActivateTempTargetRequest(presetName: String) {
|
|
func sendActivateTempTargetRequest(presetName: String) {
|
|
|
- guard let session = session, session.isReachable else { return }
|
|
|
|
|
|
|
+ guard let session = session, session.isReachable else {
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Activate temp target request aborted: session unreachable")
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Sending activate temp target request for preset: \(presetName)")
|
|
|
|
|
|
|
|
let message: [String: Any] = [
|
|
let message: [String: Any] = [
|
|
|
WatchMessageKeys.activateTempTarget: presetName
|
|
WatchMessageKeys.activateTempTarget: presetName
|
|
|
]
|
|
]
|
|
|
|
|
|
|
|
session.sendMessage(message, replyHandler: nil) { error in
|
|
session.sendMessage(message, replyHandler: nil) { error in
|
|
|
- print("⌚️ Error sending activate temp target request: \(error.localizedDescription)")
|
|
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Error sending activate temp target request: \(error.localizedDescription)")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Display pending communication animation
|
|
// Display pending communication animation
|
|
|
showCommsAnimation = true
|
|
showCommsAnimation = true
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ showCommsAnimation = true")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// Sends a request to cancel the current bolus delivery to the paired iPhone
|
|
/// Sends a request to cancel the current bolus delivery to the paired iPhone
|
|
|
func sendCancelBolusRequest() {
|
|
func sendCancelBolusRequest() {
|
|
|
isBolusCanceled = true
|
|
isBolusCanceled = true
|
|
|
|
|
|
|
|
- guard let session = session, session.isReachable else { return }
|
|
|
|
|
|
|
+ guard let session = session, session.isReachable else {
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Cancel bolus request aborted: session unreachable")
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Sending cancel bolus request. bolusCanceled = true")
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Resetting bolusProgress and activeBolusAmount to 0")
|
|
|
|
|
|
|
|
let message: [String: Any] = [
|
|
let message: [String: Any] = [
|
|
|
WatchMessageKeys.cancelBolus: true
|
|
WatchMessageKeys.cancelBolus: true
|
|
|
]
|
|
]
|
|
|
|
|
|
|
|
session.sendMessage(message, replyHandler: nil) { error in
|
|
session.sendMessage(message, replyHandler: nil) { error in
|
|
|
- print("Error sending cancel bolus request: \(error.localizedDescription)")
|
|
|
|
|
|
|
+ WatchLogger.shared.log("Error sending cancel bolus request: \(error.localizedDescription)")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Reset when cancelled
|
|
// Reset when cancelled
|
|
|
bolusProgress = 0
|
|
bolusProgress = 0
|
|
|
activeBolusAmount = 0
|
|
activeBolusAmount = 0
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ reset bolusProgress and activeBolusAmount to 0")
|
|
|
|
|
|
|
|
// Display pending communication animation
|
|
// Display pending communication animation
|
|
|
showCommsAnimation = true
|
|
showCommsAnimation = true
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ showCommsAnimation = true")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// Sends a request to calculate a bolus recommendation based on the current carbs amount
|
|
/// Sends a request to calculate a bolus recommendation based on the current carbs amount
|
|
|
func requestBolusRecommendation() {
|
|
func requestBolusRecommendation() {
|
|
|
- guard let session = session, session.isReachable else { return }
|
|
|
|
|
|
|
+ guard let session = session, session.isReachable else {
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Bolus recommendation request aborted: session unreachable")
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Requesting bolus recommendation for carbs: \(carbsAmount)")
|
|
|
|
|
|
|
|
let message: [String: Any] = [
|
|
let message: [String: Any] = [
|
|
|
WatchMessageKeys.requestBolusRecommendation: true,
|
|
WatchMessageKeys.requestBolusRecommendation: true,
|
|
@@ -142,29 +192,35 @@ extension WatchState {
|
|
|
]
|
|
]
|
|
|
|
|
|
|
|
session.sendMessage(message, replyHandler: nil) { error in
|
|
session.sendMessage(message, replyHandler: nil) { error in
|
|
|
- print("Error requesting bolus recommendation: \(error.localizedDescription)")
|
|
|
|
|
|
|
+ WatchLogger.shared.log("Error requesting bolus recommendation: \(error.localizedDescription)")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
showBolusCalculationProgress = true
|
|
showBolusCalculationProgress = true
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ showBolusCalculationProgress = true")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func requestWatchStateUpdate() {
|
|
func requestWatchStateUpdate() {
|
|
|
- guard let session = session, session.activationState == .activated else {
|
|
|
|
|
- print("⌚️ Session not activated, activating...")
|
|
|
|
|
- session?.activate()
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ guard let session = session else {
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ No session available for state update")
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ guard session.activationState == .activated else {
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Session not activated. Activating...")
|
|
|
|
|
+ session.activate()
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
if session.isReachable {
|
|
if session.isReachable {
|
|
|
- print("⌚️ Request an update for watch state from Trio iPhone app...")
|
|
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Requesting WatchState update from iPhone")
|
|
|
|
|
|
|
|
- let message = [WatchMessageKeys.requestWatchUpdate: WatchMessageKeys.watchState]
|
|
|
|
|
|
|
+ let message = [WatchMessageKeys.requestWatchUpdate: WatchMessageKeys.watchState]
|
|
|
|
|
|
|
|
- session.sendMessage(message, replyHandler: nil) { error in
|
|
|
|
|
- print("⌚️ Update request for fresh watch state data: \(error.localizedDescription)")
|
|
|
|
|
- }
|
|
|
|
|
- } else {
|
|
|
|
|
- print("⌚️ Phone not reachable for watch state update")
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ session.sendMessage(message, replyHandler: nil) { error in
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Error requesting WatchState update: \(error.localizedDescription)")
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ WatchLogger.shared.log("⌚️ Phone not reachable for WatchState update")
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|