///!!! Sorry I couldn't found yet SetMotor and SetMotor /// <summary> /// /// </summary> /// <param name="device"></param> /// <param name="mode"></param> internal void SetLed(XInputDevice device, byte mode) { _hidInterface.Write(new byte[]{0x1, 0x3, mode},device.ID); }
/// <summary> /// /// </summary> /// <param name="device"></param> /// <param name="leftMotor"></param> /// <param name="rightMotor"></param> internal void SetMotor(XInputDevice device, byte leftMotor, byte rightMotor) { ////char buf[] = {0x00, 0x01, 0x0f, 0xc0, 0x00, large, small, 0x00, 0x00, 0x00, 0x00, 0x00}; // _hidInterface.Write(new byte[] { 0x00, 0x01, 0x0f, 0xc0, 0x00, leftMotor, rightMotor, 0x00, 0x00, 0x00, 0x00, 0x00 }, // _hidInterface.Write (new byte[]{ 0x01, 0x0f, 0xc0, 0x00, leftMotor, rightMotor},device.PID); // _hidInterface.Write (new byte[]{ leftMotor, rightMotor},device.PID); // _hidInterface.Write (new byte[]{ 0x40, leftMotor, rightMotor},device.PID); throw new Exception ("Motor byte combination unknown"); }
public IDevice ResolveDevice(IHIDDevice hidDevice) //public IDevice<IAxisDetails, IButtonDetails, IDeviceExtension> ResolveDevice(IHIDDeviceInfo info) { int type = -1; int len = XPAD_DEVICE.Length; for (int inx = 0; inx < len; inx += 3) { if (hidDevice.VID == XPAD_DEVICE[inx] && hidDevice.PID == XPAD_DEVICE[inx + 1]) { type = XPAD_DEVICE[inx + 2]; break; } } if (type < 0) return null; XInputDevice device; int i = 0; _hidInterface = hidDevice.hidInterface; //check for profile DeviceProfile profile = hidDevice.loadProfile(); device = new XInputDevice(hidDevice.index, hidDevice.PID, hidDevice.VID,hidDevice.ID, 8, 20, this, type); device.Name = hidDevice.Name; device.profile = profile; //inti button structure for (; i < 20; i++) { device.Buttons[i] = new ButtonDetails(); if (profile != null && profile.buttonNaming.Length > i) { device.Buttons [i].name = profile.buttonNaming [i]; } } AxisDetails axisDetails; //LX axisDetails = new AxisDetails(); axisDetails.max = 65535; axisDetails.min = 0; device.Axis[JoystickAxis.AxisX] = axisDetails; //LY axisDetails = new AxisDetails(); axisDetails.max = 65535; axisDetails.min = 0; device.Axis[JoystickAxis.AxisY] = axisDetails; //RX #if UNITY_STANDALONE_OSX axisDetails = new AxisDetails(); axisDetails.max = 65535; axisDetails.min = 0; device.Axis[JoystickAxis.AxisZ] = axisDetails; #endif //RX #if UNITY_STANDALONE_WIN axisDetails = new AxisDetails(); axisDetails.max = 65535; axisDetails.min = 0; device.Axis[JoystickAxis.AxisU] = axisDetails; #endif //RY axisDetails = new AxisDetails(); axisDetails.max = 65535; axisDetails.min = 0; device.Axis[JoystickAxis.AxisR] = axisDetails; //TRIGGERS //LEFT TRIGGER #if UNITY_STANDALONE_OSX axisDetails = new AxisDetails(); axisDetails.max = 128; axisDetails.min = 0; device.Axis[JoystickAxis.AxisU] = axisDetails; //RIGHT TRIGGER axisDetails = new AxisDetails(); axisDetails.max = 128; axisDetails.min = 0; device.Axis[JoystickAxis.AxisV] = axisDetails; #endif //LEFT TRIGGER #if UNITY_STANDALONE_WIN axisDetails = new AxisDetails(); axisDetails.max = 128; axisDetails.min = 0; device.Axis[JoystickAxis.AxisZ] = axisDetails; //RIGHT TRIGGER axisDetails = new AxisDetails(); axisDetails.max = 128; axisDetails.min = 0; device.Axis[JoystickAxis.AxisV] = axisDetails; #endif //POV axisDetails = new AxisDetails(); axisDetails.isHat = true; device.Axis[JoystickAxis.AxisPovX] = axisDetails; axisDetails = new AxisDetails(); axisDetails.isHat = true; device.Axis[JoystickAxis.AxisPovY] = axisDetails; ((HIDDevice)hidDevice).InputReportByteLength = 15; ((HIDDevice)hidDevice).OutputReportByteLength = 12; int numAxis=device.Axis.Count; for (i=0; i < numAxis; i++) { if (profile != null && profile.axisNaming.Length > i) { device.Axis [i].name = profile.axisNaming [i]; } } return device; //return (IDevice<AxisDetails, ButtonDetails, XInputExtension>)joystick; }