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
{
}
}