diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/DeviceTypeInterfaces/INumeric.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/DeviceTypeInterfaces/INumeric.cs
index 62ea8b3f..788cf909 100644
--- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/DeviceTypeInterfaces/INumeric.cs
+++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/DeviceTypeInterfaces/INumeric.cs
@@ -37,6 +37,16 @@ namespace PepperDash.Essentials.Core
{
void Dash(bool pressRelease);
void KeypadEnter(bool pressRelease);
+
+ ///
+ /// To be set to a custom value to override the default DigitSpacingMs in DevicePresetsModel
+ ///
+ int TvPresetsDigitSpacingMs { get; }
+
+ ///
+ /// To be set to a custom value to override the default IrPulseTime
+ ///
+ ushort IrPulseTime { get; }
}
///
diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Presets/DevicePresets.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Presets/DevicePresets.cs
index c08f8844..157653ad 100644
--- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Presets/DevicePresets.cs
+++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Presets/DevicePresets.cs
@@ -70,7 +70,7 @@ namespace PepperDash.Essentials.Core.Presets
public DevicePresetsModel(string key, string fileName) : base(key)
{
- PulseTime = 200;
+ PulseTimeMs = 200;
DigitSpacingMs = 200;
UseLocalImageStorage = true;
@@ -88,7 +88,7 @@ namespace PepperDash.Essentials.Core.Presets
public event PresetRecalledCallback PresetRecalled;
public event PresetsSavedCallback PresetsSaved;
- public int PulseTime { get; set; }
+ public int PulseTimeMs { get; set; }
public int DigitSpacingMs { get; set; }
public bool PresetsAreLoaded { get; private set; }
@@ -154,11 +154,11 @@ namespace PepperDash.Essentials.Core.Presets
{
if (presetNum <= PresetsList.Count)
{
- Dial(PresetsList[presetNum - 1].Channel);
+ Dial(PresetsList[presetNum - 1].Channel, 0, 0);
}
}
- public void Dial(string chanNum)
+ public void Dial(string chanNum, int digitSpacingMs, int pulseTime)
{
if (_dialIsRunning || !_initSuccess)
{
@@ -173,18 +173,35 @@ namespace PepperDash.Essentials.Core.Presets
_dialIsRunning = true;
CrestronInvoke.BeginInvoke(o =>
{
+ var pulse = PulseTimeMs;
+
+ if (pulseTime > 0)
+ {
+ pulse = pulseTime;
+ }
+
foreach (var c in chanNum.ToCharArray())
{
if (_dialFunctions.ContainsKey(c))
{
- Pulse(_dialFunctions[c]);
+ Pulse(_dialFunctions[c], pulse);
}
+
+ // Use the default spacing interval
+ var spacing = DigitSpacingMs;
+
+ // check for override of default interval
+ if (digitSpacingMs > 0)
+ {
+ spacing = digitSpacingMs;
+ }
+
CrestronEnvironment.Sleep(DigitSpacingMs);
}
if (_enterFunction != null)
{
- Pulse(_enterFunction);
+ Pulse(_enterFunction, pulse);
}
_dialIsRunning = false;
});
@@ -223,7 +240,7 @@ namespace PepperDash.Essentials.Core.Presets
OnPresetRecalled(setTopBox, chanNum);
- Dial(chanNum);
+ Dial(chanNum, setTopBox.TvPresetsDigitSpacingMs, setTopBox.IrPulseTime);
}
private void OnPresetRecalled(ISetTopBoxNumericKeypad setTopBox, string channel)
@@ -290,10 +307,17 @@ namespace PepperDash.Essentials.Core.Presets
handler(PresetsList);
}
- private void Pulse(Action act)
+ private void Pulse(Action act, int pulseTime)
{
+ var pulse = PulseTimeMs;
+
+ if (pulseTime > 0)
+ {
+ pulse = pulseTime;
+ }
+
act(true);
- CrestronEnvironment.Sleep(PulseTime);
+ CrestronEnvironment.Sleep(PulseTimeMs);
act(false);
}
}
diff --git a/essentials-framework/Essentials Devices Common/Essentials Devices Common/SetTopBox/IRSetTopBoxBase.cs b/essentials-framework/Essentials Devices Common/Essentials Devices Common/SetTopBox/IRSetTopBoxBase.cs
index 2746a04a..acac048d 100644
--- a/essentials-framework/Essentials Devices Common/Essentials Devices Common/SetTopBox/IRSetTopBoxBase.cs
+++ b/essentials-framework/Essentials Devices Common/Essentials Devices Common/SetTopBox/IRSetTopBoxBase.cs
@@ -28,6 +28,8 @@ namespace PepperDash.Essentials.Devices.Common
public bool HasDpad { get; set; }
public bool HasNumeric { get; set; }
+ public int TvPresetsDigitSpacingMs { get; private set; }
+
public DevicePresetsModel PresetsModel { get; private set; }
public IRSetTopBoxBase(string key, string name, IrOutputPortController portCont,
@@ -35,13 +37,19 @@ namespace PepperDash.Essentials.Devices.Common
: base(key, name)
{
IrPort = portCont;
- IrPulseTime = 200;
+ IrPulseTime = 200; // default
+ TvPresetsDigitSpacingMs = 200; // default
if (props.IrPulseTime > 0)
{
IrPulseTime = (ushort)props.IrPulseTime;
}
+ if (props.TvPresetsDigitSpacingMs > 0)
+ {
+ TvPresetsDigitSpacingMs = props.TvPresetsDigitSpacingMs;
+ }
+
DeviceManager.AddDevice(portCont);
HasPresets = props.HasPresets;
diff --git a/essentials-framework/Essentials Devices Common/Essentials Devices Common/SetTopBox/SetTopBoxPropertiesConfig.cs b/essentials-framework/Essentials Devices Common/Essentials Devices Common/SetTopBox/SetTopBoxPropertiesConfig.cs
index 8faac507..49037d37 100644
--- a/essentials-framework/Essentials Devices Common/Essentials Devices Common/SetTopBox/SetTopBoxPropertiesConfig.cs
+++ b/essentials-framework/Essentials Devices Common/Essentials Devices Common/SetTopBox/SetTopBoxPropertiesConfig.cs
@@ -15,6 +15,7 @@ namespace PepperDash.Essentials.Devices.Common
public bool HasDpad { get; set; }
public bool HasNumeric { get; set; }
public int IrPulseTime { get; set; }
+ public int TvPresetsDigitSpacingMs { get; set; }
public ControlPropertiesConfig Control { get; set; }
}