diff --git a/PepperDashEssentials/Room/Config/EssentialsTechRoomConfig.cs b/PepperDashEssentials/Room/Config/EssentialsTechRoomConfig.cs index 06e67f39..9ff3a2d2 100644 --- a/PepperDashEssentials/Room/Config/EssentialsTechRoomConfig.cs +++ b/PepperDashEssentials/Room/Config/EssentialsTechRoomConfig.cs @@ -5,30 +5,62 @@ namespace PepperDash.Essentials.Room.Config { public class EssentialsTechRoomConfig { + /// + /// The key of the dummy device used to enable routing + /// [JsonProperty("dummySourceKey")] public string DummySourceKey { get; set; } + /// + /// The keys of the displays assigned to this room + /// [JsonProperty("displays")] - public List Displays; + public List Displays { get; set; } + /// + /// The keys of the tuners assinged to this room + /// [JsonProperty("tuners")] - public List Tuners; + public List Tuners { get; set; } + /// + /// PIN to access the room as a normal user + /// [JsonProperty("userPin")] - public string UserPin; + public string UserPin { get; set; } + /// + /// PIN to access the room as a tech user + /// [JsonProperty("techPin")] - public string TechPin; + public string TechPin { get; set; } + /// + /// Name of the presets file. Path prefix is assumed to be /html/presets/lists/ + /// [JsonProperty("presetsFileName")] - public string PresetsFileName; + public string PresetsFileName { get; set; } [JsonProperty("scheduledEvents")] - public List ScheduledEvents; + public List ScheduledEvents { get; set; } - [JsonProperty("isPrimary")] public bool IsPrimary; + /// + /// Indicates that the room is the primary when true + /// + [JsonProperty("isPrimary")] + public bool IsPrimary { get; set; } - [JsonProperty("isTvPresetsProvider")] public bool IsTvPresetsProvider; + /// + /// Indicates which tuners should mirror preset recall when two rooms are configured in a primary->secondary scenario + /// + [JsonProperty("mirroredTuners")] + public Dictionary MirroredTuners { get; set; } + + /// + /// Indicates the room + /// + [JsonProperty("isTvPresetsProvider")] + public bool IsTvPresetsProvider; public EssentialsTechRoomConfig() { diff --git a/PepperDashEssentials/Room/Types/EssentialsTechRoom.cs b/PepperDashEssentials/Room/Types/EssentialsTechRoom.cs index bfa56646..b8bbc081 100644 --- a/PepperDashEssentials/Room/Types/EssentialsTechRoom.cs +++ b/PepperDashEssentials/Room/Types/EssentialsTechRoom.cs @@ -373,13 +373,32 @@ Params: {2}" uint i; if (_config.IsPrimary) { - i = 0; - foreach (var feedback in CurrentPresetsFeedbacks) + Debug.Console(1, this, "Linking Primary system Tuner Preset Mirroring"); + if (_config.MirroredTuners != null && _config.MirroredTuners.Count > 0) { - feedback.Value.LinkInputSig(trilist.StringInput[(uint) (joinMap.CurrentPreset.JoinNumber + i)]); - i++; + foreach (var tuner in _config.MirroredTuners) + { + var f = CurrentPresetsFeedbacks[tuner.Value]; + + if (f == null) + { + Debug.Console(1, this, "Unable to find feedback with key: {0}", tuner.Value); + continue; + } + + var join = joinMap.CurrentPreset.JoinNumber + tuner.Key; + f.LinkInputSig(trilist.StringInput[(uint)(join)]); + Debug.Console(1, this, "Linked Current Preset feedback for tuner: {0} to serial join: {1}", tuner.Value, join); + } } + //i = 0; + //foreach (var feedback in CurrentPresetsFeedbacks) + //{ + // feedback.Value.LinkInputSig(trilist.StringInput[(uint) (joinMap.CurrentPreset.JoinNumber + i)]); + // i++; + //} + trilist.OnlineStatusChange += (device, args) => { if (!args.DeviceOnLine) @@ -395,15 +414,35 @@ Params: {2}" return; } - - i = 0; - foreach (var setTopBox in _tuners) + else { - var tuner = setTopBox; + Debug.Console(1, this, "Linking Secondary system Tuner Preset Mirroring"); - trilist.SetStringSigAction(joinMap.CurrentPreset.JoinNumber + i, s => _tunerPresets.Dial(s, tuner.Value)); + if (_config.MirroredTuners != null && _config.MirroredTuners.Count > 0) + { + foreach (var tuner in _config.MirroredTuners) + { + var t = _tuners[tuner.Value]; - i++; + if (t == null) + { + Debug.Console(1, this, "Unable to find tuner with key: {0}", tuner.Value); + continue; + } + + var join = joinMap.CurrentPreset.JoinNumber + tuner.Key; + trilist.SetStringSigAction(join, s => _tunerPresets.Dial(s, t)); + Debug.Console(1, this, "Linked preset recall action for tuner: {0} to serial join: {1}", tuner.Value, join); + } + + //foreach (var setTopBox in _tuners) + //{ + // var tuner = setTopBox; + + // trilist.SetStringSigAction(joinMap.CurrentPreset.JoinNumber + i, s => _tunerPresets.Dial(s, tuner.Value)); + + //} + } } }