PrimePumpEvent.swift 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. //
  2. // PrimePumpEvent.swift
  3. // RileyLink
  4. //
  5. // Created by Pete Schwamb on 3/8/16.
  6. // Copyright © 2016 Pete Schwamb. All rights reserved.
  7. //
  8. import Foundation
  9. public struct PrimePumpEvent: TimestampedPumpEvent {
  10. public let length: Int
  11. public let rawData: Data
  12. public let timestamp: DateComponents
  13. let amount: Double
  14. let primeType: String
  15. let programmedAmount: Double
  16. public init?(availableData: Data, pumpModel: PumpModel) {
  17. length = 10
  18. guard length <= availableData.count else {
  19. return nil
  20. }
  21. rawData = availableData.subdata(in: 0..<length)
  22. func d(_ idx: Int) -> Int {
  23. return Int(availableData[idx])
  24. }
  25. timestamp = DateComponents(pumpEventData: availableData, offset: 5)
  26. amount = Double(d(4) << 2) / 40.0
  27. programmedAmount = Double(d(2) << 2) / 40.0
  28. primeType = programmedAmount == 0 ? "manual" : "fixed"
  29. }
  30. public var dictionaryRepresentation: [String: Any] {
  31. return [
  32. "_type": "Prime",
  33. "amount": amount,
  34. "programmedAmount": programmedAmount,
  35. "primeType": primeType,
  36. ]
  37. }
  38. }