public static Span <byte> GetUniverseDiscoveryPacket(byte[] CID, string sourceName, byte page, byte lastPage, UInt16[] universes) { var rootLayer = new RootLayer { CID = CID, Vector = RootLayerVector.VECTOR_ROOT_E131_EXTENDED }; var framingLayer = new UniverseDiscoveryPacketFramingLayer { SourceName = sourceName }; var universeDiscoveryLayer = new UniverseDiscoveryLayer { Page = page, LastPage = lastPage, Universes = universes }; int totalLength = RootLayer.Length + UniverseDiscoveryPacketFramingLayer.Length + universeDiscoveryLayer.Length; using var owner = MemoryPool <byte> .Shared.Rent(totalLength); var bytes = owner.Memory.Span.Slice(0, totalLength); rootLayer.Write(bytes, (UInt16)(SynchronizationPacketFramingLayer.Length + universeDiscoveryLayer.Length)); framingLayer.Write(bytes.Slice(RootLayer.Length), universeDiscoveryLayer.Length); universeDiscoveryLayer.Write(bytes.Slice(RootLayer.Length + UniverseDiscoveryPacketFramingLayer.Length)); return(bytes); }
public static Span <byte> GetDataPacket(byte[] CID, string sourceName, UInt16 universe, byte[] properties) { var rootLayer = new RootLayer { CID = CID, Vector = RootLayerVector.VECTOR_ROOT_E131_DATA }; var framingLayer = new DataPacketFramingLayer { SourceName = sourceName, Universe = universe }; var dmpLayer = new DMPLayer { PropertyValues = properties }; int totalLength = dmpLayer.Length + DataPacketFramingLayer.Length + RootLayer.Length; using var owner = MemoryPool <byte> .Shared.Rent(totalLength); var bytes = owner.Memory.Span.Slice(0, totalLength); rootLayer.Write(bytes, (UInt16)(DataPacketFramingLayer.Length + dmpLayer.Length)); framingLayer.Write(bytes.Slice(RootLayer.Length), dmpLayer.Length); dmpLayer.Write(bytes.Slice(RootLayer.Length + DataPacketFramingLayer.Length)); return(bytes); }
public void Given_ThePacketIsAValidUniverseDiscoveryPacket_When_ParseIsCalled_Then_ThePacketIsParsedCorrectly() { byte[] CID = Enumerable.Range(1, 12).Select(x => (byte)x).ToArray(); var rootLayer = new RootLayer { CID = CID, Vector = RootLayerVector.VECTOR_ROOT_E131_EXTENDED }; string sourceName = "Source name"; var framingLayer = new UniverseDiscoveryPacketFramingLayer { SourceName = sourceName }; UInt16[] universes = Enumerable.Range(200, 1000) .Select(x => (UInt16)x) .ToArray(); var discoveryLayer = new UniverseDiscoveryLayer { Universes = universes, Page = 25, LastPage = 25 }; int totalLength = discoveryLayer.Length + UniverseDiscoveryPacketFramingLayer.Length + RootLayer.Length; using var owner = MemoryPool <byte> .Shared.Rent(totalLength); var bytes = owner.Memory.Span.Slice(0, totalLength); rootLayer.Write(bytes, (UInt16)(UniverseDiscoveryPacketFramingLayer.Length + discoveryLayer.Length)); framingLayer.Write(bytes.Slice(RootLayer.Length), discoveryLayer.Length); discoveryLayer.Write(bytes.Slice(RootLayer.Length + UniverseDiscoveryPacketFramingLayer.Length)); var packet = SacnPacket.Parse(bytes); Assert.NotNull(packet); Assert.IsType <UniverseDiscoveryPacket>(packet); }
public void When_WriteIsCalled_Then_TheDataIsCorrect() { var expectedCid = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; var expectedVector = RootLayerVector.VECTOR_ROOT_E131_DATA; var expectedBytes = GetRootLayer(expectedCid, expectedVector); RootLayer rootLayer = new RootLayer() { CID = expectedCid, Vector = RootLayerVector.VECTOR_ROOT_E131_DATA }; using var owner = MemoryPool <byte> .Shared.Rent(RootLayer.Length); var actualBytes = owner.Memory.Span.Slice(0, RootLayer.Length); rootLayer.Write(actualBytes, 0); Assert.Equal(expectedBytes, actualBytes.ToArray()); }
public static Span <byte> GetSynchronizationPacket(byte[] CID, byte sequenceNumber) { var rootLayer = new RootLayer { CID = CID, Vector = RootLayerVector.VECTOR_ROOT_E131_EXTENDED }; var framingLayer = new SynchronizationPacketFramingLayer { SequenceNumber = sequenceNumber }; int totalLength = SynchronizationPacketFramingLayer.Length + RootLayer.Length; using var owner = MemoryPool <byte> .Shared.Rent(totalLength); var bytes = owner.Memory.Span.Slice(0, totalLength); rootLayer.Write(bytes, (UInt16)(SynchronizationPacketFramingLayer.Length)); framingLayer.Write(bytes.Slice(RootLayer.Length)); return(bytes); }
public override void Write(Span <byte> bytes) { RootLayer.Write(bytes, (UInt16)(DataPacketFramingLayer.Length + DMPLayer.Length)); FramingLayer.Write(bytes.Slice(RootLayer.Length), (UInt16)(DMPLayer.Length)); DMPLayer.Write(bytes.Slice(RootLayer.Length + DataPacketFramingLayer.Length)); }
public override void Write(Span <byte> bytes) { RootLayer.Write(bytes, SynchronizationPacketFramingLayer.Length); FramingLayer.Write(bytes.Slice(RootLayer.Length)); }
public override void Write(Span <byte> bytes) { RootLayer.Write(bytes, (UInt16)(UniverseDiscoveryPacketFramingLayer.Length + UniverseDiscoveryLayer.Length)); FramingLayer.Write(bytes.Slice(RootLayer.Length), UniverseDiscoveryLayer.Length); UniverseDiscoveryLayer.Write(bytes.Slice(RootLayer.Length + UniverseDiscoveryPacketFramingLayer.Length)); }