Exemple #1
0
 /// <summary>
 /// Sets the parent.
 /// </summary>
 /// <param name="parent">The parent.</param>
 public void SetParent(DeviceBase parent)
 {
     parent.AddAssociatedDevice(this);
     parent.SetRelationship(eRelationship.Parent_Root);
     AddAssociatedDevice(parent);
     SetRelationship(eRelationship.Child);
 }
 public void AddDevice(DeviceBase dev)
 {
     if (dev != null && dev.RefId > 0)
     {
         dev.update_info();
         UsedDevices[dev.RefId] = dev;
     }
 }
        /// <summary>
        /// Set Device Value and DeviceString
        /// </summary>
        /// <param name="deviceId"></param>
        /// <param name="value"></param>
        public void SetDeviceValue(int deviceId, double value)
        {
            DeviceBase device = GetDevice(deviceId);

            // Called from SetIOMulti - must use SetDeviceValueByRef, not CAPIControl
            device.forceSetDeviceValueByRef = true; // Device will reset it back
            device.Value = value;
        }
        /// <summary>
        /// Called from HSPI.ConfigDevice
        /// Return HTML for the device config page
        /// </summary>
        /// <param name="deviceId"></param>
        /// <returns></returns>
        public virtual string ConfigDevice(int deviceId)
        {
            StopwatchEx watch = new StopwatchEx("ConfigDevice");

            // TEMP - Update device list?
            UpdateDeviceList();

            DeviceBase dev = GetDevice(deviceId);

            return(dev.GetDeviceConfig());
        }
 public void Log(string msg, bool error = false, DeviceBase dev = null)
 {
     if (dev != null)
     {
         dev.Log(msg, error);
     }
     else
     {
         Console.WriteLine(msg); // TEMP - TODO: only if console visible?
         Utils.Log(msg, error ? Utils.LogType.Error : Utils.LogType.Normal);
     }
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="devID"></param>
        /// <param name="value"></param>
        /// <param name="oldval"></param>
        /// <param name="cause">Just for log</param>
        /// <returns></returns>
        public bool ValueChanged(int devID, double value, double?oldval, string cause)
        {
            Debug.Assert(UsedDevices.ContainsKey(devID));
            DeviceBase device = UsedDevices[devID];

            //For performance keep device state in ValueCached
            device.ValueCached = value;

            // Keep prev. value (only for log)
            if (oldval != null)
            {
                device.ValuePrev = (double)oldval;
            }

            //device.Log($"ValueChanged: [{device}] ({cause})");

            // Notify observers
            device.NotifyValueChange(value, cause);

            return(true);
        }
        /// <summary>
        /// Get device either from UsedDevices dict (if there), or constructed new from devID
        /// </summary>
        /// <param name="devID"></param>
        /// <param name="addToUsedDevices">Add to UsedDevices dict</param>
        /// <returns></returns>
        public DeviceBase GetDevice(int devID, bool addToUsedDevices = true)
        {
            if (devID <= 0)
            {
                return(null);
            }

            // Keep newly created devices only temporary during UpdateConfiguration
            if (UsedDevicesTemp != null && UsedDevicesTemp.ContainsKey(devID))
            {
                return(UsedDevicesTemp[devID]);
            }

            if (UsedDevices.ContainsKey(devID) && UsedDevices[devID] != null)
            {
                return(UsedDevices[devID]);
            }

            DeviceBase device = NewDevice(devID);

            if (device.deviceHS == null)
            {
                // Deleted device
                Log($"Device {devID} doesn't exist in the system", error: true);
            }
            else
            {
                if (addToUsedDevices)
                {
                    UsedDevices[devID] = device;
                }
                else if (UsedDevicesTemp != null)
                {
                    UsedDevicesTemp[devID] = device;
                }
            }
            return(device);
        }
        /// <summary>
        /// Called when a user posts information from your plugin tab on the device utility page
        /// </summary>
        /// <param name="deviceId"></param>
        /// <param name="parts">The post data split into ID=value pairs</param>
        /// <returns></returns>
        public virtual Enums.ConfigDevicePostReturn ConfigDevicePost(int deviceId, NameValueCollection parts)
        {
            DeviceBase dev = GetDevice(deviceId);

            return(dev.ConfigDevicePost(parts));
        }
        /// <summary>
        /// Set Device Value and DeviceString
        /// </summary>
        /// <param name="deviceId"></param>
        /// <param name="value"></param>
        public void SetDeviceValue(int deviceId, double value)
        {
            DeviceBase device = GetDevice(deviceId);

            device.SetValue(value);
        }
Exemple #10
0
 /// <summary>
 /// Adds the associated device.
 /// </summary>
 /// <param name="device">The device.</param>
 public void AddAssociatedDevice(DeviceBase device) => AddAssociatedDevice(device.RefId);