public Classroom()
        {
            SystemType = SystemType.Classroom;

            UserInterfaces = new List <UserInterface>
            {
                new UserInterface
                {
                    Enabled             = true,
                    Id                  = 1,
                    DeviceAddressNumber = 0x04,
                    DeviceAddressString = "0x04",
                    DeviceType          = typeof(DmDge200C).Name,
                    Name                = string.Format("Room Touchpanel"),
                    UIControllerType    = UIControllerType.UserPanel,
                    DefaultRoom         = 1
                },
                new UserInterface
                {
                    Enabled             = true,
                    Id                  = 2,
                    DeviceAddressNumber = 0x05,
                    DeviceAddressString = "0x05",
                    DeviceType          = typeof(Tsw1060).Name,
                    Name                = string.Format("Rack Touchpanel"),
                    UIControllerType    = UIControllerType.TechPanel,
                    DefaultRoom         = 1
                }
            };

            Rooms = new List <RoomConfig>()
            {
                new RoomConfig()
                {
                    Enabled   = true,
                    Id        = 1,
                    RoomType  = typeof(Rooms.Classroom).FullName,
                    DspConfig = new DspRoomConfig()
                    {
                        Enabled           = true,
                        Id                = 1,
                        PgmVolControlName = "classroom.pgm.level"
                    },
                    Displays = new List <DisplayConfig>
                    {
                        new DisplayConfig
                        {
                            Enabled             = true,
                            Id                  = 1,
                            Name                = "Display 1",
                            SwitcherOutputIndex = 1,
                            DisplayType         = DisplayType.Samsung
                        },
                        new DisplayConfig
                        {
                            Enabled             = true,
                            Id                  = 2,
                            Name                = "Display 2",
                            SwitcherOutputIndex = 2,
                            DisplayType         = DisplayType.Samsung
                        },
                        new DisplayConfig
                        {
                            Enabled             = true,
                            Id                  = 3,
                            Name                = "Display 3",
                            SwitcherOutputIndex = 3,
                            DisplayType         = DisplayType.Samsung
                        },
                        new DisplayConfig
                        {
                            Enabled             = true,
                            Id                  = 4,
                            Name                = "Display 4",
                            SwitcherOutputIndex = 4,
                            DisplayType         = DisplayType.Samsung
                        },
                        new DisplayConfig
                        {
                            Enabled             = true,
                            Id                  = 5,
                            Name                = "Display 5",
                            SwitcherOutputIndex = 5,
                            DisplayType         = DisplayType.Samsung
                        },
                        new DisplayConfig
                        {
                            Enabled             = true,
                            Id                  = 6,
                            Name                = "Display 6",
                            SwitcherOutputIndex = 6,
                            DisplayType         = DisplayType.Samsung
                        },
                        new DisplayConfig
                        {
                            Enabled             = true,
                            Id                  = 7,
                            Name                = "Lectern",
                            SwitcherOutputIndex = 10,
                            DisplayType         = DisplayType.Generic
                        }
                    },
                    Sources = new List <SourceConfig>
                    {
                        new SourceConfig
                        {
                            Id   = 1,
                            Name = "Video Conference",
                            Icon = JSIcons.Laptop,
                            SwitcherInputIndex          = 13,
                            SwitcherInputIndexSecondary = 14,
                            SourceType = SourceType.VideoConference,
                            Enabled    = true
                        },
                        new SourceConfig
                        {
                            Id   = 2,
                            Name = "Lectern",
                            Icon = JSIcons.Laptop,
                            SwitcherInputIndex = 1,
                            SourceType         = SourceType.Laptop,
                            Enabled            = true
                        },
                        new SourceConfig
                        {
                            Id   = 3,
                            Name = "PC 1",
                            Icon = JSIcons.Laptop,
                            SwitcherInputIndex = 3,
                            SourceType         = SourceType.PC,
                            Enabled            = true
                        },
                        new SourceConfig
                        {
                            Id   = 4,
                            Name = "PC 2",
                            Icon = JSIcons.Laptop,
                            SwitcherInputIndex = 4,
                            SourceType         = SourceType.PC,
                            Enabled            = true
                        },
                        new SourceConfig
                        {
                            Id   = 5,
                            Name = "PC 3",
                            Icon = JSIcons.Laptop,
                            SwitcherInputIndex = 5,
                            SourceType         = SourceType.PC,
                            Enabled            = true
                        }
                    },
                    SwitcherOutputCodecContent = 20,
                    Fusion = new FusionConfig
                    {
                        Enabled             = true,
                        DeviceAddressNumber = 0xF1
                    }
                }
            };

            GlobalSources = new List <SourceConfig>();

            SwitcherType = SystemSwitcherType.DmFrame;

            CodecAddresses = new Dictionary <uint, string>()
            {
                { 1, "30.93.0.177" }
            };

            CodecUsername = "******";
            CodecPassword = "";

            DspConfig = new DspDeviceConfig
            {
                Enabled              = true,
                DeviceAddressString  = "30.93.1.218",
                DeviceConnectionType = DeviceConnectionType.Network,
                Name = "Q-Sys Core"
            };

            SwitcherConfig = new SwitcherConfig
            {
                Enabled     = true,
                FrameType   = typeof(DmMd32x32Cpu3).FullName,
                Id          = 0x80,
                Name        = "DM Switcher Config",
                InputCards  = new List <SwitcherCardConfig>(),
                OutputCards = new List <SwitcherCardConfig>(),
                Inputs      = new List <SwitcherInputConfig>(),
                Outputs     = new List <SwitcherOutputConfig>()
            };

            for (uint nCard = 1; nCard <= 8; nCard++)
            {
                SwitcherConfig.InputCards.Add(new SwitcherCardConfig
                {
                    Number = nCard,
                    Type   = typeof(Dmc4kzC).FullName
                });
            }

            for (uint nCard = 9; nCard <= 14; nCard++)
            {
                SwitcherConfig.InputCards.Add(new SwitcherCardConfig
                {
                    Number = nCard,
                    Type   = typeof(Dmc4kzHd).FullName
                });
            }

            for (uint nCard = 1; nCard <= 5; nCard++)
            {
                SwitcherConfig.OutputCards.Add(new SwitcherCardConfig
                {
                    Number = nCard,
                    Type   = typeof(Dmc4kzCoHdSingle).FullName
                });
            }

            for (uint nCard = 6; nCard <= 10; nCard++)
            {
                SwitcherConfig.OutputCards.Add(new SwitcherCardConfig
                {
                    Number = nCard,
                    Type   = typeof(Dmc4kzHdoSingle).FullName
                });
            }

            for (var input = 1U; input <= 14; input++)
            {
                var inputConfig = new SwitcherInputConfig
                {
                    Number       = input,
                    Name         = "Input " + input,
                    EndpointType = string.Empty
                };

                switch (input)
                {
                case 1:
                    inputConfig.EndpointType = typeof(DmTx4k302C).FullName;
                    break;

                case 2:
                case 3:
                case 4:
                case 5:
                case 6:
                case 7:
                case 8:
                    inputConfig.EndpointType = typeof(DmTx4k202C).FullName;
                    break;

                case 9:
                    continue;

                default:
                    break;
                }

                SwitcherConfig.Inputs.Add(inputConfig);
            }

            foreach (var inputConfig in SwitcherConfig.Inputs)
            {
                switch (inputConfig.Number)
                {
                case 1: inputConfig.Name = "Lectern"; break;

                case 2: inputConfig.Name = "Aux Input Plate"; break;

                case 3: inputConfig.Name = "PC 1"; break;

                case 4: inputConfig.Name = "PC 2"; break;

                case 5: inputConfig.Name = "PC 3"; break;

                case 6: inputConfig.Name = "Cam 1"; break;

                case 7: inputConfig.Name = "Cam 2"; break;

                case 8: inputConfig.Name = "Cam 3"; break;

                case 10: inputConfig.Name = "IPTV"; break;

                case 11: inputConfig.Name = "Cam Processor"; break;

                case 12: inputConfig.Name = "Multiview"; break;

                case 13: inputConfig.Name = "Codec Single"; break;

                case 14: inputConfig.Name = "Codec Dual"; break;
                }
            }

            for (var output = 1U; output <= 10; output++)
            {
                var outputConfig = new SwitcherOutputConfig
                {
                    Number       = output,
                    Name         = "Output " + output,
                    EndpointType = string.Empty
                };

                switch (output)
                {
                case 1:
                case 2:
                case 3:
                case 4:
                case 5:
                case 6:
                case 7:
                case 8:
                case 9:
                    outputConfig.EndpointType = typeof(DmRmc4kzScalerC).FullName;
                    break;
                }

                SwitcherConfig.Outputs.Add(outputConfig);
            }

            for (var output = 11U; output <= 21; output++)
            {
                var outputConfig = new SwitcherOutputConfig
                {
                    Number       = output,
                    Name         = "Output " + output,
                    EndpointType = string.Empty
                };

                SwitcherConfig.Outputs.Add(outputConfig);
            }

            foreach (var outputConfig in SwitcherConfig.Outputs)
            {
                switch (outputConfig.Number)
                {
                case 1: outputConfig.Name = "R1 Display 1"; break;

                case 2: outputConfig.Name = "R1 Display 2"; break;

                case 3: outputConfig.Name = "R1 Display 3"; break;

                case 4: outputConfig.Name = "R2 Display 1"; break;

                case 5: outputConfig.Name = "R2 Display 2"; break;

                case 6: outputConfig.Name = "R2 Display 3"; break;

                case 7: outputConfig.Name = "Rack Monitor"; break;

                case 8: outputConfig.Name = "Recorder 1"; break;

                case 9: outputConfig.Name = "Recorder 2"; break;

                case 10: outputConfig.Name = "Lectern"; break;

                case 11: outputConfig.Name = "Cam Processor 1"; break;

                case 12: outputConfig.Name = "Cam Processor 2"; break;

                case 13: outputConfig.Name = "Cam Processor 3"; break;

                case 14: outputConfig.Name = "Cam Processor 4"; break;

                case 15: outputConfig.Name = "Multiview 1"; break;

                case 16: outputConfig.Name = "Multiview 2"; break;

                case 17: outputConfig.Name = "Multiview 3"; break;

                case 18: outputConfig.Name = "Multiview 4"; break;

                case 19: outputConfig.Name = "Codec Cam"; break;

                case 20: outputConfig.Name = "Codec Content"; break;

                case 21: outputConfig.Name = "PGM Audio"; break;
                }
            }

            DspFaderColors = new List <FaderItemColor>
            {
                new FaderItemColor
                {
                    ColorHex = "#ff8000",
                    Name     = "Orange",
                    Priority = 1
                },
                new FaderItemColor
                {
                    ColorHex = "#0080FF",
                    Name     = "Cyan",
                    Priority = 2
                },
                new FaderItemColor
                {
                    ColorHex = "#ff0000",
                    Name     = "Red",
                    Priority = 3
                },
                new FaderItemColor
                {
                    ColorHex = "#ff00ff",
                    Name     = "Pink",
                    Priority = 4
                },
                new FaderItemColor
                {
                    ColorHex = "#ffff00",
                    Name     = "Yellow",
                    Priority = 5
                },
                new FaderItemColor
                {
                    ColorHex = "#00ff00",
                    Name     = "Green",
                    Priority = 6
                },
                new FaderItemColor
                {
                    ColorHex = "#8000ff",
                    Name     = "Purple",
                    Priority = 7
                },
                new FaderItemColor
                {
                    ColorHex = "#0000ff",
                    Name     = "Blue",
                    Priority = 8
                },
            };

            DspFaderComponents = new List <FaderItemConfig>
            {
                new FaderItemConfig
                {
                    Name          = "PGM Mix",
                    ComponentName = "Class.pgmmix.level",
                    Color         = "Blue",
                    Group         = 3,
                    MixerIndex    = 1
                },
                new FaderItemConfig
                {
                    Name          = "Mic Mix",
                    ComponentName = "Class.srmix.level",
                    Color         = "Blue",
                    Group         = 3,
                    MixerIndex    = 2
                },
                new FaderItemConfig
                {
                    Name          = "Patch Bay 1",
                    ComponentName = "Class.patchbay1.level",
                    Color         = "Blue",
                    Group         = 3,
                    MixerIndex    = 3
                },
                new FaderItemConfig
                {
                    Name          = "Patch Bay 2",
                    ComponentName = "Class.patchbay2.level",
                    Color         = "Blue",
                    Group         = 3,
                    MixerIndex    = 4
                },
                new FaderItemConfig
                {
                    Name          = "PGM",
                    ComponentName = "Class.pgm.gain",
                    Color         = "Blue",
                    Group         = 1,
                    MixerIndex    = 5
                },
                new FaderItemConfig
                {
                    Name          = "VC",
                    ComponentName = "Class.vc.gain",
                    Color         = "Blue",
                    Group         = 1,
                    MixerIndex    = 6
                },
                new FaderItemConfig
                {
                    Name          = "Patch Bay In 1",
                    ComponentName = "Class.PatchBay.in1.gain",
                    Color         = "Cyan",
                    Group         = 1,
                    MixerIndex    = 7
                },
                new FaderItemConfig
                {
                    Name          = "Patch Bay In 2",
                    ComponentName = "Class.PatchBay.in2.gain",
                    Color         = "Cyan",
                    Group         = 1,
                    MixerIndex    = 8
                },
                new FaderItemConfig
                {
                    Name                 = "Handheld",
                    ComponentName        = "Class.hh.boost",
                    Color                = "Blue",
                    Group                = 2,
                    MixerIndex           = 9,
                    TrafficLightBaseName = "Class.HH"
                },
                new FaderItemConfig
                {
                    Name                 = "Lapel",
                    ComponentName        = "Class.lapel.boost",
                    Color                = "Blue",
                    Group                = 2,
                    MixerIndex           = 10,
                    TrafficLightBaseName = "Class.lapel"
                },
                new FaderItemConfig
                {
                    Name                 = "Floorbox A",
                    ComponentName        = "Class.fba.boost",
                    Color                = "Blue",
                    Group                = 2,
                    MixerIndex           = 11,
                    TrafficLightBaseName = "Class.fba"
                },
                new FaderItemConfig
                {
                    Name                 = "Floorbox B",
                    ComponentName        = "Class.fbb.boost",
                    Color                = "Blue",
                    Group                = 2,
                    MixerIndex           = 12,
                    TrafficLightBaseName = "Class.fbb"
                },
                new FaderItemConfig
                {
                    Name          = "Monitor Level",
                    ComponentName = "ControlRoom.level",
                    Color         = "Cyan",
                    Group         = 4,
                    MixerIndex    = 0
                },
                new FaderItemConfig
                {
                    Name                 = "Patch Bay Out 1",
                    ComponentName        = "PatchBay.out1.level",
                    Color                = "Cyan",
                    Group                = 4,
                    MixerIndex           = 13,
                    TrafficLightBaseName = "patchbay1"
                },
                new FaderItemConfig
                {
                    Name                 = "Patch Bay Out 2",
                    ComponentName        = "PatchBay.out2.level",
                    Color                = "Cyan",
                    Group                = 4,
                    MixerIndex           = 14,
                    TrafficLightBaseName = "patchbay2"
                },
                new FaderItemConfig
                {
                    Name                 = "1Beyond",
                    ComponentName        = "Class.1beyond.level",
                    Color                = "Red",
                    Group                = 5,
                    MixerIndex           = 15,
                    TrafficLightBaseName = "1beyond"
                },
                new FaderItemConfig
                {
                    Name                 = "Extron Recorder 1",
                    ComponentName        = "extron.recorder1.level",
                    Color                = "Red",
                    Group                = 5,
                    MixerIndex           = 16,
                    TrafficLightBaseName = "extron.recorder1"
                },
                new FaderItemConfig
                {
                    Name                 = "Extron Recorder 2",
                    ComponentName        = "extron.recorder2.level",
                    Color                = "Red",
                    Group                = 5,
                    MixerIndex           = 17,
                    TrafficLightBaseName = "extron.recorder2"
                },
            };

            TriplePlayServerAddress = "30.93.1.126";
        }
