Skip to content

Instantly share code, notes, and snippets.

@yume190
Last active August 29, 2015 14:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yume190/c1fd04d6a8f80a0d1b80 to your computer and use it in GitHub Desktop.
Save yume190/c1fd04d6a8f80a0d1b80 to your computer and use it in GitHub Desktop.
receiver
class func receivePacketAskDevice(data:NSData) -> devicePacketReceiver<devicePacketAskDeviceID>{
return receivePacket(data, type: devicePacketAskDeviceID())
}
class func receivePacketSetting(data:NSData) -> devicePacketReceiver<devicePacketSetting>{
return receivePacket(data, type: devicePacketSetting())
}
class func receivePacketRadios(data:NSData) -> devicePacketReceiver<devicePacketRadios>{
return receivePacket(data, type: devicePacketRadios())
}
class func receivePacketReadParameters(data:NSData) -> devicePacketReceiver<devicePacketParameters>{
return receivePacket(data, type: devicePacketParameters())
}
class func receivePacketAck(data:NSData) -> devicePacketReceiver<devicePacketAck>{
return receivePacket(data, type: devicePacketAck())
}
private class func receivePacket<T where T:Constructible, T:Unpackable>(data:NSData,type:T) -> devicePacketReceiver<T>{
var packet:devicePacketReceiver<T> = devicePacketReceiver(deviceHeader: devicePacketHeader(), deviceContent: type)
packet.unpack(data)
return packet
}
class func receivePacket2(data:NSData) -> Any?{
var t = devicePacketHeader()
t.unpack(data)
if var ct:devicePacketHeader.commandType? = t.packetCommandType(){
switch(ct!){
case .ASK_DEVICE:
var result = devicePacketReceiver(deviceHeader: t, deviceContent: devicePacketAskDeviceID())
result.unpack(data)
return result
// return devicePacketReceiver(deviceHeader: t, deviceContent: devicePacketAskDeviceID()).unpack123(data)
case .ASK_VERSION:
return devicePacketReceiver(deviceHeader: t, deviceContent: devicePacketSetting())
case .RADIO:
return devicePacketReceiver(deviceHeader: t, deviceContent: devicePacketRadios())
case .READ_PARAMETERS:
return devicePacketReceiver(deviceHeader: t, deviceContent: devicePacketParameters())
case .SAVE_PARAMETERS,.UPDATE_PARAMETER,.DEFAULT_PARAMETER:
return devicePacketReceiver(deviceHeader: t, deviceContent: devicePacketAck())
default:
print("no one match")
}
}
return nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment