using System; using System.Collections.Generic; using System.Linq; using System.Text; using Crestron.SimplSharp; using Crestron.SimplSharpPro; using Crestron.SimplSharpPro.DM; using PepperDash.Core; namespace PepperDash.Essentials.Core { /// /// The handler type for a Room's SourceInfoChange /// public delegate void SourceInfoChangeHandler(/*EssentialsRoomBase room,*/ SourceListItem info, ChangeType type); //******************************************************************************************* // Interfaces /// /// For rooms with a single presentation source, change event /// public interface IHasCurrentSourceInfoChange { string CurrentSourceInfoKey { get; set; } SourceListItem CurrentSourceInfo { get; set; } event SourceInfoChangeHandler CurrentSourceChange; } /// /// Defines a class that has a collection of RoutingInputPorts /// public interface IRoutingInputs : IKeyed { RoutingPortCollection InputPorts { get; } } /// /// Defines a class that has a collection of RoutingOutputPorts /// public interface IRoutingOutputs : IKeyed { RoutingPortCollection OutputPorts { get; } } /// /// For fixed-source endpoint devices /// public interface IRoutingSink : IRoutingInputs, IHasCurrentSourceInfoChange { } /// /// For fixed-source endpoint devices /// [Obsolete] public interface IRoutingSinkNoSwitching : IRoutingSink { } /// /// Endpoint device like a display, that selects inputs /// public interface IRoutingSinkWithSwitching : IRoutingSink { //void ClearRoute(); void ExecuteSwitch(object inputSelector); } /// /// For devices like RMCs, baluns, other devices with no switching. /// public interface IRoutingInputsOutputs : IRoutingInputs, IRoutingOutputs { } /// /// Defines a midpoint device as have internal routing. Any devices in the middle of the /// signal chain, that do switching, must implement this for routing to work otherwise /// the routing algorithm will treat the IRoutingInputsOutputs device as a passthrough /// device. /// public interface IRouting : IRoutingInputsOutputs { void ExecuteSwitch(object inputSelector, object outputSelector, eRoutingSignalType signalType); } public interface IRoutingNumeric : IRouting { void ExecuteNumericSwitch(ushort input, ushort output, eRoutingSignalType type); } public interface ITxRouting : IRoutingNumeric { IntFeedback VideoSourceNumericFeedback { get; } IntFeedback AudioSourceNumericFeedback { get; } } /// /// Defines a receiver that has internal routing (DM-RMC-4K-Z-SCALER-C) /// public interface IRmcRouting : IRoutingNumeric { IntFeedback AudioVideoSourceNumericFeedback { get; } } /// /// Defines an IRoutingOutputs devices as being a source - the start of the chain /// public interface IRoutingSource : IRoutingOutputs { } }