mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-14 12:15:01 +00:00
Merge pull request #401 from PepperDash/hotfix/unable-to-use-hightest-IR-port-number
Multiple Fixes for IR
This commit is contained in:
@@ -424,10 +424,14 @@ namespace PepperDash.Essentials
|
|||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(sourceListKey))
|
if (string.IsNullOrEmpty(sourceListKey))
|
||||||
{
|
{
|
||||||
|
Debug.Console(1, this, "No sourceListKey present. RunRouteAction assumes default source list.");
|
||||||
RunRouteAction(routeKey, new Action(() => { }));
|
RunRouteAction(routeKey, new Action(() => { }));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
Debug.Console(1, this, "sourceListKey present but not yet implemented");
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -1,83 +1,83 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Crestron.SimplSharp;
|
using Crestron.SimplSharp;
|
||||||
using Crestron.SimplSharp.CrestronIO;
|
using Crestron.SimplSharp.CrestronIO;
|
||||||
using Crestron.SimplSharpPro;
|
using Crestron.SimplSharpPro;
|
||||||
|
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using PepperDash.Core;
|
using PepperDash.Core;
|
||||||
using PepperDash.Essentials.Core.Config;
|
using PepperDash.Essentials.Core.Config;
|
||||||
|
|
||||||
namespace PepperDash.Essentials.Core
|
namespace PepperDash.Essentials.Core
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static class IRPortHelper
|
public static class IRPortHelper
|
||||||
{
|
{
|
||||||
public static string IrDriverPathPrefix
|
public static string IrDriverPathPrefix
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return Global.FilePathPrefix + "IR" + Global.DirectorySeparator;
|
return Global.FilePathPrefix + "IR" + Global.DirectorySeparator;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Finds either the ControlSystem or a device controller that contains IR ports and
|
/// Finds either the ControlSystem or a device controller that contains IR ports and
|
||||||
/// returns a port from the hardware device
|
/// returns a port from the hardware device
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="propsToken"></param>
|
/// <param name="propsToken"></param>
|
||||||
/// <returns>IrPortConfig object. The port and or filename will be empty/null
|
/// <returns>IrPortConfig object. The port and or filename will be empty/null
|
||||||
/// if valid values don't exist on config</returns>
|
/// if valid values don't exist on config</returns>
|
||||||
public static IrOutPortConfig GetIrPort(JToken propsToken)
|
public static IrOutPortConfig GetIrPort(JToken propsToken)
|
||||||
{
|
{
|
||||||
var control = propsToken["control"];
|
var control = propsToken["control"];
|
||||||
if (control == null)
|
if (control == null)
|
||||||
return null;
|
return null;
|
||||||
if (control["method"].Value<string>() != "ir")
|
if (control["method"].Value<string>() != "ir")
|
||||||
{
|
{
|
||||||
Debug.Console(0, "IRPortHelper called with non-IR properties");
|
Debug.Console(0, "IRPortHelper called with non-IR properties");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var port = new IrOutPortConfig();
|
var port = new IrOutPortConfig();
|
||||||
|
|
||||||
var portDevKey = control.Value<string>("controlPortDevKey");
|
var portDevKey = control.Value<string>("controlPortDevKey");
|
||||||
var portNum = control.Value<uint>("controlPortNumber");
|
var portNum = control.Value<uint>("controlPortNumber");
|
||||||
if (portDevKey == null || portNum == 0)
|
if (portDevKey == null || portNum == 0)
|
||||||
{
|
{
|
||||||
Debug.Console(1, "WARNING: Properties is missing port device or port number");
|
Debug.Console(1, "WARNING: Properties is missing port device or port number");
|
||||||
return port;
|
return port;
|
||||||
}
|
}
|
||||||
|
|
||||||
IIROutputPorts irDev = null;
|
IIROutputPorts irDev = null;
|
||||||
if (portDevKey.Equals("controlSystem", StringComparison.OrdinalIgnoreCase)
|
if (portDevKey.Equals("controlSystem", StringComparison.OrdinalIgnoreCase)
|
||||||
|| portDevKey.Equals("processor", StringComparison.OrdinalIgnoreCase))
|
|| portDevKey.Equals("processor", StringComparison.OrdinalIgnoreCase))
|
||||||
irDev = Global.ControlSystem;
|
irDev = Global.ControlSystem;
|
||||||
else
|
else
|
||||||
irDev = DeviceManager.GetDeviceForKey(portDevKey) as IIROutputPorts;
|
irDev = DeviceManager.GetDeviceForKey(portDevKey) as IIROutputPorts;
|
||||||
|
|
||||||
if (irDev == null)
|
if (irDev == null)
|
||||||
{
|
{
|
||||||
Debug.Console(1, "[Config] Error, device with IR ports '{0}' not found", portDevKey);
|
Debug.Console(1, "[Config] Error, device with IR ports '{0}' not found", portDevKey);
|
||||||
return port;
|
return port;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (portNum <= irDev.NumberOfIROutputPorts) // success!
|
if (portNum <= irDev.NumberOfIROutputPorts) // success!
|
||||||
{
|
{
|
||||||
var file = IrDriverPathPrefix + control["irFile"].Value<string>();
|
var file = IrDriverPathPrefix + control["irFile"].Value<string>();
|
||||||
port.Port = irDev.IROutputPorts[portNum];
|
port.Port = irDev.IROutputPorts[portNum];
|
||||||
port.FileName = file;
|
port.FileName = file;
|
||||||
return port; // new IrOutPortConfig { Port = irDev.IROutputPorts[portNum], FileName = file };
|
return port; // new IrOutPortConfig { Port = irDev.IROutputPorts[portNum], FileName = file };
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Debug.Console(1, "[Config] Error, device '{0}' IR port {1} out of range",
|
Debug.Console(1, "[Config] Error, device '{0}' IR port {1} out of range",
|
||||||
portDevKey, portNum);
|
portDevKey, portNum);
|
||||||
return port;
|
return port;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IROutputPort GetIrOutputPort(DeviceConfig dc)
|
public static IROutputPort GetIrOutputPort(DeviceConfig dc)
|
||||||
@@ -124,7 +124,7 @@ namespace PepperDash.Essentials.Core
|
|||||||
Debug.Console(0, "WARNING: device with IR ports '{0}' not found", portDevKey);
|
Debug.Console(0, "WARNING: device with IR ports '{0}' not found", portDevKey);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (portNum >= irDev.NumberOfIROutputPorts)
|
if (portNum > irDev.NumberOfIROutputPorts)
|
||||||
{
|
{
|
||||||
Debug.Console(0, "WARNING: device '{0}' IR port {1} out of range",
|
Debug.Console(0, "WARNING: device '{0}' IR port {1} out of range",
|
||||||
portDevKey, portNum);
|
portDevKey, portNum);
|
||||||
@@ -134,10 +134,9 @@ namespace PepperDash.Essentials.Core
|
|||||||
|
|
||||||
var port = irDev.IROutputPorts[portNum];
|
var port = irDev.IROutputPorts[portNum];
|
||||||
|
|
||||||
port.LoadIRDriver(Global.FilePathPrefix + "IR" + Global.DirectorySeparator + control["irFile"].Value<string>());
|
|
||||||
|
|
||||||
return port;
|
return port;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IrOutputPortController GetIrOutputPortController(DeviceConfig config)
|
public static IrOutputPortController GetIrOutputPortController(DeviceConfig config)
|
||||||
@@ -149,87 +148,88 @@ namespace PepperDash.Essentials.Core
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var irDevice = new IrOutputPortController(config.Key, GetIrOutputPort, config);
|
var postActivationFunc = new Func<DeviceConfig,IROutputPort> (GetIrOutputPort);
|
||||||
|
var irDevice = new IrOutputPortController(config.Key + "-ir", postActivationFunc, config);
|
||||||
|
|
||||||
return irDevice;
|
return irDevice;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a ready-to-go IrOutputPortController from a DeviceConfig object.
|
/// Returns a ready-to-go IrOutputPortController from a DeviceConfig object.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static IrOutputPortController GetIrOutputPortController(DeviceConfig devConf)
|
public static IrOutputPortController GetIrOutputPortController(DeviceConfig devConf)
|
||||||
{
|
{
|
||||||
var irControllerKey = devConf.Key + "-ir";
|
var irControllerKey = devConf.Key + "-ir";
|
||||||
if (devConf.Properties == null)
|
if (devConf.Properties == null)
|
||||||
{
|
{
|
||||||
Debug.Console(0, "[{0}] WARNING: Device config does not include properties. IR will not function.", devConf.Key);
|
Debug.Console(0, "[{0}] WARNING: Device config does not include properties. IR will not function.", devConf.Key);
|
||||||
return new IrOutputPortController(irControllerKey, null, "");
|
return new IrOutputPortController(irControllerKey, null, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
var control = devConf.Properties["control"];
|
var control = devConf.Properties["control"];
|
||||||
if (control == null)
|
if (control == null)
|
||||||
{
|
{
|
||||||
var c = new IrOutputPortController(irControllerKey, null, "");
|
var c = new IrOutputPortController(irControllerKey, null, "");
|
||||||
Debug.Console(0, c, "WARNING: Device config does not include control properties. IR will not function");
|
Debug.Console(0, c, "WARNING: Device config does not include control properties. IR will not function");
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
var portDevKey = control.Value<string>("controlPortDevKey");
|
var portDevKey = control.Value<string>("controlPortDevKey");
|
||||||
var portNum = control.Value<uint>("controlPortNumber");
|
var portNum = control.Value<uint>("controlPortNumber");
|
||||||
IIROutputPorts irDev = null;
|
IIROutputPorts irDev = null;
|
||||||
|
|
||||||
if (portDevKey == null)
|
if (portDevKey == null)
|
||||||
{
|
{
|
||||||
var c = new IrOutputPortController(irControllerKey, null, "");
|
var c = new IrOutputPortController(irControllerKey, null, "");
|
||||||
Debug.Console(0, c, "WARNING: control properties is missing ir device");
|
Debug.Console(0, c, "WARNING: control properties is missing ir device");
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (portNum == 0)
|
if (portNum == 0)
|
||||||
{
|
{
|
||||||
var c = new IrOutputPortController(irControllerKey, null, "");
|
var c = new IrOutputPortController(irControllerKey, null, "");
|
||||||
Debug.Console(0, c, "WARNING: control properties is missing ir port number");
|
Debug.Console(0, c, "WARNING: control properties is missing ir port number");
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (portDevKey.Equals("controlSystem", StringComparison.OrdinalIgnoreCase)
|
if (portDevKey.Equals("controlSystem", StringComparison.OrdinalIgnoreCase)
|
||||||
|| portDevKey.Equals("processor", StringComparison.OrdinalIgnoreCase))
|
|| portDevKey.Equals("processor", StringComparison.OrdinalIgnoreCase))
|
||||||
irDev = Global.ControlSystem;
|
irDev = Global.ControlSystem;
|
||||||
else
|
else
|
||||||
irDev = DeviceManager.GetDeviceForKey(portDevKey) as IIROutputPorts;
|
irDev = DeviceManager.GetDeviceForKey(portDevKey) as IIROutputPorts;
|
||||||
|
|
||||||
if (irDev == null)
|
if (irDev == null)
|
||||||
{
|
{
|
||||||
var c = new IrOutputPortController(irControllerKey, null, "");
|
var c = new IrOutputPortController(irControllerKey, null, "");
|
||||||
Debug.Console(0, c, "WARNING: device with IR ports '{0}' not found", portDevKey);
|
Debug.Console(0, c, "WARNING: device with IR ports '{0}' not found", portDevKey);
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (portNum <= irDev.NumberOfIROutputPorts) // success!
|
if (portNum <= irDev.NumberOfIROutputPorts) // success!
|
||||||
return new IrOutputPortController(irControllerKey, irDev.IROutputPorts[portNum],
|
return new IrOutputPortController(irControllerKey, irDev.IROutputPorts[portNum],
|
||||||
IrDriverPathPrefix + control["irFile"].Value<string>());
|
IrDriverPathPrefix + control["irFile"].Value<string>());
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var c = new IrOutputPortController(irControllerKey, null, "");
|
var c = new IrOutputPortController(irControllerKey, null, "");
|
||||||
Debug.Console(0, c, "WARNING: device '{0}' IR port {1} out of range",
|
Debug.Console(0, c, "WARNING: device '{0}' IR port {1} out of range",
|
||||||
portDevKey, portNum);
|
portDevKey, portNum);
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Wrapper to help in IR port creation
|
/// Wrapper to help in IR port creation
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class IrOutPortConfig
|
public class IrOutPortConfig
|
||||||
{
|
{
|
||||||
public IROutputPort Port { get; set; }
|
public IROutputPort Port { get; set; }
|
||||||
public string FileName { get; set; }
|
public string FileName { get; set; }
|
||||||
|
|
||||||
public IrOutPortConfig()
|
public IrOutPortConfig()
|
||||||
{
|
{
|
||||||
FileName = "";
|
FileName = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -25,6 +25,8 @@ namespace PepperDash.Essentials.Core
|
|||||||
public string DriverFilepath { get; private set; }
|
public string DriverFilepath { get; private set; }
|
||||||
public bool DriverIsLoaded { get; private set; }
|
public bool DriverIsLoaded { get; private set; }
|
||||||
|
|
||||||
|
public string[] IrFileCommands { get { return IrPort.AvailableStandardIRCmds(IrPortUid); } }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Constructor for IrDevice base class. If a null port is provided, this class will
|
/// Constructor for IrDevice base class. If a null port is provided, this class will
|
||||||
/// still function without trying to talk to a port.
|
/// still function without trying to talk to a port.
|
||||||
@@ -49,9 +51,30 @@ namespace PepperDash.Essentials.Core
|
|||||||
AddPostActivationAction(() =>
|
AddPostActivationAction(() =>
|
||||||
{
|
{
|
||||||
IrPort = postActivationFunc(config);
|
IrPort = postActivationFunc(config);
|
||||||
|
|
||||||
|
if (IrPort == null)
|
||||||
|
{
|
||||||
|
Debug.Console(0, this, "WARNING No valid IR Port assigned to controller. IR will not function");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var filePath = Global.FilePathPrefix + "ir" + Global.DirectorySeparator + config.Properties["control"]["irFile"].Value<string>();
|
||||||
|
Debug.Console(1, "*************Attemting to load IR file: {0}***************", filePath);
|
||||||
|
|
||||||
|
LoadDriver(filePath);
|
||||||
|
|
||||||
|
PrintAvailableCommands();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void PrintAvailableCommands()
|
||||||
|
{
|
||||||
|
Debug.Console(2, this, "Available IR Commands in IR File {0}", IrPortUid);
|
||||||
|
foreach (var cmd in IrPort.AvailableIRCmds())
|
||||||
|
{
|
||||||
|
Debug.Console(2, this, "{0}", cmd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -60,14 +83,15 @@ namespace PepperDash.Essentials.Core
|
|||||||
/// <param name="path"></param>
|
/// <param name="path"></param>
|
||||||
public void LoadDriver(string path)
|
public void LoadDriver(string path)
|
||||||
{
|
{
|
||||||
|
Debug.Console(2, this, "***Loading IR File***");
|
||||||
if (string.IsNullOrEmpty(path)) path = DriverFilepath;
|
if (string.IsNullOrEmpty(path)) path = DriverFilepath;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
IrPortUid = IrPort.LoadIRDriver(path);
|
IrPortUid = IrPort.LoadIRDriver(path);
|
||||||
DriverFilepath = path;
|
DriverFilepath = path;
|
||||||
StandardIrPulseTime = 200;
|
StandardIrPulseTime = 200;
|
||||||
DriverIsLoaded = true;
|
DriverIsLoaded = true;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
DriverIsLoaded = false;
|
DriverIsLoaded = false;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using Crestron.SimplSharp;
|
using Crestron.SimplSharp;
|
||||||
|
using Crestron.SimplSharp.Reflection;
|
||||||
using Crestron.SimplSharpPro;
|
using Crestron.SimplSharpPro;
|
||||||
using Crestron.SimplSharpPro.DeviceSupport;
|
using Crestron.SimplSharpPro.DeviceSupport;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
@@ -32,39 +33,50 @@ namespace PepperDash.Essentials.Devices.Common
|
|||||||
AnyAudioOut = new RoutingOutputPort(RoutingPortNames.AnyAudioOut, eRoutingSignalType.Audio,
|
AnyAudioOut = new RoutingOutputPort(RoutingPortNames.AnyAudioOut, eRoutingSignalType.Audio,
|
||||||
eRoutingPortConnectionType.DigitalAudio, null, this);
|
eRoutingPortConnectionType.DigitalAudio, null, this);
|
||||||
OutputPorts = new RoutingPortCollection<RoutingOutputPort> { HdmiOut, AnyAudioOut };
|
OutputPorts = new RoutingPortCollection<RoutingOutputPort> { HdmiOut, AnyAudioOut };
|
||||||
|
|
||||||
|
PrintExpectedIrCommands();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void PrintExpectedIrCommands()
|
||||||
|
{
|
||||||
|
var cmds = typeof (AppleTvIrCommands).GetCType().GetFields(BindingFlags.Public | BindingFlags.Static);
|
||||||
|
|
||||||
#region IDPad Members
|
foreach (var value in cmds.Select(cmd => cmd.GetValue(null)).OfType<string>())
|
||||||
|
{
|
||||||
|
Debug.Console(2, this, "Expected IR Function Name: {0}", value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#region IDPad Members
|
||||||
|
|
||||||
public void Up(bool pressRelease)
|
public void Up(bool pressRelease)
|
||||||
{
|
{
|
||||||
IrPort.PressRelease("+", pressRelease);
|
IrPort.PressRelease(AppleTvIrCommands.Up, pressRelease);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Down(bool pressRelease)
|
public void Down(bool pressRelease)
|
||||||
{
|
{
|
||||||
IrPort.PressRelease("-", pressRelease);
|
IrPort.PressRelease(AppleTvIrCommands.Down, pressRelease);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Left(bool pressRelease)
|
public void Left(bool pressRelease)
|
||||||
{
|
{
|
||||||
IrPort.PressRelease(IROutputStandardCommands.IROut_TRACK_MINUS, pressRelease);
|
IrPort.PressRelease(AppleTvIrCommands.Left, pressRelease);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Right(bool pressRelease)
|
public void Right(bool pressRelease)
|
||||||
{
|
{
|
||||||
IrPort.PressRelease(IROutputStandardCommands.IROut_TRACK_PLUS, pressRelease);
|
IrPort.PressRelease(AppleTvIrCommands.Right, pressRelease);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Select(bool pressRelease)
|
public void Select(bool pressRelease)
|
||||||
{
|
{
|
||||||
IrPort.PressRelease(IROutputStandardCommands.IROut_ENTER, pressRelease);
|
IrPort.PressRelease(AppleTvIrCommands.Enter, pressRelease);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Menu(bool pressRelease)
|
public void Menu(bool pressRelease)
|
||||||
{
|
{
|
||||||
IrPort.PressRelease("Menu", pressRelease);
|
IrPort.PressRelease(AppleTvIrCommands.Menu, pressRelease);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Exit(bool pressRelease)
|
public void Exit(bool pressRelease)
|
||||||
@@ -78,12 +90,12 @@ namespace PepperDash.Essentials.Devices.Common
|
|||||||
|
|
||||||
public void Play(bool pressRelease)
|
public void Play(bool pressRelease)
|
||||||
{
|
{
|
||||||
IrPort.PressRelease("PLAY/PAUSE", pressRelease);
|
IrPort.PressRelease(AppleTvIrCommands.PlayPause, pressRelease);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Pause(bool pressRelease)
|
public void Pause(bool pressRelease)
|
||||||
{
|
{
|
||||||
IrPort.PressRelease("PLAY/PAUSE", pressRelease);
|
IrPort.PressRelease(AppleTvIrCommands.PlayPause, pressRelease);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -190,4 +202,17 @@ namespace PepperDash.Essentials.Devices.Common
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class AppleTvIrCommands
|
||||||
|
{
|
||||||
|
|
||||||
|
public static string Up = "+";
|
||||||
|
public static string Down = "-";
|
||||||
|
public static string Left = IROutputStandardCommands.IROut_TRACK_MINUS;
|
||||||
|
public static string Right = IROutputStandardCommands.IROut_TRACK_PLUS;
|
||||||
|
public static string Enter = IROutputStandardCommands.IROut_ENTER;
|
||||||
|
public static string PlayPause = "PLAY/PAUSE";
|
||||||
|
public static string Rewind = "REWIND";
|
||||||
|
public static string Menu = "Menu";
|
||||||
|
public static string FastForward = "FASTFORWARD";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user