mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-02 22:34:57 +00:00
Interfaces added and some base classes built
This commit is contained in:
@@ -277,9 +277,13 @@
|
||||
<Compile Include="Remotes\CrestronRemotePropertiesConfig.cs" />
|
||||
<Compile Include="Remotes\Hrxx0WirelessRemoteController.cs" />
|
||||
<Compile Include="Room\Behaviours\RoomOnToDefaultSourceWhenOccupied.cs" />
|
||||
<Compile Include="Room\Components\ComponentFactory.cs" />
|
||||
<Compile Include="Room\Components\ComponentRoom.cs" />
|
||||
<Compile Include="Room\Components\RoomComponentBase.cs" />
|
||||
<Compile Include="Room\EssentialsRoomBase.cs" />
|
||||
<Compile Include="Room\Interfaces.cs" />
|
||||
<Compile Include="Room\iOccupancyStatusProvider.cs" />
|
||||
<Compile Include="Room\RoomFactory.cs" />
|
||||
<Compile Include="Routing\DummyRoutingInputsDevice.cs" />
|
||||
<Compile Include="Routing\ICardPortsDevice.cs" />
|
||||
<Compile Include="InUseTracking\IInUseTracking.cs" />
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
|
||||
using PepperDash.Essentials.Interfaces.Components;
|
||||
|
||||
namespace PepperDash.Essentials.Core.Room.Components
|
||||
{
|
||||
public class ComponentFactory
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
|
||||
using PepperDash.Core;
|
||||
using PepperDash.Essentials.Interfaces.Components;
|
||||
using PepperDash.Essentials.Core.Config;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace PepperDash.Essentials.Core.Room
|
||||
{
|
||||
/// <summary>
|
||||
/// The base config class for various component types
|
||||
/// </summary>
|
||||
public abstract class RoomComponentConfig : DeviceConfig
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The config class for an activiry
|
||||
/// </summary>
|
||||
public class RoomActivityConfig : RoomComponentConfig
|
||||
{
|
||||
[JsonProperty("label")]
|
||||
public string Label { get; set; }
|
||||
[JsonProperty("icon")]
|
||||
public string Icon { get; set; }
|
||||
[JsonProperty("componentKey")]
|
||||
public string ComponentKey { get; set; }
|
||||
[JsonProperty("order")]
|
||||
public int Order { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The config class for a room behaviour
|
||||
/// </summary>
|
||||
public class RoomBehaviourConfig : RoomComponentConfig
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The config class for a device behavior
|
||||
/// </summary>
|
||||
public class RoomDeviceBehaviourConfig : RoomComponentConfig
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public class ComponentRoomPropertiesConfig
|
||||
{
|
||||
[JsonProperty("activities")]
|
||||
public List<RoomActivityConfig> Activities { get; set; }
|
||||
[JsonProperty("components")]
|
||||
public List<RoomComponentConfig> Components { get; set; }
|
||||
|
||||
}
|
||||
|
||||
public class ComponentRoom : Device, IComponentRoom
|
||||
{
|
||||
public List<IRoomComponent> Components { get; private set; }
|
||||
public List<IRoomActivityComponent> Activities { get; private set; }
|
||||
|
||||
public ComponentRoom(string key, string name)
|
||||
: base(key, name)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public List<IRoomComponent> GetRoomComponentsOfType(Type componentType)
|
||||
{
|
||||
// TODO: Figure this out later
|
||||
return Components;
|
||||
//var results = Components.OfType<componentType>();
|
||||
//return results;
|
||||
//return Components.Where(c => c != null && type.IsAssignableFrom(c.GetType()));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns a list of the activies sorted by order
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public List<IRoomActivityComponent> GetOrderedActvities()
|
||||
{
|
||||
return Activities.OrderBy(a => a.Order).ToList<IRoomActivityComponent>();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
|
||||
using PepperDash.Essentials.Interfaces.Components;
|
||||
|
||||
namespace PepperDash.Essentials.Core.Room.Components
|
||||
{
|
||||
/// <summary>
|
||||
/// The base class from which Room Components should be derived
|
||||
/// </summary>
|
||||
public abstract class RoomComponentBase : IRoomComponent
|
||||
{
|
||||
private string _componentKey;
|
||||
|
||||
/// <summary>
|
||||
/// The key of the component, which is composed of the parent room key, plus the specific component key
|
||||
/// </summary>
|
||||
public string Key {
|
||||
get
|
||||
{
|
||||
return Parent.Key + "-" + _componentKey;
|
||||
}
|
||||
}
|
||||
|
||||
public IComponentRoom Parent { get; private set; }
|
||||
|
||||
public RoomComponentBase(string key, IComponentRoom parent)
|
||||
{
|
||||
_componentKey = key;
|
||||
Parent = parent;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -12,45 +12,45 @@ namespace PepperDash.Essentials.Core
|
||||
{
|
||||
//***************************************************************************************************
|
||||
|
||||
public abstract class Room : Device, IHasFeedback
|
||||
{
|
||||
public abstract BoolFeedback RoomIsOnFeedback { get; protected set; }
|
||||
public abstract BoolFeedback IsCoolingDownFeedback { get; protected set; }
|
||||
public abstract BoolFeedback IsWarmingUpFeedback { get; protected set; }
|
||||
// public abstract class Room : Device, IHasFeedback
|
||||
// {
|
||||
// public abstract BoolFeedback RoomIsOnFeedback { get; protected set; }
|
||||
// public abstract BoolFeedback IsCoolingDownFeedback { get; protected set; }
|
||||
// public abstract BoolFeedback IsWarmingUpFeedback { get; protected set; }
|
||||
|
||||
// In concrete classes, these should be computed from the relevant devices
|
||||
public virtual uint CooldownTime { get { return 10000; } }
|
||||
public virtual uint WarmupTime { get { return 5000; } }
|
||||
// // In concrete classes, these should be computed from the relevant devices
|
||||
// public virtual uint CooldownTime { get { return 10000; } }
|
||||
// public virtual uint WarmupTime { get { return 5000; } }
|
||||
|
||||
public string Description { get; set; }
|
||||
public string HelpMessage { get; set; }
|
||||
// public string Description { get; set; }
|
||||
// public string HelpMessage { get; set; }
|
||||
|
||||
public Room(string key, string name)
|
||||
: base(key, name)
|
||||
{
|
||||
Description = "";
|
||||
HelpMessage = "";
|
||||
}
|
||||
// public Room(string key, string name)
|
||||
// : base(key, name)
|
||||
// {
|
||||
// Description = "";
|
||||
// HelpMessage = "";
|
||||
// }
|
||||
|
||||
public virtual void RoomOn() { }
|
||||
// public virtual void RoomOn() { }
|
||||
|
||||
public virtual void RoomOff() { }
|
||||
// public virtual void RoomOff() { }
|
||||
|
||||
#region IDeviceWithOutputs Members
|
||||
// #region IDeviceWithOutputs Members
|
||||
|
||||
public virtual FeedbackCollection<Feedback> Feedbacks
|
||||
{
|
||||
get
|
||||
{
|
||||
return new FeedbackCollection<Feedback>
|
||||
{
|
||||
RoomIsOnFeedback,
|
||||
IsCoolingDownFeedback,
|
||||
IsWarmingUpFeedback
|
||||
};
|
||||
}
|
||||
}
|
||||
// public virtual FeedbackCollection<Feedback> Feedbacks
|
||||
// {
|
||||
// get
|
||||
// {
|
||||
// return new FeedbackCollection<Feedback>
|
||||
// {
|
||||
// RoomIsOnFeedback,
|
||||
// IsCoolingDownFeedback,
|
||||
// IsWarmingUpFeedback
|
||||
// };
|
||||
// }
|
||||
// }
|
||||
|
||||
#endregion
|
||||
}
|
||||
// #endregion
|
||||
// }
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
|
||||
using PepperDash.Essentials.Interfaces.Components;
|
||||
|
||||
namespace PepperDash.Essentials.Core.Room
|
||||
{
|
||||
/// <summary>
|
||||
/// The class that constructs rooms
|
||||
/// </summary>
|
||||
public static class RoomFactory
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user