CarelinkMessageBody.swift 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. //
  2. // CarelinkMessageBody.swift
  3. // Naterade
  4. //
  5. // Created by Nathan Racklyeft on 12/26/15.
  6. // Copyright © 2015 Nathan Racklyeft. All rights reserved.
  7. //
  8. import Foundation
  9. extension Data {
  10. func paddedTo(length: Int) -> Data {
  11. var data = self
  12. data.append(contentsOf: [UInt8](repeating: 0, count: length - data.count))
  13. return data
  14. }
  15. }
  16. public class CarelinkLongMessageBody: DecodableMessageBody {
  17. public static var length: Int = 65
  18. let rxData: Data
  19. public required init?(rxData: Data) {
  20. self.rxData = rxData.paddedTo(length: type(of: self).length)
  21. }
  22. public var txData: Data {
  23. return rxData
  24. }
  25. public var description: String {
  26. return "CarelinkLongMessage(\(rxData.hexadecimalString))"
  27. }
  28. }
  29. public class CarelinkShortMessageBody: MessageBody {
  30. public static var length: Int = 1
  31. let data: Data
  32. public convenience init() {
  33. self.init(rxData: Data(repeating: 0, count: 1))!
  34. }
  35. public required init?(rxData: Data) {
  36. self.data = rxData
  37. if rxData.count != type(of: self).length {
  38. return nil
  39. }
  40. }
  41. public var txData: Data {
  42. return data
  43. }
  44. public var description: String {
  45. return "CarelinkShortMessage(\(data.hexadecimalString))"
  46. }
  47. }