diff --git a/PepperDashEssentials/ControlSystem.cs b/PepperDashEssentials/ControlSystem.cs
index 9afa210d..b454cec9 100644
--- a/PepperDashEssentials/ControlSystem.cs
+++ b/PepperDashEssentials/ControlSystem.cs
@@ -53,11 +53,14 @@ namespace PepperDash.Essentials
// to allow any HD-BaseT DM endpoints to register first.
if (Global.ControlSystemIsDmpsType)
{
+ Debug.Console(2, "******************* InitializeSystem() Entering **********************");
+
_initializeEvent = new CEvent();
DeviceManager.AllDevicesActivated += (o, a) =>
{
_initializeEvent.Set();
+ Debug.Console(2, "******************* InitializeSystem() Exiting **********************");
};
_initializeEvent.Wait(30000);
diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Crestron/CrestronGenericBaseDevice.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Crestron/CrestronGenericBaseDevice.cs
index df2c3c56..b7534087 100644
--- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Crestron/CrestronGenericBaseDevice.cs
+++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Crestron/CrestronGenericBaseDevice.cs
@@ -69,19 +69,28 @@ namespace PepperDash.Essentials.Core
public override bool CustomActivate()
{
Debug.Console(0, this, "Activating");
- if (!PreventRegistration)
- {
+ if (!PreventRegistration)
+ {
//Debug.Console(1, this, " Does not require registration. Skipping");
- var response = Hardware.RegisterWithLogging(Key);
- if (response != eDeviceRegistrationUnRegistrationResponse.Success)
- {
- //Debug.Console(0, this, "ERROR: Cannot register Crestron device: {0}", response);
- return false;
- }
+ var response = Hardware.RegisterWithLogging(Key);
+ if (response != eDeviceRegistrationUnRegistrationResponse.Success)
+ {
+ //Debug.Console(0, this, "ERROR: Cannot register Crestron device: {0}", response);
+ return false;
+ }
IsRegistered.FireUpdate();
- }
+ }
+ else
+ {
+ AddPostActivationAction(() =>
+ {
+ var response = Hardware.RegisterWithLogging(Key);
+
+ IsRegistered.FireUpdate();
+ });
+ }
foreach (var f in Feedbacks)
{
diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Global/Global.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Global/Global.cs
index 0365b209..9d792437 100644
--- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Global/Global.cs
+++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Global/Global.cs
@@ -43,6 +43,17 @@ namespace PepperDash.Essentials.Core
}
}
+ ///
+ /// True when the processor type is a DMPS 4K variant
+ ///
+ public static bool ControlSystemIsDmps4kType
+ {
+ get
+ {
+ return ControlSystemIsDmpsType && ControlSystem.ControllerPrompt.ToLower().IndexOf("4k") > -1;
+ }
+ }
+
///
/// The file path prefix to the folder containing configuration files
///
diff --git a/essentials-framework/Essentials DM/Essentials_DM/Endpoints/Transmitters/DmTxHelpers.cs b/essentials-framework/Essentials DM/Essentials_DM/Endpoints/Transmitters/DmTxHelpers.cs
index 3ff14dba..fcec7fa4 100644
--- a/essentials-framework/Essentials DM/Essentials_DM/Endpoints/Transmitters/DmTxHelpers.cs
+++ b/essentials-framework/Essentials DM/Essentials_DM/Endpoints/Transmitters/DmTxHelpers.cs
@@ -36,7 +36,7 @@ namespace PepperDash.Essentials.DM
var ipid = props.Control.IpIdInt;
var pKey = props.ParentDeviceKey.ToLower();
- if (pKey == "processor")
+ if (pKey == "processor")
{
// Catch constructor failures, mainly dues to IPID
try
@@ -70,7 +70,7 @@ namespace PepperDash.Essentials.DM
var parentDev = DeviceManager.GetDeviceForKey(pKey);
DMInput dmInput;
- bool noIpId = false;
+ bool isCpu3 = false;
if (parentDev is IDmSwitch)
{
@@ -96,7 +96,7 @@ namespace PepperDash.Essentials.DM
chassis is DmMd16x16Cpu3rps || chassis is DmMd32x32Cpu3rps ||
chassis is DmMd128x128 || chassis is DmMd64x64)
{
- noIpId = true;
+ isCpu3 = true;
}
}
@@ -116,7 +116,6 @@ namespace PepperDash.Essentials.DM
}
dmpsDev.TxDictionary.Add(num, key);
- noIpId = dmpsDev.Dmps4kType;
try
{
@@ -138,7 +137,7 @@ namespace PepperDash.Essentials.DM
try
{
// Must use different constructor for CPU3 or DMPS3-4K types. No IPID
- if (noIpId)
+ if (isCpu3 || Global.ControlSystemIsDmps4kType)
{
if (typeName.StartsWith("dmtx200"))
return new DmTx200Controller(key, name, new DmTx200C2G(dmInput));
@@ -222,11 +221,12 @@ namespace PepperDash.Essentials.DM
protected DmTxControllerBase(string key, string name, EndpointTransmitterBase hardware)
: base(key, name, hardware)
{
- // if wired to a chassis, skip registration step in base class
- if (hardware.DMInput != null)
- {
- this.PreventRegistration = true;
- }
+ // if wired to a chassis or DMPS, skip registration step in base class
+ if (hardware.DMInput != null || (Global.ControlSystemIsDmpsType && hardware.DMInput != null))
+ {
+ this.PreventRegistration = true;
+ }
+
AddToFeedbackList(ActiveVideoInputFeedback);
}