Ejemplo n.º 1
0
        public override bool CustomActivate()
        {
            // Create EiscApis
            try {
                foreach (var device in DeviceManager.AllDevices)
                {
                    if (device.Key == this.Properties.connectionDeviceKey)
                    {
                        Debug.Console(2, "deviceKey {0} Matches", device.Key);
                        DmSwitch = DeviceManager.GetDeviceForKey(device.Key) as PepperDash.Essentials.DM.DmChassisController;
                    }


                    else
                    {
                        Debug.Console(2, "deviceKey {0} doesn't match", device.Key);
                    }
                }
                if (Properties.EiscApiIpids != null)
                {
                    foreach (string Ipid in Properties.EiscApiIpids)
                    {
                        var ApiEisc = new BridgeApiEisc(Ipid);
                        for (uint x = 1; x <= DmSwitch.Chassis.NumberOfInputs; x++)
                        {
                            uint tempX = x;
                            Debug.Console(2, "Creating EiscActions {0}", tempX);


                            ApiEisc.Eisc.SetUShortSigAction(ApiMap.OutputVideoRoutes[tempX], u => DmSwitch.ExecuteSwitch(u, tempX, eRoutingSignalType.Video));
                            ApiEisc.Eisc.SetUShortSigAction(ApiMap.OutputAudioRoutes[tempX], u => DmSwitch.ExecuteSwitch(u, tempX, eRoutingSignalType.Audio));


                            if (DmSwitch.TxDictionary.ContainsKey(tempX))
                            {
                                Debug.Console(2, "Creating Tx Feedbacks {0}", tempX);
                                var TxKey    = DmSwitch.TxDictionary[tempX];
                                var TxDevice = DeviceManager.GetDeviceForKey(TxKey) as DmTxControllerBase;
                                TxDevice.IsOnline.LinkInputSig(ApiEisc.Eisc.BooleanInput[ApiMap.TxOnlineStatus[tempX]]);
                                TxDevice.AnyVideoInput.VideoStatus.VideoSyncFeedback.LinkInputSig(ApiEisc.Eisc.BooleanInput[ApiMap.TxVideoSyncStatus[tempX]]);
                                ApiEisc.Eisc.SetUShortSigAction((ApiMap.HdcpSupport[tempX]), u => TxDevice.SetHdcpSupportAll((ePdtHdcpSupport)(u)));
                                TxDevice.HdcpSupportAllFeedback.LinkInputSig(ApiEisc.Eisc.UShortInput[ApiMap.HdcpSupport[tempX]]);
                                ApiEisc.Eisc.UShortInput[ApiMap.HdcpSupportCapability[tempX]].UShortValue = TxDevice.HdcpSupportCapability;
                            }
                            else
                            {
                                DmSwitch.VideoInputSyncFeedbacks[tempX].LinkInputSig(ApiEisc.Eisc.BooleanInput[ApiMap.TxVideoSyncStatus[tempX]]);
                            }
                            if (DmSwitch.RxDictionary.ContainsKey(tempX))
                            {
                                Debug.Console(2, "Creating Rx Feedbacks {0}", tempX);
                                var RxKey    = DmSwitch.RxDictionary[tempX];
                                var RxDevice = DeviceManager.GetDeviceForKey(RxKey) as DmRmcControllerBase;
                                RxDevice.IsOnline.LinkInputSig(ApiEisc.Eisc.BooleanInput[ApiMap.RxOnlineStatus[tempX]]);
                            }
                            // DmSwitch.InputEndpointOnlineFeedbacks[(ushort)tempOutputNum].LinkInputSig(ApiEisc.Eisc.BooleanInput[ApiMap.OutputVideoRoutes[tempOutputNum]]);
                            DmSwitch.VideoOutputFeedbacks[(ushort)tempX].LinkInputSig(ApiEisc.Eisc.UShortInput[ApiMap.OutputVideoRoutes[tempX]]);
                            DmSwitch.AudioOutputFeedbacks[(ushort)tempX].LinkInputSig(ApiEisc.Eisc.UShortInput[ApiMap.OutputAudioRoutes[tempX]]);
                            DmSwitch.InputNameFeedbacks[(ushort)tempX].LinkInputSig(ApiEisc.Eisc.StringInput[ApiMap.InputNames[tempX]]);
                            DmSwitch.OutputNameFeedbacks[(ushort)tempX].LinkInputSig(ApiEisc.Eisc.StringInput[ApiMap.OutputNames[tempX]]);
                            DmSwitch.OutputRouteNameFeedbacks[(ushort)tempX].LinkInputSig(ApiEisc.Eisc.StringInput[ApiMap.OutputRouteNames[tempX]]);
                        }
                        DmSwitch.IsOnline.LinkInputSig(ApiEisc.Eisc.BooleanInput[ApiMap.ChassisOnline]);
                        ApiEisc.Eisc.Register();
                    }
                }



                Debug.Console(2, "Name {0} Activated", this.Name);
                return(true);
            }
            catch (Exception e) {
                Debug.Console(2, "BRidge {0}", e);
                return(false);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Factory method to create a new chassis controller from config data. Limited to 8x8 right now
        /// </summary>
        public static DmChassisController GetDmChassisController(string key, string name,
                                                                 string type, DMChassisPropertiesConfig properties)
        {
            try
            {
                type = type.ToLower();
                uint ipid = properties.Control.IpIdInt;

                DmMDMnxn chassis = null;
                switch (type)
                {
                case "dmmd8x8":
                    chassis = new DmMd8x8(ipid, Global.ControlSystem);
                    break;

                case "dmmd8x8rps":
                    chassis = new DmMd8x8rps(ipid, Global.ControlSystem);
                    break;

                case "dmmd8x8cpu3":
                    chassis = new DmMd8x8Cpu3(ipid, Global.ControlSystem);
                    break;

                case "dmmd8x8cpu3rps":
                    chassis = new DmMd8x8Cpu3rps(ipid, Global.ControlSystem);
                    break;

                case "dmmd16x16":
                    chassis = new DmMd16x16(ipid, Global.ControlSystem);
                    break;

                case "dmmd16x16rps":
                    chassis = new DmMd16x16rps(ipid, Global.ControlSystem);
                    break;

                case "dmmd16x16cpu3":
                    chassis = new DmMd16x16Cpu3(ipid, Global.ControlSystem);
                    break;

                case "dmmd16x16cpu3rps":
                    chassis = new DmMd16x16Cpu3rps(ipid, Global.ControlSystem);
                    break;

                case "dmmd32x32":
                    chassis = new DmMd32x32(ipid, Global.ControlSystem);
                    break;

                case "dmmd32x32rps":
                    chassis = new DmMd32x32rps(ipid, Global.ControlSystem);
                    break;

                case "dmmd32x32cpu3":
                    chassis = new DmMd32x32Cpu3(ipid, Global.ControlSystem);
                    break;

                case "dmmd32x32cpu3rps":
                    chassis = new DmMd32x32Cpu3rps(ipid, Global.ControlSystem);
                    break;
                }

                if (chassis == null)
                {
                    return(null);
                }

                var controller = new DmChassisController(key, name, chassis);

                // add the cards and port names
                foreach (var kvp in properties.InputSlots)
                {
                    controller.AddInputCard(kvp.Value, kvp.Key);
                }

                foreach (var kvp in properties.OutputSlots)
                {
                    controller.AddOutputCard(kvp.Value, kvp.Key);
                }

                foreach (var kvp in properties.VolumeControls)
                {
                    // get the card
                    // check it for an audio-compatible type
                    // make a something-something that will make it work
                    // retire to mountain village
                    var          outNum = kvp.Key;
                    var          card   = controller.Chassis.Outputs[outNum].Card;
                    Audio.Output audio  = null;
                    if (card is DmcHdo)
                    {
                        audio = (card as DmcHdo).Audio;
                    }
                    else if (card is Dmc4kHdo)
                    {
                        audio = (card as Dmc4kHdo).Audio;
                    }
                    if (audio == null)
                    {
                        continue;
                    }

                    // wire up the audio to something here...
                    controller.AddVolumeControl(outNum, audio);
                }

                controller.InputNames  = properties.InputNames;
                controller.OutputNames = properties.OutputNames;

                if (!string.IsNullOrEmpty(properties.NoRouteText))
                {
                    controller.NoRouteText = properties.NoRouteText;
                    Debug.Console(1, controller, "Setting No Route Text value to: {0}", controller.NoRouteText);
                }
                else
                {
                    Debug.Console(1, controller, "NoRouteText not specified.  Defaulting to blank string.", controller.NoRouteText);
                }

                controller.PropertiesConfig = properties;
                return(controller);
            }
            catch (Exception e)
            {
                Debug.Console(0, "Error creating DM chassis:\r{0}", e);
            }

            return(null);
        }