Skip to content

Instantly share code, notes, and snippets.

@ps2
Created February 28, 2016 21:43
Show Gist options
  • Save ps2/ab3bfb791d9c045f6404 to your computer and use it in GitHub Desktop.
Save ps2/ab3bfb791d9c045f6404 to your computer and use it in GitHub Desktop.
//
// PumpMessage.swift
// Naterade
//
// Created by Nathan Racklyeft on 9/2/15.
// Copyright © 2015 Nathan Racklyeft. All rights reserved.
//
import Foundation
public struct PumpMessage {
public let packetType: PacketType
public let address: NSData
public let messageType: MessageType
public let messageBody: MessageBody
public let RSSI: Int?
public let capturedAt: NSDate?
public let packetNumber: Int?
public init(packetType: PacketType, address: String, messageType: MessageType, messageBody: MessageBody) {
self.packetType = packetType
self.address = NSData(hexadecimalString: address)!
self.messageType = messageType
self.messageBody = messageBody
self.RSSI = nil
self.capturedAt = nil
self.packetNumber = nil
}
public init?(rxData: NSData) {
if rxData.length >= 7, let
packetType = PacketType(rawValue: rxData[0]),
messageType = MessageType(rawValue: rxData[4]),
messageBody = messageType.bodyType.init(rxData: rxData.subdataWithRange(NSRange(5..<rxData.length - 1)))
{
self.packetType = packetType
self.address = rxData.subdataWithRange(NSRange(1...3))
self.messageType = messageType
self.messageBody = messageBody
self.RSSI = nil
self.capturedAt = nil
self.packetNumber = nil
} else {
return nil
}
}
public var txData: NSData {
var buffer = [UInt8]()
buffer.append(packetType.rawValue)
buffer += address[0...2]
buffer.append(messageType.rawValue)
let data = NSMutableData(bytes: &buffer, length: buffer.count)
data.appendData(messageBody.txData)
return NSData(data: data)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment