RFPacket.swift 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. //
  2. // RFPacket.swift
  3. // RileyLinkBLEKit
  4. //
  5. // Created by Pete Schwamb on 9/16/17.
  6. // Copyright © 2017 Pete Schwamb. All rights reserved.
  7. //
  8. import Foundation
  9. public struct RFPacket : CustomStringConvertible {
  10. public let data: Data
  11. let packetCounter: Int
  12. public let rssi: Int
  13. init?(rfspyResponse: Data) {
  14. guard rfspyResponse.count >= 2 else {
  15. return nil
  16. }
  17. let startIndex = rfspyResponse.startIndex
  18. let rssiDec = Int(rfspyResponse[startIndex])
  19. let rssiOffset = 73
  20. if rssiDec >= 128 {
  21. self.rssi = (rssiDec - 256) / 2 - rssiOffset
  22. } else {
  23. self.rssi = rssiDec / 2 - rssiOffset
  24. }
  25. self.packetCounter = Int(rfspyResponse[startIndex.advanced(by: 1)])
  26. self.data = rfspyResponse.subdata(in: startIndex.advanced(by: 2)..<rfspyResponse.endIndex)
  27. }
  28. public var description: String {
  29. return String(format: "RFPacket(%1$@, %2$@, %3$@)", String(describing: rssi), String(describing: packetCounter), data.hexadecimalString)
  30. }
  31. }