mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-01-11 19:44:52 +00:00
Merge pull request #10 from PepperDash/hotfix/ndorin-cleanout-unused-classes
Hotfix/ndorin cleanout unused classes
This commit is contained in:
@@ -0,0 +1,439 @@
|
||||
{
|
||||
"system_url": "",
|
||||
"template": {
|
||||
"info": {
|
||||
"comment": "",
|
||||
"requiredControlSofwareVersion": "",
|
||||
"systemType": "huddle",
|
||||
"lastModifiedDate": "2018-07-09T20:00:47.873Z",
|
||||
"lastUid": 23,
|
||||
"processorType": "rmc3"
|
||||
},
|
||||
"devices": [
|
||||
{
|
||||
"key": "processor",
|
||||
"group": "processor",
|
||||
"uid": 0,
|
||||
"supportsCompliance": true,
|
||||
"type": "rmc3",
|
||||
"properties": {},
|
||||
"name": "RMC3"
|
||||
},
|
||||
{
|
||||
"key": "comm-1",
|
||||
"uid": 1,
|
||||
"name": "Generic comm 1",
|
||||
"type": "genericComm",
|
||||
"group": "comm",
|
||||
"properties": {
|
||||
"control": {
|
||||
"comParams": {
|
||||
"hardwareHandshake": "None",
|
||||
"parity": "None",
|
||||
"protocol": "RS232",
|
||||
"baudRate": 9600,
|
||||
"dataBits": 8,
|
||||
"softwareHandshake": "None",
|
||||
"stopBits": 1
|
||||
},
|
||||
"controlPortNumber": 1,
|
||||
"controlPortDevKey": "processor",
|
||||
"method": "Com"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "tcp-1",
|
||||
"uid": 2,
|
||||
"name": "Generic TCP 1",
|
||||
"type": "genericComm",
|
||||
"group": "comm",
|
||||
"properties": {
|
||||
"control": {
|
||||
"tcpSshProperties": {
|
||||
"username": "",
|
||||
"autoReconnect": true,
|
||||
"AutoReconnectIntervalMs": 2000,
|
||||
"port": 23,
|
||||
"address": "0.0.0.0",
|
||||
"password": ""
|
||||
},
|
||||
"method": "Tcpip"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "ssh-1",
|
||||
"uid": 3,
|
||||
"name": "Generic SSH 1",
|
||||
"type": "genericComm",
|
||||
"group": "comm",
|
||||
"properties": {
|
||||
"control": {
|
||||
"tcpSshProperties": {
|
||||
"username": "crestron",
|
||||
"autoReconnect": true,
|
||||
"AutoReconnectIntervalMs": 2000,
|
||||
"port": 22,
|
||||
"address": "10.11.50.135",
|
||||
"password": "2H3Zu&OvgXp6"
|
||||
},
|
||||
"method": "Ssh"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "eisc-1A",
|
||||
"uid": 4,
|
||||
"type": "eiscApi",
|
||||
"group": "api",
|
||||
"properties": {
|
||||
"control": {
|
||||
"tcpSshProperties": {
|
||||
"address": "127.0.0.2",
|
||||
"port": 0
|
||||
},
|
||||
"ipId": "1A"
|
||||
},
|
||||
"devices": [
|
||||
{
|
||||
"deviceKey": "comm-1",
|
||||
"joinStart": 3001
|
||||
},
|
||||
{
|
||||
"deviceKey": "tcp-1",
|
||||
"joinStart": 3011
|
||||
},
|
||||
{
|
||||
"deviceKey": "ssh-1",
|
||||
"joinStart": 3021
|
||||
},
|
||||
{
|
||||
"deviceKey": "dmMd8x8-1",
|
||||
"joinStart": 1
|
||||
},
|
||||
{
|
||||
"deviceKey": "dmTx201C-1",
|
||||
"joinStart": 3051
|
||||
},
|
||||
{
|
||||
"deviceKey": "dmRmc4kScalerC-1",
|
||||
"joinStart": 3061
|
||||
},
|
||||
{
|
||||
"deviceKey": "dmRmc200C-1",
|
||||
"joinStart": 3071
|
||||
},
|
||||
{
|
||||
"deviceKey": "dmRmc100C-1",
|
||||
"joinStart": 3081
|
||||
},
|
||||
{
|
||||
"deviceKey": "comm-2",
|
||||
"joinStart": 2501
|
||||
},
|
||||
{
|
||||
"deviceKey": "comm-3",
|
||||
"joinStart": 2511
|
||||
},
|
||||
{
|
||||
"deviceKey": "comm-4",
|
||||
"joinStart": 2521
|
||||
},
|
||||
{
|
||||
"deviceKey": "cec-1",
|
||||
"joinStart": 2531
|
||||
},
|
||||
{
|
||||
"deviceKey": "cec-2",
|
||||
"joinStart": 2541
|
||||
},
|
||||
{
|
||||
"deviceKey": "cec-3",
|
||||
"joinStart": 2551
|
||||
},
|
||||
{
|
||||
"deviceKey": "cec-4",
|
||||
"joinStart": 2561
|
||||
},
|
||||
{
|
||||
"deviceKey": "cec-5",
|
||||
"joinStart": 2571
|
||||
},
|
||||
{
|
||||
"deviceKey": "cec-6",
|
||||
"joinStart": 2581
|
||||
},
|
||||
{
|
||||
"deviceKey": "cec-7",
|
||||
"joinStart": 2591
|
||||
},
|
||||
{
|
||||
"deviceKey": "gls-oir-1",
|
||||
"joinStart": 2701
|
||||
},
|
||||
{
|
||||
"deviceKey": "gls-odt-1",
|
||||
"joinStart": 2751
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "dmMd8x8-1",
|
||||
"uid": 5,
|
||||
"name": "DM-MD8x8 Chassis 1",
|
||||
"type": "dmMd8x8",
|
||||
"group": "dmChassis",
|
||||
"properties": {
|
||||
"control": {
|
||||
"method": "ipid",
|
||||
"ipid": "40",
|
||||
"params": {
|
||||
"endOfLineString": "\n",
|
||||
"deviceReadyResponsePattern": ".*>"
|
||||
}
|
||||
},
|
||||
"volumeControls": {},
|
||||
"inputSlots": {
|
||||
"1": "dmcHdDsp",
|
||||
"2": "dmcHdDsp",
|
||||
"3": "dmcDvi",
|
||||
"4": "dmcDvi",
|
||||
"5": "dmcC",
|
||||
"6": "dmcCDsp"
|
||||
},
|
||||
"outputSlots": {
|
||||
"1": "dmcCoHd",
|
||||
"2": "dmcCoHd"
|
||||
},
|
||||
"inputNames": {
|
||||
"1": "Input 1",
|
||||
"2": "Input 2",
|
||||
"3": "Input 3",
|
||||
"4": "Input 4",
|
||||
"5": "Input 5",
|
||||
"6": "Input 6"
|
||||
},
|
||||
"parentDeviceKey": "processor",
|
||||
"outputNames": {
|
||||
"1": "Output 1",
|
||||
"2": "Output 2",
|
||||
"3": "Output 3",
|
||||
"4": "Output 4"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "dmTx201C-1",
|
||||
"uid": 6,
|
||||
"name": "DM-TX-201C 1",
|
||||
"type": "dmTx201C",
|
||||
"group": "dmEndpoint",
|
||||
"properties": {
|
||||
"control": {
|
||||
"method": "ipid",
|
||||
"ipid": "45",
|
||||
"params": {
|
||||
"endOfLineString": "\n",
|
||||
"deviceReadyResponsePattern": ".*>"
|
||||
}
|
||||
},
|
||||
"parentDeviceKey": "dmMd8x8-1",
|
||||
"parentInputNumber": "5"
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "dmRmc4kScalerC-1",
|
||||
"uid": 7,
|
||||
"name": "DM-RMC-4K-SCALER-C Out 1",
|
||||
"type": "dmRmc4kScalerC",
|
||||
"group": "dmEndpoint",
|
||||
"properties": {
|
||||
"control": {
|
||||
"method": "ipid",
|
||||
"ipid": "61",
|
||||
"params": {
|
||||
"endOfLineString": "\n",
|
||||
"deviceReadyResponsePattern": ".*>"
|
||||
}
|
||||
},
|
||||
"parentDeviceKey": "dmMd8x8-1",
|
||||
"parentOutputNumber": "1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "dmRmc200C-1",
|
||||
"uid": 8,
|
||||
"name": "DM-RMC-200-C Out 2",
|
||||
"type": "dmRmc200C",
|
||||
"group": "dmEndpoint",
|
||||
"properties": {
|
||||
"control": {
|
||||
"method": "ipid",
|
||||
"ipid": "62",
|
||||
"params": {
|
||||
"endOfLineString": "\n",
|
||||
"deviceReadyResponsePattern": ".*>"
|
||||
}
|
||||
},
|
||||
"parentDeviceKey": "dmMd8x8-1",
|
||||
"parentOutputNumber": "2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "dmRmc100C-1",
|
||||
"uid": 9,
|
||||
"name": "DM-RMC-100-C Out 3",
|
||||
"type": "dmRmc100C",
|
||||
"group": "dmEndpoint",
|
||||
"properties": {
|
||||
"control": {
|
||||
"method": "ipid",
|
||||
"ipid": "63",
|
||||
"params": {
|
||||
"endOfLineString": "\n",
|
||||
"deviceReadyResponsePattern": ".*>"
|
||||
}
|
||||
},
|
||||
"parentDeviceKey": "dmMd8x8-1",
|
||||
"parentOutputNumber": "3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "comm-2",
|
||||
"uid": 10,
|
||||
"name": "Rmc comm 1",
|
||||
"type": "genericComm",
|
||||
"group": "comm",
|
||||
"properties": {
|
||||
"control": {
|
||||
"comParams": {
|
||||
"hardwareHandshake": "None",
|
||||
"parity": "None",
|
||||
"protocol": "RS232",
|
||||
"baudRate": 9600,
|
||||
"dataBits": 8,
|
||||
"softwareHandshake": "None",
|
||||
"stopBits": 1
|
||||
},
|
||||
"controlPortNumber": 1,
|
||||
"controlPortDevKey": "dmRmc4kScalerC-1",
|
||||
"method": "Com"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "comm-3",
|
||||
"uid": 11,
|
||||
"name": "Rmc comm 2",
|
||||
"type": "genericComm",
|
||||
"group": "comm",
|
||||
"properties": {
|
||||
"control": {
|
||||
"comParams": {
|
||||
"hardwareHandshake": "None",
|
||||
"parity": "None",
|
||||
"protocol": "RS232",
|
||||
"baudRate": 9600,
|
||||
"dataBits": 8,
|
||||
"softwareHandshake": "None",
|
||||
"stopBits": 1
|
||||
},
|
||||
"controlPortNumber": 1,
|
||||
"controlPortDevKey": "dmRmc200C-1",
|
||||
"method": "Com"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "cec-1",
|
||||
"uid": 13,
|
||||
"name": "Tx 5 cec 1",
|
||||
"type": "genericComm",
|
||||
"group": "comm",
|
||||
"properties": {
|
||||
"control": {
|
||||
"controlPortName": "HdmiIn",
|
||||
"controlPortDevKey": "dmTx201C-1",
|
||||
"method": "Cec"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "cec-5",
|
||||
"uid": 17,
|
||||
"name": "Rmc 1 cec 1",
|
||||
"type": "genericComm",
|
||||
"group": "comm",
|
||||
"properties": {
|
||||
"control": {
|
||||
"controlPortName": "HdmiOut",
|
||||
"controlPortDevKey": "dmRmc4kScalerC-1",
|
||||
"method": "Cec"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "cec-6",
|
||||
"uid": 18,
|
||||
"name": "Dm Chassis In 1 cec 1",
|
||||
"type": "genericComm",
|
||||
"group": "comm",
|
||||
"properties": {
|
||||
"control": {
|
||||
"controlPortName": "inputCard1--hdmiIn",
|
||||
"controlPortDevKey": "dmMd8x8-1",
|
||||
"method": "Cec"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "cec-7",
|
||||
"uid": 19,
|
||||
"name": "Dm Chassis Out 1 cec 1",
|
||||
"type": "genericComm",
|
||||
"group": "comm",
|
||||
"properties": {
|
||||
"control": {
|
||||
"controlPortName": "outputCard1--hdmiOut1",
|
||||
"controlPortDevKey": "dmMd8x8-1",
|
||||
"method": "Cec"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "gls-oir-1",
|
||||
"uid": 19,
|
||||
"name": "GLS-OIR-CN 1",
|
||||
"type": "glsoirccn",
|
||||
"group": "occupancy",
|
||||
"properties": {
|
||||
"control": {
|
||||
"cresnetId": "41",
|
||||
"method": "cresnet"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "gls-odt-1",
|
||||
"uid": 19,
|
||||
"name": "GLS-ODT-CN 1",
|
||||
"type": "glsodtccn",
|
||||
"group": "occupancy",
|
||||
"properties": {
|
||||
"control": {
|
||||
"cresnetId": "42",
|
||||
"method": "cresnet"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"rooms": [],
|
||||
"sourceLists": {},
|
||||
"tieLines": []
|
||||
},
|
||||
"template_url": "",
|
||||
"system": {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"system_url": "",
|
||||
"template": {
|
||||
"info": {
|
||||
"comment": "",
|
||||
"requiredControlSofwareVersion": "",
|
||||
"systemType": "huddle",
|
||||
"lastModifiedDate": "2018-07-09T20:00:47.873Z",
|
||||
"lastUid": 23,
|
||||
"processorType": "dmps3300c"
|
||||
},
|
||||
"devices": [
|
||||
{
|
||||
"key": "processor",
|
||||
"group": "processor",
|
||||
"uid": 0,
|
||||
"supportsCompliance": true,
|
||||
"type": "dmps3300c",
|
||||
"properties": {
|
||||
},
|
||||
"name": "DMPS3-300-C"
|
||||
},
|
||||
{
|
||||
"key": "eisc-A",
|
||||
"uid":4,
|
||||
"type": "eiscApi",
|
||||
"group":"api",
|
||||
"properties": {
|
||||
"control":{
|
||||
"tcpSshProperties":{
|
||||
"address":"127.0.0.2",
|
||||
"port":0
|
||||
},
|
||||
"ipId":"1A"
|
||||
},
|
||||
"devices": [
|
||||
{
|
||||
"deviceKey":"processor-avRouting",
|
||||
"joinStart":1
|
||||
},
|
||||
{
|
||||
"deviceKey":"processor-programAudioOutput",
|
||||
"joinStart":3001
|
||||
},
|
||||
{
|
||||
"deviceKey":"processor-aux1AudioOutput",
|
||||
"joinStart":3011
|
||||
},
|
||||
{
|
||||
"deviceKey":"processor-aux2AudioOutput",
|
||||
"joinStart":3021
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"rooms": [
|
||||
|
||||
],
|
||||
"sourceLists": {
|
||||
|
||||
},
|
||||
"tieLines": [
|
||||
]
|
||||
},
|
||||
"template_url": "",
|
||||
"system": {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -189,7 +189,6 @@
|
||||
<Compile Include="Room\Types\EssentialsDualDisplayRoom.cs" />
|
||||
<Compile Include="Room\Types\EssentialsHuddleVtc1Room.cs" />
|
||||
<Compile Include="Room\Types\EssentialsNDisplayRoomBase.cs" />
|
||||
<Compile Include="Room\Types\EssentialsPresentationRoom.cs" />
|
||||
<Compile Include="Room\Config\EssentialsRoomConfig.cs" />
|
||||
<Compile Include="UIDrivers\Environment Drivers\EssentialsEnvironmentDriver.cs" />
|
||||
<Compile Include="UIDrivers\Environment Drivers\EssentialsLightingDriver.cs" />
|
||||
|
||||
@@ -1,437 +0,0 @@
|
||||
//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.Room.Config;
|
||||
|
||||
//namespace PepperDash.Essentials
|
||||
//{
|
||||
// public class EssentialsPresentationRoom : EssentialsRoomBase, IHasCurrentSourceInfoChange
|
||||
// {
|
||||
// public event EventHandler<VolumeDeviceChangeEventArgs> CurrentVolumeDeviceChange;
|
||||
// public event SourceInfoChangeHandler CurrentSingleSourceChange;
|
||||
// public event SourceInfoChangeHandler CurrentDisplay1SourceChange;
|
||||
// public event SourceInfoChangeHandler CurrentDisplay2SourceChange;
|
||||
|
||||
// protected override Func<bool> OnFeedbackFunc { get {
|
||||
// return () => (CurrentSingleSourceInfo != null
|
||||
// && CurrentSingleSourceInfo.Type != eSourceListItemType.Off)
|
||||
// || (Display1SourceInfo != null
|
||||
// && Display1SourceInfo.Type != eSourceListItemType.Off)
|
||||
// || (Display2SourceInfo != null
|
||||
// && Display2SourceInfo.Type != eSourceListItemType.Off); } }
|
||||
|
||||
// protected override Func<bool> IsWarmingFeedbackFunc { get { return () =>false;; } }
|
||||
// protected override Func<bool> IsCoolingFeedbackFunc { get { return () => false; } }
|
||||
|
||||
// public EssentialsPresentationRoomPropertiesConfig Config { get; private set; }
|
||||
|
||||
// public Dictionary<uint, IRoutingSinkNoSwitching> Displays { get; private set; }
|
||||
|
||||
// public IRoutingSinkNoSwitching DefaultAudioDevice { get; private set; }
|
||||
// public IBasicVolumeControls DefaultVolumeControls { get; private set; }C:\Working Directories\PD\essentials\PepperDashEssentials\Room\Types\EssentialsPresentationRoom.cs
|
||||
|
||||
// /// <summary>
|
||||
// /// The config name of the source list
|
||||
// /// </summary>
|
||||
// public string SourceListKey { get; set; }
|
||||
|
||||
// /// <summary>
|
||||
// /// If room is off, enables power on to last source. Default true
|
||||
// /// </summary>
|
||||
// public bool EnablePowerOnToLastSource { get; set; }
|
||||
// string LastSourceKey;
|
||||
|
||||
// public enum eVideoRoutingMode
|
||||
// {
|
||||
// SelectSourceSelectDisplay, SourceToAllDisplays
|
||||
// }
|
||||
|
||||
// public eVideoRoutingMode VideoRoutingMode { get; set; }
|
||||
|
||||
// public enum eAudioRoutingMode
|
||||
// {
|
||||
// AudioFollowsLastVideo, SelectAudioFromDisplay
|
||||
// }
|
||||
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public IBasicVolumeControls CurrentVolumeControls
|
||||
// {
|
||||
// get { return _CurrentAudioDevice; }
|
||||
// set
|
||||
// {
|
||||
// if (value == _CurrentAudioDevice) return;
|
||||
|
||||
// var oldDev = _CurrentAudioDevice;
|
||||
// // derigister this room from the device, if it can
|
||||
// if (oldDev is IInUseTracking)
|
||||
// (oldDev as IInUseTracking).InUseTracker.RemoveUser(this, "audio");
|
||||
// var handler = CurrentVolumeDeviceChange;
|
||||
// if (handler != null)
|
||||
// CurrentVolumeDeviceChange(this, new VolumeDeviceChangeEventArgs(oldDev, value, ChangeType.WillChange));
|
||||
// _CurrentAudioDevice = value;
|
||||
// if (handler != null)
|
||||
// CurrentVolumeDeviceChange(this, new VolumeDeviceChangeEventArgs(oldDev, value, ChangeType.DidChange));
|
||||
// // register this room with new device, if it can
|
||||
// if (_CurrentAudioDevice is IInUseTracking)
|
||||
// (_CurrentAudioDevice as IInUseTracking).InUseTracker.AddUser(this, "audio");
|
||||
// }
|
||||
// }
|
||||
// IBasicVolumeControls _CurrentAudioDevice;
|
||||
|
||||
// /// <summary>
|
||||
// /// The SourceListItem last run - containing names and icons. The complex setter is
|
||||
// /// to add/remove this room to the source's InUseTracking, if it is capable
|
||||
// /// </summary>
|
||||
// public SourceListItem CurrentSingleSourceInfo
|
||||
// {
|
||||
// get { return _CurrentSingleSourceInfo; }
|
||||
// private set
|
||||
// {
|
||||
// if (value == _CurrentSingleSourceInfo) return;
|
||||
|
||||
// var handler = CurrentSingleSourceChange;
|
||||
// // remove from in-use tracker, if so equipped
|
||||
// if(_CurrentSingleSourceInfo != null && _CurrentSingleSourceInfo.SourceDevice is IInUseTracking)
|
||||
// (_CurrentSingleSourceInfo.SourceDevice as IInUseTracking).InUseTracker.RemoveUser(this, "control");
|
||||
|
||||
// if (handler != null)
|
||||
// handler(this, _CurrentSingleSourceInfo, ChangeType.WillChange);
|
||||
|
||||
// _CurrentSingleSourceInfo = value;
|
||||
|
||||
// // add to in-use tracking
|
||||
// if (_CurrentSingleSourceInfo != null && _CurrentSingleSourceInfo.SourceDevice is IInUseTracking)
|
||||
// (_CurrentSingleSourceInfo.SourceDevice as IInUseTracking).InUseTracker.AddUser(this, "control");
|
||||
// if (handler != null)
|
||||
// handler(this, _CurrentSingleSourceInfo, ChangeType.DidChange);
|
||||
// }
|
||||
// }
|
||||
// SourceListItem _CurrentSingleSourceInfo;
|
||||
|
||||
// public SourceListItem Display1SourceInfo
|
||||
// {
|
||||
// get { return _Display1SourceInfo; }
|
||||
// set
|
||||
// {
|
||||
// if (value == _Display1SourceInfo) return;
|
||||
|
||||
// var handler = CurrentDisplay1SourceChange;
|
||||
// if (handler != null)
|
||||
// handler(this, _Display1SourceInfo, ChangeType.WillChange);
|
||||
|
||||
// _Display1SourceInfo = value;
|
||||
|
||||
// if (handler != null)
|
||||
// handler(this, _Display1SourceInfo, ChangeType.DidChange);
|
||||
// }
|
||||
// }
|
||||
// SourceListItem _Display1SourceInfo;
|
||||
|
||||
// public SourceListItem Display2SourceInfo
|
||||
// {
|
||||
// get { return _Display2SourceInfo; }
|
||||
// set
|
||||
// {
|
||||
// if (value == _Display2SourceInfo) return;
|
||||
|
||||
// var handler = CurrentDisplay2SourceChange;
|
||||
// if (handler != null)
|
||||
// handler(this, _Display2SourceInfo, ChangeType.WillChange);
|
||||
|
||||
// _Display2SourceInfo = value;
|
||||
|
||||
// if (handler != null)
|
||||
// handler(this, _Display2SourceInfo, ChangeType.DidChange);
|
||||
// }
|
||||
// }
|
||||
// SourceListItem _Display2SourceInfo;
|
||||
|
||||
// /// <summary>
|
||||
// /// If an audio dialer is available for this room
|
||||
// /// </summary>
|
||||
// public bool HasAudioDialer { get { return false; } }
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// /// <param name="key"></param>
|
||||
// /// <param name="name"></param>
|
||||
// public EssentialsPresentationRoom(string key, string name,
|
||||
// Dictionary<uint, IRoutingSinkNoSwitching> displays,
|
||||
// IBasicVolumeWithFeedback defaultVolume, EssentialsPresentationRoomPropertiesConfig config)
|
||||
// : base(key, name)
|
||||
// {
|
||||
// Config = config;
|
||||
// Displays = displays;
|
||||
|
||||
// DefaultVolumeControls = defaultVolume;
|
||||
// CurrentVolumeControls = defaultVolume;
|
||||
|
||||
// //DefaultAudioDevice = defaultAudio;
|
||||
// //if (defaultAudio is IBasicVolumeControls)
|
||||
// // DefaultVolumeControls = defaultAudio as IBasicVolumeControls;
|
||||
// //else if (defaultAudio is IHasVolumeDevice)
|
||||
// // DefaultVolumeControls = (defaultAudio as IHasVolumeDevice).VolumeDevice;
|
||||
|
||||
|
||||
// SourceListKey = "default";
|
||||
// EnablePowerOnToLastSource = true;
|
||||
// }
|
||||
|
||||
// /// <summary>
|
||||
// /// Run the same source to all destinations
|
||||
// /// </summary>
|
||||
// /// <param name="sourceItem"></param>
|
||||
// public void RouteSourceToAllDestinations(SourceListItem sourceItem)
|
||||
// {
|
||||
// if (Config.Volumes.Master != null)
|
||||
// {
|
||||
// var audioDev = DeviceManager.GetDeviceForKey(Config.Volumes.Master.DeviceKey);
|
||||
// if (audioDev is IBasicVolumeWithFeedback)
|
||||
// {
|
||||
|
||||
// }
|
||||
// }
|
||||
|
||||
// foreach (var display in Displays.Values)
|
||||
// {
|
||||
// if (sourceItem != null)
|
||||
// DoVideoRoute(sourceItem.SourceKey, display.Key);
|
||||
// else
|
||||
// DoVideoRoute("$off", display.Key);
|
||||
// }
|
||||
// Display1SourceInfo = sourceItem;
|
||||
// Display2SourceInfo = sourceItem;
|
||||
// CurrentSingleSourceInfo = sourceItem;
|
||||
// OnFeedback.FireUpdate();
|
||||
// }
|
||||
|
||||
// public void SourceToDisplay1(SourceListItem sourceItem)
|
||||
// {
|
||||
// DoVideoRoute(sourceItem.SourceKey, Displays[1].Key);
|
||||
// Display1SourceInfo = sourceItem;
|
||||
// OnFeedback.FireUpdate();
|
||||
// }
|
||||
|
||||
// public void SourceToDisplay2(SourceListItem sourceItem)
|
||||
// {
|
||||
// DoVideoRoute(sourceItem.SourceKey, Displays[2].Key);
|
||||
// Display2SourceInfo = sourceItem;
|
||||
// OnFeedback.FireUpdate();
|
||||
// }
|
||||
|
||||
|
||||
// /// <summary>
|
||||
// /// Basic source -> destination routing
|
||||
// /// </summary>
|
||||
// void DoVideoRoute(string sourceKey, string destinationKey)
|
||||
// {
|
||||
// new CTimer(o =>
|
||||
// {
|
||||
// var dest = DeviceManager.GetDeviceForKey(destinationKey) as IRoutingSinkNoSwitching;
|
||||
// if (dest == null)
|
||||
// {
|
||||
// Debug.Console(1, this, "Cannot route. Destination '{0}' not found", destinationKey);
|
||||
// return;
|
||||
// }
|
||||
// // off is special case
|
||||
// if (sourceKey.Equals("$off", StringComparison.OrdinalIgnoreCase))
|
||||
// {
|
||||
// dest.ReleaseRoute();
|
||||
// if (dest is IPower)
|
||||
// (dest as IPower).PowerOff();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// var source = DeviceManager.GetDeviceForKey(sourceKey) as IRoutingOutputs;
|
||||
// if (source == null)
|
||||
// {
|
||||
// Debug.Console(1, this, "Cannot route. Source '{0}' not found", sourceKey);
|
||||
// return;
|
||||
// }
|
||||
// dest.ReleaseAndMakeRoute(source, eRoutingSignalType.Video);
|
||||
// }, 0);
|
||||
// }
|
||||
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// protected override void EndShutdown()
|
||||
// {
|
||||
// RunRouteAction("roomoff");
|
||||
// }
|
||||
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// /// <param name="routeKey"></param>
|
||||
// public void RunRouteAction(string routeKey)
|
||||
// {
|
||||
// RunRouteAction(routeKey, null);
|
||||
// }
|
||||
|
||||
// /// <summary>
|
||||
// /// Gets a source from config list SourceListKey and dynamically build and executes the
|
||||
// /// route or commands
|
||||
// /// </summary>
|
||||
// /// <param name="name"></param>
|
||||
// public void RunRouteAction(string routeKey, Action successCallback)
|
||||
// {
|
||||
// // Run this on a separate thread
|
||||
// new CTimer(o =>
|
||||
// {
|
||||
// Debug.Console(1, this, "Run room action '{0}'", routeKey);
|
||||
// var dict = ConfigReader.ConfigObject.GetSourceListForKey(SourceListKey);
|
||||
// if(dict == null)
|
||||
// {
|
||||
// Debug.Console(1, this, "WARNING: Config source list '{0}' not found", SourceListKey);
|
||||
// return;
|
||||
// }
|
||||
|
||||
// // Try to get the list item by it's string key
|
||||
// if (!dict.ContainsKey(routeKey))
|
||||
// {
|
||||
// Debug.Console(1, this, "WARNING: No item '{0}' found on config list '{1}'",
|
||||
// routeKey, SourceListKey);
|
||||
// return;
|
||||
// }
|
||||
|
||||
// var item = dict[routeKey];
|
||||
// //Debug.Console(2, this, "Action {0} has {1} steps",
|
||||
// // item.SourceKey, item.RouteList.Count);
|
||||
|
||||
// // Let's run it
|
||||
// if (routeKey.ToLower() != "roomoff")
|
||||
// LastSourceKey = routeKey;
|
||||
|
||||
// foreach (var route in item.RouteList)
|
||||
// {
|
||||
// // if there is a $defaultAll on route, run two separate
|
||||
// if (route.DestinationKey.Equals("$defaultAll", StringComparison.OrdinalIgnoreCase))
|
||||
// {
|
||||
// var tempAudio = new SourceRouteListItem
|
||||
// {
|
||||
// DestinationKey = "$defaultDisplay",
|
||||
// SourceKey = route.SourceKey,
|
||||
// Type = eRoutingSignalType.Video
|
||||
// };
|
||||
// DoRoute(tempAudio);
|
||||
|
||||
// var tempVideo = new SourceRouteListItem
|
||||
// {
|
||||
// DestinationKey = "$defaultAudio",
|
||||
// SourceKey = route.SourceKey,
|
||||
// Type = eRoutingSignalType.Audio
|
||||
// };
|
||||
// DoRoute(tempVideo);
|
||||
// continue;
|
||||
// }
|
||||
// else
|
||||
// DoRoute(route);
|
||||
// }
|
||||
|
||||
// // Set volume control on room, using default if non provided
|
||||
// IBasicVolumeControls volDev = null;
|
||||
// // Handle special cases for volume control
|
||||
// if (string.IsNullOrEmpty(item.VolumeControlKey)
|
||||
// || item.VolumeControlKey.Equals("$defaultAudio", StringComparison.OrdinalIgnoreCase))
|
||||
// volDev = DefaultVolumeControls;
|
||||
// //else if (item.VolumeControlKey.Equals("$defaultDisplay", StringComparison.OrdinalIgnoreCase))
|
||||
// // volDev = DefaultDisplay as IBasicVolumeControls;
|
||||
// // Or a specific device, probably rarely used.
|
||||
// else
|
||||
// {
|
||||
// var dev = DeviceManager.GetDeviceForKey(item.VolumeControlKey);
|
||||
// if (dev is IBasicVolumeControls)
|
||||
// volDev = dev as IBasicVolumeControls;
|
||||
// else if (dev is IHasVolumeDevice)
|
||||
// volDev = (dev as IHasVolumeDevice).VolumeDevice;
|
||||
// }
|
||||
// CurrentVolumeControls = volDev;
|
||||
|
||||
// // store the name and UI info for routes
|
||||
// if (item.SourceKey != null)
|
||||
// CurrentSingleSourceInfo = item;
|
||||
// // And finally, set the "control". This will trigger event
|
||||
// //CurrentControlDevice = DeviceManager.GetDeviceForKey(item.SourceKey) as Device;
|
||||
|
||||
// OnFeedback.FireUpdate();
|
||||
|
||||
// // report back when done
|
||||
// if (successCallback != null)
|
||||
// successCallback();
|
||||
// }, 0); // end of CTimer
|
||||
// }
|
||||
|
||||
// /// <summary>
|
||||
// /// Will power the room on with the last-used source
|
||||
// /// </summary>
|
||||
// public void PowerOnToDefaultOrLastSource()
|
||||
// {
|
||||
// if (!EnablePowerOnToLastSource || LastSourceKey == null)
|
||||
// return;
|
||||
// RunRouteAction(LastSourceKey);
|
||||
// }
|
||||
|
||||
// /// <summary>
|
||||
// /// Does what it says
|
||||
// /// </summary>
|
||||
// public override void SetDefaultLevels()
|
||||
// {
|
||||
// Debug.Console(0, this, "SetDefaultLevels not implemented");
|
||||
// }
|
||||
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// /// <param name="route"></param>
|
||||
// /// <returns></returns>
|
||||
// bool DoRoute(SourceRouteListItem route)
|
||||
// {
|
||||
// IRoutingSinkNoSwitching dest = null;
|
||||
|
||||
// if (route.DestinationKey.Equals("$defaultaudio", StringComparison.OrdinalIgnoreCase))
|
||||
// dest = DefaultAudioDevice;
|
||||
// //else if (route.DestinationKey.Equals("$defaultDisplay", StringComparison.OrdinalIgnoreCase))
|
||||
// // dest = DefaultDisplay;
|
||||
// else
|
||||
// dest = DeviceManager.GetDeviceForKey(route.DestinationKey) as IRoutingSinkNoSwitching;
|
||||
|
||||
// if (dest == null)
|
||||
// {
|
||||
// Debug.Console(1, this, "Cannot route, unknown destination '{0}'", route.DestinationKey);
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// if (route.SourceKey.Equals("$off", StringComparison.OrdinalIgnoreCase))
|
||||
// {
|
||||
// dest.ReleaseRoute();
|
||||
// if (dest is IPower)
|
||||
// (dest as IPower).PowerOff();
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// var source = DeviceManager.GetDeviceForKey(route.SourceKey) as IRoutingOutputs;
|
||||
// if (source == null)
|
||||
// {
|
||||
// Debug.Console(1, this, "Cannot route unknown source '{0}' to {1}", route.SourceKey, route.DestinationKey);
|
||||
// return false;
|
||||
// }
|
||||
// dest.ReleaseAndMakeRoute(source, route.Type);
|
||||
// }
|
||||
// return true;
|
||||
// }
|
||||
|
||||
// public override void RoomVacatedForTimeoutPeriod(object o)
|
||||
// {
|
||||
// //Implement this
|
||||
// }
|
||||
|
||||
// }
|
||||
//}
|
||||
BIN
docs/Plugin Load Sequence.png
Normal file
BIN
docs/Plugin Load Sequence.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 398 KiB |
@@ -7,7 +7,7 @@ using Crestron.SimplSharp.Net.Http;
|
||||
using PepperDash.Core;
|
||||
using PepperDash.Core.DebugThings;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common
|
||||
namespace PepperDash.Essentials.Core
|
||||
{
|
||||
public class GenericHttpClient : Device, IBasicCommunication
|
||||
{
|
||||
@@ -113,6 +113,7 @@
|
||||
<ItemGroup>
|
||||
<Compile Include="Config\Comm and IR\CecPortController.cs" />
|
||||
<Compile Include="Config\Comm and IR\GenericComm.cs" />
|
||||
<Compile Include="Config\Comm and IR\GenericHttpClient.cs" />
|
||||
<Compile Include="Config\Essentials\ConfigUpdater.cs" />
|
||||
<Compile Include="Config\Essentials\ConfigReader.cs" />
|
||||
<Compile Include="Config\Essentials\ConfigWriter.cs" />
|
||||
|
||||
@@ -62,7 +62,6 @@ namespace PepperDash.Essentials.Devices.Common.DSP
|
||||
/// In BiAmp: Instance Tag, QSC: Named Control, Polycom:
|
||||
/// </summary>
|
||||
string ControlPointTag { get; }
|
||||
#warning I dont think index1 and index2 should be a part of the interface. JTA 2018-07-17
|
||||
int Index1 { get; }
|
||||
int Index2 { get; }
|
||||
bool HasMute { get; }
|
||||
|
||||
@@ -112,11 +112,6 @@
|
||||
<Compile Include="Occupancy\GlsOdtOccupancySensorController.cs" />
|
||||
<Compile Include="Power Controllers\Digitallogger.cs" />
|
||||
<Compile Include="Power Controllers\DigitalLoggerPropertiesConfig.cs" />
|
||||
<Compile Include="Evertz\EvertsEndpointStatusServer.cs" />
|
||||
<Compile Include="Evertz\EvertzEndpointVarIds.cs" />
|
||||
<Compile Include="Evertz\EvertzEndpoint.cs" />
|
||||
<Compile Include="Evertz\EvertzEndpointPropertiesConfig.cs" />
|
||||
<Compile Include="Evertz\GenericHttpClient.cs" />
|
||||
<Compile Include="ImageProcessors\AnalogWay\AnalongWayLiveCore.cs" />
|
||||
<Compile Include="ImageProcessors\AnalogWay\AnalogWayLiveCorePropertiesConfig.cs" />
|
||||
<Compile Include="VideoCodec\CiscoCodec\CiscoCamera.cs" />
|
||||
|
||||
@@ -1,152 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
using PepperDash.Core;
|
||||
using PepperDash.Essentials.Core;
|
||||
using System.Text.RegularExpressions;
|
||||
using Crestron.SimplSharp.Net.Http;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
|
||||
using Crestron.SimplSharp.CrestronSockets;
|
||||
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common
|
||||
{
|
||||
|
||||
/*****
|
||||
* TODO JTA: Add Polling
|
||||
* TODO JTA: Move all the registration commnads to the EvertEndpoint class.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
public class EvertzEndpointStatusServer : Device
|
||||
{
|
||||
public IBasicCommunication Communication { get; private set; }
|
||||
public CommunicationGather PortGather { get; private set; }
|
||||
public StatusMonitorBase CommunicationMonitor { get; private set; }
|
||||
public bool isSubscribed;
|
||||
public string Address;
|
||||
public GenericUdpServer Server;
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Shows received lines as hex
|
||||
/// </summary>
|
||||
public bool ShowHexResponse { get; set; }
|
||||
public Dictionary<string, EvertzEndpoint> Endpoints;
|
||||
public Dictionary<string, string> ServerIdByEndpointIp;
|
||||
|
||||
public EvertzEndpointStatusServer(string key, string name, GenericUdpServer server, EvertzEndpointStatusServerPropertiesConfig props) :
|
||||
base(key, name)
|
||||
{
|
||||
Server = server;
|
||||
Address = props.serverHostname;
|
||||
Server.DataRecievedExtra += new EventHandler<GenericUdpReceiveTextExtraArgs>(_Server_DataRecievedExtra);
|
||||
|
||||
Server.Connect();
|
||||
Endpoints = new Dictionary<string,EvertzEndpoint>();
|
||||
|
||||
//CrestronEnvironment.ProgramStatusEventHandler += new ProgramStatusEventHandler(CrestronEnvironment_ProgramStatusEventHandler);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//TODO JTA: Move this method and process over to the endpoint itself. return a bool.
|
||||
public bool RegisterEvertzEndpoint (EvertzEndpoint device)
|
||||
{
|
||||
|
||||
if (Endpoints.ContainsKey(device.Address) == false)
|
||||
{
|
||||
Endpoints.Add(device.Address, device);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void _Server_DataRecievedExtra(object sender, GenericUdpReceiveTextExtraArgs e)
|
||||
{
|
||||
Debug.Console(2, this, "_Server_DataRecievedExtra:\nIP:{0}\nPort:{1}\nText{2}\nBytes:{3} ", e.IpAddress, e.Port, e.Text, e.Bytes);
|
||||
}
|
||||
|
||||
public override bool CustomActivate()
|
||||
{
|
||||
/*
|
||||
Communication.Connect();
|
||||
CommunicationMonitor.StatusChange += (o, a) => { Debug.Console(2, this, "Communication monitor state: {0}", CommunicationMonitor.Status); };
|
||||
CommunicationMonitor.Start();
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public class EvertzPortRestResponse
|
||||
{
|
||||
public string id;
|
||||
public string name;
|
||||
public string type;
|
||||
public string value;
|
||||
|
||||
}
|
||||
|
||||
public class EvertsStatusRequesstResponse
|
||||
{
|
||||
public EvertzStatusDataResponse data;
|
||||
public string error;
|
||||
}
|
||||
|
||||
public class EvertzStatusDataResponse
|
||||
{
|
||||
public List<EvertzServerStatusResponse> servers;
|
||||
}
|
||||
|
||||
public class EvertzServerStatusResponse
|
||||
{
|
||||
public string id;
|
||||
public string name;
|
||||
public EvertsServerStausNotificationsResponse notify;
|
||||
|
||||
}
|
||||
public class EvertsServerStausNotificationsResponse
|
||||
{
|
||||
public string ip;
|
||||
public List<string> parameters;
|
||||
public string port;
|
||||
public string protocol;
|
||||
}
|
||||
public class EvertzEndpointStatusServerPropertiesConfig
|
||||
{
|
||||
|
||||
public ControlPropertiesConfig control { get; set; }
|
||||
public string serverHostname { get; set; }
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,337 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
using PepperDash.Core;
|
||||
using PepperDash.Essentials.Core;
|
||||
using System.Text.RegularExpressions;
|
||||
using Crestron.SimplSharp.Net.Http;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common
|
||||
{
|
||||
|
||||
public class EvertzEndpoint : Device
|
||||
{
|
||||
|
||||
|
||||
|
||||
public IBasicCommunication Communication { get; private set; }
|
||||
public CommunicationGather PortGather { get; private set; }
|
||||
public GenericCommunicationMonitor CommunicationMonitor { get; private set; }
|
||||
|
||||
private GenericHttpClient Client;
|
||||
public string userName;
|
||||
public string password;
|
||||
public string Address;
|
||||
private bool OnlineStatus;
|
||||
public BoolFeedback OnlineFeedback;
|
||||
public IntFeedback PresetFeedback;
|
||||
|
||||
|
||||
public bool isSubscribed;
|
||||
|
||||
|
||||
|
||||
CrestronQueue CommandQueue;
|
||||
|
||||
public Dictionary<string, EvertzEndpointPort> Ports;
|
||||
|
||||
private string _ControllerKey;
|
||||
|
||||
|
||||
private EvertzEndpointStatusServer StatusServer;
|
||||
private String StatusServerId;
|
||||
|
||||
/// <summary>
|
||||
/// Shows received lines as hex
|
||||
/// </summary>
|
||||
public bool ShowHexResponse { get; set; }
|
||||
|
||||
public EvertzEndpoint(string key, string name, EvertzEndpointPropertiesConfig props, string type) :
|
||||
base(key, name)
|
||||
{
|
||||
|
||||
|
||||
this.Address = props.address;
|
||||
Client = new GenericHttpClient(string.Format("{0}-GenericWebClient", name), string.Format("{0}-GenericWebClient", name), this.Address);
|
||||
Client.ResponseRecived += new EventHandler<GenericHttpClientEventArgs>(Client_ResponseRecived);
|
||||
Ports = new Dictionary<string, EvertzEndpointPort>();
|
||||
if (type.ToLower() == "mma10g-trs4k")
|
||||
{
|
||||
//create port hdmi 01
|
||||
EvertzEndpointPort hdmi1 = new EvertzEndpointPort("HDMI01", "131.0@s", "136.0@s");
|
||||
EvertzEndpointPort hdmi2 = new EvertzEndpointPort("HDMI02", "131.1@s", "136.1@s");
|
||||
// add to dictionay with all keys
|
||||
addPortToDictionary(hdmi1);
|
||||
addPortToDictionary(hdmi2);
|
||||
}
|
||||
_ControllerKey = null;
|
||||
if (props.controllerKey != null)
|
||||
{
|
||||
_ControllerKey = props.controllerKey;
|
||||
}
|
||||
AddPostActivationAction( () => {PostActivation();});
|
||||
CrestronEnvironment.ProgramStatusEventHandler += new ProgramStatusEventHandler(CrestronEnvironment_ProgramStatusEventHandler);
|
||||
if (props.CommunicationMonitorProperties != null)
|
||||
{
|
||||
CommunicationMonitor = new GenericCommunicationMonitor(this, Client, props.CommunicationMonitorProperties);
|
||||
}
|
||||
else
|
||||
{
|
||||
CommunicationMonitor = new GenericCommunicationMonitor(this, Client, 40000, 120000, 300000, "v.api/apis/EV/SERVERSTATUS");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Helper method
|
||||
/// </summary>
|
||||
/// <param name="port"></param>
|
||||
private void addPortToDictionary(EvertzEndpointPort port)
|
||||
{
|
||||
Ports.Add(port.PortName, port);
|
||||
Ports.Add(port.ResolutionVarID, port);
|
||||
Ports.Add(port.SyncVarID, port);
|
||||
//PollForState(port.SyncVarID);
|
||||
//PollForState(port.ResolutionVarID);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public override bool CustomActivate()
|
||||
{
|
||||
|
||||
// Create Device -> Constructor fires
|
||||
// PreActivations get called
|
||||
// CustomActivate Gets Called Anything that is involved with this single class Ex: Connection, Setup Feedback, Etc.
|
||||
// After this point all devices are ready for interaction
|
||||
// PostActivation gets called. Use this for interClass activation.
|
||||
CommunicationMonitor.Start();
|
||||
OnlineFeedback = new BoolFeedback(() => { return OnlineStatus; });
|
||||
|
||||
|
||||
//CrestronConsole.AddNewConsoleCommand(SendLine, "send" + Key, "", ConsoleAccessLevelEnum.AccessOperator);
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private void PostActivation()
|
||||
{
|
||||
Debug.Console(2, this, "EvertzEndpoint Post Activation");
|
||||
if (_ControllerKey != null)
|
||||
{
|
||||
StatusServer = DeviceManager.GetDeviceForKey(_ControllerKey) as EvertzEndpointStatusServer;
|
||||
StatusServer.RegisterEvertzEndpoint(this);
|
||||
|
||||
// RegisterStatusServer();
|
||||
// SendStatusRequest();
|
||||
}
|
||||
// PollAll();
|
||||
}
|
||||
|
||||
void CrestronEnvironment_ProgramStatusEventHandler(eProgramStatusEventType programEventType)
|
||||
{
|
||||
if (programEventType == eProgramStatusEventType.Stopping)
|
||||
{
|
||||
Debug.Console(1, this, "Program stopping. Disabling EvertzStatusServer");
|
||||
if (StatusServerId != null)
|
||||
{
|
||||
//UnregisterServer();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ProcessServerStatusRequest(EvertsStatusRequesstResponse status)
|
||||
{
|
||||
// var status = JsonConvert.DeserializeObject<EvertsStatusRequesstResponse>(SendStatusRequest());
|
||||
if (status.error != null)
|
||||
{
|
||||
|
||||
}
|
||||
else if (status.data != null)
|
||||
{
|
||||
foreach (var server in status.data.servers)
|
||||
{
|
||||
if (server.name == string.Format("{0}-{1}", this.Name, StatusServer.Address))
|
||||
{
|
||||
StatusServerId = server.id;
|
||||
Debug.Console(2, this, "EvertzEndpoint {0} StatusServer {1} Registered ID {2}", Name, StatusServer.Name, StatusServerId);
|
||||
/*
|
||||
|
||||
foreach (var port in Ports)
|
||||
{
|
||||
// TODO JTA: This needs a better check
|
||||
// you get a {"status": "success"} or "error": "error to register notification- Variable exists.."
|
||||
if (!server.notify.parameters.Contains(port.Value.ResolutionVarID))
|
||||
{
|
||||
RegisterForNotification(StatusServerId, port.Value.ResolutionVarID);
|
||||
}
|
||||
if (!server.notify.parameters.Contains(port.Value.ResolutionVarID))
|
||||
{
|
||||
RegisterForNotification(StatusServerId, port.Value.SyncVarID);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
StatusServerId = null;
|
||||
}
|
||||
}
|
||||
private void RegisterServerWithEndpoint()
|
||||
{
|
||||
/*
|
||||
var registrationResult = RegisterServer(StatusServer.Address, string.Format("{0}-{1}", this.Name, StatusServer.Address), StatusServer.Server.Port.ToString());
|
||||
Debug.Console(2, this, "EvertzEndpointStatusServer Registration Result with device {0}\n{1}", Address, registrationResult);
|
||||
if (registrationResult.Contains("success"))
|
||||
{
|
||||
RegisterStatusServer();
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Console(0, this, "EvertzEndpointStatusServer RegisterServerWithEndpoint with device {0}\n{1}", Address, registrationResult);
|
||||
|
||||
}
|
||||
* */
|
||||
}
|
||||
|
||||
public void PollAll()
|
||||
{
|
||||
string collection = "";
|
||||
foreach (var parameter in Ports)
|
||||
{
|
||||
if (parameter.Key.Contains("@"))
|
||||
{
|
||||
collection = collection + parameter.Key + ",";
|
||||
}
|
||||
}
|
||||
collection = collection.Substring(0, collection.Length - 1);
|
||||
SendGetRequest(collection);
|
||||
}
|
||||
public void PollForState(string varId)
|
||||
{
|
||||
try
|
||||
{
|
||||
SendGetRequest(varId);
|
||||
//var returnState = JsonConvert.DeserializeObject<EvertzPortRestResponse>(SendGetRequest(varId));
|
||||
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.Console(0, this, "PollForState {0}", e);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void ProcessGetParameterResponse(EvertzPortRestResponse response)
|
||||
{
|
||||
var PortObject = Ports[response.id];
|
||||
if (response.name == "Input Status")
|
||||
{
|
||||
if (response.value == "Missing") { PortObject.SyncDetected = false; }
|
||||
else { PortObject.SyncDetected = true; }
|
||||
}
|
||||
}
|
||||
public void SendGetRequest(string s)
|
||||
{
|
||||
Client.SendText("v.api/apis/EV/GET/parameter/{0}", s);
|
||||
}
|
||||
|
||||
public void SendStatusRequest()
|
||||
{
|
||||
Client.SendText("/v.api/apis/EV/SERVERSTATUS");
|
||||
}
|
||||
public void RegisterServer(string hostname, string servername, string port)
|
||||
{
|
||||
Client.SendText("v.api/apis/EV/SERVERADD/server/{0}/{1}/{2}/udp", hostname, servername, port);
|
||||
}
|
||||
public void UnregisterServer()
|
||||
{
|
||||
if (StatusServerId != null)
|
||||
{
|
||||
Client.SendTextNoResponse("v.api/apis/EV/SERVERDEL/server/{0}", StatusServerId);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO JTA: Craete a UnregisterServerFast using DispatchASync.
|
||||
public void RegisterForNotification(string varId)
|
||||
{
|
||||
Client.SendText("v.api/apis/EV/NOTIFYADD/parameter/{0}/{1}", StatusServerId, varId);
|
||||
}
|
||||
|
||||
|
||||
void Client_ResponseRecived(object sender, GenericHttpClientEventArgs e)
|
||||
{
|
||||
if (e.Error == HTTP_CALLBACK_ERROR.COMPLETED)
|
||||
{
|
||||
if (e.RequestPath.Contains("GET/parameter/"))
|
||||
{
|
||||
// Get Parameter response
|
||||
if (!e.ResponseText.Contains("["))
|
||||
ProcessGetParameterResponse(JsonConvert.DeserializeObject<EvertzPortRestResponse>(e.ResponseText));
|
||||
else if (e.ResponseText.Contains("["))
|
||||
{
|
||||
List<EvertzPortRestResponse> test = JsonConvert.DeserializeObject<List<EvertzPortRestResponse>>(e.ResponseText);
|
||||
foreach (var thing in test)
|
||||
{
|
||||
ProcessGetParameterResponse(thing);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
else if (e.RequestPath.Contains("SERVERSTATUS"))
|
||||
{
|
||||
PollAll();
|
||||
ProcessServerStatusRequest(JsonConvert.DeserializeObject<EvertsStatusRequesstResponse>(e.ResponseText));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public class EvertzPortsRestResponse
|
||||
{
|
||||
List<EvertzPortRestResponse> test;
|
||||
}
|
||||
public class EvertzPortRestResponse
|
||||
{
|
||||
public string id;
|
||||
public string name;
|
||||
public string type;
|
||||
public string value;
|
||||
|
||||
}
|
||||
|
||||
public class EvertzEndpointPort
|
||||
{
|
||||
public string PortName;
|
||||
public string SyncVarID;
|
||||
public string ResolutionVarID;
|
||||
public bool SyncDetected;
|
||||
public string Resolution;
|
||||
public BoolFeedback SyncDetectedFeedback;
|
||||
|
||||
public EvertzEndpointPort (string portName, string syncVarId, string resolutionVarId)
|
||||
{
|
||||
PortName = portName;
|
||||
SyncVarID = syncVarId;
|
||||
ResolutionVarID = resolutionVarId;
|
||||
SyncDetectedFeedback = new BoolFeedback(() => { return SyncDetected; });
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
|
||||
using PepperDash.Core;
|
||||
using PepperDash.Essentials.Core;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class EvertzEndpointPropertiesConfig
|
||||
{
|
||||
public CommunicationMonitorConfig CommunicationMonitorProperties { get; set; }
|
||||
|
||||
public ControlPropertiesConfig Control { get; set; }
|
||||
public string userName { get; set; }
|
||||
public string password { get; set; }
|
||||
public string address { get; set; }
|
||||
public string controllerKey { get; set; }
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common
|
||||
{
|
||||
public class EvertzEndpointVarIds
|
||||
{
|
||||
private string HdmiPort01SyncStatus = "136.0";
|
||||
}
|
||||
}
|
||||
@@ -107,21 +107,6 @@ namespace PepperDash.Essentials.Devices.Common
|
||||
properties.ToString());
|
||||
return new DigitalLogger(key, name, props);
|
||||
}
|
||||
else if (groupName == "evertzendpoint")
|
||||
{
|
||||
// var comm = CommFactory.CreateCommForDevice(dc);
|
||||
var props = JsonConvert.DeserializeObject<EvertzEndpointPropertiesConfig>(
|
||||
properties.ToString());
|
||||
return new EvertzEndpoint(key, name, props, typeName);
|
||||
}
|
||||
else if (typeName == "evertzendpointstatusserver")
|
||||
{
|
||||
var server = CommFactory.CreateCommForDevice(dc) as GenericUdpServer;
|
||||
|
||||
var props = JsonConvert.DeserializeObject<EvertzEndpointStatusServerPropertiesConfig>(
|
||||
properties.ToString());
|
||||
return new EvertzEndpointStatusServer(key, name, server, props);
|
||||
}
|
||||
else if (typeName == "genericaudiooutwithvolume")
|
||||
{
|
||||
var zone = dc.Properties.Value<uint>("zone");
|
||||
@@ -395,13 +380,6 @@ namespace PepperDash.Essentials.Devices.Common
|
||||
}
|
||||
|
||||
}
|
||||
//else if (typeName == "qscdsp")
|
||||
//{
|
||||
// var comm = CommFactory.CreateCommForDevice(dc);
|
||||
// var props = JsonConvert.DeserializeObject<QscDspPropertiesConfig>(
|
||||
// properties.ToString());
|
||||
// return new QscDsp(key, name, comm, props);
|
||||
//}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace PepperDash.Essentials.Devices.Common
|
||||
public string address;
|
||||
private bool OnlineStatus;
|
||||
public BoolFeedback OnlineFeedback;
|
||||
private ushort CurrentPreset;
|
||||
//private ushort CurrentPreset;
|
||||
public IntFeedback PresetFeedback;
|
||||
|
||||
public Dictionary<uint, DigitalLoggerCircuit> CircuitStatus;
|
||||
@@ -103,7 +103,7 @@ namespace PepperDash.Essentials.Devices.Common
|
||||
});
|
||||
CircuitIsCritical[circuit] = new BoolFeedback(() =>
|
||||
{
|
||||
if (CircuitStatus[circuit].critical != null)
|
||||
if (CircuitStatus.ContainsKey(circuit))
|
||||
{
|
||||
return CircuitStatus[circuit].critical;
|
||||
}
|
||||
@@ -114,7 +114,7 @@ namespace PepperDash.Essentials.Devices.Common
|
||||
});
|
||||
CircuitState[circuit] = new BoolFeedback(() =>
|
||||
{
|
||||
if (CircuitStatus[circuit].state != null)
|
||||
if (CircuitStatus.ContainsKey(circuit))
|
||||
{
|
||||
return CircuitStatus[circuit].state;
|
||||
}
|
||||
|
||||
@@ -979,8 +979,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
meeting.StartTime = b.StartTime;
|
||||
if (b.EndTime != null)
|
||||
meeting.EndTime = b.EndTime;
|
||||
if (b.IsPrivate != null)
|
||||
meeting.Privacy = b.IsPrivate ? eMeetingPrivacy.Private : eMeetingPrivacy.Public;
|
||||
|
||||
meeting.Privacy = b.IsPrivate ? eMeetingPrivacy.Private : eMeetingPrivacy.Public;
|
||||
|
||||
// No meeting.Calls data exists for Zoom Rooms. Leaving out for now.
|
||||
|
||||
|
||||
@@ -43,8 +43,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
|
||||
public bool CommDebuggingIsOn;
|
||||
|
||||
CTimer LoginMessageReceivedTimer;
|
||||
CTimer RetryConnectionTimer;
|
||||
//CTimer LoginMessageReceivedTimer;
|
||||
//CTimer RetryConnectionTimer;
|
||||
|
||||
/// <summary>
|
||||
/// Gets and returns the scaled volume of the codec
|
||||
|
||||
@@ -47,13 +47,13 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
|
||||
private bool isZooming;
|
||||
|
||||
private bool isFocusing;
|
||||
//private bool isFocusing;
|
||||
|
||||
private bool isMoving
|
||||
{
|
||||
get
|
||||
{
|
||||
return isPanning || isTilting || isZooming || isFocusing;
|
||||
return isPanning || isTilting || isZooming;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user