mirror of
https://github.com/PepperDash/EssentialsPluginTemplate.git
synced 2026-01-11 19:44:38 +00:00
87 lines
2.8 KiB
C#
87 lines
2.8 KiB
C#
using Crestron.SimplSharpPro.DeviceSupport;
|
|
using PepperDash.Core;
|
|
using PepperDash.Essentials.Core;
|
|
using PepperDash.Essentials.Core.Bridges;
|
|
|
|
namespace EssentialsPluginTemplate
|
|
{
|
|
/// <summary>
|
|
/// Plugin device template for logic devices that don't communicate outside the program
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// Rename the class to match the device plugin being developed.
|
|
/// </remarks>
|
|
/// <example>
|
|
/// "EssentialsPluginTemplateLogicDevice" renamed to "SamsungMdcDevice"
|
|
/// </example>
|
|
public class EssentialsPluginTemplateLogicDevice : EssentialsBridgeableDevice
|
|
{
|
|
/// <summary>
|
|
/// It is often desirable to store the config
|
|
/// </summary>
|
|
private EssentialsPluginTemplateConfigObject _config;
|
|
|
|
/// <summary>
|
|
/// Plugin device constructor
|
|
/// </summary>
|
|
/// <param name="key"></param>
|
|
/// <param name="name"></param>
|
|
/// <param name="config"></param>
|
|
public EssentialsPluginTemplateLogicDevice(string key, string name, EssentialsPluginTemplateConfigObject config)
|
|
: base(key, name)
|
|
{
|
|
Debug.Console(0, this, "Constructing new {0} instance", name);
|
|
|
|
// TODO [ ] Update the constructor as needed for the plugin device being developed
|
|
|
|
_config = config;
|
|
}
|
|
|
|
#region Overrides of EssentialsBridgeableDevice
|
|
|
|
/// <summary>
|
|
/// Links the plugin device to the EISC bridge
|
|
/// </summary>
|
|
/// <param name="trilist"></param>
|
|
/// <param name="joinStart"></param>
|
|
/// <param name="joinMapKey"></param>
|
|
/// <param name="bridge"></param>
|
|
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
|
|
{
|
|
var joinMap = new EssentialsPluginTemplateBridgeJoinMap(joinStart);
|
|
|
|
// This adds the join map to the collection on the bridge
|
|
if (bridge != null)
|
|
{
|
|
bridge.AddJoinMap(Key, joinMap);
|
|
}
|
|
|
|
var customJoins = JoinMapHelper.TryGetJoinMapAdvancedForDevice(joinMapKey);
|
|
|
|
if (customJoins != null)
|
|
{
|
|
joinMap.SetCustomJoinData(customJoins);
|
|
}
|
|
|
|
Debug.Console(1, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));
|
|
Debug.Console(0, "Linking to Bridge Type {0}", GetType().Name);
|
|
|
|
// TODO [ ] Implement bridge links as needed
|
|
|
|
// links to bridge
|
|
trilist.SetString(joinMap.DeviceName.JoinNumber, Name);
|
|
|
|
trilist.OnlineStatusChange += (o, a) =>
|
|
{
|
|
if (!a.DeviceOnLine) return;
|
|
|
|
trilist.SetString(joinMap.DeviceName.JoinNumber, Name);
|
|
};
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
}
|
|
|