using System; using System.Collections.Generic; using System.Linq; using System.Text; using Crestron.SimplSharp; using Crestron.SimplSharpPro; using PepperDash.Core; namespace PepperDash.Essentials.Core { //*************************************************************************************************** /// /// Abstract base class for Room /// public abstract class Room : Device, IHasFeedback { /// /// Gets or sets the RoomIsOnFeedback /// public abstract BoolFeedback RoomIsOnFeedback { get; protected set; } /// /// Gets or sets the IsCoolingDownFeedback /// public abstract BoolFeedback IsCoolingDownFeedback { get; protected set; } /// /// Gets or sets the IsWarmingUpFeedback /// public abstract BoolFeedback IsWarmingUpFeedback { get; protected set; } // In concrete classes, these should be computed from the relevant devices /// /// Gets or sets the CooldownTime /// /// public virtual uint CooldownTime { get { return 10000; } } /// /// Gets or sets the WarmupTime /// /// public virtual uint WarmupTime { get { return 5000; } } /// /// Gets or sets the Description /// public string Description { get; set; } /// /// Gets or sets the HelpMessage /// public string HelpMessage { get; set; } /// /// Room Constructor /// /// room key /// room name public Room(string key, string name) : base(key, name) { Description = ""; HelpMessage = ""; } /// /// RoomOn method /// /// public virtual void RoomOn() { } /// /// RoomOff method /// public virtual void RoomOff() { } #region IDeviceWithOutputs Members /// /// Gets the Feedbacks /// public virtual FeedbackCollection Feedbacks { get { return new FeedbackCollection { RoomIsOnFeedback, IsCoolingDownFeedback, IsWarmingUpFeedback }; } } #endregion } }