Exemple #2
0
        public DmSwitcher(ControlSystem controlSystem, SwitcherConfig switcherConfig)
        {
            ControlSystem = controlSystem;
            var assembly = Assembly.Load(typeof(DmMd32x32Cpu3).AssemblyName());

#if DEBUG
            CrestronConsole.PrintLine("DMSwitcher - Creating instance of {0}", switcherConfig.FrameType);
#endif
            try
            {
                var frameType = assembly.GetType(switcherConfig.FrameType).GetCType();
                var frameCtor = frameType.GetConstructor(new CType[] { typeof(uint), typeof(CrestronControlSystem) });
                Chassis = (Switch)frameCtor.Invoke(new object[] { switcherConfig.Id, controlSystem });
                for (var i = 1U; i <= Chassis.NumberOfOutputs; i++)
                {
                    _outInit[i] = false;
                }
            }
            catch (Exception e)
            {
                CloudLog.Exception(e, "Error loading DM Frame type");
                throw e;
            }

            foreach (var cardConfig in switcherConfig.InputCards)
            {
                CardDevice card = null;
                try
                {
                    var cardType = assembly.GetType(cardConfig.Type).GetCType();
                    var ctor     = cardType.GetConstructor(new CType[] { typeof(uint), typeof(Switch) });
                    card = (CardDevice)ctor.Invoke(new object[] { cardConfig.Number, Chassis });
                }
                catch (Exception e)
                {
                    CloudLog.Error("Could not create DM Input Card {0} with ID {1}, {2}", cardConfig.Type,
                                   cardConfig.Number, e.Message);
                }

                if (card == null)
                {
                    continue;
                }

                try
                {
                    var inputConfig =
                        switcherConfig.Inputs.FirstOrDefault(i => i.Number == card.SwitcherInputOutput.Number);
                    if (inputConfig == null)
                    {
                        continue;
                    }
                    if (string.IsNullOrEmpty(inputConfig.EndpointType))
                    {
                        continue;
                    }
                    var endpointType = assembly.GetType(inputConfig.EndpointType).GetCType();
                    var ctor         = endpointType.GetConstructor(new CType[] { typeof(DMInput) });
                    var endpoint     = (DMEndpointBase)ctor.Invoke(new object[] { card.SwitcherInputOutput as DMInput });
                    endpoint.Description = inputConfig.Name;
                }
                catch (Exception e)
                {
                    CloudLog.Error("Could not create DM Input {0}, {1}", cardConfig.Number, e.Message);
                }
            }

            foreach (var cardConfig in switcherConfig.OutputCards)
            {
                DmcOutputSingle card = null;
                try
                {
                    var bladeType = assembly.GetType(cardConfig.Type).GetCType();
                    var ctor      = bladeType.GetConstructor(new CType[] { typeof(uint), typeof(Switch) });
                    card = (DmcOutputSingle)ctor.Invoke(new object[] { cardConfig.Number, Chassis });
                }
                catch (Exception e)
                {
                    CloudLog.Error("Could not create DM Output Card {0} with ID {1}, {2}", cardConfig.Type,
                                   cardConfig.Number, e.Message);
                }

                if (card == null)
                {
                    continue;
                }

                for (var cardOutput = 1U; cardOutput <= 2; cardOutput++)
                {
                    var propName   = "Card" + cardOutput;
                    var cardSingle =
                        (CardDevice)
                        card.GetCType()
                        .GetProperties(BindingFlags.Public | BindingFlags.Instance)
                        .First(p => p.Name == propName)
                        .GetValue(card);

                    try
                    {
                        var outputConfig =
                            switcherConfig.Outputs.FirstOrDefault(i => i.Number == cardSingle.SwitcherInputOutput.Number);
                        if (outputConfig == null)
                        {
                            continue;
                        }
                        if (string.IsNullOrEmpty(outputConfig.EndpointType))
                        {
                            continue;
                        }
                        var endpointType = assembly.GetType(outputConfig.EndpointType).GetCType();
                        var ctor         = endpointType.GetConstructor(new CType[] { typeof(DMOutput) });
                        var endpoint     =
                            (DMEndpointBase)ctor.Invoke(new object[] { cardSingle.SwitcherInputOutput as DMOutput });
                        endpoint.Description = outputConfig.Name;
                    }
                    catch (Exception e)
                    {
                        CloudLog.Error("Could not create DM Output {0}, {1}", cardSingle.SwitcherInputOutput.Number,
                                       e.Message);
                    }
                }
            }

            Chassis.OnlineStatusChange += Chassis_OnlineStatusChange;
            Chassis.DMInputChange      += OnDmInputChange;
            Chassis.DMOutputChange     += OnDmOutputChange;

            try
            {
                var regResult = Chassis.Register();
                if (regResult != eDeviceRegistrationUnRegistrationResponse.Success)
                {
                    CloudLog.Error("Error registering DM Frame, result = {0}", regResult);
                }
            }
            catch (Exception e)
            {
                CloudLog.Error("Error trying to register DM Frame, {0}", e.Message);
            }

            try
            {
                foreach (var inputConfig in switcherConfig.Inputs)
                {
                    if (inputConfig.Number == 0 || inputConfig.Number > Chassis.NumberOfInputs)
                    {
                        continue;
                    }
                    Chassis.Inputs[inputConfig.Number].Name.StringValue = inputConfig.Name;
                }

                foreach (var outputConfig in switcherConfig.Outputs)
                {
                    if (outputConfig.Number == 0 || outputConfig.Number > Chassis.NumberOfOutputs)
                    {
                        continue;
                    }

                    Chassis.Outputs[outputConfig.Number].Name.StringValue = outputConfig.Name;
                }
            }
            catch (Exception e)
            {
                CloudLog.Error("Error setting names on DM switcher, {0}", e.Message);
            }
        }
        public BigDmSwitcher(ControlSystem controlSystem, SwitcherConfig switcherConfig)
        {
            ControlSystem = controlSystem;
            var assembly = Assembly.Load(typeof(BladeSwitch).AssemblyName());

#if DEBUG
            CrestronConsole.PrintLine("DMSwitcher - Creating instance of {0}", switcherConfig.FrameType);
#endif
            try
            {
                var frameType = assembly.GetType(switcherConfig.FrameType).GetCType();
                var frameCtor = frameType.GetConstructor(new CType[] { typeof(uint), typeof(CrestronControlSystem) });
                Chassis = (Switch)frameCtor.Invoke(new object[] { switcherConfig.Id, controlSystem });
                for (var i = 1U; i <= Chassis.NumberOfOutputs; i++)
                {
                    _outInit[i] = false;
                }
            }
            catch (Exception e)
            {
                CloudLog.Error("Error loading DM Frame type");
                throw e;
            }

            foreach (var bladeConfig in switcherConfig.InputBlades)
            {
                DmInputBlade blade = null;
                try
                {
                    var bladeType = assembly.GetType(bladeConfig.Type).GetCType();
                    var ctor      = bladeType.GetConstructor(new CType[] { typeof(uint), typeof(Switch) });
                    blade = (DmInputBlade)ctor.Invoke(new object[] { bladeConfig.Number, Chassis });
                }
                catch (Exception e)
                {
                    CloudLog.Error("Could not create DM Input Blade {0} with ID {1}, {2}", bladeConfig.Type, bladeConfig.Number, e.Message);
                }

                if (blade == null)
                {
                    continue;
                }

                for (var bladeInput = 1U; bladeInput <= 8; bladeInput++)
                {
                    var inputNumber = ((blade.Number - 1) * 8) + bladeInput;

                    try
                    {
                        var inputConfig = switcherConfig.Inputs.FirstOrDefault(i => i.Number == inputNumber);
                        if (inputConfig == null)
                        {
                            continue;
                        }
                        if (string.IsNullOrEmpty(inputConfig.EndpointType))
                        {
                            continue;
                        }
                        var endpointType = assembly.GetType(inputConfig.EndpointType).GetCType();
                        var ctor         = endpointType.GetConstructor(new CType[] { typeof(DMInput) });
                        var endpoint     = (DMEndpointBase)ctor.Invoke(new object[] { blade.Inputs[bladeInput] });
                        endpoint.Description = inputConfig.Name;
                    }
                    catch (Exception e)
                    {
                        CloudLog.Error("Could not create DM Input {0}, {1}", inputNumber, e.Message);
                    }
                }
            }

            foreach (var bladeConfig in switcherConfig.OutputBlades)
            {
                DmOutputBlade blade = null;
                try
                {
                    var bladeType = assembly.GetType(bladeConfig.Type).GetCType();
                    var ctor      = bladeType.GetConstructor(new CType[] { typeof(uint), typeof(Switch) });
                    blade = (DmOutputBlade)ctor.Invoke(new object[] { bladeConfig.Number, Chassis });
                }
                catch (Exception e)
                {
                    CloudLog.Error("Could not create DM Output Blade {0} with ID {1}, {2}", bladeConfig.Type, bladeConfig.Number, e.Message);
                }

                if (blade == null)
                {
                    continue;
                }

                for (var bladeOutput = 1U; bladeOutput <= 8; bladeOutput++)
                {
                    var outputNumber = ((blade.Number - 1) * 8) + bladeOutput;

                    try
                    {
                        var outputConfig = switcherConfig.Outputs.FirstOrDefault(i => i.Number == outputNumber);
                        if (outputConfig == null)
                        {
                            continue;
                        }
                        if (string.IsNullOrEmpty(outputConfig.EndpointType))
                        {
                            continue;
                        }
                        var endpointType = assembly.GetType(outputConfig.EndpointType).GetCType();
                        var ctor         = endpointType.GetConstructor(new CType[] { typeof(DMOutput) });
                        var endpoint     = (DMEndpointBase)ctor.Invoke(new object[] { blade.Outputs[bladeOutput] });
                        endpoint.Description = outputConfig.Name;
                    }
                    catch (Exception e)
                    {
                        CloudLog.Error("Could not create DM Output {0}, {1}", outputNumber, e.Message);
                    }
                }
            }

            Chassis.OnlineStatusChange += Chassis_OnlineStatusChange;
            Chassis.DMInputChange      += OnDmInputChange;
            Chassis.DMOutputChange     += OnDmOutputChange;

            try
            {
                var regResult = Chassis.Register();
                if (regResult != eDeviceRegistrationUnRegistrationResponse.Success)
                {
                    CloudLog.Error("Error registering DM Frame, result = {0}", regResult);
                }
            }
            catch (Exception e)
            {
                CloudLog.Error("Error trying to register DM Frame, {0}", e.Message);
            }

            try
            {
                foreach (var inputConfig in switcherConfig.Inputs)
                {
                    if (inputConfig.Number == 0 || inputConfig.Number > Chassis.NumberOfInputs)
                    {
                        continue;
                    }
                    Chassis.Inputs[inputConfig.Number].Name.StringValue = inputConfig.Name;
                }

                foreach (var outputConfig in switcherConfig.Outputs)
                {
                    if (outputConfig.Number == 0 || outputConfig.Number > Chassis.NumberOfOutputs)
                    {
                        continue;
                    }

                    Chassis.Outputs[outputConfig.Number].Name.StringValue = outputConfig.Name;
                }
            }
            catch (Exception e)
            {
                CloudLog.Error("Error setting names on DM switcher, {0}", e.Message);
            }
        }
