diff --git a/PepperDashEssentials/Room/Types/EssentialsTechRoom.cs b/PepperDashEssentials/Room/Types/EssentialsTechRoom.cs index 079a2ff6..0680f46b 100644 --- a/PepperDashEssentials/Room/Types/EssentialsTechRoom.cs +++ b/PepperDashEssentials/Room/Types/EssentialsTechRoom.cs @@ -12,13 +12,37 @@ namespace PepperDash.Essentials { public class EssentialsTechRoom:EssentialsRoomBase { - private Dictionary _tuners; - private Dictionary _displays; + private readonly Dictionary _tuners; + private readonly Dictionary _displays; - private DevicePresetsModel _tunerPresets; + private readonly DevicePresetsModel _tunerPresets; private readonly EssentialsTechRoomConfig _config; + public DevicePresetsModel TunerPresets + { + get + { + return _tunerPresets; + } + } + + public Dictionary Tuners + { + get { return _tuners; } + } + + public Dictionary Displays + { + get { return _displays; } + } + + public BoolFeedback RoomPowerIsOnFeedback { get; private set; } + + public bool RoomPowerIsOn + { + get { return _displays.All(kv => kv.Value.PowerIsOnFeedback.BoolValue); } + } public EssentialsTechRoom(DeviceConfig config) : base(config) { @@ -30,6 +54,32 @@ namespace PepperDash.Essentials _tuners = GetDevices(_config.Tuners); _displays = GetDevices(_config.Displays); + + RoomPowerIsOnFeedback = new BoolFeedback(() => RoomPowerIsOn); + } + + private void SubscribeToDisplayFeedbacks() + { + foreach (var display in _displays) + { + display.Value.PowerIsOnFeedback.OutputChange += (sender, args) => RoomPowerIsOnFeedback.InvokeFireUpdate(); + } + } + + public void RoomPowerOn() + { + foreach (var display in _displays) + { + display.Value.PowerOn(); + } + } + + public void RoomPowerOff() + { + foreach (var display in _displays) + { + display.Value.PowerOff(); + } } private Dictionary GetDevices(ICollection config) where T:IKeyed @@ -47,7 +97,9 @@ namespace PepperDash.Essentials Debug.Console(0, this, Debug.ErrorLogLevel.Error, "Error getting devices. Check Essentials Configuration"); return null; } - } + } + + #region Overrides of EssentialsRoomBase diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Presets/DevicePresets.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Presets/DevicePresets.cs index 43fdf59a..ccce6ea7 100644 --- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Presets/DevicePresets.cs +++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Presets/DevicePresets.cs @@ -195,6 +195,28 @@ namespace PepperDash.Essentials.Core.Presets Dial(chanNum); } + public void UpdatePreset(int index, PresetChannel preset) + { + if (index >= PresetsList.Count) + { + return; + } + + PresetsList[index] = preset; + + SavePresets(); + } + + private void SavePresets() + { + var json = JsonConvert.SerializeObject(PresetsList); + + using (var file = File.Open(_filePath, FileMode.Truncate)) + { + file.Write(json, Encoding.UTF8); + } + } + private void Pulse(Action act) { act(true);