mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-16 13:15:03 +00:00
Inheritance
This commit is contained in:
@@ -1,16 +1,14 @@
|
|||||||
using PepperDash.Essentials.Core;
|
namespace PepperDash.Essentials
|
||||||
|
|
||||||
namespace PepperDash.Essentials
|
|
||||||
{
|
{
|
||||||
public interface IHasCalendarButton
|
public interface IHasCalendarButton
|
||||||
{
|
{
|
||||||
EssentialsRoomBase CurrentRoom { get; }
|
EssentialsHuddleVtc1Room CurrentRoom { get; }
|
||||||
void CalendarPress();
|
void CalendarPress();
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface IHasCallButton
|
public interface IHasCallButton
|
||||||
{
|
{
|
||||||
EssentialsRoomBase CurrentRoom { get; }
|
EssentialsHuddleVtc1Room CurrentRoom { get; }
|
||||||
void ShowActiveCallsList();
|
void ShowActiveCallsList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,14 +1,12 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Crestron.SimplSharpPro;
|
|
||||||
using PepperDash.Core;
|
using PepperDash.Core;
|
||||||
using PepperDash.Essentials.Core.Config;
|
using PepperDash.Essentials.Core.Config;
|
||||||
|
|
||||||
namespace PepperDash.Essentials.Core.Fusion
|
namespace PepperDash.Essentials.Core.Fusion
|
||||||
{
|
{
|
||||||
public class EssentialsDualDisplayFusionController:EssentialsHuddleSpaceFusionSystemControllerBase
|
public class EssentialsDualDisplayFusionController:EssentialsHuddleVtc1FusionController
|
||||||
{
|
{
|
||||||
private BooleanSigData _codecIsInCall;
|
|
||||||
private readonly EssentialsDualDisplayRoom _room;
|
private readonly EssentialsDualDisplayRoom _room;
|
||||||
|
|
||||||
public EssentialsDualDisplayFusionController(EssentialsDualDisplayRoom room, uint ipId) : base(room, ipId)
|
public EssentialsDualDisplayFusionController(EssentialsDualDisplayRoom room, uint ipId) : base(room, ipId)
|
||||||
@@ -23,7 +21,6 @@ namespace PepperDash.Essentials.Core.Fusion
|
|||||||
var leftDisplay = _room.LeftDisplay as DisplayBase;
|
var leftDisplay = _room.LeftDisplay as DisplayBase;
|
||||||
var rightDisplay = _room.RightDisplay as DisplayBase;
|
var rightDisplay = _room.RightDisplay as DisplayBase;
|
||||||
|
|
||||||
SetUpCodec();
|
|
||||||
SetUpDisplay(leftDisplay);
|
SetUpDisplay(leftDisplay);
|
||||||
SetUpDisplay(rightDisplay);
|
SetUpDisplay(rightDisplay);
|
||||||
base.ExecuteCustomSteps();
|
base.ExecuteCustomSteps();
|
||||||
@@ -45,7 +42,7 @@ namespace PepperDash.Essentials.Core.Fusion
|
|||||||
display.UsageTracker = new UsageTracking(display){UsageIsTracked = true};
|
display.UsageTracker = new UsageTracking(display){UsageIsTracked = true};
|
||||||
display.UsageTracker.DeviceUsageEnded += UsageTrackerOnDeviceUsageEnded;
|
display.UsageTracker.DeviceUsageEnded += UsageTrackerOnDeviceUsageEnded;
|
||||||
|
|
||||||
var config = ConfigReader.ConfigObject.Devices.SingleOrDefault((d) => d.Key == display.Key);
|
var config = ConfigReader.ConfigObject.Devices.SingleOrDefault(d => d.Key == display.Key);
|
||||||
|
|
||||||
if (!FusionStaticAssets.TryGetValue(config.Uid, out tempAsset))
|
if (!FusionStaticAssets.TryGetValue(config.Uid, out tempAsset))
|
||||||
{
|
{
|
||||||
@@ -82,137 +79,5 @@ namespace PepperDash.Essentials.Core.Fusion
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Creates a static asset for the codec and maps the joins to the main room symbol
|
|
||||||
/// </summary>
|
|
||||||
private void SetUpCodec()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var essentialsHuddleVtc1Room = Room as EssentialsHuddleVtc1Room;
|
|
||||||
if (essentialsHuddleVtc1Room == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var codec = essentialsHuddleVtc1Room.VideoCodec;
|
|
||||||
|
|
||||||
if (codec == null)
|
|
||||||
{
|
|
||||||
Debug.Console(1, this, "Cannot link codec to Fusion because codec is null");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
codec.UsageTracker = new UsageTracking(codec) { UsageIsTracked = true };
|
|
||||||
codec.UsageTracker.DeviceUsageEnded += UsageTracker_DeviceUsageEnded;
|
|
||||||
|
|
||||||
var codecPowerOnAction = new Action<bool>(b =>
|
|
||||||
{
|
|
||||||
if (!b)
|
|
||||||
{
|
|
||||||
codec.StandbyDeactivate();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
var codecPowerOffAction = new Action<bool>(b =>
|
|
||||||
{
|
|
||||||
if (!b)
|
|
||||||
{
|
|
||||||
codec.StandbyActivate();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Map FusionRoom Attributes:
|
|
||||||
|
|
||||||
// Codec volume
|
|
||||||
var codecVolume = FusionRoom.CreateOffsetUshortSig(50, "Volume - Fader01", eSigIoMask.InputOutputSig);
|
|
||||||
codecVolume.OutputSig.UserObject =
|
|
||||||
new Action<ushort>(b => (codec as IBasicVolumeWithFeedback).SetVolume(b));
|
|
||||||
(codec as IBasicVolumeWithFeedback).VolumeLevelFeedback.LinkInputSig(codecVolume.InputSig);
|
|
||||||
|
|
||||||
// In Call Status
|
|
||||||
_codecIsInCall = FusionRoom.CreateOffsetBoolSig(69, "Conf - VC 1 In Call", eSigIoMask.InputSigOnly);
|
|
||||||
codec.CallStatusChange += codec_CallStatusChange;
|
|
||||||
|
|
||||||
// Online status
|
|
||||||
if (codec is ICommunicationMonitor)
|
|
||||||
{
|
|
||||||
var c = codec as ICommunicationMonitor;
|
|
||||||
var codecOnline = FusionRoom.CreateOffsetBoolSig(122, "Online - VC 1", eSigIoMask.InputSigOnly);
|
|
||||||
codecOnline.InputSig.BoolValue = c.CommunicationMonitor.Status == MonitorStatus.IsOk;
|
|
||||||
c.CommunicationMonitor.StatusChange +=
|
|
||||||
(o, a) => { codecOnline.InputSig.BoolValue = a.Status == MonitorStatus.IsOk; };
|
|
||||||
Debug.Console(0, this, "Linking '{0}' communication monitor to Fusion '{1}'", codec.Key,
|
|
||||||
"Online - VC 1");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Codec IP Address
|
|
||||||
var codecHasIpInfo = false;
|
|
||||||
var codecComm = codec.Communication;
|
|
||||||
|
|
||||||
var codecIpAddress = string.Empty;
|
|
||||||
var codecIpPort = 0;
|
|
||||||
|
|
||||||
if (codecComm is GenericSshClient)
|
|
||||||
{
|
|
||||||
codecIpAddress = (codecComm as GenericSshClient).Hostname;
|
|
||||||
codecIpPort = (codecComm as GenericSshClient).Port;
|
|
||||||
codecHasIpInfo = true;
|
|
||||||
}
|
|
||||||
else if (codecComm is GenericTcpIpClient)
|
|
||||||
{
|
|
||||||
codecIpAddress = (codecComm as GenericTcpIpClient).Hostname;
|
|
||||||
codecIpPort = (codecComm as GenericTcpIpClient).Port;
|
|
||||||
codecHasIpInfo = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (codecHasIpInfo)
|
|
||||||
{
|
|
||||||
var codecIpAddressSig = FusionRoom.CreateOffsetStringSig(121, "IP Address - VC",
|
|
||||||
eSigIoMask.InputSigOnly);
|
|
||||||
codecIpAddressSig.InputSig.StringValue = codecIpAddress;
|
|
||||||
|
|
||||||
var codecIpPortSig = FusionRoom.CreateOffsetStringSig(150, "IP Port - VC",
|
|
||||||
eSigIoMask.InputSigOnly);
|
|
||||||
codecIpPortSig.InputSig.StringValue = codecIpPort.ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
FusionAsset tempAsset;
|
|
||||||
|
|
||||||
var deviceConfig = ConfigReader.ConfigObject.Devices.FirstOrDefault(c => c.Key.Equals(codec.Key));
|
|
||||||
|
|
||||||
if (FusionStaticAssets.ContainsKey(deviceConfig.Uid))
|
|
||||||
{
|
|
||||||
tempAsset = FusionStaticAssets[deviceConfig.Uid];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Create a new asset
|
|
||||||
tempAsset = new FusionAsset(FusionRoomGuids.GetNextAvailableAssetNumber(FusionRoom), codec.Name,
|
|
||||||
"Codec", "");
|
|
||||||
FusionStaticAssets.Add(deviceConfig.Uid, tempAsset);
|
|
||||||
}
|
|
||||||
|
|
||||||
var codecAsset = FusionRoom.CreateStaticAsset(tempAsset.SlotNumber, tempAsset.Name, "Display",
|
|
||||||
tempAsset.InstanceId);
|
|
||||||
codecAsset.PowerOn.OutputSig.UserObject = codecPowerOnAction;
|
|
||||||
codecAsset.PowerOff.OutputSig.UserObject = codecPowerOffAction;
|
|
||||||
codec.StandbyIsOnFeedback.LinkComplementInputSig(codecAsset.PowerOn.InputSig);
|
|
||||||
|
|
||||||
codecAsset.TrySetMakeModel(codec);
|
|
||||||
codecAsset.TryLinkAssetErrorToCommunication(codec);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
Debug.Console(1, this, "Error setting up codec in Fusion: {0}", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void codec_CallStatusChange(object sender, Devices.Codec.CodecCallStatusItemChangeEventArgs e)
|
|
||||||
{
|
|
||||||
var codec = _room.VideoCodec;
|
|
||||||
|
|
||||||
_codecIsInCall.InputSig.BoolValue = codec.IsInCall;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user