GetBatteryCarelinkMessageBody.swift 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. //
  2. // GetBatteryCarelinkMessageBody.swift
  3. // RileyLink
  4. //
  5. // Created by Pete Schwamb on 3/13/16.
  6. // Copyright © 2016 Pete Schwamb. All rights reserved.
  7. //
  8. import Foundation
  9. public enum BatteryStatus: Equatable {
  10. case low
  11. case normal
  12. case unknown(rawVal: UInt8)
  13. init(statusByte: UInt8) {
  14. switch statusByte {
  15. case 1:
  16. self = .low
  17. case 0:
  18. self = .normal
  19. default:
  20. self = .unknown(rawVal: statusByte)
  21. }
  22. }
  23. }
  24. public class GetBatteryCarelinkMessageBody: DecodableMessageBody {
  25. public static var length: Int = 65
  26. public var txData: Data
  27. public let status: BatteryStatus
  28. public let volts: Double
  29. public required init?(rxData: Data) {
  30. guard rxData.count == type(of: self).length else {
  31. return nil
  32. }
  33. volts = Double(Int(rxData[2]) << 8 + Int(rxData[3])) / 100.0
  34. status = BatteryStatus(statusByte: rxData[1])
  35. txData = rxData
  36. }
  37. public var description: String {
  38. return "GetBattery(status:\(status), volts:\(volts))"
  39. }
  40. }