From 849675c5393bfbd0847ff96e66ba30bb84b9625c Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Tue, 12 Sep 2017 14:04:20 -0600 Subject: [PATCH 1/4] Updates to Video Codec Interfaces --- .../{IHasDialer.cs => CodecInterfaces.cs} | 20 +++++++++++++++++++ .../Devices/IHasSharing.cs | 4 +++- .../PepperDash_Essentials_Core.csproj | 2 +- .../VC/VideoCodecBase.cs | 8 +++++++- 4 files changed, 31 insertions(+), 3 deletions(-) rename Essentials Core/PepperDashEssentialsBase/Devices/{IHasDialer.cs => CodecInterfaces.cs} (65%) diff --git a/Essentials Core/PepperDashEssentialsBase/Devices/IHasDialer.cs b/Essentials Core/PepperDashEssentialsBase/Devices/CodecInterfaces.cs similarity index 65% rename from Essentials Core/PepperDashEssentialsBase/Devices/IHasDialer.cs rename to Essentials Core/PepperDashEssentialsBase/Devices/CodecInterfaces.cs index c4682abd..e3399d00 100644 --- a/Essentials Core/PepperDashEssentialsBase/Devices/IHasDialer.cs +++ b/Essentials Core/PepperDashEssentialsBase/Devices/CodecInterfaces.cs @@ -18,8 +18,28 @@ namespace PepperDash.Essentials.Core void AcceptCall(); void RejectCall(); + void SendDtmf(); + BoolFeedback InCallFeedback { get; } BoolFeedback IncomingCallFeedback { get; } + + + } + + public interface IHasCallHistory + { + // Add recent calls list + } + + public interface IHasDirectory + { + + } + + public interface IHasObtp + { + + // Upcoming Meeting warning event } } \ No newline at end of file diff --git a/Essentials Core/PepperDashEssentialsBase/Devices/IHasSharing.cs b/Essentials Core/PepperDashEssentialsBase/Devices/IHasSharing.cs index 317a188a..675c11c3 100644 --- a/Essentials Core/PepperDashEssentialsBase/Devices/IHasSharing.cs +++ b/Essentials Core/PepperDashEssentialsBase/Devices/IHasSharing.cs @@ -11,7 +11,9 @@ namespace PepperDash.Essentials.Core /// public interface IHasSharing { + void StartSharing(); + void StopSharing(); - BoolFeedback SharingSourceFeedback { get; } + StringFeedback SharingSourceFeedback { get; } } } \ No newline at end of file diff --git a/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj b/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj index e06834ec..94e66af1 100644 --- a/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj +++ b/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj @@ -103,7 +103,7 @@ - + diff --git a/Essentials Devices Common/Essentials Devices Common/VC/VideoCodecBase.cs b/Essentials Devices Common/Essentials Devices Common/VC/VideoCodecBase.cs index c0eddc21..75c0a67a 100644 --- a/Essentials Devices Common/Essentials Devices Common/VC/VideoCodecBase.cs +++ b/Essentials Devices Common/Essentials Devices Common/VC/VideoCodecBase.cs @@ -9,7 +9,7 @@ using PepperDash.Essentials.Core; namespace PepperDash.Essentials.Devices.VideoCodec { - public abstract class VideoCodecBase : Device, IRoutingSinkWithSwitching, IUsageTracking, IHasDialer //, ICodecAudio + public abstract class VideoCodecBase : Device, IRoutingSinkWithSwitching, IUsageTracking, IHasDialer, IHasSharing //, ICodecAudio { #region IUsageTracking Members @@ -101,5 +101,11 @@ namespace PepperDash.Essentials.Devices.VideoCodec public BoolFeedback PrivacyModeIsOnFeedback { get; private set; } #endregion + + #region IHasSharing Members + + public BoolFeedback SharingSourceFeedback { get; private set; } + + #endregion } } \ No newline at end of file From b6965fac0b9793e09fd9a2fc8dc2ea0a575eb5b0 Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Wed, 13 Sep 2017 16:05:19 -0600 Subject: [PATCH 2/4] Re-added VC/CiscoCodec classes --- .../Devices/CodecInterfaces.cs | 2 +- .../Essentials Devices Common.csproj | 4 ++ .../VC/{Cisco => CiscoCodec}/CiscoCodec.cs | 51 ++++++++++++++++--- .../VC/{Cisco => CiscoCodec}/Configuration.cs | 2 +- .../VC/{Cisco => CiscoCodec}/HttpApiServer.cs | 2 +- .../VC/{Cisco => CiscoCodec}/Status.cs | 2 +- .../VC/MockVC/MockVC.cs | 21 +++++--- .../VC/VideoCodecBase.cs | 13 +++-- .../PepperDashEssentials/ControlSystem.cs | 21 ++++---- .../VC/EssentialsCiscoSparkUiDriver.cs | 2 +- 10 files changed, 88 insertions(+), 32 deletions(-) rename Essentials Devices Common/Essentials Devices Common/VC/{Cisco => CiscoCodec}/CiscoCodec.cs (89%) rename Essentials Devices Common/Essentials Devices Common/VC/{Cisco => CiscoCodec}/Configuration.cs (97%) rename Essentials Devices Common/Essentials Devices Common/VC/{Cisco => CiscoCodec}/HttpApiServer.cs (94%) rename Essentials Devices Common/Essentials Devices Common/VC/{Cisco => CiscoCodec}/Status.cs (97%) diff --git a/Essentials Core/PepperDashEssentialsBase/Devices/CodecInterfaces.cs b/Essentials Core/PepperDashEssentialsBase/Devices/CodecInterfaces.cs index e3399d00..5135ac07 100644 --- a/Essentials Core/PepperDashEssentialsBase/Devices/CodecInterfaces.cs +++ b/Essentials Core/PepperDashEssentialsBase/Devices/CodecInterfaces.cs @@ -18,7 +18,7 @@ namespace PepperDash.Essentials.Core void AcceptCall(); void RejectCall(); - void SendDtmf(); + void SendDtmf(string digit); BoolFeedback InCallFeedback { get; } BoolFeedback IncomingCallFeedback { get; } diff --git a/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.csproj b/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.csproj index f7a4fab5..f0c31484 100644 --- a/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.csproj +++ b/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.csproj @@ -127,7 +127,11 @@ + + + + diff --git a/Essentials Devices Common/Essentials Devices Common/VC/Cisco/CiscoCodec.cs b/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/CiscoCodec.cs similarity index 89% rename from Essentials Devices Common/Essentials Devices Common/VC/Cisco/CiscoCodec.cs rename to Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/CiscoCodec.cs index 56397284..a069ebe9 100644 --- a/Essentials Devices Common/Essentials Devices Common/VC/Cisco/CiscoCodec.cs +++ b/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/CiscoCodec.cs @@ -13,13 +13,14 @@ using Cisco_SX80_Corporate_Phone_Book; using PepperDash.Core; using PepperDash.Essentials.Core; -namespace PepperDash.Essentials.Devices.VideoCodec.Cisco +namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco { enum eCommandType { SessionStart, SessionEnd, Command, GetStatus, GetConfiguration }; public class CiscoCodec : VideoCodecBase { public IBasicCommunication Communication { get; private set; } + public CommunicationGather PortGather { get; private set; } public StatusMonitorBase CommunicationMonitor { get; private set; } @@ -48,6 +49,10 @@ namespace PepperDash.Essentials.Devices.VideoCodec.Cisco : base(key, name) { Communication = comm; + + PortGather = new CommunicationGather(Communication, "\x0d\x0a"); + PortGather.LineReceived += this.Port_LineReceived; + Communication.TextReceived += new EventHandler(Communication_TextReceived); ServerPort = serverPort; @@ -66,12 +71,18 @@ namespace PepperDash.Essentials.Devices.VideoCodec.Cisco } + + /// /// Starts the HTTP feedback server and syncronizes state of codec /// /// public override bool CustomActivate() { + CrestronConsole.AddNewConsoleCommand(SendText, "send" + Key, "", ConsoleAccessLevelEnum.AccessOperator); + + Communication.Connect(); + Debug.Console(1, this, "Starting Cisco API Server"); Server.Start(ServerPort); @@ -113,6 +124,19 @@ namespace PepperDash.Essentials.Devices.VideoCodec.Cisco return base.CustomActivate(); } + void Port_LineReceived(object dev, GenericCommMethodReceiveTextArgs args) + { + if (Debug.Level == 1) + Debug.Console(1, this, "RX: '{0}'", + ComTextHelper.GetEscapedText(args.Text)); + } + + public void SendText(string command) + { + Debug.Console(1, this, "Sending: '{{0}'", command); + Communication.SendText(command + "\0xd\0xa"); + } + private void StartHttpsSession() { SendHttpCommand("", eCommandType.SessionStart); @@ -190,7 +214,7 @@ namespace PepperDash.Essentials.Devices.VideoCodec.Cisco Client.DispatchAsync(request, PostConnectionCallback); } - void PostConnectionCallback(HttpsClientResponse resp, HTTP_CALLBACK_ERROR err) + void PostConnectionCallback(HttpsClientResponse resp, HTTPS_CALLBACK_ERROR err) { try { @@ -310,11 +334,11 @@ namespace PepperDash.Essentials.Devices.VideoCodec.Cisco protected override Func PrivacyModeFeedbackFunc { get { return () => false; } } - public override void Dial() + public override void Dial(string s) { - - } - + + } + public override void EndCall() { @@ -330,6 +354,21 @@ namespace PepperDash.Essentials.Devices.VideoCodec.Cisco } + public override void SendDtmf(string s) + { + + } + + public override void StartSharing() + { + + } + + public override void StopSharing() + { + + } + public override void ReceiveMuteOff() { diff --git a/Essentials Devices Common/Essentials Devices Common/VC/Cisco/Configuration.cs b/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/Configuration.cs similarity index 97% rename from Essentials Devices Common/Essentials Devices Common/VC/Cisco/Configuration.cs rename to Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/Configuration.cs index a88b9b70..7a866a83 100644 --- a/Essentials Devices Common/Essentials Devices Common/VC/Cisco/Configuration.cs +++ b/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/Configuration.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using Crestron.SimplSharp; -namespace PepperDash.Essentials.Devices.VideoCodec.Cisco +namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco { public class CiscoCodecConfiguration { diff --git a/Essentials Devices Common/Essentials Devices Common/VC/Cisco/HttpApiServer.cs b/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/HttpApiServer.cs similarity index 94% rename from Essentials Devices Common/Essentials Devices Common/VC/Cisco/HttpApiServer.cs rename to Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/HttpApiServer.cs index 4f5f3fd5..4e25f732 100644 --- a/Essentials Devices Common/Essentials Devices Common/VC/Cisco/HttpApiServer.cs +++ b/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/HttpApiServer.cs @@ -8,7 +8,7 @@ using Crestron.SimplSharp.Net.Http; using PepperDash.Core; -namespace PepperDash.Essentials.Devices.VideoCodec.Cisco +namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco { public class HttpApiServer { diff --git a/Essentials Devices Common/Essentials Devices Common/VC/Cisco/Status.cs b/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/Status.cs similarity index 97% rename from Essentials Devices Common/Essentials Devices Common/VC/Cisco/Status.cs rename to Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/Status.cs index ecf54edd..11e608a2 100644 --- a/Essentials Devices Common/Essentials Devices Common/VC/Cisco/Status.cs +++ b/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/Status.cs @@ -5,7 +5,7 @@ using System.Text; using Crestron.SimplSharp; using Crestron.SimplSharp.CrestronXml.Serialization; -namespace PepperDash.Essentials.Devices.VideoCodec.Cisco +namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco { public class CiscoCodecStatus { diff --git a/Essentials Devices Common/Essentials Devices Common/VC/MockVC/MockVC.cs b/Essentials Devices Common/Essentials Devices Common/VC/MockVC/MockVC.cs index d8f11150..176070c3 100644 --- a/Essentials Devices Common/Essentials Devices Common/VC/MockVC/MockVC.cs +++ b/Essentials Devices Common/Essentials Devices Common/VC/MockVC/MockVC.cs @@ -60,13 +60,12 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec /// /// Makes horrible tones go out on the wire! /// - /// - public void SendDTMF(string s) - { - + /// + public override void SendDtmf(string s) + { + } - public override void EndCall() { _InCall = false; @@ -87,10 +86,18 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec public override void RejectCall() { + } + + public override void StartSharing() + { + + } + + public override void StopSharing() + { + } - - public override void ExecuteSwitch(object selector) { diff --git a/Essentials Devices Common/Essentials Devices Common/VC/VideoCodecBase.cs b/Essentials Devices Common/Essentials Devices Common/VC/VideoCodecBase.cs index 75c0a67a..61e00b86 100644 --- a/Essentials Devices Common/Essentials Devices Common/VC/VideoCodecBase.cs +++ b/Essentials Devices Common/Essentials Devices Common/VC/VideoCodecBase.cs @@ -7,7 +7,7 @@ using Crestron.SimplSharp; using PepperDash.Core; using PepperDash.Essentials.Core; -namespace PepperDash.Essentials.Devices.VideoCodec +namespace PepperDash.Essentials.Devices.Common.VideoCodec { public abstract class VideoCodecBase : Device, IRoutingSinkWithSwitching, IUsageTracking, IHasDialer, IHasSharing //, ICodecAudio { @@ -56,11 +56,15 @@ namespace PepperDash.Essentials.Devices.VideoCodec UsageTracker.EndDeviceUsage(); } } + #region IHasDialer Members - public abstract void Dial(); + public abstract void Dial(string s); public abstract void EndCall(); public abstract void AcceptCall(); public abstract void RejectCall(); + public abstract void SendDtmf(string s); + + #endregion public virtual List Feedbacks { @@ -104,7 +108,10 @@ namespace PepperDash.Essentials.Devices.VideoCodec #region IHasSharing Members - public BoolFeedback SharingSourceFeedback { get; private set; } + public abstract void StartSharing(); + public abstract void StopSharing(); + + public StringFeedback SharingSourceFeedback { get; private set; } #endregion } diff --git a/Essentials/PepperDashEssentials/ControlSystem.cs b/Essentials/PepperDashEssentials/ControlSystem.cs index 9e995b5e..f33d6198 100644 --- a/Essentials/PepperDashEssentials/ControlSystem.cs +++ b/Essentials/PepperDashEssentials/ControlSystem.cs @@ -57,17 +57,6 @@ namespace PepperDash.Essentials //PortalSync = new PepperDashPortalSyncClient(); - - // CODEC TESTING - //GenericSshClient TestCodecClient = new GenericSshClient("TestCodec-1--SshClient", "10.11.50.135", 22, "crestron", "2H3Zu&OvgXp6"); - - //PepperDash.Essentials.Devices.VideoCodec.Cisco.CiscoCodec TestCodec = - // new PepperDash.Essentials.Devices.VideoCodec.Cisco.CiscoCodec("TestCodec-1", "Cisco Spark Room Kit", TestCodecClient, 8080); - - //TestCodec.CustomActivate(); - - // CODEC TESTING - Debug.Console(0, "Starting Essentials load from configuration"); ConfigReader.LoadConfig2(); LoadDevices(); @@ -137,6 +126,16 @@ namespace PepperDash.Essentials else Debug.Console(0, "WARNING: Cannot load unknown device type '{0}', key '{1}'.", devConf.Type, devConf.Key); } + + // CODEC TESTING + GenericSshClient TestCodecClient = new GenericSshClient("TestCodec-1--SshClient", "10.11.50.135", 22, "crestron", "2H3Zu&OvgXp6"); + + PepperDash.Essentials.Devices.Common.VideoCodec.Cisco.CiscoCodec TestCodec = + new PepperDash.Essentials.Devices.Common.VideoCodec.Cisco.CiscoCodec("TestCodec-1", "Cisco Spark Room Kit", TestCodecClient, 8080); + + TestCodec.CustomActivate(); + + // CODEC TESTING } /// diff --git a/Essentials/PepperDashEssentials/UIDrivers/VC/EssentialsCiscoSparkUiDriver.cs b/Essentials/PepperDashEssentials/UIDrivers/VC/EssentialsCiscoSparkUiDriver.cs index b61f39f6..d4ca1f1c 100644 --- a/Essentials/PepperDashEssentials/UIDrivers/VC/EssentialsCiscoSparkUiDriver.cs +++ b/Essentials/PepperDashEssentials/UIDrivers/VC/EssentialsCiscoSparkUiDriver.cs @@ -8,7 +8,7 @@ using Crestron.SimplSharpPro.DeviceSupport; using PepperDash.Core; using PepperDash.Essentials; using PepperDash.Essentials.Core; -using PepperDash.Essentials.Core.SmartObjects; +using PepperDash.Essentials.Core.SmartObjects; using PepperDash.Essentials.Devices.Common.VideoCodec; namespace PepperDash.Essentials.UIDrivers.VC From a9424cde225be3bd5e81f476052e5922bce76756 Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Thu, 14 Sep 2017 09:16:18 -0600 Subject: [PATCH 3/4] JSON feedback deserialization working --- .../Essentials Devices Common.csproj | 4 +- .../VC/CiscoCodec/CiscoCodec.cs | 569 ++-- .../VC/CiscoCodec/Configuration.cs | 1857 ++++++------- .../VC/CiscoCodec/Status.cs | 2292 +++++++++++------ .../VC/MockVC/MockVC.cs | 469 ++-- 5 files changed, 2874 insertions(+), 2317 deletions(-) diff --git a/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.csproj b/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.csproj index f0c31484..9edcb434 100644 --- a/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.csproj +++ b/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.csproj @@ -46,9 +46,9 @@ off - + False - ..\..\..\Crestron Cisco OBTP\OBTP\bin\Cisco One Button To Push.dll + ..\..\..\PTD_Cisco_One_Button_To_Push\bin\Cisco One Button To Push.dll False diff --git a/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/CiscoCodec.cs b/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/CiscoCodec.cs index a069ebe9..bc3ee7b8 100644 --- a/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/CiscoCodec.cs +++ b/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/CiscoCodec.cs @@ -21,6 +21,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco { public IBasicCommunication Communication { get; private set; } public CommunicationGather PortGather { get; private set; } + public CommunicationGather JsonGather { get; private set; } public StatusMonitorBase CommunicationMonitor { get; private set; } @@ -28,21 +29,31 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco private Corporate_Phone_Book PhoneBook; - private CiscoCodecConfiguration.Configuration CodecConfiguration; + private CiscoCodecConfiguration.RootObject CodecConfiguration; - private CiscoCodecStatus.Status CodecStatus; + private CiscoCodecStatus.RootObject CodecStatus; - private HttpsClient Client; + //private HttpsClient Client; - private HttpApiServer Server; + //private HttpApiServer Server; - private int ServerPort; + //private int ServerPort; - private string CodecUrl; + //private string CodecUrl; - private string HttpSessionId; + //private string HttpSessionId; - private string FeedbackRegistrationExpression; + //private string FeedbackRegistrationExpression; + + private string CliFeedbackRegistrationExpression; + + private CodecSyncState SyncState; + + private StringBuilder JsonMessage; + + private bool JsonFeedbackMessageIsIncoming; + + string Delimiter = "\r\n"; // Constructor for IBasicCommunication public CiscoCodec(string key, string name, IBasicCommunication comm, int serverPort) @@ -50,29 +61,33 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco { Communication = comm; - PortGather = new CommunicationGather(Communication, "\x0d\x0a"); + SyncState = new CodecSyncState(key + "--sync"); + + PortGather = new CommunicationGather(Communication, "\r\n"); + PortGather.IncludeDelimiter = true; PortGather.LineReceived += this.Port_LineReceived; + + //JsonGather = new CommunicationGather(Communication, "}\r\n\r\n"); + //JsonGather.IncludeDelimiter = true; + //JsonGather.LineReceived += new EventHandler(JsonGather_LineReceived); Communication.TextReceived += new EventHandler(Communication_TextReceived); - ServerPort = serverPort; + //ServerPort = serverPort; CodecObtp = new CiscoOneButtonToPush(); PhoneBook = new Corporate_Phone_Book(); - CodecConfiguration = new CiscoCodecConfiguration.Configuration(); + CodecConfiguration = new CiscoCodecConfiguration.RootObject(); - CodecStatus = new CiscoCodecStatus.Status(); + CodecStatus = new CiscoCodecStatus.RootObject(); - Client = new HttpsClient(); + //Client = new HttpsClient(); - Server = new HttpApiServer(); - + //Server = new HttpApiServer(); } - - /// /// Starts the HTTP feedback server and syncronizes state of codec /// @@ -82,38 +97,54 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco CrestronConsole.AddNewConsoleCommand(SendText, "send" + Key, "", ConsoleAccessLevelEnum.AccessOperator); Communication.Connect(); - + var socket = Communication as ISocketStatus; + if (socket != null) + { + socket.ConnectionChange += new EventHandler(socket_ConnectionChange); + } Debug.Console(1, this, "Starting Cisco API Server"); - Server.Start(ServerPort); + //Server.Start(ServerPort); - Server.ApiRequest += new EventHandler(Server_ApiRequest); + //Server.ApiRequest += new EventHandler(Server_ApiRequest); - CodecUrl = string.Format("http://{0}", (Communication as GenericSshClient).Hostname); + //CodecUrl = string.Format("http://{0}", (Communication as GenericSshClient).Hostname); CommunicationMonitor = new GenericCommunicationMonitor(this, Communication, 2000, 120000, 300000, "xStatus SystemUnit Software Version\r"); DeviceManager.AddDevice(CommunicationMonitor); - Client = new HttpsClient(); + //Client = new HttpsClient(); - Client.Verbose = true; - Client.KeepAlive = true; + //Client.Verbose = true; + //Client.KeepAlive = true; // Temp feedback registration - FeedbackRegistrationExpression = - "1" + - string.Format("http://{0}:{1}/cisco/api", CrestronEthernetHelper.GetEthernetParameter(CrestronEthernetHelper.ETHERNET_PARAMETER_TO_GET.GET_CURRENT_IP_ADDRESS, 0), ServerPort) + - "JSON" + - "/Configuration" + - "/Event/CallDisconnect" + - "/Status/Call" + - "" + - "" + - ""; + //FeedbackRegistrationExpression = + // "1" + + // string.Format("http://{0}:{1}/cisco/api", CrestronEthernetHelper.GetEthernetParameter(CrestronEthernetHelper.ETHERNET_PARAMETER_TO_GET.GET_CURRENT_IP_ADDRESS, 0), ServerPort) + + // "JSON" + + // "/Configuration" + + // "/Event/CallDisconnect" + + // "/Status/Call" + + // "" + + // "" + + // ""; - StartHttpsSession(); + string prefix = "xFeedback register "; + CliFeedbackRegistrationExpression = + prefix + "/Configuration" + Delimiter + + prefix + "/Status/Audio" + Delimiter + + prefix + "/Status/Call" + Delimiter + + prefix + "/Status/Cameras/SpeakerTrack" + Delimiter + + prefix + "/Status/RoomAnalytics" + Delimiter + + prefix + "/Status/Standby" + Delimiter + + prefix + "/Status/Video/Selfview" + Delimiter + + prefix + "/Bookings" + Delimiter + + prefix + "/Event/CallDisconnect" + Delimiter; + + //StartHttpsSession(); //CodecObtp.Initialize(); @@ -124,189 +155,295 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco return base.CustomActivate(); } + void socket_ConnectionChange(object sender, GenericSocketStatusChageEventArgs e) + { + // Reset sync status on disconnect + if (!e.Client.IsConnected) + SyncState.CodecDisconnected(); + } + + void Port_LineReceived(object dev, GenericCommMethodReceiveTextArgs args) { if (Debug.Level == 1) - Debug.Console(1, this, "RX: '{0}'", - ComTextHelper.GetEscapedText(args.Text)); + { + if(!JsonFeedbackMessageIsIncoming) + Debug.Console(1, this, "RX: '{0}'", args.Text); + } + + if (args.Text == "{" + Delimiter) // Check for the beginning of a new JSON message + { + JsonFeedbackMessageIsIncoming = true; + + Debug.Console(1, this, "Incoming JSON message..."); + + JsonMessage = new StringBuilder(); + } + else if (args.Text == "}" + Delimiter) // Check for the end of a JSON message + { + JsonFeedbackMessageIsIncoming = false; + + JsonMessage.Append(args.Text); + + Debug.Console(1, this, "Complete JSON Received:\n{0}", JsonMessage.ToString()); + + // Forward the complete message to be deserialized + DeserializeResponse(JsonMessage.ToString()); + return; + } + + if(JsonFeedbackMessageIsIncoming) + { + JsonMessage.Append(args.Text); + + //Debug.Console(1, this, "Building JSON:\n{0}", JsonMessage.ToString()); + return; + } + + if (!SyncState.InitialSyncComplete) + { + switch (args.Text.Trim()) + { + case "*r Login successful": + { + SendText("xPreferences outputmode json"); + break; + } + case "xPreferences outputmode json": + { + if(!SyncState.InitialStatusMessageWasReceived) + SendText("xStatus"); + break; + } + case "xFeedback Register": + { + SyncState.FeedbackRegistered(); + break; + } + } + } + } + + void JsonGather_LineReceived(object sender, GenericCommMethodReceiveTextArgs e) + { + //Debug.Console(1, this, "JSON repsonse length: {0}", e.Text.Length); + + var startPos = e.Text.IndexOf("{"); + var json = e.Text.Substring(startPos, e.Text.Length - startPos); + + //Debug.Console(1, this, "First curly brace found at position {0}. Substring will start at position {1} and continue for {2} characters", startPos, startPos, e.Text.Length - startPos); + + Debug.Console(1, this, "JSON received:\n{0}", json); + + + DeserializeResponse(json); + + } public void SendText(string command) { - Debug.Console(1, this, "Sending: '{{0}'", command); - Communication.SendText(command + "\0xd\0xa"); + Debug.Console(1, this, "Sending: '{0}'", command); + Communication.SendText(command + "\x0d\x0a"); } - private void StartHttpsSession() - { - SendHttpCommand("", eCommandType.SessionStart); - } + //private void StartHttpsSession() + //{ + // SendHttpCommand("", eCommandType.SessionStart); + //} - private void EndHttpsSession() - { - SendHttpCommand("", eCommandType.SessionEnd); - } + //private void EndHttpsSession() + //{ + // SendHttpCommand("", eCommandType.SessionEnd); + //} - private void SendHttpCommand(string command, eCommandType commandType) - { - HttpsClientRequest request = new HttpsClientRequest(); + //private void SendHttpCommand(string command, eCommandType commandType) + //{ + // //HttpsClientRequest request = new HttpsClientRequest(); - string urlSuffix = null; + // //string urlSuffix = null; - Client.UserName = null; - Client.Password = null; + // //Client.UserName = null; + // //Client.Password = null; - Client.PeerVerification = false; - Client.HostVerification = false; + // //Client.PeerVerification = false; + // //Client.HostVerification = false; - request.RequestType = RequestType.Post; + // //request.RequestType = RequestType.Post; - if(!string.IsNullOrEmpty(HttpSessionId)) - request.Header.SetHeaderValue("Cookie", HttpSessionId); + // //if(!string.IsNullOrEmpty(HttpSessionId)) + // // request.Header.SetHeaderValue("Cookie", HttpSessionId); - switch (commandType) - { - case eCommandType.Command: - { - urlSuffix = "/putxml"; - request.ContentString = command; - request.Header.SetHeaderValue("Content-Type", "text/xml"); - break; - } - case eCommandType.SessionStart: - { + // //switch (commandType) + // //{ + // // case eCommandType.Command: + // // { + // // urlSuffix = "/putxml"; + // // request.ContentString = command; + // // request.Header.SetHeaderValue("Content-Type", "text/xml"); + // // break; + // // } + // // case eCommandType.SessionStart: + // // { - urlSuffix = "/xmlapi/session/begin"; + // // urlSuffix = "/xmlapi/session/begin"; - Client.UserName = (Communication as GenericSshClient).Username; - Client.Password = (Communication as GenericSshClient).Password; + // // Client.UserName = (Communication as GenericSshClient).Username; + // // Client.Password = (Communication as GenericSshClient).Password; - break; - } - case eCommandType.SessionEnd: - { - urlSuffix = "/xmlapi/session/end"; - request.Header.SetHeaderValue("Cookie", HttpSessionId); - break; - } - case eCommandType.GetStatus: - { - request.RequestType = RequestType.Get; - request.Header.SetHeaderValue("Content-Type", "text/xml"); - urlSuffix = "/getxml?location=/Status"; - break; - } - case eCommandType.GetConfiguration: - { - request.RequestType = RequestType.Get; - request.Header.SetHeaderValue("Content-Type", "text/xml"); - urlSuffix = "/getxml?location=/Configuration"; - break; - } - } + // // break; + // // } + // // case eCommandType.SessionEnd: + // // { + // // urlSuffix = "/xmlapi/session/end"; + // // request.Header.SetHeaderValue("Cookie", HttpSessionId); + // // break; + // // } + // // case eCommandType.GetStatus: + // // { + // // request.RequestType = RequestType.Get; + // // request.Header.SetHeaderValue("Content-Type", "text/xml"); + // // urlSuffix = "/getxml?location=/Status"; + // // break; + // // } + // // case eCommandType.GetConfiguration: + // // { + // // request.RequestType = RequestType.Get; + // // request.Header.SetHeaderValue("Content-Type", "text/xml"); + // // urlSuffix = "/getxml?location=/Configuration"; + // // break; + // // } + // //} - var requestUrl = CodecUrl + urlSuffix; - request.Header.RequestVersion = "HTTP/1.1"; - request.Url.Parse(requestUrl); + // //var requestUrl = CodecUrl + urlSuffix; + // //request.Header.RequestVersion = "HTTP/1.1"; + // //request.Url.Parse(requestUrl); - Debug.Console(1, this, "Sending HTTP request to Cisco Codec at {0}\nHeader:\n{1}\nContent:\n{2}", requestUrl, request.Header, request.ContentString); + // //Debug.Console(1, this, "Sending HTTP request to Cisco Codec at {0}\nHeader:\n{1}\nContent:\n{2}", requestUrl, request.Header, request.ContentString); - Client.DispatchAsync(request, PostConnectionCallback); - } + // //Client.DispatchAsync(request, PostConnectionCallback); + //} - void PostConnectionCallback(HttpsClientResponse resp, HTTPS_CALLBACK_ERROR err) + //void PostConnectionCallback(HttpsClientResponse resp, HTTPS_CALLBACK_ERROR err) + //{ + // //try + // //{ + // // if (resp != null) + // // { + // // if (resp.Code == 200) + // // { + // // Debug.Console(1, this, "Http Post to Cisco Codec Successful. Code: {0}\nContent: {1}", resp.Code, resp.ContentString); + + // // if (resp.ContentString.IndexOf("") > 1) + // // { + // // // Get the initial configruation for sync purposes + // // SendHttpCommand("", eCommandType.GetConfiguration); + // // } + // // else + // // { + // // try + // // { + // // if (resp.ContentString.IndexOf("") > -1) + // // { + // // XmlReaderSettings settings = new XmlReaderSettings(); + + // // XmlReader reader = new XmlReader(resp.ContentString, settings); + + // // CodecConfiguration = CrestronXMLSerialization.DeSerializeObject(reader); + + // // //Debug.Console(1, this, "Product Name: {0} Software Version: {1} ApiVersion: {2}", CodecConfiguration.Configuration.Product, CodecConfiguration.Version, CodecConfiguration.ApiVersion); + + // // // Get the initial status for sync purposes + // // SendHttpCommand("", eCommandType.GetStatus); + // // } + // // else if (resp.ContentString.IndexOf("") > -1) + // // { + // // XmlReaderSettings settings = new XmlReaderSettings(); + + // // XmlReader reader = new XmlReader(resp.ContentString, settings); + + // // CodecStatus = CrestronXMLSerialization.DeSerializeObject(reader); + // // //Debug.Console(1, this, "Product Name: {0} Software Version: {1} ApiVersion: {2} Volume: {3}", CodecStatus.Product, CodecStatus.Version, CodecStatus.ApiVersion, CodecStatus.Audio.Volume); + // // } + // // } + // // catch (Exception ex) + // // { + // // Debug.Console(1, this, "Error Deserializing XML document from codec: {0}", ex); + // // } + // // } + // // } + // // else if (resp.Code == 204) + // // { + // // Debug.Console(1, this, "Response Code: {0}\nHeader:\n{1}Content:\n{1}", resp.Code, resp.Header, resp.ContentString); + + // // HttpSessionId = resp.Header.GetHeaderValue("Set-Cookie"); + // // //var chunks = HttpSessionId.Split(';'); + // // //HttpSessionId = chunks[0]; + // // //HttpSessionId = HttpSessionId.Substring(HttpSessionId.IndexOf("=") + 1); + + + // // // Register for feedbacks once we have a valid session + // // SendHttpCommand(FeedbackRegistrationExpression, eCommandType.Command); + // // } + // // else + // // { + // // Debug.Console(1, this, "Response Code: {0}\nHeader:\n{1}Content:\n{1}Err:\n{2}", resp.Code, resp.Header, resp.ContentString, err); + // // } + // // } + // // else + // // Debug.Console(1, this, "Null response received from server"); + // //} + // //catch (Exception e) + // //{ + // // Debug.Console(1, this, "Error Initializing HTTPS Client: {0}", e); + // //} + //} + + //void Server_ApiRequest(object sender, Crestron.SimplSharp.Net.Http.OnHttpRequestArgs e) + //{ + // Debug.Console(1, this, "Api Reqeust from Codec: {0}", e.Request.ContentString); + // e.Response.Code = 200; + // e.Response.ContentString = "OK"; + + // DeserializeResponse(e.Request.ContentString); + //} + + void DeserializeResponse(string response) { try { - if (resp != null) + // Serializer settings. We want to ignore null values and mising members + JsonSerializerSettings settings = new JsonSerializerSettings(); + settings.NullValueHandling = NullValueHandling.Ignore; + settings.MissingMemberHandling = MissingMemberHandling.Ignore; + settings.ObjectCreationHandling = ObjectCreationHandling.Auto; + + if (response.IndexOf("\"Status\":{") > -1) { - if (resp.Code == 200) + JsonConvert.PopulateObject(response, CodecStatus); + + if (!SyncState.InitialStatusMessageWasReceived) { - Debug.Console(1, this, "Http Post to Cisco Codec Successful. Code: {0}\nContent: {1}", resp.Code, resp.ContentString); - - if (resp.ContentString.IndexOf("") > 1) - { - // Get the initial configruation for sync purposes - SendHttpCommand("", eCommandType.GetConfiguration); - } - else - { - try - { - if (resp.ContentString.IndexOf("") > -1) - { - XmlReaderSettings settings = new XmlReaderSettings(); - - XmlReader reader = new XmlReader(resp.ContentString, settings); - - CodecConfiguration = CrestronXMLSerialization.DeSerializeObject(reader); - - Debug.Console(1, this, "Product Name: {0} Software Version: {1} ApiVersion: {2}", CodecConfiguration.Product, CodecConfiguration.Version, CodecConfiguration.ApiVersion); - - // Get the initial status for sync purposes - SendHttpCommand("", eCommandType.GetStatus); - } - else if (resp.ContentString.IndexOf("") > -1) - { - XmlReaderSettings settings = new XmlReaderSettings(); - - XmlReader reader = new XmlReader(resp.ContentString, settings); - - CodecStatus = CrestronXMLSerialization.DeSerializeObject(reader); - - Debug.Console(1, this, "Product Name: {0} Software Version: {1} ApiVersion: {2} Volume: {3}", CodecStatus.Product, CodecStatus.Version, CodecStatus.ApiVersion, CodecStatus.Audio.Volume); - } - } - catch (Exception ex) - { - Debug.Console(1, this, "Error Deserializing XML document from codec: {0}", ex); - } - } - } - else if (resp.Code == 204) - { - Debug.Console(1, this, "Response Code: {0}\nHeader:\n{1}Content:\n{1}", resp.Code, resp.Header, resp.ContentString); - - HttpSessionId = resp.Header.GetHeaderValue("Set-Cookie"); - //var chunks = HttpSessionId.Split(';'); - //HttpSessionId = chunks[0]; - //HttpSessionId = HttpSessionId.Substring(HttpSessionId.IndexOf("=") + 1); - - - // Register for feedbacks once we have a valid session - SendHttpCommand(FeedbackRegistrationExpression, eCommandType.Command); - } - else - { - Debug.Console(1, this, "Response Code: {0}\nHeader:\n{1}Content:\n{1}Err:\n{2}", resp.Code, resp.Header, resp.ContentString, err); + SyncState.InitialStatusMessageReceived(); + if(!SyncState.InitialConfigurationMessageWasReceived) + SendText("xConfiguration"); } } - else - Debug.Console(1, this, "Null response received from server"); - } - catch (Exception e) - { - Debug.Console(1, this, "Error Initializing HTTPS Client: {0}", e); - } - } + else if (response.IndexOf("\"Configuration\":{") > -1) + { + JsonConvert.PopulateObject(response, CodecConfiguration); - void Server_ApiRequest(object sender, Crestron.SimplSharp.Net.Http.OnHttpRequestArgs e) - { - Debug.Console(1, this, "Api Reqeust from Codec: {0}", e.Request.ContentString); - e.Response.Code = 200; - e.Response.ContentString = "OK"; + if (!SyncState.InitialConfigurationMessageWasReceived) + { + SyncState.InitialConfigurationMessageReceived(); + if (!SyncState.FeedbackWasRegistered) + { + SendText(CliFeedbackRegistrationExpression); + } + } - try - { - // Serializer settings. We want to ignore null values and mising members - JsonSerializerSettings settings = new JsonSerializerSettings(); - settings.NullValueHandling = NullValueHandling.Ignore; - settings.MissingMemberHandling = MissingMemberHandling.Ignore; - - if (e.Request.ContentString.IndexOf("\"Configuration\":{") > -1) - CodecConfiguration = JsonConvert.DeserializeObject(e.Request.ContentString, settings); - else if (e.Request.ContentString.IndexOf("\"Status\":{") > -1) - CodecStatus = JsonConvert.DeserializeObject(e.Request.ContentString, settings); + } + } catch (Exception ex) { @@ -424,4 +561,66 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco } } + + /// + /// Tracks the initial sycnronization state of the codec when making a connection + /// + public class CodecSyncState : IKeyed + { + public string Key { get; private set; } + + public bool InitialSyncComplete { get; private set; } + + public bool InitialStatusMessageWasReceived { get; private set; } + + public bool InitialConfigurationMessageWasReceived { get; private set; } + + public bool FeedbackWasRegistered { get; private set; } + + public CodecSyncState(string key) + { + Key = key; + CodecDisconnected(); + } + + public void InitialStatusMessageReceived() + { + InitialStatusMessageWasReceived = true; + Debug.Console(1, this, "Initial Codec Status Message Received."); + CheckSyncStatus(); + } + + public void InitialConfigurationMessageReceived() + { + InitialConfigurationMessageWasReceived = true; + Debug.Console(1, this, "Initial Codec Configuration Message Received."); + CheckSyncStatus(); + } + + public void FeedbackRegistered() + { + FeedbackWasRegistered = true; + Debug.Console(1, this, "Initial Codec Feedback Registration Successful."); + CheckSyncStatus(); + } + + public void CodecDisconnected() + { + InitialConfigurationMessageWasReceived = false; + InitialStatusMessageWasReceived = false; + FeedbackWasRegistered = false; + InitialSyncComplete = false; + } + + void CheckSyncStatus() + { + if (InitialConfigurationMessageWasReceived && InitialStatusMessageWasReceived && FeedbackWasRegistered) + { + InitialSyncComplete = true; + Debug.Console(1, this, "Initial Codec Sync Complete!"); + } + else + InitialSyncComplete = false; + } + } } \ No newline at end of file diff --git a/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/Configuration.cs b/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/Configuration.cs index 7a866a83..75eed815 100644 --- a/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/Configuration.cs +++ b/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/Configuration.cs @@ -8,1888 +8,1661 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco { public class CiscoCodecConfiguration { - //[XmlRoot(ElementName = "DefaultVolume")] public class DefaultVolume { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Mode")] public class Mode { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Microphone")] - public class Microphone - { - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } - //[XmlAttribute(AttributeName = "item")] - public string Item { get; set; } - //[XmlAttribute(AttributeName = "maxOccurrence")] - public string MaxOccurrence { get; set; } - //[XmlElement(ElementName = "EchoControl")] - public EchoControl EchoControl { get; set; } - //[XmlElement(ElementName = "Level")] - public Level Level { get; set; } - } - - //[XmlRoot(ElementName = "Dereverberation")] public class Dereverberation { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Mode2 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "NoiseReduction")] public class NoiseReduction { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "EchoControl")] public class EchoControl { - //[XmlElement(ElementName = "Dereverberation")] public Dereverberation Dereverberation { get; set; } - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } - //[XmlElement(ElementName = "NoiseReduction")] + public Mode2 Mode { get; set; } public NoiseReduction NoiseReduction { get; set; } } - //[XmlRoot(ElementName = "Level")] public class Level { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Microphone + { + public string id { get; set; } + public Mode Mode { get; set; } + public EchoControl EchoControl { get; set; } + public Level Level { get; set; } } - //[XmlRoot(ElementName = "Input")] public class Input { - //[XmlElement(ElementName = "Microphone")] public List Microphone { get; set; } - //[XmlElement(ElementName = "Connector")] - public List Connector { get; set; } } - //[XmlRoot(ElementName = "Enabled")] public class Enabled { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Mute")] public class Mute { - //[XmlElement(ElementName = "Enabled")] public Enabled Enabled { get; set; } - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } } - //[XmlRoot(ElementName = "Microphones")] public class Microphones { - //[XmlElement(ElementName = "Mute")] public Mute Mute { get; set; } } - //[XmlRoot(ElementName = "InternalSpeaker")] + public class Mode3 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + public class InternalSpeaker { - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } + public Mode3 Mode { get; set; } + } + + public class Mode4 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "OutputType")] public class OutputType { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Line")] public class Line { - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } - //[XmlElement(ElementName = "OutputType")] + public string id { get; set; } + public Mode4 Mode { get; set; } public OutputType OutputType { get; set; } - //[XmlAttribute(AttributeName = "item")] - public string Item { get; set; } - //[XmlAttribute(AttributeName = "maxOccurrence")] - public string MaxOccurrence { get; set; } } - //[XmlRoot(ElementName = "Output")] public class Output { - //[XmlElement(ElementName = "InternalSpeaker")] public InternalSpeaker InternalSpeaker { get; set; } - //[XmlElement(ElementName = "Line")] - public Line Line { get; set; } - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } - //[XmlElement(ElementName = "Connector")] - public List Connector { get; set; } + public List Line { get; set; } } - //[XmlRoot(ElementName = "RingTone")] public class RingTone { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "RingVolume")] public class RingVolume { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "SoundsAndAlerts")] public class SoundsAndAlerts { - //[XmlElement(ElementName = "RingTone")] public RingTone RingTone { get; set; } - //[XmlElement(ElementName = "RingVolume")] public RingVolume RingVolume { get; set; } } - //[XmlRoot(ElementName = "Audio")] public class Audio { - //[XmlElement(ElementName = "DefaultVolume")] public DefaultVolume DefaultVolume { get; set; } - //[XmlElement(ElementName = "Input")] public Input Input { get; set; } - //[XmlElement(ElementName = "Microphones")] public Microphones Microphones { get; set; } - //[XmlElement(ElementName = "Output")] public Output Output { get; set; } - //[XmlElement(ElementName = "SoundsAndAlerts")] public SoundsAndAlerts SoundsAndAlerts { get; set; } - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } } - //[XmlRoot(ElementName = "Framerate")] public class Framerate { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Camera")] public class Camera { - //[XmlElement(ElementName = "Framerate")] public Framerate Framerate { get; set; } } - //[XmlRoot(ElementName = "Closeup")] public class Closeup { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Mode5 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "SpeakerTrack")] public class SpeakerTrack { - //[XmlElement(ElementName = "Closeup")] public Closeup Closeup { get; set; } - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } + public Mode5 Mode { get; set; } } - //[XmlRoot(ElementName = "Cameras")] public class Cameras { - //[XmlElement(ElementName = "Camera")] public Camera Camera { get; set; } - //[XmlElement(ElementName = "SpeakerTrack")] public SpeakerTrack SpeakerTrack { get; set; } - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } } - //[XmlRoot(ElementName = "Delay")] public class Delay { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Mode6 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Mute2 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "AutoAnswer")] public class AutoAnswer { - //[XmlElement(ElementName = "Delay")] public Delay Delay { get; set; } - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } - //[XmlElement(ElementName = "Mute")] - public Mute Mute { get; set; } + public Mode6 Mode { get; set; } + public Mute2 Mute { get; set; } } - //[XmlRoot(ElementName = "Protocol")] public class Protocol { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Rate")] public class Rate { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "DefaultCall")] public class DefaultCall { - //[XmlElement(ElementName = "Protocol")] public Protocol Protocol { get; set; } - //[XmlElement(ElementName = "Rate")] public Rate Rate { get; set; } } - //[XmlRoot(ElementName = "DefaultTimeout")] public class DefaultTimeout { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "DoNotDisturb")] public class DoNotDisturb { - //[XmlElement(ElementName = "DefaultTimeout")] public DefaultTimeout DefaultTimeout { get; set; } } - //[XmlRoot(ElementName = "Encryption")] + public class Mode7 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + public class Encryption { - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } - //[XmlElement(ElementName = "KeySize")] - public KeySize KeySize { get; set; } - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public Mode7 Mode { get; set; } + } + + public class Mode8 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "FarEndControl")] public class FarEndControl { - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } + public Mode8 Mode { get; set; } } - //[XmlRoot(ElementName = "MaxReceiveCallRate")] public class MaxReceiveCallRate { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "MaxTotalReceiveCallRate")] public class MaxTotalReceiveCallRate { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "MaxTotalTransmitCallRate")] public class MaxTotalTransmitCallRate { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "MaxTransmitCallRate")] public class MaxTransmitCallRate { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Mode9 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "MultiStream")] public class MultiStream { - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } + public Mode9 Mode { get; set; } } - //[XmlRoot(ElementName = "Conference")] public class Conference { - //[XmlElement(ElementName = "AutoAnswer")] public AutoAnswer AutoAnswer { get; set; } - //[XmlElement(ElementName = "DefaultCall")] public DefaultCall DefaultCall { get; set; } - //[XmlElement(ElementName = "DoNotDisturb")] public DoNotDisturb DoNotDisturb { get; set; } - //[XmlElement(ElementName = "Encryption")] public Encryption Encryption { get; set; } - //[XmlElement(ElementName = "FarEndControl")] public FarEndControl FarEndControl { get; set; } - //[XmlElement(ElementName = "MaxReceiveCallRate")] public MaxReceiveCallRate MaxReceiveCallRate { get; set; } - //[XmlElement(ElementName = "MaxTotalReceiveCallRate")] public MaxTotalReceiveCallRate MaxTotalReceiveCallRate { get; set; } - //[XmlElement(ElementName = "MaxTotalTransmitCallRate")] public MaxTotalTransmitCallRate MaxTotalTransmitCallRate { get; set; } - //[XmlElement(ElementName = "MaxTransmitCallRate")] public MaxTransmitCallRate MaxTransmitCallRate { get; set; } - //[XmlElement(ElementName = "MultiStream")] public MultiStream MultiStream { get; set; } } - //[XmlRoot(ElementName = "LoginName")] public class LoginName { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Mode10 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Password")] public class Password { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Authentication")] public class Authentication { - //[XmlElement(ElementName = "LoginName")] public LoginName LoginName { get; set; } - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } - //[XmlElement(ElementName = "Password")] + public Mode10 Mode { get; set; } public Password Password { get; set; } - //[XmlElement(ElementName = "UserName")] - public UserName UserName { get; set; } } - //[XmlRoot(ElementName = "CallSetup")] + public class Mode11 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + public class CallSetup { - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } + public Mode11 Mode { get; set; } } - //[XmlRoot(ElementName = "KeySize")] public class KeySize { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Encryption2 + { + public KeySize KeySize { get; set; } } - //[XmlRoot(ElementName = "Address")] public class Address { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Gatekeeper")] public class Gatekeeper { - //[XmlElement(ElementName = "Address")] public Address Address { get; set; } } - //[XmlRoot(ElementName = "E164")] public class E164 { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "ID")] public class ID { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "H323Alias")] public class H323Alias { - //[XmlElement(ElementName = "E164")] public E164 E164 { get; set; } - //[XmlElement(ElementName = "ID")] public ID ID { get; set; } } - //[XmlRoot(ElementName = "NAT")] + public class Address2 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Mode12 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + public class NAT { - //[XmlElement(ElementName = "Address")] - public Address Address { get; set; } - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } + public Address2 Address { get; set; } + public Mode12 Mode { get; set; } } - //[XmlRoot(ElementName = "H323")] public class H323 { - //[XmlElement(ElementName = "Authentication")] public Authentication Authentication { get; set; } - //[XmlElement(ElementName = "CallSetup")] public CallSetup CallSetup { get; set; } - //[XmlElement(ElementName = "Encryption")] - public Encryption Encryption { get; set; } - //[XmlElement(ElementName = "Gatekeeper")] + public Encryption2 Encryption { get; set; } public Gatekeeper Gatekeeper { get; set; } - //[XmlElement(ElementName = "H323Alias")] public H323Alias H323Alias { get; set; } - //[XmlElement(ElementName = "NAT")] public NAT NAT { get; set; } - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } } - //[XmlRoot(ElementName = "Name")] public class Name { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Domain")] public class Domain { - //[XmlElement(ElementName = "Name")] public Name Name { get; set; } - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } } - //[XmlRoot(ElementName = "Server")] + public class Address3 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + public class Server { - //[XmlElement(ElementName = "Address")] - public Address Address { get; set; } - //[XmlAttribute(AttributeName = "item")] - public string Item { get; set; } - //[XmlAttribute(AttributeName = "maxOccurrence")] - public string MaxOccurrence { get; set; } - //[XmlElement(ElementName = "MinimumTLSVersion")] - public MinimumTLSVersion MinimumTLSVersion { get; set; } - //[XmlElement(ElementName = "ID")] - public ID ID { get; set; } - //[XmlElement(ElementName = "Type")] - public Type Type { get; set; } - //[XmlElement(ElementName = "URL")] - public URL URL { get; set; } - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlElement(ElementName = "Port")] - public Port Port { get; set; } + public string id { get; set; } + public Address3 Address { get; set; } } - //[XmlRoot(ElementName = "DNS")] public class DNS { - //[XmlElement(ElementName = "Domain")] public Domain Domain { get; set; } - //[XmlElement(ElementName = "Server")] public List Server { get; set; } } - //[XmlRoot(ElementName = "AnonymousIdentity")] public class AnonymousIdentity { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Md5")] public class Md5 { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Peap")] public class Peap { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Tls")] public class Tls { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Ttls")] public class Ttls { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Eap")] public class Eap { - //[XmlElement(ElementName = "Md5")] public Md5 Md5 { get; set; } - //[XmlElement(ElementName = "Peap")] public Peap Peap { get; set; } - //[XmlElement(ElementName = "Tls")] public Tls Tls { get; set; } - //[XmlElement(ElementName = "Ttls")] public Ttls Ttls { get; set; } } - //[XmlRoot(ElementName = "Identity")] public class Identity { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Mode13 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Password2 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "TlsVerify")] public class TlsVerify { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "UseClientCertificate")] public class UseClientCertificate { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "IEEE8021X")] public class IEEE8021X { - //[XmlElement(ElementName = "AnonymousIdentity")] public AnonymousIdentity AnonymousIdentity { get; set; } - //[XmlElement(ElementName = "Eap")] public Eap Eap { get; set; } - //[XmlElement(ElementName = "Identity")] public Identity Identity { get; set; } - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } - //[XmlElement(ElementName = "Password")] - public Password Password { get; set; } - //[XmlElement(ElementName = "TlsVerify")] + public Mode13 Mode { get; set; } + public Password2 Password { get; set; } public TlsVerify TlsVerify { get; set; } - //[XmlElement(ElementName = "UseClientCertificate")] public UseClientCertificate UseClientCertificate { get; set; } } - //[XmlRoot(ElementName = "IPStack")] public class IPStack { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Address4 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Assignment")] public class Assignment { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Gateway")] public class Gateway { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "SubnetMask")] public class SubnetMask { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "IPv4")] public class IPv4 { - //[XmlElement(ElementName = "Address")] - public Address Address { get; set; } - //[XmlElement(ElementName = "Assignment")] + public Address4 Address { get; set; } public Assignment Assignment { get; set; } - //[XmlElement(ElementName = "Gateway")] public Gateway Gateway { get; set; } - //[XmlElement(ElementName = "SubnetMask")] public SubnetMask SubnetMask { get; set; } } - //[XmlRoot(ElementName = "DHCPOptions")] + public class Address5 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Assignment2 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + public class DHCPOptions { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Gateway2 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "IPv6")] public class IPv6 { - //[XmlElement(ElementName = "Address")] - public Address Address { get; set; } - //[XmlElement(ElementName = "Assignment")] - public Assignment Assignment { get; set; } - //[XmlElement(ElementName = "DHCPOptions")] + public Address5 Address { get; set; } + public Assignment2 Assignment { get; set; } public DHCPOptions DHCPOptions { get; set; } - //[XmlElement(ElementName = "Gateway")] - public Gateway Gateway { get; set; } + public Gateway2 Gateway { get; set; } } - //[XmlRoot(ElementName = "MTU")] public class MTU { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Audio2 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Data")] public class Data { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "ICMPv6")] public class ICMPv6 { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "NTP")] public class NTP { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } - //[XmlElement(ElementName = "Server")] - public List Server { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Signalling")] public class Signalling { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Video")] public class Video { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } - //[XmlElement(ElementName = "DefaultMainSource")] - public DefaultMainSource DefaultMainSource { get; set; } - //[XmlElement(ElementName = "Input")] - public Input Input { get; set; } - //[XmlElement(ElementName = "Monitors")] - public Monitors Monitors { get; set; } - //[XmlElement(ElementName = "Output")] - public Output Output { get; set; } - //[XmlElement(ElementName = "Presentation")] - public Presentation Presentation { get; set; } - //[XmlElement(ElementName = "Selfview")] - public Selfview Selfview { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Diffserv")] public class Diffserv { - //[XmlElement(ElementName = "Audio")] - public Audio Audio { get; set; } - //[XmlElement(ElementName = "Data")] + public Audio2 Audio { get; set; } public Data Data { get; set; } - //[XmlElement(ElementName = "ICMPv6")] public ICMPv6 ICMPv6 { get; set; } - //[XmlElement(ElementName = "NTP")] public NTP NTP { get; set; } - //[XmlElement(ElementName = "Signalling")] public Signalling Signalling { get; set; } - //[XmlElement(ElementName = "Video")] public Video Video { get; set; } } - //[XmlRoot(ElementName = "QoS")] + public class Mode14 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + public class QoS { - //[XmlElement(ElementName = "Diffserv")] public Diffserv Diffserv { get; set; } - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } + public Mode14 Mode { get; set; } } - //[XmlRoot(ElementName = "Allow")] public class Allow { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "RemoteAccess")] public class RemoteAccess { - //[XmlElement(ElementName = "Allow")] public Allow Allow { get; set; } } - //[XmlRoot(ElementName = "Speed")] public class Speed { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Mode15 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "VlanId")] public class VlanId { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Voice")] public class Voice { - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } - //[XmlElement(ElementName = "VlanId")] + public Mode15 Mode { get; set; } public VlanId VlanId { get; set; } } - //[XmlRoot(ElementName = "VLAN")] public class VLAN { - //[XmlElement(ElementName = "Voice")] public Voice Voice { get; set; } } - //[XmlRoot(ElementName = "Network")] public class Network { - //[XmlElement(ElementName = "DNS")] + public string id { get; set; } public DNS DNS { get; set; } - //[XmlElement(ElementName = "IEEE8021X")] public IEEE8021X IEEE8021X { get; set; } - //[XmlElement(ElementName = "IPStack")] public IPStack IPStack { get; set; } - //[XmlElement(ElementName = "IPv4")] public IPv4 IPv4 { get; set; } - //[XmlElement(ElementName = "IPv6")] public IPv6 IPv6 { get; set; } - //[XmlElement(ElementName = "MTU")] public MTU MTU { get; set; } - //[XmlElement(ElementName = "QoS")] public QoS QoS { get; set; } - //[XmlElement(ElementName = "RemoteAccess")] public RemoteAccess RemoteAccess { get; set; } - //[XmlElement(ElementName = "Speed")] public Speed Speed { get; set; } - //[XmlElement(ElementName = "VLAN")] public VLAN VLAN { get; set; } - //[XmlAttribute(AttributeName = "item")] - public string Item { get; set; } - //[XmlAttribute(AttributeName = "maxOccurrence")] - public string MaxOccurrence { get; set; } } - //[XmlRoot(ElementName = "CDP")] + public class Mode16 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + public class CDP { - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } + public Mode16 Mode { get; set; } + } + + public class Mode17 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class H3232 + { + public Mode17 Mode { get; set; } + } + + public class Mode18 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "HTTP")] public class HTTP { - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } + public Mode18 Mode { get; set; } } - //[XmlRoot(ElementName = "MinimumTLSVersion")] public class MinimumTLSVersion { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Server2 + { + public MinimumTLSVersion MinimumTLSVersion { get; set; } } - //[XmlRoot(ElementName = "StrictTransportSecurity")] public class StrictTransportSecurity { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "VerifyClientCertificate")] public class VerifyClientCertificate { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "VerifyServerCertificate")] public class VerifyServerCertificate { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "HTTPS")] public class HTTPS { - //[XmlElement(ElementName = "Server")] - public Server Server { get; set; } - //[XmlElement(ElementName = "StrictTransportSecurity")] + public Server2 Server { get; set; } public StrictTransportSecurity StrictTransportSecurity { get; set; } - //[XmlElement(ElementName = "VerifyClientCertificate")] public VerifyClientCertificate VerifyClientCertificate { get; set; } - //[XmlElement(ElementName = "VerifyServerCertificate")] public VerifyServerCertificate VerifyServerCertificate { get; set; } } - //[XmlRoot(ElementName = "SIP")] + public class Mode19 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Address6 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Server3 + { + public string id { get; set; } + public Address6 Address { get; set; } + } + + public class NTP2 + { + public Mode19 Mode { get; set; } + public List Server { get; set; } + } + + public class Mode20 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + public class SIP { - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } - //[XmlElement(ElementName = "Authentication")] - public Authentication Authentication { get; set; } - //[XmlElement(ElementName = "DefaultTransport")] - public DefaultTransport DefaultTransport { get; set; } - //[XmlElement(ElementName = "DisplayName")] - public DisplayName DisplayName { get; set; } - //[XmlElement(ElementName = "Ice")] - public Ice Ice { get; set; } - //[XmlElement(ElementName = "ListenPort")] - public ListenPort ListenPort { get; set; } - //[XmlElement(ElementName = "Proxy")] - public List Proxy { get; set; } - //[XmlElement(ElementName = "Turn")] - public Turn Turn { get; set; } - //[XmlElement(ElementName = "URI")] - public URI URI { get; set; } + public Mode20 Mode { get; set; } } - //[XmlRoot(ElementName = "CommunityName")] public class CommunityName { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Address7 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Host")] public class Host { - //[XmlElement(ElementName = "Address")] - public Address Address { get; set; } - //[XmlAttribute(AttributeName = "item")] - public string Item { get; set; } - //[XmlAttribute(AttributeName = "maxOccurrence")] - public string MaxOccurrence { get; set; } + public string id { get; set; } + public Address7 Address { get; set; } + } + + public class Mode21 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "SystemContact")] public class SystemContact { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "SystemLocation")] public class SystemLocation { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "SNMP")] public class SNMP { - //[XmlElement(ElementName = "CommunityName")] public CommunityName CommunityName { get; set; } - //[XmlElement(ElementName = "Host")] public List Host { get; set; } - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } - //[XmlElement(ElementName = "SystemContact")] + public Mode21 Mode { get; set; } public SystemContact SystemContact { get; set; } - //[XmlElement(ElementName = "SystemLocation")] public SystemLocation SystemLocation { get; set; } } - //[XmlRoot(ElementName = "SSH")] + public class Mode22 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + public class SSH { - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } + public Mode22 Mode { get; set; } + } + + public class Mode23 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "UPnP")] public class UPnP { - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } + public Mode23 Mode { get; set; } } - //[XmlRoot(ElementName = "WelcomeText")] public class WelcomeText { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "NetworkServices")] public class NetworkServices { - //[XmlElement(ElementName = "CDP")] public CDP CDP { get; set; } - //[XmlElement(ElementName = "H323")] - public H323 H323 { get; set; } - //[XmlElement(ElementName = "HTTP")] + public H3232 H323 { get; set; } public HTTP HTTP { get; set; } - //[XmlElement(ElementName = "HTTPS")] public HTTPS HTTPS { get; set; } - //[XmlElement(ElementName = "NTP")] - public NTP NTP { get; set; } - //[XmlElement(ElementName = "SIP")] + public NTP2 NTP { get; set; } public SIP SIP { get; set; } - //[XmlElement(ElementName = "SNMP")] public SNMP SNMP { get; set; } - //[XmlElement(ElementName = "SSH")] public SSH SSH { get; set; } - //[XmlElement(ElementName = "UPnP")] public UPnP UPnP { get; set; } - //[XmlElement(ElementName = "WelcomeText")] public WelcomeText WelcomeText { get; set; } } - //[XmlRoot(ElementName = "ControlSystems")] + public class Cameras2 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + public class ControlSystems { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "TouchPanels")] public class TouchPanels { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Profile")] public class Profile { - //[XmlElement(ElementName = "Cameras")] - public Cameras Cameras { get; set; } - //[XmlElement(ElementName = "ControlSystems")] + public Cameras2 Cameras { get; set; } public ControlSystems ControlSystems { get; set; } - //[XmlElement(ElementName = "TouchPanels")] public TouchPanels TouchPanels { get; set; } } - //[XmlRoot(ElementName = "Peripherals")] public class Peripherals { - //[XmlElement(ElementName = "Profile")] public Profile Profile { get; set; } } - //[XmlRoot(ElementName = "Type")] + public class ID2 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + public class Type { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "URL")] public class URL { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Server4 + { + public string id { get; set; } + public ID2 ID { get; set; } + public Type Type { get; set; } + public URL URL { get; set; } } - //[XmlRoot(ElementName = "Phonebook")] public class Phonebook { - //[XmlElement(ElementName = "Server")] - public Server Server { get; set; } + public List Server { get; set; } } - //[XmlRoot(ElementName = "Connectivity")] public class Connectivity { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Address8 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "AlternateAddress")] public class AlternateAddress { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Domain2 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Path")] public class Path { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Protocol2 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "ExternalManager")] public class ExternalManager { - //[XmlElement(ElementName = "Address")] - public Address Address { get; set; } - //[XmlElement(ElementName = "AlternateAddress")] + public Address8 Address { get; set; } public AlternateAddress AlternateAddress { get; set; } - //[XmlElement(ElementName = "Domain")] - public Domain Domain { get; set; } - //[XmlElement(ElementName = "Path")] + public Domain2 Domain { get; set; } public Path Path { get; set; } - //[XmlElement(ElementName = "Protocol")] - public Protocol Protocol { get; set; } + public Protocol2 Protocol { get; set; } } - //[XmlRoot(ElementName = "HttpMethod")] public class HttpMethod { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class LoginName2 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Mode24 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Password3 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Provisioning")] public class Provisioning { - //[XmlElement(ElementName = "Connectivity")] public Connectivity Connectivity { get; set; } - //[XmlElement(ElementName = "ExternalManager")] public ExternalManager ExternalManager { get; set; } - //[XmlElement(ElementName = "HttpMethod")] public HttpMethod HttpMethod { get; set; } - //[XmlElement(ElementName = "LoginName")] - public LoginName LoginName { get; set; } - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } - //[XmlElement(ElementName = "Password")] - public Password Password { get; set; } + public LoginName2 LoginName { get; set; } + public Mode24 Mode { get; set; } + public Password3 Password { get; set; } + } + + public class Mode25 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "CallControl")] public class CallControl { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "FromClients")] public class FromClients { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "ToClients")] public class ToClients { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "ContentShare")] public class ContentShare { - //[XmlElement(ElementName = "FromClients")] public FromClients FromClients { get; set; } - //[XmlElement(ElementName = "ToClients")] public ToClients ToClients { get; set; } } - //[XmlRoot(ElementName = "Services")] public class Services { - //[XmlElement(ElementName = "CallControl")] public CallControl CallControl { get; set; } - //[XmlElement(ElementName = "ContentShare")] public ContentShare ContentShare { get; set; } } - //[XmlRoot(ElementName = "Proximity")] public class Proximity { - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } - //[XmlElement(ElementName = "Services")] + public Mode25 Mode { get; set; } public Services Services { get; set; } } - //[XmlRoot(ElementName = "PeopleCountOutOfCall")] public class PeopleCountOutOfCall { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "PeoplePresenceDetector")] public class PeoplePresenceDetector { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "RoomAnalytics")] public class RoomAnalytics { - //[XmlElement(ElementName = "PeopleCountOutOfCall")] public PeopleCountOutOfCall PeopleCountOutOfCall { get; set; } - //[XmlElement(ElementName = "PeoplePresenceDetector")] public PeoplePresenceDetector PeoplePresenceDetector { get; set; } } - //[XmlRoot(ElementName = "UserName")] + public class Password4 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + public class UserName { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "DefaultTransport")] - public class DefaultTransport + public class Authentication2 { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } - } - - //[XmlRoot(ElementName = "DisplayName")] - public class DisplayName - { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - } - - //[XmlRoot(ElementName = "DefaultCandidate")] - public class DefaultCandidate - { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } - } - - //[XmlRoot(ElementName = "Ice")] - public class Ice - { - //[XmlElement(ElementName = "DefaultCandidate")] - public DefaultCandidate DefaultCandidate { get; set; } - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } - } - - //[XmlRoot(ElementName = "ListenPort")] - public class ListenPort - { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } - } - - //[XmlRoot(ElementName = "Proxy")] - public class Proxy - { - //[XmlElement(ElementName = "Address")] - public Address Address { get; set; } - //[XmlAttribute(AttributeName = "item")] - public string Item { get; set; } - //[XmlAttribute(AttributeName = "maxOccurrence")] - public string MaxOccurrence { get; set; } - } - - //[XmlRoot(ElementName = "Turn")] - public class Turn - { - //[XmlElement(ElementName = "Password")] - public Password Password { get; set; } - //[XmlElement(ElementName = "Server")] - public Server Server { get; set; } - //[XmlElement(ElementName = "UserName")] + public Password4 Password { get; set; } public UserName UserName { get; set; } } - //[XmlRoot(ElementName = "URI")] + public class DefaultTransport + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class DisplayName + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class DefaultCandidate + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Mode26 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Ice + { + public DefaultCandidate DefaultCandidate { get; set; } + public Mode26 Mode { get; set; } + } + + public class ListenPort + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Address9 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Proxy + { + public string id { get; set; } + public Address9 Address { get; set; } + } + + public class Password5 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Server5 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class UserName2 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Turn + { + public Password5 Password { get; set; } + public Server5 Server { get; set; } + public UserName2 UserName { get; set; } + } + public class URI { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class SIP2 + { + public Authentication2 Authentication { get; set; } + public DefaultTransport DefaultTransport { get; set; } + public DisplayName DisplayName { get; set; } + public Ice Ice { get; set; } + public ListenPort ListenPort { get; set; } + public List Proxy { get; set; } + public Turn Turn { get; set; } + public URI URI { get; set; } } - //[XmlRoot(ElementName = "BaudRate")] public class BaudRate { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "LoginRequired")] public class LoginRequired { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Mode27 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "SerialPort")] public class SerialPort { - //[XmlElement(ElementName = "BaudRate")] public BaudRate BaudRate { get; set; } - //[XmlElement(ElementName = "LoginRequired")] public LoginRequired LoginRequired { get; set; } - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } + public Mode27 Mode { get; set; } } - //[XmlRoot(ElementName = "BootAction")] public class BootAction { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Control")] public class Control { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Delay2 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "StandbyAction")] public class StandbyAction { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "WakeupAction")] public class WakeupAction { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Standby")] public class Standby { - //[XmlElement(ElementName = "BootAction")] public BootAction BootAction { get; set; } - //[XmlElement(ElementName = "Control")] public Control Control { get; set; } - //[XmlElement(ElementName = "Delay")] - public Delay Delay { get; set; } - //[XmlElement(ElementName = "StandbyAction")] + public Delay2 Delay { get; set; } public StandbyAction StandbyAction { get; set; } - //[XmlElement(ElementName = "WakeupAction")] public WakeupAction WakeupAction { get; set; } } - //[XmlRoot(ElementName = "SystemUnit")] + public class Name2 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + public class SystemUnit { - //[XmlElement(ElementName = "Name")] - public Name Name { get; set; } + public Name2 Name { get; set; } } - //[XmlRoot(ElementName = "DateFormat")] public class DateFormat { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "TimeFormat")] public class TimeFormat { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Zone")] public class Zone { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Time")] public class Time { - //[XmlElement(ElementName = "DateFormat")] public DateFormat DateFormat { get; set; } - //[XmlElement(ElementName = "TimeFormat")] public TimeFormat TimeFormat { get; set; } - //[XmlElement(ElementName = "Zone")] public Zone Zone { get; set; } } - //[XmlRoot(ElementName = "ContactInfo")] + public class Type2 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + public class ContactInfo { - //[XmlElement(ElementName = "Type")] - public Type Type { get; set; } + public Type2 Type { get; set; } + } + + public class Mode28 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "KeyTones")] public class KeyTones { - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } + public Mode28 Mode { get; set; } } - //[XmlRoot(ElementName = "Language")] public class Language { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Output2 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "OSD")] public class OSD { - //[XmlElement(ElementName = "Output")] - public Output Output { get; set; } + public Output2 Output { get; set; } } - //[XmlRoot(ElementName = "UserInterface")] public class UserInterface { - //[XmlElement(ElementName = "ContactInfo")] public ContactInfo ContactInfo { get; set; } - //[XmlElement(ElementName = "KeyTones")] public KeyTones KeyTones { get; set; } - //[XmlElement(ElementName = "Language")] public Language Language { get; set; } - //[XmlElement(ElementName = "OSD")] public OSD OSD { get; set; } } - //[XmlRoot(ElementName = "Filter")] public class Filter { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Group")] public class Group { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Admin")] public class Admin { - //[XmlElement(ElementName = "Filter")] public Filter Filter { get; set; } - //[XmlElement(ElementName = "Group")] public Group Group { get; set; } } - //[XmlRoot(ElementName = "Attribute")] public class Attribute { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "BaseDN")] public class BaseDN { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Encryption3 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class MinimumTLSVersion2 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Mode29 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Address10 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Port")] public class Port { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Server6 + { + public Address10 Address { get; set; } + public Port Port { get; set; } + } + + public class VerifyServerCertificate2 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "LDAP")] public class LDAP { - //[XmlElement(ElementName = "Admin")] public Admin Admin { get; set; } - //[XmlElement(ElementName = "Attribute")] public Attribute Attribute { get; set; } - //[XmlElement(ElementName = "BaseDN")] public BaseDN BaseDN { get; set; } - //[XmlElement(ElementName = "Encryption")] - public Encryption Encryption { get; set; } - //[XmlElement(ElementName = "MinimumTLSVersion")] - public MinimumTLSVersion MinimumTLSVersion { get; set; } - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } - //[XmlElement(ElementName = "Server")] - public Server Server { get; set; } - //[XmlElement(ElementName = "VerifyServerCertificate")] - public VerifyServerCertificate VerifyServerCertificate { get; set; } + public Encryption3 Encryption { get; set; } + public MinimumTLSVersion2 MinimumTLSVersion { get; set; } + public Mode29 Mode { get; set; } + public Server6 Server { get; set; } + public VerifyServerCertificate2 VerifyServerCertificate { get; set; } } - //[XmlRoot(ElementName = "UserManagement")] public class UserManagement { - //[XmlElement(ElementName = "LDAP")] public LDAP LDAP { get; set; } } - //[XmlRoot(ElementName = "DefaultMainSource")] public class DefaultMainSource { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "CameraId")] public class CameraId { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Mode30 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "CameraControl")] public class CameraControl { - //[XmlElement(ElementName = "CameraId")] public CameraId CameraId { get; set; } - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } + public Mode30 Mode { get; set; } } - //[XmlRoot(ElementName = "InputSourceType")] public class InputSourceType { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Name3 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Visibility")] public class Visibility { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class PreferredResolution + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class PresentationSelection + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Quality + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Connector")] public class Connector { - //[XmlElement(ElementName = "CameraControl")] + public string id { get; set; } public CameraControl CameraControl { get; set; } - //[XmlElement(ElementName = "InputSourceType")] public InputSourceType InputSourceType { get; set; } - //[XmlElement(ElementName = "Name")] - public Name Name { get; set; } - //[XmlElement(ElementName = "Visibility")] + public Name3 Name { get; set; } public Visibility Visibility { get; set; } - //[XmlAttribute(AttributeName = "item")] - public string Item { get; set; } - //[XmlAttribute(AttributeName = "maxOccurrence")] - public string MaxOccurrence { get; set; } - //[XmlElement(ElementName = "PreferredResolution")] public PreferredResolution PreferredResolution { get; set; } - //[XmlElement(ElementName = "PresentationSelection")] public PresentationSelection PresentationSelection { get; set; } - //[XmlElement(ElementName = "Quality")] public Quality Quality { get; set; } - //[XmlElement(ElementName = "CEC")] + } + + public class Input2 + { + public List Connector { get; set; } + } + + public class Monitors + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Mode31 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class CEC + { + public Mode31 Mode { get; set; } + } + + public class MonitorRole + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Resolution + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Connector2 + { + public string id { get; set; } public CEC CEC { get; set; } - //[XmlElement(ElementName = "MonitorRole")] public MonitorRole MonitorRole { get; set; } - //[XmlElement(ElementName = "Resolution")] public Resolution Resolution { get; set; } } - //[XmlRoot(ElementName = "PreferredResolution")] - public class PreferredResolution + public class Output3 { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public List Connector { get; set; } } - //[XmlRoot(ElementName = "PresentationSelection")] - public class PresentationSelection - { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } - } - - //[XmlRoot(ElementName = "Quality")] - public class Quality - { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } - } - - //[XmlRoot(ElementName = "Monitors")] - public class Monitors - { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } - } - - //[XmlRoot(ElementName = "CEC")] - public class CEC - { - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } - } - - //[XmlRoot(ElementName = "MonitorRole")] - public class MonitorRole - { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } - } - - //[XmlRoot(ElementName = "Resolution")] - public class Resolution - { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } - } - - //[XmlRoot(ElementName = "DefaultSource")] public class DefaultSource { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Presentation")] public class Presentation { - //[XmlElement(ElementName = "DefaultSource")] public DefaultSource DefaultSource { get; set; } } - //[XmlRoot(ElementName = "FullscreenMode")] public class FullscreenMode { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Mode32 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "OnMonitorRole")] public class OnMonitorRole { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "PIPPosition")] public class PIPPosition { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "Default")] public class Default { - //[XmlElement(ElementName = "FullscreenMode")] public FullscreenMode FullscreenMode { get; set; } - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } - //[XmlElement(ElementName = "OnMonitorRole")] + public Mode32 Mode { get; set; } public OnMonitorRole OnMonitorRole { get; set; } - //[XmlElement(ElementName = "PIPPosition")] public PIPPosition PIPPosition { get; set; } } - //[XmlRoot(ElementName = "Duration")] public class Duration { - //[XmlAttribute(AttributeName = "valueSpaceRef")] - public string ValueSpaceRef { get; set; } - //[XmlText] - public string Text { get; set; } + public string valueSpaceRef { get; set; } + public string Value { get; set; } + } + + public class Mode33 + { + public string valueSpaceRef { get; set; } + public string Value { get; set; } } - //[XmlRoot(ElementName = "OnCall")] public class OnCall { - //[XmlElement(ElementName = "Duration")] public Duration Duration { get; set; } - //[XmlElement(ElementName = "Mode")] - public Mode Mode { get; set; } + public Mode33 Mode { get; set; } } - //[XmlRoot(ElementName = "Selfview")] public class Selfview { - //[XmlElement(ElementName = "Default")] public Default Default { get; set; } - //[XmlElement(ElementName = "OnCall")] public OnCall OnCall { get; set; } } - //[XmlRoot(ElementName = "Configuration")] + public class Video2 + { + public DefaultMainSource DefaultMainSource { get; set; } + public Input2 Input { get; set; } + public Monitors Monitors { get; set; } + public Output3 Output { get; set; } + public Presentation Presentation { get; set; } + public Selfview Selfview { get; set; } + } + public class Configuration { - //[XmlElement(ElementName = "Audio")] public Audio Audio { get; set; } - //[XmlElement(ElementName = "Cameras")] public Cameras Cameras { get; set; } - //[XmlElement(ElementName = "Conference")] public Conference Conference { get; set; } - //[XmlElement(ElementName = "H323")] public H323 H323 { get; set; } - //[XmlElement(ElementName = "Network")] - public Network Network { get; set; } - //[XmlElement(ElementName = "NetworkServices")] + public List Network { get; set; } public NetworkServices NetworkServices { get; set; } - //[XmlElement(ElementName = "Peripherals")] public Peripherals Peripherals { get; set; } - //[XmlElement(ElementName = "Phonebook")] public Phonebook Phonebook { get; set; } - //[XmlElement(ElementName = "Provisioning")] public Provisioning Provisioning { get; set; } - //[XmlElement(ElementName = "Proximity")] public Proximity Proximity { get; set; } - //[XmlElement(ElementName = "RoomAnalytics")] public RoomAnalytics RoomAnalytics { get; set; } - //[XmlElement(ElementName = "SIP")] - public SIP SIP { get; set; } - //[XmlElement(ElementName = "SerialPort")] + public SIP2 SIP { get; set; } public SerialPort SerialPort { get; set; } - //[XmlElement(ElementName = "Standby")] public Standby Standby { get; set; } - //[XmlElement(ElementName = "SystemUnit")] public SystemUnit SystemUnit { get; set; } - //[XmlElement(ElementName = "Time")] public Time Time { get; set; } - //[XmlElement(ElementName = "UserInterface")] public UserInterface UserInterface { get; set; } - //[XmlElement(ElementName = "UserManagement")] public UserManagement UserManagement { get; set; } - //[XmlElement(ElementName = "Video")] - public Video Video { get; set; } - //[XmlAttribute(AttributeName = "product")] - public string Product { get; set; } - //[XmlAttribute(AttributeName = "version")] - public string Version { get; set; } - //[XmlAttribute(AttributeName = "apiVersion")] - public string ApiVersion { get; set; } + public Video2 Video { get; set; } + } + + public class RootObject + { + public Configuration Configuration { get; set; } } } } \ No newline at end of file diff --git a/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/Status.cs b/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/Status.cs index 11e608a2..5633a2a1 100644 --- a/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/Status.cs +++ b/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/Status.cs @@ -10,863 +10,1439 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco public class CiscoCodecStatus { - //[XmlRoot(ElementName="Microphone")] - public class Microphone { - //[XmlElement(ElementName="ConnectionStatus")] - public string ConnectionStatus { get; set; } - //[XmlAttribute(AttributeName="item")] - public string Item { get; set; } - //[XmlAttribute(AttributeName="maxOccurrence")] - public string MaxOccurrence { get; set; } - } - - //[XmlRoot(ElementName="Connectors")] - public class Connectors { - //[XmlElement(ElementName="Microphone")] - public List Microphone { get; set; } - //[XmlElement(ElementName="Line")] - public Line Line { get; set; } - } - - //[XmlRoot(ElementName="Input")] - public class Input { - //[XmlElement(ElementName="Connectors")] - public Connectors Connectors { get; set; } - //[XmlElement(ElementName="Connector")] - public List Connector { get; set; } - //[XmlElement(ElementName="MainVideoSource")] - public string MainVideoSource { get; set; } - //[XmlElement(ElementName="Source")] - public List Source { get; set; } - } - - //[XmlRoot(ElementName="Microphones")] - public class Microphones { - //[XmlElement(ElementName="Mute")] - public string Mute { get; set; } - } - - //[XmlRoot(ElementName="Line")] - public class Line { - //[XmlElement(ElementName="ConnectionStatus")] - public string ConnectionStatus { get; set; } - //[XmlElement(ElementName="DelayMs")] - public string DelayMs { get; set; } - //[XmlAttribute(AttributeName="item")] - public string Item { get; set; } - //[XmlAttribute(AttributeName="maxOccurrence")] - public string MaxOccurrence { get; set; } - } - - //[XmlRoot(ElementName="Output")] - public class Output { - //[XmlElement(ElementName="Connectors")] - public Connectors Connectors { get; set; } - //[XmlElement(ElementName="Connector")] - public List Connector { get; set; } - } - - //[XmlRoot(ElementName="Audio")] - public class Audio { - //[XmlElement(ElementName="Input")] - public Input Input { get; set; } - //[XmlElement(ElementName="Microphones")] - public Microphones Microphones { get; set; } - //[XmlElement(ElementName="Output")] - public Output Output { get; set; } - //[XmlElement(ElementName="Volume")] - public string Volume { get; set; } - //[XmlElement(ElementName="VolumeMute")] - public string VolumeMute { get; set; } - } - - //[XmlRoot(ElementName="Current")] - public class Current { - //[XmlElement(ElementName="Id")] - public string Id { get; set; } - //[XmlElement(ElementName="CompletedAt")] - public string CompletedAt { get; set; } - //[XmlElement(ElementName="URL")] - public string URL { get; set; } - //[XmlElement(ElementName="VersionId")] - public string VersionId { get; set; } - } - - //[XmlRoot(ElementName="Bookings")] - public class Bookings { - //[XmlElement(ElementName="Current")] - public Current Current { get; set; } - } - - //[XmlRoot(ElementName="Capabilities")] - public class Capabilities { - //[XmlElement(ElementName="Options")] - public string Options { get; set; } - //[XmlElement(ElementName="Conference")] - public Conference Conference { get; set; } - } - - //[XmlRoot(ElementName="Position")] - public class Position { - //[XmlElement(ElementName="Pan")] - public string Pan { get; set; } - //[XmlElement(ElementName="Tilt")] - public string Tilt { get; set; } - //[XmlElement(ElementName="Zoom")] - public string Zoom { get; set; } - } - - //[XmlRoot(ElementName="Camera")] - public class Camera { - //[XmlElement(ElementName="Capabilities")] - public Capabilities Capabilities { get; set; } - //[XmlElement(ElementName="Connected")] - public string Connected { get; set; } - //[XmlElement(ElementName="Framerate")] - public string Framerate { get; set; } - //[XmlElement(ElementName="Manufacturer")] - public string Manufacturer { get; set; } - //[XmlElement(ElementName="Model")] - public string Model { get; set; } - //[XmlElement(ElementName="Position")] - public Position Position { get; set; } - //[XmlAttribute(AttributeName="item")] - public string Item { get; set; } - //[XmlAttribute(AttributeName="maxOccurrence")] - public string MaxOccurrence { get; set; } - } - - //[XmlRoot(ElementName="SpeakerTrack")] - public class SpeakerTrack { - //[XmlElement(ElementName="Availability")] - public string Availability { get; set; } - //[XmlElement(ElementName="Status")] - public string Status { get; set; } - } - - //[XmlRoot(ElementName="Cameras")] - public class Cameras { - //[XmlElement(ElementName="Camera")] - public Camera Camera { get; set; } - //[XmlElement(ElementName="SpeakerTrack")] - public SpeakerTrack SpeakerTrack { get; set; } - } - - //[XmlRoot(ElementName="Conference")] - public class Conference { - //[XmlElement(ElementName="MaxActiveCalls")] - public string MaxActiveCalls { get; set; } - //[XmlElement(ElementName="MaxAudioCalls")] - public string MaxAudioCalls { get; set; } - //[XmlElement(ElementName="MaxCalls")] - public string MaxCalls { get; set; } - //[XmlElement(ElementName="MaxVideoCalls")] - public string MaxVideoCalls { get; set; } - //[XmlElement(ElementName="ActiveSpeaker")] - public ActiveSpeaker ActiveSpeaker { get; set; } - //[XmlElement(ElementName="DoNotDisturb")] - public string DoNotDisturb { get; set; } - //[XmlElement(ElementName="Multipoint")] - public Multipoint Multipoint { get; set; } - //[XmlElement(ElementName="Presentation")] - public Presentation Presentation { get; set; } - //[XmlElement(ElementName="SpeakerLock")] - public SpeakerLock SpeakerLock { get; set; } - } - - //[XmlRoot(ElementName="ActiveSpeaker")] - public class ActiveSpeaker { - //[XmlElement(ElementName="CallId")] - public string CallId { get; set; } - //[XmlElement(ElementName="PIPPosition")] - public string PIPPosition { get; set; } - } - - //[XmlRoot(ElementName="Multipoint")] - public class Multipoint { - //[XmlElement(ElementName="Mode")] - public string Mode { get; set; } - } - - //[XmlRoot(ElementName="Whiteboard")] - public class Whiteboard { - //[XmlElement(ElementName="Mode")] - public string Mode { get; set; } - //[XmlElement(ElementName="ReleaseFloorAvailability")] - public string ReleaseFloorAvailability { get; set; } - //[XmlElement(ElementName="RequestFloorAvailability")] - public string RequestFloorAvailability { get; set; } - } - - //[XmlRoot(ElementName="Presentation")] - public class Presentation { - //[XmlElement(ElementName="CallId")] - public string CallId { get; set; } - //[XmlElement(ElementName="Mode")] - public string Mode { get; set; } - //[XmlElement(ElementName="Whiteboard")] - public Whiteboard Whiteboard { get; set; } - //[XmlElement(ElementName="PIPPosition")] - public string PIPPosition { get; set; } - } - - //[XmlRoot(ElementName="SpeakerLock")] - public class SpeakerLock { - //[XmlElement(ElementName="CallId")] - public string CallId { get; set; } - //[XmlElement(ElementName="Mode")] - public string Mode { get; set; } - } - - //[XmlRoot(ElementName="Message")] - public class Message { - //[XmlElement(ElementName="Description")] - public string Description { get; set; } - //[XmlElement(ElementName="Level")] - public string Level { get; set; } - //[XmlElement(ElementName="References")] - public string References { get; set; } - //[XmlElement(ElementName="Type")] - public string Type { get; set; } - //[XmlAttribute(AttributeName="item")] - public string Item { get; set; } - //[XmlAttribute(AttributeName="maxOccurrence")] - public string MaxOccurrence { get; set; } - } - - //[XmlRoot(ElementName="Diagnostics")] - public class Diagnostics { - //[XmlElement(ElementName="Message")] - public List Message { get; set; } - } - - //[XmlRoot(ElementName="Experimental")] - public class Experimental { - //[XmlElement(ElementName="Conference")] - public string Conference { get; set; } - } - - //[XmlRoot(ElementName="Gatekeeper")] - public class Gatekeeper { - //[XmlElement(ElementName="Address")] - public string Address { get; set; } - //[XmlElement(ElementName="Port")] - public string Port { get; set; } - //[XmlElement(ElementName="Reason")] - public string Reason { get; set; } - //[XmlElement(ElementName="Status")] - public string Status { get; set; } - } - - //[XmlRoot(ElementName="Mode")] - public class Mode { - //[XmlElement(ElementName="Reason")] - public string Reason { get; set; } - //[XmlElement(ElementName="Status")] - public string Status { get; set; } - } - - //[XmlRoot(ElementName="H323")] - public class H323 { - //[XmlElement(ElementName="Gatekeeper")] - public Gatekeeper Gatekeeper { get; set; } - //[XmlElement(ElementName="Mode")] - public Mode Mode { get; set; } - } - - //[XmlRoot(ElementName="Expression")] - public class Expression { - //[XmlAttribute(AttributeName="item")] - public string Item { get; set; } - //[XmlAttribute(AttributeName="maxOccurrence")] - public string MaxOccurrence { get; set; } - //[XmlText] - public string Text { get; set; } - } - - //[XmlRoot(ElementName="HttpFeedback")] - public class HttpFeedback { - //[XmlElement(ElementName="Expression")] - public List Expression { get; set; } - //[XmlElement(ElementName="Format")] - public string Format { get; set; } - //[XmlElement(ElementName="URL")] - public string URL { get; set; } - //[XmlAttribute(AttributeName="item")] - public string Item { get; set; } - //[XmlAttribute(AttributeName="maxOccurrence")] - public string MaxOccurrence { get; set; } - } - - //[XmlRoot(ElementName="CDP")] - public class CDP { - //[XmlElement(ElementName="Address")] - public string Address { get; set; } - //[XmlElement(ElementName="Capabilities")] - public string Capabilities { get; set; } - //[XmlElement(ElementName="DeviceId")] - public string DeviceId { get; set; } - //[XmlElement(ElementName="Duplex")] - public string Duplex { get; set; } - //[XmlElement(ElementName="Platform")] - public string Platform { get; set; } - //[XmlElement(ElementName="PortID")] - public string PortID { get; set; } - //[XmlElement(ElementName="PrimaryMgmtAddress")] - public string PrimaryMgmtAddress { get; set; } - //[XmlElement(ElementName="SysName")] - public string SysName { get; set; } - //[XmlElement(ElementName="SysObjectID")] - public string SysObjectID { get; set; } - //[XmlElement(ElementName="VTPMgmtDomain")] - public string VTPMgmtDomain { get; set; } - //[XmlElement(ElementName="Version")] - public string Version { get; set; } - //[XmlElement(ElementName="VoIPApplianceVlanID")] - public string VoIPApplianceVlanID { get; set; } - } - - //[XmlRoot(ElementName="Domain")] - public class Domain { - //[XmlElement(ElementName="Name")] - public string Name { get; set; } - } - - //[XmlRoot(ElementName="Server")] - public class Server { - //[XmlElement(ElementName="Address")] - public string Address { get; set; } - //[XmlAttribute(AttributeName="item")] - public string Item { get; set; } - //[XmlAttribute(AttributeName="maxOccurrence")] - public string MaxOccurrence { get; set; } - } - - //[XmlRoot(ElementName="DNS")] - public class DNS { - //[XmlElement(ElementName="Domain")] - public Domain Domain { get; set; } - //[XmlElement(ElementName="Server")] - public List Server { get; set; } - } - - //[XmlRoot(ElementName="Ethernet")] - public class Ethernet { - //[XmlElement(ElementName="MacAddress")] - public string MacAddress { get; set; } - //[XmlElement(ElementName="Speed")] - public string Speed { get; set; } - } - - //[XmlRoot(ElementName="IPv4")] - public class IPv4 { - //[XmlElement(ElementName="Address")] - public string Address { get; set; } - //[XmlElement(ElementName="Gateway")] - public string Gateway { get; set; } - //[XmlElement(ElementName="SubnetMask")] - public string SubnetMask { get; set; } - } - - //[XmlRoot(ElementName="IPv6")] - public class IPv6 { - //[XmlElement(ElementName="Address")] - public string Address { get; set; } - //[XmlElement(ElementName="Gateway")] - public string Gateway { get; set; } - } - - //[XmlRoot(ElementName="Voice")] - public class Voice { - //[XmlElement(ElementName="VlanId")] - public string VlanId { get; set; } - } - - //[XmlRoot(ElementName="VLAN")] - public class VLAN { - //[XmlElement(ElementName="Voice")] - public Voice Voice { get; set; } - } - - //[XmlRoot(ElementName="Network")] - public class Network { - //[XmlElement(ElementName="CDP")] - public CDP CDP { get; set; } - //[XmlElement(ElementName="DNS")] - public DNS DNS { get; set; } - //[XmlElement(ElementName="Ethernet")] - public Ethernet Ethernet { get; set; } - //[XmlElement(ElementName="IPv4")] - public IPv4 IPv4 { get; set; } - //[XmlElement(ElementName="IPv6")] - public IPv6 IPv6 { get; set; } - //[XmlElement(ElementName="VLAN")] - public VLAN VLAN { get; set; } - //[XmlAttribute(AttributeName="item")] - public string Item { get; set; } - //[XmlAttribute(AttributeName="maxOccurrence")] - public string MaxOccurrence { get; set; } - } - - //[XmlRoot(ElementName="NTP")] - public class NTP { - //[XmlElement(ElementName="CurrentAddress")] - public string CurrentAddress { get; set; } - //[XmlElement(ElementName="Server")] - public List Server { get; set; } - //[XmlElement(ElementName="Status")] - public string Status { get; set; } - } - - //[XmlRoot(ElementName="NetworkServices")] - public class NetworkServices { - //[XmlElement(ElementName="NTP")] - public NTP NTP { get; set; } - } - - //[XmlRoot(ElementName="ConnectedDevice")] - public class ConnectedDevice { - //[XmlElement(ElementName="HardwareInfo")] - public string HardwareInfo { get; set; } - //[XmlElement(ElementName="ID")] - public string ID { get; set; } - //[XmlElement(ElementName="Name")] - public string Name { get; set; } - //[XmlElement(ElementName="SoftwareInfo")] - public string SoftwareInfo { get; set; } - //[XmlElement(ElementName="Status")] - public string Status { get; set; } - //[XmlElement(ElementName="Type")] - public string Type { get; set; } - //[XmlElement(ElementName="UpgradeStatus")] - public string UpgradeStatus { get; set; } - //[XmlAttribute(AttributeName="item")] - public string Item { get; set; } - //[XmlAttribute(AttributeName="maxOccurrence")] - public string MaxOccurrence { get; set; } - //[XmlElement(ElementName="PreferredFormat")] - public string PreferredFormat { get; set; } - } - - //[XmlRoot(ElementName="Peripherals")] - public class Peripherals { - //[XmlElement(ElementName="ConnectedDevice")] - public ConnectedDevice ConnectedDevice { get; set; } - } - - //[XmlRoot(ElementName="ExtensionMobility")] - public class ExtensionMobility { - //[XmlElement(ElementName="Enabled")] - public string Enabled { get; set; } - //[XmlElement(ElementName="LastLoggedInUserId")] - public string LastLoggedInUserId { get; set; } - //[XmlElement(ElementName="LoggedIn")] - public string LoggedIn { get; set; } - } - - //[XmlRoot(ElementName="CUCM")] - public class CUCM { - //[XmlElement(ElementName="ExtensionMobility")] - public ExtensionMobility ExtensionMobility { get; set; } - } - - //[XmlRoot(ElementName="UpgradeStatus")] - public class UpgradeStatus { - //[XmlElement(ElementName="LastChange")] - public string LastChange { get; set; } - //[XmlElement(ElementName="Message")] - public string Message { get; set; } - //[XmlElement(ElementName="Phase")] - public string Phase { get; set; } - //[XmlElement(ElementName="SessionId")] - public string SessionId { get; set; } - //[XmlElement(ElementName="Status")] - public string Status { get; set; } - //[XmlElement(ElementName="URL")] - public string URL { get; set; } - //[XmlElement(ElementName="VersionId")] - public string VersionId { get; set; } - } - - //[XmlRoot(ElementName="Software")] - public class Software { - //[XmlElement(ElementName="Current")] - public Current Current { get; set; } - //[XmlElement(ElementName="UpgradeStatus")] - public UpgradeStatus UpgradeStatus { get; set; } - //[XmlElement(ElementName="DisplayName")] - public string DisplayName { get; set; } - //[XmlElement(ElementName="Name")] - public string Name { get; set; } - //[XmlElement(ElementName="OptionKeys")] - public OptionKeys OptionKeys { get; set; } - //[XmlElement(ElementName="ReleaseDate")] - public string ReleaseDate { get; set; } - //[XmlElement(ElementName="Version")] - public string Version { get; set; } - } - - //[XmlRoot(ElementName="Provisioning")] - public class Provisioning { - //[XmlElement(ElementName="CUCM")] - public CUCM CUCM { get; set; } - //[XmlElement(ElementName="Software")] - public Software Software { get; set; } - //[XmlElement(ElementName="Status")] - public string Status { get; set; } - } - - //[XmlRoot(ElementName="Services")] - public class Services { - //[XmlElement(ElementName="Availability")] - public string Availability { get; set; } - } - - //[XmlRoot(ElementName="Proximity")] - public class Proximity { - //[XmlElement(ElementName="Services")] - public Services Services { get; set; } - } - - //[XmlRoot(ElementName="PeopleCount")] - public class PeopleCount { - //[XmlElement(ElementName="Current")] - public string Current { get; set; } - } - - //[XmlRoot(ElementName="RoomAnalytics")] - public class RoomAnalytics { - //[XmlElement(ElementName="PeopleCount")] - public PeopleCount PeopleCount { get; set; } - //[XmlElement(ElementName="PeoplePresence")] - public string PeoplePresence { get; set; } - } - - //[XmlRoot(ElementName="CallForward")] - public class CallForward { - //[XmlElement(ElementName="DisplayName")] - public string DisplayName { get; set; } - //[XmlElement(ElementName="Mode")] - public string Mode { get; set; } - //[XmlElement(ElementName="URI")] - public string URI { get; set; } - } - - //[XmlRoot(ElementName="Mailbox")] - public class Mailbox { - //[XmlElement(ElementName="MessagesWaiting")] - public string MessagesWaiting { get; set; } - //[XmlElement(ElementName="URI")] - public string URI { get; set; } - } - - //[XmlRoot(ElementName="Proxy")] - public class Proxy { - //[XmlElement(ElementName="Address")] - public string Address { get; set; } - //[XmlElement(ElementName="Status")] - public string Status { get; set; } - //[XmlAttribute(AttributeName="item")] - public string Item { get; set; } - //[XmlAttribute(AttributeName="maxOccurrence")] - public string MaxOccurrence { get; set; } - } - - //[XmlRoot(ElementName="Registration")] - public class Registration { - //[XmlElement(ElementName="Reason")] - public string Reason { get; set; } - //[XmlElement(ElementName="Status")] - public string Status { get; set; } - //[XmlElement(ElementName="URI")] - public string URI { get; set; } - //[XmlAttribute(AttributeName="item")] - public string Item { get; set; } - //[XmlAttribute(AttributeName="maxOccurrence")] - public string MaxOccurrence { get; set; } - } - - //[XmlRoot(ElementName="SIP")] - public class SIP { - //[XmlElement(ElementName="Authentication")] - public string Authentication { get; set; } - //[XmlElement(ElementName="CallForward")] - public CallForward CallForward { get; set; } - //[XmlElement(ElementName="Mailbox")] - public Mailbox Mailbox { get; set; } - //[XmlElement(ElementName="Proxy")] - public Proxy Proxy { get; set; } - //[XmlElement(ElementName="Registration")] - public Registration Registration { get; set; } - //[XmlElement(ElementName="Secure")] - public string Secure { get; set; } - //[XmlElement(ElementName="Verified")] - public string Verified { get; set; } - } - - //[XmlRoot(ElementName="FIPS")] - public class FIPS { - //[XmlElement(ElementName="Mode")] - public string Mode { get; set; } - } - - //[XmlRoot(ElementName="Persistency")] - public class Persistency { - //[XmlElement(ElementName="CallHistory")] - public string CallHistory { get; set; } - //[XmlElement(ElementName="Configurations")] - public string Configurations { get; set; } - //[XmlElement(ElementName="DHCP")] - public string DHCP { get; set; } - //[XmlElement(ElementName="InternalLogging")] - public string InternalLogging { get; set; } - //[XmlElement(ElementName="LocalPhonebook")] - public string LocalPhonebook { get; set; } - } - - //[XmlRoot(ElementName="Security")] - public class Security { - //[XmlElement(ElementName="FIPS")] - public FIPS FIPS { get; set; } - //[XmlElement(ElementName="Persistency")] - public Persistency Persistency { get; set; } - } - - //[XmlRoot(ElementName="Standby")] - public class Standby { - //[XmlElement(ElementName="State")] - public string State { get; set; } - } - - //[XmlRoot(ElementName="Module")] - public class Module { - //[XmlElement(ElementName="CompatibilityLevel")] - public string CompatibilityLevel { get; set; } - //[XmlElement(ElementName="SerialNumber")] - public string SerialNumber { get; set; } - } - - //[XmlRoot(ElementName="Hardware")] - public class Hardware { - //[XmlElement(ElementName="Module")] - public Module Module { get; set; } - } - - //[XmlRoot(ElementName="OptionKeys")] - public class OptionKeys { - //[XmlElement(ElementName="Encryption")] - public string Encryption { get; set; } - //[XmlElement(ElementName="MultiSite")] - public string MultiSite { get; set; } - //[XmlElement(ElementName="RemoteMonitoring")] - public string RemoteMonitoring { get; set; } - } - - //[XmlRoot(ElementName="State")] - public class State { - //[XmlElement(ElementName="NumberOfActiveCalls")] - public string NumberOfActiveCalls { get; set; } - //[XmlElement(ElementName="NumberOfInProgressCalls")] - public string NumberOfInProgressCalls { get; set; } - //[XmlElement(ElementName="NumberOfSuspendedCalls")] - public string NumberOfSuspendedCalls { get; set; } - } - - //[XmlRoot(ElementName="SystemUnit")] - public class SystemUnit { - //[XmlElement(ElementName="Hardware")] - public Hardware Hardware { get; set; } - //[XmlElement(ElementName="ProductId")] - public string ProductId { get; set; } - //[XmlElement(ElementName="ProductPlatform")] - public string ProductPlatform { get; set; } - //[XmlElement(ElementName="ProductType")] - public string ProductType { get; set; } - //[XmlElement(ElementName="Software")] - public Software Software { get; set; } - //[XmlElement(ElementName="State")] - public State State { get; set; } - //[XmlElement(ElementName="Uptime")] - public string Uptime { get; set; } - } - - //[XmlRoot(ElementName="Time")] - public class Time { - //[XmlElement(ElementName="SystemTime")] - public string SystemTime { get; set; } - } - - //[XmlRoot(ElementName="ContactMethod")] - public class ContactMethod { - //[XmlElement(ElementName="Number")] - public string Number { get; set; } - //[XmlAttribute(AttributeName="item")] - public string Item { get; set; } - //[XmlAttribute(AttributeName="maxOccurrence")] - public string MaxOccurrence { get; set; } - } - - //[XmlRoot(ElementName="ContactInfo")] - public class ContactInfo { - //[XmlElement(ElementName="ContactMethod")] - public List ContactMethod { get; set; } - //[XmlElement(ElementName="Name")] - public string Name { get; set; } - } - - //[XmlRoot(ElementName="UserInterface")] - public class UserInterface { - //[XmlElement(ElementName="ContactInfo")] - public ContactInfo ContactInfo { get; set; } - } - - //[XmlRoot(ElementName="Connector")] - public class Connector { - //[XmlElement(ElementName="Connected")] - public string Connected { get; set; } - //[XmlElement(ElementName="SignalState")] - public string SignalState { get; set; } - //[XmlElement(ElementName="SourceId")] - public string SourceId { get; set; } - //[XmlElement(ElementName="Type")] - public string Type { get; set; } - //[XmlAttribute(AttributeName="item")] - public string Item { get; set; } - //[XmlAttribute(AttributeName="maxOccurrence")] - public string MaxOccurrence { get; set; } - //[XmlElement(ElementName="ConnectedDevice")] - public ConnectedDevice ConnectedDevice { get; set; } - //[XmlElement(ElementName="MonitorRole")] - public string MonitorRole { get; set; } - //[XmlElement(ElementName="Resolution")] - public Resolution Resolution { get; set; } - } - - //[XmlRoot(ElementName="Resolution")] - public class Resolution { - //[XmlElement(ElementName="Height")] - public string Height { get; set; } - //[XmlElement(ElementName="RefreshRate")] - public string RefreshRate { get; set; } - //[XmlElement(ElementName="Width")] - public string Width { get; set; } - } - - //[XmlRoot(ElementName="Source")] - public class Source { - //[XmlElement(ElementName="ConnectorId")] - public string ConnectorId { get; set; } - //[XmlElement(ElementName="FormatStatus")] - public string FormatStatus { get; set; } - //[XmlElement(ElementName="FormatType")] - public string FormatType { get; set; } - //[XmlElement(ElementName="MediaChannelId")] - public string MediaChannelId { get; set; } - //[XmlElement(ElementName="Resolution")] - public Resolution Resolution { get; set; } - //[XmlAttribute(AttributeName="item")] - public string Item { get; set; } - //[XmlAttribute(AttributeName="maxOccurrence")] - public string MaxOccurrence { get; set; } - } - - //[XmlRoot(ElementName="LayoutFamily")] - public class LayoutFamily { - //[XmlElement(ElementName="Local")] - public string Local { get; set; } - } - - //[XmlRoot(ElementName="Layout")] - public class Layout { - //[XmlElement(ElementName="LayoutFamily")] - public LayoutFamily LayoutFamily { get; set; } - } - - //[XmlRoot(ElementName="Selfview")] - public class Selfview { - //[XmlElement(ElementName="FullscreenMode")] - public string FullscreenMode { get; set; } - //[XmlElement(ElementName="Mode")] - public string Mode { get; set; } - //[XmlElement(ElementName="OnMonitorRole")] - public string OnMonitorRole { get; set; } - //[XmlElement(ElementName="PIPPosition")] - public string PIPPosition { get; set; } - } - - //[XmlRoot(ElementName="Video")] - public class Video { - //[XmlElement(ElementName="ActiveSpeaker")] - public ActiveSpeaker ActiveSpeaker { get; set; } - //[XmlElement(ElementName="Input")] - public Input Input { get; set; } - //[XmlElement(ElementName="Layout")] - public Layout Layout { get; set; } - //[XmlElement(ElementName="Monitors")] - public string Monitors { get; set; } - //[XmlElement(ElementName="Output")] - public Output Output { get; set; } - //[XmlElement(ElementName="Presentation")] - public Presentation Presentation { get; set; } - //[XmlElement(ElementName="Selfview")] - public Selfview Selfview { get; set; } - } - - //[XmlRoot(ElementName="Status")] - public class Status { - //[XmlElement(ElementName="Audio")] - public Audio Audio { get; set; } - //[XmlElement(ElementName="Bookings")] - public Bookings Bookings { get; set; } - //[XmlElement(ElementName="Cameras")] - public Cameras Cameras { get; set; } - //[XmlElement(ElementName="Capabilities")] - public Capabilities Capabilities { get; set; } - //[XmlElement(ElementName="Conference")] - public Conference Conference { get; set; } - //[XmlElement(ElementName="Diagnostics")] - public Diagnostics Diagnostics { get; set; } - //[XmlElement(ElementName="Experimental")] - public Experimental Experimental { get; set; } - //[XmlElement(ElementName="H323")] - public H323 H323 { get; set; } - //[XmlElement(ElementName="HttpFeedback")] - public HttpFeedback HttpFeedback { get; set; } - //[XmlElement(ElementName="MediaChannels")] - public string MediaChannels { get; set; } - //[XmlElement(ElementName="Network")] - public Network Network { get; set; } - //[XmlElement(ElementName="NetworkServices")] - public NetworkServices NetworkServices { get; set; } - //[XmlElement(ElementName="Peripherals")] - public Peripherals Peripherals { get; set; } - //[XmlElement(ElementName="Provisioning")] - public Provisioning Provisioning { get; set; } - //[XmlElement(ElementName="Proximity")] - public Proximity Proximity { get; set; } - //[XmlElement(ElementName="RoomAnalytics")] - public RoomAnalytics RoomAnalytics { get; set; } - //[XmlElement(ElementName="SIP")] - public SIP SIP { get; set; } - //[XmlElement(ElementName="Security")] - public Security Security { get; set; } - //[XmlElement(ElementName="Standby")] - public Standby Standby { get; set; } - //[XmlElement(ElementName="SystemUnit")] - public SystemUnit SystemUnit { get; set; } - //[XmlElement(ElementName="Time")] - public Time Time { get; set; } - //[XmlElement(ElementName="UserInterface")] - public UserInterface UserInterface { get; set; } - //[XmlElement(ElementName="Video")] - public Video Video { get; set; } - //[XmlAttribute(AttributeName="product")] - public string Product { get; set; } - //[XmlAttribute(AttributeName="version")] - public string Version { get; set; } - //[XmlAttribute(AttributeName="apiVersion")] - public string ApiVersion { get; set; } - } - + public class ConnectionStatus + { + public string Value { get; set; } + } + + public class Microphone + { + public string id { get; set; } + public ConnectionStatus ConnectionStatus { get; set; } + } + + public class Connectors + { + public List Microphone { get; set; } + } + + public class Input + { + public Connectors Connectors { get; set; } + } + + public class Mute + { + public string Value { get; set; } + } + + public class Microphones + { + public Mute Mute { get; set; } + } + + public class ConnectionStatus2 + { + public string Value { get; set; } + } + + public class DelayMs + { + public string Value { get; set; } + } + + public class Line + { + public string id { get; set; } + public ConnectionStatus2 ConnectionStatus { get; set; } + public DelayMs DelayMs { get; set; } + } + + public class Connectors2 + { + public List Line { get; set; } + } + + public class Output + { + public Connectors2 Connectors { get; set; } + } + + public class Volume + { + public string Value { get; set; } + } + + public class VolumeMute + { + public string Value { get; set; } + } + + public class Audio + { + public Input Input { get; set; } + public Microphones Microphones { get; set; } + public Output Output { get; set; } + public Volume Volume { get; set; } + public VolumeMute VolumeMute { get; set; } + } + + public class Id + { + public string Value { get; set; } + } + + public class Current + { + public Id Id { get; set; } + } + + public class Bookings + { + public Current Current { get; set; } + } + + public class Options + { + public string Value { get; set; } + } + + public class Capabilities + { + public Options Options { get; set; } + } + + public class Connected + { + public string Value { get; set; } + } + + public class Framerate + { + public string Value { get; set; } + } + + public class Manufacturer + { + public string Value { get; set; } + } + + public class Model + { + public string Value { get; set; } + } + + public class Pan + { + public string Value { get; set; } + } + + public class Tilt + { + public string Value { get; set; } + } + + public class Zoom + { + public string Value { get; set; } + } + + public class Position + { + public Pan Pan { get; set; } + public Tilt Tilt { get; set; } + public Zoom Zoom { get; set; } + } + + public class Camera + { + public string id { get; set; } + public Capabilities Capabilities { get; set; } + public Connected Connected { get; set; } + public Framerate Framerate { get; set; } + public Manufacturer Manufacturer { get; set; } + public Model Model { get; set; } + public Position Position { get; set; } + } + + public class Availability + { + public string Value { get; set; } + } + + public class Status2 + { + public string Value { get; set; } + } + + public class SpeakerTrack + { + public Availability Availability { get; set; } + public Status2 Status { get; set; } + } + + public class Cameras + { + public List Camera { get; set; } + public SpeakerTrack SpeakerTrack { get; set; } + } + + public class MaxActiveCalls + { + public string Value { get; set; } + } + + public class MaxAudioCalls + { + public string Value { get; set; } + } + + public class MaxCalls + { + public string Value { get; set; } + } + + public class MaxVideoCalls + { + public string Value { get; set; } + } + + public class Conference + { + public MaxActiveCalls MaxActiveCalls { get; set; } + public MaxAudioCalls MaxAudioCalls { get; set; } + public MaxCalls MaxCalls { get; set; } + public MaxVideoCalls MaxVideoCalls { get; set; } + } + + public class Capabilities2 + { + public Conference Conference { get; set; } + } + + public class CallId + { + public string Value { get; set; } + } + + public class ActiveSpeaker + { + public CallId CallId { get; set; } + } + + public class DoNotDisturb + { + public string Value { get; set; } + } + + public class Mode + { + public string Value { get; set; } + } + + public class Multipoint + { + public Mode Mode { get; set; } + } + + public class CallId2 + { + public string Value { get; set; } + } + + public class Mode2 + { + public string Value { get; set; } + } + + public class Mode3 + { + public string Value { get; set; } + } + + public class ReleaseFloorAvailability + { + public string Value { get; set; } + } + + public class RequestFloorAvailability + { + public string Value { get; set; } + } + + public class Whiteboard + { + public Mode3 Mode { get; set; } + public ReleaseFloorAvailability ReleaseFloorAvailability { get; set; } + public RequestFloorAvailability RequestFloorAvailability { get; set; } + } + + public class Presentation + { + public CallId2 CallId { get; set; } + public Mode2 Mode { get; set; } + public Whiteboard Whiteboard { get; set; } + } + + public class CallId3 + { + public string Value { get; set; } + } + + public class Mode4 + { + public string Value { get; set; } + } + + public class SpeakerLock + { + public CallId3 CallId { get; set; } + public Mode4 Mode { get; set; } + } + + public class Conference2 + { + public ActiveSpeaker ActiveSpeaker { get; set; } + public DoNotDisturb DoNotDisturb { get; set; } + public Multipoint Multipoint { get; set; } + public Presentation Presentation { get; set; } + public SpeakerLock SpeakerLock { get; set; } + } + + public class Description + { + public string Value { get; set; } + } + + public class Level + { + public string Value { get; set; } + } + + public class References + { + public string Value { get; set; } + } + + public class Type + { + public string Value { get; set; } + } + + public class Message + { + public string id { get; set; } + public Description Description { get; set; } + public Level Level { get; set; } + public References References { get; set; } + public Type Type { get; set; } + } + + public class Diagnostics + { + public List Message { get; set; } + } + + public class Conference3 + { + } + + public class Experimental + { + public Conference3 Conference { get; set; } + } + + public class Address + { + public string Value { get; set; } + } + + public class Port + { + public string Value { get; set; } + } + + public class Reason + { + public string Value { get; set; } + } + + public class Status3 + { + public string Value { get; set; } + } + + public class Gatekeeper + { + public Address Address { get; set; } + public Port Port { get; set; } + public Reason Reason { get; set; } + public Status3 Status { get; set; } + } + + public class Reason2 + { + public string Value { get; set; } + } + + public class Status4 + { + public string Value { get; set; } + } + + public class Mode5 + { + public Reason2 Reason { get; set; } + public Status4 Status { get; set; } + } + + public class H323 + { + public Gatekeeper Gatekeeper { get; set; } + public Mode5 Mode { get; set; } + } + + public class Expression + { + public string id { get; set; } + public string Value { get; set; } + } + + public class Format + { + public string Value { get; set; } + } + + public class URL + { + public string Value { get; set; } + } + + public class HttpFeedback + { + public string id { get; set; } + public List Expression { get; set; } + public Format Format { get; set; } + public URL URL { get; set; } + } + + public class MediaChannels + { + } + + public class Address2 + { + public string Value { get; set; } + } + + public class Capabilities3 + { + public string Value { get; set; } + } + + public class DeviceId + { + public string Value { get; set; } + } + + public class Duplex + { + public string Value { get; set; } + } + + public class Platform + { + public string Value { get; set; } + } + + public class PortID + { + public string Value { get; set; } + } + + public class PrimaryMgmtAddress + { + public string Value { get; set; } + } + + public class SysName + { + public string Value { get; set; } + } + + public class SysObjectID + { + public string Value { get; set; } + } + + public class VTPMgmtDomain + { + public string Value { get; set; } + } + + public class Version + { + public string Value { get; set; } + } + + public class VoIPApplianceVlanID + { + public string Value { get; set; } + } + + public class CDP + { + public Address2 Address { get; set; } + public Capabilities3 Capabilities { get; set; } + public DeviceId DeviceId { get; set; } + public Duplex Duplex { get; set; } + public Platform Platform { get; set; } + public PortID PortID { get; set; } + public PrimaryMgmtAddress PrimaryMgmtAddress { get; set; } + public SysName SysName { get; set; } + public SysObjectID SysObjectID { get; set; } + public VTPMgmtDomain VTPMgmtDomain { get; set; } + public Version Version { get; set; } + public VoIPApplianceVlanID VoIPApplianceVlanID { get; set; } + } + + public class Name + { + public string Value { get; set; } + } + + public class Domain + { + public Name Name { get; set; } + } + + public class Address3 + { + public string Value { get; set; } + } + + public class Server + { + public string id { get; set; } + public Address3 Address { get; set; } + } + + public class DNS + { + public Domain Domain { get; set; } + public List Server { get; set; } + } + + public class MacAddress + { + public string Value { get; set; } + } + + public class Speed + { + public string Value { get; set; } + } + + public class Ethernet + { + public MacAddress MacAddress { get; set; } + public Speed Speed { get; set; } + } + + public class Address4 + { + public string Value { get; set; } + } + + public class Gateway + { + public string Value { get; set; } + } + + public class SubnetMask + { + public string Value { get; set; } + } + + public class IPv4 + { + public Address4 Address { get; set; } + public Gateway Gateway { get; set; } + public SubnetMask SubnetMask { get; set; } + } + + public class Address5 + { + public string Value { get; set; } + } + + public class Gateway2 + { + public string Value { get; set; } + } + + public class IPv6 + { + public Address5 Address { get; set; } + public Gateway2 Gateway { get; set; } + } + + public class VlanId + { + public string Value { get; set; } + } + + public class Voice + { + public VlanId VlanId { get; set; } + } + + public class VLAN + { + public Voice Voice { get; set; } + } + + public class Network + { + public string id { get; set; } + public CDP CDP { get; set; } + public DNS DNS { get; set; } + public Ethernet Ethernet { get; set; } + public IPv4 IPv4 { get; set; } + public IPv6 IPv6 { get; set; } + public VLAN VLAN { get; set; } + } + + public class CurrentAddress + { + public string Value { get; set; } + } + + public class Address6 + { + public string Value { get; set; } + } + + public class Server2 + { + public string id { get; set; } + public Address6 Address { get; set; } + } + + public class Status5 + { + public string Value { get; set; } + } + + public class NTP + { + public CurrentAddress CurrentAddress { get; set; } + public List Server { get; set; } + public Status5 Status { get; set; } + } + + public class NetworkServices + { + public NTP NTP { get; set; } + } + + public class HardwareInfo + { + public string Value { get; set; } + } + + public class ID2 + { + public string Value { get; set; } + } + + public class Name2 + { + public string Value { get; set; } + } + + public class SoftwareInfo + { + public string Value { get; set; } + } + + public class Status6 + { + public string Value { get; set; } + } + + public class Type2 + { + public string Value { get; set; } + } + + public class UpgradeStatus + { + public string Value { get; set; } + } + + public class ConnectedDevice + { + public string id { get; set; } + public HardwareInfo HardwareInfo { get; set; } + public ID2 ID { get; set; } + public Name2 Name { get; set; } + public SoftwareInfo SoftwareInfo { get; set; } + public Status6 Status { get; set; } + public Type2 Type { get; set; } + public UpgradeStatus UpgradeStatus { get; set; } + } + + public class Peripherals + { + public List ConnectedDevice { get; set; } + } + + public class Enabled + { + public string Value { get; set; } + } + + public class LastLoggedInUserId + { + public string Value { get; set; } + } + + public class LoggedIn + { + public string Value { get; set; } + } + + public class ExtensionMobility + { + public Enabled Enabled { get; set; } + public LastLoggedInUserId LastLoggedInUserId { get; set; } + public LoggedIn LoggedIn { get; set; } + } + + public class CUCM + { + public ExtensionMobility ExtensionMobility { get; set; } + } + + public class CompletedAt + { + public string Value { get; set; } + } + + public class URL2 + { + public string Value { get; set; } + } + + public class VersionId + { + public string Value { get; set; } + } + + public class Current2 + { + public CompletedAt CompletedAt { get; set; } + public URL2 URL { get; set; } + public VersionId VersionId { get; set; } + } + + public class LastChange + { + public string Value { get; set; } + } + + public class Message2 + { + public string Value { get; set; } + } + + public class Phase + { + public string Value { get; set; } + } + + public class SessionId + { + public string Value { get; set; } + } + + public class Status7 + { + public string Value { get; set; } + } + + public class URL3 + { + public string Value { get; set; } + } + + public class VersionId2 + { + public string Value { get; set; } + } + + public class UpgradeStatus2 + { + public LastChange LastChange { get; set; } + public Message2 Message { get; set; } + public Phase Phase { get; set; } + public SessionId SessionId { get; set; } + public Status7 Status { get; set; } + public URL3 URL { get; set; } + public VersionId2 VersionId { get; set; } + } + + public class Software + { + public Current2 Current { get; set; } + public UpgradeStatus2 UpgradeStatus { get; set; } + } + + public class Status8 + { + public string Value { get; set; } + } + + public class Provisioning + { + public CUCM CUCM { get; set; } + public Software Software { get; set; } + public Status8 Status { get; set; } + } + + public class Availability2 + { + public string Value { get; set; } + } + + public class Services + { + public Availability2 Availability { get; set; } + } + + public class Proximity + { + public Services Services { get; set; } + } + + public class Current3 + { + public string Value { get; set; } + } + + public class PeopleCount + { + public Current3 Current { get; set; } + } + + public class PeoplePresence + { + public string Value { get; set; } + } + + public class RoomAnalytics + { + public PeopleCount PeopleCount { get; set; } + public PeoplePresence PeoplePresence { get; set; } + } + + public class Authentication + { + public string Value { get; set; } + } + + public class DisplayName + { + public string Value { get; set; } + } + + public class Mode6 + { + public string Value { get; set; } + } + + public class URI + { + public string Value { get; set; } + } + + public class CallForward + { + public DisplayName DisplayName { get; set; } + public Mode6 Mode { get; set; } + public URI URI { get; set; } + } + + public class MessagesWaiting + { + public string Value { get; set; } + } + + public class URI2 + { + public string Value { get; set; } + } + + public class Mailbox + { + public MessagesWaiting MessagesWaiting { get; set; } + public URI2 URI { get; set; } + } + + public class Address7 + { + public string Value { get; set; } + } + + public class Status9 + { + public string Value { get; set; } + } + + public class Proxy + { + public string id { get; set; } + public Address7 Address { get; set; } + public Status9 Status { get; set; } + } + + public class Reason3 + { + public string Value { get; set; } + } + + public class Status10 + { + public string Value { get; set; } + } + + public class URI3 + { + public string Value { get; set; } + } + + public class Registration + { + public string id { get; set; } + public Reason3 Reason { get; set; } + public Status10 Status { get; set; } + public URI3 URI { get; set; } + } + + public class Secure + { + public string Value { get; set; } + } + + public class Verified + { + public string Value { get; set; } + } + + public class SIP + { + public Authentication Authentication { get; set; } + public CallForward CallForward { get; set; } + public Mailbox Mailbox { get; set; } + public List Proxy { get; set; } + public List Registration { get; set; } + public Secure Secure { get; set; } + public Verified Verified { get; set; } + } + + public class Mode7 + { + public string Value { get; set; } + } + + public class FIPS + { + public Mode7 Mode { get; set; } + } + + public class CallHistory + { + public string Value { get; set; } + } + + public class Configurations + { + public string Value { get; set; } + } + + public class DHCP + { + public string Value { get; set; } + } + + public class InternalLogging + { + public string Value { get; set; } + } + + public class LocalPhonebook + { + public string Value { get; set; } + } + + public class Persistency + { + public CallHistory CallHistory { get; set; } + public Configurations Configurations { get; set; } + public DHCP DHCP { get; set; } + public InternalLogging InternalLogging { get; set; } + public LocalPhonebook LocalPhonebook { get; set; } + } + + public class Security + { + public FIPS FIPS { get; set; } + public Persistency Persistency { get; set; } + } + + public class State + { + public string Value { get; set; } + } + + public class Standby + { + public State State { get; set; } + } + + public class CompatibilityLevel + { + public string Value { get; set; } + } + + public class SerialNumber + { + public string Value { get; set; } + } + + public class Module + { + public CompatibilityLevel CompatibilityLevel { get; set; } + public SerialNumber SerialNumber { get; set; } + } + + public class Hardware + { + public Module Module { get; set; } + } + + public class ProductId + { + public string Value { get; set; } + } + + public class ProductPlatform + { + public string Value { get; set; } + } + + public class ProductType + { + public string Value { get; set; } + } + + public class DisplayName2 + { + public string Value { get; set; } + } + + public class Name3 + { + public string Value { get; set; } + } + + public class Encryption + { + public string Value { get; set; } + } + + public class MultiSite + { + public string Value { get; set; } + } + + public class RemoteMonitoring + { + public string Value { get; set; } + } + + public class OptionKeys + { + public Encryption Encryption { get; set; } + public MultiSite MultiSite { get; set; } + public RemoteMonitoring RemoteMonitoring { get; set; } + } + + public class ReleaseDate + { + public string Value { get; set; } + } + + public class Version2 + { + public string Value { get; set; } + } + + public class Software2 + { + public DisplayName2 DisplayName { get; set; } + public Name3 Name { get; set; } + public OptionKeys OptionKeys { get; set; } + public ReleaseDate ReleaseDate { get; set; } + public Version2 Version { get; set; } + } + + public class NumberOfActiveCalls + { + public string Value { get; set; } + } + + public class NumberOfInProgressCalls + { + public string Value { get; set; } + } + + public class NumberOfSuspendedCalls + { + public string Value { get; set; } + } + + public class State2 + { + public NumberOfActiveCalls NumberOfActiveCalls { get; set; } + public NumberOfInProgressCalls NumberOfInProgressCalls { get; set; } + public NumberOfSuspendedCalls NumberOfSuspendedCalls { get; set; } + } + + public class Uptime + { + public string Value { get; set; } + } + + public class SystemUnit + { + public Hardware Hardware { get; set; } + public ProductId ProductId { get; set; } + public ProductPlatform ProductPlatform { get; set; } + public ProductType ProductType { get; set; } + public Software2 Software { get; set; } + public State2 State { get; set; } + public Uptime Uptime { get; set; } + } + + public class SystemTime + { + public DateTime Value { get; set; } + } + + public class Time + { + public SystemTime SystemTime { get; set; } + } + + public class Number + { + public string Value { get; set; } + } + + public class ContactMethod + { + public string id { get; set; } + public Number Number { get; set; } + } + + public class Name4 + { + public string Value { get; set; } + } + + public class ContactInfo + { + public List ContactMethod { get; set; } + public Name4 Name { get; set; } + } + + public class UserInterface + { + public ContactInfo ContactInfo { get; set; } + } + + public class PIPPosition + { + public string Value { get; set; } + } + + public class ActiveSpeaker2 + { + public PIPPosition PIPPosition { get; set; } + } + + public class Connected2 + { + public string Value { get; set; } + } + + public class SignalState + { + public string Value { get; set; } + } + + public class SourceId + { + public string Value { get; set; } + } + + public class Type3 + { + public string Value { get; set; } + } + + public class Connector + { + public string id { get; set; } + public Connected2 Connected { get; set; } + public SignalState SignalState { get; set; } + public SourceId SourceId { get; set; } + public Type3 Type { get; set; } + } + + public class MainVideoSource + { + public string Value { get; set; } + } + + public class ConnectorId + { + public string Value { get; set; } + } + + public class FormatStatus + { + public string Value { get; set; } + } + + public class FormatType + { + public string Value { get; set; } + } + + public class MediaChannelId + { + public string Value { get; set; } + } + + public class Height + { + public string Value { get; set; } + } + + public class RefreshRate + { + public string Value { get; set; } + } + + public class Width + { + public string Value { get; set; } + } + + public class Resolution + { + public Height Height { get; set; } + public RefreshRate RefreshRate { get; set; } + public Width Width { get; set; } + } + + public class Source + { + public string id { get; set; } + public ConnectorId ConnectorId { get; set; } + public FormatStatus FormatStatus { get; set; } + public FormatType FormatType { get; set; } + public MediaChannelId MediaChannelId { get; set; } + public Resolution Resolution { get; set; } + } + + public class Input2 + { + public List Connector { get; set; } + public MainVideoSource MainVideoSource { get; set; } + public List Source { get; set; } + } + + public class Local + { + public string Value { get; set; } + } + + public class LayoutFamily + { + public Local Local { get; set; } + } + + public class Layout + { + public LayoutFamily LayoutFamily { get; set; } + } + + public class Monitors + { + public string Value { get; set; } + } + + public class Connected3 + { + public string Value { get; set; } + } + + public class Name5 + { + public string Value { get; set; } + } + + public class PreferredFormat + { + public string Value { get; set; } + } + + public class ConnectedDevice2 + { + public Name5 Name { get; set; } + public PreferredFormat PreferredFormat { get; set; } + } + + public class MonitorRole + { + public string Value { get; set; } + } + + public class Height2 + { + public string Value { get; set; } + } + + public class RefreshRate2 + { + public string Value { get; set; } + } + + public class Width2 + { + public string Value { get; set; } + } + + public class Resolution2 + { + public Height2 Height { get; set; } + public RefreshRate2 RefreshRate { get; set; } + public Width2 Width { get; set; } + } + + public class Type4 + { + public string Value { get; set; } + } + + public class Connector2 + { + public string id { get; set; } + public Connected3 Connected { get; set; } + public ConnectedDevice2 ConnectedDevice { get; set; } + public MonitorRole MonitorRole { get; set; } + public Resolution2 Resolution { get; set; } + public Type4 Type { get; set; } + } + + public class Output2 + { + public List Connector { get; set; } + } + + public class PIPPosition2 + { + public string Value { get; set; } + } + + public class Presentation2 + { + public PIPPosition2 PIPPosition { get; set; } + } + + public class FullscreenMode + { + public string Value { get; set; } + } + + public class Mode8 + { + public string Value { get; set; } + } + + public class OnMonitorRole + { + public string Value { get; set; } + } + + public class PIPPosition3 + { + public string Value { get; set; } + } + + public class Selfview + { + public FullscreenMode FullscreenMode { get; set; } + public Mode8 Mode { get; set; } + public OnMonitorRole OnMonitorRole { get; set; } + public PIPPosition3 PIPPosition { get; set; } + } + + public class Video + { + public ActiveSpeaker2 ActiveSpeaker { get; set; } + public Input2 Input { get; set; } + public Layout Layout { get; set; } + public Monitors Monitors { get; set; } + public Output2 Output { get; set; } + public Presentation2 Presentation { get; set; } + public Selfview Selfview { get; set; } + } + + public class Status + { + public Audio Audio { get; set; } + public Bookings Bookings { get; set; } + public Cameras Cameras { get; set; } + public Capabilities2 Capabilities { get; set; } + public Conference2 Conference { get; set; } + public Diagnostics Diagnostics { get; set; } + public Experimental Experimental { get; set; } + public H323 H323 { get; set; } + public List HttpFeedback { get; set; } + public MediaChannels MediaChannels { get; set; } + public List Network { get; set; } + public NetworkServices NetworkServices { get; set; } + public Peripherals Peripherals { get; set; } + public Provisioning Provisioning { get; set; } + public Proximity Proximity { get; set; } + public RoomAnalytics RoomAnalytics { get; set; } + public SIP SIP { get; set; } + public Security Security { get; set; } + public Standby Standby { get; set; } + public SystemUnit SystemUnit { get; set; } + public Time Time { get; set; } + public UserInterface UserInterface { get; set; } + public Video Video { get; set; } + } + + public class RootObject + { + public Status Status { get; set; } + } } } diff --git a/Essentials Devices Common/Essentials Devices Common/VC/MockVC/MockVC.cs b/Essentials Devices Common/Essentials Devices Common/VC/MockVC/MockVC.cs index 29b5832c..29484ab9 100644 --- a/Essentials Devices Common/Essentials Devices Common/VC/MockVC/MockVC.cs +++ b/Essentials Devices Common/Essentials Devices Common/VC/MockVC/MockVC.cs @@ -1,231 +1,240 @@ -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.VideoCodec -{ - public class MockVC : VideoCodecBase - { - public MockVC(string key, string name) - : base(key, name) - { - - } - - protected override Func InCallFeedbackFunc - { - get { return () => _InCall; } - } - bool _InCall; - - protected override Func IncomingCallFeedbackFunc - { - get { return () => _IncomingCall; } - } - bool _IncomingCall; - - protected override Func TransmitMuteFeedbackFunc - { - get { return () => _TransmitMute; } - } - bool _TransmitMute; - - protected override Func ReceiveMuteFeedbackFunc - { - get { return () => _ReceiveMute; } - } - bool _ReceiveMute; - - protected override Func PrivacyModeFeedbackFunc - { - get { return () => _PrivacyModeIsOn; } - } - bool _PrivacyModeIsOn; - - /// - /// Dials, yo! - /// - public override void Dial(string s) - { - Debug.Console(1, this, "Dial: {0}", s); - - _InCall = true; - InCallFeedback.FireUpdate(); - } - - /// - /// Makes horrible tones go out on the wire! - /// - /// - public void SendDTMF(string s) - { - Debug.Console(1, this, "SendDTMF: {0}", s); - } - - /// - /// - /// - public override void EndCall() - { - Debug.Console(1, this, "EndCall"); - _InCall = false; - InCallFeedback.FireUpdate(); - } - - /// - /// For a call from the test methods below - /// - public override void AcceptCall() - { - Debug.Console(1, this, "AcceptCall"); - } - - /// - /// For a call from the test methods below - /// - public override void RejectCall() - { - Debug.Console(1, this, "RejectCall"); - } - - - /// - /// Called by routing to make it happen - /// - /// - public override void ExecuteSwitch(object selector) - { - Debug.Console(1, this, "ExecuteSwitch"); - - } - - /// - /// - /// - public override void ReceiveMuteOff() - { - Debug.Console(1, this, "ReceiveMuteOff"); - - if (!_ReceiveMute) - return; - _ReceiveMute = false; - ReceiveMuteIsOnFeedback.FireUpdate(); - } - - /// - /// - /// - public override void ReceiveMuteOn() - { - Debug.Console(1, this, "ReceiveMuteOn"); - if (_ReceiveMute) - return; - ReceiveMuteIsOnFeedback.FireUpdate(); - } - - /// - /// - /// - public override void ReceiveMuteToggle() - { - Debug.Console(1, this, "ReceiveMuteToggle"); - - _ReceiveMute = !_ReceiveMute; - ReceiveMuteIsOnFeedback.FireUpdate(); - } - - /// - /// - /// - /// - public override void SetReceiveVolume(ushort level) - { - Debug.Console(1, this, "SetReceiveVolume: {0}", level); - - } - - /// - /// - /// - public override void TransmitMuteOff() - { - Debug.Console(1, this, "TransmitMuteOff"); - - if (!_TransmitMute) - return; - _TransmitMute = false; - TransmitMuteIsOnFeedback.FireUpdate(); - } - - /// - /// - /// - public override void TransmitMuteOn() - { - Debug.Console(1, this, "TransmitMuteOn"); - if (_TransmitMute) - return; - TransmitMuteIsOnFeedback.FireUpdate(); - } - - public override void TransmitMuteToggle() - { - _TransmitMute = !_TransmitMute; - Debug.Console(1, this, "TransmitMuteToggle: {0}", _TransmitMute); - TransmitMuteIsOnFeedback.FireUpdate(); - } - - public override void SetTransmitVolume(ushort level) - { - Debug.Console(1, this, "SetTransmitVolume: {0}", level); - } - - public override void PrivacyModeOn() - { - Debug.Console(1, this, "PrivacyMuteOn"); - if (_PrivacyModeIsOn) - return; - _PrivacyModeIsOn = true; - PrivacyModeIsOnFeedback.FireUpdate(); - - } - - public override void PrivacyModeOff() - { - Debug.Console(1, this, "PrivacyMuteOff"); - if (!_PrivacyModeIsOn) - return; - _PrivacyModeIsOn = false; - PrivacyModeIsOnFeedback.FireUpdate(); - } - - public override void PrivacyModeToggle() - { - _PrivacyModeIsOn = !_PrivacyModeIsOn; - Debug.Console(1, this, "PrivacyMuteToggle: {0}", _PrivacyModeIsOn); - PrivacyModeIsOnFeedback.FireUpdate(); - } - - //******************************************************** - // SIMULATION METHODS - - public void TestIncomingCall(string url) - { - Debug.Console(1, this, "TestIncomingCall"); - - _IncomingCall = true; - IncomingCallFeedback.FireUpdate(); - } - - public void TestFarEndHangup() - { - Debug.Console(1, this, "TestFarEndHangup"); - - } - } +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.VideoCodec +{ + public class MockVC : VideoCodecBase + { + public MockVC(string key, string name) + : base(key, name) + { + + } + + protected override Func InCallFeedbackFunc + { + get { return () => _InCall; } + } + bool _InCall; + + protected override Func IncomingCallFeedbackFunc + { + get { return () => _IncomingCall; } + } + bool _IncomingCall; + + protected override Func TransmitMuteFeedbackFunc + { + get { return () => _TransmitMute; } + } + bool _TransmitMute; + + protected override Func ReceiveMuteFeedbackFunc + { + get { return () => _ReceiveMute; } + } + bool _ReceiveMute; + + protected override Func PrivacyModeFeedbackFunc + { + get { return () => _PrivacyModeIsOn; } + } + bool _PrivacyModeIsOn; + + /// + /// Dials, yo! + /// + public override void Dial(string s) + { + Debug.Console(1, this, "Dial: {0}", s); + + _InCall = true; + InCallFeedback.FireUpdate(); + } + + /// + /// + /// + public override void EndCall() + { + Debug.Console(1, this, "EndCall"); + _InCall = false; + InCallFeedback.FireUpdate(); + } + + /// + /// For a call from the test methods below + /// + public override void AcceptCall() + { + Debug.Console(1, this, "AcceptCall"); + } + + /// + /// For a call from the test methods below + /// + public override void RejectCall() + { + Debug.Console(1, this, "RejectCall"); + } + + /// + /// Makes horrible tones go out on the wire! + /// + /// + public override void SendDtmf(string s) + { + Debug.Console(1, this, "SendDTMF: {0}", s); + } + + public override void StartSharing() + { + + } + + public override void StopSharing() + { + + } + + /// + /// Called by routing to make it happen + /// + /// + public override void ExecuteSwitch(object selector) + { + Debug.Console(1, this, "ExecuteSwitch"); + + } + + /// + /// + /// + public override void ReceiveMuteOff() + { + Debug.Console(1, this, "ReceiveMuteOff"); + + if (!_ReceiveMute) + return; + _ReceiveMute = false; + ReceiveMuteIsOnFeedback.FireUpdate(); + } + + /// + /// + /// + public override void ReceiveMuteOn() + { + Debug.Console(1, this, "ReceiveMuteOn"); + if (_ReceiveMute) + return; + ReceiveMuteIsOnFeedback.FireUpdate(); + } + + /// + /// + /// + public override void ReceiveMuteToggle() + { + Debug.Console(1, this, "ReceiveMuteToggle"); + + _ReceiveMute = !_ReceiveMute; + ReceiveMuteIsOnFeedback.FireUpdate(); + } + + /// + /// + /// + /// + public override void SetReceiveVolume(ushort level) + { + Debug.Console(1, this, "SetReceiveVolume: {0}", level); + + } + + /// + /// + /// + public override void TransmitMuteOff() + { + Debug.Console(1, this, "TransmitMuteOff"); + + if (!_TransmitMute) + return; + _TransmitMute = false; + TransmitMuteIsOnFeedback.FireUpdate(); + } + + /// + /// + /// + public override void TransmitMuteOn() + { + Debug.Console(1, this, "TransmitMuteOn"); + if (_TransmitMute) + return; + TransmitMuteIsOnFeedback.FireUpdate(); + } + + public override void TransmitMuteToggle() + { + _TransmitMute = !_TransmitMute; + Debug.Console(1, this, "TransmitMuteToggle: {0}", _TransmitMute); + TransmitMuteIsOnFeedback.FireUpdate(); + } + + public override void SetTransmitVolume(ushort level) + { + Debug.Console(1, this, "SetTransmitVolume: {0}", level); + } + + public override void PrivacyModeOn() + { + Debug.Console(1, this, "PrivacyMuteOn"); + if (_PrivacyModeIsOn) + return; + _PrivacyModeIsOn = true; + PrivacyModeIsOnFeedback.FireUpdate(); + + } + + public override void PrivacyModeOff() + { + Debug.Console(1, this, "PrivacyMuteOff"); + if (!_PrivacyModeIsOn) + return; + _PrivacyModeIsOn = false; + PrivacyModeIsOnFeedback.FireUpdate(); + } + + public override void PrivacyModeToggle() + { + _PrivacyModeIsOn = !_PrivacyModeIsOn; + Debug.Console(1, this, "PrivacyMuteToggle: {0}", _PrivacyModeIsOn); + PrivacyModeIsOnFeedback.FireUpdate(); + } + + //******************************************************** + // SIMULATION METHODS + + public void TestIncomingCall(string url) + { + Debug.Console(1, this, "TestIncomingCall"); + + _IncomingCall = true; + IncomingCallFeedback.FireUpdate(); + } + + public void TestFarEndHangup() + { + Debug.Console(1, this, "TestFarEndHangup"); + + } + } } \ No newline at end of file From 1ad1c5404ff7cd3b40b511d647401935dd7c8214 Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Thu, 14 Sep 2017 10:21:29 -0600 Subject: [PATCH 4/4] Started working on property feedback mechansism to trigger codec feedbacks automatically when feedback values are deserialized --- .../VC/CiscoCodec/CiscoCodec.cs | 24 ++++- .../VC/CiscoCodec/Status.cs | 99 +++++++++++++++++-- .../VC/MockVC/MockVC.cs | 5 + .../VC/VideoCodecBase.cs | 48 ++++++++- 4 files changed, 162 insertions(+), 14 deletions(-) diff --git a/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/CiscoCodec.cs b/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/CiscoCodec.cs index bc3ee7b8..048462a6 100644 --- a/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/CiscoCodec.cs +++ b/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/CiscoCodec.cs @@ -33,6 +33,14 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco private CiscoCodecStatus.RootObject CodecStatus; + protected override Func VolumeLevelFeedbackFunc + { + get + { + return () => CodecStatus.Status.Audio.Volume.IntValue; + } + } + //private HttpsClient Client; //private HttpApiServer Server; @@ -83,6 +91,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco CodecStatus = new CiscoCodecStatus.RootObject(); + CodecStatus.Status.Audio.Volume.ValueChangedAction = VolumeLevelFeedback.FireUpdate; + //Client = new HttpsClient(); //Server = new HttpApiServer(); @@ -162,7 +172,12 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco SyncState.CodecDisconnected(); } - + /// + /// Gathers responses from the codec (including the delimiter. Responses are checked to see if they contain JSON data and if so, the data is collected until a complete JSON + /// message is received before forwarding the message to be deserialized. + /// + /// + /// void Port_LineReceived(object dev, GenericCommMethodReceiveTextArgs args) { if (Debug.Level == 1) @@ -215,7 +230,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco SendText("xStatus"); break; } - case "xFeedback Register": + case "xFeedback register": { SyncState.FeedbackRegistered(); break; @@ -473,12 +488,13 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco public override void Dial(string s) { - + SendText(string.Format("xCommand Dial Number: {0}", s)); } public override void EndCall() { - + //SendText(string.Format("xCommand Accept CallId: {0}", CodecStatus.Status.)); + } public override void AcceptCall() diff --git a/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/Status.cs b/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/Status.cs index 5633a2a1..fb1070b4 100644 --- a/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/Status.cs +++ b/Essentials Devices Common/Essentials Devices Common/VC/CiscoCodec/Status.cs @@ -9,6 +9,22 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco { public class CiscoCodecStatus { + // Helper Classes for Proerties + public abstract class ValueProperty + { + /// + /// Triggered when Value is set + /// + public Action ValueChangedAction { get; set; } + + protected void OnValueChanged() + { + var a = ValueChangedAction; + if (a != null) + a(); + } + + } public class ConnectionStatus { @@ -31,9 +47,19 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco public Connectors Connectors { get; set; } } - public class Mute + public class Mute : ValueProperty { - public string Value { get; set; } + public bool BoolValue { get; private set; } + + public string Value + { + set + { + // If the incoming value is "On" it sets the BoolValue true, otherwise sets it false + BoolValue = value == "On"; + OnValueChanged(); + } + } } public class Microphones @@ -68,23 +94,68 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco public Connectors2 Connectors { get; set; } } - public class Volume + public class Volume : ValueProperty { - public string Value { get; set; } + string _Value; + + /// + /// Sets Value and triggers the action when set + /// + public string Value + { + get + { + return _Value; + } + set + { + _Value = value; + OnValueChanged(); + } + } + + /// + /// Converted value of _Value for use as feedback + /// + public int IntValue + { + get + { + if (!string.IsNullOrEmpty(_Value)) + return Convert.ToInt32(_Value); + else + return 0; + } + } } - public class VolumeMute + public class VolumeMute : ValueProperty { - public string Value { get; set; } + public bool BoolValue { get; private set; } + + public string Value + { + set + { + // If the incoming value is "On" it sets the BoolValue true, otherwise sets it false + BoolValue = value == "On"; + OnValueChanged(); + } + } } public class Audio { public Input Input { get; set; } - public Microphones Microphones { get; set; } + public Microphones Microphones { get; set; } // Can we have this setter fire the update on the CiscoCodec feedback? public Output Output { get; set; } - public Volume Volume { get; set; } - public VolumeMute VolumeMute { get; set; } + public Volume Volume { get; set; } + public VolumeMute VolumeMute { get; set; } + + public Audio() + { + Volume = new Volume(); + } } public class Id @@ -1438,11 +1509,21 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco public Time Time { get; set; } public UserInterface UserInterface { get; set; } public Video Video { get; set; } + + public Status() + { + Audio = new Audio(); + } } public class RootObject { public Status Status { get; set; } + + public RootObject() + { + Status = new Status(); + } } } } diff --git a/Essentials Devices Common/Essentials Devices Common/VC/MockVC/MockVC.cs b/Essentials Devices Common/Essentials Devices Common/VC/MockVC/MockVC.cs index 29484ab9..a6033b0d 100644 --- a/Essentials Devices Common/Essentials Devices Common/VC/MockVC/MockVC.cs +++ b/Essentials Devices Common/Essentials Devices Common/VC/MockVC/MockVC.cs @@ -47,6 +47,11 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec } bool _PrivacyModeIsOn; + protected override Func VolumeLevelFeedbackFunc + { + get { throw new NotImplementedException(); } + } + /// /// Dials, yo! /// diff --git a/Essentials Devices Common/Essentials Devices Common/VC/VideoCodecBase.cs b/Essentials Devices Common/Essentials Devices Common/VC/VideoCodecBase.cs index 61e00b86..68de18e1 100644 --- a/Essentials Devices Common/Essentials Devices Common/VC/VideoCodecBase.cs +++ b/Essentials Devices Common/Essentials Devices Common/VC/VideoCodecBase.cs @@ -9,7 +9,7 @@ using PepperDash.Essentials.Core; namespace PepperDash.Essentials.Devices.Common.VideoCodec { - public abstract class VideoCodecBase : Device, IRoutingSinkWithSwitching, IUsageTracking, IHasDialer, IHasSharing //, ICodecAudio + public abstract class VideoCodecBase : Device, IRoutingSinkWithSwitching, IUsageTracking, IHasDialer, IHasSharing, IBasicVolumeWithFeedback //, ICodecAudio { #region IUsageTracking Members @@ -32,6 +32,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec abstract protected Func ReceiveMuteFeedbackFunc { get; } abstract protected Func PrivacyModeFeedbackFunc { get; } + abstract protected Func VolumeLevelFeedbackFunc { get; } + public VideoCodecBase(string key, string name) : base(key, name) { @@ -41,6 +43,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec TransmitMuteIsOnFeedback = new BoolFeedback(TransmitMuteFeedbackFunc); PrivacyModeIsOnFeedback = new BoolFeedback(PrivacyModeFeedbackFunc); + VolumeLevelFeedback = new IntFeedback(VolumeLevelFeedbackFunc); + InputPorts = new RoutingPortCollection(); InCallFeedback.OutputChange += new EventHandler(InCallFeedback_OutputChange); @@ -114,5 +118,47 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec public StringFeedback SharingSourceFeedback { get; private set; } #endregion + + #region IBasicVolumeWithFeedback Members + + public BoolFeedback MuteFeedback { get; private set; } + + public void MuteOff() + { + + } + + public void MuteOn() + { + + } + + public void SetVolume(ushort level) + { + + } + + public IntFeedback VolumeLevelFeedback { get; private set; } + + #endregion + + #region IBasicVolumeControls Members + + public void MuteToggle() + { + + } + + public void VolumeDown(bool pressRelease) + { + + } + + public void VolumeUp(bool pressRelease) + { + + } + + #endregion } } \ No newline at end of file