/// <summary> /// Constructor. /// </summary> /// <param name="mooseBoxRESTAPI">Instance to a versioned MooseBox REST API.</param> /// <param name="registeredFans">Current MooseBox Fan Automation config to build instance from.</param> internal FanAutomation(IMooseBoxRESTAPI mooseBoxRESTAPI, List<FanAutomationConfig> registeredFans) { //Parameter Validations. if (mooseBoxRESTAPI == null) throw new ArgumentNullException("IMooseBoxRESTAPI mooseBoxRESTAPI"); if (registeredFans == null) throw new ArgumentNullException("List<FanAutomationConfig> registeredFans"); //Set Members. m_mooseBoxRESTAPI = mooseBoxRESTAPI; m_registeredFansDict = new Dictionary<Fan, Tuple<TemperatureSensor, Single>>(); //Populate cache if we're building from a config object. foreach (var registeredFan in registeredFans) { TemperatureSensor temperatureSensor = new TemperatureSensor(registeredFan.SerialNumber, mooseBoxRESTAPI); foreach (var fanConfig in registeredFan.FansConfig) { Fan fan = new Fan(fanConfig.FanNumber, mooseBoxRESTAPI); m_registeredFansDict[fan] = new Tuple<TemperatureSensor, Single>(temperatureSensor, fanConfig.PowerOnThresholdCelsius); } } }
/// <summary> /// Constructor. /// </summary> /// <param name="mooseBoxRESTAPI">Instance of a versioned MooseBox REST API.</param> /// <param name="registeredAlarms">Current MooseBox temperature alarm configuration to synchronize instance to.</param> internal TemperatureAlarm(IMooseBoxRESTAPI mooseBoxRESTAPI, List <TemperatureAlarmConfig> registeredAlarms) { //Parameter Validations. if (mooseBoxRESTAPI == null) { throw new ArgumentNullException("IMooseBoxRESTAPI mooseBoxRESTAPI"); } if (registeredAlarms == null) { throw new ArgumentNullException("List<TemperatureAlarmConfig> registeredAlarms"); } //Set Members. m_mooseBoxRESTAPI = mooseBoxRESTAPI; m_registeredAlarmsDict = new Dictionary <Tuple <TemperatureSensor, string>, Tuple <Single, Single> >(); //Configure N Temperature Alarms if we have something to configure from. foreach (var registeredAlarm in registeredAlarms) { TemperatureSensor temperatureSensor = new TemperatureSensor(registeredAlarm.SerialNumber, mooseBoxRESTAPI); foreach (var subscriber in registeredAlarm.Subscribers) { m_registeredAlarmsDict.Add(new Tuple <TemperatureSensor, string>(temperatureSensor, subscriber.Email), new Tuple <Single, Single>(subscriber.CelsiusMin, subscriber.CelsiusMax)); } } }
/// <summary> /// Constructor. /// </summary> /// <param name="mooseBoxRESTAPI">Instance to a versioned MooseBox REST API.</param> /// <param name="registeredFans">Current MooseBox Fan Automation config to build instance from.</param> internal FanAutomation(IMooseBoxRESTAPI mooseBoxRESTAPI, List <FanAutomationConfig> registeredFans) { //Parameter Validations. if (mooseBoxRESTAPI == null) { throw new ArgumentNullException("IMooseBoxRESTAPI mooseBoxRESTAPI"); } if (registeredFans == null) { throw new ArgumentNullException("List<FanAutomationConfig> registeredFans"); } //Set Members. m_mooseBoxRESTAPI = mooseBoxRESTAPI; m_registeredFansDict = new Dictionary <Fan, Tuple <TemperatureSensor, Single> >(); //Populate cache if we're building from a config object. foreach (var registeredFan in registeredFans) { TemperatureSensor temperatureSensor = new TemperatureSensor(registeredFan.SerialNumber, mooseBoxRESTAPI); foreach (var fanConfig in registeredFan.FansConfig) { Fan fan = new Fan(fanConfig.FanNumber, mooseBoxRESTAPI); m_registeredFansDict[fan] = new Tuple <TemperatureSensor, Single>(temperatureSensor, fanConfig.PowerOnThresholdCelsius); } } }
/// <summary> /// Constructor. /// </summary> /// <param name="mooseBoxRESTAPI">Instance of a versioned MooseBox REST API.</param> internal SysInfo(IMooseBoxRESTAPI mooseBoxRESTAPI) { //Parameter Validations. if (mooseBoxRESTAPI == null) throw new ArgumentNullException("IMooseBoxRESTAPI mooseBoxRESTAPI"); //Set Members. m_mooseBoxRESTAPI = mooseBoxRESTAPI; }
/// <summary> /// Queries the current state of all temperature alarms on MooseBox. /// </summary> /// <returns>Current temperature alarm data.</returns> internal static async Task <TemperatureAlarm> QueryCurrentTemperatureAlarms() { IMooseBoxRESTAPI mooseBoxRESTAPI = MooseBoxRESTAPIFactory.Instance.Create(); List <TemperatureAlarmConfig> registeredAlarms = await mooseBoxRESTAPI.ListTemperatureAlarmConfig(); TemperatureAlarm temperatureAlarm = new TemperatureAlarm(mooseBoxRESTAPI, registeredAlarms); return(temperatureAlarm); }
/// <summary> /// Queries the currnet configuration from MooseBox and creates a synchronized instance of FanAutomation. /// </summary> /// <returns>FanAutomation instance representing current state of MooseBox.</returns> internal static async Task <FanAutomation> QueryCurrentFanAutomation() { IMooseBoxRESTAPI mooseBoxRESTAPI = MooseBoxRESTAPIFactory.Instance.Create(); List <FanAutomationConfig> registeredFans = await mooseBoxRESTAPI.ListFanAutomationConfig(); FanAutomation fanAutomation = new FanAutomation(mooseBoxRESTAPI, registeredFans); return(fanAutomation); }
/// <summary> /// Constructor. /// </summary> /// <param name="mooseBoxRESTAPI">Instance of a versioned MooseBox REST API.</param> internal SysInfo(IMooseBoxRESTAPI mooseBoxRESTAPI) { //Parameter Validations. if (mooseBoxRESTAPI == null) { throw new ArgumentNullException("IMooseBoxRESTAPI mooseBoxRESTAPI"); } //Set Members. m_mooseBoxRESTAPI = mooseBoxRESTAPI; }
/// <summary> /// Constructor. /// </summary> /// <param name="serialNumber">Serial number of the temperature sensor.</param> /// <param name="mooseBoxRESTAPI">Versioned MooseBox REST API instance.</param> internal TemperatureSensor(string serialNumber, IMooseBoxRESTAPI mooseBoxRESTAPI) { //Parameter Validations. if (string.IsNullOrEmpty(serialNumber) == true) throw new ArgumentNullException("string serialNumber"); if (mooseBoxRESTAPI == null) throw new ArgumentNullException("IMooseBoxRESTAPI mooseBoxRESTAPI"); //Set Members. m_serialNumber = serialNumber; m_mooseBoxRESTAPI = mooseBoxRESTAPI; }
/// <summary> /// Queries all temperature sensors associated with MooseBox and creates instances (i.e. static construction). /// </summary> /// <returns>[1...N] MooseBox Temperature Sensors.</returns> internal async static Task <List <TemperatureSensor> > GetTemperatureSensors() { List <TemperatureSensor> temperatureSensors = new List <TemperatureSensor>(); IMooseBoxRESTAPI mooseBoxRESTAPI = MooseBoxRESTAPIFactory.Instance.Create(); //Query all available serial numbers. List <string> serialNumbers = await mooseBoxRESTAPI.QueryTemperatureSensorSerialNumbers(); //Convert to TemperatureSensor instances. foreach (string serialNumber in serialNumbers) { temperatureSensors.Add(new TemperatureSensor(serialNumber, mooseBoxRESTAPI)); } return(temperatureSensors); }
/// <summary> /// Constructor. /// </summary> /// <param name="fanNumber">USB Fan number to associate with this instance.</param> /// <param name="mooseBoxRESTAPI">Instance to a versioned MooseBox REST API.</param> internal Fan(Byte fanNumber, IMooseBoxRESTAPI mooseBoxRESTAPI) { //Parameter Validations. if (fanNumber < MinFanNumber || fanNumber > MaxFanNumber) throw new ArgumentOutOfRangeException("Byte fanNumber", string.Format("{0} <= Fan <= {1}. Found: {2}", MinFanNumber, MaxFanNumber, fanNumber)); if (mooseBoxRESTAPI == null) throw new ArgumentNullException("IMooseBoxRESTAPI mooseBoxRESTAPI"); //Set Members. m_fanNumber = fanNumber; m_mooseBoxRESTAPI = mooseBoxRESTAPI; }
/// <summary> /// Constructor. /// </summary> /// <param name="serialNumber">Serial number of the temperature sensor.</param> /// <param name="mooseBoxRESTAPI">Versioned MooseBox REST API instance.</param> internal TemperatureSensor(string serialNumber, IMooseBoxRESTAPI mooseBoxRESTAPI) { //Parameter Validations. if (string.IsNullOrEmpty(serialNumber) == true) { throw new ArgumentNullException("string serialNumber"); } if (mooseBoxRESTAPI == null) { throw new ArgumentNullException("IMooseBoxRESTAPI mooseBoxRESTAPI"); } //Set Members. m_serialNumber = serialNumber; m_mooseBoxRESTAPI = mooseBoxRESTAPI; }
/// <summary> /// Creates a MooseBox REST API at the latest version. /// </summary> /// <param name="version">Specific version of the MooseBox REST API to create.</param> /// <param name="baseUrlStr">Base URL address to the MooseBox, which should be "MooseBox."</param> /// <returns>Instance of versioned MooseBox REST API.</returns> internal IMooseBoxRESTAPI Create(Byte version, string baseUrlStr) { IMooseBoxRESTAPI mooseBoxRESTAPI = null; Uri baseUrl = default(Uri); //Parameter Validations. if (string.IsNullOrEmpty(baseUrlStr) == true) { throw new ArgumentNullException("string baseUrlStr"); } if (Uri.IsWellFormedUriString(baseUrlStr, UriKind.RelativeOrAbsolute) == false) { throw new ArgumentException("Invalid Url. Found: " + base.ToString(), "Uri baseUrlStr"); } //Create the base URL. baseUrl = new Uri(baseUrlStr); //Create API based on version. switch (version) { case 1: mooseBoxRESTAPI = new MooseBoxRESTAPI_v1_0(baseUrl); break; default: throw new ArgumentOutOfRangeException("Byte version", string.Format("{0} <= Version <= {1}. Found: {2}", MinVersion, MaxVersion, version)); } Debug.Assert(mooseBoxRESTAPI != null); return(mooseBoxRESTAPI); }
/// <summary> /// Constructor. /// </summary> /// <param name="fanNumber">USB Fan number to associate with this instance.</param> /// <param name="mooseBoxRESTAPI">Instance to a versioned MooseBox REST API.</param> internal Fan(Byte fanNumber, IMooseBoxRESTAPI mooseBoxRESTAPI) { //Parameter Validations. if (fanNumber < MinFanNumber || fanNumber > MaxFanNumber) { throw new ArgumentOutOfRangeException("Byte fanNumber", string.Format("{0} <= Fan <= {1}. Found: {2}", MinFanNumber, MaxFanNumber, fanNumber)); } if (mooseBoxRESTAPI == null) { throw new ArgumentNullException("IMooseBoxRESTAPI mooseBoxRESTAPI"); } //Set Members. m_fanNumber = fanNumber; m_mooseBoxRESTAPI = mooseBoxRESTAPI; }
/// <summary> /// Constructor. /// </summary> /// <param name="mooseBoxRESTAPI">Instance of a versioned MooseBox REST API.</param> /// <param name="registeredAlarms">Current MooseBox temperature alarm configuration to synchronize instance to.</param> internal TemperatureAlarm(IMooseBoxRESTAPI mooseBoxRESTAPI, List<TemperatureAlarmConfig> registeredAlarms) { //Parameter Validations. if (mooseBoxRESTAPI == null) throw new ArgumentNullException("IMooseBoxRESTAPI mooseBoxRESTAPI"); if (registeredAlarms == null) throw new ArgumentNullException("List<TemperatureAlarmConfig> registeredAlarms"); //Set Members. m_mooseBoxRESTAPI = mooseBoxRESTAPI; m_registeredAlarmsDict = new Dictionary<Tuple<TemperatureSensor, string>, Tuple<Single, Single>>(); //Configure N Temperature Alarms if we have something to configure from. foreach (var registeredAlarm in registeredAlarms) { TemperatureSensor temperatureSensor = new TemperatureSensor(registeredAlarm.SerialNumber, mooseBoxRESTAPI); foreach (var subscriber in registeredAlarm.Subscribers) m_registeredAlarmsDict.Add(new Tuple<TemperatureSensor, string>(temperatureSensor, subscriber.Email), new Tuple<Single, Single>(subscriber.CelsiusMin, subscriber.CelsiusMax)); } }
/// <summary> /// Constructor. /// </summary> /// <param name="mooseBoxRESTAPI">Instance of a versioned MooseBox REST API.</param> internal TemperatureAlarm(IMooseBoxRESTAPI mooseBoxRESTAPI) : this(mooseBoxRESTAPI, new List <TemperatureAlarmConfig>()) { }
/// <summary> /// Constructor. /// </summary> /// <param name="mooseBoxRESTAPI">Instance of a versioned MooseBox REST API.</param> internal TemperatureAlarm(IMooseBoxRESTAPI mooseBoxRESTAPI) : this(mooseBoxRESTAPI, new List<TemperatureAlarmConfig>()) { }
/// <summary> /// Constructor. /// </summary> /// <param name="mooseBoxRESTAPI">Instance to a versioned MooseBox REST API.</param> internal FanAutomation(IMooseBoxRESTAPI mooseBoxRESTAPI) : this(mooseBoxRESTAPI, new List<FanAutomationConfig>()) { }
/// <summary> /// Constructor. /// </summary> /// <param name="mooseBoxRESTAPI">Instance to a versioned MooseBox REST API.</param> internal FanAutomation(IMooseBoxRESTAPI mooseBoxRESTAPI) : this(mooseBoxRESTAPI, new List <FanAutomationConfig>()) { }