ScpControl/Usb/Gamepads/UsbTwinUSBJoystick.cs (29 lines of code) (raw):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ScpControl.Shared.Core;
namespace ScpControl.Usb.Gamepads
{
public class UsbTwinUsbJoystick : UsbGenericGamepad
{
protected override void ParseHidReport(byte[] report)
{
if (report[0] != 0x01) return;
var inputReport = NewHidReport();
#region HID Report translation
// no battery state since the Gamepad is Usb-powered
Battery = DsBattery.None;
// packet counter
inputReport.PacketCounter = ++PacketCounter;
// null button states
inputReport.ZeroPsButtonState();
inputReport.ZeroSelectStartButtonsState();
inputReport.ZeroShoulderButtonsState();
inputReport.Set(Ds3Button.Circle, IsBitSet(report[5], 5));
inputReport.Set(Ds3Button.Cross, IsBitSet(report[5], 6));
inputReport.Set(Ds3Button.Triangle, IsBitSet(report[5], 4));
inputReport.Set(Ds3Button.Triangle, IsBitSet(report[5], 7));
// TODO: implement!
#endregion
OnHidReportReceived(inputReport);
}
}
}