using System; using System.Collections.Generic; namespace PepperDash.Essentials.Core.Shades { /// /// Requirements for an object that contains shades /// public interface IShades { List Shades { get; } } /// /// Requirements for a device that implements basic Open/Close/Stop shade control (Uses 3 relays) /// public interface IShadesOpenCloseStop { void Open(); void Close(); void Stop(); } public interface IShadesOpenClosePreset : IShadesOpenCloseStop { void RecallPreset(uint presetNumber); void SavePreset(uint presetNumber); string StopOrPresetButtonLabel { get; } event EventHandler PresetSaved; } /// /// Requirements for a shade device that provides raising/lowering feedback /// public interface IShadesRaiseLowerFeedback { BoolFeedback ShadeIsLoweringFeedback { get; } BoolFeedback ShadeIsRaisingFeedback { get; } } /// /// Requirements for a shade/scene that is open or closed /// public interface IShadesOpenClosedFeedback: IShadesOpenCloseStop { BoolFeedback ShadeIsOpenFeedback { get; } BoolFeedback ShadeIsClosedFeedback { get; } } /// /// Used to implement raise/stop/lower/stop from single button /// public interface IShadesStopOrMove { void OpenOrStop(); void CloseOrStop(); void OpenCloseOrStop(); } /// /// Basic feedback for shades/scene stopped /// public interface IShadesStopFeedback : IShadesOpenCloseStop { BoolFeedback IsStoppedFeedback { get; } } /// /// Requirements for position /// public interface IShadesPosition { void SetPosition(ushort value); } /// /// Basic feedback for shades position /// public interface IShadesFeedback: IShadesPosition, IShadesStopFeedback { IntFeedback PositionFeedback { get; } } /// /// /// public interface ISceneFeedback { void Run(); BoolFeedback AllAreAtSceneFeedback { get; } } public interface ICrestronBasicShade : IShadesOpenClosedFeedback, IShadesStopOrMove, IShadesFeedback, IShadesRaiseLowerFeedback { } }