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 IRoutingSinkNoSwitching : IRoutingInputs, IHasCurrentSourceInfoChange { } /// /// Endpoint device like a display, that selects inputs /// public interface IRoutingSinkWithSwitching : IRoutingSinkNoSwitching, IHasCurrentSourceInfoChange { //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 ClearRoute(object outputSelector); void ExecuteSwitch(object inputSelector, object outputSelector, eRoutingSignalType signalType); } public interface ITxRouting : IRouting { IntFeedback VideoSourceNumericFeedback { get; } IntFeedback AudioSourceNumericFeedback { get; } void ExecuteNumericSwitch(ushort input, ushort output, eRoutingSignalType type); } /// /// Defines an IRoutingOutputs devices as being a source - the start of the chain /// public interface IRoutingSource : IRoutingOutputs { } }