Beispiel #1
0
        public void SetupLeds(JoyConSingleLed firstLed, JoyConSingleLed secondLed, JoyConSingleLed thirdLed,
                              JoyConSingleLed fourthLed)
        {
            if (IsDisposed)
            {
                throw new InvalidOperationException("Already disposed");
            }

            Logger.Debug($"Set LEDs {firstLed}, {secondLed}, {thirdLed}, {fourthLed} to JoyCon {Guid}");

            byte light = 0;

            CalculateLight(ref light, firstLed, 1);
            CalculateLight(ref light, secondLed, 2);
            CalculateLight(ref light, thirdLed, 4);
            CalculateLight(ref light, fourthLed, 8);

            bool autoClose = !IsAcquired;

            _device.Write(1, 0x30, new[] { light });
            if (autoClose)
            {
                _device.CloseDevice();
            }
        }
Beispiel #2
0
        private void CalculateLight(ref byte light, JoyConSingleLed led, byte number)
        {
            var flashNumber = (byte)(number * 0x10);

            switch (led)
            {
            case JoyConSingleLed.On:
                light |= number;
                if ((light & flashNumber) != 0)
                {
                    light ^= flashNumber;
                }
                break;

            case JoyConSingleLed.Off:
                if ((light & number) != 0)
                {
                    light ^= number;
                }
                if ((light & flashNumber) != 0)
                {
                    light ^= flashNumber;
                }
                break;

            case JoyConSingleLed.Flash:
                if ((light & number) != 0)
                {
                    light ^= number;
                }
                light |= flashNumber;
                break;

            default:
                throw new NotImplementedException();
            }
        }
Beispiel #3
0
 public void SetupLeds(JoyConSingleLed firstLed, JoyConSingleLed secondLed, JoyConSingleLed thirdLed,
                       JoyConSingleLed fourthLed)
 {
     LeftJoyCon.SetupLeds(firstLed, secondLed, thirdLed, fourthLed);
     RightJoyCon.SetupLeds(firstLed, secondLed, thirdLed, fourthLed);
 }