using System; using System.Collections.Generic; using System.Linq; using System.Text; using Crestron.SimplSharp; using PepperDash.Core; 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 shade control /// public interface IShadesOpenClose { void Open(); void Close(); } /// /// Requirements for a device that implements basic Open/Close/Stop shade control (Uses 3 relays) /// public interface IShadesOpenCloseStop : IShadesOpenClose { void StopOrPreset(); } /// /// Requirements for a shade that implements press/hold raise/lower functions /// public interface IShadesRaiseLower { void Raise(bool state); void Lower(bool state); } /// /// 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: IShadesOpenClose { BoolFeedback ShadeIsOpenFeedback { get; } BoolFeedback ShadeIsClosedFeedback { get; } } /// /// /// public interface IShadesStop { void Stop(); } /// /// /// public interface IShadesStopOrMove { void OpenOrStop(); void CloseOrStop(); void OpenCloseOrStop(); } /// /// Basic feedback for shades/scene stopped /// public interface IShadesStopFeedback { 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, IShadesStop, IShadesStopOrMove, IShadesFeedback, IShadesRaiseLowerFeedback { } }