MeterMessage.swift 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. //
  2. // MeterMessageBody.swift
  3. // RileyLink
  4. //
  5. // Created by Pete Schwamb on 3/10/16.
  6. // Copyright © 2016 Pete Schwamb. All rights reserved.
  7. //
  8. public struct MeterMessage: MessageBody, DictionaryRepresentable {
  9. public static let length = 7
  10. public let glucose: Int
  11. public let ackFlag: Bool
  12. let rxData: Data
  13. public init?(rxData: Data) {
  14. self.rxData = rxData
  15. if rxData.count == type(of: self).length,
  16. let packetType = PacketType(rawValue: rxData[0]), packetType == .meter
  17. {
  18. let flags = ((rxData[4]) & 0b110) >> 1
  19. ackFlag = flags == 0x03
  20. glucose = Int((rxData[4]) & 0b1) << 8 + Int(rxData[4])
  21. } else {
  22. ackFlag = false
  23. glucose = 0
  24. return nil
  25. }
  26. }
  27. public var txData: Data {
  28. return rxData
  29. }
  30. public var dictionaryRepresentation: [String: Any] {
  31. return [
  32. "glucose": glucose,
  33. "ackFlag": ackFlag,
  34. ]
  35. }
  36. }