mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-12 19:24:53 +00:00
Makes IPower Obsolete and replaces with IHasPowerControl and IHasPowerControlWithFeedback
Includes major refactor to resolve IPower update Closes #476 Closes #474 more properly
This commit is contained in:
@@ -181,13 +181,13 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
|
||||
});
|
||||
}
|
||||
|
||||
var powerCamera = cameraDevice as IPower;
|
||||
var powerCamera = cameraDevice as IHasPowerControl;
|
||||
if (powerCamera != null)
|
||||
{
|
||||
trilist.SetSigTrueAction(joinMap.PowerOn.JoinNumber, () => powerCamera.PowerOn());
|
||||
trilist.SetSigTrueAction(joinMap.PowerOff.JoinNumber, () => powerCamera.PowerOff());
|
||||
|
||||
var powerFbCamera = powerCamera as IPowerWithFeedback;
|
||||
var powerFbCamera = powerCamera as IHasPowerControlWithFeedback;
|
||||
if (powerFbCamera != null)
|
||||
{
|
||||
powerFbCamera.PowerIsOnFeedback.LinkInputSig(trilist.BooleanInput[joinMap.PowerOn.JoinNumber]);
|
||||
|
||||
@@ -14,7 +14,7 @@ using Crestron.SimplSharp.Reflection;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.Cameras
|
||||
{
|
||||
public class CameraVisca : CameraBase, IHasCameraPtzControl, ICommunicationMonitor, IHasCameraPresets, IPower, IBridgeAdvanced
|
||||
public class CameraVisca : CameraBase, IHasCameraPtzControl, ICommunicationMonitor, IHasCameraPresets, IHasPowerControlWithFeedback, IBridgeAdvanced
|
||||
{
|
||||
public IBasicCommunication Communication { get; private set; }
|
||||
public CommunicationGather PortGather { get; private set; }
|
||||
|
||||
@@ -10,26 +10,28 @@ using PepperDash.Essentials.Core;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Displays
|
||||
{
|
||||
public abstract class ComTcpDisplayBase : DisplayBase, IPower
|
||||
[Obsolete("Please use TwoWayDisplayBase instead")]
|
||||
public abstract class ComTcpDisplayBase : TwoWayDisplayBase
|
||||
{
|
||||
/// <summary>
|
||||
/// Sets the communication method for this - swaps out event handlers and output handlers
|
||||
/// </summary>
|
||||
public IBasicCommunication CommunicationMethod
|
||||
{
|
||||
get { return _CommunicationMethod; }
|
||||
set
|
||||
{
|
||||
if (_CommunicationMethod != null)
|
||||
_CommunicationMethod.BytesReceived -= this.CommunicationMethod_BytesReceived;
|
||||
// Outputs???
|
||||
_CommunicationMethod = value;
|
||||
if (_CommunicationMethod != null)
|
||||
_CommunicationMethod.BytesReceived += this.CommunicationMethod_BytesReceived;
|
||||
// Outputs?
|
||||
}
|
||||
}
|
||||
IBasicCommunication _CommunicationMethod;
|
||||
|
||||
///// <summary>
|
||||
///// Sets the communication method for this - swaps out event handlers and output handlers
|
||||
///// </summary>
|
||||
//public IBasicCommunication CommunicationMethod
|
||||
//{
|
||||
// get { return _CommunicationMethod; }
|
||||
// set
|
||||
// {
|
||||
// if (_CommunicationMethod != null)
|
||||
// _CommunicationMethod.BytesReceived -= this.CommunicationMethod_BytesReceived;
|
||||
// // Outputs???
|
||||
// _CommunicationMethod = value;
|
||||
// if (_CommunicationMethod != null)
|
||||
// _CommunicationMethod.BytesReceived += this.CommunicationMethod_BytesReceived;
|
||||
// // Outputs?
|
||||
// }
|
||||
//}
|
||||
//IBasicCommunication _CommunicationMethod;
|
||||
|
||||
public ComTcpDisplayBase(string key, string name)
|
||||
: base(key, name)
|
||||
@@ -38,6 +40,6 @@ namespace PepperDash.Essentials.Devices.Displays
|
||||
}
|
||||
|
||||
|
||||
protected abstract void CommunicationMethod_BytesReceived(object sender, GenericCommMethodReceiveBytesArgs args);
|
||||
//protected abstract void CommunicationMethod_BytesReceived(object sender, GenericCommMethodReceiveBytesArgs args);
|
||||
}
|
||||
}
|
||||
@@ -11,217 +11,222 @@ using PepperDash.Essentials.Core.Bridges;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Displays
|
||||
{
|
||||
public class NecPaSeriesProjector : ComTcpDisplayBase, IBridgeAdvanced
|
||||
{
|
||||
public readonly IntFeedback Lamp1RemainingPercent;
|
||||
int _Lamp1RemainingPercent;
|
||||
public readonly IntFeedback Lamp2RemainingPercent;
|
||||
int _Lamp2RemainingPercent;
|
||||
protected override Func<bool> PowerIsOnFeedbackFunc
|
||||
{
|
||||
get { return () => _PowerIsOn; }
|
||||
}
|
||||
bool _PowerIsOn;
|
||||
//public class NecPaSeriesProjector : TwoWayDisplayBase, IBridgeAdvanced
|
||||
//{
|
||||
// public readonly IntFeedback Lamp1RemainingPercent;
|
||||
// int _Lamp1RemainingPercent;
|
||||
// public readonly IntFeedback Lamp2RemainingPercent;
|
||||
// int _Lamp2RemainingPercent;
|
||||
|
||||
protected override Func<bool> IsCoolingDownFeedbackFunc
|
||||
{
|
||||
get { return () => false; }
|
||||
}
|
||||
// RoutingInputPort _CurrentInputPort;
|
||||
|
||||
protected override Func<bool> IsWarmingUpFeedbackFunc
|
||||
{
|
||||
get { return () => false; }
|
||||
}
|
||||
// protected override Func<string> CurrentInputFeedbackFunc { get { return () => _CurrentInputPort.Key; } }
|
||||
|
||||
// protected override Func<bool> PowerIsOnFeedbackFunc
|
||||
// {
|
||||
// get { return () => _PowerIsOn; }
|
||||
// }
|
||||
// bool _PowerIsOn;
|
||||
|
||||
public override void PowerToggle()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
// protected override Func<bool> IsCoolingDownFeedbackFunc
|
||||
// {
|
||||
// get { return () => false; }
|
||||
// }
|
||||
|
||||
public override void ExecuteSwitch(object selector)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
// protected override Func<bool> IsWarmingUpFeedbackFunc
|
||||
// {
|
||||
// get { return () => false; }
|
||||
// }
|
||||
|
||||
Dictionary<string, string> InputMap;
|
||||
// public override void PowerToggle()
|
||||
// {
|
||||
// throw new NotImplementedException();
|
||||
// }
|
||||
|
||||
/// <summary>
|
||||
/// Constructor
|
||||
/// </summary>
|
||||
public NecPaSeriesProjector(string key, string name)
|
||||
: base(key, name)
|
||||
{
|
||||
Lamp1RemainingPercent = new IntFeedback("Lamp1RemainingPercent", () => _Lamp1RemainingPercent);
|
||||
Lamp2RemainingPercent = new IntFeedback("Lamp2RemainingPercent", () => _Lamp2RemainingPercent);
|
||||
// public override void ExecuteSwitch(object selector)
|
||||
// {
|
||||
// throw new NotImplementedException();
|
||||
// }
|
||||
|
||||
InputMap = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
{ "computer1", "\x02\x03\x00\x00\x02\x01\x01\x09" },
|
||||
{ "computer2", "\x02\x03\x00\x00\x02\x01\x02\x0a" },
|
||||
{ "computer3", "\x02\x03\x00\x00\x02\x01\x03\x0b" },
|
||||
{ "hdmi", "\x02\x03\x00\x00\x02\x01\x1a\x22" },
|
||||
{ "dp", "\x02\x03\x00\x00\x02\x01\x1b\x23" },
|
||||
{ "video", "\x02\x03\x00\x00\x02\x01\x06\x0e" },
|
||||
{ "viewer", "\x02\x03\x00\x00\x02\x01\x1f\x27" },
|
||||
{ "network", "\x02\x03\x00\x00\x02\x01\x20\x28" },
|
||||
};
|
||||
}
|
||||
// Dictionary<string, string> InputMap;
|
||||
|
||||
void IsConnected_OutputChange(object sender, EventArgs e)
|
||||
{
|
||||
// /// <summary>
|
||||
// /// Constructor
|
||||
// /// </summary>
|
||||
// public NecPaSeriesProjector(string key, string name)
|
||||
// : base(key, name)
|
||||
// {
|
||||
// Lamp1RemainingPercent = new IntFeedback("Lamp1RemainingPercent", () => _Lamp1RemainingPercent);
|
||||
// Lamp2RemainingPercent = new IntFeedback("Lamp2RemainingPercent", () => _Lamp2RemainingPercent);
|
||||
|
||||
}
|
||||
// InputMap = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
|
||||
// {
|
||||
// { "computer1", "\x02\x03\x00\x00\x02\x01\x01\x09" },
|
||||
// { "computer2", "\x02\x03\x00\x00\x02\x01\x02\x0a" },
|
||||
// { "computer3", "\x02\x03\x00\x00\x02\x01\x03\x0b" },
|
||||
// { "hdmi", "\x02\x03\x00\x00\x02\x01\x1a\x22" },
|
||||
// { "dp", "\x02\x03\x00\x00\x02\x01\x1b\x23" },
|
||||
// { "video", "\x02\x03\x00\x00\x02\x01\x06\x0e" },
|
||||
// { "viewer", "\x02\x03\x00\x00\x02\x01\x1f\x27" },
|
||||
// { "network", "\x02\x03\x00\x00\x02\x01\x20\x28" },
|
||||
// };
|
||||
// }
|
||||
|
||||
public void SetEnable(bool state)
|
||||
{
|
||||
var tcp = CommunicationMethod as GenericTcpIpClient;
|
||||
if (tcp != null)
|
||||
{
|
||||
tcp.Connect();
|
||||
}
|
||||
}
|
||||
// void IsConnected_OutputChange(object sender, EventArgs e)
|
||||
// {
|
||||
|
||||
public override void PowerOn()
|
||||
{
|
||||
SendText("\x02\x00\x00\x00\x00\x02");
|
||||
}
|
||||
// }
|
||||
|
||||
public override void PowerOff()
|
||||
{
|
||||
SendText("\x02\x01\x00\x00\x00\x03");
|
||||
}
|
||||
// public void SetEnable(bool state)
|
||||
// {
|
||||
// var tcp = CommunicationMethod as GenericTcpIpClient;
|
||||
// if (tcp != null)
|
||||
// {
|
||||
// tcp.Connect();
|
||||
// }
|
||||
// }
|
||||
|
||||
public void PictureMuteOn()
|
||||
{
|
||||
SendText("\x02\x10\x00\x00\x00\x12");
|
||||
}
|
||||
// public override void PowerOn()
|
||||
// {
|
||||
// SendText("\x02\x00\x00\x00\x00\x02");
|
||||
// }
|
||||
|
||||
public void PictureMuteOff()
|
||||
{
|
||||
SendText("\x02\x11\x00\x00\x00\x13");
|
||||
}
|
||||
// public override void PowerOff()
|
||||
// {
|
||||
// SendText("\x02\x01\x00\x00\x00\x03");
|
||||
// }
|
||||
|
||||
public void GetRunningStatus()
|
||||
{
|
||||
SendText("\x00\x85\x00\x00\x01\x01\x87");
|
||||
}
|
||||
// public void PictureMuteOn()
|
||||
// {
|
||||
// SendText("\x02\x10\x00\x00\x00\x12");
|
||||
// }
|
||||
|
||||
public void GetLampRemaining(int lampNum)
|
||||
{
|
||||
if (!_PowerIsOn) return;
|
||||
// public void PictureMuteOff()
|
||||
// {
|
||||
// SendText("\x02\x11\x00\x00\x00\x13");
|
||||
// }
|
||||
|
||||
var bytes = new byte[]{0x03,0x96,0x00,0x00,0x02,0x00,0x04};
|
||||
if (lampNum == 2)
|
||||
bytes[5] = 0x01;
|
||||
SendBytes(AppendChecksum(bytes));
|
||||
}
|
||||
// public void GetRunningStatus()
|
||||
// {
|
||||
// SendText("\x00\x85\x00\x00\x01\x01\x87");
|
||||
// }
|
||||
|
||||
public void SelectInput(string inputKey)
|
||||
{
|
||||
if (InputMap.ContainsKey(inputKey))
|
||||
SendText(InputMap[inputKey]);
|
||||
}
|
||||
// public void GetLampRemaining(int lampNum)
|
||||
// {
|
||||
// if (!_PowerIsOn) return;
|
||||
|
||||
void SendText(string text)
|
||||
{
|
||||
if (CommunicationMethod != null)
|
||||
CommunicationMethod.SendText(text);
|
||||
}
|
||||
// var bytes = new byte[]{0x03,0x96,0x00,0x00,0x02,0x00,0x04};
|
||||
// if (lampNum == 2)
|
||||
// bytes[5] = 0x01;
|
||||
// SendBytes(AppendChecksum(bytes));
|
||||
// }
|
||||
|
||||
void SendBytes(byte[] bytes)
|
||||
{
|
||||
if (CommunicationMethod != null)
|
||||
CommunicationMethod.SendBytes(bytes);
|
||||
}
|
||||
// public void SelectInput(string inputKey)
|
||||
// {
|
||||
// if (InputMap.ContainsKey(inputKey))
|
||||
// SendText(InputMap[inputKey]);
|
||||
// }
|
||||
|
||||
byte[] AppendChecksum(byte[] bytes)
|
||||
{
|
||||
byte sum = unchecked((byte)bytes.Sum(x => (int)x));
|
||||
var retVal = new byte[bytes.Length + 1];
|
||||
bytes.CopyTo(retVal, 0);
|
||||
retVal[retVal.Length - 1] = sum;
|
||||
return retVal;
|
||||
}
|
||||
// void SendText(string text)
|
||||
// {
|
||||
// if (CommunicationMethod != null)
|
||||
// CommunicationMethod.SendText(text);
|
||||
// }
|
||||
|
||||
protected override void CommunicationMethod_BytesReceived(object sender, GenericCommMethodReceiveBytesArgs args)
|
||||
{
|
||||
var bytes = args.Bytes;
|
||||
ParseBytes(args.Bytes);
|
||||
}
|
||||
// void SendBytes(byte[] bytes)
|
||||
// {
|
||||
// if (CommunicationMethod != null)
|
||||
// CommunicationMethod.SendBytes(bytes);
|
||||
// }
|
||||
|
||||
void ParseBytes(byte[] bytes)
|
||||
{
|
||||
if (bytes[0] == 0x22)
|
||||
{
|
||||
// Power on
|
||||
if (bytes[1] == 0x00)
|
||||
{
|
||||
_PowerIsOn = true;
|
||||
PowerIsOnFeedback.FireUpdate();
|
||||
}
|
||||
// Power off
|
||||
else if (bytes[1] == 0x01)
|
||||
{
|
||||
_PowerIsOn = false;
|
||||
PowerIsOnFeedback.FireUpdate();
|
||||
}
|
||||
}
|
||||
// Running Status
|
||||
else if (bytes[0] == 0x20 && bytes[1] == 0x85 && bytes[4] == 0x10)
|
||||
{
|
||||
var operationStates = new Dictionary<int, string>
|
||||
{
|
||||
{ 0x00, "Standby" },
|
||||
{ 0x04, "Power On" },
|
||||
{ 0x05, "Cooling" },
|
||||
{ 0x06, "Standby (error)" },
|
||||
{ 0x0f, "Standby (power saving" },
|
||||
{ 0x10, "Network Standby" },
|
||||
{ 0xff, "Not supported" }
|
||||
};
|
||||
// byte[] AppendChecksum(byte[] bytes)
|
||||
// {
|
||||
// byte sum = unchecked((byte)bytes.Sum(x => (int)x));
|
||||
// var retVal = new byte[bytes.Length + 1];
|
||||
// bytes.CopyTo(retVal, 0);
|
||||
// retVal[retVal.Length - 1] = sum;
|
||||
// return retVal;
|
||||
// }
|
||||
|
||||
var newPowerIsOn = bytes[7] == 0x01;
|
||||
if (newPowerIsOn != _PowerIsOn)
|
||||
{
|
||||
_PowerIsOn = newPowerIsOn;
|
||||
PowerIsOnFeedback.FireUpdate();
|
||||
}
|
||||
// protected override void CommunicationMethod_BytesReceived(object sender, GenericCommMethodReceiveBytesArgs args)
|
||||
// {
|
||||
// var bytes = args.Bytes;
|
||||
// ParseBytes(args.Bytes);
|
||||
// }
|
||||
|
||||
Debug.Console(2, this, "PowerIsOn={0}\rCooling={1}\rPowering on/off={2}\rStatus={3}",
|
||||
_PowerIsOn,
|
||||
bytes[8] == 0x01,
|
||||
bytes[9] == 0x01,
|
||||
operationStates[bytes[10]]);
|
||||
// void ParseBytes(byte[] bytes)
|
||||
// {
|
||||
// if (bytes[0] == 0x22)
|
||||
// {
|
||||
// // Power on
|
||||
// if (bytes[1] == 0x00)
|
||||
// {
|
||||
// _PowerIsOn = true;
|
||||
// PowerIsOnFeedback.FireUpdate();
|
||||
// }
|
||||
// // Power off
|
||||
// else if (bytes[1] == 0x01)
|
||||
// {
|
||||
// _PowerIsOn = false;
|
||||
// PowerIsOnFeedback.FireUpdate();
|
||||
// }
|
||||
// }
|
||||
// // Running Status
|
||||
// else if (bytes[0] == 0x20 && bytes[1] == 0x85 && bytes[4] == 0x10)
|
||||
// {
|
||||
// var operationStates = new Dictionary<int, string>
|
||||
// {
|
||||
// { 0x00, "Standby" },
|
||||
// { 0x04, "Power On" },
|
||||
// { 0x05, "Cooling" },
|
||||
// { 0x06, "Standby (error)" },
|
||||
// { 0x0f, "Standby (power saving" },
|
||||
// { 0x10, "Network Standby" },
|
||||
// { 0xff, "Not supported" }
|
||||
// };
|
||||
|
||||
// var newPowerIsOn = bytes[7] == 0x01;
|
||||
// if (newPowerIsOn != _PowerIsOn)
|
||||
// {
|
||||
// _PowerIsOn = newPowerIsOn;
|
||||
// PowerIsOnFeedback.FireUpdate();
|
||||
// }
|
||||
|
||||
// Debug.Console(2, this, "PowerIsOn={0}\rCooling={1}\rPowering on/off={2}\rStatus={3}",
|
||||
// _PowerIsOn,
|
||||
// bytes[8] == 0x01,
|
||||
// bytes[9] == 0x01,
|
||||
// operationStates[bytes[10]]);
|
||||
|
||||
}
|
||||
// Lamp remaining
|
||||
else if (bytes[0] == 0x23 && bytes[1] == 0x96 && bytes[4] == 0x06 && bytes[6] == 0x04)
|
||||
{
|
||||
var newValue = bytes[7];
|
||||
if (bytes[5] == 0x00)
|
||||
{
|
||||
if (newValue != _Lamp1RemainingPercent)
|
||||
{
|
||||
_Lamp1RemainingPercent = newValue;
|
||||
Lamp1RemainingPercent.FireUpdate();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (newValue != _Lamp2RemainingPercent)
|
||||
{
|
||||
_Lamp2RemainingPercent = newValue;
|
||||
Lamp2RemainingPercent.FireUpdate();
|
||||
}
|
||||
}
|
||||
Debug.Console(0, this, "Lamp {0}, {1}% remaining", (bytes[5] + 1), bytes[7]);
|
||||
}
|
||||
// }
|
||||
// // Lamp remaining
|
||||
// else if (bytes[0] == 0x23 && bytes[1] == 0x96 && bytes[4] == 0x06 && bytes[6] == 0x04)
|
||||
// {
|
||||
// var newValue = bytes[7];
|
||||
// if (bytes[5] == 0x00)
|
||||
// {
|
||||
// if (newValue != _Lamp1RemainingPercent)
|
||||
// {
|
||||
// _Lamp1RemainingPercent = newValue;
|
||||
// Lamp1RemainingPercent.FireUpdate();
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// if (newValue != _Lamp2RemainingPercent)
|
||||
// {
|
||||
// _Lamp2RemainingPercent = newValue;
|
||||
// Lamp2RemainingPercent.FireUpdate();
|
||||
// }
|
||||
// }
|
||||
// Debug.Console(0, this, "Lamp {0}, {1}% remaining", (bytes[5] + 1), bytes[7]);
|
||||
// }
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
public void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
|
||||
{
|
||||
LinkDisplayToApi(this, trilist, joinStart, joinMapKey, bridge);
|
||||
}
|
||||
}
|
||||
// public void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
|
||||
// {
|
||||
// LinkDisplayToApi(this, trilist, joinStart, joinMapKey, bridge);
|
||||
// }
|
||||
//}
|
||||
}
|
||||
@@ -16,12 +16,12 @@ using PepperDash.Essentials.Core.Routing;
|
||||
namespace PepperDash.Essentials.Devices.Common
|
||||
{
|
||||
[Description("Wrapper class for an IR Set Top Box")]
|
||||
public class IRSetTopBoxBase : EssentialsBridgeableDevice, ISetTopBoxControls, IRoutingOutputs, IUsageTracking, IPower
|
||||
public class IRSetTopBoxBase : EssentialsBridgeableDevice, ISetTopBoxControls, IRoutingOutputs, IUsageTracking, IHasPowerControl
|
||||
{
|
||||
public IrOutputPortController IrPort { get; private set; }
|
||||
|
||||
public uint DisplayUiType { get { return DisplayUiConstants.TypeDirecTv; } }
|
||||
|
||||
public ushort IrPulseTime { get; set; }
|
||||
|
||||
public bool HasPresets { get; set; }
|
||||
public bool HasDvr { get; set; }
|
||||
@@ -35,6 +35,13 @@ namespace PepperDash.Essentials.Devices.Common
|
||||
: base(key, name)
|
||||
{
|
||||
IrPort = portCont;
|
||||
IrPulseTime = 200;
|
||||
|
||||
if (props.IrPulseTime > 0)
|
||||
{
|
||||
IrPulseTime = (ushort)props.IrPulseTime;
|
||||
}
|
||||
|
||||
DeviceManager.AddDevice(portCont);
|
||||
|
||||
HasPresets = props.HasPresets;
|
||||
@@ -55,8 +62,6 @@ namespace PepperDash.Essentials.Devices.Common
|
||||
AnyAudioOut = new RoutingOutputPort(RoutingPortNames.AnyAudioOut, eRoutingSignalType.Audio,
|
||||
eRoutingPortConnectionType.DigitalAudio, null, this);
|
||||
OutputPorts = new RoutingPortCollection<RoutingOutputPort> { AnyVideoOut, AnyAudioOut };
|
||||
|
||||
PowerIsOnFeedback = new BoolFeedback(() => false);
|
||||
}
|
||||
|
||||
public void LoadPresets(string filePath)
|
||||
@@ -349,22 +354,19 @@ namespace PepperDash.Essentials.Devices.Common
|
||||
|
||||
public void PowerOn()
|
||||
{
|
||||
IrPort.Pulse(IROutputStandardCommands.IROut_POWER_ON, 200);
|
||||
IrPort.Pulse(IROutputStandardCommands.IROut_POWER_ON, IrPulseTime);
|
||||
}
|
||||
|
||||
public void PowerOff()
|
||||
{
|
||||
IrPort.Pulse(IROutputStandardCommands.IROut_POWER_OFF, 200);
|
||||
IrPort.Pulse(IROutputStandardCommands.IROut_POWER_OFF, IrPulseTime);
|
||||
}
|
||||
|
||||
public void PowerToggle()
|
||||
{
|
||||
// TODO: Implement power toggle command pulse
|
||||
IrPort.Pulse(IROutputStandardCommands.IROut_POWER, 200);
|
||||
IrPort.Pulse(IROutputStandardCommands.IROut_POWER, IrPulseTime);
|
||||
}
|
||||
|
||||
public BoolFeedback PowerIsOnFeedback { get; private set; }
|
||||
|
||||
#endregion
|
||||
|
||||
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
|
||||
@@ -403,7 +405,7 @@ namespace PepperDash.Essentials.Devices.Common
|
||||
trilist.SetStringSigAction(joinMap.LoadPresets.JoinNumber, stbBase.LoadPresets);
|
||||
}
|
||||
|
||||
var stbPower = this as IPower;
|
||||
var stbPower = this as IHasPowerControl;
|
||||
if (stbPower != null)
|
||||
{
|
||||
trilist.SetSigTrueAction(joinMap.PowerOn.JoinNumber, stbPower.PowerOn);
|
||||
@@ -412,7 +414,6 @@ namespace PepperDash.Essentials.Devices.Common
|
||||
}
|
||||
|
||||
var stbDPad = this as IDPad;
|
||||
|
||||
if (stbDPad != null)
|
||||
{
|
||||
trilist.SetBoolSigAction(joinMap.Up.JoinNumber, stbDPad.Up);
|
||||
@@ -445,7 +446,6 @@ namespace PepperDash.Essentials.Devices.Common
|
||||
}
|
||||
|
||||
var stbKeypad = this as ISetTopBoxNumericKeypad;
|
||||
|
||||
if (stbKeypad != null)
|
||||
{
|
||||
trilist.StringInput[joinMap.KeypadAccessoryButton1Label.JoinNumber].StringValue = stbKeypad.KeypadAccessoryButton1Label;
|
||||
|
||||
@@ -14,6 +14,7 @@ namespace PepperDash.Essentials.Devices.Common
|
||||
public bool HasDvr { get; set; }
|
||||
public bool HasDpad { get; set; }
|
||||
public bool HasNumeric { get; set; }
|
||||
public int IrPulseTime { get; set; }
|
||||
|
||||
public ControlPropertiesConfig Control { get; set; }
|
||||
}
|
||||
|
||||
@@ -106,8 +106,8 @@ namespace PepperDash.Essentials.Devices.Common.SoftCodec
|
||||
if (route.SourceKey.Equals("$off", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
dest.ReleaseRoute();
|
||||
if (dest is IPower)
|
||||
(dest as IPower).PowerOff();
|
||||
if (dest is IHasPowerControl)
|
||||
(dest as IHasPowerControl).PowerOff();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user