BGReceivedPumpEvent.swift 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. //
  2. // BGReceived.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 BGReceivedPumpEvent: TimestampedPumpEvent {
  10. public let length: Int
  11. public let rawData: Data
  12. public let timestamp: DateComponents
  13. public let amount: Int
  14. public let meter: String
  15. public init?(availableData: Data, pumpModel: PumpModel) {
  16. length = 10
  17. guard length <= availableData.count else {
  18. return nil
  19. }
  20. rawData = availableData.subdata(in: 0..<length)
  21. func d(_ idx: Int) -> Int {
  22. return Int(availableData[idx])
  23. }
  24. timestamp = DateComponents(pumpEventData: availableData, offset: 2)
  25. amount = (d(1) << 3) + (d(4) >> 5)
  26. meter = availableData.subdata(in: 7..<10).hexadecimalString
  27. }
  28. public var dictionaryRepresentation: [String: Any] {
  29. return [
  30. "_type": "BGReceivedPumpEvent",
  31. "amount": amount,
  32. "meter": meter,
  33. ]
  34. }
  35. }