diff --git a/PepperDashEssentials/AppServer/Messengers/SIMPLCameraMessenger.cs b/PepperDashEssentials/AppServer/Messengers/SIMPLCameraMessenger.cs
index b3a46acc..d9868c69 100644
--- a/PepperDashEssentials/AppServer/Messengers/SIMPLCameraMessenger.cs
+++ b/PepperDashEssentials/AppServer/Messengers/SIMPLCameraMessenger.cs
@@ -95,7 +95,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
: base(key, messagePath)
{
EISC = eisc;
- JoinStart = joinStart;
+ JoinStart = joinStart - 1;
EISC.SetUShortSigAction(UshortJoin.CameraPresetCount + JoinStart, (u) => SendCameraFullMessageObject());
@@ -130,7 +130,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
// camera presets
for (uint i = 1; i <= 6; i++)
{
- addAction("/cameraPreset" + (i), BoolJoin.CameraPresetStart + JoinStart + i);
+ addAction("/cameraPreset" + (i), BoolJoin.CameraPresetStart + i + JoinStart);
}
asc.AddAction(MessagePath + "/fullStatus", new Action(SendCameraFullMessageObject));
@@ -150,7 +150,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
{
for (uint i = 1; i <= EISC.GetUshort(UshortJoin.CameraPresetCount); i++)
{
- var presetName = EISC.GetString(JoinStart + StringJoin.CameraPresetNameStart + i);
+ var presetName = EISC.GetString(StringJoin.CameraPresetNameStart + i + JoinStart);
var preset = new CameraPreset((int)i, presetName, string.IsNullOrEmpty(presetName), true);
presetList.Add(preset);
}
diff --git a/PepperDashEssentials/AppServer/Messengers/SIMPLRouteMessenger.cs b/PepperDashEssentials/AppServer/Messengers/SIMPLRouteMessenger.cs
index d0f17573..21eabaff 100644
--- a/PepperDashEssentials/AppServer/Messengers/SIMPLRouteMessenger.cs
+++ b/PepperDashEssentials/AppServer/Messengers/SIMPLRouteMessenger.cs
@@ -29,7 +29,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
: base(key, messagePath)
{
EISC = eisc;
- JoinStart = joinStart;
+ JoinStart = joinStart - 1;
EISC.SetStringSigAction(JoinStart + StringJoin.CurrentSource, (s) => SendRoutingFullMessageObject(s));
}
diff --git a/PepperDashEssentials/AppServer/Messengers/SimplMessengerPropertiesConfig.cs b/PepperDashEssentials/AppServer/Messengers/SimplMessengerPropertiesConfig.cs
new file mode 100644
index 00000000..9ee7407e
--- /dev/null
+++ b/PepperDashEssentials/AppServer/Messengers/SimplMessengerPropertiesConfig.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Crestron.SimplSharp;
+
+using PepperDash.Essentials.Bridges;
+
+namespace PepperDash.Essentials.AppServer.Messengers
+{
+ ///
+ /// Properties to configure a SIMPL Messenger
+ ///
+ public class SimplMessengerPropertiesConfig : EiscApiPropertiesConfig.ApiDevicePropertiesConfig
+ {
+ }
+}
\ No newline at end of file
diff --git a/PepperDashEssentials/AppServer/RoomBridges/MobileControlDdvc01RoomBridge.cs b/PepperDashEssentials/AppServer/RoomBridges/MobileControlDdvc01RoomBridge.cs
index eefd8fbc..9d8ec22b 100644
--- a/PepperDashEssentials/AppServer/RoomBridges/MobileControlDdvc01RoomBridge.cs
+++ b/PepperDashEssentials/AppServer/RoomBridges/MobileControlDdvc01RoomBridge.cs
@@ -110,7 +110,6 @@ namespace PepperDash.Essentials.Room.MobileControl
/// 621
///
public const uint SourceIsEnabledJoinStart = 621;
-
}
public class UshortJoin
@@ -755,6 +754,8 @@ namespace PepperDash.Essentials.Room.MobileControl
co.Devices.Add(conf);
}
+ SetupDeviceMessengers();
+
Debug.Console(0, this, "******* CONFIG FROM DDVC: \r{0}", JsonConvert.SerializeObject(ConfigReader.ConfigObject, Formatting.Indented));
var handler = ConfigurationIsReady;
@@ -766,6 +767,63 @@ namespace PepperDash.Essentials.Room.MobileControl
ConfigIsLoaded = true;
}
+ ///
+ /// Iterates device config and adds messengers as neede for each device type
+ ///
+ void SetupDeviceMessengers()
+ {
+ try
+ {
+ foreach (var device in ConfigReader.ConfigObject.Devices)
+ {
+ if (device.Group.Equals("appServerMessenger"))
+ {
+ var props = JsonConvert.DeserializeObject(device.Properties.ToString());
+
+ var messengerKey = string.Format("device-{0}-{1}", this.Key, Parent.Key);
+
+ MessengerBase messenger = null;
+
+ var dev = ConfigReader.ConfigObject.GetDeviceForKey(props.DeviceKey);
+
+ if (dev == null)
+ {
+ Debug.Console(1, this, "Unable to find device config for key: '{0}'", props.DeviceKey);
+ return;
+ }
+
+ var type = device.Type.ToLower();
+
+ if (type.Equals("simplcameramessenger"))
+ {
+ Debug.Console(2, this, "Adding SIMPLCameraMessenger for: '{0}'", props.DeviceKey);
+ messenger = new SIMPLCameraMessenger(messengerKey, EISC, "/device/" + props.DeviceKey, props.JoinStart);
+
+ }
+ else if (type.Equals("simplroutemessenger"))
+ {
+ Debug.Console(2, this, "Adding SIMPLRouteMessenger for: '{0}'", props.DeviceKey);
+ messenger = new SIMPLRouteMessenger(messengerKey, EISC, "/device/" + props.DeviceKey, props.JoinStart);
+ }
+
+ if (messenger != null)
+ {
+ DeviceManager.AddDevice(messenger);
+ messenger.RegisterWithAppServer(Parent);
+ }
+ else
+ {
+ Debug.Console(2, this, "Unable to add messenger for device: '{0}' of type: '{1}'", props.DeviceKey, type);
+ }
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ Debug.Console(2, this, "Error Setting up Device Managers: {0}", e);
+ }
+ }
+
///
///
///
diff --git a/PepperDashEssentials/Bridges/BridgeBase.cs b/PepperDashEssentials/Bridges/BridgeBase.cs
index 74cc4e87..784be59f 100644
--- a/PepperDashEssentials/Bridges/BridgeBase.cs
+++ b/PepperDashEssentials/Bridges/BridgeBase.cs
@@ -269,10 +269,10 @@ namespace PepperDash.Essentials.Bridges
public EssentialsControlPropertiesConfig Control { get; set; }
[JsonProperty("devices")]
- public List Devices { get; set; }
+ public List Devices { get; set; }
- public class ApiDevice
+ public class ApiDevicePropertiesConfig
{
[JsonProperty("deviceKey")]
public string DeviceKey { get; set; }
diff --git a/PepperDashEssentials/PepperDashEssentials.csproj b/PepperDashEssentials/PepperDashEssentials.csproj
index 62d83715..6cb64c5b 100644
--- a/PepperDashEssentials/PepperDashEssentials.csproj
+++ b/PepperDashEssentials/PepperDashEssentials.csproj
@@ -115,8 +115,9 @@
-
-
+
+
+
diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Config/BasicConfig.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Config/BasicConfig.cs
index 3673a384..904bfc74 100644
--- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Config/BasicConfig.cs
+++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Config/BasicConfig.cs
@@ -39,5 +39,25 @@ namespace PepperDash.Essentials.Core.Config
return SourceLists[key];
}
+
+ ///
+ /// Checks Devices for an item with a Key that matches and returns it if found. Otherwise, retunes null
+ ///
+ /// Key of desired device
+ ///
+ public DeviceConfig GetDeviceForKey(string key)
+ {
+ if (string.IsNullOrEmpty(key))
+ return null;
+
+ var deviceConfig = Devices.FirstOrDefault(d => d.Key.Equals(key));
+
+ if (deviceConfig != null)
+ return deviceConfig;
+ else
+ {
+ return null;
+ }
+ }
}
}
\ No newline at end of file