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