mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-14 20:24:57 +00:00
Merge pull request #459 from PepperDash/hotfix/dm-rx-DMPS
Multiple fixes for DMPS and Essentials
This commit is contained in:
@@ -120,6 +120,9 @@ namespace PepperDash.Essentials.DM
|
|||||||
Debug.Console(1, this, "{0} Switcher Inputs Present.", Dmps.SwitcherInputs.Count);
|
Debug.Console(1, this, "{0} Switcher Inputs Present.", Dmps.SwitcherInputs.Count);
|
||||||
Debug.Console(1, this, "{0} Switcher Outputs Present.", Dmps.SwitcherOutputs.Count);
|
Debug.Console(1, this, "{0} Switcher Outputs Present.", Dmps.SwitcherOutputs.Count);
|
||||||
|
|
||||||
|
Debug.Console(1, this, "{0} Inputs in ControlSystem", Dmps.NumberOfSwitcherInputs);
|
||||||
|
Debug.Console(1, this, "{0} Outputs in ControlSystem", Dmps.NumberOfSwitcherOutputs);
|
||||||
|
|
||||||
SetupOutputCards();
|
SetupOutputCards();
|
||||||
|
|
||||||
SetupInputCards();
|
SetupInputCards();
|
||||||
@@ -128,32 +131,50 @@ namespace PepperDash.Essentials.DM
|
|||||||
public override bool CustomActivate()
|
public override bool CustomActivate()
|
||||||
{
|
{
|
||||||
// Set input and output names from config
|
// Set input and output names from config
|
||||||
if (InputNames != null)
|
SetInputNames();
|
||||||
{
|
|
||||||
foreach (var kvp in InputNames)
|
SetOutputNames();
|
||||||
{
|
|
||||||
var input = (Dmps.SwitcherInputs[kvp.Key] as DMInput);
|
|
||||||
if (input != null)
|
|
||||||
input.Name.StringValue = kvp.Value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (OutputNames != null)
|
|
||||||
{
|
|
||||||
foreach (var kvp in OutputNames)
|
|
||||||
{
|
|
||||||
var output = (Dmps.SwitcherOutputs[kvp.Key] as DMOutput);
|
|
||||||
if (output != null)
|
|
||||||
output.Name.StringValue = kvp.Value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Subscribe to events
|
// Subscribe to events
|
||||||
Dmps.DMInputChange += new DMInputEventHandler(Dmps_DMInputChange);
|
Dmps.DMInputChange += Dmps_DMInputChange;
|
||||||
Dmps.DMOutputChange += new DMOutputEventHandler(Dmps_DMOutputChange);
|
Dmps.DMOutputChange += Dmps_DMOutputChange;
|
||||||
|
|
||||||
return base.CustomActivate();
|
return base.CustomActivate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SetOutputNames()
|
||||||
|
{
|
||||||
|
if (OutputNames == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var kvp in OutputNames)
|
||||||
|
{
|
||||||
|
var output = (Dmps.SwitcherOutputs[kvp.Key] as DMOutput);
|
||||||
|
if (output != null && output.Name.Type != eSigType.NA)
|
||||||
|
{
|
||||||
|
output.Name.StringValue = kvp.Value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetInputNames()
|
||||||
|
{
|
||||||
|
if (InputNames == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
foreach (var kvp in InputNames)
|
||||||
|
{
|
||||||
|
var input = (Dmps.SwitcherInputs[kvp.Key] as DMInput);
|
||||||
|
if (input != null && input.Name.Type != eSigType.NA)
|
||||||
|
{
|
||||||
|
input.Name.StringValue = kvp.Value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
|
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
|
||||||
{
|
{
|
||||||
var joinMap = new DmpsRoutingControllerJoinMap(joinStart);
|
var joinMap = new DmpsRoutingControllerJoinMap(joinStart);
|
||||||
@@ -175,53 +196,14 @@ namespace PepperDash.Essentials.DM
|
|||||||
Debug.Console(1, this, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));
|
Debug.Console(1, this, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));
|
||||||
|
|
||||||
// Link up outputs
|
// Link up outputs
|
||||||
for (uint i = 1; i <= Dmps.NumberOfSwitcherInputs; i++)
|
LinkInputsToApi(trilist, joinMap);
|
||||||
{
|
|
||||||
Debug.Console(2, this, "Linking Input Card {0}", i);
|
|
||||||
|
|
||||||
var ioSlot = i;
|
LinkOutputsToApi(trilist, joinMap);
|
||||||
var ioSlotJoin = ioSlot - 1;
|
}
|
||||||
|
|
||||||
//if (TxDictionary.ContainsKey(ioSlot))
|
private void LinkOutputsToApi(BasicTriList trilist, DmpsRoutingControllerJoinMap joinMap)
|
||||||
//{
|
{
|
||||||
// Debug.Console(2, "Creating Tx Feedbacks {0}", ioSlot);
|
for (uint i = 1; i <= Dmps.SwitcherOutputs.Count; i++)
|
||||||
// var TxKey = TxDictionary[ioSlot];
|
|
||||||
// var TxDevice = DeviceManager.GetDeviceForKey(TxKey) as DmTxControllerBase;
|
|
||||||
// //TxDevice.IsOnline.LinkInputSig(trilist.BooleanInput[joinMap.InputEndpointOnline + ioSlot]);
|
|
||||||
// // TxDevice.AnyVideoInput.VideoStatus.VideoSyncFeedback.LinkInputSig(trilist.BooleanInput[joinMap.InputEndpointOnline + ioSlot]);
|
|
||||||
// // trilist.SetUShortSigAction((ApiMap.HdcpSupport[ioSlot]), u => TxDevice.SetHdcpSupportAll((ePdtHdcpSupport)(u)));
|
|
||||||
// // TxDevice.HdcpSupportAllFeedback.LinkInputSig(trilist.UShortInput[joinMap. + ioSlot]);
|
|
||||||
// // trilist.UShortInput[ApiMap.HdcpSupportCapability[ioSlot]].UShortValue = TxDevice.HdcpSupportCapability;
|
|
||||||
//}
|
|
||||||
//else
|
|
||||||
//{
|
|
||||||
// // dmChassis.VideoInputSyncFeedbacks[ioSlot].LinkInputSig(trilist.BooleanInput[ApiMap.TxVideoSyncStatus[ioSlot]]);
|
|
||||||
//}
|
|
||||||
|
|
||||||
if (VideoInputSyncFeedbacks[ioSlot] != null)
|
|
||||||
VideoInputSyncFeedbacks[ioSlot].LinkInputSig(trilist.BooleanInput[joinMap.VideoSyncStatus.JoinNumber + ioSlotJoin]);
|
|
||||||
|
|
||||||
if (InputNameFeedbacks[ioSlot] != null)
|
|
||||||
InputNameFeedbacks[ioSlot].LinkInputSig(trilist.StringInput[joinMap.InputNames.JoinNumber + ioSlotJoin]);
|
|
||||||
|
|
||||||
trilist.SetStringSigAction(joinMap.InputNames.JoinNumber + ioSlotJoin, new Action<string>(s =>
|
|
||||||
{
|
|
||||||
var inputCard = Dmps.SwitcherInputs[ioSlot] as DMInput;
|
|
||||||
|
|
||||||
if (inputCard != null)
|
|
||||||
{
|
|
||||||
if (inputCard.NameFeedback != null && !string.IsNullOrEmpty(inputCard.NameFeedback.StringValue) && inputCard.NameFeedback.StringValue != s)
|
|
||||||
if (inputCard.Name != null)
|
|
||||||
inputCard.Name.StringValue = s;
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
|
|
||||||
|
|
||||||
if (InputEndpointOnlineFeedbacks[ioSlot] != null)
|
|
||||||
InputEndpointOnlineFeedbacks[ioSlot].LinkInputSig(trilist.BooleanInput[joinMap.InputEndpointOnline.JoinNumber + ioSlotJoin]);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (uint i = 1; i <= Dmps.NumberOfSwitcherOutputs; i++)
|
|
||||||
{
|
{
|
||||||
Debug.Console(2, this, "Linking Output Card {0}", i);
|
Debug.Console(2, this, "Linking Output Card {0}", i);
|
||||||
|
|
||||||
@@ -229,8 +211,10 @@ namespace PepperDash.Essentials.DM
|
|||||||
var ioSlotJoin = ioSlot - 1;
|
var ioSlotJoin = ioSlot - 1;
|
||||||
|
|
||||||
// Control
|
// Control
|
||||||
trilist.SetUShortSigAction(joinMap.OutputVideo.JoinNumber + ioSlotJoin, o => ExecuteSwitch(o, ioSlot, eRoutingSignalType.Video));
|
trilist.SetUShortSigAction(joinMap.OutputVideo.JoinNumber + ioSlotJoin,
|
||||||
trilist.SetUShortSigAction(joinMap.OutputAudio.JoinNumber + ioSlotJoin, o => ExecuteSwitch(o, ioSlot, eRoutingSignalType.Audio));
|
o => ExecuteSwitch(o, ioSlot, eRoutingSignalType.Video));
|
||||||
|
trilist.SetUShortSigAction(joinMap.OutputAudio.JoinNumber + ioSlotJoin,
|
||||||
|
o => ExecuteSwitch(o, ioSlot, eRoutingSignalType.Audio));
|
||||||
|
|
||||||
trilist.SetStringSigAction(joinMap.OutputNames.JoinNumber + ioSlotJoin, s =>
|
trilist.SetStringSigAction(joinMap.OutputNames.JoinNumber + ioSlotJoin, s =>
|
||||||
{
|
{
|
||||||
@@ -238,38 +222,106 @@ namespace PepperDash.Essentials.DM
|
|||||||
|
|
||||||
//Debug.Console(2, dmpsRouter, "Output Name String Sig Action for Output Card {0}", ioSlot);
|
//Debug.Console(2, dmpsRouter, "Output Name String Sig Action for Output Card {0}", ioSlot);
|
||||||
|
|
||||||
if (outputCard != null)
|
if (outputCard == null)
|
||||||
{
|
{
|
||||||
//Debug.Console(2, dmpsRouter, "Card Type: {0}", outputCard.CardInputOutputType);
|
return;
|
||||||
|
}
|
||||||
|
//Debug.Console(2, dmpsRouter, "Card Type: {0}", outputCard.CardInputOutputType);
|
||||||
|
|
||||||
if (!(outputCard is Card.Dmps3CodecOutput) && outputCard.NameFeedback != null)
|
if (outputCard is Card.Dmps3CodecOutput || outputCard.NameFeedback == null)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(outputCard.NameFeedback.StringValue))
|
return;
|
||||||
{
|
}
|
||||||
//Debug.Console(2, dmpsRouter, "NameFeedabck: {0}", outputCard.NameFeedback.StringValue);
|
if (string.IsNullOrEmpty(outputCard.NameFeedback.StringValue))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//Debug.Console(2, dmpsRouter, "NameFeedabck: {0}", outputCard.NameFeedback.StringValue);
|
||||||
|
|
||||||
if (outputCard.NameFeedback.StringValue != s && outputCard.Name != null)
|
if (outputCard.NameFeedback.StringValue != s && outputCard.Name != null)
|
||||||
{
|
{
|
||||||
outputCard.Name.StringValue = s;
|
outputCard.Name.StringValue = s;
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Feedback
|
// Feedback
|
||||||
if (VideoOutputFeedbacks[ioSlot] != null)
|
if (VideoOutputFeedbacks[ioSlot] != null)
|
||||||
|
{
|
||||||
VideoOutputFeedbacks[ioSlot].LinkInputSig(trilist.UShortInput[joinMap.OutputVideo.JoinNumber + ioSlotJoin]);
|
VideoOutputFeedbacks[ioSlot].LinkInputSig(trilist.UShortInput[joinMap.OutputVideo.JoinNumber + ioSlotJoin]);
|
||||||
|
}
|
||||||
if (AudioOutputFeedbacks[ioSlot] != null)
|
if (AudioOutputFeedbacks[ioSlot] != null)
|
||||||
|
{
|
||||||
AudioOutputFeedbacks[ioSlot].LinkInputSig(trilist.UShortInput[joinMap.OutputAudio.JoinNumber + ioSlotJoin]);
|
AudioOutputFeedbacks[ioSlot].LinkInputSig(trilist.UShortInput[joinMap.OutputAudio.JoinNumber + ioSlotJoin]);
|
||||||
|
}
|
||||||
if (OutputNameFeedbacks[ioSlot] != null)
|
if (OutputNameFeedbacks[ioSlot] != null)
|
||||||
|
{
|
||||||
OutputNameFeedbacks[ioSlot].LinkInputSig(trilist.StringInput[joinMap.OutputNames.JoinNumber + ioSlotJoin]);
|
OutputNameFeedbacks[ioSlot].LinkInputSig(trilist.StringInput[joinMap.OutputNames.JoinNumber + ioSlotJoin]);
|
||||||
|
}
|
||||||
if (OutputVideoRouteNameFeedbacks[ioSlot] != null)
|
if (OutputVideoRouteNameFeedbacks[ioSlot] != null)
|
||||||
OutputVideoRouteNameFeedbacks[ioSlot].LinkInputSig(trilist.StringInput[joinMap.OutputCurrentVideoInputNames.JoinNumber + ioSlotJoin]);
|
{
|
||||||
|
OutputVideoRouteNameFeedbacks[ioSlot].LinkInputSig(
|
||||||
|
trilist.StringInput[joinMap.OutputCurrentVideoInputNames.JoinNumber + ioSlotJoin]);
|
||||||
|
}
|
||||||
if (OutputAudioRouteNameFeedbacks[ioSlot] != null)
|
if (OutputAudioRouteNameFeedbacks[ioSlot] != null)
|
||||||
OutputAudioRouteNameFeedbacks[ioSlot].LinkInputSig(trilist.StringInput[joinMap.OutputCurrentAudioInputNames.JoinNumber + ioSlotJoin]);
|
{
|
||||||
|
OutputAudioRouteNameFeedbacks[ioSlot].LinkInputSig(
|
||||||
|
trilist.StringInput[joinMap.OutputCurrentAudioInputNames.JoinNumber + ioSlotJoin]);
|
||||||
|
}
|
||||||
if (OutputEndpointOnlineFeedbacks[ioSlot] != null)
|
if (OutputEndpointOnlineFeedbacks[ioSlot] != null)
|
||||||
OutputEndpointOnlineFeedbacks[ioSlot].LinkInputSig(trilist.BooleanInput[joinMap.OutputEndpointOnline.JoinNumber + ioSlotJoin]);
|
{
|
||||||
|
OutputEndpointOnlineFeedbacks[ioSlot].LinkInputSig(
|
||||||
|
trilist.BooleanInput[joinMap.OutputEndpointOnline.JoinNumber + ioSlotJoin]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LinkInputsToApi(BasicTriList trilist, DmpsRoutingControllerJoinMap joinMap)
|
||||||
|
{
|
||||||
|
for (uint i = 1; i <= Dmps.SwitcherInputs.Count; i++)
|
||||||
|
{
|
||||||
|
Debug.Console(2, this, "Linking Input Card {0}", i);
|
||||||
|
|
||||||
|
var ioSlot = i;
|
||||||
|
var ioSlotJoin = ioSlot - 1;
|
||||||
|
|
||||||
|
if (VideoInputSyncFeedbacks[ioSlot] != null)
|
||||||
|
{
|
||||||
|
VideoInputSyncFeedbacks[ioSlot].LinkInputSig(
|
||||||
|
trilist.BooleanInput[joinMap.VideoSyncStatus.JoinNumber + ioSlotJoin]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (InputNameFeedbacks[ioSlot] != null)
|
||||||
|
{
|
||||||
|
InputNameFeedbacks[ioSlot].LinkInputSig(trilist.StringInput[joinMap.InputNames.JoinNumber + ioSlotJoin]);
|
||||||
|
}
|
||||||
|
|
||||||
|
trilist.SetStringSigAction(joinMap.InputNames.JoinNumber + ioSlotJoin, s =>
|
||||||
|
{
|
||||||
|
var inputCard = Dmps.SwitcherInputs[ioSlot] as DMInput;
|
||||||
|
|
||||||
|
if (inputCard == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inputCard.NameFeedback == null || string.IsNullOrEmpty(inputCard.NameFeedback.StringValue) ||
|
||||||
|
inputCard.NameFeedback.StringValue == s)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inputCard.Name != null)
|
||||||
|
{
|
||||||
|
inputCard.Name.StringValue = s;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
if (InputEndpointOnlineFeedbacks[ioSlot] != null)
|
||||||
|
{
|
||||||
|
InputEndpointOnlineFeedbacks[ioSlot].LinkInputSig(
|
||||||
|
trilist.BooleanInput[joinMap.InputEndpointOnline.JoinNumber + ioSlotJoin]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -281,65 +333,60 @@ namespace PepperDash.Essentials.DM
|
|||||||
{
|
{
|
||||||
foreach (var card in Dmps.SwitcherOutputs)
|
foreach (var card in Dmps.SwitcherOutputs)
|
||||||
{
|
{
|
||||||
|
Debug.Console(1, this, "Output Card Type: {0}", card.CardInputOutputType);
|
||||||
|
|
||||||
var outputCard = card as DMOutput;
|
var outputCard = card as DMOutput;
|
||||||
|
|
||||||
Debug.Console(1, this, "Adding Output Card Number {0} Type: {1}", outputCard.Number, outputCard.CardInputOutputType.ToString());
|
if (outputCard == null)
|
||||||
|
|
||||||
if (outputCard != null)
|
|
||||||
{
|
{
|
||||||
VideoOutputFeedbacks[outputCard.Number] = new IntFeedback(() =>
|
Debug.Console(1, this, "Output card {0} is not a DMOutput", card.CardInputOutputType);
|
||||||
{
|
continue;
|
||||||
if (outputCard.VideoOutFeedback != null) { return (ushort)outputCard.VideoOutFeedback.Number; }
|
|
||||||
else { return 0; };
|
|
||||||
});
|
|
||||||
AudioOutputFeedbacks[outputCard.Number] = new IntFeedback(() =>
|
|
||||||
{
|
|
||||||
if (outputCard.AudioOutFeedback != null) { return (ushort)outputCard.AudioOutFeedback.Number; }
|
|
||||||
else { return 0; };
|
|
||||||
});
|
|
||||||
|
|
||||||
OutputNameFeedbacks[outputCard.Number] = new StringFeedback(() =>
|
|
||||||
{
|
|
||||||
if (outputCard.NameFeedback != null && !string.IsNullOrEmpty(outputCard.NameFeedback.StringValue))
|
|
||||||
{
|
|
||||||
Debug.Console(2, this, "Output Card {0} Name: {1}", outputCard.Number, outputCard.NameFeedback.StringValue);
|
|
||||||
return outputCard.NameFeedback.StringValue;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
OutputVideoRouteNameFeedbacks[outputCard.Number] = new StringFeedback(() =>
|
|
||||||
{
|
|
||||||
if (outputCard.VideoOutFeedback != null && outputCard.VideoOutFeedback.NameFeedback != null)
|
|
||||||
{
|
|
||||||
return outputCard.VideoOutFeedback.NameFeedback.StringValue;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return NoRouteText;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
OutputAudioRouteNameFeedbacks[outputCard.Number] = new StringFeedback(() =>
|
|
||||||
{
|
|
||||||
if (outputCard.AudioOutFeedback != null && outputCard.AudioOutFeedback.NameFeedback != null)
|
|
||||||
{
|
|
||||||
return outputCard.AudioOutFeedback.NameFeedback.StringValue;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return NoRouteText;
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
OutputEndpointOnlineFeedbacks[outputCard.Number] = new BoolFeedback(() => { return outputCard.EndpointOnlineFeedback; });
|
|
||||||
|
|
||||||
AddOutputCard(outputCard.Number, outputCard);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Debug.Console(1, this, "Adding Output Card Number {0} Type: {1}", outputCard.Number, outputCard.CardInputOutputType.ToString());
|
||||||
|
VideoOutputFeedbacks[outputCard.Number] = new IntFeedback(() =>
|
||||||
|
{
|
||||||
|
if (outputCard.VideoOutFeedback != null) { return (ushort)outputCard.VideoOutFeedback.Number; }
|
||||||
|
return 0;
|
||||||
|
;
|
||||||
|
});
|
||||||
|
AudioOutputFeedbacks[outputCard.Number] = new IntFeedback(() =>
|
||||||
|
{
|
||||||
|
if (outputCard.AudioOutFeedback != null) { return (ushort)outputCard.AudioOutFeedback.Number; }
|
||||||
|
return 0;
|
||||||
|
;
|
||||||
|
});
|
||||||
|
|
||||||
|
OutputNameFeedbacks[outputCard.Number] = new StringFeedback(() =>
|
||||||
|
{
|
||||||
|
if (outputCard.NameFeedback != null && !string.IsNullOrEmpty(outputCard.NameFeedback.StringValue))
|
||||||
|
{
|
||||||
|
Debug.Console(2, this, "Output Card {0} Name: {1}", outputCard.Number, outputCard.NameFeedback.StringValue);
|
||||||
|
return outputCard.NameFeedback.StringValue;
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
});
|
||||||
|
|
||||||
|
OutputVideoRouteNameFeedbacks[outputCard.Number] = new StringFeedback(() =>
|
||||||
|
{
|
||||||
|
if (outputCard.VideoOutFeedback != null && outputCard.VideoOutFeedback.NameFeedback != null)
|
||||||
|
{
|
||||||
|
return outputCard.VideoOutFeedback.NameFeedback.StringValue;
|
||||||
|
}
|
||||||
|
return NoRouteText;
|
||||||
|
});
|
||||||
|
OutputAudioRouteNameFeedbacks[outputCard.Number] = new StringFeedback(() =>
|
||||||
|
{
|
||||||
|
if (outputCard.AudioOutFeedback != null && outputCard.AudioOutFeedback.NameFeedback != null)
|
||||||
|
{
|
||||||
|
return outputCard.AudioOutFeedback.NameFeedback.StringValue;
|
||||||
|
}
|
||||||
|
return NoRouteText;
|
||||||
|
});
|
||||||
|
|
||||||
|
OutputEndpointOnlineFeedbacks[outputCard.Number] = new BoolFeedback(() => outputCard.EndpointOnlineFeedback);
|
||||||
|
|
||||||
|
AddOutputCard(outputCard.Number, outputCard);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -495,17 +542,22 @@ namespace PepperDash.Essentials.DM
|
|||||||
var cecPort = hdmiOutputCard.HdmiOutputPort;
|
var cecPort = hdmiOutputCard.HdmiOutputPort;
|
||||||
|
|
||||||
AddHdmiOutputPort(number, cecPort);
|
AddHdmiOutputPort(number, cecPort);
|
||||||
|
}
|
||||||
|
else if (outputCard is Card.Dmps3HdmiOutputBackend)
|
||||||
|
{
|
||||||
|
var hdmiOutputCard = outputCard as Card.Dmps3HdmiOutputBackend;
|
||||||
|
|
||||||
return;
|
var cecPort = hdmiOutputCard.HdmiOutputPort;
|
||||||
|
|
||||||
|
AddHdmiOutputPort(number, cecPort);
|
||||||
}
|
}
|
||||||
else if (outputCard is Card.Dmps3DmOutput)
|
else if (outputCard is Card.Dmps3DmOutput)
|
||||||
{
|
{
|
||||||
var dmOutputCard = outputCard as Card.Dmps3DmOutput;
|
|
||||||
|
|
||||||
var cecPort = dmOutputCard.DmOutputPort;
|
|
||||||
|
|
||||||
AddDmOutputPort(number);
|
AddDmOutputPort(number);
|
||||||
return;
|
}
|
||||||
|
else if (outputCard is Card.Dmps3DmOutputBackend)
|
||||||
|
{
|
||||||
|
AddDmOutputPort(number);
|
||||||
}
|
}
|
||||||
else if (outputCard is Card.Dmps3ProgramOutput)
|
else if (outputCard is Card.Dmps3ProgramOutput)
|
||||||
{
|
{
|
||||||
@@ -514,49 +566,50 @@ namespace PepperDash.Essentials.DM
|
|||||||
var programOutput = new DmpsAudioOutputController(string.Format("processor-programAudioOutput"), "Program Audio Output", outputCard as Card.Dmps3OutputBase);
|
var programOutput = new DmpsAudioOutputController(string.Format("processor-programAudioOutput"), "Program Audio Output", outputCard as Card.Dmps3OutputBase);
|
||||||
|
|
||||||
DeviceManager.AddDevice(programOutput);
|
DeviceManager.AddDevice(programOutput);
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
else if (outputCard is Card.Dmps3AuxOutput)
|
else if (outputCard is Card.Dmps3AuxOutput)
|
||||||
{
|
{
|
||||||
if (outputCard.CardInputOutputType == eCardInputOutputType.Dmps3Aux1Output)
|
switch (outputCard.CardInputOutputType)
|
||||||
{
|
{
|
||||||
AddAudioOnlyOutputPort(number, "Aux1");
|
case eCardInputOutputType.Dmps3Aux1Output:
|
||||||
|
{
|
||||||
|
AddAudioOnlyOutputPort(number, "Aux1");
|
||||||
|
|
||||||
var aux1Output = new DmpsAudioOutputController(string.Format("processor-aux1AudioOutput"), "Program Audio Output", outputCard as Card.Dmps3OutputBase);
|
var aux1Output = new DmpsAudioOutputController(string.Format("processor-aux1AudioOutput"), "Program Audio Output", outputCard as Card.Dmps3OutputBase);
|
||||||
|
|
||||||
DeviceManager.AddDevice(aux1Output);
|
DeviceManager.AddDevice(aux1Output);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case eCardInputOutputType.Dmps3Aux2Output:
|
||||||
|
{
|
||||||
|
AddAudioOnlyOutputPort(number, "Aux2");
|
||||||
|
|
||||||
|
var aux2Output = new DmpsAudioOutputController(string.Format("processor-aux2AudioOutput"), "Program Audio Output", outputCard as Card.Dmps3OutputBase);
|
||||||
|
|
||||||
|
DeviceManager.AddDevice(aux2Output);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
else if (outputCard.CardInputOutputType == eCardInputOutputType.Dmps3Aux2Output)
|
|
||||||
{
|
|
||||||
AddAudioOnlyOutputPort(number, "Aux2");
|
|
||||||
|
|
||||||
var aux2Output = new DmpsAudioOutputController(string.Format("processor-aux2AudioOutput"), "Program Audio Output", outputCard as Card.Dmps3OutputBase);
|
|
||||||
|
|
||||||
DeviceManager.AddDevice(aux2Output);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
else if (outputCard is Card.Dmps3CodecOutput)
|
else if (outputCard is Card.Dmps3CodecOutput)
|
||||||
{
|
{
|
||||||
if (number == (uint)CrestronControlSystem.eDmps300cOutputs.Codec1
|
switch (number)
|
||||||
|| number == (uint)CrestronControlSystem.eDmps3200cOutputs.Codec1
|
{
|
||||||
|| number == (uint)CrestronControlSystem.eDmps3300cAecOutputs.Codec1
|
case (uint)CrestronControlSystem.eDmps34K350COutputs.Codec1:
|
||||||
|| number == (uint)CrestronControlSystem.eDmps34K250COutputs.Codec1
|
case (uint)CrestronControlSystem.eDmps34K250COutputs.Codec1:
|
||||||
|| number == (uint)CrestronControlSystem.eDmps34K350COutputs.Codec1)
|
case (uint)CrestronControlSystem.eDmps3300cAecOutputs.Codec1:
|
||||||
AddAudioOnlyOutputPort(number, CrestronControlSystem.eDmps300cOutputs.Codec1.ToString());
|
AddAudioOnlyOutputPort(number, CrestronControlSystem.eDmps300cOutputs.Codec1.ToString());
|
||||||
else if (number == (uint)CrestronControlSystem.eDmps300cOutputs.Codec2
|
break;
|
||||||
|| number == (uint)CrestronControlSystem.eDmps3200cOutputs.Codec2
|
case (uint)CrestronControlSystem.eDmps34K350COutputs.Codec2:
|
||||||
|| number == (uint)CrestronControlSystem.eDmps3300cAecOutputs.Codec2
|
case (uint)CrestronControlSystem.eDmps34K250COutputs.Codec2:
|
||||||
|| number == (uint)CrestronControlSystem.eDmps34K250COutputs.Codec2
|
case (uint)CrestronControlSystem.eDmps3300cAecOutputs.Codec2:
|
||||||
|| number == (uint)CrestronControlSystem.eDmps34K350COutputs.Codec2)
|
AddAudioOnlyOutputPort(number, CrestronControlSystem.eDmps300cOutputs.Codec2.ToString());
|
||||||
AddAudioOnlyOutputPort(number, CrestronControlSystem.eDmps300cOutputs.Codec2.ToString());
|
break;
|
||||||
return;
|
}
|
||||||
}
|
}
|
||||||
else if (outputCard is Card.Dmps3DialerOutput)
|
else if (outputCard is Card.Dmps3DialerOutput)
|
||||||
{
|
{
|
||||||
AddAudioOnlyOutputPort(number, "Dialer");
|
AddAudioOnlyOutputPort(number, "Dialer");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
else if (outputCard is Card.Dmps3DigitalMixOutput)
|
else if (outputCard is Card.Dmps3DigitalMixOutput)
|
||||||
{
|
{
|
||||||
@@ -568,12 +621,10 @@ namespace PepperDash.Essentials.DM
|
|||||||
|| number == (uint)CrestronControlSystem.eDmps34K300COutputs.Mix2
|
|| number == (uint)CrestronControlSystem.eDmps34K300COutputs.Mix2
|
||||||
|| number == (uint)CrestronControlSystem.eDmps34K350COutputs.Mix2)
|
|| number == (uint)CrestronControlSystem.eDmps34K350COutputs.Mix2)
|
||||||
AddAudioOnlyOutputPort(number, CrestronControlSystem.eDmps34K250COutputs.Mix2.ToString());
|
AddAudioOnlyOutputPort(number, CrestronControlSystem.eDmps34K250COutputs.Mix2.ToString());
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
else if (outputCard is Card.Dmps3AecOutput)
|
else if (outputCard is Card.Dmps3AecOutput)
|
||||||
{
|
{
|
||||||
AddAudioOnlyOutputPort(number, "Aec");
|
AddAudioOnlyOutputPort(number, "Aec");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Crestron.SimplSharpPro.DeviceSupport;
|
using Crestron.SimplSharpPro.DeviceSupport;
|
||||||
using Crestron.SimplSharpPro.DM;
|
using Crestron.SimplSharpPro.DM;
|
||||||
|
using Crestron.SimplSharpPro.DM.Cards;
|
||||||
using Crestron.SimplSharpPro.DM.Endpoints.Receivers;
|
using Crestron.SimplSharpPro.DM.Endpoints.Receivers;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using PepperDash.Core;
|
using PepperDash.Core;
|
||||||
@@ -221,6 +222,10 @@ namespace PepperDash.Essentials.DM
|
|||||||
DmRmcPropertiesConfig props, string pKey, uint ipid)
|
DmRmcPropertiesConfig props, string pKey, uint ipid)
|
||||||
{
|
{
|
||||||
var parentDev = DeviceManager.GetDeviceForKey(pKey);
|
var parentDev = DeviceManager.GetDeviceForKey(pKey);
|
||||||
|
if (parentDev is DmpsRoutingController)
|
||||||
|
{
|
||||||
|
return GetDmRmcControllerForDmps(key, name, typeName, parentDev as DmpsRoutingController, props.ParentOutputNumber);
|
||||||
|
}
|
||||||
if (!(parentDev is IDmSwitch))
|
if (!(parentDev is IDmSwitch))
|
||||||
{
|
{
|
||||||
Debug.Console(0, "Cannot create DM device '{0}'. '{1}' is not a DM Chassis.",
|
Debug.Console(0, "Cannot create DM device '{0}'. '{1}' is not a DM Chassis.",
|
||||||
@@ -285,6 +290,28 @@ namespace PepperDash.Essentials.DM
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static CrestronGenericBaseDevice GetDmRmcControllerForDmps(string key, string name, string typeName,
|
||||||
|
DmpsRoutingController controller, uint num)
|
||||||
|
{
|
||||||
|
Func<string, string, DMOutput, CrestronGenericBaseDevice> dmpsHandler;
|
||||||
|
if (ChassisCpu3Dict.TryGetValue(typeName.ToLower(), out dmpsHandler))
|
||||||
|
{
|
||||||
|
var output = controller.Dmps.SwitcherOutputs[num] as DMOutput;
|
||||||
|
|
||||||
|
if (output != null)
|
||||||
|
{
|
||||||
|
return dmpsHandler(key, name, output);
|
||||||
|
}
|
||||||
|
Debug.Console(0, Debug.ErrorLogLevel.Error,
|
||||||
|
"Cannot attach DM-RMC of type '{0}' to output {1} on DMPS chassis. Output is not a DM Output.",
|
||||||
|
typeName, num);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug.Console(0, Debug.ErrorLogLevel.Error, "Cannot create DM-RMC of type '{0}' to output {1} on DMPS chassis", typeName, num);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private static CrestronGenericBaseDevice GetDmRmcControllerForProcessor(string key, string name, string typeName, uint ipid)
|
private static CrestronGenericBaseDevice GetDmRmcControllerForProcessor(string key, string name, string typeName, uint ipid)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -305,6 +332,8 @@ namespace PepperDash.Essentials.DM
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class DmRmcControllerFactory : EssentialsDeviceFactory<DmRmcControllerBase>
|
public class DmRmcControllerFactory : EssentialsDeviceFactory<DmRmcControllerBase>
|
||||||
|
|||||||
Reference in New Issue
Block a user