mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-16 13:15:03 +00:00
Merge branch 'feature/ecs-684' into development
This commit is contained in:
@@ -20,7 +20,7 @@ namespace PepperDash.Essentials.Core
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return string.Format(@"\NVRAM\Program{0}\IR\", InitialParametersClass.ApplicationNumber);
|
return Global.FilePathPrefix + "IR" + Global.DirectorySeparator;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,24 +12,16 @@ namespace PepperDash.Essentials.Core.CrestronIO
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Represents a generic device controlled by relays
|
/// Represents a generic device controlled by relays
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class GenericRelayDevice : Device
|
public class GenericRelayDevice : Device, ISwitchedOutput
|
||||||
{
|
{
|
||||||
public Relay RelayOutput { get; private set; }
|
public Relay RelayOutput { get; private set; }
|
||||||
|
|
||||||
public BoolFeedback RelayStateFeedback { get; private set; }
|
public BoolFeedback OutputIsOnFeedback { get; private set; }
|
||||||
|
|
||||||
Func<bool> RelayStateFeedbackFunc
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return () => RelayOutput.State;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public GenericRelayDevice(string key, Relay relay):
|
public GenericRelayDevice(string key, Relay relay):
|
||||||
base(key)
|
base(key)
|
||||||
{
|
{
|
||||||
RelayStateFeedback = new BoolFeedback(RelayStateFeedbackFunc);
|
OutputIsOnFeedback = new BoolFeedback(new Func<bool>(() => RelayOutput.State));
|
||||||
|
|
||||||
if (relay.AvailableForUse)
|
if (relay.AvailableForUse)
|
||||||
RelayOutput = relay;
|
RelayOutput = relay;
|
||||||
@@ -39,7 +31,7 @@ namespace PepperDash.Essentials.Core.CrestronIO
|
|||||||
|
|
||||||
void RelayOutput_StateChange(Relay relay, RelayEventArgs args)
|
void RelayOutput_StateChange(Relay relay, RelayEventArgs args)
|
||||||
{
|
{
|
||||||
RelayStateFeedback.FireUpdate();
|
OutputIsOnFeedback.FireUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OpenRelay()
|
public void OpenRelay()
|
||||||
@@ -59,5 +51,19 @@ namespace PepperDash.Essentials.Core.CrestronIO
|
|||||||
else
|
else
|
||||||
CloseRelay();
|
CloseRelay();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region ISwitchedOutput Members
|
||||||
|
|
||||||
|
void ISwitchedOutput.On()
|
||||||
|
{
|
||||||
|
CloseRelay();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ISwitchedOutput.Off()
|
||||||
|
{
|
||||||
|
OpenRelay();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
|
||||||
|
using PepperDash.Essentials.Core;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials.Core.CrestronIO
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Describes an output capable of switching on and off
|
||||||
|
/// </summary>
|
||||||
|
public interface ISwitchedOutput
|
||||||
|
{
|
||||||
|
BoolFeedback OutputIsOnFeedback {get;}
|
||||||
|
|
||||||
|
void On();
|
||||||
|
void Off();
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface ISwitchedOutputCollection
|
||||||
|
{
|
||||||
|
Dictionary<uint, ISwitchedOutput> SwitchedOutputs { get; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -28,6 +28,15 @@ namespace PepperDash.Essentials.Core
|
|||||||
BoolFeedback MuteFeedback { get; }
|
BoolFeedback MuteFeedback { get; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A class that implements this contains a reference to a current IBasicVolumeControls device.
|
||||||
|
/// The class may have multiple IBasicVolumeControls.
|
||||||
|
/// </summary>
|
||||||
|
public interface IHasCurrentVolumeControls
|
||||||
|
{
|
||||||
|
IBasicVolumeControls CurrentVolumeControls { get; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -15,17 +15,24 @@ namespace PepperDash.Essentials.Core
|
|||||||
|
|
||||||
public static LicenseManager LicenseManager { get; set; }
|
public static LicenseManager LicenseManager { get; set; }
|
||||||
|
|
||||||
//public static EssentialsHttpServer HttpConfigServer
|
public static string FilePathPrefix { get; private set; }
|
||||||
//{
|
|
||||||
// get
|
|
||||||
// {
|
|
||||||
// if (_HttpConfigServer == null)
|
|
||||||
// _HttpConfigServer = new EssentialsHttpServer();
|
|
||||||
// return _HttpConfigServer;
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
//static EssentialsHttpServer _HttpConfigServer;
|
|
||||||
|
|
||||||
|
public static char DirectorySeparator
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return System.IO.Path.DirectorySeparatorChar;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets the file path prefix
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="prefix"></param>
|
||||||
|
public static void SetFilePathPrefix(string prefix)
|
||||||
|
{
|
||||||
|
FilePathPrefix = prefix;
|
||||||
|
}
|
||||||
|
|
||||||
static Global()
|
static Global()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,59 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
|
||||||
|
using PepperDash.Core;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials.Core.Lighting
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Requirements for a device that implements lighting scene control
|
||||||
|
/// </summary>
|
||||||
|
public interface ILightingScenes
|
||||||
|
{
|
||||||
|
event EventHandler<LightingSceneChangeEventArgs> LightingSceneChange;
|
||||||
|
|
||||||
|
List<LightingScene> LightingScenes { get; }
|
||||||
|
|
||||||
|
void SelectScene(LightingScene scene);
|
||||||
|
|
||||||
|
LightingScene CurrentLightingScene { get; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Requirements for a device that implements master raise/lower
|
||||||
|
/// </summary>
|
||||||
|
public interface ILightingMasterRaiseLower
|
||||||
|
{
|
||||||
|
void MasterRaise();
|
||||||
|
void MasterLower();
|
||||||
|
void MasterRaiseLowerStop();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Requiremnts for controlling a lighting load
|
||||||
|
/// </summary>
|
||||||
|
public interface ILightingLoad
|
||||||
|
{
|
||||||
|
void SetLoadLevel(int level);
|
||||||
|
void Raise();
|
||||||
|
void Lower();
|
||||||
|
|
||||||
|
IntFeedback LoadLevelFeedback { get; }
|
||||||
|
BoolFeedback LoadIsOnFeedback { get; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class LightingSceneChangeEventArgs : EventArgs
|
||||||
|
{
|
||||||
|
public LightingScene CurrentLightingScene { get; private set; }
|
||||||
|
|
||||||
|
public LightingSceneChangeEventArgs(LightingScene scene)
|
||||||
|
{
|
||||||
|
CurrentLightingScene = scene;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,92 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
using Crestron.SimplSharpPro;
|
||||||
|
|
||||||
|
using PepperDash.Core;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials.Core.Lighting
|
||||||
|
{
|
||||||
|
public abstract class LightingBase : Device, ILightingScenes
|
||||||
|
{
|
||||||
|
#region ILightingScenes Members
|
||||||
|
|
||||||
|
public event EventHandler<LightingSceneChangeEventArgs> LightingSceneChange;
|
||||||
|
|
||||||
|
public List<LightingScene> LightingScenes { get; protected set; }
|
||||||
|
|
||||||
|
public LightingScene CurrentLightingScene { get; protected set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
public LightingBase(string key, string name)
|
||||||
|
: base(key, name)
|
||||||
|
{
|
||||||
|
LightingScenes = new List<LightingScene>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void SelectScene(LightingScene scene);
|
||||||
|
|
||||||
|
public void SimulateSceneSelect(string sceneName)
|
||||||
|
{
|
||||||
|
Debug.Console(1, this, "Simulating selection of scene '{0}'", sceneName);
|
||||||
|
|
||||||
|
var scene = LightingScenes.FirstOrDefault(s => s.Name.Equals(sceneName));
|
||||||
|
|
||||||
|
if (scene != null)
|
||||||
|
{
|
||||||
|
CurrentLightingScene = scene;
|
||||||
|
OnLightingSceneChange();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets the IsActive property on each scene and fires the LightingSceneChange event
|
||||||
|
/// </summary>
|
||||||
|
protected void OnLightingSceneChange()
|
||||||
|
{
|
||||||
|
foreach (var scene in LightingScenes)
|
||||||
|
{
|
||||||
|
if (scene == CurrentLightingScene)
|
||||||
|
scene.IsActive = true;
|
||||||
|
else
|
||||||
|
scene.IsActive = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var handler = LightingSceneChange;
|
||||||
|
if (handler != null)
|
||||||
|
{
|
||||||
|
handler(this, new LightingSceneChangeEventArgs(CurrentLightingScene));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class LightingScene
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public string ID { get; set; }
|
||||||
|
bool _IsActive;
|
||||||
|
public bool IsActive
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _IsActive;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_IsActive = value;
|
||||||
|
IsActiveFeedback.FireUpdate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public BoolFeedback IsActiveFeedback { get; set; }
|
||||||
|
|
||||||
|
public LightingScene()
|
||||||
|
{
|
||||||
|
IsActiveFeedback = new BoolFeedback(new Func<bool>(() => IsActive));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -109,8 +109,11 @@
|
|||||||
<Compile Include="Crestron IO\Inputs\IDigitalInput.cs" />
|
<Compile Include="Crestron IO\Inputs\IDigitalInput.cs" />
|
||||||
<Compile Include="Crestron IO\IOPortConfig.cs" />
|
<Compile Include="Crestron IO\IOPortConfig.cs" />
|
||||||
<Compile Include="Crestron IO\Relay\GenericRelayDevice.cs" />
|
<Compile Include="Crestron IO\Relay\GenericRelayDevice.cs" />
|
||||||
|
<Compile Include="Crestron IO\Relay\ISwitchedOutput.cs" />
|
||||||
<Compile Include="Devices\CodecInterfaces.cs" />
|
<Compile Include="Devices\CodecInterfaces.cs" />
|
||||||
<Compile Include="Global\JobTimer.cs" />
|
<Compile Include="Global\JobTimer.cs" />
|
||||||
|
<Compile Include="Lighting\Lighting Interfaces.cs" />
|
||||||
|
<Compile Include="Lighting\LightingBase.cs" />
|
||||||
<Compile Include="Ramps and Increments\ActionIncrementer.cs" />
|
<Compile Include="Ramps and Increments\ActionIncrementer.cs" />
|
||||||
<Compile Include="Comm and IR\CommFactory.cs" />
|
<Compile Include="Comm and IR\CommFactory.cs" />
|
||||||
<Compile Include="Comm and IR\CommunicationExtras.cs" />
|
<Compile Include="Comm and IR\CommunicationExtras.cs" />
|
||||||
@@ -180,6 +183,9 @@
|
|||||||
<Compile Include="Feedbacks\BoolFeedbackPulseExtender.cs" />
|
<Compile Include="Feedbacks\BoolFeedbackPulseExtender.cs" />
|
||||||
<Compile Include="Routing\RoutingPortNames.cs" />
|
<Compile Include="Routing\RoutingPortNames.cs" />
|
||||||
<Compile Include="Routing\TieLineConfig.cs" />
|
<Compile Include="Routing\TieLineConfig.cs" />
|
||||||
|
<Compile Include="Shades\Shade Interfaces.cs" />
|
||||||
|
<Compile Include="Shades\ShadeBase.cs" />
|
||||||
|
<Compile Include="Shades\ShadeController.cs" />
|
||||||
<Compile Include="SmartObjects\SmartObjectNumeric.cs" />
|
<Compile Include="SmartObjects\SmartObjectNumeric.cs" />
|
||||||
<Compile Include="SmartObjects\SmartObjectDynamicList.cs" />
|
<Compile Include="SmartObjects\SmartObjectDynamicList.cs" />
|
||||||
<Compile Include="SmartObjects\SmartObjectDPad.cs" />
|
<Compile Include="SmartObjects\SmartObjectDPad.cs" />
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
|
||||||
|
using PepperDash.Core;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials.Core.Shades
|
||||||
|
{
|
||||||
|
public interface IShades
|
||||||
|
{
|
||||||
|
List<ShadeBase> Shades { get; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Requirements for a device that implements basic Open/Close shade control
|
||||||
|
/// </summary>
|
||||||
|
public interface IShadesOpenClose
|
||||||
|
{
|
||||||
|
void Open();
|
||||||
|
void Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Requirements for a device that implements basic Open/Close/Stop shade control (Uses 3 relays)
|
||||||
|
/// </summary>
|
||||||
|
public interface IShadesOpenCloseStop : IShadesOpenClose
|
||||||
|
{
|
||||||
|
void StopOrPreset();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Requirements for a shade device that provides open/closed feedback
|
||||||
|
/// </summary>
|
||||||
|
public interface iShadesRaiseLowerFeedback
|
||||||
|
{
|
||||||
|
BoolFeedback ShadeIsOpenFeedback { get; }
|
||||||
|
BoolFeedback ShadeIsClosedFeedback { get; }
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
31
Essentials Core/PepperDashEssentialsBase/Shades/ShadeBase.cs
Normal file
31
Essentials Core/PepperDashEssentialsBase/Shades/ShadeBase.cs
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
|
||||||
|
using PepperDash.Core;
|
||||||
|
using PepperDash.Essentials.Core.CrestronIO;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials.Core.Shades
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Base class for a shade device
|
||||||
|
/// </summary>
|
||||||
|
public abstract class ShadeBase : Device, IShadesOpenClose
|
||||||
|
{
|
||||||
|
public ShadeBase(string key, string name)
|
||||||
|
: base(key, name)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#region iShadesOpenClose Members
|
||||||
|
|
||||||
|
public abstract void Open();
|
||||||
|
public abstract void StopOrPreset();
|
||||||
|
public abstract void Close();
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
|
||||||
|
using PepperDash.Core;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials.Core.Shades
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Class that contains the shades to be controlled in a room
|
||||||
|
/// </summary>
|
||||||
|
public class ShadeController : Device, IShades
|
||||||
|
{
|
||||||
|
ShadeControllerConfigProperties Config;
|
||||||
|
|
||||||
|
public List<ShadeBase> Shades { get; private set; }
|
||||||
|
|
||||||
|
public ShadeController(string key, string name, ShadeControllerConfigProperties config)
|
||||||
|
: base(key, name)
|
||||||
|
{
|
||||||
|
Config = config;
|
||||||
|
|
||||||
|
Shades = new List<ShadeBase>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool CustomActivate()
|
||||||
|
{
|
||||||
|
foreach (var shadeConfig in Config.Shades)
|
||||||
|
{
|
||||||
|
var shade = DeviceManager.GetDeviceForKey(shadeConfig.Key) as ShadeBase;
|
||||||
|
|
||||||
|
if (shade != null)
|
||||||
|
{
|
||||||
|
AddShade(shade);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return base.CustomActivate();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AddShade(ShadeBase shade)
|
||||||
|
{
|
||||||
|
Shades.Add(shade);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ShadeControllerConfigProperties
|
||||||
|
{
|
||||||
|
public List<ShadeConfig> Shades { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public class ShadeConfig
|
||||||
|
{
|
||||||
|
public string Key { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -55,9 +55,9 @@
|
|||||||
<HintPath>..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.DM.dll</HintPath>
|
<HintPath>..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.DM.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="mscorlib" />
|
<Reference Include="mscorlib" />
|
||||||
<Reference Include="PepperDash_Core, Version=1.0.1.20241, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="PepperDash_Core, Version=1.0.4.20530, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\pepperdash-simplsharp-core\Pepperdash Core\CLZ Builds\PepperDash_Core.dll</HintPath>
|
<HintPath>..\..\..\PepperDash.Core\Pepperdash Core\Pepperdash Core\bin\PepperDash_Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="SimplSharpCustomAttributesInterface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL">
|
<Reference Include="SimplSharpCustomAttributesInterface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
|||||||
@@ -0,0 +1,740 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<ClassDiagram MajorVersion="1" MinorVersion="1">
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.GenericAudioOut" Collapsed="true">
|
||||||
|
<Position X="0.5" Y="7.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Audio\GenericAudioOut.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.GenericAudioOutWithVolume" Collapsed="true">
|
||||||
|
<Position X="0.5" Y="9" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAgAAAAQA=</HashCode>
|
||||||
|
<FileName>Audio\GenericAudioOut.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.CenRfgwController" Collapsed="true">
|
||||||
|
<Position X="19" Y="0.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAIIAAAAAAACABAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Crestron\Gateways\CenRfgwController.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.IRBlurayBase" Collapsed="true" BaseTypeListCollapsed="true">
|
||||||
|
<Position X="17.25" Y="4.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>gUyjAAoIAAAAxgYAABAAgAECABAoAEAQqcCAQHIABAI=</HashCode>
|
||||||
|
<FileName>DiscPlayer\IRDiscPlayerBase.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" Collapsed="true" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.DeviceFactory" Collapsed="true">
|
||||||
|
<Position X="15.5" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Factory\DeviceFactory.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.GenericSource" Collapsed="true" BaseTypeListCollapsed="true">
|
||||||
|
<Position X="12" Y="4.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAgAAAAAAAACAAAAAAAAAAAAAAAgAAAAAAAAAAIAAAA=</HashCode>
|
||||||
|
<FileName>Generic\GenericSource.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" Collapsed="true" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.InRoomPc" Collapsed="true" BaseTypeListCollapsed="true">
|
||||||
|
<Position X="15.5" Y="4.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAwAAAAAAAACAAAAAAACAAAAAQAgAAAAAAAAAAIAAAA=</HashCode>
|
||||||
|
<FileName>PC\InRoomPc.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" Collapsed="true" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Laptop" Collapsed="true" BaseTypeListCollapsed="true">
|
||||||
|
<Position X="22.5" Y="4.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAwAAAAAAAACAAAAAAACAAAAAQAgAAAAAAAAAAIAAAA=</HashCode>
|
||||||
|
<FileName>PC\Laptop.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" Collapsed="true" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.IRSetTopBoxBase" Collapsed="true" BaseTypeListCollapsed="true">
|
||||||
|
<Position X="19" Y="4.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AUgjCAqAEAASwgYAACAAoAECABAoAEAwrcCAQHKABAI=</HashCode>
|
||||||
|
<FileName>SetTopBox\IRSetTopBoxBase.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" Collapsed="true" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.SetTopBoxPropertiesConfig" Collapsed="true">
|
||||||
|
<Position X="13.75" Y="6.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAEEAAQAAAAAAAAIAAAAAAAAAAAAAAAAACAAAA=</HashCode>
|
||||||
|
<FileName>SetTopBox\SetTopBoxPropertiesConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.AppleTV" Collapsed="true" BaseTypeListCollapsed="true">
|
||||||
|
<Position X="10.25" Y="0.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAggAAIAAAAARAAAAAAAgAACABAoAEAQqACAQAAABAI=</HashCode>
|
||||||
|
<FileName>Streaming\AppleTV.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" Collapsed="true" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Roku2" Collapsed="true" BaseTypeListCollapsed="true">
|
||||||
|
<Position X="10.25" Y="6.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAggAAIAAAAABAAAAAAAgAACABAoAEAQqACAQAAABAI=</HashCode>
|
||||||
|
<FileName>Streaming\Roku.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" Collapsed="true" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.CodecActiveCallItem" Collapsed="true">
|
||||||
|
<Position X="19" Y="1.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAACAAAEAAAAAAAAAOAAAAQAAAAAAAAAAQAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Codec\CodecActiveCallItem.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.CodecCallStatusItemChangeEventArgs" Collapsed="true">
|
||||||
|
<Position X="15.5" Y="2.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Codec\CodecActiveCallItem.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.CodecCallDirection" Collapsed="true">
|
||||||
|
<Position X="20.75" Y="1.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAA=</HashCode>
|
||||||
|
<FileName>Codec\eCodecCallDirection.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.CodecCallStatus" Collapsed="true">
|
||||||
|
<Position X="13.75" Y="2.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAA=</HashCode>
|
||||||
|
<FileName>Codec\eCodecCallStatus.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.CodecCallType" Collapsed="true">
|
||||||
|
<Position X="17.25" Y="2.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Codec\eCodecCallType.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.CodecCallPrivacy" Collapsed="true">
|
||||||
|
<Position X="12" Y="2.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAA=</HashCode>
|
||||||
|
<FileName>Codec\eMeetingPrivacy.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.VideoCodecInfo" Collapsed="true">
|
||||||
|
<Position X="5.5" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>gIAAAAAAAAAAAACCAACAAAAAAAAAAAACAAAAAABAAAA=</HashCode>
|
||||||
|
<FileName>Codec\iCodecInfo.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.CodecCallFavorites" Collapsed="true">
|
||||||
|
<Position X="22.5" Y="1.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Codec\iHasCallFavorites.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.CodecCallHistory" Collapsed="true">
|
||||||
|
<Position X="10.25" Y="2.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAQAAAAAgAAAAAAAAAAAAAAGAAAABAAAAAAACQ=</HashCode>
|
||||||
|
<FileName>Codec\iHasCallHistory.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.DirectoryEventArgs" Collapsed="true">
|
||||||
|
<Position X="17.25" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Codec\iHasDirectory.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.CodecDirectory" Collapsed="true">
|
||||||
|
<Position X="20.75" Y="2.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAIAAAAAAAAAAAABAAAAAIAAIAAQAAAAAA=</HashCode>
|
||||||
|
<FileName>Codec\iHasDirectory.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.DirectoryItem" Collapsed="true">
|
||||||
|
<Position X="6.75" Y="0.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Codec\iHasDirectory.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.DirectoryFolder" Collapsed="true">
|
||||||
|
<Position X="5.5" Y="1.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAIAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Codec\iHasDirectory.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.DirectoryContact" Collapsed="true">
|
||||||
|
<Position X="7.75" Y="1.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAgAAAAAAAEAAAAAAAAAAAAAAAAEIAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Codec\iHasDirectory.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.ContactMethod" Collapsed="true">
|
||||||
|
<Position X="13.75" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAIAAAAAAAgAAAEAAAAAAAAAIAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Codec\iHasDirectory.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.DirectorySearchResultEventArgs" Collapsed="true">
|
||||||
|
<Position X="19" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Codec\iHasDirectory.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.CodecScheduleAwareness" Collapsed="true">
|
||||||
|
<Position X="10.25" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAABAAAAAEAAAAAAAgAAEAAAABAAAAAAAIQAAAAA=</HashCode>
|
||||||
|
<FileName>Codec\iHasScheduleAwareness.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.Meeting" Collapsed="true">
|
||||||
|
<Position X="13.75" Y="5.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAACAAAAAAACEEgAAAAAAAgQIAAoAQABAAQAAEgAAAA=</HashCode>
|
||||||
|
<FileName>Codec\iHasScheduleAwareness.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.Call" Collapsed="true">
|
||||||
|
<Position X="17.25" Y="0.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAEAAAABAAAAIAAAAAAAAAAgAAAA=</HashCode>
|
||||||
|
<FileName>Codec\iHasScheduleAwareness.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.MeetingEventArgs" Collapsed="true">
|
||||||
|
<Position X="15.5" Y="5.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAA=</HashCode>
|
||||||
|
<FileName>Codec\iHasScheduleAwareness.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.CiscoSparkCodecPropertiesConfig" Collapsed="true">
|
||||||
|
<Position X="17.25" Y="1.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAQAAAAAAAAAAAAAAAAAIQAAACAABAAAAA=</HashCode>
|
||||||
|
<FileName>VideoCodec\CiscoCodec\CiscoSparkCodecPropertiesConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Codec.SharingProperties" Collapsed="true">
|
||||||
|
<Position X="15.5" Y="6.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>VideoCodec\CiscoCodec\CiscoSparkCodecPropertiesConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Displays.AvocorDisplay" Collapsed="true" BaseTypeListCollapsed="true">
|
||||||
|
<Position X="12" Y="0.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>hC4gIEAIUAABoQAEgBACAAAdBC1gmsGRICKGdQNBACw=</HashCode>
|
||||||
|
<FileName>Display\AvocorVTFDisplay.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" Collapsed="true" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Displays.ComTcpDisplayBase" Collapsed="true">
|
||||||
|
<Position X="6.5" Y="6.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAEQAAAAA=</HashCode>
|
||||||
|
<FileName>Display\ComTcpDisplayBase.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Displays.DisplayDeviceFactory" Collapsed="true">
|
||||||
|
<Position X="20.75" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Display\DeviceFactory.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Displays.NecPaSeriesProjector" Collapsed="true">
|
||||||
|
<Position X="6.5" Y="8" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>ogSIAAKIAAALCAAEABAQEAgABAAAAMIAAAAAEABAACA=</HashCode>
|
||||||
|
<FileName>Display\NecPaSeriesProjector.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Displays.NecPSXMDisplay" Collapsed="true" BaseTypeListCollapsed="true">
|
||||||
|
<Position X="22.5" Y="5.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>hLQgIShIAABFQQRUAvICDRMQESwSEQKRKACCZQNAESY=</HashCode>
|
||||||
|
<FileName>Display\NECPSXMDisplay.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" Collapsed="true" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Displays.SamsungMDC" Collapsed="true" BaseTypeListCollapsed="true">
|
||||||
|
<Position X="12" Y="6.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>hKwwIEAIQAABoUAGgBACAAAEBGxAmYORKCCGZQJAACw=</HashCode>
|
||||||
|
<FileName>Display\SamsungMDCDisplay.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" Collapsed="true" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.DSP.BiampTesiraForteDsp" Collapsed="true">
|
||||||
|
<Position X="3.5" Y="8" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>gACAAIAAAAEAQYCigAAAAAAQAACgCAAAAAAAAAMAAAI=</HashCode>
|
||||||
|
<FileName>DSP\BiampTesira\BiampTesiraForteDsp.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.DSP.TesiraForteLevelControl" Collapsed="true">
|
||||||
|
<Position X="0.5" Y="6.25" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>RAAgJACAAAAAAYAAAkIAAAAAIAQCEACJABACRAAAAUQ=</HashCode>
|
||||||
|
<FileName>DSP\BiampTesira\BiampTesiraForteDspLevel.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.DSP.BiampTesiraFortePropertiesConfig" Collapsed="true">
|
||||||
|
<Position X="15.5" Y="0.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>BAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>DSP\BiampTesira\BiampTesiraFortePropertiesConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.DSP.BiampTesiraForteLevelControlBlockConfig" Collapsed="true">
|
||||||
|
<Position X="13.75" Y="0.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAEAAAAIAAAAAAAAAAAAAAAAAIAAEAAAAAAEQ=</HashCode>
|
||||||
|
<FileName>DSP\BiampTesira\BiampTesiraFortePropertiesConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.DSP.TesiraForteControlPoint" Collapsed="true">
|
||||||
|
<Position X="0.5" Y="4.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAIAAAAACAAQQAAAAAQAAAAAAAIAAAABEAAAAAAEA=</HashCode>
|
||||||
|
<FileName>DSP\BiampTesira\TesiraForteControlPoint.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.DSP.DspBase" Collapsed="true">
|
||||||
|
<Position X="3.5" Y="6.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAEAIAgAAAAAAIAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>DSP\DspBase.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.DSP.DspControlPoint" Collapsed="true">
|
||||||
|
<Position X="1.75" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>DSP\DspBase.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.DSP.DspMuteControl" Collapsed="true">
|
||||||
|
<Position X="2.75" Y="4.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>BAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABAAAAQAAAAAQ=</HashCode>
|
||||||
|
<FileName>DSP\DspBase.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.DSP.SoundStructureBasics" Collapsed="true">
|
||||||
|
<Position X="17.25" Y="6.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>DSP\PolycomSoundStructure\SoundStructureBasics.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Environment.Lutron.LutronQuantumArea" Collapsed="true" BaseTypeListCollapsed="true">
|
||||||
|
<Position X="10.25" Y="5.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>gACAEBAAAoAABQBAASAAAAAAAAEgAAACAAACAAMAQAI=</HashCode>
|
||||||
|
<FileName>Environment\Lutron\LutronQuantum.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" Collapsed="true" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Environment.Lutron.LutronQuantumPropertiesConfig" Collapsed="true">
|
||||||
|
<Position X="12" Y="5.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAEAAAAAAAAgQAAAAAAAAAAAAQCAAACAAAAAAA=</HashCode>
|
||||||
|
<FileName>Environment\Lutron\LutronQuantum.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Microphones.MicrophonePrivacyController" Collapsed="true">
|
||||||
|
<Position X="17.25" Y="5.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>gQAABAAAAxAAIACAgAgAgCBAUQAAQAgCIAEQAACBAAA=</HashCode>
|
||||||
|
<FileName>Microphone\MicrophonePrivacyController.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Microphones.MicrophonePrivacyControllerConfig" Collapsed="true">
|
||||||
|
<Position X="19" Y="5.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgAIAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Microphone\MicrophonePrivacyControllerConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Microphones.KeyedDevice" Collapsed="true">
|
||||||
|
<Position X="20.75" Y="4.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Microphone\MicrophonePrivacyControllerConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Occupancy.EssentialsGlsOccupancySensorBaseController" Collapsed="true" BaseTypeListCollapsed="true">
|
||||||
|
<Position X="22.5" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAIAAAAAAAABAABgAAAAAASEABAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Occupancy\EssentialsGlsOccupancySensorBaseController.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" Collapsed="true" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.Occupancy.EssentialsOccupancyAggregator" Collapsed="true" BaseTypeListCollapsed="true">
|
||||||
|
<Position X="10.25" Y="4.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAACBAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Occupancy\EssentialsOccupancyAggregator.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" Collapsed="true" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.VideoCodec.CiscoCodecBookings" Collapsed="true">
|
||||||
|
<Position X="22.5" Y="0.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAg=</HashCode>
|
||||||
|
<FileName>VideoCodec\CiscoCodec\BookingsDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.VideoCodec.CiscoCallHistory" Collapsed="true">
|
||||||
|
<Position X="20.75" Y="0.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>VideoCodec\CiscoCodec\CallHistoryDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.VideoCodec.CiscoCodecPhonebook" Collapsed="true">
|
||||||
|
<Position X="13.75" Y="1.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>EAAAABAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>VideoCodec\CiscoCodec\PhonebookDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.VideoCodec.MockVC" Collapsed="true">
|
||||||
|
<Position X="0.5" Y="2" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>BgYAIAACAQaKBACAAwAAUSQAAWYCEACDAAiAQBBCgQU=</HashCode>
|
||||||
|
<FileName>VideoCodec\MockVC\MockVC.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.VideoCodec.MockCodecInfo" Collapsed="true">
|
||||||
|
<Position X="5.5" Y="4.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>gKAAAAAAAAAAAACCAACAAAAAAAAAAAACAAAAAABBAAA=</HashCode>
|
||||||
|
<FileName>VideoCodec\MockVC\MockVC.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.VideoCodec.MockVcPropertiesConfig" Collapsed="true">
|
||||||
|
<Position X="20.75" Y="5.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAA=</HashCode>
|
||||||
|
<FileName>VideoCodec\MockVC\MockVcPropertiesConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.VideoCodec.VideoCodecBase" Collapsed="true">
|
||||||
|
<Position X="1.75" Y="2" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>BiwgAAECAASAAECAgQEDIABAAAYiEBCpCEigQBZCAQU=</HashCode>
|
||||||
|
<FileName>VideoCodec\VideoCodecBase.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.VideoCodec.CodecPhonebookSyncState" Collapsed="true" BaseTypeListCollapsed="true">
|
||||||
|
<Position X="22.5" Y="2.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>EAiCAAQAAgEAAQQAEAAAAAAAAAEAAAAAAACAAAAAAAM=</HashCode>
|
||||||
|
<FileName>VideoCodec\VideoCodecBase.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" Collapsed="true" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.VideoCodec.Cisco.CiscoSparkCodec" Collapsed="true">
|
||||||
|
<Position X="2.75" Y="2" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>jhQEtAJaASb7kSCwAwtxECSABsf2n1GBJEmAVJFKWTc=</HashCode>
|
||||||
|
<FileName>VideoCodec\CiscoCodec\CiscoSparkCodec.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.VideoCodec.Cisco.CodecCommandWithLabel" Collapsed="true">
|
||||||
|
<Position X="19" Y="2.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAEAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>VideoCodec\CiscoCodec\CiscoSparkCodec.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.VideoCodec.Cisco.CodecSyncState" Collapsed="true" BaseTypeListCollapsed="true">
|
||||||
|
<Position X="12" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AIAAAAQACAEAAAQAEAAAAAAAAAAgAAAAAAAACAACACE=</HashCode>
|
||||||
|
<FileName>VideoCodec\CiscoCodec\CiscoSparkCodec.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" Collapsed="true" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.VideoCodec.Cisco.HttpApiServer" Collapsed="true">
|
||||||
|
<Position X="13.75" Y="4.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAQAAAACAAAAABAAAAAAAIAIAAAAAAAQAAgAAAAAA=</HashCode>
|
||||||
|
<FileName>VideoCodec\CiscoCodec\HttpApiServer.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.VideoCodec.Cisco.CiscoCodecConfiguration" Collapsed="true">
|
||||||
|
<Position X="10.25" Y="1.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>VideoCodec\CiscoCodec\xConfiguration.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.VideoCodec.Cisco.CiscoCodecEvents" Collapsed="true">
|
||||||
|
<Position X="12" Y="1.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>VideoCodec\CiscoCodec\xEvent.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.VideoCodec.Cisco.CiscoCodecStatus" Collapsed="true">
|
||||||
|
<Position X="15.5" Y="1.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>VideoCodec\CiscoCodec\xStatus.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Devices.Common.VideoCodec.CiscoCodec.xStatusSparkPlus" Collapsed="true">
|
||||||
|
<Position X="19" Y="6.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>VideoCodec\CiscoCodec\xStatusSparkPlus.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Interface Name="PepperDash.Essentials.Devices.Common.Codec.ICodecAudio" Collapsed="true">
|
||||||
|
<Position X="10.25" Y="7.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Codec\iCodecAudio.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Interface Name="PepperDash.Essentials.Devices.Common.Codec.iCodecInfo" Collapsed="true">
|
||||||
|
<Position X="12" Y="7.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Codec\iCodecInfo.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Interface Name="PepperDash.Essentials.Devices.Common.Codec.IHasCallFavorites" Collapsed="true">
|
||||||
|
<Position X="15.5" Y="7.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Codec\iHasCallFavorites.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Interface Name="PepperDash.Essentials.Devices.Common.Codec.IHasCallHistory" Collapsed="true">
|
||||||
|
<Position X="17.25" Y="7.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Codec\iHasCallHistory.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Interface Name="PepperDash.Essentials.Devices.Common.Codec.IHasContentSharing" Collapsed="true">
|
||||||
|
<Position X="22.5" Y="7.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAIAEAgABAAAAA=</HashCode>
|
||||||
|
<FileName>Codec\iHasContentSharing.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Interface Name="PepperDash.Essentials.Devices.Common.Codec.IHasDialer" Collapsed="true">
|
||||||
|
<Position X="10.25" Y="8.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAgAAAACAAAAAACAAAAAAAAAAAICAAAAAAAAAAQCAAA=</HashCode>
|
||||||
|
<FileName>Codec\iHasDialer.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Interface Name="PepperDash.Essentials.Devices.Common.Codec.IHasDirectory" Collapsed="true">
|
||||||
|
<Position X="12" Y="8.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAgAAAAAAAAAAAAgCAAAAABAAAEAAAAAA=</HashCode>
|
||||||
|
<FileName>Codec\iHasDirectory.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Interface Name="PepperDash.Essentials.Devices.Common.Codec.IHasScheduleAwareness" Collapsed="true">
|
||||||
|
<Position X="13.75" Y="8.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Codec\iHasScheduleAwareness.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Interface Name="PepperDash.Essentials.Devices.Displays.IInputHdmi1" Collapsed="true">
|
||||||
|
<Position X="19" Y="8.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAA=</HashCode>
|
||||||
|
<FileName>Display\InputInterfaces.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Interface Name="PepperDash.Essentials.Devices.Displays.IInputHdmi2" Collapsed="true">
|
||||||
|
<Position X="20.75" Y="8.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Display\InputInterfaces.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Interface Name="PepperDash.Essentials.Devices.Displays.IInputHdmi3" Collapsed="true">
|
||||||
|
<Position X="22.5" Y="8.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAA=</HashCode>
|
||||||
|
<FileName>Display\InputInterfaces.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Interface Name="PepperDash.Essentials.Devices.Displays.IInputHdmi4" Collapsed="true">
|
||||||
|
<Position X="10.25" Y="9.25" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAA=</HashCode>
|
||||||
|
<FileName>Display\InputInterfaces.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Interface Name="PepperDash.Essentials.Devices.Displays.IInputDisplayPort1" Collapsed="true">
|
||||||
|
<Position X="15.5" Y="8.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Display\InputInterfaces.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Interface Name="PepperDash.Essentials.Devices.Displays.IInputDisplayPort2" Collapsed="true">
|
||||||
|
<Position X="17.25" Y="8.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Display\InputInterfaces.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Interface Name="PepperDash.Essentials.Devices.Displays.IInputVga1" Collapsed="true">
|
||||||
|
<Position X="12" Y="9.25" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Display\InputInterfaces.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Interface Name="PepperDash.Essentials.Devices.Common.DSP.IDspLevelControl" Collapsed="true">
|
||||||
|
<Position X="13.75" Y="7.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>QAAAAACAAAAAAAAAAAAAAAAAAAAAAAAIAAEAAAAAAAQ=</HashCode>
|
||||||
|
<FileName>DSP\DspBase.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Interface Name="PepperDash.Essentials.Devices.Common.Occupancy.IOccupancyStatusProvider" Collapsed="true">
|
||||||
|
<Position X="13.75" Y="9.25" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Occupancy\iOccupancyStatusProvider.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Interface Name="PepperDash.Essentials.Devices.Common.VideoCodec.IHasCodecLayouts" Collapsed="true">
|
||||||
|
<Position X="19" Y="7.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAgAAAAAAAAAAAAAAAEEgAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>VideoCodec\Interfaces\IHasCodecLayouts.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Interface Name="PepperDash.Essentials.Devices.Common.VideoCodec.IHasCodecSelfview" Collapsed="true">
|
||||||
|
<Position X="20.75" Y="7.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>ABAAEAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAABAAAAI=</HashCode>
|
||||||
|
<FileName>VideoCodec\Interfaces\IHasCodecSelfview.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Enum Name="PepperDash.Essentials.Devices.Common.eExGatewayType" Collapsed="true">
|
||||||
|
<Position X="10.25" Y="11" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAgAAAAAAAAAAAAAIAAAEAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Crestron\Gateways\CenRfgwController.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Enum>
|
||||||
|
<Enum Name="PepperDash.Essentials.Devices.Common.Codec.eCodecCallDirection" Collapsed="true">
|
||||||
|
<Position X="12" Y="10.25" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAAAAAABA=</HashCode>
|
||||||
|
<FileName>Codec\eCodecCallDirection.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Enum>
|
||||||
|
<Enum Name="PepperDash.Essentials.Devices.Common.Codec.eCodecCallStatus" Collapsed="true">
|
||||||
|
<Position X="13.75" Y="10.25" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>CAgAAABAAAAAQAACAAABAAAAAAAAAAABCAAAAiAAQBA=</HashCode>
|
||||||
|
<FileName>Codec\eCodecCallStatus.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Enum>
|
||||||
|
<Enum Name="PepperDash.Essentials.Devices.Common.Codec.eCodecCallType" Collapsed="true">
|
||||||
|
<Position X="15.5" Y="10.25" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAoBg=</HashCode>
|
||||||
|
<FileName>Codec\eCodecCallType.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Enum>
|
||||||
|
<Enum Name="PepperDash.Essentials.Devices.Common.Codec.eMeetingPrivacy" Collapsed="true">
|
||||||
|
<Position X="13.75" Y="11" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAQBA=</HashCode>
|
||||||
|
<FileName>Codec\eMeetingPrivacy.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Enum>
|
||||||
|
<Enum Name="PepperDash.Essentials.Devices.Common.Codec.eCodecOccurrenceType" Collapsed="true">
|
||||||
|
<Position X="17.25" Y="10.25" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAABAAAAAIAAAAAAAAAAAAAAAAAAAEAAAAAAABA=</HashCode>
|
||||||
|
<FileName>Codec\iHasCallHistory.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Enum>
|
||||||
|
<Enum Name="PepperDash.Essentials.Devices.Common.Codec.eContactMethodDevice" Collapsed="true">
|
||||||
|
<Position X="22.5" Y="10.25" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>BAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAAAAAABg=</HashCode>
|
||||||
|
<FileName>Codec\iHasDirectory.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Enum>
|
||||||
|
<Enum Name="PepperDash.Essentials.Devices.Common.Codec.eContactMethodCallType" Collapsed="true">
|
||||||
|
<Position X="20.75" Y="10.25" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAABg=</HashCode>
|
||||||
|
<FileName>Codec\iHasDirectory.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Enum>
|
||||||
|
<Enum Name="PepperDash.Essentials.Devices.Common.Codec.eMeetingEventChangeType" Collapsed="true">
|
||||||
|
<Position X="12" Y="11" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>BAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAIACg=</HashCode>
|
||||||
|
<FileName>Codec\iHasScheduleAwareness.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Enum>
|
||||||
|
<Enum Name="PepperDash.Essentials.Devices.Common.Environment.Lutron.eAction" Collapsed="true">
|
||||||
|
<Position X="10.25" Y="10.25" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AACAACAAABAAgIAAgAAQAAAAAAAAIAAAIAAAACAEAAg=</HashCode>
|
||||||
|
<FileName>Environment\Lutron\LutronQuantum.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Enum>
|
||||||
|
<Enum Name="PepperDash.Essentials.Devices.Common.VideoCodec.Cisco.eCommandType" Collapsed="true">
|
||||||
|
<Position X="19" Y="10.25" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAACAQAAAAABAAEAAAAAAAAgAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>VideoCodec\CiscoCodec\CiscoSparkCodec.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Enum>
|
||||||
|
<Font Name="Segoe UI" Size="9" />
|
||||||
|
</ClassDiagram>
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
using Crestron.SimplSharpPro;
|
||||||
|
using Crestron.SimplSharpPro.DeviceSupport;
|
||||||
|
using Crestron.SimplSharpPro.Lighting;
|
||||||
|
|
||||||
|
using PepperDash.Core;
|
||||||
|
using PepperDash.Essentials.Core;
|
||||||
|
using PepperDash.Essentials.Core.CrestronIO;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials.Devices.Common.Environment.Lighting
|
||||||
|
{
|
||||||
|
public class Din8sw8Controller : Device, ISwitchedOutputCollection
|
||||||
|
{
|
||||||
|
// Need to figure out some sort of interface to make these switched outputs behave like processor relays so they can be used interchangably
|
||||||
|
|
||||||
|
public Din8Sw8 SwitchModule { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Collection of generic switched outputs
|
||||||
|
/// </summary>
|
||||||
|
public Dictionary<uint, ISwitchedOutput> SwitchedOutputs { get; private set; }
|
||||||
|
|
||||||
|
public Din8sw8Controller(string key, uint cresnetId)
|
||||||
|
: base(key)
|
||||||
|
{
|
||||||
|
SwitchedOutputs = new Dictionary<uint, ISwitchedOutput>();
|
||||||
|
|
||||||
|
SwitchModule = new Din8Sw8(cresnetId, Global.ControlSystem);
|
||||||
|
|
||||||
|
if (SwitchModule.Register() != eDeviceRegistrationUnRegistrationResponse.Success)
|
||||||
|
{
|
||||||
|
Debug.Console(2, this, "Error registering Din8sw8. Reason: {0}", SwitchModule.RegistrationFailureReason);
|
||||||
|
}
|
||||||
|
|
||||||
|
PopulateDictionary();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool CustomActivate()
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
return base.CustomActivate();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Populates the generic collection with the loads from the Crestron collection
|
||||||
|
/// </summary>
|
||||||
|
void PopulateDictionary()
|
||||||
|
{
|
||||||
|
foreach (var item in SwitchModule.SwitchedLoads)
|
||||||
|
{
|
||||||
|
SwitchedOutputs.Add(item.Number, new Din8sw8Output(item));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Wrapper class to
|
||||||
|
/// </summary>
|
||||||
|
public class Din8sw8Output : ISwitchedOutput
|
||||||
|
{
|
||||||
|
SwitchedLoadWithOverrideParameter SwitchedOutput;
|
||||||
|
|
||||||
|
public BoolFeedback OutputIsOnFeedback { get; protected set; }
|
||||||
|
|
||||||
|
public Din8sw8Output(SwitchedLoadWithOverrideParameter switchedOutput)
|
||||||
|
{
|
||||||
|
SwitchedOutput = switchedOutput;
|
||||||
|
|
||||||
|
OutputIsOnFeedback = new BoolFeedback(new Func<bool>(() => SwitchedOutput.IsOn));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void On()
|
||||||
|
{
|
||||||
|
SwitchedOutput.FullOn();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Off()
|
||||||
|
{
|
||||||
|
SwitchedOutput.FullOff();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,248 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
using PepperDash.Core;
|
||||||
|
using PepperDash.Essentials.Core;
|
||||||
|
using PepperDash.Essentials.Core.Lighting;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials.Devices.Common.Environment.Lutron
|
||||||
|
{
|
||||||
|
public class LutronQuantumArea : LightingBase, ILightingMasterRaiseLower, ICommunicationMonitor
|
||||||
|
{
|
||||||
|
public IBasicCommunication Communication { get; private set; }
|
||||||
|
public CommunicationGather PortGather { get; private set; }
|
||||||
|
public StatusMonitorBase CommunicationMonitor { get; private set; }
|
||||||
|
|
||||||
|
CTimer SubscribeAfterLogin;
|
||||||
|
|
||||||
|
public int IntegrationId;
|
||||||
|
public string Username;
|
||||||
|
public string Password;
|
||||||
|
|
||||||
|
const string Delimiter = "\x0d\x0a";
|
||||||
|
const string Set = "#";
|
||||||
|
const string Get = "?";
|
||||||
|
|
||||||
|
public LutronQuantumArea(string key, string name, IBasicCommunication comm, LutronQuantumPropertiesConfig props)
|
||||||
|
: base(key, name)
|
||||||
|
{
|
||||||
|
Communication = comm;
|
||||||
|
|
||||||
|
IntegrationId = props.IntegrationId;
|
||||||
|
|
||||||
|
Username = props.Username;
|
||||||
|
Password = props.Password;
|
||||||
|
|
||||||
|
LightingScenes = props.Scenes;
|
||||||
|
|
||||||
|
var socket = comm as ISocketStatus;
|
||||||
|
if (socket != null)
|
||||||
|
{
|
||||||
|
// IP Control
|
||||||
|
socket.ConnectionChange += new EventHandler<GenericSocketStatusChageEventArgs>(socket_ConnectionChange);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// RS-232 Control
|
||||||
|
}
|
||||||
|
|
||||||
|
Communication.TextReceived += new EventHandler<GenericCommMethodReceiveTextArgs>(Communication_TextReceived);
|
||||||
|
|
||||||
|
PortGather = new CommunicationGather(Communication, Delimiter);
|
||||||
|
PortGather.LineReceived += new EventHandler<GenericCommMethodReceiveTextArgs>(PortGather_LineReceived);
|
||||||
|
|
||||||
|
if (props.CommunicationMonitorProperties != null)
|
||||||
|
{
|
||||||
|
CommunicationMonitor = new GenericCommunicationMonitor(this, Communication, props.CommunicationMonitorProperties);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CommunicationMonitor = new GenericCommunicationMonitor(this, Communication, 120000, 120000, 300000, "?ETHERNET,0\x0d\x0a");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool CustomActivate()
|
||||||
|
{
|
||||||
|
Communication.Connect();
|
||||||
|
CommunicationMonitor.StatusChange += (o, a) => { Debug.Console(2, this, "Communication monitor state: {0}", CommunicationMonitor.Status); };
|
||||||
|
CommunicationMonitor.Start();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void socket_ConnectionChange(object sender, GenericSocketStatusChageEventArgs e)
|
||||||
|
{
|
||||||
|
Debug.Console(2, this, "Socket Status Change: {0}", e.Client.ClientStatus.ToString());
|
||||||
|
|
||||||
|
if (e.Client.IsConnected)
|
||||||
|
{
|
||||||
|
// Tasks on connect
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Checks for responses that do not contain the delimiter
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="args"></param>
|
||||||
|
void Communication_TextReceived(object sender, GenericCommMethodReceiveTextArgs args)
|
||||||
|
{
|
||||||
|
Debug.Console(2, this, "Text Received: '{0}'");
|
||||||
|
|
||||||
|
if (args.Text.Contains("login:"))
|
||||||
|
{
|
||||||
|
// Login
|
||||||
|
SendLine(Username);
|
||||||
|
}
|
||||||
|
else if (args.Text.Contains("password:"))
|
||||||
|
{
|
||||||
|
// Login
|
||||||
|
SendLine(Password);
|
||||||
|
SubscribeAfterLogin = new CTimer(x => SubscribeToFeedback(), null, 5000);
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (args.Text.Contains("Access Granted"))
|
||||||
|
{
|
||||||
|
if (SubscribeAfterLogin != null)
|
||||||
|
{
|
||||||
|
SubscribeAfterLogin.Stop();
|
||||||
|
}
|
||||||
|
SubscribeToFeedback();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Handles all responses that contain the delimiter
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="args"></param>
|
||||||
|
void PortGather_LineReceived(object sender, GenericCommMethodReceiveTextArgs args)
|
||||||
|
{
|
||||||
|
Debug.Console(2, this, "Line Received: '{0}'");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (args.Text.Contains("~AREA"))
|
||||||
|
{
|
||||||
|
var response = args.Text.Split(',');
|
||||||
|
|
||||||
|
var integrationId = Int32.Parse(response[1]);
|
||||||
|
|
||||||
|
if (integrationId != IntegrationId)
|
||||||
|
{
|
||||||
|
Debug.Console(2, this, "Response is not for correct Integration ID");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var action = Int32.Parse(response[2]);
|
||||||
|
|
||||||
|
switch (action)
|
||||||
|
{
|
||||||
|
case (int)eAction.Scene:
|
||||||
|
{
|
||||||
|
var scene = Int32.Parse(response[3]);
|
||||||
|
CurrentLightingScene = LightingScenes.FirstOrDefault(s => s.ID.Equals(scene));
|
||||||
|
|
||||||
|
OnLightingSceneChange();
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.Console(2, this, "Error parsing response:\n{0}", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Subscribes to feedback
|
||||||
|
/// </summary>
|
||||||
|
public void SubscribeToFeedback()
|
||||||
|
{
|
||||||
|
Debug.Console(1, "Sending Monitoring Subscriptions");
|
||||||
|
SendLine("#MONITORING,6,1");
|
||||||
|
SendLine("#MONITORING,8,1");
|
||||||
|
SendLine("#MONITORING,5,2");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Recalls the specified scene
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="scene"></param>
|
||||||
|
public override void SelectScene(LightingScene scene)
|
||||||
|
{
|
||||||
|
Debug.Console(1, this, "Selecting Scene: '{0}'", scene.Name);
|
||||||
|
SendLine(string.Format("{0}AREA,{1},{2},{3}", Set, IntegrationId, eAction.Scene, scene.ID));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Begins raising the lights in the area
|
||||||
|
/// </summary>
|
||||||
|
public void MasterRaise()
|
||||||
|
{
|
||||||
|
SendLine(string.Format("{0}AREA,{1},{2}", Set, IntegrationId, eAction.Raise));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Begins lowering the lights in the area
|
||||||
|
/// </summary>
|
||||||
|
public void MasterLower()
|
||||||
|
{
|
||||||
|
SendLine(string.Format("{0}AREA,{1},{2}", Set, IntegrationId, eAction.Lower));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Stops the current raise/lower action
|
||||||
|
/// </summary>
|
||||||
|
public void MasterRaiseLowerStop()
|
||||||
|
{
|
||||||
|
SendLine(string.Format("{0}AREA,{1},{2}", Set, IntegrationId, eAction.Stop));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Appends the delimiter and sends the string
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="s"></param>
|
||||||
|
public void SendLine(string s)
|
||||||
|
{
|
||||||
|
Debug.Console(2, this, "TX: '{0}'", s);
|
||||||
|
Communication.SendText(s + Delimiter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum eAction : int
|
||||||
|
{
|
||||||
|
SetLevel = 1,
|
||||||
|
Raise = 2,
|
||||||
|
Lower = 3,
|
||||||
|
Stop = 4,
|
||||||
|
Scene = 6,
|
||||||
|
DaylightMode = 7,
|
||||||
|
OccupancyState = 8,
|
||||||
|
OccupancyMode = 9,
|
||||||
|
OccupiedLevelOrScene = 12,
|
||||||
|
UnoccupiedLevelOrScene = 13,
|
||||||
|
HyperionShaddowSensorOverrideState = 26,
|
||||||
|
HyperionBrightnessSensorOverrideStatue = 27
|
||||||
|
}
|
||||||
|
|
||||||
|
public class LutronQuantumPropertiesConfig
|
||||||
|
{
|
||||||
|
public CommunicationMonitorConfig CommunicationMonitorProperties { get; set; }
|
||||||
|
public ControlPropertiesConfig Control { get; set; }
|
||||||
|
|
||||||
|
public int IntegrationId { get; set; }
|
||||||
|
public List<LightingScene> Scenes{ get; set; }
|
||||||
|
|
||||||
|
public string Username { get; set; }
|
||||||
|
public string Password { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
|
||||||
|
using PepperDash.Core;
|
||||||
|
using PepperDash.Essentials.Core;
|
||||||
|
using PepperDash.Essentials.Core.CrestronIO;
|
||||||
|
using PepperDash.Essentials.Core.Shades;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials.Devices.Common.Environment.Somfy
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Controls a single shade using three relays
|
||||||
|
/// </summary>
|
||||||
|
public class RelayControlledShade : ShadeBase, IShadesOpenCloseStop
|
||||||
|
{
|
||||||
|
RelayControlledShadeConfigProperties Config;
|
||||||
|
|
||||||
|
ISwitchedOutput OpenRelay;
|
||||||
|
ISwitchedOutput StopOrPresetRelay;
|
||||||
|
ISwitchedOutput CloseRelay;
|
||||||
|
|
||||||
|
int RelayPulseTime;
|
||||||
|
|
||||||
|
public string StopOrPresetButtonLabel { get; set; }
|
||||||
|
|
||||||
|
public RelayControlledShade(string key, string name, RelayControlledShadeConfigProperties config)
|
||||||
|
: base(key, name)
|
||||||
|
{
|
||||||
|
Config = config;
|
||||||
|
|
||||||
|
RelayPulseTime = Config.RelayPulseTime;
|
||||||
|
|
||||||
|
StopOrPresetButtonLabel = Config.StopOrPresetLabel;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool CustomActivate()
|
||||||
|
{
|
||||||
|
//Create ISwitchedOutput objects based on props
|
||||||
|
OpenRelay = GetSwitchedOutputFromDevice(Config.Relays.Open);
|
||||||
|
StopOrPresetRelay = GetSwitchedOutputFromDevice(Config.Relays.StopOrPreset);
|
||||||
|
CloseRelay = GetSwitchedOutputFromDevice(Config.Relays.Close);
|
||||||
|
|
||||||
|
|
||||||
|
return base.CustomActivate();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Open()
|
||||||
|
{
|
||||||
|
Debug.Console(1, this, "Opening Shade: '{0}'", this.Name);
|
||||||
|
|
||||||
|
PulseOutput(OpenRelay, RelayPulseTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void StopOrPreset()
|
||||||
|
{
|
||||||
|
Debug.Console(1, this, "Stopping or recalling preset on Shade: '{0}'", this.Name);
|
||||||
|
|
||||||
|
PulseOutput(StopOrPresetRelay, RelayPulseTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Close()
|
||||||
|
{
|
||||||
|
Debug.Console(1, this, "Closing Shade: '{0}'", this.Name);
|
||||||
|
|
||||||
|
PulseOutput(CloseRelay, RelayPulseTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PulseOutput(ISwitchedOutput output, int pulseTime)
|
||||||
|
{
|
||||||
|
output.On();
|
||||||
|
CTimer pulseTimer = new CTimer(new CTimerCallbackFunction((o) => output.Off()), pulseTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Attempts to get the port on teh specified device from config
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="relayConfig"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
ISwitchedOutput GetSwitchedOutputFromDevice(IOPortConfig relayConfig)
|
||||||
|
{
|
||||||
|
var portDevice = DeviceManager.GetDeviceForKey(relayConfig.PortDeviceKey);
|
||||||
|
|
||||||
|
if (portDevice != null)
|
||||||
|
{
|
||||||
|
return (portDevice as ISwitchedOutputCollection).SwitchedOutputs[relayConfig.PortNumber];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Console(1, this, "Error: Unable to get relay on port '{0}' from device with key '{1}'", relayConfig.PortNumber, relayConfig.PortDeviceKey);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class RelayControlledShadeConfigProperties
|
||||||
|
{
|
||||||
|
public int RelayPulseTime { get; set; }
|
||||||
|
public ShadeRelaysConfig Relays { get; set; }
|
||||||
|
public string StopOrPresetLabel { get; set; }
|
||||||
|
|
||||||
|
public class ShadeRelaysConfig
|
||||||
|
{
|
||||||
|
public IOPortConfig Open { get; set; }
|
||||||
|
public IOPortConfig StopOrPreset { get; set; }
|
||||||
|
public IOPortConfig Close { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -58,10 +58,14 @@
|
|||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.GeneralIO.dll</HintPath>
|
<HintPath>..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.GeneralIO.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="mscorlib" />
|
<Reference Include="Crestron.SimplSharpPro.Lighting, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL">
|
||||||
<Reference Include="PepperDash_Core, Version=1.0.1.20241, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\pepperdash-simplsharp-core\Pepperdash Core\CLZ Builds\PepperDash_Core.dll</HintPath>
|
<HintPath>..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.Lighting.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="mscorlib" />
|
||||||
|
<Reference Include="PepperDash_Core, Version=1.0.4.20530, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\..\PepperDash.Core\Pepperdash Core\Pepperdash Core\bin\PepperDash_Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="SimplSharpCustomAttributesInterface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL">
|
<Reference Include="SimplSharpCustomAttributesInterface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
@@ -118,10 +122,13 @@
|
|||||||
<Compile Include="DSP\BiampTesira\BiampTesiraForteDsp.cs" />
|
<Compile Include="DSP\BiampTesira\BiampTesiraForteDsp.cs" />
|
||||||
<Compile Include="DSP\BiampTesira\BiampTesiraFortePropertiesConfig.cs" />
|
<Compile Include="DSP\BiampTesira\BiampTesiraFortePropertiesConfig.cs" />
|
||||||
<Compile Include="DSP\PolycomSoundStructure\SoundStructureBasics.cs" />
|
<Compile Include="DSP\PolycomSoundStructure\SoundStructureBasics.cs" />
|
||||||
|
<Compile Include="Environment\Crestron Lighting\Din8sw8.cs" />
|
||||||
|
<Compile Include="Environment\Lutron\LutronQuantum.cs" />
|
||||||
|
<Compile Include="Environment\Somfy\RelayControlledShade.cs" />
|
||||||
<Compile Include="Factory\DeviceFactory.cs" />
|
<Compile Include="Factory\DeviceFactory.cs" />
|
||||||
<Compile Include="Generic\GenericSource.cs" />
|
<Compile Include="Generic\GenericSource.cs" />
|
||||||
<Compile Include="MIcrophone\MicrophonePrivacyController.cs" />
|
<Compile Include="Microphone\MicrophonePrivacyController.cs" />
|
||||||
<Compile Include="MIcrophone\MicrophonePrivacyControllerConfig.cs" />
|
<Compile Include="Microphone\MicrophonePrivacyControllerConfig.cs" />
|
||||||
<Compile Include="Occupancy\EssentialsGlsOccupancySensorBaseController.cs" />
|
<Compile Include="Occupancy\EssentialsGlsOccupancySensorBaseController.cs" />
|
||||||
<Compile Include="Occupancy\EssentialsOccupancyAggregator.cs" />
|
<Compile Include="Occupancy\EssentialsOccupancyAggregator.cs" />
|
||||||
<Compile Include="Occupancy\iOccupancyStatusProvider.cs" />
|
<Compile Include="Occupancy\iOccupancyStatusProvider.cs" />
|
||||||
|
|||||||
@@ -12,11 +12,12 @@ using PepperDash.Essentials.Core;
|
|||||||
using PepperDash.Essentials.Core.Config;
|
using PepperDash.Essentials.Core.Config;
|
||||||
using PepperDash.Essentials.Core.CrestronIO;
|
using PepperDash.Essentials.Core.CrestronIO;
|
||||||
|
|
||||||
|
using PepperDash.Essentials.Devices.Common;
|
||||||
using PepperDash.Essentials.Devices.Common.DSP;
|
using PepperDash.Essentials.Devices.Common.DSP;
|
||||||
using PepperDash.Essentials.Devices.Common.VideoCodec;
|
using PepperDash.Essentials.Devices.Common.VideoCodec;
|
||||||
using PepperDash.Essentials.Devices.Common.Occupancy;
|
using PepperDash.Essentials.Devices.Common.Occupancy;
|
||||||
|
using PepperDash.Essentials.Devices.Common.Environment;
|
||||||
|
|
||||||
using PepperDash.Essentials.Devices.Common;
|
|
||||||
|
|
||||||
|
|
||||||
namespace PepperDash.Essentials.Devices.Common
|
namespace PepperDash.Essentials.Devices.Common
|
||||||
@@ -109,55 +110,17 @@ namespace PepperDash.Essentials.Devices.Common
|
|||||||
|
|
||||||
else if (typeName == "mockvc")
|
else if (typeName == "mockvc")
|
||||||
{
|
{
|
||||||
var props = JsonConvert.DeserializeObject
|
var props = JsonConvert.DeserializeObject<VideoCodec.MockVcPropertiesConfig>(properties.ToString());
|
||||||
<PepperDash.Essentials.Devices.Common.VideoCodec.MockVcPropertiesConfig>(properties.ToString());
|
return new VideoCodec.MockVC(key, name, props);
|
||||||
return new PepperDash.Essentials.Devices.Common.VideoCodec
|
|
||||||
.MockVC(key, name, props);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (typeName.StartsWith("ciscospark"))
|
else if (typeName.StartsWith("ciscospark"))
|
||||||
{
|
{
|
||||||
var comm = CommFactory.CreateCommForDevice(dc);
|
var comm = CommFactory.CreateCommForDevice(dc);
|
||||||
var props = JsonConvert.DeserializeObject<Codec.CiscoSparkCodecPropertiesConfig>(properties.ToString());
|
var props = JsonConvert.DeserializeObject<Codec.CiscoSparkCodecPropertiesConfig>(properties.ToString());
|
||||||
return new PepperDash.Essentials.Devices.Common.VideoCodec.Cisco.CiscoSparkCodec(key, name, comm, props);
|
return new VideoCodec.Cisco.CiscoSparkCodec(key, name, comm, props);
|
||||||
}
|
}
|
||||||
|
|
||||||
//else if (typeName == "versiportinput")
|
|
||||||
//{
|
|
||||||
// var props = JsonConvert.DeserializeObject<IOPortConfig>(properties.ToString());
|
|
||||||
|
|
||||||
// IIOPorts portDevice;
|
|
||||||
|
|
||||||
// if (props.PortDeviceKey == "processor")
|
|
||||||
// portDevice = Global.ControlSystem as IIOPorts;
|
|
||||||
// else
|
|
||||||
// portDevice = DeviceManager.GetDeviceForKey(props.PortDeviceKey) as IIOPorts;
|
|
||||||
|
|
||||||
// if(portDevice == null)
|
|
||||||
// Debug.Console(0, "Unable to add versiport device with key '{0}'. Port Device does not support versiports", key);
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// var cs = (portDevice as CrestronControlSystem);
|
|
||||||
|
|
||||||
// if (cs != null)
|
|
||||||
// if (cs.SupportsVersiport && props.PortNumber <= cs.NumberOfVersiPorts)
|
|
||||||
// {
|
|
||||||
// Versiport versiport = cs.VersiPorts[props.PortNumber];
|
|
||||||
|
|
||||||
// if(!versiport.Registered)
|
|
||||||
// {
|
|
||||||
// if (versiport.Register() == eDeviceRegistrationUnRegistrationResponse.Success)
|
|
||||||
// return new GenericVersiportInputDevice(key, versiport);
|
|
||||||
// else
|
|
||||||
// Debug.Console(0, "Attempt to register versiport {0} on device with key '{1}' failed.", props.PortNumber, props.PortDeviceKey);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // Future: Check if portDevice is 3-series card or other non control system that supports versiports
|
|
||||||
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
else if (typeName == "digitalinput")
|
else if (typeName == "digitalinput")
|
||||||
{
|
{
|
||||||
var props = JsonConvert.DeserializeObject<IOPortConfig>(properties.ToString());
|
var props = JsonConvert.DeserializeObject<IOPortConfig>(properties.ToString());
|
||||||
@@ -326,6 +289,43 @@ namespace PepperDash.Essentials.Devices.Common
|
|||||||
Debug.Console(0, "ERROR: Unable to create Occupancy Sensor Device. Key: '{0}'", key);
|
Debug.Console(0, "ERROR: Unable to create Occupancy Sensor Device. Key: '{0}'", key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if (groupName == "lighting")
|
||||||
|
{
|
||||||
|
if (typeName == "lutronqs")
|
||||||
|
{
|
||||||
|
var comm = CommFactory.CreateCommForDevice(dc);
|
||||||
|
|
||||||
|
var props = JsonConvert.DeserializeObject<Environment.Lutron.LutronQuantumPropertiesConfig>(properties.ToString());
|
||||||
|
|
||||||
|
return new Environment.Lutron.LutronQuantumArea(key, name, comm, props);
|
||||||
|
}
|
||||||
|
else if (typeName == "din8sw8")
|
||||||
|
{
|
||||||
|
var comm = CommFactory.GetControlPropertiesConfig(dc);
|
||||||
|
|
||||||
|
return new Environment.Lighting.Din8sw8Controller(key, comm.CresnetIdInt);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (groupName == "environment")
|
||||||
|
{
|
||||||
|
if (typeName == "shadecontroller")
|
||||||
|
{
|
||||||
|
var props = JsonConvert.DeserializeObject<Core.Shades.ShadeControllerConfigProperties>(properties.ToString());
|
||||||
|
|
||||||
|
return new Core.Shades.ShadeController(key, name, props);
|
||||||
|
}
|
||||||
|
else if (typeName == "relaycontrolledshade")
|
||||||
|
{
|
||||||
|
var props = JsonConvert.DeserializeObject<Environment.Somfy.RelayControlledShadeConfigProperties>(properties.ToString());
|
||||||
|
|
||||||
|
return new Environment.Somfy.RelayControlledShade(key, name, props);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ namespace PepperDash.Essentials.Devices.Common.Occupancy
|
|||||||
: base(key, name, sensor)
|
: base(key, name, sensor)
|
||||||
{
|
{
|
||||||
OccSensor = sensor;
|
OccSensor = sensor;
|
||||||
|
|
||||||
RoomIsOccupiedFeedback = new BoolFeedback(RoomIsOccupiedFeedbackFunc);
|
RoomIsOccupiedFeedback = new BoolFeedback(RoomIsOccupiedFeedbackFunc);
|
||||||
|
|
||||||
OccSensor.GlsOccupancySensorChange += new GlsOccupancySensorChangeEventHandler(sensor_GlsOccupancySensorChange);
|
OccSensor.GlsOccupancySensorChange += new GlsOccupancySensorChangeEventHandler(sensor_GlsOccupancySensorChange);
|
||||||
|
|||||||
881
Essentials/PepperDashEssentials/ClassDiagram1.cd
Normal file
881
Essentials/PepperDashEssentials/ClassDiagram1.cd
Normal file
@@ -0,0 +1,881 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<ClassDiagram MajorVersion="1" MinorVersion="1">
|
||||||
|
<Class Name="PepperDash.Essentials.EssentialsRoomVolumesConfig" Collapsed="true">
|
||||||
|
<Position X="19.25" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAQAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAIAgA=</HashCode>
|
||||||
|
<FileName>Audio\EssentialsVolumeLevelConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.EssentialsVolumeLevelConfig" Collapsed="true">
|
||||||
|
<Position X="22.75" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAEAAAAAAAAAAAAAAAAIAAAAgBAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Audio\EssentialsVolumeLevelConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.ConfigReader" Collapsed="true">
|
||||||
|
<Position X="26.25" Y="0.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAIAAAAAAAABAAAACAAIAAAAQAAAAAAAAAAEAA=</HashCode>
|
||||||
|
<FileName>Config\ConfigReader.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.DeviceFactory" Collapsed="true">
|
||||||
|
<Position X="29.75" Y="1.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Config\DeviceFactory.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.EssentialsConfig" Collapsed="true">
|
||||||
|
<Position X="33.25" Y="1.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAEAAAAAQAIAAAAAAAACAAAAAAAAAAAAAAEAAAA=</HashCode>
|
||||||
|
<FileName>Config\EssentialsConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.SystemTemplateConfigs" Collapsed="true">
|
||||||
|
<Position X="33.25" Y="7.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Config\EssentialsConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.ConfigTieLine" Collapsed="true">
|
||||||
|
<Position X="31.5" Y="0.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAgEAAAAAAEAAAAAAAAAAAAAAAAAAAAAEAIAIA=</HashCode>
|
||||||
|
<FileName>Configuration ORIGINAL\ConfigTieLine.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Configuration" Collapsed="true">
|
||||||
|
<Position X="33.25" Y="0.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AEAAAAAAAAAAgQAAAAAAgAAAAAAAAAAAAAAgEDAADAQ=</HashCode>
|
||||||
|
<FileName>Configuration ORIGINAL\Configuration.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.ConfigSourceList" Collapsed="true">
|
||||||
|
<Position X="29.75" Y="0.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAQAAAAAAAQAAACAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Configuration ORIGINAL\Configuration.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.ConfigSourceItem" Collapsed="true">
|
||||||
|
<Position X="28" Y="0.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAgAAAAAAAEAAAAAAAAAAAAAAAAAgAAAAAAA=</HashCode>
|
||||||
|
<FileName>Configuration ORIGINAL\Configuration.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.ConfigInfo" Collapsed="true">
|
||||||
|
<Position X="24.5" Y="0.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>IQAAAAAEAAAAAAADAAACABQAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Configuration ORIGINAL\Configuration.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.SourceListConfigProperties" Collapsed="true">
|
||||||
|
<Position X="24.5" Y="7.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAgAAAIAAA=</HashCode>
|
||||||
|
<FileName>Configuration ORIGINAL\ConfigurationHelpers.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.DmFactory" Collapsed="true">
|
||||||
|
<Position X="31.5" Y="1.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAQAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Configuration ORIGINAL\Factories\DmFactory.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.FactoryHelper" Collapsed="true">
|
||||||
|
<Position X="26.25" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAEDAAKAA=</HashCode>
|
||||||
|
<FileName>Configuration ORIGINAL\Factories\FactoryHelper.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.IrOutPortConfig" Collapsed="true">
|
||||||
|
<Position X="31.5" Y="4.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAABAAAA=</HashCode>
|
||||||
|
<FileName>Configuration ORIGINAL\Factories\FactoryHelper.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.ControlSystem" Collapsed="true">
|
||||||
|
<Position X="35" Y="0.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAoAgAAIAEAACAAEAIEIBICAAAAAAABAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>ControlSystem.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Amplifier" Collapsed="true" BaseTypeListCollapsed="true">
|
||||||
|
<Position X="21" Y="0.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA=</HashCode>
|
||||||
|
<FileName>Devices\Amplifier.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" Collapsed="true" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.CotijaConfig" Collapsed="true">
|
||||||
|
<Position X="19.25" Y="1.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Cotija\CotijaConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.CotijaDdvc01RoomBridgePropertiesConfig" Collapsed="true">
|
||||||
|
<Position X="22.75" Y="1.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Cotija\CotijaConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.CotijaSystemController" Collapsed="true">
|
||||||
|
<Position X="24.5" Y="1.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>CAAABAABAgACCAKGBIAAEyBAFAAACYSAgIAAAAJkAAA=</HashCode>
|
||||||
|
<FileName>Room\Cotija\CotijaSystemController.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.CotijaBridgeBase" Collapsed="true">
|
||||||
|
<Position X="9.5" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAQIQAAAAAAAAgAAAAAAQAAAAAAAAAAAAAAAABAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Cotija\RoomBridges\CotijaBridgeBase.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.CotijaEssentialsHuddleSpaceRoomBridge" Collapsed="true">
|
||||||
|
<Position X="8.25" Y="5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAIAAAAIABAAkgAABgIAAAAAAAAAEAAAAAAgBAAACA=</HashCode>
|
||||||
|
<FileName>Room\Cotija\RoomBridges\CotijaEssentialsHuddleSpaceRoomBridge.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.SourceSelectMessageContent" Collapsed="true">
|
||||||
|
<Position X="26.25" Y="7.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Cotija\RoomBridges\CotijaEssentialsHuddleSpaceRoomBridge.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.EssentialsHuddleSpaceRoom" Collapsed="true">
|
||||||
|
<Position X="0.5" Y="9" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>iQFBQAIAAgAAgQAEQACAMABAAABAACAQUAAQAAgCgBA=</HashCode>
|
||||||
|
<FileName>Room\Types\EssentialsHuddleSpaceRoom.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.EssentialsHuddleVtc1Room" Collapsed="true">
|
||||||
|
<Position X="2.75" Y="9" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>iQFBQAIAIgQMgQAEQAigMABAAABAADIwUACQAAgCgTE=</HashCode>
|
||||||
|
<FileName>Room\Types\EssentialsHuddleVtc1Room.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.EssentialsPresentationRoom" Collapsed="true">
|
||||||
|
<Position X="5" Y="9" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>iQAEAAIACkAAAQAOQASgMAAJAABgAAAQQAAQAAgCgBA=</HashCode>
|
||||||
|
<FileName>Room\Types\EssentialsPresentationRoom.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.EssentialsRoomBase" Collapsed="true">
|
||||||
|
<Position X="2.75" Y="7.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>gQAAEAICECgCAQAEAAAUIwIyAAAAgACiAgAAAQECAgA=</HashCode>
|
||||||
|
<FileName>Room\Types\EssentialsRoomBase.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.CrestronTouchpanelPropertiesConfig" Collapsed="true">
|
||||||
|
<Position X="26.25" Y="1.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AICCIAAIGIAAAAAgCAAIAEAAAAAAAAAAAAEAIAAAAAA=</HashCode>
|
||||||
|
<FileName>UI\CrestronTouchpanelPropertiesConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.UiSetupPropertiesConfig" Collapsed="true">
|
||||||
|
<Position X="19.25" Y="8.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>UI\CrestronTouchpanelPropertiesConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.EssentialsTouchpanelController" Collapsed="true">
|
||||||
|
<Position X="21" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAIAEAAAAAAAAAAAAAAAAEAAAAACKIBAAgACAAAAAA=</HashCode>
|
||||||
|
<FileName>UI\EssentialsTouchpanelController.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.HttpLogoServer" Collapsed="true">
|
||||||
|
<Position X="19.25" Y="4.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAQAAAACAAAAABAAAAAAAAAABAAAAAAAAAAkAAAAA=</HashCode>
|
||||||
|
<FileName>UI\HttpLogoServer.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.UIBoolJoin" Collapsed="true">
|
||||||
|
<Position X="35" Y="7.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>j+jWCNqEIGzi4UTaTgyn37kpncQJK7L42VMLmMgTE5A=</HashCode>
|
||||||
|
<FileName>UI\JoinConstants\UIBoolJoin.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.UISmartObjectJoin" Collapsed="true">
|
||||||
|
<Position X="21" Y="8.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>BAggBIABCQAAGAAQAAAACAACAAAAAAAAAAIAAAAAAAA=</HashCode>
|
||||||
|
<FileName>UI\JoinConstants\UISmartObjectJoin.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.UIStringJoin" Collapsed="true">
|
||||||
|
<Position X="22.75" Y="8.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>BkBgIAgAAggOQAFGAYQIABACgCEBjkSQAUEAASIABCE=</HashCode>
|
||||||
|
<FileName>UI\JoinConstants\UIStringlJoin.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.UIUshortJoin" Collapsed="true">
|
||||||
|
<Position X="24.5" Y="8.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAQAAAACAAAACAEAAIAAAAAAIABAIAAAABAAAEAAAAA=</HashCode>
|
||||||
|
<FileName>UI\JoinConstants\UIUshortJoin.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.SubpageReferenceListActivityItem" Collapsed="true">
|
||||||
|
<Position X="28" Y="7.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA=</HashCode>
|
||||||
|
<FileName>UI\SubpageReferenceListActivityItem.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.SubpageReferenceListButtonAndModeItem" Collapsed="true">
|
||||||
|
<Position X="29.75" Y="7.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA=</HashCode>
|
||||||
|
<FileName>UI\SubpageReferenceListCallStagingItem.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.SubpageReferenceListSourceItem" Collapsed="true">
|
||||||
|
<Position X="31.5" Y="7.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAABAAAAAAAAAAAAAAAAAAAAgAAAAACAAAAAABgAAA=</HashCode>
|
||||||
|
<FileName>UI\SubpageReferenceListSourceItem.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.PanelDriverBase" Collapsed="true">
|
||||||
|
<Position X="8.75" Y="0.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>CAAIkAAAAAAQEAAAEAACAAAAAIAEABAAAgAACAAAAAA=</HashCode>
|
||||||
|
<FileName>UIDrivers\enums and base.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.EssentialsPanelMainInterfaceDriver" Collapsed="true">
|
||||||
|
<Position X="1" Y="1.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>ABAAAAAAAhgAAAAAEAAAAAAAAIAEAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>UIDrivers\Essentials\EssentialsPanelMainInterfaceDriver.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.EssentialsPresentationPanelAvFunctionsDriver" Collapsed="true">
|
||||||
|
<Position X="3.25" Y="1.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>gTEAIIAiCggFNCQ4EA4AWBkAKJCEqAAOS4CKMAQQJQA=</HashCode>
|
||||||
|
<FileName>UIDrivers\Essentials\EssentialsPresentationPanelAvFunctionsDriver.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.EssentialsHuddlePanelAvFunctionsDriver" Collapsed="true">
|
||||||
|
<Position X="7.75" Y="1.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>gRQAIICuAghENHQpEA4IWCkBMJDEsEAEC4CAMARQIBA=</HashCode>
|
||||||
|
<FileName>UIDrivers\EssentialsHuddle\EssentialsHuddlePanelAvFunctionsDriver.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.EssentialsHuddleVtc1PanelAvFunctionsDriver" Collapsed="true">
|
||||||
|
<Position X="12.25" Y="1.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>GRwAIYC+oghAeHStEDAIWCdBMADEsBAcDwCAMARYIBg=</HashCode>
|
||||||
|
<FileName>UIDrivers\EssentialsHuddleVTC\EssentialsHuddleVtc1PanelAvFunctionsDriver.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.JoinedSigInterlock" Collapsed="true">
|
||||||
|
<Position X="19.25" Y="5.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAQgAIAAAAAAAAAEAAAAAQAAAAEAAAAAAAAEAAAgAA=</HashCode>
|
||||||
|
<FileName>UIDrivers\JoinedSigInterlock.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.SingleSubpageModalAndBackDriver" Collapsed="true">
|
||||||
|
<Position X="14.5" Y="1.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAEAAAQAAABIAEAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>UIDrivers\Page Drivers\SingleSubpageModalAndBackDriver.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.SingleSubpageModalDriver" Collapsed="true">
|
||||||
|
<Position X="16.75" Y="1.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAEAAAAAAABAAEAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>UIDrivers\Page Drivers\SingleSubpageModalDriver.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.SigInterlock" Collapsed="true">
|
||||||
|
<Position X="19.25" Y="7.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAQAAIAAAAAAAAIEAAAAAAAAAAEAAAAAAAAEAAAgAA=</HashCode>
|
||||||
|
<FileName>UIDrivers\SigInterlock.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.SmartObjectRoomsList" Collapsed="true">
|
||||||
|
<Position X="21" Y="7.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAACAAACBAAAAAAAAAAAAAAAAAAAAIAAAAAAQA=</HashCode>
|
||||||
|
<FileName>UIDrivers\SmartObjectRoomsList.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.SmartObjectRoomsListItem" Collapsed="true">
|
||||||
|
<Position X="22.75" Y="7.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAQAAAAAAAAAAAABAAQAAAAAAAAAACAAEAAAAAAAA=</HashCode>
|
||||||
|
<FileName>UIDrivers\SmartObjectRoomsList.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.VolumeDeviceChangeEventArgs" Collapsed="true">
|
||||||
|
<Position X="26.25" Y="8.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAABAAAAAEAAAAAAAAAAAAAAAAAAAQAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>UIDrivers\VolumeAndSourceChangeArgs.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.EssentialsHuddleSpaceFusionSystemControllerBase" Collapsed="true">
|
||||||
|
<Position X="8.25" Y="9.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>IAGigRBpCgZwAIMSBBIbIgAAImAPtEBiAAgECpJgKQo=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\EssentialsHuddleSpaceFusionSystemControllerBase.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.FusionRoomExtensions" Collapsed="true">
|
||||||
|
<Position X="31.5" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAACgAIQAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\EssentialsHuddleSpaceFusionSystemControllerBase.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.FusionStaticAssetExtensions" Collapsed="true">
|
||||||
|
<Position X="35" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\EssentialsHuddleSpaceFusionSystemControllerBase.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.EssentialsHuddleVtc1FusionController" Collapsed="true">
|
||||||
|
<Position X="8.25" Y="11" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AACAAAAAAgAAAIAAAAAAAAAgIBAQAAAAAAAAAAAAAQA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\EssentialsHuddleVtc1FusionController.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.ScheduleChangeEventArgs" Collapsed="true">
|
||||||
|
<Position X="33.25" Y="6.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionEventHandlers.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.MeetingChangeEventArgs" Collapsed="true">
|
||||||
|
<Position X="26.25" Y="5.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionEventHandlers.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.ProcessorProgReg" Collapsed="true">
|
||||||
|
<Position X="19.25" Y="6.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionProcessorQueries.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.ProcessorProgramItem" Collapsed="true">
|
||||||
|
<Position X="35" Y="5.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAEAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionProcessorQueries.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.FusionRoomGuids" Collapsed="true">
|
||||||
|
<Position X="33.25" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAICAAAAAAAAAAAAAAAAAACAAAATQAAAAAAAABAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionRviDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.FusionOccupancySensorAsset" Collapsed="true">
|
||||||
|
<Position X="29.75" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAQAQAAAAAAAAQAAAAAAQAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionRviDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.FusionAsset" Collapsed="true">
|
||||||
|
<Position X="28" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAQAQAAAAAAAAQAAAAAAQAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionRviDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.RoomSchedule" Collapsed="true">
|
||||||
|
<Position X="31.5" Y="6.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionRviDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.LocalTimeRequest" Collapsed="true">
|
||||||
|
<Position X="24.5" Y="5.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionRviDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.RequestSchedule" Collapsed="true">
|
||||||
|
<Position X="22.75" Y="6.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAACACAAAAQAAAAAAAAAAAAAAAAAAAACAAAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionRviDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.RequestAction" Collapsed="true">
|
||||||
|
<Position X="21" Y="6.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAACAAAgAAQAAAAAAAAAAAAAAAAAAIAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionRviDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.ActionResponse" Collapsed="true">
|
||||||
|
<Position X="19.25" Y="0.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAgAAQAAAAAAAAAAAAAAAAAAIAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionRviDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.Parameter" Collapsed="true">
|
||||||
|
<Position X="33.25" Y="5.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAgAAAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionRviDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.ScheduleResponse" Collapsed="true">
|
||||||
|
<Position X="35" Y="6.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAACAAAAAAQAAAAAAAAAAgAAAAAAAAAAABAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionRviDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.Event" Collapsed="true">
|
||||||
|
<Position X="24.5" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AABCAAAAYEAAEBIBAIAAJAQAQKAYAAAIEAAAEAACCgg=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionRviDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.Resources" Collapsed="true">
|
||||||
|
<Position X="26.25" Y="6.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionRviDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.Rooms" Collapsed="true">
|
||||||
|
<Position X="29.75" Y="6.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionRviDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.Room" Collapsed="true">
|
||||||
|
<Position X="28" Y="6.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAgAAAAAAAAAQAAAAAAAAAAAAAAAAEAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionRviDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.Attendees" Collapsed="true">
|
||||||
|
<Position X="22.75" Y="0.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAABAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionRviDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.Required" Collapsed="true">
|
||||||
|
<Position X="24.5" Y="6.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionRviDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.Optional" Collapsed="true">
|
||||||
|
<Position X="31.5" Y="5.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionRviDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.MeetingType" Collapsed="true">
|
||||||
|
<Position X="28" Y="5.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAgAAAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionRviDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.MeetingTypes" Collapsed="true">
|
||||||
|
<Position X="29.75" Y="5.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionRviDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.LiveMeeting" Collapsed="true">
|
||||||
|
<Position X="21" Y="5.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAgAQAAIAAAAAAACAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionRviDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Fusion.LiveMeetingURL" Collapsed="true">
|
||||||
|
<Position X="22.75" Y="5.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>OTHER\Fusion\FusionRviDataClasses.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Config.DDVC01RoomPropertiesConfig" Collapsed="true">
|
||||||
|
<Position X="5" Y="6.25" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAIAgAAQAAAAAAAAEAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Config\DDVC01RoomPropertiesConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Config.DDVC01SpeedDial" Collapsed="true">
|
||||||
|
<Position X="28" Y="1.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAEAAAAQAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Config\DDVC01RoomPropertiesConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Config.EssentialsHuddleRoomPropertiesConfig" Collapsed="true">
|
||||||
|
<Position X="2.75" Y="4.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAgAAAAAAAAAAACAAAAAABAAAAAAAAABA=</HashCode>
|
||||||
|
<FileName>Room\Config\EssentialsHuddleRoomPropertiesConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Config.EssentialsHuddleVtc1PropertiesConfig" Collapsed="true">
|
||||||
|
<Position X="5" Y="4.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAgAAAAAAAAAAACIAAAAABAAAAAAAAABA=</HashCode>
|
||||||
|
<FileName>Room\Config\EssentialsHuddleVtc1PropertiesConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Config.EssentialsPresentationRoomPropertiesConfig" Collapsed="true">
|
||||||
|
<Position X="0.5" Y="4.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAACAIAAAAAAAAAAABAACAAAAAABAAAAAAAAABA=</HashCode>
|
||||||
|
<FileName>Room\Config\EssentialsPresentationPropertiesConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Config.EssentialsRoomConfig" Collapsed="true">
|
||||||
|
<Position X="26.25" Y="2.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAEAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Config\EssentialsRoomConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Config.EssentialsRoomPropertiesConfig" Collapsed="true">
|
||||||
|
<Position X="2.75" Y="3.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AABAEQAAAAEoAAEEAAQAAAACAAAAAAgggAAAAQAAAgA=</HashCode>
|
||||||
|
<FileName>Room\Config\EssentialsRoomConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Config.EssentialsLightingPropertiesConfig" Collapsed="true">
|
||||||
|
<Position X="19.25" Y="2.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Config\EssentialsRoomConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Config.EssentialsRoomMicrophonePrivacyConfig" Collapsed="true">
|
||||||
|
<Position X="31.5" Y="2.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAEAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Config\EssentialsRoomConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Config.EssentialsHelpPropertiesConfig" Collapsed="true">
|
||||||
|
<Position X="35" Y="1.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAgABAAAAAIAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Config\EssentialsRoomConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Config.EssentialsOneButtonMeetingPropertiesConfig" Collapsed="true">
|
||||||
|
<Position X="22.75" Y="2.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Config\EssentialsRoomConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Config.EssentialsRoomAddressPropertiesConfig" Collapsed="true">
|
||||||
|
<Position X="24.5" Y="2.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Config\EssentialsRoomConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Config.EssentialsLogoPropertiesConfig" Collapsed="true">
|
||||||
|
<Position X="21" Y="2.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIACQAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Config\EssentialsRoomConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Config.EssentialsRoomOccSensorConfig" Collapsed="true">
|
||||||
|
<Position X="33.25" Y="2.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AACAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Config\EssentialsRoomConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Config.EssentialsRoomTechConfig" Collapsed="true">
|
||||||
|
<Position X="35" Y="2.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Config\EssentialsRoomConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Config.EssentialsRoomEmergencyConfig" Collapsed="true">
|
||||||
|
<Position X="28" Y="2.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAABAACAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Config\EssentialsRoomEmergencyConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Config.EssentialsRoomEmergencyTriggerConfig" Collapsed="true">
|
||||||
|
<Position X="29.75" Y="2.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAABQAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Config\EssentialsRoomEmergencyConfig.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Cotija.CotijaDdvc01DeviceBridge" Collapsed="true" BaseTypeListCollapsed="true">
|
||||||
|
<Position X="21" Y="1.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AUAAAAgAAAACwAYAAAAAAAEAAAAAAAAAIcAAAEAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Cotija\CotijaDdvc01DeviceBridge.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" Collapsed="true" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Cotija.IChannelExtensions" Collapsed="true">
|
||||||
|
<Position X="21" Y="4.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAACAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Cotija\DeviceTypeInterfaces\IChannelExtensions.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Cotija.IColorExtensions" Collapsed="true">
|
||||||
|
<Position X="22.75" Y="4.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAACAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Cotija\DeviceTypeInterfaces\IColorExtensions.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Cotija.IDPadExtensions" Collapsed="true">
|
||||||
|
<Position X="24.5" Y="4.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAACAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Cotija\DeviceTypeInterfaces\IDPadExtensions.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Cotija.IDvrExtensions" Collapsed="true">
|
||||||
|
<Position X="26.25" Y="4.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAACAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Cotija\DeviceTypeInterfaces\IDvrExtensions.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Cotija.INumericExtensions" Collapsed="true">
|
||||||
|
<Position X="28" Y="4.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAACAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Cotija\DeviceTypeInterfaces\INumericExtensions.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Cotija.IPowerExtensions" Collapsed="true">
|
||||||
|
<Position X="29.75" Y="4.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAACAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Cotija\DeviceTypeInterfaces\IPowerExtensions.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Cotija.ISetTopBoxControlsExtensions" Collapsed="true">
|
||||||
|
<Position X="33.25" Y="4.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAACAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Cotija\DeviceTypeInterfaces\ISetTopBoxControlsExtensions.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Cotija.ITransportExtensions" Collapsed="true">
|
||||||
|
<Position X="35" Y="4.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAACAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Cotija\DeviceTypeInterfaces\ITransportExtensions.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.Cotija.CotijaDdvc01RoomBridge" Collapsed="true">
|
||||||
|
<Position X="10.5" Y="5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>gACIAAAAAAICAFAAAACAAAEIIAAAAAQAQAAAABAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Cotija\RoomBridges\CotijaDdvc01RoomBridge.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.EssentialsRoomEmergencyBase" Collapsed="true">
|
||||||
|
<Position X="8.25" Y="6.5" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Emergency\EsentialsRoomEmergencyContactClosure.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
<Lollipop Position="0.2" />
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.Room.EssentialsRoomEmergencyContactClosure" Collapsed="true">
|
||||||
|
<Position X="8.25" Y="7.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAASBAAAAAAAAAAAAAABAAAAAAAEAA=</HashCode>
|
||||||
|
<FileName>Room\Emergency\EsentialsRoomEmergencyContactClosure.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.UIDrivers.EssentialsHuddleTechPageDriver" Collapsed="true">
|
||||||
|
<Position X="5.5" Y="1.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAQAAAAAiACDAAAGCAACgAIAABECBAgQAAAAQAAAAA=</HashCode>
|
||||||
|
<FileName>UIDrivers\EssentialsHuddle\EssentialsHuddleTechPageDriver.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Class Name="PepperDash.Essentials.UIDrivers.VC.EssentialsVideoCodecUiDriver" Collapsed="true">
|
||||||
|
<Position X="10" Y="1.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>XAASAoAiAagwAcBAGAUURWQEOHQFAKCmAABCNSSEDPA=</HashCode>
|
||||||
|
<FileName>UIDrivers\VC\EssentialsVideoCodecUiDriver.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Class>
|
||||||
|
<Interface Name="PepperDash.Essentials.IHasCurrentSourceInfoChange" Collapsed="true">
|
||||||
|
<Position X="22.75" Y="9.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Types\EssentialsRoomBase.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Interface Name="PepperDash.Essentials.IAVDriver" Collapsed="true">
|
||||||
|
<Position X="19.25" Y="9.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAgAAAAAAAAACBAAACAAAAIBAAAEAAAEAgAAAAAAIAA=</HashCode>
|
||||||
|
<FileName>UIDrivers\EssentialsHuddleVTC\EssentialsHuddleVtc1PanelAvFunctionsDriver.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Interface Name="PepperDash.Essentials.Room.Cotija.IDelayedConfiguration" Collapsed="true">
|
||||||
|
<Position X="21" Y="9.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Cotija\Interfaces.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Interface>
|
||||||
|
<Enum Name="PepperDash.Essentials.eShutdownType" Collapsed="true">
|
||||||
|
<Position X="29.75" Y="10.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAQAAAAAAACAAAAAAAAAAAAAAAAAAAAAEACAA=</HashCode>
|
||||||
|
<FileName>Room\Types\EssentialsRoomBase.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Enum>
|
||||||
|
<Enum Name="PepperDash.Essentials.eVacancyMode" Collapsed="true">
|
||||||
|
<Position X="31.5" Y="10.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAACAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAA=</HashCode>
|
||||||
|
<FileName>Room\Types\EssentialsRoomBase.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Enum>
|
||||||
|
<Enum Name="PepperDash.Essentials.eWarmingCoolingMode" Collapsed="true">
|
||||||
|
<Position X="33.25" Y="10.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAIEAAAA=</HashCode>
|
||||||
|
<FileName>Room\Types\EssentialsRoomBase.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Enum>
|
||||||
|
<Enum Name="PepperDash.Essentials.eAvSubpageType" Collapsed="true">
|
||||||
|
<Position X="24.5" Y="10.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AIAAAAAAAAAAAAAAAhBAAAAAAAAAAACYAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>UIDrivers\enums and base.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Enum>
|
||||||
|
<Enum Name="PepperDash.Essentials.eAvSourceSubpageType" Collapsed="true">
|
||||||
|
<Position X="22.75" Y="10.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAABAAAAAAAAAAAAAAACAAAEAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>UIDrivers\enums and base.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Enum>
|
||||||
|
<Enum Name="PepperDash.Essentials.eCommonSubpageType" Collapsed="true">
|
||||||
|
<Position X="28" Y="10.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAEAAAAAAAAAIAAAAAAAAQAAAAQAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>UIDrivers\enums and base.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Enum>
|
||||||
|
<Enum Name="PepperDash.Essentials.eAvSmartObjects" Collapsed="true">
|
||||||
|
<Position X="21" Y="10.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAABAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>UIDrivers\enums and base.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Enum>
|
||||||
|
<Enum Name="PepperDash.Essentials.eCommonSmartObjects" Collapsed="true">
|
||||||
|
<Position X="26.25" Y="10.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>UIDrivers\enums and base.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Enum>
|
||||||
|
<Enum Name="PepperDash.Essentials.ChangeType" Collapsed="true">
|
||||||
|
<Position X="19.25" Y="10.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAgCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>UIDrivers\VolumeAndSourceChangeArgs.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Enum>
|
||||||
|
<Delegate Name="PepperDash.Essentials.PressAndHoldAction" Collapsed="true">
|
||||||
|
<Position X="19.25" Y="11.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||||
|
<FileName>Room\Cotija\RoomBridges\CotijaEssentialsHuddleSpaceRoomBridge.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Delegate>
|
||||||
|
<Delegate Name="PepperDash.Essentials.SourceInfoChangeHandler" Collapsed="true">
|
||||||
|
<Position X="21" Y="11.75" Width="1.5" />
|
||||||
|
<TypeIdentifier>
|
||||||
|
<HashCode>AAAAAAAAAAAAACAAACAAAAAAAAAAAAAAAAAAACAAAAA=</HashCode>
|
||||||
|
<FileName>UIDrivers\VolumeAndSourceChangeArgs.cs</FileName>
|
||||||
|
</TypeIdentifier>
|
||||||
|
</Delegate>
|
||||||
|
<Font Name="Segoe UI" Size="9" />
|
||||||
|
</ClassDiagram>
|
||||||
@@ -5,6 +5,7 @@ using Crestron.SimplSharp.CrestronIO;
|
|||||||
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.Config;
|
using PepperDash.Essentials.Core.Config;
|
||||||
|
|
||||||
namespace PepperDash.Essentials
|
namespace PepperDash.Essentials
|
||||||
@@ -18,14 +19,16 @@ namespace PepperDash.Essentials
|
|||||||
|
|
||||||
public static bool LoadConfig2()
|
public static bool LoadConfig2()
|
||||||
{
|
{
|
||||||
Debug.Console(0, "Loading unmerged system/template portal configuration file.");
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Loading unmerged system/template portal configuration file.");
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var filePath = string.Format(@"\NVRAM\program{0}\ConfigurationFile.json",
|
var filePath = Global.FilePathPrefix + "configurationFile.json";
|
||||||
InitialParametersClass.ApplicationNumber);
|
|
||||||
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Attempting to load config file: '{0}'", filePath);
|
||||||
|
|
||||||
if (!File.Exists(filePath))
|
if (!File.Exists(filePath))
|
||||||
{
|
{
|
||||||
Debug.Console(0,
|
Debug.Console(0, Debug.ErrorLogLevel.Error,
|
||||||
"ERROR: Configuration file not present. Please load file to {0} and reset program", filePath);
|
"ERROR: Configuration file not present. Please load file to {0} and reset program", filePath);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -47,11 +50,14 @@ namespace PepperDash.Essentials
|
|||||||
ConfigObject.TemplateUrl= doubleObj["template_url"].Value<string>();
|
ConfigObject.TemplateUrl= doubleObj["template_url"].Value<string>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Successfully Loaded Merged Config");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
Debug.Console(0, "ERROR: Config load failed: \r{0}", e);
|
Debug.Console(0, Debug.ErrorLogLevel.Error, "ERROR: Config load failed: \r{0}", e);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ namespace PepperDash.Essentials
|
|||||||
{
|
{
|
||||||
public static class FactoryHelper
|
public static class FactoryHelper
|
||||||
{
|
{
|
||||||
public static string IrDriverPathPrefix = @"\NVRAM\IR\";
|
public static string IrDriverPathPrefix = Global.FilePathPrefix + "IR" + Global.DirectorySeparator;
|
||||||
|
|
||||||
public static void HandleUnknownType(JToken devToken, string type)
|
public static void HandleUnknownType(JToken devToken, string type)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -32,6 +32,11 @@ namespace PepperDash.Essentials
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public override void InitializeSystem()
|
public override void InitializeSystem()
|
||||||
{
|
{
|
||||||
|
DeterminePlatform();
|
||||||
|
|
||||||
|
//CrestronConsole.AddNewConsoleCommand(s => GoWithLoad(), "go", "Loads configuration file",
|
||||||
|
// ConsoleAccessLevelEnum.AccessOperator);
|
||||||
|
|
||||||
CrestronConsole.AddNewConsoleCommand(s =>
|
CrestronConsole.AddNewConsoleCommand(s =>
|
||||||
{
|
{
|
||||||
foreach (var tl in TieLineCollection.Default)
|
foreach (var tl in TieLineCollection.Default)
|
||||||
@@ -57,6 +62,46 @@ namespace PepperDash.Essentials
|
|||||||
GoWithLoad();
|
GoWithLoad();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Determines if the program is running on a processor (appliance) or server (XiO Edge).
|
||||||
|
///
|
||||||
|
/// Sets Global.FilePathPrefix based on platform
|
||||||
|
/// </summary>
|
||||||
|
public void DeterminePlatform()
|
||||||
|
{
|
||||||
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Determining Platform....");
|
||||||
|
|
||||||
|
string filePathPrefix;
|
||||||
|
|
||||||
|
var dirSeparator = Global.DirectorySeparator;
|
||||||
|
|
||||||
|
var version = Crestron.SimplSharp.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
|
||||||
|
|
||||||
|
var versionString = string.Format("{0}.{1}.{2}", version.Major, version.Minor, version.Build);
|
||||||
|
|
||||||
|
string directoryPrefix;
|
||||||
|
|
||||||
|
//directoryPrefix = Crestron.SimplSharp.CrestronIO.Directory.GetApplicationRootDirectory();
|
||||||
|
#warning ^ For use with beta Include4.dat for XiO Edge
|
||||||
|
directoryPrefix = "";
|
||||||
|
|
||||||
|
if (CrestronEnvironment.DevicePlatform != eDevicePlatform.Server)
|
||||||
|
{
|
||||||
|
filePathPrefix = directoryPrefix + dirSeparator + "NVRAM"
|
||||||
|
+ dirSeparator + string.Format("program{0}", InitialParametersClass.ApplicationNumber) + dirSeparator;
|
||||||
|
|
||||||
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Starting Essentials v{0} on 3-series Appliance", versionString);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
filePathPrefix = directoryPrefix + dirSeparator + "User" + dirSeparator;
|
||||||
|
|
||||||
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Starting Essentials v{0} on XiO Edge Server", versionString);
|
||||||
|
}
|
||||||
|
|
||||||
|
Global.SetFilePathPrefix(filePathPrefix);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Do it, yo
|
/// Do it, yo
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -68,18 +113,17 @@ namespace PepperDash.Essentials
|
|||||||
ConsoleAccessLevelEnum.AccessOperator);
|
ConsoleAccessLevelEnum.AccessOperator);
|
||||||
|
|
||||||
//PortalSync = new PepperDashPortalSyncClient();
|
//PortalSync = new PepperDashPortalSyncClient();
|
||||||
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Starting Essentials load from configuration");
|
||||||
Debug.Console(0, "Starting Essentials load from configuration");
|
|
||||||
|
|
||||||
var filesReady = SetupFilesystem();
|
var filesReady = SetupFilesystem();
|
||||||
if (filesReady)
|
if (filesReady)
|
||||||
{
|
{
|
||||||
Debug.Console(0, "Folder structure verified. Loading config...");
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Folder structure verified. Loading config...");
|
||||||
if (!ConfigReader.LoadConfig2())
|
if (!ConfigReader.LoadConfig2())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Load();
|
Load();
|
||||||
Debug.Console(0, "Essentials load complete\r" +
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Essentials load complete\r" +
|
||||||
"-------------------------------------------------------------");
|
"-------------------------------------------------------------");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -109,17 +153,16 @@ namespace PepperDash.Essentials
|
|||||||
bool SetupFilesystem()
|
bool SetupFilesystem()
|
||||||
{
|
{
|
||||||
Debug.Console(0, "Verifying and/or creating folder structure");
|
Debug.Console(0, "Verifying and/or creating folder structure");
|
||||||
var appNum = InitialParametersClass.ApplicationNumber;
|
var configDir = Global.FilePathPrefix;
|
||||||
var configDir = @"\NVRAM\Program" + appNum;
|
|
||||||
var configExists = Directory.Exists(configDir);
|
var configExists = Directory.Exists(configDir);
|
||||||
if (!configExists)
|
if (!configExists)
|
||||||
Directory.Create(configDir);
|
Directory.Create(configDir);
|
||||||
|
|
||||||
var irDir = string.Format(@"\NVRAM\Program{0}\ir", appNum);
|
var irDir = Global.FilePathPrefix + "ir";
|
||||||
if (!Directory.Exists(irDir))
|
if (!Directory.Exists(irDir))
|
||||||
Directory.Create(irDir);
|
Directory.Create(irDir);
|
||||||
|
|
||||||
var sgdDir = string.Format(@"\NVRAM\Program{0}\sgd", appNum);
|
var sgdDir = Global.FilePathPrefix + "sgd";
|
||||||
if (!Directory.Exists(sgdDir))
|
if (!Directory.Exists(sgdDir))
|
||||||
Directory.Create(sgdDir);
|
Directory.Create(sgdDir);
|
||||||
|
|
||||||
@@ -172,7 +215,7 @@ namespace PepperDash.Essentials
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Debug.Console(0, "Creating device '{0}'", devConf.Key);
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Creating device '{0}'", devConf.Key);
|
||||||
// Skip this to prevent unnecessary warnings
|
// Skip this to prevent unnecessary warnings
|
||||||
if (devConf.Key == "processor")
|
if (devConf.Key == "processor")
|
||||||
continue;
|
continue;
|
||||||
@@ -191,13 +234,15 @@ namespace PepperDash.Essentials
|
|||||||
if (newDev != null)
|
if (newDev != null)
|
||||||
DeviceManager.AddDevice(newDev);
|
DeviceManager.AddDevice(newDev);
|
||||||
else
|
else
|
||||||
Debug.Console(0, "ERROR: Cannot load unknown device type '{0}', key '{1}'.", devConf.Type, devConf.Key);
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "ERROR: Cannot load unknown device type '{0}', key '{1}'.", devConf.Type, devConf.Key);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
Debug.Console(0, "ERROR: Creating device {0}. Skipping device. \r{1}", devConf.Key, e);
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "ERROR: Creating device {0}. Skipping device. \r{1}", devConf.Key, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "All Devices Loaded.");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -221,6 +266,9 @@ namespace PepperDash.Essentials
|
|||||||
if (newTL != null)
|
if (newTL != null)
|
||||||
tlc.Add(newTL);
|
tlc.Add(newTL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "All Tie Lines Loaded.");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -230,7 +278,7 @@ namespace PepperDash.Essentials
|
|||||||
{
|
{
|
||||||
if (ConfigReader.ConfigObject.Rooms == null)
|
if (ConfigReader.ConfigObject.Rooms == null)
|
||||||
{
|
{
|
||||||
Debug.Console(0, "WARNING: Configuration contains no rooms");
|
Debug.Console(0, Debug.ErrorLogLevel.Warning, "WARNING: Configuration contains no rooms");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -243,31 +291,38 @@ namespace PepperDash.Essentials
|
|||||||
{
|
{
|
||||||
DeviceManager.AddDevice(room);
|
DeviceManager.AddDevice(room);
|
||||||
|
|
||||||
Debug.Console(1, "Room is EssentialsHuddleSpaceRoom, attempting to add to DeviceManager with Fusion");
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Room is EssentialsHuddleSpaceRoom, attempting to add to DeviceManager with Fusion");
|
||||||
DeviceManager.AddDevice(new EssentialsHuddleSpaceFusionSystemControllerBase((EssentialsHuddleSpaceRoom)room, 0xf1));
|
DeviceManager.AddDevice(new EssentialsHuddleSpaceFusionSystemControllerBase((EssentialsHuddleSpaceRoom)room, 0xf1));
|
||||||
|
|
||||||
|
|
||||||
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Attempting to build Cotija Bridge...");
|
||||||
// Cotija bridge
|
// Cotija bridge
|
||||||
var bridge = new CotijaEssentialsHuddleSpaceRoomBridge(room as EssentialsHuddleSpaceRoom);
|
var bridge = new CotijaEssentialsHuddleSpaceRoomBridge(room as EssentialsHuddleSpaceRoom);
|
||||||
AddBridgePostActivationHelper(bridge); // Lets things happen later when all devices are present
|
AddBridgePostActivationHelper(bridge); // Lets things happen later when all devices are present
|
||||||
DeviceManager.AddDevice(bridge);
|
DeviceManager.AddDevice(bridge);
|
||||||
|
|
||||||
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Cotija Bridge Added...");
|
||||||
}
|
}
|
||||||
else if (room is EssentialsHuddleVtc1Room)
|
else if (room is EssentialsHuddleVtc1Room)
|
||||||
{
|
{
|
||||||
DeviceManager.AddDevice(room);
|
DeviceManager.AddDevice(room);
|
||||||
|
|
||||||
Debug.Console(1, "Room is EssentialsHuddleVtc1Room, attempting to add to DeviceManager with Fusion");
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Room is EssentialsHuddleVtc1Room, attempting to add to DeviceManager with Fusion");
|
||||||
DeviceManager.AddDevice(new EssentialsHuddleVtc1FusionController((EssentialsHuddleVtc1Room)room, 0xf1));
|
DeviceManager.AddDevice(new EssentialsHuddleVtc1FusionController((EssentialsHuddleVtc1Room)room, 0xf1));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Debug.Console(1, "Room is NOT EssentialsHuddleSpaceRoom, attempting to add to DeviceManager w/o Fusion");
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Room is NOT EssentialsHuddleSpaceRoom, attempting to add to DeviceManager w/o Fusion");
|
||||||
DeviceManager.AddDevice(room);
|
DeviceManager.AddDevice(room);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Debug.Console(0, "WARNING: Cannot create room from config, key '{0}'", roomConfig.Key);
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "WARNING: Cannot create room from config, key '{0}'", roomConfig.Key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "All Rooms Loaded.");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -296,11 +351,11 @@ namespace PepperDash.Essentials
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
LogoServer = new HttpLogoServer(8080, @"\html\logo");
|
LogoServer = new HttpLogoServer(8080, Global.FilePathPrefix + "html" + Global.DirectorySeparator + "logo");
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
Debug.Console(0, "NOTICE: Logo server cannot be started. Likely already running in another program");
|
Debug.Console(0, Debug.ErrorLogLevel.Notice, "NOTICE: Logo server cannot be started. Likely already running in another program");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,11 +30,7 @@ namespace PepperDash.Essentials
|
|||||||
}
|
}
|
||||||
else if (dc.Group.ToLower() == "touchpanel") // typeName.StartsWith("tsw"))
|
else if (dc.Group.ToLower() == "touchpanel") // typeName.StartsWith("tsw"))
|
||||||
{
|
{
|
||||||
var comm = CommFactory.GetControlPropertiesConfig(dc);
|
return UiDeviceFactory.GetUiDevice(dc);
|
||||||
|
|
||||||
var props = JsonConvert.DeserializeObject<CrestronTouchpanelPropertiesConfig>(
|
|
||||||
properties.ToString());
|
|
||||||
return new EssentialsTouchpanelController(key, name, typeName, props, comm.IpIdInt);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (typeName == "mockdisplay")
|
else if (typeName == "mockdisplay")
|
||||||
@@ -92,4 +88,5 @@ namespace PepperDash.Essentials
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
162
Essentials/PepperDashEssentials/Factory/UiDeviceFactory.cs
Normal file
162
Essentials/PepperDashEssentials/Factory/UiDeviceFactory.cs
Normal file
@@ -0,0 +1,162 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
using Crestron.SimplSharpPro;
|
||||||
|
using Crestron.SimplSharpPro.DeviceSupport;
|
||||||
|
using Crestron.SimplSharpPro.UI;
|
||||||
|
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
using PepperDash.Core;
|
||||||
|
using PepperDash.Essentials.Core;
|
||||||
|
using PepperDash.Essentials.Core.Config;
|
||||||
|
using PepperDash.Essentials.Core.PageManagers;
|
||||||
|
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials
|
||||||
|
{
|
||||||
|
public class UiDeviceFactory
|
||||||
|
{
|
||||||
|
public static IKeyed GetUiDevice(DeviceConfig config)
|
||||||
|
{
|
||||||
|
var comm = CommFactory.GetControlPropertiesConfig(config);
|
||||||
|
|
||||||
|
var props = JsonConvert.DeserializeObject<CrestronTouchpanelPropertiesConfig>(config.Properties.ToString());
|
||||||
|
|
||||||
|
EssentialsTouchpanelController 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.CurrentRoom = room as EssentialsHuddleSpaceRoom;
|
||||||
|
avDriver.DefaultRoomKey = props.DefaultRoomKey;
|
||||||
|
mainDriver.AvDriver = avDriver;
|
||||||
|
|
||||||
|
// Environment Driver
|
||||||
|
if (avDriver.CurrentRoom.Config.Environment != null && avDriver.CurrentRoom.Config.Environment.DeviceKeys.Count > 0)
|
||||||
|
{
|
||||||
|
Debug.Console(0, panelController, "Adding environment driver");
|
||||||
|
mainDriver.EnvironmentDriver = new EssentialsEnvironmentDriver(mainDriver, props);
|
||||||
|
|
||||||
|
mainDriver.EnvironmentDriver.GetDevicesFromConfig(avDriver.CurrentRoom.Config.Environment);
|
||||||
|
}
|
||||||
|
|
||||||
|
mainDriver.HeaderDriver.SetupHeaderButtons(avDriver, avDriver.CurrentRoom);
|
||||||
|
|
||||||
|
panelController.LoadAndShowDriver(mainDriver); // This is a little convoluted.
|
||||||
|
|
||||||
|
if (panelController.Panel is TswFt5ButtonSystem)
|
||||||
|
{
|
||||||
|
var tsw = panelController.Panel as TswFt5ButtonSystem;
|
||||||
|
// Wire up hard keys
|
||||||
|
tsw.Power.UserObject = new Action<bool>(b => { if (!b) avDriver.PowerButtonPressed(); });
|
||||||
|
//tsw.Home.UserObject = new Action<bool>(b => { if (!b) HomePressed(); });
|
||||||
|
if(mainDriver.EnvironmentDriver != null)
|
||||||
|
tsw.Lights.UserObject = new Action<bool>(b =>
|
||||||
|
{
|
||||||
|
if (!b)
|
||||||
|
{
|
||||||
|
//mainDriver.AvDriver.PopupInterlock.ShowInterlockedWithToggle(mainDriver.EnvironmentDriver.BackgroundSubpageJoin);
|
||||||
|
mainDriver.EnvironmentDriver.Toggle();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
tsw.Up.UserObject = new Action<bool>(avDriver.VolumeUpPress);
|
||||||
|
tsw.Down.UserObject = new Action<bool>(avDriver.VolumeDownPress);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//else if (room is EssentialsPresentationRoom)
|
||||||
|
//{
|
||||||
|
// Debug.Console(0, panelController, "Adding presentation room driver");
|
||||||
|
// var avDriver = new EssentialsPresentationPanelAvFunctionsDriver(mainDriver, props);
|
||||||
|
// avDriver.CurrentRoom = room as EssentialsPresentationRoom;
|
||||||
|
// avDriver.DefaultRoomKey = props.DefaultRoomKey;
|
||||||
|
// mainDriver.AvDriver = avDriver ;
|
||||||
|
// mainDriver.HeaderDriver = new EssentialsHeaderDriver(mainDriver, props);
|
||||||
|
// panelController.LoadAndShowDriver(mainDriver);
|
||||||
|
|
||||||
|
// if (panelController.Panel is TswFt5ButtonSystem)
|
||||||
|
// {
|
||||||
|
// var tsw = panelController.Panel as TswFt5ButtonSystem;
|
||||||
|
// // Wire up hard keys
|
||||||
|
// tsw.Power.UserObject = new Action<bool>(b => { if (!b) avDriver.PowerButtonPressed(); });
|
||||||
|
// //tsw.Home.UserObject = new Action<bool>(b => { if (!b) HomePressed(); });
|
||||||
|
// tsw.Up.UserObject = new Action<bool>(avDriver.VolumeUpPress);
|
||||||
|
// tsw.Down.UserObject = new Action<bool>(avDriver.VolumeDownPress);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
else if (room is EssentialsHuddleVtc1Room)
|
||||||
|
{
|
||||||
|
Debug.Console(0, panelController, "Adding huddle space VTC AV driver");
|
||||||
|
|
||||||
|
// Header Driver
|
||||||
|
mainDriver.HeaderDriver = new EssentialsHeaderDriver(mainDriver, props);
|
||||||
|
|
||||||
|
// AV Driver
|
||||||
|
var avDriver = new EssentialsHuddleVtc1PanelAvFunctionsDriver(mainDriver, props);
|
||||||
|
|
||||||
|
var codecDriver = new PepperDash.Essentials.UIDrivers.VC.EssentialsVideoCodecUiDriver(panelController.Panel, avDriver,
|
||||||
|
(room as EssentialsHuddleVtc1Room).VideoCodec, mainDriver.HeaderDriver);
|
||||||
|
avDriver.SetVideoCodecDriver(codecDriver);
|
||||||
|
avDriver.CurrentRoom = room as EssentialsHuddleVtc1Room;
|
||||||
|
avDriver.DefaultRoomKey = props.DefaultRoomKey;
|
||||||
|
mainDriver.AvDriver = avDriver;
|
||||||
|
|
||||||
|
// Environment Driver
|
||||||
|
if (avDriver.CurrentRoom.Config.Environment != null && avDriver.CurrentRoom.Config.Environment.DeviceKeys.Count > 0)
|
||||||
|
{
|
||||||
|
Debug.Console(0, panelController, "Adding environment driver");
|
||||||
|
mainDriver.EnvironmentDriver = new EssentialsEnvironmentDriver(mainDriver, props);
|
||||||
|
|
||||||
|
mainDriver.EnvironmentDriver.GetDevicesFromConfig(avDriver.CurrentRoom.Config.Environment);
|
||||||
|
}
|
||||||
|
|
||||||
|
mainDriver.HeaderDriver.SetupHeaderButtons(avDriver, avDriver.CurrentRoom);
|
||||||
|
|
||||||
|
panelController.LoadAndShowDriver(mainDriver); // This is a little convoluted.
|
||||||
|
|
||||||
|
if (panelController.Panel is TswFt5ButtonSystem)
|
||||||
|
{
|
||||||
|
var tsw = panelController.Panel as TswFt5ButtonSystem;
|
||||||
|
// Wire up hard keys
|
||||||
|
tsw.Power.UserObject = new Action<bool>(b => { if (!b) avDriver.EndMeetingPress(); });
|
||||||
|
//tsw.Home.UserObject = new Action<bool>(b => { if (!b) HomePressed(); });
|
||||||
|
if (mainDriver.EnvironmentDriver != null)
|
||||||
|
tsw.Lights.UserObject = new Action<bool>(b =>
|
||||||
|
{
|
||||||
|
if (!b)
|
||||||
|
{
|
||||||
|
//mainDriver.AvDriver.PopupInterlock.ShowInterlockedWithToggle(mainDriver.EnvironmentDriver.BackgroundSubpageJoin);
|
||||||
|
mainDriver.EnvironmentDriver.Toggle();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
tsw.Up.UserObject = new Action<bool>(avDriver.VolumeUpPress);
|
||||||
|
tsw.Down.UserObject = new Action<bool>(avDriver.VolumeDownPress);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Console(0, panelController, "ERROR: Cannot load AvFunctionsDriver for room '{0}'", props.DefaultRoomKey);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return panelController;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -128,6 +128,9 @@ namespace PepperDash.Essentials.Fusion
|
|||||||
: base(room.Key + "-fusion")
|
: base(room.Key + "-fusion")
|
||||||
{
|
{
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
|
||||||
Room = room;
|
Room = room;
|
||||||
|
|
||||||
IpId = ipId;
|
IpId = ipId;
|
||||||
@@ -140,17 +143,20 @@ namespace PepperDash.Essentials.Fusion
|
|||||||
|
|
||||||
var slot = Global.ControlSystem.ProgramNumber;
|
var slot = Global.ControlSystem.ProgramNumber;
|
||||||
|
|
||||||
string guidFilePath = string.Format(@"\NVRAM\Program{0}\{1}-FusionGuids.json", Global.ControlSystem.ProgramNumber, InitialParametersClass.ProgramIDTag);
|
string guidFilePath = Global.FilePathPrefix + string.Format(@"{0}-FusionGuids.json", InitialParametersClass.ProgramIDTag);
|
||||||
|
|
||||||
GuidFileExists = File.Exists(guidFilePath);
|
GuidFileExists = File.Exists(guidFilePath);
|
||||||
|
|
||||||
if (GuidFileExists)
|
// Check if file exists
|
||||||
|
if (!GuidFileExists)
|
||||||
{
|
{
|
||||||
ReadGuidFile(guidFilePath);
|
// Does not exist. Create GUIDs
|
||||||
|
GUIDs = new FusionRoomGuids(Room.Name, ipId, GUIDs.GenerateNewRoomGuid(slot, mac), FusionStaticAssets);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GUIDs = new FusionRoomGuids(Room.Name, ipId, GUIDs.GenerateNewRoomGuid(slot, mac), FusionStaticAssets);
|
// Exists. Read GUIDs
|
||||||
|
ReadGuidFile(guidFilePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
CreateSymbolAndBasicSigs(IpId);
|
CreateSymbolAndBasicSigs(IpId);
|
||||||
@@ -160,9 +166,9 @@ namespace PepperDash.Essentials.Fusion
|
|||||||
SetUpError();
|
SetUpError();
|
||||||
ExecuteCustomSteps();
|
ExecuteCustomSteps();
|
||||||
|
|
||||||
if(Room.RoomOccupancy != null)
|
if (Room.RoomOccupancy != null)
|
||||||
{
|
{
|
||||||
if(Room.OccupancyStatusProviderIsRemote)
|
if (Room.OccupancyStatusProviderIsRemote)
|
||||||
SetUpRemoteOccupancy();
|
SetUpRemoteOccupancy();
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -175,6 +181,11 @@ namespace PepperDash.Essentials.Fusion
|
|||||||
|
|
||||||
GenerateGuidFile(guidFilePath);
|
GenerateGuidFile(guidFilePath);
|
||||||
}
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.Console(0, this, Debug.ErrorLogLevel.Error, "Error Building Fusion System Controller: {0}", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Used for extension classes to execute whatever steps are necessary before generating the RVI and GUID files
|
/// Used for extension classes to execute whatever steps are necessary before generating the RVI and GUID files
|
||||||
@@ -242,7 +253,7 @@ namespace PepperDash.Essentials.Fusion
|
|||||||
{
|
{
|
||||||
if(string.IsNullOrEmpty(filePath))
|
if(string.IsNullOrEmpty(filePath))
|
||||||
{
|
{
|
||||||
Debug.Console(0, this, "Error reading guid file. No path specified.");
|
Debug.Console(0, this, Debug.ErrorLogLevel.Notice, "Error reading guid file. No path specified.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -267,18 +278,18 @@ namespace PepperDash.Essentials.Fusion
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Debug.Console(0, this, "Fusion Guids successfully read from file:");
|
Debug.Console(0, this, Debug.ErrorLogLevel.Notice, "Fusion Guids successfully read from file: {0}", filePath);
|
||||||
|
|
||||||
Debug.Console(1, this, "\nRoom Name: {0}\nIPID: {1:x}\n RoomGuid: {2}", Room.Name, IpId, RoomGuid);
|
Debug.Console(1, this, "\nRoom Name: {0}\nIPID: {1:x}\n RoomGuid: {2}", Room.Name, IpId, RoomGuid);
|
||||||
|
|
||||||
foreach (KeyValuePair<int, FusionAsset> item in FusionStaticAssets)
|
foreach (var item in FusionStaticAssets)
|
||||||
{
|
{
|
||||||
Debug.Console(1, this, "\nAsset Name: {0}\nAsset No: {1}\n Guid: {2}", item.Value.Name, item.Value.SlotNumber, item.Value.InstanceId);
|
Debug.Console(1, this, "\nAsset Name: {0}\nAsset No: {1}\n Guid: {2}", item.Value.Name, item.Value.SlotNumber, item.Value.InstanceId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
Debug.Console(0, this, "Error reading guid file: {0}", e);
|
Debug.Console(0, this, Debug.ErrorLogLevel.Notice, "Error reading guid file: {0}", e);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
@@ -290,7 +301,7 @@ namespace PepperDash.Essentials.Fusion
|
|||||||
|
|
||||||
protected virtual void CreateSymbolAndBasicSigs(uint ipId)
|
protected virtual void CreateSymbolAndBasicSigs(uint ipId)
|
||||||
{
|
{
|
||||||
Debug.Console(1, this, "Creating Fusion Room symbol with GUID: {0}", RoomGuid);
|
Debug.Console(0, this, Debug.ErrorLogLevel.Notice, "Creating Fusion Room symbol with GUID: {0}", RoomGuid);
|
||||||
|
|
||||||
FusionRoom = new FusionRoom(ipId, Global.ControlSystem, Room.Name, RoomGuid);
|
FusionRoom = new FusionRoom(ipId, Global.ControlSystem, Room.Name, RoomGuid);
|
||||||
FusionRoom.ExtenderRoomViewSchedulingDataReservedSigs.Use();
|
FusionRoom.ExtenderRoomViewSchedulingDataReservedSigs.Use();
|
||||||
@@ -392,32 +403,21 @@ namespace PepperDash.Essentials.Fusion
|
|||||||
|
|
||||||
protected void GetProcessorInfo()
|
protected void GetProcessorInfo()
|
||||||
{
|
{
|
||||||
//SystemName = FusionRoom.CreateOffsetStringSig(50, "Info - Processor - System Name", eSigIoMask.InputSigOnly);
|
|
||||||
//Model = FusionRoom.CreateOffsetStringSig(51, "Info - Processor - Model", eSigIoMask.InputSigOnly);
|
|
||||||
//SerialNumber = FusionRoom.CreateOffsetStringSig(52, "Info - Processor - Serial Number", eSigIoMask.InputSigOnly);
|
|
||||||
//Uptime = FusionRoom.CreateOffsetStringSig(53, "Info - Processor - Uptime", eSigIoMask.InputSigOnly);
|
|
||||||
|
|
||||||
Firmware = FusionRoom.CreateOffsetStringSig(61, "Info - Processor - Firmware", eSigIoMask.InputSigOnly);
|
Firmware = FusionRoom.CreateOffsetStringSig(61, "Info - Processor - Firmware", eSigIoMask.InputSigOnly);
|
||||||
|
|
||||||
|
if (CrestronEnvironment.DevicePlatform != eDevicePlatform.Server)
|
||||||
|
{
|
||||||
for (int i = 0; i < Global.ControlSystem.NumProgramsSupported; i++)
|
for (int i = 0; i < Global.ControlSystem.NumProgramsSupported; i++)
|
||||||
{
|
{
|
||||||
var join = 62 + i;
|
var join = 62 + i;
|
||||||
var progNum = i + 1;
|
var progNum = i + 1;
|
||||||
Program[i] = FusionRoom.CreateOffsetStringSig((uint)join, string.Format("Info - Processor - Program {0}", progNum), eSigIoMask.InputSigOnly);
|
Program[i] = FusionRoom.CreateOffsetStringSig((uint)join, string.Format("Info - Processor - Program {0}", progNum), eSigIoMask.InputSigOnly);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Firmware.InputSig.StringValue = InitialParametersClass.FirmwareVersion;
|
Firmware.InputSig.StringValue = InitialParametersClass.FirmwareVersion;
|
||||||
|
|
||||||
//var programs = ProcessorProgReg.GetProcessorProgReg();
|
|
||||||
|
|
||||||
//for (int i = 1; i < Global.ControlSystem.NumProgramsSupported; i++)
|
|
||||||
//{
|
|
||||||
// var join = 62 + i;
|
|
||||||
// var progNum = i + 1;
|
|
||||||
// if (programs[i].Exists)
|
|
||||||
// Program[i].InputSig.StringValue = programs[i].Name;
|
|
||||||
//}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GetTouchpanelInfo()
|
void GetTouchpanelInfo()
|
||||||
|
|||||||
19857
Essentials/PepperDashEssentials/PepperDash Essentials TSW-760.sgd
Normal file
19857
Essentials/PepperDashEssentials/PepperDash Essentials TSW-760.sgd
Normal file
File diff suppressed because it is too large
Load Diff
@@ -125,11 +125,12 @@
|
|||||||
<Compile Include="Configuration ORIGINAL\Factories\FactoryHelper.cs" />
|
<Compile Include="Configuration ORIGINAL\Factories\FactoryHelper.cs" />
|
||||||
<Compile Include="Config\ConfigReader.cs" />
|
<Compile Include="Config\ConfigReader.cs" />
|
||||||
<Compile Include="Config\EssentialsConfig.cs" />
|
<Compile Include="Config\EssentialsConfig.cs" />
|
||||||
<Compile Include="Config\DeviceFactory.cs" />
|
<Compile Include="Factory\DeviceFactory.cs" />
|
||||||
<Compile Include="Devices\Amplifier.cs" />
|
<Compile Include="Devices\Amplifier.cs" />
|
||||||
<Compile Include="Devices\DiscPlayer\OppoExtendedBdp.cs" />
|
<Compile Include="Devices\DiscPlayer\OppoExtendedBdp.cs" />
|
||||||
<Compile Include="Devices\NUMERIC AppleTV.cs" />
|
<Compile Include="Devices\NUMERIC AppleTV.cs" />
|
||||||
<Compile Include="ControlSystem.cs" />
|
<Compile Include="ControlSystem.cs" />
|
||||||
|
<Compile Include="Factory\UiDeviceFactory.cs" />
|
||||||
<Compile Include="OTHER\Fusion\EssentialsHuddleVtc1FusionController.cs" />
|
<Compile Include="OTHER\Fusion\EssentialsHuddleVtc1FusionController.cs" />
|
||||||
<Compile Include="OTHER\Fusion\FusionEventHandlers.cs" />
|
<Compile Include="OTHER\Fusion\FusionEventHandlers.cs" />
|
||||||
<Compile Include="OTHER\Fusion\FusionProcessorQueries.cs" />
|
<Compile Include="OTHER\Fusion\FusionProcessorQueries.cs" />
|
||||||
@@ -168,6 +169,10 @@
|
|||||||
<Compile Include="FOR REFERENCE UI\PageControllers\PageControllerLargeSetTopBoxGeneric.cs" />
|
<Compile Include="FOR REFERENCE UI\PageControllers\PageControllerLargeSetTopBoxGeneric.cs" />
|
||||||
<Compile Include="FOR REFERENCE UI\PageControllers\LargeTouchpanelControllerBase.cs" />
|
<Compile Include="FOR REFERENCE UI\PageControllers\LargeTouchpanelControllerBase.cs" />
|
||||||
<Compile Include="FOR REFERENCE UI\Panels\SmartGraphicsTouchpanelControllerBase.cs" />
|
<Compile Include="FOR REFERENCE UI\Panels\SmartGraphicsTouchpanelControllerBase.cs" />
|
||||||
|
<Compile Include="UIDrivers\Environment Drivers\EssentialsLightingDriver.cs" />
|
||||||
|
<Compile Include="UIDrivers\Environment Drivers\EssentialsEnvironmentDriver.cs" />
|
||||||
|
<Compile Include="UIDrivers\Environment Drivers\EssentialsShadeDriver.cs" />
|
||||||
|
<Compile Include="UIDrivers\Essentials\EssentialsHeaderDriver.cs" />
|
||||||
<Compile Include="UIDrivers\SigInterlock.cs" />
|
<Compile Include="UIDrivers\SigInterlock.cs" />
|
||||||
<Compile Include="UIDrivers\EssentialsHuddleVTC\EssentialsHuddlePresentationUiDriver.cs" />
|
<Compile Include="UIDrivers\EssentialsHuddleVTC\EssentialsHuddlePresentationUiDriver.cs" />
|
||||||
<Compile Include="UIDrivers\EssentialsHuddle\EssentialsHuddleTechPageDriver.cs" />
|
<Compile Include="UIDrivers\EssentialsHuddle\EssentialsHuddleTechPageDriver.cs" />
|
||||||
|
|||||||
@@ -4,4 +4,5 @@
|
|||||||
[assembly: AssemblyCompany("PepperDash Technology Corp")]
|
[assembly: AssemblyCompany("PepperDash Technology Corp")]
|
||||||
[assembly: AssemblyProduct("PepperDashEssentials")]
|
[assembly: AssemblyProduct("PepperDashEssentials")]
|
||||||
[assembly: AssemblyCopyright("Copyright © PepperDash Technology Corp 2017")]
|
[assembly: AssemblyCopyright("Copyright © PepperDash Technology Corp 2017")]
|
||||||
[assembly: AssemblyVersion("1.1.8.*")]
|
[assembly: AssemblyVersion("1.3.0.*")]
|
||||||
|
|
||||||
|
|||||||
@@ -194,8 +194,8 @@ namespace PepperDash.Essentials.Room.Config
|
|||||||
[JsonProperty("helpMessage")]
|
[JsonProperty("helpMessage")]
|
||||||
public string HelpMessage { get; set; }
|
public string HelpMessage { get; set; }
|
||||||
|
|
||||||
[JsonProperty("lighting")]
|
[JsonProperty("environment")]
|
||||||
public EssentialsLightingPropertiesConfig Lighting { get; set; }
|
public EssentialsEnvironmentPropertiesConfig Environment { get; set; }
|
||||||
|
|
||||||
[JsonProperty("logo")]
|
[JsonProperty("logo")]
|
||||||
public EssentialsLogoPropertiesConfig Logo { get; set; }
|
public EssentialsLogoPropertiesConfig Logo { get; set; }
|
||||||
@@ -225,9 +225,18 @@ namespace PepperDash.Essentials.Room.Config
|
|||||||
public bool ZeroVolumeWhenSwtichingVolumeDevices { get; set; }
|
public bool ZeroVolumeWhenSwtichingVolumeDevices { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class EssentialsLightingPropertiesConfig
|
public class EssentialsEnvironmentPropertiesConfig
|
||||||
{
|
{
|
||||||
public bool Enabled { get; set; }
|
public bool Enabled { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("deviceKeys")]
|
||||||
|
public List<string> DeviceKeys { get; set; }
|
||||||
|
|
||||||
|
public EssentialsEnvironmentPropertiesConfig()
|
||||||
|
{
|
||||||
|
DeviceKeys = new List<string>();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class EssentialsRoomMicrophonePrivacyConfig
|
public class EssentialsRoomMicrophonePrivacyConfig
|
||||||
|
|||||||
@@ -339,7 +339,7 @@ namespace PepperDash.Essentials.Room.Cotija
|
|||||||
rmProps.Help.CallButtonText = EISC.StringOutput[503].StringValue;
|
rmProps.Help.CallButtonText = EISC.StringOutput[503].StringValue;
|
||||||
rmProps.Help.Message = EISC.StringOutput[502].StringValue;
|
rmProps.Help.Message = EISC.StringOutput[502].StringValue;
|
||||||
|
|
||||||
rmProps.Lighting = new EssentialsLightingPropertiesConfig(); // enabled defaults to false
|
rmProps.Environment = new EssentialsEnvironmentPropertiesConfig(); // enabled defaults to false
|
||||||
|
|
||||||
rmProps.RoomPhoneNumber = EISC.StringOutput[504].StringValue;
|
rmProps.RoomPhoneNumber = EISC.StringOutput[504].StringValue;
|
||||||
rmProps.RoomURI = EISC.StringOutput[505].StringValue;
|
rmProps.RoomURI = EISC.StringOutput[505].StringValue;
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ using PepperDash.Essentials.Devices.Common.VideoCodec;
|
|||||||
|
|
||||||
namespace PepperDash.Essentials
|
namespace PepperDash.Essentials
|
||||||
{
|
{
|
||||||
public class EssentialsHuddleVtc1Room : EssentialsRoomBase, IHasCurrentSourceInfoChange, IPrivacy
|
public class EssentialsHuddleVtc1Room : EssentialsRoomBase, IHasCurrentSourceInfoChange, IPrivacy, IHasCurrentVolumeControls
|
||||||
{
|
{
|
||||||
public event EventHandler<VolumeDeviceChangeEventArgs> CurrentVolumeDeviceChange;
|
public event EventHandler<VolumeDeviceChangeEventArgs> CurrentVolumeDeviceChange;
|
||||||
public event SourceInfoChangeHandler CurrentSingleSourceChange;
|
public event SourceInfoChangeHandler CurrentSingleSourceChange;
|
||||||
|
|||||||
@@ -36,9 +36,8 @@ namespace PepperDash.Essentials
|
|||||||
public EssentialsTouchpanelController(string key, string name, string type, CrestronTouchpanelPropertiesConfig props, uint id)
|
public EssentialsTouchpanelController(string key, string name, string type, CrestronTouchpanelPropertiesConfig props, uint id)
|
||||||
: base(key, name)
|
: base(key, name)
|
||||||
{
|
{
|
||||||
AddPostActivationAction(() =>
|
|
||||||
{
|
Debug.Console(0, this, Debug.ErrorLogLevel.Notice, "Creating touchpanel hardware...");
|
||||||
Debug.Console(0, this, "Creating hardware...");
|
|
||||||
type = type.ToLower();
|
type = type.ToLower();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -68,13 +67,13 @@ namespace PepperDash.Essentials
|
|||||||
Panel = new Tsw1060(id, Global.ControlSystem);
|
Panel = new Tsw1060(id, Global.ControlSystem);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Debug.Console(0, this, "WARNING: Cannot create TSW controller with type '{0}'", type);
|
Debug.Console(0, this, Debug.ErrorLogLevel.Notice, "WARNING: Cannot create TSW controller with type '{0}'", type);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
Debug.Console(0, this, "WARNING: Cannot create TSW base class. Panel will not function: {0}", e.Message);
|
Debug.Console(0, this, Debug.ErrorLogLevel.Notice, "WARNING: Cannot create TSW base class. Panel will not function: {0}", e.Message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,17 +84,17 @@ namespace PepperDash.Essentials
|
|||||||
tsw.ExtenderSystemReservedSigs.Use();
|
tsw.ExtenderSystemReservedSigs.Use();
|
||||||
tsw.ExtenderSystemReservedSigs.DeviceExtenderSigChange
|
tsw.ExtenderSystemReservedSigs.DeviceExtenderSigChange
|
||||||
+= ExtenderSystemReservedSigs_DeviceExtenderSigChange;
|
+= ExtenderSystemReservedSigs_DeviceExtenderSigChange;
|
||||||
|
|
||||||
|
tsw.ButtonStateChange += new ButtonEventHandler(Tsw_ButtonStateChange);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//CrestronInvoke.BeginInvoke(o =>
|
if (Panel.Register() != eDeviceRegistrationUnRegistrationResponse.Success)
|
||||||
// {
|
Debug.Console(0, this, Debug.ErrorLogLevel.Notice, "WARNING: Registration failed. Continuing, but panel may not function: {0}", Panel.RegistrationFailureReason);
|
||||||
var regSuccess = Panel.Register();
|
|
||||||
if (regSuccess != eDeviceRegistrationUnRegistrationResponse.Success)
|
|
||||||
Debug.Console(0, this, "WARNING: Registration failed. Continuing, but panel may not function: {0}", regSuccess);
|
|
||||||
|
|
||||||
// Give up cleanly if SGD is not present.
|
// Give up cleanly if SGD is not present.
|
||||||
var sgdName = @"\NVRAM\Program" + InitialParametersClass.ApplicationNumber
|
var sgdName = Global.FilePathPrefix
|
||||||
+ @"\sgd\" + props.SgdFile;
|
+ Global.DirectorySeparator + "sgd" + Global.DirectorySeparator + props.SgdFile;
|
||||||
if (!File.Exists(sgdName))
|
if (!File.Exists(sgdName))
|
||||||
{
|
{
|
||||||
Debug.Console(0, this, "ERROR: Smart object file '{0}' not present. Exiting TSW load", sgdName);
|
Debug.Console(0, this, "ERROR: Smart object file '{0}' not present. Exiting TSW load", sgdName);
|
||||||
@@ -105,80 +104,6 @@ namespace PepperDash.Essentials
|
|||||||
Panel.LoadSmartObjects(sgdName);
|
Panel.LoadSmartObjects(sgdName);
|
||||||
Panel.SigChange += Tsw_SigChange;
|
Panel.SigChange += Tsw_SigChange;
|
||||||
|
|
||||||
var mainDriver = new EssentialsPanelMainInterfaceDriver(Panel, props);
|
|
||||||
// Then the AV driver
|
|
||||||
|
|
||||||
// spin up different room drivers depending on room type
|
|
||||||
var room = DeviceManager.GetDeviceForKey(props.DefaultRoomKey);
|
|
||||||
if (room is EssentialsHuddleSpaceRoom)
|
|
||||||
{
|
|
||||||
Debug.Console(0, this, "Adding huddle space driver");
|
|
||||||
var avDriver = new EssentialsHuddlePanelAvFunctionsDriver(mainDriver, props);
|
|
||||||
avDriver.CurrentRoom = room as EssentialsHuddleSpaceRoom;
|
|
||||||
avDriver.DefaultRoomKey = props.DefaultRoomKey;
|
|
||||||
mainDriver.AvDriver = avDriver;
|
|
||||||
LoadAndShowDriver(mainDriver); // This is a little convoluted.
|
|
||||||
|
|
||||||
if (Panel is TswFt5ButtonSystem)
|
|
||||||
{
|
|
||||||
var tsw = Panel as TswFt5ButtonSystem;
|
|
||||||
// Wire up hard keys
|
|
||||||
tsw.Power.UserObject = new Action<bool>(b => { if (!b) avDriver.PowerButtonPressed(); });
|
|
||||||
//tsw.Home.UserObject = new Action<bool>(b => { if (!b) HomePressed(); });
|
|
||||||
tsw.Up.UserObject = new Action<bool>(avDriver.VolumeUpPress);
|
|
||||||
tsw.Down.UserObject = new Action<bool>(avDriver.VolumeDownPress);
|
|
||||||
tsw.ButtonStateChange += new ButtonEventHandler(Tsw_ButtonStateChange);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (room is EssentialsPresentationRoom)
|
|
||||||
{
|
|
||||||
Debug.Console(0, this, "Adding presentation room driver");
|
|
||||||
var avDriver = new EssentialsPresentationPanelAvFunctionsDriver(mainDriver, props);
|
|
||||||
avDriver.CurrentRoom = room as EssentialsPresentationRoom;
|
|
||||||
avDriver.DefaultRoomKey = props.DefaultRoomKey;
|
|
||||||
mainDriver.AvDriver = avDriver;
|
|
||||||
LoadAndShowDriver(mainDriver);
|
|
||||||
|
|
||||||
if (Panel is TswFt5ButtonSystem)
|
|
||||||
{
|
|
||||||
var tsw = Panel as TswFt5ButtonSystem;
|
|
||||||
// Wire up hard keys
|
|
||||||
tsw.Power.UserObject = new Action<bool>(b => { if (!b) avDriver.PowerButtonPressed(); });
|
|
||||||
//tsw.Home.UserObject = new Action<bool>(b => { if (!b) HomePressed(); });
|
|
||||||
tsw.Up.UserObject = new Action<bool>(avDriver.VolumeUpPress);
|
|
||||||
tsw.Down.UserObject = new Action<bool>(avDriver.VolumeDownPress);
|
|
||||||
tsw.ButtonStateChange += new ButtonEventHandler(Tsw_ButtonStateChange);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (room is EssentialsHuddleVtc1Room)
|
|
||||||
{
|
|
||||||
Debug.Console(0, this, "Adding huddle space driver");
|
|
||||||
var avDriver = new EssentialsHuddleVtc1PanelAvFunctionsDriver(mainDriver, props);
|
|
||||||
var codecDriver = new PepperDash.Essentials.UIDrivers.VC.EssentialsVideoCodecUiDriver(Panel, avDriver,
|
|
||||||
(room as EssentialsHuddleVtc1Room).VideoCodec);
|
|
||||||
avDriver.SetVideoCodecDriver(codecDriver);
|
|
||||||
avDriver.CurrentRoom = room as EssentialsHuddleVtc1Room;
|
|
||||||
avDriver.DefaultRoomKey = props.DefaultRoomKey;
|
|
||||||
mainDriver.AvDriver = avDriver;
|
|
||||||
LoadAndShowDriver(mainDriver); // This is a little convoluted.
|
|
||||||
|
|
||||||
if (Panel is TswFt5ButtonSystem)
|
|
||||||
{
|
|
||||||
var tsw = Panel as TswFt5ButtonSystem;
|
|
||||||
// Wire up hard keys
|
|
||||||
tsw.Power.UserObject = new Action<bool>(b => { if (!b) avDriver.EndMeetingPress(); });
|
|
||||||
//tsw.Home.UserObject = new Action<bool>(b => { if (!b) HomePressed(); });
|
|
||||||
tsw.Up.UserObject = new Action<bool>(avDriver.VolumeUpPress);
|
|
||||||
tsw.Down.UserObject = new Action<bool>(avDriver.VolumeDownPress);
|
|
||||||
tsw.ButtonStateChange += new ButtonEventHandler(Tsw_ButtonStateChange);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Debug.Console(0, this, "ERROR: Cannot load AvFunctionsDriver for room '{0}'", props.DefaultRoomKey);
|
|
||||||
}
|
|
||||||
//}, 0);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadAndShowDriver(PanelDriverBase driver)
|
public void LoadAndShowDriver(PanelDriverBase driver)
|
||||||
|
|||||||
@@ -225,10 +225,114 @@ namespace PepperDash.Essentials
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint VCMinMaxEnable = 1256;
|
public const uint VCMinMaxEnable = 1256;
|
||||||
|
|
||||||
|
// Letter joins start at 2921;
|
||||||
|
|
||||||
//******************************************************
|
//******************************************************
|
||||||
|
|
||||||
// Letter joins start at 2921;
|
// Environment Joins
|
||||||
|
|
||||||
|
// Popup Container
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2001 - 2004
|
||||||
|
/// </summary>
|
||||||
|
public const uint EnvironmentBackgroundSubpageVisibleBase = 2000;
|
||||||
|
|
||||||
|
|
||||||
|
// ColumnOne
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2011 - 2015
|
||||||
|
/// </summary>
|
||||||
|
public const uint EnvironmentColumnOneLightingTypeVisibleBase = 2010;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2016 - 2020
|
||||||
|
/// </summary>
|
||||||
|
public const uint EnvironmentColumnOneShadingTypeVisibleBase = 2015;
|
||||||
|
|
||||||
|
// ColumnTwo
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2021 - 2025
|
||||||
|
/// </summary>
|
||||||
|
public const uint EnvironmentColumnTwoLightingTypeVisibleBase = 2020;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2026 - 2030
|
||||||
|
/// </summary>
|
||||||
|
public const uint EnvironmentColumnTwoShadingTypeVisibleBase = 2025;
|
||||||
|
|
||||||
|
// ColumnThree
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2031 - 2035
|
||||||
|
/// </summary>
|
||||||
|
public const uint EnvironmentColumnThreeLightingTypeVisibleBase = 2030;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2036 - 2040
|
||||||
|
/// </summary>
|
||||||
|
public const uint EnvironmentColumnThreeShadingTypeVisibleBase = 2035;
|
||||||
|
|
||||||
|
// ColumnFour
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2041 - 2045
|
||||||
|
/// </summary>
|
||||||
|
public const uint EnvironmentColumnFourLightingTypeVisibleBase = 2040;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2046 - 2050
|
||||||
|
/// </summary>
|
||||||
|
public const uint EnvironmentColumnFourShadingTypeVisibleBase = 2045;
|
||||||
|
|
||||||
|
// Button press
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2051 - 2060
|
||||||
|
/// </summary>
|
||||||
|
public const uint EnvironmentColumnOneButtonPressBase = 2050;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2061 - 2070
|
||||||
|
/// </summary>
|
||||||
|
public const uint EnvironmentColumnTwoButtonPressBase = 2060;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2071 - 2080
|
||||||
|
/// </summary>
|
||||||
|
public const uint EnvironmentColumnThreeButtonPressBase = 2070;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2081 - 2090
|
||||||
|
/// </summary>
|
||||||
|
public const uint EnvironmentColumnFourButtonPressBase = 2080;
|
||||||
|
|
||||||
|
// Button visibility
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2151 - 2160
|
||||||
|
/// </summary>
|
||||||
|
public const uint EnvironmentColumnOneButtonVisibleBase = 2150;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2161 - 2170
|
||||||
|
/// </summary>
|
||||||
|
public const uint EnvironmentColumnTwoButtonVisibleBase = 2160;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2171 - 2180
|
||||||
|
/// </summary>
|
||||||
|
public const uint EnvironmentColumnThreeButtonVisibleBase = 2170;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2181 - 2190
|
||||||
|
/// </summary>
|
||||||
|
public const uint EnvironmentColumnFourButtonVisibleBase = 2180;
|
||||||
|
|
||||||
|
|
||||||
|
//******************************************************
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 3101
|
/// 3101
|
||||||
@@ -263,7 +367,7 @@ namespace PepperDash.Essentials
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint TechSchedulerVisible = 3112;
|
public const uint TechSchedulerVisible = 3112;
|
||||||
|
|
||||||
//******************************************************
|
//*****************************************************
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 3811
|
/// 3811
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -68,6 +68,34 @@ namespace PepperDash.Essentials
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
//public const uint KeypadText = 2901;
|
//public const uint KeypadText = 2901;
|
||||||
|
|
||||||
|
//******************************************************
|
||||||
|
|
||||||
|
// Environment Joins
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2001 - 2010
|
||||||
|
/// </summary>
|
||||||
|
public const uint EnvironmentColumnOneLabelBase = 2000;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2011 - 2020
|
||||||
|
/// </summary>
|
||||||
|
public const uint EnvironmentColumnTwoLabelBase = 2010;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2021 - 2030
|
||||||
|
/// </summary>
|
||||||
|
public const uint EnvironmentColumnThreeLabelBase = 2020;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 2031 - 2040
|
||||||
|
/// </summary>
|
||||||
|
public const uint EnvironmentColumnFourLabelBase = 2030;
|
||||||
|
|
||||||
|
// 2050, 2060, 2070 and 2080 reserved for column device name labels
|
||||||
|
|
||||||
|
//******************************************************
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 3101 - This is the start of the range 3101 - 3120
|
/// 3101 - This is the start of the range 3101 - 3120
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -0,0 +1,246 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
|
||||||
|
using PepperDash.Core;
|
||||||
|
using PepperDash.Essentials.Core;
|
||||||
|
using PepperDash.Essentials.Core.Config;
|
||||||
|
using PepperDash.Essentials.Core.Shades;
|
||||||
|
using PepperDash.Essentials.Core.Lighting;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials
|
||||||
|
{
|
||||||
|
public class EssentialsEnvironmentDriver : PanelDriverBase
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Do I need this here?
|
||||||
|
/// </summary>
|
||||||
|
CrestronTouchpanelPropertiesConfig Config;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The list of devices this driver is responsible for controlling
|
||||||
|
/// </summary>
|
||||||
|
public List<IKeyed> Devices { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The parent driver for this
|
||||||
|
/// </summary>
|
||||||
|
EssentialsPanelMainInterfaceDriver Parent;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The list of sub drivers for the devices
|
||||||
|
/// </summary>
|
||||||
|
public List<PanelDriverBase> DeviceSubDrivers { get; private set; }
|
||||||
|
|
||||||
|
public uint BackgroundSubpageJoin { get; private set; }
|
||||||
|
|
||||||
|
public EssentialsEnvironmentDriver(EssentialsPanelMainInterfaceDriver parent, CrestronTouchpanelPropertiesConfig config)
|
||||||
|
: base(parent.TriList)
|
||||||
|
{
|
||||||
|
Config = config;
|
||||||
|
Parent = parent;
|
||||||
|
|
||||||
|
Devices = new List<IKeyed>();
|
||||||
|
DeviceSubDrivers = new List<PanelDriverBase>();
|
||||||
|
|
||||||
|
Parent.AvDriver.PopupInterlock.IsShownFeedback.OutputChange += new EventHandler<EventArgs>(IsShownFeedback_OutputChange);
|
||||||
|
|
||||||
|
// Calculate the join offests for each device page and assign join actions for each button
|
||||||
|
}
|
||||||
|
|
||||||
|
void IsShownFeedback_OutputChange(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// Hide this driver and all sub drivers if popup interlock is not shown
|
||||||
|
if (Parent.AvDriver.PopupInterlock.IsShownFeedback.BoolValue == false)
|
||||||
|
{
|
||||||
|
foreach (var driver in DeviceSubDrivers)
|
||||||
|
{
|
||||||
|
driver.Hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
base.Hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Shows this driver and all sub drivers
|
||||||
|
/// </summary>
|
||||||
|
public override void Show()
|
||||||
|
{
|
||||||
|
Parent.AvDriver.PopupInterlock.ShowInterlockedWithToggle(BackgroundSubpageJoin);
|
||||||
|
|
||||||
|
foreach (var driver in DeviceSubDrivers)
|
||||||
|
{
|
||||||
|
driver.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
base.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Hides this driver and all sub drivers
|
||||||
|
/// </summary>
|
||||||
|
public override void Hide()
|
||||||
|
{
|
||||||
|
Parent.AvDriver.PopupInterlock.HideAndClear();
|
||||||
|
|
||||||
|
foreach (var driver in DeviceSubDrivers)
|
||||||
|
{
|
||||||
|
driver.Hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
base.Hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Toggle()
|
||||||
|
{
|
||||||
|
if (IsVisible)
|
||||||
|
Hide();
|
||||||
|
else
|
||||||
|
Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Reads the device keys from the config and gets the devices by key
|
||||||
|
/// </summary>
|
||||||
|
public void GetDevicesFromConfig(Room.Config.EssentialsEnvironmentPropertiesConfig EnvironmentPropertiesConfig)
|
||||||
|
{
|
||||||
|
if (EnvironmentPropertiesConfig != null)
|
||||||
|
{
|
||||||
|
Devices.Clear();
|
||||||
|
DeviceSubDrivers.Clear();
|
||||||
|
|
||||||
|
uint column = 1;
|
||||||
|
|
||||||
|
foreach (var dKey in EnvironmentPropertiesConfig.DeviceKeys)
|
||||||
|
{
|
||||||
|
var device = DeviceManager.GetDeviceForKey(dKey);
|
||||||
|
|
||||||
|
if (device != null)
|
||||||
|
{
|
||||||
|
Devices.Add(device);
|
||||||
|
|
||||||
|
// Build the driver
|
||||||
|
var devicePanelDriver = GetPanelDriverForDevice(device, column);
|
||||||
|
|
||||||
|
// Add new PanelDriverBase SubDriver
|
||||||
|
if (devicePanelDriver != null)
|
||||||
|
DeviceSubDrivers.Add(devicePanelDriver);
|
||||||
|
|
||||||
|
Debug.Console(1, "Adding '{0}' to Environment Devices", device.Key);
|
||||||
|
|
||||||
|
column++;
|
||||||
|
|
||||||
|
// Quit if device count is exceeded
|
||||||
|
if (column > 4)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
SetupEnvironmentUiJoins();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Console(1, "Unable to get devices from config. No EnvironmentPropertiesConfig object in room config");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the appropriate panel driver for the device
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="device"></param>
|
||||||
|
/// <param name="column"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
PanelDriverBase GetPanelDriverForDevice(IKeyed device, uint column)
|
||||||
|
{
|
||||||
|
PanelDriverBase panelDriver = null;
|
||||||
|
|
||||||
|
uint buttonPressJoinBase = 0;
|
||||||
|
uint buttonVisibleJoinBase = 0;
|
||||||
|
uint stringJoinBase = 0;
|
||||||
|
uint shadeTypeVisibleBase = 0;
|
||||||
|
uint lightingTypeVisibleBase = 0;
|
||||||
|
|
||||||
|
switch (column)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
buttonPressJoinBase = UIBoolJoin.EnvironmentColumnOneButtonPressBase;
|
||||||
|
buttonVisibleJoinBase = UIBoolJoin.EnvironmentColumnOneButtonVisibleBase;
|
||||||
|
stringJoinBase = UIStringJoin.EnvironmentColumnOneLabelBase;
|
||||||
|
shadeTypeVisibleBase = UIBoolJoin.EnvironmentColumnOneShadingTypeVisibleBase;
|
||||||
|
lightingTypeVisibleBase = UIBoolJoin.EnvironmentColumnOneLightingTypeVisibleBase;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
buttonPressJoinBase = UIBoolJoin.EnvironmentColumnTwoButtonPressBase;
|
||||||
|
buttonVisibleJoinBase = UIBoolJoin.EnvironmentColumnTwoButtonVisibleBase;
|
||||||
|
stringJoinBase = UIStringJoin.EnvironmentColumnTwoLabelBase;
|
||||||
|
shadeTypeVisibleBase = UIBoolJoin.EnvironmentColumnTwoShadingTypeVisibleBase;
|
||||||
|
lightingTypeVisibleBase = UIBoolJoin.EnvironmentColumnTwoLightingTypeVisibleBase;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
buttonPressJoinBase = UIBoolJoin.EnvironmentColumnThreeButtonPressBase;
|
||||||
|
buttonVisibleJoinBase = UIBoolJoin.EnvironmentColumnThreeButtonVisibleBase;
|
||||||
|
stringJoinBase = UIStringJoin.EnvironmentColumnThreeLabelBase;
|
||||||
|
shadeTypeVisibleBase = UIBoolJoin.EnvironmentColumnThreeShadingTypeVisibleBase;
|
||||||
|
lightingTypeVisibleBase = UIBoolJoin.EnvironmentColumnThreeLightingTypeVisibleBase;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 4:
|
||||||
|
{
|
||||||
|
buttonPressJoinBase = UIBoolJoin.EnvironmentColumnFourButtonPressBase;
|
||||||
|
buttonVisibleJoinBase = UIBoolJoin.EnvironmentColumnFourButtonVisibleBase;
|
||||||
|
stringJoinBase = UIStringJoin.EnvironmentColumnFourLabelBase;
|
||||||
|
shadeTypeVisibleBase = UIBoolJoin.EnvironmentColumnFourShadingTypeVisibleBase;
|
||||||
|
lightingTypeVisibleBase = UIBoolJoin.EnvironmentColumnFourLightingTypeVisibleBase;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
Debug.Console(1, "Environment Driver: Invalid column number specified");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Determine if device is a shade or lighting type and construct the appropriate driver
|
||||||
|
if (device is ShadeBase)
|
||||||
|
{
|
||||||
|
panelDriver = new EssentialsShadeDriver(this, device.Key, buttonPressJoinBase, stringJoinBase, shadeTypeVisibleBase);
|
||||||
|
}
|
||||||
|
else if (device is LightingBase)
|
||||||
|
{
|
||||||
|
panelDriver = new EssentialsLightingDriver(this, device.Key, buttonPressJoinBase, buttonVisibleJoinBase, stringJoinBase, lightingTypeVisibleBase);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the driver
|
||||||
|
|
||||||
|
return panelDriver;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Determines the join values for the generic environment subpages
|
||||||
|
/// </summary>
|
||||||
|
void SetupEnvironmentUiJoins()
|
||||||
|
{
|
||||||
|
// Calculate which background subpage join to use
|
||||||
|
BackgroundSubpageJoin = UIBoolJoin.EnvironmentBackgroundSubpageVisibleBase + (uint)DeviceSubDrivers.Count;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface IEnvironmentSubdriver
|
||||||
|
{
|
||||||
|
uint SubpageVisibleJoin { get; }
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,210 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
|
||||||
|
using PepperDash.Core;
|
||||||
|
using PepperDash.Essentials.Core;
|
||||||
|
using PepperDash.Essentials.Core.Config;
|
||||||
|
using PepperDash.Essentials.Core.Lighting;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Supports a lighting device with up to 6 scenes
|
||||||
|
/// </summary>
|
||||||
|
public class EssentialsLightingDriver : PanelDriverBase, IEnvironmentSubdriver
|
||||||
|
{
|
||||||
|
EssentialsEnvironmentDriver Parent;
|
||||||
|
|
||||||
|
public LightingBase LightingDevice { get; private set; }
|
||||||
|
|
||||||
|
public uint SubpageVisibleJoin { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The base join number that all button visibilty joins are offset from
|
||||||
|
/// </summary>
|
||||||
|
uint ButtonVisibleJoinBase;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The base join number that all button presses are offset from
|
||||||
|
/// </summary>
|
||||||
|
uint ButtonPressJoinBase;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The base join number that all string lables are offset from
|
||||||
|
/// </summary>
|
||||||
|
uint StringJoinBase;
|
||||||
|
|
||||||
|
eLightsDeviceType DeviceType;
|
||||||
|
|
||||||
|
const uint DeviceNameJoinOffset = 50;
|
||||||
|
|
||||||
|
public EssentialsLightingDriver(EssentialsEnvironmentDriver parent, string deviceKey, uint buttonPressJoinBase, uint buttonVisibleJoinBase, uint stringJoinBase, uint subpageVisibleBase)
|
||||||
|
: base(parent.TriList)
|
||||||
|
{
|
||||||
|
Parent = parent;
|
||||||
|
|
||||||
|
ButtonPressJoinBase = buttonPressJoinBase;
|
||||||
|
ButtonVisibleJoinBase = buttonVisibleJoinBase;
|
||||||
|
StringJoinBase = stringJoinBase;
|
||||||
|
|
||||||
|
LightingDevice = DeviceManager.GetDeviceForKey(deviceKey) as LightingBase;
|
||||||
|
|
||||||
|
//LightingDevice.LightingSceneChange += new EventHandler<LightingSceneChangeEventArgs>(LightingDevice_LightingSceneChange);
|
||||||
|
|
||||||
|
SetDeviceType();
|
||||||
|
|
||||||
|
SetSubpageVisibleJoin(subpageVisibleBase);
|
||||||
|
|
||||||
|
SetUpDeviceName();
|
||||||
|
|
||||||
|
SetUpButtonActions();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Handles setting feedback for the currently selected scene button
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
void LightingDevice_LightingSceneChange(object sender, LightingSceneChangeEventArgs e)
|
||||||
|
{
|
||||||
|
uint joinOffset = 1;
|
||||||
|
|
||||||
|
foreach (var scene in LightingDevice.LightingScenes)
|
||||||
|
{
|
||||||
|
if (scene == e.CurrentLightingScene)
|
||||||
|
TriList.SetBool(ButtonPressJoinBase + joinOffset, true);
|
||||||
|
else
|
||||||
|
TriList.SetBool(ButtonPressJoinBase + joinOffset, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Show()
|
||||||
|
{
|
||||||
|
TriList.SetBool(SubpageVisibleJoin, true);
|
||||||
|
|
||||||
|
base.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Hide()
|
||||||
|
{
|
||||||
|
TriList.SetBool(SubpageVisibleJoin, false);
|
||||||
|
|
||||||
|
base.Hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetUpDeviceName()
|
||||||
|
{
|
||||||
|
Parent.TriList.SetString(StringJoinBase + DeviceNameJoinOffset, LightingDevice.Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetDeviceType()
|
||||||
|
{
|
||||||
|
if (LightingDevice is ILightingScenes)
|
||||||
|
DeviceType = eLightsDeviceType.Scenes;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetSubpageVisibleJoin(uint subpageVisibleBase)
|
||||||
|
{
|
||||||
|
SubpageVisibleJoin = subpageVisibleBase + (uint)DeviceType;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Drase
|
||||||
|
/// </summary>
|
||||||
|
void SetUpButtonActions()
|
||||||
|
{
|
||||||
|
if (DeviceType == eLightsDeviceType.Scenes)
|
||||||
|
{
|
||||||
|
uint joinOffset = ComputeJoinOffset();
|
||||||
|
|
||||||
|
// Clear preceding buttons
|
||||||
|
for (uint i = 1; i < joinOffset; i++)
|
||||||
|
{
|
||||||
|
TriList.SetString(StringJoinBase + i, "");
|
||||||
|
TriList.SetSigFalseAction(ButtonPressJoinBase + i, () => { });
|
||||||
|
TriList.SetBool(ButtonVisibleJoinBase + i, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var scene in LightingDevice.LightingScenes)
|
||||||
|
{
|
||||||
|
TriList.SetString(StringJoinBase + joinOffset, scene.Name);
|
||||||
|
var tempScene = scene;
|
||||||
|
TriList.SetSigFalseAction(ButtonPressJoinBase + joinOffset, () => LightingDevice.SelectScene(tempScene));
|
||||||
|
scene.IsActiveFeedback.LinkInputSig(TriList.BooleanInput[ButtonPressJoinBase + joinOffset]);
|
||||||
|
TriList.SetBool(ButtonVisibleJoinBase + joinOffset, true);
|
||||||
|
|
||||||
|
joinOffset++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clear following buttons
|
||||||
|
for (uint i = joinOffset; i <= 6; i++)
|
||||||
|
{
|
||||||
|
TriList.SetString(StringJoinBase + i, "");
|
||||||
|
TriList.SetSigFalseAction(ButtonPressJoinBase + i, () => { });
|
||||||
|
TriList.SetBool(ButtonVisibleJoinBase + i, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Computes the desired join offset to try to achieve the most centered appearance when using a subpage with 6 scene buttons
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
uint ComputeJoinOffset()
|
||||||
|
{
|
||||||
|
uint joinOffset = 0;
|
||||||
|
|
||||||
|
switch (LightingDevice.LightingScenes.Count)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
joinOffset = 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
joinOffset = 3;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
joinOffset = 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 4:
|
||||||
|
{
|
||||||
|
joinOffset = 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 5:
|
||||||
|
{
|
||||||
|
joinOffset = 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 6:
|
||||||
|
{
|
||||||
|
joinOffset = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return joinOffset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enum eLightsDeviceType : uint
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
Scenes = 1,
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,117 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
|
||||||
|
using PepperDash.Core;
|
||||||
|
using PepperDash.Essentials.Core;
|
||||||
|
using PepperDash.Essentials.Core.Config;
|
||||||
|
using PepperDash.Essentials.Core.Shades;
|
||||||
|
using PepperDash.Essentials.Devices.Common.Environment.Somfy;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials
|
||||||
|
{
|
||||||
|
public class EssentialsShadeDriver : PanelDriverBase, IEnvironmentSubdriver
|
||||||
|
{
|
||||||
|
EssentialsEnvironmentDriver Parent;
|
||||||
|
|
||||||
|
public ShadeBase ShadeDevice { get; private set; }
|
||||||
|
|
||||||
|
public uint SubpageVisibleJoin { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The base join number that all button presses are offset from
|
||||||
|
/// </summary>
|
||||||
|
uint ButtonPressJoinBase;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The base join number that all string lables are offset from
|
||||||
|
/// </summary>
|
||||||
|
uint StringJoinBase;
|
||||||
|
|
||||||
|
eShadeDeviceType DeviceType;
|
||||||
|
|
||||||
|
const uint DeviceNameJoinOffset = 50;
|
||||||
|
|
||||||
|
public EssentialsShadeDriver(EssentialsEnvironmentDriver parent, string deviceKey, uint buttonPressJoinBase, uint stringJoinBase, uint subpageVisibleBase)
|
||||||
|
: base(parent.TriList)
|
||||||
|
{
|
||||||
|
Parent = parent;
|
||||||
|
|
||||||
|
ButtonPressJoinBase = buttonPressJoinBase;
|
||||||
|
StringJoinBase = stringJoinBase;
|
||||||
|
|
||||||
|
ShadeDevice = DeviceManager.GetDeviceForKey(deviceKey) as ShadeBase;
|
||||||
|
|
||||||
|
SetDeviceType();
|
||||||
|
|
||||||
|
SetSubpageVisibleJoin(subpageVisibleBase);
|
||||||
|
|
||||||
|
SetUpDeviceName();
|
||||||
|
|
||||||
|
SetUpButtonActions();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Show()
|
||||||
|
{
|
||||||
|
TriList.SetBool(SubpageVisibleJoin, true);
|
||||||
|
|
||||||
|
base.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Hide()
|
||||||
|
{
|
||||||
|
TriList.SetBool(SubpageVisibleJoin, false);
|
||||||
|
|
||||||
|
base.Hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetUpDeviceName()
|
||||||
|
{
|
||||||
|
Parent.TriList.SetString(StringJoinBase + DeviceNameJoinOffset, ShadeDevice.Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetDeviceType()
|
||||||
|
{
|
||||||
|
if (ShadeDevice is IShadesOpenCloseStop)
|
||||||
|
DeviceType = eShadeDeviceType.OpenCloseStop;
|
||||||
|
else if (ShadeDevice is IShadesOpenClose)
|
||||||
|
DeviceType = eShadeDeviceType.OpenClose;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetSubpageVisibleJoin(uint subpageVisibleBase)
|
||||||
|
{
|
||||||
|
SubpageVisibleJoin = subpageVisibleBase + (uint)DeviceType;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetUpButtonActions()
|
||||||
|
{
|
||||||
|
if(DeviceType == eShadeDeviceType.OpenClose)
|
||||||
|
{
|
||||||
|
TriList.SetSigTrueAction(ButtonPressJoinBase + 1, ShadeDevice.Open);
|
||||||
|
|
||||||
|
TriList.SetSigFalseAction(ButtonPressJoinBase + 2, ShadeDevice.Close);
|
||||||
|
}
|
||||||
|
else if(DeviceType == eShadeDeviceType.OpenCloseStop)
|
||||||
|
{
|
||||||
|
TriList.SetSigFalseAction(ButtonPressJoinBase + 1, ShadeDevice.Open);
|
||||||
|
|
||||||
|
TriList.SetSigFalseAction(ButtonPressJoinBase + 2, (ShadeDevice as IShadesOpenCloseStop).StopOrPreset);
|
||||||
|
|
||||||
|
if(ShadeDevice is RelayControlledShade)
|
||||||
|
TriList.SetString(StringJoinBase + 2, (ShadeDevice as RelayControlledShade).StopOrPresetButtonLabel);
|
||||||
|
|
||||||
|
TriList.SetSigFalseAction(ButtonPressJoinBase + 3, ShadeDevice.Close);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enum eShadeDeviceType : uint
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
OpenCloseStop = 1,
|
||||||
|
OpenClose = 2,
|
||||||
|
DiscreteLevel = 3
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,267 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
using Crestron.SimplSharpPro;
|
||||||
|
using Crestron.SimplSharpPro.UI;
|
||||||
|
using Crestron.SimplSharpPro.DeviceSupport;
|
||||||
|
|
||||||
|
|
||||||
|
using PepperDash.Core;
|
||||||
|
using PepperDash.Essentials.Core;
|
||||||
|
using PepperDash.Essentials.Core.SmartObjects;
|
||||||
|
using PepperDash.Essentials.Core.PageManagers;
|
||||||
|
using PepperDash.Essentials.Room.Config;
|
||||||
|
using PepperDash.Essentials.Devices.Common.Codec;
|
||||||
|
using PepperDash.Essentials.Devices.Common.VideoCodec;
|
||||||
|
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public class EssentialsHeaderDriver : PanelDriverBase
|
||||||
|
{
|
||||||
|
CrestronTouchpanelPropertiesConfig Config;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The parent driver for this
|
||||||
|
/// </summary>
|
||||||
|
EssentialsPanelMainInterfaceDriver Parent;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates that the SetHeaderButtons method has completed successfully
|
||||||
|
/// </summary>
|
||||||
|
public bool HeaderButtonsAreSetUp { get; private set; }
|
||||||
|
|
||||||
|
StringInputSig HeaderCallButtonIconSig;
|
||||||
|
|
||||||
|
public EssentialsHeaderDriver(EssentialsPanelMainInterfaceDriver parent, CrestronTouchpanelPropertiesConfig config)
|
||||||
|
: base(parent.TriList)
|
||||||
|
{
|
||||||
|
Config = config;
|
||||||
|
Parent = parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetUpGear(IAVDriver avDriver, EssentialsRoomBase currentRoom)
|
||||||
|
{
|
||||||
|
// Gear
|
||||||
|
TriList.SetString(UIStringJoin.HeaderButtonIcon5, "Gear");
|
||||||
|
TriList.SetSigHeldAction(UIBoolJoin.HeaderIcon5Press, 2000,
|
||||||
|
avDriver.ShowTech,
|
||||||
|
null,
|
||||||
|
() =>
|
||||||
|
{
|
||||||
|
if (currentRoom.OnFeedback.BoolValue)
|
||||||
|
avDriver.PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.VolumesPageVisible);
|
||||||
|
else
|
||||||
|
avDriver.PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.VolumesPagePowerOffVisible);
|
||||||
|
});
|
||||||
|
TriList.SetSigFalseAction(UIBoolJoin.TechExitButton, () =>
|
||||||
|
avDriver.PopupInterlock.HideAndClear());
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetUpHelpButton(EssentialsRoomPropertiesConfig roomConf)
|
||||||
|
{
|
||||||
|
// Help roomConf and popup
|
||||||
|
if (roomConf.Help != null)
|
||||||
|
{
|
||||||
|
TriList.SetString(UIStringJoin.HelpMessage, roomConf.Help.Message);
|
||||||
|
TriList.SetBool(UIBoolJoin.HelpPageShowCallButtonVisible, roomConf.Help.ShowCallButton);
|
||||||
|
TriList.SetString(UIStringJoin.HelpPageCallButtonText, roomConf.Help.CallButtonText);
|
||||||
|
if (roomConf.Help.ShowCallButton)
|
||||||
|
TriList.SetSigFalseAction(UIBoolJoin.HelpPageShowCallButtonPress, () => { }); // ************ FILL IN
|
||||||
|
else
|
||||||
|
TriList.ClearBoolSigAction(UIBoolJoin.HelpPageShowCallButtonPress);
|
||||||
|
}
|
||||||
|
else // older config
|
||||||
|
{
|
||||||
|
TriList.SetString(UIStringJoin.HelpMessage, roomConf.HelpMessage);
|
||||||
|
TriList.SetBool(UIBoolJoin.HelpPageShowCallButtonVisible, false);
|
||||||
|
TriList.SetString(UIStringJoin.HelpPageCallButtonText, null);
|
||||||
|
TriList.ClearBoolSigAction(UIBoolJoin.HelpPageShowCallButtonPress);
|
||||||
|
}
|
||||||
|
TriList.SetString(UIStringJoin.HeaderButtonIcon4, "Help");
|
||||||
|
TriList.SetSigFalseAction(UIBoolJoin.HeaderIcon4Press, () =>
|
||||||
|
{
|
||||||
|
string message = null;
|
||||||
|
var room = DeviceManager.GetDeviceForKey(Config.DefaultRoomKey)
|
||||||
|
as EssentialsHuddleSpaceRoom;
|
||||||
|
if (room != null)
|
||||||
|
message = room.Config.HelpMessage;
|
||||||
|
else
|
||||||
|
message = "Sorry, no help message available. No room connected.";
|
||||||
|
//TriList.StringInput[UIStringJoin.HelpMessage].StringValue = message;
|
||||||
|
Parent.AvDriver.PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.HelpPageVisible);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
uint SetUpEnvironmentButton(EssentialsEnvironmentDriver environmentDriver, uint nextJoin)
|
||||||
|
{
|
||||||
|
if (environmentDriver != null)
|
||||||
|
{
|
||||||
|
TriList.SetString(nextJoin, "Lights");
|
||||||
|
TriList.SetSigFalseAction(nextJoin, environmentDriver.Toggle);
|
||||||
|
nextJoin--;
|
||||||
|
return nextJoin;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return nextJoin;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint SetUpCalendarButton(EssentialsHuddleVtc1PanelAvFunctionsDriver avDriver, uint nextJoin)
|
||||||
|
{
|
||||||
|
// Calendar button
|
||||||
|
if (avDriver.CurrentRoom.ScheduleSource != null)
|
||||||
|
{
|
||||||
|
TriList.SetString(nextJoin, "Calendar");
|
||||||
|
TriList.SetSigFalseAction(nextJoin, avDriver.CalendarPress);
|
||||||
|
|
||||||
|
nextJoin--;
|
||||||
|
return nextJoin;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return nextJoin;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint SetUpCallButton(EssentialsHuddleVtc1PanelAvFunctionsDriver avDriver, uint nextJoin)
|
||||||
|
{
|
||||||
|
// Call button
|
||||||
|
TriList.SetString(nextJoin, "DND");
|
||||||
|
TriList.SetSigFalseAction(nextJoin, avDriver.ShowActiveCallsList);
|
||||||
|
HeaderCallButtonIconSig = TriList.StringInput[nextJoin];
|
||||||
|
|
||||||
|
nextJoin--;
|
||||||
|
return nextJoin;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Evaluates the call status and sets the icon mode and text label
|
||||||
|
/// </summary>
|
||||||
|
public void ComputeHeaderCallStatus(VideoCodecBase codec)
|
||||||
|
{
|
||||||
|
if (codec == null)
|
||||||
|
{
|
||||||
|
Debug.Console(1, "ComputeHeaderCallStatus() cannot execute. codec is null");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HeaderCallButtonIconSig == null)
|
||||||
|
{
|
||||||
|
Debug.Console(1, "ComputeHeaderCallStatus() cannot execute. HeaderCallButtonIconSig is null");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set mode of header button
|
||||||
|
if (!codec.IsInCall)
|
||||||
|
{
|
||||||
|
HeaderCallButtonIconSig.StringValue = "DND";
|
||||||
|
//HeaderCallButton.SetIcon(HeaderListButton.OnHook);
|
||||||
|
}
|
||||||
|
else if (codec.ActiveCalls.Any(c => c.Type == eCodecCallType.Video))
|
||||||
|
HeaderCallButtonIconSig.StringValue = "Misc-06_Dark";
|
||||||
|
//HeaderCallButton.SetIcon(HeaderListButton.Camera);
|
||||||
|
//TriList.SetUshort(UIUshortJoin.CallHeaderButtonMode, 2);
|
||||||
|
else
|
||||||
|
HeaderCallButtonIconSig.StringValue = "Misc-09_Dark";
|
||||||
|
//HeaderCallButton.SetIcon(HeaderListButton.Phone);
|
||||||
|
//TriList.SetUshort(UIUshortJoin.CallHeaderButtonMode, 1);
|
||||||
|
|
||||||
|
// Set the call status text
|
||||||
|
if (codec.ActiveCalls.Count > 0)
|
||||||
|
{
|
||||||
|
if (codec.ActiveCalls.Count == 1)
|
||||||
|
TriList.SetString(UIStringJoin.HeaderCallStatusLabel, "1 Active Call");
|
||||||
|
else if (codec.ActiveCalls.Count > 1)
|
||||||
|
TriList.SetString(UIStringJoin.HeaderCallStatusLabel, string.Format("{0} Active Calls", codec.ActiveCalls.Count));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
TriList.SetString(UIStringJoin.HeaderCallStatusLabel, "No Active Calls");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets up Header Buttons for the EssentialsHuddleVtc1Room type
|
||||||
|
/// </summary>
|
||||||
|
public void SetupHeaderButtons(EssentialsHuddleVtc1PanelAvFunctionsDriver avDriver, EssentialsHuddleVtc1Room currentRoom)
|
||||||
|
{
|
||||||
|
HeaderButtonsAreSetUp = false;
|
||||||
|
|
||||||
|
TriList.SetBool(UIBoolJoin.TopBarHabaneroDynamicVisible, true);
|
||||||
|
|
||||||
|
var roomConf = currentRoom.Config;
|
||||||
|
|
||||||
|
SetUpGear(avDriver, currentRoom);
|
||||||
|
|
||||||
|
SetUpHelpButton(roomConf);
|
||||||
|
|
||||||
|
uint nextJoin = 3953;
|
||||||
|
|
||||||
|
nextJoin = SetUpEnvironmentButton(Parent.EnvironmentDriver, nextJoin);
|
||||||
|
|
||||||
|
nextJoin = SetUpCalendarButton(avDriver, nextJoin);
|
||||||
|
|
||||||
|
nextJoin = SetUpCallButton(avDriver, nextJoin);
|
||||||
|
|
||||||
|
// blank any that remain
|
||||||
|
for (var i = nextJoin; i > 3950; i--)
|
||||||
|
{
|
||||||
|
TriList.SetString(i, "Blank");
|
||||||
|
TriList.SetSigFalseAction(i, () => { });
|
||||||
|
}
|
||||||
|
|
||||||
|
TriList.SetSigFalseAction(UIBoolJoin.HeaderCallStatusLabelPress, avDriver.ShowActiveCallsList);
|
||||||
|
|
||||||
|
// Set Call Status Subpage Position
|
||||||
|
#warning may need to add a new position when environment icon is displayed
|
||||||
|
|
||||||
|
if (nextJoin == 3951)
|
||||||
|
{
|
||||||
|
// Set to right position
|
||||||
|
TriList.SetBool(UIBoolJoin.HeaderCallStatusLeftPositionVisible, false);
|
||||||
|
TriList.SetBool(UIBoolJoin.HeaderCallStatusRightPositionVisible, true);
|
||||||
|
}
|
||||||
|
else if (nextJoin == 3950)
|
||||||
|
{
|
||||||
|
// Set to left position
|
||||||
|
TriList.SetBool(UIBoolJoin.HeaderCallStatusLeftPositionVisible, true);
|
||||||
|
TriList.SetBool(UIBoolJoin.HeaderCallStatusRightPositionVisible, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
HeaderButtonsAreSetUp = true;
|
||||||
|
|
||||||
|
ComputeHeaderCallStatus(currentRoom.VideoCodec);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets up Header Buttons for the EssentialsHuddleSpaceRoom type
|
||||||
|
/// </summary>
|
||||||
|
public void SetupHeaderButtons(EssentialsHuddlePanelAvFunctionsDriver avDriver, EssentialsHuddleSpaceRoom currentRoom)
|
||||||
|
{
|
||||||
|
HeaderButtonsAreSetUp = false;
|
||||||
|
|
||||||
|
TriList.SetBool(UIBoolJoin.TopBarHabaneroDynamicVisible, true);
|
||||||
|
|
||||||
|
var roomConf = currentRoom.Config;
|
||||||
|
|
||||||
|
SetUpGear(avDriver, currentRoom);
|
||||||
|
|
||||||
|
SetUpHelpButton(roomConf);
|
||||||
|
|
||||||
|
uint nextJoin = 3953;
|
||||||
|
|
||||||
|
nextJoin = SetUpEnvironmentButton(Parent.EnvironmentDriver, nextJoin);
|
||||||
|
|
||||||
|
// blank any that remain
|
||||||
|
for (var i = nextJoin; i > 3950; i--)
|
||||||
|
{
|
||||||
|
TriList.SetString(i, "Blank");
|
||||||
|
TriList.SetSigFalseAction(i, () => { });
|
||||||
|
}
|
||||||
|
|
||||||
|
HeaderButtonsAreSetUp = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,12 +15,21 @@ namespace PepperDash.Essentials
|
|||||||
/// Assign the appropriate A/V driver.
|
/// Assign the appropriate A/V driver.
|
||||||
/// Want to keep the AvDriver alive, because it may hold states
|
/// Want to keep the AvDriver alive, because it may hold states
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public PanelDriverBase AvDriver { get; set; }
|
public IAVDriver AvDriver { get; set; }
|
||||||
|
|
||||||
|
public EssentialsHeaderDriver HeaderDriver { get; set; }
|
||||||
|
|
||||||
|
public EssentialsEnvironmentDriver EnvironmentDriver { get; set; }
|
||||||
|
|
||||||
public PanelDriverBase CurrentChildDriver { get; private set; }
|
public PanelDriverBase CurrentChildDriver { get; private set; }
|
||||||
|
|
||||||
CrestronTouchpanelPropertiesConfig Config;
|
CrestronTouchpanelPropertiesConfig Config;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The main interlock for popups
|
||||||
|
/// </summary>
|
||||||
|
//public JoinedSigInterlock PopupInterlock { get; private set; }
|
||||||
|
|
||||||
public EssentialsPanelMainInterfaceDriver(BasicTriListWithSmartObject trilist,
|
public EssentialsPanelMainInterfaceDriver(BasicTriListWithSmartObject trilist,
|
||||||
CrestronTouchpanelPropertiesConfig config)
|
CrestronTouchpanelPropertiesConfig config)
|
||||||
: base(trilist)
|
: base(trilist)
|
||||||
@@ -31,7 +40,7 @@ namespace PepperDash.Essentials
|
|||||||
public override void Show()
|
public override void Show()
|
||||||
{
|
{
|
||||||
CurrentChildDriver = null;
|
CurrentChildDriver = null;
|
||||||
ShowSubDriver(AvDriver);
|
ShowSubDriver(AvDriver as PanelDriverBase);
|
||||||
base.Show();
|
base.Show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ namespace PepperDash.Essentials
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class EssentialsHuddlePanelAvFunctionsDriver : PanelDriverBase
|
public class EssentialsHuddlePanelAvFunctionsDriver : PanelDriverBase, IAVDriver
|
||||||
{
|
{
|
||||||
CrestronTouchpanelPropertiesConfig Config;
|
CrestronTouchpanelPropertiesConfig Config;
|
||||||
|
|
||||||
@@ -153,7 +153,7 @@ namespace PepperDash.Essentials
|
|||||||
|
|
||||||
ModalDialog PowerDownModal;
|
ModalDialog PowerDownModal;
|
||||||
|
|
||||||
JoinedSigInterlock PopupInterlock;
|
public JoinedSigInterlock PopupInterlock { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The driver for the tech page. Lazy getter for memory usage
|
/// The driver for the tech page. Lazy getter for memory usage
|
||||||
@@ -311,7 +311,7 @@ namespace PepperDash.Essentials
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Reveals the tech page and puts away anything that's in the way.
|
/// Reveals the tech page and puts away anything that's in the way.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void ShowTech()
|
public void ShowTech()
|
||||||
{
|
{
|
||||||
PopupInterlock.HideAndClear();
|
PopupInterlock.HideAndClear();
|
||||||
TechDriver.Show();
|
TechDriver.Show();
|
||||||
@@ -808,7 +808,7 @@ namespace PepperDash.Essentials
|
|||||||
_CurrentRoom.CurrentSingleSourceChange += CurrentRoom_SourceInfoChange;
|
_CurrentRoom.CurrentSingleSourceChange += CurrentRoom_SourceInfoChange;
|
||||||
RefreshSourceInfo();
|
RefreshSourceInfo();
|
||||||
|
|
||||||
SetupHeaderButtons();
|
(Parent as EssentialsPanelMainInterfaceDriver).HeaderDriver.SetupHeaderButtons(this, CurrentRoom);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -817,83 +817,83 @@ namespace PepperDash.Essentials
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetupHeaderButtons()
|
//void SetupHeaderButtons()
|
||||||
{
|
|
||||||
HeaderButtonsAreSetUp = false;
|
|
||||||
|
|
||||||
TriList.SetBool(UIBoolJoin.TopBarHabaneroDynamicVisible, true);
|
|
||||||
|
|
||||||
var roomConf = CurrentRoom.Config;
|
|
||||||
|
|
||||||
// Gear
|
|
||||||
TriList.SetString(UIStringJoin.HeaderButtonIcon5, "Gear");
|
|
||||||
TriList.SetSigHeldAction(UIBoolJoin.HeaderIcon5Press, 2000,
|
|
||||||
ShowTech,
|
|
||||||
null,
|
|
||||||
() =>
|
|
||||||
{
|
|
||||||
if (CurrentRoom.OnFeedback.BoolValue)
|
|
||||||
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.VolumesPageVisible);
|
|
||||||
else
|
|
||||||
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.VolumesPagePowerOffVisible);
|
|
||||||
});
|
|
||||||
TriList.SetSigFalseAction(UIBoolJoin.TechExitButton, () =>
|
|
||||||
PopupInterlock.HideAndClear());
|
|
||||||
|
|
||||||
// Help button and popup
|
|
||||||
if (CurrentRoom.Config.Help != null)
|
|
||||||
{
|
|
||||||
TriList.SetString(UIStringJoin.HelpMessage, roomConf.Help.Message);
|
|
||||||
TriList.SetBool(UIBoolJoin.HelpPageShowCallButtonVisible, roomConf.Help.ShowCallButton);
|
|
||||||
TriList.SetString(UIStringJoin.HelpPageCallButtonText, roomConf.Help.CallButtonText);
|
|
||||||
if (roomConf.Help.ShowCallButton)
|
|
||||||
TriList.SetSigFalseAction(UIBoolJoin.HelpPageShowCallButtonPress, () => { }); // ************ FILL IN
|
|
||||||
else
|
|
||||||
TriList.ClearBoolSigAction(UIBoolJoin.HelpPageShowCallButtonPress);
|
|
||||||
}
|
|
||||||
else // older config
|
|
||||||
{
|
|
||||||
TriList.SetString(UIStringJoin.HelpMessage, CurrentRoom.Config.HelpMessage);
|
|
||||||
TriList.SetBool(UIBoolJoin.HelpPageShowCallButtonVisible, false);
|
|
||||||
TriList.SetString(UIStringJoin.HelpPageCallButtonText, null);
|
|
||||||
TriList.ClearBoolSigAction(UIBoolJoin.HelpPageShowCallButtonPress);
|
|
||||||
}
|
|
||||||
TriList.SetString(UIStringJoin.HeaderButtonIcon4, "Help");
|
|
||||||
TriList.SetSigFalseAction(UIBoolJoin.HeaderIcon4Press, () =>
|
|
||||||
{
|
|
||||||
string message = null;
|
|
||||||
var room = DeviceManager.GetDeviceForKey(Config.DefaultRoomKey)
|
|
||||||
as EssentialsHuddleSpaceRoom;
|
|
||||||
if (room != null)
|
|
||||||
message = room.Config.HelpMessage;
|
|
||||||
else
|
|
||||||
message = "Sorry, no help message available. No room connected.";
|
|
||||||
//TriList.StringInput[UIStringJoin.HelpMessage].StringValue = message;
|
|
||||||
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.HelpPageVisible);
|
|
||||||
});
|
|
||||||
uint nextJoin = 3953;
|
|
||||||
|
|
||||||
//// Calendar button
|
|
||||||
//if (_CurrentRoom.ScheduleSource != null)
|
|
||||||
//{
|
//{
|
||||||
// TriList.SetString(nextJoin, "Calendar");
|
// HeaderButtonsAreSetUp = false;
|
||||||
// TriList.SetSigFalseAction(nextJoin, CalendarPress);
|
|
||||||
|
|
||||||
// nextJoin--;
|
// TriList.SetBool(UIBoolJoin.TopBarHabaneroDynamicVisible, true);
|
||||||
|
|
||||||
|
// var roomConf = CurrentRoom.Config;
|
||||||
|
|
||||||
|
// // Gear
|
||||||
|
// TriList.SetString(UIStringJoin.HeaderButtonIcon5, "Gear");
|
||||||
|
// TriList.SetSigHeldAction(UIBoolJoin.HeaderIcon5Press, 2000,
|
||||||
|
// ShowTech,
|
||||||
|
// null,
|
||||||
|
// () =>
|
||||||
|
// {
|
||||||
|
// if (CurrentRoom.OnFeedback.BoolValue)
|
||||||
|
// PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.VolumesPageVisible);
|
||||||
|
// else
|
||||||
|
// PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.VolumesPagePowerOffVisible);
|
||||||
|
// });
|
||||||
|
// TriList.SetSigFalseAction(UIBoolJoin.TechExitButton, () =>
|
||||||
|
// PopupInterlock.HideAndClear());
|
||||||
|
|
||||||
|
// // Help button and popup
|
||||||
|
// if (CurrentRoom.Config.Help != null)
|
||||||
|
// {
|
||||||
|
// TriList.SetString(UIStringJoin.HelpMessage, roomConf.Help.Message);
|
||||||
|
// TriList.SetBool(UIBoolJoin.HelpPageShowCallButtonVisible, roomConf.Help.ShowCallButton);
|
||||||
|
// TriList.SetString(UIStringJoin.HelpPageCallButtonText, roomConf.Help.CallButtonText);
|
||||||
|
// if (roomConf.Help.ShowCallButton)
|
||||||
|
// TriList.SetSigFalseAction(UIBoolJoin.HelpPageShowCallButtonPress, () => { }); // ************ FILL IN
|
||||||
|
// else
|
||||||
|
// TriList.ClearBoolSigAction(UIBoolJoin.HelpPageShowCallButtonPress);
|
||||||
|
// }
|
||||||
|
// else // older config
|
||||||
|
// {
|
||||||
|
// TriList.SetString(UIStringJoin.HelpMessage, CurrentRoom.Config.HelpMessage);
|
||||||
|
// TriList.SetBool(UIBoolJoin.HelpPageShowCallButtonVisible, false);
|
||||||
|
// TriList.SetString(UIStringJoin.HelpPageCallButtonText, null);
|
||||||
|
// TriList.ClearBoolSigAction(UIBoolJoin.HelpPageShowCallButtonPress);
|
||||||
|
// }
|
||||||
|
// TriList.SetString(UIStringJoin.HeaderButtonIcon4, "Help");
|
||||||
|
// TriList.SetSigFalseAction(UIBoolJoin.HeaderIcon4Press, () =>
|
||||||
|
// {
|
||||||
|
// string message = null;
|
||||||
|
// var room = DeviceManager.GetDeviceForKey(Config.DefaultRoomKey)
|
||||||
|
// as EssentialsHuddleSpaceRoom;
|
||||||
|
// if (room != null)
|
||||||
|
// message = room.Config.HelpMessage;
|
||||||
|
// else
|
||||||
|
// message = "Sorry, no help message available. No room connected.";
|
||||||
|
// //TriList.StringInput[UIStringJoin.HelpMessage].StringValue = message;
|
||||||
|
// PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.HelpPageVisible);
|
||||||
|
// });
|
||||||
|
// uint nextJoin = 3953;
|
||||||
|
|
||||||
|
// //// Calendar button
|
||||||
|
// //if (_CurrentRoom.ScheduleSource != null)
|
||||||
|
// //{
|
||||||
|
// // TriList.SetString(nextJoin, "Calendar");
|
||||||
|
// // TriList.SetSigFalseAction(nextJoin, CalendarPress);
|
||||||
|
|
||||||
|
// // nextJoin--;
|
||||||
|
// //}
|
||||||
|
|
||||||
|
// //nextJoin--;
|
||||||
|
|
||||||
|
// // blank any that remain
|
||||||
|
// for (var i = nextJoin; i > 3950; i--)
|
||||||
|
// {
|
||||||
|
// TriList.SetString(i, "Blank");
|
||||||
|
// TriList.SetSigFalseAction(i, () => { });
|
||||||
|
// }
|
||||||
|
|
||||||
|
// HeaderButtonsAreSetUp = true;
|
||||||
//}
|
//}
|
||||||
|
|
||||||
//nextJoin--;
|
|
||||||
|
|
||||||
// blank any that remain
|
|
||||||
for (var i = nextJoin; i > 3950; i--)
|
|
||||||
{
|
|
||||||
TriList.SetString(i, "Blank");
|
|
||||||
TriList.SetSigFalseAction(i, () => { });
|
|
||||||
}
|
|
||||||
|
|
||||||
HeaderButtonsAreSetUp = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// For room on/off changes
|
/// For room on/off changes
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ namespace PepperDash.Essentials
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class EssentialsHuddleVtc1PanelAvFunctionsDriver : PanelDriverBase, IAVDriver
|
public class EssentialsHuddleVtc1PanelAvFunctionsDriver : PanelDriverBase, IAVWithVCDriver
|
||||||
{
|
{
|
||||||
CrestronTouchpanelPropertiesConfig Config;
|
CrestronTouchpanelPropertiesConfig Config;
|
||||||
|
|
||||||
@@ -43,10 +43,6 @@ namespace PepperDash.Essentials
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string DefaultRoomKey { get; set; }
|
public string DefaultRoomKey { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Indicates that the SetHeaderButtons method has completed successfully
|
|
||||||
/// </summary>
|
|
||||||
public bool HeaderButtonsAreSetUp { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
@@ -68,14 +64,8 @@ namespace PepperDash.Essentials
|
|||||||
BoolInputSig ShareButtonSig;
|
BoolInputSig ShareButtonSig;
|
||||||
BoolInputSig EndMeetingButtonSig;
|
BoolInputSig EndMeetingButtonSig;
|
||||||
|
|
||||||
//HeaderListButton HeaderCallButton;
|
|
||||||
//HeaderListButton HeaderGearButton;
|
|
||||||
|
|
||||||
StringInputSig HeaderCallButtonIconSig;
|
|
||||||
|
|
||||||
BoolFeedback CallSharingInfoVisibleFeedback;
|
BoolFeedback CallSharingInfoVisibleFeedback;
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The parent driver for this
|
/// The parent driver for this
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -326,7 +316,7 @@ namespace PepperDash.Essentials
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Allows PopupInterlock to be toggled if the calls list is already visible, or if the codec is in a call
|
/// Allows PopupInterlock to be toggled if the calls list is already visible, or if the codec is in a call
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void ShowActiveCallsList()
|
public void ShowActiveCallsList()
|
||||||
{
|
{
|
||||||
TriList.SetBool(UIBoolJoin.CallEndAllConfirmVisible, true);
|
TriList.SetBool(UIBoolJoin.CallEndAllConfirmVisible, true);
|
||||||
if(PopupInterlock.CurrentJoin == UIBoolJoin.HeaderActiveCallsListVisible)
|
if(PopupInterlock.CurrentJoin == UIBoolJoin.HeaderActiveCallsListVisible)
|
||||||
@@ -516,7 +506,7 @@ namespace PepperDash.Essentials
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Calendar should only be visible when it's supposed to
|
/// Calendar should only be visible when it's supposed to
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void CalendarPress()
|
public void CalendarPress()
|
||||||
{
|
{
|
||||||
//RefreshMeetingsList(); // List should be up-to-date
|
//RefreshMeetingsList(); // List should be up-to-date
|
||||||
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.MeetingsOrContacMethodsListVisible);
|
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.MeetingsOrContacMethodsListVisible);
|
||||||
@@ -558,7 +548,7 @@ namespace PepperDash.Essentials
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Reveals the tech page and puts away anything that's in the way.
|
/// Reveals the tech page and puts away anything that's in the way.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void ShowTech()
|
public void ShowTech()
|
||||||
{
|
{
|
||||||
PopupInterlock.HideAndClear();
|
PopupInterlock.HideAndClear();
|
||||||
TechDriver.Show();
|
TechDriver.Show();
|
||||||
@@ -952,7 +942,7 @@ namespace PepperDash.Essentials
|
|||||||
|
|
||||||
TriList.SetSigFalseAction(UIBoolJoin.CallStopSharingPress, () => _CurrentRoom.RunRouteAction("codecOsd"));
|
TriList.SetSigFalseAction(UIBoolJoin.CallStopSharingPress, () => _CurrentRoom.RunRouteAction("codecOsd"));
|
||||||
|
|
||||||
SetupHeaderButtons();
|
(Parent as EssentialsPanelMainInterfaceDriver).HeaderDriver.SetupHeaderButtons(this, CurrentRoom);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1076,153 +1066,153 @@ namespace PepperDash.Essentials
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
///// <summary>
|
||||||
///
|
/////
|
||||||
/// </summary>
|
///// </summary>
|
||||||
void SetupHeaderButtons()
|
//void SetupHeaderButtons()
|
||||||
{
|
//{
|
||||||
HeaderButtonsAreSetUp = false;
|
// HeaderButtonsAreSetUp = false;
|
||||||
|
|
||||||
TriList.SetBool(UIBoolJoin.TopBarHabaneroDynamicVisible, true);
|
// TriList.SetBool(UIBoolJoin.TopBarHabaneroDynamicVisible, true);
|
||||||
|
|
||||||
var roomConf = CurrentRoom.Config;
|
// var roomConf = CurrentRoom.Config;
|
||||||
|
|
||||||
// Gear
|
// // Gear
|
||||||
TriList.SetString(UIStringJoin.HeaderButtonIcon5, "Gear");
|
// TriList.SetString(UIStringJoin.HeaderButtonIcon5, "Gear");
|
||||||
TriList.SetSigHeldAction(UIBoolJoin.HeaderIcon5Press, 2000,
|
// TriList.SetSigHeldAction(UIBoolJoin.HeaderIcon5Press, 2000,
|
||||||
ShowTech,
|
// ShowTech,
|
||||||
null,
|
// null,
|
||||||
() =>
|
// () =>
|
||||||
{
|
// {
|
||||||
if (CurrentRoom.OnFeedback.BoolValue)
|
// if (CurrentRoom.OnFeedback.BoolValue)
|
||||||
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.VolumesPageVisible);
|
// PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.VolumesPageVisible);
|
||||||
else
|
// else
|
||||||
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.VolumesPagePowerOffVisible);
|
// PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.VolumesPagePowerOffVisible);
|
||||||
});
|
// });
|
||||||
TriList.SetSigFalseAction(UIBoolJoin.TechExitButton, () =>
|
// TriList.SetSigFalseAction(UIBoolJoin.TechExitButton, () =>
|
||||||
PopupInterlock.HideAndClear());
|
// PopupInterlock.HideAndClear());
|
||||||
|
|
||||||
// Help button and popup
|
// // Help button and popup
|
||||||
if (CurrentRoom.Config.Help != null)
|
// if (CurrentRoom.Config.Help != null)
|
||||||
{
|
// {
|
||||||
TriList.SetString(UIStringJoin.HelpMessage, roomConf.Help.Message);
|
// TriList.SetString(UIStringJoin.HelpMessage, roomConf.Help.Message);
|
||||||
TriList.SetBool(UIBoolJoin.HelpPageShowCallButtonVisible, roomConf.Help.ShowCallButton);
|
// TriList.SetBool(UIBoolJoin.HelpPageShowCallButtonVisible, roomConf.Help.ShowCallButton);
|
||||||
TriList.SetString(UIStringJoin.HelpPageCallButtonText, roomConf.Help.CallButtonText);
|
// TriList.SetString(UIStringJoin.HelpPageCallButtonText, roomConf.Help.CallButtonText);
|
||||||
if (roomConf.Help.ShowCallButton)
|
// if (roomConf.Help.ShowCallButton)
|
||||||
TriList.SetSigFalseAction(UIBoolJoin.HelpPageShowCallButtonPress, () => { }); // ************ FILL IN
|
// TriList.SetSigFalseAction(UIBoolJoin.HelpPageShowCallButtonPress, () => { }); // ************ FILL IN
|
||||||
else
|
// else
|
||||||
TriList.ClearBoolSigAction(UIBoolJoin.HelpPageShowCallButtonPress);
|
// TriList.ClearBoolSigAction(UIBoolJoin.HelpPageShowCallButtonPress);
|
||||||
}
|
// }
|
||||||
else // older config
|
// else // older config
|
||||||
{
|
// {
|
||||||
TriList.SetString(UIStringJoin.HelpMessage, CurrentRoom.Config.HelpMessage);
|
// TriList.SetString(UIStringJoin.HelpMessage, CurrentRoom.Config.HelpMessage);
|
||||||
TriList.SetBool(UIBoolJoin.HelpPageShowCallButtonVisible, false);
|
// TriList.SetBool(UIBoolJoin.HelpPageShowCallButtonVisible, false);
|
||||||
TriList.SetString(UIStringJoin.HelpPageCallButtonText, null);
|
// TriList.SetString(UIStringJoin.HelpPageCallButtonText, null);
|
||||||
TriList.ClearBoolSigAction(UIBoolJoin.HelpPageShowCallButtonPress);
|
// TriList.ClearBoolSigAction(UIBoolJoin.HelpPageShowCallButtonPress);
|
||||||
}
|
// }
|
||||||
TriList.SetString(UIStringJoin.HeaderButtonIcon4, "Help");
|
// TriList.SetString(UIStringJoin.HeaderButtonIcon4, "Help");
|
||||||
TriList.SetSigFalseAction(UIBoolJoin.HeaderIcon4Press, () =>
|
// TriList.SetSigFalseAction(UIBoolJoin.HeaderIcon4Press, () =>
|
||||||
{
|
// {
|
||||||
string message = null;
|
// string message = null;
|
||||||
var room = DeviceManager.GetDeviceForKey(Config.DefaultRoomKey)
|
// var room = DeviceManager.GetDeviceForKey(Config.DefaultRoomKey)
|
||||||
as EssentialsHuddleSpaceRoom;
|
// as EssentialsHuddleSpaceRoom;
|
||||||
if (room != null)
|
// if (room != null)
|
||||||
message = room.Config.HelpMessage;
|
// message = room.Config.HelpMessage;
|
||||||
else
|
// else
|
||||||
message = "Sorry, no help message available. No room connected.";
|
// message = "Sorry, no help message available. No room connected.";
|
||||||
//TriList.StringInput[UIStringJoin.HelpMessage].StringValue = message;
|
// //TriList.StringInput[UIStringJoin.HelpMessage].StringValue = message;
|
||||||
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.HelpPageVisible);
|
// PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.HelpPageVisible);
|
||||||
});
|
// });
|
||||||
uint nextJoin = 3953;
|
// uint nextJoin = 3953;
|
||||||
|
|
||||||
// Calendar button
|
// // Calendar button
|
||||||
if (_CurrentRoom.ScheduleSource != null)
|
// if (_CurrentRoom.ScheduleSource != null)
|
||||||
{
|
// {
|
||||||
TriList.SetString(nextJoin, "Calendar");
|
// TriList.SetString(nextJoin, "Calendar");
|
||||||
TriList.SetSigFalseAction(nextJoin, CalendarPress);
|
// TriList.SetSigFalseAction(nextJoin, CalendarPress);
|
||||||
|
|
||||||
nextJoin--;
|
// nextJoin--;
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Call button
|
// // Call button
|
||||||
TriList.SetString(nextJoin, "DND");
|
// TriList.SetString(nextJoin, "DND");
|
||||||
TriList.SetSigFalseAction(nextJoin, ShowActiveCallsList);
|
// TriList.SetSigFalseAction(nextJoin, ShowActiveCallsList);
|
||||||
HeaderCallButtonIconSig = TriList.StringInput[nextJoin];
|
// HeaderCallButtonIconSig = TriList.StringInput[nextJoin];
|
||||||
|
|
||||||
nextJoin--;
|
// nextJoin--;
|
||||||
|
|
||||||
// blank any that remain
|
// // blank any that remain
|
||||||
for (var i = nextJoin; i > 3950; i--)
|
// for (var i = nextJoin; i > 3950; i--)
|
||||||
{
|
// {
|
||||||
TriList.SetString(i, "Blank");
|
// TriList.SetString(i, "Blank");
|
||||||
TriList.SetSigFalseAction(i, () => { });
|
// TriList.SetSigFalseAction(i, () => { });
|
||||||
}
|
// }
|
||||||
|
|
||||||
TriList.SetSigFalseAction(UIBoolJoin.HeaderCallStatusLabelPress, ShowActiveCallsList);
|
// TriList.SetSigFalseAction(UIBoolJoin.HeaderCallStatusLabelPress, ShowActiveCallsList);
|
||||||
|
|
||||||
// Set Call Status Subpage Position
|
// // Set Call Status Subpage Position
|
||||||
|
|
||||||
if (nextJoin == 3951)
|
// if (nextJoin == 3951)
|
||||||
{
|
// {
|
||||||
// Set to right position
|
// // Set to right position
|
||||||
TriList.SetBool(UIBoolJoin.HeaderCallStatusLeftPositionVisible, false);
|
// TriList.SetBool(UIBoolJoin.HeaderCallStatusLeftPositionVisible, false);
|
||||||
TriList.SetBool(UIBoolJoin.HeaderCallStatusRightPositionVisible, true);
|
// TriList.SetBool(UIBoolJoin.HeaderCallStatusRightPositionVisible, true);
|
||||||
}
|
// }
|
||||||
else if (nextJoin == 3950)
|
// else if (nextJoin == 3950)
|
||||||
{
|
// {
|
||||||
// Set to left position
|
// // Set to left position
|
||||||
TriList.SetBool(UIBoolJoin.HeaderCallStatusLeftPositionVisible, true);
|
// TriList.SetBool(UIBoolJoin.HeaderCallStatusLeftPositionVisible, true);
|
||||||
TriList.SetBool(UIBoolJoin.HeaderCallStatusRightPositionVisible, false);
|
// TriList.SetBool(UIBoolJoin.HeaderCallStatusRightPositionVisible, false);
|
||||||
}
|
// }
|
||||||
|
|
||||||
HeaderButtonsAreSetUp = true;
|
// HeaderButtonsAreSetUp = true;
|
||||||
|
|
||||||
ComputeHeaderCallStatus(CurrentRoom.VideoCodec);
|
// ComputeHeaderCallStatus(CurrentRoom.VideoCodec);
|
||||||
}
|
//}
|
||||||
|
|
||||||
/// <summary>
|
///// <summary>
|
||||||
/// Evaluates the call status and sets the icon mode and text label
|
///// Evaluates the call status and sets the icon mode and text label
|
||||||
/// </summary>
|
///// </summary>
|
||||||
public void ComputeHeaderCallStatus(VideoCodecBase codec)
|
//public void ComputeHeaderCallStatus(VideoCodecBase codec)
|
||||||
{
|
//{
|
||||||
if (codec == null)
|
// if (codec == null)
|
||||||
{
|
// {
|
||||||
Debug.Console(1, "ComputeHeaderCallStatus() cannot execute. codec is null");
|
// Debug.Console(1, "ComputeHeaderCallStatus() cannot execute. codec is null");
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
|
||||||
if(HeaderCallButtonIconSig == null)
|
// if (HeaderCallButtonIconSig == null)
|
||||||
{
|
// {
|
||||||
Debug.Console(1, "ComputeHeaderCallStatus() cannot execute. HeaderCallButtonIconSig is null");
|
// Debug.Console(1, "ComputeHeaderCallStatus() cannot execute. HeaderCallButtonIconSig is null");
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Set mode of header button
|
// // Set mode of header button
|
||||||
if (!codec.IsInCall)
|
// if (!codec.IsInCall)
|
||||||
{
|
// {
|
||||||
HeaderCallButtonIconSig.StringValue = "DND";
|
// HeaderCallButtonIconSig.StringValue = "DND";
|
||||||
//HeaderCallButton.SetIcon(HeaderListButton.OnHook);
|
// //HeaderCallButton.SetIcon(HeaderListButton.OnHook);
|
||||||
}
|
// }
|
||||||
else if (codec.ActiveCalls.Any(c => c.Type == eCodecCallType.Video))
|
// else if (codec.ActiveCalls.Any(c => c.Type == eCodecCallType.Video))
|
||||||
HeaderCallButtonIconSig.StringValue = "Misc-06_Dark";
|
// HeaderCallButtonIconSig.StringValue = "Misc-06_Dark";
|
||||||
//HeaderCallButton.SetIcon(HeaderListButton.Camera);
|
// //HeaderCallButton.SetIcon(HeaderListButton.Camera);
|
||||||
//TriList.SetUshort(UIUshortJoin.CallHeaderButtonMode, 2);
|
// //TriList.SetUshort(UIUshortJoin.CallHeaderButtonMode, 2);
|
||||||
else
|
// else
|
||||||
HeaderCallButtonIconSig.StringValue = "Misc-09_Dark";
|
// HeaderCallButtonIconSig.StringValue = "Misc-09_Dark";
|
||||||
//HeaderCallButton.SetIcon(HeaderListButton.Phone);
|
// //HeaderCallButton.SetIcon(HeaderListButton.Phone);
|
||||||
//TriList.SetUshort(UIUshortJoin.CallHeaderButtonMode, 1);
|
// //TriList.SetUshort(UIUshortJoin.CallHeaderButtonMode, 1);
|
||||||
|
|
||||||
// Set the call status text
|
// // Set the call status text
|
||||||
if (codec.ActiveCalls.Count > 0)
|
// if (codec.ActiveCalls.Count > 0)
|
||||||
{
|
// {
|
||||||
if (codec.ActiveCalls.Count == 1)
|
// if (codec.ActiveCalls.Count == 1)
|
||||||
TriList.SetString(UIStringJoin.HeaderCallStatusLabel, "1 Active Call");
|
// TriList.SetString(UIStringJoin.HeaderCallStatusLabel, "1 Active Call");
|
||||||
else if (codec.ActiveCalls.Count > 1)
|
// else if (codec.ActiveCalls.Count > 1)
|
||||||
TriList.SetString(UIStringJoin.HeaderCallStatusLabel, string.Format("{0} Active Calls", codec.ActiveCalls.Count));
|
// TriList.SetString(UIStringJoin.HeaderCallStatusLabel, string.Format("{0} Active Calls", codec.ActiveCalls.Count));
|
||||||
}
|
// }
|
||||||
else
|
// else
|
||||||
TriList.SetString(UIStringJoin.HeaderCallStatusLabel, "No Active Calls");
|
// TriList.SetString(UIStringJoin.HeaderCallStatusLabel, "No Active Calls");
|
||||||
}
|
//}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
@@ -1511,18 +1501,24 @@ namespace PepperDash.Essentials
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// For hanging off various common things that child drivers might need from a parent AV driver
|
/// For hanging off various common AV things that child drivers might need from a parent AV driver
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IAVDriver
|
public interface IAVDriver
|
||||||
{
|
{
|
||||||
PepperDash.Essentials.Core.Touchpanels.Keyboards.HabaneroKeyboardController Keyboard { get; }
|
|
||||||
JoinedSigInterlock PopupInterlock { get; }
|
JoinedSigInterlock PopupInterlock { get; }
|
||||||
EssentialsHuddleVtc1Room CurrentRoom { get; }
|
|
||||||
void ShowNotificationRibbon(string message, int timeout);
|
void ShowNotificationRibbon(string message, int timeout);
|
||||||
void HideNotificationRibbon();
|
void HideNotificationRibbon();
|
||||||
void ComputeHeaderCallStatus(VideoCodecBase codec);
|
void ShowTech();
|
||||||
bool HeaderButtonsAreSetUp { get; }
|
}
|
||||||
SubpageReferenceList MeetingOrContactMethodModalSrl { get; }
|
|
||||||
|
/// <summary>
|
||||||
|
/// For hanging off various common VC things that child drivers might need from a parent AV driver
|
||||||
|
/// </summary>
|
||||||
|
public interface IAVWithVCDriver : IAVDriver
|
||||||
|
{
|
||||||
|
EssentialsHuddleVtc1Room CurrentRoom { get; }
|
||||||
|
|
||||||
|
PepperDash.Essentials.Core.Touchpanels.Keyboards.HabaneroKeyboardController Keyboard { get; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Exposes the ability to switch into call mode
|
/// Exposes the ability to switch into call mode
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -1531,5 +1527,7 @@ namespace PepperDash.Essentials
|
|||||||
/// Allows the codec to trigger the main UI to clear up if call is coming in.
|
/// Allows the codec to trigger the main UI to clear up if call is coming in.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void PrepareForCodecIncomingCall();
|
void PrepareForCodecIncomingCall();
|
||||||
|
|
||||||
|
SubpageReferenceList MeetingOrContactMethodModalSrl { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,9 +16,30 @@ namespace PepperDash.Essentials
|
|||||||
|
|
||||||
BasicTriList TriList;
|
BasicTriList TriList;
|
||||||
|
|
||||||
|
public BoolFeedback IsShownFeedback;
|
||||||
|
|
||||||
|
bool _IsShown;
|
||||||
|
|
||||||
|
public bool IsShown
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _IsShown;
|
||||||
|
}
|
||||||
|
private set
|
||||||
|
{
|
||||||
|
_IsShown = value;
|
||||||
|
IsShownFeedback.FireUpdate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//public BoolFeedback ShownFeedback { get; private set; }
|
||||||
|
|
||||||
public JoinedSigInterlock(BasicTriList triList)
|
public JoinedSigInterlock(BasicTriList triList)
|
||||||
{
|
{
|
||||||
TriList = triList;
|
TriList = triList;
|
||||||
|
|
||||||
|
IsShownFeedback = new BoolFeedback(new Func<bool>( () => _IsShown));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -32,6 +53,7 @@ namespace PepperDash.Essentials
|
|||||||
return;
|
return;
|
||||||
SetButDontShow(join);
|
SetButDontShow(join);
|
||||||
TriList.SetBool(CurrentJoin, true);
|
TriList.SetBool(CurrentJoin, true);
|
||||||
|
IsShown = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -49,6 +71,7 @@ namespace PepperDash.Essentials
|
|||||||
TriList.BooleanInput[CurrentJoin].BoolValue = false;
|
TriList.BooleanInput[CurrentJoin].BoolValue = false;
|
||||||
CurrentJoin = join;
|
CurrentJoin = join;
|
||||||
TriList.BooleanInput[CurrentJoin].BoolValue = true;
|
TriList.BooleanInput[CurrentJoin].BoolValue = true;
|
||||||
|
IsShown = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -69,7 +92,10 @@ namespace PepperDash.Essentials
|
|||||||
{
|
{
|
||||||
Debug.Console(2, "Trilist {0:X2}, interlock hiding {1}", TriList.ID, CurrentJoin);
|
Debug.Console(2, "Trilist {0:X2}, interlock hiding {1}", TriList.ID, CurrentJoin);
|
||||||
if (CurrentJoin > 0)
|
if (CurrentJoin > 0)
|
||||||
|
{
|
||||||
TriList.BooleanInput[CurrentJoin].BoolValue = false;
|
TriList.BooleanInput[CurrentJoin].BoolValue = false;
|
||||||
|
IsShown = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -79,7 +105,10 @@ namespace PepperDash.Essentials
|
|||||||
{
|
{
|
||||||
Debug.Console(2, "Trilist {0:X2}, interlock showing {1}", TriList.ID, CurrentJoin);
|
Debug.Console(2, "Trilist {0:X2}, interlock showing {1}", TriList.ID, CurrentJoin);
|
||||||
if (CurrentJoin > 0)
|
if (CurrentJoin > 0)
|
||||||
|
{
|
||||||
TriList.BooleanInput[CurrentJoin].BoolValue = true;
|
TriList.BooleanInput[CurrentJoin].BoolValue = true;
|
||||||
|
IsShown = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -89,7 +118,10 @@ namespace PepperDash.Essentials
|
|||||||
public void SetButDontShow(uint join)
|
public void SetButDontShow(uint join)
|
||||||
{
|
{
|
||||||
if (CurrentJoin > 0)
|
if (CurrentJoin > 0)
|
||||||
|
{
|
||||||
TriList.BooleanInput[CurrentJoin].BoolValue = false;
|
TriList.BooleanInput[CurrentJoin].BoolValue = false;
|
||||||
|
IsShown = false;
|
||||||
|
}
|
||||||
CurrentJoin = join;
|
CurrentJoin = join;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace PepperDash.Essentials.UIDrivers.VC
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class EssentialsVideoCodecUiDriver : PanelDriverBase
|
public class EssentialsVideoCodecUiDriver : PanelDriverBase
|
||||||
{
|
{
|
||||||
IAVDriver Parent;
|
IAVWithVCDriver Parent;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
@@ -87,12 +87,18 @@ namespace PepperDash.Essentials.UIDrivers.VC
|
|||||||
|
|
||||||
CTimer BackspaceTimer;
|
CTimer BackspaceTimer;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The panel header driver
|
||||||
|
/// </summary>
|
||||||
|
EssentialsHeaderDriver HeaderDriver;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="triList"></param>
|
/// <param name="triList"></param>
|
||||||
/// <param name="codec"></param>
|
/// <param name="codec"></param>
|
||||||
public EssentialsVideoCodecUiDriver(BasicTriListWithSmartObject triList, IAVDriver parent, VideoCodecBase codec)
|
public EssentialsVideoCodecUiDriver(BasicTriListWithSmartObject triList, IAVWithVCDriver parent, VideoCodecBase codec, EssentialsHeaderDriver headerDriver)
|
||||||
: base(triList)
|
: base(triList)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -101,6 +107,7 @@ namespace PepperDash.Essentials.UIDrivers.VC
|
|||||||
throw new ArgumentNullException("Codec cannot be null");
|
throw new ArgumentNullException("Codec cannot be null");
|
||||||
Codec = codec;
|
Codec = codec;
|
||||||
Parent = parent;
|
Parent = parent;
|
||||||
|
HeaderDriver = headerDriver;
|
||||||
SetupCallStagingPopover();
|
SetupCallStagingPopover();
|
||||||
SetupDialKeypad();
|
SetupDialKeypad();
|
||||||
ActiveCallsSRL = new SubpageReferenceList(triList, UISmartObjectJoin.CodecActiveCallsHeaderList, 5,5,5);
|
ActiveCallsSRL = new SubpageReferenceList(triList, UISmartObjectJoin.CodecActiveCallsHeaderList, 5,5,5);
|
||||||
@@ -207,8 +214,8 @@ namespace PepperDash.Essentials.UIDrivers.VC
|
|||||||
|
|
||||||
TriList.SetString(UIStringJoin.RoomPhoneText, roomNumberSipUri);
|
TriList.SetString(UIStringJoin.RoomPhoneText, roomNumberSipUri);
|
||||||
|
|
||||||
if(Parent.HeaderButtonsAreSetUp)
|
if(HeaderDriver.HeaderButtonsAreSetUp)
|
||||||
Parent.ComputeHeaderCallStatus(Codec);
|
HeaderDriver.ComputeHeaderCallStatus(Codec);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -231,7 +238,7 @@ namespace PepperDash.Essentials.UIDrivers.VC
|
|||||||
Parent.ShowNotificationRibbon("Connected", 2000);
|
Parent.ShowNotificationRibbon("Connected", 2000);
|
||||||
StagingButtonsFeedbackInterlock.ShowInterlocked(UIBoolJoin.VCStagingKeypadPress);
|
StagingButtonsFeedbackInterlock.ShowInterlocked(UIBoolJoin.VCStagingKeypadPress);
|
||||||
ShowKeypad();
|
ShowKeypad();
|
||||||
(Parent.CurrentRoom.CurrentVolumeControls as IBasicVolumeWithFeedback).MuteOff();
|
((Parent.CurrentRoom as IHasCurrentVolumeControls).CurrentVolumeControls as IBasicVolumeWithFeedback).MuteOff();
|
||||||
//VCControlsInterlock.ShowInterlocked(UIBoolJoin.VCKeypadVisible);
|
//VCControlsInterlock.ShowInterlocked(UIBoolJoin.VCKeypadVisible);
|
||||||
break;
|
break;
|
||||||
case eCodecCallStatus.Connecting:
|
case eCodecCallStatus.Connecting:
|
||||||
@@ -288,7 +295,7 @@ namespace PepperDash.Essentials.UIDrivers.VC
|
|||||||
else
|
else
|
||||||
StagingBarsInterlock.SetButDontShow(stageJoin);
|
StagingBarsInterlock.SetButDontShow(stageJoin);
|
||||||
|
|
||||||
Parent.ComputeHeaderCallStatus(Codec);
|
HeaderDriver.ComputeHeaderCallStatus(Codec);
|
||||||
|
|
||||||
// Update active call list
|
// Update active call list
|
||||||
UpdateHeaderActiveCallList();
|
UpdateHeaderActiveCallList();
|
||||||
@@ -326,7 +333,7 @@ namespace PepperDash.Essentials.UIDrivers.VC
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
void ShowIncomingModal(CodecActiveCallItem call)
|
void ShowIncomingModal(CodecActiveCallItem call)
|
||||||
{
|
{
|
||||||
Parent.PrepareForCodecIncomingCall();
|
(Parent as IAVWithVCDriver).PrepareForCodecIncomingCall();
|
||||||
IncomingCallModal = new ModalDialog(TriList);
|
IncomingCallModal = new ModalDialog(TriList);
|
||||||
string msg;
|
string msg;
|
||||||
string icon;
|
string icon;
|
||||||
@@ -356,8 +363,8 @@ namespace PepperDash.Essentials.UIDrivers.VC
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
void AcceptIncomingCall(CodecActiveCallItem call)
|
void AcceptIncomingCall(CodecActiveCallItem call)
|
||||||
{
|
{
|
||||||
Parent.PrepareForCodecIncomingCall();
|
(Parent as IAVWithVCDriver).PrepareForCodecIncomingCall();
|
||||||
Parent.ActivityCallButtonPressed();
|
(Parent as IAVWithVCDriver).ActivityCallButtonPressed();
|
||||||
Codec.AcceptCall(call);
|
Codec.AcceptCall(call);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ namespace PepperDash.Essentials
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Toggles visibility of this driver
|
/// Toggles visibility of this driver
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Toggle()
|
public virtual void Toggle()
|
||||||
{
|
{
|
||||||
if (IsVisible)
|
if (IsVisible)
|
||||||
Hide();
|
Hide();
|
||||||
|
|||||||
Reference in New Issue
Block a user