mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-15 12:44:58 +00:00
Changes Base class to EssentialsBridgeableDevice
* adds LinkLightingToApi Method
This commit is contained in:
@@ -4,12 +4,15 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using Crestron.SimplSharp;
|
using Crestron.SimplSharp;
|
||||||
using Crestron.SimplSharpPro;
|
using Crestron.SimplSharpPro;
|
||||||
|
using Crestron.SimplSharpPro.DeviceSupport;
|
||||||
|
using Newtonsoft.Json;
|
||||||
using PepperDash.Core;
|
using PepperDash.Core;
|
||||||
|
using PepperDash.Essentials.Core.Bridges;
|
||||||
|
using PepperDash_Essentials_Core.Devices;
|
||||||
|
|
||||||
namespace PepperDash.Essentials.Core.Lighting
|
namespace PepperDash.Essentials.Core.Lighting
|
||||||
{
|
{
|
||||||
public abstract class LightingBase : Device, ILightingScenes
|
public abstract class LightingBase : EssentialsBridgeableDevice, ILightingScenes
|
||||||
{
|
{
|
||||||
#region ILightingScenes Members
|
#region ILightingScenes Members
|
||||||
|
|
||||||
@@ -23,8 +26,7 @@ namespace PepperDash.Essentials.Core.Lighting
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
protected LightingBase(string key, string name)
|
||||||
public LightingBase(string key, string name)
|
|
||||||
: base(key, name)
|
: base(key, name)
|
||||||
{
|
{
|
||||||
LightingScenes = new List<LightingScene>();
|
LightingScenes = new List<LightingScene>();
|
||||||
@@ -69,6 +71,41 @@ namespace PepperDash.Essentials.Core.Lighting
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected GenericLightingJoinMap LinkLightingToApi(LightingBase lightingDevice, BasicTriList trilist, uint joinStart,
|
||||||
|
string joinMapKey, EiscApi bridge)
|
||||||
|
{
|
||||||
|
var joinMap = new GenericLightingJoinMap();
|
||||||
|
|
||||||
|
var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey);
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(joinMapSerialized))
|
||||||
|
joinMap = JsonConvert.DeserializeObject<GenericLightingJoinMap>(joinMapSerialized);
|
||||||
|
|
||||||
|
joinMap.OffsetJoinNumbers(joinStart);
|
||||||
|
|
||||||
|
Debug.Console(1, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));
|
||||||
|
|
||||||
|
Debug.Console(0, "Linking to Lighting Type {0}", lightingDevice.GetType().Name.ToString());
|
||||||
|
|
||||||
|
// GenericLighitng Actions & FeedBack
|
||||||
|
trilist.SetUShortSigAction(joinMap.SelectScene, u => lightingDevice.SelectScene(lightingDevice.LightingScenes[u]));
|
||||||
|
|
||||||
|
var sceneIndex = 1;
|
||||||
|
foreach (var scene in lightingDevice.LightingScenes)
|
||||||
|
{
|
||||||
|
var tempIndex = sceneIndex - 1;
|
||||||
|
trilist.SetSigTrueAction((uint)(joinMap.LightingSceneOffset + sceneIndex), () => lightingDevice.SelectScene(lightingDevice.LightingScenes[tempIndex]));
|
||||||
|
scene.IsActiveFeedback.LinkInputSig(trilist.BooleanInput[(uint)(joinMap.LightingSceneOffset + sceneIndex)]);
|
||||||
|
trilist.StringInput[(uint)(joinMap.LightingSceneOffset + sceneIndex)].StringValue = scene.Name;
|
||||||
|
trilist.BooleanInput[(uint)(joinMap.ButtonVisibilityOffset + sceneIndex)].BoolValue = true;
|
||||||
|
sceneIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return joinMap;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class LightingScene
|
public class LightingScene
|
||||||
|
|||||||
Reference in New Issue
Block a user