Exemple #1
0
        /// <summary>
        /// Open Wiimote device and initialize it.
        /// </summary>
        public void OpenDevice()
        {
            Debug.Assert(device == null);

            CloseDevice();
            readMemoryReady = new ManualResetEvent(true);
            device          = new WiimoteIO(DevicePath, ParseDeviceReport);
            SetLED(0);

            // Calibrate accelSensor
            ReadMemory(0x0016, 8, data =>
            {
                AccelSensorCalibrationValue cv = new AccelSensorCalibrationValue()
                {
                    Origin = ParseAccelCalibration(data, 0),
                    G      = ParseAccelCalibration(data, 4),
                };

                cv.G.X                    -= cv.Origin.X;
                cv.G.Y                    -= cv.Origin.Y;
                cv.G.Z                    -= cv.Origin.Z;
                cv.Initialized             = true;
                accelSensorCalibrationData = cv;
            }
                       );
            WaitReadMemory();

            SetReportType(ReportType.B2A3I12, true);
            RequestStatus();
        }
Exemple #2
0
        /// <summary>
        /// Close Wiimote device.
        /// </summary>
        public void CloseDevice()
        {
            if (device != null)
            {
                SetReportType(ReportType.B2, true);
                device.Flush();
                device.Dispose();
                device = null;
            }

            if (readMemoryReady != null)
            {
                readMemoryReady.Close();
                readMemoryReady = null;
            }
        }