diff --git a/Essentials/PepperDashEssentials/Room/Cotija/CotijaSystemController.cs b/Essentials/PepperDashEssentials/Room/Cotija/CotijaSystemController.cs
index 84a9c553..d55e38a2 100644
--- a/Essentials/PepperDashEssentials/Room/Cotija/CotijaSystemController.cs
+++ b/Essentials/PepperDashEssentials/Room/Cotija/CotijaSystemController.cs
@@ -31,6 +31,8 @@ namespace PepperDash.Essentials
///
CEvent PostLockEvent = new CEvent(true, true);
+ CEvent RegisterLockEvent = new CEvent(true, true);
+
public CotijaConfig Config { get; private set; }
HttpClient Client;
@@ -195,6 +197,14 @@ namespace PepperDash.Essentials
/// URL of the server, including the port number, if not 80. Format: "serverUrlOrIp:port"
void RegisterSystemToServer()
{
+ var ready = RegisterLockEvent.Wait(2000);
+ if (!ready)
+ {
+ Debug.Console(1, this, "RegisterSystemToServer failed to enter after 2 seconds. Ignoring");
+ return;
+ }
+ RegisterLockEvent.Reset();
+
try
{
var confObject = ConfigReader.ConfigObject;
@@ -220,13 +230,14 @@ namespace PepperDash.Essentials
request.Header.SetHeaderValue("Content-Type", "application/json");
request.ContentString = postBody;
- var err = regClient.DispatchAsync(request, PostConnectionCallback);
+ var err = regClient.DispatchAsync(request, RegistrationConnectionCallback);
}
}
catch (Exception e)
{
Debug.Console(0, this, "ERROR: Initilizing Room: {0}", e);
+ RegisterLockEvent.Set();
}
}
@@ -342,9 +353,9 @@ namespace PepperDash.Essentials
///
///
///
- void PostConnectionCallback(HttpClientResponse resp, HTTP_CALLBACK_ERROR err)
+ void RegistrationConnectionCallback(HttpClientResponse resp, HTTP_CALLBACK_ERROR err)
{
- Debug.Console(1, this, "PostConnectionCallback: {0}", err);
+ Debug.Console(1, this, "RegistrationConnectionCallback: {0}", err);
try
{
if (resp != null && resp.Code == 200)
@@ -355,7 +366,7 @@ namespace PepperDash.Essentials
ServerReconnectTimer = null;
}
- ConnectStreamClient(null);
+ ConnectStreamClient();
}
else
{
@@ -372,12 +383,13 @@ namespace PepperDash.Essentials
{
Debug.Console(1, this, "Error Initializing Stream Client: {0}", e);
}
+ RegisterLockEvent.Set();
}
///
/// Executes when we don't get a heartbeat message in time. Triggers reconnect.
///
- ///
+ /// For CTimer callback. Not used
void HeartbeatExpiredTimerCallback(object o)
{
Debug.Console(1, this, "Heartbeat Timer Expired.");
@@ -427,7 +439,7 @@ namespace PepperDash.Essentials
/// Connects the SSE Client
///
///
- void ConnectStreamClient(object o)
+ void ConnectStreamClient()
{
Debug.Console(0, this, "Initializing Stream client to server.");
diff --git a/Release Package/PepperDashEssentials.cpz b/Release Package/PepperDashEssentials.cpz
index 3c53b95c..5f8e5f68 100644
Binary files a/Release Package/PepperDashEssentials.cpz and b/Release Package/PepperDashEssentials.cpz differ
diff --git a/Release Package/PepperDashEssentials.dll b/Release Package/PepperDashEssentials.dll
index 2d7c7218..21282939 100644
Binary files a/Release Package/PepperDashEssentials.dll and b/Release Package/PepperDashEssentials.dll differ