| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- //
- // ReadTempBasalCarelinkMessageBody.swift
- // Naterade
- //
- // Created by Nathan Racklyeft on 3/7/16.
- // Copyright © 2016 Nathan Racklyeft. All rights reserved.
- //
- import Foundation
- public class ReadTempBasalCarelinkMessageBody: CarelinkLongMessageBody {
- // MMX12 and above
- private static let strokesPerUnit = 40
- public enum RateType {
- case absolute
- case percent
- }
- public let timeRemaining: TimeInterval
- public let rate: Double
- public let rateType: RateType
- public required init?(rxData: Data) {
- guard rxData.count == type(of: self).length else {
- return nil
- }
- let rawRateType: UInt8 = rxData[1]
- switch rawRateType {
- case 0:
- rateType = .absolute
- let strokes = Int(bigEndianBytes: rxData.subdata(in: 3..<5))
- rate = Double(strokes) / Double(type(of: self).strokesPerUnit)
- case 1:
- rateType = .percent
- let rawRate: UInt8 = rxData[2]
- rate = Double(rawRate)
- default:
- return nil
- }
- let minutesRemaining = Int(bigEndianBytes: rxData.subdata(in: 5..<7))
- timeRemaining = TimeInterval(minutesRemaining * 60)
- super.init(rxData: rxData)
- }
- public required init?(rxData: NSData) {
- fatalError("init(rxData:) has not been implemented")
- }
- }
|