Пример #1
0
        private void OnReport(HidReport report)
        {
            var status = report.Data[0];

            Console.WriteLine(status);
            var initialLeftState   = LeftState;
            var initialMiddleState = MiddleState;
            var initialRightState  = RightState;

            if ((status & LEFT_MASK) != 0)
            {
                if (initialLeftState == PedalState.UP)
                {
                    LeftState = PedalState.DOWN;
                    HandlePedalEvent(Pedal.LEFT, LeftState);
                }
            }
            else
            {
                var sendPedalUp = initialLeftState == PedalState.DOWN;
                LeftState = PedalState.UP;
                if (sendPedalUp)
                {
                    HandlePedalEvent(Pedal.LEFT, LeftState);
                }
            }

            if ((status & MIDDLE_MASK) != 0)
            {
                if (MiddleState == PedalState.UP)
                {
                    MiddleState = PedalState.DOWN;
                    HandlePedalEvent(Pedal.MIDDLE, MiddleState);
                }
            }
            else
            {
                var sendPedalUp = initialMiddleState == PedalState.DOWN;
                MiddleState = PedalState.UP;
                if (sendPedalUp)
                {
                    HandlePedalEvent(Pedal.MIDDLE, MiddleState);
                }
            }

            if ((status & RIGHT_MASK) != 0)
            {
                if (RightState == PedalState.UP)
                {
                    RightState = PedalState.DOWN;
                    HandlePedalEvent(Pedal.RIGHT, RightState);
                }
            }
            else
            {
                var sendPedalUp = initialRightState == PedalState.DOWN;
                RightState = PedalState.UP;
                if (sendPedalUp)
                {
                    HandlePedalEvent(Pedal.RIGHT, RightState);
                }
            }

            device.ReadReport(OnReport);
        }