mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-13 11:44:54 +00:00
feat(wip): seeds feature for IR signal bridge map
This commit is contained in:
@@ -224,9 +224,15 @@ namespace PepperDash.Essentials.Core
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class IrOutPortConfig
|
public class IrOutPortConfig
|
||||||
{
|
{
|
||||||
|
[JsonProperty("port")]
|
||||||
public IROutputPort Port { get; set; }
|
public IROutputPort Port { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("fileName")]
|
||||||
public string FileName { get; set; }
|
public string FileName { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("useBridgeJoinMap")]
|
||||||
|
public bool UseBridgeJoinMap { get; set; }
|
||||||
|
|
||||||
public IrOutPortConfig()
|
public IrOutPortConfig()
|
||||||
{
|
{
|
||||||
FileName = "";
|
FileName = "";
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
using System;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Generic;
|
using System.Linq;
|
||||||
using Crestron.SimplSharpPro.DeviceSupport;
|
using Crestron.SimplSharpPro.DeviceSupport;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using PepperDash.Core;
|
using PepperDash.Core;
|
||||||
using PepperDash.Essentials.Core;
|
|
||||||
using PepperDash.Essentials.Core.Bridges;
|
using PepperDash.Essentials.Core.Bridges;
|
||||||
using PepperDash.Essentials.Core.Config;
|
using PepperDash.Essentials.Core.Config;
|
||||||
|
using PepperDash_Essentials_Core.Bridges.JoinMaps;
|
||||||
|
|
||||||
namespace PepperDash.Essentials.Core.Devices
|
namespace PepperDash.Essentials.Core.Devices
|
||||||
{
|
{
|
||||||
@@ -21,9 +21,12 @@ namespace PepperDash.Essentials.Core.Devices
|
|||||||
|
|
||||||
public string[] IrCommands {get { return _port.IrFileCommands; }}
|
public string[] IrCommands {get { return _port.IrFileCommands; }}
|
||||||
|
|
||||||
|
public Dictionary<string, JoinDataComplete> BridgeJoins;
|
||||||
|
|
||||||
public GenericIrController(string key, string name, IrOutputPortController irPort) : base(key, name)
|
public GenericIrController(string key, string name, IrOutputPortController irPort) : base(key, name)
|
||||||
{
|
{
|
||||||
_port = irPort;
|
_port = irPort;
|
||||||
|
if(_port.UseBridgeJoinMap) BridgeJoins = new Dictionary<string, JoinDataComplete>();
|
||||||
|
|
||||||
if (_port == null)
|
if (_port == null)
|
||||||
{
|
{
|
||||||
@@ -71,23 +74,39 @@ namespace PepperDash.Essentials.Core.Devices
|
|||||||
if (!string.IsNullOrEmpty(joinMapSerialized))
|
if (!string.IsNullOrEmpty(joinMapSerialized))
|
||||||
joinMap = JsonConvert.DeserializeObject<GenericIrControllerJoinMap>(joinMapSerialized);
|
joinMap = JsonConvert.DeserializeObject<GenericIrControllerJoinMap>(joinMapSerialized);
|
||||||
|
|
||||||
for (uint i = 0; i < _port.IrFileCommands.Length; i++)
|
if (_port.UseBridgeJoinMap)
|
||||||
{
|
{
|
||||||
var cmd = _port.IrFileCommands[i];
|
Debug.Console(0, this, "Using new IR bridge join map");
|
||||||
var joinData = new JoinDataComplete(new JoinData {JoinNumber = i, JoinSpan = 1},
|
|
||||||
new JoinMetadata
|
|
||||||
{
|
|
||||||
Description = cmd,
|
|
||||||
JoinCapabilities = eJoinCapabilities.FromSIMPL,
|
|
||||||
JoinType = eJoinType.Digital
|
|
||||||
});
|
|
||||||
|
|
||||||
joinData.SetJoinOffset(joinStart);
|
var joins = BridgeJoins.Where((kv) => _port.IrFileCommands.Any(cmd => cmd == kv.Key)).ToDictionary(kv => kv.Key, kv=> kv.Value);
|
||||||
|
foreach (var join in joins)
|
||||||
|
{
|
||||||
|
Debug.Console(0, this, "_useBridgeJoinMap: {0}: {1}", join.Key, join.Value);
|
||||||
|
}
|
||||||
|
//joinMap.Joins = joins.Select(kv => kv.Value.SetJoinOffset(joinStart)).ToString();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Console(0, this, "Using legacy IR join mapping based on available IR commands");
|
||||||
|
|
||||||
joinMap.Joins.Add(cmd,joinData);
|
for (uint i = 0; i < _port.IrFileCommands.Length; i++)
|
||||||
|
{
|
||||||
|
var cmd = _port.IrFileCommands[i];
|
||||||
|
var joinData = new JoinDataComplete(new JoinData { JoinNumber = i, JoinSpan = 1 },
|
||||||
|
new JoinMetadata
|
||||||
|
{
|
||||||
|
Description = cmd,
|
||||||
|
JoinCapabilities = eJoinCapabilities.FromSIMPL,
|
||||||
|
JoinType = eJoinType.Digital
|
||||||
|
});
|
||||||
|
|
||||||
trilist.SetBoolSigAction(joinData.JoinNumber, (b) => Press(cmd, b));
|
joinData.SetJoinOffset(joinStart);
|
||||||
}
|
|
||||||
|
joinMap.Joins.Add(cmd, joinData);
|
||||||
|
|
||||||
|
trilist.SetBoolSigAction(joinData.JoinNumber, (b) => Press(cmd, b));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
joinMap.PrintJoinMapInfo();
|
joinMap.PrintJoinMapInfo();
|
||||||
|
|
||||||
@@ -109,13 +128,6 @@ namespace PepperDash.Essentials.Core.Devices
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class GenericIrControllerJoinMap : JoinMapBaseAdvanced
|
|
||||||
{
|
|
||||||
public GenericIrControllerJoinMap(uint joinStart) : base(joinStart)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class GenericIrControllerFactory : EssentialsDeviceFactory<GenericIrController>
|
public class GenericIrControllerFactory : EssentialsDeviceFactory<GenericIrController>
|
||||||
{
|
{
|
||||||
public GenericIrControllerFactory()
|
public GenericIrControllerFactory()
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ namespace PepperDash.Essentials.Core
|
|||||||
|
|
||||||
public string[] IrFileCommands { get { return IrPort.AvailableStandardIRCmds(IrPortUid); } }
|
public string[] IrFileCommands { get { return IrPort.AvailableStandardIRCmds(IrPortUid); } }
|
||||||
|
|
||||||
|
public bool UseBridgeJoinMap { get; private set; }
|
||||||
|
|
||||||
/// <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.
|
||||||
@@ -63,6 +65,8 @@ namespace PepperDash.Essentials.Core
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UseBridgeJoinMap = config.Properties["control"]["useBridgeJoinMap"].Value<bool>();
|
||||||
|
|
||||||
var filePath = Global.FilePathPrefix + "ir" + Global.DirectorySeparator + config.Properties["control"]["irFile"].Value<string>();
|
var filePath = Global.FilePathPrefix + "ir" + Global.DirectorySeparator + config.Properties["control"]["irFile"].Value<string>();
|
||||||
Debug.Console(1, "*************Attempting to load IR file: {0}***************", filePath);
|
Debug.Console(1, "*************Attempting to load IR file: {0}***************", filePath);
|
||||||
|
|
||||||
|
|||||||
@@ -127,6 +127,7 @@
|
|||||||
<Compile Include="Bridges\IBridge.cs" />
|
<Compile Include="Bridges\IBridge.cs" />
|
||||||
<Compile Include="Bridges\JoinMaps\AirMediaControllerJoinMap.cs" />
|
<Compile Include="Bridges\JoinMaps\AirMediaControllerJoinMap.cs" />
|
||||||
<Compile Include="Bridges\JoinMaps\AppleTvJoinMap.cs" />
|
<Compile Include="Bridges\JoinMaps\AppleTvJoinMap.cs" />
|
||||||
|
<Compile Include="Bridges\JoinMaps\GenericIrControllerJoinMap.cs" />
|
||||||
<Compile Include="Bridges\JoinMaps\IAnalogInputJoinMap.cs" />
|
<Compile Include="Bridges\JoinMaps\IAnalogInputJoinMap.cs" />
|
||||||
<Compile Include="Bridges\JoinMaps\IDigitalOutputJoinMap.cs" />
|
<Compile Include="Bridges\JoinMaps\IDigitalOutputJoinMap.cs" />
|
||||||
<Compile Include="Bridges\JoinMaps\PduJoinMapBase.cs" />
|
<Compile Include="Bridges\JoinMaps\PduJoinMapBase.cs" />
|
||||||
|
|||||||
Reference in New Issue
Block a user