Compare commits

..

6 Commits

Author SHA1 Message Date
Andrew Welker
474b2eb647 fix: add routes to get routing ports & all defined routes 2025-03-28 10:25:17 -05:00
Andrew Welker
09dd8f0bcd Merge pull request #1226 from PepperDash/release
2.1.0
2025-03-26 13:28:43 -05:00
Andrew Welker
99c6163c0e Merge pull request #1225 from PepperDash/feature/move-portal-core
Bring Portal Core and Mobile Control into Essentials
2025-03-26 10:14:36 -05:00
Andrew Welker
90aa4a5d62 feat: remove IHasInputs<T,R> interface
This has been replaced by the `IHasInputs<T>` interface and was marked to be removed in the 2.0.0 release.
2025-03-26 08:55:55 -05:00
Andrew Welker
8b3eda1d18 refactor: make messenger constructors more consistent
Some constructors for messengers were taking Device rather than the specific type they needed.
2025-03-26 08:55:07 -05:00
Andrew Welker
6c710dd209 chore(force-patch): increment patch version 2025-03-26 00:12:37 -05:00
30 changed files with 185 additions and 154 deletions

View File

@@ -1,27 +1,7 @@
using PepperDash.Core;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
{
/// <summary>
/// Describes a device that has selectable inputs
/// </summary>
/// <typeparam name="TKey">the type to use as the key for each input item. Most likely an enum or string</typeparam>\
/// <example>
/// See MockDisplay for example implemntation
/// </example>
[Obsolete("Use IHasInputs<T> instead. Will be removed for 2.0 release")]
public interface IHasInputs<T, TSelector>: IKeyName
{
ISelectableItems<T> Inputs { get; }
}
/// <summary>
/// Describes a device that has selectable inputs
/// </summary>

View File

@@ -144,17 +144,17 @@ namespace PepperDash.Essentials.Core.Web
Name = "GetJoinMapsForDeviceKey",
RouteHandler = new GetJoinMapForDeviceKeyRequestHandler()
},
new HttpCwsRoute("debugSession")
{
Name = "DebugSession",
RouteHandler = new DebugSessionRequestHandler()
},
new HttpCwsRoute("doNotLoadConfigOnNextBoot")
{
Name = "DoNotLoadConfigOnNextBoot",
RouteHandler = new DoNotLoadConfigOnNextBootRequestHandler()
},
new HttpCwsRoute("restartProgram")
new HttpCwsRoute("debugSession")
{
Name = "DebugSession",
RouteHandler = new DebugSessionRequestHandler()
},
new HttpCwsRoute("doNotLoadConfigOnNextBoot")
{
Name = "DoNotLoadConfigOnNextBoot",
RouteHandler = new DoNotLoadConfigOnNextBootRequestHandler()
},
new HttpCwsRoute("restartProgram")
{
Name = "Restart Program",
RouteHandler = new RestartProgramRequestHandler()
@@ -164,12 +164,16 @@ namespace PepperDash.Essentials.Core.Web
Name = "Load Config",
RouteHandler = new LoadConfigRequestHandler()
},
new HttpCwsRoute("getTielines")
new HttpCwsRoute("tielines")
{
Name = "Get TieLines",
RouteHandler = new GetTieLinesRequestHandler()
}
},
new HttpCwsRoute("device/{deviceKey}/routingPorts")
{
Name = "Get Routing Ports for a device",
RouteHandler = new GetRoutingPortsHandler()
},
};
AddRoute(routes);
@@ -196,13 +200,18 @@ namespace PepperDash.Essentials.Core.Web
}
}
/// <summary>
/// Initializes the CWS class
/// </summary>
public override void Initialize()
/// <summary>
/// Initializes the CWS class
/// </summary>
public override void Initialize()
{
// If running on an appliance
if (CrestronEnvironment.DevicePlatform == eDevicePlatform.Appliance)
AddRoute(new HttpCwsRoute("apiPaths") {
Name = "GetPaths",
RouteHandler = new GetRoutesHandler(_server.GetRouteCollection())
});
// If running on an appliance
if (CrestronEnvironment.DevicePlatform == eDevicePlatform.Appliance)
{
/*
WEBSERVER [ON | OFF | TIMEOUT <VALUE IN SECONDS> | MAXSESSIONSPERUSER <Number of sessions>]
@@ -247,8 +256,8 @@ namespace PepperDash.Essentials.Core.Web
CrestronEthernetHelper.ETHERNET_PARAMETER_TO_GET.GET_HOSTNAME, 0);
var path = CrestronEnvironment.DevicePlatform == eDevicePlatform.Server
? $"http(s)://{hostname}/VirtualControl/Rooms/{InitialParametersClass.RoomId}/cws{BasePath}"
: $"http(s)://{currentIp}/cws{BasePath}";
? $"https://{hostname}/VirtualControl/Rooms/{InitialParametersClass.RoomId}/cws{BasePath}"
: $"https://{currentIp}/cws{BasePath}";
Debug.LogMessage(LogEventLevel.Information, this, "Server:{path:l}", path);

View File

@@ -0,0 +1,25 @@
using Crestron.SimplSharp.WebScripting;
using Newtonsoft.Json;
using PepperDash.Core.Web.RequestHandlers;
namespace PepperDash.Essentials.Core.Web.RequestHandlers
{
public class GetRoutesHandler:WebApiBaseRequestHandler
{
private HttpCwsRouteCollection routeCollection;
public GetRoutesHandler(HttpCwsRouteCollection routeCollection) {
this.routeCollection = routeCollection;
}
protected override void HandleGet(HttpCwsContext context)
{
var response = JsonConvert.SerializeObject(routeCollection);
context.Response.StatusCode = 200;
context.Response.ContentType = "application/json";
context.Response.Headers.Add("Content-Type", "application/json");
context.Response.Write(response, false);
context.Response.End();
}
}
}

View File

@@ -0,0 +1,70 @@
using Crestron.SimplSharp.WebScripting;
using Newtonsoft.Json;
using PepperDash.Core.Web.RequestHandlers;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PepperDash.Essentials.Core.Web.RequestHandlers
{
public class GetRoutingPortsHandler : WebApiBaseRequestHandler
{
public GetRoutingPortsHandler() : base(true) { }
protected override void HandleGet(HttpCwsContext context)
{
var routeData = context.Request.RouteData;
if (routeData == null)
{
context.Response.StatusCode = 400;
context.Response.StatusDescription = "Bad Request";
context.Response.End();
return;
}
if(!routeData.Values.TryGetValue("deviceKey", out var deviceKey))
{
context.Response.StatusCode = 400;
context.Response.StatusDescription = "Bad Request";
context.Response.End();
return;
}
var device = DeviceManager.GetDeviceForKey(deviceKey.ToString());
if (device == null)
{
context.Response.StatusCode = 404;
context.Response.StatusDescription = "Device Not Found";
context.Response.End();
return;
}
var inputPorts = (device as IRoutingInputs)?.InputPorts;
var outputPorts = (device as IRoutingOutputs)?.OutputPorts;
var response = JsonConvert.SerializeObject( new ReturnValue
{
InputPorts = inputPorts?.Select(p => p.Key).ToList(),
OutputPorts = outputPorts?.Select(p => p.Key).ToList()
});
context.Response.StatusCode = 200;
context.Response.StatusDescription = "OK";
context.Response.ContentType = "application/json";
context.Response.ContentEncoding = Encoding.UTF8;
context.Response.Write(response, false);
context.Response.End();
}
}
internal class ReturnValue {
[JsonProperty("inputPorts", NullValueHandling = NullValueHandling.Ignore)]
public List<string> InputPorts { get; set; }
[JsonProperty("outputPorts", NullValueHandling = NullValueHandling.Ignore)]
public List<string> OutputPorts { get; set; }
}
}

View File

@@ -8,9 +8,9 @@ namespace PepperDash.Essentials.Room.MobileControl
{
private readonly IChannel channelDevice;
public IChannelMessenger(string key, string messagePath, Device device) : base(key, messagePath, device)
public IChannelMessenger(string key, string messagePath, IChannel device) : base(key, messagePath, device as IKeyName)
{
channelDevice = device as IChannel;
channelDevice = device;
}
protected override void RegisterActions()

View File

@@ -7,7 +7,7 @@ namespace PepperDash.Essentials.Room.MobileControl
public class IColorMessenger : MessengerBase
{
private readonly IColor colorDevice;
public IColorMessenger(string key, string messagePath, Device device) : base(key, messagePath, device)
public IColorMessenger(string key, string messagePath, IColor device) : base(key, messagePath, device as IKeyName)
{
colorDevice = device as IColor;
}

View File

@@ -7,9 +7,9 @@ namespace PepperDash.Essentials.Room.MobileControl
public class IDPadMessenger : MessengerBase
{
private readonly IDPad dpadDevice;
public IDPadMessenger(string key, string messagePath, Device device) : base(key, messagePath, device)
public IDPadMessenger(string key, string messagePath, IDPad device) : base(key, messagePath, device as IKeyName)
{
dpadDevice = device as IDPad;
dpadDevice = device;
}

View File

@@ -7,9 +7,9 @@ namespace PepperDash.Essentials.Room.MobileControl
public class IDvrMessenger : MessengerBase
{
private readonly IDvr dvrDevice;
public IDvrMessenger(string key, string messagePath, Device device) : base(key, messagePath, device)
public IDvrMessenger(string key, string messagePath, IDvr device) : base(key, messagePath, device as IKeyName)
{
dvrDevice = device as IDvr;
dvrDevice = device;
}
protected override void RegisterActions()

View File

@@ -7,9 +7,9 @@ namespace PepperDash.Essentials.Room.MobileControl
public class IHasPowerMessenger : MessengerBase
{
private readonly IHasPowerControl powerDevice;
public IHasPowerMessenger(string key, string messagePath, Device device) : base(key, messagePath, device)
public IHasPowerMessenger(string key, string messagePath, IHasPowerControl device) : base(key, messagePath, device as IKeyName)
{
powerDevice = device as IHasPowerControl;
powerDevice = device;
}
protected override void RegisterActions()

View File

@@ -7,9 +7,9 @@ namespace PepperDash.Essentials.Room.MobileControl
public class INumericKeypadMessenger : MessengerBase
{
private readonly INumericKeypad keypadDevice;
public INumericKeypadMessenger(string key, string messagePath, Device device) : base(key, messagePath, device)
public INumericKeypadMessenger(string key, string messagePath, INumericKeypad device) : base(key, messagePath, device as IKeyName)
{
keypadDevice = device as INumericKeypad;
keypadDevice = device;
}
protected override void RegisterActions()

View File

@@ -7,9 +7,9 @@ namespace PepperDash.Essentials.Room.MobileControl
public class ISetTopBoxControlsMessenger : MessengerBase
{
private readonly ISetTopBoxControls stbDevice;
public ISetTopBoxControlsMessenger(string key, string messagePath, IKeyName device) : base(key, messagePath, device)
public ISetTopBoxControlsMessenger(string key, string messagePath, ISetTopBoxControls device) : base(key, messagePath, device as IKeyName)
{
stbDevice = device as ISetTopBoxControls;
stbDevice = device;
}
protected override void RegisterActions()

View File

@@ -7,9 +7,9 @@ namespace PepperDash.Essentials.Room.MobileControl
public class ITransportMessenger : MessengerBase
{
private readonly ITransport transportDevice;
public ITransportMessenger(string key, string messagePath, Device device) : base(key, messagePath, device)
public ITransportMessenger(string key, string messagePath, ITransport device) : base(key, messagePath, device as IKeyName)
{
transportDevice = device as ITransport;
transportDevice = device;
}
protected override void RegisterActions()

View File

@@ -13,7 +13,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
private readonly IEssentialsRoomCombiner _roomCombiner;
public IEssentialsRoomCombinerMessenger(string key, string messagePath, IEssentialsRoomCombiner roomCombiner)
: base(key, messagePath, roomCombiner as Device)
: base(key, messagePath, roomCombiner as IKeyName)
{
_roomCombiner = roomCombiner;
}

View File

@@ -10,7 +10,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
private readonly IHasPowerControlWithFeedback _powerControl;
public IHasPowerControlWithFeedbackMessenger(string key, string messagePath, IHasPowerControlWithFeedback powerControl)
: base(key, messagePath, powerControl as Device)
: base(key, messagePath, powerControl as IKeyName)
{
_powerControl = powerControl;
}

View File

@@ -12,7 +12,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
public IHasScheduleAwareness ScheduleSource { get; private set; }
public IHasScheduleAwarenessMessenger(string key, IHasScheduleAwareness scheduleSource, string messagePath)
: base(key, messagePath, scheduleSource as Device)
: base(key, messagePath, scheduleSource as IKeyName)
{
ScheduleSource = scheduleSource ?? throw new ArgumentNullException("scheduleSource");
ScheduleSource.CodecSchedule.MeetingsListHasChanged += new EventHandler<EventArgs>(CodecSchedule_MeetingsListHasChanged);

View File

@@ -10,7 +10,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
private readonly IHumiditySensor device;
public IHumiditySensorMessenger(string key, IHumiditySensor device, string messagePath)
: base(key, messagePath, device as Device)
: base(key, messagePath, device as IKeyName)
{
this.device = device;
}

View File

@@ -10,7 +10,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
public class ILevelControlsMessenger : MessengerBase
{
private ILevelControls levelControlsDevice;
public ILevelControlsMessenger(string key, string messagePath, ILevelControls device) : base(key, messagePath, device as Device)
public ILevelControlsMessenger(string key, string messagePath, ILevelControls device) : base(key, messagePath, device as IKeyName)
{
levelControlsDevice = device;
}

View File

@@ -16,7 +16,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
public class IMatrixRoutingMessenger : MessengerBase
{
private readonly IMatrixRouting matrixDevice;
public IMatrixRoutingMessenger(string key, string messagePath, IMatrixRouting device) : base(key, messagePath, device as Device)
public IMatrixRoutingMessenger(string key, string messagePath, IMatrixRouting device) : base(key, messagePath, device as IKeyName)
{
matrixDevice = device;
}

View File

@@ -12,7 +12,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
private readonly IProjectorScreenLiftControl device;
public IProjectorScreenLiftControlMessenger(string key, string messagePath, IProjectorScreenLiftControl screenLiftDevice)
: base(key, messagePath, screenLiftDevice as Device)
: base(key, messagePath, screenLiftDevice as IKeyName)
{
device = screenLiftDevice;
}

View File

@@ -15,7 +15,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
public IRunRouteAction RoutingDevice { get; private set; }
public RunRouteActionMessenger(string key, IRunRouteAction routingDevice, string messagePath)
: base(key, messagePath, routingDevice as Device)
: base(key, messagePath, routingDevice as IKeyName)
{
RoutingDevice = routingDevice ?? throw new ArgumentNullException("routingDevice");

View File

@@ -9,10 +9,10 @@ namespace PepperDash.Essentials.AppServer.Messengers
public class ISelectableItemsMessenger<TKey> : MessengerBase
{
private static readonly JsonSerializer serializer = new JsonSerializer { Converters = { new StringEnumConverter() } };
private ISelectableItems<TKey> itemDevice;
private readonly ISelectableItems<TKey> itemDevice;
private readonly string _propName;
public ISelectableItemsMessenger(string key, string messagePath, ISelectableItems<TKey> device, string propName) : base(key, messagePath, device as Device)
public ISelectableItemsMessenger(string key, string messagePath, ISelectableItems<TKey> device, string propName) : base(key, messagePath, device as IKeyName)
{
itemDevice = device;
_propName = propName;

View File

@@ -10,7 +10,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
private readonly IShutdownPromptTimer _room;
public IShutdownPromptTimerMessenger(string key, string messagePath, IShutdownPromptTimer room)
: base(key, messagePath, room as Device)
: base(key, messagePath, room as IKeyName)
{
_room = room;
}

View File

@@ -11,7 +11,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
private readonly ISwitchedOutput device;
public ISwitchedOutputMessenger(string key, ISwitchedOutput device, string messagePath)
: base(key, messagePath, device as Device)
: base(key, messagePath, device as IKeyName)
{
this.device = device;
}

View File

@@ -9,7 +9,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
private readonly ITechPassword _room;
public ITechPasswordMessenger(string key, string messagePath, ITechPassword room)
: base(key, messagePath, room as Device)
: base(key, messagePath, room as IKeyName)
{
_room = room;
}

View File

@@ -10,7 +10,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
private readonly ITemperatureSensor device;
public ITemperatureSensorMessenger(string key, ITemperatureSensor device, string messagePath)
: base(key, messagePath, device as Device)
: base(key, messagePath, device as IKeyName)
{
this.device = device;
}

View File

@@ -11,7 +11,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
protected ILightingScenes Device { get; private set; }
public ILightingScenesMessenger(string key, ILightingScenes device, string messagePath)
: base(key, messagePath, device as Device)
: base(key, messagePath, device as IKeyName)
{
Device = device ?? throw new ArgumentNullException("device");
Device.LightingSceneChange += new EventHandler<LightingSceneChangeEventArgs>(LightingDevice_LightingSceneChange);

View File

@@ -14,7 +14,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
public RoomEventScheduleMessenger(string key, string messagePath, IRoomEventSchedule room)
: base(key, messagePath, room as Device)
: base(key, messagePath, room as IKeyName)
{
_room = room;
}

View File

@@ -10,7 +10,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
private readonly IShadesOpenCloseStop device;
public IShadesOpenCloseStopMessenger(string key, IShadesOpenCloseStop shades, string messagePath)
: base(key, messagePath, shades as Device)
: base(key, messagePath, shades as IKeyName)
{
device = shades;
}

View File

@@ -9,12 +9,8 @@ namespace PepperDash.Essentials.AppServer.Messengers
{
private readonly TwoWayDisplayBase _display;
public TwoWayDisplayBaseMessenger(string key, string messagePath) : base(key, messagePath)
{
}
public TwoWayDisplayBaseMessenger(string key, string messagePath, TwoWayDisplayBase display)
: this(key, messagePath)
: base(key, messagePath, display)
{
_display = display;
}

View File

@@ -566,18 +566,16 @@ namespace PepperDash.Essentials
messengerAdded = true;
}
if (device is ISetTopBoxControls)
if (device is ISetTopBoxControls stbDevice)
{
this.LogVerbose(
"Adding ISetTopBoxControlMessenger for {deviceKey}"
);
var dev = device as Device;
);
var messenger = new ISetTopBoxControlsMessenger(
$"{device.Key}-stb-{Key}",
$"/device/{device.Key}",
dev
stbDevice
);
AddDefaultDeviceMessenger(messenger);
@@ -585,18 +583,16 @@ namespace PepperDash.Essentials
messengerAdded = true;
}
if (device is IChannel)
if (device is IChannel channelDevice)
{
this.LogVerbose(
"Adding IChannelMessenger for {deviceKey}", device.Key
);
var dev = device as PepperDash.Core.Device;
);
var messenger = new IChannelMessenger(
$"{device.Key}-channel-{Key}",
$"/device/{device.Key}",
dev
channelDevice
);
AddDefaultDeviceMessenger(messenger);
@@ -604,16 +600,14 @@ namespace PepperDash.Essentials
messengerAdded = true;
}
if (device is IColor)
if (device is IColor colorDevice)
{
this.LogVerbose("Adding IColorMessenger for {deviceKey}", device.Key);
var dev = device as PepperDash.Core.Device;
this.LogVerbose("Adding IColorMessenger for {deviceKey}", device.Key);
var messenger = new IColorMessenger(
$"{device.Key}-color-{Key}",
$"/device/{device.Key}",
dev
colorDevice
);
AddDefaultDeviceMessenger(messenger);
@@ -621,16 +615,14 @@ namespace PepperDash.Essentials
messengerAdded = true;
}
if (device is IDPad)
if (device is IDPad dPadDevice)
{
this.LogVerbose("Adding IDPadMessenger for {deviceKey}", device.Key);
var dev = device as PepperDash.Core.Device;
this.LogVerbose("Adding IDPadMessenger for {deviceKey}", device.Key);
var messenger = new IDPadMessenger(
$"{device.Key}-dPad-{Key}",
$"/device/{device.Key}",
dev
dPadDevice
);
AddDefaultDeviceMessenger(messenger);
@@ -638,16 +630,14 @@ namespace PepperDash.Essentials
messengerAdded = true;
}
if (device is INumericKeypad)
if (device is INumericKeypad nkDevice)
{
this.LogVerbose("Adding INumericKeyapdMessenger for {deviceKey}", device.Key);
var dev = device as PepperDash.Core.Device;
this.LogVerbose("Adding INumericKeyapdMessenger for {deviceKey}", device.Key);
var messenger = new INumericKeypadMessenger(
$"{device.Key}-numericKeypad-{Key}",
$"/device/{device.Key}",
dev
nkDevice
);
AddDefaultDeviceMessenger(messenger);
@@ -655,16 +645,14 @@ namespace PepperDash.Essentials
messengerAdded = true;
}
if (device is IHasPowerControl)
if (device is IHasPowerControl pcDevice)
{
this.LogVerbose("Adding IHasPowerControlMessenger for {deviceKey}", device.Key);
var dev = device as PepperDash.Core.Device;
this.LogVerbose("Adding IHasPowerControlMessenger for {deviceKey}", device.Key);
var messenger = new IHasPowerMessenger(
$"{device.Key}-powerControl-{Key}",
$"/device/{device.Key}",
dev
pcDevice
);
AddDefaultDeviceMessenger(messenger);
@@ -689,18 +677,16 @@ namespace PepperDash.Essentials
messengerAdded = true;
}
if (device is ITransport)
if (device is ITransport transportDevice)
{
this.LogVerbose(
"Adding ITransportMessenger for {deviceKey}", device.Key
);
);
var dev = device as PepperDash.Core.Device;
var messenger = new IChannelMessenger(
var messenger = new ITransportMessenger(
$"{device.Key}-transport-{Key}",
$"/device/{device.Key}",
dev
transportDevice
);
AddDefaultDeviceMessenger(messenger);
@@ -708,14 +694,14 @@ namespace PepperDash.Essentials
messengerAdded = true;
}
if (device is IHasCurrentSourceInfoChange)
if (device is IHasCurrentSourceInfoChange csiChange)
{
this.LogVerbose("Adding IHasCurrentSourceInfoMessenger for {deviceKey}", device.Key);
var messenger = new IHasCurrentSourceInfoMessenger(
$"{device.Key}-currentSource-{Key}",
$"/device/{device.Key}",
device as IHasCurrentSourceInfoChange
csiChange
);
AddDefaultDeviceMessenger(messenger);
@@ -723,7 +709,7 @@ namespace PepperDash.Essentials
messengerAdded = true;
}
if (device is ISwitchedOutput)
if (device is ISwitchedOutput switchedDevice)
{
this.LogVerbose(
"Adding ISwitchedOutputMessenger for {deviceKey}", device.Key
@@ -731,7 +717,7 @@ namespace PepperDash.Essentials
var messenger = new ISwitchedOutputMessenger(
$"{device.Key}-switchedOutput-{Key}",
device as ISwitchedOutput,
switchedDevice,
$"/device/{device.Key}"
);
@@ -773,40 +759,6 @@ namespace PepperDash.Essentials
messengerAdded = true;
}
// This will work if TKey and TSelector are both string types.
// Otherwise plugin device needs to instantiate ISelectableItemsMessenger and add it to the controller.
//if (device is IHasInputs<string, string> inputs)
//{
// this.LogVerbose("Adding InputsMessenger<string,string> for {deviceKey}", device.Key);
// var messenger = new ISelectableItemsMessenger<string>(
// $"{device.Key}-inputs-{Key}",
// $"/device/{device.Key}",
// inputs.Inputs,
// "inputs"
// );
// AddDefaultDeviceMessenger(messenger);
// messengerAdded = true;
//}
//if (device is IHasInputs<byte, int> byteIntInputs)
//{
// this.LogVerbose("Adding InputsMessenger<byte, int> for {deviceKey}", device.Key);
// var messenger = new ISelectableItemsMessenger<byte>(
// $"{device.Key}-inputs-{Key}",
// $"/device/{device.Key}",
// byteIntInputs.Inputs,
// "inputs"
// );
// AddDefaultDeviceMessenger(messenger);
// messengerAdded = true;
//}
if (device is IHasInputs<string> stringInputs)
{
this.LogVerbose("Adding InputsMessenger<string> for {deviceKey}", device.Key);
@@ -855,7 +807,6 @@ namespace PepperDash.Essentials
messengerAdded = true;
}
if (device is IMatrixRouting matrix)
{
this.LogVerbose(