protected override void OnTick()
        {
            if (!(AccessDescriptor is IRepeaterInDescriptor))
            {
                return;
            }
            bool repeaterIsOn = ((IRepeaterInDescriptor)AccessDescriptor).IsRepeaterOn();

            if (!repeaterIsOn || _lastState == LastState.None)
            {
                return;
            }
            if (_repeatsPerTime[_repeatsPerTimeCounter] == 0)
            {
                _repeatsPerTimeCounter++;
                return;
            }

            if (_lastState == LastState.Next)
            {
                AccessDescriptor.SetNextState(_repeatsPerTime[_repeatsPerTimeCounter]);
            }
            else
            {
                AccessDescriptor.SetPreviousState(_repeatsPerTime[_repeatsPerTimeCounter]);
            }
            if (_repeatsPerTimeCounter < _repeatsPerTime.Length - 1)
            {
                _repeatsPerTimeCounter++;
            }
        }
        protected override void OnNewControlEvent(ControlEventBase controlEvent)
        {
            var ev = (ButtonEvent)controlEvent;

            // AD при изменении состава State'ов нотифицирует об этом CP
            // Проверить, существует ли всё ещё такой ID контрола в AccessDescriptor
            // Как получить все состояния при загрузке ControlProcessor? Вызвать функцию в AccessDescriptor?
            var hardwareId = controlEvent.Hardware.GetHardwareGuid();
            var button     = Connections.FirstOrDefault(hw => hw.GetAssignedHardware() == hardwareId);

            var direction = button.GetInverseState() ? !ev.IsPressed : ev.IsPressed;

            if (!direction)
            {
                SetRepeaterState(LastState.None);
                return;
            }

            if (button.GetConnector().Id == 1)
            {
                AccessDescriptor.SetNextState(1);
                SetRepeaterState(LastState.Next);
            }

            else
            {
                AccessDescriptor.SetPreviousState(1);
                SetRepeaterState(LastState.Prev);
            }
        }
Ejemplo n.º 3
0
        protected override void OnNewControlEvent(ControlEventBase controlEvent)
        {
            var ev = (ButtonEvent)controlEvent;

            var hw = controlEvent.Hardware.GetHardwareGuid();

            // Если такое железо не назначено - прекращаем обработку
            if (!_usedHardware.ContainsKey(hw))
            {
                return;
            }

            _usedHardware[hw] = ev.IsPressed;

            if (!((DescriptorBase)AccessDescriptor).IsPowerOn())
            {
                return;
            }

            var stateId = GetActivatedStateId();

            if (stateId != -1)
            {
                AccessDescriptor.SetState(stateId);
            }
            else
            {
                AccessDescriptor.SetDefaultState();
            }
        }
Ejemplo n.º 4
0
        protected override void OnNewControlEvent(ControlEventBase controlEvent)
        {
            var relativePosition   = CalculateRelativeAxisPosition(AxisDefaultRange.GetAxisDefaultMinimum(), AxisDefaultRange.GetAxisDefaultMaximum(), controlEvent);
            var positionPercentage = GetPercent(relativePosition, _axisMinimum, _axisMaximum);

            AccessDescriptor.SetPositionInPercents(positionPercentage);
        }
Ejemplo n.º 5
0
        protected override void OnNewControlEvent(ControlEventBase controlEvent)
        {
            var ev = controlEvent as EncoderEvent;

            var direction = Connections[0].GetInverseState() ? !ev.RotateDirection : ev.RotateDirection;

            if (direction)
            {
                AccessDescriptor.SetNextState(ev.ClicksCount);
            }
            else
            {
                AccessDescriptor.SetPreviousState(ev.ClicksCount);
            }
        }
Ejemplo n.º 6
0
        protected override void OnNewControlEvent(ControlEventBase controlEvent)
        {
            var ev = controlEvent as ButtonEvent;

            var hardwareId = controlEvent.Hardware.GetHardwareGuid();
            var button     = (AssignmentForButton)Connections.FirstOrDefault(hw => hw.GetAssignedHardware() == hardwareId);

            var direction = button.GetInverseState() ? !ev.IsPressed : ev.IsPressed;

            if (_emulateToggle)
            {
                var action = button.Toggle(direction);
                if (action == ToggleState.MakeOn)
                {
                    AccessDescriptor.SetState(button.GetConnector().Id);
                    _lastStateId = button.GetConnector().Id;
                    button.IsOn  = true;
                }

                if (action == ToggleState.MakeOff)
                {
                    button.IsOn = false;
                }
            }
            else
            {
                if (direction)
                {
                    AccessDescriptor.SetState(button.GetConnector().Id);
                    _lastStateId = button.GetConnector().Id;
                    button.IsOn  = true;
                }
                else
                {
                    button.IsOn  = false;
                    _lastStateId = -1;
                }
            }
            // Для дампа кнопок с первого раза (без AllKeys, затем PressedKeysOnly) нужно игнорировать события отжатых кнопок, если одна из кнопок уже нажата
            if (Connections.Any(bi => ((AssignmentForButton)bi).IsOn))
            {
                return;
            }
            _lastStateId = -1;
            AccessDescriptor.SetDefaultState();
        }
Ejemplo n.º 7
0
        public IEnumerable <ControlEventBase> GetNewEvent()
        {
            if (string.IsNullOrEmpty(Connections[0].GetAssignedHardware()))
            {
                return(null);
            }
            var text = AccessDescriptor.GetIndicatorText();

            if (text == _previousIndicatorText)
            {
                return(null);
            }
            _previousIndicatorText = text;
            var ev = new IndicatorEvent
            {
                Hardware      = ControlProcessorHardware.GenerateByGuid(Connections[0].GetAssignedHardware()),
                IndicatorText = text,
            };

            return(new List <ControlEventBase> {
                ev
            });
        }
Ejemplo n.º 8
0
        protected override void OnTick()
        {
            if (!(AccessDescriptor is IRepeaterInDescriptor))
            {
                return;
            }
            var repeaterIsOn = ((DescriptorMultistateBase)AccessDescriptor).IsRepeaterOn();

            if (!repeaterIsOn || _lastStateId == -1)
            {
                return;
            }

            if (_lastStatePeriod == false)
            {
                AccessDescriptor.SetDefaultState();
            }
            else
            {
                AccessDescriptor.SetState(_lastStateId);
            }
            _lastStatePeriod = !_lastStatePeriod;
        }