private static CitpPacket BuildCaEx(CitpRecieveData data) { CaExHeader header = new CaExHeader(0x0); header.ReadData(data.GetReader()); CitpPacket packet = null; switch (header.ContentCode) { case CaExContentCodes.Nack: packet = new CaExNack(); break; case CaExContentCodes.GetLiveViewStatus: packet = new CaExGetLiveViewStatus(); break; case CaExContentCodes.LiveViewStatus: packet = new CaExLiveViewStatus(); break; case CaExContentCodes.GetLiveViewImage: packet = new CaExGetLiveViewImage(); break; case CaExContentCodes.LiveViewImage: packet = new CaExLiveViewImage(); break; case CaExContentCodes.SetCueRecordingCapabilities: packet = new CaExSetCueRecordingCapabilities(); break; case CaExContentCodes.RecordCue: packet = new CaExRecordCue(); break; case CaExContentCodes.SetRecorderClearingCapabilities: packet = new CaExSetRecorderClearingCapabilities(); break; case CaExContentCodes.ClearRecorder: packet = new CaExClearRecorder(); break; case CaExContentCodes.EnterShow: packet = new CaExEnterShow(); break; case CaExContentCodes.LeaveShow: packet = new CaExLeaveShow(); break; case CaExContentCodes.FixtureConsoleStatus: packet = new CaExFixtureConsoleStatus(); break; case CaExContentCodes.FixtureListRequest: packet = new CaExFixtureListRequest(); break; case CaExContentCodes.FixtureList: packet = new CaExFixtureList(); break; case CaExContentCodes.FixtureModify: packet = new CaExFixtureModify(); break; case CaExContentCodes.FixtureRemove: packet = new CaExFixtureRemove(); break; case CaExContentCodes.FixtureSelection: packet = new CaExFixtureSelection(); break; case CaExContentCodes.FixtureIdentify: packet = new CaExFixtureIdentify(); break; case CaExContentCodes.GetLaserFeedList: //Not implemented yet, left here as placeholder. return(null); default: return(null); } packet.ReadData(data.GetReader()); return(packet); }
public void CitpCaExFixtureListTest() { List <FixtureChanges> options = new List <FixtureChanges>() { FixtureChanges.Update, FixtureChanges.NewFixture, FixtureChanges.ExchangedFixture }; List <FixtureLinkType> linkTypes = new List <FixtureLinkType>() { FixtureLinkType.AtlaBaseFixtureId, FixtureLinkType.AtlaBaseModeId, FixtureLinkType.CaptureId, FixtureLinkType.RDMDeviceModelId, FixtureLinkType.RDMPersonalityId }; Guid identifierId = Guid.NewGuid(); foreach (FixtureChanges option in options) { CaExFixtureList sentPacket = new CaExFixtureList(); sentPacket.Type = option; for (int i = 0; i < 4; i++) { CaExFixtureList.FixtureInformation newFixture = new CaExFixtureList.FixtureInformation(); newFixture.FixtureId = 1690; newFixture.ManufacturerName = "Robe"; newFixture.FixtureName = "MMX Spot"; newFixture.ModeName = "Mode 1"; newFixture.ChannelCount = 24; newFixture.IsDimmer = false; foreach (FixtureLinkType linkType in linkTypes) { FixtureLink link = null; if (linkType != FixtureLinkType.RDMDeviceModelId && linkType != FixtureLinkType.RDMPersonalityId) { link = new FixtureLink(linkType, identifierId); } else { link = new FixtureLink(); link.Type = linkType; link.Data = new byte[] { 26, 72 }; } newFixture.Links.Add(link); } newFixture.IsPatched = true; newFixture.DMXUniverse = 12; newFixture.DMXAddress = (ushort)(1 + (i * 24)); newFixture.Unit = "16"; newFixture.Channel = 10; newFixture.Circuit = "H1.1"; newFixture.Note = "A fixture of some sort"; newFixture.Position = new Coordinate() { X = 5, Y = 2, Z = -4 }; newFixture.Angle = new Coordinate() { X = 180, Y = 90, Z = 90 }; sentPacket.Fixtures.Add(newFixture); } CaExFixtureList received = CitpPacketTester.SendAndReceiveCaExPacket(sentPacket) as CaExFixtureList; Assert.AreEqual(sentPacket.Type, received.Type, "Availability is not equal."); int fixtureCount = sentPacket.Fixtures.Count(); Assert.AreEqual(fixtureCount, received.Fixtures.Count(), "Option count mismatch"); for (int i = 0; i < fixtureCount; i++) { Assert.AreEqual(sentPacket.Fixtures[i].FixtureId, received.Fixtures[i].FixtureId, "Id is not equal."); Assert.AreEqual(sentPacket.Fixtures[i].ManufacturerName, received.Fixtures[i].ManufacturerName, "ManufacturerName is not equal."); Assert.AreEqual(sentPacket.Fixtures[i].FixtureName, received.Fixtures[i].FixtureName, "FixtureName is not equal."); Assert.AreEqual(sentPacket.Fixtures[i].ModeName, received.Fixtures[i].ModeName, "ModeName is not equal."); Assert.AreEqual(sentPacket.Fixtures[i].ChannelCount, received.Fixtures[i].ChannelCount, "ChannelCount is not equal."); Assert.AreEqual(sentPacket.Fixtures[i].IsDimmer, received.Fixtures[i].IsDimmer, "IsDimmer is not equal."); Assert.AreEqual(sentPacket.Fixtures[i].IsPatched, received.Fixtures[i].IsPatched, "IsPatched is not equal."); Assert.AreEqual(sentPacket.Fixtures[i].DMXUniverse, received.Fixtures[i].DMXUniverse, "DMXUniverse is not equal."); Assert.AreEqual(sentPacket.Fixtures[i].DMXAddress, received.Fixtures[i].DMXAddress, "DMXAddress is not equal."); Assert.AreEqual(sentPacket.Fixtures[i].Unit, received.Fixtures[i].Unit, "Unit is not equal."); Assert.AreEqual(sentPacket.Fixtures[i].Channel, received.Fixtures[i].Channel, "ManufacturerName is not equal."); Assert.AreEqual(sentPacket.Fixtures[i].Circuit, received.Fixtures[i].Circuit, "ManufacturerName is not equal."); Assert.AreEqual(sentPacket.Fixtures[i].Note, received.Fixtures[i].Note, "Note is not equal."); Assert.AreEqual(sentPacket.Fixtures[i].Position, received.Fixtures[i].Position, "Position is not equal."); Assert.AreEqual(sentPacket.Fixtures[i].Angle, received.Fixtures[i].Angle, "Angle is not equal."); int linkCount = sentPacket.Fixtures[i].Links.Count; Assert.AreEqual(linkCount, received.Fixtures[i].Links.Count, "Uneven number of identifiers."); for (int j = 0; j < linkCount; j++) { Assert.AreEqual(sentPacket.Fixtures[i].Links[j].Type, received.Fixtures[i].Links[j].Type, "Identifier Type is not equal."); if (received.Fixtures[i].Links[j].Type != FixtureLinkType.RDMDeviceModelId && received.Fixtures[i].Links[j].Type != FixtureLinkType.RDMPersonalityId) { Assert.AreEqual(identifierId, received.Fixtures[i].Links[j].ValueAsGuid(), "Identifier is not equal."); } else { Assert.IsTrue(received.Fixtures[i].Links[j].Data.SequenceEqual(sentPacket.Fixtures[i].Links[j].Data), "Id data is not equal"); } } } } }