using Crestron.SimplSharp; using PepperDash.Core; namespace PepperDash.Essentials.Core { /// /// Interface for any device that has a battery that can be monitored /// public interface IHasBatteryStats : IKeyName { int BatteryPercentage { get; } int BatteryCautionThresholdPercentage { get; } int BatteryWarningThresholdPercentage { get; } BoolFeedback BatteryIsWarningFeedback { get; } BoolFeedback BatteryIsCautionFeedback { get; } BoolFeedback BatteryIsOkFeedback { get; } IntFeedback BatteryPercentageFeedback { get; } } /// /// Interface for any device that has a battery that can be monitored and the ability to charge and discharge /// public interface IHasBatteryCharging : IHasBatteryStats { BoolFeedback BatteryIsCharging { get; } } /// /// Interface for any device that has multiple batteries that can be monitored /// public interface IHasBatteries : IKeyName { ReadOnlyDictionary Batteries { get; } } public interface IHasBatteryStatsExtended : IHasBatteryStats { int InputVoltage { get; } int OutputVoltage { get; } int InptuCurrent { get; } int OutputCurrent { get; } IntFeedback InputVoltageFeedback { get; } IntFeedback OutputVoltageFeedback { get; } IntFeedback InputCurrentFeedback { get; } IntFeedback OutputCurrentFeedback { get; } } /// /// Interface for any device that is able to control its power, has a configurable reboot time, and has batteries that can be monitored /// 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; } } }