Пример #1
0
        /// <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);
                }
            }
        }
Пример #2
0
        /// <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));
                }
            }
        }
Пример #3
0
        /// <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);
                }
            }
        }
Пример #4
0
        /// <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;
        }
Пример #5
0
        /// <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);
        }
Пример #6
0
        /// <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);
        }
Пример #7
0
        /// <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;
        }
Пример #9
0
        /// <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);
        }
Пример #10
0
        /// <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;
        }
Пример #11
0
        /// <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;
        }
Пример #12
0
        /// <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);
        }
Пример #13
0
        /// <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));
            }
        }
Пример #15
0
 /// <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>()) { }
Пример #17
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="mooseBoxRESTAPI">Instance to a versioned MooseBox REST API.</param>
 internal FanAutomation(IMooseBoxRESTAPI mooseBoxRESTAPI) :
     this(mooseBoxRESTAPI, new List<FanAutomationConfig>()) { }
Пример #18
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="mooseBoxRESTAPI">Instance to a versioned MooseBox REST API.</param>
 internal FanAutomation(IMooseBoxRESTAPI mooseBoxRESTAPI) :
     this(mooseBoxRESTAPI, new List <FanAutomationConfig>())
 {
 }