public static Device CreateChassis(JToken devToken) { Device dev = null; try { var devType = devToken.Value <string>("type"); var devKey = devToken.Value <string>("key"); var devName = devToken.Value <string>("name"); // Catch all 200 series TX var devprops = devToken["properties"]; var ipId = Convert.ToUInt32(devprops.Value <string>("ipId"), 16); var parent = devprops.Value <string>("parent"); if (parent == null) { parent = "controlSystem"; } if (devType.Equals("dmmd8x8", StringComparison.OrdinalIgnoreCase)) { var dm = new DmMd8x8(ipId, Global.ControlSystem); //dev = new DmChassisController(devKey, devName, dm); } else if (devType.Equals("dmmd16x16", StringComparison.OrdinalIgnoreCase)) { var dm = new DmMd16x16(ipId, Global.ControlSystem); //dev = new DmChassisController(devKey, devName, dm); } } catch (Exception e) { FactoryHelper.HandleDeviceCreationError(devToken, e); } return(dev); }
/// <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); }