public ArtNetPacket(ArtNetReceiveData data) { DataLength = data.DataLength - 12; // Subtract ArtNet header var packetReader = new ArtNetBinaryReader(new MemoryStream(data.buffer)); ReadData(packetReader); }
private void OnReceive(IAsyncResult state) { EndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); if (PortOpen) { try { ArtNetReceiveData receiveState = (ArtNetReceiveData)(state.AsyncState); if (receiveState != null) { receiveState.DataLength = EndReceiveFrom(state, ref remoteEndPoint); //Protect against UDP loopback where we receive our own packets. if (LocalEndPoint != remoteEndPoint && receiveState.Valid) { LastPacket = DateTime.Now; ProcessPacket((IPEndPoint)remoteEndPoint, ArtNetPacket.Create(receiveState)); } } } catch (Exception ex) { OnUnhandledException(ex); } finally { //Attempt to receive another packet. StartReceive(); } } }
public static ArtNetPacket Create(ArtNetReceiveData data) { switch ((ArtNetOpCodes)data.OpCode) { case ArtNetOpCodes.Poll: return(new ArtPollPacket(data)); case ArtNetOpCodes.PollReply: return(new ArtPollReplyPacket(data)); case ArtNetOpCodes.Dmx: return(new ArtNetDmxPacket(data)); case ArtNetOpCodes.TodRequest: return(new ArtTodRequestPacket(data)); case ArtNetOpCodes.TodData: return(new ArtTodDataPacket(data)); case ArtNetOpCodes.TodControl: return(new ArtTodControlPacket(data)); case ArtNetOpCodes.Rdm: return(new ArtRdmPacket(data)); case ArtNetOpCodes.RdmSub: return(new ArtRdmSubPacket(data)); } return(null); }
public void StartReceive() { try { EndPoint localPort = new IPEndPoint(IPAddress.Any, Port); ArtNetReceiveData receiveState = new ArtNetReceiveData(); BeginReceiveFrom(receiveState.buffer, 0, receiveState.bufferSize, SocketFlags.None, ref localPort, new AsyncCallback(OnReceive), receiveState); } catch (Exception ex) { OnUnhandledException(new ApplicationException("An error ocurred while trying to start recieving ArtNet.", ex)); } }
public static ArtNetPacket Create(ArtNetReceiveData data, Func <ushort, ArtNetReceiveData, ArtNetPacket> customPacketCreator) { switch ((ArtNetOpCodes)data.OpCode) { case ArtNetOpCodes.Poll: return(new ArtPollPacket(data)); case ArtNetOpCodes.PollReply: return(new ArtPollReplyPacket(data)); case ArtNetOpCodes.Dmx: return(new ArtNetDmxPacket(data)); case ArtNetOpCodes.TodRequest: return(new ArtTodRequestPacket(data)); case ArtNetOpCodes.TodData: return(new ArtTodDataPacket(data)); case ArtNetOpCodes.TodControl: return(new ArtTodControlPacket(data)); case ArtNetOpCodes.Rdm: return(new ArtRdmPacket(data)); case ArtNetOpCodes.RdmSub: return(new ArtRdmSubPacket(data)); case ArtNetOpCodes.ArtTrigger: return(new ArtTriggerPacket(data)); default: if (customPacketCreator != null) { var customPacket = customPacketCreator(data.OpCode, data); if (customPacket != null) { return(customPacket); } } return(new ArtNetUnknownPacket(data)); } }
public ArtTodControlPacket(ArtNetReceiveData data) : base(data) { }
public ArtPollReplyPacket(ArtNetReceiveData data) : base(data) { }
public ArtRdmSubPacket(ArtNetReceiveData data) : base(data) { }
public ArtTriggerPacket(ArtNetReceiveData data) : base(data) { }
public ArtNetDmxPacket(ArtNetReceiveData data) : base(data) { }
public ArtTodDataPacket(ArtNetReceiveData data) : base(data) { }
public ArtTodRequestPacket(ArtNetReceiveData data) : base(data) { }
public ArtNetPacket(ArtNetReceiveData data) { ArtNetBinaryReader packetReader = new ArtNetBinaryReader(new MemoryStream(data.buffer)); ReadData(packetReader); }
public ArtNetUnknownPacket(ArtNetReceiveData data) : base(data) { }