예제 #1
0
        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);
        }
예제 #2
0
        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);
            }
        }