using Crestron.SimplSharp; using PepperDash.Core; namespace PepperDash.Essentials.Core { /// /// Defines the contract for IHasBatteryStats /// public interface IHasBatteryStats : IKeyName { /// /// Gets the BatteryPercentage /// int BatteryPercentage { get; } /// /// Gets the BatteryCautionThresholdPercentage /// int BatteryCautionThresholdPercentage { get; } /// /// Gets the BatteryWarningThresholdPercentage /// int BatteryWarningThresholdPercentage { get; } /// /// Gets the BatteryIsWarningFeedback /// BoolFeedback BatteryIsWarningFeedback { get; } /// /// Gets the BatteryIsCautionFeedback /// BoolFeedback BatteryIsCautionFeedback { get; } /// /// Gets the BatteryIsOkFeedback /// BoolFeedback BatteryIsOkFeedback { get; } /// /// Gets the BatteryPercentageFeedback /// IntFeedback BatteryPercentageFeedback { get; } } /// /// Defines the contract for IHasBatteryCharging /// public interface IHasBatteryCharging : IHasBatteryStats { /// /// Gets the BatteryIsCharging /// BoolFeedback BatteryIsCharging { get; } } /// /// Interface for any device that has multiple batteries that can be monitored /// public interface IHasBatteries : IKeyName { /// /// Collection of batteries /// ReadOnlyDictionary Batteries { get; } } /// /// Defines the contract for IHasBatteryStatsExtended /// public interface IHasBatteryStatsExtended : IHasBatteryStats { /// /// Gets the InputVoltage in millivolts /// int InputVoltage { get; } /// /// Gets the OutputVoltage in millivolts /// int OutputVoltage { get; } /// /// Gets the InputCurrent in milliamps /// int InptuCurrent { get; } /// /// Gets the OutputCurrent in milliamps /// int OutputCurrent { get; } /// /// Gets the InputVoltageFeedback /// IntFeedback InputVoltageFeedback { get; } /// /// Gets the OutputVoltageFeedback /// IntFeedback OutputVoltageFeedback { get; } /// /// Gets the InputCurrentFeedback /// IntFeedback InputCurrentFeedback { get; } /// /// Gets the OutputCurrentFeedback /// IntFeedback OutputCurrentFeedback { get; } } /// /// Defines the contract for IHasPowerCycleWithBattery /// public interface IHasPowerCycleWithBattery : IHasPowerCycle, IHasBatteryStats { } /// /// Interface for any device that is able to control it's power and has a configurable reboot time /// public interface IHasPowerCycle : IKeyName, IHasPowerControlWithFeedback { /// /// Delay between power off and power on for reboot /// int PowerCycleTimeMs { get; } /// /// Reboot outlet /// void PowerCycle(); } /// /// Interface for any device that contains a collection of IHasPowerReboot Devices /// public interface IHasControlledPowerOutlets : IKeyName { /// /// Collection of IPduOutlets /// ReadOnlyDictionary PduOutlets { get; } } }