commit c87a0ed68ee94e83f05e6e419d3661e95b86939d Author: Heath Volmer Date: Wed Feb 8 10:44:35 2017 -0700 Initial move in from old repo diff --git a/IR Drivers/Cisco Explorer 4642HDC.ir b/IR Drivers/Cisco Explorer 4642HDC.ir new file mode 100644 index 00000000..982acbdd Binary files /dev/null and b/IR Drivers/Cisco Explorer 4642HDC.ir differ diff --git a/IR Drivers/Comcast Motorola DVR.ir b/IR Drivers/Comcast Motorola DVR.ir new file mode 100644 index 00000000..abe34ce2 Binary files /dev/null and b/IR Drivers/Comcast Motorola DVR.ir differ diff --git a/IR Drivers/Comcast X1.ir b/IR Drivers/Comcast X1.ir new file mode 100644 index 00000000..bff5afff Binary files /dev/null and b/IR Drivers/Comcast X1.ir differ diff --git a/IR Drivers/DirecTV H21.ir b/IR Drivers/DirecTV H21.ir new file mode 100644 index 00000000..612a9b2b Binary files /dev/null and b/IR Drivers/DirecTV H21.ir differ diff --git a/IR Drivers/EXPLORER 8200HD Full Set Pulsed.ir b/IR Drivers/EXPLORER 8200HD Full Set Pulsed.ir new file mode 100644 index 00000000..4065f48e Binary files /dev/null and b/IR Drivers/EXPLORER 8200HD Full Set Pulsed.ir differ diff --git a/IR Drivers/Etisalat Cable Box.ir b/IR Drivers/Etisalat Cable Box.ir new file mode 100644 index 00000000..c9871add Binary files /dev/null and b/IR Drivers/Etisalat Cable Box.ir differ diff --git a/IR Drivers/Etisalat e-Vision.ir b/IR Drivers/Etisalat e-Vision.ir new file mode 100644 index 00000000..1eddaa09 Binary files /dev/null and b/IR Drivers/Etisalat e-Vision.ir differ diff --git a/IR Drivers/Panasonic DMP-BD70.ir b/IR Drivers/Panasonic DMP-BD70.ir new file mode 100644 index 00000000..968f43dc Binary files /dev/null and b/IR Drivers/Panasonic DMP-BD70.ir differ diff --git a/IR Drivers/Sony BDP Series.ir b/IR Drivers/Sony BDP Series.ir new file mode 100644 index 00000000..e95344d9 Binary files /dev/null and b/IR Drivers/Sony BDP Series.ir differ diff --git a/PepperDashEssentials/PepperDashEssentials.sln b/PepperDashEssentials/PepperDashEssentials.sln new file mode 100644 index 00000000..a512f634 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PepperDashEssentials", "PepperDashEssentials\PepperDashEssentials.csproj", "{1BED5BA9-88C4-4365-9362-6F4B128071D3}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1BED5BA9-88C4-4365-9362-6F4B128071D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1BED5BA9-88C4-4365-9362-6F4B128071D3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1BED5BA9-88C4-4365-9362-6F4B128071D3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1BED5BA9-88C4-4365-9362-6F4B128071D3}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/PepperDashEssentials/PepperDashEssentials.suo b/PepperDashEssentials/PepperDashEssentials.suo new file mode 100644 index 00000000..96614471 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials.suo differ diff --git a/PepperDashEssentials/PepperDashEssentials/Config/ConfigReader.cs b/PepperDashEssentials/PepperDashEssentials/Config/ConfigReader.cs new file mode 100644 index 00000000..5d5fac98 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Config/ConfigReader.cs @@ -0,0 +1,138 @@ +using System; +using System.Linq; +using Crestron.SimplSharp; +using Crestron.SimplSharp.CrestronIO; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using PepperDash.Core; +using PepperDash.Essentials.Core.Config; + +namespace PepperDash.Essentials +{ + /// + /// Loads the ConfigObject from the file + /// + public class ConfigReader + { + public static EssentialsConfig ConfigObject { get; private set; } + + public static void LoadConfig2() + { + Debug.Console(0, "Using unmerged system/template configs."); + try + { + using (StreamReader fs = new StreamReader(string.Format(@"\NVRAM\program{0}\ConfigurationFile.json", InitialParametersClass.ApplicationNumber))) + { + var doubleObj = JObject.Parse(fs.ReadToEnd()); + ConfigObject = MergeConfigs(doubleObj).ToObject(); + } + } + catch (Exception e) + { + Debug.Console(0, "Config failed: \r{0}", e); + } + + } + + static JObject MergeConfigs(JObject doubleConfig) + { + var system = JObject.FromObject(doubleConfig["system"]); + var template = JObject.FromObject(doubleConfig["template"]); + var merged = new JObject(); + + // Put together top-level objects + if (system["info"] != null) + merged.Add("info", Merge(template["info"], system["info"])); + else + merged.Add("info", template["info"]); + + merged.Add("devices", MergeArraysOnTopLevelProperty(template["devices"] as JArray, system["devices"] as JArray, "uid")); + + if (system["rooms"] == null) + merged.Add("rooms", template["rooms"]); + else + merged.Add("rooms", MergeArraysOnTopLevelProperty(template["rooms"] as JArray, system["rooms"] as JArray, "key")); + + if (system["sourceLists"] == null) + merged.Add("sourceLists", template["sourceLists"]); + else + merged.Add("sourceLists", Merge(template["sourceLists"], system["sourceLists"])); + +#warning Make tie lines merge appropriately + if (template["tieLines"] != null) + merged.Add("tieLines", template["tieLines"]); + else if (system["tieLines"] != null) + merged.Add("tieLines", system["tieLines"]); + else + merged.Add("tieLines", new JArray()); + + Debug.Console(0, "MERGED RESULT: \x0d\x0a{0}", merged); + return merged; + } + + /// + /// Merges the contents of a base and a delta array, matching the entries on a top-level property + /// given by propertyName. Returns a merge of them. Items in the delta array that do not have + /// a matched item in base array will not be merged. + /// + static JArray MergeArraysOnTopLevelProperty(JArray a1, JArray a2, string propertyName) + { + var result = new JArray(); + if (a2 == null) + result = a1; + else if (a1 != null) + { + for (int i = 0; i < a1.Count(); i++) + { + var a1Dev = a1[i]; + // Try to get a system device and if found, merge it onto template + var a2Match = a2.FirstOrDefault(t => t[propertyName].Equals(a1Dev[propertyName]));// t.Value("uid") == tmplDev.Value("uid")); + if (a2Match != null) + { + var mergedItem = Merge(a1Dev, a2Match);// Merge(JObject.FromObject(a1Dev), JObject.FromObject(a2Match)); + result.Add(mergedItem); + } + else + result.Add(a1Dev); + } + } + return result; + } + + + /// + /// Helper for using with JTokens. Converts to JObject + /// + static JObject Merge(JToken t1, JToken t2) + { + return Merge(JObject.FromObject(t1), JObject.FromObject(t2)); + } + + /// + /// Merge b ONTO a + /// + /// + /// + static JObject Merge(JObject o1, JObject o2) + { + //Console.WriteLine("Merging {0}\ronto {1}", o2, o1); + foreach (var o2Prop in o2) + { + var o1Value = o1[o2Prop.Key]; + if (o1Value == null) + o1.Add(o2Prop.Key, o2Prop.Value); + else + { + JToken replacement = null; + if (o2Prop.Value.HasValues && o1Value.HasValues) // Drill down + replacement = Merge(JObject.FromObject(o1Value), JObject.FromObject(o2Prop.Value)); + else + replacement = o2Prop.Value; + o1[o2Prop.Key].Replace(replacement); + } + } + return o1; + } + + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/Config/DeviceFactory.cs b/PepperDashEssentials/PepperDashEssentials/Config/DeviceFactory.cs new file mode 100644 index 00000000..45ef0eac --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Config/DeviceFactory.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using Crestron.SimplSharp; +using Crestron.SimplSharp.CrestronIO; +using Crestron.SimplSharpPro; + +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using PepperDash.Core; +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.Config; + +namespace PepperDash.Essentials +{ + public class DeviceFactory + { + public static IKeyed GetDevice(DeviceConfig dc) + { + var key = dc.Key; + var name = dc.Name; + var type = dc.Type; + var properties = dc.Properties; + + var typeName = dc.Type.ToLower(); + + if (dc.Group.ToLower() == "touchpanel") // typeName.StartsWith("tsw")) + { + var comm = CommFactory.GetControlPropertiesConfig(dc); + + var props = JsonConvert.DeserializeObject( + properties.ToString()); + return new EssentialsTouchpanelController(key, name, typeName, props, comm.IpIdInt); + } + else if (typeName == "mockdisplay") + { + return new MockDisplay(key, name); + } + + // MOVE into something else??? + else if (typeName == "basicirdisplay") + { + var ir = IRPortHelper.GetIrPort(properties); + if (ir != null) + return new BasicIrDisplay(key, name, ir.Port, ir.FileName); + } + + else if (typeName == "commmock") + { + var comm = CommFactory.CreateCommForDevice(dc); + var props = JsonConvert.DeserializeObject( + properties.ToString()); + return new ConsoleCommMockDevice(key, name, props, comm); + } + + return null; + } + } +} diff --git a/PepperDashEssentials/PepperDashEssentials/Config/EssentialsConfig.cs b/PepperDashEssentials/PepperDashEssentials/Config/EssentialsConfig.cs new file mode 100644 index 00000000..de83739c --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Config/EssentialsConfig.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using Crestron.SimplSharp.CrestronIO; + +using Newtonsoft.Json; +using PepperDash.Core; +using PepperDash.Essentials.Core.Config; + +namespace PepperDash.Essentials +{ + /// + /// Loads the ConfigObject from the file + /// + public class EssentialsConfig : BasicConfig + { + [JsonProperty("rooms")] + public List Rooms { get; private set; } + } + + /// + /// + /// + public class SystemTemplateConfigs + { + public EssentialsConfig System { get; set; } + + public EssentialsConfig Template { get; set; } + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/Configuration Original/Builders/TPConfig.cs b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Builders/TPConfig.cs new file mode 100644 index 00000000..b472737f --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Builders/TPConfig.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using Crestron.SimplSharpPro; + +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.Config; + +namespace PepperDash.Essentials +{ + + public class TPConfig : DeviceConfig + { + new public TPConfigProperties Properties { get; set; } + } + + public class TPConfigProperties + { + /* + "properties": { + "ipId": "aa", + "defaultSystemKey": "system1", + "sgdPath": "\\NVRAM\\Program1\\Sgds\\PepperDash Essentials TSW1050_v0.9.sgd", + "usesSplashPage": true, + "showDate": true, + "showTime": false + } + */ + public uint IpId { get; set; } + public string deafultSystemKey { get; set; } + public string SgdPath { get; set; } + public bool UsesSplashPage { get; set; } + public bool ShowDate { get; set; } + public bool ShowTime { get; set; } + + } + + + + + /// + /// The gist of this converter: The comspec JSON comes in with normal values that need to be converted + /// into enum names. This converter takes the value and applies the appropriate enum's name prefix to the value + /// and then returns the enum value using Enum.Parse + /// + public class TPPropertiesConverter : JsonConverter + { + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + return JObject.Load(reader); + } + + /// + /// This will be hit with every value in the ComPortConfig class. We only need to + /// do custom conversion on the comspec items. + /// + public override bool CanConvert(Type objectType) + { + return true; + } + + public override bool CanRead { get { return true; } } + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/Configuration Original/ConfigTieLine.cs b/PepperDashEssentials/PepperDashEssentials/Configuration Original/ConfigTieLine.cs new file mode 100644 index 00000000..fabdd409 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Configuration Original/ConfigTieLine.cs @@ -0,0 +1,82 @@ +using System.Linq; +using Newtonsoft.Json; + +using PepperDash.Essentials.Core; +using PepperDash.Core; + +namespace PepperDash.Essentials +{ + public class ConfigTieLine + { + [JsonProperty(Required=Required.Always)] + public string SourceDeviceKey { get; set; } + + [JsonProperty(Required = Required.Always)] + public string SourcePortKey { get; set; } + + [JsonProperty(Required = Required.Always)] + public string DestinationDeviceKey { get; set; } + + [JsonProperty(Required = Required.Always)] + public string DestinationPortKey { get; set; } + + public override string ToString() + { + return string.Format("Tie line: [{0}]{1} --> [{2}]{3}", SourceDeviceKey, SourcePortKey, DestinationDeviceKey, DestinationPortKey); + } + + /// + /// Returns a tie line if one can be constructed between the two devices and ports + /// + /// TieLine or null if devices or ports don't exist + public TieLine GetTieLine() + { + var sourceDevice = (IRoutingOutputs)DeviceManager.GetDeviceForKey(SourceDeviceKey); + var destinationDevice = (IRoutingInputs)DeviceManager.GetDeviceForKey(DestinationDeviceKey); + + if (sourceDevice == null) + { + Debug.Console(0, " Cannot create TieLine. Source device '{0}' not found or does not have outputs", + SourceDeviceKey); + return null; + } + else if (destinationDevice == null) + { + Debug.Console(0, " Cannot create TieLine. Destination device '{0}' not found or does not have inputs", + DestinationDeviceKey); + return null; + } + else + { + // Get the ports by key name from the lists + RoutingOutputPort sourcePort = sourceDevice.OutputPorts.FirstOrDefault( + p => p.Key.Equals(SourcePortKey, System.StringComparison.OrdinalIgnoreCase)); + //RoutingOutputPort sourcePort = null; + //sourceDevice.OutputPorts.TryGetValue(SourcePortKey, out sourcePort); + if (sourcePort == null) + { + Debug.Console(0, " Cannot create TieLine {0}-->{1}. Source device does not have output port '{2}'", + sourceDevice.Key, destinationDevice.Key, SourcePortKey); + return null; + } + + RoutingInputPort destinationPort = destinationDevice.InputPorts.FirstOrDefault( + p => p.Key.Equals(DestinationPortKey, System.StringComparison.OrdinalIgnoreCase)); + //RoutingInputPort destinationPort = null; + //destinationDevice.InputPorts.TryGetValue(DestinationPortKey, out destinationPort); + if (destinationPort == null) + { + Debug.Console(0, " Cannot create TieLine {0}-->{1}. Destination device does not have input port '{2}'", + sourceDevice.Key, destinationDevice.Key, DestinationPortKey); + return null; + } + + var tl = new TieLine(sourcePort, destinationPort); + Debug.Console(1, " Created {0}", this); + return tl; + } + } + + } + +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/Configuration Original/Configuration.cs b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Configuration.cs new file mode 100644 index 00000000..1f29ce18 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Configuration.cs @@ -0,0 +1,287 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Crestron.SimplSharp; +using Crestron.SimplSharp.CrestronIO; +using Crestron.SimplSharpPro; +using Crestron.SimplSharpPro.DeviceSupport; +using Crestron.SimplSharpPro.CrestronThread; +using Crestron.SimplSharpPro.Diagnostics; +using Crestron.SimplSharpPro.EthernetCommunication; +using Crestron.SimplSharpPro.UI; + +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Devices; +//using PepperDash.Essentials.Core.Devices.Dm; +//using PepperDash.Essentials.Fusion; +using PepperDash.Core; + +namespace PepperDash.Essentials +{ + public static class Configuration + { + + public static string LastPath { get; private set; } + public static CrestronControlSystem ControlSystem { get; private set; } + + public static void Initialize(CrestronControlSystem cs) + { + CrestronConsole.AddNewConsoleCommand(ReloadFromConsole, "configreload", "Reloads configuration file", + ConsoleAccessLevelEnum.AccessOperator); + ControlSystem = cs; + } + + public static bool ReadConfiguration(string filePath) + { + try + { + // Read file + if (File.Exists(filePath)) + { + LastPath = filePath; + string json = File.ReadToEnd(filePath, System.Text.Encoding.ASCII); + JObject jo = JObject.Parse(json); + + var info = JsonConvert.DeserializeObject(jo["info"].ToString()); + Debug.Console(0, "\r[Config] file read:"); + Debug.Console(0, " File: {0}", filePath); + Debug.Console(0, " Name: {0}", info.Name); + Debug.Console(0, " Type: {0}", info.SystemTemplateType); + Debug.Console(0, " Date: {0}", info.EditDate); + Debug.Console(0, " ConfigVersion: {0}", info.Version); + Debug.Console(0, " EditedBy: {0}", info.EditedBy); + Debug.Console(0, " Comment: {0}\r", info.Comment); + + // Get the main config object + var jConfig = jo["configuration"]; + + // Devices + var jDevices = (JArray)jConfig["devices"]; + CreateDevices(jDevices); + + // TieLines + var jRouting = jConfig["routing"]; + CreateRouting(jRouting); + + /// Parse the available source list(s) + var jSourceLists = (JArray)jConfig["sourceLists"]; + var jSourceListJson = jSourceLists.ToString(); + List sourceLists = JsonConvert.DeserializeObject>(jSourceListJson); + + // System + var jSystems = (JArray)jConfig["systems"]; + CreateSystems(jSystems, sourceLists); + + // Activate everything + DeviceManager.ActivateAll(); + } + else + { + Debug.Console(0, "[Config] file not found '{0}'", filePath); + return false; + } + } + catch (Exception e) + { + Debug.Console(0, "Configuration read error: \r {0}", e); + return false; + } + + return true; + } + + static void CreateDevices(JArray jDevices) + { + //Debug.Console(0, " Creating {0} devices", jDevices.Count); + //for (int i = 0; i < jDevices.Count; i++) + //{ + // var jDev = jDevices[i]; + + // //var devConfig = JsonConvert.DeserializeObject(jDev.ToString()); + // //Debug.Console(0, "++++++++++++{0}", devConfig); + + + // var group = jDev["group"].Value(); + // Debug.Console(0, " [{0}], creating {1}:{2}", jDev["key"].Value(), + // group, jDev["type"].Value()); + + // Device dev = null; + // if (group.Equals("Display", StringComparison.OrdinalIgnoreCase)) + // dev = DisplayFactory.CreateDisplay(jDev); + // else if (group.Equals("DeviceMonitor", StringComparison.OrdinalIgnoreCase)) + // dev = DeviceManagerFactory.Create(jDev); + // //else if (group.Equals("Pc", StringComparison.OrdinalIgnoreCase)) + // // dev = PcFactory.Create(jDev); + // //else if (group.Equals("SetTopBox", StringComparison.OrdinalIgnoreCase)) + // // dev = SetTopBoxFactory.Create(jDev); + // //else if (group.Equals("DiscPlayer", StringComparison.OrdinalIgnoreCase)) + // // dev = DiscPlayerFactory.Create(jDev); + // //else if (group.Equals("Touchpanel", StringComparison.OrdinalIgnoreCase)) + // // dev = TouchpanelFactory.Create(jDev); + // else if (group.Equals("dmEndpoint", StringComparison.OrdinalIgnoreCase)) // Add Transmitter and Receiver + // dev = DmFactory.Create(jDev); + // else if (group.Equals("dmChassic", StringComparison.OrdinalIgnoreCase)) + // dev = DmFactory.CreateChassis(jDev); + // else if (group.Equals("processor", StringComparison.OrdinalIgnoreCase)) + // continue; // ignore it. Has no value right now. + // //else if (group.Equals("remote", StringComparison.OrdinalIgnoreCase)) + // // dev = RemoteFactory.Create(jDev); + // else + // { + // Debug.Console(0, " ERROR: Device [{0}] has unknown Group '{1}'. Skipping", + // jDev["key"].Value(), group); + // continue; + // } + + // if (dev != null) + // DeviceManager.AddDevice(dev); + // else + // Debug.Console(0, " ERROR: failed to create device {0}", + // jDev["key"].Value()); + //} + } + + static void CreateSystems(JArray jSystems, List sourceLists) + { +// // assuming one system +// var jSystem = jSystems[0]; +// var name = jSystem.Value("name"); +// var key = FactoryHelper.KeyOrConvertName(jSystem.Value("key"), name); + +// if (jSystem.Value("type").Equals("EssentialsHuddleSpace", StringComparison.OrdinalIgnoreCase)) +// { +// var sys = new HuddleSpaceRoom(key, name); +// var props = jSystem["properties"]; +// var displayKey = props["displayKey"].Value(); +// if (displayKey != null) +// sys.DefaultDisplay = (DisplayBase)DeviceManager.GetDeviceForKey(displayKey); + +// // Add sources from passed in config list +// var myList = sourceLists.FirstOrDefault( +// l => l.Key.Equals(props.Value("sourceListKey"), StringComparison.OrdinalIgnoreCase)); +// if (myList != null) +// AddSourcesToSystem(sys, myList); + +// DeviceManager.AddDevice(sys); + +// //spin up a fusion thing too +//#warning add this fusion connector back in later +// //DeviceManager.AddDevice(new EssentialsHuddleSpaceFusionSystemController(sys, 0xf1)); + //} + } + + static void AddSourcesToSystem(Room system, ConfigSourceList configList) + { + //foreach (var configItem in configList.PresentationSources) + //{ + // var src = (IPresentationSource)DeviceManager.GetDeviceForKey(configItem.SourceKey); + // if (src != null) + // system.Sources.Add(configItem.Number, src); + // else + // Debug.Console(0, system, "cannot find source '{0}' from list {1}", + // configItem.SourceKey, configList.Name); + //} + } + + /// + /// Links up routing, creates tie lines + /// + /// The "Routing" JArray from configuration + static void CreateRouting(JToken jRouting) + { + var jsonTieLines = jRouting["tieLines"].ToString(); + var tieLineConfigs = JsonConvert.DeserializeObject>(jsonTieLines); + foreach (var c in tieLineConfigs) + { + var tl = c.GetTieLine(); + if (tl != null) + TieLineCollection.Default.Add(tl); + } + } + + + /// + /// Returns the IIROutputPorts device (control system, etc) that contains a given IR port + /// + /// + static IROutputPort GetIrPort(JToken propsToken) + { + var portDevName = propsToken.Value("IrPortDevice"); + var portNum = propsToken.Value("IrPortNumber"); + if (portDevName.Equals("controlSystem", StringComparison.OrdinalIgnoreCase)) + { + IIROutputPorts irDev = ControlSystem; + if (portNum <= irDev.NumberOfIROutputPorts) + return ControlSystem.IROutputPorts[portNum]; + else + Debug.Console(0, "[Config] ERROR: IR Port {0} out of range. Range 0-{1} on {2}", portNum, + ControlSystem.IROutputPorts.Count, irDev.ToString()); + } + return null; + } + + static void HandleUnknownType(JToken devToken, string type) + { + Debug.Console(0, "[Config] ERROR: Type '{0}' not found in group '{1}'", type, + devToken.Value("Group")); + } + + static void HandleDeviceCreationError(JToken devToken, Exception e) + { + Debug.Console(0, "[Config] ERROR creating device [{0}]: \r{1}", + devToken["Key"].Value(), e); + } + + /// + /// Console helper to reload + /// + static void ReloadFromConsole(string s) + { + // Gotta tear down everything first! + + if (!string.IsNullOrEmpty(LastPath)) + { + ReadConfiguration(LastPath); + } + } + } + + public class ConfigSourceList + { + [JsonProperty(Required = Required.Always)] + public string Key { get; set; } + + [JsonProperty(Required = Required.Always)] + public string Name { get; set; } + + [JsonProperty(Required = Required.Always)] + public List PresentationSources { get; set; } + + } + + public class ConfigSourceItem + { + [JsonProperty(Required = Required.Always)] + public uint Number { get; set; } + + [JsonProperty(Required = Required.Always)] + public string SourceKey { get; set; } + + public string AlternateName { get; set; } + } + + public class ConfigInfo + { + public string SystemTemplateType { get; set; } + public string ProcessorType { get; set; } + public string Name { get; set; } + public uint ProgramSlotNumber { get; set; } + public string Version { get; set; } + public string EditedBy { get; set; } + public string EditDate { get; set; } + public string Comment { get; set; } + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/Configuration Original/ConfigurationHelpers.cs b/PepperDashEssentials/PepperDashEssentials/Configuration Original/ConfigurationHelpers.cs new file mode 100644 index 00000000..c5dd4c65 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Configuration Original/ConfigurationHelpers.cs @@ -0,0 +1,20 @@ +using Newtonsoft.Json; + +namespace PepperDash.Essentials +{ + public class SourceListConfigProperties + { + [JsonProperty(Required= Required.Always)] + public uint Number { get; set; } + [JsonProperty(Required= Required.Always)] + public string SourceKey { get; set; } + public string AltName { get; set; } + public string AltIcon { get; set; } + + public SourceListConfigProperties() + { + AltName = ""; + AltIcon = ""; + } + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/CommFactory.cs b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/CommFactory.cs new file mode 100644 index 00000000..a1b23a4e --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/CommFactory.cs @@ -0,0 +1,54 @@ +//using System; +//using Crestron.SimplSharpPro; + +//using Newtonsoft.Json; +//using Newtonsoft.Json.Linq; + +//using PepperDash.Essentials.Core; +//using PepperDash.Essentials.Devices; +//using PepperDash.Core; + +//namespace PepperDash.Essentials +//{ +// public class CommFactory +// { +// public static IBasicCommunication CreateCommForDevice(JToken devToken) +// { +// var devKey = devToken.Value("key"); +// IBasicCommunication comm = null; +// try +// { +// var control = devToken["properties"]["control"]; +// var commMethod = control["method"].Value(); +// if (commMethod == "com") +// { +// var comConfig = JsonConvert.DeserializeObject( +// control["comParams"].ToString(), +// new JsonSerializerSettings +// { +// // Needs ObjectCreationHandling to make the ComSpec struct populate +// ObjectCreationHandling = ObjectCreationHandling.Replace, +// Converters = new JsonConverter[] { new ComSpecJsonConverter() } +// }); +// comm = new ComPortController(devKey + "-com", comConfig.GetComPort(), comConfig.ComSpec); +// } +// else if (commMethod == "tcpIp") +// { +// var tcpConfig = JsonConvert.DeserializeObject(control["tcpParams"].ToString()); +// comm = new GenericTcpIpClient(devKey + "-tcp", tcpConfig.Address, tcpConfig.Port, tcpConfig.BufferSize); +// } +// } +// catch (Exception e) +// { +// Debug.Console(0, "Cannot create communication from JSON:\r{0}\r\rException:\r{1}", devToken.ToString(), e); +// } + +// // put it in the device manager if it's the right flavor +// var comDev = comm as Device; +// if (comDev != null) +// DeviceManager.AddDevice(comDev); + +// return comm; +// } +// } +//} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/DeviceMonitorFactory.cs b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/DeviceMonitorFactory.cs new file mode 100644 index 00000000..fca42458 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/DeviceMonitorFactory.cs @@ -0,0 +1,38 @@ +//using System; +//using Crestron.SimplSharpPro; + +//using Newtonsoft.Json.Linq; + +//using PepperDash.Essentials.Core; +//using PepperDash.Essentials.Core.Devices; +//using PepperDash.Core; + +//namespace PepperDash.Essentials +//{ +// public class DeviceManagerFactory +// { +// public static Device Create(JToken devToken) +// { +// Device dev = null; +// try +// { +// var devType = devToken.Value("type"); +// var devKey = devToken.Value("key"); +// var devName = devToken.Value("name"); +// if (devType.Equals("DeviceMonitor", StringComparison.OrdinalIgnoreCase)) +// { +// var comm = CommFactory.CreateCommForDevice(devToken); +// if (comm == null) return null; +// dev = new GenericCommunicationMonitoredDevice(devKey, devName, comm, devToken["properties"]["pollString"].Value()); +// } +// else +// FactoryHelper.HandleUnknownType(devToken, devType); +// } +// catch (Exception e) +// { +// FactoryHelper.HandleDeviceCreationError(devToken, e); +// } +// return dev; +// } +// } +//} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/DisplayFactory.cs b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/DisplayFactory.cs new file mode 100644 index 00000000..4b226662 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/DisplayFactory.cs @@ -0,0 +1,122 @@ +//using System; +//using System.Collections.Generic; +//using System.Linq; +//using System.Text; +//using Crestron.SimplSharp; + +//using Newtonsoft.Json; +//using Newtonsoft.Json.Linq; + +//using PepperDash.Essentials.Core; +//using PepperDash.Essentials.Devices; +//using PepperDash.Essentials.Displays; +//using PepperDash.Core; + +//namespace PepperDash.Essentials +//{ +// public class DisplayFactory +// { +// public static DisplayBase CreateDisplay(JToken devToken) +// { +// DisplayBase dev = null; +// try +// { +// var devType = devToken.Value("type"); +// var devKey = devToken.Value("key"); +// var devName = devToken.Value("name"); +// var properties = devToken["properties"]; + +// if (devType.Equals("MockDisplay", StringComparison.OrdinalIgnoreCase)) +// dev = new MockDisplay(devKey, devName); + +// else if (devType.Equals("NecMPSX", StringComparison.OrdinalIgnoreCase)) +// { +// var comm = CommFactory.CreateCommForDevice(devToken); +// if (comm == null) return null; +// dev = new NecPSXMDisplayCom(devKey, devName, comm); + + + +// //var commMethod = properties["control"]["method"].Value(); + +// //// Helper-ize this? +// //if(commMethod == "com") +// //{ +// // // Move some of this up above??? +// // var comConfig = JsonConvert.DeserializeObject( +// // properties["control"]["comParams"].ToString(), +// // new JsonSerializerSettings { +// // // Needs ObjectCreationHandling to make the ComSpec struct populate +// // ObjectCreationHandling = ObjectCreationHandling.Replace, +// // Converters = new JsonConverter[] { new ComSpecJsonConverter() } +// // }); +// // dev = new NecPSXMDisplayCom(devKey, devName, comConfig.GetComPort(), comConfig.ComSpec); +// //} +// //else if (commMethod == "tcpIp") +// //{ +// // var spec = properties["control"]["tcpSpec"]; +// // var host = spec["address"].Value(); +// // var port = spec["port"].Value(); +// // dev = new NecPSXMDisplayCom(devKey, devName, host, port); +// //} + + + +// } + +// else if (devType.Equals("NecNpPa550", StringComparison.OrdinalIgnoreCase)) +// { +// var proj = new NecPaSeriesProjector(devKey, devName); +// var comm = CreateCommunicationFromPropertiesToken( +// devKey + "-comm", properties, 3000); +// proj.CommunicationMethod = comm; +// dev = proj; +// } +// else +// FactoryHelper.HandleUnknownType(devToken, devType); +// } +// catch (Exception e) +// { +// FactoryHelper.HandleDeviceCreationError(devToken, e); +// } +// return dev; +// } + +// public static IBasicCommunication CreateCommunicationFromPropertiesToken( +// string commKey, JToken properties, int bufferSize) +// { +// Debug.Console(2, "Building port from: {0}", properties.ToString()); + +// var tcpToken = properties["TcpIp"]; +// if (tcpToken != null) +// { +// // Convert the Tcp property +// var spec = JsonConvert.DeserializeObject(tcpToken.ToString()); + +// var tcp = new GenericTcpIpClient(commKey, spec.Address, spec.Port, bufferSize); +// DeviceManager.AddDevice(tcp); +// return tcp; +// } + +// var com = properties["Com"]; +// if (com != null) +// { +// // Make the interim config object +// var comConfig = JsonConvert.DeserializeObject(com.ToString(), +// new JsonSerializerSettings { ObjectCreationHandling = ObjectCreationHandling.Replace }); + +// // Get the IComPorts hardware device from the Device or Control System +// var comDev = comConfig.GetIComPortsDeviceFromManagedDevice(); +// if (comDev != null) +// { +// var controller = new ComPortController(commKey, comDev.ComPorts[comConfig.ComPortNumber], comConfig.ComSpec); +// DeviceManager.AddDevice(controller); +// return controller; +// } +// } +// Debug.Console(0, "No Tcp or Com port information for port {0}", commKey); +// return null; +// } + +// } +//} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/DmFactory.cs b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/DmFactory.cs new file mode 100644 index 00000000..646cf1f3 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/DmFactory.cs @@ -0,0 +1,91 @@ +using System; +using Crestron.SimplSharpPro; +using Crestron.SimplSharpPro.DM; +using Crestron.SimplSharpPro.DM.Endpoints.Receivers; +using Crestron.SimplSharpPro.DM.Endpoints.Transmitters; + +using Newtonsoft.Json.Linq; + +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Devices; +//using PepperDash.Essentials.Devices.Dm; +using PepperDash.Core; + +namespace PepperDash.Essentials +{ + public class DmFactory + { + public static Device Create(JToken devToken) + { + Device dev = null; + try + { + var devType = devToken.Value("type"); + var devKey = devToken.Value("key"); + var devName = devToken.Value("name"); + // Catch all 200 series TX + var devprops = devToken["properties"]; + var ipId = Convert.ToUInt32(devprops.Value("ipId"), 16); + var parent = devprops.Value("parent"); + if (parent == null) + parent = "controlSystem"; + + if (devType.StartsWith("DmTx2", StringComparison.OrdinalIgnoreCase)) + { + DmTx201C tx; + if (parent.Equals("controlSystem", StringComparison.OrdinalIgnoreCase)) + { + tx = new DmTx201C(ipId, Global.ControlSystem); + //dev = new DmTx201SBasicController(devKey, devName, tx); + } + + } + else if (devType.StartsWith("DmRmc", StringComparison.OrdinalIgnoreCase)) + { + DmRmc100C rmc; + if (parent.Equals("controlSystem", StringComparison.OrdinalIgnoreCase)) + { + rmc = new DmRmc100C(ipId, Global.ControlSystem); + //dev = new DmRmcBaseController(devKey, devName, rmc); + } + } + else + FactoryHelper.HandleUnknownType(devToken, devType); + } + catch (Exception e) + { + FactoryHelper.HandleDeviceCreationError(devToken, e); + } + return dev; + } + + + public static Device CreateChassis(JToken devToken) + { + Device dev = null; + try + { + var devType = devToken.Value("type"); + var devKey = devToken.Value("key"); + var devName = devToken.Value("name"); + // Catch all 200 series TX + var devprops = devToken["properties"]; + var ipId = Convert.ToUInt32(devprops.Value("ipId"), 16); + var parent = devprops.Value("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); + } + } + catch (Exception e) + { + FactoryHelper.HandleDeviceCreationError(devToken, e); + } + return dev; + } + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/FactoryHelper.cs b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/FactoryHelper.cs new file mode 100644 index 00000000..d7c314e9 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/FactoryHelper.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using Crestron.SimplSharpPro; + +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Devices; +using PepperDash.Core; + +namespace PepperDash.Essentials +{ + public static class FactoryHelper + { + public static string IrDriverPathPrefix = @"\NVRAM\IR\"; + + public static void HandleUnknownType(JToken devToken, string type) + { + Debug.Console(0, "[Config] ERROR: Type '{0}' not found in group '{1}'", type, + devToken.Value("group")); + } + + public static void HandleDeviceCreationError(JToken devToken, Exception e) + { + Debug.Console(0, "[Config] ERROR creating device [{0}]: \r{1}", + devToken["key"].Value(), e); + Debug.Console(0, "Relevant config:\r{0}", devToken.ToString(Newtonsoft.Json.Formatting.Indented)); + } + + /// + /// Finds either the ControlSystem or a device controller that contains IR ports and + /// returns a port from the hardware device + /// + /// + /// Crestron IrPort or null if device doesn't have IR or is not found + public static IrOutPortConfig GetIrPort(JToken propsToken) + { + var irSpec = propsToken["control"]["irSpec"]; + var portDevKey = irSpec.Value("portDeviceKey"); + var portNum = irSpec.Value("portNumber"); + IIROutputPorts irDev = null; + if (portDevKey.Equals("controlSystem", StringComparison.OrdinalIgnoreCase) + || portDevKey.Equals("processor", StringComparison.OrdinalIgnoreCase)) + irDev = Global.ControlSystem; + else + irDev = DeviceManager.GetDeviceForKey(portDevKey) as IIROutputPorts; + + if (irDev == null) + { + Debug.Console(0, "[Config] Error, device with IR ports '{0}' not found", portDevKey); + return null; + } + + if (portNum <= irDev.NumberOfIROutputPorts) // success! + { + var file = IrDriverPathPrefix + irSpec["file"].Value(); + return new IrOutPortConfig { Port = irDev.IROutputPorts[portNum], FileName = file }; + } + else + { + Debug.Console(0, "[Config] Error, device '{0}' IR port {1} out of range", + portDevKey, portNum); + return null; + } + } + + + /// + /// Finds either the ControlSystem or a device controller that contains com ports and + /// returns a port from the hardware device + /// + /// The Properties token from the device's config + /// Crestron ComPort or null if device doesn't have IR or is not found + public static ComPort GetComPort(JToken propsToken) + { + var portDevKey = propsToken.Value("comPortDevice"); + var portNum = propsToken.Value("comPortNumber"); + IComPorts comDev = null; + if (portDevKey.Equals("controlSystem", StringComparison.OrdinalIgnoreCase)) + comDev = Global.ControlSystem; + else + comDev = DeviceManager.GetDeviceForKey(portDevKey) as IComPorts; + + if (comDev == null) + { + Debug.Console(0, "[Config] Error, device with com ports '{0}' not found", portDevKey); + return null; + } + + if (portNum <= comDev.NumberOfComPorts) // success! + return comDev.ComPorts[portNum]; + else + { + Debug.Console(0, "[Config] Error, device '{0}' com port {1} out of range", + portDevKey, portNum); + return null; + } + } + + /// + /// Returns the key if it exists or converts the name into a key + /// + public static string KeyOrConvertName(string key, string name) + { + if (string.IsNullOrEmpty(key)) + return name.Replace(' ', '-'); + return key; + } + } + + /// + /// Wrapper to help in IR port creation + /// + public class IrOutPortConfig + { + public IROutputPort Port { get; set; } + public string FileName { get; set; } + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/MAYBE SetTopBoxFactory.cs b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/MAYBE SetTopBoxFactory.cs new file mode 100644 index 00000000..d3345762 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/MAYBE SetTopBoxFactory.cs @@ -0,0 +1,52 @@ +//using System; +//using Crestron.SimplSharpPro; + +//using Newtonsoft.Json.Linq; + +//using PepperDash.Essentials.Core; +//using PepperDash.Essentials.Devices; + +//using PepperDash.Core; + +//namespace PepperDash.Essentials +//{ +// public class SetTopBoxFactory +// { +// public static Device Create(JToken devToken) +// { +// Device dev = null; +// try +// { +// var devType = devToken.Value("type"); +// var devKey = devToken.Value("key"); +// var devName = devToken.Value("name"); +// var props = devToken["properties"]; +// var portConfig = FactoryHelper.GetIrPort(props); +// if (portConfig != null) +// { +// if (devType.EndsWith("-generic")) +// { +// var stb = new IrSetTopBoxBase(devKey, devName, portConfig.Port, portConfig.FileName); +// // Do this a better way? +// stb.HasDpad = props["hasDpad"].Value(); +// stb.HasDvr = props["hasDvr"].Value(); +// stb.HasNumbers = props["hasNumbers"].Value(); +// stb.HasPreset = props["hasPresets"].Value(); +// dev = stb; +// } +// else +// FactoryHelper.HandleUnknownType(devToken, devType); + +// var preDev = dev as IHasSetTopBoxProperties; +// if(preDev.HasPreset) +// preDev.LoadPresets(props["presetListName"].Value()); +// } +// } +// catch (Exception e) +// { +// FactoryHelper.HandleDeviceCreationError(devToken, e); +// } +// return dev; +// } +// } +//} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/PcFactory.cs b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/PcFactory.cs new file mode 100644 index 00000000..c8413321 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/PcFactory.cs @@ -0,0 +1,34 @@ +//using System; +//using Crestron.SimplSharpPro; + +//using Newtonsoft.Json.Linq; + +//using PepperDash.Essentials.Core; +//using PepperDash.Essentials.Devices; +//using PepperDash.Core; + +//namespace PepperDash.Essentials +//{ +// public class PcFactory +// { +// public static Device Create(JToken devToken) +// { +// Device dev = null; +// //try +// //{ +// // var devType = devToken.Value("type"); +// // var devKey = devToken.Value("key"); +// // var devName = devToken.Value("name"); +// // if (devType.Equals("laptop", StringComparison.OrdinalIgnoreCase)) +// // dev = new Laptop(devKey, devName); +// // else +// // FactoryHelper.HandleUnknownType(devToken, devType); +// //} +// //catch (Exception e) +// //{ +// // FactoryHelper.HandleDeviceCreationError(devToken, e); +// //} +// return dev; +// } +// } +//} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/REMOVE DiscPlayerFactory.cs b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/REMOVE DiscPlayerFactory.cs new file mode 100644 index 00000000..d19dc0c7 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/REMOVE DiscPlayerFactory.cs @@ -0,0 +1,46 @@ +//using System; +//using Crestron.SimplSharpPro; + +//using Newtonsoft.Json.Linq; + +//using PepperDash.Essentials.Core; +//using PepperDash.Essentials.Devices; +//using PepperDash.Core; + +//namespace PepperDash.Essentials +//{ +// public class DiscPlayerFactory +// { +// public static Device Create(JToken devToken) +// { +// Device dev = null; +// try +// { +// var devType = devToken.Value("type"); +// var devKey = devToken.Value("key"); +// var devName = devToken.Value("name"); + +// // Filter out special (Pioneer +// //(devType.Equals("genericIr", StringComparison.OrdinalIgnoreCase)) + +// var props = devToken["properties"]; +// var portConfig = FactoryHelper.GetIrPort(props); +// if (portConfig != null) +// { +// if (devType.EndsWith("-generic")) +// dev = new IrDvdBase(devKey, devName, portConfig.Port, portConfig.FileName); +// else +// FactoryHelper.HandleUnknownType(devToken, devType); +// } + +// // NO PORT ERROR HERE?? + +// } +// catch (Exception e) +// { +// FactoryHelper.HandleDeviceCreationError(devToken, e); +// } +// return dev; +// } +// } +//} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/RemoteFactory.cs b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/RemoteFactory.cs new file mode 100644 index 00000000..c28d1da7 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/RemoteFactory.cs @@ -0,0 +1,127 @@ +//using System; +//using System.Collections.Generic; +//using Crestron.SimplSharpPro; +//using Crestron.SimplSharpPro.Remotes; +//using Crestron.SimplSharpPro.UI; +//using Newtonsoft.Json; +//using Newtonsoft.Json.Linq; + +//using PepperDash.Essentials.Core; +//using PepperDash.Essentials.Devices; +////using PepperDash.Essentials.Remotes; +//using PepperDash.Core; + +//namespace PepperDash.Essentials +//{ +// //public class RemoteFactory +// //{ +// // public static Device Create(JToken devToken) +// // { +// // Hr150Controller dev = null; +// // try +// // { +// // var devType = devToken.Value("type"); +// // var devKey = devToken.Value("key"); +// // var devName = devToken.Value("name"); +// // var props = devToken["properties"]; + +// // if (devType.Equals("hr150", StringComparison.OrdinalIgnoreCase)) +// // { +// // uint id = Convert.ToUInt32(props.Value("rfId"), 16); +// // var parent = props.Value("rfGateway"); +// // RFExGateway rf = GetGateway(parent); + +// // var hw = new Hr150(id, rf); +// // dev = new Hr150Controller(devKey, devName, hw); + +// // // Have to add the buttons and default source after all devices are spun up +// // dev.AddPostActivationAction(() => +// // { +// // var defaultSystemKey = props.Value("defaultSystemKey"); +// // dev.SetCurrentRoom((EssentialsRoom)DeviceManager.GetDeviceForKey(defaultSystemKey)); + +// // // Link custom buttons +// // var buttonProps = JsonConvert.DeserializeObject>(props["buttons"].ToString()); +// // foreach (var kvp in buttonProps) +// // { +// // var split = kvp.Value.Split(':'); +// // if (split[0].Equals("source")) +// // { +// // var src = DeviceManager.GetDeviceForKey(split[1]) as IPresentationSource; +// // if (src == null) +// // { +// // Debug.Console(0, dev, "Error: Cannot add source key '{0}'", split[1]); +// // continue; +// // } +// // dev.SetCustomButtonAsSource(kvp.Key, src); +// // } +// // else if (split[0] == "room") +// // { +// // if (split[1] == "off") +// // dev.SetCustomButtonAsRoomOff(kvp.Key); +// // } +// // } +// // }); +// // } +// // else if (devType.Equals("tsr302", StringComparison.OrdinalIgnoreCase)) +// // { +// // uint id = Convert.ToUInt32(props.Value("rfId"), 16); +// // var parent = props.Value("rfGateway"); +// // RFExGateway rf = GetGateway(parent); +// // var sgd = props.Value("sgdPath"); + +// // var hw = new Tsr302(id, rf); + +// // //dev = new Hr150Controller(devKey, devName, hw); + +// // //// Have to add the buttons and default source after all devices are spun up +// // //dev.AddPostActivationAction(() => +// // //{ +// // // var defaultSystemKey = props.Value("defaultSystemKey"); +// // // dev.SetCurrentRoom((EssentialsRoom)DeviceManager.GetDeviceForKey(defaultSystemKey)); + +// // // // Link custom buttons +// // // var buttonProps = JsonConvert.DeserializeObject>(props["buttons"].ToString()); +// // // foreach (var kvp in buttonProps) +// // // { +// // // var split = kvp.Value.Split(':'); +// // // if (split[0].Equals("source")) +// // // { +// // // var src = DeviceManager.GetDeviceForKey(split[1]) as IPresentationSource; +// // // if (src == null) +// // // { +// // // Debug.Console(0, dev, "Error: Cannot add source key '{0}'", split[1]); +// // // continue; +// // // } +// // // dev.SetCustomButtonAsSource(kvp.Key, src); +// // // } +// // // else if (split[0] == "room") +// // // { +// // // if (split[1] == "off") +// // // dev.SetCustomButtonAsRoomOff(kvp.Key); +// // // } +// // // } +// // //}); +// // } +// // } +// // catch (Exception e) +// // { +// // FactoryHelper.HandleDeviceCreationError(devToken, e); +// // } +// // return dev; +// // } + +// // public static RFExGateway GetGateway(string parent) +// // { +// // if (parent == null) +// // parent = "controlSystem"; +// // RFExGateway rf = null; +// // if (parent.Equals("controlSystem", StringComparison.OrdinalIgnoreCase) +// // || parent.Equals("processor", StringComparison.OrdinalIgnoreCase)) +// // { +// // rf = Global.ControlSystem.ControllerRFGatewayDevice; +// // } +// // return rf; +// // } +// //} +//} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/TouchpanelFactory.cs b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/TouchpanelFactory.cs new file mode 100644 index 00000000..024bc083 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Configuration Original/Factories/TouchpanelFactory.cs @@ -0,0 +1,48 @@ +//using System; +//using Crestron.SimplSharpPro; +//using Crestron.SimplSharpPro.UI; + +//using Newtonsoft.Json.Linq; + +//using PepperDash.Essentials.Core; +//using PepperDash.Essentials.Devices; +//using PepperDash.Core; + +//namespace PepperDash.Essentials +//{ +// public class TouchpanelFactory +// { +// public static Device Create(JToken devToken) +// { +// SmartGraphicsTouchpanelControllerBase dev = null; +// try +// { +// var devType = devToken.Value("type"); +// var devKey = devToken.Value("key"); +// var devName = devToken.Value("name"); +// var props = devToken["properties"]; +// if (devType.Equals("Tsw1052", StringComparison.OrdinalIgnoreCase)) +// { +// uint ipId = Convert.ToUInt32(props.Value("ipId"), 16); +// var hw = new Tsw1052(ipId, Global.ControlSystem); +// dev = TouchpanelControllerFactory.Create(devKey, devName, hw, props.Value("sgdPath")); +// dev.UsesSplashPage = props.Value("usesSplashPage"); +// dev.ShowDate = props.Value("showDate"); +// dev.ShowTime = props.Value("showTime"); + +// // This plugs the system key into the tp, but it won't be linked up until later +// dev.AddPostActivationAction(() => +// { +// var defaultSystemKey = props.Value("defaultSystemKey"); +// dev.SetCurrentRoom((EssentialsRoom)DeviceManager.GetDeviceForKey(defaultSystemKey)); +// }); +// } +// } +// catch (Exception e) +// { +// FactoryHelper.HandleDeviceCreationError(devToken, e); +// } +// return dev; +// } +// } +//} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/ControlSystem.cs b/PepperDashEssentials/PepperDashEssentials/ControlSystem.cs new file mode 100644 index 00000000..14f66437 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/ControlSystem.cs @@ -0,0 +1,163 @@ +using System; +using System.Linq; +using Crestron.SimplSharp; +using Crestron.SimplSharpPro; +using Crestron.SimplSharpPro.CrestronThread; +using PepperDash.Core; +using PepperDash.Core.PortalSync; +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Devices.Common; +using PepperDash.Essentials.DM; +using PepperDash.Essentials.Fusion; + +namespace PepperDash.Essentials +{ + public class ControlSystem : CrestronControlSystem + { + PepperDashPortalSyncClient PortalSync; + + public ControlSystem() + : base() + { + Thread.MaxNumberOfUserThreads = 400; + Global.ControlSystem = this; + DeviceManager.Initialize(this); + } + + /// + /// Git 'er goin' + /// + public override void InitializeSystem() + { + //CrestronConsole.AddNewConsoleCommand(s => GoWithLoad(), "go", "Reloads configuration file", + // ConsoleAccessLevelEnum.AccessOperator); + //CrestronConsole.AddNewConsoleCommand(s => TearDown(), "ungo", "Reloads configuration file", + // ConsoleAccessLevelEnum.AccessOperator); + GoWithLoad(); + } + + /// + /// Do it, yo + /// + public void GoWithLoad() + { + var thread = new Thread(o => + { + try + { + CrestronConsole.AddNewConsoleCommand(EnablePortalSync, "portalsync", "Loads Portal Sync", + ConsoleAccessLevelEnum.AccessOperator); + + //PortalSync = new PepperDashPortalSyncClient(); + //GoWithLoad(); + + Debug.Console(0, "Starting Essentials load from configuration"); + ConfigReader.LoadConfig2(); + LoadDevices(); + LoadTieLines(); + LoadRooms(); + // FUSION - should go per room I believe. See CreateSystems in original Configuration.cs + // ??? + DeviceManager.ActivateAll(); + Debug.Console(0, "Essentials load complete\r" + + "-------------------------------------------------------------"); + } + catch (Exception e) + { + Debug.Console(0, "FATAL INITIALIZE ERROR. System is in an inconsistent state:\r{0}", e); + } + return null; + }, null); + } + + public void EnablePortalSync(string s) + { + if (s.ToLower() == "enable") + { + CrestronConsole.ConsoleCommandResponse("Portal Sync features enabled"); + PortalSync = new PepperDashPortalSyncClient(); + } + } + + public void TearDown() + { + Debug.Console(0, "Tearing down existing system"); + DeviceManager.DeactivateAll(); + + TieLineCollection.Default.Clear(); + + foreach (var key in DeviceManager.GetDevices()) + DeviceManager.RemoveDevice(key); + + Debug.Console(0, "Tear down COMPLETE"); + } + + /// + /// Reads all devices from config and adds them to DeviceManager + /// + public void LoadDevices() + { + foreach (var devConf in ConfigReader.ConfigObject.Devices) + { + Debug.Console(0, "Creating device '{0}'", devConf.Key); + // Skip this to prevent unnecessary warnings + if (devConf.Key == "processor") + continue; + + // Try local factory first + var newDev = DeviceFactory.GetDevice(devConf); + + // Then associated library factories + if (newDev == null) + newDev = PepperDash.Essentials.Devices.Common.DeviceFactory.GetDevice(devConf); + if (newDev == null) + newDev = PepperDash.Essentials.DM.DeviceFactory.GetDevice(devConf); + if (newDev == null) + newDev = PepperDash.Essentials.Displays.DeviceFactory.GetDevice(devConf); + + if (newDev != null) + DeviceManager.AddDevice(newDev); + else + Debug.Console(0, "WARNING: Cannot load unknown device type '{0}', key '{1}'.", devConf.Type, devConf.Key); + } + } + + /// + /// Helper method to load tie lines. This should run after devices have loaded + /// + public void LoadTieLines() + { + // Make this reusable by clearing the TieLineCollection + + var tlc = TieLineCollection.Default; + tlc.Clear(); + foreach (var tieLineConfig in ConfigReader.ConfigObject.TieLines) + { + var newTL = tieLineConfig.GetTieLine(); + if (newTL != null) + tlc.Add(newTL); + } + } + + /// + /// Reads all rooms from config and adds them to DeviceManager + /// + public void LoadRooms() + { + foreach (var roomConfig in ConfigReader.ConfigObject.Rooms) + { + var room = roomConfig.GetRoomObject(); + if (room != null) + { + DeviceManager.AddDevice(room); + //DeviceManager.AddDevice(new EssentialsHuddleSpaceFusionSystemController(room, 0xf1)); +#warning Add Fusion connector to room factory? + + } + else + Debug.Console(0, "WARNING: Cannot create room from config, key '{0}'", roomConfig.Key); + } + } + + } +} diff --git a/PepperDashEssentials/PepperDashEssentials/Devices/DiscPlayer/OppoExtendedBdp.cs b/PepperDashEssentials/PepperDashEssentials/Devices/DiscPlayer/OppoExtendedBdp.cs new file mode 100644 index 00000000..e57e34a3 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Devices/DiscPlayer/OppoExtendedBdp.cs @@ -0,0 +1,42 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Crestron.SimplSharp; +using Crestron.SimplSharpPro; +using Crestron.SimplSharpPro.DeviceSupport; + +using PepperDash.Essentials.Core; + +namespace PepperDash.Essentials.Devices +{ + ///// + ///// This DVD class should cover most IR, one-way DVD and Bluray fuctions + ///// + //public class OppoBluray : IrDvdBase, IDvdControls, IExtendedOutputs + //{ + // public OppoBluray(string key, string name, IROutputPort port, string irDriverFilepath) : base(key, name, port, irDriverFilepath) { } + + + + // public OutputsToTriListBridge GetExtendedOutputsToTriListBridge() + // { + // return new ExtendedDvdTriListBridge(); + // } + + + //} + + //public class ExtendedDvdTriListBridge : OutputsToTriListBridge + //{ + + // public override void Link() + // { + // throw new NotImplementedException(); + // } + + // public override void UnLink() + // { + // throw new NotImplementedException(); + // } + //} +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/Devices/NUMERIC AppleTV.cs b/PepperDashEssentials/PepperDashEssentials/Devices/NUMERIC AppleTV.cs new file mode 100644 index 00000000..9ce4e5de --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Devices/NUMERIC AppleTV.cs @@ -0,0 +1,45 @@ +//using System; +//using System.Collections.Generic; +//using System.Linq; +//using Crestron.SimplSharp; +//using Crestron.SimplSharpPro; +//using Crestron.SimplSharpPro.DeviceSupport; + +//using PepperDash.Essentials.Core; + +//namespace PepperDash.Essentials.Devices +//{ +// public class AppleTV : Device, IHasCueActionList +// { +// public IrOutputPortController IrPort { get; private set; } + +// public AppleTV(string key, string name, IROutputPort port, string irDriverFilepath) +// : base(key, name) +// { +// IrPort = new IrOutputPortController("ir" + key, port, irDriverFilepath); +// } + +// #region IFunctionList Members +// public List CueActionList +// { +// get +// { +// var numToIr = new Dictionary +// { +// { CommonBoolCue.Menu, IROutputStandardCommands.IROut_MENU }, +// { CommonBoolCue.Up, IROutputStandardCommands.IROut_UP_ARROW }, +// { CommonBoolCue.Down, IROutputStandardCommands.IROut_DN_ARROW }, +// { CommonBoolCue.Left, IROutputStandardCommands.IROut_LEFT_ARROW }, +// { CommonBoolCue.Right, IROutputStandardCommands.IROut_RIGHT_ARROW }, +// { CommonBoolCue.Select, IROutputStandardCommands.IROut_ENTER } +// }; +// var funcs = new List(numToIr.Count); + +// foreach (var kvp in numToIr) +// funcs.Add(new BoolCueActionPair(kvp.Key, b => IrPort.PressRelease(kvp.Value, b))); +// return funcs; +// } +// } +// #endregion +// } +//} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE Room/EssentialsRoom.cs b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE Room/EssentialsRoom.cs new file mode 100644 index 00000000..9dadf858 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE Room/EssentialsRoom.cs @@ -0,0 +1,84 @@ +//using System; +//using System.Collections.Generic; +//using System.Linq; +//using System.Text; +//using Crestron.SimplSharp; +//using Crestron.SimplSharpPro; + +//using PepperDash.Core; +//using PepperDash.Essentials.Core; + +//namespace PepperDash.Essentials +//{ +// //*************************************************************************************************** +// public abstract class EssentialsRoom : Room +// { +// public event EventHandler PresentationSourceChange; +// public event EventHandler AudioDeviceWillChange; +// public Dictionary Sources { get; protected set; } + +// public abstract BoolFeedback RoomIsOnStandby { get; protected set; } +// public abstract BoolFeedback RoomIsOccupied { get; protected set; } + +// public uint UnattendedShutdownTimeMs { get; set; } + +// /// +// /// For use when turning on room without a source selection - e.g. from +// /// wake-on signal or occ sensor +// /// +// public SourceListItem DefaultPresentationSource { get; set; } + +//#warning This might need more "guts" and shouldn't be public +// public SourceListItem CurrentPresentationSourceInfo { get; set; } + +// //public IPresentationSource CurrentPresentationSource { get; protected set; } +// //{ +// // get +// // { +// // if (_CurrentPresentationSource == null) +// // _CurrentPresentationSource = PresentationDevice.Default; +// // return _CurrentPresentationSource; +// // } +// // protected set { _CurrentPresentationSource = value; } +// //} +// //IPresentationSource _CurrentPresentationSource; + +// /// +// /// The volume control device for this room - changing it will trigger event +// /// +// public IBasicVolumeControls CurrentAudioDevice +// { +// get { return _CurrentAudioDevice; } +// protected set +// { +// if (value != _CurrentAudioDevice) +// if (AudioDeviceWillChange != null) +// AudioDeviceWillChange(this, +// new EssentialsRoomAudioDeviceChangeEventArgs(this, _CurrentAudioDevice, value)); +// _CurrentAudioDevice = value; +// } +// } +// IBasicVolumeControls _CurrentAudioDevice; + +// public EssentialsRoom(string key, string name) +// : base(key, name) +// { +// } + +// public virtual void SelectSource(uint sourceNum) { } + +// public virtual void SelectSource(IPresentationSource newSrc) { } + +// /// +// /// Make sure that this is called before changing the source +// /// +// protected void OnPresentationSourceChange(SourceListItem currentSource, SourceListItem newSource) +// { +// var handler = PresentationSourceChange; +// if (handler != null) +// PresentationSourceChange(this, +// new EssentialsRoomSourceChangeEventArgs(this, currentSource, newSource)); +// } +// } + +//} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE Room/HuddleSpaceRoom.cs b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE Room/HuddleSpaceRoom.cs new file mode 100644 index 00000000..d093a0f0 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE Room/HuddleSpaceRoom.cs @@ -0,0 +1,378 @@ +//using System; +//using System.Collections.Generic; +//using System.Linq; +//using System.Text; +//using Crestron.SimplSharp; +//using Crestron.SimplSharpPro; + +//using PepperDash.Core; +//using PepperDash.Essentials.Core; + +//namespace PepperDash.Essentials +//{ +// //*************************************************************************************************** + +// public class HuddleSpaceRoom : EssentialsRoom +// { +// public override BoolFeedback RoomIsOnFeedback { get; protected set; } +// public override BoolFeedback IsWarmingUpFeedback { get; protected set; } +// public override BoolFeedback IsCoolingDownFeedback { get; protected set; } +// public override BoolFeedback RoomIsOnStandby { get; protected set; } +// public override BoolFeedback RoomIsOccupied { get; protected set; } + +// public override uint WarmupTime +// { +// get +// { +// if (_Display != null) +// return _Display.WarmupTime; +// return base.WarmupTime; +// } +// } +// public override uint CooldownTime +// { +// get +// { +// if (_Display != null) +// return _Display.CooldownTime; +// return base.CooldownTime; +// } +// } + +// bool NoDisplayRoomIsOn = false; + +// public DisplayBase DefaultDisplay // PROTECT --------------------------------------------- +// { +// get +// { +// if (_Display == null) +// _Display = TwoWayDisplayBase.DefaultDisplay; +// return _Display; +// } +// set +// { +// // Disconnect current display +// if (_Display != null) +// { +// _Display.PowerIsOnFeedback.OutputChange -= Display_Various_OutputChange; +// _Display.IsCoolingDownFeedback.OutputChange -= Display_Various_OutputChange; +// _Display.IsWarmingUpFeedback.OutputChange -= Display_Various_OutputChange; +// } +// _Display = value; +// if (value != null) +// { +// _Display.PowerIsOnFeedback.OutputChange += Display_Various_OutputChange; +// _Display.IsCoolingDownFeedback.OutputChange += Display_Various_OutputChange; +// _Display.IsWarmingUpFeedback.OutputChange += Display_Various_OutputChange; +// } +// CurrentAudioDevice = (value as IBasicVolumeControls); +// } +// } +// DisplayBase _Display; + +// public IBasicVolumeControls DefaultVolumeControls +// { +// get { return DefaultDisplay as IBasicVolumeControls; } +// } + + +// public IntFeedback SourcesCount { get; private set; } +// public StringFeedback CurrentSourceName { get; private set; } + +// public string SourceListKey { get; set; } +// string LastSourceKey; + +// public HuddleSpaceRoom(string key, string name) +// : base(key, name) +// { +// // Return the state of the display, unless no display, then return +// // a local or default state. + +// RoomIsOnFeedback = new BoolFeedback(RoomCue.RoomIsOn, +// () => DefaultDisplay != null ? DefaultDisplay.PowerIsOnFeedback.BoolValue : NoDisplayRoomIsOn); +// IsWarmingUpFeedback = new BoolFeedback(RoomCue.RoomIsWarmingUp, +// () => DefaultDisplay != null ? DefaultDisplay.IsWarmingUpFeedback.BoolValue : false); +// IsCoolingDownFeedback = new BoolFeedback(RoomCue.RoomIsCoolingDown, +// () => DefaultDisplay != null ? DefaultDisplay.IsCoolingDownFeedback.BoolValue : false); +// RoomIsOnStandby = new BoolFeedback(RoomCue.RoomIsOnStandby, +// () => false); +// RoomIsOccupied = new BoolFeedback(RoomCue.RoomIsOccupied, +// () => true); + +// Sources = new Dictionary(); + +// SourcesCount = new IntFeedback(RoomCue.SourcesCount, +// () => Sources.Count); +// CurrentSourceName = new StringFeedback(() => CurrentPresentationSourceInfo.PreferredName);// CurrentPresentationSource.Name); +// //CurrentSourceType = new IntOutput(RoomCue.CurrentSourceType, +// // () => CurrentPresentationSource.Type); + +// UnattendedShutdownTimeMs = 60000; +// } + +// public override void RoomOn() +// { +// Debug.Console(0, this, "Room on"); +// if (IsCoolingDownFeedback.BoolValue || IsWarmingUpFeedback.BoolValue) +// { +// Debug.Console(2, this, "Room is warming or cooling. Ignoring room on"); +// return; +// } +// if (!RoomIsOnFeedback.BoolValue) +// { +// // Setup callback when powerOn happens +// EventHandler oneTimeHandler = null; +// oneTimeHandler = (o, a) => +// { +// Debug.Console(0, this, "RoomOn received display power on: {0}", +// DefaultDisplay.PowerIsOnFeedback.BoolValue); +// // if it's power on +// if (DefaultDisplay.PowerIsOnFeedback.BoolValue) +// { +// (DefaultDisplay as TwoWayDisplayBase).PowerIsOnFeedback.OutputChange -= oneTimeHandler; +// Debug.Console(1, this, "Display has powered on"); +// RoomIsOnFeedback.FireUpdate(); +// //if (callback != null) +// // callback(); +// } +// }; +// DefaultDisplay.PowerIsOnFeedback.OutputChange += oneTimeHandler; +// DefaultDisplay.PowerOn(); +// } +// } + +// public override void RoomOff() +// { +// if (!RoomIsOnFeedback.BoolValue) +// { +// Debug.Console(2, this, "Room is already off"); +// return; +// } +// Debug.Console(0, this, "Room off"); +// DefaultDisplay.PowerOff(); + +// //RoomIsOn.FireUpdate(); ---Display will provide this in huddle +// //OnPresentationSourceChange(null); +// //CurrentPresentationSource = null; +// } + + +// public override void SelectSource(uint sourceNum) +// { +// // Run this on a separate thread +// new CTimer(o => +// { +// var routeKey = "source-" + sourceNum; +// Debug.Console(1, this, "Run room action '{0}'", routeKey); +// if (string.IsNullOrEmpty(SourceListKey)) +// { +// Debug.Console(1, this, "WARNING: No source/action list defined for this room"); +// return; +// } + +// // Try to get the list from the config object, using SourceListKey string +// if (!ConfigReader.ConfigObject.SourceLists.ContainsKey(SourceListKey)) +// { +// Debug.Console(1, this, "WARNING: Config source list '{0}' not found", SourceListKey); +// return; +// } +// var list = ConfigReader.ConfigObject.SourceLists[SourceListKey]; + +// // Try to get the list item by it's string key +// if (!list.ContainsKey(routeKey)) +// { +// Debug.Console(1, this, "WARNING: No item '{0}' found on config list '{1}'", +// routeKey, SourceListKey); +// return; +// } + +// var item = list[routeKey]; +// Debug.Console(2, this, "Action {0} has {1} steps", +// item.SourceKey, item.RouteList.Count); + +// // Let's run it +// if (routeKey.ToLower() != "roomoff") +// LastSourceKey = routeKey; + +// foreach (var route in item.RouteList) +// { +// // if there is a $defaultAll on route, run two separate +// if (route.DestinationKey.Equals("$defaultAll", StringComparison.OrdinalIgnoreCase)) +// { +// var tempAudio = new SourceRouteListItem +// { +// DestinationKey = "$defaultDisplay", +// SourceKey = route.SourceKey, +// Type = eRoutingSignalType.Video +// }; +// DoRoute(tempAudio); + +// var tempVideo = new SourceRouteListItem +// { +// DestinationKey = "$defaultAudio", +// SourceKey = route.SourceKey, +// Type = eRoutingSignalType.Audio +// }; +// DoRoute(tempVideo); +// continue; +// } +// else +// DoRoute(route); +// } + +// // Set volume control on room, using default if non provided +// IBasicVolumeControls volDev = null; +// // Handle special cases for volume control +// if (string.IsNullOrEmpty(item.VolumeControlKey) +// || item.VolumeControlKey.Equals("$defaultAudio", StringComparison.OrdinalIgnoreCase)) +// volDev = DefaultVolumeControls; +// else if (item.VolumeControlKey.Equals("$defaultDisplay", StringComparison.OrdinalIgnoreCase)) +// volDev = DefaultDisplay as IBasicVolumeControls; +// // Or a specific device, probably rarely used. +// else +// { +// var dev = DeviceManager.GetDeviceForKey(item.VolumeControlKey); +// if (dev is IBasicVolumeControls) +// volDev = dev as IBasicVolumeControls; +// else if (dev is IHasVolumeDevice) +// volDev = (dev as IHasVolumeDevice).VolumeDevice; +// } +// CurrentAudioDevice = volDev; + +// // store the name and UI info for routes +// if (item.SourceKey != null) +// CurrentPresentationSourceInfo = item; +// // And finally, set the "control". This will trigger event +// //CurrentControlDevice = DeviceManager.GetDeviceForKey(item.SourceKey) as Device; + +// RoomIsOnFeedback.FireUpdate(); + +// }, 0); // end of CTimer + +// //Debug.Console(1, this, "Checking for source {0}", sourceNum); +// //if (Sources.ContainsKey(sourceNum)) +// //{ +// // var newSrc = Sources[sourceNum]; +// // if (!RoomIsOn.BoolValue) +// // { +// // EventHandler oneTimeHandler = null; +// // oneTimeHandler = (o, a) => +// // { +// // RoomIsOn.OutputChange -= oneTimeHandler; +// // FinishSourceSelection(newSrc); +// // }; +// // RoomIsOn.OutputChange -= oneTimeHandler; +// // RoomIsOn.OutputChange += oneTimeHandler; +// // RoomOn(); +// // } +// // else FinishSourceSelection(newSrc); +// //} +// } + +// /// +// /// +// /// +// /// +// /// +// bool DoRoute(SourceRouteListItem route) +// { +// IRoutingSinkNoSwitching dest = null; + +// if (route.DestinationKey.Equals("$defaultDisplay", StringComparison.OrdinalIgnoreCase)) +// dest = DefaultDisplay; +// else +// dest = DeviceManager.GetDeviceForKey(route.DestinationKey) as IRoutingSinkNoSwitching; + +// if (dest == null) +// { +// Debug.Console(1, this, "Cannot route, unknown destination '{0}'", route.DestinationKey); +// return false; +// } + +// if (route.SourceKey.Equals("$off", StringComparison.OrdinalIgnoreCase)) +// { +// dest.ReleaseRoute(); +// if (dest is IPower) +// (dest as IPower).PowerOff(); +// } +// else +// { +// var source = DeviceManager.GetDeviceForKey(route.SourceKey) as IRoutingOutputs; +// if (source == null) +// { +// Debug.Console(1, this, "Cannot route unknown source '{0}' to {1}", route.SourceKey, route.DestinationKey); +// return false; +// } +// dest.ReleaseAndMakeRoute(source, route.Type); +// } +// return true; +// } + +// ///// +// ///// +// ///// +// ///// +// //public override void SelectSource(IPresentationSource newSrc) +// //{ +// // if (Sources.ContainsValue(newSrc)) +// // { +// // if (!RoomIsOn.BoolValue) +// // { +// // EventHandler oneTimeHandler = null; +// // oneTimeHandler = (o, a) => +// // { +// // RoomIsOn.OutputChange -= oneTimeHandler; +// // FinishSourceSelection(newSrc); +// // }; +// // RoomIsOn.OutputChange -= oneTimeHandler; +// // RoomIsOn.OutputChange += oneTimeHandler; +// // RoomOn(); +// // } +// // else FinishSourceSelection(newSrc); +// // } +// //} + +// void Display_Various_OutputChange(object sender, EventArgs e) +// { +// // Bounce through the output changes +// if (sender == DefaultDisplay.PowerIsOnFeedback) +// this.RoomIsOnFeedback.FireUpdate(); +// else if (sender == DefaultDisplay.IsCoolingDownFeedback) +// this.IsCoolingDownFeedback.FireUpdate(); +// else if (sender == DefaultDisplay.IsWarmingUpFeedback) +// this.IsWarmingUpFeedback.FireUpdate(); +// } + +//// void FinishSourceSelection(IPresentationSource newSource) +//// { +//// Debug.Console(1, this, "Selecting source {0}", newSource.Key); +//// // Notify anyone watching source that it's leaving +//// OnPresentationSourceChange(newSource); +//// CurrentPresentationSource = newSource; +//// var routeableSource = CurrentPresentationSource as IRoutingOutputs; +//// if (routeableSource != null) +////#warning source route type will need clarification +//// DefaultDisplay.GetRouteToSource(routeableSource, eRoutingSignalType.AudioVideo); +//// else +//// Debug.Console(1, this, "New selected source {0} is not routeable", CurrentPresentationSource); + +//// CurrentSourceName.FireUpdate(); +//// //CurrentSourceType.FireUpdate(); +//// } + +// public override List Feedbacks +// { +// get +// { +// var feedbacks = new List +// { +// SourcesCount, +// CurrentSourceName, +// //CurrentSourceType, +// }; +// feedbacks.AddRange(base.Feedbacks); +// return feedbacks; +// } +// } +// } +//} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE Room/RoomEventArgs.cs b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE Room/RoomEventArgs.cs new file mode 100644 index 00000000..e8c648b2 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE Room/RoomEventArgs.cs @@ -0,0 +1,45 @@ +//using System; +//using System.Collections.Generic; +//using System.Linq; +//using System.Text; +//using Crestron.SimplSharp; +//using Crestron.SimplSharpPro; + +//using PepperDash.Core; +//using PepperDash.Essentials.Core; + +//namespace PepperDash.Essentials +//{ +// public class EssentialsRoomSourceChangeEventArgs : EventArgs +// { +// public EssentialsRoom Room { get; private set; } +// public SourceListItem OldSource { get; private set; } +// public SourceListItem NewSource { get; private set; } + +// public EssentialsRoomSourceChangeEventArgs(EssentialsRoom room, +// SourceListItem oldSource, SourceListItem newSource) +// { +// Room = room; +// OldSource = oldSource; +// NewSource = newSource; +// } +// } + + + +// public class EssentialsRoomAudioDeviceChangeEventArgs : EventArgs +// { +// public EssentialsRoom Room { get; private set; } +// public IBasicVolumeControls OldDevice { get; private set; } +// public IBasicVolumeControls NewDevice { get; private set; } + +// public EssentialsRoomAudioDeviceChangeEventArgs(EssentialsRoom room, +// IBasicVolumeControls oldDevice, IBasicVolumeControls newDevice) +// { +// Room = room; +// OldDevice = oldDevice; +// NewDevice = newDevice; +// } +// } + +//} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/PageControllers/DevicePageControllerBase.cs b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/PageControllers/DevicePageControllerBase.cs new file mode 100644 index 00000000..700a32d5 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/PageControllers/DevicePageControllerBase.cs @@ -0,0 +1,47 @@ +//using System; +//using System.Collections.Generic; +//using System.Linq; +//using System.Text; +//using Crestron.SimplSharp; +//using Crestron.SimplSharpPro; +//using Crestron.SimplSharpPro.DeviceSupport; + +//using PepperDash.Core; +//using PepperDash.Essentials.Core; +//using PepperDash.Essentials.Core.Presets; + +//namespace PepperDash.Essentials +//{ +// /// +// /// +// /// +// public abstract class DevicePageControllerBase +// { + +// protected BasicTriListWithSmartObject TriList; +// protected List FixedObjectSigs; + +// public DevicePageControllerBase(BasicTriListWithSmartObject triList) +// { +// TriList = triList; +// } + +// public void SetVisible(bool state) +// { +// foreach (var sig in FixedObjectSigs) +// { +// Debug.Console(2, "set visible {0}={1}", sig.Number, state); +// sig.BoolValue = state; +// } +// CustomSetVisible(state); +// } + +// /// +// /// Add any specialized show/hide logic here - beyond FixedObjectSigs. Overriding +// /// methods do not need to call this base method +// /// +// protected virtual void CustomSetVisible(bool state) +// { +// } +// } +//} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/PageControllers/LargeTouchpanelControllerBase.cs b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/PageControllers/LargeTouchpanelControllerBase.cs new file mode 100644 index 00000000..6f0345f5 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/PageControllers/LargeTouchpanelControllerBase.cs @@ -0,0 +1,308 @@ +//using System; +//using System.Collections.Generic; +//using System.Linq; +//using Crestron.SimplSharp; +//using Crestron.SimplSharpPro; +//using Crestron.SimplSharpPro.DeviceSupport; +//using Crestron.SimplSharpPro.UI; + +//using PepperDash.Core; + + +//namespace PepperDash.Essentials.Core +//{ +// /// +// /// +// /// +// public class LargeTouchpanelControllerBase : SmartGraphicsTouchpanelControllerBase +// { +// public string PresentationShareButtonInVideoText = "Share"; +// public string PresentationShareButtonNotInVideoText = "Presentation"; + +// SourceListSubpageReferenceList SourceSelectSRL; +// DevicePageControllerBase CurrentPresentationSourcePageController; + +// public LargeTouchpanelControllerBase(string key, string name, +// BasicTriListWithSmartObject triList, string sgdFilePath) +// : base(key, name, triList, sgdFilePath) +// { +// } + +// /// +// /// Static factory method +// /// +// public static LargeTouchpanelControllerBase GetController(string key, string name, +// string type, CrestronTswPropertiesConfig props) +// { +// var id = Convert.ToUInt32(props.IpId, 16); +// type = type.ToLower(); +// Tswx52ButtonVoiceControl tsw = null; +// if (type == "tsw752") +// tsw = new Tsw752(id, Global.ControlSystem); +// else if (type == "tsw1052") +// tsw = new Tsw1052(id, Global.ControlSystem); +// else +// { +// Debug.Console(0, "WARNING: Cannot create TSW controller with type '{0}'", type); +// return null; +// } + +// var sgdPath = string.Format(@"\NVRAM\Program{0}\SGD\{1}", +// InitialParametersClass.ApplicationNumber, props.SgdFile); +// var controller = new LargeTouchpanelControllerBase(key, name, tsw, sgdPath); +// controller.UsesSplashPage = props.UsesSplashPage; + +// // Get the room and add it after everthing is ready +// var room = DeviceManager.GetDeviceForKey(props.DefaultRoomKey) as EssentialsRoom; +// controller.AddPostActivationAction(() => +// { +// controller.SetCurrentRoom(room); + +// }); + +// return controller; +// } + +// public override bool CustomActivate() +// { +// var baseSuccess = base.CustomActivate(); +// if (!baseSuccess) return false; + +// SourceSelectSRL = new SourceListSubpageReferenceList(this.TriList, n => +// { if (CurrentRoom != null) CurrentRoom.SelectSource(n); }); + +// var lm = Global.LicenseManager; +// if (lm != null) +// { +// lm.LicenseIsValid.LinkInputSig(TriList.BooleanInput[UiCue.ShowLicensed.Number]); +// //others +// } + +// // Wire up buttons +// TriList.SetSigFalseAction(15003, () => SetMainMode(eMainModeType.Presentation)); +// TriList.SetSigFalseAction(15008, PowerOffWithConfirmPressed); +// TriList.SetSigFalseAction(15101, () => SetMainMode(eMainModeType.Presentation)); +// TriList.SetSigFalseAction(15013, ShowHelp); +// TriList.SetSigFalseAction(15014, () => SetMainMode(eMainModeType.Tech)); + +// // Temp things ----------------------------------------------------------------------- +// TriList.StringInput[UiCue.SplashMessage.Number].StringValue = SplashMessage; +// //------------------------------------------------------------------------------------ + +// // Initialize initial view +// ShowSplashOrMain(); +// return true; +// } + +// /// +// /// In Essentials, this should NEVER be called, since it's a one-room solution +// /// +// protected override void HideRoomUI() +// { +// // UI Cleanup here???? + +// //SwapAudioDeviceControls(CurrentRoom.CurrentAudioDevice, null); +// //CurrentRoom.AudioDeviceWillChange -= CurrentRoom_AudioDeviceWillChange; + +// CurrentRoom.IsCoolingDownFeedback.OutputChange -= CurrentRoom_IsCoolingDown_OutputChange; +// CurrentRoom.IsWarmingUpFeedback.OutputChange -= CurrentRoom_IsWarmingUp_OutputChange; + +// SourceSelectSRL.DetachFromCurrentRoom(); +// } + +// /// +// /// Ties this panel controller to the Room and gets updates. +// /// +// protected override void ShowRoomUI() +// { +// Debug.Console(1, this, "connecting to system '{0}'", CurrentRoom.Key); + +// TriList.StringInput[RoomCue.Name.Number].StringValue = CurrentRoom.Name; +// TriList.StringInput[RoomCue.Description.Number].StringValue = CurrentRoom.Description; + +// CurrentRoom.IsCoolingDownFeedback.OutputChange -= CurrentRoom_IsCoolingDown_OutputChange; +// CurrentRoom.IsWarmingUpFeedback.OutputChange -= CurrentRoom_IsWarmingUp_OutputChange; +// CurrentRoom.IsCoolingDownFeedback.OutputChange += CurrentRoom_IsCoolingDown_OutputChange; +// CurrentRoom.IsWarmingUpFeedback.OutputChange += CurrentRoom_IsWarmingUp_OutputChange; + +// SourceSelectSRL.AttachToRoom(CurrentRoom); +// } + +// void CurrentRoom_IsCoolingDown_OutputChange(object sender, EventArgs e) +// { +// Debug.Console(2, this, "Received room in cooldown={0}", CurrentRoom.IsCoolingDownFeedback.BoolValue); +// if (CurrentRoom.IsCoolingDownFeedback.BoolValue) // When entering cooldown +// { +// // Do we need to check for an already-running cooldown - like in the case of room switches? +// new ModalDialog(TriList).PresentModalTimerDialog(0, "Power Off", "Power", "Please wait, shutting down", +// "", "", CurrentRoom.CooldownTime, true, b => +// { +// ShowSplashOrMain(); +// }); +// } +// } + +// void CurrentRoom_IsWarmingUp_OutputChange(object sender, EventArgs e) +// { +// Debug.Console(2, this, "Received room in warmup={0}", CurrentRoom.IsWarmingUpFeedback.BoolValue); +// if (CurrentRoom.IsWarmingUpFeedback.BoolValue) // When entering warmup +// { +// // Do we need to check for an already-running cooldown - like in the case of room switches? +// new ModalDialog(TriList).PresentModalTimerDialog(0, "Power On", "Power", "Please wait, powering on", +// "", "", CurrentRoom.WarmupTime, false, b => +// { +// // Reveal sources - or has already been done behind modal +// }); +// } +// } + +// // Handler for source change events. +// void CurrentRoom_PresentationSourceChange(object sender, EssentialsRoomSourceChangeEventArgs args) +// { +// // Put away the old source and set up the new source. +// Debug.Console(2, this, "Received source change={0}", args.NewSource != null ? args.NewSource.SourceKey : "none"); + +// // If we're in tech, don't switch screen modes. Add any other modes we may want to switch away from +// // inside the if below. +// if (MainMode == eMainModeType.Splash) +// SetMainMode(eMainModeType.Presentation); +// SetControlSource(args.NewSource); +// } + +// //*********************************************************************** +// //** UI Manipulation +// //*********************************************************************** + +// /// +// /// Shows the splash page or the main presentation page, depending on config setting +// /// +// void ShowSplashOrMain() +// { +// if (UsesSplashPage) +// SetMainMode(eMainModeType.Splash); +// else +// SetMainMode(eMainModeType.Presentation); +// } + +// /// +// /// Switches between main modes +// /// +// void SetMainMode(eMainModeType mode) +// { +// MainMode = mode; +// switch (mode) +// { +// case eMainModeType.Presentation: +// TriList.BooleanInput[UiCue.VisibleCommonFooter.Number].BoolValue = true; +// TriList.BooleanInput[UiCue.VisibleCommonHeader.Number].BoolValue = true; +// TriList.BooleanInput[UiCue.VisibleSplash.Number].BoolValue = false; +// TriList.BooleanInput[UiCue.VisiblePresentationSourceList.Number].BoolValue = true; +// ShowCurrentPresentationSourceUi(); +// break; +// case eMainModeType.Splash: +// TriList.BooleanInput[UiCue.VisibleCommonFooter.Number].BoolValue = false; +// TriList.BooleanInput[UiCue.VisibleCommonHeader.Number].BoolValue = false; +// TriList.BooleanInput[UiCue.VisiblePresentationSourceList.Number].BoolValue = false; +// TriList.BooleanInput[UiCue.VisibleSplash.Number].BoolValue = true; +// HideCurrentPresentationSourceUi(); +// break; +// case eMainModeType.Tech: +// new ModalDialog(TriList).PresentModalTimerDialog(1, "Tech page", "Info", +// "Tech page will be here soon!
I promise", +// "Bueno!", "", 0, false, null); +// MainMode = eMainModeType.Presentation; +// break; +// default: +// break; +// } +// } + +// /// +// /// +// /// +// void PowerOffWithConfirmPressed() +// { +// if (CurrentRoom == null) +// return; +// if (!CurrentRoom.RoomIsOnFeedback.BoolValue) +// return; +// // Timeout or button 1 press will shut down +// var modal = new ModalDialog(TriList); +// uint seconds = CurrentRoom.UnattendedShutdownTimeMs / 1000; +// var message = string.Format("Meeting will end in {0} seconds", seconds); +// modal.PresentModalTimerDialog(2, "End Meeting", "Info", message, +// "End Meeting Now", "Cancel", CurrentRoom.UnattendedShutdownTimeMs, true, +// but => { if (but != 2) CurrentRoom.RoomOff(); }); +// } + +// /// +// /// Reveals the basic UI for the current device +// /// +// protected override void ShowCurrentPresentationSourceUi() +// { +// if (MainMode == eMainModeType.Splash && CurrentRoom.RoomIsOnFeedback.BoolValue) +// SetMainMode(eMainModeType.Presentation); + +// if (CurrentPresentationControlDevice == null) +// { +// // If system is off, do one thing + +// // Otherwise, do something else - shouldn't be in this condition + +// return; +// } + +// // If a controller is already loaded, use it +// if (LoadedPageControllers.ContainsKey(CurrentPresentationControlDevice)) +// CurrentPresentationSourcePageController = LoadedPageControllers[CurrentPresentationControlDevice]; +// else +// { +// // This is by no means optimal, but for now.... +// if (CurrentPresentationControlDevice.Type == PresentationSourceType.SetTopBox +// && CurrentPresentationControlDevice is ISetTopBoxControls) +// CurrentPresentationSourcePageController = new PageControllerLargeSetTopBoxGeneric(TriList, +// CurrentPresentationControlDevice as ISetTopBoxControls); + +// else if (CurrentPresentationControlDevice.Type == PresentationSourceType.Laptop) +// CurrentPresentationSourcePageController = new PageControllerLaptop(TriList); + +// // separate these... +// else if (CurrentPresentationControlDevice.Type == PresentationSourceType.Dvd) +// CurrentPresentationSourcePageController = +// new PageControllerLargeDvd(TriList, CurrentPresentationControlDevice as IDiscPlayerControls); + +// else +// CurrentPresentationSourcePageController = null; + +// // Save it. +// if (CurrentPresentationSourcePageController != null) +// LoadedPageControllers[CurrentPresentationControlDevice] = CurrentPresentationSourcePageController; +// } + +// if (CurrentPresentationSourcePageController != null) +// CurrentPresentationSourcePageController.SetVisible(true); +// } + +// protected override void HideCurrentPresentationSourceUi() +// { +// if (CurrentPresentationControlDevice != null && CurrentPresentationSourcePageController != null) +// CurrentPresentationSourcePageController.SetVisible(false); +// } + + + +// void ShowHelp() +// { +// new ModalDialog(TriList).PresentModalTimerDialog(1, "Help", "Help", CurrentRoom.HelpMessage, +// "OK", "", 0, false, null); +// } + +// protected void ListSmartObjects() +// { +// Debug.Console(0, this, "Smart objects IDs:"); +// var list = TriList.SmartObjects.OrderBy(s => s.Key); +// foreach (var kvp in list) +// Debug.Console(0, " {0}", kvp.Key); +// } +// } +//} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/PageControllers/PageControllerLaptop.cs b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/PageControllers/PageControllerLaptop.cs new file mode 100644 index 00000000..dace5dfb --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/PageControllers/PageControllerLaptop.cs @@ -0,0 +1,28 @@ +//using System; +//using System.Collections.Generic; +//using System.Linq; +//using System.Text; +//using Crestron.SimplSharp; +//using Crestron.SimplSharpPro; +//using Crestron.SimplSharpPro.DeviceSupport; + +//using PepperDash.Core; +//using PepperDash.Essentials.Core; +//using PepperDash.Essentials.Core.Presets; + + +//namespace PepperDash.Essentials +//{ +// public class PageControllerLaptop : DevicePageControllerBase +// { +// public PageControllerLaptop(BasicTriListWithSmartObject tl) +// : base(tl) +// { +// FixedObjectSigs = new List +// { +// tl.BooleanInput[10092], // well +// tl.BooleanInput[11001] // Laptop info +// }; +// } +// } +//} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/PageControllers/PageControllerLargeDvd.cs b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/PageControllers/PageControllerLargeDvd.cs new file mode 100644 index 00000000..46db1f39 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/PageControllers/PageControllerLargeDvd.cs @@ -0,0 +1,46 @@ +//using System; +//using System.Collections.Generic; +//using System.Linq; +//using System.Text; +//using Crestron.SimplSharp; +//using Crestron.SimplSharpPro; +//using Crestron.SimplSharpPro.DeviceSupport; + +//using PepperDash.Core; +//using PepperDash.Essentials.Core; +//using PepperDash.Essentials.Core.Presets; + +//namespace PepperDash.Essentials +//{ +// /// +// /// +// /// +// public class PageControllerLargeDvd : DevicePageControllerBase +// { +// IDiscPlayerControls Device; + +// public PageControllerLargeDvd(BasicTriListWithSmartObject tl, IDiscPlayerControls device) +// : base(tl) +// { + +// Device = device; +// FixedObjectSigs = new List +// { +// tl.BooleanInput[10093], // well +// tl.BooleanInput[10411], // DVD Dpad +// tl.BooleanInput[10412] // everything else +// }; +// } + +// protected override void CustomSetVisible(bool state) +// { +// // Hook up smart objects if applicable +// if (Device != null) +// { +//#warning rewire this +// //var uos = (Device as IHasCueActionList).CueActionList; +// //SmartObjectHelper.LinkDpadWithUserObjects(TriList, 10411, uos, state); +// } +// } +// } +//} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/PageControllers/PageControllerLargeSetTopBoxGeneric.cs b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/PageControllers/PageControllerLargeSetTopBoxGeneric.cs new file mode 100644 index 00000000..eb869108 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/PageControllers/PageControllerLargeSetTopBoxGeneric.cs @@ -0,0 +1,139 @@ +//using System; +//using System.Collections.Generic; +//using System.Linq; +//using System.Text; +//using Crestron.SimplSharp; +//using Crestron.SimplSharpPro; +//using Crestron.SimplSharpPro.DeviceSupport; + +//using PepperDash.Essentials.Core.Presets; + +//using PepperDash.Core; +//using PepperDash.Essentials.Core; + +//namespace PepperDash.Essentials +//{ + +// public class PageControllerLargeSetTopBoxGeneric : DevicePageControllerBase +// { +// // To-DO: Add properties for component subpage names. DpadPos1, DpadPos2... +// // Derived classes can then insert special subpages for variations on given +// // device types. Like DirecTV vs Comcast + +// public uint DpadSmartObjectId { get; set; } +// public uint NumberPadSmartObjectId { get; set; } +// public uint PresetsSmartObjectId { get; set; } +// public uint Position5TabsId { get; set; } + +// ISetTopBoxControls Device; +// DevicePresetsView PresetsView; + + +// bool ShowPosition5Tabs; +// uint CurrentVisiblePosition5Item = 1; +// Dictionary Position5SubpageJoins = new Dictionary +// { +// { 1, 10053 }, +// { 2, 10054 } +// }; + +// public PageControllerLargeSetTopBoxGeneric(BasicTriListWithSmartObject tl, ISetTopBoxControls device) +// : base(tl) +// { +// Device = device; +// DpadSmartObjectId = 10011; +// NumberPadSmartObjectId = 10014; +// PresetsSmartObjectId = 10012; +// Position5TabsId = 10081; + +// bool dpad = device is IDPad; +// bool preset = device.HasPresets; +// bool dvr = device.HasDvr; +// bool numbers = device is INumericKeypad; +// uint[] joins = null; + +// if (dpad && !preset && !dvr && !numbers) joins = new uint[] { 10031, 10091 }; +// else if (!dpad && preset && !dvr && !numbers) joins = new uint[] { 10032, 10091 }; +// else if (!dpad && !preset && dvr && !numbers) joins = new uint[] { 10033, 10091 }; +// else if (!dpad && !preset && !dvr && numbers) joins = new uint[] { 10034, 10091 }; + +// else if (dpad && preset && !dvr && !numbers) joins = new uint[] { 10042, 10021, 10092 }; +// else if (dpad && !preset && dvr && !numbers) joins = new uint[] { 10043, 10021, 10092 }; +// else if (dpad && !preset && !dvr && numbers) joins = new uint[] { 10044, 10021, 10092 }; +// else if (!dpad && preset && dvr && !numbers) joins = new uint[] { 10043, 10022, 10092 }; +// else if (!dpad && preset && !dvr && numbers) joins = new uint[] { 10044, 10022, 10092 }; +// else if (!dpad && !preset && dvr && numbers) joins = new uint[] { 10044, 10023, 10092 }; + +// else if (dpad && preset && dvr && !numbers) joins = new uint[] { 10053, 10032, 10011, 10093 }; +// else if (dpad && preset && !dvr && numbers) joins = new uint[] { 10054, 10032, 10011, 10093 }; +// else if (dpad && !preset && dvr && numbers) joins = new uint[] { 10054, 10033, 10011, 10093 }; +// else if (!dpad && preset && dvr && numbers) joins = new uint[] { 10054, 10033, 10012, 10093 }; + +// else if (dpad && preset && dvr && numbers) +// { +// joins = new uint[] { 10081, 10032, 10011, 10093 }; // special case +// ShowPosition5Tabs = true; +// } +// // Project the joins into corresponding sigs. +// FixedObjectSigs = joins.Select(u => TriList.BooleanInput[u]).ToList(); + +// // Build presets +// if (device.HasPresets) +// { +// PresetsView = new DevicePresetsView(tl, device.PresetsModel); +// } +// } + +// protected override void CustomSetVisible(bool state) +// { +// if (ShowPosition5Tabs) +// { +// // Show selected tab +// TriList.BooleanInput[Position5SubpageJoins[CurrentVisiblePosition5Item]].BoolValue = state; + +// var tabSo = TriList.SmartObjects[Position5TabsId]; +// if (state) // Link up the tab object +// { +// tabSo.BooleanOutput["Tab Button 1 Press"].UserObject = new Action(b => ShowTab(1)); +// tabSo.BooleanOutput["Tab Button 2 Press"].UserObject = new Action(b => ShowTab(2)); +// } +// else // Disco tab object +// { +// tabSo.BooleanOutput["Tab Button 1 Press"].UserObject = null; +// tabSo.BooleanOutput["Tab Button 2 Press"].UserObject = null; +// } +// } + +// // Hook up smart objects if applicable +//#warning hook these up +// //if (Device is IHasCueActionList) +// //{ +// // var uos = (Device as IHasCueActionList).CueActionList; +// // SmartObjectHelper.LinkDpadWithUserObjects(TriList, DpadSmartObjectId, uos, state); +// // SmartObjectHelper.LinkNumpadWithUserObjects(TriList, NumberPadSmartObjectId, +// // uos, CommonBoolCue.Dash, CommonBoolCue.Last, state); +// //} + + +// // Link, unlink presets +// if (Device.HasPresets && state) +// PresetsView.Attach(); +// else if (Device.HasPresets && !state) +// PresetsView.Detach(); +// } + +// void ShowTab(uint number) +// { +// // Ignore re-presses +// if (CurrentVisiblePosition5Item == number) return; +// // Swap subpage +// var bi = TriList.BooleanInput; +// if (CurrentVisiblePosition5Item > 0) +// bi[Position5SubpageJoins[CurrentVisiblePosition5Item]].BoolValue = false; +// CurrentVisiblePosition5Item = number; +// bi[Position5SubpageJoins[CurrentVisiblePosition5Item]].BoolValue = true; + +// // Show feedback on buttons +// } +// } +//} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/Panels/REMOVE UiCue.cs b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/Panels/REMOVE UiCue.cs new file mode 100644 index 00000000..1bfaa2bb --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/Panels/REMOVE UiCue.cs @@ -0,0 +1,43 @@ +//using System; +//using System.Collections.Generic; +//using System.Linq; +//using System.Text; +//using Crestron.SimplSharp; + +//namespace PepperDash.Essentials.Core +//{ +// public class UiCue +// { +// public static readonly Cue VisibleSystemInit = Cue.BoolCue("VisibleSystemInit", 15001); +// public static readonly Cue VisibleSplash = Cue.BoolCue("VisibleSplash", 15002); +// public static readonly Cue PressSplash = Cue.BoolCue("PressSplash", 15003); +// public static readonly Cue PressRoomOn = Cue.BoolCue("PressRoomOn", 15006); +// public static readonly Cue PressRoomOff = Cue.BoolCue("PressRoomOff", 15007); +// public static readonly Cue PressRoomOffWithConfirm = Cue.BoolCue("PressRoomOffWithConfirm", 15008); +// public static readonly Cue VisibleCommonHeader = Cue.BoolCue("PressPowerOffConfirm", 15011); +// public static readonly Cue VisibleCommonFooter = Cue.BoolCue("VisibleCommonFooter", 15012); +// public static readonly Cue PressHelp = Cue.BoolCue("PressHelp", 15013); +// public static readonly Cue PressSettings = Cue.BoolCue("PressSettings", 15014); + +// public static readonly Cue ShowDate = Cue.BoolCue("PressSettings", 15015); +// public static readonly Cue ShowTime = Cue.BoolCue("PressSettings", 15016); +// public static readonly Cue ShowLicensed = Cue.BoolCue("PressSettings", 15017); +// public static readonly Cue ShowUnLicensed = Cue.BoolCue("PressSettings", 15018); + +// public static readonly Cue PressModePresentationShare = Cue.BoolCue("PressModePresentationShare", 15101); +// public static readonly Cue PressModeVideoConf = Cue.BoolCue("PressModeVideoConf", 15102); +// public static readonly Cue PressModeAudioConf = Cue.BoolCue("PressModeAudioConf", 15103); + +// public static readonly Cue VisiblePresentationSourceList = Cue.BoolCue("VisiblePresentationSourceList", 15111); +// public static readonly Cue VisibleSystemIsOff = Cue.BoolCue("VisibleSystemIsOff", 15112); + +// public static readonly Cue VisibleAudioConfPopover = Cue.BoolCue("VisibleAudioConfPopover", 15201); + +// public static readonly Cue VisibleVideoConfPopover = Cue.BoolCue("VisibleVideoConfPopover", 15251); + +// public static readonly Cue TextRoomName = Cue.BoolCue("TextRoomName", 4001); +// public static readonly Cue TextPresentationShareButton = Cue.BoolCue("TextPresentationShareButton", 4011); + +// public static readonly Cue SplashMessage = Cue.StringCue("SplashMessage", 2101); +// } +//} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/Panels/SmartGraphicsTouchpanelControllerBase.cs b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/Panels/SmartGraphicsTouchpanelControllerBase.cs new file mode 100644 index 00000000..8e8b9192 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/Panels/SmartGraphicsTouchpanelControllerBase.cs @@ -0,0 +1,318 @@ +//using System; +//using System.Collections.Generic; +//using System.Linq; +//using Crestron.SimplSharp; +//using Crestron.SimplSharpPro; +//using Crestron.SimplSharpPro.DeviceSupport; + + +//namespace PepperDash.Essentials.Core +//{ +// public abstract class SmartGraphicsTouchpanelControllerBase : CrestronGenericBaseDevice +// { +// public BasicTriListWithSmartObject TriList { get; protected set; } +// public bool UsesSplashPage { get; set; } +// public string SplashMessage { get; set; } +// public bool ShowDate +// { +// set { TriList.BooleanInput[UiCue.ShowDate.Number].BoolValue = value; } +// } +// public bool ShowTime +// { +// set { TriList.BooleanInput[UiCue.ShowTime.Number].BoolValue = value; } +// } + +// //public abstract List FunctionList { get; } + + +// protected eMainModeType MainMode; +// protected SourceListItem CurrentPresentationControlDevice; + +// /// +// /// Defines the signal offset for the presentation device. Defaults to 100 +// /// +// public uint PresentationControlDeviceJoinOffset { get { return 100; } } + +// public enum eMainModeType +// { +// Presentation, Splash, Tech +// } + +// protected string SgdFilePath; +// public EssentialsRoom CurrentRoom { get; protected set; } +// protected Dictionary LoadedPageControllers +// = new Dictionary(); + +// static object RoomChangeLock = new object(); + +// /// +// /// Constructor +// /// +// public SmartGraphicsTouchpanelControllerBase(string key, string name, BasicTriListWithSmartObject triList, +// string sgdFilePath) +// : base(key, name, triList) +// { +// TriList = triList; +// if (string.IsNullOrEmpty(key)) throw new ArgumentNullException("key"); +// if (string.IsNullOrEmpty(sgdFilePath)) throw new ArgumentNullException("sgdFilePath"); +// SgdFilePath = sgdFilePath; +// TriList.LoadSmartObjects(SgdFilePath); +// UsesSplashPage = true; +// SplashMessage = "Welcome"; +// TriList.SigChange += Tsw_AnySigChange; +// foreach (var kvp in TriList.SmartObjects) +// kvp.Value.SigChange += this.Tsw_AnySigChange; +// } + +//#warning wire UI manipulating presses up here, typically in child classes... +// //public override bool CustomActivate() +// //{ +// // var baseSuccess = base.CustomActivate(); +// // if (!baseSuccess) return false; + + +// // // Wiring up the buttons with UOs +// // foreach (var uo in this.FunctionList) +// // { +// // if (uo.Cue.Number == 0) continue; +// // //if (uo is BoolCueActionPair) +// // // TriList.BooleanOutput[uo.Cue.Number].UserObject = uo; +// // //else if (uo is UShortCueActionPair) +// // // TriList.UShortOutput[uo.Cue.Number].UserObject = uo; +// // //else if (uo is StringCueActionPair) +// // // TriList.StringOutput[uo.Cue.Number].UserObject = uo; +// // } + +// // return true; +// //} + +// //public void SetCurrentRoom(EssentialsRoom room) +// //{ +// // if (CurrentRoom != null) +// // HideRoomUI(); +// // CurrentRoom = room; +// // ShowRoomUI(); +// //} + +// /// +// /// +// /// +// /// +// public void SetCurrentRoom(EssentialsRoom room) +// { +// if (CurrentRoom == room) return; + +// IBasicVolumeControls oldAudio = null; +// //Disconnect current room and audio device +// if (CurrentRoom != null) +// { +// HideRoomUI(); +// CurrentRoom.AudioDeviceWillChange -= CurrentRoom_AudioDeviceWillChange; +// CurrentRoom.PresentationSourceChange -= CurrentRoom_PresentationSourceChange; +// oldAudio = CurrentRoom.CurrentAudioDevice; +// } + +// CurrentRoom = room; +// IBasicVolumeControls newAudio = null; +// if (CurrentRoom != null) +// { +// CurrentRoom.AudioDeviceWillChange += this.CurrentRoom_AudioDeviceWillChange; +// CurrentRoom.PresentationSourceChange += this.CurrentRoom_PresentationSourceChange; +// SetControlSource(CurrentRoom.CurrentPresentationSourceInfo); +// newAudio = CurrentRoom.CurrentAudioDevice; +// ShowRoomUI(); +// } + +// SwapAudioDeviceControls(oldAudio, newAudio); +// } + +// /// +// /// Detaches and attaches an IVolumeFunctions device to the appropriate TP TriList signals. +// /// This will also add IVolumeNumeric if the device implements it. +// /// Overriding classes should call this. Overriding classes are responsible for +// /// linking up to hard keys, etc. +// /// +// /// May be null +// /// May be null +// protected virtual void SwapAudioDeviceControls(IBasicVolumeControls oldDev, IBasicVolumeControls newDev) +// { +// // Disconnect +// if (oldDev != null) +// { +// TriList.BooleanOutput[CommonBoolCue.VolumeDown.Number].UserObject = null; +// TriList.BooleanOutput[CommonBoolCue.VolumeUp.Number].UserObject = null; +// TriList.BooleanOutput[CommonBoolCue.MuteToggle.Number].UserObject = null; +// TriList.BooleanInput[CommonBoolCue.ShowVolumeButtons.Number].BoolValue = false; +// TriList.BooleanInput[CommonBoolCue.ShowVolumeSlider.Number].BoolValue = false; +// if (oldDev is IBasicVolumeWithFeedback) +// { +// var fbDev = oldDev as IBasicVolumeWithFeedback; +// TriList.UShortOutput[401].UserObject = null; +// fbDev.MuteFeedback.UnlinkInputSig(TriList.BooleanInput[403]); +// fbDev.VolumeLevelFeedback.UnlinkInputSig(TriList.UShortInput[401]); +// } +// } +// if (newDev != null) +// { +// TriList.BooleanInput[CommonBoolCue.ShowVolumeSlider.Number].BoolValue = true; +// TriList.SetBoolSigAction(401, newDev.VolumeUp); +// TriList.SetBoolSigAction(402, newDev.VolumeDown); +// TriList.SetSigFalseAction(405, newDev.MuteToggle); + +// if (newDev is IBasicVolumeWithFeedback) // Show slider +// { +// var fbDev = newDev as IBasicVolumeWithFeedback; +// TriList.BooleanInput[406].BoolValue = false; +// TriList.BooleanInput[407].BoolValue = true; +// TriList.UShortOutput[401].UserObject = new Action(fbDev.SetVolume); +// fbDev.VolumeLevelFeedback.LinkInputSig(TriList.UShortInput[401]); +// } +// else // Show buttons only +// { +// TriList.BooleanInput[406].BoolValue = true; +// TriList.BooleanInput[407].BoolValue = false; +// } + +// } +// } + + +// /// +// /// Does nothing. Override to add functionality when calling SetCurrentRoom +// /// +// protected virtual void HideRoomUI() { } + +// /// +// /// Does nothing. Override to add functionality when calling SetCurrentRoom +// /// +// protected virtual void ShowRoomUI() { } + +// /// +// /// Sets up the current presentation device and updates statuses if the device is capable. +// /// +// protected void SetControlSource(SourceListItem newSource) +// { +// if (CurrentPresentationControlDevice != null) +// { +// HideCurrentPresentationSourceUi(); +//#warning Get button methods from RESI, and find a more-well-defined way to wire up feedbacks + +// // Unhook presses and things +// //if (CurrentPresentationControlDevice is IHasCueActionList) +// //{ +// // foreach (var uo in (CurrentPresentationControlDevice as IHasCueActionList).CueActionList) +// // { +// // if (uo.Cue.Number == 0) continue; +// // if (uo is BoolCueActionPair) +// // { +// // var bSig = TriList.BooleanOutput[uo.Cue.Number]; +// // // Disconnection should also clear bool sigs in case they are pressed and +// // // might be orphaned +// // if (bSig.BoolValue) +// // (bSig.UserObject as BoolCueActionPair).Invoke(false); +// // bSig.UserObject = null; +// // } +// // else if (uo is UShortCueActionPair) +// // TriList.UShortOutput[uo.Cue.Number].UserObject = null; +// // else if (uo is StringCueActionPair) +// // TriList.StringOutput[uo.Cue.Number].UserObject = null; +// // } +// //} +// // unhook outputs +// if (CurrentPresentationControlDevice is IHasFeedback) +// { +// foreach (var fb in (CurrentPresentationControlDevice as IHasFeedback).Feedbacks) +// { +// if (fb.Cue.Number == 0) continue; +// if (fb is BoolFeedback) +// (fb as BoolFeedback).UnlinkInputSig(TriList.BooleanInput[fb.Cue.Number]); +// else if (fb is IntFeedback) +// (fb as IntFeedback).UnlinkInputSig(TriList.UShortInput[fb.Cue.Number]); +// else if (fb is StringFeedback) +// (fb as StringFeedback).UnlinkInputSig(TriList.StringInput[fb.Cue.Number]); +// } +// } +// } +// CurrentPresentationControlDevice = newSource; +// //connect presses and things +// //if (newSource is IHasCueActionList) // This has functions, get 'em +// //{ +// // foreach (var ao in (newSource as IHasCueActionList).CueActionList) +// // { +// // if (ao.Cue.Number == 0) continue; +// // if (ao is BoolCueActionPair) +// // TriList.BooleanOutput[ao.Cue.Number].UserObject = ao; +// // else if (ao is UShortCueActionPair) +// // TriList.UShortOutput[ao.Cue.Number].UserObject = ao; +// // else if (ao is StringCueActionPair) +// // TriList.StringOutput[ao.Cue.Number].UserObject = ao; +// // } +// //} +// // connect outputs (addInputSig should update sig) +// if (CurrentPresentationControlDevice is IHasFeedback) +// { +// foreach (var fb in (CurrentPresentationControlDevice as IHasFeedback).Feedbacks) +// { +// if (fb.Cue.Number == 0) continue; +// if (fb is BoolFeedback) +// (fb as BoolFeedback).LinkInputSig(TriList.BooleanInput[fb.Cue.Number]); +// else if (fb is IntFeedback) +// (fb as IntFeedback).LinkInputSig(TriList.UShortInput[fb.Cue.Number]); +// else if (fb is StringFeedback) +// (fb as StringFeedback).LinkInputSig(TriList.StringInput[fb.Cue.Number]); +// } +// } +// ShowCurrentPresentationSourceUi(); +// } + +// /// +// /// Reveals the basic UI for the current device +// /// +// protected virtual void ShowCurrentPresentationSourceUi() +// { +// } + +// /// +// /// Hides the UI for the current device and calls for a feedback signal cleanup +// /// +// protected virtual void HideCurrentPresentationSourceUi() +// { +// } + + +// /// +// /// +// /// +// void CurrentRoom_PresentationSourceChange(object sender, EssentialsRoomSourceChangeEventArgs args) +// { +// SetControlSource(args.NewSource); +// } + + +// /// +// /// +// /// +// void CurrentRoom_AudioDeviceWillChange(object sender, EssentialsRoomAudioDeviceChangeEventArgs e) +// { +// SwapAudioDeviceControls(e.OldDevice, e.NewDevice); +// } + + + +// /// +// /// Panel event handler +// /// +// void Tsw_AnySigChange(object currentDevice, SigEventArgs args) +// { +// // plugged in commands +// object uo = args.Sig.UserObject; + +// if (uo is Action) +// (uo as Action)(args.Sig.BoolValue); +// else if (uo is Action) +// (uo as Action)(args.Sig.UShortValue); +// else if (uo is Action) +// (uo as Action)(args.Sig.StringValue); +// } +// } +//} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/SRL/SourceListSubpageReferenceList.cs b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/SRL/SourceListSubpageReferenceList.cs new file mode 100644 index 00000000..6eee8bd6 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/FOR REFERENCE UI/SRL/SourceListSubpageReferenceList.cs @@ -0,0 +1,164 @@ +//using System; +//using System.Collections.Generic; +//using System.Linq; +//using System.Text; +//using Crestron.SimplSharp; +//using Crestron.SimplSharpPro; +//using Crestron.SimplSharpPro.DeviceSupport; +//using Crestron.SimplSharpPro.UI; + +//using PepperDash.Core; +//using PepperDash.Essentials.Core; + +//namespace PepperDash.Essentials +//{ + +// //***************************************************************************** +// /// +// /// Wrapper class for subpage reference list. Contains helpful methods to get at the various signal groupings +// /// and to get individual signals using an index and a join. +// /// +// public class SourceListSubpageReferenceList : SubpageReferenceList +// { +// public const uint SmartObjectJoin = 3801; + +// Action SourceSelectCallback; + +// EssentialsRoom CurrentRoom; + +// public SourceListSubpageReferenceList(BasicTriListWithSmartObject tl, +// Action sourceSelectCallback) +// : base(tl, SmartObjectJoin, 3, 1, 3) +// { +// SourceSelectCallback = sourceSelectCallback; +// } + +// void SetSourceList(Dictionary dict) +// { +// // Iterate all positions, including ones missing from the dict. +// var max = dict.Keys.Max(); +// for (uint i = 1; i <= max; i++) +// { +// // Add the source if it's in the dict +// if (dict.ContainsKey(i)) +// { +// Items.Add(new SourceListSubpageReferenceListItem(i, dict[i], this, SourceSelectCallback)); +// // Plug the callback function into the buttons +// } +// // Blank the line +// else +// Items.Add(new SourceListSubpageReferenceListItem(i, null, +// this, SourceSelectCallback)); +// } +// Count = (ushort)max; +// } + +// /// +// /// Links the SRL to the Room's PresentationSourceChange event for updating of the UI +// /// +// /// +// public void AttachToRoom(EssentialsRoom room) +// { +// CurrentRoom = room; +// SetSourceList(room.Sources); +// CurrentRoom.PresentationSourceChange -= CurrentRoom_PresentationSourceChange; +// CurrentRoom.PresentationSourceChange += CurrentRoom_PresentationSourceChange; +// SetPresentationSourceFb(CurrentRoom.CurrentPresentationSource); +// } + +// /// +// /// Disconnects the SRL from a Room's PresentationSourceChange +// /// +// public void DetachFromCurrentRoom() +// { +// ClearPresentationSourceFb(CurrentRoom.CurrentPresentationSource); +// if(CurrentRoom != null) +// CurrentRoom.PresentationSourceChange -= CurrentRoom_PresentationSourceChange; +// CurrentRoom = null; +// } + +// // Handler to route source changes into list feedback +// void CurrentRoom_PresentationSourceChange(object sender, EssentialsRoomSourceChangeEventArgs args) +// { +// Debug.Console(2, "SRL received source change"); +// ClearPresentationSourceFb(args.OldSource); +// SetPresentationSourceFb(args.NewSource); +// } + +// void ClearPresentationSourceFb(IPresentationSource source) +// { +// if (source == null) return; +// var oldSourceItem = (SourceListSubpageReferenceListItem)Items.FirstOrDefault( +// i => ((SourceListSubpageReferenceListItem)i).SourceDevice == source); +// if (oldSourceItem != null) +// oldSourceItem.ClearFeedback(); +// } + +// void SetPresentationSourceFb(SourceListItem source) +// { +// if (source == null) return; +// // Now set the new source to light up +// var newSourceItem = (SourceListSubpageReferenceListItem)Items.FirstOrDefault( +// i => ((SourceListSubpageReferenceListItem)i).SourceDevice == source); +// if (newSourceItem != null) +// newSourceItem.SetFeedback(); +// } +// } + +// public class SourceListSubpageReferenceListItem : SubpageReferenceListItem +// { +// public readonly IPresentationSource SourceDevice; + +// public const uint ButtonPressJoin = 1; +// public const uint SelectedFeedbackJoin = 2; +// public const uint ButtonTextJoin = 1; +// public const uint IconNameJoin = 2; + +// public SourceListSubpageReferenceListItem(uint index, SourceListItem srcDeviceItem, +// SubpageReferenceList owner, Action sourceSelectCallback) +// : base(index, owner) +// { +// if (srcDeviceItem == null) throw new ArgumentNullException("srcDeviceItem"); +// if (owner == null) throw new ArgumentNullException("owner"); +// if (sourceSelectCallback == null) throw new ArgumentNullException("sourceSelectCallback"); + + +// SourceDevice = srcDeviceItem; +// var nameSig = owner.StringInputSig(index, ButtonTextJoin); +// // Should be able to see if there is not enough buttons right here +// if (nameSig == null) +// { +// Debug.Console(0, "ERROR: Item {0} does not exist on source list SRL", index); +// return; +// } +// nameSig.StringValue = srcDeviceItem.Name; +// owner.StringInputSig(index, IconNameJoin).StringValue = srcDeviceItem.Icon; + +// // Assign a source selection action to the appropriate button's UserObject - on release +// owner.GetBoolFeedbackSig(index, ButtonPressJoin).UserObject = new Action(b => +// { if (!b) sourceSelectCallback(index); }); + +// // hook up the video icon +// var videoDev = srcDeviceItem as IAttachVideoStatus; +// if (videoDev != null) +// { +// var status = videoDev.GetVideoStatuses(); +// if (status != null) +// { +// Debug.Console(1, "Linking {0} video status to SRL", videoDev.Key); +// videoDev.GetVideoStatuses().VideoSyncFeedback.LinkInputSig(owner.BoolInputSig(index, 3)); +// } +// } +// } + +// public void SetFeedback() +// { +// Owner.BoolInputSig(Index, SelectedFeedbackJoin).BoolValue = true; +// } + +// public void ClearFeedback() +// { +// Owner.BoolInputSig(Index, SelectedFeedbackJoin).BoolValue = false; +// } +// } +//} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/Fusion/FusionSystemController.cs b/PepperDashEssentials/PepperDashEssentials/Fusion/FusionSystemController.cs new file mode 100644 index 00000000..b410f10e --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Fusion/FusionSystemController.cs @@ -0,0 +1,505 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +using Crestron.SimplSharp; +using Crestron.SimplSharpPro; +using Crestron.SimplSharpPro.DeviceSupport; +using Crestron.SimplSharpPro.Fusion; + +using PepperDash.Essentials.Core; + +using PepperDash.Core; +using PepperDash.Essentials; +using PepperDash.Essentials.Devices.Common; + + +namespace PepperDash.Essentials.Fusion +{ + public class EssentialsHuddleSpaceFusionSystemController : Device + { + FusionRoom FusionRoom; + EssentialsHuddleSpaceRoom Room; + Dictionary SourceToFeedbackSigs = + new Dictionary(); + + StatusMonitorCollection ErrorMessageRollUp; + + StringSigData SourceNameSig; + + public EssentialsHuddleSpaceFusionSystemController(EssentialsHuddleSpaceRoom room, uint ipId) + : base(room.Key + "-fusion") + { + Room = room; + + CreateSymbolAndBasicSigs(ipId); + SetUpSources(); + SetUpCommunitcationMonitors(); + SetUpDisplay(); + SetUpError(); + + // test assets --- THESE ARE BOTH WIRED TO AssetUsage somewhere internally. + var ta1 = FusionRoom.CreateStaticAsset(1, "Test asset 1", "Awesome Asset", "Awesome123"); + ta1.AssetError.InputSig.StringValue = "This should be error"; + + + var ta2 = FusionRoom.CreateStaticAsset(2, "Test asset 2", "Awesome Asset", "Awesome1232"); + ta2.AssetUsage.InputSig.StringValue = "This should be usage"; + + // Make it so! + FusionRVI.GenerateFileForAllFusionDevices(); + } + + void CreateSymbolAndBasicSigs(uint ipId) + { + FusionRoom = new FusionRoom(ipId, Global.ControlSystem, Room.Name, "awesomeGuid-" + Room.Key); + FusionRoom.Register(); + + FusionRoom.FusionStateChange += new FusionStateEventHandler(FusionRoom_FusionStateChange); + + // Room to fusion room + Room.OnFeedback.LinkInputSig(FusionRoom.SystemPowerOn.InputSig); + SourceNameSig = FusionRoom.CreateOffsetStringSig(50, "Source - Name", eSigIoMask.InputSigOnly); + // Don't think we need to get current status of this as nothing should be alive yet. + Room.CurrentSourceInfoChange += new SourceInfoChangeHandler(Room_CurrentSourceInfoChange); + + + FusionRoom.SystemPowerOn.OutputSig.SetSigFalseAction(Room.PowerOnToDefaultOrLastSource); + FusionRoom.SystemPowerOff.OutputSig.SetSigFalseAction(() => Room.RunRouteAction("roomOff")); + // NO!! room.RoomIsOn.LinkComplementInputSig(FusionRoom.SystemPowerOff.InputSig); + FusionRoom.ErrorMessage.InputSig.StringValue = + "3: 7 Errors: This is a really long error message;This is a really long error message;This is a really long error message;This is a really long error message;This is a really long error message;This is a really long error message;This is a really long error message;"; + + } + + void SetUpSources() + { + // Sources + var dict = ConfigReader.ConfigObject.GetSourceListForKey(Room.SourceListKey); + if (dict != null) + { + // NEW PROCESS: + // Make these lists and insert the fusion attributes by iterating these + var setTopBoxes = dict.Where(d => d.Value.SourceDevice is ISetTopBoxControls); + uint i = 1; + foreach (var kvp in setTopBoxes) + { + TryAddRouteActionSigs("Source - TV " + i, 115 + i, kvp.Key, kvp.Value.SourceDevice); + i++; + if (i > 5) // We only have five spots + break; + } + + var discPlayers = dict.Where(d => d.Value.SourceDevice is IDiscPlayerControls); + i = 1; + foreach (var kvp in discPlayers) + { + TryAddRouteActionSigs("Source - DVD " + i, 120 + i, kvp.Key, kvp.Value.SourceDevice); + i++; + if (i > 5) // We only have five spots + break; + } + + var laptops = dict.Where(d => d.Value.SourceDevice is Laptop); + i = 1; + foreach (var kvp in laptops) + { + TryAddRouteActionSigs("Source - Laptop " + i, 100 + i, kvp.Key, kvp.Value.SourceDevice); + i++; + if (i > 10) // We only have ten spots??? + break; + } + + // REMOVE THIS PROCESS: + //foreach (var kvp in dict) + //{ + // var src = kvp.Value; + // //var srcNum = src.Key; + // var pSrc = src.SourceDevice; + // if (pSrc == null) + // continue; + + // var keyNum = ExtractNumberFromKey(pSrc.Key); + // if (keyNum == -1) + // { + // Debug.Console(1, this, "WARNING: Cannot link source '{0}' to numbered Fusion attributes", pSrc.Key); + // continue; + // } + // string attrName = null; + // uint attrNum = Convert.ToUInt32(keyNum); + + // if (pSrc is ISetTopBoxControls) + // { + // attrName = "Source - TV " + keyNum; + // attrNum += 115; // TV starts at 116 + // } + // else if (pSrc is IDiscPlayerControls) + // { + // attrName = "Source - DVD " + keyNum; + // attrNum += 120; // DVD starts at 121 + // } + // //else if (pSrc is Pc) + // //{ + // // attrName = "Source - PC " + keyNum; + // // attrNum += 110; // PC starts at 111 + // //} + // else if (pSrc is Laptop) + // { + // attrName = "Source - Laptop " + keyNum; + // attrNum += 100; // Laptops start at 101 + // } + // //else if (pSrc is IVCR) + // //{ + // // attrName = "Source - VCR " + keyNum; + // // attrNum += 125; // VCRs start at 126 + // //} + + + // if (attrName == null) + // { + // Debug.Console(1, this, + // "Source '{0}' does not have corresponsing Fusion attribute type, skipping", + // src.SourceKey); + // continue; + // } + // Debug.Console(2, this, "Creating attribute '{0}' with join {1} for source {2}", + // attrName, attrNum, pSrc.Key); + // try + // { + // var sigD = FusionRoom.CreateOffsetBoolSig(attrNum, attrName, eSigIoMask.InputOutputSig); + // // Need feedback when this source is selected + // // Event handler, added below, will compare source changes with this sig dict + // SourceToFeedbackSigs.Add(pSrc, sigD.InputSig); + + // // And respond to selection in Fusion + // sigD.OutputSig.SetSigFalseAction(() => Room.RunRouteAction(kvp.Key)); + // } + // catch (Exception) + // { + // Debug.Console(2, this, "Error creating Fusion signal {0} {1} for device '{2}'. THIS NEEDS REWORKING", attrNum, attrName, pSrc.Key); + // } + //} + } + else + { + Debug.Console(1, this, "WARNING: Config source list '{0}' not found for room '{1}'", + Room.SourceListKey, Room.Key); + } + } + + void TryAddRouteActionSigs(string attrName, uint attrNum, string routeKey, Device pSrc) + { + Debug.Console(2, this, "Creating attribute '{0}' with join {1} for source {2}", + attrName, attrNum, pSrc.Key); + try + { + var sigD = FusionRoom.CreateOffsetBoolSig(attrNum, attrName, eSigIoMask.InputOutputSig); + // Need feedback when this source is selected + // Event handler, added below, will compare source changes with this sig dict + SourceToFeedbackSigs.Add(pSrc, sigD.InputSig); + + // And respond to selection in Fusion + sigD.OutputSig.SetSigFalseAction(() => Room.RunRouteAction(routeKey)); + } + catch (Exception) + { + Debug.Console(2, this, "Error creating Fusion signal {0} {1} for device '{2}'. THIS NEEDS REWORKING", attrNum, attrName, pSrc.Key); + } + } + + /// + /// + /// + void SetUpCommunitcationMonitors() + { + // Attach to all room's devices with monitors. + //foreach (var dev in DeviceManager.Devices) + foreach (var dev in DeviceManager.GetDevices()) + { + if (!(dev is ICommunicationMonitor)) + continue; + + var keyNum = ExtractNumberFromKey(dev.Key); + if (keyNum == -1) + { + Debug.Console(1, this, "WARNING: Cannot link device '{0}' to numbered Fusion monitoring attributes", + dev.Key); + continue; + } + string attrName = null; + uint attrNum = Convert.ToUInt32(keyNum); + + //if (dev is SmartGraphicsTouchpanelControllerBase) + //{ + // if (attrNum > 10) + // continue; + // attrName = "Device Ok - Touch Panel " + attrNum; + // attrNum += 200; + //} + //// add xpanel here + + //else + if (dev is DisplayBase) + { + if (attrNum > 10) + continue; + attrName = "Device Ok - Display " + attrNum; + attrNum += 240; + } + //else if (dev is DvdDeviceBase) + //{ + // if (attrNum > 5) + // continue; + // attrName = "Device Ok - DVD " + attrNum; + // attrNum += 260; + //} + // add set top box + + // add Cresnet roll-up + + // add DM-devices roll-up + + if (attrName != null) + { + // Link comm status to sig and update + var sigD = FusionRoom.CreateOffsetBoolSig(attrNum, attrName, eSigIoMask.InputSigOnly); + var smd = dev as ICommunicationMonitor; + sigD.InputSig.BoolValue = smd.CommunicationMonitor.Status == MonitorStatus.IsOk; + smd.CommunicationMonitor.StatusChange += (o, a) => + { sigD.InputSig.BoolValue = a.Status == MonitorStatus.IsOk; }; + Debug.Console(0, this, "Linking '{0}' communication monitor to Fusion '{1}'", dev.Key, attrName); + } + } + } + + void SetUpDisplay() + { + var display = Room.DefaultDisplay as DisplayBase; + if (display == null) + { + Debug.Console(1, this, "Cannot link null display to Fusion"); + return; + } + + var dispPowerOnAction = new Action(b => { if (!b) display.PowerOn(); }); + var dispPowerOffAction = new Action(b => { if (!b) display.PowerOff(); }); + + // Display to fusion room sigs + FusionRoom.DisplayPowerOn.OutputSig.UserObject = dispPowerOnAction; + FusionRoom.DisplayPowerOff.OutputSig.UserObject = dispPowerOffAction; + display.PowerIsOnFeedback.LinkInputSig(FusionRoom.DisplayPowerOn.InputSig); + if (display is IDisplayUsage) + (display as IDisplayUsage).LampHours.LinkInputSig(FusionRoom.DisplayUsage.InputSig); + + // static assets --------------- testing + // Make a display asset + var dispAsset = FusionRoom.CreateStaticAsset(3, display.Name, "Display", "awesomeDisplayId" + Room.Key); + dispAsset.PowerOn.OutputSig.UserObject = dispPowerOnAction; + dispAsset.PowerOff.OutputSig.UserObject = dispPowerOffAction; + display.PowerIsOnFeedback.LinkInputSig(dispAsset.PowerOn.InputSig); + // NO!! display.PowerIsOn.LinkComplementInputSig(dispAsset.PowerOff.InputSig); + // Use extension methods + dispAsset.TrySetMakeModel(display); + dispAsset.TryLinkAssetErrorToCommunication(display); + } + + void SetUpError() + { + // Roll up ALL device errors + ErrorMessageRollUp = new StatusMonitorCollection(this); + foreach (var dev in DeviceManager.GetDevices()) + { + var md = dev as ICommunicationMonitor; + if (md != null) + { + ErrorMessageRollUp.AddMonitor(md.CommunicationMonitor); + Debug.Console(2, this, "Adding '{0}' to room's overall error monitor", md.CommunicationMonitor.Parent.Key); + } + } + ErrorMessageRollUp.Start(); + FusionRoom.ErrorMessage.InputSig.StringValue = ErrorMessageRollUp.Message; + ErrorMessageRollUp.StatusChange += (o, a) => + { + FusionRoom.ErrorMessage.InputSig.StringValue = ErrorMessageRollUp.Message; + }; + + } + + + + + /// + /// Helper to get the number from the end of a device's key string + /// + /// -1 if no number matched + int ExtractNumberFromKey(string key) + { + var capture = System.Text.RegularExpressions.Regex.Match(key, @"\D+(\d+)"); + if (!capture.Success) + return -1; + else return Convert.ToInt32(capture.Groups[1].Value); + } + + /// + /// Event handler for when room source changes + /// + void Room_CurrentSourceInfoChange(EssentialsRoomBase room, SourceListItem info, ChangeType type) + { + // Handle null. Nothing to do when switching from or to null + if (info == null || info.SourceDevice == null) + return; + + var dev = info.SourceDevice; + if (type == ChangeType.WillChange) + { + if (SourceToFeedbackSigs.ContainsKey(dev)) + SourceToFeedbackSigs[dev].BoolValue = false; + } + else + { + if (SourceToFeedbackSigs.ContainsKey(dev)) + SourceToFeedbackSigs[dev].BoolValue = true; + var name = (room == null ? "" : room.Name); + SourceNameSig.InputSig.StringValue = name; + } + } + + void FusionRoom_FusionStateChange(FusionBase device, FusionStateEventArgs args) + { + + // The sig/UO method: Need separate handlers for fixed and user sigs, all flavors, + // even though they all contain sigs. + + var sigData = (args.UserConfiguredSigDetail as BooleanSigDataFixedName); + if (sigData != null) + { + var outSig = sigData.OutputSig; + if (outSig.UserObject is Action) + (outSig.UserObject as Action).Invoke(outSig.BoolValue); + else if (outSig.UserObject is Action) + (outSig.UserObject as Action).Invoke(outSig.UShortValue); + else if (outSig.UserObject is Action) + (outSig.UserObject as Action).Invoke(outSig.StringValue); + return; + } + + var attrData = (args.UserConfiguredSigDetail as BooleanSigData); + if (attrData != null) + { + var outSig = attrData.OutputSig; + if (outSig.UserObject is Action) + (outSig.UserObject as Action).Invoke(outSig.BoolValue); + else if (outSig.UserObject is Action) + (outSig.UserObject as Action).Invoke(outSig.UShortValue); + else if (outSig.UserObject is Action) + (outSig.UserObject as Action).Invoke(outSig.StringValue); + return; + } + + } + } + + + public static class FusionRoomExtensions + { + /// + /// Creates and returns a fusion attribute. The join number will match the established Simpl + /// standard of 50+, and will generate a 50+ join in the RVI. It calls + /// FusionRoom.AddSig with join number - 49 + /// + /// The new attribute + public static BooleanSigData CreateOffsetBoolSig(this FusionRoom fr, uint number, string name, eSigIoMask mask) + { + if (number < 50) throw new ArgumentOutOfRangeException("number", "Cannot be less than 50"); + number -= 49; + fr.AddSig(eSigType.Bool, number, name, mask); + return fr.UserDefinedBooleanSigDetails[number]; + } + + /// + /// Creates and returns a fusion attribute. The join number will match the established Simpl + /// standard of 50+, and will generate a 50+ join in the RVI. It calls + /// FusionRoom.AddSig with join number - 49 + /// + /// The new attribute + public static UShortSigData CreateOffsetUshortSig(this FusionRoom fr, uint number, string name, eSigIoMask mask) + { + if (number < 50) throw new ArgumentOutOfRangeException("number", "Cannot be less than 50"); + number -= 49; + fr.AddSig(eSigType.UShort, number, name, mask); + return fr.UserDefinedUShortSigDetails[number]; + } + + /// + /// Creates and returns a fusion attribute. The join number will match the established Simpl + /// standard of 50+, and will generate a 50+ join in the RVI. It calls + /// FusionRoom.AddSig with join number - 49 + /// + /// The new attribute + public static StringSigData CreateOffsetStringSig(this FusionRoom fr, uint number, string name, eSigIoMask mask) + { + if (number < 50) throw new ArgumentOutOfRangeException("number", "Cannot be less than 50"); + number -= 49; + fr.AddSig(eSigType.String, number, name, mask); + return fr.UserDefinedStringSigDetails[number]; + } + + /// + /// Creates and returns a static asset + /// + /// the new asset + public static FusionStaticAsset CreateStaticAsset(this FusionRoom fr, uint number, string name, string type, string instanceId) + { + fr.AddAsset(eAssetType.StaticAsset, number, name, type, instanceId); + return fr.UserConfigurableAssetDetails[number].Asset as FusionStaticAsset; + } + } + + //************************************************************************************************ + /// + /// Extensions to enhance Fusion room, asset and signal creation. + /// + public static class FusionStaticAssetExtensions + { + /// + /// Tries to set a Fusion asset with the make and model of a device. + /// If the provided Device is IMakeModel, will set the corresponding parameters on the fusion static asset. + /// Otherwise, does nothing. + /// + public static void TrySetMakeModel(this FusionStaticAsset asset, Device device) + { + var mm = device as IMakeModel; + if (mm != null) + { + asset.ParamMake.Value = mm.DeviceMake; + asset.ParamModel.Value = mm.DeviceModel; + } + } + + /// + /// Tries to attach the AssetError input on a Fusion asset to a Device's + /// CommunicationMonitor.StatusChange event. Does nothing if the device is not + /// IStatusMonitor + /// + /// + /// + public static void TryLinkAssetErrorToCommunication(this FusionStaticAsset asset, Device device) + { + if (device is ICommunicationMonitor) + { + var monitor = (device as ICommunicationMonitor).CommunicationMonitor; + monitor.StatusChange += (o, a) => + { + // Link connected and error inputs on asset + asset.Connected.InputSig.BoolValue = a.Status == MonitorStatus.IsOk; + asset.AssetError.InputSig.StringValue = a.Status.ToString(); + }; + // set current value + asset.Connected.InputSig.BoolValue = monitor.Status == MonitorStatus.IsOk; + asset.AssetError.InputSig.StringValue = monitor.Status.ToString(); + } + } + } + +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/HttpApiHandler.cs b/PepperDashEssentials/PepperDashEssentials/HttpApiHandler.cs new file mode 100644 index 00000000..f3dca1e6 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/HttpApiHandler.cs @@ -0,0 +1,266 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using Crestron.SimplSharp.CrestronIO; +using Crestron.SimplSharp.Net.Http; + +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.Http; +using PepperDash.Core; + +namespace PepperDash.Essentials +{ + public class EssentialsHttpApiHandler + { + string ConfigPath; + string PresetsPathPrefix; + EssentialsHttpServer Server; + + /// + /// + /// + /// HTTP server to attach to + /// The full path to configuration file + /// The folder prefix for the presets path, eq "\HTML\presets\" + public EssentialsHttpApiHandler(EssentialsHttpServer server, string configPath, string presetsPathPrefix) + { + if (server == null) throw new ArgumentNullException("server"); + Server = server; + ConfigPath = configPath; + PresetsPathPrefix = presetsPathPrefix; + server.ApiRequest += Server_ApiRequest; + } + + + void Server_ApiRequest(object sender, Crestron.SimplSharp.Net.Http.OnHttpRequestArgs args) + { + try + { + var path = args.Request.Path.ToLower(); + + if (path == "/api/config") + HandleApiConfig(args); + else if (path.StartsWith("/api/presetslist/")) + HandleApiPresetsList(args); + else if (path == "/api/presetslists") + HandleApiGetPresetsLists(args.Request, args.Response); + else + { + args.Response.Code = 404; + return; + } + args.Response.Header.SetHeaderValue("Access-Control-Allow-Origin", "*"); + args.Response.Header.SetHeaderValue("Access-Control-Allow-Methods", "GET, POST, PATCH, PUT, DELETE, OPTIONS"); + } + catch (Exception e) + { + Debug.Console(1, "Uncaught HTTP server error: \n{0}", e); + args.Response.Code = 500; + } + } + + /// + /// GET will return the running configuration. POST will attempt to take in a new config + /// and restart the program. + /// + void HandleApiConfig(OnHttpRequestArgs args) + { + var request = args.Request; + if (request.Header.RequestType == "GET") + { + if (File.Exists(ConfigPath)) + { + Debug.Console(2, "Sending config:{0}", ConfigPath); + args.Response.Header.ContentType = EssentialsHttpServer.GetContentType(new FileInfo(ConfigPath).Extension); + args.Response.ContentStream = new FileStream(ConfigPath, FileMode.Open, FileAccess.Read); + } + } + else if (request.Header.RequestType == "POST") + { + Debug.Console(2, "Post type: '{0}'", request.Header.ContentType); + + // Make sure we're receiving at least good json + Debug.Console(1, "Receving new config"); + if (GetContentStringJson(args) == null) + return; + + //---------------------------- try to move these into common method + // Move current file aside + var bakPath = ConfigPath + ".bak"; + if (File.Exists(bakPath)) + File.Delete(bakPath); + File.Move(ConfigPath, bakPath); + + // Write the file + using (FileStream fs = File.Open(ConfigPath, FileMode.OpenOrCreate)) + using (StreamWriter sw = new StreamWriter(fs)) + { + try + { + sw.Write(args.Request.ContentString); + } + catch (Exception e) + { + string err = string.Format("Error writing received config file:\r{0}", e); + CrestronConsole.PrintLine(err); + ErrorLog.Warn(err); + // Put file back + File.Move(ConfigPath + ".bak", ConfigPath); + args.Response.Code = 500; + return; + } + } + + // If client says "yeah, restart" and has a good token + // Restart program + string consoleResponse = null; + var restart = CrestronConsole.SendControlSystemCommand("progreset -p:" + + InitialParametersClass.ApplicationNumber, ref consoleResponse); + if (!restart) Debug.Console(0, "CAN'T DO THAT YO: {0}", consoleResponse); + } + } + + void HandleApiPresetsList(OnHttpRequestArgs args) + { + var listPath = PresetsPathPrefix + args.Request.Path.Remove(0, 17); + Debug.Console(2, "Checking for preset list '{0}'", listPath); + + if (args.Request.Header.RequestType == "GET") + { + if (File.Exists(listPath)) + { + Debug.Console(2, "Sending presets file:{0}", listPath); + args.Response.Header.ContentType = EssentialsHttpServer.GetContentType(new FileInfo(listPath).Extension); + args.Response.ContentStream = new FileStream(listPath, FileMode.Open, FileAccess.Read); + } + } + else if (args.Request.Header.RequestType == "POST") + { + // Make sure we're receiving at least good json + Debug.Console(1, "Receving new presets"); + if (GetContentStringJson(args) == null) + return; + + //---------------------------- try to move these into common method + // Move current file aside + var bakPath = listPath + ".new"; + Debug.Console(2, "Moving presets file to {0}", bakPath); + if(File.Exists(bakPath)) + File.Delete(bakPath); + File.Move(listPath, bakPath); + + Debug.Console(2, "Writing new file"); + // Write the file + using (FileStream fs = File.OpenWrite(listPath)) + using (StreamWriter sw = new StreamWriter(fs)) + { + try + { + Debug.Console(2, "Writing {1}, {0} bytes", args.Request.ContentString.Length, listPath); + sw.Write(args.Request.ContentString); + } + catch (Exception e) + { + string err = string.Format("Error writing received presets file:\r{0}", e); + CrestronConsole.PrintLine(err); + ErrorLog.Warn(err); + // Put file back + File.Move(listPath + ".bak", listPath); + args.Response.Code = 500; + return; + } + } + } + } + + + void HandleApiGetPresetsLists(HttpServerRequest request, HttpServerResponse response) + { + if (request.Header.RequestType != "GET") + { + response.Code = 404; // This should be a 405 with an allow header + return; + } + + if (Directory.Exists(PresetsPathPrefix)) + { + //CrestronConsole.PrintLine("Parsing presets directory"); + List files = Directory.GetFiles(PresetsPathPrefix, "*.json") + .ToList().Select(f => Path.GetFileName(f)).ToList(); + if (files.Count > 0) + files.Sort(); + var json = JsonConvert.SerializeObject(files); + response.Header.ContentType = "application/json"; + response.ContentString = json; + } + + // //CrestronConsole.PrintLine("Found {0} files", files.Count); + // JObject jo = new JObject(); + // JArray ja = new JArray(); + + // foreach (var filename in files) + // { + // try + // { + // using (StreamReader sr = new StreamReader(filename)) + // { + // JObject tempJo = JObject.Parse(sr.ReadToEnd()); + // if (tempJo.Value("content").Equals("presetsList")) + // { + // var jItem = new JObject(); // make a new object + // jItem.Add("Name", tempJo["name"]); + // jItem.Add("File", filename); + // jItem.Add("Url", Uri.EscapeUriString(new Uri( + // filename.Replace("\\html", "") + // .Replace("\\HTML", "") + // .Replace('\\', '/'), UriKind.Relative).ToString())); + // ja.Add(jItem); // add to array + // } + // else + // CrestronConsole.PrintLine("Cannot use presets file '{0}'", filename); + // } + // } + // catch + // { + // // ignore failures - maybe delete them + // CrestronConsole.PrintLine("Unable to read presets file '{0}'", filename); + // } + // } + // jo.Add("PresetChannelLists", ja); + // //CrestronConsole.PrintLine(jo.ToString()); + // response.Header.ContentType = "application/json"; + // response.ContentString = jo.ToString(); + //} + //else + // CrestronConsole.PrintLine("No presets files in directory"); + } + + /// + /// Simply does what it says + /// + JObject GetContentStringJson(OnHttpRequestArgs args) + { + //var content = args.Request.ContentString; + //Debug.Console(1, "{0}", content); + + try + { + // just see if it parses properly + return JObject.Parse(args.Request.ContentString); + } + catch (Exception e) + { + string err = string.Format("JSON Error reading config file:\r{0}", e); + CrestronConsole.PrintLine(err); + ErrorLog.Warn(err); + args.Response.Code = 400; // Bad request + return null; + } + } + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/PepperDashEssentials.csproj b/PepperDashEssentials/PepperDashEssentials/PepperDashEssentials.csproj new file mode 100644 index 00000000..96b447d5 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/PepperDashEssentials.csproj @@ -0,0 +1,189 @@ + + + Release + AnyCPU + 9.0.30729 + 2.0 + {1BED5BA9-88C4-4365-9362-6F4B128071D3} + Library + Properties + PepperDash.Essentials + PepperDashEssentials + {0B4745B0-194B-4BB6-8E21-E9057CA92230};{4D628B5B-2FBC-4AA6-8C16-197242AEB884};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + WindowsCE + E2BECB1F-8C8C-41ba-B736-9BE7D946A398 + 5.0 + SmartDeviceProject1 + v3.5 + Windows CE + + + + + .allowedReferenceRelatedFileExtensions + true + full + false + bin\ + DEBUG;TRACE; + prompt + 4 + 512 + true + true + off + + + .allowedReferenceRelatedFileExtensions + none + true + bin\ + prompt + 4 + 512 + true + true + off + + + + False + ..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.DeviceSupport.dll + + + False + ..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.DM.dll + + + False + ..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.EthernetCommunications.dll + + + False + ..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.Fusion.dll + + + False + ..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.Remotes.dll + + + False + ..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.UI.dll + + + False + ..\..\..\essentials-devices-common\Essentials Devices Common\Essentials Devices Common\bin\Essentials Devices Common.dll + True + + + False + ..\..\..\essentials-http-server\EssentialsHttpServer\bin\EssentialsHttpServer.dll + + + + False + ..\..\..\pepperdash-portal-sync\PepperDashCorePortalSync\PepperDashPortalSync\bin\PepperDashCorePortalSync.dll + + + False + ..\..\..\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\bin\PepperDash_Core.dll + + + False + ..\..\..\essentials-ssp-base\PepperDashEssentialsBase\PepperDashEssentialsBase\bin\PepperDash_Essentials_Core.dll + + + False + ..\..\..\essentials-displays\Essentials Displays\Essentials Displays\bin\PepperDash_Essentials_Displays.dll + + + False + ..\..\..\essentials-dm\Essentials_DM\Essentials_DM\bin\PepperDash_Essentials_DM.dll + + + False + ..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpCustomAttributesInterface.dll + + + False + ..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpHelperInterface.dll + + + False + ..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpNewtonsoft.dll + + + False + ..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpPro.exe + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + rem S# Pro preparation will execute after these operations + + \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/PepperDashEssentials.csproj.user b/PepperDashEssentials/PepperDashEssentials/PepperDashEssentials.csproj.user new file mode 100644 index 00000000..6c97fc2b --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/PepperDashEssentials.csproj.user @@ -0,0 +1,13 @@ + + + E282E6BE-C7C3-4ece-916A-88FB1CF8AF3C + + + false + Project + + + + + + \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/PepperDashEssentials.projectinfo b/PepperDashEssentials/PepperDashEssentials/PepperDashEssentials.projectinfo new file mode 100644 index 00000000..73406ab3 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/PepperDashEssentials.projectinfo differ diff --git a/PepperDashEssentials/PepperDashEssentials/Properties/AssemblyInfo.cs b/PepperDashEssentials/PepperDashEssentials/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..7ee574a4 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Properties/AssemblyInfo.cs @@ -0,0 +1,8 @@ +using System.Reflection; + +[assembly: AssemblyTitle("PepperDashEssentials")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("PepperDashEssentials")] +[assembly: AssemblyCopyright("Copyright © 2015")] +[assembly: AssemblyVersion("1.0.0.*")] + diff --git a/PepperDashEssentials/PepperDashEssentials/Properties/ControlSystem.cfg b/PepperDashEssentials/PepperDashEssentials/Properties/ControlSystem.cfg new file mode 100644 index 00000000..e96d289d --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Properties/ControlSystem.cfg @@ -0,0 +1,7 @@ + + + Desk MC3 +
ssh 10.0.0.15
+ Program01 + Internal Flash +
\ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/REMOVE EssentialsApp.cs b/PepperDashEssentials/PepperDashEssentials/REMOVE EssentialsApp.cs new file mode 100644 index 00000000..3e71d576 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/REMOVE EssentialsApp.cs @@ -0,0 +1,69 @@ +//using System; +//using System.Collections.Generic; +//using System.Linq; +//using Crestron.SimplSharp; +//using Crestron.SimplSharp.CrestronIO; +//using Crestron.SimplSharpPro; +//using Crestron.SimplSharpPro.DeviceSupport; +//using Crestron.SimplSharpPro.CrestronThread; +//using Crestron.SimplSharpPro.Diagnostics; +//using Crestron.SimplSharpPro.EthernetCommunication; +//using Crestron.SimplSharpPro.UI; + +//using Crestron.SimplSharpPro.DM; +//using Crestron.SimplSharpPro.DM.Cards; +//using Crestron.SimplSharpPro.DM.Endpoints.Transmitters; + +//using PepperDash.Essentials.Core; +//using PepperDash.Essentials.Core.Devices; +////using PepperDash.Essentials.Core.Devices.Dm; + +//using PepperDash.Essentials.Displays; + +////using PepperDash.Essentials.Core.Http; +//using PepperDash.Core; + + +//namespace PepperDash.Essentials +//{ +// public class EssentialsApp +// { +// public string ConfigPath { get; set; } + +// public Dictionary Rooms { get; private set; } + +// //EssentialsHttpApiHandler ApiHandler; // MOVE ??????????????????? + +// public EssentialsApp(CrestronControlSystem cs) +// { +// // Use a fake license manager for now +// Global.LicenseManager = PepperDash.Essentials.License.MockEssentialsLicenseManager.Manager; + + +// // ---------------------------------- Make this configurable +// //var server = Global.HttpConfigServer; +// //server.Start(8081, "HttpConfigServer"); +// //ConfigPath = string.Format(@"\NVRAM\Program{0}\EssentialsConfiguration.json", +// // InitialParametersClass.ApplicationNumber); +// //ApiHandler = new EssentialsHttpApiHandler(server, ConfigPath, @"\HTML\presets\lists\"); + +// Debug.Console(0, "\r\r--------------------CONFIG BEGIN--------------------\r"); +// Configuration.Initialize(cs); +// Configuration.ReadConfiguration(ConfigPath); +// Debug.Console(0, "\r--------------------CONFIG END----------------------\r\r"); +// } +// } + +// public class ResponseToken +// { +// public string Token { get; private set; } +// public DateTime Expires { get; private set; } +// public bool IsExpired { get { return Expires < DateTime.Now; } } + +// public ResponseToken(int timeoutMinutes) +// { +// Expires = DateTime.Now.AddMinutes(timeoutMinutes); +// Token = Guid.NewGuid().ToString(); +// } +// } +//} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/Crestron.SimplSharpPro.DM.dll b/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/Crestron.SimplSharpPro.DM.dll new file mode 100644 index 00000000..7ecd0053 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/Crestron.SimplSharpPro.DM.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/Crestron.SimplSharpPro.DeviceSupport.dll b/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/Crestron.SimplSharpPro.DeviceSupport.dll new file mode 100644 index 00000000..c224b067 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/Crestron.SimplSharpPro.DeviceSupport.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/Crestron.SimplSharpPro.EthernetCommunications.dll b/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/Crestron.SimplSharpPro.EthernetCommunications.dll new file mode 100644 index 00000000..802bed98 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/Crestron.SimplSharpPro.EthernetCommunications.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/Crestron.SimplSharpPro.UI.dll b/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/Crestron.SimplSharpPro.UI.dll new file mode 100644 index 00000000..d098a7e0 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/Crestron.SimplSharpPro.UI.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/PepperDashEssentialsBase.config b/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/PepperDashEssentialsBase.config new file mode 100644 index 00000000..2ae09e62 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/PepperDashEssentialsBase.config @@ -0,0 +1,16 @@ + + + PepperDashEssentials + PepperDashEssentialsBase + PepperDashEssentialsBase + 1.009.0029 + SIMPL# Plugin + 5 + 5 + + + + 1/8/2016 3:03:22 PM + 1.0.0.27100 + + \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/PepperDashEssentialsBase.cplz b/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/PepperDashEssentialsBase.cplz new file mode 100644 index 00000000..95fbc0f6 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/PepperDashEssentialsBase.cplz differ diff --git a/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/PepperDashEssentialsBase.dll b/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/PepperDashEssentialsBase.dll new file mode 100644 index 00000000..37d0e907 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/PepperDashEssentialsBase.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/SimplSharpData.dat b/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/SimplSharpData.dat new file mode 100644 index 00000000..816bfe12 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/SimplSharpData.dat differ diff --git a/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/manifest.info b/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/manifest.info new file mode 100644 index 00000000..ab17c183 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/manifest.info @@ -0,0 +1,18 @@ +MainAssembly=PepperDashEssentialsBase.dll:5d68a993ab03b4b88d0f95478188a439 +MainAssemblyMinFirmwareVersion=1.009.0029 +ü +DependencySource=Crestron.SimplSharpPro.DeviceSupport.dll:caae4b4259aaf619059f0ae34473bfd2 +DependencyPath=PepperDashEssentialsBase.cplz:Crestron.SimplSharpPro.DeviceSupport.dll +DependencyMainAssembly=Crestron.SimplSharpPro.DeviceSupport.dll:caae4b4259aaf619059f0ae34473bfd2 +ü +DependencySource=Crestron.SimplSharpPro.DM.dll:bdf5acfa80cc3bb87f21deb891128b1d +DependencyPath=PepperDashEssentialsBase.cplz:Crestron.SimplSharpPro.DM.dll +DependencyMainAssembly=Crestron.SimplSharpPro.DM.dll:bdf5acfa80cc3bb87f21deb891128b1d +ü +DependencySource=Crestron.SimplSharpPro.EthernetCommunications.dll:36e663497195140ee6f1b4ebc53f5ea7 +DependencyPath=PepperDashEssentialsBase.cplz:Crestron.SimplSharpPro.EthernetCommunications.dll +DependencyMainAssembly=Crestron.SimplSharpPro.EthernetCommunications.dll:36e663497195140ee6f1b4ebc53f5ea7 +ü +DependencySource=Crestron.SimplSharpPro.UI.dll:089312a0cb0b4537072d4eb234e71e0e +DependencyPath=PepperDashEssentialsBase.cplz:Crestron.SimplSharpPro.UI.dll +DependencyMainAssembly=Crestron.SimplSharpPro.UI.dll:089312a0cb0b4537072d4eb234e71e0e diff --git a/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/manifest.ser b/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/manifest.ser new file mode 100644 index 00000000..13cd9db7 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/References/PepperDashEssentialsBase.cplz/manifest.ser differ diff --git a/PepperDashEssentials/PepperDashEssentials/Room/EssentialsHuddleSpaceRoom.cs b/PepperDashEssentials/PepperDashEssentials/Room/EssentialsHuddleSpaceRoom.cs new file mode 100644 index 00000000..bb6de8dc --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Room/EssentialsHuddleSpaceRoom.cs @@ -0,0 +1,284 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; + +using PepperDash.Core; +using PepperDash.Essentials.Core; + +namespace PepperDash.Essentials +{ + public class EssentialsHuddleSpaceRoom : EssentialsRoomBase + { + public event EventHandler CurrentVolumeDeviceChange; + public event SourceInfoChangeHandler CurrentSourceInfoChange; + + public EssentialsRoomPropertiesConfig Config { get; private set; } + + public IRoutingSinkWithSwitching DefaultDisplay { get; private set; } + public IRoutingSinkNoSwitching DefaultAudioDevice { get; private set; } + public IBasicVolumeControls DefaultVolumeControls { get; private set; } + + public bool ExcludeFromGlobalFunctions { get; set; } + + /// + /// The config name of the source list + /// + public string SourceListKey { get; set; } + + /// + /// If room is off, enables power on to last source. Default true + /// + public bool EnablePowerOnToLastSource { get; set; } + string LastSourceKey; + + /// + /// + /// + public IBasicVolumeControls CurrentVolumeControls + { + get { return _CurrentAudioDevice; } + set + { + if (value == _CurrentAudioDevice) return; + + var oldDev = _CurrentAudioDevice; + // derigister this room from the device, if it can + if (oldDev is IInUseTracking) + (oldDev as IInUseTracking).InUseTracker.RemoveUser(this, "audio"); + var handler = CurrentVolumeDeviceChange; + if (handler != null) + CurrentVolumeDeviceChange(this, new VolumeDeviceChangeEventArgs(oldDev, value, ChangeType.WillChange)); + _CurrentAudioDevice = value; + if (handler != null) + CurrentVolumeDeviceChange(this, new VolumeDeviceChangeEventArgs(oldDev, value, ChangeType.DidChange)); + // register this room with new device, if it can + if (_CurrentAudioDevice is IInUseTracking) + (_CurrentAudioDevice as IInUseTracking).InUseTracker.AddUser(this, "audio"); + } + } + IBasicVolumeControls _CurrentAudioDevice; + + /// + /// The SourceListItem last run - containing names and icons + /// + public SourceListItem CurrentSourceInfo + { + get { return _CurrentSourceInfo; } + private set + { + if (value == _CurrentSourceInfo) return; + + var handler = CurrentSourceInfoChange; + // remove from in-use tracker, if so equipped + if(_CurrentSourceInfo != null && _CurrentSourceInfo.SourceDevice is IInUseTracking) + (_CurrentSourceInfo.SourceDevice as IInUseTracking).InUseTracker.RemoveUser(this, "control"); + + if (handler != null) + handler(this, _CurrentSourceInfo, ChangeType.WillChange); + + _CurrentSourceInfo = value; + + // add to in-use tracking + if (_CurrentSourceInfo != null && _CurrentSourceInfo.SourceDevice is IInUseTracking) + (_CurrentSourceInfo.SourceDevice as IInUseTracking).InUseTracker.AddUser(this, "control"); + if (handler != null) + handler(this, _CurrentSourceInfo, ChangeType.DidChange); + } + } + SourceListItem _CurrentSourceInfo; + + /// + /// + /// + public BoolFeedback OnFeedback { get; private set; } + + /// + /// + /// + /// + /// + public EssentialsHuddleSpaceRoom(string key, string name, IRoutingSinkWithSwitching defaultDisplay, + IRoutingSinkNoSwitching defaultAudio, EssentialsRoomPropertiesConfig config) + : base(key, name) + { + Config = config; + DefaultDisplay = defaultDisplay; + DefaultAudioDevice = defaultAudio; + if (defaultAudio is IBasicVolumeControls) + DefaultVolumeControls = defaultAudio as IBasicVolumeControls; + else if (defaultAudio is IHasVolumeDevice) + DefaultVolumeControls = (defaultAudio as IHasVolumeDevice).VolumeDevice; + + OnFeedback = new BoolFeedback(() => + { return CurrentSourceInfo != null + && CurrentSourceInfo.Type == eSourceListItemType.Route; }); + SourceListKey = "default"; + EnablePowerOnToLastSource = true; + } + + public void RunRouteAction(string routeKey) + { + RunRouteAction(routeKey, null); + } + + /// + /// Gets a source from config list SourceListKey and dynamically build and executes the + /// route or commands + /// + /// + public void RunRouteAction(string routeKey, Action successCallback) + { + // Run this on a separate thread + new CTimer(o => + { + Debug.Console(1, this, "Run room action '{0}'", routeKey); + var dict = ConfigReader.ConfigObject.GetSourceListForKey(SourceListKey); + if(dict == null) + { + Debug.Console(1, this, "WARNING: Config source list '{0}' not found", SourceListKey); + return; + } + + // Try to get the list item by it's string key + if (!dict.ContainsKey(routeKey)) + { + Debug.Console(1, this, "WARNING: No item '{0}' found on config list '{1}'", + routeKey, SourceListKey); + return; + } + + var item = dict[routeKey]; + Debug.Console(2, this, "Action {0} has {1} steps", + item.SourceKey, item.RouteList.Count); + + // Let's run it + if (routeKey.ToLower() != "roomoff") + LastSourceKey = routeKey; + + foreach (var route in item.RouteList) + { + // if there is a $defaultAll on route, run two separate + if (route.DestinationKey.Equals("$defaultAll", StringComparison.OrdinalIgnoreCase)) + { + var tempAudio = new SourceRouteListItem + { + DestinationKey = "$defaultDisplay", + SourceKey = route.SourceKey, + Type = eRoutingSignalType.Video + }; + DoRoute(tempAudio); + + var tempVideo = new SourceRouteListItem + { + DestinationKey = "$defaultAudio", + SourceKey = route.SourceKey, + Type = eRoutingSignalType.Audio + }; + DoRoute(tempVideo); + continue; + } + else + DoRoute(route); + } + + // Set volume control on room, using default if non provided + IBasicVolumeControls volDev = null; + // Handle special cases for volume control + if (string.IsNullOrEmpty(item.VolumeControlKey) + || item.VolumeControlKey.Equals("$defaultAudio", StringComparison.OrdinalIgnoreCase)) + volDev = DefaultVolumeControls; + else if (item.VolumeControlKey.Equals("$defaultDisplay", StringComparison.OrdinalIgnoreCase)) + volDev = DefaultDisplay as IBasicVolumeControls; + // Or a specific device, probably rarely used. + else + { + var dev = DeviceManager.GetDeviceForKey(item.VolumeControlKey); + if (dev is IBasicVolumeControls) + volDev = dev as IBasicVolumeControls; + else if (dev is IHasVolumeDevice) + volDev = (dev as IHasVolumeDevice).VolumeDevice; + } + CurrentVolumeControls = volDev; + + // store the name and UI info for routes + if (item.SourceKey != null) + CurrentSourceInfo = item; + // And finally, set the "control". This will trigger event + //CurrentControlDevice = DeviceManager.GetDeviceForKey(item.SourceKey) as Device; + + OnFeedback.FireUpdate(); + + // report back when done + if (successCallback != null) + successCallback(); + +#warning Need to again handle special commands in here. + + }, 0); // end of CTimer + } + + /// + /// Will power the room on with the last-used source + /// + public void PowerOnToDefaultOrLastSource() + { + if (!EnablePowerOnToLastSource || LastSourceKey == null) + return; + RunRouteAction(LastSourceKey); + } + + /// + /// + /// + /// + /// + bool DoRoute(SourceRouteListItem route) + { + IRoutingSinkNoSwitching dest = null; + + if (route.DestinationKey.Equals("$defaultaudio", StringComparison.OrdinalIgnoreCase)) + dest = DefaultAudioDevice; + else if (route.DestinationKey.Equals("$defaultDisplay", StringComparison.OrdinalIgnoreCase)) + dest = DefaultDisplay; + else + dest = DeviceManager.GetDeviceForKey(route.DestinationKey) as IRoutingSinkNoSwitching; + + if (dest == null) + { + Debug.Console(1, this, "Cannot route, unknown destination '{0}'", route.DestinationKey); + return false; + } + + if (route.SourceKey.Equals("$off", StringComparison.OrdinalIgnoreCase)) + { + dest.ReleaseRoute(); + if (dest is IPower) + (dest as IPower).PowerOff(); + } + else + { + var source = DeviceManager.GetDeviceForKey(route.SourceKey) as IRoutingOutputs; + if (source == null) + { + Debug.Console(1, this, "Cannot route unknown source '{0}' to {1}", route.SourceKey, route.DestinationKey); + return false; + } + dest.ReleaseAndMakeRoute(source, route.Type); + } + return true; + } + + /// + /// Runs "roomOff" action on all rooms not set to ExcludeFromGlobalFunctions + /// + public static void AllRoomsOff() + { + var allRooms = DeviceManager.AllDevices.Where(d => + d is EssentialsHuddleSpaceRoom && !(d as EssentialsHuddleSpaceRoom).ExcludeFromGlobalFunctions); + foreach (var room in allRooms) + (room as EssentialsHuddleSpaceRoom).RunRouteAction("roomOff"); + } + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/Room/EssentialsPresentationRoom.cs b/PepperDashEssentials/PepperDashEssentials/Room/EssentialsPresentationRoom.cs new file mode 100644 index 00000000..bd03163e --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Room/EssentialsPresentationRoom.cs @@ -0,0 +1,283 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; + +using PepperDash.Core; +using PepperDash.Essentials.Core; + +namespace PepperDash.Essentials +{ + public class EssentialsPresentationRoom : EssentialsRoomBase + { + public event EventHandler CurrentVolumeDeviceChange; + public event SourceInfoChangeHandler CurrentSourceInfoChange; + + public EssentialsPresentationRoomPropertiesConfig Config { get; private set; } + + public Dictionary Displays { get; private set; } + + public IRoutingSinkWithSwitching DefaultDisplay { get; private set; } + public IRoutingSinkNoSwitching DefaultAudioDevice { get; private set; } + public IBasicVolumeControls DefaultVolumeControls { get; private set; } + + public bool ExcludeFromGlobalFunctions { get; set; } + + /// + /// The config name of the source list + /// + public string SourceListKey { get; set; } + + /// + /// If room is off, enables power on to last source. Default true + /// + public bool EnablePowerOnToLastSource { get; set; } + string LastSourceKey; + + /// + /// + /// + public IBasicVolumeControls CurrentVolumeControls + { + get { return _CurrentAudioDevice; } + set + { + if (value == _CurrentAudioDevice) return; + + var oldDev = _CurrentAudioDevice; + // derigister this room from the device, if it can + if (oldDev is IInUseTracking) + (oldDev as IInUseTracking).InUseTracker.RemoveUser(this, "audio"); + var handler = CurrentVolumeDeviceChange; + if (handler != null) + CurrentVolumeDeviceChange(this, new VolumeDeviceChangeEventArgs(oldDev, value, ChangeType.WillChange)); + _CurrentAudioDevice = value; + if (handler != null) + CurrentVolumeDeviceChange(this, new VolumeDeviceChangeEventArgs(oldDev, value, ChangeType.DidChange)); + // register this room with new device, if it can + if (_CurrentAudioDevice is IInUseTracking) + (_CurrentAudioDevice as IInUseTracking).InUseTracker.AddUser(this, "audio"); + } + } + IBasicVolumeControls _CurrentAudioDevice; + + /// + /// The SourceListItem last run - containing names and icons + /// + public SourceListItem CurrentSourceInfo + { + get { return _CurrentSourceInfo; } + private set + { + if (value == _CurrentSourceInfo) return; + + var handler = CurrentSourceInfoChange; + // remove from in-use tracker, if so equipped + if(_CurrentSourceInfo != null && _CurrentSourceInfo.SourceDevice is IInUseTracking) + (_CurrentSourceInfo.SourceDevice as IInUseTracking).InUseTracker.RemoveUser(this, "control"); + + if (handler != null) + handler(this, _CurrentSourceInfo, ChangeType.WillChange); + + _CurrentSourceInfo = value; + + // add to in-use tracking + if (_CurrentSourceInfo != null && _CurrentSourceInfo.SourceDevice is IInUseTracking) + (_CurrentSourceInfo.SourceDevice as IInUseTracking).InUseTracker.AddUser(this, "control"); + if (handler != null) + handler(this, _CurrentSourceInfo, ChangeType.DidChange); + } + } + SourceListItem _CurrentSourceInfo; + + /// + /// + /// + public BoolFeedback OnFeedback { get; private set; } + + /// + /// + /// + /// + /// + public EssentialsPresentationRoom(string key, string name, IRoutingSinkWithSwitching defaultDisplay, + IRoutingSinkNoSwitching defaultAudio, EssentialsPresentationRoomPropertiesConfig config) + : base(key, name) + { + Config = config; + DefaultDisplay = defaultDisplay; + DefaultAudioDevice = defaultAudio; + if (defaultAudio is IBasicVolumeControls) + DefaultVolumeControls = defaultAudio as IBasicVolumeControls; + else if (defaultAudio is IHasVolumeDevice) + DefaultVolumeControls = (defaultAudio as IHasVolumeDevice).VolumeDevice; + + OnFeedback = new BoolFeedback(() => + { return CurrentSourceInfo != null + && CurrentSourceInfo.Type == eSourceListItemType.Route; }); + SourceListKey = "default"; + EnablePowerOnToLastSource = true; + } + + public void RunRouteAction(string routeKey) + { + RunRouteAction(routeKey, null); + } + + /// + /// Gets a source from config list SourceListKey and dynamically build and executes the + /// route or commands + /// + /// + public void RunRouteAction(string routeKey, Action successCallback) + { + // Run this on a separate thread + new CTimer(o => + { + Debug.Console(1, this, "Run room action '{0}'", routeKey); + var dict = ConfigReader.ConfigObject.GetSourceListForKey(SourceListKey); + if(dict == null) + { + Debug.Console(1, this, "WARNING: Config source list '{0}' not found", SourceListKey); + return; + } + + // Try to get the list item by it's string key + if (!dict.ContainsKey(routeKey)) + { + Debug.Console(1, this, "WARNING: No item '{0}' found on config list '{1}'", + routeKey, SourceListKey); + return; + } + + var item = dict[routeKey]; + Debug.Console(2, this, "Action {0} has {1} steps", + item.SourceKey, item.RouteList.Count); + + // Let's run it + if (routeKey.ToLower() != "roomoff") + LastSourceKey = routeKey; + + foreach (var route in item.RouteList) + { + // if there is a $defaultAll on route, run two separate + if (route.DestinationKey.Equals("$defaultAll", StringComparison.OrdinalIgnoreCase)) + { + var tempAudio = new SourceRouteListItem + { + DestinationKey = "$defaultDisplay", + SourceKey = route.SourceKey, + Type = eRoutingSignalType.Video + }; + DoRoute(tempAudio); + + var tempVideo = new SourceRouteListItem + { + DestinationKey = "$defaultAudio", + SourceKey = route.SourceKey, + Type = eRoutingSignalType.Audio + }; + DoRoute(tempVideo); + continue; + } + else + DoRoute(route); + } + + // Set volume control on room, using default if non provided + IBasicVolumeControls volDev = null; + // Handle special cases for volume control + if (string.IsNullOrEmpty(item.VolumeControlKey) + || item.VolumeControlKey.Equals("$defaultAudio", StringComparison.OrdinalIgnoreCase)) + volDev = DefaultVolumeControls; + else if (item.VolumeControlKey.Equals("$defaultDisplay", StringComparison.OrdinalIgnoreCase)) + volDev = DefaultDisplay as IBasicVolumeControls; + // Or a specific device, probably rarely used. + else + { + var dev = DeviceManager.GetDeviceForKey(item.VolumeControlKey); + if (dev is IBasicVolumeControls) + volDev = dev as IBasicVolumeControls; + else if (dev is IHasVolumeDevice) + volDev = (dev as IHasVolumeDevice).VolumeDevice; + } + CurrentVolumeControls = volDev; + + // store the name and UI info for routes + if (item.SourceKey != null) + CurrentSourceInfo = item; + // And finally, set the "control". This will trigger event + //CurrentControlDevice = DeviceManager.GetDeviceForKey(item.SourceKey) as Device; + + OnFeedback.FireUpdate(); + + // report back when done + if (successCallback != null) + successCallback(); + }, 0); // end of CTimer + } + + /// + /// Will power the room on with the last-used source + /// + public void PowerOnToDefaultOrLastSource() + { + if (!EnablePowerOnToLastSource || LastSourceKey == null) + return; + RunRouteAction(LastSourceKey); + } + + /// + /// + /// + /// + /// + bool DoRoute(SourceRouteListItem route) + { + IRoutingSinkNoSwitching dest = null; + + if (route.DestinationKey.Equals("$defaultaudio", StringComparison.OrdinalIgnoreCase)) + dest = DefaultAudioDevice; + else if (route.DestinationKey.Equals("$defaultDisplay", StringComparison.OrdinalIgnoreCase)) + dest = DefaultDisplay; + else + dest = DeviceManager.GetDeviceForKey(route.DestinationKey) as IRoutingSinkNoSwitching; + + if (dest == null) + { + Debug.Console(1, this, "Cannot route, unknown destination '{0}'", route.DestinationKey); + return false; + } + + if (route.SourceKey.Equals("$off", StringComparison.OrdinalIgnoreCase)) + { + dest.ReleaseRoute(); + if (dest is IPower) + (dest as IPower).PowerOff(); + } + else + { + var source = DeviceManager.GetDeviceForKey(route.SourceKey) as IRoutingOutputs; + if (source == null) + { + Debug.Console(1, this, "Cannot route unknown source '{0}' to {1}", route.SourceKey, route.DestinationKey); + return false; + } + dest.ReleaseAndMakeRoute(source, route.Type); + } + return true; + } + + /// + /// Runs "roomOff" action on all rooms not set to ExcludeFromGlobalFunctions + /// + public static void AllRoomsOff() + { + var allRooms = DeviceManager.AllDevices.Where(d => + d is EssentialsHuddleSpaceRoom && !(d as EssentialsHuddleSpaceRoom).ExcludeFromGlobalFunctions); + foreach (var room in allRooms) + (room as EssentialsHuddleSpaceRoom).RunRouteAction("roomOff"); + } + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/Room/EssentialsRoomBase.cs b/PepperDashEssentials/PepperDashEssentials/Room/EssentialsRoomBase.cs new file mode 100644 index 00000000..2e63a614 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Room/EssentialsRoomBase.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using PepperDash.Core; +using PepperDash.Essentials.Core; + +namespace PepperDash.Essentials +{ + public class EssentialsRoomBase : Device + { + public EssentialsRoomBase(string key, string name) : base(key, name) + { + + } + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/Room/EssentialsRoomConfig.cs b/PepperDashEssentials/PepperDashEssentials/Room/EssentialsRoomConfig.cs new file mode 100644 index 00000000..cafba84f --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Room/EssentialsRoomConfig.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using Newtonsoft.Json; + +using PepperDash.Core; +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.Config; + +namespace PepperDash.Essentials +{ + public class EssentialsRoomConfig : DeviceConfig + { + /// + /// Returns a room object from this config data + /// + /// + public Device GetRoomObject() + { + var typeName = Type.ToLower(); + EssentialsHuddleSpaceRoom room = null; + if (typeName == "huddle") + { + var props = JsonConvert.DeserializeObject + (this.Properties.ToString()); + var disp = DeviceManager.GetDeviceForKey(props.DefaultDisplayKey) as IRoutingSinkWithSwitching; + var audio = DeviceManager.GetDeviceForKey(props.DefaultAudioKey) as IRoutingSinkNoSwitching; + room = new EssentialsHuddleSpaceRoom(Key, Name, disp, audio, props); + room.SourceListKey = props.SourceListKey; + } + else if (typeName == "presentation") + { + var props = JsonConvert.DeserializeObject + (this.Properties.ToString()); + // assign displays + + // assign audio. How?????? + + } + return room; + } + } + + public class EssentialsRoomPropertiesConfig + { + public string HelpMessage { get; set; } + public string Description { get; set; } + } + + public class EssentialsHuddleRoomPropertiesConfig : EssentialsRoomPropertiesConfig + { + public string DefaultDisplayKey { get; set; } + public string DefaultAudioKey { get; set; } + public string SourceListKey { get; set; } + } + + public class EssentialsPresentationRoomPropertiesConfig + { + public string DefaultAudioBehavior { get; set; } + public string DefaultAudioKey { get; set; } + public string DefaultVideoBehavior { get; set; } + public List DisplayKeys { get; set; } + public string SourceListKey { get; set; } + public Dictionary Volumes { get; set; } + } + + public class EssentialsVolumeLevelConfig + { + public string DeviceKey { get; set; } + public string Label { get; set; } + public int Level { get; set; } + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/Room/VolumeAndSourceChangeArgs.cs b/PepperDashEssentials/PepperDashEssentials/Room/VolumeAndSourceChangeArgs.cs new file mode 100644 index 00000000..e67fc1d6 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/Room/VolumeAndSourceChangeArgs.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; + +using PepperDash.Core; +using PepperDash.Essentials.Core; + +namespace PepperDash.Essentials +{ + /// + /// + /// + public class VolumeDeviceChangeEventArgs : EventArgs + { + public IBasicVolumeControls OldDev { get; private set; } + public IBasicVolumeControls NewDev { get; private set; } + public ChangeType Type { get; private set; } + + public VolumeDeviceChangeEventArgs(IBasicVolumeControls oldDev, IBasicVolumeControls newDev, ChangeType type) + { + OldDev = oldDev; + NewDev = newDev; + Type = type; + } + } + + /// + /// The handler type for a Room's SourceInfoChange + /// + public delegate void SourceInfoChangeHandler(EssentialsRoomBase room, SourceListItem info, ChangeType type); + + /// + /// + /// + public enum ChangeType + { + WillChange, DidChange + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2016-11-18 11-41-34).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2016-11-18 11-41-34).log new file mode 100644 index 00000000..0f3427aa --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2016-11-18 11-41-34).log @@ -0,0 +1,9 @@ +11/18/2016 11:41:34 AM, Info: Initializing SIMPLSharp Services... +11/18/2016 11:41:34 AM, Info: ProjectInfo successfully initialized. +11/18/2016 11:45:04 AM, Info: Saving project information... +11/18/2016 11:45:04 AM, Info: Saving project information... +11/18/2016 11:45:04 AM, Info: Saving project information... +11/18/2016 11:45:04 AM, Info: Saving project information... +11/18/2016 11:45:04 AM, Info: Saving project information... +11/18/2016 11:45:04 AM, Info: Saving project information... +11/18/2016 11:45:05 AM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2016-11-18 11-46-54).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2016-11-18 11-46-54).log new file mode 100644 index 00000000..4a287a1e --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2016-11-18 11-46-54).log @@ -0,0 +1,20 @@ +11/18/2016 11:46:54 AM, Info: Initializing SIMPLSharp Services... +11/18/2016 11:46:54 AM, Info: ProjectInfo successfully initialized. +11/18/2016 11:49:22 AM, Info: Saving project information... +11/18/2016 11:49:22 AM, Info: Saving project information... +11/18/2016 11:49:22 AM, Info: Saving project information... +11/18/2016 11:49:22 AM, Info: Saving project information... +11/18/2016 11:49:22 AM, Info: Saving project information... +11/18/2016 11:49:22 AM, Info: Saving project information... +11/18/2016 11:52:46 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-http-server\EssentialsHttpServer\bin\EssentialsHttpServer.dll... +11/18/2016 11:53:06 AM, Info: Saving project information... +11/18/2016 11:53:06 AM, Info: Saving project information... +11/18/2016 11:53:06 AM, Info: Saving project information... +11/18/2016 11:53:06 AM, Info: Saving project information... +11/18/2016 11:53:07 AM, Info: Saving project information... +11/18/2016 11:53:07 AM, Info: Saving project information... +11/18/2016 11:53:09 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +11/18/2016 11:53:09 AM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +11/18/2016 11:53:10 AM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +11/18/2016 11:53:11 AM, Info: Saving project information... +11/18/2016 12:51:23 PM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2016-11-21 08-15-37).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2016-11-21 08-15-37).log new file mode 100644 index 00000000..de0a7a9b --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2016-11-21 08-15-37).log @@ -0,0 +1,3 @@ +11/21/2016 8:15:37 AM, Info: Initializing SIMPLSharp Services... +11/21/2016 8:15:37 AM, Info: ProjectInfo successfully initialized. +11/21/2016 8:32:35 AM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2016-11-21 08-32-44).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2016-11-21 08-32-44).log new file mode 100644 index 00000000..a09c4ea7 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2016-11-21 08-32-44).log @@ -0,0 +1,3 @@ +11/21/2016 8:32:44 AM, Info: Initializing SIMPLSharp Services... +11/21/2016 8:32:44 AM, Info: ProjectInfo successfully initialized. +11/21/2016 8:33:03 AM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-01-03 14-46-05).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-01-03 14-46-05).log new file mode 100644 index 00000000..4cf32627 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-01-03 14-46-05).log @@ -0,0 +1,11 @@ +1/3/2017 2:46:05 PM, Info: Initializing SIMPLSharp Services... +1/3/2017 2:46:05 PM, Info: ProjectInfo successfully initialized. +1/3/2017 3:29:58 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +1/3/2017 3:29:59 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +1/3/2017 3:29:59 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +1/3/2017 3:30:01 PM, Info: Saving project information... +1/3/2017 3:36:25 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +1/3/2017 3:36:26 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +1/3/2017 3:36:26 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +1/3/2017 3:36:27 PM, Info: Saving project information... +1/3/2017 4:32:20 PM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-01-10 15-37-56).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-01-10 15-37-56).log new file mode 100644 index 00000000..4e492f3b --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-01-10 15-37-56).log @@ -0,0 +1,3 @@ +1/10/2017 3:37:56 PM, Info: Initializing SIMPLSharp Services... +1/10/2017 3:37:57 PM, Info: ProjectInfo successfully initialized. +1/10/2017 3:41:24 PM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-01-16 09-03-58).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-01-16 09-03-58).log new file mode 100644 index 00000000..0dbf3416 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-01-16 09-03-58).log @@ -0,0 +1,31 @@ +1/16/2017 9:03:58 AM, Info: Initializing SIMPLSharp Services... +1/16/2017 9:03:58 AM, Info: ProjectInfo successfully initialized. +1/17/2017 9:47:21 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +1/17/2017 9:47:22 AM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +1/17/2017 9:47:22 AM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +1/17/2017 9:47:24 AM, Info: Saving project information... +1/17/2017 10:10:33 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +1/17/2017 10:10:33 AM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +1/17/2017 10:10:34 AM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +1/17/2017 10:10:35 AM, Info: Saving project information... +1/17/2017 11:27:26 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +1/17/2017 11:27:27 AM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +1/17/2017 11:27:27 AM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +1/17/2017 11:27:28 AM, Info: Saving project information... +1/17/2017 11:31:13 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +1/17/2017 11:31:13 AM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +1/17/2017 11:31:13 AM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +1/17/2017 11:31:14 AM, Info: Saving project information... +1/17/2017 12:36:38 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +1/17/2017 12:36:38 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +1/17/2017 12:36:39 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +1/17/2017 12:36:40 PM, Info: Saving project information... +1/17/2017 12:39:52 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +1/17/2017 12:39:52 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +1/17/2017 12:39:52 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +1/17/2017 12:39:54 PM, Info: Saving project information... +1/17/2017 12:40:18 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +1/17/2017 12:40:19 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +1/17/2017 12:40:19 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +1/17/2017 12:40:20 PM, Info: Saving project information... +1/17/2017 5:15:33 PM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-01-24 08-36-38).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-01-24 08-36-38).log new file mode 100644 index 00000000..40526e86 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-01-24 08-36-38).log @@ -0,0 +1,49 @@ +1/24/2017 8:36:38 AM, Info: Initializing SIMPLSharp Services... +1/24/2017 8:36:38 AM, Info: ProjectInfo successfully initialized. +1/24/2017 8:57:18 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +1/24/2017 8:57:20 AM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +1/24/2017 8:57:20 AM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +1/24/2017 8:57:21 AM, Info: Saving project information... +1/24/2017 8:58:46 AM, Info: Saving project information... +1/24/2017 8:58:46 AM, Info: Saving project information... +1/24/2017 8:58:46 AM, Info: Saving project information... +1/24/2017 8:58:46 AM, Info: Saving project information... +1/24/2017 8:58:46 AM, Info: Saving project information... +1/24/2017 8:58:46 AM, Info: Saving project information... +1/24/2017 8:58:47 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +1/24/2017 8:58:48 AM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +1/24/2017 8:58:48 AM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +1/24/2017 8:58:50 AM, Info: Saving project information... +1/24/2017 9:25:04 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +1/24/2017 9:25:04 AM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +1/24/2017 9:25:05 AM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +1/24/2017 9:25:06 AM, Info: Saving project information... +1/24/2017 9:54:09 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +1/24/2017 9:54:09 AM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +1/24/2017 9:54:09 AM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +1/24/2017 9:54:11 AM, Info: Saving project information... +1/24/2017 10:23:04 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\pepperdash-portal-sync\SspPortalSync\SspPortalSync\bin\PepperDashPortalSync.dll... +1/24/2017 10:24:52 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\pepperdash-portal-sync\PepperDashCorePortalSync\PepperDashPortalSync\bin\PepperDashCorePortalSync.dll... +1/24/2017 10:25:07 AM, Info: Saving project information... +1/24/2017 10:25:07 AM, Info: Saving project information... +1/24/2017 10:25:07 AM, Info: Saving project information... +1/24/2017 10:25:07 AM, Info: Saving project information... +1/24/2017 10:25:07 AM, Info: Saving project information... +1/24/2017 10:25:07 AM, Info: Saving project information... +1/24/2017 10:25:09 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +1/24/2017 10:25:10 AM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +1/24/2017 10:25:10 AM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +1/24/2017 10:25:11 AM, Info: Saving project information... +1/24/2017 10:25:51 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +1/24/2017 10:25:52 AM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +1/24/2017 10:25:52 AM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +1/24/2017 10:25:53 AM, Info: Saving project information... +1/24/2017 10:28:49 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +1/24/2017 10:28:50 AM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +1/24/2017 10:28:50 AM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +1/24/2017 10:28:51 AM, Info: Saving project information... +1/24/2017 10:36:42 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +1/24/2017 10:36:42 AM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +1/24/2017 10:36:43 AM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +1/24/2017 10:36:44 AM, Info: Saving project information... +1/24/2017 1:02:32 PM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-01-31 08-59-28).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-01-31 08-59-28).log new file mode 100644 index 00000000..a2824dfc --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-01-31 08-59-28).log @@ -0,0 +1,91 @@ +1/31/2017 8:59:28 AM, Info: Initializing SIMPLSharp Services... +1/31/2017 8:59:28 AM, Info: ProjectInfo successfully initialized. +1/31/2017 11:08:48 AM, Info: Saving project information... +1/31/2017 11:08:48 AM, Info: Saving project information... +1/31/2017 11:08:48 AM, Info: Saving project information... +1/31/2017 11:10:57 AM, Info: Saving project information... +1/31/2017 11:10:57 AM, Info: Saving project information... +1/31/2017 11:10:57 AM, Info: Saving project information... +1/31/2017 11:10:57 AM, Info: Saving project information... +1/31/2017 11:10:57 AM, Info: Saving project information... +1/31/2017 11:10:57 AM, Info: Saving project information... +1/31/2017 11:11:00 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +1/31/2017 11:11:01 AM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +1/31/2017 11:11:01 AM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +1/31/2017 11:11:03 AM, Info: Saving project information... +1/31/2017 11:57:55 AM, Info: Saving project information... +1/31/2017 11:57:55 AM, Info: Saving project information... +1/31/2017 11:57:55 AM, Info: Saving project information... +1/31/2017 12:02:55 PM, Info: Saving project information... +1/31/2017 12:02:55 PM, Info: Saving project information... +1/31/2017 12:02:55 PM, Info: Saving project information... +1/31/2017 12:07:55 PM, Info: Saving project information... +1/31/2017 12:07:55 PM, Info: Saving project information... +1/31/2017 12:07:55 PM, Info: Saving project information... +1/31/2017 12:12:55 PM, Info: Saving project information... +1/31/2017 12:12:55 PM, Info: Saving project information... +1/31/2017 12:12:55 PM, Info: Saving project information... +1/31/2017 12:17:55 PM, Info: Saving project information... +1/31/2017 12:17:55 PM, Info: Saving project information... +1/31/2017 12:17:55 PM, Info: Saving project information... +1/31/2017 12:22:55 PM, Info: Saving project information... +1/31/2017 12:22:55 PM, Info: Saving project information... +1/31/2017 12:22:55 PM, Info: Saving project information... +1/31/2017 12:27:55 PM, Info: Saving project information... +1/31/2017 12:27:55 PM, Info: Saving project information... +1/31/2017 12:27:55 PM, Info: Saving project information... +1/31/2017 12:32:55 PM, Info: Saving project information... +1/31/2017 12:32:55 PM, Info: Saving project information... +1/31/2017 12:32:55 PM, Info: Saving project information... +1/31/2017 12:37:55 PM, Info: Saving project information... +1/31/2017 12:37:55 PM, Info: Saving project information... +1/31/2017 12:37:55 PM, Info: Saving project information... +1/31/2017 12:42:55 PM, Info: Saving project information... +1/31/2017 12:42:55 PM, Info: Saving project information... +1/31/2017 12:42:55 PM, Info: Saving project information... +1/31/2017 12:47:55 PM, Info: Saving project information... +1/31/2017 12:47:55 PM, Info: Saving project information... +1/31/2017 12:47:55 PM, Info: Saving project information... +1/31/2017 12:52:55 PM, Info: Saving project information... +1/31/2017 12:52:55 PM, Info: Saving project information... +1/31/2017 12:52:55 PM, Info: Saving project information... +1/31/2017 12:57:55 PM, Info: Saving project information... +1/31/2017 12:57:55 PM, Info: Saving project information... +1/31/2017 12:57:55 PM, Info: Saving project information... +1/31/2017 1:02:55 PM, Info: Saving project information... +1/31/2017 1:02:55 PM, Info: Saving project information... +1/31/2017 1:02:55 PM, Info: Saving project information... +1/31/2017 1:07:55 PM, Info: Saving project information... +1/31/2017 1:07:55 PM, Info: Saving project information... +1/31/2017 1:07:55 PM, Info: Saving project information... +1/31/2017 1:12:55 PM, Info: Saving project information... +1/31/2017 1:12:55 PM, Info: Saving project information... +1/31/2017 1:12:55 PM, Info: Saving project information... +1/31/2017 1:17:55 PM, Info: Saving project information... +1/31/2017 1:17:55 PM, Info: Saving project information... +1/31/2017 1:17:55 PM, Info: Saving project information... +1/31/2017 1:22:55 PM, Info: Saving project information... +1/31/2017 1:22:55 PM, Info: Saving project information... +1/31/2017 1:22:55 PM, Info: Saving project information... +1/31/2017 1:27:55 PM, Info: Saving project information... +1/31/2017 1:27:55 PM, Info: Saving project information... +1/31/2017 1:27:55 PM, Info: Saving project information... +1/31/2017 1:32:55 PM, Info: Saving project information... +1/31/2017 1:32:55 PM, Info: Saving project information... +1/31/2017 1:32:55 PM, Info: Saving project information... +1/31/2017 1:37:55 PM, Info: Saving project information... +1/31/2017 1:37:55 PM, Info: Saving project information... +1/31/2017 1:37:55 PM, Info: Saving project information... +1/31/2017 1:42:55 PM, Info: Saving project information... +1/31/2017 1:42:55 PM, Info: Saving project information... +1/31/2017 1:42:55 PM, Info: Saving project information... +1/31/2017 1:47:55 PM, Info: Saving project information... +1/31/2017 1:47:55 PM, Info: Saving project information... +1/31/2017 1:47:55 PM, Info: Saving project information... +1/31/2017 1:52:24 PM, Info: Saving project information... +1/31/2017 1:52:24 PM, Info: Saving project information... +1/31/2017 1:52:24 PM, Info: Saving project information... +1/31/2017 1:52:24 PM, Info: Saving project information... +1/31/2017 1:52:24 PM, Info: Saving project information... +1/31/2017 1:52:24 PM, Info: Saving project information... +1/31/2017 1:52:25 PM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-01-31 14-52-20).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-01-31 14-52-20).log new file mode 100644 index 00000000..5fe6ce30 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-01-31 14-52-20).log @@ -0,0 +1,3 @@ +1/31/2017 2:52:20 PM, Info: Initializing SIMPLSharp Services... +1/31/2017 2:52:20 PM, Info: ProjectInfo successfully initialized. +1/31/2017 4:17:21 PM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-01-31 16-28-49).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-01-31 16-28-49).log new file mode 100644 index 00000000..754313f7 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-01-31 16-28-49).log @@ -0,0 +1,7 @@ +1/31/2017 4:28:49 PM, Info: Initializing SIMPLSharp Services... +1/31/2017 4:28:49 PM, Info: ProjectInfo successfully initialized. +1/31/2017 4:53:28 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +1/31/2017 4:53:29 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +1/31/2017 4:53:29 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +1/31/2017 4:53:31 PM, Info: Saving project information... +1/31/2017 5:02:34 PM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-01 09-00-40).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-01 09-00-40).log new file mode 100644 index 00000000..d1ecfa8e --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-01 09-00-40).log @@ -0,0 +1,24 @@ +2/1/2017 9:00:40 AM, Info: Initializing SIMPLSharp Services... +2/1/2017 9:00:41 AM, Info: ProjectInfo successfully initialized. +2/1/2017 12:08:44 PM, Info: Saving project information... +2/1/2017 12:08:44 PM, Info: Saving project information... +2/1/2017 12:08:44 PM, Info: Saving project information... +2/1/2017 12:13:44 PM, Info: Saving project information... +2/1/2017 12:13:44 PM, Info: Saving project information... +2/1/2017 12:13:44 PM, Info: Saving project information... +2/1/2017 12:18:45 PM, Info: Saving project information... +2/1/2017 12:18:45 PM, Info: Saving project information... +2/1/2017 12:18:45 PM, Info: Saving project information... +2/1/2017 12:23:44 PM, Info: Saving project information... +2/1/2017 12:23:44 PM, Info: Saving project information... +2/1/2017 12:23:44 PM, Info: Saving project information... +2/1/2017 12:28:44 PM, Info: Saving project information... +2/1/2017 12:28:44 PM, Info: Saving project information... +2/1/2017 12:28:44 PM, Info: Saving project information... +2/1/2017 12:33:27 PM, Info: Saving project information... +2/1/2017 12:33:27 PM, Info: Saving project information... +2/1/2017 12:33:27 PM, Info: Saving project information... +2/1/2017 12:33:27 PM, Info: Saving project information... +2/1/2017 12:33:27 PM, Info: Saving project information... +2/1/2017 12:33:27 PM, Info: Saving project information... +2/1/2017 12:33:30 PM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-01 14-33-10).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-01 14-33-10).log new file mode 100644 index 00000000..b9a6d7f2 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-01 14-33-10).log @@ -0,0 +1,3 @@ +2/1/2017 2:33:10 PM, Info: Initializing SIMPLSharp Services... +2/1/2017 2:33:10 PM, Info: ProjectInfo successfully initialized. +2/1/2017 2:41:00 PM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-02 08-35-09).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-02 08-35-09).log new file mode 100644 index 00000000..23994887 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-02 08-35-09).log @@ -0,0 +1,3 @@ +2/2/2017 8:35:09 AM, Info: Initializing SIMPLSharp Services... +2/2/2017 8:35:09 AM, Info: ProjectInfo successfully initialized. +2/2/2017 8:36:58 AM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-02 09-43-08).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-02 09-43-08).log new file mode 100644 index 00000000..fbbbad54 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-02 09-43-08).log @@ -0,0 +1,111 @@ +2/2/2017 9:43:08 AM, Info: Initializing SIMPLSharp Services... +2/2/2017 9:43:08 AM, Info: ProjectInfo successfully initialized. +2/2/2017 9:48:00 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/2/2017 9:48:01 AM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/2/2017 9:48:02 AM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/2/2017 9:48:03 AM, Info: Saving project information... +2/2/2017 9:49:16 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/2/2017 9:49:16 AM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/2/2017 9:49:16 AM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/2/2017 9:49:18 AM, Info: Saving project information... +2/2/2017 10:37:52 AM, Info: Saving project information... +2/2/2017 10:37:52 AM, Info: Saving project information... +2/2/2017 10:37:52 AM, Info: Saving project information... +2/2/2017 10:42:52 AM, Info: Saving project information... +2/2/2017 10:42:52 AM, Info: Saving project information... +2/2/2017 10:42:52 AM, Info: Saving project information... +2/2/2017 10:47:52 AM, Info: Saving project information... +2/2/2017 10:47:52 AM, Info: Saving project information... +2/2/2017 10:47:52 AM, Info: Saving project information... +2/2/2017 10:52:52 AM, Info: Saving project information... +2/2/2017 10:52:52 AM, Info: Saving project information... +2/2/2017 10:52:52 AM, Info: Saving project information... +2/2/2017 10:57:52 AM, Info: Saving project information... +2/2/2017 10:57:52 AM, Info: Saving project information... +2/2/2017 10:57:52 AM, Info: Saving project information... +2/2/2017 11:02:52 AM, Info: Saving project information... +2/2/2017 11:02:52 AM, Info: Saving project information... +2/2/2017 11:02:52 AM, Info: Saving project information... +2/2/2017 11:07:52 AM, Info: Saving project information... +2/2/2017 11:07:52 AM, Info: Saving project information... +2/2/2017 11:07:52 AM, Info: Saving project information... +2/2/2017 11:12:52 AM, Info: Saving project information... +2/2/2017 11:12:52 AM, Info: Saving project information... +2/2/2017 11:12:52 AM, Info: Saving project information... +2/2/2017 11:17:52 AM, Info: Saving project information... +2/2/2017 11:17:52 AM, Info: Saving project information... +2/2/2017 11:17:52 AM, Info: Saving project information... +2/2/2017 12:08:13 PM, Info: Saving project information... +2/2/2017 12:08:13 PM, Info: Saving project information... +2/2/2017 12:08:13 PM, Info: Saving project information... +2/2/2017 12:13:12 PM, Info: Saving project information... +2/2/2017 12:13:12 PM, Info: Saving project information... +2/2/2017 12:13:12 PM, Info: Saving project information... +2/2/2017 12:18:12 PM, Info: Saving project information... +2/2/2017 12:18:12 PM, Info: Saving project information... +2/2/2017 12:18:12 PM, Info: Saving project information... +2/2/2017 12:23:12 PM, Info: Saving project information... +2/2/2017 12:23:12 PM, Info: Saving project information... +2/2/2017 12:23:12 PM, Info: Saving project information... +2/2/2017 12:28:12 PM, Info: Saving project information... +2/2/2017 12:28:12 PM, Info: Saving project information... +2/2/2017 12:28:12 PM, Info: Saving project information... +2/2/2017 12:33:12 PM, Info: Saving project information... +2/2/2017 12:33:12 PM, Info: Saving project information... +2/2/2017 12:33:12 PM, Info: Saving project information... +2/2/2017 12:38:12 PM, Info: Saving project information... +2/2/2017 12:38:12 PM, Info: Saving project information... +2/2/2017 12:38:12 PM, Info: Saving project information... +2/2/2017 12:43:12 PM, Info: Saving project information... +2/2/2017 12:43:12 PM, Info: Saving project information... +2/2/2017 12:43:12 PM, Info: Saving project information... +2/2/2017 12:48:12 PM, Info: Saving project information... +2/2/2017 12:48:12 PM, Info: Saving project information... +2/2/2017 12:48:12 PM, Info: Saving project information... +2/2/2017 12:53:12 PM, Info: Saving project information... +2/2/2017 12:53:12 PM, Info: Saving project information... +2/2/2017 12:53:12 PM, Info: Saving project information... +2/2/2017 12:58:12 PM, Info: Saving project information... +2/2/2017 12:58:12 PM, Info: Saving project information... +2/2/2017 12:58:12 PM, Info: Saving project information... +2/2/2017 1:03:12 PM, Info: Saving project information... +2/2/2017 1:03:12 PM, Info: Saving project information... +2/2/2017 1:03:12 PM, Info: Saving project information... +2/2/2017 1:08:12 PM, Info: Saving project information... +2/2/2017 1:08:12 PM, Info: Saving project information... +2/2/2017 1:08:12 PM, Info: Saving project information... +2/2/2017 1:12:32 PM, Info: Saving project information... +2/2/2017 1:12:32 PM, Info: Saving project information... +2/2/2017 1:12:32 PM, Info: Saving project information... +2/2/2017 1:12:32 PM, Info: Saving project information... +2/2/2017 1:12:32 PM, Info: Saving project information... +2/2/2017 1:12:32 PM, Info: Saving project information... +2/2/2017 1:12:34 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/2/2017 1:12:35 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/2/2017 1:12:36 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/2/2017 1:12:37 PM, Info: Saving project information... +2/2/2017 1:12:49 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/2/2017 1:12:49 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/2/2017 1:12:49 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/2/2017 1:12:51 PM, Info: Saving project information... +2/2/2017 1:19:54 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/2/2017 1:19:55 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/2/2017 1:19:55 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/2/2017 1:19:56 PM, Info: Saving project information... +2/2/2017 2:49:46 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/2/2017 2:49:47 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/2/2017 2:49:47 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/2/2017 2:49:49 PM, Info: Saving project information... +2/2/2017 3:17:34 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/2/2017 3:17:35 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/2/2017 3:17:35 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/2/2017 3:17:36 PM, Info: Saving project information... +2/2/2017 3:35:40 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/2/2017 3:35:41 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/2/2017 3:35:41 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/2/2017 3:35:42 PM, Info: Saving project information... +2/2/2017 4:25:42 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/2/2017 4:25:43 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/2/2017 4:25:43 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/2/2017 4:25:44 PM, Info: Saving project information... +2/2/2017 4:34:32 PM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-06 13-06-34).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-06 13-06-34).log new file mode 100644 index 00000000..adf2a2b8 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-06 13-06-34).log @@ -0,0 +1,43 @@ +2/6/2017 1:06:34 PM, Info: Initializing SIMPLSharp Services... +2/6/2017 1:06:34 PM, Info: ProjectInfo successfully initialized. +2/6/2017 1:10:17 PM, Info: Saving project information... +2/6/2017 1:10:17 PM, Info: Saving project information... +2/6/2017 1:10:17 PM, Info: Saving project information... +2/6/2017 1:10:17 PM, Info: Saving project information... +2/6/2017 1:10:17 PM, Info: Saving project information... +2/6/2017 1:10:17 PM, Info: Saving project information... +2/6/2017 1:10:21 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/6/2017 1:10:22 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/6/2017 1:10:22 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/6/2017 1:10:23 PM, Info: Saving project information... +2/6/2017 1:44:38 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/6/2017 1:44:38 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/6/2017 1:44:39 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/6/2017 1:44:40 PM, Info: Saving project information... +2/6/2017 1:48:23 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/6/2017 1:48:24 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/6/2017 1:48:24 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/6/2017 1:48:25 PM, Info: Saving project information... +2/6/2017 1:48:46 PM, Info: Saving project information... +2/6/2017 1:48:46 PM, Info: Saving project information... +2/6/2017 1:48:46 PM, Info: Saving project information... +2/6/2017 1:48:46 PM, Info: Saving project information... +2/6/2017 1:48:46 PM, Info: Saving project information... +2/6/2017 1:48:46 PM, Info: Saving project information... +2/6/2017 1:48:48 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/6/2017 1:48:48 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/6/2017 1:48:48 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/6/2017 1:48:50 PM, Info: Saving project information... +2/6/2017 1:54:12 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/6/2017 1:54:13 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/6/2017 1:54:13 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/6/2017 1:54:14 PM, Info: Saving project information... +2/6/2017 2:14:07 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/6/2017 2:14:07 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/6/2017 2:14:07 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/6/2017 2:14:09 PM, Info: Saving project information... +2/6/2017 2:19:25 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/6/2017 2:19:25 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/6/2017 2:19:26 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/6/2017 2:19:27 PM, Info: Saving project information... +2/6/2017 2:34:42 PM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-06 15-56-15).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-06 15-56-15).log new file mode 100644 index 00000000..49910299 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-06 15-56-15).log @@ -0,0 +1,35 @@ +2/6/2017 3:56:15 PM, Info: Initializing SIMPLSharp Services... +2/6/2017 3:56:15 PM, Info: ProjectInfo successfully initialized. +2/6/2017 4:07:50 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/6/2017 4:07:51 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/6/2017 4:07:51 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/6/2017 4:07:53 PM, Info: Saving project information... +2/6/2017 4:41:04 PM, Info: Saving project information... +2/6/2017 4:41:04 PM, Info: Saving project information... +2/6/2017 4:41:04 PM, Info: Saving project information... +2/6/2017 4:46:04 PM, Info: Saving project information... +2/6/2017 4:46:04 PM, Info: Saving project information... +2/6/2017 4:46:04 PM, Info: Saving project information... +2/6/2017 4:51:04 PM, Info: Saving project information... +2/6/2017 4:51:04 PM, Info: Saving project information... +2/6/2017 4:51:04 PM, Info: Saving project information... +2/6/2017 4:56:04 PM, Info: Saving project information... +2/6/2017 4:56:04 PM, Info: Saving project information... +2/6/2017 4:56:04 PM, Info: Saving project information... +2/6/2017 5:01:04 PM, Info: Saving project information... +2/6/2017 5:01:04 PM, Info: Saving project information... +2/6/2017 5:01:04 PM, Info: Saving project information... +2/6/2017 5:06:04 PM, Info: Saving project information... +2/6/2017 5:06:04 PM, Info: Saving project information... +2/6/2017 5:06:04 PM, Info: Saving project information... +2/6/2017 5:10:39 PM, Info: Saving project information... +2/6/2017 5:10:39 PM, Info: Saving project information... +2/6/2017 5:10:39 PM, Info: Saving project information... +2/6/2017 5:10:39 PM, Info: Saving project information... +2/6/2017 5:10:39 PM, Info: Saving project information... +2/6/2017 5:10:39 PM, Info: Saving project information... +2/6/2017 5:10:41 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/6/2017 5:10:42 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/6/2017 5:10:43 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/6/2017 5:10:44 PM, Info: Saving project information... +2/7/2017 8:57:36 AM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-07 09-06-38).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-07 09-06-38).log new file mode 100644 index 00000000..1cb368bc --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-07 09-06-38).log @@ -0,0 +1,3 @@ +2/7/2017 9:06:38 AM, Info: Initializing SIMPLSharp Services... +2/7/2017 9:06:38 AM, Info: ProjectInfo successfully initialized. +2/7/2017 9:13:18 AM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-07 11-56-54).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-07 11-56-54).log new file mode 100644 index 00000000..cb6bd63b --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-07 11-56-54).log @@ -0,0 +1,3 @@ +2/7/2017 11:56:54 AM, Info: Initializing SIMPLSharp Services... +2/7/2017 11:56:55 AM, Info: ProjectInfo successfully initialized. +2/7/2017 1:28:57 PM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-07 15-40-21).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-07 15-40-21).log new file mode 100644 index 00000000..b6f0f771 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-07 15-40-21).log @@ -0,0 +1,11 @@ +2/7/2017 3:40:21 PM, Info: Initializing SIMPLSharp Services... +2/7/2017 3:40:21 PM, Info: ProjectInfo successfully initialized. +2/7/2017 5:31:40 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/7/2017 5:31:41 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/7/2017 5:31:42 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/7/2017 5:31:43 PM, Info: Saving project information... +2/7/2017 5:36:38 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/7/2017 5:36:39 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/7/2017 5:36:39 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/7/2017 5:36:40 PM, Info: Saving project information... +2/7/2017 5:39:24 PM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-08 09-31-23).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-08 09-31-23).log new file mode 100644 index 00000000..392744d7 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-08 09-31-23).log @@ -0,0 +1,7 @@ +2/8/2017 9:31:23 AM, Info: Initializing SIMPLSharp Services... +2/8/2017 9:31:23 AM, Info: ProjectInfo successfully initialized. +2/8/2017 9:52:55 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/8/2017 9:52:57 AM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/8/2017 9:52:57 AM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/8/2017 9:52:59 AM, Info: Saving project information... +2/8/2017 10:27:42 AM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-08 10-41-39).log b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-08 10-41-39).log new file mode 100644 index 00000000..782eeec9 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/SIMPLSharpLogs/(2017-02-08 10-41-39).log @@ -0,0 +1,7 @@ +2/8/2017 10:41:39 AM, Info: Initializing SIMPLSharp Services... +2/8/2017 10:41:39 AM, Info: ProjectInfo successfully initialized. +2/8/2017 10:41:46 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll... +2/8/2017 10:41:47 AM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +2/8/2017 10:41:47 AM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz... +2/8/2017 10:41:49 AM, Info: Saving project information... +2/8/2017 10:42:00 AM, Info: Terminating SIMPLSharp Services diff --git a/PepperDashEssentials/PepperDashEssentials/UI Drivers/EssentialsHuddlePanelAvFunctionsDriver.cs b/PepperDashEssentials/PepperDashEssentials/UI Drivers/EssentialsHuddlePanelAvFunctionsDriver.cs new file mode 100644 index 00000000..94392dbc --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/UI Drivers/EssentialsHuddlePanelAvFunctionsDriver.cs @@ -0,0 +1,713 @@ +using System; +using System.Collections.Generic; +using Crestron.SimplSharp; +using Crestron.SimplSharpPro; + +using PepperDash.Core; +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.SmartObjects; +using PepperDash.Essentials.Core.PageManagers; + +namespace PepperDash.Essentials +{ + /// + /// + /// + public class EssentialsHuddlePanelAvFunctionsDriver : PanelDriverBase + { + CrestronTouchpanelPropertiesConfig Config; + + public enum UiDisplayMode + { + PresentationMode, AudioSetup + } + + //public BoolFeedback SelectASourceVisibleFeedback { get; private set; } + + /// + /// Whether volume ramping from this panel will show the volume + /// gauge popup. + /// + public bool ShowVolumeGauge { get; set; } + + /// + /// The amount of time that the volume buttons stays on screen, in ms + /// + public uint VolumeButtonPopupTimeout + { + get { return VolumeButtonsPopupFeedback.TimeoutMs; } + set { VolumeButtonsPopupFeedback.TimeoutMs = value; } + } + + /// + /// The amount of time that the volume gauge stays on screen, in ms + /// + public uint VolumeGaugePopupTimeout + { + get { return VolumeGaugeFeedback.TimeoutMs; } + set { VolumeGaugeFeedback.TimeoutMs = value; } + } + + /// + /// + /// + public uint PowerOffTimeout { get; set; } + + /// + /// + /// + public string DefaultRoomKey + { + get { return _DefaultRoomKey; } + set + { + _DefaultRoomKey = value; + CurrentRoom = DeviceManager.GetDeviceForKey(value) as EssentialsHuddleSpaceRoom; + } + } + string _DefaultRoomKey; + + /// + /// + /// + public EssentialsHuddleSpaceRoom CurrentRoom + { + get { return _CurrentRoom; } + set + { + SetCurrentRoom(value); + } + } + EssentialsHuddleSpaceRoom _CurrentRoom; + + /// + /// Controls the extended period that the volume gauge shows on-screen, + /// as triggered by Volume up/down operations + /// + BoolFeedbackPulseExtender VolumeGaugeFeedback; + + /// + /// Controls the period that the volume buttons show on non-hard-button + /// interfaces + /// + BoolFeedbackPulseExtender VolumeButtonsPopupFeedback; + + PanelDriverBase Parent; + + List CurrentDisplayModeSigsInUse = new List(); + + //// Important smart objects + + /// + /// Smart Object 3200 + /// + SubpageReferenceList SourcesSrl; + + /// + /// Smart Object 15022 + /// + SubpageReferenceList ActivityFooterSrl; + + /// + /// Tracks which audio page group the UI is in + /// + UiDisplayMode CurrentDisplayMode; + + /// + /// The AV page mangagers that have been used, to keep them alive for later + /// + Dictionary PageManagers = new Dictionary(); + + /// + /// Current page manager running for a source + /// + PageManager CurrentSourcePageManager; + + /// + /// Will auto-timeout a power off + /// + CTimer PowerOffTimer; + + /// + /// Constructor + /// + public EssentialsHuddlePanelAvFunctionsDriver(PanelDriverBase parent, CrestronTouchpanelPropertiesConfig config) + : base(parent.TriList) + { + Config = config; + Parent = parent; + + //SelectASourceVisibleFeedback = new BoolFeedback(() => + // CurrentRoom != null && !CurrentRoom.OnFeedback.BoolValue && this.IsVisible); + + //SourcesDynamicList = new SmartObjectDynamicList( + // TriList.SmartObjects[UISmartObjectJoin.SourceList], true, 3200); + + SourcesSrl = new SubpageReferenceList(TriList, 3200, 3, 3, 3); + ActivityFooterSrl = new SubpageReferenceList(TriList, 15022, 3, 3, 3); + SetupActivityFooterWhenRoomOff(); + + ShowVolumeGauge = true; + + // One-second pulse extender for volume gauge + VolumeGaugeFeedback = new BoolFeedbackPulseExtender(1500); + VolumeGaugeFeedback.Feedback + .LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeGaugePopupVisbible]); + + VolumeButtonsPopupFeedback = new BoolFeedbackPulseExtender(4000); + VolumeButtonsPopupFeedback.Feedback + .LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeButtonPopupVisbible]); + + PowerOffTimeout = 30000; + } + + /// + /// + /// + public override void Show() + { + // We'll want to show the current state of AV, but for now, just show rooms + TriList.BooleanInput[UIBoolJoin.TopBarVisible].BoolValue = true; + TriList.BooleanInput[UIBoolJoin.ActivityFooterVisible].BoolValue = true; + + // Default to showing rooms/sources now. + ShowMode(UiDisplayMode.PresentationMode); + + // Attach actions + TriList.SetSigFalseAction(UIBoolJoin.VolumeButtonPopupPress, VolumeButtonsTogglePress); + + // power-related functions + // Note: some of these are not directly-related to the huddle space UI, but are held over + // in case + TriList.SetSigFalseAction(UIBoolJoin.ShowPowerOffPress, PowerButtonPressed); + TriList.SetSigFalseAction(UIBoolJoin.PowerOffCancelPress, CancelPowerOff); + TriList.SetSigFalseAction(UIBoolJoin.PowerOffConfirmPress, FinishPowerOff); + TriList.SetSigFalseAction(UIBoolJoin.PowerOffMorePress, () => + { + CancelPowerOffTimer(); + TriList.BooleanInput[UIBoolJoin.PowerOffStep1Visible].BoolValue = false; + TriList.BooleanInput[UIBoolJoin.PowerOffStep2Visible].BoolValue = true; + }); + TriList.SetSigFalseAction(UIBoolJoin.AllRoomsOffPress, () => + { + EssentialsHuddleSpaceRoom.AllRoomsOff(); + CancelPowerOff(); + }); + TriList.SetSigFalseAction(UIBoolJoin.DisplayPowerTogglePress, () => + { + if (CurrentRoom != null && CurrentRoom.DefaultDisplay is IPower) + (CurrentRoom.DefaultDisplay as IPower).PowerToggle(); + }); + + base.Show(); + } + + public override void Hide() + { + HideAndClearCurrentDisplayModeSigsInUse(); + TriList.BooleanInput[UIBoolJoin.TopBarVisible].BoolValue = false; + TriList.BooleanInput[UIBoolJoin.ActivityFooterVisible].BoolValue = false; + VolumeButtonsPopupFeedback.ClearNow(); + CancelPowerOff(); + + base.Hide(); + } + + /// + /// Shows the various "modes" that this driver controls. Presentation, Setup page + /// + /// + public void ShowMode(UiDisplayMode mode) + { + //Clear whatever is showing now. + HideAndClearCurrentDisplayModeSigsInUse(); + CurrentDisplayMode = mode; + switch (mode) + { + case UiDisplayMode.PresentationMode: + CurrentDisplayModeSigsInUse.Add(TriList.BooleanInput[UIBoolJoin.StagingPageVisible]); + // Date/time + if (Config.ShowDate && Config.ShowTime) + { + TriList.BooleanInput[UIBoolJoin.DateAndTimeVisible].BoolValue = true; + TriList.BooleanInput[UIBoolJoin.DateOnlyVisible].BoolValue = false; + TriList.BooleanInput[UIBoolJoin.TimeOnlyVisible].BoolValue = false; + } + else + { + TriList.BooleanInput[UIBoolJoin.DateAndTimeVisible].BoolValue = false; + TriList.BooleanInput[UIBoolJoin.DateOnlyVisible].BoolValue = Config.ShowDate; + TriList.BooleanInput[UIBoolJoin.TimeOnlyVisible].BoolValue = Config.ShowTime; + } + + ShowCurrentDisplayModeSigsInUse(); + break; + } + } + + /// + /// When the room is off, set the footer SRL + /// + void SetupActivityFooterWhenRoomOff() + { + ActivityFooterSrl.Clear(); + ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(1, ActivityFooterSrl, 0, null)); + ActivityFooterSrl.Count = 1; + TriList.UShortInput[UIUshortJoin.PresentationListCaretMode].UShortValue = 0; + } + + /// + /// Sets up the footer SRL for when the room is on + /// + void SetupActivityFooterWhenRoomOn() + { + ActivityFooterSrl.Clear(); + ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(1, ActivityFooterSrl, + 0, null)); + ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(2, ActivityFooterSrl, + 3, b => { if (!b) PowerButtonPressed(); })); + ActivityFooterSrl.Count = 2; + TriList.UShortInput[UIUshortJoin.PresentationListCaretMode].UShortValue = 1; + } + + /// + /// Shows all sigs that are in CurrentDisplayModeSigsInUse + /// + void ShowCurrentDisplayModeSigsInUse() + { + foreach (var sig in CurrentDisplayModeSigsInUse) + sig.BoolValue = true; + } + + /// + /// Hides all CurrentDisplayModeSigsInUse sigs and clears the array + /// + void HideAndClearCurrentDisplayModeSigsInUse() + { + foreach (var sig in CurrentDisplayModeSigsInUse) + sig.BoolValue = false; + CurrentDisplayModeSigsInUse.Clear(); + } + + /// + /// Send the UI back depending on location, not used in huddle UI + /// + public override void BackButtonPressed() + { + switch (CurrentDisplayMode) + { + case UiDisplayMode.PresentationMode: + //CancelReturnToSourceTimer(); + BackToHome(); + break; + } + } + + /// + /// + /// + void BackToHome() + { + Hide(); + Parent.Show(); + } + + /// + /// Loads the appropriate Sigs into CurrentDisplayModeSigsInUse and shows them + /// + void ShowCurrentSource() + { + if (CurrentRoom.CurrentSourceInfo == null) + { +#warning When system is "off" show start screen and hide staging. + //var offPm = new DefaultPageManager(UIBoolJoin.SelectSourcePopupVisible, TriList); + //PageManagers["OFF"] = offPm; + //CurrentSourcePageManager = offPm; + //offPm.Show(); + return; + } + + var uiDev = CurrentRoom.CurrentSourceInfo.SourceDevice as IUiDisplayInfo; + PageManager pm = null; + // If we need a page manager, get an appropriate one + if (uiDev != null) + { + // Got an existing page manager, get it + if (PageManagers.ContainsKey(uiDev)) + pm = PageManagers[uiDev]; + // Otherwise make an apporiate one + else if (uiDev is ISetTopBoxControls) + //pm = new SetTopBoxMediumPageManager(uiDev as ISetTopBoxControls, TriList); + pm = new SetTopBoxThreePanelPageManager(uiDev as ISetTopBoxControls, TriList); + else if (uiDev is IDiscPlayerControls) + pm = new DiscPlayerMediumPageManager(uiDev as IDiscPlayerControls, TriList); + else + pm = new DefaultPageManager(uiDev, TriList); + PageManagers[uiDev] = pm; + CurrentSourcePageManager = pm; + pm.Show(); + } + else // show some default thing + { + CurrentDisplayModeSigsInUse.Add(TriList.BooleanInput[12345]); + } + + ShowCurrentDisplayModeSigsInUse(); + } + + /// + /// Called from button presses on source, where We can assume we want + /// to change to the proper screen. + /// + /// The key name of the route to run + void UiSelectSource(string key) + { + // Run the route and when it calls back, show the source + CurrentRoom.RunRouteAction(key, null); + } + + /// + /// + /// + public void PowerButtonPressed() + { + if (!CurrentRoom.OnFeedback.BoolValue) + return; + // Timeout or button 1 press will shut down + var modal = new ModalDialog(TriList); + uint time = 60000; + uint seconds = time / 1000; + var message = string.Format("Meeting will end in {0} seconds", seconds); + modal.PresentModalTimerDialog(2, "End Meeting", "Info", message, + "End Meeting Now", "Cancel", time, true, + but => { if (but != 2) CurrentRoom.RunRouteAction("roomOff"); }); + } + + void CancelPowerOffTimer() + { + if (PowerOffTimer != null) + { + PowerOffTimer.Stop(); + PowerOffTimer = null; + } + } + + /// + /// Runs the power off function on the current room + /// + public void FinishPowerOff() + { + if (CurrentRoom == null) + return; + CurrentRoom.RunRouteAction("roomOff"); + CancelPowerOff(); + } + + /// + /// Hides power off pages and stops timer + /// + void CancelPowerOff() + { + CancelPowerOffTimer(); + TriList.BooleanInput[UIBoolJoin.PowerOffStep1Visible].BoolValue = false; + TriList.BooleanInput[UIBoolJoin.PowerOffStep2Visible].BoolValue = false; + } + + /// + /// + /// + void VolumeButtonsTogglePress() + { + if (VolumeButtonsPopupFeedback.BoolValue) + VolumeButtonsPopupFeedback.ClearNow(); + else + { + // Trigger the popup + VolumeButtonsPopupFeedback.BoolValue = true; + VolumeButtonsPopupFeedback.BoolValue = false; + } + } + + /// + /// + /// + /// + public void VolumeUpPress(bool state) + { + // extend timeouts + if (ShowVolumeGauge) + VolumeGaugeFeedback.BoolValue = state; + VolumeButtonsPopupFeedback.BoolValue = state; + if (CurrentRoom.CurrentVolumeControls != null) + CurrentRoom.CurrentVolumeControls.VolumeUp(state); + } + + /// + /// + /// + /// + public void VolumeDownPress(bool state) + { + // extend timeouts + if (ShowVolumeGauge) + VolumeGaugeFeedback.BoolValue = state; + VolumeButtonsPopupFeedback.BoolValue = state; + if (CurrentRoom.CurrentVolumeControls != null) + CurrentRoom.CurrentVolumeControls.VolumeDown(state); + } + + /// + /// Helper for property setter. Sets the panel to the given room, latching up all functionality + /// + void SetCurrentRoom(EssentialsHuddleSpaceRoom room) + { + if (_CurrentRoom == room) return; + if (_CurrentRoom != null) + { + // Disconnect current room + _CurrentRoom.OnFeedback.OutputChange -= _CurrentRoom_OnFeedback_OutputChange; + _CurrentRoom.CurrentVolumeDeviceChange -= this._CurrentRoom_CurrentAudioDeviceChange; + ClearAudioDeviceConnections(); + _CurrentRoom.CurrentSourceInfoChange -= this._CurrentRoom_SourceInfoChange; + DisconnectSource(_CurrentRoom.CurrentSourceInfo); + } + _CurrentRoom = room; + + if (_CurrentRoom != null) + { + // get the source list config and set up the source list + var config = ConfigReader.ConfigObject.SourceLists; + if (config.ContainsKey(_CurrentRoom.SourceListKey)) + { + var srcList = config[_CurrentRoom.SourceListKey]; + // Setup sources list + uint i = 1; // counter for UI list + foreach (var kvp in srcList) + { + var srcConfig = kvp.Value; + if (!srcConfig.IncludeInSourceList) // Skip sources marked this way + continue; + + var actualSource = DeviceManager.GetDeviceForKey(srcConfig.SourceKey) as Device; + if (actualSource == null) + { + Debug.Console(0, "Cannot assign missing source '{0}' to source UI list", + srcConfig.SourceKey); + continue; + } + //Debug.Console(0, "Adding source '{0}'", srcConfig.SourceKey); + //var s = srcConfig; // assign locals for scope in button lambda + var routeKey = kvp.Key; + var item = new SubpageReferenceListSourceItem(i++, SourcesSrl, srcConfig.PreferredName, + b => { if (!b) UiSelectSource(routeKey); }); + SourcesSrl.AddItem(item); // add to the SRL + } + SourcesSrl.Count = (ushort)(i - 1); + } + + TriList.StringInput[UIStringJoin.CurrentRoomName].StringValue = _CurrentRoom.Name; + + // Link up all the change events from the room + _CurrentRoom.OnFeedback.OutputChange += _CurrentRoom_OnFeedback_OutputChange; + _CurrentRoom.CurrentVolumeDeviceChange += _CurrentRoom_CurrentAudioDeviceChange; + RefreshAudioDeviceConnections(); + _CurrentRoom.CurrentSourceInfoChange += _CurrentRoom_SourceInfoChange; + RefreshSourceInfo(); + } + else + { + // Clear sigs that need to be + TriList.StringInput[UIStringJoin.CurrentRoomName].StringValue = "Select a room"; + } + } + + /// + /// For room on/off changes + /// + void _CurrentRoom_OnFeedback_OutputChange(object sender, EventArgs e) + { + var value = _CurrentRoom.OnFeedback.BoolValue; + TriList.BooleanInput[UIBoolJoin.RoomIsOn].BoolValue = value; + if (value) + SetupActivityFooterWhenRoomOn(); + else + SetupActivityFooterWhenRoomOff(); + } + + /// + /// Hides source for provided source info + /// + /// + void DisconnectSource(SourceListItem previousInfo) + { + if (previousInfo == null) return; + + // Hide whatever is showing + if (IsVisible) + { + if (CurrentSourcePageManager != null) + { + CurrentSourcePageManager.Hide(); + CurrentSourcePageManager = null; + } + } + + if (previousInfo == null) return; + var previousDev = previousInfo.SourceDevice; + + // device type interfaces + if (previousDev is ISetTopBoxControls) + (previousDev as ISetTopBoxControls).UnlinkButtons(TriList); + // common interfaces + if (previousDev is IChannel) + (previousDev as IChannel).UnlinkButtons(TriList); + if (previousDev is IColor) + (previousDev as IColor).UnlinkButtons(TriList); + if (previousDev is IDPad) + (previousDev as IDPad).UnlinkButtons(TriList); + if (previousDev is IDvr) + (previousDev as IDvr).UnlinkButtons(TriList); + if (previousDev is INumericKeypad) + (previousDev as INumericKeypad).UnlinkButtons(TriList); + if (previousDev is IPower) + (previousDev as IPower).UnlinkButtons(TriList); + if (previousDev is ITransport) + (previousDev as ITransport).UnlinkButtons(TriList); + //if (previousDev is IRadio) + // (previousDev as IRadio).UnlinkButtons(this); + } + + /// + /// Refreshes and shows the room's current source + /// + void RefreshSourceInfo() + { + var routeInfo = CurrentRoom.CurrentSourceInfo; + // This will show off popup too + if (this.IsVisible) + ShowCurrentSource(); + + if (routeInfo == null || !CurrentRoom.OnFeedback.BoolValue) + { + // Check for power off and insert "Room is off" + TriList.StringInput[UIStringJoin.CurrentSourceName].StringValue = "Room is off"; + TriList.StringInput[UIStringJoin.CurrentSourceIcon].StringValue = "Power"; + this.Hide(); + Parent.Show(); + return; + } + else if (CurrentRoom.CurrentSourceInfo != null) + { + TriList.StringInput[UIStringJoin.CurrentSourceName].StringValue = routeInfo.PreferredName; + TriList.StringInput[UIStringJoin.CurrentSourceIcon].StringValue = routeInfo.Icon; // defaults to "blank" + } + else + { + TriList.StringInput[UIStringJoin.CurrentSourceName].StringValue = "---"; + TriList.StringInput[UIStringJoin.CurrentSourceIcon].StringValue = "Blank"; + } + + // Connect controls + if (routeInfo.SourceDevice != null) + ConnectControlDeviceMethods(routeInfo.SourceDevice); + } + + /// + /// Attach the source to the buttons and things + /// + void ConnectControlDeviceMethods(Device dev) + { + if(dev is ISetTopBoxControls) + (dev as ISetTopBoxControls).LinkButtons(TriList); + if (dev is IChannel) + (dev as IChannel).LinkButtons(TriList); + if (dev is IColor) + (dev as IColor).LinkButtons(TriList); + if (dev is IDPad) + (dev as IDPad).LinkButtons(TriList); + if (dev is IDvr) + (dev as IDvr).LinkButtons(TriList); + if (dev is INumericKeypad) + (dev as INumericKeypad).LinkButtons(TriList); + if (dev is IPower) + (dev as IPower).LinkButtons(TriList); + if (dev is ITransport) + (dev as ITransport).LinkButtons(TriList); + //if (dev is IRadio) + // (dev as IRadio).LinkButtons(this); // +++++++++++++ Make part of this into page manager + + //if (dev is ICustomFunctions) + //{ + // var custBridge = (dev as ICustomFunctions).GetCustomBridge(); + // custBridge.Link(this.Remote); + } + + /// + /// Detaches the buttons and feedback from the room's current audio device + /// + void ClearAudioDeviceConnections() + { + TriList.ClearBoolSigAction(UIBoolJoin.VolumeUpPress); + TriList.ClearBoolSigAction(UIBoolJoin.VolumeDownPress); + TriList.ClearBoolSigAction(UIBoolJoin.Volume1ProgramMutePressAndFB); + + var fDev = CurrentRoom.CurrentVolumeControls as IBasicVolumeWithFeedback; + if (fDev != null) + { + TriList.ClearUShortSigAction(UIUshortJoin.VolumeSlider1Value); + fDev.VolumeLevelFeedback.UnlinkInputSig( + TriList.UShortInput[UIUshortJoin.VolumeSlider1Value]); + } + } + + /// + /// Attaches the buttons and feedback to the room's current audio device + /// + void RefreshAudioDeviceConnections() + { + var dev = CurrentRoom.CurrentVolumeControls; + if (dev != null) // connect buttons + { + TriList.SetBoolSigAction(UIBoolJoin.VolumeUpPress, VolumeUpPress); + TriList.SetBoolSigAction(UIBoolJoin.VolumeDownPress, VolumeDownPress); + TriList.SetSigFalseAction(UIBoolJoin.Volume1ProgramMutePressAndFB, dev.MuteToggle); + } + + var fbDev = dev as IBasicVolumeWithFeedback; + if (fbDev == null) // this should catch both IBasicVolume and IBasicVolumeWithFeeback + TriList.UShortInput[UIUshortJoin.VolumeSlider1Value].UShortValue = 0; + else + { + // slider + TriList.SetUShortSigAction(UIUshortJoin.VolumeSlider1Value, fbDev.SetVolume); + // feedbacks + fbDev.MuteFeedback.LinkInputSig(TriList.BooleanInput[UIBoolJoin.Volume1ProgramMutePressAndFB]); + fbDev.VolumeLevelFeedback.LinkInputSig( + TriList.UShortInput[UIUshortJoin.VolumeSlider1Value]); + } + } + + /// + /// Handler for when the room's volume control device changes + /// + void _CurrentRoom_CurrentAudioDeviceChange(object sender, VolumeDeviceChangeEventArgs args) + { + if (args.Type == ChangeType.WillChange) + ClearAudioDeviceConnections(); + else // did change + RefreshAudioDeviceConnections(); + } + + /// + /// Handles source change + /// + void _CurrentRoom_SourceInfoChange(EssentialsRoomBase room, + SourceListItem info, ChangeType change) + { + if (change == ChangeType.WillChange) + DisconnectSource(info); + else + RefreshSourceInfo(); + } + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/UI Drivers/EssentialsPanelMainInterfaceDriver.cs b/PepperDashEssentials/PepperDashEssentials/UI Drivers/EssentialsPanelMainInterfaceDriver.cs new file mode 100644 index 00000000..5dd02b13 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/UI Drivers/EssentialsPanelMainInterfaceDriver.cs @@ -0,0 +1,87 @@ +using System; +using Crestron.SimplSharpPro.DeviceSupport; +using Crestron.SimplSharpPro.UI; + +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.SmartObjects; + +namespace PepperDash.Essentials +{ + /// + /// + /// + public class EssentialsPanelMainInterfaceDriver : PanelDriverBase + { + /// + /// Assign the appropriate A/V driver. + /// Want to keep the AvDriver alive, because it may hold states + /// + public PanelDriverBase AvDriver { get; set; } + + public PanelDriverBase CurrentChildDriver { get; private set; } + + CrestronTouchpanelPropertiesConfig Config; + + SubpageReferenceList ActivityFooterList; + + public EssentialsPanelMainInterfaceDriver(BasicTriListWithSmartObject trilist, + CrestronTouchpanelPropertiesConfig config) + : base(trilist) + { + Config = config; + trilist.SetSigFalseAction(UIBoolJoin.StartPagePress, () => ShowSubDriver(AvDriver)); + + // Need this? + trilist.SetSigFalseAction(UIBoolJoin.ShowPanelSetupPress, () => + ShowSubDriver(new SingleSubpageModalAndBackDriver(this, UIBoolJoin.PanelSetupVisible))); + + ActivityFooterList = new SubpageReferenceList(trilist, 1234, 3, 3, 3); + } + + public override void Show() + { + CurrentChildDriver = null; + if (Config.UsesSplashPage) + TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = true; + else + ShowSubDriver(AvDriver); + TriList.SetSigFalseAction(UIBoolJoin.HelpButtonPress, () => + { + var modal = new ModalDialog(TriList); + var room = DeviceManager.GetDeviceForKey(Config.DefaultRoomKey) + as EssentialsHuddleSpaceRoom; + string message = "Sorry, no help message available. No room connected."; + if(room != null) + message = room.Config.HelpMessage; + modal.PresentModalTimerDialog(1, "Help", "Help", message, + "Done", null, 0, false, null); + }); + + base.Show(); + } + + public override void Hide() + { + TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false; + base.Hide(); + } + + void ShowSubDriver(PanelDriverBase driver) + { + CurrentChildDriver = driver; + if (driver == null) + return; + this.Hide(); + driver.Show(); + } + + /// + /// + /// + public override void BackButtonPressed() + { + if(CurrentChildDriver != null) + CurrentChildDriver.BackButtonPressed(); + } + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/UI Drivers/EssentialsPresentationPanelAvFunctionsDriver.cs b/PepperDashEssentials/PepperDashEssentials/UI Drivers/EssentialsPresentationPanelAvFunctionsDriver.cs new file mode 100644 index 00000000..58ef33fb --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/UI Drivers/EssentialsPresentationPanelAvFunctionsDriver.cs @@ -0,0 +1,709 @@ +using System; +using System.Collections.Generic; +using Crestron.SimplSharp; +using Crestron.SimplSharpPro; + +using PepperDash.Core; +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.SmartObjects; +using PepperDash.Essentials.Core.PageManagers; + +namespace PepperDash.Essentials +{ + /// + /// + /// + public class EssentialsPresentationPanelAvFunctionsDriver : PanelDriverBase + { + CrestronTouchpanelPropertiesConfig Config; + + public enum UiDisplayMode + { + AudioSetup, AudioCallMode, PresentationMode + } + + /// + /// Whether volume ramping from this panel will show the volume + /// gauge popup. + /// + public bool ShowVolumeGauge { get; set; } + + /// + /// The amount of time that the volume buttons stays on screen, in ms + /// + public uint VolumeButtonPopupTimeout + { + get { return VolumeButtonsPopupFeedback.TimeoutMs; } + set { VolumeButtonsPopupFeedback.TimeoutMs = value; } + } + + /// + /// The amount of time that the volume gauge stays on screen, in ms + /// + public uint VolumeGaugePopupTimeout + { + get { return VolumeGaugeFeedback.TimeoutMs; } + set { VolumeGaugeFeedback.TimeoutMs = value; } + } + + /// + /// + /// + public uint PowerOffTimeout { get; set; } + + /// + /// + /// + public string DefaultRoomKey + { + get { return _DefaultRoomKey; } + set + { + _DefaultRoomKey = value; + CurrentRoom = DeviceManager.GetDeviceForKey(value) as EssentialsPresentationRoom; + } + } + string _DefaultRoomKey; + + /// + /// + /// + public EssentialsPresentationRoom CurrentRoom + { + get { return _CurrentRoom; } + set + { + SetCurrentRoom(value); + } + } + EssentialsPresentationRoom _CurrentRoom; + + /// + /// Controls the extended period that the volume gauge shows on-screen, + /// as triggered by Volume up/down operations + /// + BoolFeedbackPulseExtender VolumeGaugeFeedback; + + /// + /// Controls the period that the volume buttons show on non-hard-button + /// interfaces + /// + BoolFeedbackPulseExtender VolumeButtonsPopupFeedback; + + PanelDriverBase Parent; + + List CurrentDisplayModeSigsInUse = new List(); + + //// Important smart objects + + /// + /// Smart Object 3200 + /// + SubpageReferenceList SourcesSrl; + + /// + /// Smart Object 15022 + /// + SubpageReferenceList ActivityFooterSrl; + + /// + /// Tracks which audio page group the UI is in + /// + UiDisplayMode CurrentDisplayMode; + + /// + /// The AV page mangagers that have been used, to keep them alive for later + /// + Dictionary PageManagers = new Dictionary(); + + /// + /// Current page manager running for a source + /// + PageManager CurrentSourcePageManager; + + /// + /// Will auto-timeout a power off + /// + CTimer PowerOffTimer; + + /// + /// Constructor + /// + public EssentialsPresentationPanelAvFunctionsDriver(PanelDriverBase parent, CrestronTouchpanelPropertiesConfig config) + : base(parent.TriList) + { + Config = config; + Parent = parent; + + SourcesSrl = new SubpageReferenceList(TriList, 3200, 3, 3, 3); + ActivityFooterSrl = new SubpageReferenceList(TriList, 15022, 3, 3, 3); + SetupActivityFooterWhenRoomOff(); + + ShowVolumeGauge = true; + + // One-second pulse extender for volume gauge + VolumeGaugeFeedback = new BoolFeedbackPulseExtender(1500); + VolumeGaugeFeedback.Feedback + .LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeGaugePopupVisbible]); + + VolumeButtonsPopupFeedback = new BoolFeedbackPulseExtender(4000); + VolumeButtonsPopupFeedback.Feedback + .LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeButtonPopupVisbible]); + + PowerOffTimeout = 30000; + } + + /// + /// + /// + public override void Show() + { + // We'll want to show the current state of AV, but for now, just show rooms + TriList.BooleanInput[UIBoolJoin.TopBarVisible].BoolValue = true; + TriList.BooleanInput[UIBoolJoin.ActivityFooterVisible].BoolValue = true; + + // Default to showing rooms/sources now. + ShowMode(UiDisplayMode.PresentationMode); + + // Attach actions + TriList.SetSigFalseAction(UIBoolJoin.VolumeButtonPopupPress, VolumeButtonsTogglePress); + + // power-related functions + // Note: some of these are not directly-related to the huddle space UI, but are held over + // in case + TriList.SetSigFalseAction(UIBoolJoin.ShowPowerOffPress, PowerButtonPressed); + TriList.SetSigFalseAction(UIBoolJoin.PowerOffCancelPress, CancelPowerOff); + TriList.SetSigFalseAction(UIBoolJoin.PowerOffConfirmPress, FinishPowerOff); + TriList.SetSigFalseAction(UIBoolJoin.PowerOffMorePress, () => + { + CancelPowerOffTimer(); + TriList.BooleanInput[UIBoolJoin.PowerOffStep1Visible].BoolValue = false; + TriList.BooleanInput[UIBoolJoin.PowerOffStep2Visible].BoolValue = true; + }); + TriList.SetSigFalseAction(UIBoolJoin.AllRoomsOffPress, () => + { + EssentialsHuddleSpaceRoom.AllRoomsOff(); + CancelPowerOff(); + }); + TriList.SetSigFalseAction(UIBoolJoin.DisplayPowerTogglePress, () => + { + if (CurrentRoom != null && CurrentRoom.DefaultDisplay is IPower) + (CurrentRoom.DefaultDisplay as IPower).PowerToggle(); + }); + + base.Show(); + } + + public override void Hide() + { + HideAndClearCurrentDisplayModeSigsInUse(); + TriList.BooleanInput[UIBoolJoin.TopBarVisible].BoolValue = false; + TriList.BooleanInput[UIBoolJoin.ActivityFooterVisible].BoolValue = false; + VolumeButtonsPopupFeedback.ClearNow(); + CancelPowerOff(); + + base.Hide(); + } + + /// + /// Shows the various "modes" that this driver controls. Presentation, Setup page + /// + /// + public void ShowMode(UiDisplayMode mode) + { + //Clear whatever is showing now. + HideAndClearCurrentDisplayModeSigsInUse(); + CurrentDisplayMode = mode; + switch (mode) + { + case UiDisplayMode.PresentationMode: + CurrentDisplayModeSigsInUse.Add(TriList.BooleanInput[UIBoolJoin.StagingPageVisible]); + // Date/time + if (Config.ShowDate && Config.ShowTime) + { + TriList.BooleanInput[UIBoolJoin.DateAndTimeVisible].BoolValue = true; + TriList.BooleanInput[UIBoolJoin.DateOnlyVisible].BoolValue = false; + TriList.BooleanInput[UIBoolJoin.TimeOnlyVisible].BoolValue = false; + } + else + { + TriList.BooleanInput[UIBoolJoin.DateAndTimeVisible].BoolValue = false; + TriList.BooleanInput[UIBoolJoin.DateOnlyVisible].BoolValue = Config.ShowDate; + TriList.BooleanInput[UIBoolJoin.TimeOnlyVisible].BoolValue = Config.ShowTime; + } + + ShowCurrentDisplayModeSigsInUse(); + break; + } + } + + /// + /// When the room is off, set the footer SRL + /// + void SetupActivityFooterWhenRoomOff() + { + ActivityFooterSrl.Clear(); + ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(1, ActivityFooterSrl, 0, + b => { if (!b) ShowMode(UiDisplayMode.PresentationMode); })); + ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(2, ActivityFooterSrl, 0, + b => { if (!b) ShowMode(UiDisplayMode.AudioCallMode); })); + ActivityFooterSrl.Count = 2; + TriList.UShortInput[UIUshortJoin.PresentationListCaretMode].UShortValue = 1; + } + + /// + /// Sets up the footer SRL for when the room is on + /// + void SetupActivityFooterWhenRoomOn() + { + ActivityFooterSrl.Clear(); + ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(1, ActivityFooterSrl, 0, + b => { if (!b) ShowMode(UiDisplayMode.PresentationMode); })); + ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(2, ActivityFooterSrl, 0, + b => { if (!b) ShowMode(UiDisplayMode.AudioCallMode); })); + ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(3, ActivityFooterSrl, + 3, b => { if (!b) PowerButtonPressed(); })); + ActivityFooterSrl.Count = 3; + TriList.UShortInput[UIUshortJoin.PresentationListCaretMode].UShortValue = 2; + } + + /// + /// Shows all sigs that are in CurrentDisplayModeSigsInUse + /// + void ShowCurrentDisplayModeSigsInUse() + { + foreach (var sig in CurrentDisplayModeSigsInUse) + sig.BoolValue = true; + } + + /// + /// Hides all CurrentDisplayModeSigsInUse sigs and clears the array + /// + void HideAndClearCurrentDisplayModeSigsInUse() + { + foreach (var sig in CurrentDisplayModeSigsInUse) + sig.BoolValue = false; + CurrentDisplayModeSigsInUse.Clear(); + } + + /// + /// Send the UI back depending on location, not used in huddle UI + /// + public override void BackButtonPressed() + { + switch (CurrentDisplayMode) + { + case UiDisplayMode.PresentationMode: + //CancelReturnToSourceTimer(); + BackToHome(); + break; + } + } + + /// + /// + /// + void BackToHome() + { + Hide(); + Parent.Show(); + } + + /// + /// Loads the appropriate Sigs into CurrentDisplayModeSigsInUse and shows them + /// + void ShowCurrentSource() + { + if (CurrentRoom.CurrentSourceInfo == null) + { + //var offPm = new DefaultPageManager(UIBoolJoin.SelectSourcePopupVisible, TriList); + //PageManagers["OFF"] = offPm; + //CurrentSourcePageManager = offPm; + //offPm.Show(); + return; + } + + var uiDev = CurrentRoom.CurrentSourceInfo.SourceDevice as IUiDisplayInfo; + PageManager pm = null; + // If we need a page manager, get an appropriate one + if (uiDev != null) + { + // Got an existing page manager, get it + if (PageManagers.ContainsKey(uiDev)) + pm = PageManagers[uiDev]; + // Otherwise make an apporiate one + else if (uiDev is ISetTopBoxControls) + //pm = new SetTopBoxMediumPageManager(uiDev as ISetTopBoxControls, TriList); + pm = new SetTopBoxThreePanelPageManager(uiDev as ISetTopBoxControls, TriList); + else if (uiDev is IDiscPlayerControls) + pm = new DiscPlayerMediumPageManager(uiDev as IDiscPlayerControls, TriList); + else + pm = new DefaultPageManager(uiDev, TriList); + PageManagers[uiDev] = pm; + CurrentSourcePageManager = pm; + pm.Show(); + } + else // show some default thing + { + CurrentDisplayModeSigsInUse.Add(TriList.BooleanInput[12345]); + } + + ShowCurrentDisplayModeSigsInUse(); + } + + /// + /// Called from button presses on source, where We can assume we want + /// to change to the proper screen. + /// + /// The key name of the route to run + void UiSelectSource(string key) + { + // Run the route and when it calls back, show the source + CurrentRoom.RunRouteAction(key, null); + } + + /// + /// + /// + public void PowerButtonPressed() + { + if (!CurrentRoom.OnFeedback.BoolValue) + return; + // Timeout or button 1 press will shut down + var modal = new ModalDialog(TriList); + uint time = 60000; + uint seconds = time / 1000; + var message = string.Format("Meeting will end in {0} seconds", seconds); + modal.PresentModalTimerDialog(2, "End Meeting", "Info", message, + "End Meeting Now", "Cancel", time, true, + but => { if (but != 2) CurrentRoom.RunRouteAction("roomOff"); }); + } + + void CancelPowerOffTimer() + { + if (PowerOffTimer != null) + { + PowerOffTimer.Stop(); + PowerOffTimer = null; + } + } + + /// + /// Runs the power off function on the current room + /// + public void FinishPowerOff() + { + if (CurrentRoom == null) + return; + CurrentRoom.RunRouteAction("roomOff"); + CancelPowerOff(); + } + + /// + /// Hides power off pages and stops timer + /// + void CancelPowerOff() + { + CancelPowerOffTimer(); + TriList.BooleanInput[UIBoolJoin.PowerOffStep1Visible].BoolValue = false; + TriList.BooleanInput[UIBoolJoin.PowerOffStep2Visible].BoolValue = false; + } + + /// + /// + /// + void VolumeButtonsTogglePress() + { + if (VolumeButtonsPopupFeedback.BoolValue) + VolumeButtonsPopupFeedback.ClearNow(); + else + { + // Trigger the popup + VolumeButtonsPopupFeedback.BoolValue = true; + VolumeButtonsPopupFeedback.BoolValue = false; + } + } + + /// + /// + /// + /// + public void VolumeUpPress(bool state) + { + // extend timeouts + if (ShowVolumeGauge) + VolumeGaugeFeedback.BoolValue = state; + VolumeButtonsPopupFeedback.BoolValue = state; + if (CurrentRoom.CurrentVolumeControls != null) + CurrentRoom.CurrentVolumeControls.VolumeUp(state); + } + + /// + /// + /// + /// + public void VolumeDownPress(bool state) + { + // extend timeouts + if (ShowVolumeGauge) + VolumeGaugeFeedback.BoolValue = state; + VolumeButtonsPopupFeedback.BoolValue = state; + if (CurrentRoom.CurrentVolumeControls != null) + CurrentRoom.CurrentVolumeControls.VolumeDown(state); + } + + /// + /// Helper for property setter. Sets the panel to the given room, latching up all functionality + /// + void SetCurrentRoom(EssentialsPresentationRoom room) + { + if (_CurrentRoom == room) return; + if (_CurrentRoom != null) + { + // Disconnect current room + _CurrentRoom.OnFeedback.OutputChange -= _CurrentRoom_OnFeedback_OutputChange; + _CurrentRoom.CurrentVolumeDeviceChange -= this._CurrentRoom_CurrentAudioDeviceChange; + ClearAudioDeviceConnections(); + _CurrentRoom.CurrentSourceInfoChange -= this._CurrentRoom_SourceInfoChange; + DisconnectSource(_CurrentRoom.CurrentSourceInfo); + } + _CurrentRoom = room; + + if (_CurrentRoom != null) + { + // get the source list config and set up the source list + var config = ConfigReader.ConfigObject.SourceLists; + if (config.ContainsKey(_CurrentRoom.SourceListKey)) + { + var srcList = config[_CurrentRoom.SourceListKey]; + // Setup sources list + uint i = 1; // counter for UI list + foreach (var kvp in srcList) + { + var srcConfig = kvp.Value; + if (!srcConfig.IncludeInSourceList) // Skip sources marked this way + continue; + + var actualSource = DeviceManager.GetDeviceForKey(srcConfig.SourceKey) as Device; + if (actualSource == null) + { + Debug.Console(0, "Cannot assign missing source '{0}' to source UI list", + srcConfig.SourceKey); + continue; + } + //Debug.Console(0, "Adding source '{0}'", srcConfig.SourceKey); + //var s = srcConfig; // assign locals for scope in button lambda + var routeKey = kvp.Key; + var item = new SubpageReferenceListSourceItem(i++, SourcesSrl, srcConfig.PreferredName, + b => { if (!b) UiSelectSource(routeKey); }); + SourcesSrl.AddItem(item); // add to the SRL + } + SourcesSrl.Count = (ushort)(i - 1); + } + + TriList.StringInput[UIStringJoin.CurrentRoomName].StringValue = _CurrentRoom.Name; + + // Link up all the change events from the room + _CurrentRoom.OnFeedback.OutputChange += _CurrentRoom_OnFeedback_OutputChange; + _CurrentRoom.CurrentVolumeDeviceChange += _CurrentRoom_CurrentAudioDeviceChange; + RefreshAudioDeviceConnections(); + _CurrentRoom.CurrentSourceInfoChange += _CurrentRoom_SourceInfoChange; + RefreshSourceInfo(); + } + else + { + // Clear sigs that need to be + TriList.StringInput[UIStringJoin.CurrentRoomName].StringValue = "Select a room"; + } + } + + /// + /// For room on/off changes + /// + void _CurrentRoom_OnFeedback_OutputChange(object sender, EventArgs e) + { + var value = _CurrentRoom.OnFeedback.BoolValue; + TriList.BooleanInput[UIBoolJoin.RoomIsOn].BoolValue = value; + if (value) + SetupActivityFooterWhenRoomOn(); + else + SetupActivityFooterWhenRoomOff(); + } + + /// + /// Hides source for provided source info + /// + /// + void DisconnectSource(SourceListItem previousInfo) + { + if (previousInfo == null) return; + + // Hide whatever is showing + if (IsVisible) + { + if (CurrentSourcePageManager != null) + { + CurrentSourcePageManager.Hide(); + CurrentSourcePageManager = null; + } + } + + if (previousInfo == null) return; + var previousDev = previousInfo.SourceDevice; + + // device type interfaces + if (previousDev is ISetTopBoxControls) + (previousDev as ISetTopBoxControls).UnlinkButtons(TriList); + // common interfaces + if (previousDev is IChannel) + (previousDev as IChannel).UnlinkButtons(TriList); + if (previousDev is IColor) + (previousDev as IColor).UnlinkButtons(TriList); + if (previousDev is IDPad) + (previousDev as IDPad).UnlinkButtons(TriList); + if (previousDev is IDvr) + (previousDev as IDvr).UnlinkButtons(TriList); + if (previousDev is INumericKeypad) + (previousDev as INumericKeypad).UnlinkButtons(TriList); + if (previousDev is IPower) + (previousDev as IPower).UnlinkButtons(TriList); + if (previousDev is ITransport) + (previousDev as ITransport).UnlinkButtons(TriList); + //if (previousDev is IRadio) + // (previousDev as IRadio).UnlinkButtons(this); + } + + /// + /// Refreshes and shows the room's current source + /// + void RefreshSourceInfo() + { + var routeInfo = CurrentRoom.CurrentSourceInfo; + // This will show off popup too + if (this.IsVisible) + ShowCurrentSource(); + + if (routeInfo == null || !CurrentRoom.OnFeedback.BoolValue) + { + // Check for power off and insert "Room is off" + TriList.StringInput[UIStringJoin.CurrentSourceName].StringValue = "Room is off"; + TriList.StringInput[UIStringJoin.CurrentSourceIcon].StringValue = "Power"; + this.Hide(); + Parent.Show(); + return; + } + else if (CurrentRoom.CurrentSourceInfo != null) + { + TriList.StringInput[UIStringJoin.CurrentSourceName].StringValue = routeInfo.PreferredName; + TriList.StringInput[UIStringJoin.CurrentSourceIcon].StringValue = routeInfo.Icon; // defaults to "blank" + } + else + { + TriList.StringInput[UIStringJoin.CurrentSourceName].StringValue = "---"; + TriList.StringInput[UIStringJoin.CurrentSourceIcon].StringValue = "Blank"; + } + + // Connect controls + if (routeInfo.SourceDevice != null) + ConnectControlDeviceMethods(routeInfo.SourceDevice); + } + + /// + /// Attach the source to the buttons and things + /// + void ConnectControlDeviceMethods(Device dev) + { + if(dev is ISetTopBoxControls) + (dev as ISetTopBoxControls).LinkButtons(TriList); + if (dev is IChannel) + (dev as IChannel).LinkButtons(TriList); + if (dev is IColor) + (dev as IColor).LinkButtons(TriList); + if (dev is IDPad) + (dev as IDPad).LinkButtons(TriList); + if (dev is IDvr) + (dev as IDvr).LinkButtons(TriList); + if (dev is INumericKeypad) + (dev as INumericKeypad).LinkButtons(TriList); + if (dev is IPower) + (dev as IPower).LinkButtons(TriList); + if (dev is ITransport) + (dev as ITransport).LinkButtons(TriList); + //if (dev is IRadio) + // (dev as IRadio).LinkButtons(this); // +++++++++++++ Make part of this into page manager + + //if (dev is ICustomFunctions) + //{ + // var custBridge = (dev as ICustomFunctions).GetCustomBridge(); + // custBridge.Link(this.Remote); + } + + /// + /// Detaches the buttons and feedback from the room's current audio device + /// + void ClearAudioDeviceConnections() + { + TriList.ClearBoolSigAction(UIBoolJoin.VolumeUpPress); + TriList.ClearBoolSigAction(UIBoolJoin.VolumeDownPress); + TriList.ClearBoolSigAction(UIBoolJoin.Volume1ProgramMutePressAndFB); + + var fDev = CurrentRoom.CurrentVolumeControls as IBasicVolumeWithFeedback; + if (fDev != null) + { + TriList.ClearUShortSigAction(UIUshortJoin.VolumeSlider1Value); + fDev.VolumeLevelFeedback.UnlinkInputSig( + TriList.UShortInput[UIUshortJoin.VolumeSlider1Value]); + } + } + + /// + /// Attaches the buttons and feedback to the room's current audio device + /// + void RefreshAudioDeviceConnections() + { + var dev = CurrentRoom.CurrentVolumeControls; + if (dev != null) // connect buttons + { + TriList.SetBoolSigAction(UIBoolJoin.VolumeUpPress, VolumeUpPress); + TriList.SetBoolSigAction(UIBoolJoin.VolumeDownPress, VolumeDownPress); + TriList.SetSigFalseAction(UIBoolJoin.Volume1ProgramMutePressAndFB, dev.MuteToggle); + } + + var fbDev = dev as IBasicVolumeWithFeedback; + if (fbDev == null) // this should catch both IBasicVolume and IBasicVolumeWithFeeback + TriList.UShortInput[UIUshortJoin.VolumeSlider1Value].UShortValue = 0; + else + { + // slider + TriList.SetUShortSigAction(UIUshortJoin.VolumeSlider1Value, fbDev.SetVolume); + // feedbacks + fbDev.MuteFeedback.LinkInputSig(TriList.BooleanInput[UIBoolJoin.Volume1ProgramMutePressAndFB]); + fbDev.VolumeLevelFeedback.LinkInputSig( + TriList.UShortInput[UIUshortJoin.VolumeSlider1Value]); + } + } + + /// + /// Handler for when the room's volume control device changes + /// + void _CurrentRoom_CurrentAudioDeviceChange(object sender, VolumeDeviceChangeEventArgs args) + { + if (args.Type == ChangeType.WillChange) + ClearAudioDeviceConnections(); + else // did change + RefreshAudioDeviceConnections(); + } + + /// + /// Handles source change + /// + void _CurrentRoom_SourceInfoChange(EssentialsRoomBase room, + SourceListItem info, ChangeType change) + { + if (change == ChangeType.WillChange) + DisconnectSource(info); + else + RefreshSourceInfo(); + } + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/UI Drivers/SingleSubpageModalAndBackDriver.cs b/PepperDashEssentials/PepperDashEssentials/UI Drivers/SingleSubpageModalAndBackDriver.cs new file mode 100644 index 00000000..f654d04e --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/UI Drivers/SingleSubpageModalAndBackDriver.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using Crestron.SimplSharpPro; +using Crestron.SimplSharpPro.DeviceSupport; +using Crestron.SimplSharpPro.UI; + +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.SmartObjects; + + +namespace PepperDash.Essentials +{ + /// + /// Very basic show/hide manager for weather page. Basic functionality is useful on any + /// size of interface + /// + public class SingleSubpageModalAndBackDriver : PanelDriverBase + { + BoolInputSig SubpageSig; + + PanelDriverBase Parent; + + public SingleSubpageModalAndBackDriver(PanelDriverBase parent, uint subpageJoin) : base(parent.TriList) + { + Parent = parent; + SubpageSig = Parent.TriList.BooleanInput[subpageJoin]; + } + + /// + /// This shows the driver. + /// Not sure I like this approach. Hides this and shows it's parent. Not really a navigation-stack type thing. + /// The parent is always the home page driver + /// + public override void Show() + { + SubpageSig.BoolValue = true; + base.Show(); + } + + public override void Hide() + { + SubpageSig.BoolValue = false; + base.Hide(); + } + + public override void BackButtonPressed() + { + Hide(); + Parent.Show(); + } + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/UI Drivers/SmartObjectRoomsList.cs b/PepperDashEssentials/PepperDashEssentials/UI Drivers/SmartObjectRoomsList.cs new file mode 100644 index 00000000..7d818e3e --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/UI Drivers/SmartObjectRoomsList.cs @@ -0,0 +1,94 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using Crestron.SimplSharpPro; +using Crestron.SimplSharpPro.DeviceSupport; + +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.SmartObjects; + +namespace PepperDash.Essentials +{ + public class SmartObjectRoomsList : SmartObjectDynamicList + { + public uint StatusSigOffset { get; private set; } + List Items; + + public SmartObjectRoomsList(SmartObject so, uint nameSigOffset, uint statusSigOffset) + : base(so, true, nameSigOffset) + { + StatusSigOffset = statusSigOffset; + Items = new List(); + } + + public void AddRoomItem(SmartObjectRoomsListItem item) + { + Items.Add(item); + } + + public void SetItemStatusText(uint index, string text) + { + if (index > MaxCount) return; + // The list item template defines CIPS tags that refer to standard joins + (SmartObject.Device as BasicTriList).StringInput[StatusSigOffset + index].StringValue = text; + } + + /// + /// Sets feedback for the given room + /// + public void SetFeedbackForRoom(EssentialsHuddleSpaceRoom room) + { + var itemToSet = Items.FirstOrDefault(i => i.Room == room); + if (itemToSet != null) + SetFeedback(itemToSet.Index, true); + } + } + + public class SmartObjectRoomsListItem + { + public EssentialsHuddleSpaceRoom Room { get; private set; } + SmartObjectRoomsList Parent; + public uint Index { get; private set; } + + public SmartObjectRoomsListItem(EssentialsHuddleSpaceRoom room, uint index, SmartObjectRoomsList parent, + Action buttonAction) + { + Room = room; + Parent = parent; + Index = index; + if (room == null) return; + + // Set "now" states + parent.SetItemMainText(index, room.Name); + UpdateItem(room.CurrentSourceInfo); + // Watch for later changes + room.CurrentSourceInfoChange += new SourceInfoChangeHandler(room_CurrentSourceInfoChange); + parent.SetItemButtonAction(index, buttonAction); + } + + void room_CurrentSourceInfoChange(EssentialsRoomBase room, SourceListItem info, ChangeType type) + { + UpdateItem(info); + } + + /// + /// Helper to handle source events and startup syncing with room's current source + /// + /// + void UpdateItem(SourceListItem info) + { + if (info == null || info.Type == eSourceListItemType.Off) + { + Parent.SetItemStatusText(Index, ""); + Parent.SetItemIcon(Index, "Blank"); + } + else + { + Parent.SetItemStatusText(Index, info.PreferredName); + Parent.SetItemIcon(Index, info.AltIcon); + } + } + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/UI Drivers/UIJoins.cs b/PepperDashEssentials/PepperDashEssentials/UI Drivers/UIJoins.cs new file mode 100644 index 00000000..6df51660 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/UI Drivers/UIJoins.cs @@ -0,0 +1,143 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using Crestron.SimplSharpPro; +using Crestron.SimplSharpPro.DeviceSupport; + +namespace PepperDash.Essentials +{ + public class UISmartObjectJoin + { + public const uint StagingListSRL = 3200; + public const uint ActivityFooterSRL = 15022; + } + + /// + /// + /// + public class UIBoolJoin + { + public const uint VolumeUpPress = 901; + public const uint VolumeDownPress = 902; + //public const uint MuteTogglePress = 3813; + //public const uint MutedFeedback = 3813; + + // ********************************************************** + // REVISE THESE WITH JOSHUA 3800's + public const uint VolumeSingleMute1Visible = 3811; + public const uint VolumeSlider1Press = 3812; + public const uint Volume1ProgramMutePressAndFB = 3813; + public const uint VolumeDualMute1Visible = 3871; + public const uint Volume1SpeechMutePressAndFB = 3874; + public const uint Volume1BackerVisibility = 3875; + + public const uint Volume2Visible = 3821; + public const uint VolumeSlider2Press = 3822; + public const uint Volume2MutePressAndFB = 3823; + public const uint Volume3Visible = 3831; + public const uint VolumeSlider3Press = 3832; + public const uint Volume3MutePressAndFB = 3833; + public const uint Volume4Visible = 3841; + public const uint VolumeSlider4Press = 3842; + public const uint Volume4MutePressAndFB = 3843; + public const uint Volume5Visible = 3851; + public const uint VolumeSlider5Press = 3852; + public const uint Volume5MutePressAndFB = 3853; + public const uint Volume6Visible = 3861; + public const uint VolumeSlider6Press = 3862; + public const uint Volume6MutePressAndFB = 3863; + + public const uint VolumesPageVisible = 3870; + // ********************************************************** + + public const uint GenericModalVisible = 3999; + + public const uint AvNoControlsSubVisible = 12345; + public const uint HomeVisible = 15001; + /// + /// Shows the start page in the source controls area of the screen + /// + public const uint StartPageVisible = 15002; + public const uint StartPagePress = 15003; // REMOVE ------------------------------------------------- + public const uint RoomIsOn = 15004; + //public const uint SelectSourcePopupVisible = 15005; + /// + /// Shows always-on volume control subpage with only audio mute + /// + public const uint VolumeControlsSingleMuteVisible = 15005; + /// + /// Shows always-on volume control subpage with mic and audio mutes + /// + public const uint VolumeControlsDualMuteVisible = 15006; + public const uint ShowPanelSetupPress = 15010; + public const uint TopBarVisible = 15011; + public const uint StagingPageVisible = 15012; + public const uint PowerOffStep1Visible = 15013; + public const uint PowerOffStep2Visible = 15014; + public const uint ShowPowerOffPress = 15015; + public const uint PowerOffMorePress = 15016; + public const uint StagingPageAdditionalArrowsVisible = 15017; + public const uint PanelSetupVisible = 15020; + public const uint SourceWaitOverlayVisible = 15021; + public const uint ActivityFooterVisible = 15022; + public const uint LightsHeaderButtonVisible = 15023; + public const uint CallRightHeaderButtonVisible = 15024; + public const uint CallLeftHeaderButtonVisible = 15025; + public const uint LightsHeaderButtonPress = 15026; + public const uint CallHeaderButtonPress = 15027; + public const uint GearHeaderButtonPress = 15028; + public const uint RoomHeaderButtonPress = 15029; + // 15030 + public const uint AllRoomsOffPress = 15031; + public const uint DisplayPowerTogglePress = 15032; + public const uint PowerOffCancelPress = 15033; + public const uint PowerOffConfirmPress = 15034; + public const uint VolumeButtonPopupPress = 15035; + public const uint VolumeButtonPopupVisbible = 15035; + public const uint VolumeGaugePopupVisbible = 15036; + public const uint CallStatusPageVisible = 15040; + public const uint LightsPageVisbible = 15041; + + public const uint HelpButtonPress = 15087; + public const uint DateOnlyVisible = 15088; + public const uint TimeOnlyVisible = 15089; + public const uint DateAndTimeVisible = 15090; + public const uint SetupFullDistrib = 15091; + } + + /// + /// + /// + public class UIUshortJoin + { + //public const uint VolumeLevel = 3812; + public const uint VolumeSlider1Value = 3812; + public const uint VolumeSlider2Value = 3822; + public const uint VolumeSlider3Value = 3832; + public const uint VolumeSlider4Value = 3842; + public const uint VolumeSlider5Value = 3852; + public const uint VolumeSlider6Value = 3862; + + public const uint PresentationListCaretMode = 3922; + } + + /// + /// + /// + public class UIStringJoin + { + public const uint AdvancedVolumeSlider1Text = 3812; + public const uint AdvancedVolumeSlider2Text = 3822; + public const uint AdvancedVolumeSlider3Text = 3832; + public const uint AdvancedVolumeSlider4Text = 3842; + public const uint AdvancedVolumeSlider5Text = 3852; + public const uint AdvancedVolumeSlider6Text = 3862; + + public const uint CurrentRoomName = 3901; + public const uint CurrentSourceName = 3902; + public const uint CurrentSourceIcon = 3903; + public const uint PowerOffMessage = 3911; + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/UI Drivers/enums and base.cs b/PepperDashEssentials/PepperDashEssentials/UI Drivers/enums and base.cs new file mode 100644 index 00000000..25d15d0d --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/UI Drivers/enums and base.cs @@ -0,0 +1,135 @@ +using System; +using System.Collections.Generic; + +using PepperDash.Essentials.Core; + +namespace PepperDash.Essentials +{ + public enum eAvSubpageType + { + NoControls, + PowerOff, + SetupFullDistributed, + SourceWaitOverlay, + TopBar, + VolumePopup, + ZoneSource + } + + public enum eAvSourceSubpageType + { + AppleTv, + Radio, + Roku + } + + public enum eCommonSubpageType + { + GenericModal, + Home, + PanelSetup, + Weather + } + + public enum eAvSmartObjects + { + RoomList, + SourceList + } + + public enum eCommonSmartObjects + { + HomePageList + } + + /// + /// + /// + public abstract class PanelDriverBase// : IBasicTriListWithSmartObject + { + /// + /// + /// + public bool IsVisible { get; private set; } + + /// + /// Makes sure you call this. + /// Sets IsVisible and attaches back/home buttons to BackButtonPressed + /// + public virtual void Show() + { + IsVisible = true; + TriList.SetSigFalseAction(15002, BackButtonPressed); + } + + /// + /// Only sets IsVisible + /// + public virtual void Hide() + { + IsVisible = false; + } + + /// + /// Override with specific back button behavior. Default is empty + /// + public virtual void BackButtonPressed() + { + } + + public PanelDriverBase(Crestron.SimplSharpPro.DeviceSupport.BasicTriListWithSmartObject triList) + { + TriList = triList; + } + + #region IBasicTriListWithSmartObject Members + + /// + /// + /// + public void AddSmartObjectHelper(uint id, object controller) + { + SmartObjectControllers.Add(id, controller); + } + + /// + /// + /// + public void RemoveSmartObjectHelper(uint id) + { + SmartObjectControllers.Remove(id); + } + + Dictionary SmartObjectControllers = new Dictionary(); + + /// + /// The trilist object for the Crestron TP device + /// + public Crestron.SimplSharpPro.DeviceSupport.BasicTriListWithSmartObject TriList { get; private set; } + + /// + /// + /// + /// + /// + public bool ContainsSmartObjectHelper(uint id) + { + return SmartObjectControllers.ContainsKey(id); + } + + /// + /// + /// + /// + /// + public object GetSmartObjectHelper(uint id) + { + if (SmartObjectControllers.ContainsKey(id)) + return SmartObjectControllers[id]; + else + return null; + } + + #endregion + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/UI/CrestronTouchpanelPropertiesConfig.cs b/PepperDashEssentials/PepperDashEssentials/UI/CrestronTouchpanelPropertiesConfig.cs new file mode 100644 index 00000000..30ee75b7 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/UI/CrestronTouchpanelPropertiesConfig.cs @@ -0,0 +1,15 @@ +namespace PepperDash.Essentials +{ + public class CrestronTouchpanelPropertiesConfig + { + public string IpId { get; set; } + public string DefaultRoomKey { get; set; } + public string RoomListKey { get; set; } + public string SgdFile { get; set; } + public string ProjectName { get; set; } + public bool ShowVolumeGauge { get; set; } + public bool UsesSplashPage { get; set; } + public bool ShowDate { get; set; } + public bool ShowTime { get; set; } + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/UI/EssentialsTouchpanelController.cs b/PepperDashEssentials/PepperDashEssentials/UI/EssentialsTouchpanelController.cs new file mode 100644 index 00000000..ec32609d --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/UI/EssentialsTouchpanelController.cs @@ -0,0 +1,197 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using Crestron.SimplSharp.CrestronIO; +using Crestron.SimplSharpPro; +using Crestron.SimplSharpPro.DeviceSupport; +using Crestron.SimplSharpPro.UI; +using PepperDash.Core; +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.PageManagers; + +namespace PepperDash.Essentials +{ + public class EssentialsTouchpanelController : Device + { + public BasicTriListWithSmartObject Panel { get; private set; } + + public PanelDriverBase PanelDriver { get; private set; } + + CTimer BacklightTransitionedOnTimer; + + public EssentialsTouchpanelController(string key, string name, Tswx52ButtonVoiceControl tsw, + string projectName, string sgdPath) + : base(key, name) + { + Panel = tsw; + tsw.LoadSmartObjects(sgdPath); + tsw.SigChange += new Crestron.SimplSharpPro.DeviceSupport.SigEventHandler(Tsw_SigChange); + + } + + /// + /// Config constructor + /// + public EssentialsTouchpanelController(string key, string name, string type, CrestronTouchpanelPropertiesConfig props, uint id) + : base(key, name) + { + AddPostActivationAction(() => + { + Debug.Console(2, this, "post-activation linking"); + type = type.ToLower(); + try + { + if (type == "crestronapp") + { + var app = new CrestronApp(id, Global.ControlSystem); + app.ParameterProjectName.Value = props.ProjectName; + Panel = app; + } + else if (type == "tsw752") + Panel = new Tsw752(id, Global.ControlSystem); + else if (type == "tsw1052") + Panel = new Tsw1052(id, Global.ControlSystem); + else + { + Debug.Console(0, this, "WARNING: Cannot create TSW controller with type '{0}'", type); + return; + } + } + catch (Exception e) + { + Debug.Console(0, this, "WARNING: Cannot create TSW base class. Panel will not function: {0}", e.Message); + return; + } + + // Reserved sigs + if (Panel is TswFt5ButtonSystem) + { + var tsw = Panel as TswFt5ButtonSystem; + tsw.ExtenderSystemReservedSigs.Use(); + tsw.ExtenderSystemReservedSigs.DeviceExtenderSigChange + += ExtenderSystemReservedSigs_DeviceExtenderSigChange; + } + + new CTimer(o => + { + var regSuccess = Panel.Register(); + if (regSuccess != eDeviceRegistrationUnRegistrationResponse.Success) + Debug.Console(0, this, "WARNING: Registration failed. Continuing, but panel may not function: {0}", regSuccess); + + // Give up cleanly if SGD is not present. + var sgdName = @"\NVRAM\Program" + InitialParametersClass.ApplicationNumber + + @"\sgd\" + props.SgdFile; + if (!File.Exists(sgdName)) + { + Debug.Console(0, this, "WARNING: Smart object file '{0}' not present. Exiting TSW load", sgdName); + return; + } + + Panel.LoadSmartObjects(sgdName); + Panel.SigChange += Tsw_SigChange; + + var mainDriver = new EssentialsPanelMainInterfaceDriver(Panel, props); + // Then the AV driver + + // spin up different room drivers depending on room type + var room = DeviceManager.GetDeviceForKey(props.DefaultRoomKey); + if (room is EssentialsHuddleSpaceRoom) + { + var avDriver = new EssentialsHuddlePanelAvFunctionsDriver(mainDriver, props); + avDriver.CurrentRoom = DeviceManager.GetDeviceForKey(props.DefaultRoomKey) + as EssentialsHuddleSpaceRoom; + avDriver.DefaultRoomKey = props.DefaultRoomKey; + mainDriver.AvDriver = avDriver; + LoadAndShowDriver(mainDriver); // This is a little convoluted. + + if (Panel is TswFt5ButtonSystem) + { + var tsw = Panel as TswFt5ButtonSystem; + // Wire up hard keys + tsw.Power.UserObject = new Action(b => { if (!b) avDriver.PowerButtonPressed(); }); + tsw.Home.UserObject = new Action(b => { if (!b) HomePressed(); }); + tsw.Up.UserObject = new Action(avDriver.VolumeUpPress); + tsw.Down.UserObject = new Action(avDriver.VolumeDownPress); + tsw.ButtonStateChange += new ButtonEventHandler(Tsw_ButtonStateChange); + } + } + else if (room is EssentialsPresentationRoom) + { + var avDriver = new EssentialsPresentationPanelAvFunctionsDriver(mainDriver, props); + avDriver.CurrentRoom = DeviceManager.GetDeviceForKey(props.DefaultRoomKey) + as EssentialsPresentationRoom; + avDriver.DefaultRoomKey = props.DefaultRoomKey; + mainDriver.AvDriver = avDriver; + LoadAndShowDriver(mainDriver); + + if (Panel is TswFt5ButtonSystem) + { + var tsw = Panel as TswFt5ButtonSystem; + // Wire up hard keys + tsw.Power.UserObject = new Action(b => { if (!b) avDriver.PowerButtonPressed(); }); + tsw.Home.UserObject = new Action(b => { if (!b) HomePressed(); }); + tsw.Up.UserObject = new Action(avDriver.VolumeUpPress); + tsw.Down.UserObject = new Action(avDriver.VolumeDownPress); + tsw.ButtonStateChange += new ButtonEventHandler(Tsw_ButtonStateChange); + } + } + else + { + Debug.Console(0, this, "ERROR: Cannot load AvFunctionsDriver for room '{0}'", props.DefaultRoomKey); + } + }, 0); + }); + } + + public void LoadAndShowDriver(PanelDriverBase driver) + { + PanelDriver = driver; + driver.Show(); + } + + void HomePressed() + { + if (BacklightTransitionedOnTimer != null) + Debug.Console(2, this, "Home pressed from dark screen"); + else + PanelDriver.BackButtonPressed(); + } + + + void ExtenderSystemReservedSigs_DeviceExtenderSigChange(DeviceExtender currentDeviceExtender, SigEventArgs args) + { + // If the sig is transitioning on, mark it in case it was home button that transitioned it + var blOnSig = (Panel as TswFt5ButtonSystem).ExtenderSystemReservedSigs.BacklightOnFeedback; + if (args.Sig == blOnSig && blOnSig.BoolValue) + { + Debug.Console(2, this, "Backlight transitioning on"); + BacklightTransitionedOnTimer = new CTimer(o => + { + BacklightTransitionedOnTimer = null; + }, 200); + } + } + + void Tsw_SigChange(object currentDevice, Crestron.SimplSharpPro.SigEventArgs args) + { + if (Debug.Level == 2) + Debug.Console(2, this, "Sig change: {0} {1}={2}", args.Sig.Type, args.Sig.Number, args.Sig.StringValue); + var uo = args.Sig.UserObject; + if (uo is Action) + (uo as Action)(args.Sig.BoolValue); + else if (uo is Action) + (uo as Action)(args.Sig.UShortValue); + else if (uo is Action) + (uo as Action)(args.Sig.StringValue); + } + + void Tsw_ButtonStateChange(GenericBase device, ButtonEventArgs args) + { + var uo = args.Button.UserObject; + if(uo is Action) + (uo as Action)(args.Button.State == eButtonState.Pressed); + } + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/UI/SubpageReferenceListActivityItem.cs b/PepperDashEssentials/PepperDashEssentials/UI/SubpageReferenceListActivityItem.cs new file mode 100644 index 00000000..ec30cc34 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/UI/SubpageReferenceListActivityItem.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using Crestron.SimplSharpPro; +using Crestron.SimplSharpPro.UI; + +using PepperDash.Essentials.Core; + +namespace PepperDash.Essentials +{ + public class SubpageReferenceListActivityItem : SubpageReferenceListItem + { + public SubpageReferenceListActivityItem(uint index, SubpageReferenceList owner, + ushort buttonMode, Action pressAction) + : base(index, owner) + { + Owner.GetBoolFeedbackSig(Index, 1).UserObject = pressAction; + Owner.UShortInputSig(Index, 1).UShortValue = buttonMode; + } + + /// + /// Called by SRL to release all referenced objects + /// + public override void Clear() + { + Owner.BoolInputSig(Index, 1).UserObject = null; + Owner.UShortInputSig(Index, 1).UShortValue = 0; + } + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/UI/SubpageReferenceListSourceItem.cs b/PepperDashEssentials/PepperDashEssentials/UI/SubpageReferenceListSourceItem.cs new file mode 100644 index 00000000..a4f9a9fd --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/UI/SubpageReferenceListSourceItem.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using Crestron.SimplSharpPro; +using Crestron.SimplSharpPro.UI; + +using PepperDash.Essentials.Core; + +namespace PepperDash.Essentials +{ + public class SubpageReferenceListSourceItem : SubpageReferenceListItem + { + public SubpageReferenceListSourceItem(uint index, SubpageReferenceList owner, + string name, Action routeAction) + : base(index, owner) + { + owner.GetBoolFeedbackSig(index, 1).UserObject = new Action(routeAction); + owner.StringInputSig(index, 1).StringValue = name; + } + + /// + /// Called by SRL to release all referenced objects + /// + public override void Clear() + { + Owner.BoolInputSig(Index, 1).UserObject = null; + Owner.StringInputSig(Index, 1).StringValue = ""; + } + + //public override void Refresh() + //{ + + //} + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/app.config b/PepperDashEssentials/PepperDashEssentials/app.config new file mode 100644 index 00000000..1e79e7b5 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/app.config @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/PepperDashEssentials/PepperDashEssentials/bin/Crestron.SimplSharpPro.DM.dll b/PepperDashEssentials/PepperDashEssentials/bin/Crestron.SimplSharpPro.DM.dll new file mode 100644 index 00000000..58cdae5e Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/Crestron.SimplSharpPro.DM.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/Crestron.SimplSharpPro.DeviceSupport.dll b/PepperDashEssentials/PepperDashEssentials/bin/Crestron.SimplSharpPro.DeviceSupport.dll new file mode 100644 index 00000000..2d21a552 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/Crestron.SimplSharpPro.DeviceSupport.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/Crestron.SimplSharpPro.EthernetCommunications.dll b/PepperDashEssentials/PepperDashEssentials/bin/Crestron.SimplSharpPro.EthernetCommunications.dll new file mode 100644 index 00000000..3d13af1b Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/Crestron.SimplSharpPro.EthernetCommunications.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/Crestron.SimplSharpPro.Fusion.dll b/PepperDashEssentials/PepperDashEssentials/bin/Crestron.SimplSharpPro.Fusion.dll new file mode 100644 index 00000000..064ea88b Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/Crestron.SimplSharpPro.Fusion.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/Crestron.SimplSharpPro.Gateways.dll b/PepperDashEssentials/PepperDashEssentials/bin/Crestron.SimplSharpPro.Gateways.dll new file mode 100644 index 00000000..df32978e Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/Crestron.SimplSharpPro.Gateways.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/Crestron.SimplSharpPro.Remotes.dll b/PepperDashEssentials/PepperDashEssentials/bin/Crestron.SimplSharpPro.Remotes.dll new file mode 100644 index 00000000..c46360b5 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/Crestron.SimplSharpPro.Remotes.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/Crestron.SimplSharpPro.UI.dll b/PepperDashEssentials/PepperDashEssentials/bin/Crestron.SimplSharpPro.UI.dll new file mode 100644 index 00000000..43afe010 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/Crestron.SimplSharpPro.UI.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/Essentials Devices Common.dll b/PepperDashEssentials/PepperDashEssentials/bin/Essentials Devices Common.dll new file mode 100644 index 00000000..ff85d2dc Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/Essentials Devices Common.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/EssentialsHttpServer.dll b/PepperDashEssentials/PepperDashEssentials/bin/EssentialsHttpServer.dll new file mode 100644 index 00000000..6934c2c0 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/EssentialsHttpServer.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/Newtonsoft.Json.Compact.dll b/PepperDashEssentials/PepperDashEssentials/bin/Newtonsoft.Json.Compact.dll new file mode 100644 index 00000000..e72180ad Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/Newtonsoft.Json.Compact.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/PepperDashCorePortalSync.dll b/PepperDashEssentials/PepperDashEssentials/bin/PepperDashCorePortalSync.dll new file mode 100644 index 00000000..b8ddbac1 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/PepperDashCorePortalSync.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.cpz b/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.cpz new file mode 100644 index 00000000..a4d64fb3 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.cpz differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.dll b/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.dll new file mode 100644 index 00000000..87c3037d Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.dll.config b/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.dll.config new file mode 100644 index 00000000..1e79e7b5 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.dll.config @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.pdb b/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.pdb new file mode 100644 index 00000000..7a0b01e3 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.pdb differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/PepperDash_Core.dll b/PepperDashEssentials/PepperDashEssentials/bin/PepperDash_Core.dll new file mode 100644 index 00000000..0e3b531c Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/PepperDash_Core.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/PepperDash_Essentials_Core.dll b/PepperDashEssentials/PepperDashEssentials/bin/PepperDash_Essentials_Core.dll new file mode 100644 index 00000000..2b318692 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/PepperDash_Essentials_Core.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/PepperDash_Essentials_DM.dll b/PepperDashEssentials/PepperDashEssentials/bin/PepperDash_Essentials_DM.dll new file mode 100644 index 00000000..38d5c5f6 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/PepperDash_Essentials_DM.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/PepperDash_Essentials_Displays.dll b/PepperDashEssentials/PepperDashEssentials/bin/PepperDash_Essentials_Displays.dll new file mode 100644 index 00000000..c58e1b88 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/PepperDash_Essentials_Displays.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/ProgramInfo.config b/PepperDashEssentials/PepperDashEssentials/bin/ProgramInfo.config new file mode 100644 index 00000000..397347c5 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/bin/ProgramInfo.config @@ -0,0 +1,20 @@ + + + PepperDashEssentials + PepperDashEssentials + PepperDashEssentials + 1.009.0029 + SIMPL# Plugin + 5 + 5 + + + + 2/8/2017 10:41:47 AM + 1.0.0.31698 + + + Crestron.SIMPLSharp, Version=2.0.48.0, Culture=neutral, PublicKeyToken=812d080f93e2de10 + + + \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpCWSHelperInterface.dll b/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpCWSHelperInterface.dll new file mode 100644 index 00000000..305c3bad Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpCWSHelperInterface.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpCryptographyInterface.dll b/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpCryptographyInterface.dll new file mode 100644 index 00000000..66cdd97f Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpCryptographyInterface.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpCustomAttributesInterface.dll b/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpCustomAttributesInterface.dll new file mode 100644 index 00000000..6fd71ec8 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpCustomAttributesInterface.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpData.dat b/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpData.dat new file mode 100644 index 00000000..816bfe12 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpData.dat differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpHelperInterface.dll b/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpHelperInterface.dll new file mode 100644 index 00000000..78ba9371 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpHelperInterface.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpNewtonsoft.dll b/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpNewtonsoft.dll new file mode 100644 index 00000000..81103a7d Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpNewtonsoft.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpPro.exe b/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpPro.exe new file mode 100644 index 00000000..2cb4658f Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpPro.exe differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpReflectionInterface.dll b/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpReflectionInterface.dll new file mode 100644 index 00000000..edc2f9f6 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpReflectionInterface.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpSQLHelperInterface.dll b/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpSQLHelperInterface.dll new file mode 100644 index 00000000..69b6dc7a Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/SimplSharpSQLHelperInterface.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/manifest.info b/PepperDashEssentials/PepperDashEssentials/bin/manifest.info new file mode 100644 index 00000000..4f25dc15 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/bin/manifest.info @@ -0,0 +1,95 @@ +MainAssembly=PepperDashEssentials.dll:03a054a3c6b53e2cfb0d0c2061de7dfc +MainAssemblyMinFirmwareVersion=1.009.0029 +MainAssemblyResource=SimplSharpData.dat:315526abf906cded47fb0c7510266a7e +ü +DependencySource=Crestron.SimplSharpPro.DeviceSupport.dll:caae4b4259aaf619059f0ae34473bfd2 +DependencyPath=PepperDashEssentials.cpz:Crestron.SimplSharpPro.DeviceSupport.dll +DependencyMainAssembly=Crestron.SimplSharpPro.DeviceSupport.dll:caae4b4259aaf619059f0ae34473bfd2 +ü +DependencySource=Crestron.SimplSharpPro.DM.dll:bdf5acfa80cc3bb87f21deb891128b1d +DependencyPath=PepperDashEssentials.cpz:Crestron.SimplSharpPro.DM.dll +DependencyMainAssembly=Crestron.SimplSharpPro.DM.dll:bdf5acfa80cc3bb87f21deb891128b1d +ü +DependencySource=Crestron.SimplSharpPro.EthernetCommunications.dll:36e663497195140ee6f1b4ebc53f5ea7 +DependencyPath=PepperDashEssentials.cpz:Crestron.SimplSharpPro.EthernetCommunications.dll +DependencyMainAssembly=Crestron.SimplSharpPro.EthernetCommunications.dll:36e663497195140ee6f1b4ebc53f5ea7 +ü +DependencySource=Crestron.SimplSharpPro.Fusion.dll:2ceb645ad5aa098f78c4b6c963af2df2 +DependencyPath=PepperDashEssentials.cpz:Crestron.SimplSharpPro.Fusion.dll +DependencyMainAssembly=Crestron.SimplSharpPro.Fusion.dll:2ceb645ad5aa098f78c4b6c963af2df2 +ü +DependencySource=Crestron.SimplSharpPro.Gateways.dll:7242e212aa3843228a5d91eb66829f8a +DependencyPath=PepperDashEssentials.cpz:Crestron.SimplSharpPro.Gateways.dll +DependencyMainAssembly=Crestron.SimplSharpPro.Gateways.dll:7242e212aa3843228a5d91eb66829f8a +ü +DependencySource=Crestron.SimplSharpPro.Remotes.dll:af26e0b230429e692cd350ec63c907be +DependencyPath=PepperDashEssentials.cpz:Crestron.SimplSharpPro.Remotes.dll +DependencyMainAssembly=Crestron.SimplSharpPro.Remotes.dll:af26e0b230429e692cd350ec63c907be +ü +DependencySource=Crestron.SimplSharpPro.UI.dll:089312a0cb0b4537072d4eb234e71e0e +DependencyPath=PepperDashEssentials.cpz:Crestron.SimplSharpPro.UI.dll +DependencyMainAssembly=Crestron.SimplSharpPro.UI.dll:089312a0cb0b4537072d4eb234e71e0e +ü +DependencySource=Essentials Devices Common.dll:bd1f528d502da8cf608b0e02c759fe66 +DependencyPath=PepperDashEssentials.cpz:Essentials Devices Common.dll +DependencyMainAssembly=Essentials Devices Common.dll:bd1f528d502da8cf608b0e02c759fe66 +ü +DependencySource=EssentialsHttpServer.dll:0666085bdb0856c1d117699c7859bb8c +DependencyPath=PepperDashEssentials.cpz:EssentialsHttpServer.dll +DependencyMainAssembly=EssentialsHttpServer.dll:0666085bdb0856c1d117699c7859bb8c +ü +DependencySource=Newtonsoft.Json.Compact.dll:ea996aa2ec65aa1878e7c9d09e37a896 +DependencyPath=PepperDashEssentials.cpz:Newtonsoft.Json.Compact.dll +DependencyMainAssembly=Newtonsoft.Json.Compact.dll:ea996aa2ec65aa1878e7c9d09e37a896 +ü +DependencySource=PepperDashCorePortalSync.dll:80cb079012e59e1a1805c7e5bbe07e76 +DependencyPath=PepperDashEssentials.cpz:PepperDashCorePortalSync.dll +DependencyMainAssembly=PepperDashCorePortalSync.dll:80cb079012e59e1a1805c7e5bbe07e76 +ü +DependencySource=PepperDash_Core.dll:2ce705d0617973f5c800064ef6bd32cd +DependencyPath=PepperDashEssentials.cpz:PepperDash_Core.dll +DependencyMainAssembly=PepperDash_Core.dll:2ce705d0617973f5c800064ef6bd32cd +ü +DependencySource=PepperDash_Essentials_Core.dll:3681d811c2088b5a70962bce0435d2cc +DependencyPath=PepperDashEssentials.cpz:PepperDash_Essentials_Core.dll +DependencyMainAssembly=PepperDash_Essentials_Core.dll:3681d811c2088b5a70962bce0435d2cc +ü +DependencySource=PepperDash_Essentials_Displays.dll:3135ef6b8f66b5b1bc5223aad3ef66e0 +DependencyPath=PepperDashEssentials.cpz:PepperDash_Essentials_Displays.dll +DependencyMainAssembly=PepperDash_Essentials_Displays.dll:3135ef6b8f66b5b1bc5223aad3ef66e0 +ü +DependencySource=PepperDash_Essentials_DM.dll:74a4eda48a2b1a459216a509a699818e +DependencyPath=PepperDashEssentials.cpz:PepperDash_Essentials_DM.dll +DependencyMainAssembly=PepperDash_Essentials_DM.dll:74a4eda48a2b1a459216a509a699818e +ü +DependencySource=SimplSharpCryptographyInterface.dll:dd4791a86d6f67ddc309c4ab1e24c663 +DependencyPath=PepperDashEssentials.cpz:SimplSharpCryptographyInterface.dll +DependencyMainAssembly=SimplSharpCryptographyInterface.dll:dd4791a86d6f67ddc309c4ab1e24c663 +ü +DependencySource=SimplSharpCustomAttributesInterface.dll:9c4b4d4c519b655af90016edca2d66b9 +DependencyPath=PepperDashEssentials.cpz:SimplSharpCustomAttributesInterface.dll +DependencyMainAssembly=SimplSharpCustomAttributesInterface.dll:9c4b4d4c519b655af90016edca2d66b9 +ü +DependencySource=SimplSharpCWSHelperInterface.dll:8b215ccdae52c92aff1591473e025580 +DependencyPath=PepperDashEssentials.cpz:SimplSharpCWSHelperInterface.dll +DependencyMainAssembly=SimplSharpCWSHelperInterface.dll:8b215ccdae52c92aff1591473e025580 +ü +DependencySource=SimplSharpHelperInterface.dll:aed72eb0e19559a3f56708be76445dcd +DependencyPath=PepperDashEssentials.cpz:SimplSharpHelperInterface.dll +DependencyMainAssembly=SimplSharpHelperInterface.dll:aed72eb0e19559a3f56708be76445dcd +ü +DependencySource=SimplSharpNewtonsoft.dll:9c09c5d30daedddf895c36acbface0d5 +DependencyPath=PepperDashEssentials.cpz:SimplSharpNewtonsoft.dll +DependencyMainAssembly=SimplSharpNewtonsoft.dll:9c09c5d30daedddf895c36acbface0d5 +ü +DependencySource=SimplSharpPro.exe:88022a3a06b852351fea321019f0ff6d +DependencyPath=PepperDashEssentials.cpz:SimplSharpPro.exe +DependencyMainAssembly=SimplSharpPro.exe:88022a3a06b852351fea321019f0ff6d +ü +DependencySource=SimplSharpReflectionInterface.dll:e3ff8edbba84ccd7155b9984e67488b2 +DependencyPath=PepperDashEssentials.cpz:SimplSharpReflectionInterface.dll +DependencyMainAssembly=SimplSharpReflectionInterface.dll:e3ff8edbba84ccd7155b9984e67488b2 +ü +DependencySource=SimplSharpSQLHelperInterface.dll:f0c505ddecd8a783d4b75217501cbb72 +DependencyPath=PepperDashEssentials.cpz:SimplSharpSQLHelperInterface.dll +DependencyMainAssembly=SimplSharpSQLHelperInterface.dll:f0c505ddecd8a783d4b75217501cbb72 diff --git a/PepperDashEssentials/PepperDashEssentials/bin/manifest.ser b/PepperDashEssentials/PepperDashEssentials/bin/manifest.ser new file mode 100644 index 00000000..c2d63e73 Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/bin/manifest.ser differ diff --git a/PepperDashEssentials/PepperDashEssentials/obj/Debug/PepperDashEssentials.csproj.FileListAbsolute.txt b/PepperDashEssentials/PepperDashEssentials/obj/Debug/PepperDashEssentials.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..cf3b1a07 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/obj/Debug/PepperDashEssentials.csproj.FileListAbsolute.txt @@ -0,0 +1,84 @@ +C:\Working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\obj\Debug\ResolveAssemblyReference.cache +C:\Working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +C:\Working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.pdb +C:\Working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.DeviceSupport.dll +C:\Working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.DM.dll +C:\Working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.EthernetCommunications.dll +C:\Working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.UI.dll +C:\Working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\SimplSharpCustomAttributesInterface.dll +C:\Working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\SimplSharpHelperInterface.dll +C:\Working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\SimplSharpPro.exe +C:\Working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\obj\Debug\PepperDashEssentials.dll +C:\Working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\obj\Debug\PepperDashEssentials.pdb +C:\Users\hvolm\Desktop\working\PepperDashEssentials\PepperDashEssentials\obj\Debug\ResolveAssemblyReference.cache +C:\Users\hvolm\Desktop\working\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +C:\Users\hvolm\Desktop\working\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.pdb +C:\Users\hvolm\Desktop\working\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.DeviceSupport.dll +C:\Users\hvolm\Desktop\working\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.DM.dll +C:\Users\hvolm\Desktop\working\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.EthernetCommunications.dll +C:\Users\hvolm\Desktop\working\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.UI.dll +C:\Users\hvolm\Desktop\working\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentialsBase.dll +C:\Users\hvolm\Desktop\working\PepperDashEssentials\PepperDashEssentials\bin\SimplSharpCustomAttributesInterface.dll +C:\Users\hvolm\Desktop\working\PepperDashEssentials\PepperDashEssentials\bin\SimplSharpHelperInterface.dll +C:\Users\hvolm\Desktop\working\PepperDashEssentials\PepperDashEssentials\bin\SimplSharpPro.exe +C:\Users\hvolm\Desktop\working\PepperDashEssentials\PepperDashEssentials\obj\Debug\PepperDashEssentials.dll +C:\Users\hvolm\Desktop\working\PepperDashEssentials\PepperDashEssentials\obj\Debug\PepperDashEssentials.pdb +C:\Working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Newtonsoft.Json.Compact.dll +C:\Working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDash_Essentials_Core.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll.config +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.pdb +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.DeviceSupport.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.DM.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.EthernetCommunications.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.Fusion.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.Remotes.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.UI.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Essentials Devices Common.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\EssentialsHttpServer.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDash_Core.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDash_Essentials_Core.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDash_Essentials_Displays.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDash_Essentials_DM.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\SimplSharpCustomAttributesInterface.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\SimplSharpHelperInterface.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\SimplSharpNewtonsoft.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\SimplSharpPro.exe +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\SimplSharpSQLHelperInterface.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\SSMonoIOLibrary.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\SSMonoSupportLibrary.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.Gateways.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\SimplSharpReflectionInterface.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Newtonsoft.Json.Compact.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\obj\Debug\ResolveAssemblyReference.cache +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\obj\Debug\PepperDashEssentials.dll +C:\Users\hvolm\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\obj\Debug\PepperDashEssentials.pdb +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\obj\Debug\ResolveAssemblyReference.cache +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\obj\Debug\PepperDashEssentials.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll.config +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.pdb +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.DeviceSupport.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.DM.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.EthernetCommunications.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.Fusion.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.Remotes.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.UI.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Essentials Devices Common.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\EssentialsHttpServer.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDash_Core.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDash_Essentials_Core.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDash_Essentials_Displays.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDash_Essentials_DM.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\SimplSharpCustomAttributesInterface.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\SimplSharpHelperInterface.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\SimplSharpNewtonsoft.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\SimplSharpPro.exe +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\SimplSharpSQLHelperInterface.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\SimplSharpReflectionInterface.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Crestron.SimplSharpPro.Gateways.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\Newtonsoft.Json.Compact.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\obj\Debug\PepperDashEssentials.pdb +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\PepperDashCorePortalSync.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\SimplSharpCWSHelperInterface.dll +C:\Users\hvolmer\Desktop\working\essentials-ssp\PepperDashEssentials\PepperDashEssentials\bin\SimplSharpCryptographyInterface.dll diff --git a/PepperDashEssentials/PepperDashEssentials/obj/Debug/PepperDashEssentials.dll b/PepperDashEssentials/PepperDashEssentials/obj/Debug/PepperDashEssentials.dll new file mode 100644 index 00000000..c49493fa Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/obj/Debug/PepperDashEssentials.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/obj/Debug/PepperDashEssentials.pdb b/PepperDashEssentials/PepperDashEssentials/obj/Debug/PepperDashEssentials.pdb new file mode 100644 index 00000000..0dc13d2d Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/obj/Debug/PepperDashEssentials.pdb differ diff --git a/PepperDashEssentials/PepperDashEssentials/obj/Debug/ResolveAssemblyReference.cache b/PepperDashEssentials/PepperDashEssentials/obj/Debug/ResolveAssemblyReference.cache new file mode 100644 index 00000000..8644e42a Binary files /dev/null and b/PepperDashEssentials/PepperDashEssentials/obj/Debug/ResolveAssemblyReference.cache differ diff --git a/Release/PepperDash Essentials.zip b/Release/PepperDash Essentials.zip new file mode 100644 index 00000000..3bca3ef9 Binary files /dev/null and b/Release/PepperDash Essentials.zip differ diff --git a/Release/PepperDash Essentials/NVRAM/IR/Cisco Explorer 4642HDC.ir b/Release/PepperDash Essentials/NVRAM/IR/Cisco Explorer 4642HDC.ir new file mode 100644 index 00000000..982acbdd Binary files /dev/null and b/Release/PepperDash Essentials/NVRAM/IR/Cisco Explorer 4642HDC.ir differ diff --git a/Release/PepperDash Essentials/NVRAM/IR/Comcast Motorola DVR.ir b/Release/PepperDash Essentials/NVRAM/IR/Comcast Motorola DVR.ir new file mode 100644 index 00000000..abe34ce2 Binary files /dev/null and b/Release/PepperDash Essentials/NVRAM/IR/Comcast Motorola DVR.ir differ diff --git a/Release/PepperDash Essentials/NVRAM/IR/Comcast X1.ir b/Release/PepperDash Essentials/NVRAM/IR/Comcast X1.ir new file mode 100644 index 00000000..bff5afff Binary files /dev/null and b/Release/PepperDash Essentials/NVRAM/IR/Comcast X1.ir differ diff --git a/Release/PepperDash Essentials/NVRAM/IR/DirecTV H21.ir b/Release/PepperDash Essentials/NVRAM/IR/DirecTV H21.ir new file mode 100644 index 00000000..612a9b2b Binary files /dev/null and b/Release/PepperDash Essentials/NVRAM/IR/DirecTV H21.ir differ diff --git a/Release/PepperDash Essentials/NVRAM/IR/EXPLORER 8200HD Full Set Pulsed.ir b/Release/PepperDash Essentials/NVRAM/IR/EXPLORER 8200HD Full Set Pulsed.ir new file mode 100644 index 00000000..4065f48e Binary files /dev/null and b/Release/PepperDash Essentials/NVRAM/IR/EXPLORER 8200HD Full Set Pulsed.ir differ diff --git a/Release/PepperDash Essentials/NVRAM/IR/Etisalat Cable Box.ir b/Release/PepperDash Essentials/NVRAM/IR/Etisalat Cable Box.ir new file mode 100644 index 00000000..c9871add Binary files /dev/null and b/Release/PepperDash Essentials/NVRAM/IR/Etisalat Cable Box.ir differ diff --git a/Release/PepperDash Essentials/NVRAM/IR/Etisalat e-Vision.ir b/Release/PepperDash Essentials/NVRAM/IR/Etisalat e-Vision.ir new file mode 100644 index 00000000..1eddaa09 Binary files /dev/null and b/Release/PepperDash Essentials/NVRAM/IR/Etisalat e-Vision.ir differ diff --git a/Release/PepperDash Essentials/NVRAM/IR/Panasonic DMP-BD70.ir b/Release/PepperDash Essentials/NVRAM/IR/Panasonic DMP-BD70.ir new file mode 100644 index 00000000..968f43dc Binary files /dev/null and b/Release/PepperDash Essentials/NVRAM/IR/Panasonic DMP-BD70.ir differ diff --git a/Release/PepperDash Essentials/NVRAM/IR/Sony BDP Series.ir b/Release/PepperDash Essentials/NVRAM/IR/Sony BDP Series.ir new file mode 100644 index 00000000..e95344d9 Binary files /dev/null and b/Release/PepperDash Essentials/NVRAM/IR/Sony BDP Series.ir differ diff --git a/Release/PepperDash Essentials/NVRAM/SGD/Essentials TSW.sgd b/Release/PepperDash Essentials/NVRAM/SGD/Essentials TSW.sgd new file mode 100644 index 00000000..1c28309f --- /dev/null +++ b/Release/PepperDash Essentials/NVRAM/SGD/Essentials TSW.sgd @@ -0,0 +1,8655 @@ +[ +ObjTp=FSgntr +Sgntr=SGD +RelVrs=3 +VTProeVer=6.1.03 +Schema=1 +CRCGUID=88334305-9FAB-4E6A-82E3-1422E906D510 +] +;================================================================================ +[ +ObjTp=Hd +ProjectFile=PepperDash Essentials TSW1050.vtp +VtpGuid=D8D5F125-CB35-42E9-8AE3-4142597FD2C5 +] +;================================================================================ +[ +ObjTp=Symbol +Name=PepperDash Essentials TSW1050_[B.AV] 1D CATV-Full_Channel Presets List Full.ced +Hint=Channel Presets List Full (Smart Object ID=1805) +Code=1 +SGControlType=Subpage Reference List Vertical +SGControlName=Channel Presets List Full +GUID=C4FC0D3A-FF43-4389-9D0A-707641DA5530 +SmplCName=PepperDash Essentials TSW1050_[B.AV] 1D CATV-Full_Channel Presets List Full.ced +SMWRev=4.02.20 +Expand=expand_random +HelpID=10125 +Render=8 +;Define the number of inputs, outputs and parameters +MinVariableInputs=4106 +MaxVariableInputs=4106 +MinVariableOutputs=4106 +MaxVariableOutputs=4106 +NumFixedParams=1 +MinVariableInputsList2=3 +MaxVariableInputsList2=3 +MinVariableOutputsList2=3 +MaxVariableOutputsList2=3 +MinVariableInputsList3=132 +MaxVariableInputsList3=132 +MinVariableOutputsList3=132 +MaxVariableOutputsList3=132 +InputSigType1=Digital +OutputSigType1=Digital +InputList2SigType1=Analog +OutputList2SigType1=Analog +InputList3SigType1=Serial +OutputList3SigType1=Serial + +;Define the cues, and signal types each input, output and parameter. +InputCue1=[~UNUSED3~] +InputSigType1=Digital +InputCue2=[~UNUSED2~] +InputSigType2=Digital +InputCue3=[~UNUSED2~] +InputSigType3=Digital +InputCue4=[~UNUSED2~] +InputSigType4=Digital +InputCue5=[~UNUSED2~] +InputSigType5=Digital +InputCue6=[~UNUSED2~] +InputSigType6=Digital +InputCue7=[~UNUSED2~] +InputSigType7=Digital +InputCue8=[~UNUSED2~] +InputSigType8=Digital +InputCue9=[~UNUSED2~] +InputSigType9=Digital +InputCue10=[~UNUSED2~] +InputSigType10=Digital +InputCue11=[~BeginGroup~]Enable +InputSigType11=Digital +InputCue12=Item 1 Enable +InputSigType12=Digital +InputCue13=Item 2 Enable +InputSigType13=Digital +InputCue14=Item 3 Enable +InputSigType14=Digital +InputCue15=Item 4 Enable +InputSigType15=Digital +InputCue16=Item 5 Enable +InputSigType16=Digital +InputCue17=Item 6 Enable +InputSigType17=Digital +InputCue18=Item 7 Enable +InputSigType18=Digital +InputCue19=Item 8 Enable +InputSigType19=Digital +InputCue20=Item 9 Enable +InputSigType20=Digital +InputCue21=Item 10 Enable +InputSigType21=Digital +InputCue22=Item 11 Enable +InputSigType22=Digital +InputCue23=Item 12 Enable +InputSigType23=Digital +InputCue24=Item 13 Enable +InputSigType24=Digital +InputCue25=Item 14 Enable +InputSigType25=Digital +InputCue26=Item 15 Enable +InputSigType26=Digital +InputCue27=Item 16 Enable +InputSigType27=Digital +InputCue28=Item 17 Enable +InputSigType28=Digital +InputCue29=Item 18 Enable +InputSigType29=Digital +InputCue30=Item 19 Enable +InputSigType30=Digital +InputCue31=Item 20 Enable +InputSigType31=Digital +InputCue32=Item 21 Enable +InputSigType32=Digital +InputCue33=Item 22 Enable +InputSigType33=Digital +InputCue34=Item 23 Enable +InputSigType34=Digital +InputCue35=Item 24 Enable +InputSigType35=Digital +InputCue36=Item 25 Enable +InputSigType36=Digital +InputCue37=Item 26 Enable +InputSigType37=Digital +InputCue38=Item 27 Enable +InputSigType38=Digital +InputCue39=Item 28 Enable +InputSigType39=Digital +InputCue40=Item 29 Enable +InputSigType40=Digital +InputCue41=Item 30 Enable +InputSigType41=Digital +InputCue42=[~UNUSED2~] +InputSigType42=Digital|Analog|Serial|String +InputCue2012=[~EndGroup~]Enable +InputSigType2012=Digital +InputCue2013=[~BeginGroup~]Visible +InputSigType2013=Digital +InputCue2014=Item 1 Visible +InputSigType2014=Digital +InputCue2015=Item 2 Visible +InputSigType2015=Digital +InputCue2016=Item 3 Visible +InputSigType2016=Digital +InputCue2017=Item 4 Visible +InputSigType2017=Digital +InputCue2018=Item 5 Visible +InputSigType2018=Digital +InputCue2019=Item 6 Visible +InputSigType2019=Digital +InputCue2020=Item 7 Visible +InputSigType2020=Digital +InputCue2021=Item 8 Visible +InputSigType2021=Digital +InputCue2022=Item 9 Visible +InputSigType2022=Digital +InputCue2023=Item 10 Visible +InputSigType2023=Digital +InputCue2024=Item 11 Visible +InputSigType2024=Digital +InputCue2025=Item 12 Visible +InputSigType2025=Digital +InputCue2026=Item 13 Visible +InputSigType2026=Digital +InputCue2027=Item 14 Visible +InputSigType2027=Digital +InputCue2028=Item 15 Visible +InputSigType2028=Digital +InputCue2029=Item 16 Visible +InputSigType2029=Digital +InputCue2030=Item 17 Visible +InputSigType2030=Digital +InputCue2031=Item 18 Visible +InputSigType2031=Digital +InputCue2032=Item 19 Visible +InputSigType2032=Digital +InputCue2033=Item 20 Visible +InputSigType2033=Digital +InputCue2034=Item 21 Visible +InputSigType2034=Digital +InputCue2035=Item 22 Visible +InputSigType2035=Digital +InputCue2036=Item 23 Visible +InputSigType2036=Digital +InputCue2037=Item 24 Visible +InputSigType2037=Digital +InputCue2038=Item 25 Visible +InputSigType2038=Digital +InputCue2039=Item 26 Visible +InputSigType2039=Digital +InputCue2040=Item 27 Visible +InputSigType2040=Digital +InputCue2041=Item 28 Visible +InputSigType2041=Digital +InputCue2042=Item 29 Visible +InputSigType2042=Digital +InputCue2043=Item 30 Visible +InputSigType2043=Digital +InputCue2044=[~UNUSED2~] +InputSigType2044=Digital|Analog|Serial|String +InputCue4014=[~EndGroup~]Visible +InputSigType4014=Digital +InputCue4015=[~BeginGroup~]fb +InputSigType4015=Digital +InputCue4016=fb1 +InputSigType4016=Digital +InputCue4017=fb2 +InputSigType4017=Digital +InputCue4018=fb3 +InputSigType4018=Digital +InputCue4019=fb4 +InputSigType4019=Digital +InputCue4020=fb5 +InputSigType4020=Digital +InputCue4021=fb6 +InputSigType4021=Digital +InputCue4022=fb7 +InputSigType4022=Digital +InputCue4023=fb8 +InputSigType4023=Digital +InputCue4024=fb9 +InputSigType4024=Digital +InputCue4025=fb10 +InputSigType4025=Digital +InputCue4026=fb11 +InputSigType4026=Digital +InputCue4027=fb12 +InputSigType4027=Digital +InputCue4028=fb13 +InputSigType4028=Digital +InputCue4029=fb14 +InputSigType4029=Digital +InputCue4030=fb15 +InputSigType4030=Digital +InputCue4031=fb16 +InputSigType4031=Digital +InputCue4032=fb17 +InputSigType4032=Digital +InputCue4033=fb18 +InputSigType4033=Digital +InputCue4034=fb19 +InputSigType4034=Digital +InputCue4035=fb20 +InputSigType4035=Digital +InputCue4036=fb21 +InputSigType4036=Digital +InputCue4037=fb22 +InputSigType4037=Digital +InputCue4038=fb23 +InputSigType4038=Digital +InputCue4039=fb24 +InputSigType4039=Digital +InputCue4040=fb25 +InputSigType4040=Digital +InputCue4041=fb26 +InputSigType4041=Digital +InputCue4042=fb27 +InputSigType4042=Digital +InputCue4043=fb28 +InputSigType4043=Digital +InputCue4044=fb29 +InputSigType4044=Digital +InputCue4045=fb30 +InputSigType4045=Digital +InputCue4046=fb31 +InputSigType4046=Digital +InputCue4047=fb32 +InputSigType4047=Digital +InputCue4048=fb33 +InputSigType4048=Digital +InputCue4049=fb34 +InputSigType4049=Digital +InputCue4050=fb35 +InputSigType4050=Digital +InputCue4051=fb36 +InputSigType4051=Digital +InputCue4052=fb37 +InputSigType4052=Digital +InputCue4053=fb38 +InputSigType4053=Digital +InputCue4054=fb39 +InputSigType4054=Digital +InputCue4055=fb40 +InputSigType4055=Digital +InputCue4056=fb41 +InputSigType4056=Digital +InputCue4057=fb42 +InputSigType4057=Digital +InputCue4058=fb43 +InputSigType4058=Digital +InputCue4059=fb44 +InputSigType4059=Digital +InputCue4060=fb45 +InputSigType4060=Digital +InputCue4061=fb46 +InputSigType4061=Digital +InputCue4062=fb47 +InputSigType4062=Digital +InputCue4063=fb48 +InputSigType4063=Digital +InputCue4064=fb49 +InputSigType4064=Digital +InputCue4065=fb50 +InputSigType4065=Digital +InputCue4066=fb51 +InputSigType4066=Digital +InputCue4067=fb52 +InputSigType4067=Digital +InputCue4068=fb53 +InputSigType4068=Digital +InputCue4069=fb54 +InputSigType4069=Digital +InputCue4070=fb55 +InputSigType4070=Digital +InputCue4071=fb56 +InputSigType4071=Digital +InputCue4072=fb57 +InputSigType4072=Digital +InputCue4073=fb58 +InputSigType4073=Digital +InputCue4074=fb59 +InputSigType4074=Digital +InputCue4075=fb60 +InputSigType4075=Digital +InputCue4076=fb61 +InputSigType4076=Digital +InputCue4077=fb62 +InputSigType4077=Digital +InputCue4078=fb63 +InputSigType4078=Digital +InputCue4079=fb64 +InputSigType4079=Digital +InputCue4080=fb65 +InputSigType4080=Digital +InputCue4081=fb66 +InputSigType4081=Digital +InputCue4082=fb67 +InputSigType4082=Digital +InputCue4083=fb68 +InputSigType4083=Digital +InputCue4084=fb69 +InputSigType4084=Digital +InputCue4085=fb70 +InputSigType4085=Digital +InputCue4086=fb71 +InputSigType4086=Digital +InputCue4087=fb72 +InputSigType4087=Digital +InputCue4088=fb73 +InputSigType4088=Digital +InputCue4089=fb74 +InputSigType4089=Digital +InputCue4090=fb75 +InputSigType4090=Digital +InputCue4091=fb76 +InputSigType4091=Digital +InputCue4092=fb77 +InputSigType4092=Digital +InputCue4093=fb78 +InputSigType4093=Digital +InputCue4094=fb79 +InputSigType4094=Digital +InputCue4095=fb80 +InputSigType4095=Digital +InputCue4096=fb81 +InputSigType4096=Digital +InputCue4097=fb82 +InputSigType4097=Digital +InputCue4098=fb83 +InputSigType4098=Digital +InputCue4099=fb84 +InputSigType4099=Digital +InputCue4100=fb85 +InputSigType4100=Digital +InputCue4101=fb86 +InputSigType4101=Digital +InputCue4102=fb87 +InputSigType4102=Digital +InputCue4103=fb88 +InputSigType4103=Digital +InputCue4104=fb89 +InputSigType4104=Digital +InputCue4105=fb90 +InputSigType4105=Digital +InputCue4106=[~EndGroup~]fb +InputSigType4106=Digital +OutputCue1=Is Moving +OutputSigType1=Digital +OutputCue2=[~UNUSED2~] +OutputSigType2=Digital +OutputCue3=[~UNUSED2~] +OutputSigType3=Digital +OutputCue4=[~UNUSED2~] +OutputSigType4=Digital +OutputCue5=[~UNUSED2~] +OutputSigType5=Digital +OutputCue6=[~UNUSED2~] +OutputSigType6=Digital +OutputCue7=[~UNUSED2~] +OutputSigType7=Digital +OutputCue8=[~UNUSED2~] +OutputSigType8=Digital +OutputCue9=[~UNUSED2~] +OutputSigType9=Digital +OutputCue10=[~UNUSED2~] +OutputSigType10=Digital +OutputCue11=[~BeginGroup~]Enable +OutputSigType11=Digital +OutputCue12=[~UNUSED3~] +OutputSigType12=Digital +OutputCue13=[~UNUSED3~] +OutputSigType13=Digital +OutputCue14=[~UNUSED3~] +OutputSigType14=Digital +OutputCue15=[~UNUSED3~] +OutputSigType15=Digital +OutputCue16=[~UNUSED3~] +OutputSigType16=Digital +OutputCue17=[~UNUSED3~] +OutputSigType17=Digital +OutputCue18=[~UNUSED3~] +OutputSigType18=Digital +OutputCue19=[~UNUSED3~] +OutputSigType19=Digital +OutputCue20=[~UNUSED3~] +OutputSigType20=Digital +OutputCue21=[~UNUSED3~] +OutputSigType21=Digital +OutputCue22=[~UNUSED3~] +OutputSigType22=Digital +OutputCue23=[~UNUSED3~] +OutputSigType23=Digital +OutputCue24=[~UNUSED3~] +OutputSigType24=Digital +OutputCue25=[~UNUSED3~] +OutputSigType25=Digital +OutputCue26=[~UNUSED3~] +OutputSigType26=Digital +OutputCue27=[~UNUSED3~] +OutputSigType27=Digital +OutputCue28=[~UNUSED3~] +OutputSigType28=Digital +OutputCue29=[~UNUSED3~] +OutputSigType29=Digital +OutputCue30=[~UNUSED3~] +OutputSigType30=Digital +OutputCue31=[~UNUSED3~] +OutputSigType31=Digital +OutputCue32=[~UNUSED3~] +OutputSigType32=Digital +OutputCue33=[~UNUSED3~] +OutputSigType33=Digital +OutputCue34=[~UNUSED3~] +OutputSigType34=Digital +OutputCue35=[~UNUSED3~] +OutputSigType35=Digital +OutputCue36=[~UNUSED3~] +OutputSigType36=Digital +OutputCue37=[~UNUSED3~] +OutputSigType37=Digital +OutputCue38=[~UNUSED3~] +OutputSigType38=Digital +OutputCue39=[~UNUSED3~] +OutputSigType39=Digital +OutputCue40=[~UNUSED3~] +OutputSigType40=Digital +OutputCue41=[~UNUSED3~] +OutputSigType41=Digital +OutputCue42=[~UNUSED2~] +OutputSigType42=Digital|Analog|Serial|String +OutputCue2012=[~EndGroup~]Enable +OutputSigType2012=Digital +OutputCue2013=[~BeginGroup~]Visible +OutputSigType2013=Digital +OutputCue2014=[~UNUSED3~] +OutputSigType2014=Digital +OutputCue2015=[~UNUSED3~] +OutputSigType2015=Digital +OutputCue2016=[~UNUSED3~] +OutputSigType2016=Digital +OutputCue2017=[~UNUSED3~] +OutputSigType2017=Digital +OutputCue2018=[~UNUSED3~] +OutputSigType2018=Digital +OutputCue2019=[~UNUSED3~] +OutputSigType2019=Digital +OutputCue2020=[~UNUSED3~] +OutputSigType2020=Digital +OutputCue2021=[~UNUSED3~] +OutputSigType2021=Digital +OutputCue2022=[~UNUSED3~] +OutputSigType2022=Digital +OutputCue2023=[~UNUSED3~] +OutputSigType2023=Digital +OutputCue2024=[~UNUSED3~] +OutputSigType2024=Digital +OutputCue2025=[~UNUSED3~] +OutputSigType2025=Digital +OutputCue2026=[~UNUSED3~] +OutputSigType2026=Digital +OutputCue2027=[~UNUSED3~] +OutputSigType2027=Digital +OutputCue2028=[~UNUSED3~] +OutputSigType2028=Digital +OutputCue2029=[~UNUSED3~] +OutputSigType2029=Digital +OutputCue2030=[~UNUSED3~] +OutputSigType2030=Digital +OutputCue2031=[~UNUSED3~] +OutputSigType2031=Digital +OutputCue2032=[~UNUSED3~] +OutputSigType2032=Digital +OutputCue2033=[~UNUSED3~] +OutputSigType2033=Digital +OutputCue2034=[~UNUSED3~] +OutputSigType2034=Digital +OutputCue2035=[~UNUSED3~] +OutputSigType2035=Digital +OutputCue2036=[~UNUSED3~] +OutputSigType2036=Digital +OutputCue2037=[~UNUSED3~] +OutputSigType2037=Digital +OutputCue2038=[~UNUSED3~] +OutputSigType2038=Digital +OutputCue2039=[~UNUSED3~] +OutputSigType2039=Digital +OutputCue2040=[~UNUSED3~] +OutputSigType2040=Digital +OutputCue2041=[~UNUSED3~] +OutputSigType2041=Digital +OutputCue2042=[~UNUSED3~] +OutputSigType2042=Digital +OutputCue2043=[~UNUSED3~] +OutputSigType2043=Digital +OutputCue2044=[~UNUSED2~] +OutputSigType2044=Digital|Analog|Serial|String +OutputCue4014=[~EndGroup~]Visible +OutputSigType4014=Digital +OutputCue4015=[~BeginGroup~]Press +OutputSigType4015=Digital +OutputCue4016=press1 +OutputSigType4016=Digital +OutputCue4017=press2 +OutputSigType4017=Digital +OutputCue4018=press3 +OutputSigType4018=Digital +OutputCue4019=press4 +OutputSigType4019=Digital +OutputCue4020=press5 +OutputSigType4020=Digital +OutputCue4021=press6 +OutputSigType4021=Digital +OutputCue4022=press7 +OutputSigType4022=Digital +OutputCue4023=press8 +OutputSigType4023=Digital +OutputCue4024=press9 +OutputSigType4024=Digital +OutputCue4025=press10 +OutputSigType4025=Digital +OutputCue4026=press11 +OutputSigType4026=Digital +OutputCue4027=press12 +OutputSigType4027=Digital +OutputCue4028=press13 +OutputSigType4028=Digital +OutputCue4029=press14 +OutputSigType4029=Digital +OutputCue4030=press15 +OutputSigType4030=Digital +OutputCue4031=press16 +OutputSigType4031=Digital +OutputCue4032=press17 +OutputSigType4032=Digital +OutputCue4033=press18 +OutputSigType4033=Digital +OutputCue4034=press19 +OutputSigType4034=Digital +OutputCue4035=press20 +OutputSigType4035=Digital +OutputCue4036=press21 +OutputSigType4036=Digital +OutputCue4037=press22 +OutputSigType4037=Digital +OutputCue4038=press23 +OutputSigType4038=Digital +OutputCue4039=press24 +OutputSigType4039=Digital +OutputCue4040=press25 +OutputSigType4040=Digital +OutputCue4041=press26 +OutputSigType4041=Digital +OutputCue4042=press27 +OutputSigType4042=Digital +OutputCue4043=press28 +OutputSigType4043=Digital +OutputCue4044=press29 +OutputSigType4044=Digital +OutputCue4045=press30 +OutputSigType4045=Digital +OutputCue4046=press31 +OutputSigType4046=Digital +OutputCue4047=press32 +OutputSigType4047=Digital +OutputCue4048=press33 +OutputSigType4048=Digital +OutputCue4049=press34 +OutputSigType4049=Digital +OutputCue4050=press35 +OutputSigType4050=Digital +OutputCue4051=press36 +OutputSigType4051=Digital +OutputCue4052=press37 +OutputSigType4052=Digital +OutputCue4053=press38 +OutputSigType4053=Digital +OutputCue4054=press39 +OutputSigType4054=Digital +OutputCue4055=press40 +OutputSigType4055=Digital +OutputCue4056=press41 +OutputSigType4056=Digital +OutputCue4057=press42 +OutputSigType4057=Digital +OutputCue4058=press43 +OutputSigType4058=Digital +OutputCue4059=press44 +OutputSigType4059=Digital +OutputCue4060=press45 +OutputSigType4060=Digital +OutputCue4061=press46 +OutputSigType4061=Digital +OutputCue4062=press47 +OutputSigType4062=Digital +OutputCue4063=press48 +OutputSigType4063=Digital +OutputCue4064=press49 +OutputSigType4064=Digital +OutputCue4065=press50 +OutputSigType4065=Digital +OutputCue4066=press51 +OutputSigType4066=Digital +OutputCue4067=press52 +OutputSigType4067=Digital +OutputCue4068=press53 +OutputSigType4068=Digital +OutputCue4069=press54 +OutputSigType4069=Digital +OutputCue4070=press55 +OutputSigType4070=Digital +OutputCue4071=press56 +OutputSigType4071=Digital +OutputCue4072=press57 +OutputSigType4072=Digital +OutputCue4073=press58 +OutputSigType4073=Digital +OutputCue4074=press59 +OutputSigType4074=Digital +OutputCue4075=press60 +OutputSigType4075=Digital +OutputCue4076=press61 +OutputSigType4076=Digital +OutputCue4077=press62 +OutputSigType4077=Digital +OutputCue4078=press63 +OutputSigType4078=Digital +OutputCue4079=press64 +OutputSigType4079=Digital +OutputCue4080=press65 +OutputSigType4080=Digital +OutputCue4081=press66 +OutputSigType4081=Digital +OutputCue4082=press67 +OutputSigType4082=Digital +OutputCue4083=press68 +OutputSigType4083=Digital +OutputCue4084=press69 +OutputSigType4084=Digital +OutputCue4085=press70 +OutputSigType4085=Digital +OutputCue4086=press71 +OutputSigType4086=Digital +OutputCue4087=press72 +OutputSigType4087=Digital +OutputCue4088=press73 +OutputSigType4088=Digital +OutputCue4089=press74 +OutputSigType4089=Digital +OutputCue4090=press75 +OutputSigType4090=Digital +OutputCue4091=press76 +OutputSigType4091=Digital +OutputCue4092=press77 +OutputSigType4092=Digital +OutputCue4093=press78 +OutputSigType4093=Digital +OutputCue4094=press79 +OutputSigType4094=Digital +OutputCue4095=press80 +OutputSigType4095=Digital +OutputCue4096=press81 +OutputSigType4096=Digital +OutputCue4097=press82 +OutputSigType4097=Digital +OutputCue4098=press83 +OutputSigType4098=Digital +OutputCue4099=press84 +OutputSigType4099=Digital +OutputCue4100=press85 +OutputSigType4100=Digital +OutputCue4101=press86 +OutputSigType4101=Digital +OutputCue4102=press87 +OutputSigType4102=Digital +OutputCue4103=press88 +OutputSigType4103=Digital +OutputCue4104=press89 +OutputSigType4104=Digital +OutputCue4105=press90 +OutputSigType4105=Digital +OutputCue4106=[~EndGroup~]Press +OutputSigType4106=Digital +InputList2Cue1=[~UNUSED3~] +InputList2SigType1=Analog +InputList2Cue2=Scroll To Item +InputList2SigType2=Analog +InputList2Cue3=Set Number of Items +InputList2SigType3=Analog +OutputList2Cue1=Item Clicked +OutputList2SigType1=Analog +OutputList2Cue2=[~UNUSED3~] +OutputList2SigType2=Analog +OutputList2Cue3=[~UNUSED3~] +OutputList2SigType3=Analog +InputList3Cue1=[~UNUSED2~] +InputList3SigType1=Serial +InputList3Cue2=[~UNUSED2~] +InputList3SigType2=Serial +InputList3Cue3=[~UNUSED2~] +InputList3SigType3=Serial +InputList3Cue4=[~UNUSED2~] +InputList3SigType4=Serial +InputList3Cue5=[~UNUSED2~] +InputList3SigType5=Serial +InputList3Cue6=[~UNUSED2~] +InputList3SigType6=Serial +InputList3Cue7=[~UNUSED2~] +InputList3SigType7=Serial +InputList3Cue8=[~UNUSED2~] +InputList3SigType8=Serial +InputList3Cue9=[~UNUSED2~] +InputList3SigType9=Serial +InputList3Cue10=[~UNUSED2~] +InputList3SigType10=Serial +InputList3Cue11=[~BeginGroup~]text-o +InputList3SigType11=Serial +InputList3Cue12=text-o1 +InputList3SigType12=Serial +InputList3Cue13=text-o2 +InputList3SigType13=Serial +InputList3Cue14=text-o3 +InputList3SigType14=Serial +InputList3Cue15=text-o4 +InputList3SigType15=Serial +InputList3Cue16=text-o5 +InputList3SigType16=Serial +InputList3Cue17=text-o6 +InputList3SigType17=Serial +InputList3Cue18=text-o7 +InputList3SigType18=Serial +InputList3Cue19=text-o8 +InputList3SigType19=Serial +InputList3Cue20=text-o9 +InputList3SigType20=Serial +InputList3Cue21=text-o10 +InputList3SigType21=Serial +InputList3Cue22=text-o11 +InputList3SigType22=Serial +InputList3Cue23=text-o12 +InputList3SigType23=Serial +InputList3Cue24=text-o13 +InputList3SigType24=Serial +InputList3Cue25=text-o14 +InputList3SigType25=Serial +InputList3Cue26=text-o15 +InputList3SigType26=Serial +InputList3Cue27=text-o16 +InputList3SigType27=Serial +InputList3Cue28=text-o17 +InputList3SigType28=Serial +InputList3Cue29=text-o18 +InputList3SigType29=Serial +InputList3Cue30=text-o19 +InputList3SigType30=Serial +InputList3Cue31=text-o20 +InputList3SigType31=Serial +InputList3Cue32=text-o21 +InputList3SigType32=Serial +InputList3Cue33=text-o22 +InputList3SigType33=Serial +InputList3Cue34=text-o23 +InputList3SigType34=Serial +InputList3Cue35=text-o24 +InputList3SigType35=Serial +InputList3Cue36=text-o25 +InputList3SigType36=Serial +InputList3Cue37=text-o26 +InputList3SigType37=Serial +InputList3Cue38=text-o27 +InputList3SigType38=Serial +InputList3Cue39=text-o28 +InputList3SigType39=Serial +InputList3Cue40=text-o29 +InputList3SigType40=Serial +InputList3Cue41=text-o30 +InputList3SigType41=Serial +InputList3Cue42=text-o31 +InputList3SigType42=Serial +InputList3Cue43=text-o32 +InputList3SigType43=Serial +InputList3Cue44=text-o33 +InputList3SigType44=Serial +InputList3Cue45=text-o34 +InputList3SigType45=Serial +InputList3Cue46=text-o35 +InputList3SigType46=Serial +InputList3Cue47=text-o36 +InputList3SigType47=Serial +InputList3Cue48=text-o37 +InputList3SigType48=Serial +InputList3Cue49=text-o38 +InputList3SigType49=Serial +InputList3Cue50=text-o39 +InputList3SigType50=Serial +InputList3Cue51=text-o40 +InputList3SigType51=Serial +InputList3Cue52=text-o41 +InputList3SigType52=Serial +InputList3Cue53=text-o42 +InputList3SigType53=Serial +InputList3Cue54=text-o43 +InputList3SigType54=Serial +InputList3Cue55=text-o44 +InputList3SigType55=Serial +InputList3Cue56=text-o45 +InputList3SigType56=Serial +InputList3Cue57=text-o46 +InputList3SigType57=Serial +InputList3Cue58=text-o47 +InputList3SigType58=Serial +InputList3Cue59=text-o48 +InputList3SigType59=Serial +InputList3Cue60=text-o49 +InputList3SigType60=Serial +InputList3Cue61=text-o50 +InputList3SigType61=Serial +InputList3Cue62=text-o51 +InputList3SigType62=Serial +InputList3Cue63=text-o52 +InputList3SigType63=Serial +InputList3Cue64=text-o53 +InputList3SigType64=Serial +InputList3Cue65=text-o54 +InputList3SigType65=Serial +InputList3Cue66=text-o55 +InputList3SigType66=Serial +InputList3Cue67=text-o56 +InputList3SigType67=Serial +InputList3Cue68=text-o57 +InputList3SigType68=Serial +InputList3Cue69=text-o58 +InputList3SigType69=Serial +InputList3Cue70=text-o59 +InputList3SigType70=Serial +InputList3Cue71=text-o60 +InputList3SigType71=Serial +InputList3Cue72=text-o61 +InputList3SigType72=Serial +InputList3Cue73=text-o62 +InputList3SigType73=Serial +InputList3Cue74=text-o63 +InputList3SigType74=Serial +InputList3Cue75=text-o64 +InputList3SigType75=Serial +InputList3Cue76=text-o65 +InputList3SigType76=Serial +InputList3Cue77=text-o66 +InputList3SigType77=Serial +InputList3Cue78=text-o67 +InputList3SigType78=Serial +InputList3Cue79=text-o68 +InputList3SigType79=Serial +InputList3Cue80=text-o69 +InputList3SigType80=Serial +InputList3Cue81=text-o70 +InputList3SigType81=Serial +InputList3Cue82=text-o71 +InputList3SigType82=Serial +InputList3Cue83=text-o72 +InputList3SigType83=Serial +InputList3Cue84=text-o73 +InputList3SigType84=Serial +InputList3Cue85=text-o74 +InputList3SigType85=Serial +InputList3Cue86=text-o75 +InputList3SigType86=Serial +InputList3Cue87=text-o76 +InputList3SigType87=Serial +InputList3Cue88=text-o77 +InputList3SigType88=Serial +InputList3Cue89=text-o78 +InputList3SigType89=Serial +InputList3Cue90=text-o79 +InputList3SigType90=Serial +InputList3Cue91=text-o80 +InputList3SigType91=Serial +InputList3Cue92=text-o81 +InputList3SigType92=Serial +InputList3Cue93=text-o82 +InputList3SigType93=Serial +InputList3Cue94=text-o83 +InputList3SigType94=Serial +InputList3Cue95=text-o84 +InputList3SigType95=Serial +InputList3Cue96=text-o85 +InputList3SigType96=Serial +InputList3Cue97=text-o86 +InputList3SigType97=Serial +InputList3Cue98=text-o87 +InputList3SigType98=Serial +InputList3Cue99=text-o88 +InputList3SigType99=Serial +InputList3Cue100=text-o89 +InputList3SigType100=Serial +InputList3Cue101=text-o90 +InputList3SigType101=Serial +InputList3Cue102=text-o91 +InputList3SigType102=Serial +InputList3Cue103=text-o92 +InputList3SigType103=Serial +InputList3Cue104=text-o93 +InputList3SigType104=Serial +InputList3Cue105=text-o94 +InputList3SigType105=Serial +InputList3Cue106=text-o95 +InputList3SigType106=Serial +InputList3Cue107=text-o96 +InputList3SigType107=Serial +InputList3Cue108=text-o97 +InputList3SigType108=Serial +InputList3Cue109=text-o98 +InputList3SigType109=Serial +InputList3Cue110=text-o99 +InputList3SigType110=Serial +InputList3Cue111=text-o100 +InputList3SigType111=Serial +InputList3Cue112=text-o101 +InputList3SigType112=Serial +InputList3Cue113=text-o102 +InputList3SigType113=Serial +InputList3Cue114=text-o103 +InputList3SigType114=Serial +InputList3Cue115=text-o104 +InputList3SigType115=Serial +InputList3Cue116=text-o105 +InputList3SigType116=Serial +InputList3Cue117=text-o106 +InputList3SigType117=Serial +InputList3Cue118=text-o107 +InputList3SigType118=Serial +InputList3Cue119=text-o108 +InputList3SigType119=Serial +InputList3Cue120=text-o109 +InputList3SigType120=Serial +InputList3Cue121=text-o110 +InputList3SigType121=Serial +InputList3Cue122=text-o111 +InputList3SigType122=Serial +InputList3Cue123=text-o112 +InputList3SigType123=Serial +InputList3Cue124=text-o113 +InputList3SigType124=Serial +InputList3Cue125=text-o114 +InputList3SigType125=Serial +InputList3Cue126=text-o115 +InputList3SigType126=Serial +InputList3Cue127=text-o116 +InputList3SigType127=Serial +InputList3Cue128=text-o117 +InputList3SigType128=Serial +InputList3Cue129=text-o118 +InputList3SigType129=Serial +InputList3Cue130=text-o119 +InputList3SigType130=Serial +InputList3Cue131=text-o120 +InputList3SigType131=Serial +InputList3Cue132=[~EndGroup~]text-o +InputList3SigType132=Serial +OutputList3Cue1=[~UNUSED2~] +OutputList3SigType1=Serial +OutputList3Cue2=[~UNUSED2~] +OutputList3SigType2=Serial +OutputList3Cue3=[~UNUSED2~] +OutputList3SigType3=Serial +OutputList3Cue4=[~UNUSED2~] +OutputList3SigType4=Serial +OutputList3Cue5=[~UNUSED2~] +OutputList3SigType5=Serial +OutputList3Cue6=[~UNUSED2~] +OutputList3SigType6=Serial +OutputList3Cue7=[~UNUSED2~] +OutputList3SigType7=Serial +OutputList3Cue8=[~UNUSED2~] +OutputList3SigType8=Serial +OutputList3Cue9=[~UNUSED2~] +OutputList3SigType9=Serial +OutputList3Cue10=[~UNUSED2~] +OutputList3SigType10=Serial +OutputList3Cue11=[~BeginGroup~]text-i +OutputList3SigType11=Serial +OutputList3Cue12=text-i1 +OutputList3SigType12=Serial +OutputList3Cue13=text-i2 +OutputList3SigType13=Serial +OutputList3Cue14=text-i3 +OutputList3SigType14=Serial +OutputList3Cue15=text-i4 +OutputList3SigType15=Serial +OutputList3Cue16=text-i5 +OutputList3SigType16=Serial +OutputList3Cue17=text-i6 +OutputList3SigType17=Serial +OutputList3Cue18=text-i7 +OutputList3SigType18=Serial +OutputList3Cue19=text-i8 +OutputList3SigType19=Serial +OutputList3Cue20=text-i9 +OutputList3SigType20=Serial +OutputList3Cue21=text-i10 +OutputList3SigType21=Serial +OutputList3Cue22=text-i11 +OutputList3SigType22=Serial +OutputList3Cue23=text-i12 +OutputList3SigType23=Serial +OutputList3Cue24=text-i13 +OutputList3SigType24=Serial +OutputList3Cue25=text-i14 +OutputList3SigType25=Serial +OutputList3Cue26=text-i15 +OutputList3SigType26=Serial +OutputList3Cue27=text-i16 +OutputList3SigType27=Serial +OutputList3Cue28=text-i17 +OutputList3SigType28=Serial +OutputList3Cue29=text-i18 +OutputList3SigType29=Serial +OutputList3Cue30=text-i19 +OutputList3SigType30=Serial +OutputList3Cue31=text-i20 +OutputList3SigType31=Serial +OutputList3Cue32=text-i21 +OutputList3SigType32=Serial +OutputList3Cue33=text-i22 +OutputList3SigType33=Serial +OutputList3Cue34=text-i23 +OutputList3SigType34=Serial +OutputList3Cue35=text-i24 +OutputList3SigType35=Serial +OutputList3Cue36=text-i25 +OutputList3SigType36=Serial +OutputList3Cue37=text-i26 +OutputList3SigType37=Serial +OutputList3Cue38=text-i27 +OutputList3SigType38=Serial +OutputList3Cue39=text-i28 +OutputList3SigType39=Serial +OutputList3Cue40=text-i29 +OutputList3SigType40=Serial +OutputList3Cue41=text-i30 +OutputList3SigType41=Serial +OutputList3Cue42=text-i31 +OutputList3SigType42=Serial +OutputList3Cue43=text-i32 +OutputList3SigType43=Serial +OutputList3Cue44=text-i33 +OutputList3SigType44=Serial +OutputList3Cue45=text-i34 +OutputList3SigType45=Serial +OutputList3Cue46=text-i35 +OutputList3SigType46=Serial +OutputList3Cue47=text-i36 +OutputList3SigType47=Serial +OutputList3Cue48=text-i37 +OutputList3SigType48=Serial +OutputList3Cue49=text-i38 +OutputList3SigType49=Serial +OutputList3Cue50=text-i39 +OutputList3SigType50=Serial +OutputList3Cue51=text-i40 +OutputList3SigType51=Serial +OutputList3Cue52=text-i41 +OutputList3SigType52=Serial +OutputList3Cue53=text-i42 +OutputList3SigType53=Serial +OutputList3Cue54=text-i43 +OutputList3SigType54=Serial +OutputList3Cue55=text-i44 +OutputList3SigType55=Serial +OutputList3Cue56=text-i45 +OutputList3SigType56=Serial +OutputList3Cue57=text-i46 +OutputList3SigType57=Serial +OutputList3Cue58=text-i47 +OutputList3SigType58=Serial +OutputList3Cue59=text-i48 +OutputList3SigType59=Serial +OutputList3Cue60=text-i49 +OutputList3SigType60=Serial +OutputList3Cue61=text-i50 +OutputList3SigType61=Serial +OutputList3Cue62=text-i51 +OutputList3SigType62=Serial +OutputList3Cue63=text-i52 +OutputList3SigType63=Serial +OutputList3Cue64=text-i53 +OutputList3SigType64=Serial +OutputList3Cue65=text-i54 +OutputList3SigType65=Serial +OutputList3Cue66=text-i55 +OutputList3SigType66=Serial +OutputList3Cue67=text-i56 +OutputList3SigType67=Serial +OutputList3Cue68=text-i57 +OutputList3SigType68=Serial +OutputList3Cue69=text-i58 +OutputList3SigType69=Serial +OutputList3Cue70=text-i59 +OutputList3SigType70=Serial +OutputList3Cue71=text-i60 +OutputList3SigType71=Serial +OutputList3Cue72=text-i61 +OutputList3SigType72=Serial +OutputList3Cue73=text-i62 +OutputList3SigType73=Serial +OutputList3Cue74=text-i63 +OutputList3SigType74=Serial +OutputList3Cue75=text-i64 +OutputList3SigType75=Serial +OutputList3Cue76=text-i65 +OutputList3SigType76=Serial +OutputList3Cue77=text-i66 +OutputList3SigType77=Serial +OutputList3Cue78=text-i67 +OutputList3SigType78=Serial +OutputList3Cue79=text-i68 +OutputList3SigType79=Serial +OutputList3Cue80=text-i69 +OutputList3SigType80=Serial +OutputList3Cue81=text-i70 +OutputList3SigType81=Serial +OutputList3Cue82=text-i71 +OutputList3SigType82=Serial +OutputList3Cue83=text-i72 +OutputList3SigType83=Serial +OutputList3Cue84=text-i73 +OutputList3SigType84=Serial +OutputList3Cue85=text-i74 +OutputList3SigType85=Serial +OutputList3Cue86=text-i75 +OutputList3SigType86=Serial +OutputList3Cue87=text-i76 +OutputList3SigType87=Serial +OutputList3Cue88=text-i77 +OutputList3SigType88=Serial +OutputList3Cue89=text-i78 +OutputList3SigType89=Serial +OutputList3Cue90=text-i79 +OutputList3SigType90=Serial +OutputList3Cue91=text-i80 +OutputList3SigType91=Serial +OutputList3Cue92=text-i81 +OutputList3SigType92=Serial +OutputList3Cue93=text-i82 +OutputList3SigType93=Serial +OutputList3Cue94=text-i83 +OutputList3SigType94=Serial +OutputList3Cue95=text-i84 +OutputList3SigType95=Serial +OutputList3Cue96=text-i85 +OutputList3SigType96=Serial +OutputList3Cue97=text-i86 +OutputList3SigType97=Serial +OutputList3Cue98=text-i87 +OutputList3SigType98=Serial +OutputList3Cue99=text-i88 +OutputList3SigType99=Serial +OutputList3Cue100=text-i89 +OutputList3SigType100=Serial +OutputList3Cue101=text-i90 +OutputList3SigType101=Serial +OutputList3Cue102=text-i91 +OutputList3SigType102=Serial +OutputList3Cue103=text-i92 +OutputList3SigType103=Serial +OutputList3Cue104=text-i93 +OutputList3SigType104=Serial +OutputList3Cue105=text-i94 +OutputList3SigType105=Serial +OutputList3Cue106=text-i95 +OutputList3SigType106=Serial +OutputList3Cue107=text-i96 +OutputList3SigType107=Serial +OutputList3Cue108=text-i97 +OutputList3SigType108=Serial +OutputList3Cue109=text-i98 +OutputList3SigType109=Serial +OutputList3Cue110=text-i99 +OutputList3SigType110=Serial +OutputList3Cue111=text-i100 +OutputList3SigType111=Serial +OutputList3Cue112=text-i101 +OutputList3SigType112=Serial +OutputList3Cue113=text-i102 +OutputList3SigType113=Serial +OutputList3Cue114=text-i103 +OutputList3SigType114=Serial +OutputList3Cue115=text-i104 +OutputList3SigType115=Serial +OutputList3Cue116=text-i105 +OutputList3SigType116=Serial +OutputList3Cue117=text-i106 +OutputList3SigType117=Serial +OutputList3Cue118=text-i107 +OutputList3SigType118=Serial +OutputList3Cue119=text-i108 +OutputList3SigType119=Serial +OutputList3Cue120=text-i109 +OutputList3SigType120=Serial +OutputList3Cue121=text-i110 +OutputList3SigType121=Serial +OutputList3Cue122=text-i111 +OutputList3SigType122=Serial +OutputList3Cue123=text-i112 +OutputList3SigType123=Serial +OutputList3Cue124=text-i113 +OutputList3SigType124=Serial +OutputList3Cue125=text-i114 +OutputList3SigType125=Serial +OutputList3Cue126=text-i115 +OutputList3SigType126=Serial +OutputList3Cue127=text-i116 +OutputList3SigType127=Serial +OutputList3Cue128=text-i117 +OutputList3SigType128=Serial +OutputList3Cue129=text-i118 +OutputList3SigType129=Serial +OutputList3Cue130=text-i119 +OutputList3SigType130=Serial +OutputList3Cue131=text-i120 +OutputList3SigType131=Serial +OutputList3Cue132=[~EndGroup~]text-i +OutputList3SigType132=Serial +ParamCue1=SmartObjectId +ParamSigType1=Constant +MPp=1 +Pp1=1 +CedH=1 +SmartObjId=1805d +] +; Parameter Properties for Smart Object ID +[ +ObjTp=Dp +H=1 +Tp=1 +HD=TRUE +DV=1805d +NF=1 +DNF=1 +EncFmt=0 +DVLF=1 +Sgn=0 +] +; Smart Objects Definition section +[ +ObjTp=CED +H=1 +Name=PepperDash Essentials TSW1050_[B.AV] 1D CATV-Full_Channel Presets List Full.ced +;Cedver is the version of the Smart Graphics control, not the CED file format. +;If the control definition changes, increment this. +CedVer=1 +] +;================================================================================ +[ +ObjTp=Symbol +Name=PepperDash Essentials TSW1050_[B.AV] 1D CATV-Full_CATV Dpad Full.ced +Hint=CATV Dpad Full (Smart Object ID=10201) +Code=2 +SGControlType=DPad +SGControlName=CATV Dpad Full +GUID=8E9A1824-AB69-40BA-8BAF-65D5DD434717 +SmplCName=PepperDash Essentials TSW1050_[B.AV] 1D CATV-Full_CATV Dpad Full.ced +SMWRev=4.02.19 +Expand=expand_random +HelpID=10015 +;Define the number of inputs, outputs and parameters +MinVariableInputs=5 +MaxVariableInputs=5 +MinVariableOutputs=5 +MaxVariableOutputs=5 +NumFixedParams=1 +MinVariableInputsList2=0 +MaxVariableInputsList2=0 +MinVariableOutputsList2=0 +MaxVariableOutputsList2=0 +MinVariableInputsList3=0 +MaxVariableInputsList3=0 +MinVariableOutputsList3=0 +MaxVariableOutputsList3=0 +;Define the cues, and signal types each input, output and parameter. +InputCue1=[~UNUSED3~] +InputSigType1=Digital +OutputCue1=Up +OutputSigType1=Digital +InputCue2=[~UNUSED3~] +InputSigType2=Digital +OutputCue2=Down +OutputSigType2=Digital +InputCue3=[~UNUSED3~] +InputSigType3=Digital +OutputCue3=Left +OutputSigType3=Digital +InputCue4=[~UNUSED3~] +InputSigType4=Digital +OutputCue4=Right +OutputSigType4=Digital +InputCue5=[~UNUSED3~] +InputSigType5=Digital +OutputCue5=OK +OutputSigType5=Digital +ParamCue1=SmartObjectId +ParamSigType1=Constant +MPp=1 +Pp1=2 +CedH=2 +SmartObjId=10201d +] +; Parameter Properties for Smart Object ID +[ +ObjTp=Dp +H=2 +Tp=1 +HD=TRUE +DV=10201d +NF=1 +DNF=1 +EncFmt=0 +DVLF=1 +Sgn=0 +] +; Smart Objects Definition section +[ +ObjTp=CED +H=2 +Name=PepperDash Essentials TSW1050_[B.AV] 1D CATV-Full_CATV Dpad Full.ced +;Cedver is the version of the Smart Graphics control, not the CED file format. +;If the control definition changes, increment this. +CedVer=1 +] +;================================================================================ +[ +ObjTp=Symbol +Name=PepperDash Essentials TSW1050_[B.AV] 1D CATV-Full_CATV Keypad Full.ced +Hint=CATV Keypad Full (Smart Object ID=10202) +Code=3 +SGControlType=Simple Keypad +SGControlName=CATV Keypad Full +GUID=9074CDC5-3FAB-490A-9B62-D88075EB2DB5 +SmplCName=PepperDash Essentials TSW1050_[B.AV] 1D CATV-Full_CATV Keypad Full.ced +SMWRev=4.02.19 +Expand=expand_random +HelpID=10061 +;Define the number of inputs, outputs and parameters +MinVariableInputs=12 +MaxVariableInputs=12 +MinVariableOutputs=12 +MaxVariableOutputs=12 +NumFixedParams=1 +MinVariableInputsList2=0 +MaxVariableInputsList2=0 +MinVariableOutputsList2=0 +MaxVariableOutputsList2=0 +MinVariableInputsList3=0 +MaxVariableInputsList3=0 +MinVariableOutputsList3=0 +MaxVariableOutputsList3=0 +;Define the cues, and signal types each input, output and parameter. +InputCue1=[~UNUSED3~] +InputSigType1=Digital +OutputCue1=1 +OutputSigType1=Digital +InputCue2=[~UNUSED3~] +InputSigType2=Digital +OutputCue2=2 +OutputSigType2=Digital +InputCue3=[~UNUSED3~] +InputSigType3=Digital +OutputCue3=3 +OutputSigType3=Digital +InputCue4=[~UNUSED3~] +InputSigType4=Digital +OutputCue4=4 +OutputSigType4=Digital +InputCue5=[~UNUSED3~] +InputSigType5=Digital +OutputCue5=5 +OutputSigType5=Digital +InputCue6=[~UNUSED3~] +InputSigType6=Digital +OutputCue6=6 +OutputSigType6=Digital +InputCue7=[~UNUSED3~] +InputSigType7=Digital +OutputCue7=7 +OutputSigType7=Digital +InputCue8=[~UNUSED3~] +InputSigType8=Digital +OutputCue8=8 +OutputSigType8=Digital +InputCue9=[~UNUSED3~] +InputSigType9=Digital +OutputCue9=9 +OutputSigType9=Digital +InputCue10=[~UNUSED3~] +InputSigType10=Digital +OutputCue10=0 +OutputSigType10=Digital +InputCue11=[~UNUSED3~] +InputSigType11=Digital +OutputCue11=Misc_1 +OutputSigType11=Digital +InputCue12=[~UNUSED3~] +InputSigType12=Digital +OutputCue12=Misc_2 +OutputSigType12=Digital +ParamCue1=SmartObjectId +ParamSigType1=Constant +MPp=1 +Pp1=3 +CedH=3 +SmartObjId=10202d +] +; Parameter Properties for Smart Object ID +[ +ObjTp=Dp +H=3 +Tp=1 +HD=TRUE +DV=10202d +NF=1 +DNF=1 +EncFmt=0 +DVLF=1 +Sgn=0 +] +; Smart Objects Definition section +[ +ObjTp=CED +H=3 +Name=PepperDash Essentials TSW1050_[B.AV] 1D CATV-Full_CATV Keypad Full.ced +;Cedver is the version of the Smart Graphics control, not the CED file format. +;If the control definition changes, increment this. +CedVer=1 +] +;================================================================================ +[ +ObjTp=Symbol +Name=PepperDash Essentials TSW1050_[C.AC] 04.AC Inactive_AC DTMF Keypad_2.ced +Hint=AC DTMF Keypad_2 (Smart Object ID=21) +Code=4 +SGControlType=Simple Keypad +SGControlName=AC DTMF Keypad_2 +GUID=F2A259FE-82AD-4085-B5A6-22D7B034458C +SmplCName=PepperDash Essentials TSW1050_[C.AC] 04.AC Inactive_AC DTMF Keypad_2.ced +SMWRev=4.02.19 +Expand=expand_random +HelpID=10061 +;Define the number of inputs, outputs and parameters +MinVariableInputs=12 +MaxVariableInputs=12 +MinVariableOutputs=12 +MaxVariableOutputs=12 +NumFixedParams=1 +MinVariableInputsList2=0 +MaxVariableInputsList2=0 +MinVariableOutputsList2=0 +MaxVariableOutputsList2=0 +MinVariableInputsList3=0 +MaxVariableInputsList3=0 +MinVariableOutputsList3=0 +MaxVariableOutputsList3=0 +;Define the cues, and signal types each input, output and parameter. +InputCue1=[~UNUSED3~] +InputSigType1=Digital +OutputCue1=1 +OutputSigType1=Digital +InputCue2=[~UNUSED3~] +InputSigType2=Digital +OutputCue2=2 +OutputSigType2=Digital +InputCue3=[~UNUSED3~] +InputSigType3=Digital +OutputCue3=3 +OutputSigType3=Digital +InputCue4=[~UNUSED3~] +InputSigType4=Digital +OutputCue4=4 +OutputSigType4=Digital +InputCue5=[~UNUSED3~] +InputSigType5=Digital +OutputCue5=5 +OutputSigType5=Digital +InputCue6=[~UNUSED3~] +InputSigType6=Digital +OutputCue6=6 +OutputSigType6=Digital +InputCue7=[~UNUSED3~] +InputSigType7=Digital +OutputCue7=7 +OutputSigType7=Digital +InputCue8=[~UNUSED3~] +InputSigType8=Digital +OutputCue8=8 +OutputSigType8=Digital +InputCue9=[~UNUSED3~] +InputSigType9=Digital +OutputCue9=9 +OutputSigType9=Digital +InputCue10=[~UNUSED3~] +InputSigType10=Digital +OutputCue10=0 +OutputSigType10=Digital +InputCue11=[~UNUSED3~] +InputSigType11=Digital +OutputCue11=* +OutputSigType11=Digital +InputCue12=[~UNUSED3~] +InputSigType12=Digital +OutputCue12=/# +OutputSigType12=Digital +ParamCue1=SmartObjectId +ParamSigType1=Constant +MPp=1 +Pp1=4 +CedH=4 +SmartObjId=21d +] +; Parameter Properties for Smart Object ID +[ +ObjTp=Dp +H=4 +Tp=1 +HD=TRUE +DV=21d +NF=1 +DNF=1 +EncFmt=0 +DVLF=1 +Sgn=0 +] +; Smart Objects Definition section +[ +ObjTp=CED +H=4 +Name=PepperDash Essentials TSW1050_[C.AC] 04.AC Inactive_AC DTMF Keypad_2.ced +;Cedver is the version of the Smart Graphics control, not the CED file format. +;If the control definition changes, increment this. +CedVer=1 +] +;================================================================================ +[ +ObjTp=Symbol +Name=PepperDash Essentials TSW1050_[C.AC] 03.AC Active_AC DTMF Keypad.ced +Hint=AC DTMF Keypad (Smart Object ID=20) +Code=5 +SGControlType=Simple Keypad +SGControlName=AC DTMF Keypad +GUID=D48FD9F3-FA13-4FED-8F73-9FD56045D12D +SmplCName=PepperDash Essentials TSW1050_[C.AC] 03.AC Active_AC DTMF Keypad.ced +SMWRev=4.02.19 +Expand=expand_random +HelpID=10061 +;Define the number of inputs, outputs and parameters +MinVariableInputs=12 +MaxVariableInputs=12 +MinVariableOutputs=12 +MaxVariableOutputs=12 +NumFixedParams=1 +MinVariableInputsList2=0 +MaxVariableInputsList2=0 +MinVariableOutputsList2=0 +MaxVariableOutputsList2=0 +MinVariableInputsList3=0 +MaxVariableInputsList3=0 +MinVariableOutputsList3=0 +MaxVariableOutputsList3=0 +;Define the cues, and signal types each input, output and parameter. +InputCue1=[~UNUSED3~] +InputSigType1=Digital +OutputCue1=1 +OutputSigType1=Digital +InputCue2=[~UNUSED3~] +InputSigType2=Digital +OutputCue2=2 +OutputSigType2=Digital +InputCue3=[~UNUSED3~] +InputSigType3=Digital +OutputCue3=3 +OutputSigType3=Digital +InputCue4=[~UNUSED3~] +InputSigType4=Digital +OutputCue4=4 +OutputSigType4=Digital +InputCue5=[~UNUSED3~] +InputSigType5=Digital +OutputCue5=5 +OutputSigType5=Digital +InputCue6=[~UNUSED3~] +InputSigType6=Digital +OutputCue6=6 +OutputSigType6=Digital +InputCue7=[~UNUSED3~] +InputSigType7=Digital +OutputCue7=7 +OutputSigType7=Digital +InputCue8=[~UNUSED3~] +InputSigType8=Digital +OutputCue8=8 +OutputSigType8=Digital +InputCue9=[~UNUSED3~] +InputSigType9=Digital +OutputCue9=9 +OutputSigType9=Digital +InputCue10=[~UNUSED3~] +InputSigType10=Digital +OutputCue10=0 +OutputSigType10=Digital +InputCue11=[~UNUSED3~] +InputSigType11=Digital +OutputCue11=* +OutputSigType11=Digital +InputCue12=[~UNUSED3~] +InputSigType12=Digital +OutputCue12=/# +OutputSigType12=Digital +ParamCue1=SmartObjectId +ParamSigType1=Constant +MPp=1 +Pp1=5 +CedH=5 +SmartObjId=20d +] +; Parameter Properties for Smart Object ID +[ +ObjTp=Dp +H=5 +Tp=1 +HD=TRUE +DV=20d +NF=1 +DNF=1 +EncFmt=0 +DVLF=1 +Sgn=0 +] +; Smart Objects Definition section +[ +ObjTp=CED +H=5 +Name=PepperDash Essentials TSW1050_[C.AC] 03.AC Active_AC DTMF Keypad.ced +;Cedver is the version of the Smart Graphics control, not the CED file format. +;If the control definition changes, increment this. +CedVer=1 +] +;================================================================================ +[ +ObjTp=Symbol +Name=PepperDash Essentials TSW1050_[B.AV] Staging_Subpage Reference List Horizontal_3.ced +Hint=Subpage Reference List Horizontal_3 (Smart Object ID=3200) +Code=6 +SGControlType=Subpage Reference List Horizontal +SGControlName=Subpage Reference List Horizontal_3 +GUID=D638D437-6722-43E1-B435-EF13DCE5ECF0 +SmplCName=PepperDash Essentials TSW1050_[B.AV] Staging_Subpage Reference List Horizontal_3.ced +SMWRev=4.02.20 +Expand=expand_random +HelpID=10124 +Render=8 +;Define the number of inputs, outputs and parameters +MinVariableInputs=4076 +MaxVariableInputs=4076 +MinVariableOutputs=4076 +MaxVariableOutputs=4076 +NumFixedParams=1 +MinVariableInputsList2=72 +MaxVariableInputsList2=72 +MinVariableOutputsList2=72 +MaxVariableOutputsList2=72 +MinVariableInputsList3=72 +MaxVariableInputsList3=72 +MinVariableOutputsList3=72 +MaxVariableOutputsList3=72 +InputSigType1=Digital +OutputSigType1=Digital +InputList2SigType1=Analog +OutputList2SigType1=Analog +InputList3SigType1=Serial +OutputList3SigType1=Serial + +;Define the cues, and signal types each input, output and parameter. +InputCue1=[~UNUSED3~] +InputSigType1=Digital +InputCue2=[~UNUSED2~] +InputSigType2=Digital +InputCue3=[~UNUSED2~] +InputSigType3=Digital +InputCue4=[~UNUSED2~] +InputSigType4=Digital +InputCue5=[~UNUSED2~] +InputSigType5=Digital +InputCue6=[~UNUSED2~] +InputSigType6=Digital +InputCue7=[~UNUSED2~] +InputSigType7=Digital +InputCue8=[~UNUSED2~] +InputSigType8=Digital +InputCue9=[~UNUSED2~] +InputSigType9=Digital +InputCue10=[~UNUSED2~] +InputSigType10=Digital +InputCue11=[~BeginGroup~]Enable +InputSigType11=Digital +InputCue12=Item 1 Enable +InputSigType12=Digital +InputCue13=Item 2 Enable +InputSigType13=Digital +InputCue14=Item 3 Enable +InputSigType14=Digital +InputCue15=Item 4 Enable +InputSigType15=Digital +InputCue16=Item 5 Enable +InputSigType16=Digital +InputCue17=Item 6 Enable +InputSigType17=Digital +InputCue18=Item 7 Enable +InputSigType18=Digital +InputCue19=Item 8 Enable +InputSigType19=Digital +InputCue20=Item 9 Enable +InputSigType20=Digital +InputCue21=Item 10 Enable +InputSigType21=Digital +InputCue22=Item 11 Enable +InputSigType22=Digital +InputCue23=Item 12 Enable +InputSigType23=Digital +InputCue24=Item 13 Enable +InputSigType24=Digital +InputCue25=Item 14 Enable +InputSigType25=Digital +InputCue26=Item 15 Enable +InputSigType26=Digital +InputCue27=Item 16 Enable +InputSigType27=Digital +InputCue28=Item 17 Enable +InputSigType28=Digital +InputCue29=Item 18 Enable +InputSigType29=Digital +InputCue30=Item 19 Enable +InputSigType30=Digital +InputCue31=Item 20 Enable +InputSigType31=Digital +InputCue32=[~UNUSED2~] +InputSigType32=Digital|Analog|Serial|String +InputCue2012=[~EndGroup~]Enable +InputSigType2012=Digital +InputCue2013=[~BeginGroup~]Visible +InputSigType2013=Digital +InputCue2014=Item 1 Visible +InputSigType2014=Digital +InputCue2015=Item 2 Visible +InputSigType2015=Digital +InputCue2016=Item 3 Visible +InputSigType2016=Digital +InputCue2017=Item 4 Visible +InputSigType2017=Digital +InputCue2018=Item 5 Visible +InputSigType2018=Digital +InputCue2019=Item 6 Visible +InputSigType2019=Digital +InputCue2020=Item 7 Visible +InputSigType2020=Digital +InputCue2021=Item 8 Visible +InputSigType2021=Digital +InputCue2022=Item 9 Visible +InputSigType2022=Digital +InputCue2023=Item 10 Visible +InputSigType2023=Digital +InputCue2024=Item 11 Visible +InputSigType2024=Digital +InputCue2025=Item 12 Visible +InputSigType2025=Digital +InputCue2026=Item 13 Visible +InputSigType2026=Digital +InputCue2027=Item 14 Visible +InputSigType2027=Digital +InputCue2028=Item 15 Visible +InputSigType2028=Digital +InputCue2029=Item 16 Visible +InputSigType2029=Digital +InputCue2030=Item 17 Visible +InputSigType2030=Digital +InputCue2031=Item 18 Visible +InputSigType2031=Digital +InputCue2032=Item 19 Visible +InputSigType2032=Digital +InputCue2033=Item 20 Visible +InputSigType2033=Digital +InputCue2034=[~UNUSED2~] +InputSigType2034=Digital|Analog|Serial|String +InputCue4014=[~EndGroup~]Visible +InputSigType4014=Digital +InputCue4015=[~BeginGroup~]fb +InputSigType4015=Digital +InputCue4016=fb1 +InputSigType4016=Digital +InputCue4017=fb2 +InputSigType4017=Digital +InputCue4018=fb3 +InputSigType4018=Digital +InputCue4019=fb4 +InputSigType4019=Digital +InputCue4020=fb5 +InputSigType4020=Digital +InputCue4021=fb6 +InputSigType4021=Digital +InputCue4022=fb7 +InputSigType4022=Digital +InputCue4023=fb8 +InputSigType4023=Digital +InputCue4024=fb9 +InputSigType4024=Digital +InputCue4025=fb10 +InputSigType4025=Digital +InputCue4026=fb11 +InputSigType4026=Digital +InputCue4027=fb12 +InputSigType4027=Digital +InputCue4028=fb13 +InputSigType4028=Digital +InputCue4029=fb14 +InputSigType4029=Digital +InputCue4030=fb15 +InputSigType4030=Digital +InputCue4031=fb16 +InputSigType4031=Digital +InputCue4032=fb17 +InputSigType4032=Digital +InputCue4033=fb18 +InputSigType4033=Digital +InputCue4034=fb19 +InputSigType4034=Digital +InputCue4035=fb20 +InputSigType4035=Digital +InputCue4036=fb21 +InputSigType4036=Digital +InputCue4037=fb22 +InputSigType4037=Digital +InputCue4038=fb23 +InputSigType4038=Digital +InputCue4039=fb24 +InputSigType4039=Digital +InputCue4040=fb25 +InputSigType4040=Digital +InputCue4041=fb26 +InputSigType4041=Digital +InputCue4042=fb27 +InputSigType4042=Digital +InputCue4043=fb28 +InputSigType4043=Digital +InputCue4044=fb29 +InputSigType4044=Digital +InputCue4045=fb30 +InputSigType4045=Digital +InputCue4046=fb31 +InputSigType4046=Digital +InputCue4047=fb32 +InputSigType4047=Digital +InputCue4048=fb33 +InputSigType4048=Digital +InputCue4049=fb34 +InputSigType4049=Digital +InputCue4050=fb35 +InputSigType4050=Digital +InputCue4051=fb36 +InputSigType4051=Digital +InputCue4052=fb37 +InputSigType4052=Digital +InputCue4053=fb38 +InputSigType4053=Digital +InputCue4054=fb39 +InputSigType4054=Digital +InputCue4055=fb40 +InputSigType4055=Digital +InputCue4056=fb41 +InputSigType4056=Digital +InputCue4057=fb42 +InputSigType4057=Digital +InputCue4058=fb43 +InputSigType4058=Digital +InputCue4059=fb44 +InputSigType4059=Digital +InputCue4060=fb45 +InputSigType4060=Digital +InputCue4061=fb46 +InputSigType4061=Digital +InputCue4062=fb47 +InputSigType4062=Digital +InputCue4063=fb48 +InputSigType4063=Digital +InputCue4064=fb49 +InputSigType4064=Digital +InputCue4065=fb50 +InputSigType4065=Digital +InputCue4066=fb51 +InputSigType4066=Digital +InputCue4067=fb52 +InputSigType4067=Digital +InputCue4068=fb53 +InputSigType4068=Digital +InputCue4069=fb54 +InputSigType4069=Digital +InputCue4070=fb55 +InputSigType4070=Digital +InputCue4071=fb56 +InputSigType4071=Digital +InputCue4072=fb57 +InputSigType4072=Digital +InputCue4073=fb58 +InputSigType4073=Digital +InputCue4074=fb59 +InputSigType4074=Digital +InputCue4075=fb60 +InputSigType4075=Digital +InputCue4076=[~EndGroup~]fb +InputSigType4076=Digital +OutputCue1=Is Moving +OutputSigType1=Digital +OutputCue2=[~UNUSED2~] +OutputSigType2=Digital +OutputCue3=[~UNUSED2~] +OutputSigType3=Digital +OutputCue4=[~UNUSED2~] +OutputSigType4=Digital +OutputCue5=[~UNUSED2~] +OutputSigType5=Digital +OutputCue6=[~UNUSED2~] +OutputSigType6=Digital +OutputCue7=[~UNUSED2~] +OutputSigType7=Digital +OutputCue8=[~UNUSED2~] +OutputSigType8=Digital +OutputCue9=[~UNUSED2~] +OutputSigType9=Digital +OutputCue10=[~UNUSED2~] +OutputSigType10=Digital +OutputCue11=[~BeginGroup~]Enable +OutputSigType11=Digital +OutputCue12=[~UNUSED3~] +OutputSigType12=Digital +OutputCue13=[~UNUSED3~] +OutputSigType13=Digital +OutputCue14=[~UNUSED3~] +OutputSigType14=Digital +OutputCue15=[~UNUSED3~] +OutputSigType15=Digital +OutputCue16=[~UNUSED3~] +OutputSigType16=Digital +OutputCue17=[~UNUSED3~] +OutputSigType17=Digital +OutputCue18=[~UNUSED3~] +OutputSigType18=Digital +OutputCue19=[~UNUSED3~] +OutputSigType19=Digital +OutputCue20=[~UNUSED3~] +OutputSigType20=Digital +OutputCue21=[~UNUSED3~] +OutputSigType21=Digital +OutputCue22=[~UNUSED3~] +OutputSigType22=Digital +OutputCue23=[~UNUSED3~] +OutputSigType23=Digital +OutputCue24=[~UNUSED3~] +OutputSigType24=Digital +OutputCue25=[~UNUSED3~] +OutputSigType25=Digital +OutputCue26=[~UNUSED3~] +OutputSigType26=Digital +OutputCue27=[~UNUSED3~] +OutputSigType27=Digital +OutputCue28=[~UNUSED3~] +OutputSigType28=Digital +OutputCue29=[~UNUSED3~] +OutputSigType29=Digital +OutputCue30=[~UNUSED3~] +OutputSigType30=Digital +OutputCue31=[~UNUSED3~] +OutputSigType31=Digital +OutputCue32=[~UNUSED2~] +OutputSigType32=Digital|Analog|Serial|String +OutputCue2012=[~EndGroup~]Enable +OutputSigType2012=Digital +OutputCue2013=[~BeginGroup~]Visible +OutputSigType2013=Digital +OutputCue2014=[~UNUSED3~] +OutputSigType2014=Digital +OutputCue2015=[~UNUSED3~] +OutputSigType2015=Digital +OutputCue2016=[~UNUSED3~] +OutputSigType2016=Digital +OutputCue2017=[~UNUSED3~] +OutputSigType2017=Digital +OutputCue2018=[~UNUSED3~] +OutputSigType2018=Digital +OutputCue2019=[~UNUSED3~] +OutputSigType2019=Digital +OutputCue2020=[~UNUSED3~] +OutputSigType2020=Digital +OutputCue2021=[~UNUSED3~] +OutputSigType2021=Digital +OutputCue2022=[~UNUSED3~] +OutputSigType2022=Digital +OutputCue2023=[~UNUSED3~] +OutputSigType2023=Digital +OutputCue2024=[~UNUSED3~] +OutputSigType2024=Digital +OutputCue2025=[~UNUSED3~] +OutputSigType2025=Digital +OutputCue2026=[~UNUSED3~] +OutputSigType2026=Digital +OutputCue2027=[~UNUSED3~] +OutputSigType2027=Digital +OutputCue2028=[~UNUSED3~] +OutputSigType2028=Digital +OutputCue2029=[~UNUSED3~] +OutputSigType2029=Digital +OutputCue2030=[~UNUSED3~] +OutputSigType2030=Digital +OutputCue2031=[~UNUSED3~] +OutputSigType2031=Digital +OutputCue2032=[~UNUSED3~] +OutputSigType2032=Digital +OutputCue2033=[~UNUSED3~] +OutputSigType2033=Digital +OutputCue2034=[~UNUSED2~] +OutputSigType2034=Digital|Analog|Serial|String +OutputCue4014=[~EndGroup~]Visible +OutputSigType4014=Digital +OutputCue4015=[~BeginGroup~]Press +OutputSigType4015=Digital +OutputCue4016=press1 +OutputSigType4016=Digital +OutputCue4017=press2 +OutputSigType4017=Digital +OutputCue4018=press3 +OutputSigType4018=Digital +OutputCue4019=press4 +OutputSigType4019=Digital +OutputCue4020=press5 +OutputSigType4020=Digital +OutputCue4021=press6 +OutputSigType4021=Digital +OutputCue4022=press7 +OutputSigType4022=Digital +OutputCue4023=press8 +OutputSigType4023=Digital +OutputCue4024=press9 +OutputSigType4024=Digital +OutputCue4025=press10 +OutputSigType4025=Digital +OutputCue4026=press11 +OutputSigType4026=Digital +OutputCue4027=press12 +OutputSigType4027=Digital +OutputCue4028=press13 +OutputSigType4028=Digital +OutputCue4029=press14 +OutputSigType4029=Digital +OutputCue4030=press15 +OutputSigType4030=Digital +OutputCue4031=press16 +OutputSigType4031=Digital +OutputCue4032=press17 +OutputSigType4032=Digital +OutputCue4033=press18 +OutputSigType4033=Digital +OutputCue4034=press19 +OutputSigType4034=Digital +OutputCue4035=press20 +OutputSigType4035=Digital +OutputCue4036=press21 +OutputSigType4036=Digital +OutputCue4037=press22 +OutputSigType4037=Digital +OutputCue4038=press23 +OutputSigType4038=Digital +OutputCue4039=press24 +OutputSigType4039=Digital +OutputCue4040=press25 +OutputSigType4040=Digital +OutputCue4041=press26 +OutputSigType4041=Digital +OutputCue4042=press27 +OutputSigType4042=Digital +OutputCue4043=press28 +OutputSigType4043=Digital +OutputCue4044=press29 +OutputSigType4044=Digital +OutputCue4045=press30 +OutputSigType4045=Digital +OutputCue4046=press31 +OutputSigType4046=Digital +OutputCue4047=press32 +OutputSigType4047=Digital +OutputCue4048=press33 +OutputSigType4048=Digital +OutputCue4049=press34 +OutputSigType4049=Digital +OutputCue4050=press35 +OutputSigType4050=Digital +OutputCue4051=press36 +OutputSigType4051=Digital +OutputCue4052=press37 +OutputSigType4052=Digital +OutputCue4053=press38 +OutputSigType4053=Digital +OutputCue4054=press39 +OutputSigType4054=Digital +OutputCue4055=press40 +OutputSigType4055=Digital +OutputCue4056=press41 +OutputSigType4056=Digital +OutputCue4057=press42 +OutputSigType4057=Digital +OutputCue4058=press43 +OutputSigType4058=Digital +OutputCue4059=press44 +OutputSigType4059=Digital +OutputCue4060=press45 +OutputSigType4060=Digital +OutputCue4061=press46 +OutputSigType4061=Digital +OutputCue4062=press47 +OutputSigType4062=Digital +OutputCue4063=press48 +OutputSigType4063=Digital +OutputCue4064=press49 +OutputSigType4064=Digital +OutputCue4065=press50 +OutputSigType4065=Digital +OutputCue4066=press51 +OutputSigType4066=Digital +OutputCue4067=press52 +OutputSigType4067=Digital +OutputCue4068=press53 +OutputSigType4068=Digital +OutputCue4069=press54 +OutputSigType4069=Digital +OutputCue4070=press55 +OutputSigType4070=Digital +OutputCue4071=press56 +OutputSigType4071=Digital +OutputCue4072=press57 +OutputSigType4072=Digital +OutputCue4073=press58 +OutputSigType4073=Digital +OutputCue4074=press59 +OutputSigType4074=Digital +OutputCue4075=press60 +OutputSigType4075=Digital +OutputCue4076=[~EndGroup~]Press +OutputSigType4076=Digital +InputList2Cue1=[~UNUSED3~] +InputList2SigType1=Analog +InputList2Cue2=Scroll To Item +InputList2SigType2=Analog +InputList2Cue3=Set Number of Items +InputList2SigType3=Analog +InputList2Cue4=[~UNUSED2~] +InputList2SigType4=Analog +InputList2Cue5=[~UNUSED2~] +InputList2SigType5=Analog +InputList2Cue6=[~UNUSED2~] +InputList2SigType6=Analog +InputList2Cue7=[~UNUSED2~] +InputList2SigType7=Analog +InputList2Cue8=[~UNUSED2~] +InputList2SigType8=Analog +InputList2Cue9=[~UNUSED2~] +InputList2SigType9=Analog +InputList2Cue10=[~UNUSED2~] +InputList2SigType10=Analog +InputList2Cue11=[~BeginGroup~]an_fb +InputList2SigType11=Analog +InputList2Cue12=an_fb1 +InputList2SigType12=Analog +InputList2Cue13=an_fb2 +InputList2SigType13=Analog +InputList2Cue14=an_fb3 +InputList2SigType14=Analog +InputList2Cue15=an_fb4 +InputList2SigType15=Analog +InputList2Cue16=an_fb5 +InputList2SigType16=Analog +InputList2Cue17=an_fb6 +InputList2SigType17=Analog +InputList2Cue18=an_fb7 +InputList2SigType18=Analog +InputList2Cue19=an_fb8 +InputList2SigType19=Analog +InputList2Cue20=an_fb9 +InputList2SigType20=Analog +InputList2Cue21=an_fb10 +InputList2SigType21=Analog +InputList2Cue22=an_fb11 +InputList2SigType22=Analog +InputList2Cue23=an_fb12 +InputList2SigType23=Analog +InputList2Cue24=an_fb13 +InputList2SigType24=Analog +InputList2Cue25=an_fb14 +InputList2SigType25=Analog +InputList2Cue26=an_fb15 +InputList2SigType26=Analog +InputList2Cue27=an_fb16 +InputList2SigType27=Analog +InputList2Cue28=an_fb17 +InputList2SigType28=Analog +InputList2Cue29=an_fb18 +InputList2SigType29=Analog +InputList2Cue30=an_fb19 +InputList2SigType30=Analog +InputList2Cue31=an_fb20 +InputList2SigType31=Analog +InputList2Cue32=an_fb21 +InputList2SigType32=Analog +InputList2Cue33=an_fb22 +InputList2SigType33=Analog +InputList2Cue34=an_fb23 +InputList2SigType34=Analog +InputList2Cue35=an_fb24 +InputList2SigType35=Analog +InputList2Cue36=an_fb25 +InputList2SigType36=Analog +InputList2Cue37=an_fb26 +InputList2SigType37=Analog +InputList2Cue38=an_fb27 +InputList2SigType38=Analog +InputList2Cue39=an_fb28 +InputList2SigType39=Analog +InputList2Cue40=an_fb29 +InputList2SigType40=Analog +InputList2Cue41=an_fb30 +InputList2SigType41=Analog +InputList2Cue42=an_fb31 +InputList2SigType42=Analog +InputList2Cue43=an_fb32 +InputList2SigType43=Analog +InputList2Cue44=an_fb33 +InputList2SigType44=Analog +InputList2Cue45=an_fb34 +InputList2SigType45=Analog +InputList2Cue46=an_fb35 +InputList2SigType46=Analog +InputList2Cue47=an_fb36 +InputList2SigType47=Analog +InputList2Cue48=an_fb37 +InputList2SigType48=Analog +InputList2Cue49=an_fb38 +InputList2SigType49=Analog +InputList2Cue50=an_fb39 +InputList2SigType50=Analog +InputList2Cue51=an_fb40 +InputList2SigType51=Analog +InputList2Cue52=an_fb41 +InputList2SigType52=Analog +InputList2Cue53=an_fb42 +InputList2SigType53=Analog +InputList2Cue54=an_fb43 +InputList2SigType54=Analog +InputList2Cue55=an_fb44 +InputList2SigType55=Analog +InputList2Cue56=an_fb45 +InputList2SigType56=Analog +InputList2Cue57=an_fb46 +InputList2SigType57=Analog +InputList2Cue58=an_fb47 +InputList2SigType58=Analog +InputList2Cue59=an_fb48 +InputList2SigType59=Analog +InputList2Cue60=an_fb49 +InputList2SigType60=Analog +InputList2Cue61=an_fb50 +InputList2SigType61=Analog +InputList2Cue62=an_fb51 +InputList2SigType62=Analog +InputList2Cue63=an_fb52 +InputList2SigType63=Analog +InputList2Cue64=an_fb53 +InputList2SigType64=Analog +InputList2Cue65=an_fb54 +InputList2SigType65=Analog +InputList2Cue66=an_fb55 +InputList2SigType66=Analog +InputList2Cue67=an_fb56 +InputList2SigType67=Analog +InputList2Cue68=an_fb57 +InputList2SigType68=Analog +InputList2Cue69=an_fb58 +InputList2SigType69=Analog +InputList2Cue70=an_fb59 +InputList2SigType70=Analog +InputList2Cue71=an_fb60 +InputList2SigType71=Analog +InputList2Cue72=[~EndGroup~]an_fb +InputList2SigType72=Analog +OutputList2Cue1=Item Clicked +OutputList2SigType1=Analog +OutputList2Cue2=[~UNUSED3~] +OutputList2SigType2=Analog +OutputList2Cue3=[~UNUSED3~] +OutputList2SigType3=Analog +OutputList2Cue4=[~UNUSED2~] +OutputList2SigType4=Analog +OutputList2Cue5=[~UNUSED2~] +OutputList2SigType5=Analog +OutputList2Cue6=[~UNUSED2~] +OutputList2SigType6=Analog +OutputList2Cue7=[~UNUSED2~] +OutputList2SigType7=Analog +OutputList2Cue8=[~UNUSED2~] +OutputList2SigType8=Analog +OutputList2Cue9=[~UNUSED2~] +OutputList2SigType9=Analog +OutputList2Cue10=[~UNUSED2~] +OutputList2SigType10=Analog +OutputList2Cue11=[~BeginGroup~]an_act +OutputList2SigType11=Analog +OutputList2Cue12=an_act1 +OutputList2SigType12=Analog +OutputList2Cue13=an_act2 +OutputList2SigType13=Analog +OutputList2Cue14=an_act3 +OutputList2SigType14=Analog +OutputList2Cue15=an_act4 +OutputList2SigType15=Analog +OutputList2Cue16=an_act5 +OutputList2SigType16=Analog +OutputList2Cue17=an_act6 +OutputList2SigType17=Analog +OutputList2Cue18=an_act7 +OutputList2SigType18=Analog +OutputList2Cue19=an_act8 +OutputList2SigType19=Analog +OutputList2Cue20=an_act9 +OutputList2SigType20=Analog +OutputList2Cue21=an_act10 +OutputList2SigType21=Analog +OutputList2Cue22=an_act11 +OutputList2SigType22=Analog +OutputList2Cue23=an_act12 +OutputList2SigType23=Analog +OutputList2Cue24=an_act13 +OutputList2SigType24=Analog +OutputList2Cue25=an_act14 +OutputList2SigType25=Analog +OutputList2Cue26=an_act15 +OutputList2SigType26=Analog +OutputList2Cue27=an_act16 +OutputList2SigType27=Analog +OutputList2Cue28=an_act17 +OutputList2SigType28=Analog +OutputList2Cue29=an_act18 +OutputList2SigType29=Analog +OutputList2Cue30=an_act19 +OutputList2SigType30=Analog +OutputList2Cue31=an_act20 +OutputList2SigType31=Analog +OutputList2Cue32=an_act21 +OutputList2SigType32=Analog +OutputList2Cue33=an_act22 +OutputList2SigType33=Analog +OutputList2Cue34=an_act23 +OutputList2SigType34=Analog +OutputList2Cue35=an_act24 +OutputList2SigType35=Analog +OutputList2Cue36=an_act25 +OutputList2SigType36=Analog +OutputList2Cue37=an_act26 +OutputList2SigType37=Analog +OutputList2Cue38=an_act27 +OutputList2SigType38=Analog +OutputList2Cue39=an_act28 +OutputList2SigType39=Analog +OutputList2Cue40=an_act29 +OutputList2SigType40=Analog +OutputList2Cue41=an_act30 +OutputList2SigType41=Analog +OutputList2Cue42=an_act31 +OutputList2SigType42=Analog +OutputList2Cue43=an_act32 +OutputList2SigType43=Analog +OutputList2Cue44=an_act33 +OutputList2SigType44=Analog +OutputList2Cue45=an_act34 +OutputList2SigType45=Analog +OutputList2Cue46=an_act35 +OutputList2SigType46=Analog +OutputList2Cue47=an_act36 +OutputList2SigType47=Analog +OutputList2Cue48=an_act37 +OutputList2SigType48=Analog +OutputList2Cue49=an_act38 +OutputList2SigType49=Analog +OutputList2Cue50=an_act39 +OutputList2SigType50=Analog +OutputList2Cue51=an_act40 +OutputList2SigType51=Analog +OutputList2Cue52=an_act41 +OutputList2SigType52=Analog +OutputList2Cue53=an_act42 +OutputList2SigType53=Analog +OutputList2Cue54=an_act43 +OutputList2SigType54=Analog +OutputList2Cue55=an_act44 +OutputList2SigType55=Analog +OutputList2Cue56=an_act45 +OutputList2SigType56=Analog +OutputList2Cue57=an_act46 +OutputList2SigType57=Analog +OutputList2Cue58=an_act47 +OutputList2SigType58=Analog +OutputList2Cue59=an_act48 +OutputList2SigType59=Analog +OutputList2Cue60=an_act49 +OutputList2SigType60=Analog +OutputList2Cue61=an_act50 +OutputList2SigType61=Analog +OutputList2Cue62=an_act51 +OutputList2SigType62=Analog +OutputList2Cue63=an_act52 +OutputList2SigType63=Analog +OutputList2Cue64=an_act53 +OutputList2SigType64=Analog +OutputList2Cue65=an_act54 +OutputList2SigType65=Analog +OutputList2Cue66=an_act55 +OutputList2SigType66=Analog +OutputList2Cue67=an_act56 +OutputList2SigType67=Analog +OutputList2Cue68=an_act57 +OutputList2SigType68=Analog +OutputList2Cue69=an_act58 +OutputList2SigType69=Analog +OutputList2Cue70=an_act59 +OutputList2SigType70=Analog +OutputList2Cue71=an_act60 +OutputList2SigType71=Analog +OutputList2Cue72=[~EndGroup~]an_act +OutputList2SigType72=Analog +InputList3Cue1=[~UNUSED2~] +InputList3SigType1=Serial +InputList3Cue2=[~UNUSED2~] +InputList3SigType2=Serial +InputList3Cue3=[~UNUSED2~] +InputList3SigType3=Serial +InputList3Cue4=[~UNUSED2~] +InputList3SigType4=Serial +InputList3Cue5=[~UNUSED2~] +InputList3SigType5=Serial +InputList3Cue6=[~UNUSED2~] +InputList3SigType6=Serial +InputList3Cue7=[~UNUSED2~] +InputList3SigType7=Serial +InputList3Cue8=[~UNUSED2~] +InputList3SigType8=Serial +InputList3Cue9=[~UNUSED2~] +InputList3SigType9=Serial +InputList3Cue10=[~UNUSED2~] +InputList3SigType10=Serial +InputList3Cue11=[~BeginGroup~]text-o +InputList3SigType11=Serial +InputList3Cue12=text-o1 +InputList3SigType12=Serial +InputList3Cue13=text-o2 +InputList3SigType13=Serial +InputList3Cue14=text-o3 +InputList3SigType14=Serial +InputList3Cue15=text-o4 +InputList3SigType15=Serial +InputList3Cue16=text-o5 +InputList3SigType16=Serial +InputList3Cue17=text-o6 +InputList3SigType17=Serial +InputList3Cue18=text-o7 +InputList3SigType18=Serial +InputList3Cue19=text-o8 +InputList3SigType19=Serial +InputList3Cue20=text-o9 +InputList3SigType20=Serial +InputList3Cue21=text-o10 +InputList3SigType21=Serial +InputList3Cue22=text-o11 +InputList3SigType22=Serial +InputList3Cue23=text-o12 +InputList3SigType23=Serial +InputList3Cue24=text-o13 +InputList3SigType24=Serial +InputList3Cue25=text-o14 +InputList3SigType25=Serial +InputList3Cue26=text-o15 +InputList3SigType26=Serial +InputList3Cue27=text-o16 +InputList3SigType27=Serial +InputList3Cue28=text-o17 +InputList3SigType28=Serial +InputList3Cue29=text-o18 +InputList3SigType29=Serial +InputList3Cue30=text-o19 +InputList3SigType30=Serial +InputList3Cue31=text-o20 +InputList3SigType31=Serial +InputList3Cue32=text-o21 +InputList3SigType32=Serial +InputList3Cue33=text-o22 +InputList3SigType33=Serial +InputList3Cue34=text-o23 +InputList3SigType34=Serial +InputList3Cue35=text-o24 +InputList3SigType35=Serial +InputList3Cue36=text-o25 +InputList3SigType36=Serial +InputList3Cue37=text-o26 +InputList3SigType37=Serial +InputList3Cue38=text-o27 +InputList3SigType38=Serial +InputList3Cue39=text-o28 +InputList3SigType39=Serial +InputList3Cue40=text-o29 +InputList3SigType40=Serial +InputList3Cue41=text-o30 +InputList3SigType41=Serial +InputList3Cue42=text-o31 +InputList3SigType42=Serial +InputList3Cue43=text-o32 +InputList3SigType43=Serial +InputList3Cue44=text-o33 +InputList3SigType44=Serial +InputList3Cue45=text-o34 +InputList3SigType45=Serial +InputList3Cue46=text-o35 +InputList3SigType46=Serial +InputList3Cue47=text-o36 +InputList3SigType47=Serial +InputList3Cue48=text-o37 +InputList3SigType48=Serial +InputList3Cue49=text-o38 +InputList3SigType49=Serial +InputList3Cue50=text-o39 +InputList3SigType50=Serial +InputList3Cue51=text-o40 +InputList3SigType51=Serial +InputList3Cue52=text-o41 +InputList3SigType52=Serial +InputList3Cue53=text-o42 +InputList3SigType53=Serial +InputList3Cue54=text-o43 +InputList3SigType54=Serial +InputList3Cue55=text-o44 +InputList3SigType55=Serial +InputList3Cue56=text-o45 +InputList3SigType56=Serial +InputList3Cue57=text-o46 +InputList3SigType57=Serial +InputList3Cue58=text-o47 +InputList3SigType58=Serial +InputList3Cue59=text-o48 +InputList3SigType59=Serial +InputList3Cue60=text-o49 +InputList3SigType60=Serial +InputList3Cue61=text-o50 +InputList3SigType61=Serial +InputList3Cue62=text-o51 +InputList3SigType62=Serial +InputList3Cue63=text-o52 +InputList3SigType63=Serial +InputList3Cue64=text-o53 +InputList3SigType64=Serial +InputList3Cue65=text-o54 +InputList3SigType65=Serial +InputList3Cue66=text-o55 +InputList3SigType66=Serial +InputList3Cue67=text-o56 +InputList3SigType67=Serial +InputList3Cue68=text-o57 +InputList3SigType68=Serial +InputList3Cue69=text-o58 +InputList3SigType69=Serial +InputList3Cue70=text-o59 +InputList3SigType70=Serial +InputList3Cue71=text-o60 +InputList3SigType71=Serial +InputList3Cue72=[~EndGroup~]text-o +InputList3SigType72=Serial +OutputList3Cue1=[~UNUSED2~] +OutputList3SigType1=Serial +OutputList3Cue2=[~UNUSED2~] +OutputList3SigType2=Serial +OutputList3Cue3=[~UNUSED2~] +OutputList3SigType3=Serial +OutputList3Cue4=[~UNUSED2~] +OutputList3SigType4=Serial +OutputList3Cue5=[~UNUSED2~] +OutputList3SigType5=Serial +OutputList3Cue6=[~UNUSED2~] +OutputList3SigType6=Serial +OutputList3Cue7=[~UNUSED2~] +OutputList3SigType7=Serial +OutputList3Cue8=[~UNUSED2~] +OutputList3SigType8=Serial +OutputList3Cue9=[~UNUSED2~] +OutputList3SigType9=Serial +OutputList3Cue10=[~UNUSED2~] +OutputList3SigType10=Serial +OutputList3Cue11=[~BeginGroup~]text-i +OutputList3SigType11=Serial +OutputList3Cue12=text-i1 +OutputList3SigType12=Serial +OutputList3Cue13=text-i2 +OutputList3SigType13=Serial +OutputList3Cue14=text-i3 +OutputList3SigType14=Serial +OutputList3Cue15=text-i4 +OutputList3SigType15=Serial +OutputList3Cue16=text-i5 +OutputList3SigType16=Serial +OutputList3Cue17=text-i6 +OutputList3SigType17=Serial +OutputList3Cue18=text-i7 +OutputList3SigType18=Serial +OutputList3Cue19=text-i8 +OutputList3SigType19=Serial +OutputList3Cue20=text-i9 +OutputList3SigType20=Serial +OutputList3Cue21=text-i10 +OutputList3SigType21=Serial +OutputList3Cue22=text-i11 +OutputList3SigType22=Serial +OutputList3Cue23=text-i12 +OutputList3SigType23=Serial +OutputList3Cue24=text-i13 +OutputList3SigType24=Serial +OutputList3Cue25=text-i14 +OutputList3SigType25=Serial +OutputList3Cue26=text-i15 +OutputList3SigType26=Serial +OutputList3Cue27=text-i16 +OutputList3SigType27=Serial +OutputList3Cue28=text-i17 +OutputList3SigType28=Serial +OutputList3Cue29=text-i18 +OutputList3SigType29=Serial +OutputList3Cue30=text-i19 +OutputList3SigType30=Serial +OutputList3Cue31=text-i20 +OutputList3SigType31=Serial +OutputList3Cue32=text-i21 +OutputList3SigType32=Serial +OutputList3Cue33=text-i22 +OutputList3SigType33=Serial +OutputList3Cue34=text-i23 +OutputList3SigType34=Serial +OutputList3Cue35=text-i24 +OutputList3SigType35=Serial +OutputList3Cue36=text-i25 +OutputList3SigType36=Serial +OutputList3Cue37=text-i26 +OutputList3SigType37=Serial +OutputList3Cue38=text-i27 +OutputList3SigType38=Serial +OutputList3Cue39=text-i28 +OutputList3SigType39=Serial +OutputList3Cue40=text-i29 +OutputList3SigType40=Serial +OutputList3Cue41=text-i30 +OutputList3SigType41=Serial +OutputList3Cue42=text-i31 +OutputList3SigType42=Serial +OutputList3Cue43=text-i32 +OutputList3SigType43=Serial +OutputList3Cue44=text-i33 +OutputList3SigType44=Serial +OutputList3Cue45=text-i34 +OutputList3SigType45=Serial +OutputList3Cue46=text-i35 +OutputList3SigType46=Serial +OutputList3Cue47=text-i36 +OutputList3SigType47=Serial +OutputList3Cue48=text-i37 +OutputList3SigType48=Serial +OutputList3Cue49=text-i38 +OutputList3SigType49=Serial +OutputList3Cue50=text-i39 +OutputList3SigType50=Serial +OutputList3Cue51=text-i40 +OutputList3SigType51=Serial +OutputList3Cue52=text-i41 +OutputList3SigType52=Serial +OutputList3Cue53=text-i42 +OutputList3SigType53=Serial +OutputList3Cue54=text-i43 +OutputList3SigType54=Serial +OutputList3Cue55=text-i44 +OutputList3SigType55=Serial +OutputList3Cue56=text-i45 +OutputList3SigType56=Serial +OutputList3Cue57=text-i46 +OutputList3SigType57=Serial +OutputList3Cue58=text-i47 +OutputList3SigType58=Serial +OutputList3Cue59=text-i48 +OutputList3SigType59=Serial +OutputList3Cue60=text-i49 +OutputList3SigType60=Serial +OutputList3Cue61=text-i50 +OutputList3SigType61=Serial +OutputList3Cue62=text-i51 +OutputList3SigType62=Serial +OutputList3Cue63=text-i52 +OutputList3SigType63=Serial +OutputList3Cue64=text-i53 +OutputList3SigType64=Serial +OutputList3Cue65=text-i54 +OutputList3SigType65=Serial +OutputList3Cue66=text-i55 +OutputList3SigType66=Serial +OutputList3Cue67=text-i56 +OutputList3SigType67=Serial +OutputList3Cue68=text-i57 +OutputList3SigType68=Serial +OutputList3Cue69=text-i58 +OutputList3SigType69=Serial +OutputList3Cue70=text-i59 +OutputList3SigType70=Serial +OutputList3Cue71=text-i60 +OutputList3SigType71=Serial +OutputList3Cue72=[~EndGroup~]text-i +OutputList3SigType72=Serial +ParamCue1=SmartObjectId +ParamSigType1=Constant +MPp=1 +Pp1=6 +CedH=6 +SmartObjId=3200d +] +; Parameter Properties for Smart Object ID +[ +ObjTp=Dp +H=6 +Tp=1 +HD=TRUE +DV=3200d +NF=1 +DNF=1 +EncFmt=0 +DVLF=1 +Sgn=0 +] +; Smart Objects Definition section +[ +ObjTp=CED +H=6 +Name=PepperDash Essentials TSW1050_[B.AV] Staging_Subpage Reference List Horizontal_3.ced +;Cedver is the version of the Smart Graphics control, not the CED file format. +;If the control definition changes, increment this. +CedVer=1 +] +;================================================================================ +[ +ObjTp=Symbol +Name=PepperDash Essentials TSW1050_[B.AV] Source Ctrl-CATV-Basic_Channel Preset List Basic.ced +Hint=Channel Preset List Basic (Smart Object ID=1806) +Code=7 +SGControlType=Subpage Reference List Vertical +SGControlName=Channel Preset List Basic +GUID=46C43CE4-6BB9-4B76-A13E-B4279202F998 +SmplCName=PepperDash Essentials TSW1050_[B.AV] Source Ctrl-CATV-Basic_Channel Preset List Basic.ced +SMWRev=4.02.20 +Expand=expand_random +HelpID=10125 +Render=8 +;Define the number of inputs, outputs and parameters +MinVariableInputs=4106 +MaxVariableInputs=4106 +MinVariableOutputs=4106 +MaxVariableOutputs=4106 +NumFixedParams=1 +MinVariableInputsList2=3 +MaxVariableInputsList2=3 +MinVariableOutputsList2=3 +MaxVariableOutputsList2=3 +MinVariableInputsList3=132 +MaxVariableInputsList3=132 +MinVariableOutputsList3=132 +MaxVariableOutputsList3=132 +InputSigType1=Digital +OutputSigType1=Digital +InputList2SigType1=Analog +OutputList2SigType1=Analog +InputList3SigType1=Serial +OutputList3SigType1=Serial + +;Define the cues, and signal types each input, output and parameter. +InputCue1=[~UNUSED3~] +InputSigType1=Digital +InputCue2=[~UNUSED2~] +InputSigType2=Digital +InputCue3=[~UNUSED2~] +InputSigType3=Digital +InputCue4=[~UNUSED2~] +InputSigType4=Digital +InputCue5=[~UNUSED2~] +InputSigType5=Digital +InputCue6=[~UNUSED2~] +InputSigType6=Digital +InputCue7=[~UNUSED2~] +InputSigType7=Digital +InputCue8=[~UNUSED2~] +InputSigType8=Digital +InputCue9=[~UNUSED2~] +InputSigType9=Digital +InputCue10=[~UNUSED2~] +InputSigType10=Digital +InputCue11=[~BeginGroup~]Enable +InputSigType11=Digital +InputCue12=Item 1 Enable +InputSigType12=Digital +InputCue13=Item 2 Enable +InputSigType13=Digital +InputCue14=Item 3 Enable +InputSigType14=Digital +InputCue15=Item 4 Enable +InputSigType15=Digital +InputCue16=Item 5 Enable +InputSigType16=Digital +InputCue17=Item 6 Enable +InputSigType17=Digital +InputCue18=Item 7 Enable +InputSigType18=Digital +InputCue19=Item 8 Enable +InputSigType19=Digital +InputCue20=Item 9 Enable +InputSigType20=Digital +InputCue21=Item 10 Enable +InputSigType21=Digital +InputCue22=Item 11 Enable +InputSigType22=Digital +InputCue23=Item 12 Enable +InputSigType23=Digital +InputCue24=Item 13 Enable +InputSigType24=Digital +InputCue25=Item 14 Enable +InputSigType25=Digital +InputCue26=Item 15 Enable +InputSigType26=Digital +InputCue27=Item 16 Enable +InputSigType27=Digital +InputCue28=Item 17 Enable +InputSigType28=Digital +InputCue29=Item 18 Enable +InputSigType29=Digital +InputCue30=Item 19 Enable +InputSigType30=Digital +InputCue31=Item 20 Enable +InputSigType31=Digital +InputCue32=Item 21 Enable +InputSigType32=Digital +InputCue33=Item 22 Enable +InputSigType33=Digital +InputCue34=Item 23 Enable +InputSigType34=Digital +InputCue35=Item 24 Enable +InputSigType35=Digital +InputCue36=Item 25 Enable +InputSigType36=Digital +InputCue37=Item 26 Enable +InputSigType37=Digital +InputCue38=Item 27 Enable +InputSigType38=Digital +InputCue39=Item 28 Enable +InputSigType39=Digital +InputCue40=Item 29 Enable +InputSigType40=Digital +InputCue41=Item 30 Enable +InputSigType41=Digital +InputCue42=[~UNUSED2~] +InputSigType42=Digital|Analog|Serial|String +InputCue2012=[~EndGroup~]Enable +InputSigType2012=Digital +InputCue2013=[~BeginGroup~]Visible +InputSigType2013=Digital +InputCue2014=Item 1 Visible +InputSigType2014=Digital +InputCue2015=Item 2 Visible +InputSigType2015=Digital +InputCue2016=Item 3 Visible +InputSigType2016=Digital +InputCue2017=Item 4 Visible +InputSigType2017=Digital +InputCue2018=Item 5 Visible +InputSigType2018=Digital +InputCue2019=Item 6 Visible +InputSigType2019=Digital +InputCue2020=Item 7 Visible +InputSigType2020=Digital +InputCue2021=Item 8 Visible +InputSigType2021=Digital +InputCue2022=Item 9 Visible +InputSigType2022=Digital +InputCue2023=Item 10 Visible +InputSigType2023=Digital +InputCue2024=Item 11 Visible +InputSigType2024=Digital +InputCue2025=Item 12 Visible +InputSigType2025=Digital +InputCue2026=Item 13 Visible +InputSigType2026=Digital +InputCue2027=Item 14 Visible +InputSigType2027=Digital +InputCue2028=Item 15 Visible +InputSigType2028=Digital +InputCue2029=Item 16 Visible +InputSigType2029=Digital +InputCue2030=Item 17 Visible +InputSigType2030=Digital +InputCue2031=Item 18 Visible +InputSigType2031=Digital +InputCue2032=Item 19 Visible +InputSigType2032=Digital +InputCue2033=Item 20 Visible +InputSigType2033=Digital +InputCue2034=Item 21 Visible +InputSigType2034=Digital +InputCue2035=Item 22 Visible +InputSigType2035=Digital +InputCue2036=Item 23 Visible +InputSigType2036=Digital +InputCue2037=Item 24 Visible +InputSigType2037=Digital +InputCue2038=Item 25 Visible +InputSigType2038=Digital +InputCue2039=Item 26 Visible +InputSigType2039=Digital +InputCue2040=Item 27 Visible +InputSigType2040=Digital +InputCue2041=Item 28 Visible +InputSigType2041=Digital +InputCue2042=Item 29 Visible +InputSigType2042=Digital +InputCue2043=Item 30 Visible +InputSigType2043=Digital +InputCue2044=[~UNUSED2~] +InputSigType2044=Digital|Analog|Serial|String +InputCue4014=[~EndGroup~]Visible +InputSigType4014=Digital +InputCue4015=[~BeginGroup~]fb +InputSigType4015=Digital +InputCue4016=fb1 +InputSigType4016=Digital +InputCue4017=fb2 +InputSigType4017=Digital +InputCue4018=fb3 +InputSigType4018=Digital +InputCue4019=fb4 +InputSigType4019=Digital +InputCue4020=fb5 +InputSigType4020=Digital +InputCue4021=fb6 +InputSigType4021=Digital +InputCue4022=fb7 +InputSigType4022=Digital +InputCue4023=fb8 +InputSigType4023=Digital +InputCue4024=fb9 +InputSigType4024=Digital +InputCue4025=fb10 +InputSigType4025=Digital +InputCue4026=fb11 +InputSigType4026=Digital +InputCue4027=fb12 +InputSigType4027=Digital +InputCue4028=fb13 +InputSigType4028=Digital +InputCue4029=fb14 +InputSigType4029=Digital +InputCue4030=fb15 +InputSigType4030=Digital +InputCue4031=fb16 +InputSigType4031=Digital +InputCue4032=fb17 +InputSigType4032=Digital +InputCue4033=fb18 +InputSigType4033=Digital +InputCue4034=fb19 +InputSigType4034=Digital +InputCue4035=fb20 +InputSigType4035=Digital +InputCue4036=fb21 +InputSigType4036=Digital +InputCue4037=fb22 +InputSigType4037=Digital +InputCue4038=fb23 +InputSigType4038=Digital +InputCue4039=fb24 +InputSigType4039=Digital +InputCue4040=fb25 +InputSigType4040=Digital +InputCue4041=fb26 +InputSigType4041=Digital +InputCue4042=fb27 +InputSigType4042=Digital +InputCue4043=fb28 +InputSigType4043=Digital +InputCue4044=fb29 +InputSigType4044=Digital +InputCue4045=fb30 +InputSigType4045=Digital +InputCue4046=fb31 +InputSigType4046=Digital +InputCue4047=fb32 +InputSigType4047=Digital +InputCue4048=fb33 +InputSigType4048=Digital +InputCue4049=fb34 +InputSigType4049=Digital +InputCue4050=fb35 +InputSigType4050=Digital +InputCue4051=fb36 +InputSigType4051=Digital +InputCue4052=fb37 +InputSigType4052=Digital +InputCue4053=fb38 +InputSigType4053=Digital +InputCue4054=fb39 +InputSigType4054=Digital +InputCue4055=fb40 +InputSigType4055=Digital +InputCue4056=fb41 +InputSigType4056=Digital +InputCue4057=fb42 +InputSigType4057=Digital +InputCue4058=fb43 +InputSigType4058=Digital +InputCue4059=fb44 +InputSigType4059=Digital +InputCue4060=fb45 +InputSigType4060=Digital +InputCue4061=fb46 +InputSigType4061=Digital +InputCue4062=fb47 +InputSigType4062=Digital +InputCue4063=fb48 +InputSigType4063=Digital +InputCue4064=fb49 +InputSigType4064=Digital +InputCue4065=fb50 +InputSigType4065=Digital +InputCue4066=fb51 +InputSigType4066=Digital +InputCue4067=fb52 +InputSigType4067=Digital +InputCue4068=fb53 +InputSigType4068=Digital +InputCue4069=fb54 +InputSigType4069=Digital +InputCue4070=fb55 +InputSigType4070=Digital +InputCue4071=fb56 +InputSigType4071=Digital +InputCue4072=fb57 +InputSigType4072=Digital +InputCue4073=fb58 +InputSigType4073=Digital +InputCue4074=fb59 +InputSigType4074=Digital +InputCue4075=fb60 +InputSigType4075=Digital +InputCue4076=fb61 +InputSigType4076=Digital +InputCue4077=fb62 +InputSigType4077=Digital +InputCue4078=fb63 +InputSigType4078=Digital +InputCue4079=fb64 +InputSigType4079=Digital +InputCue4080=fb65 +InputSigType4080=Digital +InputCue4081=fb66 +InputSigType4081=Digital +InputCue4082=fb67 +InputSigType4082=Digital +InputCue4083=fb68 +InputSigType4083=Digital +InputCue4084=fb69 +InputSigType4084=Digital +InputCue4085=fb70 +InputSigType4085=Digital +InputCue4086=fb71 +InputSigType4086=Digital +InputCue4087=fb72 +InputSigType4087=Digital +InputCue4088=fb73 +InputSigType4088=Digital +InputCue4089=fb74 +InputSigType4089=Digital +InputCue4090=fb75 +InputSigType4090=Digital +InputCue4091=fb76 +InputSigType4091=Digital +InputCue4092=fb77 +InputSigType4092=Digital +InputCue4093=fb78 +InputSigType4093=Digital +InputCue4094=fb79 +InputSigType4094=Digital +InputCue4095=fb80 +InputSigType4095=Digital +InputCue4096=fb81 +InputSigType4096=Digital +InputCue4097=fb82 +InputSigType4097=Digital +InputCue4098=fb83 +InputSigType4098=Digital +InputCue4099=fb84 +InputSigType4099=Digital +InputCue4100=fb85 +InputSigType4100=Digital +InputCue4101=fb86 +InputSigType4101=Digital +InputCue4102=fb87 +InputSigType4102=Digital +InputCue4103=fb88 +InputSigType4103=Digital +InputCue4104=fb89 +InputSigType4104=Digital +InputCue4105=fb90 +InputSigType4105=Digital +InputCue4106=[~EndGroup~]fb +InputSigType4106=Digital +OutputCue1=Is Moving +OutputSigType1=Digital +OutputCue2=[~UNUSED2~] +OutputSigType2=Digital +OutputCue3=[~UNUSED2~] +OutputSigType3=Digital +OutputCue4=[~UNUSED2~] +OutputSigType4=Digital +OutputCue5=[~UNUSED2~] +OutputSigType5=Digital +OutputCue6=[~UNUSED2~] +OutputSigType6=Digital +OutputCue7=[~UNUSED2~] +OutputSigType7=Digital +OutputCue8=[~UNUSED2~] +OutputSigType8=Digital +OutputCue9=[~UNUSED2~] +OutputSigType9=Digital +OutputCue10=[~UNUSED2~] +OutputSigType10=Digital +OutputCue11=[~BeginGroup~]Enable +OutputSigType11=Digital +OutputCue12=[~UNUSED3~] +OutputSigType12=Digital +OutputCue13=[~UNUSED3~] +OutputSigType13=Digital +OutputCue14=[~UNUSED3~] +OutputSigType14=Digital +OutputCue15=[~UNUSED3~] +OutputSigType15=Digital +OutputCue16=[~UNUSED3~] +OutputSigType16=Digital +OutputCue17=[~UNUSED3~] +OutputSigType17=Digital +OutputCue18=[~UNUSED3~] +OutputSigType18=Digital +OutputCue19=[~UNUSED3~] +OutputSigType19=Digital +OutputCue20=[~UNUSED3~] +OutputSigType20=Digital +OutputCue21=[~UNUSED3~] +OutputSigType21=Digital +OutputCue22=[~UNUSED3~] +OutputSigType22=Digital +OutputCue23=[~UNUSED3~] +OutputSigType23=Digital +OutputCue24=[~UNUSED3~] +OutputSigType24=Digital +OutputCue25=[~UNUSED3~] +OutputSigType25=Digital +OutputCue26=[~UNUSED3~] +OutputSigType26=Digital +OutputCue27=[~UNUSED3~] +OutputSigType27=Digital +OutputCue28=[~UNUSED3~] +OutputSigType28=Digital +OutputCue29=[~UNUSED3~] +OutputSigType29=Digital +OutputCue30=[~UNUSED3~] +OutputSigType30=Digital +OutputCue31=[~UNUSED3~] +OutputSigType31=Digital +OutputCue32=[~UNUSED3~] +OutputSigType32=Digital +OutputCue33=[~UNUSED3~] +OutputSigType33=Digital +OutputCue34=[~UNUSED3~] +OutputSigType34=Digital +OutputCue35=[~UNUSED3~] +OutputSigType35=Digital +OutputCue36=[~UNUSED3~] +OutputSigType36=Digital +OutputCue37=[~UNUSED3~] +OutputSigType37=Digital +OutputCue38=[~UNUSED3~] +OutputSigType38=Digital +OutputCue39=[~UNUSED3~] +OutputSigType39=Digital +OutputCue40=[~UNUSED3~] +OutputSigType40=Digital +OutputCue41=[~UNUSED3~] +OutputSigType41=Digital +OutputCue42=[~UNUSED2~] +OutputSigType42=Digital|Analog|Serial|String +OutputCue2012=[~EndGroup~]Enable +OutputSigType2012=Digital +OutputCue2013=[~BeginGroup~]Visible +OutputSigType2013=Digital +OutputCue2014=[~UNUSED3~] +OutputSigType2014=Digital +OutputCue2015=[~UNUSED3~] +OutputSigType2015=Digital +OutputCue2016=[~UNUSED3~] +OutputSigType2016=Digital +OutputCue2017=[~UNUSED3~] +OutputSigType2017=Digital +OutputCue2018=[~UNUSED3~] +OutputSigType2018=Digital +OutputCue2019=[~UNUSED3~] +OutputSigType2019=Digital +OutputCue2020=[~UNUSED3~] +OutputSigType2020=Digital +OutputCue2021=[~UNUSED3~] +OutputSigType2021=Digital +OutputCue2022=[~UNUSED3~] +OutputSigType2022=Digital +OutputCue2023=[~UNUSED3~] +OutputSigType2023=Digital +OutputCue2024=[~UNUSED3~] +OutputSigType2024=Digital +OutputCue2025=[~UNUSED3~] +OutputSigType2025=Digital +OutputCue2026=[~UNUSED3~] +OutputSigType2026=Digital +OutputCue2027=[~UNUSED3~] +OutputSigType2027=Digital +OutputCue2028=[~UNUSED3~] +OutputSigType2028=Digital +OutputCue2029=[~UNUSED3~] +OutputSigType2029=Digital +OutputCue2030=[~UNUSED3~] +OutputSigType2030=Digital +OutputCue2031=[~UNUSED3~] +OutputSigType2031=Digital +OutputCue2032=[~UNUSED3~] +OutputSigType2032=Digital +OutputCue2033=[~UNUSED3~] +OutputSigType2033=Digital +OutputCue2034=[~UNUSED3~] +OutputSigType2034=Digital +OutputCue2035=[~UNUSED3~] +OutputSigType2035=Digital +OutputCue2036=[~UNUSED3~] +OutputSigType2036=Digital +OutputCue2037=[~UNUSED3~] +OutputSigType2037=Digital +OutputCue2038=[~UNUSED3~] +OutputSigType2038=Digital +OutputCue2039=[~UNUSED3~] +OutputSigType2039=Digital +OutputCue2040=[~UNUSED3~] +OutputSigType2040=Digital +OutputCue2041=[~UNUSED3~] +OutputSigType2041=Digital +OutputCue2042=[~UNUSED3~] +OutputSigType2042=Digital +OutputCue2043=[~UNUSED3~] +OutputSigType2043=Digital +OutputCue2044=[~UNUSED2~] +OutputSigType2044=Digital|Analog|Serial|String +OutputCue4014=[~EndGroup~]Visible +OutputSigType4014=Digital +OutputCue4015=[~BeginGroup~]Press +OutputSigType4015=Digital +OutputCue4016=press1 +OutputSigType4016=Digital +OutputCue4017=press2 +OutputSigType4017=Digital +OutputCue4018=press3 +OutputSigType4018=Digital +OutputCue4019=press4 +OutputSigType4019=Digital +OutputCue4020=press5 +OutputSigType4020=Digital +OutputCue4021=press6 +OutputSigType4021=Digital +OutputCue4022=press7 +OutputSigType4022=Digital +OutputCue4023=press8 +OutputSigType4023=Digital +OutputCue4024=press9 +OutputSigType4024=Digital +OutputCue4025=press10 +OutputSigType4025=Digital +OutputCue4026=press11 +OutputSigType4026=Digital +OutputCue4027=press12 +OutputSigType4027=Digital +OutputCue4028=press13 +OutputSigType4028=Digital +OutputCue4029=press14 +OutputSigType4029=Digital +OutputCue4030=press15 +OutputSigType4030=Digital +OutputCue4031=press16 +OutputSigType4031=Digital +OutputCue4032=press17 +OutputSigType4032=Digital +OutputCue4033=press18 +OutputSigType4033=Digital +OutputCue4034=press19 +OutputSigType4034=Digital +OutputCue4035=press20 +OutputSigType4035=Digital +OutputCue4036=press21 +OutputSigType4036=Digital +OutputCue4037=press22 +OutputSigType4037=Digital +OutputCue4038=press23 +OutputSigType4038=Digital +OutputCue4039=press24 +OutputSigType4039=Digital +OutputCue4040=press25 +OutputSigType4040=Digital +OutputCue4041=press26 +OutputSigType4041=Digital +OutputCue4042=press27 +OutputSigType4042=Digital +OutputCue4043=press28 +OutputSigType4043=Digital +OutputCue4044=press29 +OutputSigType4044=Digital +OutputCue4045=press30 +OutputSigType4045=Digital +OutputCue4046=press31 +OutputSigType4046=Digital +OutputCue4047=press32 +OutputSigType4047=Digital +OutputCue4048=press33 +OutputSigType4048=Digital +OutputCue4049=press34 +OutputSigType4049=Digital +OutputCue4050=press35 +OutputSigType4050=Digital +OutputCue4051=press36 +OutputSigType4051=Digital +OutputCue4052=press37 +OutputSigType4052=Digital +OutputCue4053=press38 +OutputSigType4053=Digital +OutputCue4054=press39 +OutputSigType4054=Digital +OutputCue4055=press40 +OutputSigType4055=Digital +OutputCue4056=press41 +OutputSigType4056=Digital +OutputCue4057=press42 +OutputSigType4057=Digital +OutputCue4058=press43 +OutputSigType4058=Digital +OutputCue4059=press44 +OutputSigType4059=Digital +OutputCue4060=press45 +OutputSigType4060=Digital +OutputCue4061=press46 +OutputSigType4061=Digital +OutputCue4062=press47 +OutputSigType4062=Digital +OutputCue4063=press48 +OutputSigType4063=Digital +OutputCue4064=press49 +OutputSigType4064=Digital +OutputCue4065=press50 +OutputSigType4065=Digital +OutputCue4066=press51 +OutputSigType4066=Digital +OutputCue4067=press52 +OutputSigType4067=Digital +OutputCue4068=press53 +OutputSigType4068=Digital +OutputCue4069=press54 +OutputSigType4069=Digital +OutputCue4070=press55 +OutputSigType4070=Digital +OutputCue4071=press56 +OutputSigType4071=Digital +OutputCue4072=press57 +OutputSigType4072=Digital +OutputCue4073=press58 +OutputSigType4073=Digital +OutputCue4074=press59 +OutputSigType4074=Digital +OutputCue4075=press60 +OutputSigType4075=Digital +OutputCue4076=press61 +OutputSigType4076=Digital +OutputCue4077=press62 +OutputSigType4077=Digital +OutputCue4078=press63 +OutputSigType4078=Digital +OutputCue4079=press64 +OutputSigType4079=Digital +OutputCue4080=press65 +OutputSigType4080=Digital +OutputCue4081=press66 +OutputSigType4081=Digital +OutputCue4082=press67 +OutputSigType4082=Digital +OutputCue4083=press68 +OutputSigType4083=Digital +OutputCue4084=press69 +OutputSigType4084=Digital +OutputCue4085=press70 +OutputSigType4085=Digital +OutputCue4086=press71 +OutputSigType4086=Digital +OutputCue4087=press72 +OutputSigType4087=Digital +OutputCue4088=press73 +OutputSigType4088=Digital +OutputCue4089=press74 +OutputSigType4089=Digital +OutputCue4090=press75 +OutputSigType4090=Digital +OutputCue4091=press76 +OutputSigType4091=Digital +OutputCue4092=press77 +OutputSigType4092=Digital +OutputCue4093=press78 +OutputSigType4093=Digital +OutputCue4094=press79 +OutputSigType4094=Digital +OutputCue4095=press80 +OutputSigType4095=Digital +OutputCue4096=press81 +OutputSigType4096=Digital +OutputCue4097=press82 +OutputSigType4097=Digital +OutputCue4098=press83 +OutputSigType4098=Digital +OutputCue4099=press84 +OutputSigType4099=Digital +OutputCue4100=press85 +OutputSigType4100=Digital +OutputCue4101=press86 +OutputSigType4101=Digital +OutputCue4102=press87 +OutputSigType4102=Digital +OutputCue4103=press88 +OutputSigType4103=Digital +OutputCue4104=press89 +OutputSigType4104=Digital +OutputCue4105=press90 +OutputSigType4105=Digital +OutputCue4106=[~EndGroup~]Press +OutputSigType4106=Digital +InputList2Cue1=[~UNUSED3~] +InputList2SigType1=Analog +InputList2Cue2=Scroll To Item +InputList2SigType2=Analog +InputList2Cue3=Set Number of Items +InputList2SigType3=Analog +OutputList2Cue1=Item Clicked +OutputList2SigType1=Analog +OutputList2Cue2=[~UNUSED3~] +OutputList2SigType2=Analog +OutputList2Cue3=[~UNUSED3~] +OutputList2SigType3=Analog +InputList3Cue1=[~UNUSED2~] +InputList3SigType1=Serial +InputList3Cue2=[~UNUSED2~] +InputList3SigType2=Serial +InputList3Cue3=[~UNUSED2~] +InputList3SigType3=Serial +InputList3Cue4=[~UNUSED2~] +InputList3SigType4=Serial +InputList3Cue5=[~UNUSED2~] +InputList3SigType5=Serial +InputList3Cue6=[~UNUSED2~] +InputList3SigType6=Serial +InputList3Cue7=[~UNUSED2~] +InputList3SigType7=Serial +InputList3Cue8=[~UNUSED2~] +InputList3SigType8=Serial +InputList3Cue9=[~UNUSED2~] +InputList3SigType9=Serial +InputList3Cue10=[~UNUSED2~] +InputList3SigType10=Serial +InputList3Cue11=[~BeginGroup~]text-o +InputList3SigType11=Serial +InputList3Cue12=text-o1 +InputList3SigType12=Serial +InputList3Cue13=text-o2 +InputList3SigType13=Serial +InputList3Cue14=text-o3 +InputList3SigType14=Serial +InputList3Cue15=text-o4 +InputList3SigType15=Serial +InputList3Cue16=text-o5 +InputList3SigType16=Serial +InputList3Cue17=text-o6 +InputList3SigType17=Serial +InputList3Cue18=text-o7 +InputList3SigType18=Serial +InputList3Cue19=text-o8 +InputList3SigType19=Serial +InputList3Cue20=text-o9 +InputList3SigType20=Serial +InputList3Cue21=text-o10 +InputList3SigType21=Serial +InputList3Cue22=text-o11 +InputList3SigType22=Serial +InputList3Cue23=text-o12 +InputList3SigType23=Serial +InputList3Cue24=text-o13 +InputList3SigType24=Serial +InputList3Cue25=text-o14 +InputList3SigType25=Serial +InputList3Cue26=text-o15 +InputList3SigType26=Serial +InputList3Cue27=text-o16 +InputList3SigType27=Serial +InputList3Cue28=text-o17 +InputList3SigType28=Serial +InputList3Cue29=text-o18 +InputList3SigType29=Serial +InputList3Cue30=text-o19 +InputList3SigType30=Serial +InputList3Cue31=text-o20 +InputList3SigType31=Serial +InputList3Cue32=text-o21 +InputList3SigType32=Serial +InputList3Cue33=text-o22 +InputList3SigType33=Serial +InputList3Cue34=text-o23 +InputList3SigType34=Serial +InputList3Cue35=text-o24 +InputList3SigType35=Serial +InputList3Cue36=text-o25 +InputList3SigType36=Serial +InputList3Cue37=text-o26 +InputList3SigType37=Serial +InputList3Cue38=text-o27 +InputList3SigType38=Serial +InputList3Cue39=text-o28 +InputList3SigType39=Serial +InputList3Cue40=text-o29 +InputList3SigType40=Serial +InputList3Cue41=text-o30 +InputList3SigType41=Serial +InputList3Cue42=text-o31 +InputList3SigType42=Serial +InputList3Cue43=text-o32 +InputList3SigType43=Serial +InputList3Cue44=text-o33 +InputList3SigType44=Serial +InputList3Cue45=text-o34 +InputList3SigType45=Serial +InputList3Cue46=text-o35 +InputList3SigType46=Serial +InputList3Cue47=text-o36 +InputList3SigType47=Serial +InputList3Cue48=text-o37 +InputList3SigType48=Serial +InputList3Cue49=text-o38 +InputList3SigType49=Serial +InputList3Cue50=text-o39 +InputList3SigType50=Serial +InputList3Cue51=text-o40 +InputList3SigType51=Serial +InputList3Cue52=text-o41 +InputList3SigType52=Serial +InputList3Cue53=text-o42 +InputList3SigType53=Serial +InputList3Cue54=text-o43 +InputList3SigType54=Serial +InputList3Cue55=text-o44 +InputList3SigType55=Serial +InputList3Cue56=text-o45 +InputList3SigType56=Serial +InputList3Cue57=text-o46 +InputList3SigType57=Serial +InputList3Cue58=text-o47 +InputList3SigType58=Serial +InputList3Cue59=text-o48 +InputList3SigType59=Serial +InputList3Cue60=text-o49 +InputList3SigType60=Serial +InputList3Cue61=text-o50 +InputList3SigType61=Serial +InputList3Cue62=text-o51 +InputList3SigType62=Serial +InputList3Cue63=text-o52 +InputList3SigType63=Serial +InputList3Cue64=text-o53 +InputList3SigType64=Serial +InputList3Cue65=text-o54 +InputList3SigType65=Serial +InputList3Cue66=text-o55 +InputList3SigType66=Serial +InputList3Cue67=text-o56 +InputList3SigType67=Serial +InputList3Cue68=text-o57 +InputList3SigType68=Serial +InputList3Cue69=text-o58 +InputList3SigType69=Serial +InputList3Cue70=text-o59 +InputList3SigType70=Serial +InputList3Cue71=text-o60 +InputList3SigType71=Serial +InputList3Cue72=text-o61 +InputList3SigType72=Serial +InputList3Cue73=text-o62 +InputList3SigType73=Serial +InputList3Cue74=text-o63 +InputList3SigType74=Serial +InputList3Cue75=text-o64 +InputList3SigType75=Serial +InputList3Cue76=text-o65 +InputList3SigType76=Serial +InputList3Cue77=text-o66 +InputList3SigType77=Serial +InputList3Cue78=text-o67 +InputList3SigType78=Serial +InputList3Cue79=text-o68 +InputList3SigType79=Serial +InputList3Cue80=text-o69 +InputList3SigType80=Serial +InputList3Cue81=text-o70 +InputList3SigType81=Serial +InputList3Cue82=text-o71 +InputList3SigType82=Serial +InputList3Cue83=text-o72 +InputList3SigType83=Serial +InputList3Cue84=text-o73 +InputList3SigType84=Serial +InputList3Cue85=text-o74 +InputList3SigType85=Serial +InputList3Cue86=text-o75 +InputList3SigType86=Serial +InputList3Cue87=text-o76 +InputList3SigType87=Serial +InputList3Cue88=text-o77 +InputList3SigType88=Serial +InputList3Cue89=text-o78 +InputList3SigType89=Serial +InputList3Cue90=text-o79 +InputList3SigType90=Serial +InputList3Cue91=text-o80 +InputList3SigType91=Serial +InputList3Cue92=text-o81 +InputList3SigType92=Serial +InputList3Cue93=text-o82 +InputList3SigType93=Serial +InputList3Cue94=text-o83 +InputList3SigType94=Serial +InputList3Cue95=text-o84 +InputList3SigType95=Serial +InputList3Cue96=text-o85 +InputList3SigType96=Serial +InputList3Cue97=text-o86 +InputList3SigType97=Serial +InputList3Cue98=text-o87 +InputList3SigType98=Serial +InputList3Cue99=text-o88 +InputList3SigType99=Serial +InputList3Cue100=text-o89 +InputList3SigType100=Serial +InputList3Cue101=text-o90 +InputList3SigType101=Serial +InputList3Cue102=text-o91 +InputList3SigType102=Serial +InputList3Cue103=text-o92 +InputList3SigType103=Serial +InputList3Cue104=text-o93 +InputList3SigType104=Serial +InputList3Cue105=text-o94 +InputList3SigType105=Serial +InputList3Cue106=text-o95 +InputList3SigType106=Serial +InputList3Cue107=text-o96 +InputList3SigType107=Serial +InputList3Cue108=text-o97 +InputList3SigType108=Serial +InputList3Cue109=text-o98 +InputList3SigType109=Serial +InputList3Cue110=text-o99 +InputList3SigType110=Serial +InputList3Cue111=text-o100 +InputList3SigType111=Serial +InputList3Cue112=text-o101 +InputList3SigType112=Serial +InputList3Cue113=text-o102 +InputList3SigType113=Serial +InputList3Cue114=text-o103 +InputList3SigType114=Serial +InputList3Cue115=text-o104 +InputList3SigType115=Serial +InputList3Cue116=text-o105 +InputList3SigType116=Serial +InputList3Cue117=text-o106 +InputList3SigType117=Serial +InputList3Cue118=text-o107 +InputList3SigType118=Serial +InputList3Cue119=text-o108 +InputList3SigType119=Serial +InputList3Cue120=text-o109 +InputList3SigType120=Serial +InputList3Cue121=text-o110 +InputList3SigType121=Serial +InputList3Cue122=text-o111 +InputList3SigType122=Serial +InputList3Cue123=text-o112 +InputList3SigType123=Serial +InputList3Cue124=text-o113 +InputList3SigType124=Serial +InputList3Cue125=text-o114 +InputList3SigType125=Serial +InputList3Cue126=text-o115 +InputList3SigType126=Serial +InputList3Cue127=text-o116 +InputList3SigType127=Serial +InputList3Cue128=text-o117 +InputList3SigType128=Serial +InputList3Cue129=text-o118 +InputList3SigType129=Serial +InputList3Cue130=text-o119 +InputList3SigType130=Serial +InputList3Cue131=text-o120 +InputList3SigType131=Serial +InputList3Cue132=[~EndGroup~]text-o +InputList3SigType132=Serial +OutputList3Cue1=[~UNUSED2~] +OutputList3SigType1=Serial +OutputList3Cue2=[~UNUSED2~] +OutputList3SigType2=Serial +OutputList3Cue3=[~UNUSED2~] +OutputList3SigType3=Serial +OutputList3Cue4=[~UNUSED2~] +OutputList3SigType4=Serial +OutputList3Cue5=[~UNUSED2~] +OutputList3SigType5=Serial +OutputList3Cue6=[~UNUSED2~] +OutputList3SigType6=Serial +OutputList3Cue7=[~UNUSED2~] +OutputList3SigType7=Serial +OutputList3Cue8=[~UNUSED2~] +OutputList3SigType8=Serial +OutputList3Cue9=[~UNUSED2~] +OutputList3SigType9=Serial +OutputList3Cue10=[~UNUSED2~] +OutputList3SigType10=Serial +OutputList3Cue11=[~BeginGroup~]text-i +OutputList3SigType11=Serial +OutputList3Cue12=text-i1 +OutputList3SigType12=Serial +OutputList3Cue13=text-i2 +OutputList3SigType13=Serial +OutputList3Cue14=text-i3 +OutputList3SigType14=Serial +OutputList3Cue15=text-i4 +OutputList3SigType15=Serial +OutputList3Cue16=text-i5 +OutputList3SigType16=Serial +OutputList3Cue17=text-i6 +OutputList3SigType17=Serial +OutputList3Cue18=text-i7 +OutputList3SigType18=Serial +OutputList3Cue19=text-i8 +OutputList3SigType19=Serial +OutputList3Cue20=text-i9 +OutputList3SigType20=Serial +OutputList3Cue21=text-i10 +OutputList3SigType21=Serial +OutputList3Cue22=text-i11 +OutputList3SigType22=Serial +OutputList3Cue23=text-i12 +OutputList3SigType23=Serial +OutputList3Cue24=text-i13 +OutputList3SigType24=Serial +OutputList3Cue25=text-i14 +OutputList3SigType25=Serial +OutputList3Cue26=text-i15 +OutputList3SigType26=Serial +OutputList3Cue27=text-i16 +OutputList3SigType27=Serial +OutputList3Cue28=text-i17 +OutputList3SigType28=Serial +OutputList3Cue29=text-i18 +OutputList3SigType29=Serial +OutputList3Cue30=text-i19 +OutputList3SigType30=Serial +OutputList3Cue31=text-i20 +OutputList3SigType31=Serial +OutputList3Cue32=text-i21 +OutputList3SigType32=Serial +OutputList3Cue33=text-i22 +OutputList3SigType33=Serial +OutputList3Cue34=text-i23 +OutputList3SigType34=Serial +OutputList3Cue35=text-i24 +OutputList3SigType35=Serial +OutputList3Cue36=text-i25 +OutputList3SigType36=Serial +OutputList3Cue37=text-i26 +OutputList3SigType37=Serial +OutputList3Cue38=text-i27 +OutputList3SigType38=Serial +OutputList3Cue39=text-i28 +OutputList3SigType39=Serial +OutputList3Cue40=text-i29 +OutputList3SigType40=Serial +OutputList3Cue41=text-i30 +OutputList3SigType41=Serial +OutputList3Cue42=text-i31 +OutputList3SigType42=Serial +OutputList3Cue43=text-i32 +OutputList3SigType43=Serial +OutputList3Cue44=text-i33 +OutputList3SigType44=Serial +OutputList3Cue45=text-i34 +OutputList3SigType45=Serial +OutputList3Cue46=text-i35 +OutputList3SigType46=Serial +OutputList3Cue47=text-i36 +OutputList3SigType47=Serial +OutputList3Cue48=text-i37 +OutputList3SigType48=Serial +OutputList3Cue49=text-i38 +OutputList3SigType49=Serial +OutputList3Cue50=text-i39 +OutputList3SigType50=Serial +OutputList3Cue51=text-i40 +OutputList3SigType51=Serial +OutputList3Cue52=text-i41 +OutputList3SigType52=Serial +OutputList3Cue53=text-i42 +OutputList3SigType53=Serial +OutputList3Cue54=text-i43 +OutputList3SigType54=Serial +OutputList3Cue55=text-i44 +OutputList3SigType55=Serial +OutputList3Cue56=text-i45 +OutputList3SigType56=Serial +OutputList3Cue57=text-i46 +OutputList3SigType57=Serial +OutputList3Cue58=text-i47 +OutputList3SigType58=Serial +OutputList3Cue59=text-i48 +OutputList3SigType59=Serial +OutputList3Cue60=text-i49 +OutputList3SigType60=Serial +OutputList3Cue61=text-i50 +OutputList3SigType61=Serial +OutputList3Cue62=text-i51 +OutputList3SigType62=Serial +OutputList3Cue63=text-i52 +OutputList3SigType63=Serial +OutputList3Cue64=text-i53 +OutputList3SigType64=Serial +OutputList3Cue65=text-i54 +OutputList3SigType65=Serial +OutputList3Cue66=text-i55 +OutputList3SigType66=Serial +OutputList3Cue67=text-i56 +OutputList3SigType67=Serial +OutputList3Cue68=text-i57 +OutputList3SigType68=Serial +OutputList3Cue69=text-i58 +OutputList3SigType69=Serial +OutputList3Cue70=text-i59 +OutputList3SigType70=Serial +OutputList3Cue71=text-i60 +OutputList3SigType71=Serial +OutputList3Cue72=text-i61 +OutputList3SigType72=Serial +OutputList3Cue73=text-i62 +OutputList3SigType73=Serial +OutputList3Cue74=text-i63 +OutputList3SigType74=Serial +OutputList3Cue75=text-i64 +OutputList3SigType75=Serial +OutputList3Cue76=text-i65 +OutputList3SigType76=Serial +OutputList3Cue77=text-i66 +OutputList3SigType77=Serial +OutputList3Cue78=text-i67 +OutputList3SigType78=Serial +OutputList3Cue79=text-i68 +OutputList3SigType79=Serial +OutputList3Cue80=text-i69 +OutputList3SigType80=Serial +OutputList3Cue81=text-i70 +OutputList3SigType81=Serial +OutputList3Cue82=text-i71 +OutputList3SigType82=Serial +OutputList3Cue83=text-i72 +OutputList3SigType83=Serial +OutputList3Cue84=text-i73 +OutputList3SigType84=Serial +OutputList3Cue85=text-i74 +OutputList3SigType85=Serial +OutputList3Cue86=text-i75 +OutputList3SigType86=Serial +OutputList3Cue87=text-i76 +OutputList3SigType87=Serial +OutputList3Cue88=text-i77 +OutputList3SigType88=Serial +OutputList3Cue89=text-i78 +OutputList3SigType89=Serial +OutputList3Cue90=text-i79 +OutputList3SigType90=Serial +OutputList3Cue91=text-i80 +OutputList3SigType91=Serial +OutputList3Cue92=text-i81 +OutputList3SigType92=Serial +OutputList3Cue93=text-i82 +OutputList3SigType93=Serial +OutputList3Cue94=text-i83 +OutputList3SigType94=Serial +OutputList3Cue95=text-i84 +OutputList3SigType95=Serial +OutputList3Cue96=text-i85 +OutputList3SigType96=Serial +OutputList3Cue97=text-i86 +OutputList3SigType97=Serial +OutputList3Cue98=text-i87 +OutputList3SigType98=Serial +OutputList3Cue99=text-i88 +OutputList3SigType99=Serial +OutputList3Cue100=text-i89 +OutputList3SigType100=Serial +OutputList3Cue101=text-i90 +OutputList3SigType101=Serial +OutputList3Cue102=text-i91 +OutputList3SigType102=Serial +OutputList3Cue103=text-i92 +OutputList3SigType103=Serial +OutputList3Cue104=text-i93 +OutputList3SigType104=Serial +OutputList3Cue105=text-i94 +OutputList3SigType105=Serial +OutputList3Cue106=text-i95 +OutputList3SigType106=Serial +OutputList3Cue107=text-i96 +OutputList3SigType107=Serial +OutputList3Cue108=text-i97 +OutputList3SigType108=Serial +OutputList3Cue109=text-i98 +OutputList3SigType109=Serial +OutputList3Cue110=text-i99 +OutputList3SigType110=Serial +OutputList3Cue111=text-i100 +OutputList3SigType111=Serial +OutputList3Cue112=text-i101 +OutputList3SigType112=Serial +OutputList3Cue113=text-i102 +OutputList3SigType113=Serial +OutputList3Cue114=text-i103 +OutputList3SigType114=Serial +OutputList3Cue115=text-i104 +OutputList3SigType115=Serial +OutputList3Cue116=text-i105 +OutputList3SigType116=Serial +OutputList3Cue117=text-i106 +OutputList3SigType117=Serial +OutputList3Cue118=text-i107 +OutputList3SigType118=Serial +OutputList3Cue119=text-i108 +OutputList3SigType119=Serial +OutputList3Cue120=text-i109 +OutputList3SigType120=Serial +OutputList3Cue121=text-i110 +OutputList3SigType121=Serial +OutputList3Cue122=text-i111 +OutputList3SigType122=Serial +OutputList3Cue123=text-i112 +OutputList3SigType123=Serial +OutputList3Cue124=text-i113 +OutputList3SigType124=Serial +OutputList3Cue125=text-i114 +OutputList3SigType125=Serial +OutputList3Cue126=text-i115 +OutputList3SigType126=Serial +OutputList3Cue127=text-i116 +OutputList3SigType127=Serial +OutputList3Cue128=text-i117 +OutputList3SigType128=Serial +OutputList3Cue129=text-i118 +OutputList3SigType129=Serial +OutputList3Cue130=text-i119 +OutputList3SigType130=Serial +OutputList3Cue131=text-i120 +OutputList3SigType131=Serial +OutputList3Cue132=[~EndGroup~]text-i +OutputList3SigType132=Serial +ParamCue1=SmartObjectId +ParamSigType1=Constant +MPp=1 +Pp1=7 +CedH=7 +SmartObjId=1806d +] +; Parameter Properties for Smart Object ID +[ +ObjTp=Dp +H=7 +Tp=1 +HD=TRUE +DV=1806d +NF=1 +DNF=1 +EncFmt=0 +DVLF=1 +Sgn=0 +] +; Smart Objects Definition section +[ +ObjTp=CED +H=7 +Name=PepperDash Essentials TSW1050_[B.AV] Source Ctrl-CATV-Basic_Channel Preset List Basic.ced +;Cedver is the version of the Smart Graphics control, not the CED file format. +;If the control definition changes, increment this. +CedVer=1 +] +;================================================================================ +[ +ObjTp=Symbol +Name=PepperDash Essentials TSW1050_[A.Global] Footer SRL_Modes Bottom Bar SRL.ced +Hint=Modes Bottom Bar SRL (Smart Object ID=15021) +Code=8 +SGControlType=Subpage Reference List Horizontal +SGControlName=Modes Bottom Bar SRL +GUID=812FF0C4-486D-4ABC-90FA-405F19104323 +SmplCName=PepperDash Essentials TSW1050_[A.Global] Footer SRL_Modes Bottom Bar SRL.ced +SMWRev=4.02.20 +Expand=expand_random +HelpID=10124 +Render=8 +;Define the number of inputs, outputs and parameters +MinVariableInputs=4031 +MaxVariableInputs=4031 +MinVariableOutputs=4031 +MaxVariableOutputs=4031 +NumFixedParams=1 +MinVariableInputsList2=27 +MaxVariableInputsList2=27 +MinVariableOutputsList2=27 +MaxVariableOutputsList2=27 +MinVariableInputsList3=27 +MaxVariableInputsList3=27 +MinVariableOutputsList3=27 +MaxVariableOutputsList3=27 +InputSigType1=Digital +OutputSigType1=Digital +InputList2SigType1=Analog +OutputList2SigType1=Analog +InputList3SigType1=Serial +OutputList3SigType1=Serial + +;Define the cues, and signal types each input, output and parameter. +InputCue1=[~UNUSED3~] +InputSigType1=Digital +InputCue2=[~UNUSED2~] +InputSigType2=Digital +InputCue3=[~UNUSED2~] +InputSigType3=Digital +InputCue4=[~UNUSED2~] +InputSigType4=Digital +InputCue5=[~UNUSED2~] +InputSigType5=Digital +InputCue6=[~UNUSED2~] +InputSigType6=Digital +InputCue7=[~UNUSED2~] +InputSigType7=Digital +InputCue8=[~UNUSED2~] +InputSigType8=Digital +InputCue9=[~UNUSED2~] +InputSigType9=Digital +InputCue10=[~UNUSED2~] +InputSigType10=Digital +InputCue11=[~BeginGroup~]Enable +InputSigType11=Digital +InputCue12=Item 1 Enable +InputSigType12=Digital +InputCue13=Item 2 Enable +InputSigType13=Digital +InputCue14=Item 3 Enable +InputSigType14=Digital +InputCue15=Item 4 Enable +InputSigType15=Digital +InputCue16=Item 5 Enable +InputSigType16=Digital +InputCue17=[~UNUSED2~] +InputSigType17=Digital|Analog|Serial|String +InputCue2012=[~EndGroup~]Enable +InputSigType2012=Digital +InputCue2013=[~BeginGroup~]Visible +InputSigType2013=Digital +InputCue2014=Item 1 Visible +InputSigType2014=Digital +InputCue2015=Item 2 Visible +InputSigType2015=Digital +InputCue2016=Item 3 Visible +InputSigType2016=Digital +InputCue2017=Item 4 Visible +InputSigType2017=Digital +InputCue2018=Item 5 Visible +InputSigType2018=Digital +InputCue2019=[~UNUSED2~] +InputSigType2019=Digital|Analog|Serial|String +InputCue4014=[~EndGroup~]Visible +InputSigType4014=Digital +InputCue4015=[~BeginGroup~]fb +InputSigType4015=Digital +InputCue4016=fb1 +InputSigType4016=Digital +InputCue4017=fb2 +InputSigType4017=Digital +InputCue4018=fb3 +InputSigType4018=Digital +InputCue4019=fb4 +InputSigType4019=Digital +InputCue4020=fb5 +InputSigType4020=Digital +InputCue4021=fb6 +InputSigType4021=Digital +InputCue4022=fb7 +InputSigType4022=Digital +InputCue4023=fb8 +InputSigType4023=Digital +InputCue4024=fb9 +InputSigType4024=Digital +InputCue4025=fb10 +InputSigType4025=Digital +InputCue4026=fb11 +InputSigType4026=Digital +InputCue4027=fb12 +InputSigType4027=Digital +InputCue4028=fb13 +InputSigType4028=Digital +InputCue4029=fb14 +InputSigType4029=Digital +InputCue4030=fb15 +InputSigType4030=Digital +InputCue4031=[~EndGroup~]fb +InputSigType4031=Digital +OutputCue1=Is Moving +OutputSigType1=Digital +OutputCue2=[~UNUSED2~] +OutputSigType2=Digital +OutputCue3=[~UNUSED2~] +OutputSigType3=Digital +OutputCue4=[~UNUSED2~] +OutputSigType4=Digital +OutputCue5=[~UNUSED2~] +OutputSigType5=Digital +OutputCue6=[~UNUSED2~] +OutputSigType6=Digital +OutputCue7=[~UNUSED2~] +OutputSigType7=Digital +OutputCue8=[~UNUSED2~] +OutputSigType8=Digital +OutputCue9=[~UNUSED2~] +OutputSigType9=Digital +OutputCue10=[~UNUSED2~] +OutputSigType10=Digital +OutputCue11=[~BeginGroup~]Enable +OutputSigType11=Digital +OutputCue12=[~UNUSED3~] +OutputSigType12=Digital +OutputCue13=[~UNUSED3~] +OutputSigType13=Digital +OutputCue14=[~UNUSED3~] +OutputSigType14=Digital +OutputCue15=[~UNUSED3~] +OutputSigType15=Digital +OutputCue16=[~UNUSED3~] +OutputSigType16=Digital +OutputCue17=[~UNUSED2~] +OutputSigType17=Digital|Analog|Serial|String +OutputCue2012=[~EndGroup~]Enable +OutputSigType2012=Digital +OutputCue2013=[~BeginGroup~]Visible +OutputSigType2013=Digital +OutputCue2014=[~UNUSED3~] +OutputSigType2014=Digital +OutputCue2015=[~UNUSED3~] +OutputSigType2015=Digital +OutputCue2016=[~UNUSED3~] +OutputSigType2016=Digital +OutputCue2017=[~UNUSED3~] +OutputSigType2017=Digital +OutputCue2018=[~UNUSED3~] +OutputSigType2018=Digital +OutputCue2019=[~UNUSED2~] +OutputSigType2019=Digital|Analog|Serial|String +OutputCue4014=[~EndGroup~]Visible +OutputSigType4014=Digital +OutputCue4015=[~BeginGroup~]Press +OutputSigType4015=Digital +OutputCue4016=press1 +OutputSigType4016=Digital +OutputCue4017=press2 +OutputSigType4017=Digital +OutputCue4018=press3 +OutputSigType4018=Digital +OutputCue4019=press4 +OutputSigType4019=Digital +OutputCue4020=press5 +OutputSigType4020=Digital +OutputCue4021=press6 +OutputSigType4021=Digital +OutputCue4022=press7 +OutputSigType4022=Digital +OutputCue4023=press8 +OutputSigType4023=Digital +OutputCue4024=press9 +OutputSigType4024=Digital +OutputCue4025=press10 +OutputSigType4025=Digital +OutputCue4026=press11 +OutputSigType4026=Digital +OutputCue4027=press12 +OutputSigType4027=Digital +OutputCue4028=press13 +OutputSigType4028=Digital +OutputCue4029=press14 +OutputSigType4029=Digital +OutputCue4030=press15 +OutputSigType4030=Digital +OutputCue4031=[~EndGroup~]Press +OutputSigType4031=Digital +InputList2Cue1=[~UNUSED3~] +InputList2SigType1=Analog +InputList2Cue2=Scroll To Item +InputList2SigType2=Analog +InputList2Cue3=Set Number of Items +InputList2SigType3=Analog +InputList2Cue4=[~UNUSED2~] +InputList2SigType4=Analog +InputList2Cue5=[~UNUSED2~] +InputList2SigType5=Analog +InputList2Cue6=[~UNUSED2~] +InputList2SigType6=Analog +InputList2Cue7=[~UNUSED2~] +InputList2SigType7=Analog +InputList2Cue8=[~UNUSED2~] +InputList2SigType8=Analog +InputList2Cue9=[~UNUSED2~] +InputList2SigType9=Analog +InputList2Cue10=[~UNUSED2~] +InputList2SigType10=Analog +InputList2Cue11=[~BeginGroup~]an_fb +InputList2SigType11=Analog +InputList2Cue12=an_fb1 +InputList2SigType12=Analog +InputList2Cue13=an_fb2 +InputList2SigType13=Analog +InputList2Cue14=an_fb3 +InputList2SigType14=Analog +InputList2Cue15=an_fb4 +InputList2SigType15=Analog +InputList2Cue16=an_fb5 +InputList2SigType16=Analog +InputList2Cue17=an_fb6 +InputList2SigType17=Analog +InputList2Cue18=an_fb7 +InputList2SigType18=Analog +InputList2Cue19=an_fb8 +InputList2SigType19=Analog +InputList2Cue20=an_fb9 +InputList2SigType20=Analog +InputList2Cue21=an_fb10 +InputList2SigType21=Analog +InputList2Cue22=an_fb11 +InputList2SigType22=Analog +InputList2Cue23=an_fb12 +InputList2SigType23=Analog +InputList2Cue24=an_fb13 +InputList2SigType24=Analog +InputList2Cue25=an_fb14 +InputList2SigType25=Analog +InputList2Cue26=an_fb15 +InputList2SigType26=Analog +InputList2Cue27=[~EndGroup~]an_fb +InputList2SigType27=Analog +OutputList2Cue1=Item Clicked +OutputList2SigType1=Analog +OutputList2Cue2=[~UNUSED3~] +OutputList2SigType2=Analog +OutputList2Cue3=[~UNUSED3~] +OutputList2SigType3=Analog +OutputList2Cue4=[~UNUSED2~] +OutputList2SigType4=Analog +OutputList2Cue5=[~UNUSED2~] +OutputList2SigType5=Analog +OutputList2Cue6=[~UNUSED2~] +OutputList2SigType6=Analog +OutputList2Cue7=[~UNUSED2~] +OutputList2SigType7=Analog +OutputList2Cue8=[~UNUSED2~] +OutputList2SigType8=Analog +OutputList2Cue9=[~UNUSED2~] +OutputList2SigType9=Analog +OutputList2Cue10=[~UNUSED2~] +OutputList2SigType10=Analog +OutputList2Cue11=[~BeginGroup~]an_act +OutputList2SigType11=Analog +OutputList2Cue12=an_act1 +OutputList2SigType12=Analog +OutputList2Cue13=an_act2 +OutputList2SigType13=Analog +OutputList2Cue14=an_act3 +OutputList2SigType14=Analog +OutputList2Cue15=an_act4 +OutputList2SigType15=Analog +OutputList2Cue16=an_act5 +OutputList2SigType16=Analog +OutputList2Cue17=an_act6 +OutputList2SigType17=Analog +OutputList2Cue18=an_act7 +OutputList2SigType18=Analog +OutputList2Cue19=an_act8 +OutputList2SigType19=Analog +OutputList2Cue20=an_act9 +OutputList2SigType20=Analog +OutputList2Cue21=an_act10 +OutputList2SigType21=Analog +OutputList2Cue22=an_act11 +OutputList2SigType22=Analog +OutputList2Cue23=an_act12 +OutputList2SigType23=Analog +OutputList2Cue24=an_act13 +OutputList2SigType24=Analog +OutputList2Cue25=an_act14 +OutputList2SigType25=Analog +OutputList2Cue26=an_act15 +OutputList2SigType26=Analog +OutputList2Cue27=[~EndGroup~]an_act +OutputList2SigType27=Analog +InputList3Cue1=[~UNUSED2~] +InputList3SigType1=Serial +InputList3Cue2=[~UNUSED2~] +InputList3SigType2=Serial +InputList3Cue3=[~UNUSED2~] +InputList3SigType3=Serial +InputList3Cue4=[~UNUSED2~] +InputList3SigType4=Serial +InputList3Cue5=[~UNUSED2~] +InputList3SigType5=Serial +InputList3Cue6=[~UNUSED2~] +InputList3SigType6=Serial +InputList3Cue7=[~UNUSED2~] +InputList3SigType7=Serial +InputList3Cue8=[~UNUSED2~] +InputList3SigType8=Serial +InputList3Cue9=[~UNUSED2~] +InputList3SigType9=Serial +InputList3Cue10=[~UNUSED2~] +InputList3SigType10=Serial +InputList3Cue11=[~BeginGroup~]text-o +InputList3SigType11=Serial +InputList3Cue12=text-o1 +InputList3SigType12=Serial +InputList3Cue13=text-o2 +InputList3SigType13=Serial +InputList3Cue14=text-o3 +InputList3SigType14=Serial +InputList3Cue15=text-o4 +InputList3SigType15=Serial +InputList3Cue16=text-o5 +InputList3SigType16=Serial +InputList3Cue17=text-o6 +InputList3SigType17=Serial +InputList3Cue18=text-o7 +InputList3SigType18=Serial +InputList3Cue19=text-o8 +InputList3SigType19=Serial +InputList3Cue20=text-o9 +InputList3SigType20=Serial +InputList3Cue21=text-o10 +InputList3SigType21=Serial +InputList3Cue22=text-o11 +InputList3SigType22=Serial +InputList3Cue23=text-o12 +InputList3SigType23=Serial +InputList3Cue24=text-o13 +InputList3SigType24=Serial +InputList3Cue25=text-o14 +InputList3SigType25=Serial +InputList3Cue26=text-o15 +InputList3SigType26=Serial +InputList3Cue27=[~EndGroup~]text-o +InputList3SigType27=Serial +OutputList3Cue1=[~UNUSED2~] +OutputList3SigType1=Serial +OutputList3Cue2=[~UNUSED2~] +OutputList3SigType2=Serial +OutputList3Cue3=[~UNUSED2~] +OutputList3SigType3=Serial +OutputList3Cue4=[~UNUSED2~] +OutputList3SigType4=Serial +OutputList3Cue5=[~UNUSED2~] +OutputList3SigType5=Serial +OutputList3Cue6=[~UNUSED2~] +OutputList3SigType6=Serial +OutputList3Cue7=[~UNUSED2~] +OutputList3SigType7=Serial +OutputList3Cue8=[~UNUSED2~] +OutputList3SigType8=Serial +OutputList3Cue9=[~UNUSED2~] +OutputList3SigType9=Serial +OutputList3Cue10=[~UNUSED2~] +OutputList3SigType10=Serial +OutputList3Cue11=[~BeginGroup~]text-i +OutputList3SigType11=Serial +OutputList3Cue12=text-i1 +OutputList3SigType12=Serial +OutputList3Cue13=text-i2 +OutputList3SigType13=Serial +OutputList3Cue14=text-i3 +OutputList3SigType14=Serial +OutputList3Cue15=text-i4 +OutputList3SigType15=Serial +OutputList3Cue16=text-i5 +OutputList3SigType16=Serial +OutputList3Cue17=text-i6 +OutputList3SigType17=Serial +OutputList3Cue18=text-i7 +OutputList3SigType18=Serial +OutputList3Cue19=text-i8 +OutputList3SigType19=Serial +OutputList3Cue20=text-i9 +OutputList3SigType20=Serial +OutputList3Cue21=text-i10 +OutputList3SigType21=Serial +OutputList3Cue22=text-i11 +OutputList3SigType22=Serial +OutputList3Cue23=text-i12 +OutputList3SigType23=Serial +OutputList3Cue24=text-i13 +OutputList3SigType24=Serial +OutputList3Cue25=text-i14 +OutputList3SigType25=Serial +OutputList3Cue26=text-i15 +OutputList3SigType26=Serial +OutputList3Cue27=[~EndGroup~]text-i +OutputList3SigType27=Serial +ParamCue1=SmartObjectId +ParamSigType1=Constant +MPp=1 +Pp1=8 +CedH=8 +SmartObjId=15021d +] +; Parameter Properties for Smart Object ID +[ +ObjTp=Dp +H=8 +Tp=1 +HD=TRUE +DV=15021d +NF=1 +DNF=1 +EncFmt=0 +DVLF=1 +Sgn=0 +] +; Smart Objects Definition section +[ +ObjTp=CED +H=8 +Name=PepperDash Essentials TSW1050_[A.Global] Footer SRL_Modes Bottom Bar SRL.ced +;Cedver is the version of the Smart Graphics control, not the CED file format. +;If the control definition changes, increment this. +CedVer=1 +] +;================================================================================ +[ +ObjTp=Symbol +Name=PepperDash Essentials TSW1050_[B.AV] Object - Presets_CATV Icon List Vertical.ced +Hint=CATV Icon List Vertical (Smart Object ID=10012) +Code=9 +SGControlType=Subpage Reference List Vertical +SGControlName=CATV Icon List Vertical +GUID=B34C4DC0-DD10-4C49-AEBA-F968934EFDC6 +SmplCName=PepperDash Essentials TSW1050_[B.AV] Object - Presets_CATV Icon List Vertical.ced +SMWRev=4.02.20 +Expand=expand_random +HelpID=10125 +Render=8 +;Define the number of inputs, outputs and parameters +MinVariableInputs=4316 +MaxVariableInputs=4316 +MinVariableOutputs=4316 +MaxVariableOutputs=4316 +NumFixedParams=1 +MinVariableInputsList2=3 +MaxVariableInputsList2=3 +MinVariableOutputsList2=3 +MaxVariableOutputsList2=3 +MinVariableInputsList3=412 +MaxVariableInputsList3=412 +MinVariableOutputsList3=412 +MaxVariableOutputsList3=412 +InputSigType1=Digital +OutputSigType1=Digital +InputList2SigType1=Analog +OutputList2SigType1=Analog +InputList3SigType1=Serial +OutputList3SigType1=Serial + +;Define the cues, and signal types each input, output and parameter. +InputCue1=[~UNUSED3~] +InputSigType1=Digital +InputCue2=[~UNUSED2~] +InputSigType2=Digital +InputCue3=[~UNUSED2~] +InputSigType3=Digital +InputCue4=[~UNUSED2~] +InputSigType4=Digital +InputCue5=[~UNUSED2~] +InputSigType5=Digital +InputCue6=[~UNUSED2~] +InputSigType6=Digital +InputCue7=[~UNUSED2~] +InputSigType7=Digital +InputCue8=[~UNUSED2~] +InputSigType8=Digital +InputCue9=[~UNUSED2~] +InputSigType9=Digital +InputCue10=[~UNUSED2~] +InputSigType10=Digital +InputCue11=[~BeginGroup~]Enable +InputSigType11=Digital +InputCue12=Item 1 Enable +InputSigType12=Digital +InputCue13=Item 2 Enable +InputSigType13=Digital +InputCue14=Item 3 Enable +InputSigType14=Digital +InputCue15=Item 4 Enable +InputSigType15=Digital +InputCue16=Item 5 Enable +InputSigType16=Digital +InputCue17=Item 6 Enable +InputSigType17=Digital +InputCue18=Item 7 Enable +InputSigType18=Digital +InputCue19=Item 8 Enable +InputSigType19=Digital +InputCue20=Item 9 Enable +InputSigType20=Digital +InputCue21=Item 10 Enable +InputSigType21=Digital +InputCue22=Item 11 Enable +InputSigType22=Digital +InputCue23=Item 12 Enable +InputSigType23=Digital +InputCue24=Item 13 Enable +InputSigType24=Digital +InputCue25=Item 14 Enable +InputSigType25=Digital +InputCue26=Item 15 Enable +InputSigType26=Digital +InputCue27=Item 16 Enable +InputSigType27=Digital +InputCue28=Item 17 Enable +InputSigType28=Digital +InputCue29=Item 18 Enable +InputSigType29=Digital +InputCue30=Item 19 Enable +InputSigType30=Digital +InputCue31=Item 20 Enable +InputSigType31=Digital +InputCue32=Item 21 Enable +InputSigType32=Digital +InputCue33=Item 22 Enable +InputSigType33=Digital +InputCue34=Item 23 Enable +InputSigType34=Digital +InputCue35=Item 24 Enable +InputSigType35=Digital +InputCue36=Item 25 Enable +InputSigType36=Digital +InputCue37=Item 26 Enable +InputSigType37=Digital +InputCue38=Item 27 Enable +InputSigType38=Digital +InputCue39=Item 28 Enable +InputSigType39=Digital +InputCue40=Item 29 Enable +InputSigType40=Digital +InputCue41=Item 30 Enable +InputSigType41=Digital +InputCue42=Item 31 Enable +InputSigType42=Digital +InputCue43=Item 32 Enable +InputSigType43=Digital +InputCue44=Item 33 Enable +InputSigType44=Digital +InputCue45=Item 34 Enable +InputSigType45=Digital +InputCue46=Item 35 Enable +InputSigType46=Digital +InputCue47=Item 36 Enable +InputSigType47=Digital +InputCue48=Item 37 Enable +InputSigType48=Digital +InputCue49=Item 38 Enable +InputSigType49=Digital +InputCue50=Item 39 Enable +InputSigType50=Digital +InputCue51=Item 40 Enable +InputSigType51=Digital +InputCue52=Item 41 Enable +InputSigType52=Digital +InputCue53=Item 42 Enable +InputSigType53=Digital +InputCue54=Item 43 Enable +InputSigType54=Digital +InputCue55=Item 44 Enable +InputSigType55=Digital +InputCue56=Item 45 Enable +InputSigType56=Digital +InputCue57=Item 46 Enable +InputSigType57=Digital +InputCue58=Item 47 Enable +InputSigType58=Digital +InputCue59=Item 48 Enable +InputSigType59=Digital +InputCue60=Item 49 Enable +InputSigType60=Digital +InputCue61=Item 50 Enable +InputSigType61=Digital +InputCue62=Item 51 Enable +InputSigType62=Digital +InputCue63=Item 52 Enable +InputSigType63=Digital +InputCue64=Item 53 Enable +InputSigType64=Digital +InputCue65=Item 54 Enable +InputSigType65=Digital +InputCue66=Item 55 Enable +InputSigType66=Digital +InputCue67=Item 56 Enable +InputSigType67=Digital +InputCue68=Item 57 Enable +InputSigType68=Digital +InputCue69=Item 58 Enable +InputSigType69=Digital +InputCue70=Item 59 Enable +InputSigType70=Digital +InputCue71=Item 60 Enable +InputSigType71=Digital +InputCue72=Item 61 Enable +InputSigType72=Digital +InputCue73=Item 62 Enable +InputSigType73=Digital +InputCue74=Item 63 Enable +InputSigType74=Digital +InputCue75=Item 64 Enable +InputSigType75=Digital +InputCue76=Item 65 Enable +InputSigType76=Digital +InputCue77=Item 66 Enable +InputSigType77=Digital +InputCue78=Item 67 Enable +InputSigType78=Digital +InputCue79=Item 68 Enable +InputSigType79=Digital +InputCue80=Item 69 Enable +InputSigType80=Digital +InputCue81=Item 70 Enable +InputSigType81=Digital +InputCue82=Item 71 Enable +InputSigType82=Digital +InputCue83=Item 72 Enable +InputSigType83=Digital +InputCue84=Item 73 Enable +InputSigType84=Digital +InputCue85=Item 74 Enable +InputSigType85=Digital +InputCue86=Item 75 Enable +InputSigType86=Digital +InputCue87=Item 76 Enable +InputSigType87=Digital +InputCue88=Item 77 Enable +InputSigType88=Digital +InputCue89=Item 78 Enable +InputSigType89=Digital +InputCue90=Item 79 Enable +InputSigType90=Digital +InputCue91=Item 80 Enable +InputSigType91=Digital +InputCue92=Item 81 Enable +InputSigType92=Digital +InputCue93=Item 82 Enable +InputSigType93=Digital +InputCue94=Item 83 Enable +InputSigType94=Digital +InputCue95=Item 84 Enable +InputSigType95=Digital +InputCue96=Item 85 Enable +InputSigType96=Digital +InputCue97=Item 86 Enable +InputSigType97=Digital +InputCue98=Item 87 Enable +InputSigType98=Digital +InputCue99=Item 88 Enable +InputSigType99=Digital +InputCue100=Item 89 Enable +InputSigType100=Digital +InputCue101=Item 90 Enable +InputSigType101=Digital +InputCue102=Item 91 Enable +InputSigType102=Digital +InputCue103=Item 92 Enable +InputSigType103=Digital +InputCue104=Item 93 Enable +InputSigType104=Digital +InputCue105=Item 94 Enable +InputSigType105=Digital +InputCue106=Item 95 Enable +InputSigType106=Digital +InputCue107=Item 96 Enable +InputSigType107=Digital +InputCue108=Item 97 Enable +InputSigType108=Digital +InputCue109=Item 98 Enable +InputSigType109=Digital +InputCue110=Item 99 Enable +InputSigType110=Digital +InputCue111=Item 100 Enable +InputSigType111=Digital +InputCue112=[~UNUSED2~] +InputSigType112=Digital|Analog|Serial|String +InputCue2012=[~EndGroup~]Enable +InputSigType2012=Digital +InputCue2013=[~BeginGroup~]Visible +InputSigType2013=Digital +InputCue2014=Item 1 Visible +InputSigType2014=Digital +InputCue2015=Item 2 Visible +InputSigType2015=Digital +InputCue2016=Item 3 Visible +InputSigType2016=Digital +InputCue2017=Item 4 Visible +InputSigType2017=Digital +InputCue2018=Item 5 Visible +InputSigType2018=Digital +InputCue2019=Item 6 Visible +InputSigType2019=Digital +InputCue2020=Item 7 Visible +InputSigType2020=Digital +InputCue2021=Item 8 Visible +InputSigType2021=Digital +InputCue2022=Item 9 Visible +InputSigType2022=Digital +InputCue2023=Item 10 Visible +InputSigType2023=Digital +InputCue2024=Item 11 Visible +InputSigType2024=Digital +InputCue2025=Item 12 Visible +InputSigType2025=Digital +InputCue2026=Item 13 Visible +InputSigType2026=Digital +InputCue2027=Item 14 Visible +InputSigType2027=Digital +InputCue2028=Item 15 Visible +InputSigType2028=Digital +InputCue2029=Item 16 Visible +InputSigType2029=Digital +InputCue2030=Item 17 Visible +InputSigType2030=Digital +InputCue2031=Item 18 Visible +InputSigType2031=Digital +InputCue2032=Item 19 Visible +InputSigType2032=Digital +InputCue2033=Item 20 Visible +InputSigType2033=Digital +InputCue2034=Item 21 Visible +InputSigType2034=Digital +InputCue2035=Item 22 Visible +InputSigType2035=Digital +InputCue2036=Item 23 Visible +InputSigType2036=Digital +InputCue2037=Item 24 Visible +InputSigType2037=Digital +InputCue2038=Item 25 Visible +InputSigType2038=Digital +InputCue2039=Item 26 Visible +InputSigType2039=Digital +InputCue2040=Item 27 Visible +InputSigType2040=Digital +InputCue2041=Item 28 Visible +InputSigType2041=Digital +InputCue2042=Item 29 Visible +InputSigType2042=Digital +InputCue2043=Item 30 Visible +InputSigType2043=Digital +InputCue2044=Item 31 Visible +InputSigType2044=Digital +InputCue2045=Item 32 Visible +InputSigType2045=Digital +InputCue2046=Item 33 Visible +InputSigType2046=Digital +InputCue2047=Item 34 Visible +InputSigType2047=Digital +InputCue2048=Item 35 Visible +InputSigType2048=Digital +InputCue2049=Item 36 Visible +InputSigType2049=Digital +InputCue2050=Item 37 Visible +InputSigType2050=Digital +InputCue2051=Item 38 Visible +InputSigType2051=Digital +InputCue2052=Item 39 Visible +InputSigType2052=Digital +InputCue2053=Item 40 Visible +InputSigType2053=Digital +InputCue2054=Item 41 Visible +InputSigType2054=Digital +InputCue2055=Item 42 Visible +InputSigType2055=Digital +InputCue2056=Item 43 Visible +InputSigType2056=Digital +InputCue2057=Item 44 Visible +InputSigType2057=Digital +InputCue2058=Item 45 Visible +InputSigType2058=Digital +InputCue2059=Item 46 Visible +InputSigType2059=Digital +InputCue2060=Item 47 Visible +InputSigType2060=Digital +InputCue2061=Item 48 Visible +InputSigType2061=Digital +InputCue2062=Item 49 Visible +InputSigType2062=Digital +InputCue2063=Item 50 Visible +InputSigType2063=Digital +InputCue2064=Item 51 Visible +InputSigType2064=Digital +InputCue2065=Item 52 Visible +InputSigType2065=Digital +InputCue2066=Item 53 Visible +InputSigType2066=Digital +InputCue2067=Item 54 Visible +InputSigType2067=Digital +InputCue2068=Item 55 Visible +InputSigType2068=Digital +InputCue2069=Item 56 Visible +InputSigType2069=Digital +InputCue2070=Item 57 Visible +InputSigType2070=Digital +InputCue2071=Item 58 Visible +InputSigType2071=Digital +InputCue2072=Item 59 Visible +InputSigType2072=Digital +InputCue2073=Item 60 Visible +InputSigType2073=Digital +InputCue2074=Item 61 Visible +InputSigType2074=Digital +InputCue2075=Item 62 Visible +InputSigType2075=Digital +InputCue2076=Item 63 Visible +InputSigType2076=Digital +InputCue2077=Item 64 Visible +InputSigType2077=Digital +InputCue2078=Item 65 Visible +InputSigType2078=Digital +InputCue2079=Item 66 Visible +InputSigType2079=Digital +InputCue2080=Item 67 Visible +InputSigType2080=Digital +InputCue2081=Item 68 Visible +InputSigType2081=Digital +InputCue2082=Item 69 Visible +InputSigType2082=Digital +InputCue2083=Item 70 Visible +InputSigType2083=Digital +InputCue2084=Item 71 Visible +InputSigType2084=Digital +InputCue2085=Item 72 Visible +InputSigType2085=Digital +InputCue2086=Item 73 Visible +InputSigType2086=Digital +InputCue2087=Item 74 Visible +InputSigType2087=Digital +InputCue2088=Item 75 Visible +InputSigType2088=Digital +InputCue2089=Item 76 Visible +InputSigType2089=Digital +InputCue2090=Item 77 Visible +InputSigType2090=Digital +InputCue2091=Item 78 Visible +InputSigType2091=Digital +InputCue2092=Item 79 Visible +InputSigType2092=Digital +InputCue2093=Item 80 Visible +InputSigType2093=Digital +InputCue2094=Item 81 Visible +InputSigType2094=Digital +InputCue2095=Item 82 Visible +InputSigType2095=Digital +InputCue2096=Item 83 Visible +InputSigType2096=Digital +InputCue2097=Item 84 Visible +InputSigType2097=Digital +InputCue2098=Item 85 Visible +InputSigType2098=Digital +InputCue2099=Item 86 Visible +InputSigType2099=Digital +InputCue2100=Item 87 Visible +InputSigType2100=Digital +InputCue2101=Item 88 Visible +InputSigType2101=Digital +InputCue2102=Item 89 Visible +InputSigType2102=Digital +InputCue2103=Item 90 Visible +InputSigType2103=Digital +InputCue2104=Item 91 Visible +InputSigType2104=Digital +InputCue2105=Item 92 Visible +InputSigType2105=Digital +InputCue2106=Item 93 Visible +InputSigType2106=Digital +InputCue2107=Item 94 Visible +InputSigType2107=Digital +InputCue2108=Item 95 Visible +InputSigType2108=Digital +InputCue2109=Item 96 Visible +InputSigType2109=Digital +InputCue2110=Item 97 Visible +InputSigType2110=Digital +InputCue2111=Item 98 Visible +InputSigType2111=Digital +InputCue2112=Item 99 Visible +InputSigType2112=Digital +InputCue2113=Item 100 Visible +InputSigType2113=Digital +InputCue2114=[~UNUSED2~] +InputSigType2114=Digital|Analog|Serial|String +InputCue4014=[~EndGroup~]Visible +InputSigType4014=Digital +InputCue4015=[~BeginGroup~]fb +InputSigType4015=Digital +InputCue4016=fb1 +InputSigType4016=Digital +InputCue4017=fb2 +InputSigType4017=Digital +InputCue4018=fb3 +InputSigType4018=Digital +InputCue4019=fb4 +InputSigType4019=Digital +InputCue4020=fb5 +InputSigType4020=Digital +InputCue4021=fb6 +InputSigType4021=Digital +InputCue4022=fb7 +InputSigType4022=Digital +InputCue4023=fb8 +InputSigType4023=Digital +InputCue4024=fb9 +InputSigType4024=Digital +InputCue4025=fb10 +InputSigType4025=Digital +InputCue4026=fb11 +InputSigType4026=Digital +InputCue4027=fb12 +InputSigType4027=Digital +InputCue4028=fb13 +InputSigType4028=Digital +InputCue4029=fb14 +InputSigType4029=Digital +InputCue4030=fb15 +InputSigType4030=Digital +InputCue4031=fb16 +InputSigType4031=Digital +InputCue4032=fb17 +InputSigType4032=Digital +InputCue4033=fb18 +InputSigType4033=Digital +InputCue4034=fb19 +InputSigType4034=Digital +InputCue4035=fb20 +InputSigType4035=Digital +InputCue4036=fb21 +InputSigType4036=Digital +InputCue4037=fb22 +InputSigType4037=Digital +InputCue4038=fb23 +InputSigType4038=Digital +InputCue4039=fb24 +InputSigType4039=Digital +InputCue4040=fb25 +InputSigType4040=Digital +InputCue4041=fb26 +InputSigType4041=Digital +InputCue4042=fb27 +InputSigType4042=Digital +InputCue4043=fb28 +InputSigType4043=Digital +InputCue4044=fb29 +InputSigType4044=Digital +InputCue4045=fb30 +InputSigType4045=Digital +InputCue4046=fb31 +InputSigType4046=Digital +InputCue4047=fb32 +InputSigType4047=Digital +InputCue4048=fb33 +InputSigType4048=Digital +InputCue4049=fb34 +InputSigType4049=Digital +InputCue4050=fb35 +InputSigType4050=Digital +InputCue4051=fb36 +InputSigType4051=Digital +InputCue4052=fb37 +InputSigType4052=Digital +InputCue4053=fb38 +InputSigType4053=Digital +InputCue4054=fb39 +InputSigType4054=Digital +InputCue4055=fb40 +InputSigType4055=Digital +InputCue4056=fb41 +InputSigType4056=Digital +InputCue4057=fb42 +InputSigType4057=Digital +InputCue4058=fb43 +InputSigType4058=Digital +InputCue4059=fb44 +InputSigType4059=Digital +InputCue4060=fb45 +InputSigType4060=Digital +InputCue4061=fb46 +InputSigType4061=Digital +InputCue4062=fb47 +InputSigType4062=Digital +InputCue4063=fb48 +InputSigType4063=Digital +InputCue4064=fb49 +InputSigType4064=Digital +InputCue4065=fb50 +InputSigType4065=Digital +InputCue4066=fb51 +InputSigType4066=Digital +InputCue4067=fb52 +InputSigType4067=Digital +InputCue4068=fb53 +InputSigType4068=Digital +InputCue4069=fb54 +InputSigType4069=Digital +InputCue4070=fb55 +InputSigType4070=Digital +InputCue4071=fb56 +InputSigType4071=Digital +InputCue4072=fb57 +InputSigType4072=Digital +InputCue4073=fb58 +InputSigType4073=Digital +InputCue4074=fb59 +InputSigType4074=Digital +InputCue4075=fb60 +InputSigType4075=Digital +InputCue4076=fb61 +InputSigType4076=Digital +InputCue4077=fb62 +InputSigType4077=Digital +InputCue4078=fb63 +InputSigType4078=Digital +InputCue4079=fb64 +InputSigType4079=Digital +InputCue4080=fb65 +InputSigType4080=Digital +InputCue4081=fb66 +InputSigType4081=Digital +InputCue4082=fb67 +InputSigType4082=Digital +InputCue4083=fb68 +InputSigType4083=Digital +InputCue4084=fb69 +InputSigType4084=Digital +InputCue4085=fb70 +InputSigType4085=Digital +InputCue4086=fb71 +InputSigType4086=Digital +InputCue4087=fb72 +InputSigType4087=Digital +InputCue4088=fb73 +InputSigType4088=Digital +InputCue4089=fb74 +InputSigType4089=Digital +InputCue4090=fb75 +InputSigType4090=Digital +InputCue4091=fb76 +InputSigType4091=Digital +InputCue4092=fb77 +InputSigType4092=Digital +InputCue4093=fb78 +InputSigType4093=Digital +InputCue4094=fb79 +InputSigType4094=Digital +InputCue4095=fb80 +InputSigType4095=Digital +InputCue4096=fb81 +InputSigType4096=Digital +InputCue4097=fb82 +InputSigType4097=Digital +InputCue4098=fb83 +InputSigType4098=Digital +InputCue4099=fb84 +InputSigType4099=Digital +InputCue4100=fb85 +InputSigType4100=Digital +InputCue4101=fb86 +InputSigType4101=Digital +InputCue4102=fb87 +InputSigType4102=Digital +InputCue4103=fb88 +InputSigType4103=Digital +InputCue4104=fb89 +InputSigType4104=Digital +InputCue4105=fb90 +InputSigType4105=Digital +InputCue4106=fb91 +InputSigType4106=Digital +InputCue4107=fb92 +InputSigType4107=Digital +InputCue4108=fb93 +InputSigType4108=Digital +InputCue4109=fb94 +InputSigType4109=Digital +InputCue4110=fb95 +InputSigType4110=Digital +InputCue4111=fb96 +InputSigType4111=Digital +InputCue4112=fb97 +InputSigType4112=Digital +InputCue4113=fb98 +InputSigType4113=Digital +InputCue4114=fb99 +InputSigType4114=Digital +InputCue4115=fb100 +InputSigType4115=Digital +InputCue4116=fb101 +InputSigType4116=Digital +InputCue4117=fb102 +InputSigType4117=Digital +InputCue4118=fb103 +InputSigType4118=Digital +InputCue4119=fb104 +InputSigType4119=Digital +InputCue4120=fb105 +InputSigType4120=Digital +InputCue4121=fb106 +InputSigType4121=Digital +InputCue4122=fb107 +InputSigType4122=Digital +InputCue4123=fb108 +InputSigType4123=Digital +InputCue4124=fb109 +InputSigType4124=Digital +InputCue4125=fb110 +InputSigType4125=Digital +InputCue4126=fb111 +InputSigType4126=Digital +InputCue4127=fb112 +InputSigType4127=Digital +InputCue4128=fb113 +InputSigType4128=Digital +InputCue4129=fb114 +InputSigType4129=Digital +InputCue4130=fb115 +InputSigType4130=Digital +InputCue4131=fb116 +InputSigType4131=Digital +InputCue4132=fb117 +InputSigType4132=Digital +InputCue4133=fb118 +InputSigType4133=Digital +InputCue4134=fb119 +InputSigType4134=Digital +InputCue4135=fb120 +InputSigType4135=Digital +InputCue4136=fb121 +InputSigType4136=Digital +InputCue4137=fb122 +InputSigType4137=Digital +InputCue4138=fb123 +InputSigType4138=Digital +InputCue4139=fb124 +InputSigType4139=Digital +InputCue4140=fb125 +InputSigType4140=Digital +InputCue4141=fb126 +InputSigType4141=Digital +InputCue4142=fb127 +InputSigType4142=Digital +InputCue4143=fb128 +InputSigType4143=Digital +InputCue4144=fb129 +InputSigType4144=Digital +InputCue4145=fb130 +InputSigType4145=Digital +InputCue4146=fb131 +InputSigType4146=Digital +InputCue4147=fb132 +InputSigType4147=Digital +InputCue4148=fb133 +InputSigType4148=Digital +InputCue4149=fb134 +InputSigType4149=Digital +InputCue4150=fb135 +InputSigType4150=Digital +InputCue4151=fb136 +InputSigType4151=Digital +InputCue4152=fb137 +InputSigType4152=Digital +InputCue4153=fb138 +InputSigType4153=Digital +InputCue4154=fb139 +InputSigType4154=Digital +InputCue4155=fb140 +InputSigType4155=Digital +InputCue4156=fb141 +InputSigType4156=Digital +InputCue4157=fb142 +InputSigType4157=Digital +InputCue4158=fb143 +InputSigType4158=Digital +InputCue4159=fb144 +InputSigType4159=Digital +InputCue4160=fb145 +InputSigType4160=Digital +InputCue4161=fb146 +InputSigType4161=Digital +InputCue4162=fb147 +InputSigType4162=Digital +InputCue4163=fb148 +InputSigType4163=Digital +InputCue4164=fb149 +InputSigType4164=Digital +InputCue4165=fb150 +InputSigType4165=Digital +InputCue4166=fb151 +InputSigType4166=Digital +InputCue4167=fb152 +InputSigType4167=Digital +InputCue4168=fb153 +InputSigType4168=Digital +InputCue4169=fb154 +InputSigType4169=Digital +InputCue4170=fb155 +InputSigType4170=Digital +InputCue4171=fb156 +InputSigType4171=Digital +InputCue4172=fb157 +InputSigType4172=Digital +InputCue4173=fb158 +InputSigType4173=Digital +InputCue4174=fb159 +InputSigType4174=Digital +InputCue4175=fb160 +InputSigType4175=Digital +InputCue4176=fb161 +InputSigType4176=Digital +InputCue4177=fb162 +InputSigType4177=Digital +InputCue4178=fb163 +InputSigType4178=Digital +InputCue4179=fb164 +InputSigType4179=Digital +InputCue4180=fb165 +InputSigType4180=Digital +InputCue4181=fb166 +InputSigType4181=Digital +InputCue4182=fb167 +InputSigType4182=Digital +InputCue4183=fb168 +InputSigType4183=Digital +InputCue4184=fb169 +InputSigType4184=Digital +InputCue4185=fb170 +InputSigType4185=Digital +InputCue4186=fb171 +InputSigType4186=Digital +InputCue4187=fb172 +InputSigType4187=Digital +InputCue4188=fb173 +InputSigType4188=Digital +InputCue4189=fb174 +InputSigType4189=Digital +InputCue4190=fb175 +InputSigType4190=Digital +InputCue4191=fb176 +InputSigType4191=Digital +InputCue4192=fb177 +InputSigType4192=Digital +InputCue4193=fb178 +InputSigType4193=Digital +InputCue4194=fb179 +InputSigType4194=Digital +InputCue4195=fb180 +InputSigType4195=Digital +InputCue4196=fb181 +InputSigType4196=Digital +InputCue4197=fb182 +InputSigType4197=Digital +InputCue4198=fb183 +InputSigType4198=Digital +InputCue4199=fb184 +InputSigType4199=Digital +InputCue4200=fb185 +InputSigType4200=Digital +InputCue4201=fb186 +InputSigType4201=Digital +InputCue4202=fb187 +InputSigType4202=Digital +InputCue4203=fb188 +InputSigType4203=Digital +InputCue4204=fb189 +InputSigType4204=Digital +InputCue4205=fb190 +InputSigType4205=Digital +InputCue4206=fb191 +InputSigType4206=Digital +InputCue4207=fb192 +InputSigType4207=Digital +InputCue4208=fb193 +InputSigType4208=Digital +InputCue4209=fb194 +InputSigType4209=Digital +InputCue4210=fb195 +InputSigType4210=Digital +InputCue4211=fb196 +InputSigType4211=Digital +InputCue4212=fb197 +InputSigType4212=Digital +InputCue4213=fb198 +InputSigType4213=Digital +InputCue4214=fb199 +InputSigType4214=Digital +InputCue4215=fb200 +InputSigType4215=Digital +InputCue4216=fb201 +InputSigType4216=Digital +InputCue4217=fb202 +InputSigType4217=Digital +InputCue4218=fb203 +InputSigType4218=Digital +InputCue4219=fb204 +InputSigType4219=Digital +InputCue4220=fb205 +InputSigType4220=Digital +InputCue4221=fb206 +InputSigType4221=Digital +InputCue4222=fb207 +InputSigType4222=Digital +InputCue4223=fb208 +InputSigType4223=Digital +InputCue4224=fb209 +InputSigType4224=Digital +InputCue4225=fb210 +InputSigType4225=Digital +InputCue4226=fb211 +InputSigType4226=Digital +InputCue4227=fb212 +InputSigType4227=Digital +InputCue4228=fb213 +InputSigType4228=Digital +InputCue4229=fb214 +InputSigType4229=Digital +InputCue4230=fb215 +InputSigType4230=Digital +InputCue4231=fb216 +InputSigType4231=Digital +InputCue4232=fb217 +InputSigType4232=Digital +InputCue4233=fb218 +InputSigType4233=Digital +InputCue4234=fb219 +InputSigType4234=Digital +InputCue4235=fb220 +InputSigType4235=Digital +InputCue4236=fb221 +InputSigType4236=Digital +InputCue4237=fb222 +InputSigType4237=Digital +InputCue4238=fb223 +InputSigType4238=Digital +InputCue4239=fb224 +InputSigType4239=Digital +InputCue4240=fb225 +InputSigType4240=Digital +InputCue4241=fb226 +InputSigType4241=Digital +InputCue4242=fb227 +InputSigType4242=Digital +InputCue4243=fb228 +InputSigType4243=Digital +InputCue4244=fb229 +InputSigType4244=Digital +InputCue4245=fb230 +InputSigType4245=Digital +InputCue4246=fb231 +InputSigType4246=Digital +InputCue4247=fb232 +InputSigType4247=Digital +InputCue4248=fb233 +InputSigType4248=Digital +InputCue4249=fb234 +InputSigType4249=Digital +InputCue4250=fb235 +InputSigType4250=Digital +InputCue4251=fb236 +InputSigType4251=Digital +InputCue4252=fb237 +InputSigType4252=Digital +InputCue4253=fb238 +InputSigType4253=Digital +InputCue4254=fb239 +InputSigType4254=Digital +InputCue4255=fb240 +InputSigType4255=Digital +InputCue4256=fb241 +InputSigType4256=Digital +InputCue4257=fb242 +InputSigType4257=Digital +InputCue4258=fb243 +InputSigType4258=Digital +InputCue4259=fb244 +InputSigType4259=Digital +InputCue4260=fb245 +InputSigType4260=Digital +InputCue4261=fb246 +InputSigType4261=Digital +InputCue4262=fb247 +InputSigType4262=Digital +InputCue4263=fb248 +InputSigType4263=Digital +InputCue4264=fb249 +InputSigType4264=Digital +InputCue4265=fb250 +InputSigType4265=Digital +InputCue4266=fb251 +InputSigType4266=Digital +InputCue4267=fb252 +InputSigType4267=Digital +InputCue4268=fb253 +InputSigType4268=Digital +InputCue4269=fb254 +InputSigType4269=Digital +InputCue4270=fb255 +InputSigType4270=Digital +InputCue4271=fb256 +InputSigType4271=Digital +InputCue4272=fb257 +InputSigType4272=Digital +InputCue4273=fb258 +InputSigType4273=Digital +InputCue4274=fb259 +InputSigType4274=Digital +InputCue4275=fb260 +InputSigType4275=Digital +InputCue4276=fb261 +InputSigType4276=Digital +InputCue4277=fb262 +InputSigType4277=Digital +InputCue4278=fb263 +InputSigType4278=Digital +InputCue4279=fb264 +InputSigType4279=Digital +InputCue4280=fb265 +InputSigType4280=Digital +InputCue4281=fb266 +InputSigType4281=Digital +InputCue4282=fb267 +InputSigType4282=Digital +InputCue4283=fb268 +InputSigType4283=Digital +InputCue4284=fb269 +InputSigType4284=Digital +InputCue4285=fb270 +InputSigType4285=Digital +InputCue4286=fb271 +InputSigType4286=Digital +InputCue4287=fb272 +InputSigType4287=Digital +InputCue4288=fb273 +InputSigType4288=Digital +InputCue4289=fb274 +InputSigType4289=Digital +InputCue4290=fb275 +InputSigType4290=Digital +InputCue4291=fb276 +InputSigType4291=Digital +InputCue4292=fb277 +InputSigType4292=Digital +InputCue4293=fb278 +InputSigType4293=Digital +InputCue4294=fb279 +InputSigType4294=Digital +InputCue4295=fb280 +InputSigType4295=Digital +InputCue4296=fb281 +InputSigType4296=Digital +InputCue4297=fb282 +InputSigType4297=Digital +InputCue4298=fb283 +InputSigType4298=Digital +InputCue4299=fb284 +InputSigType4299=Digital +InputCue4300=fb285 +InputSigType4300=Digital +InputCue4301=fb286 +InputSigType4301=Digital +InputCue4302=fb287 +InputSigType4302=Digital +InputCue4303=fb288 +InputSigType4303=Digital +InputCue4304=fb289 +InputSigType4304=Digital +InputCue4305=fb290 +InputSigType4305=Digital +InputCue4306=fb291 +InputSigType4306=Digital +InputCue4307=fb292 +InputSigType4307=Digital +InputCue4308=fb293 +InputSigType4308=Digital +InputCue4309=fb294 +InputSigType4309=Digital +InputCue4310=fb295 +InputSigType4310=Digital +InputCue4311=fb296 +InputSigType4311=Digital +InputCue4312=fb297 +InputSigType4312=Digital +InputCue4313=fb298 +InputSigType4313=Digital +InputCue4314=fb299 +InputSigType4314=Digital +InputCue4315=fb300 +InputSigType4315=Digital +InputCue4316=[~EndGroup~]fb +InputSigType4316=Digital +OutputCue1=Is Moving +OutputSigType1=Digital +OutputCue2=[~UNUSED2~] +OutputSigType2=Digital +OutputCue3=[~UNUSED2~] +OutputSigType3=Digital +OutputCue4=[~UNUSED2~] +OutputSigType4=Digital +OutputCue5=[~UNUSED2~] +OutputSigType5=Digital +OutputCue6=[~UNUSED2~] +OutputSigType6=Digital +OutputCue7=[~UNUSED2~] +OutputSigType7=Digital +OutputCue8=[~UNUSED2~] +OutputSigType8=Digital +OutputCue9=[~UNUSED2~] +OutputSigType9=Digital +OutputCue10=[~UNUSED2~] +OutputSigType10=Digital +OutputCue11=[~BeginGroup~]Enable +OutputSigType11=Digital +OutputCue12=[~UNUSED3~] +OutputSigType12=Digital +OutputCue13=[~UNUSED3~] +OutputSigType13=Digital +OutputCue14=[~UNUSED3~] +OutputSigType14=Digital +OutputCue15=[~UNUSED3~] +OutputSigType15=Digital +OutputCue16=[~UNUSED3~] +OutputSigType16=Digital +OutputCue17=[~UNUSED3~] +OutputSigType17=Digital +OutputCue18=[~UNUSED3~] +OutputSigType18=Digital +OutputCue19=[~UNUSED3~] +OutputSigType19=Digital +OutputCue20=[~UNUSED3~] +OutputSigType20=Digital +OutputCue21=[~UNUSED3~] +OutputSigType21=Digital +OutputCue22=[~UNUSED3~] +OutputSigType22=Digital +OutputCue23=[~UNUSED3~] +OutputSigType23=Digital +OutputCue24=[~UNUSED3~] +OutputSigType24=Digital +OutputCue25=[~UNUSED3~] +OutputSigType25=Digital +OutputCue26=[~UNUSED3~] +OutputSigType26=Digital +OutputCue27=[~UNUSED3~] +OutputSigType27=Digital +OutputCue28=[~UNUSED3~] +OutputSigType28=Digital +OutputCue29=[~UNUSED3~] +OutputSigType29=Digital +OutputCue30=[~UNUSED3~] +OutputSigType30=Digital +OutputCue31=[~UNUSED3~] +OutputSigType31=Digital +OutputCue32=[~UNUSED3~] +OutputSigType32=Digital +OutputCue33=[~UNUSED3~] +OutputSigType33=Digital +OutputCue34=[~UNUSED3~] +OutputSigType34=Digital +OutputCue35=[~UNUSED3~] +OutputSigType35=Digital +OutputCue36=[~UNUSED3~] +OutputSigType36=Digital +OutputCue37=[~UNUSED3~] +OutputSigType37=Digital +OutputCue38=[~UNUSED3~] +OutputSigType38=Digital +OutputCue39=[~UNUSED3~] +OutputSigType39=Digital +OutputCue40=[~UNUSED3~] +OutputSigType40=Digital +OutputCue41=[~UNUSED3~] +OutputSigType41=Digital +OutputCue42=[~UNUSED3~] +OutputSigType42=Digital +OutputCue43=[~UNUSED3~] +OutputSigType43=Digital +OutputCue44=[~UNUSED3~] +OutputSigType44=Digital +OutputCue45=[~UNUSED3~] +OutputSigType45=Digital +OutputCue46=[~UNUSED3~] +OutputSigType46=Digital +OutputCue47=[~UNUSED3~] +OutputSigType47=Digital +OutputCue48=[~UNUSED3~] +OutputSigType48=Digital +OutputCue49=[~UNUSED3~] +OutputSigType49=Digital +OutputCue50=[~UNUSED3~] +OutputSigType50=Digital +OutputCue51=[~UNUSED3~] +OutputSigType51=Digital +OutputCue52=[~UNUSED3~] +OutputSigType52=Digital +OutputCue53=[~UNUSED3~] +OutputSigType53=Digital +OutputCue54=[~UNUSED3~] +OutputSigType54=Digital +OutputCue55=[~UNUSED3~] +OutputSigType55=Digital +OutputCue56=[~UNUSED3~] +OutputSigType56=Digital +OutputCue57=[~UNUSED3~] +OutputSigType57=Digital +OutputCue58=[~UNUSED3~] +OutputSigType58=Digital +OutputCue59=[~UNUSED3~] +OutputSigType59=Digital +OutputCue60=[~UNUSED3~] +OutputSigType60=Digital +OutputCue61=[~UNUSED3~] +OutputSigType61=Digital +OutputCue62=[~UNUSED3~] +OutputSigType62=Digital +OutputCue63=[~UNUSED3~] +OutputSigType63=Digital +OutputCue64=[~UNUSED3~] +OutputSigType64=Digital +OutputCue65=[~UNUSED3~] +OutputSigType65=Digital +OutputCue66=[~UNUSED3~] +OutputSigType66=Digital +OutputCue67=[~UNUSED3~] +OutputSigType67=Digital +OutputCue68=[~UNUSED3~] +OutputSigType68=Digital +OutputCue69=[~UNUSED3~] +OutputSigType69=Digital +OutputCue70=[~UNUSED3~] +OutputSigType70=Digital +OutputCue71=[~UNUSED3~] +OutputSigType71=Digital +OutputCue72=[~UNUSED3~] +OutputSigType72=Digital +OutputCue73=[~UNUSED3~] +OutputSigType73=Digital +OutputCue74=[~UNUSED3~] +OutputSigType74=Digital +OutputCue75=[~UNUSED3~] +OutputSigType75=Digital +OutputCue76=[~UNUSED3~] +OutputSigType76=Digital +OutputCue77=[~UNUSED3~] +OutputSigType77=Digital +OutputCue78=[~UNUSED3~] +OutputSigType78=Digital +OutputCue79=[~UNUSED3~] +OutputSigType79=Digital +OutputCue80=[~UNUSED3~] +OutputSigType80=Digital +OutputCue81=[~UNUSED3~] +OutputSigType81=Digital +OutputCue82=[~UNUSED3~] +OutputSigType82=Digital +OutputCue83=[~UNUSED3~] +OutputSigType83=Digital +OutputCue84=[~UNUSED3~] +OutputSigType84=Digital +OutputCue85=[~UNUSED3~] +OutputSigType85=Digital +OutputCue86=[~UNUSED3~] +OutputSigType86=Digital +OutputCue87=[~UNUSED3~] +OutputSigType87=Digital +OutputCue88=[~UNUSED3~] +OutputSigType88=Digital +OutputCue89=[~UNUSED3~] +OutputSigType89=Digital +OutputCue90=[~UNUSED3~] +OutputSigType90=Digital +OutputCue91=[~UNUSED3~] +OutputSigType91=Digital +OutputCue92=[~UNUSED3~] +OutputSigType92=Digital +OutputCue93=[~UNUSED3~] +OutputSigType93=Digital +OutputCue94=[~UNUSED3~] +OutputSigType94=Digital +OutputCue95=[~UNUSED3~] +OutputSigType95=Digital +OutputCue96=[~UNUSED3~] +OutputSigType96=Digital +OutputCue97=[~UNUSED3~] +OutputSigType97=Digital +OutputCue98=[~UNUSED3~] +OutputSigType98=Digital +OutputCue99=[~UNUSED3~] +OutputSigType99=Digital +OutputCue100=[~UNUSED3~] +OutputSigType100=Digital +OutputCue101=[~UNUSED3~] +OutputSigType101=Digital +OutputCue102=[~UNUSED3~] +OutputSigType102=Digital +OutputCue103=[~UNUSED3~] +OutputSigType103=Digital +OutputCue104=[~UNUSED3~] +OutputSigType104=Digital +OutputCue105=[~UNUSED3~] +OutputSigType105=Digital +OutputCue106=[~UNUSED3~] +OutputSigType106=Digital +OutputCue107=[~UNUSED3~] +OutputSigType107=Digital +OutputCue108=[~UNUSED3~] +OutputSigType108=Digital +OutputCue109=[~UNUSED3~] +OutputSigType109=Digital +OutputCue110=[~UNUSED3~] +OutputSigType110=Digital +OutputCue111=[~UNUSED3~] +OutputSigType111=Digital +OutputCue112=[~UNUSED2~] +OutputSigType112=Digital|Analog|Serial|String +OutputCue2012=[~EndGroup~]Enable +OutputSigType2012=Digital +OutputCue2013=[~BeginGroup~]Visible +OutputSigType2013=Digital +OutputCue2014=[~UNUSED3~] +OutputSigType2014=Digital +OutputCue2015=[~UNUSED3~] +OutputSigType2015=Digital +OutputCue2016=[~UNUSED3~] +OutputSigType2016=Digital +OutputCue2017=[~UNUSED3~] +OutputSigType2017=Digital +OutputCue2018=[~UNUSED3~] +OutputSigType2018=Digital +OutputCue2019=[~UNUSED3~] +OutputSigType2019=Digital +OutputCue2020=[~UNUSED3~] +OutputSigType2020=Digital +OutputCue2021=[~UNUSED3~] +OutputSigType2021=Digital +OutputCue2022=[~UNUSED3~] +OutputSigType2022=Digital +OutputCue2023=[~UNUSED3~] +OutputSigType2023=Digital +OutputCue2024=[~UNUSED3~] +OutputSigType2024=Digital +OutputCue2025=[~UNUSED3~] +OutputSigType2025=Digital +OutputCue2026=[~UNUSED3~] +OutputSigType2026=Digital +OutputCue2027=[~UNUSED3~] +OutputSigType2027=Digital +OutputCue2028=[~UNUSED3~] +OutputSigType2028=Digital +OutputCue2029=[~UNUSED3~] +OutputSigType2029=Digital +OutputCue2030=[~UNUSED3~] +OutputSigType2030=Digital +OutputCue2031=[~UNUSED3~] +OutputSigType2031=Digital +OutputCue2032=[~UNUSED3~] +OutputSigType2032=Digital +OutputCue2033=[~UNUSED3~] +OutputSigType2033=Digital +OutputCue2034=[~UNUSED3~] +OutputSigType2034=Digital +OutputCue2035=[~UNUSED3~] +OutputSigType2035=Digital +OutputCue2036=[~UNUSED3~] +OutputSigType2036=Digital +OutputCue2037=[~UNUSED3~] +OutputSigType2037=Digital +OutputCue2038=[~UNUSED3~] +OutputSigType2038=Digital +OutputCue2039=[~UNUSED3~] +OutputSigType2039=Digital +OutputCue2040=[~UNUSED3~] +OutputSigType2040=Digital +OutputCue2041=[~UNUSED3~] +OutputSigType2041=Digital +OutputCue2042=[~UNUSED3~] +OutputSigType2042=Digital +OutputCue2043=[~UNUSED3~] +OutputSigType2043=Digital +OutputCue2044=[~UNUSED3~] +OutputSigType2044=Digital +OutputCue2045=[~UNUSED3~] +OutputSigType2045=Digital +OutputCue2046=[~UNUSED3~] +OutputSigType2046=Digital +OutputCue2047=[~UNUSED3~] +OutputSigType2047=Digital +OutputCue2048=[~UNUSED3~] +OutputSigType2048=Digital +OutputCue2049=[~UNUSED3~] +OutputSigType2049=Digital +OutputCue2050=[~UNUSED3~] +OutputSigType2050=Digital +OutputCue2051=[~UNUSED3~] +OutputSigType2051=Digital +OutputCue2052=[~UNUSED3~] +OutputSigType2052=Digital +OutputCue2053=[~UNUSED3~] +OutputSigType2053=Digital +OutputCue2054=[~UNUSED3~] +OutputSigType2054=Digital +OutputCue2055=[~UNUSED3~] +OutputSigType2055=Digital +OutputCue2056=[~UNUSED3~] +OutputSigType2056=Digital +OutputCue2057=[~UNUSED3~] +OutputSigType2057=Digital +OutputCue2058=[~UNUSED3~] +OutputSigType2058=Digital +OutputCue2059=[~UNUSED3~] +OutputSigType2059=Digital +OutputCue2060=[~UNUSED3~] +OutputSigType2060=Digital +OutputCue2061=[~UNUSED3~] +OutputSigType2061=Digital +OutputCue2062=[~UNUSED3~] +OutputSigType2062=Digital +OutputCue2063=[~UNUSED3~] +OutputSigType2063=Digital +OutputCue2064=[~UNUSED3~] +OutputSigType2064=Digital +OutputCue2065=[~UNUSED3~] +OutputSigType2065=Digital +OutputCue2066=[~UNUSED3~] +OutputSigType2066=Digital +OutputCue2067=[~UNUSED3~] +OutputSigType2067=Digital +OutputCue2068=[~UNUSED3~] +OutputSigType2068=Digital +OutputCue2069=[~UNUSED3~] +OutputSigType2069=Digital +OutputCue2070=[~UNUSED3~] +OutputSigType2070=Digital +OutputCue2071=[~UNUSED3~] +OutputSigType2071=Digital +OutputCue2072=[~UNUSED3~] +OutputSigType2072=Digital +OutputCue2073=[~UNUSED3~] +OutputSigType2073=Digital +OutputCue2074=[~UNUSED3~] +OutputSigType2074=Digital +OutputCue2075=[~UNUSED3~] +OutputSigType2075=Digital +OutputCue2076=[~UNUSED3~] +OutputSigType2076=Digital +OutputCue2077=[~UNUSED3~] +OutputSigType2077=Digital +OutputCue2078=[~UNUSED3~] +OutputSigType2078=Digital +OutputCue2079=[~UNUSED3~] +OutputSigType2079=Digital +OutputCue2080=[~UNUSED3~] +OutputSigType2080=Digital +OutputCue2081=[~UNUSED3~] +OutputSigType2081=Digital +OutputCue2082=[~UNUSED3~] +OutputSigType2082=Digital +OutputCue2083=[~UNUSED3~] +OutputSigType2083=Digital +OutputCue2084=[~UNUSED3~] +OutputSigType2084=Digital +OutputCue2085=[~UNUSED3~] +OutputSigType2085=Digital +OutputCue2086=[~UNUSED3~] +OutputSigType2086=Digital +OutputCue2087=[~UNUSED3~] +OutputSigType2087=Digital +OutputCue2088=[~UNUSED3~] +OutputSigType2088=Digital +OutputCue2089=[~UNUSED3~] +OutputSigType2089=Digital +OutputCue2090=[~UNUSED3~] +OutputSigType2090=Digital +OutputCue2091=[~UNUSED3~] +OutputSigType2091=Digital +OutputCue2092=[~UNUSED3~] +OutputSigType2092=Digital +OutputCue2093=[~UNUSED3~] +OutputSigType2093=Digital +OutputCue2094=[~UNUSED3~] +OutputSigType2094=Digital +OutputCue2095=[~UNUSED3~] +OutputSigType2095=Digital +OutputCue2096=[~UNUSED3~] +OutputSigType2096=Digital +OutputCue2097=[~UNUSED3~] +OutputSigType2097=Digital +OutputCue2098=[~UNUSED3~] +OutputSigType2098=Digital +OutputCue2099=[~UNUSED3~] +OutputSigType2099=Digital +OutputCue2100=[~UNUSED3~] +OutputSigType2100=Digital +OutputCue2101=[~UNUSED3~] +OutputSigType2101=Digital +OutputCue2102=[~UNUSED3~] +OutputSigType2102=Digital +OutputCue2103=[~UNUSED3~] +OutputSigType2103=Digital +OutputCue2104=[~UNUSED3~] +OutputSigType2104=Digital +OutputCue2105=[~UNUSED3~] +OutputSigType2105=Digital +OutputCue2106=[~UNUSED3~] +OutputSigType2106=Digital +OutputCue2107=[~UNUSED3~] +OutputSigType2107=Digital +OutputCue2108=[~UNUSED3~] +OutputSigType2108=Digital +OutputCue2109=[~UNUSED3~] +OutputSigType2109=Digital +OutputCue2110=[~UNUSED3~] +OutputSigType2110=Digital +OutputCue2111=[~UNUSED3~] +OutputSigType2111=Digital +OutputCue2112=[~UNUSED3~] +OutputSigType2112=Digital +OutputCue2113=[~UNUSED3~] +OutputSigType2113=Digital +OutputCue2114=[~UNUSED2~] +OutputSigType2114=Digital|Analog|Serial|String +OutputCue4014=[~EndGroup~]Visible +OutputSigType4014=Digital +OutputCue4015=[~BeginGroup~]Press +OutputSigType4015=Digital +OutputCue4016=press1 +OutputSigType4016=Digital +OutputCue4017=press2 +OutputSigType4017=Digital +OutputCue4018=press3 +OutputSigType4018=Digital +OutputCue4019=press4 +OutputSigType4019=Digital +OutputCue4020=press5 +OutputSigType4020=Digital +OutputCue4021=press6 +OutputSigType4021=Digital +OutputCue4022=press7 +OutputSigType4022=Digital +OutputCue4023=press8 +OutputSigType4023=Digital +OutputCue4024=press9 +OutputSigType4024=Digital +OutputCue4025=press10 +OutputSigType4025=Digital +OutputCue4026=press11 +OutputSigType4026=Digital +OutputCue4027=press12 +OutputSigType4027=Digital +OutputCue4028=press13 +OutputSigType4028=Digital +OutputCue4029=press14 +OutputSigType4029=Digital +OutputCue4030=press15 +OutputSigType4030=Digital +OutputCue4031=press16 +OutputSigType4031=Digital +OutputCue4032=press17 +OutputSigType4032=Digital +OutputCue4033=press18 +OutputSigType4033=Digital +OutputCue4034=press19 +OutputSigType4034=Digital +OutputCue4035=press20 +OutputSigType4035=Digital +OutputCue4036=press21 +OutputSigType4036=Digital +OutputCue4037=press22 +OutputSigType4037=Digital +OutputCue4038=press23 +OutputSigType4038=Digital +OutputCue4039=press24 +OutputSigType4039=Digital +OutputCue4040=press25 +OutputSigType4040=Digital +OutputCue4041=press26 +OutputSigType4041=Digital +OutputCue4042=press27 +OutputSigType4042=Digital +OutputCue4043=press28 +OutputSigType4043=Digital +OutputCue4044=press29 +OutputSigType4044=Digital +OutputCue4045=press30 +OutputSigType4045=Digital +OutputCue4046=press31 +OutputSigType4046=Digital +OutputCue4047=press32 +OutputSigType4047=Digital +OutputCue4048=press33 +OutputSigType4048=Digital +OutputCue4049=press34 +OutputSigType4049=Digital +OutputCue4050=press35 +OutputSigType4050=Digital +OutputCue4051=press36 +OutputSigType4051=Digital +OutputCue4052=press37 +OutputSigType4052=Digital +OutputCue4053=press38 +OutputSigType4053=Digital +OutputCue4054=press39 +OutputSigType4054=Digital +OutputCue4055=press40 +OutputSigType4055=Digital +OutputCue4056=press41 +OutputSigType4056=Digital +OutputCue4057=press42 +OutputSigType4057=Digital +OutputCue4058=press43 +OutputSigType4058=Digital +OutputCue4059=press44 +OutputSigType4059=Digital +OutputCue4060=press45 +OutputSigType4060=Digital +OutputCue4061=press46 +OutputSigType4061=Digital +OutputCue4062=press47 +OutputSigType4062=Digital +OutputCue4063=press48 +OutputSigType4063=Digital +OutputCue4064=press49 +OutputSigType4064=Digital +OutputCue4065=press50 +OutputSigType4065=Digital +OutputCue4066=press51 +OutputSigType4066=Digital +OutputCue4067=press52 +OutputSigType4067=Digital +OutputCue4068=press53 +OutputSigType4068=Digital +OutputCue4069=press54 +OutputSigType4069=Digital +OutputCue4070=press55 +OutputSigType4070=Digital +OutputCue4071=press56 +OutputSigType4071=Digital +OutputCue4072=press57 +OutputSigType4072=Digital +OutputCue4073=press58 +OutputSigType4073=Digital +OutputCue4074=press59 +OutputSigType4074=Digital +OutputCue4075=press60 +OutputSigType4075=Digital +OutputCue4076=press61 +OutputSigType4076=Digital +OutputCue4077=press62 +OutputSigType4077=Digital +OutputCue4078=press63 +OutputSigType4078=Digital +OutputCue4079=press64 +OutputSigType4079=Digital +OutputCue4080=press65 +OutputSigType4080=Digital +OutputCue4081=press66 +OutputSigType4081=Digital +OutputCue4082=press67 +OutputSigType4082=Digital +OutputCue4083=press68 +OutputSigType4083=Digital +OutputCue4084=press69 +OutputSigType4084=Digital +OutputCue4085=press70 +OutputSigType4085=Digital +OutputCue4086=press71 +OutputSigType4086=Digital +OutputCue4087=press72 +OutputSigType4087=Digital +OutputCue4088=press73 +OutputSigType4088=Digital +OutputCue4089=press74 +OutputSigType4089=Digital +OutputCue4090=press75 +OutputSigType4090=Digital +OutputCue4091=press76 +OutputSigType4091=Digital +OutputCue4092=press77 +OutputSigType4092=Digital +OutputCue4093=press78 +OutputSigType4093=Digital +OutputCue4094=press79 +OutputSigType4094=Digital +OutputCue4095=press80 +OutputSigType4095=Digital +OutputCue4096=press81 +OutputSigType4096=Digital +OutputCue4097=press82 +OutputSigType4097=Digital +OutputCue4098=press83 +OutputSigType4098=Digital +OutputCue4099=press84 +OutputSigType4099=Digital +OutputCue4100=press85 +OutputSigType4100=Digital +OutputCue4101=press86 +OutputSigType4101=Digital +OutputCue4102=press87 +OutputSigType4102=Digital +OutputCue4103=press88 +OutputSigType4103=Digital +OutputCue4104=press89 +OutputSigType4104=Digital +OutputCue4105=press90 +OutputSigType4105=Digital +OutputCue4106=press91 +OutputSigType4106=Digital +OutputCue4107=press92 +OutputSigType4107=Digital +OutputCue4108=press93 +OutputSigType4108=Digital +OutputCue4109=press94 +OutputSigType4109=Digital +OutputCue4110=press95 +OutputSigType4110=Digital +OutputCue4111=press96 +OutputSigType4111=Digital +OutputCue4112=press97 +OutputSigType4112=Digital +OutputCue4113=press98 +OutputSigType4113=Digital +OutputCue4114=press99 +OutputSigType4114=Digital +OutputCue4115=press100 +OutputSigType4115=Digital +OutputCue4116=press101 +OutputSigType4116=Digital +OutputCue4117=press102 +OutputSigType4117=Digital +OutputCue4118=press103 +OutputSigType4118=Digital +OutputCue4119=press104 +OutputSigType4119=Digital +OutputCue4120=press105 +OutputSigType4120=Digital +OutputCue4121=press106 +OutputSigType4121=Digital +OutputCue4122=press107 +OutputSigType4122=Digital +OutputCue4123=press108 +OutputSigType4123=Digital +OutputCue4124=press109 +OutputSigType4124=Digital +OutputCue4125=press110 +OutputSigType4125=Digital +OutputCue4126=press111 +OutputSigType4126=Digital +OutputCue4127=press112 +OutputSigType4127=Digital +OutputCue4128=press113 +OutputSigType4128=Digital +OutputCue4129=press114 +OutputSigType4129=Digital +OutputCue4130=press115 +OutputSigType4130=Digital +OutputCue4131=press116 +OutputSigType4131=Digital +OutputCue4132=press117 +OutputSigType4132=Digital +OutputCue4133=press118 +OutputSigType4133=Digital +OutputCue4134=press119 +OutputSigType4134=Digital +OutputCue4135=press120 +OutputSigType4135=Digital +OutputCue4136=press121 +OutputSigType4136=Digital +OutputCue4137=press122 +OutputSigType4137=Digital +OutputCue4138=press123 +OutputSigType4138=Digital +OutputCue4139=press124 +OutputSigType4139=Digital +OutputCue4140=press125 +OutputSigType4140=Digital +OutputCue4141=press126 +OutputSigType4141=Digital +OutputCue4142=press127 +OutputSigType4142=Digital +OutputCue4143=press128 +OutputSigType4143=Digital +OutputCue4144=press129 +OutputSigType4144=Digital +OutputCue4145=press130 +OutputSigType4145=Digital +OutputCue4146=press131 +OutputSigType4146=Digital +OutputCue4147=press132 +OutputSigType4147=Digital +OutputCue4148=press133 +OutputSigType4148=Digital +OutputCue4149=press134 +OutputSigType4149=Digital +OutputCue4150=press135 +OutputSigType4150=Digital +OutputCue4151=press136 +OutputSigType4151=Digital +OutputCue4152=press137 +OutputSigType4152=Digital +OutputCue4153=press138 +OutputSigType4153=Digital +OutputCue4154=press139 +OutputSigType4154=Digital +OutputCue4155=press140 +OutputSigType4155=Digital +OutputCue4156=press141 +OutputSigType4156=Digital +OutputCue4157=press142 +OutputSigType4157=Digital +OutputCue4158=press143 +OutputSigType4158=Digital +OutputCue4159=press144 +OutputSigType4159=Digital +OutputCue4160=press145 +OutputSigType4160=Digital +OutputCue4161=press146 +OutputSigType4161=Digital +OutputCue4162=press147 +OutputSigType4162=Digital +OutputCue4163=press148 +OutputSigType4163=Digital +OutputCue4164=press149 +OutputSigType4164=Digital +OutputCue4165=press150 +OutputSigType4165=Digital +OutputCue4166=press151 +OutputSigType4166=Digital +OutputCue4167=press152 +OutputSigType4167=Digital +OutputCue4168=press153 +OutputSigType4168=Digital +OutputCue4169=press154 +OutputSigType4169=Digital +OutputCue4170=press155 +OutputSigType4170=Digital +OutputCue4171=press156 +OutputSigType4171=Digital +OutputCue4172=press157 +OutputSigType4172=Digital +OutputCue4173=press158 +OutputSigType4173=Digital +OutputCue4174=press159 +OutputSigType4174=Digital +OutputCue4175=press160 +OutputSigType4175=Digital +OutputCue4176=press161 +OutputSigType4176=Digital +OutputCue4177=press162 +OutputSigType4177=Digital +OutputCue4178=press163 +OutputSigType4178=Digital +OutputCue4179=press164 +OutputSigType4179=Digital +OutputCue4180=press165 +OutputSigType4180=Digital +OutputCue4181=press166 +OutputSigType4181=Digital +OutputCue4182=press167 +OutputSigType4182=Digital +OutputCue4183=press168 +OutputSigType4183=Digital +OutputCue4184=press169 +OutputSigType4184=Digital +OutputCue4185=press170 +OutputSigType4185=Digital +OutputCue4186=press171 +OutputSigType4186=Digital +OutputCue4187=press172 +OutputSigType4187=Digital +OutputCue4188=press173 +OutputSigType4188=Digital +OutputCue4189=press174 +OutputSigType4189=Digital +OutputCue4190=press175 +OutputSigType4190=Digital +OutputCue4191=press176 +OutputSigType4191=Digital +OutputCue4192=press177 +OutputSigType4192=Digital +OutputCue4193=press178 +OutputSigType4193=Digital +OutputCue4194=press179 +OutputSigType4194=Digital +OutputCue4195=press180 +OutputSigType4195=Digital +OutputCue4196=press181 +OutputSigType4196=Digital +OutputCue4197=press182 +OutputSigType4197=Digital +OutputCue4198=press183 +OutputSigType4198=Digital +OutputCue4199=press184 +OutputSigType4199=Digital +OutputCue4200=press185 +OutputSigType4200=Digital +OutputCue4201=press186 +OutputSigType4201=Digital +OutputCue4202=press187 +OutputSigType4202=Digital +OutputCue4203=press188 +OutputSigType4203=Digital +OutputCue4204=press189 +OutputSigType4204=Digital +OutputCue4205=press190 +OutputSigType4205=Digital +OutputCue4206=press191 +OutputSigType4206=Digital +OutputCue4207=press192 +OutputSigType4207=Digital +OutputCue4208=press193 +OutputSigType4208=Digital +OutputCue4209=press194 +OutputSigType4209=Digital +OutputCue4210=press195 +OutputSigType4210=Digital +OutputCue4211=press196 +OutputSigType4211=Digital +OutputCue4212=press197 +OutputSigType4212=Digital +OutputCue4213=press198 +OutputSigType4213=Digital +OutputCue4214=press199 +OutputSigType4214=Digital +OutputCue4215=press200 +OutputSigType4215=Digital +OutputCue4216=press201 +OutputSigType4216=Digital +OutputCue4217=press202 +OutputSigType4217=Digital +OutputCue4218=press203 +OutputSigType4218=Digital +OutputCue4219=press204 +OutputSigType4219=Digital +OutputCue4220=press205 +OutputSigType4220=Digital +OutputCue4221=press206 +OutputSigType4221=Digital +OutputCue4222=press207 +OutputSigType4222=Digital +OutputCue4223=press208 +OutputSigType4223=Digital +OutputCue4224=press209 +OutputSigType4224=Digital +OutputCue4225=press210 +OutputSigType4225=Digital +OutputCue4226=press211 +OutputSigType4226=Digital +OutputCue4227=press212 +OutputSigType4227=Digital +OutputCue4228=press213 +OutputSigType4228=Digital +OutputCue4229=press214 +OutputSigType4229=Digital +OutputCue4230=press215 +OutputSigType4230=Digital +OutputCue4231=press216 +OutputSigType4231=Digital +OutputCue4232=press217 +OutputSigType4232=Digital +OutputCue4233=press218 +OutputSigType4233=Digital +OutputCue4234=press219 +OutputSigType4234=Digital +OutputCue4235=press220 +OutputSigType4235=Digital +OutputCue4236=press221 +OutputSigType4236=Digital +OutputCue4237=press222 +OutputSigType4237=Digital +OutputCue4238=press223 +OutputSigType4238=Digital +OutputCue4239=press224 +OutputSigType4239=Digital +OutputCue4240=press225 +OutputSigType4240=Digital +OutputCue4241=press226 +OutputSigType4241=Digital +OutputCue4242=press227 +OutputSigType4242=Digital +OutputCue4243=press228 +OutputSigType4243=Digital +OutputCue4244=press229 +OutputSigType4244=Digital +OutputCue4245=press230 +OutputSigType4245=Digital +OutputCue4246=press231 +OutputSigType4246=Digital +OutputCue4247=press232 +OutputSigType4247=Digital +OutputCue4248=press233 +OutputSigType4248=Digital +OutputCue4249=press234 +OutputSigType4249=Digital +OutputCue4250=press235 +OutputSigType4250=Digital +OutputCue4251=press236 +OutputSigType4251=Digital +OutputCue4252=press237 +OutputSigType4252=Digital +OutputCue4253=press238 +OutputSigType4253=Digital +OutputCue4254=press239 +OutputSigType4254=Digital +OutputCue4255=press240 +OutputSigType4255=Digital +OutputCue4256=press241 +OutputSigType4256=Digital +OutputCue4257=press242 +OutputSigType4257=Digital +OutputCue4258=press243 +OutputSigType4258=Digital +OutputCue4259=press244 +OutputSigType4259=Digital +OutputCue4260=press245 +OutputSigType4260=Digital +OutputCue4261=press246 +OutputSigType4261=Digital +OutputCue4262=press247 +OutputSigType4262=Digital +OutputCue4263=press248 +OutputSigType4263=Digital +OutputCue4264=press249 +OutputSigType4264=Digital +OutputCue4265=press250 +OutputSigType4265=Digital +OutputCue4266=press251 +OutputSigType4266=Digital +OutputCue4267=press252 +OutputSigType4267=Digital +OutputCue4268=press253 +OutputSigType4268=Digital +OutputCue4269=press254 +OutputSigType4269=Digital +OutputCue4270=press255 +OutputSigType4270=Digital +OutputCue4271=press256 +OutputSigType4271=Digital +OutputCue4272=press257 +OutputSigType4272=Digital +OutputCue4273=press258 +OutputSigType4273=Digital +OutputCue4274=press259 +OutputSigType4274=Digital +OutputCue4275=press260 +OutputSigType4275=Digital +OutputCue4276=press261 +OutputSigType4276=Digital +OutputCue4277=press262 +OutputSigType4277=Digital +OutputCue4278=press263 +OutputSigType4278=Digital +OutputCue4279=press264 +OutputSigType4279=Digital +OutputCue4280=press265 +OutputSigType4280=Digital +OutputCue4281=press266 +OutputSigType4281=Digital +OutputCue4282=press267 +OutputSigType4282=Digital +OutputCue4283=press268 +OutputSigType4283=Digital +OutputCue4284=press269 +OutputSigType4284=Digital +OutputCue4285=press270 +OutputSigType4285=Digital +OutputCue4286=press271 +OutputSigType4286=Digital +OutputCue4287=press272 +OutputSigType4287=Digital +OutputCue4288=press273 +OutputSigType4288=Digital +OutputCue4289=press274 +OutputSigType4289=Digital +OutputCue4290=press275 +OutputSigType4290=Digital +OutputCue4291=press276 +OutputSigType4291=Digital +OutputCue4292=press277 +OutputSigType4292=Digital +OutputCue4293=press278 +OutputSigType4293=Digital +OutputCue4294=press279 +OutputSigType4294=Digital +OutputCue4295=press280 +OutputSigType4295=Digital +OutputCue4296=press281 +OutputSigType4296=Digital +OutputCue4297=press282 +OutputSigType4297=Digital +OutputCue4298=press283 +OutputSigType4298=Digital +OutputCue4299=press284 +OutputSigType4299=Digital +OutputCue4300=press285 +OutputSigType4300=Digital +OutputCue4301=press286 +OutputSigType4301=Digital +OutputCue4302=press287 +OutputSigType4302=Digital +OutputCue4303=press288 +OutputSigType4303=Digital +OutputCue4304=press289 +OutputSigType4304=Digital +OutputCue4305=press290 +OutputSigType4305=Digital +OutputCue4306=press291 +OutputSigType4306=Digital +OutputCue4307=press292 +OutputSigType4307=Digital +OutputCue4308=press293 +OutputSigType4308=Digital +OutputCue4309=press294 +OutputSigType4309=Digital +OutputCue4310=press295 +OutputSigType4310=Digital +OutputCue4311=press296 +OutputSigType4311=Digital +OutputCue4312=press297 +OutputSigType4312=Digital +OutputCue4313=press298 +OutputSigType4313=Digital +OutputCue4314=press299 +OutputSigType4314=Digital +OutputCue4315=press300 +OutputSigType4315=Digital +OutputCue4316=[~EndGroup~]Press +OutputSigType4316=Digital +InputList2Cue1=[~UNUSED3~] +InputList2SigType1=Analog +InputList2Cue2=Scroll To Item +InputList2SigType2=Analog +InputList2Cue3=Set Number of Items +InputList2SigType3=Analog +OutputList2Cue1=Item Clicked +OutputList2SigType1=Analog +OutputList2Cue2=[~UNUSED3~] +OutputList2SigType2=Analog +OutputList2Cue3=[~UNUSED3~] +OutputList2SigType3=Analog +InputList3Cue1=[~UNUSED2~] +InputList3SigType1=Serial +InputList3Cue2=[~UNUSED2~] +InputList3SigType2=Serial +InputList3Cue3=[~UNUSED2~] +InputList3SigType3=Serial +InputList3Cue4=[~UNUSED2~] +InputList3SigType4=Serial +InputList3Cue5=[~UNUSED2~] +InputList3SigType5=Serial +InputList3Cue6=[~UNUSED2~] +InputList3SigType6=Serial +InputList3Cue7=[~UNUSED2~] +InputList3SigType7=Serial +InputList3Cue8=[~UNUSED2~] +InputList3SigType8=Serial +InputList3Cue9=[~UNUSED2~] +InputList3SigType9=Serial +InputList3Cue10=[~UNUSED2~] +InputList3SigType10=Serial +InputList3Cue11=[~BeginGroup~]text-o +InputList3SigType11=Serial +InputList3Cue12=text-o1 +InputList3SigType12=Serial +InputList3Cue13=text-o2 +InputList3SigType13=Serial +InputList3Cue14=text-o3 +InputList3SigType14=Serial +InputList3Cue15=text-o4 +InputList3SigType15=Serial +InputList3Cue16=text-o5 +InputList3SigType16=Serial +InputList3Cue17=text-o6 +InputList3SigType17=Serial +InputList3Cue18=text-o7 +InputList3SigType18=Serial +InputList3Cue19=text-o8 +InputList3SigType19=Serial +InputList3Cue20=text-o9 +InputList3SigType20=Serial +InputList3Cue21=text-o10 +InputList3SigType21=Serial +InputList3Cue22=text-o11 +InputList3SigType22=Serial +InputList3Cue23=text-o12 +InputList3SigType23=Serial +InputList3Cue24=text-o13 +InputList3SigType24=Serial +InputList3Cue25=text-o14 +InputList3SigType25=Serial +InputList3Cue26=text-o15 +InputList3SigType26=Serial +InputList3Cue27=text-o16 +InputList3SigType27=Serial +InputList3Cue28=text-o17 +InputList3SigType28=Serial +InputList3Cue29=text-o18 +InputList3SigType29=Serial +InputList3Cue30=text-o19 +InputList3SigType30=Serial +InputList3Cue31=text-o20 +InputList3SigType31=Serial +InputList3Cue32=text-o21 +InputList3SigType32=Serial +InputList3Cue33=text-o22 +InputList3SigType33=Serial +InputList3Cue34=text-o23 +InputList3SigType34=Serial +InputList3Cue35=text-o24 +InputList3SigType35=Serial +InputList3Cue36=text-o25 +InputList3SigType36=Serial +InputList3Cue37=text-o26 +InputList3SigType37=Serial +InputList3Cue38=text-o27 +InputList3SigType38=Serial +InputList3Cue39=text-o28 +InputList3SigType39=Serial +InputList3Cue40=text-o29 +InputList3SigType40=Serial +InputList3Cue41=text-o30 +InputList3SigType41=Serial +InputList3Cue42=text-o31 +InputList3SigType42=Serial +InputList3Cue43=text-o32 +InputList3SigType43=Serial +InputList3Cue44=text-o33 +InputList3SigType44=Serial +InputList3Cue45=text-o34 +InputList3SigType45=Serial +InputList3Cue46=text-o35 +InputList3SigType46=Serial +InputList3Cue47=text-o36 +InputList3SigType47=Serial +InputList3Cue48=text-o37 +InputList3SigType48=Serial +InputList3Cue49=text-o38 +InputList3SigType49=Serial +InputList3Cue50=text-o39 +InputList3SigType50=Serial +InputList3Cue51=text-o40 +InputList3SigType51=Serial +InputList3Cue52=text-o41 +InputList3SigType52=Serial +InputList3Cue53=text-o42 +InputList3SigType53=Serial +InputList3Cue54=text-o43 +InputList3SigType54=Serial +InputList3Cue55=text-o44 +InputList3SigType55=Serial +InputList3Cue56=text-o45 +InputList3SigType56=Serial +InputList3Cue57=text-o46 +InputList3SigType57=Serial +InputList3Cue58=text-o47 +InputList3SigType58=Serial +InputList3Cue59=text-o48 +InputList3SigType59=Serial +InputList3Cue60=text-o49 +InputList3SigType60=Serial +InputList3Cue61=text-o50 +InputList3SigType61=Serial +InputList3Cue62=text-o51 +InputList3SigType62=Serial +InputList3Cue63=text-o52 +InputList3SigType63=Serial +InputList3Cue64=text-o53 +InputList3SigType64=Serial +InputList3Cue65=text-o54 +InputList3SigType65=Serial +InputList3Cue66=text-o55 +InputList3SigType66=Serial +InputList3Cue67=text-o56 +InputList3SigType67=Serial +InputList3Cue68=text-o57 +InputList3SigType68=Serial +InputList3Cue69=text-o58 +InputList3SigType69=Serial +InputList3Cue70=text-o59 +InputList3SigType70=Serial +InputList3Cue71=text-o60 +InputList3SigType71=Serial +InputList3Cue72=text-o61 +InputList3SigType72=Serial +InputList3Cue73=text-o62 +InputList3SigType73=Serial +InputList3Cue74=text-o63 +InputList3SigType74=Serial +InputList3Cue75=text-o64 +InputList3SigType75=Serial +InputList3Cue76=text-o65 +InputList3SigType76=Serial +InputList3Cue77=text-o66 +InputList3SigType77=Serial +InputList3Cue78=text-o67 +InputList3SigType78=Serial +InputList3Cue79=text-o68 +InputList3SigType79=Serial +InputList3Cue80=text-o69 +InputList3SigType80=Serial +InputList3Cue81=text-o70 +InputList3SigType81=Serial +InputList3Cue82=text-o71 +InputList3SigType82=Serial +InputList3Cue83=text-o72 +InputList3SigType83=Serial +InputList3Cue84=text-o73 +InputList3SigType84=Serial +InputList3Cue85=text-o74 +InputList3SigType85=Serial +InputList3Cue86=text-o75 +InputList3SigType86=Serial +InputList3Cue87=text-o76 +InputList3SigType87=Serial +InputList3Cue88=text-o77 +InputList3SigType88=Serial +InputList3Cue89=text-o78 +InputList3SigType89=Serial +InputList3Cue90=text-o79 +InputList3SigType90=Serial +InputList3Cue91=text-o80 +InputList3SigType91=Serial +InputList3Cue92=text-o81 +InputList3SigType92=Serial +InputList3Cue93=text-o82 +InputList3SigType93=Serial +InputList3Cue94=text-o83 +InputList3SigType94=Serial +InputList3Cue95=text-o84 +InputList3SigType95=Serial +InputList3Cue96=text-o85 +InputList3SigType96=Serial +InputList3Cue97=text-o86 +InputList3SigType97=Serial +InputList3Cue98=text-o87 +InputList3SigType98=Serial +InputList3Cue99=text-o88 +InputList3SigType99=Serial +InputList3Cue100=text-o89 +InputList3SigType100=Serial +InputList3Cue101=text-o90 +InputList3SigType101=Serial +InputList3Cue102=text-o91 +InputList3SigType102=Serial +InputList3Cue103=text-o92 +InputList3SigType103=Serial +InputList3Cue104=text-o93 +InputList3SigType104=Serial +InputList3Cue105=text-o94 +InputList3SigType105=Serial +InputList3Cue106=text-o95 +InputList3SigType106=Serial +InputList3Cue107=text-o96 +InputList3SigType107=Serial +InputList3Cue108=text-o97 +InputList3SigType108=Serial +InputList3Cue109=text-o98 +InputList3SigType109=Serial +InputList3Cue110=text-o99 +InputList3SigType110=Serial +InputList3Cue111=text-o100 +InputList3SigType111=Serial +InputList3Cue112=text-o101 +InputList3SigType112=Serial +InputList3Cue113=text-o102 +InputList3SigType113=Serial +InputList3Cue114=text-o103 +InputList3SigType114=Serial +InputList3Cue115=text-o104 +InputList3SigType115=Serial +InputList3Cue116=text-o105 +InputList3SigType116=Serial +InputList3Cue117=text-o106 +InputList3SigType117=Serial +InputList3Cue118=text-o107 +InputList3SigType118=Serial +InputList3Cue119=text-o108 +InputList3SigType119=Serial +InputList3Cue120=text-o109 +InputList3SigType120=Serial +InputList3Cue121=text-o110 +InputList3SigType121=Serial +InputList3Cue122=text-o111 +InputList3SigType122=Serial +InputList3Cue123=text-o112 +InputList3SigType123=Serial +InputList3Cue124=text-o113 +InputList3SigType124=Serial +InputList3Cue125=text-o114 +InputList3SigType125=Serial +InputList3Cue126=text-o115 +InputList3SigType126=Serial +InputList3Cue127=text-o116 +InputList3SigType127=Serial +InputList3Cue128=text-o117 +InputList3SigType128=Serial +InputList3Cue129=text-o118 +InputList3SigType129=Serial +InputList3Cue130=text-o119 +InputList3SigType130=Serial +InputList3Cue131=text-o120 +InputList3SigType131=Serial +InputList3Cue132=text-o121 +InputList3SigType132=Serial +InputList3Cue133=text-o122 +InputList3SigType133=Serial +InputList3Cue134=text-o123 +InputList3SigType134=Serial +InputList3Cue135=text-o124 +InputList3SigType135=Serial +InputList3Cue136=text-o125 +InputList3SigType136=Serial +InputList3Cue137=text-o126 +InputList3SigType137=Serial +InputList3Cue138=text-o127 +InputList3SigType138=Serial +InputList3Cue139=text-o128 +InputList3SigType139=Serial +InputList3Cue140=text-o129 +InputList3SigType140=Serial +InputList3Cue141=text-o130 +InputList3SigType141=Serial +InputList3Cue142=text-o131 +InputList3SigType142=Serial +InputList3Cue143=text-o132 +InputList3SigType143=Serial +InputList3Cue144=text-o133 +InputList3SigType144=Serial +InputList3Cue145=text-o134 +InputList3SigType145=Serial +InputList3Cue146=text-o135 +InputList3SigType146=Serial +InputList3Cue147=text-o136 +InputList3SigType147=Serial +InputList3Cue148=text-o137 +InputList3SigType148=Serial +InputList3Cue149=text-o138 +InputList3SigType149=Serial +InputList3Cue150=text-o139 +InputList3SigType150=Serial +InputList3Cue151=text-o140 +InputList3SigType151=Serial +InputList3Cue152=text-o141 +InputList3SigType152=Serial +InputList3Cue153=text-o142 +InputList3SigType153=Serial +InputList3Cue154=text-o143 +InputList3SigType154=Serial +InputList3Cue155=text-o144 +InputList3SigType155=Serial +InputList3Cue156=text-o145 +InputList3SigType156=Serial +InputList3Cue157=text-o146 +InputList3SigType157=Serial +InputList3Cue158=text-o147 +InputList3SigType158=Serial +InputList3Cue159=text-o148 +InputList3SigType159=Serial +InputList3Cue160=text-o149 +InputList3SigType160=Serial +InputList3Cue161=text-o150 +InputList3SigType161=Serial +InputList3Cue162=text-o151 +InputList3SigType162=Serial +InputList3Cue163=text-o152 +InputList3SigType163=Serial +InputList3Cue164=text-o153 +InputList3SigType164=Serial +InputList3Cue165=text-o154 +InputList3SigType165=Serial +InputList3Cue166=text-o155 +InputList3SigType166=Serial +InputList3Cue167=text-o156 +InputList3SigType167=Serial +InputList3Cue168=text-o157 +InputList3SigType168=Serial +InputList3Cue169=text-o158 +InputList3SigType169=Serial +InputList3Cue170=text-o159 +InputList3SigType170=Serial +InputList3Cue171=text-o160 +InputList3SigType171=Serial +InputList3Cue172=text-o161 +InputList3SigType172=Serial +InputList3Cue173=text-o162 +InputList3SigType173=Serial +InputList3Cue174=text-o163 +InputList3SigType174=Serial +InputList3Cue175=text-o164 +InputList3SigType175=Serial +InputList3Cue176=text-o165 +InputList3SigType176=Serial +InputList3Cue177=text-o166 +InputList3SigType177=Serial +InputList3Cue178=text-o167 +InputList3SigType178=Serial +InputList3Cue179=text-o168 +InputList3SigType179=Serial +InputList3Cue180=text-o169 +InputList3SigType180=Serial +InputList3Cue181=text-o170 +InputList3SigType181=Serial +InputList3Cue182=text-o171 +InputList3SigType182=Serial +InputList3Cue183=text-o172 +InputList3SigType183=Serial +InputList3Cue184=text-o173 +InputList3SigType184=Serial +InputList3Cue185=text-o174 +InputList3SigType185=Serial +InputList3Cue186=text-o175 +InputList3SigType186=Serial +InputList3Cue187=text-o176 +InputList3SigType187=Serial +InputList3Cue188=text-o177 +InputList3SigType188=Serial +InputList3Cue189=text-o178 +InputList3SigType189=Serial +InputList3Cue190=text-o179 +InputList3SigType190=Serial +InputList3Cue191=text-o180 +InputList3SigType191=Serial +InputList3Cue192=text-o181 +InputList3SigType192=Serial +InputList3Cue193=text-o182 +InputList3SigType193=Serial +InputList3Cue194=text-o183 +InputList3SigType194=Serial +InputList3Cue195=text-o184 +InputList3SigType195=Serial +InputList3Cue196=text-o185 +InputList3SigType196=Serial +InputList3Cue197=text-o186 +InputList3SigType197=Serial +InputList3Cue198=text-o187 +InputList3SigType198=Serial +InputList3Cue199=text-o188 +InputList3SigType199=Serial +InputList3Cue200=text-o189 +InputList3SigType200=Serial +InputList3Cue201=text-o190 +InputList3SigType201=Serial +InputList3Cue202=text-o191 +InputList3SigType202=Serial +InputList3Cue203=text-o192 +InputList3SigType203=Serial +InputList3Cue204=text-o193 +InputList3SigType204=Serial +InputList3Cue205=text-o194 +InputList3SigType205=Serial +InputList3Cue206=text-o195 +InputList3SigType206=Serial +InputList3Cue207=text-o196 +InputList3SigType207=Serial +InputList3Cue208=text-o197 +InputList3SigType208=Serial +InputList3Cue209=text-o198 +InputList3SigType209=Serial +InputList3Cue210=text-o199 +InputList3SigType210=Serial +InputList3Cue211=text-o200 +InputList3SigType211=Serial +InputList3Cue212=text-o201 +InputList3SigType212=Serial +InputList3Cue213=text-o202 +InputList3SigType213=Serial +InputList3Cue214=text-o203 +InputList3SigType214=Serial +InputList3Cue215=text-o204 +InputList3SigType215=Serial +InputList3Cue216=text-o205 +InputList3SigType216=Serial +InputList3Cue217=text-o206 +InputList3SigType217=Serial +InputList3Cue218=text-o207 +InputList3SigType218=Serial +InputList3Cue219=text-o208 +InputList3SigType219=Serial +InputList3Cue220=text-o209 +InputList3SigType220=Serial +InputList3Cue221=text-o210 +InputList3SigType221=Serial +InputList3Cue222=text-o211 +InputList3SigType222=Serial +InputList3Cue223=text-o212 +InputList3SigType223=Serial +InputList3Cue224=text-o213 +InputList3SigType224=Serial +InputList3Cue225=text-o214 +InputList3SigType225=Serial +InputList3Cue226=text-o215 +InputList3SigType226=Serial +InputList3Cue227=text-o216 +InputList3SigType227=Serial +InputList3Cue228=text-o217 +InputList3SigType228=Serial +InputList3Cue229=text-o218 +InputList3SigType229=Serial +InputList3Cue230=text-o219 +InputList3SigType230=Serial +InputList3Cue231=text-o220 +InputList3SigType231=Serial +InputList3Cue232=text-o221 +InputList3SigType232=Serial +InputList3Cue233=text-o222 +InputList3SigType233=Serial +InputList3Cue234=text-o223 +InputList3SigType234=Serial +InputList3Cue235=text-o224 +InputList3SigType235=Serial +InputList3Cue236=text-o225 +InputList3SigType236=Serial +InputList3Cue237=text-o226 +InputList3SigType237=Serial +InputList3Cue238=text-o227 +InputList3SigType238=Serial +InputList3Cue239=text-o228 +InputList3SigType239=Serial +InputList3Cue240=text-o229 +InputList3SigType240=Serial +InputList3Cue241=text-o230 +InputList3SigType241=Serial +InputList3Cue242=text-o231 +InputList3SigType242=Serial +InputList3Cue243=text-o232 +InputList3SigType243=Serial +InputList3Cue244=text-o233 +InputList3SigType244=Serial +InputList3Cue245=text-o234 +InputList3SigType245=Serial +InputList3Cue246=text-o235 +InputList3SigType246=Serial +InputList3Cue247=text-o236 +InputList3SigType247=Serial +InputList3Cue248=text-o237 +InputList3SigType248=Serial +InputList3Cue249=text-o238 +InputList3SigType249=Serial +InputList3Cue250=text-o239 +InputList3SigType250=Serial +InputList3Cue251=text-o240 +InputList3SigType251=Serial +InputList3Cue252=text-o241 +InputList3SigType252=Serial +InputList3Cue253=text-o242 +InputList3SigType253=Serial +InputList3Cue254=text-o243 +InputList3SigType254=Serial +InputList3Cue255=text-o244 +InputList3SigType255=Serial +InputList3Cue256=text-o245 +InputList3SigType256=Serial +InputList3Cue257=text-o246 +InputList3SigType257=Serial +InputList3Cue258=text-o247 +InputList3SigType258=Serial +InputList3Cue259=text-o248 +InputList3SigType259=Serial +InputList3Cue260=text-o249 +InputList3SigType260=Serial +InputList3Cue261=text-o250 +InputList3SigType261=Serial +InputList3Cue262=text-o251 +InputList3SigType262=Serial +InputList3Cue263=text-o252 +InputList3SigType263=Serial +InputList3Cue264=text-o253 +InputList3SigType264=Serial +InputList3Cue265=text-o254 +InputList3SigType265=Serial +InputList3Cue266=text-o255 +InputList3SigType266=Serial +InputList3Cue267=text-o256 +InputList3SigType267=Serial +InputList3Cue268=text-o257 +InputList3SigType268=Serial +InputList3Cue269=text-o258 +InputList3SigType269=Serial +InputList3Cue270=text-o259 +InputList3SigType270=Serial +InputList3Cue271=text-o260 +InputList3SigType271=Serial +InputList3Cue272=text-o261 +InputList3SigType272=Serial +InputList3Cue273=text-o262 +InputList3SigType273=Serial +InputList3Cue274=text-o263 +InputList3SigType274=Serial +InputList3Cue275=text-o264 +InputList3SigType275=Serial +InputList3Cue276=text-o265 +InputList3SigType276=Serial +InputList3Cue277=text-o266 +InputList3SigType277=Serial +InputList3Cue278=text-o267 +InputList3SigType278=Serial +InputList3Cue279=text-o268 +InputList3SigType279=Serial +InputList3Cue280=text-o269 +InputList3SigType280=Serial +InputList3Cue281=text-o270 +InputList3SigType281=Serial +InputList3Cue282=text-o271 +InputList3SigType282=Serial +InputList3Cue283=text-o272 +InputList3SigType283=Serial +InputList3Cue284=text-o273 +InputList3SigType284=Serial +InputList3Cue285=text-o274 +InputList3SigType285=Serial +InputList3Cue286=text-o275 +InputList3SigType286=Serial +InputList3Cue287=text-o276 +InputList3SigType287=Serial +InputList3Cue288=text-o277 +InputList3SigType288=Serial +InputList3Cue289=text-o278 +InputList3SigType289=Serial +InputList3Cue290=text-o279 +InputList3SigType290=Serial +InputList3Cue291=text-o280 +InputList3SigType291=Serial +InputList3Cue292=text-o281 +InputList3SigType292=Serial +InputList3Cue293=text-o282 +InputList3SigType293=Serial +InputList3Cue294=text-o283 +InputList3SigType294=Serial +InputList3Cue295=text-o284 +InputList3SigType295=Serial +InputList3Cue296=text-o285 +InputList3SigType296=Serial +InputList3Cue297=text-o286 +InputList3SigType297=Serial +InputList3Cue298=text-o287 +InputList3SigType298=Serial +InputList3Cue299=text-o288 +InputList3SigType299=Serial +InputList3Cue300=text-o289 +InputList3SigType300=Serial +InputList3Cue301=text-o290 +InputList3SigType301=Serial +InputList3Cue302=text-o291 +InputList3SigType302=Serial +InputList3Cue303=text-o292 +InputList3SigType303=Serial +InputList3Cue304=text-o293 +InputList3SigType304=Serial +InputList3Cue305=text-o294 +InputList3SigType305=Serial +InputList3Cue306=text-o295 +InputList3SigType306=Serial +InputList3Cue307=text-o296 +InputList3SigType307=Serial +InputList3Cue308=text-o297 +InputList3SigType308=Serial +InputList3Cue309=text-o298 +InputList3SigType309=Serial +InputList3Cue310=text-o299 +InputList3SigType310=Serial +InputList3Cue311=text-o300 +InputList3SigType311=Serial +InputList3Cue312=text-o301 +InputList3SigType312=Serial +InputList3Cue313=text-o302 +InputList3SigType313=Serial +InputList3Cue314=text-o303 +InputList3SigType314=Serial +InputList3Cue315=text-o304 +InputList3SigType315=Serial +InputList3Cue316=text-o305 +InputList3SigType316=Serial +InputList3Cue317=text-o306 +InputList3SigType317=Serial +InputList3Cue318=text-o307 +InputList3SigType318=Serial +InputList3Cue319=text-o308 +InputList3SigType319=Serial +InputList3Cue320=text-o309 +InputList3SigType320=Serial +InputList3Cue321=text-o310 +InputList3SigType321=Serial +InputList3Cue322=text-o311 +InputList3SigType322=Serial +InputList3Cue323=text-o312 +InputList3SigType323=Serial +InputList3Cue324=text-o313 +InputList3SigType324=Serial +InputList3Cue325=text-o314 +InputList3SigType325=Serial +InputList3Cue326=text-o315 +InputList3SigType326=Serial +InputList3Cue327=text-o316 +InputList3SigType327=Serial +InputList3Cue328=text-o317 +InputList3SigType328=Serial +InputList3Cue329=text-o318 +InputList3SigType329=Serial +InputList3Cue330=text-o319 +InputList3SigType330=Serial +InputList3Cue331=text-o320 +InputList3SigType331=Serial +InputList3Cue332=text-o321 +InputList3SigType332=Serial +InputList3Cue333=text-o322 +InputList3SigType333=Serial +InputList3Cue334=text-o323 +InputList3SigType334=Serial +InputList3Cue335=text-o324 +InputList3SigType335=Serial +InputList3Cue336=text-o325 +InputList3SigType336=Serial +InputList3Cue337=text-o326 +InputList3SigType337=Serial +InputList3Cue338=text-o327 +InputList3SigType338=Serial +InputList3Cue339=text-o328 +InputList3SigType339=Serial +InputList3Cue340=text-o329 +InputList3SigType340=Serial +InputList3Cue341=text-o330 +InputList3SigType341=Serial +InputList3Cue342=text-o331 +InputList3SigType342=Serial +InputList3Cue343=text-o332 +InputList3SigType343=Serial +InputList3Cue344=text-o333 +InputList3SigType344=Serial +InputList3Cue345=text-o334 +InputList3SigType345=Serial +InputList3Cue346=text-o335 +InputList3SigType346=Serial +InputList3Cue347=text-o336 +InputList3SigType347=Serial +InputList3Cue348=text-o337 +InputList3SigType348=Serial +InputList3Cue349=text-o338 +InputList3SigType349=Serial +InputList3Cue350=text-o339 +InputList3SigType350=Serial +InputList3Cue351=text-o340 +InputList3SigType351=Serial +InputList3Cue352=text-o341 +InputList3SigType352=Serial +InputList3Cue353=text-o342 +InputList3SigType353=Serial +InputList3Cue354=text-o343 +InputList3SigType354=Serial +InputList3Cue355=text-o344 +InputList3SigType355=Serial +InputList3Cue356=text-o345 +InputList3SigType356=Serial +InputList3Cue357=text-o346 +InputList3SigType357=Serial +InputList3Cue358=text-o347 +InputList3SigType358=Serial +InputList3Cue359=text-o348 +InputList3SigType359=Serial +InputList3Cue360=text-o349 +InputList3SigType360=Serial +InputList3Cue361=text-o350 +InputList3SigType361=Serial +InputList3Cue362=text-o351 +InputList3SigType362=Serial +InputList3Cue363=text-o352 +InputList3SigType363=Serial +InputList3Cue364=text-o353 +InputList3SigType364=Serial +InputList3Cue365=text-o354 +InputList3SigType365=Serial +InputList3Cue366=text-o355 +InputList3SigType366=Serial +InputList3Cue367=text-o356 +InputList3SigType367=Serial +InputList3Cue368=text-o357 +InputList3SigType368=Serial +InputList3Cue369=text-o358 +InputList3SigType369=Serial +InputList3Cue370=text-o359 +InputList3SigType370=Serial +InputList3Cue371=text-o360 +InputList3SigType371=Serial +InputList3Cue372=text-o361 +InputList3SigType372=Serial +InputList3Cue373=text-o362 +InputList3SigType373=Serial +InputList3Cue374=text-o363 +InputList3SigType374=Serial +InputList3Cue375=text-o364 +InputList3SigType375=Serial +InputList3Cue376=text-o365 +InputList3SigType376=Serial +InputList3Cue377=text-o366 +InputList3SigType377=Serial +InputList3Cue378=text-o367 +InputList3SigType378=Serial +InputList3Cue379=text-o368 +InputList3SigType379=Serial +InputList3Cue380=text-o369 +InputList3SigType380=Serial +InputList3Cue381=text-o370 +InputList3SigType381=Serial +InputList3Cue382=text-o371 +InputList3SigType382=Serial +InputList3Cue383=text-o372 +InputList3SigType383=Serial +InputList3Cue384=text-o373 +InputList3SigType384=Serial +InputList3Cue385=text-o374 +InputList3SigType385=Serial +InputList3Cue386=text-o375 +InputList3SigType386=Serial +InputList3Cue387=text-o376 +InputList3SigType387=Serial +InputList3Cue388=text-o377 +InputList3SigType388=Serial +InputList3Cue389=text-o378 +InputList3SigType389=Serial +InputList3Cue390=text-o379 +InputList3SigType390=Serial +InputList3Cue391=text-o380 +InputList3SigType391=Serial +InputList3Cue392=text-o381 +InputList3SigType392=Serial +InputList3Cue393=text-o382 +InputList3SigType393=Serial +InputList3Cue394=text-o383 +InputList3SigType394=Serial +InputList3Cue395=text-o384 +InputList3SigType395=Serial +InputList3Cue396=text-o385 +InputList3SigType396=Serial +InputList3Cue397=text-o386 +InputList3SigType397=Serial +InputList3Cue398=text-o387 +InputList3SigType398=Serial +InputList3Cue399=text-o388 +InputList3SigType399=Serial +InputList3Cue400=text-o389 +InputList3SigType400=Serial +InputList3Cue401=text-o390 +InputList3SigType401=Serial +InputList3Cue402=text-o391 +InputList3SigType402=Serial +InputList3Cue403=text-o392 +InputList3SigType403=Serial +InputList3Cue404=text-o393 +InputList3SigType404=Serial +InputList3Cue405=text-o394 +InputList3SigType405=Serial +InputList3Cue406=text-o395 +InputList3SigType406=Serial +InputList3Cue407=text-o396 +InputList3SigType407=Serial +InputList3Cue408=text-o397 +InputList3SigType408=Serial +InputList3Cue409=text-o398 +InputList3SigType409=Serial +InputList3Cue410=text-o399 +InputList3SigType410=Serial +InputList3Cue411=text-o400 +InputList3SigType411=Serial +InputList3Cue412=[~EndGroup~]text-o +InputList3SigType412=Serial +OutputList3Cue1=[~UNUSED2~] +OutputList3SigType1=Serial +OutputList3Cue2=[~UNUSED2~] +OutputList3SigType2=Serial +OutputList3Cue3=[~UNUSED2~] +OutputList3SigType3=Serial +OutputList3Cue4=[~UNUSED2~] +OutputList3SigType4=Serial +OutputList3Cue5=[~UNUSED2~] +OutputList3SigType5=Serial +OutputList3Cue6=[~UNUSED2~] +OutputList3SigType6=Serial +OutputList3Cue7=[~UNUSED2~] +OutputList3SigType7=Serial +OutputList3Cue8=[~UNUSED2~] +OutputList3SigType8=Serial +OutputList3Cue9=[~UNUSED2~] +OutputList3SigType9=Serial +OutputList3Cue10=[~UNUSED2~] +OutputList3SigType10=Serial +OutputList3Cue11=[~BeginGroup~]text-i +OutputList3SigType11=Serial +OutputList3Cue12=text-i1 +OutputList3SigType12=Serial +OutputList3Cue13=text-i2 +OutputList3SigType13=Serial +OutputList3Cue14=text-i3 +OutputList3SigType14=Serial +OutputList3Cue15=text-i4 +OutputList3SigType15=Serial +OutputList3Cue16=text-i5 +OutputList3SigType16=Serial +OutputList3Cue17=text-i6 +OutputList3SigType17=Serial +OutputList3Cue18=text-i7 +OutputList3SigType18=Serial +OutputList3Cue19=text-i8 +OutputList3SigType19=Serial +OutputList3Cue20=text-i9 +OutputList3SigType20=Serial +OutputList3Cue21=text-i10 +OutputList3SigType21=Serial +OutputList3Cue22=text-i11 +OutputList3SigType22=Serial +OutputList3Cue23=text-i12 +OutputList3SigType23=Serial +OutputList3Cue24=text-i13 +OutputList3SigType24=Serial +OutputList3Cue25=text-i14 +OutputList3SigType25=Serial +OutputList3Cue26=text-i15 +OutputList3SigType26=Serial +OutputList3Cue27=text-i16 +OutputList3SigType27=Serial +OutputList3Cue28=text-i17 +OutputList3SigType28=Serial +OutputList3Cue29=text-i18 +OutputList3SigType29=Serial +OutputList3Cue30=text-i19 +OutputList3SigType30=Serial +OutputList3Cue31=text-i20 +OutputList3SigType31=Serial +OutputList3Cue32=text-i21 +OutputList3SigType32=Serial +OutputList3Cue33=text-i22 +OutputList3SigType33=Serial +OutputList3Cue34=text-i23 +OutputList3SigType34=Serial +OutputList3Cue35=text-i24 +OutputList3SigType35=Serial +OutputList3Cue36=text-i25 +OutputList3SigType36=Serial +OutputList3Cue37=text-i26 +OutputList3SigType37=Serial +OutputList3Cue38=text-i27 +OutputList3SigType38=Serial +OutputList3Cue39=text-i28 +OutputList3SigType39=Serial +OutputList3Cue40=text-i29 +OutputList3SigType40=Serial +OutputList3Cue41=text-i30 +OutputList3SigType41=Serial +OutputList3Cue42=text-i31 +OutputList3SigType42=Serial +OutputList3Cue43=text-i32 +OutputList3SigType43=Serial +OutputList3Cue44=text-i33 +OutputList3SigType44=Serial +OutputList3Cue45=text-i34 +OutputList3SigType45=Serial +OutputList3Cue46=text-i35 +OutputList3SigType46=Serial +OutputList3Cue47=text-i36 +OutputList3SigType47=Serial +OutputList3Cue48=text-i37 +OutputList3SigType48=Serial +OutputList3Cue49=text-i38 +OutputList3SigType49=Serial +OutputList3Cue50=text-i39 +OutputList3SigType50=Serial +OutputList3Cue51=text-i40 +OutputList3SigType51=Serial +OutputList3Cue52=text-i41 +OutputList3SigType52=Serial +OutputList3Cue53=text-i42 +OutputList3SigType53=Serial +OutputList3Cue54=text-i43 +OutputList3SigType54=Serial +OutputList3Cue55=text-i44 +OutputList3SigType55=Serial +OutputList3Cue56=text-i45 +OutputList3SigType56=Serial +OutputList3Cue57=text-i46 +OutputList3SigType57=Serial +OutputList3Cue58=text-i47 +OutputList3SigType58=Serial +OutputList3Cue59=text-i48 +OutputList3SigType59=Serial +OutputList3Cue60=text-i49 +OutputList3SigType60=Serial +OutputList3Cue61=text-i50 +OutputList3SigType61=Serial +OutputList3Cue62=text-i51 +OutputList3SigType62=Serial +OutputList3Cue63=text-i52 +OutputList3SigType63=Serial +OutputList3Cue64=text-i53 +OutputList3SigType64=Serial +OutputList3Cue65=text-i54 +OutputList3SigType65=Serial +OutputList3Cue66=text-i55 +OutputList3SigType66=Serial +OutputList3Cue67=text-i56 +OutputList3SigType67=Serial +OutputList3Cue68=text-i57 +OutputList3SigType68=Serial +OutputList3Cue69=text-i58 +OutputList3SigType69=Serial +OutputList3Cue70=text-i59 +OutputList3SigType70=Serial +OutputList3Cue71=text-i60 +OutputList3SigType71=Serial +OutputList3Cue72=text-i61 +OutputList3SigType72=Serial +OutputList3Cue73=text-i62 +OutputList3SigType73=Serial +OutputList3Cue74=text-i63 +OutputList3SigType74=Serial +OutputList3Cue75=text-i64 +OutputList3SigType75=Serial +OutputList3Cue76=text-i65 +OutputList3SigType76=Serial +OutputList3Cue77=text-i66 +OutputList3SigType77=Serial +OutputList3Cue78=text-i67 +OutputList3SigType78=Serial +OutputList3Cue79=text-i68 +OutputList3SigType79=Serial +OutputList3Cue80=text-i69 +OutputList3SigType80=Serial +OutputList3Cue81=text-i70 +OutputList3SigType81=Serial +OutputList3Cue82=text-i71 +OutputList3SigType82=Serial +OutputList3Cue83=text-i72 +OutputList3SigType83=Serial +OutputList3Cue84=text-i73 +OutputList3SigType84=Serial +OutputList3Cue85=text-i74 +OutputList3SigType85=Serial +OutputList3Cue86=text-i75 +OutputList3SigType86=Serial +OutputList3Cue87=text-i76 +OutputList3SigType87=Serial +OutputList3Cue88=text-i77 +OutputList3SigType88=Serial +OutputList3Cue89=text-i78 +OutputList3SigType89=Serial +OutputList3Cue90=text-i79 +OutputList3SigType90=Serial +OutputList3Cue91=text-i80 +OutputList3SigType91=Serial +OutputList3Cue92=text-i81 +OutputList3SigType92=Serial +OutputList3Cue93=text-i82 +OutputList3SigType93=Serial +OutputList3Cue94=text-i83 +OutputList3SigType94=Serial +OutputList3Cue95=text-i84 +OutputList3SigType95=Serial +OutputList3Cue96=text-i85 +OutputList3SigType96=Serial +OutputList3Cue97=text-i86 +OutputList3SigType97=Serial +OutputList3Cue98=text-i87 +OutputList3SigType98=Serial +OutputList3Cue99=text-i88 +OutputList3SigType99=Serial +OutputList3Cue100=text-i89 +OutputList3SigType100=Serial +OutputList3Cue101=text-i90 +OutputList3SigType101=Serial +OutputList3Cue102=text-i91 +OutputList3SigType102=Serial +OutputList3Cue103=text-i92 +OutputList3SigType103=Serial +OutputList3Cue104=text-i93 +OutputList3SigType104=Serial +OutputList3Cue105=text-i94 +OutputList3SigType105=Serial +OutputList3Cue106=text-i95 +OutputList3SigType106=Serial +OutputList3Cue107=text-i96 +OutputList3SigType107=Serial +OutputList3Cue108=text-i97 +OutputList3SigType108=Serial +OutputList3Cue109=text-i98 +OutputList3SigType109=Serial +OutputList3Cue110=text-i99 +OutputList3SigType110=Serial +OutputList3Cue111=text-i100 +OutputList3SigType111=Serial +OutputList3Cue112=text-i101 +OutputList3SigType112=Serial +OutputList3Cue113=text-i102 +OutputList3SigType113=Serial +OutputList3Cue114=text-i103 +OutputList3SigType114=Serial +OutputList3Cue115=text-i104 +OutputList3SigType115=Serial +OutputList3Cue116=text-i105 +OutputList3SigType116=Serial +OutputList3Cue117=text-i106 +OutputList3SigType117=Serial +OutputList3Cue118=text-i107 +OutputList3SigType118=Serial +OutputList3Cue119=text-i108 +OutputList3SigType119=Serial +OutputList3Cue120=text-i109 +OutputList3SigType120=Serial +OutputList3Cue121=text-i110 +OutputList3SigType121=Serial +OutputList3Cue122=text-i111 +OutputList3SigType122=Serial +OutputList3Cue123=text-i112 +OutputList3SigType123=Serial +OutputList3Cue124=text-i113 +OutputList3SigType124=Serial +OutputList3Cue125=text-i114 +OutputList3SigType125=Serial +OutputList3Cue126=text-i115 +OutputList3SigType126=Serial +OutputList3Cue127=text-i116 +OutputList3SigType127=Serial +OutputList3Cue128=text-i117 +OutputList3SigType128=Serial +OutputList3Cue129=text-i118 +OutputList3SigType129=Serial +OutputList3Cue130=text-i119 +OutputList3SigType130=Serial +OutputList3Cue131=text-i120 +OutputList3SigType131=Serial +OutputList3Cue132=text-i121 +OutputList3SigType132=Serial +OutputList3Cue133=text-i122 +OutputList3SigType133=Serial +OutputList3Cue134=text-i123 +OutputList3SigType134=Serial +OutputList3Cue135=text-i124 +OutputList3SigType135=Serial +OutputList3Cue136=text-i125 +OutputList3SigType136=Serial +OutputList3Cue137=text-i126 +OutputList3SigType137=Serial +OutputList3Cue138=text-i127 +OutputList3SigType138=Serial +OutputList3Cue139=text-i128 +OutputList3SigType139=Serial +OutputList3Cue140=text-i129 +OutputList3SigType140=Serial +OutputList3Cue141=text-i130 +OutputList3SigType141=Serial +OutputList3Cue142=text-i131 +OutputList3SigType142=Serial +OutputList3Cue143=text-i132 +OutputList3SigType143=Serial +OutputList3Cue144=text-i133 +OutputList3SigType144=Serial +OutputList3Cue145=text-i134 +OutputList3SigType145=Serial +OutputList3Cue146=text-i135 +OutputList3SigType146=Serial +OutputList3Cue147=text-i136 +OutputList3SigType147=Serial +OutputList3Cue148=text-i137 +OutputList3SigType148=Serial +OutputList3Cue149=text-i138 +OutputList3SigType149=Serial +OutputList3Cue150=text-i139 +OutputList3SigType150=Serial +OutputList3Cue151=text-i140 +OutputList3SigType151=Serial +OutputList3Cue152=text-i141 +OutputList3SigType152=Serial +OutputList3Cue153=text-i142 +OutputList3SigType153=Serial +OutputList3Cue154=text-i143 +OutputList3SigType154=Serial +OutputList3Cue155=text-i144 +OutputList3SigType155=Serial +OutputList3Cue156=text-i145 +OutputList3SigType156=Serial +OutputList3Cue157=text-i146 +OutputList3SigType157=Serial +OutputList3Cue158=text-i147 +OutputList3SigType158=Serial +OutputList3Cue159=text-i148 +OutputList3SigType159=Serial +OutputList3Cue160=text-i149 +OutputList3SigType160=Serial +OutputList3Cue161=text-i150 +OutputList3SigType161=Serial +OutputList3Cue162=text-i151 +OutputList3SigType162=Serial +OutputList3Cue163=text-i152 +OutputList3SigType163=Serial +OutputList3Cue164=text-i153 +OutputList3SigType164=Serial +OutputList3Cue165=text-i154 +OutputList3SigType165=Serial +OutputList3Cue166=text-i155 +OutputList3SigType166=Serial +OutputList3Cue167=text-i156 +OutputList3SigType167=Serial +OutputList3Cue168=text-i157 +OutputList3SigType168=Serial +OutputList3Cue169=text-i158 +OutputList3SigType169=Serial +OutputList3Cue170=text-i159 +OutputList3SigType170=Serial +OutputList3Cue171=text-i160 +OutputList3SigType171=Serial +OutputList3Cue172=text-i161 +OutputList3SigType172=Serial +OutputList3Cue173=text-i162 +OutputList3SigType173=Serial +OutputList3Cue174=text-i163 +OutputList3SigType174=Serial +OutputList3Cue175=text-i164 +OutputList3SigType175=Serial +OutputList3Cue176=text-i165 +OutputList3SigType176=Serial +OutputList3Cue177=text-i166 +OutputList3SigType177=Serial +OutputList3Cue178=text-i167 +OutputList3SigType178=Serial +OutputList3Cue179=text-i168 +OutputList3SigType179=Serial +OutputList3Cue180=text-i169 +OutputList3SigType180=Serial +OutputList3Cue181=text-i170 +OutputList3SigType181=Serial +OutputList3Cue182=text-i171 +OutputList3SigType182=Serial +OutputList3Cue183=text-i172 +OutputList3SigType183=Serial +OutputList3Cue184=text-i173 +OutputList3SigType184=Serial +OutputList3Cue185=text-i174 +OutputList3SigType185=Serial +OutputList3Cue186=text-i175 +OutputList3SigType186=Serial +OutputList3Cue187=text-i176 +OutputList3SigType187=Serial +OutputList3Cue188=text-i177 +OutputList3SigType188=Serial +OutputList3Cue189=text-i178 +OutputList3SigType189=Serial +OutputList3Cue190=text-i179 +OutputList3SigType190=Serial +OutputList3Cue191=text-i180 +OutputList3SigType191=Serial +OutputList3Cue192=text-i181 +OutputList3SigType192=Serial +OutputList3Cue193=text-i182 +OutputList3SigType193=Serial +OutputList3Cue194=text-i183 +OutputList3SigType194=Serial +OutputList3Cue195=text-i184 +OutputList3SigType195=Serial +OutputList3Cue196=text-i185 +OutputList3SigType196=Serial +OutputList3Cue197=text-i186 +OutputList3SigType197=Serial +OutputList3Cue198=text-i187 +OutputList3SigType198=Serial +OutputList3Cue199=text-i188 +OutputList3SigType199=Serial +OutputList3Cue200=text-i189 +OutputList3SigType200=Serial +OutputList3Cue201=text-i190 +OutputList3SigType201=Serial +OutputList3Cue202=text-i191 +OutputList3SigType202=Serial +OutputList3Cue203=text-i192 +OutputList3SigType203=Serial +OutputList3Cue204=text-i193 +OutputList3SigType204=Serial +OutputList3Cue205=text-i194 +OutputList3SigType205=Serial +OutputList3Cue206=text-i195 +OutputList3SigType206=Serial +OutputList3Cue207=text-i196 +OutputList3SigType207=Serial +OutputList3Cue208=text-i197 +OutputList3SigType208=Serial +OutputList3Cue209=text-i198 +OutputList3SigType209=Serial +OutputList3Cue210=text-i199 +OutputList3SigType210=Serial +OutputList3Cue211=text-i200 +OutputList3SigType211=Serial +OutputList3Cue212=text-i201 +OutputList3SigType212=Serial +OutputList3Cue213=text-i202 +OutputList3SigType213=Serial +OutputList3Cue214=text-i203 +OutputList3SigType214=Serial +OutputList3Cue215=text-i204 +OutputList3SigType215=Serial +OutputList3Cue216=text-i205 +OutputList3SigType216=Serial +OutputList3Cue217=text-i206 +OutputList3SigType217=Serial +OutputList3Cue218=text-i207 +OutputList3SigType218=Serial +OutputList3Cue219=text-i208 +OutputList3SigType219=Serial +OutputList3Cue220=text-i209 +OutputList3SigType220=Serial +OutputList3Cue221=text-i210 +OutputList3SigType221=Serial +OutputList3Cue222=text-i211 +OutputList3SigType222=Serial +OutputList3Cue223=text-i212 +OutputList3SigType223=Serial +OutputList3Cue224=text-i213 +OutputList3SigType224=Serial +OutputList3Cue225=text-i214 +OutputList3SigType225=Serial +OutputList3Cue226=text-i215 +OutputList3SigType226=Serial +OutputList3Cue227=text-i216 +OutputList3SigType227=Serial +OutputList3Cue228=text-i217 +OutputList3SigType228=Serial +OutputList3Cue229=text-i218 +OutputList3SigType229=Serial +OutputList3Cue230=text-i219 +OutputList3SigType230=Serial +OutputList3Cue231=text-i220 +OutputList3SigType231=Serial +OutputList3Cue232=text-i221 +OutputList3SigType232=Serial +OutputList3Cue233=text-i222 +OutputList3SigType233=Serial +OutputList3Cue234=text-i223 +OutputList3SigType234=Serial +OutputList3Cue235=text-i224 +OutputList3SigType235=Serial +OutputList3Cue236=text-i225 +OutputList3SigType236=Serial +OutputList3Cue237=text-i226 +OutputList3SigType237=Serial +OutputList3Cue238=text-i227 +OutputList3SigType238=Serial +OutputList3Cue239=text-i228 +OutputList3SigType239=Serial +OutputList3Cue240=text-i229 +OutputList3SigType240=Serial +OutputList3Cue241=text-i230 +OutputList3SigType241=Serial +OutputList3Cue242=text-i231 +OutputList3SigType242=Serial +OutputList3Cue243=text-i232 +OutputList3SigType243=Serial +OutputList3Cue244=text-i233 +OutputList3SigType244=Serial +OutputList3Cue245=text-i234 +OutputList3SigType245=Serial +OutputList3Cue246=text-i235 +OutputList3SigType246=Serial +OutputList3Cue247=text-i236 +OutputList3SigType247=Serial +OutputList3Cue248=text-i237 +OutputList3SigType248=Serial +OutputList3Cue249=text-i238 +OutputList3SigType249=Serial +OutputList3Cue250=text-i239 +OutputList3SigType250=Serial +OutputList3Cue251=text-i240 +OutputList3SigType251=Serial +OutputList3Cue252=text-i241 +OutputList3SigType252=Serial +OutputList3Cue253=text-i242 +OutputList3SigType253=Serial +OutputList3Cue254=text-i243 +OutputList3SigType254=Serial +OutputList3Cue255=text-i244 +OutputList3SigType255=Serial +OutputList3Cue256=text-i245 +OutputList3SigType256=Serial +OutputList3Cue257=text-i246 +OutputList3SigType257=Serial +OutputList3Cue258=text-i247 +OutputList3SigType258=Serial +OutputList3Cue259=text-i248 +OutputList3SigType259=Serial +OutputList3Cue260=text-i249 +OutputList3SigType260=Serial +OutputList3Cue261=text-i250 +OutputList3SigType261=Serial +OutputList3Cue262=text-i251 +OutputList3SigType262=Serial +OutputList3Cue263=text-i252 +OutputList3SigType263=Serial +OutputList3Cue264=text-i253 +OutputList3SigType264=Serial +OutputList3Cue265=text-i254 +OutputList3SigType265=Serial +OutputList3Cue266=text-i255 +OutputList3SigType266=Serial +OutputList3Cue267=text-i256 +OutputList3SigType267=Serial +OutputList3Cue268=text-i257 +OutputList3SigType268=Serial +OutputList3Cue269=text-i258 +OutputList3SigType269=Serial +OutputList3Cue270=text-i259 +OutputList3SigType270=Serial +OutputList3Cue271=text-i260 +OutputList3SigType271=Serial +OutputList3Cue272=text-i261 +OutputList3SigType272=Serial +OutputList3Cue273=text-i262 +OutputList3SigType273=Serial +OutputList3Cue274=text-i263 +OutputList3SigType274=Serial +OutputList3Cue275=text-i264 +OutputList3SigType275=Serial +OutputList3Cue276=text-i265 +OutputList3SigType276=Serial +OutputList3Cue277=text-i266 +OutputList3SigType277=Serial +OutputList3Cue278=text-i267 +OutputList3SigType278=Serial +OutputList3Cue279=text-i268 +OutputList3SigType279=Serial +OutputList3Cue280=text-i269 +OutputList3SigType280=Serial +OutputList3Cue281=text-i270 +OutputList3SigType281=Serial +OutputList3Cue282=text-i271 +OutputList3SigType282=Serial +OutputList3Cue283=text-i272 +OutputList3SigType283=Serial +OutputList3Cue284=text-i273 +OutputList3SigType284=Serial +OutputList3Cue285=text-i274 +OutputList3SigType285=Serial +OutputList3Cue286=text-i275 +OutputList3SigType286=Serial +OutputList3Cue287=text-i276 +OutputList3SigType287=Serial +OutputList3Cue288=text-i277 +OutputList3SigType288=Serial +OutputList3Cue289=text-i278 +OutputList3SigType289=Serial +OutputList3Cue290=text-i279 +OutputList3SigType290=Serial +OutputList3Cue291=text-i280 +OutputList3SigType291=Serial +OutputList3Cue292=text-i281 +OutputList3SigType292=Serial +OutputList3Cue293=text-i282 +OutputList3SigType293=Serial +OutputList3Cue294=text-i283 +OutputList3SigType294=Serial +OutputList3Cue295=text-i284 +OutputList3SigType295=Serial +OutputList3Cue296=text-i285 +OutputList3SigType296=Serial +OutputList3Cue297=text-i286 +OutputList3SigType297=Serial +OutputList3Cue298=text-i287 +OutputList3SigType298=Serial +OutputList3Cue299=text-i288 +OutputList3SigType299=Serial +OutputList3Cue300=text-i289 +OutputList3SigType300=Serial +OutputList3Cue301=text-i290 +OutputList3SigType301=Serial +OutputList3Cue302=text-i291 +OutputList3SigType302=Serial +OutputList3Cue303=text-i292 +OutputList3SigType303=Serial +OutputList3Cue304=text-i293 +OutputList3SigType304=Serial +OutputList3Cue305=text-i294 +OutputList3SigType305=Serial +OutputList3Cue306=text-i295 +OutputList3SigType306=Serial +OutputList3Cue307=text-i296 +OutputList3SigType307=Serial +OutputList3Cue308=text-i297 +OutputList3SigType308=Serial +OutputList3Cue309=text-i298 +OutputList3SigType309=Serial +OutputList3Cue310=text-i299 +OutputList3SigType310=Serial +OutputList3Cue311=text-i300 +OutputList3SigType311=Serial +OutputList3Cue312=text-i301 +OutputList3SigType312=Serial +OutputList3Cue313=text-i302 +OutputList3SigType313=Serial +OutputList3Cue314=text-i303 +OutputList3SigType314=Serial +OutputList3Cue315=text-i304 +OutputList3SigType315=Serial +OutputList3Cue316=text-i305 +OutputList3SigType316=Serial +OutputList3Cue317=text-i306 +OutputList3SigType317=Serial +OutputList3Cue318=text-i307 +OutputList3SigType318=Serial +OutputList3Cue319=text-i308 +OutputList3SigType319=Serial +OutputList3Cue320=text-i309 +OutputList3SigType320=Serial +OutputList3Cue321=text-i310 +OutputList3SigType321=Serial +OutputList3Cue322=text-i311 +OutputList3SigType322=Serial +OutputList3Cue323=text-i312 +OutputList3SigType323=Serial +OutputList3Cue324=text-i313 +OutputList3SigType324=Serial +OutputList3Cue325=text-i314 +OutputList3SigType325=Serial +OutputList3Cue326=text-i315 +OutputList3SigType326=Serial +OutputList3Cue327=text-i316 +OutputList3SigType327=Serial +OutputList3Cue328=text-i317 +OutputList3SigType328=Serial +OutputList3Cue329=text-i318 +OutputList3SigType329=Serial +OutputList3Cue330=text-i319 +OutputList3SigType330=Serial +OutputList3Cue331=text-i320 +OutputList3SigType331=Serial +OutputList3Cue332=text-i321 +OutputList3SigType332=Serial +OutputList3Cue333=text-i322 +OutputList3SigType333=Serial +OutputList3Cue334=text-i323 +OutputList3SigType334=Serial +OutputList3Cue335=text-i324 +OutputList3SigType335=Serial +OutputList3Cue336=text-i325 +OutputList3SigType336=Serial +OutputList3Cue337=text-i326 +OutputList3SigType337=Serial +OutputList3Cue338=text-i327 +OutputList3SigType338=Serial +OutputList3Cue339=text-i328 +OutputList3SigType339=Serial +OutputList3Cue340=text-i329 +OutputList3SigType340=Serial +OutputList3Cue341=text-i330 +OutputList3SigType341=Serial +OutputList3Cue342=text-i331 +OutputList3SigType342=Serial +OutputList3Cue343=text-i332 +OutputList3SigType343=Serial +OutputList3Cue344=text-i333 +OutputList3SigType344=Serial +OutputList3Cue345=text-i334 +OutputList3SigType345=Serial +OutputList3Cue346=text-i335 +OutputList3SigType346=Serial +OutputList3Cue347=text-i336 +OutputList3SigType347=Serial +OutputList3Cue348=text-i337 +OutputList3SigType348=Serial +OutputList3Cue349=text-i338 +OutputList3SigType349=Serial +OutputList3Cue350=text-i339 +OutputList3SigType350=Serial +OutputList3Cue351=text-i340 +OutputList3SigType351=Serial +OutputList3Cue352=text-i341 +OutputList3SigType352=Serial +OutputList3Cue353=text-i342 +OutputList3SigType353=Serial +OutputList3Cue354=text-i343 +OutputList3SigType354=Serial +OutputList3Cue355=text-i344 +OutputList3SigType355=Serial +OutputList3Cue356=text-i345 +OutputList3SigType356=Serial +OutputList3Cue357=text-i346 +OutputList3SigType357=Serial +OutputList3Cue358=text-i347 +OutputList3SigType358=Serial +OutputList3Cue359=text-i348 +OutputList3SigType359=Serial +OutputList3Cue360=text-i349 +OutputList3SigType360=Serial +OutputList3Cue361=text-i350 +OutputList3SigType361=Serial +OutputList3Cue362=text-i351 +OutputList3SigType362=Serial +OutputList3Cue363=text-i352 +OutputList3SigType363=Serial +OutputList3Cue364=text-i353 +OutputList3SigType364=Serial +OutputList3Cue365=text-i354 +OutputList3SigType365=Serial +OutputList3Cue366=text-i355 +OutputList3SigType366=Serial +OutputList3Cue367=text-i356 +OutputList3SigType367=Serial +OutputList3Cue368=text-i357 +OutputList3SigType368=Serial +OutputList3Cue369=text-i358 +OutputList3SigType369=Serial +OutputList3Cue370=text-i359 +OutputList3SigType370=Serial +OutputList3Cue371=text-i360 +OutputList3SigType371=Serial +OutputList3Cue372=text-i361 +OutputList3SigType372=Serial +OutputList3Cue373=text-i362 +OutputList3SigType373=Serial +OutputList3Cue374=text-i363 +OutputList3SigType374=Serial +OutputList3Cue375=text-i364 +OutputList3SigType375=Serial +OutputList3Cue376=text-i365 +OutputList3SigType376=Serial +OutputList3Cue377=text-i366 +OutputList3SigType377=Serial +OutputList3Cue378=text-i367 +OutputList3SigType378=Serial +OutputList3Cue379=text-i368 +OutputList3SigType379=Serial +OutputList3Cue380=text-i369 +OutputList3SigType380=Serial +OutputList3Cue381=text-i370 +OutputList3SigType381=Serial +OutputList3Cue382=text-i371 +OutputList3SigType382=Serial +OutputList3Cue383=text-i372 +OutputList3SigType383=Serial +OutputList3Cue384=text-i373 +OutputList3SigType384=Serial +OutputList3Cue385=text-i374 +OutputList3SigType385=Serial +OutputList3Cue386=text-i375 +OutputList3SigType386=Serial +OutputList3Cue387=text-i376 +OutputList3SigType387=Serial +OutputList3Cue388=text-i377 +OutputList3SigType388=Serial +OutputList3Cue389=text-i378 +OutputList3SigType389=Serial +OutputList3Cue390=text-i379 +OutputList3SigType390=Serial +OutputList3Cue391=text-i380 +OutputList3SigType391=Serial +OutputList3Cue392=text-i381 +OutputList3SigType392=Serial +OutputList3Cue393=text-i382 +OutputList3SigType393=Serial +OutputList3Cue394=text-i383 +OutputList3SigType394=Serial +OutputList3Cue395=text-i384 +OutputList3SigType395=Serial +OutputList3Cue396=text-i385 +OutputList3SigType396=Serial +OutputList3Cue397=text-i386 +OutputList3SigType397=Serial +OutputList3Cue398=text-i387 +OutputList3SigType398=Serial +OutputList3Cue399=text-i388 +OutputList3SigType399=Serial +OutputList3Cue400=text-i389 +OutputList3SigType400=Serial +OutputList3Cue401=text-i390 +OutputList3SigType401=Serial +OutputList3Cue402=text-i391 +OutputList3SigType402=Serial +OutputList3Cue403=text-i392 +OutputList3SigType403=Serial +OutputList3Cue404=text-i393 +OutputList3SigType404=Serial +OutputList3Cue405=text-i394 +OutputList3SigType405=Serial +OutputList3Cue406=text-i395 +OutputList3SigType406=Serial +OutputList3Cue407=text-i396 +OutputList3SigType407=Serial +OutputList3Cue408=text-i397 +OutputList3SigType408=Serial +OutputList3Cue409=text-i398 +OutputList3SigType409=Serial +OutputList3Cue410=text-i399 +OutputList3SigType410=Serial +OutputList3Cue411=text-i400 +OutputList3SigType411=Serial +OutputList3Cue412=[~EndGroup~]text-i +OutputList3SigType412=Serial +ParamCue1=SmartObjectId +ParamSigType1=Constant +MPp=1 +Pp1=9 +CedH=9 +SmartObjId=10012d +] +; Parameter Properties for Smart Object ID +[ +ObjTp=Dp +H=9 +Tp=1 +HD=TRUE +DV=10012d +NF=1 +DNF=1 +EncFmt=0 +DVLF=1 +Sgn=0 +] +; Smart Objects Definition section +[ +ObjTp=CED +H=9 +Name=PepperDash Essentials TSW1050_[B.AV] Object - Presets_CATV Icon List Vertical.ced +;Cedver is the version of the Smart Graphics control, not the CED file format. +;If the control definition changes, increment this. +CedVer=1 +] +;================================================================================ +[ +ObjTp=Symbol +Name=PepperDash Essentials TSW1050_[B.AV] Object - DPad STB_STB DPad.ced +Hint=STB DPad (Smart Object ID=10011) +Code=10 +SGControlType=DPad +SGControlName=STB DPad +GUID=F2340FAD-85E9-4E49-B46E-15E9B096F58B +SmplCName=PepperDash Essentials TSW1050_[B.AV] Object - DPad STB_STB DPad.ced +SMWRev=4.02.19 +Expand=expand_random +HelpID=10015 +;Define the number of inputs, outputs and parameters +MinVariableInputs=5 +MaxVariableInputs=5 +MinVariableOutputs=5 +MaxVariableOutputs=5 +NumFixedParams=1 +MinVariableInputsList2=0 +MaxVariableInputsList2=0 +MinVariableOutputsList2=0 +MaxVariableOutputsList2=0 +MinVariableInputsList3=0 +MaxVariableInputsList3=0 +MinVariableOutputsList3=0 +MaxVariableOutputsList3=0 +;Define the cues, and signal types each input, output and parameter. +InputCue1=[~UNUSED3~] +InputSigType1=Digital +OutputCue1=Up +OutputSigType1=Digital +InputCue2=[~UNUSED3~] +InputSigType2=Digital +OutputCue2=Down +OutputSigType2=Digital +InputCue3=[~UNUSED3~] +InputSigType3=Digital +OutputCue3=Left +OutputSigType3=Digital +InputCue4=[~UNUSED3~] +InputSigType4=Digital +OutputCue4=Right +OutputSigType4=Digital +InputCue5=[~UNUSED3~] +InputSigType5=Digital +OutputCue5=OK +OutputSigType5=Digital +ParamCue1=SmartObjectId +ParamSigType1=Constant +MPp=1 +Pp1=10 +CedH=10 +SmartObjId=10011d +] +; Parameter Properties for Smart Object ID +[ +ObjTp=Dp +H=10 +Tp=1 +HD=TRUE +DV=10011d +NF=1 +DNF=1 +EncFmt=0 +DVLF=1 +Sgn=0 +] +; Smart Objects Definition section +[ +ObjTp=CED +H=10 +Name=PepperDash Essentials TSW1050_[B.AV] Object - DPad STB_STB DPad.ced +;Cedver is the version of the Smart Graphics control, not the CED file format. +;If the control definition changes, increment this. +CedVer=1 +] +;================================================================================ +[ +ObjTp=Symbol +Name=PepperDash Essentials TSW1050_[B.AV] Object - Tab SetTopBox_Tab Button Horizontal.ced +Hint=Tab Button Horizontal (Smart Object ID=10081) +Code=11 +SGControlType=Horizontal Tab Button +SGControlName=Tab Button Horizontal +GUID=198C97B0-9D0C-46C2-9557-27EA33C0BE9F +SmplCName=PepperDash Essentials TSW1050_[B.AV] Object - Tab SetTopBox_Tab Button Horizontal.ced +SMWRev=4.02.19 +Expand=expand_random +HelpID=10031 +;Define the number of inputs, outputs and parameters +MinVariableInputs=4 +MaxVariableInputs=4 +MinVariableOutputs=4 +MaxVariableOutputs=4 +NumFixedParams=1 +MinVariableInputsList2=0 +MaxVariableInputsList2=0 +MinVariableOutputsList2=0 +MaxVariableOutputsList2=0 +MinVariableInputsList3=0 +MaxVariableInputsList3=0 +MinVariableOutputsList3=0 +MaxVariableOutputsList3=0 +;Define the cues, and signal types each input, output and parameter. +InputCue1=[~UNUSED3~] +InputSigType1=Digital +OutputCue1=Tab Button 1 Press +OutputSigType1=Digital +InputCue2=Tab Button 1 Select +InputSigType2=Digital +OutputCue2=[~UNUSED3~] +OutputSigType2=Digital +InputCue3=[~UNUSED3~] +InputSigType3=Digital +OutputCue3=Tab Button 2 Press +OutputSigType3=Digital +InputCue4=Tab Button 2 Select +InputSigType4=Digital +OutputCue4=[~UNUSED3~] +OutputSigType4=Digital +ParamCue1=SmartObjectId +ParamSigType1=Constant +MPp=1 +Pp1=11 +CedH=11 +SmartObjId=10081d +] +; Parameter Properties for Smart Object ID +[ +ObjTp=Dp +H=11 +Tp=1 +HD=TRUE +DV=10081d +NF=1 +DNF=1 +EncFmt=0 +DVLF=1 +Sgn=0 +] +; Smart Objects Definition section +[ +ObjTp=CED +H=11 +Name=PepperDash Essentials TSW1050_[B.AV] Object - Tab SetTopBox_Tab Button Horizontal.ced +;Cedver is the version of the Smart Graphics control, not the CED file format. +;If the control definition changes, increment this. +CedVer=1 +] +;================================================================================ +[ +ObjTp=Symbol +Name=PepperDash Essentials TSW1050_[B.AV] Object - Dpad DVD_DVD DPad.ced +Hint=DVD DPad (Smart Object ID=10411) +Code=12 +SGControlType=DPad +SGControlName=DVD DPad +GUID=D49BCF22-C770-4146-93E6-00867D885E1E +SmplCName=PepperDash Essentials TSW1050_[B.AV] Object - Dpad DVD_DVD DPad.ced +SMWRev=4.02.19 +Expand=expand_random +HelpID=10015 +;Define the number of inputs, outputs and parameters +MinVariableInputs=5 +MaxVariableInputs=5 +MinVariableOutputs=5 +MaxVariableOutputs=5 +NumFixedParams=1 +MinVariableInputsList2=0 +MaxVariableInputsList2=0 +MinVariableOutputsList2=0 +MaxVariableOutputsList2=0 +MinVariableInputsList3=0 +MaxVariableInputsList3=0 +MinVariableOutputsList3=0 +MaxVariableOutputsList3=0 +;Define the cues, and signal types each input, output and parameter. +InputCue1=[~UNUSED3~] +InputSigType1=Digital +OutputCue1=Up +OutputSigType1=Digital +InputCue2=[~UNUSED3~] +InputSigType2=Digital +OutputCue2=Down +OutputSigType2=Digital +InputCue3=[~UNUSED3~] +InputSigType3=Digital +OutputCue3=Left +OutputSigType3=Digital +InputCue4=[~UNUSED3~] +InputSigType4=Digital +OutputCue4=Right +OutputSigType4=Digital +InputCue5=[~UNUSED3~] +InputSigType5=Digital +OutputCue5=OK +OutputSigType5=Digital +ParamCue1=SmartObjectId +ParamSigType1=Constant +MPp=1 +Pp1=12 +CedH=12 +SmartObjId=10411d +] +; Parameter Properties for Smart Object ID +[ +ObjTp=Dp +H=12 +Tp=1 +HD=TRUE +DV=10411d +NF=1 +DNF=1 +EncFmt=0 +DVLF=1 +Sgn=0 +] +; Smart Objects Definition section +[ +ObjTp=CED +H=12 +Name=PepperDash Essentials TSW1050_[B.AV] Object - Dpad DVD_DVD DPad.ced +;Cedver is the version of the Smart Graphics control, not the CED file format. +;If the control definition changes, increment this. +CedVer=1 +] +;================================================================================ +[ +ObjTp=Symbol +Name=PepperDash Essentials TSW1050_[B.AV] Source-Set Top Box Backer_CATV Keypad.ced +Hint=CATV Keypad (Smart Object ID=10014) +Code=13 +SGControlType=Simple Keypad +SGControlName=CATV Keypad +GUID=5E33D4F4-5C5F-430C-879A-AE82529B3943 +SmplCName=PepperDash Essentials TSW1050_[B.AV] Source-Set Top Box Backer_CATV Keypad.ced +SMWRev=4.02.19 +Expand=expand_random +HelpID=10061 +;Define the number of inputs, outputs and parameters +MinVariableInputs=12 +MaxVariableInputs=12 +MinVariableOutputs=12 +MaxVariableOutputs=12 +NumFixedParams=1 +MinVariableInputsList2=0 +MaxVariableInputsList2=0 +MinVariableOutputsList2=0 +MaxVariableOutputsList2=0 +MinVariableInputsList3=0 +MaxVariableInputsList3=0 +MinVariableOutputsList3=0 +MaxVariableOutputsList3=0 +;Define the cues, and signal types each input, output and parameter. +InputCue1=[~UNUSED3~] +InputSigType1=Digital +OutputCue1=1 +OutputSigType1=Digital +InputCue2=[~UNUSED3~] +InputSigType2=Digital +OutputCue2=2 +OutputSigType2=Digital +InputCue3=[~UNUSED3~] +InputSigType3=Digital +OutputCue3=3 +OutputSigType3=Digital +InputCue4=[~UNUSED3~] +InputSigType4=Digital +OutputCue4=4 +OutputSigType4=Digital +InputCue5=[~UNUSED3~] +InputSigType5=Digital +OutputCue5=5 +OutputSigType5=Digital +InputCue6=[~UNUSED3~] +InputSigType6=Digital +OutputCue6=6 +OutputSigType6=Digital +InputCue7=[~UNUSED3~] +InputSigType7=Digital +OutputCue7=7 +OutputSigType7=Digital +InputCue8=[~UNUSED3~] +InputSigType8=Digital +OutputCue8=8 +OutputSigType8=Digital +InputCue9=[~UNUSED3~] +InputSigType9=Digital +OutputCue9=9 +OutputSigType9=Digital +InputCue10=[~UNUSED3~] +InputSigType10=Digital +OutputCue10=0 +OutputSigType10=Digital +InputCue11=[~UNUSED3~] +InputSigType11=Digital +OutputCue11=Misc_1 +OutputSigType11=Digital +InputCue12=[~UNUSED3~] +InputSigType12=Digital +OutputCue12=Misc_2 +OutputSigType12=Digital +ParamCue1=SmartObjectId +ParamSigType1=Constant +MPp=1 +Pp1=13 +CedH=13 +SmartObjId=10014d +] +; Parameter Properties for Smart Object ID +[ +ObjTp=Dp +H=13 +Tp=1 +HD=TRUE +DV=10014d +NF=1 +DNF=1 +EncFmt=0 +DVLF=1 +Sgn=0 +] +; Smart Objects Definition section +[ +ObjTp=CED +H=13 +Name=PepperDash Essentials TSW1050_[B.AV] Source-Set Top Box Backer_CATV Keypad.ced +;Cedver is the version of the Smart Graphics control, not the CED file format. +;If the control definition changes, increment this. +CedVer=1 +] diff --git a/Release/PepperDash Essentials/PepperDashEssentials.cpz b/Release/PepperDash Essentials/PepperDashEssentials.cpz new file mode 100644 index 00000000..059dd870 Binary files /dev/null and b/Release/PepperDash Essentials/PepperDashEssentials.cpz differ