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); } }
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(); } }
protected override void OnNewControlEvent(ControlEventBase controlEvent) { var relativePosition = CalculateRelativeAxisPosition(AxisDefaultRange.GetAxisDefaultMinimum(), AxisDefaultRange.GetAxisDefaultMaximum(), controlEvent); var positionPercentage = GetPercent(relativePosition, _axisMinimum, _axisMaximum); AccessDescriptor.SetPositionInPercents(positionPercentage); }
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); } }
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(); }
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 }); }
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; }