Exemple #4
0
        public RecArea()
        {
            SystemType = SystemType.RecArea;

            UserInterfaces = new List <UserInterface>
            {
                new UserInterface
                {
                    Enabled             = true,
                    Id                  = 1,
                    DeviceAddressNumber = 0x0A,
                    DeviceAddressString = "30.93.1.155",
                    DeviceType          = typeof(ThreeSeriesTcpIpEthernetIntersystemCommunications).Name,
                    Name                = string.Format("MPC 1"),
                    UIControllerType    = UIControllerType.RemoteMpc,
                    DefaultRoom         = 2
                },
                new UserInterface
                {
                    Enabled             = true,
                    Id                  = 2,
                    DeviceAddressNumber = 0x0B,
                    DeviceAddressString = "30.93.1.156",
                    DeviceType          = typeof(ThreeSeriesTcpIpEthernetIntersystemCommunications).Name,
                    Name                = string.Format("MPC 2"),
                    UIControllerType    = UIControllerType.RemoteMpc,
                    DefaultRoom         = 2
                },
                new UserInterface
                {
                    Enabled             = true,
                    Id                  = 3,
                    DeviceAddressNumber = 0x0C,
                    DeviceAddressString = "30.93.1.157",
                    DeviceType          = typeof(ThreeSeriesTcpIpEthernetIntersystemCommunications).Name,
                    Name                = string.Format("MPC 3"),
                    UIControllerType    = UIControllerType.RemoteMpc,
                    DefaultRoom         = 1
                },
                new UserInterface
                {
                    Enabled             = true,
                    Id                  = 4,
                    DeviceAddressNumber = 0x04,
                    DeviceAddressString = "JaneStreet_UI_CrestronApp_MJ_v1_03",
                    DeviceType          = typeof(CrestronApp).Name,
                    Name                = string.Format("MPC 3"),
                    UIControllerType    = UIControllerType.TechPanel,
                    DefaultRoom         = 1
                }
            };

            Rooms = new List <RoomConfig>()
            {
                new RoomConfig()
                {
                    Enabled   = true,
                    Id        = 1,
                    RoomType  = typeof(Rooms.RecRoom).FullName,
                    DspConfig = new DspRoomConfig()
                    {
                        Enabled           = true,
                        PgmVolControlName = "pgm.level"
                    },
                    Displays = new List <DisplayConfig>
                    {
                        new DisplayConfig
                        {
                            Enabled                    = true,
                            Id                         = 1,
                            Name                       = "Display 1",
                            SwitcherOutputIndex        = 1,
                            DisplayType                = DisplayType.CrestronConnected,
                            DeviceAddressNumber        = IpIdFactory.Create(IpIdFactory.DeviceType.Other),
                            UsesRelaysForScreenControl = true
                        }
                    },
                    Sources = new List <SourceConfig>
                    {
                        new SourceConfig
                        {
                            Id   = 1,
                            Name = "Laptop",
                            Icon = JSIcons.Laptop,
                            SwitcherInputIndex = 1,
                            SourceType         = SourceType.Laptop,
                            Enabled            = true
                        },
                        new SourceConfig
                        {
                            Id   = 2,
                            Name = "IPTV",
                            Icon = JSIcons.TV,
                            SwitcherInputIndex  = 4,
                            DeviceAddressNumber = 10,
                            SourceType          = SourceType.IPTV,
                            Enabled             = true
                        }
                    },
                    PgmAudioSwitcherOutput = 3,
                    Fusion = new FusionConfig
                    {
                        Enabled             = true,
                        DeviceAddressNumber = 0xF1
                    }
                },
                new RoomConfig()
                {
                    Enabled   = true,
                    Id        = 2,
                    RoomType  = typeof(Rooms.RecRoom).FullName,
                    DspConfig = new DspRoomConfig()
                    {
                        Enabled           = false,
                        PgmVolControlName = string.Empty
                    },
                    Displays = new List <DisplayConfig>
                    {
                        new DisplayConfig
                        {
                            Enabled             = true,
                            Id                  = 1,
                            Name                = "Display 1",
                            SwitcherOutputIndex = 2,
                            DisplayType         = DisplayType.Samsung
                        }
                    },
                    Sources = new List <SourceConfig>
                    {
                        new SourceConfig
                        {
                            Id   = 1,
                            Name = "Laptop",
                            Icon = JSIcons.Laptop,
                            SwitcherInputIndex = 2,
                            SourceType         = SourceType.Laptop,
                            Enabled            = true
                        },
                        new SourceConfig
                        {
                            Id   = 2,
                            Name = "IPTV",
                            Icon = JSIcons.TV,
                            SwitcherInputIndex  = 6,
                            DeviceAddressNumber = 12,
                            SourceType          = SourceType.IPTV,
                            Enabled             = true
                        }
                    },
                    Fusion = new FusionConfig
                    {
                        Enabled             = true,
                        DeviceAddressNumber = 0xF2
                    }
                }
            };

            GlobalSources = new List <SourceConfig>();

            SwitcherType = SystemSwitcherType.DmFrame;

            CodecUsername = "******";
            CodecPassword = "";

            DspConfig = new DspDeviceConfig
            {
                Enabled              = true,
                DeviceAddressString  = "30.93.1.217",
                DeviceConnectionType = DeviceConnectionType.Network,
                Name = "Q-Sys Core"
            };

            SwitcherConfig = new SwitcherConfig
            {
                Enabled     = true,
                FrameType   = typeof(DmMd8x8Cpu3).FullName,
                Id          = 0x80,
                Name        = "DM Switcher Config",
                InputCards  = new List <SwitcherCardConfig>(),
                OutputCards = new List <SwitcherCardConfig>(),
                Inputs      = new List <SwitcherInputConfig>(),
                Outputs     = new List <SwitcherOutputConfig>()
            };

            for (uint nCard = 1; nCard <= 2; nCard++)
            {
                SwitcherConfig.InputCards.Add(new SwitcherCardConfig
                {
                    Number = nCard,
                    Type   = typeof(Dmc4kzC).FullName
                });
            }

            for (uint nCard = 3; nCard <= 6; nCard++)
            {
                SwitcherConfig.InputCards.Add(new SwitcherCardConfig
                {
                    Number = nCard,
                    Type   = typeof(Dmc4kzHd).FullName
                });
            }

            SwitcherConfig.OutputCards.Add(new SwitcherCardConfig
            {
                Number = 1,
                Type   = typeof(Dmc4kzCoHdSingle).FullName
            });

            SwitcherConfig.OutputCards.Add(new SwitcherCardConfig
            {
                Number = 2,
                Type   = typeof(Dmc4kzHdoSingle).FullName
            });

            for (var input = 1U; input <= 2; input++)
            {
                SwitcherConfig.Inputs.Add(new SwitcherInputConfig
                {
                    Number       = input,
                    Name         = "Input " + input,
                    EndpointType = typeof(DmTx4k202C).FullName
                });
            }

            for (var input = 3U; input <= 6; input++)
            {
                SwitcherConfig.Inputs.Add(new SwitcherInputConfig
                {
                    Number       = input,
                    Name         = "Input " + input,
                    EndpointType = string.Empty
                });
            }

            foreach (var inputConfig in SwitcherConfig.Inputs)
            {
                switch (inputConfig.Number)
                {
                case 1: inputConfig.Name = "Rec Pres Laptop"; break;

                case 2: inputConfig.Name = "Gaming Area Laptop"; break;

                case 3: inputConfig.Name = "Spare"; break;

                case 4: inputConfig.Name = "IPTV 1"; break;

                case 5: inputConfig.Name = "Spare"; break;

                case 6: inputConfig.Name = "IPTV 2"; break;
                }
            }

            for (var output = 1U; output <= 2; output++)
            {
                SwitcherConfig.Outputs.Add(new SwitcherOutputConfig
                {
                    Number       = output,
                    Name         = "Output " + output,
                    EndpointType = typeof(DmRmc4kzScalerC).FullName
                });
            }

            for (var output = 3U; output <= 4; output++)
            {
                var outputConfig = new SwitcherOutputConfig
                {
                    Number       = output,
                    Name         = "Output " + output,
                    EndpointType = string.Empty
                };

                SwitcherConfig.Outputs.Add(outputConfig);
            }

            foreach (var outputConfig in SwitcherConfig.Outputs)
            {
                switch (outputConfig.Number)
                {
                case 1: outputConfig.Name = "R1 Display"; break;

                case 2: outputConfig.Name = "R2 Display"; break;

                case 3: outputConfig.Name = "R1 Audio"; break;

                case 4: outputConfig.Name = "R2 Audio"; break;
                }
            }

            DspFaderColors = new List <FaderItemColor>
            {
                new FaderItemColor
                {
                    ColorHex = "#ff8000",
                    Name     = "Orange",
                    Priority = 1
                },
                new FaderItemColor
                {
                    ColorHex = "#0080FF",
                    Name     = "Cyan",
                    Priority = 2
                },
                new FaderItemColor
                {
                    ColorHex = "#ff0000",
                    Name     = "Red",
                    Priority = 3
                },
                new FaderItemColor
                {
                    ColorHex = "#ff00ff",
                    Name     = "Pink",
                    Priority = 4
                },
                new FaderItemColor
                {
                    ColorHex = "#ffff00",
                    Name     = "Yellow",
                    Priority = 5
                },
                new FaderItemColor
                {
                    ColorHex = "#00ff00",
                    Name     = "Green",
                    Priority = 6
                },
                new FaderItemColor
                {
                    ColorHex = "#8000ff",
                    Name     = "Purple",
                    Priority = 7
                },
                new FaderItemColor
                {
                    ColorHex = "#0000ff",
                    Name     = "Blue",
                    Priority = 8
                },
            };

            DspFaderComponents = new List <FaderItemConfig>
            {
                new FaderItemConfig
                {
                    Name          = "Rec PGM Mix",
                    ComponentName = "Rec.pgmmix.level",
                    Color         = "Blue",
                    Group         = 3,
                    MixerIndex    = 0
                },
                new FaderItemConfig
                {
                    Name          = "Mic Mix",
                    ComponentName = "Rec.srmix.level",
                    Color         = "Blue",
                    Group         = 3,
                    MixerIndex    = 0
                },
                new FaderItemConfig
                {
                    Name          = "Rec PGM",
                    ComponentName = "pgm.level",
                    Color         = "Blue",
                    Group         = 1,
                    MixerIndex    = 0
                },
                new FaderItemConfig
                {
                    Name          = "Aux",
                    ComponentName = "aux.level",
                    Color         = "Blue",
                    Group         = 1,
                    MixerIndex    = 0
                },
                new FaderItemConfig
                {
                    Name          = "Handheld",
                    ComponentName = "hh.boost",
                    Color         = "Blue",
                    Group         = 2,
                    MixerIndex    = 0
                },
                new FaderItemConfig
                {
                    Name          = "Lapel",
                    ComponentName = "lapel.boost",
                    Color         = "Blue",
                    Group         = 2,
                    MixerIndex    = 0
                }
            };

            TriplePlayServerAddress = "30.93.1.126";
        }
        public Auditorium()
        {
            SystemType = SystemType.Auditorium;

            UserInterfaces = new List <UserInterface>
            {
                new UserInterface
                {
                    Enabled             = true,
                    Id                  = 1,
                    DeviceAddressNumber = 0x04,
                    DeviceAddressString = "0x04",
                    DeviceType          = typeof(DmDge200C).Name,
                    Name                = string.Format("Lectern 1 Panel"),
                    UIControllerType    = UIControllerType.UserPanel,
                    DefaultRoom         = 1
                },
                new UserInterface
                {
                    Enabled             = true,
                    Id                  = 2,
                    DeviceAddressNumber = 0x05,
                    DeviceAddressString = "0x05",
                    DeviceType          = typeof(DmDge200C).Name,
                    Name                = string.Format("Lectern 2 Panel"),
                    UIControllerType    = UIControllerType.UserPanel,
                    DefaultRoom         = 2
                }
            };

            Rooms = new List <RoomConfig>()
            {
                new RoomConfig()
                {
                    Enabled   = true,
                    Id        = 1,
                    Name      = "Auditorium 1",
                    RoomType  = typeof(Rooms.Auditorium).FullName,
                    DspConfig = new DspRoomConfig()
                    {
                        Enabled           = true,
                        Id                = 1,
                        PgmVolControlName = "Aud1.pgmmix.level"
                    },
                    Displays = new List <DisplayConfig>
                    {
                        new DisplayConfig
                        {
                            Enabled     = true,
                            Id          = 1,
                            Name        = "Video Wall",
                            DisplayType = DisplayType.Generic
                        }
                    },
                    Sources = new List <SourceConfig>
                    {
                    },
                    Fusion = new FusionConfig
                    {
                        Enabled             = true,
                        DeviceAddressNumber = 0xF1
                    }
                },
                new RoomConfig()
                {
                    Enabled   = true,
                    Id        = 2,
                    Name      = "Auditorium 2",
                    RoomType  = typeof(Rooms.Auditorium).FullName,
                    DspConfig = new DspRoomConfig()
                    {
                        Enabled           = true,
                        Id                = 1,
                        PgmVolControlName = "Aud2.pgmmix.level"
                    },
                    Displays = new List <DisplayConfig>
                    {
                        new DisplayConfig
                        {
                            Enabled     = true,
                            Id          = 1,
                            Name        = "Video Wall",
                            DisplayType = DisplayType.Generic
                        }
                    },
                    Sources = new List <SourceConfig>
                    {
                    },
                    Fusion = new FusionConfig
                    {
                        Enabled             = true,
                        DeviceAddressNumber = 0xF2
                    }
                }
            };

            GlobalSources = new List <SourceConfig>();

            TriplePlayServerAddress = "30.93.1.126";

            SwitcherType = SystemSwitcherType.BigDmFrame;

            SwitcherConfig = new SwitcherConfig
            {
                Enabled      = true,
                FrameType    = typeof(DmMd64x64).FullName,
                Id           = 0x80,
                Name         = "DM Switcher Config",
                InputBlades  = new List <SwitcherBladeConfig>(),
                OutputBlades = new List <SwitcherBladeConfig>(),
                Inputs       = new List <SwitcherInputConfig>(),
                Outputs      = new List <SwitcherOutputConfig>()
            };

            for (uint nBlade = 1; nBlade <= 3; nBlade++)
            {
                SwitcherConfig.InputBlades.Add(new SwitcherBladeConfig
                {
                    Number = nBlade,
                    Type   = typeof(Dmb4kIC).FullName
                });
            }

            for (uint nBlade = 4; nBlade <= 6; nBlade++)
            {
                SwitcherConfig.InputBlades.Add(new SwitcherBladeConfig
                {
                    Number = nBlade,
                    Type   = typeof(Dmb4kIHd).FullName
                });
            }

            for (uint nBlade = 1; nBlade <= 4; nBlade++)
            {
                SwitcherConfig.OutputBlades.Add(new SwitcherBladeConfig
                {
                    Number = nBlade,
                    Type   = typeof(Dmb4KOC).FullName
                });
            }

            for (uint nBlade = 5; nBlade <= 8; nBlade++)
            {
                SwitcherConfig.OutputBlades.Add(new SwitcherBladeConfig
                {
                    Number = nBlade,
                    Type   = typeof(Dmb4KOHD).FullName
                });
            }

            for (var input = 1U; input <= 23; input++)
            {
                var inputConfig = new SwitcherInputConfig
                {
                    Number       = input,
                    Name         = "Input " + input,
                    EndpointType = string.Empty
                };

                if (input <= 5 || input == 10)
                {
                    inputConfig.EndpointType = typeof(DmTx4k302C).FullName;
                }
                else
                {
                    inputConfig.EndpointType = typeof(DmTx4kz202C).FullName;
                }

                SwitcherConfig.Inputs.Add(inputConfig);
            }

            for (var input = 24U; input <= 36; input++)
            {
                var inputConfig = new SwitcherInputConfig
                {
                    Number       = input,
                    Name         = "Input " + input,
                    EndpointType = string.Empty
                };

                SwitcherConfig.Inputs.Add(inputConfig);
            }

            foreach (var inputConfig in SwitcherConfig.Inputs)
            {
                switch (inputConfig.Number)
                {
                case 1: inputConfig.Name = "Aud 1 Lectern Left"; break;

                case 2: inputConfig.Name = "Aud 1 Lectern Right"; break;

                case 3: inputConfig.Name = "Aud 2 Lectern Left"; break;

                case 4: inputConfig.Name = "Aud 2 Lectern Right"; break;

                case 5: inputConfig.Name = "MPR Lectern"; break;

                case 6: inputConfig.Name = "MPR Laptop Front"; break;

                case 7: inputConfig.Name = "MPR Laptop Rear"; break;

                case 8: inputConfig.Name = "MPR Cam Audience"; break;

                case 9: inputConfig.Name = "MPR Cam Presenter"; break;

                case 10: inputConfig.Name = "Control Room Laptop"; break;

                case 11: inputConfig.Name = "Aud 1 Windows PC"; break;

                case 12: inputConfig.Name = "Aud 1 Linux PC"; break;

                case 13: inputConfig.Name = "Aud 2 Windows PC"; break;

                case 14: inputConfig.Name = "Aud 2 Linux PC"; break;

                case 15: inputConfig.Name = ""; break;

                case 16: inputConfig.Name = ""; break;

                case 17: inputConfig.Name = "Aud 1 Cam Stage"; break;

                case 18: inputConfig.Name = "Aud 1&2 Cam Stage"; break;

                case 19: inputConfig.Name = "Aud 1 Cam Audience L"; break;

                case 20: inputConfig.Name = "Aud 1 Cam Audience R"; break;

                case 21: inputConfig.Name = "Aud 2 Cam Stage"; break;

                case 22: inputConfig.Name = "Aud 2 Cam Audience L"; break;

                case 23: inputConfig.Name = "Aud 2 Cam Audience R"; break;

                case 24: inputConfig.Name = "Group Output"; break;

                case 25: inputConfig.Name = "IPTV 1"; break;

                case 26: inputConfig.Name = "IPTV 2"; break;

                case 27: inputConfig.Name = "IPTV 3"; break;

                case 28: inputConfig.Name = "Ante Space Signage 1"; break;

                case 29: inputConfig.Name = "Ante Space Signage 2"; break;

                case 30: inputConfig.Name = "Aud 1 Video Multi Mix"; break;

                case 31: inputConfig.Name = "Aud 2 Video Multi Mix"; break;

                case 32: inputConfig.Name = "MultiViewer"; break;

                case 33: inputConfig.Name = "Aud 1 Codec Single"; break;

                case 34: inputConfig.Name = "Aud 1 Codec Dual"; break;

                case 35: inputConfig.Name = "Aud 2 Codec"; break;

                case 36: inputConfig.Name = "MPR Codec"; break;
                }

                if (inputConfig.Name.StartsWith("Aud 1"))
                {
                    inputConfig.Color = "Blue";
                }
                else if (inputConfig.Name.StartsWith("Aud 2"))
                {
                    inputConfig.Color = "Orange";
                }
                else if (inputConfig.Name.StartsWith("MPR"))
                {
                    inputConfig.Color = "Green";
                }
            }

            for (var output = 1U; output <= 28; output++)
            {
                var outputConfig = new SwitcherOutputConfig
                {
                    Number       = output,
                    Name         = "Output " + output,
                    EndpointType = string.Empty
                };

                switch (output)
                {
                case 1:
                case 2:
                case 5:
                case 6:
                case 13:
                case 14:
                    outputConfig.EndpointType = typeof(DmRmc4kzScalerC).FullName;
                    break;

                case 9:
                case 10:
                case 11:
                case 12:
                    break;

                default:
                    if (output < 15)
                    {
                        continue;
                    }
                    break;
                }

                SwitcherConfig.Outputs.Add(outputConfig);
            }

            for (var output = 33U; output <= 64; output++)
            {
                var outputConfig = new SwitcherOutputConfig
                {
                    Number       = output,
                    Name         = "Output " + output,
                    EndpointType = string.Empty
                };

                SwitcherConfig.Outputs.Add(outputConfig);
            }

            foreach (var outputConfig in SwitcherConfig.Outputs)
            {
                switch (outputConfig.Number)
                {
                case 1: outputConfig.Name = "Aud 1 Repeater Left"; break;

                case 2: outputConfig.Name = "Aud 1 Repeater Right"; break;

                case 3: outputConfig.Name = ""; break;

                case 4: outputConfig.Name = ""; break;

                case 5: outputConfig.Name = "Aud 2 Repeater Left"; break;

                case 6: outputConfig.Name = "Aud 2 Repeater Right"; break;

                case 7: outputConfig.Name = ""; break;

                case 8: outputConfig.Name = ""; break;

                case 9: outputConfig.Name = "Aud 1 Monitor Lectern Left"; break;

                case 10: outputConfig.Name = "Aud 1 Monitor Lectern Right"; break;

                case 11: outputConfig.Name = "Aud 2 Monitor Lectern Left"; break;

                case 12: outputConfig.Name = "Aud 2 Monitor Lectern Right"; break;

                case 13: outputConfig.Name = "MPR Projector"; break;

                case 14: outputConfig.Name = "MPR Lectern"; break;

                case 15: outputConfig.Name = "AV Control Monitor 1"; break;

                case 16: outputConfig.Name = "AV Control Monitor 2"; break;

                case 17: outputConfig.Name = "AV Control Monitor 3"; break;

                case 18: outputConfig.Name = "AV Control Monitor 4"; break;

                case 19: outputConfig.Name = "AV Control Monitor 5"; break;

                case 20: outputConfig.Name = "Recorder 1 Source 1"; break;

                case 21: outputConfig.Name = "Recorder 1 Source 2"; break;

                case 22: outputConfig.Name = "Recorder 2 Source 1"; break;

                case 23: outputConfig.Name = "Recorder 2 Source 2"; break;

                case 24: outputConfig.Name = "Ante Space 1-L"; break;

                case 25: outputConfig.Name = "Ante Space 1-R"; break;

                case 26: outputConfig.Name = "Ante Space 2-L"; break;

                case 27: outputConfig.Name = "Ante Space 2-R"; break;

                case 28: outputConfig.Name = "Group Feed"; break;

                case 29: outputConfig.Name = ""; break;

                case 30: outputConfig.Name = ""; break;

                case 31: outputConfig.Name = ""; break;

                case 32: outputConfig.Name = ""; break;

                case 33: outputConfig.Name = "Aud 1 Video Wall + Audio"; break;

                case 34: outputConfig.Name = "Aud 2 Video Wall + Audio"; break;

                case 35: outputConfig.Name = "MPR Audio"; break;

                case 36: outputConfig.Name = "Ante Space 1 Audio"; break;

                case 37: outputConfig.Name = "Ante Space 2 Audio"; break;

                case 38: outputConfig.Name = "MPR Codec Cam 2"; break;

                case 39: outputConfig.Name = "Video Multi Mix 1-5"; break;

                case 40: outputConfig.Name = "Video Multi Mix 1-6"; break;

                case 41: outputConfig.Name = "Video Multi Mix 1-7"; break;

                case 42: outputConfig.Name = "Video Multi Mix 1-8"; break;

                case 43: outputConfig.Name = "MultiView 1"; break;

                case 44: outputConfig.Name = "MultiView 2"; break;

                case 45: outputConfig.Name = "MultiView 3"; break;

                case 46: outputConfig.Name = "MultiView 4"; break;

                case 47: outputConfig.Name = "Aud 1 Codec Cam"; break;

                case 48: outputConfig.Name = "Aud 1 Codec Content"; break;

                case 49: outputConfig.Name = "Aud 2 Codec Cam"; break;

                case 50: outputConfig.Name = "Aud 2 Codec Content"; break;

                case 51: outputConfig.Name = "MPR Codec Cam"; break;

                case 52: outputConfig.Name = "MPR Codec Content"; break;

                case 53: outputConfig.Name = "Video Multi Mix 1-1"; break;

                case 54: outputConfig.Name = "Video Multi Mix 1-2"; break;

                case 55: outputConfig.Name = "Video Multi Mix 1-3"; break;

                case 56: outputConfig.Name = "Video Multi Mix 1-4"; break;

                case 57: outputConfig.Name = "Video Multi Mix 2-1"; break;

                case 58: outputConfig.Name = "Video Multi Mix 2-2"; break;

                case 59: outputConfig.Name = "Video Multi Mix 2-3"; break;

                case 60: outputConfig.Name = "Video Multi Mix 2-4"; break;

                case 61: outputConfig.Name = "Video Multi Mix 2-5"; break;

                case 62: outputConfig.Name = "Video Multi Mix 2-6"; break;

                case 63: outputConfig.Name = "Video Multi Mix 2-7"; break;

                case 64: outputConfig.Name = "Video Multi Mix 2-8"; break;
                }

                if (outputConfig.Name.StartsWith("Aud 1"))
                {
                    outputConfig.Color = "Blue";
                }
                else if (outputConfig.Name.StartsWith("Aud 2"))
                {
                    outputConfig.Color = "Orange";
                }
                else if (outputConfig.Name.StartsWith("MPR"))
                {
                    outputConfig.Color = "Green";
                }
                else if (outputConfig.Name.StartsWith("Record"))
                {
                    outputConfig.Color = "Red";
                }
                else if (outputConfig.Name.StartsWith("Ante Space 1"))
                {
                    outputConfig.Color = "Purple";
                }
                else if (outputConfig.Name.StartsWith("Ante Space 2"))
                {
                    outputConfig.Color = "Yellow";
                }
            }

            DspConfig = new DspDeviceConfig
            {
                Enabled              = true,
                DeviceAddressString  = "30.92.1.164",
                DeviceConnectionType = DeviceConnectionType.Network,
                Username             = null,
                Password             = null,
                Name = "Q-Sys Core"
            };

            DspFaderColors = new List <FaderItemColor>
            {
                new FaderItemColor
                {
                    Name     = "Orange",
                    ColorHex = "#ff8000",
                    Priority = 80,
                },
                new FaderItemColor
                {
                    Name     = "Cyan",
                    ColorHex = "#0080FF",
                    Priority = 40,
                },
                new FaderItemColor
                {
                    Name     = "Red",
                    ColorHex = "#ff0000",
                    Priority = 3,
                },
                new FaderItemColor
                {
                    Name     = "Pink",
                    ColorHex = "#ff00ff",
                    Priority = 4,
                },
                new FaderItemColor
                {
                    Name     = "Yellow",
                    ColorHex = "#ffff00",
                    Priority = 50,
                },
                new FaderItemColor
                {
                    Name     = "Green",
                    ColorHex = "#00ff00",
                    Priority = 70,
                },
                new FaderItemColor
                {
                    Name     = "Purple",
                    ColorHex = "#8000ff",
                    Priority = 60,
                },
                new FaderItemColor
                {
                    Name     = "Blue",
                    ColorHex = "#0000ff",
                    Priority = 100,
                }
            };

            DspFaderComponents = new List <FaderItemConfig>
            {
                new FaderItemConfig
                {
                    Name          = "Aud 1 PGM Mix",
                    ComponentName = "Aud1.pgmmix.level",
                    Color         = "Blue",
                    Group         = 3,
                    MixerIndex    = 1
                },
                new FaderItemConfig
                {
                    Name          = "Aiud 1 Mic Mix",
                    ComponentName = "Aud1.srmix.level",
                    Color         = "Blue",
                    Group         = 3,
                    MixerIndex    = 2
                },
                new FaderItemConfig
                {
                    Name          = "Aud 1 Patch 1",
                    ComponentName = "Aud1.patchbay1.level",
                    Color         = "Blue",
                    Group         = 3,
                    MixerIndex    = 3
                },
                new FaderItemConfig
                {
                    Name          = "Aud 1 Patch 2",
                    ComponentName = "Aud1.patchbay2.level",
                    Color         = "Blue",
                    Group         = 3,
                    MixerIndex    = 4
                },
                new FaderItemConfig
                {
                    Name          = "Aud 2 PGM Mix",
                    ComponentName = "Aud2.pgmmix.level",
                    Color         = "Orange",
                    Group         = 3,
                    MixerIndex    = 5
                },
                new FaderItemConfig
                {
                    Name          = "Aud 2 Mic Mix",
                    ComponentName = "Aud2.srmix.level",
                    Color         = "Orange",
                    Group         = 3,
                    MixerIndex    = 6
                },
                new FaderItemConfig
                {
                    Name          = "Aud 2 Patch 1",
                    ComponentName = "Aud2.patchbay1.level",
                    Color         = "Orange",
                    Group         = 3,
                    MixerIndex    = 7
                },
                new FaderItemConfig
                {
                    Name          = "Aud 2 Patch 2",
                    ComponentName = "Aud2.patchbay2.level",
                    Color         = "Orange",
                    Group         = 3,
                    MixerIndex    = 8
                },
                new FaderItemConfig
                {
                    Name          = "MPR PGM Mic",
                    ComponentName = "Multi.pgmmix.level",
                    Color         = "Green",
                    Group         = 3,
                    MixerIndex    = 9
                },
                new FaderItemConfig
                {
                    Name          = "MPR VC Mix",
                    ComponentName = "Aud2.vcmix.level",
                    Color         = "Green",
                    Group         = 3,
                    MixerIndex    = 10
                },
                new FaderItemConfig
                {
                    Name          = "Aud 1 PGM",
                    ComponentName = "Aud1.pgm.gain",
                    Color         = "Blue",
                    Group         = 1,
                    MixerIndex    = 11
                },
                new FaderItemConfig
                {
                    Name          = "Aud 1 VC",
                    ComponentName = "Aud1.vc.gain",
                    Color         = "Blue",
                    Group         = 1,
                    MixerIndex    = 12
                },
                new FaderItemConfig
                {
                    Name          = "Aud 1 Patch 2301",
                    ComponentName = "Aud1.PatchBay.in1.gain",
                    Color         = "Cyan",
                    Group         = 1,
                    MixerIndex    = 13
                },
                new FaderItemConfig
                {
                    Name          = "Aud 1 Patch 2302",
                    ComponentName = "Aud1.PatchBay.in2.gain",
                    Color         = "Cyan",
                    Group         = 1,
                    MixerIndex    = 14
                },
                new FaderItemConfig
                {
                    Name          = "Aud 2 PGM",
                    ComponentName = "Aud2.pgm.gain",
                    Color         = "Orange",
                    Group         = 1,
                    MixerIndex    = 15
                },
                new FaderItemConfig
                {
                    Name          = "Aud 2 VC",
                    ComponentName = "Aud2.vc.gain",
                    Color         = "Orange",
                    Group         = 1,
                    MixerIndex    = 16
                },
                new FaderItemConfig
                {
                    Name          = "Aud 2 Patch 2301",
                    ComponentName = "Aud2.PatchBay.in1.gain",
                    Color         = "Cyan",
                    Group         = 1,
                    MixerIndex    = 17
                },
                new FaderItemConfig
                {
                    Name          = "Aud 2 Patch 2302",
                    ComponentName = "Aud2.PatchBay.in2.gain",
                    Color         = "Cyan",
                    Group         = 1,
                    MixerIndex    = 18
                },
                new FaderItemConfig
                {
                    Name          = "MPR PGM",
                    ComponentName = "Multi.pgm.gain",
                    Color         = "Green",
                    Group         = 1,
                    MixerIndex    = 19
                },
                new FaderItemConfig
                {
                    Name          = "MPR VC",
                    ComponentName = "Multi.vc.gain",
                    Color         = "Green",
                    Group         = 1,
                    MixerIndex    = 20
                },
                new FaderItemConfig
                {
                    Name          = "Ante 01-202 PGM",
                    ComponentName = "01.202.pgm.gain",
                    Color         = "Purple",
                    Group         = 1,
                    MixerIndex    = 21
                },
                new FaderItemConfig
                {
                    Name          = "Ante 01-266 PGM",
                    ComponentName = "01.266.pgm.gain",
                    Color         = "Yellow",
                    Group         = 1,
                    MixerIndex    = 22
                },
                new FaderItemConfig
                {
                    Name                 = "Aud 1 Handheld",
                    ComponentName        = "Aud1.hh.boost",
                    Color                = "Blue",
                    Group                = 2,
                    MixerIndex           = 23,
                    TrafficLightBaseName = "Aud1.hh"
                },
                new FaderItemConfig
                {
                    Name                 = "Aud 1 Lapel 1",
                    ComponentName        = "Aud1.lapel1.boost",
                    Color                = "Blue",
                    Group                = 2,
                    MixerIndex           = 24,
                    TrafficLightBaseName = "Aud1.lapel1"
                },
                new FaderItemConfig
                {
                    Name                 = "Aud 1 Lapel 2",
                    ComponentName        = "Aud1.lapel2.boost",
                    Color                = "Blue",
                    Group                = 2,
                    MixerIndex           = 25,
                    TrafficLightBaseName = "Aud1.lapel2"
                },
                new FaderItemConfig
                {
                    Name                 = "Aud 1 Lapel 3",
                    ComponentName        = "Aud1.lapel3.boost",
                    Color                = "Blue",
                    Group                = 2,
                    MixerIndex           = 26,
                    TrafficLightBaseName = "Aud1.lapel3"
                },
                new FaderItemConfig
                {
                    Name                 = "Aud 1 Fbox Left 1",
                    ComponentName        = "Aud1.fba1.boost",
                    Color                = "Blue",
                    Group                = 2,
                    MixerIndex           = 27,
                    TrafficLightBaseName = "Aud1.fba1"
                },
                new FaderItemConfig
                {
                    Name                 = "Aud 1 Fbox Left 2",
                    ComponentName        = "Aud1.fba2.boost",
                    Color                = "Blue",
                    Group                = 2,
                    MixerIndex           = 28,
                    TrafficLightBaseName = "Aud1.fba2"
                },
                new FaderItemConfig
                {
                    Name                 = "Aud 1 Fbox Right 1",
                    ComponentName        = "Aud1.fbb1.boost",
                    Color                = "Blue",
                    Group                = 2,
                    MixerIndex           = 29,
                    TrafficLightBaseName = "Aud1.fbb1"
                },
                new FaderItemConfig
                {
                    Name                 = "Aud 1 Fbox Right 2",
                    ComponentName        = "Aud1.fbb2.boost",
                    Color                = "Blue",
                    Group                = 2,
                    MixerIndex           = 30,
                    TrafficLightBaseName = "Aud1.fbb2"
                },
                new FaderItemConfig
                {
                    Name                 = "Aud 2 Handheld",
                    ComponentName        = "Aud2.hh.boost",
                    Color                = "Orange",
                    Group                = 2,
                    MixerIndex           = 31,
                    TrafficLightBaseName = "Aud2.hh"
                },
                new FaderItemConfig
                {
                    Name                 = "Aud 2 Lapel 1",
                    ComponentName        = "Aud2.lapel1.boost",
                    Color                = "Orange",
                    Group                = 2,
                    MixerIndex           = 32,
                    TrafficLightBaseName = "Aud2.lapel1"
                },
                new FaderItemConfig
                {
                    Name                 = "Aud 2 Lapel 2",
                    ComponentName        = "Aud2.lapel2.boost",
                    Color                = "Orange",
                    Group                = 2,
                    MixerIndex           = 33,
                    TrafficLightBaseName = "Aud2.lapel2"
                },
                new FaderItemConfig
                {
                    Name                 = "Aud 2 Lapel 3",
                    ComponentName        = "Aud2.lapel3.boost",
                    Color                = "Orange",
                    Group                = 2,
                    MixerIndex           = 34,
                    TrafficLightBaseName = "Aud2.lapel3"
                },
                new FaderItemConfig
                {
                    Name                 = "Aud 2 Fbox Left 1",
                    ComponentName        = "Aud2.fba1.boost",
                    Color                = "Orange",
                    Group                = 2,
                    MixerIndex           = 35,
                    TrafficLightBaseName = "Aud2.fba1"
                },
                new FaderItemConfig
                {
                    Name                 = "Aud 2 Fbox Left 2",
                    ComponentName        = "Aud2.fba2.boost",
                    Color                = "Orange",
                    Group                = 2,
                    MixerIndex           = 36,
                    TrafficLightBaseName = "Aud2.fba2"
                },
                new FaderItemConfig
                {
                    Name                 = "Aud 2 Fbox Right 1",
                    ComponentName        = "Aud2.fbb1.boost",
                    Color                = "Orange",
                    Group                = 2,
                    MixerIndex           = 37,
                    TrafficLightBaseName = "Aud2.fbb1"
                },
                new FaderItemConfig
                {
                    Name                 = "Aud 2 Fbox Right 2",
                    ComponentName        = "Aud2.fbb2.boost",
                    Color                = "Orange",
                    Group                = 2,
                    MixerIndex           = 38,
                    TrafficLightBaseName = "Aud2.fbb2"
                },
                new FaderItemConfig
                {
                    Name                 = "MPR Fbox 1",
                    ComponentName        = "Multi.fba1.boost",
                    Color                = "Green",
                    Group                = 2,
                    MixerIndex           = 39,
                    TrafficLightBaseName = "Multi.fba1"
                },
                new FaderItemConfig
                {
                    Name                 = "MPR Fbox 2",
                    ComponentName        = "Multi.fba2.boost",
                    Color                = "Green",
                    Group                = 2,
                    MixerIndex           = 40,
                    TrafficLightBaseName = "Multi.fba2"
                },
                new FaderItemConfig
                {
                    Name          = "Monitor Level",
                    ComponentName = "ControlRoom.level",
                    Color         = "Cyan",
                    Group         = 4,
                    MixerIndex    = 0
                },
                new FaderItemConfig
                {
                    Name          = "Ambient Mic Level",
                    ComponentName = "ambient.level",
                    Color         = "Cyan",
                    Group         = 4,
                    MixerIndex    = 41
                },
                new FaderItemConfig
                {
                    Name                 = "H/Phones 2401",
                    ComponentName        = "PatchBay.out1.level",
                    Color                = "Cyan",
                    Group                = 4,
                    MixerIndex           = 44,
                    TrafficLightBaseName = "PatchBay.out1"
                },
                new FaderItemConfig
                {
                    Name                 = "H/Phones 2402",
                    ComponentName        = "PatchBay.out2.level",
                    Color                = "Cyan",
                    Group                = 4,
                    MixerIndex           = 45,
                    TrafficLightBaseName = "PatchBay.out2"
                },
                new FaderItemConfig
                {
                    Name                 = "Flexi 2403",
                    ComponentName        = "PatchBay.out3.level",
                    Color                = "Cyan",
                    Group                = 4,
                    MixerIndex           = 46,
                    TrafficLightBaseName = "PatchBay.out3"
                },
                new FaderItemConfig
                {
                    Name                 = "Flexi 2404",
                    ComponentName        = "PatchBay.out4.level",
                    Color                = "Cyan",
                    Group                = 4,
                    MixerIndex           = 47,
                    TrafficLightBaseName = "PatchBay.out4"
                },
                new FaderItemConfig
                {
                    Name                 = "Aud 1 1Beyond",
                    ComponentName        = "Aud1.1beyond.level",
                    Color                = "Red",
                    Group                = 5,
                    MixerIndex           = 48,
                    TrafficLightBaseName = "Aud1.1beyond"
                },
                new FaderItemConfig
                {
                    Name                 = "Aud 2 1Beyond",
                    ComponentName        = "Aud2.1beyond.level",
                    Color                = "Red",
                    Group                = 5,
                    MixerIndex           = 49,
                    TrafficLightBaseName = "Aud2.1beyond"
                },
                new FaderItemConfig
                {
                    Name                 = "Extron Rec 1",
                    ComponentName        = "extron.recorder1.level",
                    Color                = "Red",
                    Group                = 5,
                    MixerIndex           = 50,
                    TrafficLightBaseName = "extron.recorder1"
                },
                new FaderItemConfig
                {
                    Name                 = "Extron Rec 2",
                    ComponentName        = "extron.recorder2.level",
                    Color                = "Red",
                    Group                = 2,
                    MixerIndex           = 51,
                    TrafficLightBaseName = "extron.recorder2"
                },
                new FaderItemConfig
                {
                    Name          = "Ante 01-202 Mix",
                    ComponentName = "Ante.202.level",
                    Color         = "Purple",
                    Group         = 3,
                    MixerIndex    = 42
                },
                new FaderItemConfig
                {
                    Name          = "Ante 01-266 Mix",
                    ComponentName = "Ante.266.level",
                    Color         = "Yellow",
                    Group         = 3,
                    MixerIndex    = 43
                },
            };

            DspFaderFilters = new List <FaderItemFilter>
            {
                new FaderItemFilter
                {
                    FilterButton = 1,
                    FilterString = "Aud 1"
                },
                new FaderItemFilter
                {
                    FilterButton = 2,
                    FilterString = "Aud 2"
                },
                new FaderItemFilter
                {
                    FilterButton = 3,
                    FilterString = "Multi"
                },
                new FaderItemFilter
                {
                    FilterButton = 4,
                    FilterString = "*"
                },
            };

            CodecAddresses = new Dictionary <uint, string>
            {
                { 1, "30.92.0.153" },
                { 2, "30.92.0.152" },
                { 3, "30.92.0.151" },
            };

            CodecUsername = "******";
            CodecPassword = "******";

            OneBeyondAddresses = new Dictionary <uint, string>
            {
                { 1, "30.92.1.186" },
                { 2, "30.92.1.187" }
            };
            OneBeyondUsername = "******";
            OneBeyondPassword = "******";
        }
        private void UpdateLists(SwitcherConfig config)
        {
            if (_config == config)
            {
                return;
            }

            _config = config;

            _inputList.ClearList(true);
            _outputList.ClearList(true);

            var inputs     = config.Inputs.ToDictionary(conf => conf, conf => AudioFadersViewController.TryGetColor(conf.Color));
            var ipConfList = inputs
                             .Where(item => item.Value != null)
                             .OrderByDescending(item => item.Value.Priority)
                             .ThenBy(item => item.Key.Name)
                             .Select(item => item.Key)
                             .ToList();

            ipConfList.AddRange(inputs.Where(item => item.Value == null).Select(item => item.Key));

            foreach (var input in ipConfList)
            {
                var item = _inputList.AddItem(_switcher.Chassis.Inputs[input.Number], true);
                if (item == null)
                {
                    continue;
                }

                try
                {
                    if (!string.IsNullOrEmpty(input.Color))
                    {
                        item.SetColourTag(AudioFadersViewController.TryGetColor(input.Color).ColorHex);
                    }
                }
                catch
                {
                    item.SetColourTag("#333333");
                }
            }

            var outputs    = config.Outputs.ToDictionary(conf => conf, conf => AudioFadersViewController.TryGetColor(conf.Color));
            var opConfList = outputs
                             .Where(item => item.Value != null)
                             .OrderByDescending(item => item.Value.Priority)
                             .ThenBy(item => item.Key.Name)
                             .Select(item => item.Key)
                             .ToList();

            opConfList.AddRange(outputs.Where(item => item.Value == null).Select(item => item.Key));

            foreach (var output in opConfList)
            {
                var item = _outputList.AddItem(_switcher.Chassis.Outputs[output.Number], true);
                if (item == null)
                {
                    continue;
                }

                try
                {
                    if (!string.IsNullOrEmpty(output.Color))
                    {
                        item.SetColourTag(AudioFadersViewController.TryGetColor(output.Color).ColorHex);
                    }
                }
                catch
                {
                    item.SetColourTag("#333333");
                }
            }

            _inputList.SetListSizeToItemCount();
            _outputList.SetListSizeToItemCount();
        }