mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-15 12:44:58 +00:00
Merge branch 'feature/ecs-1120' into feature/ecs-1123
This commit is contained in:
122
PepperDashEssentials/Bridges/AirMediaControllerBridge.cs
Normal file
122
PepperDashEssentials/Bridges/AirMediaControllerBridge.cs
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
using Crestron.SimplSharpPro.DeviceSupport;
|
||||||
|
using PepperDash.Core;
|
||||||
|
using PepperDash.Essentials.Core;
|
||||||
|
using PepperDash.Essentials.Devices.Common;
|
||||||
|
using PepperDash.Essentials.DM.AirMedia;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials.Bridges
|
||||||
|
{
|
||||||
|
public static class AirMediaControllerApiExtensions
|
||||||
|
{
|
||||||
|
public static void LinkToApi(this AirMediaController airMedia, BasicTriList trilist, uint joinStart, string joinMapKey)
|
||||||
|
{
|
||||||
|
var joinMap = JoinMapHelper.GetJoinMapForDevice(joinMapKey) as AirMediaControllerJoinMap;
|
||||||
|
|
||||||
|
if (joinMap == null)
|
||||||
|
{
|
||||||
|
joinMap = new AirMediaControllerJoinMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
joinMap.OffsetJoinNumbers(joinStart);
|
||||||
|
|
||||||
|
Debug.Console(1, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));
|
||||||
|
Debug.Console(0, "Linking to Bridge Type {0}", airMedia.GetType().Name.ToString());
|
||||||
|
|
||||||
|
trilist.StringInput[joinMap.Name].StringValue = airMedia.GetType().Name.ToString();
|
||||||
|
|
||||||
|
var commMonitor = airMedia as ICommunicationMonitor;
|
||||||
|
if (commMonitor != null)
|
||||||
|
{
|
||||||
|
commMonitor.CommunicationMonitor.IsOnlineFeedback.LinkInputSig(trilist.BooleanInput[joinMap.IsOnline]);
|
||||||
|
}
|
||||||
|
|
||||||
|
airMedia.IsInSessionFeedback.LinkInputSig(trilist.BooleanInput[joinMap.IsInSession]);
|
||||||
|
airMedia.HdmiVideoSyncDetectedFeedback.LinkInputSig(trilist.BooleanInput[joinMap.HdmiVideoSync]);
|
||||||
|
|
||||||
|
trilist.SetSigTrueAction(joinMap.AutomaticInputRoutingEnabled, new Action( airMedia.AirMedia.DisplayControl.EnableAutomaticRouting));
|
||||||
|
trilist.SetSigFalseAction(joinMap.AutomaticInputRoutingEnabled, new Action( airMedia.AirMedia.DisplayControl.DisableAutomaticRouting));
|
||||||
|
airMedia.AutomaticInputRoutingEnabledFeedback.LinkInputSig(trilist.BooleanInput[joinMap.AutomaticInputRoutingEnabled]);
|
||||||
|
|
||||||
|
trilist.SetUShortSigAction(joinMap.VideoOut, new Action<ushort>((u) => airMedia.SelectVideoOut(u)));
|
||||||
|
|
||||||
|
airMedia.VideoOutFeedback.LinkInputSig(trilist.UShortInput[joinMap.VideoOut]);
|
||||||
|
airMedia.ErrorFeedback.LinkInputSig(trilist.UShortInput[joinMap.ErrorFB]);
|
||||||
|
airMedia.NumberOfUsersConnectedFeedback.LinkInputSig(trilist.UShortInput[joinMap.NumberOfUsersConnectedFB]);
|
||||||
|
|
||||||
|
trilist.SetUShortSigAction(joinMap.LoginCode, new Action<ushort>((u) => airMedia.AirMedia.AirMedia.LoginCode.UShortValue = u));
|
||||||
|
airMedia.LoginCodeFeedback.LinkInputSig(trilist.UShortInput[joinMap.LoginCode]);
|
||||||
|
|
||||||
|
airMedia.ConnectionAddressFeedback.LinkInputSig(trilist.StringInput[joinMap.ConnectionAddressFB]);
|
||||||
|
airMedia.HostnameFeedback.LinkInputSig(trilist.StringInput[joinMap.HostnameFB]);
|
||||||
|
airMedia.SerialNumberFeedback.LinkInputSig(trilist.StringInput[joinMap.SerialNumberFeedback]);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public class AirMediaControllerJoinMap : JoinMapBase
|
||||||
|
{
|
||||||
|
// Digital
|
||||||
|
public uint IsOnline { get; set; }
|
||||||
|
public uint IsInSession { get; set; }
|
||||||
|
public uint HdmiVideoSync { get; set; }
|
||||||
|
public uint AutomaticInputRoutingEnabled { get; set; }
|
||||||
|
|
||||||
|
// Analog
|
||||||
|
public uint VideoOut { get; set; }
|
||||||
|
public uint ErrorFB { get; set; }
|
||||||
|
public uint NumberOfUsersConnectedFB { get; set; }
|
||||||
|
public uint LoginCode { get; set; }
|
||||||
|
|
||||||
|
// Serial
|
||||||
|
public uint Name { get; set; }
|
||||||
|
public uint ConnectionAddressFB { get; set; }
|
||||||
|
public uint HostnameFB { get; set; }
|
||||||
|
public uint SerialNumberFeedback { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public AirMediaControllerJoinMap()
|
||||||
|
{
|
||||||
|
// Digital
|
||||||
|
IsOnline = 1;
|
||||||
|
IsInSession = 2;
|
||||||
|
HdmiVideoSync = 3;
|
||||||
|
AutomaticInputRoutingEnabled = 4;
|
||||||
|
|
||||||
|
// Analog
|
||||||
|
VideoOut = 1;
|
||||||
|
ErrorFB = 2;
|
||||||
|
NumberOfUsersConnectedFB = 3;
|
||||||
|
LoginCode = 4;
|
||||||
|
|
||||||
|
// Serial
|
||||||
|
Name = 1;
|
||||||
|
ConnectionAddressFB = 2;
|
||||||
|
HostnameFB = 3;
|
||||||
|
SerialNumberFeedback = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OffsetJoinNumbers(uint joinStart)
|
||||||
|
{
|
||||||
|
var joinOffset = joinStart - 1;
|
||||||
|
|
||||||
|
IsOnline = IsOnline + joinOffset;
|
||||||
|
IsInSession = IsInSession + joinOffset;
|
||||||
|
HdmiVideoSync = HdmiVideoSync + joinOffset;
|
||||||
|
AutomaticInputRoutingEnabled = AutomaticInputRoutingEnabled + joinOffset;
|
||||||
|
|
||||||
|
VideoOut = VideoOut + joinOffset;
|
||||||
|
ErrorFB = ErrorFB + joinOffset;
|
||||||
|
NumberOfUsersConnectedFB = NumberOfUsersConnectedFB + joinOffset;
|
||||||
|
LoginCode = LoginCode + joinOffset;
|
||||||
|
|
||||||
|
Name = Name + joinOffset;
|
||||||
|
ConnectionAddressFB = ConnectionAddressFB + joinOffset;
|
||||||
|
HostnameFB = HostnameFB + joinOffset;
|
||||||
|
SerialNumberFeedback = SerialNumberFeedback + joinOffset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,33 +13,30 @@ namespace PepperDash.Essentials.Bridges
|
|||||||
public static class DisplayControllerApiExtensions
|
public static class DisplayControllerApiExtensions
|
||||||
{
|
{
|
||||||
|
|
||||||
public static BasicTriList _TriList;
|
|
||||||
public static DisplayControllerJoinMap JoinMap;
|
|
||||||
public static int InputNumber;
|
public static int InputNumber;
|
||||||
public static IntFeedback InputNumberFeedback;
|
public static IntFeedback InputNumberFeedback;
|
||||||
public static List<string> InputKeys = new List<string>();
|
public static List<string> InputKeys = new List<string>();
|
||||||
public static void LinkToApi(this PepperDash.Essentials.Core.DisplayBase displayDevice, BasicTriList trilist, uint joinStart, string joinMapKey)
|
public static void LinkToApi(this PepperDash.Essentials.Core.DisplayBase displayDevice, BasicTriList trilist, uint joinStart, string joinMapKey)
|
||||||
{
|
{
|
||||||
|
|
||||||
JoinMap = JoinMapHelper.GetJoinMapForDevice(joinMapKey) as DisplayControllerJoinMap;
|
var joinMap = JoinMapHelper.GetJoinMapForDevice(joinMapKey) as DisplayControllerJoinMap;
|
||||||
_TriList = trilist;
|
|
||||||
|
|
||||||
if (JoinMap == null)
|
if (joinMap == null)
|
||||||
{
|
{
|
||||||
JoinMap = new DisplayControllerJoinMap();
|
joinMap = new DisplayControllerJoinMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
JoinMap.OffsetJoinNumbers(joinStart);
|
joinMap.OffsetJoinNumbers(joinStart);
|
||||||
|
|
||||||
Debug.Console(1, "Linking to Trilist '{0}'", _TriList.ID.ToString("X"));
|
Debug.Console(1, "Linking to Trilist '{0}'",trilist.ID.ToString("X"));
|
||||||
Debug.Console(0, "Linking to Bridge Type {0}", displayDevice.GetType().Name.ToString());
|
Debug.Console(0, "Linking to Bridge Type {0}", displayDevice.GetType().Name.ToString());
|
||||||
|
|
||||||
_TriList.StringInput[JoinMap.Name].StringValue = displayDevice.GetType().Name.ToString();
|
trilist.StringInput[joinMap.Name].StringValue = displayDevice.GetType().Name.ToString();
|
||||||
|
|
||||||
var commMonitor = displayDevice as ICommunicationMonitor;
|
var commMonitor = displayDevice as ICommunicationMonitor;
|
||||||
if (commMonitor != null)
|
if (commMonitor != null)
|
||||||
{
|
{
|
||||||
commMonitor.CommunicationMonitor.IsOnlineFeedback.LinkInputSig(trilist.BooleanInput[JoinMap.IsOnline]);
|
commMonitor.CommunicationMonitor.IsOnlineFeedback.LinkInputSig(trilist.BooleanInput[joinMap.IsOnline]);
|
||||||
}
|
}
|
||||||
|
|
||||||
InputNumberFeedback = new IntFeedback(() => { return InputNumber; });
|
InputNumberFeedback = new IntFeedback(() => { return InputNumber; });
|
||||||
@@ -48,16 +45,16 @@ namespace PepperDash.Essentials.Bridges
|
|||||||
var twoWayDisplay = displayDevice as PepperDash.Essentials.Core.TwoWayDisplayBase;
|
var twoWayDisplay = displayDevice as PepperDash.Essentials.Core.TwoWayDisplayBase;
|
||||||
if (twoWayDisplay != null)
|
if (twoWayDisplay != null)
|
||||||
{
|
{
|
||||||
trilist.SetBool(JoinMap.IsTwoWayDisplay, true);
|
trilist.SetBool(joinMap.IsTwoWayDisplay, true);
|
||||||
|
|
||||||
twoWayDisplay.CurrentInputFeedback.OutputChange += new EventHandler<FeedbackEventArgs>(CurrentInputFeedback_OutputChange);
|
twoWayDisplay.CurrentInputFeedback.OutputChange += new EventHandler<FeedbackEventArgs>(CurrentInputFeedback_OutputChange);
|
||||||
|
|
||||||
|
|
||||||
InputNumberFeedback.LinkInputSig(_TriList.UShortInput[JoinMap.InputSelect]);
|
InputNumberFeedback.LinkInputSig(trilist.UShortInput[joinMap.InputSelect]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Power Off
|
// Power Off
|
||||||
trilist.SetSigTrueAction(JoinMap.PowerOff, () =>
|
trilist.SetSigTrueAction(joinMap.PowerOff, () =>
|
||||||
{
|
{
|
||||||
InputNumber = 102;
|
InputNumber = 102;
|
||||||
InputNumberFeedback.FireUpdate();
|
InputNumberFeedback.FireUpdate();
|
||||||
@@ -65,10 +62,10 @@ namespace PepperDash.Essentials.Bridges
|
|||||||
});
|
});
|
||||||
|
|
||||||
displayDevice.PowerIsOnFeedback.OutputChange += new EventHandler<FeedbackEventArgs>(PowerIsOnFeedback_OutputChange);
|
displayDevice.PowerIsOnFeedback.OutputChange += new EventHandler<FeedbackEventArgs>(PowerIsOnFeedback_OutputChange);
|
||||||
displayDevice.PowerIsOnFeedback.LinkComplementInputSig(trilist.BooleanInput[JoinMap.PowerOff]);
|
displayDevice.PowerIsOnFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.PowerOff]);
|
||||||
|
|
||||||
// PowerOn
|
// PowerOn
|
||||||
trilist.SetSigTrueAction(JoinMap.PowerOn, () =>
|
trilist.SetSigTrueAction(joinMap.PowerOn, () =>
|
||||||
{
|
{
|
||||||
InputNumber = 0;
|
InputNumber = 0;
|
||||||
InputNumberFeedback.FireUpdate();
|
InputNumberFeedback.FireUpdate();
|
||||||
@@ -76,21 +73,21 @@ namespace PepperDash.Essentials.Bridges
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
displayDevice.PowerIsOnFeedback.LinkInputSig(trilist.BooleanInput[JoinMap.PowerOn]);
|
displayDevice.PowerIsOnFeedback.LinkInputSig(trilist.BooleanInput[joinMap.PowerOn]);
|
||||||
|
|
||||||
int count = 1;
|
int count = 1;
|
||||||
foreach (var input in displayDevice.InputPorts)
|
foreach (var input in displayDevice.InputPorts)
|
||||||
{
|
{
|
||||||
InputKeys.Add(input.Key.ToString());
|
InputKeys.Add(input.Key.ToString());
|
||||||
var tempKey = InputKeys.ElementAt(count - 1);
|
var tempKey = InputKeys.ElementAt(count - 1);
|
||||||
trilist.SetSigTrueAction((ushort)(JoinMap.InputSelectOffset + count), () => { displayDevice.ExecuteSwitch(displayDevice.InputPorts[tempKey].Selector); });
|
trilist.SetSigTrueAction((ushort)(joinMap.InputSelectOffset + count), () => { displayDevice.ExecuteSwitch(displayDevice.InputPorts[tempKey].Selector); });
|
||||||
Debug.Console(2, displayDevice, "Setting Input Select Action on Digital Join {0} to Input: {1}", JoinMap.InputSelectOffset + count, displayDevice.InputPorts[tempKey].Key.ToString());
|
Debug.Console(2, displayDevice, "Setting Input Select Action on Digital Join {0} to Input: {1}", joinMap.InputSelectOffset + count, displayDevice.InputPorts[tempKey].Key.ToString());
|
||||||
trilist.StringInput[(ushort)(JoinMap.InputNamesOffset + count)].StringValue = input.Key.ToString();
|
trilist.StringInput[(ushort)(joinMap.InputNamesOffset + count)].StringValue = input.Key.ToString();
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
Debug.Console(2, displayDevice, "Setting Input Select Action on Analog Join {0}", JoinMap.InputSelect);
|
Debug.Console(2, displayDevice, "Setting Input Select Action on Analog Join {0}", joinMap.InputSelect);
|
||||||
trilist.SetUShortSigAction(JoinMap.InputSelect, (a) =>
|
trilist.SetUShortSigAction(joinMap.InputSelect, (a) =>
|
||||||
{
|
{
|
||||||
if (a == 0)
|
if (a == 0)
|
||||||
{
|
{
|
||||||
@@ -115,15 +112,15 @@ namespace PepperDash.Essentials.Bridges
|
|||||||
var volumeDisplay = displayDevice as IBasicVolumeControls;
|
var volumeDisplay = displayDevice as IBasicVolumeControls;
|
||||||
if (volumeDisplay != null)
|
if (volumeDisplay != null)
|
||||||
{
|
{
|
||||||
trilist.SetBoolSigAction(JoinMap.VolumeUp, (b) => volumeDisplay.VolumeUp(b));
|
trilist.SetBoolSigAction(joinMap.VolumeUp, (b) => volumeDisplay.VolumeUp(b));
|
||||||
trilist.SetBoolSigAction(JoinMap.VolumeDown, (b) => volumeDisplay.VolumeDown(b));
|
trilist.SetBoolSigAction(joinMap.VolumeDown, (b) => volumeDisplay.VolumeDown(b));
|
||||||
trilist.SetSigTrueAction(JoinMap.VolumeMute, () => volumeDisplay.MuteToggle());
|
trilist.SetSigTrueAction(joinMap.VolumeMute, () => volumeDisplay.MuteToggle());
|
||||||
|
|
||||||
var volumeDisplayWithFeedback = volumeDisplay as IBasicVolumeWithFeedback;
|
var volumeDisplayWithFeedback = volumeDisplay as IBasicVolumeWithFeedback;
|
||||||
if(volumeDisplayWithFeedback != null)
|
if(volumeDisplayWithFeedback != null)
|
||||||
{
|
{
|
||||||
volumeDisplayWithFeedback.VolumeLevelFeedback.LinkInputSig(trilist.UShortInput[JoinMap.VolumeLevelFB]);
|
volumeDisplayWithFeedback.VolumeLevelFeedback.LinkInputSig(trilist.UShortInput[joinMap.VolumeLevelFB]);
|
||||||
volumeDisplayWithFeedback.MuteFeedback.LinkInputSig(trilist.BooleanInput[JoinMap.VolumeMute]);
|
volumeDisplayWithFeedback.MuteFeedback.LinkInputSig(trilist.BooleanInput[joinMap.VolumeMute]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -156,7 +153,7 @@ namespace PepperDash.Essentials.Bridges
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
public class DisplayControllerJoinMap : JoinMapBase
|
public class DisplayControllerJoinMap : JoinMapBase
|
||||||
{
|
{
|
||||||
// Digital
|
// Digital
|
||||||
public uint PowerOff { get; set; }
|
public uint PowerOff { get; set; }
|
||||||
|
|||||||
@@ -1,162 +1,185 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
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 Crestron.SimplSharpPro.DeviceSupport;
|
||||||
using Crestron.SimplSharpPro.UI;
|
using Crestron.SimplSharpPro.UI;
|
||||||
|
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using PepperDash.Core;
|
using PepperDash.Core;
|
||||||
using PepperDash.Essentials.Core;
|
using PepperDash.Essentials.Core;
|
||||||
using PepperDash.Essentials.Core.Config;
|
using PepperDash.Essentials.Core.Config;
|
||||||
using PepperDash.Essentials.Core.PageManagers;
|
using PepperDash.Essentials.Core.PageManagers;
|
||||||
|
using PepperDash.Essentials.DM.Endpoints.DGEs;
|
||||||
|
|
||||||
namespace PepperDash.Essentials
|
|
||||||
{
|
namespace PepperDash.Essentials
|
||||||
public class UiDeviceFactory
|
{
|
||||||
{
|
public class UiDeviceFactory
|
||||||
public static IKeyed GetUiDevice(DeviceConfig config)
|
{
|
||||||
{
|
public static IKeyed GetUiDevice(DeviceConfig config)
|
||||||
var comm = CommFactory.GetControlPropertiesConfig(config);
|
{
|
||||||
|
var comm = CommFactory.GetControlPropertiesConfig(config);
|
||||||
var props = JsonConvert.DeserializeObject<CrestronTouchpanelPropertiesConfig>(config.Properties.ToString());
|
|
||||||
|
var typeName = config.Type.ToLower();
|
||||||
EssentialsTouchpanelController panelController = new EssentialsTouchpanelController(config.Key, config.Name, config.Type, props, comm.IpIdInt);
|
|
||||||
|
EssentialsTouchpanelController panelController = null;
|
||||||
panelController.AddPostActivationAction(() =>
|
|
||||||
{
|
var props = JsonConvert.DeserializeObject<CrestronTouchpanelPropertiesConfig>(config.Properties.ToString());
|
||||||
var mainDriver = new EssentialsPanelMainInterfaceDriver(panelController.Panel, props);
|
|
||||||
// Then the sub drivers
|
if (typeName.Contains("dge"))
|
||||||
|
{
|
||||||
// spin up different room drivers depending on room type
|
Dge100 dgeDevice = null;
|
||||||
var room = DeviceManager.GetDeviceForKey(props.DefaultRoomKey);
|
if (typeName == "dge100")
|
||||||
if (room is EssentialsHuddleSpaceRoom)
|
dgeDevice = new Dge100(comm.IpIdInt, Global.ControlSystem);
|
||||||
{
|
else if (typeName == "dmdge200c")
|
||||||
|
dgeDevice = new DmDge200C(comm.IpIdInt, Global.ControlSystem);
|
||||||
// Header Driver
|
|
||||||
Debug.Console(0, panelController, "Adding header driver");
|
var dgeController = new DgeController(config.Key, config.Name, dgeDevice, config, props);
|
||||||
mainDriver.HeaderDriver = new EssentialsHeaderDriver(mainDriver, props);
|
|
||||||
|
DeviceManager.AddDevice(dgeController);
|
||||||
// AV Driver
|
|
||||||
Debug.Console(0, panelController, "Adding huddle space AV driver");
|
panelController = new EssentialsTouchpanelController(config.Key, config.Name, dgeController.DigitalGraphicsEngine,
|
||||||
var avDriver = new EssentialsHuddlePanelAvFunctionsDriver(mainDriver, props);
|
props.ProjectName, props.SgdFile);
|
||||||
avDriver.DefaultRoomKey = props.DefaultRoomKey;
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
panelController = new EssentialsTouchpanelController(config.Key, config.Name, config.Type, props, comm.IpIdInt);
|
||||||
|
}
|
||||||
|
|
||||||
|
panelController.AddPostActivationAction(() =>
|
||||||
|
{
|
||||||
|
var mainDriver = new EssentialsPanelMainInterfaceDriver(panelController.Panel, props);
|
||||||
|
// Then the sub drivers
|
||||||
|
|
||||||
|
// spin up different room drivers depending on room type
|
||||||
|
var room = DeviceManager.GetDeviceForKey(props.DefaultRoomKey);
|
||||||
|
if (room is EssentialsHuddleSpaceRoom)
|
||||||
|
{
|
||||||
|
|
||||||
|
// Header Driver
|
||||||
|
Debug.Console(0, panelController, "Adding header driver");
|
||||||
|
mainDriver.HeaderDriver = new EssentialsHeaderDriver(mainDriver, props);
|
||||||
|
|
||||||
|
// AV Driver
|
||||||
|
Debug.Console(0, panelController, "Adding huddle space AV driver");
|
||||||
|
var avDriver = new EssentialsHuddlePanelAvFunctionsDriver(mainDriver, props);
|
||||||
|
avDriver.DefaultRoomKey = props.DefaultRoomKey;
|
||||||
mainDriver.AvDriver = avDriver;
|
mainDriver.AvDriver = avDriver;
|
||||||
avDriver.CurrentRoom = room as EssentialsHuddleSpaceRoom;
|
avDriver.CurrentRoom = room as EssentialsHuddleSpaceRoom;
|
||||||
|
|
||||||
// Environment Driver
|
// Environment Driver
|
||||||
if (avDriver.CurrentRoom.PropertiesConfig.Environment != null && avDriver.CurrentRoom.PropertiesConfig.Environment.DeviceKeys.Count > 0)
|
if (avDriver.CurrentRoom.PropertiesConfig.Environment != null && avDriver.CurrentRoom.PropertiesConfig.Environment.DeviceKeys.Count > 0)
|
||||||
{
|
{
|
||||||
Debug.Console(0, panelController, "Adding environment driver");
|
Debug.Console(0, panelController, "Adding environment driver");
|
||||||
mainDriver.EnvironmentDriver = new EssentialsEnvironmentDriver(mainDriver, props);
|
mainDriver.EnvironmentDriver = new EssentialsEnvironmentDriver(mainDriver, props);
|
||||||
|
|
||||||
mainDriver.EnvironmentDriver.GetDevicesFromConfig(avDriver.CurrentRoom.PropertiesConfig.Environment);
|
mainDriver.EnvironmentDriver.GetDevicesFromConfig(avDriver.CurrentRoom.PropertiesConfig.Environment);
|
||||||
}
|
}
|
||||||
|
|
||||||
mainDriver.HeaderDriver.SetupHeaderButtons(avDriver, avDriver.CurrentRoom);
|
mainDriver.HeaderDriver.SetupHeaderButtons(avDriver, avDriver.CurrentRoom);
|
||||||
|
|
||||||
panelController.LoadAndShowDriver(mainDriver); // This is a little convoluted.
|
panelController.LoadAndShowDriver(mainDriver); // This is a little convoluted.
|
||||||
|
|
||||||
if (panelController.Panel is TswFt5ButtonSystem)
|
if (panelController.Panel is TswFt5ButtonSystem)
|
||||||
{
|
{
|
||||||
var tsw = panelController.Panel as TswFt5ButtonSystem;
|
var tsw = panelController.Panel as TswFt5ButtonSystem;
|
||||||
// Wire up hard keys
|
// Wire up hard keys
|
||||||
tsw.Power.UserObject = new Action<bool>(b => { if (!b) avDriver.PowerButtonPressed(); });
|
tsw.Power.UserObject = new Action<bool>(b => { if (!b) avDriver.PowerButtonPressed(); });
|
||||||
//tsw.Home.UserObject = new Action<bool>(b => { if (!b) HomePressed(); });
|
//tsw.Home.UserObject = new Action<bool>(b => { if (!b) HomePressed(); });
|
||||||
if(mainDriver.EnvironmentDriver != null)
|
if(mainDriver.EnvironmentDriver != null)
|
||||||
tsw.Lights.UserObject = new Action<bool>(b =>
|
tsw.Lights.UserObject = new Action<bool>(b =>
|
||||||
{
|
{
|
||||||
if (!b)
|
if (!b)
|
||||||
{
|
{
|
||||||
//mainDriver.AvDriver.PopupInterlock.ShowInterlockedWithToggle(mainDriver.EnvironmentDriver.BackgroundSubpageJoin);
|
//mainDriver.AvDriver.PopupInterlock.ShowInterlockedWithToggle(mainDriver.EnvironmentDriver.BackgroundSubpageJoin);
|
||||||
mainDriver.EnvironmentDriver.Toggle();
|
mainDriver.EnvironmentDriver.Toggle();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
tsw.Up.UserObject = new Action<bool>(avDriver.VolumeUpPress);
|
tsw.Up.UserObject = new Action<bool>(avDriver.VolumeUpPress);
|
||||||
tsw.Down.UserObject = new Action<bool>(avDriver.VolumeDownPress);
|
tsw.Down.UserObject = new Action<bool>(avDriver.VolumeDownPress);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//else if (room is EssentialsPresentationRoom)
|
//else if (room is EssentialsPresentationRoom)
|
||||||
//{
|
//{
|
||||||
// Debug.Console(0, panelController, "Adding presentation room driver");
|
// Debug.Console(0, panelController, "Adding presentation room driver");
|
||||||
// var avDriver = new EssentialsPresentationPanelAvFunctionsDriver(mainDriver, props);
|
// var avDriver = new EssentialsPresentationPanelAvFunctionsDriver(mainDriver, props);
|
||||||
// avDriver.CurrentRoom = room as EssentialsPresentationRoom;
|
// avDriver.CurrentRoom = room as EssentialsPresentationRoom;
|
||||||
// avDriver.DefaultRoomKey = props.DefaultRoomKey;
|
// avDriver.DefaultRoomKey = props.DefaultRoomKey;
|
||||||
// mainDriver.AvDriver = avDriver ;
|
// mainDriver.AvDriver = avDriver ;
|
||||||
// mainDriver.HeaderDriver = new EssentialsHeaderDriver(mainDriver, props);
|
// mainDriver.HeaderDriver = new EssentialsHeaderDriver(mainDriver, props);
|
||||||
// panelController.LoadAndShowDriver(mainDriver);
|
// panelController.LoadAndShowDriver(mainDriver);
|
||||||
|
|
||||||
// if (panelController.Panel is TswFt5ButtonSystem)
|
// if (panelController.Panel is TswFt5ButtonSystem)
|
||||||
// {
|
// {
|
||||||
// var tsw = panelController.Panel as TswFt5ButtonSystem;
|
// var tsw = panelController.Panel as TswFt5ButtonSystem;
|
||||||
// // Wire up hard keys
|
// // Wire up hard keys
|
||||||
// tsw.Power.UserObject = new Action<bool>(b => { if (!b) avDriver.PowerButtonPressed(); });
|
// tsw.Power.UserObject = new Action<bool>(b => { if (!b) avDriver.PowerButtonPressed(); });
|
||||||
// //tsw.Home.UserObject = new Action<bool>(b => { if (!b) HomePressed(); });
|
// //tsw.Home.UserObject = new Action<bool>(b => { if (!b) HomePressed(); });
|
||||||
// tsw.Up.UserObject = new Action<bool>(avDriver.VolumeUpPress);
|
// tsw.Up.UserObject = new Action<bool>(avDriver.VolumeUpPress);
|
||||||
// tsw.Down.UserObject = new Action<bool>(avDriver.VolumeDownPress);
|
// tsw.Down.UserObject = new Action<bool>(avDriver.VolumeDownPress);
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
else if (room is EssentialsHuddleVtc1Room)
|
else if (room is EssentialsHuddleVtc1Room)
|
||||||
{
|
{
|
||||||
Debug.Console(0, panelController, "Adding huddle space VTC AV driver");
|
Debug.Console(0, panelController, "Adding huddle space VTC AV driver");
|
||||||
|
|
||||||
// Header Driver
|
// Header Driver
|
||||||
mainDriver.HeaderDriver = new EssentialsHeaderDriver(mainDriver, props);
|
mainDriver.HeaderDriver = new EssentialsHeaderDriver(mainDriver, props);
|
||||||
|
|
||||||
// AV Driver
|
// AV Driver
|
||||||
var avDriver = new EssentialsHuddleVtc1PanelAvFunctionsDriver(mainDriver, props);
|
var avDriver = new EssentialsHuddleVtc1PanelAvFunctionsDriver(mainDriver, props);
|
||||||
|
|
||||||
var codecDriver = new PepperDash.Essentials.UIDrivers.VC.EssentialsVideoCodecUiDriver(panelController.Panel, avDriver,
|
var codecDriver = new PepperDash.Essentials.UIDrivers.VC.EssentialsVideoCodecUiDriver(panelController.Panel, avDriver,
|
||||||
(room as EssentialsHuddleVtc1Room).VideoCodec, mainDriver.HeaderDriver);
|
(room as EssentialsHuddleVtc1Room).VideoCodec, mainDriver.HeaderDriver);
|
||||||
avDriver.SetVideoCodecDriver(codecDriver);
|
avDriver.SetVideoCodecDriver(codecDriver);
|
||||||
avDriver.DefaultRoomKey = props.DefaultRoomKey;
|
avDriver.DefaultRoomKey = props.DefaultRoomKey;
|
||||||
mainDriver.AvDriver = avDriver;
|
mainDriver.AvDriver = avDriver;
|
||||||
avDriver.CurrentRoom = room as EssentialsHuddleVtc1Room;
|
avDriver.CurrentRoom = room as EssentialsHuddleVtc1Room;
|
||||||
|
|
||||||
// Environment Driver
|
// Environment Driver
|
||||||
if (avDriver.CurrentRoom.PropertiesConfig.Environment != null && avDriver.CurrentRoom.PropertiesConfig.Environment.DeviceKeys.Count > 0)
|
if (avDriver.CurrentRoom.PropertiesConfig.Environment != null && avDriver.CurrentRoom.PropertiesConfig.Environment.DeviceKeys.Count > 0)
|
||||||
{
|
{
|
||||||
Debug.Console(0, panelController, "Adding environment driver");
|
Debug.Console(0, panelController, "Adding environment driver");
|
||||||
mainDriver.EnvironmentDriver = new EssentialsEnvironmentDriver(mainDriver, props);
|
mainDriver.EnvironmentDriver = new EssentialsEnvironmentDriver(mainDriver, props);
|
||||||
|
|
||||||
mainDriver.EnvironmentDriver.GetDevicesFromConfig(avDriver.CurrentRoom.PropertiesConfig.Environment);
|
mainDriver.EnvironmentDriver.GetDevicesFromConfig(avDriver.CurrentRoom.PropertiesConfig.Environment);
|
||||||
}
|
}
|
||||||
|
|
||||||
mainDriver.HeaderDriver.SetupHeaderButtons(avDriver, avDriver.CurrentRoom);
|
mainDriver.HeaderDriver.SetupHeaderButtons(avDriver, avDriver.CurrentRoom);
|
||||||
|
|
||||||
panelController.LoadAndShowDriver(mainDriver); // This is a little convoluted.
|
panelController.LoadAndShowDriver(mainDriver); // This is a little convoluted.
|
||||||
|
|
||||||
if (panelController.Panel is TswFt5ButtonSystem)
|
if (panelController.Panel is TswFt5ButtonSystem)
|
||||||
{
|
{
|
||||||
var tsw = panelController.Panel as TswFt5ButtonSystem;
|
var tsw = panelController.Panel as TswFt5ButtonSystem;
|
||||||
// Wire up hard keys
|
// Wire up hard keys
|
||||||
tsw.Power.UserObject = new Action<bool>(b => { if (!b) avDriver.EndMeetingPress(); });
|
tsw.Power.UserObject = new Action<bool>(b => { if (!b) avDriver.EndMeetingPress(); });
|
||||||
//tsw.Home.UserObject = new Action<bool>(b => { if (!b) HomePressed(); });
|
//tsw.Home.UserObject = new Action<bool>(b => { if (!b) HomePressed(); });
|
||||||
if (mainDriver.EnvironmentDriver != null)
|
if (mainDriver.EnvironmentDriver != null)
|
||||||
tsw.Lights.UserObject = new Action<bool>(b =>
|
tsw.Lights.UserObject = new Action<bool>(b =>
|
||||||
{
|
{
|
||||||
if (!b)
|
if (!b)
|
||||||
{
|
{
|
||||||
//mainDriver.AvDriver.PopupInterlock.ShowInterlockedWithToggle(mainDriver.EnvironmentDriver.BackgroundSubpageJoin);
|
//mainDriver.AvDriver.PopupInterlock.ShowInterlockedWithToggle(mainDriver.EnvironmentDriver.BackgroundSubpageJoin);
|
||||||
mainDriver.EnvironmentDriver.Toggle();
|
mainDriver.EnvironmentDriver.Toggle();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
tsw.Up.UserObject = new Action<bool>(avDriver.VolumeUpPress);
|
tsw.Up.UserObject = new Action<bool>(avDriver.VolumeUpPress);
|
||||||
tsw.Down.UserObject = new Action<bool>(avDriver.VolumeDownPress);
|
tsw.Down.UserObject = new Action<bool>(avDriver.VolumeDownPress);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Debug.Console(0, panelController, "ERROR: Cannot load AvFunctionsDriver for room '{0}'", props.DefaultRoomKey);
|
Debug.Console(0, panelController, "ERROR: Cannot load AvFunctionsDriver for room '{0}'", props.DefaultRoomKey);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return panelController;
|
return panelController;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -120,6 +120,7 @@
|
|||||||
<Compile Include="Bridges\BridgeBase.cs" />
|
<Compile Include="Bridges\BridgeBase.cs" />
|
||||||
<Compile Include="Bridges\BridgeFactory.cs" />
|
<Compile Include="Bridges\BridgeFactory.cs" />
|
||||||
<Compile Include="Bridges\CameraControllerBridge.cs" />
|
<Compile Include="Bridges\CameraControllerBridge.cs" />
|
||||||
|
<Compile Include="Bridges\AirMediaControllerBridge.cs" />
|
||||||
<Compile Include="Bridges\DisplayControllerBridge.cs" />
|
<Compile Include="Bridges\DisplayControllerBridge.cs" />
|
||||||
<Compile Include="Bridges\DigitalLoggerBridge.cs" />
|
<Compile Include="Bridges\DigitalLoggerBridge.cs" />
|
||||||
<Compile Include="Bridges\DmChassisControllerBridge.cs" />
|
<Compile Include="Bridges\DmChassisControllerBridge.cs" />
|
||||||
@@ -222,7 +223,6 @@
|
|||||||
<Compile Include="AppServer\CotijaSystemController.cs" />
|
<Compile Include="AppServer\CotijaSystemController.cs" />
|
||||||
<Compile Include="UI\DualDisplaySourceSRLController.cs" />
|
<Compile Include="UI\DualDisplaySourceSRLController.cs" />
|
||||||
<Compile Include="UI\SubpageReferenceListActivityItem.cs" />
|
<Compile Include="UI\SubpageReferenceListActivityItem.cs" />
|
||||||
<Compile Include="UI\CrestronTouchpanelPropertiesConfig.cs" />
|
|
||||||
<Compile Include="FOR REFERENCE UI\Panels\REMOVE UiCue.cs" />
|
<Compile Include="FOR REFERENCE UI\Panels\REMOVE UiCue.cs" />
|
||||||
<Compile Include="FOR REFERENCE UI\SRL\SourceListSubpageReferenceList.cs" />
|
<Compile Include="FOR REFERENCE UI\SRL\SourceListSubpageReferenceList.cs" />
|
||||||
<Compile Include="Room\Types\EssentialsHuddleSpaceRoom.cs" />
|
<Compile Include="Room\Types\EssentialsHuddleSpaceRoom.cs" />
|
||||||
|
|||||||
@@ -1,48 +0,0 @@
|
|||||||
namespace PepperDash.Essentials
|
|
||||||
{
|
|
||||||
public class CrestronTouchpanelPropertiesConfig
|
|
||||||
{
|
|
||||||
public string IpId { get; set; }
|
|
||||||
public string DefaultRoomKey { get; set; }
|
|
||||||
public string RoomListKey { get; set; }
|
|
||||||
public string SgdFile { get; set; }
|
|
||||||
public string ProjectName { get; set; }
|
|
||||||
public bool ShowVolumeGauge { get; set; }
|
|
||||||
public bool UsesSplashPage { get; set; }
|
|
||||||
public bool ShowDate { get; set; }
|
|
||||||
public bool ShowTime { get; set; }
|
|
||||||
public UiSetupPropertiesConfig Setup { get; set; }
|
|
||||||
public string HeaderStyle { get; set; }
|
|
||||||
public bool IncludeInFusionRoomHealth { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The count of sources that will trigger the "additional" arrows to show on the SRL.
|
|
||||||
/// Defaults to 5
|
|
||||||
/// </summary>
|
|
||||||
public int SourcesOverflowCount { get; set; }
|
|
||||||
|
|
||||||
public CrestronTouchpanelPropertiesConfig()
|
|
||||||
{
|
|
||||||
SourcesOverflowCount = 5;
|
|
||||||
HeaderStyle = CrestronTouchpanelPropertiesConfig.Habanero;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// "habanero"
|
|
||||||
/// </summary>
|
|
||||||
public const string Habanero = "habanero";
|
|
||||||
/// <summary>
|
|
||||||
/// "verbose"
|
|
||||||
/// </summary>
|
|
||||||
public const string Verbose = "verbose";
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public class UiSetupPropertiesConfig
|
|
||||||
{
|
|
||||||
public bool IsVisible { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -27,9 +27,17 @@ namespace PepperDash.Essentials
|
|||||||
{
|
{
|
||||||
Panel = tsw;
|
Panel = tsw;
|
||||||
tsw.LoadSmartObjects(sgdPath);
|
tsw.LoadSmartObjects(sgdPath);
|
||||||
tsw.SigChange += new Crestron.SimplSharpPro.DeviceSupport.SigEventHandler(Tsw_SigChange);
|
tsw.SigChange += Panel_SigChange;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public EssentialsTouchpanelController(string key, string name, Dge100 panel, string projectName, string sgdPath)
|
||||||
|
: base(key, name)
|
||||||
|
{
|
||||||
|
Panel = panel;
|
||||||
|
panel.LoadSmartObjects(sgdPath);
|
||||||
|
panel.SigChange += Panel_SigChange;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Config constructor
|
/// Config constructor
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -102,7 +110,7 @@ namespace PepperDash.Essentials
|
|||||||
}
|
}
|
||||||
|
|
||||||
Panel.LoadSmartObjects(sgdName);
|
Panel.LoadSmartObjects(sgdName);
|
||||||
Panel.SigChange += Tsw_SigChange;
|
Panel.SigChange += Panel_SigChange;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -158,7 +166,7 @@ namespace PepperDash.Essentials
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tsw_SigChange(object currentDevice, Crestron.SimplSharpPro.SigEventArgs args)
|
void Panel_SigChange(object currentDevice, Crestron.SimplSharpPro.SigEventArgs args)
|
||||||
{
|
{
|
||||||
if (Debug.Level == 2)
|
if (Debug.Level == 2)
|
||||||
Debug.Console(2, this, "Sig change: {0} {1}={2}", args.Sig.Type, args.Sig.Number, args.Sig.StringValue);
|
Debug.Console(2, this, "Sig change: {0} {1}={2}", args.Sig.Type, args.Sig.Number, args.Sig.StringValue);
|
||||||
|
|||||||
Reference in New Issue
Block a user