ChangeMaxBolusMessageBody.swift 873 B

12345678910111213141516171819202122232425262728293031323334353637
  1. //
  2. // ChangeMaxBolusMessageBody.swift
  3. // MinimedKit
  4. //
  5. // Copyright © 2018 Pete Schwamb. All rights reserved.
  6. //
  7. import Foundation
  8. public class ChangeMaxBolusMessageBody: CarelinkLongMessageBody {
  9. static let multiplier: Double = 10
  10. public convenience init?(pumpModel: PumpModel, maxBolusUnits: Double) {
  11. guard maxBolusUnits >= 0 && maxBolusUnits <= 25 else {
  12. return nil
  13. }
  14. var data = Data()
  15. if pumpModel.usesTwoBytesForMaxBolus {
  16. let ticks = UInt16(maxBolusUnits * type(of: self).multiplier)
  17. data.appendBigEndian(ticks)
  18. } else {
  19. let ticks = UInt8(maxBolusUnits * type(of: self).multiplier)
  20. data.appendBigEndian(ticks)
  21. }
  22. let length = UInt8(clamping: data.count)
  23. data.insert(length, at: 0)
  24. self.init(rxData: data)
  25. }
  26. }