/// <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(); }
/// <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; } }