public IPCValue RegisterAddress(string address, string group, bool persistent = false) { IPCValue value = null; try { if (!IPCTools.IsReadAddress(address)) { Log.Logger.Error($"RegisterValue: Not an Read-Address! [{address}]"); return(value); } if (currentValues.ContainsKey(address)) { value = currentValues[address]; currentRegistrations[address]++; Log.Logger.Debug($"RegisterValue: Added Registration for Address {address}, Registrations: {currentRegistrations[address]}"); } else { if (IPCTools.rxOffset.IsMatch(address)) { value = new IPCValueOffset(address, group); } else { value = new IPCValueLvar(address); } currentValues.Add(address, value); currentRegistrations.Add(address, 1); if (persistent) { persistentValues.Add(address); } Log.Logger.Debug($"RegisterValue: Added Address {address}, Persistent: {persistent}"); } } catch { Log.Logger.Error($"RegisterValue: Exception while registering Address {address}"); } if (value == null) { Log.Logger.Error($"RegisterValue: Null Reference for Address {address}"); } return(value); }
public virtual void RegisterAction() { if (!BaseSettings.SwitchOnCurrentValue && IsActionReadable(BaseSettings.ActionType) && IPCTools.IsReadAddress(BaseSettings.AddressAction)) { ValueManager.RegisterValue(ID.SwitchState, BaseSettings.AddressAction); } else if (!BaseSettings.SwitchOnCurrentValue) { ValueManager.SetVariable(ID.SwitchState, BaseSettings.SwitchOffState); } if (BaseSettings.HasLongPress && !BaseSettings.SwitchOnCurrentValue && IsActionReadable(BaseSettings.ActionTypeLong) && IPCTools.IsReadAddress(BaseSettings.AddressActionLong)) { ValueManager.RegisterValue(ID.SwitchStateLong, BaseSettings.AddressActionLong); } else if (BaseSettings.HasLongPress && !BaseSettings.SwitchOnCurrentValue) { ValueManager.SetVariable(ID.SwitchStateLong, BaseSettings.SwitchOffStateLong); } }