Пример #1
0
        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);
        }
Пример #2
0
        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");
                        }
                    }
                }
            }
        }