/// <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); }
/// <summary> /// Adds the associated device. /// </summary> /// <param name="device">The device.</param> public void AddAssociatedDevice(DeviceBase device) => AddAssociatedDevice(device.RefId);