using System; using System.Collections.Generic; using System.Linq; using System.Text; using Crestron.SimplSharp; namespace PepperDash.Essentials.Core { /// /// Defines minimal volume and mute control methods /// public interface IBasicVolumeControls : IHasVolumeControl, IHasMuteControl { } /// /// Defines basic volume control methods /// public interface IHasVolumeControl { void VolumeUp(bool pressRelease); void VolumeDown(bool pressRelease); } /// /// Defines volume control methods and properties with feedback /// public interface IHasVolumeControlWithFeedback : IHasVolumeControl { void SetVolume(ushort level); IntFeedback VolumeLevelFeedback { get; } } /// /// Defines basic mute control methods /// public interface IHasMuteControl { void MuteToggle(); } /// /// Defines mute control methods and properties with feedback /// public interface IHasMuteControlWithFeedback : IHasMuteControl { BoolFeedback MuteFeedback { get; } void MuteOn(); void MuteOff(); } /// /// Adds feedback and direct volume level set to IBasicVolumeControls /// public interface IBasicVolumeWithFeedback : IBasicVolumeControls, IHasVolumeControlWithFeedback, IHasMuteControlWithFeedback { } /// /// A class that implements this contains a reference to a current IBasicVolumeControls device. /// The class may have multiple IBasicVolumeControls. /// public interface IHasCurrentVolumeControls { IBasicVolumeControls CurrentVolumeControls { get; } event EventHandler CurrentVolumeDeviceChange; } /// /// /// public interface IFullAudioSettings : IBasicVolumeWithFeedback { void SetBalance(ushort level); void BalanceLeft(bool pressRelease); void BalanceRight(bool pressRelease); void SetBass(ushort level); void BassUp(bool pressRelease); void BassDown(bool pressRelease); void SetTreble(ushort level); void TrebleUp(bool pressRelease); void TrebleDown(bool pressRelease); bool hasMaxVolume { get; } void SetMaxVolume(ushort level); void MaxVolumeUp(bool pressRelease); void MaxVolumeDown(bool pressRelease); bool hasDefaultVolume { get; } void SetDefaultVolume(ushort level); void DefaultVolumeUp(bool pressRelease); void DefaultVolumeDown(bool pressRelease); void LoudnessToggle(); void MonoToggle(); BoolFeedback LoudnessFeedback { get; } BoolFeedback MonoFeedback { get; } IntFeedback BalanceFeedback { get; } IntFeedback BassFeedback { get; } IntFeedback TrebleFeedback { get; } IntFeedback MaxVolumeFeedback { get; } IntFeedback DefaultVolumeFeedback { get; } } /// /// A class that implements this, contains a reference to an IBasicVolumeControls device. /// For example, speakers attached to an audio zone. The speakers can provide reference /// to their linked volume control. /// public interface IHasVolumeDevice { IBasicVolumeControls VolumeDevice { get; } } /// /// Identifies a device that contains audio zones /// public interface IAudioZones : IRouting { Dictionary Zone { get; } } /// /// Defines minimum functionality for an audio zone /// public interface IAudioZone : IBasicVolumeWithFeedback { void SelectInput(ushort input); } }