Ejemplo n.º 1
0
        public void SetReportType(EInputReport type, EIRSensitivity irSensitivity, bool continuous)
        {
            if (!Connected)
            {
                return;
            }

            switch (type)
            {
            case EInputReport.IRAccel:
                _EnableIR(EIRMode.Extended, irSensitivity);
                break;

            default:
                _DisableIR();
                break;
            }

            _ClearReport();
            _Buff[0] = (byte)EOutputReport.Type;
            _Buff[1] = (byte)((continuous ? 0x04 : 0x00) | (byte)(_WiiMoteState.Rumble ? 0x01 : 0x00));
            _Buff[2] = (byte)type;

            CHIDApi.Write(_Handle, _Buff);
        }
Ejemplo n.º 2
0
        private void _EnableIR(EIRMode mode, EIRSensitivity sensitivity)
        {
            _WiiMoteState.IRState.Mode = mode;

            _ClearReport();
            _Buff[0] = (byte)EOutputReport.IR;
            _Buff[1] = (byte)(0x04 | _RumbleBit);
            CHIDApi.Write(_Handle, _Buff);
            Thread.Sleep(50);

            _ClearReport();
            _Buff[0] = (byte)EOutputReport.IR2;
            _Buff[1] = (byte)(0x04 | _RumbleBit);
            CHIDApi.Write(_Handle, _Buff);
            Thread.Sleep(50);

            _WriteData(_RegisterIR, 0x08);
            Thread.Sleep(50);

            switch (sensitivity)
            {
            case EIRSensitivity.Level1:
                _WriteData(_RegisterIRSensitivity1, 9, new byte[] { 0x02, 0x00, 0x00, 0x71, 0x01, 0x00, 0x64, 0x00, 0xfe });
                Thread.Sleep(50);
                _WriteData(_RegisterIRSensitivity2, 2, new byte[] { 0xfd, 0x05 });
                break;

            case EIRSensitivity.Level2:
                _WriteData(_RegisterIRSensitivity1, 9, new byte[] { 0x02, 0x00, 0x00, 0x71, 0x01, 0x00, 0x96, 0x00, 0xb4 });
                Thread.Sleep(50);
                _WriteData(_RegisterIRSensitivity2, 2, new byte[] { 0xb3, 0x04 });
                break;

            case EIRSensitivity.Level3:
                _WriteData(_RegisterIRSensitivity1, 9, new byte[] { 0x02, 0x00, 0x00, 0x71, 0x01, 0x00, 0xaa, 0x00, 0x64 });
                Thread.Sleep(50);
                _WriteData(_RegisterIRSensitivity2, 2, new byte[] { 0x63, 0x03 });
                break;

            case EIRSensitivity.Level4:
                _WriteData(_RegisterIRSensitivity1, 9, new byte[] { 0x02, 0x00, 0x00, 0x71, 0x01, 0x00, 0xc8, 0x00, 0x36 });
                Thread.Sleep(50);
                _WriteData(_RegisterIRSensitivity2, 2, new byte[] { 0x35, 0x03 });
                break;

            case EIRSensitivity.Level5:
                _WriteData(_RegisterIRSensitivity1, 9, new byte[] { 0x07, 0x00, 0x00, 0x71, 0x01, 0x00, 0x72, 0x00, 0x20 });
                Thread.Sleep(50);
                _WriteData(_RegisterIRSensitivity2, 2, new byte[] { 0x1, 0x03 });
                break;

            case EIRSensitivity.Max:
                _WriteData(_RegisterIRSensitivity1, 9, new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x41 });
                Thread.Sleep(50);
                _WriteData(_RegisterIRSensitivity2, 2, new byte[] { 0x40, 0x00 });
                break;
            }
            Thread.Sleep(50);
            _WriteData(_RegisterIRMode, (byte)mode);
            Thread.Sleep(50);
            _WriteData(_RegisterIR, 0x08);
            Thread.Sleep(50);
        }