diff --git a/PepperDashEssentials/AppServer/Messengers/SIMPLAtcMessenger.cs b/PepperDashEssentials/AppServer/Messengers/SIMPLAtcMessenger.cs index 3df9c912..6fd7ffae 100644 --- a/PepperDashEssentials/AppServer/Messengers/SIMPLAtcMessenger.cs +++ b/PepperDashEssentials/AppServer/Messengers/SIMPLAtcMessenger.cs @@ -104,10 +104,7 @@ namespace PepperDash.Essentials.AppServer.Messengers { EISC = eisc; - JoinMap = new SIMPLAtcJoinMap(); - - // TODO: Take in JoinStart value from config - JoinMap.OffsetJoinNumbers(201); + JoinMap = new SIMPLAtcJoinMap(201); CurrentCallItem = new CodecActiveCallItem(); CurrentCallItem.Type = eCodecCallType.Audio; @@ -192,11 +189,14 @@ namespace PepperDash.Essentials.AppServer.Messengers // Pulse DTMF AppServerController.AddAction(MessagePath + "/dtmf", new Action(s => { - var join = JoinMap.GetJoinForKey(s); - if (join > 0) - { - EISC.PulseBool(join, 100); - } + var join = JoinMap.Joins[s]; + if (join != null) + { + if (join.JoinNumber > 0) + { + EISC.PulseBool(join.JoinNumber, 100); + } + } })); } diff --git a/PepperDashEssentials/AppServer/Messengers/SIMPLCameraMessenger.cs b/PepperDashEssentials/AppServer/Messengers/SIMPLCameraMessenger.cs index 468331d6..9cf6456f 100644 --- a/PepperDashEssentials/AppServer/Messengers/SIMPLCameraMessenger.cs +++ b/PepperDashEssentials/AppServer/Messengers/SIMPLCameraMessenger.cs @@ -19,94 +19,19 @@ namespace PepperDash.Essentials.AppServer.Messengers CameraControllerJoinMap JoinMap; - //public class BoolJoin - //{ - // /// - // /// 1 - // /// - // public const uint CameraControlUp = 1; - // /// - // /// 2 - // /// - // public const uint CameraControlDown = 2; - // /// - // /// 3 - // /// - // public const uint CameraControlLeft = 3; - // /// - // /// 4 - // /// - // public const uint CameraControlRight = 4; - // /// - // /// 5 - // /// - // public const uint CameraControlZoomIn = 5; - // /// - // /// 6 - // /// - // public const uint CameraControlZoomOut = 6; - // /// - // /// 10 - // /// - // public const uint CameraHasPresets = 10; - // /// - // /// 11 - 20 - // /// - // public const uint CameraPresetStart = 10; - - // /// - // /// 21 - // /// - // public const uint CameraModeAuto = 21; - // /// - // /// 22 - // /// - // public const uint CameraModeManual = 22; - // /// - // /// 23 - // /// - // public const uint CameraModeOff = 23; - // /// - // /// 24 - // /// - // public const uint CameraSupportsModeAuto = 24; - // /// - // /// 25 - // /// - // public const uint CameraSupportsModeOff = 25; - //} - - //public class UshortJoin - //{ - // /// - // /// 10 - // /// - // public const uint CameraPresetCount = 10; - //} - - //public class StringJoin - //{ - // /// - // /// 11-20 - // /// - // public const uint CameraPresetNameStart = 10; - //} public SIMPLCameraMessenger(string key, BasicTriList eisc, string messagePath, uint joinStart) : base(key, messagePath) { EISC = eisc; - //JoinStart = joinStart - 1; - JoinMap = new CameraControllerJoinMap(); - JoinMap.OffsetJoinNumbers(joinStart); + JoinMap = new CameraControllerJoinMap(joinStart); + EISC.SetUShortSigAction(JoinMap.NumberOfPresets.JoinNumber, (u) => SendCameraFullMessageObject()); - EISC.SetUShortSigAction(JoinMap.GetJoinForKey(CameraControllerJoinMap.NumberOfPresets), (u) => SendCameraFullMessageObject()); - - EISC.SetBoolSigAction(JoinMap.GetJoinForKey(CameraControllerJoinMap.CameraModeAuto), (b) => PostCameraMode()); - EISC.SetBoolSigAction(JoinMap.GetJoinForKey(CameraControllerJoinMap.CameraModeManual), (b) => PostCameraMode()); - EISC.SetBoolSigAction(JoinMap.GetJoinForKey(CameraControllerJoinMap.CameraModeOff), (b) => PostCameraMode()); + EISC.SetBoolSigAction(JoinMap.CameraModeAuto.JoinNumber, (b) => PostCameraMode()); + EISC.SetBoolSigAction(JoinMap.CameraModeManual.JoinNumber, (b) => PostCameraMode()); + EISC.SetBoolSigAction(JoinMap.CameraModeOff.JoinNumber, (b) => PostCameraMode()); } @@ -119,22 +44,22 @@ namespace PepperDash.Essentials.AppServer.Messengers // Add press and holds using helper action Action addPHAction = (s, u) => asc.AddAction(MessagePath + s, new PressAndHoldAction(b => EISC.SetBool(u, b))); - addPHAction("/cameraUp", JoinMap.GetJoinForKey(CameraControllerJoinMap.TiltUp)); - addPHAction("/cameraDown", JoinMap.GetJoinForKey(CameraControllerJoinMap.TiltDown)); - addPHAction("/cameraLeft", JoinMap.GetJoinForKey(CameraControllerJoinMap.PanLeft)); - addPHAction("/cameraRight", JoinMap.GetJoinForKey(CameraControllerJoinMap.PanRight)); - addPHAction("/cameraZoomIn", JoinMap.GetJoinForKey(CameraControllerJoinMap.ZoomIn)); - addPHAction("/cameraZoomOut", JoinMap.GetJoinForKey(CameraControllerJoinMap.ZoomOut)); + addPHAction("/cameraUp", JoinMap.TiltUp.JoinNumber); + addPHAction("/cameraDown", JoinMap.TiltDown.JoinNumber); + addPHAction("/cameraLeft", JoinMap.PanLeft.JoinNumber); + addPHAction("/cameraRight", JoinMap.PanRight.JoinNumber); + addPHAction("/cameraZoomIn", JoinMap.ZoomIn.JoinNumber); + addPHAction("/cameraZoomOut", JoinMap.ZoomOut.JoinNumber); Action addAction = (s, u) => asc.AddAction(MessagePath + s, new Action(() => EISC.PulseBool(u, 100))); - addAction("/cameraModeAuto", JoinMap.GetJoinForKey(CameraControllerJoinMap.CameraModeAuto)); - addAction("/cameraModeManual", JoinMap.GetJoinForKey(CameraControllerJoinMap.CameraModeManual)); - addAction("/cameraModeOff", JoinMap.GetJoinForKey(CameraControllerJoinMap.CameraModeOff)); + addAction("/cameraModeAuto", JoinMap.CameraModeAuto.JoinNumber); + addAction("/cameraModeManual", JoinMap.CameraModeManual.JoinNumber); + addAction("/cameraModeOff", JoinMap.CameraModeOff.JoinNumber); - var presetStart = JoinMap.GetJoinForKey(CameraControllerJoinMap.PresetRecallStart); - var presetEnd = JoinMap.GetJoinForKey(CameraControllerJoinMap.PresetRecallStart) + JoinMap.GetJoinSpanForKey(CameraControllerJoinMap.PresetRecallStart); + var presetStart = JoinMap.PresetRecallStart.JoinNumber; + var presetEnd = JoinMap.PresetRecallStart.JoinNumber + JoinMap.PresetRecallStart.JoinSpan; int presetId = 1; // camera presets @@ -159,11 +84,11 @@ namespace PepperDash.Essentials.AppServer.Messengers appServerController.RemoveAction(MessagePath + "/cameraModeManual"); appServerController.RemoveAction(MessagePath + "/cameraModeOff"); - EISC.SetUShortSigAction(JoinMap.GetJoinForKey(CameraControllerJoinMap.NumberOfPresets), null); + EISC.SetUShortSigAction(JoinMap.NumberOfPresets.JoinNumber, null); - EISC.SetBoolSigAction(JoinMap.GetJoinForKey(CameraControllerJoinMap.CameraModeAuto), null); - EISC.SetBoolSigAction(JoinMap.GetJoinForKey(CameraControllerJoinMap.CameraModeManual), null); - EISC.SetBoolSigAction(JoinMap.GetJoinForKey(CameraControllerJoinMap.CameraModeOff), null); + EISC.SetBoolSigAction(JoinMap.CameraModeAuto.JoinNumber, null); + EISC.SetBoolSigAction(JoinMap.CameraModeManual.JoinNumber, null); + EISC.SetBoolSigAction(JoinMap.CameraModeOff.JoinNumber, null); } /// @@ -174,10 +99,10 @@ namespace PepperDash.Essentials.AppServer.Messengers var presetList = new List(); // Build a list of camera presets based on the names and count - if (EISC.GetBool(JoinMap.GetJoinForKey(CameraControllerJoinMap.SupportsPresets))) + if (EISC.GetBool(JoinMap.SupportsPresets.JoinNumber)) { - var presetStart = JoinMap.GetJoinForKey(CameraControllerJoinMap.PresetLabelStart); - var presetEnd = JoinMap.GetJoinForKey(CameraControllerJoinMap.PresetLabelStart) + JoinMap.GetJoinForKey(CameraControllerJoinMap.NumberOfPresets); + var presetStart = JoinMap.PresetLabelStart.JoinNumber; + var presetEnd = JoinMap.PresetLabelStart.JoinNumber + JoinMap.NumberOfPresets.JoinNumber; var presetId = 1; for (uint i = presetStart; i < presetEnd; i++) @@ -192,7 +117,7 @@ namespace PepperDash.Essentials.AppServer.Messengers PostStatusMessage(new { cameraMode = GetCameraMode(), - hasPresets = EISC.GetBool(JoinMap.GetJoinForKey(CameraControllerJoinMap.SupportsPresets)), + hasPresets = EISC.GetBool(JoinMap.SupportsPresets.JoinNumber), presets = presetList }); } @@ -215,8 +140,8 @@ namespace PepperDash.Essentials.AppServer.Messengers string GetCameraMode() { string m; - if (EISC.GetBool(JoinMap.GetJoinForKey(CameraControllerJoinMap.CameraModeAuto))) m = eCameraControlMode.Auto.ToString().ToLower(); - else if (EISC.GetBool(JoinMap.GetJoinForKey(CameraControllerJoinMap.CameraModeManual))) m = eCameraControlMode.Manual.ToString().ToLower(); + if (EISC.GetBool(JoinMap.CameraModeAuto.JoinNumber)) m = eCameraControlMode.Auto.ToString().ToLower(); + else if (EISC.GetBool(JoinMap.CameraModeManual.JoinNumber)) m = eCameraControlMode.Manual.ToString().ToLower(); else m = eCameraControlMode.Off.ToString().ToLower(); return m; } diff --git a/PepperDashEssentials/AppServer/SIMPLJoinMaps/SIMPLAtcJoinMap.cs b/PepperDashEssentials/AppServer/SIMPLJoinMaps/SIMPLAtcJoinMap.cs index 7db70a35..4ae724e2 100644 --- a/PepperDashEssentials/AppServer/SIMPLJoinMaps/SIMPLAtcJoinMap.cs +++ b/PepperDashEssentials/AppServer/SIMPLJoinMaps/SIMPLAtcJoinMap.cs @@ -9,7 +9,7 @@ namespace PepperDash.Essentials.AppServer public class SIMPLAtcJoinMap : JoinMapBaseAdvanced { [JoinName("EndCall")] - public JoinDataComplete EndCall = new JoinDataComplete( new JoinData() { JoinNumber = 21, JoinSpan = 1 }, new JoinMetadata() { Label = "Hang Up", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinType = eJoinType.Digital }); + public JoinDataComplete EndCall = new JoinDataComplete(new JoinData() { JoinNumber = 21, JoinSpan = 1 }, new JoinMetadata() { Label = "Hang Up", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinType = eJoinType.Digital }); [JoinName("IncomingAnswer")] public JoinDataComplete IncomingAnswer = new JoinDataComplete(new JoinData() { JoinNumber = 51, JoinSpan = 1 }, new JoinMetadata() { Label = "Answer Incoming Call", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinType = eJoinType.Digital }); [JoinName("IncomingReject")] @@ -51,27 +51,14 @@ namespace PepperDash.Essentials.AppServer [JoinName("#")] public JoinDataComplete DtmfPound = new JoinDataComplete(new JoinData() { JoinNumber = 12, JoinSpan = 1 }, new JoinMetadata() { Label = "DTMF #", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinType = eJoinType.Digital }); - public SIMPLAtcJoinMap() + /// + /// Constructor that passes the joinStart to the base class + /// + /// + public SIMPLAtcJoinMap(uint joinStart) + : base(joinStart) { - // Add all the JoinDataComplete properties to the Joins Dictionary - Joins = GetType() - .GetCType() - .GetProperties() - .Where(prop => prop.IsDefined(typeof (JoinNameAttribute), false)) - .Select(prop => (JoinDataComplete) prop.GetValue(this, null)) - .ToDictionary(join => join.GetNameAttribute(), join => join); - } - public override void OffsetJoinNumbers(uint joinStart) - { - var joinOffset = joinStart - 1; - - foreach (var join in Joins) - { - join.Value.JoinNumber = join.Value.JoinNumber + joinOffset; - } - - PrintJoinMapInfo(); } } } \ No newline at end of file diff --git a/PepperDashEssentials/Bridges/AirMediaControllerBridge.cs b/PepperDashEssentials/Bridges/AirMediaControllerBridge.cs index 1f1b64dc..6d819c7b 100644 --- a/PepperDashEssentials/Bridges/AirMediaControllerBridge.cs +++ b/PepperDashEssentials/Bridges/AirMediaControllerBridge.cs @@ -19,7 +19,7 @@ namespace PepperDash.Essentials.Bridges { AirMediaControllerJoinMap joinMap = new AirMediaControllerJoinMap(); - var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey); + var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey); if (!string.IsNullOrEmpty(joinMapSerialized)) joinMap = JsonConvert.DeserializeObject(joinMapSerialized); diff --git a/PepperDashEssentials/Bridges/AppleTvBridge.cs b/PepperDashEssentials/Bridges/AppleTvBridge.cs index 6169a712..99501baa 100644 --- a/PepperDashEssentials/Bridges/AppleTvBridge.cs +++ b/PepperDashEssentials/Bridges/AppleTvBridge.cs @@ -19,7 +19,7 @@ namespace PepperDash.Essentials.Bridges { AppleTvJoinMap joinMap = new AppleTvJoinMap(); - var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey); + var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey); if(!string.IsNullOrEmpty(joinMapSerialized)) joinMap = JsonConvert.DeserializeObject(joinMapSerialized); diff --git a/PepperDashEssentials/Bridges/BridgeBase.cs b/PepperDashEssentials/Bridges/BridgeBase.cs index 03be4d7c..0c4e388b 100644 --- a/PepperDashEssentials/Bridges/BridgeBase.cs +++ b/PepperDashEssentials/Bridges/BridgeBase.cs @@ -45,7 +45,6 @@ namespace PepperDash.Essentials.Bridges { } - } /// @@ -55,7 +54,7 @@ namespace PepperDash.Essentials.Bridges { public EiscApiPropertiesConfig PropertiesConfig { get; private set; } - public Dictionary JoinMaps { get; set; } + protected Dictionary JoinMaps { get; private set; } public ThreeSeriesTcpIpEthernetIntersystemCommunications Eisc { get; private set; } @@ -97,7 +96,7 @@ namespace PepperDash.Essentials.Bridges } else if (device is CameraBase) { - (device as CameraBase).LinkToApi(Eisc, d.JoinStart, d.JoinMapKey); + (device as CameraBase).LinkToApi(Eisc, d.JoinStart, d.JoinMapKey, this); continue; } else if (device is PepperDash.Essentials.Core.DisplayBase) @@ -190,6 +189,23 @@ namespace PepperDash.Essentials.Bridges }); } + /// + /// Adds a join map + /// + /// + /// + public void AddJoinMap(string deviceKey, JoinMapBaseAdvanced joinMap) + { + if (!JoinMaps.ContainsKey(deviceKey)) + { + JoinMaps.Add(deviceKey, joinMap); + } + else + { + Debug.Console(2, this, "Unable to add join map with key '{0}'. Key already exists in JoinMaps dictionary", deviceKey); + } + } + /// /// Used for debugging to trigger an action based on a join number and type /// diff --git a/PepperDashEssentials/Bridges/C2nRthsControllerBridge.cs b/PepperDashEssentials/Bridges/C2nRthsControllerBridge.cs index 58f4600d..13b78bae 100644 --- a/PepperDashEssentials/Bridges/C2nRthsControllerBridge.cs +++ b/PepperDashEssentials/Bridges/C2nRthsControllerBridge.cs @@ -13,7 +13,7 @@ namespace PepperDash.Essentials.Bridges { var joinMap = new C2nRthsControllerJoinMap(); - var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey); + var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey); if (!string.IsNullOrEmpty(joinMapSerialized)) joinMap = JsonConvert.DeserializeObject(joinMapSerialized); diff --git a/PepperDashEssentials/Bridges/CameraControllerBridge.cs b/PepperDashEssentials/Bridges/CameraControllerBridge.cs index 21a9d3eb..8e25300a 100644 --- a/PepperDashEssentials/Bridges/CameraControllerBridge.cs +++ b/PepperDashEssentials/Bridges/CameraControllerBridge.cs @@ -15,28 +15,31 @@ namespace PepperDash.Essentials.Bridges { public static class CameraControllerApiExtensions { - public static void LinkToApi(this PepperDash.Essentials.Devices.Common.Cameras.CameraBase cameraDevice, BasicTriList trilist, uint joinStart, string joinMapKey) + public static void LinkToApi(this PepperDash.Essentials.Devices.Common.Cameras.CameraBase cameraDevice, BasicTriList trilist, uint joinStart, string joinMapKey, EiscApi bridge) { - CameraControllerJoinMap joinMap = new CameraControllerJoinMap(); + CameraControllerJoinMap joinMap = new CameraControllerJoinMap(joinStart); - var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey); + // Adds the join map to the bridge + bridge.AddJoinMap(cameraDevice.Key, joinMap); - if (!string.IsNullOrEmpty(joinMapSerialized)) - joinMap = JsonConvert.DeserializeObject(joinMapSerialized); + var customJoins = JoinMapHelper.TryGetJoinMapAdvancedForDevice(joinMapKey); - joinMap.OffsetJoinNumbers(joinStart); + 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}", cameraDevice.GetType().Name.ToString()); var commMonitor = cameraDevice as ICommunicationMonitor; - commMonitor.CommunicationMonitor.IsOnlineFeedback.LinkInputSig(trilist.BooleanInput[joinMap.GetJoinForKey(CameraControllerJoinMap.IsOnline)]); + commMonitor.CommunicationMonitor.IsOnlineFeedback.LinkInputSig(trilist.BooleanInput[joinMap.IsOnline.JoinNumber]); var ptzCamera = cameraDevice as IHasCameraPtzControl; if (ptzCamera != null) { - trilist.SetBoolSigAction(joinMap.GetJoinForKey(CameraControllerJoinMap.PanLeft), (b) => + trilist.SetBoolSigAction(joinMap.PanLeft.JoinNumber, (b) => { if (b) { @@ -47,7 +50,7 @@ namespace PepperDash.Essentials.Bridges ptzCamera.PanStop(); } }); - trilist.SetBoolSigAction(joinMap.GetJoinForKey(CameraControllerJoinMap.PanRight), (b) => + trilist.SetBoolSigAction(joinMap.PanRight.JoinNumber, (b) => { if (b) { @@ -59,7 +62,7 @@ namespace PepperDash.Essentials.Bridges } }); - trilist.SetBoolSigAction(joinMap.GetJoinForKey(CameraControllerJoinMap.TiltUp), (b) => + trilist.SetBoolSigAction(joinMap.TiltUp.JoinNumber, (b) => { if (b) { @@ -70,7 +73,7 @@ namespace PepperDash.Essentials.Bridges ptzCamera.TiltStop(); } }); - trilist.SetBoolSigAction(joinMap.GetJoinForKey(CameraControllerJoinMap.TiltDown), (b) => + trilist.SetBoolSigAction(joinMap.TiltDown.JoinNumber, (b) => { if (b) { @@ -82,7 +85,7 @@ namespace PepperDash.Essentials.Bridges } }); - trilist.SetBoolSigAction(joinMap.GetJoinForKey(CameraControllerJoinMap.ZoomIn), (b) => + trilist.SetBoolSigAction(joinMap.ZoomIn.JoinNumber, (b) => { if (b) { @@ -94,7 +97,7 @@ namespace PepperDash.Essentials.Bridges } }); - trilist.SetBoolSigAction(joinMap.GetJoinForKey(CameraControllerJoinMap.ZoomOut), (b) => + trilist.SetBoolSigAction(joinMap.ZoomOut.JoinNumber, (b) => { if (b) { @@ -110,17 +113,17 @@ namespace PepperDash.Essentials.Bridges if (cameraDevice is IPower) { var powerCamera = cameraDevice as IPower; - trilist.SetSigTrueAction(joinMap.GetJoinForKey(CameraControllerJoinMap.PowerOn), () => powerCamera.PowerOn()); - trilist.SetSigTrueAction(joinMap.GetJoinForKey(CameraControllerJoinMap.PowerOff), () => powerCamera.PowerOff()); + trilist.SetSigTrueAction(joinMap.PowerOn.JoinNumber, () => powerCamera.PowerOn()); + trilist.SetSigTrueAction(joinMap.PowerOff.JoinNumber, () => powerCamera.PowerOff()); - powerCamera.PowerIsOnFeedback.LinkInputSig(trilist.BooleanInput[joinMap.GetJoinForKey(CameraControllerJoinMap.PowerOn)]); - powerCamera.PowerIsOnFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.GetJoinForKey(CameraControllerJoinMap.PowerOff)]); + powerCamera.PowerIsOnFeedback.LinkInputSig(trilist.BooleanInput[joinMap.PowerOn.JoinNumber]); + powerCamera.PowerIsOnFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.PowerOff.JoinNumber]); } if (cameraDevice is ICommunicationMonitor) { var monitoredCamera = cameraDevice as ICommunicationMonitor; - monitoredCamera.CommunicationMonitor.IsOnlineFeedback.LinkInputSig(trilist.BooleanInput[joinMap.GetJoinForKey(CameraControllerJoinMap.IsOnline)]); + monitoredCamera.CommunicationMonitor.IsOnlineFeedback.LinkInputSig(trilist.BooleanInput[joinMap.IsOnline.JoinNumber]); } if (cameraDevice is IHasCameraPresets) @@ -129,7 +132,7 @@ namespace PepperDash.Essentials.Bridges var presetsCamera = cameraDevice as IHasCameraPresets; presetsCamera.PresetsListHasChanged += new EventHandler((o, a) => { - for (int i = 1; i <= joinMap.GetJoinForKey(CameraControllerJoinMap.NumberOfPresets); i++) + for (int i = 1; i <= joinMap.NumberOfPresets.JoinNumber; i++) { int tempNum = i - 1; @@ -140,21 +143,21 @@ namespace PepperDash.Essentials.Bridges if (preset != null) label = preset.Description; - trilist.SetString((ushort)(joinMap.GetJoinForKey(CameraControllerJoinMap.PresetLabelStart) + tempNum), label); + trilist.SetString((ushort)(joinMap.PresetLabelStart.JoinNumber + tempNum), label); } }); - for (int i = 0; i < joinMap.GetJoinForKey(CameraControllerJoinMap.NumberOfPresets); i++) + for (int i = 0; i < joinMap.NumberOfPresets.JoinNumber; i++) { int tempNum = i; - trilist.SetSigTrueAction((ushort)(joinMap.GetJoinForKey(CameraControllerJoinMap.PresetRecallStart) + tempNum), () => + trilist.SetSigTrueAction((ushort)(joinMap.PresetRecallStart.JoinNumber + tempNum), () => { presetsCamera.PresetSelect(tempNum); }); - trilist.SetSigTrueAction((ushort)(joinMap.GetJoinForKey(CameraControllerJoinMap.PresetSaveStart) + tempNum), () => + trilist.SetSigTrueAction((ushort)(joinMap.PresetSaveStart.JoinNumber + tempNum), () => { - var label = trilist.GetString(joinMap.GetJoinForKey(CameraControllerJoinMap.PresetLabelStart + tempNum)); + var label = trilist.GetString((ushort)(joinMap.PresetLabelStart.JoinNumber + tempNum)); presetsCamera.PresetStore(tempNum, label); }); diff --git a/PepperDashEssentials/Bridges/DigitalLoggerBridge.cs b/PepperDashEssentials/Bridges/DigitalLoggerBridge.cs index 2c857da2..7d3fab3d 100644 --- a/PepperDashEssentials/Bridges/DigitalLoggerBridge.cs +++ b/PepperDashEssentials/Bridges/DigitalLoggerBridge.cs @@ -18,7 +18,7 @@ namespace PepperDash.Essentials.Bridges { DigitalLoggerJoinMap joinMap = new DigitalLoggerJoinMap(); - var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey); + var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey); if (!string.IsNullOrEmpty(joinMapSerialized)) joinMap = JsonConvert.DeserializeObject(joinMapSerialized); diff --git a/PepperDashEssentials/Bridges/DisplayControllerBridge.cs b/PepperDashEssentials/Bridges/DisplayControllerBridge.cs index 25791796..c94b3691 100644 --- a/PepperDashEssentials/Bridges/DisplayControllerBridge.cs +++ b/PepperDashEssentials/Bridges/DisplayControllerBridge.cs @@ -23,7 +23,7 @@ namespace PepperDash.Essentials.Bridges DisplayControllerJoinMap joinMap = new DisplayControllerJoinMap(); - var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey); + var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey); if(!string.IsNullOrEmpty(joinMapSerialized)) joinMap = JsonConvert.DeserializeObject(joinMapSerialized); diff --git a/PepperDashEssentials/Bridges/DmBladeChassisControllerBridge.cs b/PepperDashEssentials/Bridges/DmBladeChassisControllerBridge.cs index 6daddbb0..221745e8 100644 --- a/PepperDashEssentials/Bridges/DmBladeChassisControllerBridge.cs +++ b/PepperDashEssentials/Bridges/DmBladeChassisControllerBridge.cs @@ -19,7 +19,7 @@ namespace PepperDash.Essentials.Bridges { public static void LinkToApi(this DmBladeChassisController dmChassis, BasicTriList trilist, uint joinStart, string joinMapKey) { DmBladeChassisControllerJoinMap joinMap = new DmBladeChassisControllerJoinMap(); - var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey); + var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey); if (!string.IsNullOrEmpty(joinMapSerialized)) joinMap = JsonConvert.DeserializeObject(joinMapSerialized); diff --git a/PepperDashEssentials/Bridges/DmChassisControllerBridge.cs b/PepperDashEssentials/Bridges/DmChassisControllerBridge.cs index e193cc2c..9c8c8551 100644 --- a/PepperDashEssentials/Bridges/DmChassisControllerBridge.cs +++ b/PepperDashEssentials/Bridges/DmChassisControllerBridge.cs @@ -23,7 +23,7 @@ namespace PepperDash.Essentials.Bridges { DmChassisControllerJoinMap joinMap = new DmChassisControllerJoinMap(); - var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey); + var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey); if (!string.IsNullOrEmpty(joinMapSerialized)) joinMap = JsonConvert.DeserializeObject(joinMapSerialized); diff --git a/PepperDashEssentials/Bridges/DmRmcControllerBridge.cs b/PepperDashEssentials/Bridges/DmRmcControllerBridge.cs index ca7bdeca..1e99b734 100644 --- a/PepperDashEssentials/Bridges/DmRmcControllerBridge.cs +++ b/PepperDashEssentials/Bridges/DmRmcControllerBridge.cs @@ -19,7 +19,7 @@ namespace PepperDash.Essentials.Bridges { DmRmcControllerJoinMap joinMap = new DmRmcControllerJoinMap(); - var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey); + var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey); if (!string.IsNullOrEmpty(joinMapSerialized)) joinMap = JsonConvert.DeserializeObject(joinMapSerialized); diff --git a/PepperDashEssentials/Bridges/DmTxControllerBridge.cs b/PepperDashEssentials/Bridges/DmTxControllerBridge.cs index 91f8c6d7..9b28611e 100644 --- a/PepperDashEssentials/Bridges/DmTxControllerBridge.cs +++ b/PepperDashEssentials/Bridges/DmTxControllerBridge.cs @@ -22,7 +22,7 @@ namespace PepperDash.Essentials.Bridges { DmTxControllerJoinMap joinMap = new DmTxControllerJoinMap(); - var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey); + var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey); if (!string.IsNullOrEmpty(joinMapSerialized)) joinMap = JsonConvert.DeserializeObject(joinMapSerialized); diff --git a/PepperDashEssentials/Bridges/DmpsAudioOutputControllerBridge.cs b/PepperDashEssentials/Bridges/DmpsAudioOutputControllerBridge.cs index 406550a4..f721b44f 100644 --- a/PepperDashEssentials/Bridges/DmpsAudioOutputControllerBridge.cs +++ b/PepperDashEssentials/Bridges/DmpsAudioOutputControllerBridge.cs @@ -20,7 +20,7 @@ namespace PepperDash.Essentials.Bridges { DmpsAudioOutputControllerJoinMap joinMap = new DmpsAudioOutputControllerJoinMap(); - var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey); + var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey); if (!string.IsNullOrEmpty(joinMapSerialized)) joinMap = JsonConvert.DeserializeObject(joinMapSerialized); diff --git a/PepperDashEssentials/Bridges/DmpsRoutingControllerBridge.cs b/PepperDashEssentials/Bridges/DmpsRoutingControllerBridge.cs index cc95e07b..eb359dd9 100644 --- a/PepperDashEssentials/Bridges/DmpsRoutingControllerBridge.cs +++ b/PepperDashEssentials/Bridges/DmpsRoutingControllerBridge.cs @@ -20,7 +20,7 @@ namespace PepperDash.Essentials.Bridges { DmpsRoutingControllerJoinMap joinMap = new DmpsRoutingControllerJoinMap(); - var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey); + var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey); if (!string.IsNullOrEmpty(joinMapSerialized)) joinMap = JsonConvert.DeserializeObject(joinMapSerialized); diff --git a/PepperDashEssentials/Bridges/GenericLightingBridge.cs b/PepperDashEssentials/Bridges/GenericLightingBridge.cs index 543e124e..d76bbebb 100644 --- a/PepperDashEssentials/Bridges/GenericLightingBridge.cs +++ b/PepperDashEssentials/Bridges/GenericLightingBridge.cs @@ -18,7 +18,7 @@ namespace PepperDash.Essentials.Bridges { GenericLightingJoinMap joinMap = new GenericLightingJoinMap(); - var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey); + var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey); if (!string.IsNullOrEmpty(joinMapSerialized)) joinMap = JsonConvert.DeserializeObject(joinMapSerialized); diff --git a/PepperDashEssentials/Bridges/GenericRelayDeviceBridge.cs b/PepperDashEssentials/Bridges/GenericRelayDeviceBridge.cs index 95566712..684a5550 100644 --- a/PepperDashEssentials/Bridges/GenericRelayDeviceBridge.cs +++ b/PepperDashEssentials/Bridges/GenericRelayDeviceBridge.cs @@ -19,7 +19,7 @@ namespace PepperDash.Essentials.Bridges { GenericRelayControllerJoinMap joinMap = new GenericRelayControllerJoinMap(); - var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey); + var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey); if (!string.IsNullOrEmpty(joinMapSerialized)) joinMap = JsonConvert.DeserializeObject(joinMapSerialized); diff --git a/PepperDashEssentials/Bridges/GlsOccupancySensorBaseControllerBridge.cs b/PepperDashEssentials/Bridges/GlsOccupancySensorBaseControllerBridge.cs index d905beef..a49061b7 100644 --- a/PepperDashEssentials/Bridges/GlsOccupancySensorBaseControllerBridge.cs +++ b/PepperDashEssentials/Bridges/GlsOccupancySensorBaseControllerBridge.cs @@ -20,7 +20,7 @@ namespace PepperDash.Essentials.Bridges { GlsOccupancySensorBaseJoinMap joinMap = new GlsOccupancySensorBaseJoinMap(); - var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey); + var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey); if (!string.IsNullOrEmpty(joinMapSerialized)) joinMap = JsonConvert.DeserializeObject(joinMapSerialized); diff --git a/PepperDashEssentials/Bridges/HdMdxxxCEControllerBridge.cs b/PepperDashEssentials/Bridges/HdMdxxxCEControllerBridge.cs index 0ec23c55..52bacfec 100644 --- a/PepperDashEssentials/Bridges/HdMdxxxCEControllerBridge.cs +++ b/PepperDashEssentials/Bridges/HdMdxxxCEControllerBridge.cs @@ -22,7 +22,7 @@ namespace PepperDash.Essentials.Bridges { HdMdxxxCEControllerJoinMap joinMap = new HdMdxxxCEControllerJoinMap(); - var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey); + var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey); if (!string.IsNullOrEmpty(joinMapSerialized)) joinMap = JsonConvert.DeserializeObject(joinMapSerialized); diff --git a/PepperDashEssentials/Bridges/IBasicCommunicationBridge.cs b/PepperDashEssentials/Bridges/IBasicCommunicationBridge.cs index 86fbf78b..6ae9334c 100644 --- a/PepperDashEssentials/Bridges/IBasicCommunicationBridge.cs +++ b/PepperDashEssentials/Bridges/IBasicCommunicationBridge.cs @@ -18,7 +18,7 @@ namespace PepperDash.Essentials.Bridges { IBasicCommunicationJoinMap joinMap = new IBasicCommunicationJoinMap(); - var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey); + var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey); if (!string.IsNullOrEmpty(joinMapSerialized)) joinMap = JsonConvert.DeserializeObject(joinMapSerialized); diff --git a/PepperDashEssentials/Bridges/IDigitalInputBridge.cs b/PepperDashEssentials/Bridges/IDigitalInputBridge.cs index 4d42cbdc..54c48e1a 100644 --- a/PepperDashEssentials/Bridges/IDigitalInputBridge.cs +++ b/PepperDashEssentials/Bridges/IDigitalInputBridge.cs @@ -19,7 +19,7 @@ namespace PepperDash.Essentials.Bridges { IDigitalInputJoinMap joinMap = new IDigitalInputJoinMap(); - var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey); + var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey); if (!string.IsNullOrEmpty(joinMapSerialized)) joinMap = JsonConvert.DeserializeObject(joinMapSerialized); diff --git a/PepperDashEssentials/Bridges/IRSetTopBoxBaseBridge.cs b/PepperDashEssentials/Bridges/IRSetTopBoxBaseBridge.cs index 68d765bc..0f7b5786 100644 --- a/PepperDashEssentials/Bridges/IRSetTopBoxBaseBridge.cs +++ b/PepperDashEssentials/Bridges/IRSetTopBoxBaseBridge.cs @@ -17,7 +17,7 @@ namespace PepperDash.Essentials.Bridges public static void LinkToApi(this PepperDash.Essentials.Devices.Common.IRSetTopBoxBase stbDevice, BasicTriList trilist, uint joinStart, string joinMapKey) { SetTopBoxControllerJoinMap joinMap = new SetTopBoxControllerJoinMap(); - var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey); + var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey); if (!string.IsNullOrEmpty(joinMapSerialized)) joinMap = JsonConvert.DeserializeObject(joinMapSerialized); diff --git a/PepperDashEssentials/Bridges/JoinMaps/CameraControllerJoinMap.cs b/PepperDashEssentials/Bridges/JoinMaps/CameraControllerJoinMap.cs index ce4594bc..17bd1a71 100644 --- a/PepperDashEssentials/Bridges/JoinMaps/CameraControllerJoinMap.cs +++ b/PepperDashEssentials/Bridges/JoinMaps/CameraControllerJoinMap.cs @@ -11,86 +11,56 @@ namespace PepperDash.Essentials.Bridges /// /// Join map for CameraBase devices /// - public class CameraControllerJoinMap : JoinMapBase + public class CameraControllerJoinMap : JoinMapBaseAdvanced { - public const string IsOnline = "IsOnline"; - public const string PowerOff = "PowerOff"; - public const string PowerOn = "PowerOn"; - public const string TiltUp = "TiltUp"; - public const string TiltDown = "TiltDown"; - public const string PanLeft = "PanLeft"; - public const string PanRight = "PanRight"; - public const string ZoomIn = "ZoomIn"; - public const string ZoomOut = "ZoomOut"; - public const string PresetRecallStart = "PresetRecallStart"; - public const string PresetSaveStart = "PresetSaveStart"; - public const string PresetLabelStart = "PresetReacllStgart"; - public const string NumberOfPresets = "NumberOfPresets"; - public const string CameraModeAuto = "CameraModeAuto"; - public const string CameraModeManual = "CameraModeManual"; - public const string CameraModeOff = "CameraModeOff"; - public const string SupportsCameraModeAuto = "SupportsCameraModeAuto"; - public const string SupportsCameraModeOff = "SupportsCameraModeOff"; - public const string SupportsPresets = "SupportsPresets"; + [JoinName("TiltUp")] + public JoinDataComplete TiltUp = new JoinDataComplete(new JoinData() { JoinNumber = 1, JoinSpan = 1 }, new JoinMetadata() { Label = "Tilt Up", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinType = eJoinType.Digital }); + [JoinName("TiltDown")] + public JoinDataComplete TiltDown = new JoinDataComplete(new JoinData() { JoinNumber = 2, JoinSpan = 1 }, new JoinMetadata() { Label = "Tilt Down", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinType = eJoinType.Digital }); + [JoinName("PanLeft")] + public JoinDataComplete PanLeft = new JoinDataComplete(new JoinData() { JoinNumber = 3, JoinSpan = 1 }, new JoinMetadata() { Label = "Pan Left", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinType = eJoinType.Digital }); + [JoinName("PanRight")] + public JoinDataComplete PanRight = new JoinDataComplete(new JoinData() { JoinNumber = 4, JoinSpan = 1 }, new JoinMetadata() { Label = "Pan Right", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinType = eJoinType.Digital }); + [JoinName("ZoomIn")] + public JoinDataComplete ZoomIn = new JoinDataComplete(new JoinData() { JoinNumber = 5, JoinSpan = 1 }, new JoinMetadata() { Label = "Zoom In", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinType = eJoinType.Digital }); + [JoinName("ZoomOut")] + public JoinDataComplete ZoomOut = new JoinDataComplete(new JoinData() { JoinNumber = 6, JoinSpan = 1 }, new JoinMetadata() { Label = "Zoom Out", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinType = eJoinType.Digital }); - public CameraControllerJoinMap() + [JoinName("IsOnline")] + public JoinDataComplete IsOnline = new JoinDataComplete(new JoinData() { JoinNumber = 9, JoinSpan = 1 }, new JoinMetadata() { Label = "Is Online", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinType = eJoinType.Digital }); + [JoinName("PowerOn")] + public JoinDataComplete PowerOn = new JoinDataComplete(new JoinData() { JoinNumber = 7, JoinSpan = 1 }, new JoinMetadata() { Label = "Power On", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital }); + [JoinName("PowerOff")] + public JoinDataComplete PowerOff = new JoinDataComplete(new JoinData() { JoinNumber = 8, JoinSpan = 1 }, new JoinMetadata() { Label = "Power Off", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital }); + + + [JoinName("NumberOfPresets")] + public JoinDataComplete NumberOfPresets = new JoinDataComplete(new JoinData() { JoinNumber = 11, JoinSpan = 1 }, new JoinMetadata() { Label = "Tells Essentials the number of defined presets", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinType = eJoinType.Analog }); + [JoinName("PresetRecallStart")] + public JoinDataComplete PresetRecallStart = new JoinDataComplete(new JoinData() { JoinNumber = 11, JoinSpan = 20 }, new JoinMetadata() { Label = "Preset Recall Start", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinType = eJoinType.Digital }); + [JoinName("PresetLabelStart")] + public JoinDataComplete PresetLabelStart = new JoinDataComplete(new JoinData() { JoinNumber = 11, JoinSpan = 20 }, new JoinMetadata() { Label = "Preset Label Start", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinType = eJoinType.Serial }); + [JoinName("PresetSaveStart")] + public JoinDataComplete PresetSaveStart = new JoinDataComplete(new JoinData() { JoinNumber = 31, JoinSpan = 20 }, new JoinMetadata() { Label = "Preset Save Start", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinType = eJoinType.Digital }); + + [JoinName("CameraModeAuto")] + public JoinDataComplete CameraModeAuto = new JoinDataComplete(new JoinData() { JoinNumber = 51, JoinSpan = 1 }, new JoinMetadata() { Label = "Camera Mode Auto", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital }); + [JoinName("CameraModeManual")] + public JoinDataComplete CameraModeManual = new JoinDataComplete(new JoinData() { JoinNumber = 52, JoinSpan = 1 }, new JoinMetadata() { Label = "Camera Mode Manual", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital }); + [JoinName("CameraModeOff")] + public JoinDataComplete CameraModeOff = new JoinDataComplete(new JoinData() { JoinNumber = 53, JoinSpan = 1 }, new JoinMetadata() { Label = "Camera Mode Off", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital }); + + [JoinName("SupportsCameraModeAuto")] + public JoinDataComplete SupportsCameraModeAuto = new JoinDataComplete(new JoinData() { JoinNumber = 55, JoinSpan = 1 }, new JoinMetadata() { Label = "Supports Camera Mode Auto", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinType = eJoinType.Digital }); + [JoinName("SupportsCameraModeOff")] + public JoinDataComplete SupportsCameraModeOff = new JoinDataComplete(new JoinData() { JoinNumber = 56, JoinSpan = 1 }, new JoinMetadata() { Label = "Supports Camera Mode Off", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinType = eJoinType.Digital }); + [JoinName("SupportsPresets")] + public JoinDataComplete SupportsPresets = new JoinDataComplete(new JoinData() { JoinNumber = 57, JoinSpan = 1 }, new JoinMetadata() { Label = "Supports Presets", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinType = eJoinType.Digital }); + + + public CameraControllerJoinMap(uint joinStart) + :base(joinStart) { - Joins.Add(TiltDown, new JoinMetadata() - { JoinNumber = 1, Label = "Tilt Up", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital }); - Joins.Add(TiltDown, new JoinMetadata() - { JoinNumber = 2, Label = "Tilt Down", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital }); - Joins.Add(PanLeft, new JoinMetadata() - { JoinNumber = 3, Label = "Pan Left", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital }); - Joins.Add(PanRight, new JoinMetadata() - { JoinNumber = 4, Label = "Pan Right", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital }); - Joins.Add(ZoomIn, new JoinMetadata() - { JoinNumber = 5, Label = "Zoom In", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital }); - Joins.Add(ZoomOut, new JoinMetadata() - { JoinNumber = 6, Label = "Zoom Out", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital }); - - Joins.Add(PowerOn, new JoinMetadata() - { JoinNumber = 7, Label = "Power On", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital }); - Joins.Add(PowerOff, new JoinMetadata() - { JoinNumber = 8, Label = "Power Off", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital }); - Joins.Add(IsOnline, new JoinMetadata() - { JoinNumber = 9, Label = "Is Online", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital }); - - Joins.Add(PresetRecallStart, new JoinMetadata() - { JoinNumber = 11, Label = "Preset Recall Start", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 20, JoinType = eJoinType.Digital }); - Joins.Add(PresetLabelStart, new JoinMetadata() - { JoinNumber = 11, Label = "Preset Label Start", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 20, JoinType = eJoinType.Serial }); - - Joins.Add(PresetSaveStart, new JoinMetadata() - { JoinNumber = 31, Label = "Preset Save Start", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 20, JoinType = eJoinType.Digital }); - - Joins.Add(NumberOfPresets, new JoinMetadata() - { JoinNumber = 11, Label = "Number of Presets", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 1, JoinType = eJoinType.Analog }); - - Joins.Add(CameraModeAuto, new JoinMetadata() - { JoinNumber = 51, Label = "Camera Mode Auto", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital }); - Joins.Add(CameraModeManual, new JoinMetadata() - { JoinNumber = 52, Label = "Camera Mode Manual", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital }); - Joins.Add(CameraModeOff, new JoinMetadata() - { JoinNumber = 53, Label = "Camera Mode Off", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital }); - - Joins.Add(SupportsCameraModeAuto, new JoinMetadata() - { JoinNumber = 55, Label = "Supports Camera Mode Auto", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital }); - Joins.Add(SupportsCameraModeOff, new JoinMetadata() - { JoinNumber = 56, Label = "Supports Camera Mode Off", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital }); - Joins.Add(SupportsPresets, new JoinMetadata() - { JoinNumber = 57, Label = "Supports Presets", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinSpan = 1, JoinType = eJoinType.Digital }); - } - - public override void OffsetJoinNumbers(uint joinStart) - { - var joinOffset = joinStart - 1; - - foreach (var join in Joins) - { - join.Value.JoinNumber = join.Value.JoinNumber + joinOffset; - } - - PrintJoinMapInfo(); } } } \ No newline at end of file diff --git a/PepperDashEssentials/Bridges/StatusSignControllerBridge.cs b/PepperDashEssentials/Bridges/StatusSignControllerBridge.cs index df38ba26..860f070d 100644 --- a/PepperDashEssentials/Bridges/StatusSignControllerBridge.cs +++ b/PepperDashEssentials/Bridges/StatusSignControllerBridge.cs @@ -13,7 +13,7 @@ namespace PepperDash.Essentials.Bridges { var joinMap = new StatusSignControllerJoinMap(); - var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey); + var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey); if (!string.IsNullOrEmpty(joinMapSerialized)) joinMap = JsonConvert.DeserializeObject(joinMapSerialized); diff --git a/PepperDashEssentials/Bridges/SystemMonitorBridge.cs b/PepperDashEssentials/Bridges/SystemMonitorBridge.cs index 6e41a43f..d048b493 100644 --- a/PepperDashEssentials/Bridges/SystemMonitorBridge.cs +++ b/PepperDashEssentials/Bridges/SystemMonitorBridge.cs @@ -14,7 +14,7 @@ namespace PepperDash.Essentials.Bridges { var joinMap = new SystemMonitorJoinMap(); - var joinMapSerialized = JoinMapHelper.GetJoinMapForDevice(joinMapKey); + var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey); if(!string.IsNullOrEmpty(joinMapSerialized)) joinMap = JsonConvert.DeserializeObject(joinMapSerialized); diff --git a/PepperDashEssentials/PluginLoading/PluginLoading.cs b/PepperDashEssentials/PluginLoading/PluginLoading.cs index e1b0f555..11a4ee32 100644 --- a/PepperDashEssentials/PluginLoading/PluginLoading.cs +++ b/PepperDashEssentials/PluginLoading/PluginLoading.cs @@ -415,7 +415,7 @@ namespace PepperDash.Essentials // Deal with any .cplz files UnzipAndMoveCplzArchives(); - if(Directory.Exists(_loadedPluginsDirectoryPath) { + if(Directory.Exists(_loadedPluginsDirectoryPath)) { // Load the assemblies from the loadedPlugins folder into the AppDomain LoadPluginAssemblies(); diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/JoinMaps/JoinMapBase.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/JoinMaps/JoinMapBase.cs index 8b1afdfa..8ea1cf7f 100644 --- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/JoinMaps/JoinMapBase.cs +++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/JoinMaps/JoinMapBase.cs @@ -19,7 +19,7 @@ namespace PepperDash.Essentials.Core /// /// /// - public static string GetJoinMapForDevice(string joinMapKey) + public static string GetSerializedJoinMapForDevice(string joinMapKey) { if (string.IsNullOrEmpty(joinMapKey)) return null; @@ -33,6 +33,31 @@ namespace PepperDash.Essentials.Core else return null; } + + /// + /// Attempts to find a custom join map by key and returns it deserialized if found + /// + /// + /// + public static Dictionary TryGetJoinMapAdvancedForDevice(string joinMapKey) + { + if (string.IsNullOrEmpty(joinMapKey)) + return null; + + var joinMapSerialzed = ConfigReader.ConfigObject.JoinMaps[joinMapKey]; + + if (joinMapSerialzed != null) + { + var joinMap = JsonConvert.DeserializeObject>(joinMapSerialzed); + + if (joinMap != null) + return joinMap; + else + return null; + } + else + return null; + } } /// @@ -135,17 +160,32 @@ namespace PepperDash.Essentials.Core /// public abstract class JoinMapBaseAdvanced { - /// - /// Modifies all the join numbers by adding the offset. This should never be called twice - /// - /// - public abstract void OffsetJoinNumbers(uint joinStart); + protected uint _joinOffset; /// /// The collection of joins and associated metadata /// public Dictionary Joins = new Dictionary(); + protected JoinMapBaseAdvanced(uint joinStart) + { + _joinOffset = joinStart - 1; + + // Add all the JoinDataComplete properties to the Joins Dictionary and pass in the offset + Joins = GetType() + .GetCType() + .GetProperties() + .Where(prop => prop.IsDefined(typeof(JoinNameAttribute), false)) + .Select(prop => (JoinDataComplete)prop.GetValue(this, null)) + .ToDictionary(join => join.GetNameAttribute(), join => + { + join.SetJoinOffset(_joinOffset); + return join; + }); + + PrintJoinMapInfo(); + } + /// /// Prints the join information to console /// @@ -197,25 +237,46 @@ namespace PepperDash.Essentials.Core } /// - /// Returns the join number for the join with the specified key + /// Attempts to find the matching key for the custom join and if found overwrites the default JoinData with the custom /// - /// - /// - public uint GetJoinForKey(string key) + /// + public void SetCustomJoinData(Dictionary joinData) { - return Joins.ContainsKey(key) ? Joins[key].JoinNumber : 0; + foreach (var customJoinData in joinData) + { + var join = Joins[customJoinData.Key]; + + if (join != null) + { + join.SetCustomJoinData(customJoinData.Value); + } + else + { + Debug.Console(2, "No mathcing key found in join map for: '{0}'", customJoinData.Key); + } + } } + ///// + ///// Returns the join number for the join with the specified key + ///// + ///// + ///// + //public uint GetJoinForKey(string key) + //{ + // return Joins.ContainsKey(key) ? Joins[key].JoinNumber : 0; + //} - /// - /// Returns the join span for the join with the specified key - /// - /// - /// - public uint GetJoinSpanForKey(string key) - { - return Joins.ContainsKey(key) ? Joins[key].JoinSpan : 0; - } + + ///// + ///// Returns the join span for the join with the specified key + ///// + ///// + ///// + //public uint GetJoinSpanForKey(string key) + //{ + // return Joins.ContainsKey(key) ? Joins[key].JoinSpan : 0; + //} } /// @@ -307,7 +368,9 @@ namespace PepperDash.Essentials.Core /// public class JoinDataComplete { - private readonly JoinData _data; + private uint _joinOffset; + + private JoinData _data; public JoinMetadata Metadata { get; set; } public JoinDataComplete(JoinData data, JoinMetadata metadata) @@ -316,9 +379,21 @@ namespace PepperDash.Essentials.Core Metadata = metadata; } + /// + /// Sets the join offset value + /// + /// + public void SetJoinOffset(uint joinOffset) + { + _joinOffset = joinOffset; + } + + /// + /// The join number (including the offset) + /// public uint JoinNumber { - get { return _data.JoinNumber; } + get { return _data.JoinNumber+ _joinOffset; } set { _data.JoinNumber = value; } } @@ -327,6 +402,11 @@ namespace PepperDash.Essentials.Core get { return _data.JoinSpan; } } + public void SetCustomJoinData(JoinData customJoinData) + { + _data = customJoinData; + } + public string GetNameAttribute() { string name = string.Empty;