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; }
}
}