AssignAddressCommand.swift 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. //
  2. // AssignAddressCommand.swift
  3. // OmniKit
  4. //
  5. // Created by Pete Schwamb on 2/12/18.
  6. // Copyright © 2018 Pete Schwamb. All rights reserved.
  7. //
  8. import Foundation
  9. public struct AssignAddressCommand : MessageBlock {
  10. public let blockType: MessageBlockType = .assignAddress
  11. public let length: Int = 6
  12. let address: UInt32
  13. public var data: Data {
  14. var data = Data([
  15. blockType.rawValue,
  16. 4
  17. ])
  18. data.appendBigEndian(self.address)
  19. return data
  20. }
  21. public init(encodedData: Data) throws {
  22. if encodedData.count < length {
  23. throw MessageBlockError.notEnoughData
  24. }
  25. self.address = encodedData[2...].toBigEndian(UInt32.self)
  26. }
  27. public init(address: UInt32) {
  28. self.address = address
  29. }
  30. }
  31. extension AssignAddressCommand: CustomDebugStringConvertible {
  32. public var debugDescription: String {
  33. return "AssignAddressCommand(address:\(Data(bigEndian: address).hexadecimalString))"
  34. }
  35. }