DeterminationError.swift 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import Foundation
  2. enum DeterminationError: LocalizedError, Equatable {
  3. case missingGlucoseStatus
  4. case missingProfile
  5. case missingCurrentBasal
  6. case invalidProfileTarget
  7. case staleGlucoseData(ageMinutes: Double)
  8. case glucoseOutOfRange(glucose: Decimal)
  9. case cgmNoiseTooHigh(noise: Int)
  10. case noDelta
  11. case missingIob
  12. case missingInputs
  13. case eventualGlucoseCalculationError(sensitivity: Decimal, deviation: Decimal)
  14. case determinationError
  15. var errorDescription: String? {
  16. switch self {
  17. case .missingGlucoseStatus:
  18. return String(localized: "No glucose status; cannot determine basal.")
  19. case .missingProfile:
  20. return String(localized: "No profile; cannot determine basal.")
  21. case .missingCurrentBasal:
  22. // string copied from JS
  23. return String(localized: "Error: could not get current basal rate")
  24. case .invalidProfileTarget:
  25. // string copied from JS including trailing space
  26. return String(localized: "Error: could not determine target_bg. ")
  27. case let .staleGlucoseData(ageMinutes):
  28. return String(localized: "Glucose data is too old (\(ageMinutes) min ago).")
  29. case let .glucoseOutOfRange(glucose):
  30. return String(localized: "Glucose out of range: \(glucose.description).")
  31. case let .cgmNoiseTooHigh(noise):
  32. return String(localized: "CGM noise level too high: \(noise).")
  33. case .noDelta:
  34. return String(localized: "No glucose delta (flat readings); cannot determine trend.")
  35. case .missingIob:
  36. return String(localized: "No IOB data available; cannot determine basal.")
  37. case .missingInputs:
  38. return String(localized: "Missing required inputs; cannot determine basal.")
  39. case let .eventualGlucoseCalculationError(sensitivity, deviation):
  40. return String(
  41. localized: "Could not calculate eventual glucose. Sensitivity: \(sensitivity.description), Deviation: \(deviation.description)"
  42. )
  43. case .determinationError:
  44. return String(localized: "Unknown determination error.")
  45. }
  46. }
  47. }