diff --git a/PepperDashEssentials/Room/Types/EssentialsDualDisplayRoom.cs b/PepperDashEssentials/Room/Types/EssentialsDualDisplayRoom.cs
index 2cfb33f7..54a84d28 100644
--- a/PepperDashEssentials/Room/Types/EssentialsDualDisplayRoom.cs
+++ b/PepperDashEssentials/Room/Types/EssentialsDualDisplayRoom.cs
@@ -1,14 +1,11 @@
using System;
-using System.Collections.Generic;
using System.Linq;
-using System.Text;
using Crestron.SimplSharp;
using Newtonsoft.Json;
using PepperDash.Core;
using PepperDash.Essentials.Core;
-using PepperDash.Essentials.Core.Devices;
using PepperDash.Essentials.Core.Config;
using PepperDash.Essentials.Room.Config;
using PepperDash.Essentials.Devices.Common.Codec;
@@ -77,9 +74,8 @@ namespace PepperDash.Essentials
var leftDisp = LeftDisplay as DisplayBase;
var rightDisp = RightDisplay as DisplayBase;
if (leftDisp != null && RightDisplay != null)
- return leftDisp.IsWarmingUpFeedback.BoolValue || rightDisp.IsWarmingUpFeedback.BoolValue;
- else
- return false;
+ return rightDisp != null && (leftDisp.IsWarmingUpFeedback.BoolValue || rightDisp.IsWarmingUpFeedback.BoolValue);
+ return false;
};
}
}
@@ -96,9 +92,8 @@ namespace PepperDash.Essentials
var leftDisp = LeftDisplay as DisplayBase;
var rightDisp = RightDisplay as DisplayBase;
if (leftDisp != null && RightDisplay != null)
- return leftDisp.IsCoolingDownFeedback.BoolValue || rightDisp.IsCoolingDownFeedback.BoolValue;
- else
- return false;
+ return rightDisp != null && (leftDisp.IsCoolingDownFeedback.BoolValue || rightDisp.IsCoolingDownFeedback.BoolValue);
+ return false;
};
}
}
@@ -120,7 +115,7 @@ namespace PepperDash.Essentials
/// If room is off, enables power on to last source. Default true
///
public bool EnablePowerOnToLastSource { get; set; }
- string LastSourceKey;
+ string _lastSourceKey;
///
/// Sets the volume control device, and attaches/removes InUseTrackers with "audio"
@@ -128,27 +123,27 @@ namespace PepperDash.Essentials
///
public IBasicVolumeControls CurrentVolumeControls
{
- get { return _CurrentAudioDevice; }
+ get { return _currentAudioDevice; }
set
{
- if (value == _CurrentAudioDevice) return;
+ if (value == _currentAudioDevice) return;
- var oldDev = _CurrentAudioDevice;
+ var oldDev = _currentAudioDevice;
// derigister this room from the device, if it can
if (oldDev is IInUseTracking)
(oldDev as IInUseTracking).InUseTracker.RemoveUser(this, "audio");
var handler = CurrentVolumeDeviceChange;
if (handler != null)
CurrentVolumeDeviceChange(this, new VolumeDeviceChangeEventArgs(oldDev, value, ChangeType.WillChange));
- _CurrentAudioDevice = value;
+ _currentAudioDevice = value;
if (handler != null)
CurrentVolumeDeviceChange(this, new VolumeDeviceChangeEventArgs(oldDev, value, ChangeType.DidChange));
// register this room with new device, if it can
- if (_CurrentAudioDevice is IInUseTracking)
- (_CurrentAudioDevice as IInUseTracking).InUseTracker.AddUser(this, "audio");
+ if (_currentAudioDevice is IInUseTracking)
+ (_currentAudioDevice as IInUseTracking).InUseTracker.AddUser(this, "audio");
}
}
- IBasicVolumeControls _CurrentAudioDevice;
+ IBasicVolumeControls _currentAudioDevice;
///
/// "codecOsd"
@@ -161,7 +156,7 @@ namespace PepperDash.Essentials
///
public IHasScheduleAwareness ScheduleSource { get { return VideoCodec as IHasScheduleAwareness; } }
- CCriticalSection SourceSelectLock = new CCriticalSection();
+ readonly CCriticalSection _sourceSelectLock = new CCriticalSection();
public EssentialsDualDisplayRoom(DeviceConfig config)
: base(config)
@@ -196,12 +191,12 @@ namespace PepperDash.Essentials
}
VideoCodec = DeviceManager.GetDeviceForKey(PropertiesConfig.VideoCodecKey) as
- PepperDash.Essentials.Devices.Common.VideoCodec.VideoCodecBase;
+ VideoCodecBase;
if (VideoCodec == null)
throw new ArgumentNullException("codec cannot be null");
AudioCodec = DeviceManager.GetDeviceForKey(PropertiesConfig.AudioCodecKey) as
- PepperDash.Essentials.Devices.Common.AudioCodec.AudioCodecBase;
+ AudioCodecBase;
if (AudioCodec == null)
Debug.Console(0, this, "No Audio Codec Found");
@@ -217,8 +212,8 @@ namespace PepperDash.Essentials
void Initialize()
{
- if (DefaultAudioDevice is IBasicVolumeControls)
- DefaultVolumeControls = DefaultAudioDevice as IBasicVolumeControls;
+ if (DefaultAudioDevice != null)
+ DefaultVolumeControls = DefaultAudioDevice;
else if (DefaultAudioDevice is IHasVolumeDevice)
DefaultVolumeControls = (DefaultAudioDevice as IHasVolumeDevice).VolumeDevice;
CurrentVolumeControls = DefaultVolumeControls;
@@ -233,12 +228,12 @@ namespace PepperDash.Essentials
InitializeDisplay(rightDisp);
// Get Microphone Privacy object, if any
- this.MicrophonePrivacy = EssentialsRoomConfigHelper.GetMicrophonePrivacy(PropertiesConfig, this);
+ MicrophonePrivacy = EssentialsRoomConfigHelper.GetMicrophonePrivacy(PropertiesConfig, this);
Debug.Console(2, this, "Microphone Privacy Config evaluated.");
// Get emergency object, if any
- this.Emergency = EssentialsRoomConfigHelper.GetEmergency(PropertiesConfig, this);
+ Emergency = EssentialsRoomConfigHelper.GetEmergency(PropertiesConfig, this);
Debug.Console(2, this, "Emergency Config evaluated.");
@@ -254,23 +249,20 @@ namespace PepperDash.Essentials
if (VideoCodec != null)
inVideoCall = VideoCodec.IsInCall;
- if (inAudioCall || inVideoCall)
- return true;
- else
- return false;
+ return inAudioCall || inVideoCall;
});
- VideoCodec.CallStatusChange += (o, a) => this.InCallFeedback.FireUpdate();
+ VideoCodec.CallStatusChange += (o, a) => InCallFeedback.FireUpdate();
if (AudioCodec != null)
- AudioCodec.CallStatusChange += (o, a) => this.InCallFeedback.FireUpdate();
+ AudioCodec.CallStatusChange += (o, a) => InCallFeedback.FireUpdate();
IsSharingFeedback = new BoolFeedback(() => VideoCodec.SharingContentIsOnFeedback.BoolValue);
- VideoCodec.SharingContentIsOnFeedback.OutputChange += (o, a) => this.IsSharingFeedback.FireUpdate();
+ VideoCodec.SharingContentIsOnFeedback.OutputChange += (o, a) => IsSharingFeedback.FireUpdate();
// link privacy to VC (for now?)
PrivacyModeIsOnFeedback = new BoolFeedback(() => VideoCodec.PrivacyModeIsOnFeedback.BoolValue);
- VideoCodec.PrivacyModeIsOnFeedback.OutputChange += (o, a) => this.PrivacyModeIsOnFeedback.FireUpdate();
+ VideoCodec.PrivacyModeIsOnFeedback.OutputChange += (o, a) => PrivacyModeIsOnFeedback.FireUpdate();
CallTypeFeedback = new IntFeedback(() => 0);
@@ -304,13 +296,18 @@ namespace PepperDash.Essentials
disp.IsWarmingUpFeedback.OutputChange += (o, a) =>
{
IsWarmingUpFeedback.FireUpdate();
- if (!IsWarmingUpFeedback.BoolValue)
- (CurrentVolumeControls as IBasicVolumeWithFeedback).SetVolume(DefaultVolume);
- };
- disp.IsCoolingDownFeedback.OutputChange += (o, a) =>
- {
- IsCoolingDownFeedback.FireUpdate();
+ if (IsWarmingUpFeedback.BoolValue)
+ {
+ return;
+ }
+
+ var basicVolumeWithFeedback = CurrentVolumeControls as IBasicVolumeWithFeedback;
+ if (basicVolumeWithFeedback != null)
+ {
+ basicVolumeWithFeedback.SetVolume(DefaultVolume);
+ }
};
+ disp.IsCoolingDownFeedback.OutputChange += (o, a) => IsCoolingDownFeedback.FireUpdate();
}
}
@@ -328,7 +325,7 @@ namespace PepperDash.Essentials
{
// Add Occupancy object from config
if (PropertiesConfig.Occupancy != null)
- this.SetRoomOccupancy(DeviceManager.GetDeviceForKey(PropertiesConfig.Occupancy.DeviceKey) as
+ SetRoomOccupancy(DeviceManager.GetDeviceForKey(PropertiesConfig.Occupancy.DeviceKey) as
IOccupancyStatusProvider, PropertiesConfig.Occupancy.TimeoutMinutes);
this.LogoUrlLightBkgnd = PropertiesConfig.LogoLight.GetLogoUrlLight();
@@ -381,6 +378,7 @@ namespace PepperDash.Essentials
///
///
///
+ ///
public void RunRouteAction(string routeKey, string sourceListKey)
{
RunRouteAction(routeKey, sourceListKey, null);
@@ -390,14 +388,17 @@ namespace PepperDash.Essentials
/// Gets a source from config list SourceListKey and dynamically build and executes the
/// route or commands
///
- ///
+ ///
+ ///
+ ///
public void RunRouteAction(string routeKey, string sourceListKey, Action successCallback)
{
// Run this on a separate thread
- new CTimer(o =>
+ //new CTimer
+ CrestronInvoke.BeginInvoke(o =>
{
// try to prevent multiple simultaneous selections
- SourceSelectLock.TryEnter();
+ _sourceSelectLock.TryEnter();
try
{
@@ -419,9 +420,9 @@ namespace PepperDash.Essentials
}
// End usage timer on last source
- if (!string.IsNullOrEmpty(LastSourceKey))
+ if (!string.IsNullOrEmpty(_lastSourceKey))
{
- var usageLastSource = dict[LastSourceKey].SourceDevice as IUsageTracking;
+ var usageLastSource = dict[_lastSourceKey].SourceDevice as IUsageTracking;
if (usageLastSource != null && usageLastSource.UsageTracker != null)
{
try
@@ -441,7 +442,7 @@ namespace PepperDash.Essentials
if (routeKey.ToLower() != "roomoff")
{
- LastSourceKey = routeKey;
+ _lastSourceKey = routeKey;
}
//else
// CurrentSourceInfoKey = null;
@@ -526,7 +527,7 @@ namespace PepperDash.Essentials
Debug.Console(1, this, "ERROR in routing: {0}", e);
}
- SourceSelectLock.Leave();
+ _sourceSelectLock.Leave();
}, 0); // end of CTimer
}
@@ -535,6 +536,8 @@ namespace PepperDash.Essentials
///
///
///
+ ///
+ ///
void DoRouteItem(SourceRouteListItem route, SourceListItem sourceItem, string sourceItemKey)
{
// if there is a $defaultAll on route, run two separate
@@ -558,7 +561,7 @@ namespace PepperDash.Essentials
///
///
///
- bool DoRoute(SourceRouteListItem route, SourceListItem sourceItem, string sourceItemKey)
+ private bool DoRoute(SourceRouteListItem route, SourceListItem sourceItem, string sourceItemKey)
{
IRoutingSink dest = null;
@@ -622,9 +625,9 @@ namespace PepperDash.Essentials
///
public override void PowerOnToDefaultOrLastSource()
{
- if (!EnablePowerOnToLastSource || LastSourceKey == null)
+ if (!EnablePowerOnToLastSource || _lastSourceKey == null)
return;
- RunRouteAction(LastSourceKey, SourceListKey);
+ RunRouteAction(_lastSourceKey, SourceListKey);
}
///
@@ -632,10 +635,13 @@ namespace PepperDash.Essentials
///
public static void AllRoomsOff()
{
- var allRooms = DeviceManager.AllDevices.Where(d =>
- d is EssentialsHuddleSpaceRoom && !(d as EssentialsHuddleSpaceRoom).ExcludeFromGlobalFunctions);
+ var allRooms = DeviceManager.AllDevices.OfType().Where(d => !d.ExcludeFromGlobalFunctions);
foreach (var room in allRooms)
- (room as EssentialsHuddleSpaceRoom).RunRouteAction("roomOff", (room as EssentialsHuddleSpaceRoom).SourceListKey);
+ {
+
+ room.RunRouteAction("roomOff", room.SourceListKey);
+
+ }
}
#region IPrivacy Members