diff --git a/src/PepperDash.Essentials.Core/PepperDash.Essentials.Core.csproj b/src/PepperDash.Essentials.Core/PepperDash.Essentials.Core.csproj
index 7e9b53c8..c90612d9 100644
--- a/src/PepperDash.Essentials.Core/PepperDash.Essentials.Core.csproj
+++ b/src/PepperDash.Essentials.Core/PepperDash.Essentials.Core.csproj
@@ -26,7 +26,7 @@
Full
-
+
diff --git a/src/PepperDash.Essentials.Core/Web/RequestHandlers/DebugSessionRequestHandler.cs b/src/PepperDash.Essentials.Core/Web/RequestHandlers/DebugSessionRequestHandler.cs
index b024208d..725d9fb1 100644
--- a/src/PepperDash.Essentials.Core/Web/RequestHandlers/DebugSessionRequestHandler.cs
+++ b/src/PepperDash.Essentials.Core/Web/RequestHandlers/DebugSessionRequestHandler.cs
@@ -1,4 +1,6 @@
using Crestron.SimplSharp;
+using Crestron.SimplSharp.WebScripting;
+using Crestron.SimplSharpPro.EthernetCommunication;
using Newtonsoft.Json;
using PepperDash.Core;
using PepperDash.Core.Web.RequestHandlers;
@@ -17,6 +19,10 @@ namespace PepperDash.Essentials.Core.Web.RequestHandlers
{
}
+ ///
+ /// Gets details for a debug session
+ ///
+ ///
protected override void HandleGet(Crestron.SimplSharp.WebScripting.HttpCwsContext context)
{
var routeData = context.Request.RouteData;
@@ -29,29 +35,61 @@ namespace PepperDash.Essentials.Core.Web.RequestHandlers
return;
}
- // Generate a random port within a specified range
+ try
+ {
+ var ip = CrestronEthernetHelper.GetEthernetParameter(
+ CrestronEthernetHelper.ETHERNET_PARAMETER_TO_GET.GET_CURRENT_IP_ADDRESS, 0);
- // Start the WS Server
+ var port = 0;
- // Return the port number with the full url of the WS Server
+ if(Debug.WebsocketSink == null)
+ {
+ Debug.Console(0, "WebsocketSink is null");
+ }
- var ip = CrestronEthernetHelper.GetEthernetParameter(
- CrestronEthernetHelper.ETHERNET_PARAMETER_TO_GET.GET_CURRENT_IP_ADDRESS, 0);
+ if (!Debug.WebsocketSink.IsListening)
+ {
+ Debug.Console(0, "Starting WS Server");
+ // Generate a random port within a specified range
+ port = new Random().Next(65435, 65535);
+ // Start the WS Server
+ Debug.WebsocketSink.StartServerAndSetPort(port);
+ }
- var port = new Random().Next(65435, 65535);
+ object data = new
+ {
+ url = string.Format(@"wss://{0}:{1}", ip, Debug.WebsocketSink.Port)
+ };
- object data = new {
- url = string.Format(@"ws://{ip}:{port}", ip, port)
- };
+ // Return the port number with the full url of the WS Server
+ var res = JsonConvert.SerializeObject(data);
- var res = JsonConvert.SerializeObject(data);
+ context.Response.ContentType = "application/json";
+ context.Response.ContentEncoding = Encoding.UTF8;
+ context.Response.StatusCode = 200;
+ context.Response.StatusDescription = "OK";
+ context.Response.Write(res, false);
+ context.Response.End();
+ }
+ catch (Exception e)
+ {
+ Debug.Console(0, "Error: {0}", e);
+ }
+ }
- context.Response.Write(res, false);
- context.Response.ContentType = "application/json";
+ ///
+ /// Stops a debug session
+ ///
+ ///
+ protected override void HandlePost(HttpCwsContext context)
+ {
+ Debug.WebsocketSink.StopServer();
+
+ context.Response.StatusDescription = "Ending Debug Session";
context.Response.StatusCode = 200;
context.Response.StatusDescription = "OK";
context.Response.End();
- }
+ }
}
}
diff --git a/src/PepperDash.Essentials.Devices.Common/PepperDash.Essentials.Devices.Common.csproj b/src/PepperDash.Essentials.Devices.Common/PepperDash.Essentials.Devices.Common.csproj
index 524f3f9e..5ffd68fa 100644
--- a/src/PepperDash.Essentials.Devices.Common/PepperDash.Essentials.Devices.Common.csproj
+++ b/src/PepperDash.Essentials.Devices.Common/PepperDash.Essentials.Devices.Common.csproj
@@ -31,6 +31,6 @@
Full
-
+
\ No newline at end of file
diff --git a/src/PepperDash.Essentials/PepperDash.Essentials.csproj b/src/PepperDash.Essentials/PepperDash.Essentials.csproj
index 725aaa31..aaf9b878 100644
--- a/src/PepperDash.Essentials/PepperDash.Essentials.csproj
+++ b/src/PepperDash.Essentials/PepperDash.Essentials.csproj
@@ -51,7 +51,7 @@
Full
-
+