mirror of
https://github.com/cathery/sys-con.git
synced 2025-03-29 22:20:09 +00:00
Use Result type instead of Status
This commit is contained in:
parent
76baf30713
commit
c2c58971a7
@ -132,13 +132,13 @@ public:
|
||||
Dualshock3Controller(std::unique_ptr<IUSBDevice> &&interface);
|
||||
virtual ~Dualshock3Controller();
|
||||
|
||||
virtual Status Initialize();
|
||||
virtual Result Initialize();
|
||||
virtual void Exit();
|
||||
|
||||
Status OpenInterfaces();
|
||||
Result OpenInterfaces();
|
||||
void CloseInterfaces();
|
||||
|
||||
virtual Status GetInput();
|
||||
virtual Result GetInput();
|
||||
|
||||
virtual NormalizedButtonData GetNormalizedButtonData();
|
||||
|
||||
@ -149,12 +149,12 @@ public:
|
||||
float NormalizeTrigger(uint8_t value);
|
||||
void NormalizeAxis(uint8_t x, uint8_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
|
||||
|
||||
Status SendInitBytes();
|
||||
Status SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude);
|
||||
Result SendInitBytes();
|
||||
Result SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude);
|
||||
|
||||
static Status SendCommand(IUSBInterface *interface, Dualshock3FeatureValue feature, void *buffer, uint16_t size);
|
||||
static Result SendCommand(IUSBInterface *interface, Dualshock3FeatureValue feature, void *buffer, uint16_t size);
|
||||
|
||||
Status SetLED(Dualshock3LEDValue value);
|
||||
Result SetLED(Dualshock3LEDValue value);
|
||||
|
||||
static void LoadConfig(const ControllerConfig *config);
|
||||
virtual ControllerConfig *GetConfig();
|
||||
|
@ -113,13 +113,13 @@ public:
|
||||
Dualshock4Controller(std::unique_ptr<IUSBDevice> &&interface);
|
||||
virtual ~Dualshock4Controller();
|
||||
|
||||
virtual Status Initialize();
|
||||
virtual Result Initialize();
|
||||
virtual void Exit();
|
||||
|
||||
Status OpenInterfaces();
|
||||
Result OpenInterfaces();
|
||||
void CloseInterfaces();
|
||||
|
||||
virtual Status GetInput();
|
||||
virtual Result GetInput();
|
||||
|
||||
virtual NormalizedButtonData GetNormalizedButtonData();
|
||||
|
||||
@ -130,8 +130,8 @@ public:
|
||||
float NormalizeTrigger(uint8_t value);
|
||||
void NormalizeAxis(uint8_t x, uint8_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
|
||||
|
||||
Status SendInitBytes();
|
||||
Status SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude);
|
||||
Result SendInitBytes();
|
||||
Result SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude);
|
||||
|
||||
static void LoadConfig(const ControllerConfig *config);
|
||||
virtual ControllerConfig *GetConfig();
|
||||
|
@ -92,13 +92,13 @@ public:
|
||||
Xbox360Controller(std::unique_ptr<IUSBDevice> &&interface);
|
||||
virtual ~Xbox360Controller();
|
||||
|
||||
virtual Status Initialize();
|
||||
virtual Result Initialize();
|
||||
virtual void Exit();
|
||||
|
||||
Status OpenInterfaces();
|
||||
Result OpenInterfaces();
|
||||
void CloseInterfaces();
|
||||
|
||||
virtual Status GetInput();
|
||||
virtual Result GetInput();
|
||||
|
||||
virtual NormalizedButtonData GetNormalizedButtonData();
|
||||
|
||||
@ -109,10 +109,10 @@ public:
|
||||
float NormalizeTrigger(uint8_t value);
|
||||
void NormalizeAxis(int16_t x, int16_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
|
||||
|
||||
Status SendInitBytes();
|
||||
Status SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude);
|
||||
Result SendInitBytes();
|
||||
Result SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude);
|
||||
|
||||
Status SetLED(Xbox360LEDValue value);
|
||||
Result SetLED(Xbox360LEDValue value);
|
||||
|
||||
static void LoadConfig(const ControllerConfig *config);
|
||||
virtual ControllerConfig *GetConfig();
|
||||
|
@ -28,13 +28,13 @@ public:
|
||||
Xbox360WirelessController(std::unique_ptr<IUSBDevice> &&interface);
|
||||
virtual ~Xbox360WirelessController();
|
||||
|
||||
virtual Status Initialize();
|
||||
virtual Result Initialize();
|
||||
virtual void Exit();
|
||||
|
||||
Status OpenInterfaces();
|
||||
Result OpenInterfaces();
|
||||
void CloseInterfaces();
|
||||
|
||||
virtual Status GetInput();
|
||||
virtual Result GetInput();
|
||||
|
||||
virtual NormalizedButtonData GetNormalizedButtonData();
|
||||
|
||||
@ -45,18 +45,18 @@ public:
|
||||
float NormalizeTrigger(uint8_t value);
|
||||
void NormalizeAxis(int16_t x, int16_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
|
||||
|
||||
Status SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude);
|
||||
Status SetLED(Xbox360LEDValue value);
|
||||
Result SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude);
|
||||
Result SetLED(Xbox360LEDValue value);
|
||||
|
||||
Status OnControllerConnect();
|
||||
Status OnControllerDisconnect();
|
||||
Result OnControllerConnect();
|
||||
Result OnControllerDisconnect();
|
||||
|
||||
static void LoadConfig(const ControllerConfig *config);
|
||||
virtual ControllerConfig *GetConfig();
|
||||
|
||||
Status WriteToEndpoint(const uint8_t *buffer, size_t size);
|
||||
Result WriteToEndpoint(const uint8_t *buffer, size_t size);
|
||||
|
||||
virtual Status OutputBuffer();
|
||||
virtual Result OutputBuffer();
|
||||
|
||||
bool IsControllerActive() override { return m_presence; }
|
||||
};
|
@ -62,13 +62,13 @@ public:
|
||||
XboxController(std::unique_ptr<IUSBDevice> &&interface);
|
||||
virtual ~XboxController();
|
||||
|
||||
virtual Status Initialize();
|
||||
virtual Result Initialize();
|
||||
virtual void Exit();
|
||||
|
||||
Status OpenInterfaces();
|
||||
Result OpenInterfaces();
|
||||
void CloseInterfaces();
|
||||
|
||||
virtual Status GetInput();
|
||||
virtual Result GetInput();
|
||||
|
||||
virtual NormalizedButtonData GetNormalizedButtonData();
|
||||
|
||||
@ -79,7 +79,7 @@ public:
|
||||
float NormalizeTrigger(uint8_t value);
|
||||
void NormalizeAxis(int16_t x, int16_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
|
||||
|
||||
Status SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude);
|
||||
Result SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude);
|
||||
|
||||
static void LoadConfig(const ControllerConfig *config);
|
||||
virtual ControllerConfig *GetConfig();
|
||||
|
@ -31,17 +31,17 @@ public:
|
||||
XboxOneAdapter(std::unique_ptr<IUSBDevice> &&interface);
|
||||
virtual ~XboxOneAdapter();
|
||||
|
||||
virtual Status Initialize();
|
||||
virtual Result Initialize();
|
||||
virtual void Exit();
|
||||
|
||||
Status OpenInterfaces();
|
||||
Result OpenInterfaces();
|
||||
void CloseInterfaces();
|
||||
|
||||
virtual ControllerType GetType() { return CONTROLLER_XBOXONEW; }
|
||||
|
||||
Status LoadFirmwarePart(uint32_t offset, uint8_t *start, uint8_t *end);
|
||||
Status SendInitBytes();
|
||||
Status ControlWrite(IUSBInterface *interface, uint16_t address, uint32_t value, VendorRequest request = MT_VEND_MULTI_WRITE);
|
||||
Result LoadFirmwarePart(uint32_t offset, uint8_t *start, uint8_t *end);
|
||||
Result SendInitBytes();
|
||||
Result ControlWrite(IUSBInterface *interface, uint16_t address, uint32_t value, VendorRequest request = MT_VEND_MULTI_WRITE);
|
||||
|
||||
static void LoadConfig(const ControllerConfig *config, const char *path);
|
||||
virtual ControllerConfig *GetConfig();
|
||||
|
@ -85,13 +85,13 @@ public:
|
||||
XboxOneController(std::unique_ptr<IUSBDevice> &&interface);
|
||||
virtual ~XboxOneController();
|
||||
|
||||
virtual Status Initialize();
|
||||
virtual Result Initialize();
|
||||
virtual void Exit();
|
||||
|
||||
Status OpenInterfaces();
|
||||
Result OpenInterfaces();
|
||||
void CloseInterfaces();
|
||||
|
||||
virtual Status GetInput();
|
||||
virtual Result GetInput();
|
||||
|
||||
virtual NormalizedButtonData GetNormalizedButtonData();
|
||||
|
||||
@ -102,9 +102,9 @@ public:
|
||||
float NormalizeTrigger(uint16_t value);
|
||||
void NormalizeAxis(int16_t x, int16_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
|
||||
|
||||
Status SendInitBytes();
|
||||
Status WriteAckGuideReport(uint8_t sequence);
|
||||
Status SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude);
|
||||
Result SendInitBytes();
|
||||
Result WriteAckGuideReport(uint8_t sequence);
|
||||
Result SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude);
|
||||
|
||||
static void LoadConfig(const ControllerConfig *config);
|
||||
virtual ControllerConfig *GetConfig();
|
||||
|
@ -23,21 +23,21 @@ public:
|
||||
IController(std::unique_ptr<IUSBDevice> &&interface) : m_device(std::move(interface)) {}
|
||||
virtual ~IController() = default;
|
||||
|
||||
virtual Status Initialize() = 0;
|
||||
virtual Result Initialize() = 0;
|
||||
|
||||
//Since Exit is used to clean up resources, no status report should be needed
|
||||
//Since Exit is used to clean up resources, no Result report should be needed
|
||||
virtual void Exit() = 0;
|
||||
|
||||
virtual Status GetInput() { return 1; }
|
||||
virtual Result GetInput() { return 1; }
|
||||
|
||||
virtual NormalizedButtonData GetNormalizedButtonData() { return NormalizedButtonData(); }
|
||||
|
||||
inline IUSBDevice *GetDevice() { return m_device.get(); }
|
||||
virtual ControllerType GetType() = 0;
|
||||
virtual Status SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude) { return 1; }
|
||||
virtual Result SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude) { return 1; }
|
||||
virtual bool IsControllerActive() { return true; }
|
||||
|
||||
virtual Status OutputBuffer() { return 1; };
|
||||
virtual Result OutputBuffer() { return 1; };
|
||||
|
||||
virtual ControllerConfig *GetConfig() { return nullptr; }
|
||||
};
|
@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
#include <cstdio>
|
||||
#include "Status.h"
|
||||
#include "Result.h"
|
||||
#include "IUSBInterface.h"
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
@ -17,7 +17,7 @@ public:
|
||||
virtual ~IUSBDevice() = default;
|
||||
|
||||
//Open and close the device.
|
||||
virtual Status Open() = 0;
|
||||
virtual Result Open() = 0;
|
||||
virtual void Close() = 0;
|
||||
|
||||
//Reset the device.
|
||||
|
@ -1,5 +1,5 @@
|
||||
#pragma once
|
||||
#include "Status.h"
|
||||
#include "Result.h"
|
||||
#include <cstddef>
|
||||
|
||||
class IUSBEndpoint
|
||||
@ -24,14 +24,14 @@ public:
|
||||
virtual ~IUSBEndpoint() = default;
|
||||
|
||||
//Open and close the endpoint. if maxPacketSize is not set, it uses wMaxPacketSize from the descriptor.
|
||||
virtual Status Open(int maxPacketSize = 0) = 0;
|
||||
virtual Result Open(int maxPacketSize = 0) = 0;
|
||||
virtual void Close() = 0;
|
||||
|
||||
//This will read from the inBuffer pointer for the specified size and write it to the endpoint.
|
||||
virtual Status Write(const void *inBuffer, size_t bufferSize) = 0;
|
||||
virtual Result Write(const void *inBuffer, size_t bufferSize) = 0;
|
||||
|
||||
//This will read from the endpoint and put the data in the outBuffer pointer for the specified size.
|
||||
virtual Status Read(void *outBuffer, size_t bufferSize) = 0;
|
||||
virtual Result Read(void *outBuffer, size_t bufferSize) = 0;
|
||||
|
||||
//Get endpoint's direction. (IN or OUT)
|
||||
virtual IUSBEndpoint::Direction GetDirection() = 0;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#pragma once
|
||||
#include "Status.h"
|
||||
#include "Result.h"
|
||||
#include "IUSBEndpoint.h"
|
||||
#include <memory>
|
||||
|
||||
@ -21,13 +21,13 @@ public:
|
||||
};
|
||||
virtual ~IUSBInterface() = default;
|
||||
|
||||
virtual Status Open() = 0;
|
||||
virtual Result Open() = 0;
|
||||
virtual void Close() = 0;
|
||||
|
||||
virtual Status ControlTransfer(uint8_t bmRequestType, uint8_t bmRequest, uint16_t wValue, uint16_t wIndex, uint16_t wLength, void *buffer) = 0;
|
||||
virtual Result ControlTransfer(uint8_t bmRequestType, uint8_t bmRequest, uint16_t wValue, uint16_t wIndex, uint16_t wLength, void *buffer) = 0;
|
||||
|
||||
virtual IUSBEndpoint *GetEndpoint(IUSBEndpoint::Direction direction, uint8_t index);
|
||||
virtual InterfaceDescriptor *GetDescriptor();
|
||||
|
||||
virtual Status Reset() = 0;
|
||||
virtual Result Reset() = 0;
|
||||
};
|
14
ControllerUSB/include/Result.h
Normal file
14
ControllerUSB/include/Result.h
Normal file
@ -0,0 +1,14 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
|
||||
//Function error code Result type
|
||||
typedef uint32_t Result;
|
||||
|
||||
//Checks whether a Result code indicates success
|
||||
#ifndef R_SUCCEEDED
|
||||
#define R_SUCCEEDED(Result) ((Result) == 0)
|
||||
#endif
|
||||
//Checks whether a Result code indicates failure
|
||||
#ifndef R_FAILED
|
||||
#define R_FAILED(Result) ((Result) != 0)
|
||||
#endif
|
@ -1,10 +0,0 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
|
||||
//Function error code status type
|
||||
typedef uint32_t Status;
|
||||
|
||||
//Checks whether a status code indicates success
|
||||
#define S_SUCCEEDED(status) ((status) == 0)
|
||||
//Checks whether a status code indicates failure
|
||||
#define S_FAILED(status) ((status) != 0)
|
@ -13,12 +13,12 @@ Dualshock3Controller::~Dualshock3Controller()
|
||||
Exit();
|
||||
}
|
||||
|
||||
Status Dualshock3Controller::Initialize()
|
||||
Result Dualshock3Controller::Initialize()
|
||||
{
|
||||
Status rc;
|
||||
Result rc;
|
||||
|
||||
rc = OpenInterfaces();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
SetLED(DS3LED_1);
|
||||
@ -29,11 +29,11 @@ void Dualshock3Controller::Exit()
|
||||
CloseInterfaces();
|
||||
}
|
||||
|
||||
Status Dualshock3Controller::OpenInterfaces()
|
||||
Result Dualshock3Controller::OpenInterfaces()
|
||||
{
|
||||
Status rc;
|
||||
Result rc;
|
||||
rc = m_device->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
//Open each interface, send it a setup packet and get the endpoints if it succeeds
|
||||
@ -41,7 +41,7 @@ Status Dualshock3Controller::OpenInterfaces()
|
||||
for (auto &&interface : interfaces)
|
||||
{
|
||||
rc = interface->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
if (interface->GetDescriptor()->bNumEndpoints < 2)
|
||||
@ -50,7 +50,7 @@ Status Dualshock3Controller::OpenInterfaces()
|
||||
//Send an initial control packet
|
||||
uint8_t initBytes[] = {0x42, 0x0C, 0x00, 0x00};
|
||||
rc = SendCommand(interface.get(), Ds3FeatureStartDevice, initBytes, sizeof(initBytes));
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return 60;
|
||||
|
||||
m_interface = interface.get();
|
||||
@ -63,7 +63,7 @@ Status Dualshock3Controller::OpenInterfaces()
|
||||
if (inEndpoint)
|
||||
{
|
||||
rc = inEndpoint->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return 61;
|
||||
|
||||
m_inPipe = inEndpoint;
|
||||
@ -80,7 +80,7 @@ Status Dualshock3Controller::OpenInterfaces()
|
||||
if (outEndpoint)
|
||||
{
|
||||
rc = outEndpoint->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return 62;
|
||||
|
||||
m_outPipe = outEndpoint;
|
||||
@ -101,13 +101,13 @@ void Dualshock3Controller::CloseInterfaces()
|
||||
m_device->Close();
|
||||
}
|
||||
|
||||
Status Dualshock3Controller::GetInput()
|
||||
Result Dualshock3Controller::GetInput()
|
||||
{
|
||||
|
||||
uint8_t input_bytes[49];
|
||||
|
||||
Status rc = m_inPipe->Read(input_bytes, sizeof(input_bytes));
|
||||
if (S_FAILED(rc))
|
||||
Result rc = m_inPipe->Read(input_bytes, sizeof(input_bytes));
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
if (input_bytes[0] == Ds3InputPacket_Button)
|
||||
@ -203,18 +203,18 @@ NormalizedButtonData Dualshock3Controller::GetNormalizedButtonData()
|
||||
return normalData;
|
||||
}
|
||||
|
||||
Status Dualshock3Controller::SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude)
|
||||
Result Dualshock3Controller::SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude)
|
||||
{
|
||||
//Not implemented yet
|
||||
return 9;
|
||||
}
|
||||
|
||||
Status Dualshock3Controller::SendCommand(IUSBInterface *interface, Dualshock3FeatureValue feature, void *buffer, uint16_t size)
|
||||
Result Dualshock3Controller::SendCommand(IUSBInterface *interface, Dualshock3FeatureValue feature, void *buffer, uint16_t size)
|
||||
{
|
||||
return interface->ControlTransfer(0x21, 0x09, static_cast<uint16_t>(feature), 0, size, buffer);
|
||||
}
|
||||
|
||||
Status Dualshock3Controller::SetLED(Dualshock3LEDValue value)
|
||||
Result Dualshock3Controller::SetLED(Dualshock3LEDValue value)
|
||||
{
|
||||
uint8_t ledPacket[]{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
|
@ -22,7 +22,7 @@ uint32_t ComputeDualshock4Checksum(const uint8_t *report_data, uint16_t length)
|
||||
}
|
||||
*/
|
||||
|
||||
Status Dualshock4Controller::SendInitBytes()
|
||||
Result Dualshock4Controller::SendInitBytes()
|
||||
{
|
||||
|
||||
constexpr uint8_t init_bytes[32] = {
|
||||
@ -34,16 +34,16 @@ Status Dualshock4Controller::SendInitBytes()
|
||||
return m_outPipe->Write(init_bytes, sizeof(init_bytes));
|
||||
}
|
||||
|
||||
Status Dualshock4Controller::Initialize()
|
||||
Result Dualshock4Controller::Initialize()
|
||||
{
|
||||
Status rc;
|
||||
Result rc;
|
||||
|
||||
rc = OpenInterfaces();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
rc = SendInitBytes();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
WriteToLog("Max IN packet size: ", m_inPipe->GetDescriptor()->wMaxPacketSize);
|
||||
@ -58,11 +58,11 @@ void Dualshock4Controller::Exit()
|
||||
CloseInterfaces();
|
||||
}
|
||||
|
||||
Status Dualshock4Controller::OpenInterfaces()
|
||||
Result Dualshock4Controller::OpenInterfaces()
|
||||
{
|
||||
Status rc;
|
||||
Result rc;
|
||||
rc = m_device->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
//This will open each interface and try to acquire Dualshock 4 controller's in and out endpoints, if it hasn't already
|
||||
@ -70,7 +70,7 @@ Status Dualshock4Controller::OpenInterfaces()
|
||||
for (auto &&interface : interfaces)
|
||||
{
|
||||
rc = interface->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
if (interface->GetDescriptor()->bInterfaceProtocol != 0)
|
||||
@ -89,7 +89,7 @@ Status Dualshock4Controller::OpenInterfaces()
|
||||
if (inEndpoint)
|
||||
{
|
||||
rc = inEndpoint->Open(100);
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return 61;
|
||||
|
||||
m_inPipe = inEndpoint;
|
||||
@ -106,7 +106,7 @@ Status Dualshock4Controller::OpenInterfaces()
|
||||
if (outEndpoint)
|
||||
{
|
||||
rc = outEndpoint->Open(100);
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return 62;
|
||||
|
||||
m_outPipe = outEndpoint;
|
||||
@ -127,11 +127,11 @@ void Dualshock4Controller::CloseInterfaces()
|
||||
m_device->Close();
|
||||
}
|
||||
|
||||
Status Dualshock4Controller::GetInput()
|
||||
Result Dualshock4Controller::GetInput()
|
||||
{
|
||||
uint8_t input_bytes[64];
|
||||
Status rc = m_inPipe->Read(input_bytes, sizeof(input_bytes));
|
||||
if (S_FAILED(rc))
|
||||
Result rc = m_inPipe->Read(input_bytes, sizeof(input_bytes));
|
||||
if (R_FAILED(rc))
|
||||
{
|
||||
m_inputData[0] = static_cast<uint8_t>(rc);
|
||||
return rc;
|
||||
@ -232,7 +232,7 @@ NormalizedButtonData Dualshock4Controller::GetNormalizedButtonData()
|
||||
return normalData;
|
||||
}
|
||||
|
||||
Status Dualshock4Controller::SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude)
|
||||
Result Dualshock4Controller::SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude)
|
||||
{
|
||||
return 9;
|
||||
/*
|
||||
|
@ -13,12 +13,12 @@ Xbox360Controller::~Xbox360Controller()
|
||||
Exit();
|
||||
}
|
||||
|
||||
Status Xbox360Controller::Initialize()
|
||||
Result Xbox360Controller::Initialize()
|
||||
{
|
||||
Status rc;
|
||||
Result rc;
|
||||
|
||||
rc = OpenInterfaces();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
SetLED(XBOX360LED_TOPLEFT);
|
||||
@ -29,11 +29,11 @@ void Xbox360Controller::Exit()
|
||||
CloseInterfaces();
|
||||
}
|
||||
|
||||
Status Xbox360Controller::OpenInterfaces()
|
||||
Result Xbox360Controller::OpenInterfaces()
|
||||
{
|
||||
Status rc;
|
||||
Result rc;
|
||||
rc = m_device->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
//This will open each interface and try to acquire Xbox One controller's in and out endpoints, if it hasn't already
|
||||
@ -41,7 +41,7 @@ Status Xbox360Controller::OpenInterfaces()
|
||||
for (auto &&interface : interfaces)
|
||||
{
|
||||
rc = interface->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
if (interface->GetDescriptor()->bInterfaceProtocol != 1)
|
||||
@ -58,7 +58,7 @@ Status Xbox360Controller::OpenInterfaces()
|
||||
if (inEndpoint)
|
||||
{
|
||||
rc = inEndpoint->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return 55555;
|
||||
|
||||
m_inPipe = inEndpoint;
|
||||
@ -75,7 +75,7 @@ Status Xbox360Controller::OpenInterfaces()
|
||||
if (outEndpoint)
|
||||
{
|
||||
rc = outEndpoint->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return 66666;
|
||||
|
||||
m_outPipe = outEndpoint;
|
||||
@ -96,11 +96,11 @@ void Xbox360Controller::CloseInterfaces()
|
||||
m_device->Close();
|
||||
}
|
||||
|
||||
Status Xbox360Controller::GetInput()
|
||||
Result Xbox360Controller::GetInput()
|
||||
{
|
||||
uint8_t input_bytes[64];
|
||||
|
||||
Status rc = m_inPipe->Read(input_bytes, sizeof(input_bytes));
|
||||
Result rc = m_inPipe->Read(input_bytes, sizeof(input_bytes));
|
||||
|
||||
uint8_t type = input_bytes[0];
|
||||
|
||||
@ -112,13 +112,13 @@ Status Xbox360Controller::GetInput()
|
||||
return rc;
|
||||
}
|
||||
|
||||
Status Xbox360Controller::SendInitBytes()
|
||||
Result Xbox360Controller::SendInitBytes()
|
||||
{
|
||||
uint8_t init_bytes[]{
|
||||
0x05,
|
||||
0x20, 0x00, 0x01, 0x00};
|
||||
|
||||
Status rc = m_outPipe->Write(init_bytes, sizeof(init_bytes));
|
||||
Result rc = m_outPipe->Write(init_bytes, sizeof(init_bytes));
|
||||
return rc;
|
||||
}
|
||||
|
||||
@ -209,13 +209,13 @@ NormalizedButtonData Xbox360Controller::GetNormalizedButtonData()
|
||||
return normalData;
|
||||
}
|
||||
|
||||
Status Xbox360Controller::SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude)
|
||||
Result Xbox360Controller::SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude)
|
||||
{
|
||||
uint8_t rumbleData[]{0x00, sizeof(Xbox360RumbleData), 0x00, strong_magnitude, weak_magnitude, 0x00, 0x00, 0x00};
|
||||
return m_outPipe->Write(rumbleData, sizeof(rumbleData));
|
||||
}
|
||||
|
||||
Status Xbox360Controller::SetLED(Xbox360LEDValue value)
|
||||
Result Xbox360Controller::SetLED(Xbox360LEDValue value)
|
||||
{
|
||||
uint8_t ledPacket[]{0x01, 0x03, static_cast<uint8_t>(value)};
|
||||
return m_outPipe->Write(ledPacket, sizeof(ledPacket));
|
||||
|
@ -17,18 +17,18 @@ Xbox360WirelessController::~Xbox360WirelessController()
|
||||
Exit();
|
||||
}
|
||||
|
||||
Status Xbox360WirelessController::Initialize()
|
||||
Result Xbox360WirelessController::Initialize()
|
||||
{
|
||||
Status rc;
|
||||
Result rc;
|
||||
m_outputBuffer.clear();
|
||||
m_outputBuffer.reserve(4);
|
||||
|
||||
rc = OpenInterfaces();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
rc = WriteToEndpoint(reconnectPacket, sizeof(reconnectPacket));
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
SetLED(XBOX360LED_TOPLEFT);
|
||||
@ -39,11 +39,11 @@ void Xbox360WirelessController::Exit()
|
||||
CloseInterfaces();
|
||||
}
|
||||
|
||||
Status Xbox360WirelessController::OpenInterfaces()
|
||||
Result Xbox360WirelessController::OpenInterfaces()
|
||||
{
|
||||
Status rc;
|
||||
Result rc;
|
||||
rc = m_device->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
//This will open each interface and try to acquire Xbox 360 controller's in and out endpoints, if it hasn't already
|
||||
@ -51,7 +51,7 @@ Status Xbox360WirelessController::OpenInterfaces()
|
||||
for (auto &&interface : interfaces)
|
||||
{
|
||||
rc = interface->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
if (interface->GetDescriptor()->bInterfaceProtocol != 129)
|
||||
@ -68,7 +68,7 @@ Status Xbox360WirelessController::OpenInterfaces()
|
||||
if (inEndpoint)
|
||||
{
|
||||
rc = inEndpoint->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return 55555;
|
||||
|
||||
m_inPipe = inEndpoint;
|
||||
@ -85,7 +85,7 @@ Status Xbox360WirelessController::OpenInterfaces()
|
||||
if (outEndpoint)
|
||||
{
|
||||
rc = outEndpoint->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return 66666;
|
||||
|
||||
m_outPipe = outEndpoint;
|
||||
@ -109,11 +109,11 @@ void Xbox360WirelessController::CloseInterfaces()
|
||||
m_device->Close();
|
||||
}
|
||||
|
||||
Status Xbox360WirelessController::GetInput()
|
||||
Result Xbox360WirelessController::GetInput()
|
||||
{
|
||||
uint8_t input_bytes[64];
|
||||
|
||||
Status rc = m_inPipe->Read(input_bytes, sizeof(input_bytes));
|
||||
Result rc = m_inPipe->Read(input_bytes, sizeof(input_bytes));
|
||||
|
||||
uint8_t type = input_bytes[0];
|
||||
|
||||
@ -230,13 +230,13 @@ NormalizedButtonData Xbox360WirelessController::GetNormalizedButtonData()
|
||||
return normalData;
|
||||
}
|
||||
|
||||
Status Xbox360WirelessController::SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude)
|
||||
Result Xbox360WirelessController::SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude)
|
||||
{
|
||||
uint8_t rumbleData[]{0x00, 0x01, 0x0F, 0xC0, 0x00, strong_magnitude, weak_magnitude, 0x00, 0x00, 0x00, 0x00, 0x00};
|
||||
return WriteToEndpoint(rumbleData, sizeof(rumbleData));
|
||||
}
|
||||
|
||||
Status Xbox360WirelessController::SetLED(Xbox360LEDValue value)
|
||||
Result Xbox360WirelessController::SetLED(Xbox360LEDValue value)
|
||||
{
|
||||
uint8_t customLEDPacket[]{0x00, 0x00, 0x08, static_cast<uint8_t>(value | 0x40), 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
||||
return WriteToEndpoint(customLEDPacket, sizeof(customLEDPacket));
|
||||
@ -252,7 +252,7 @@ ControllerConfig *Xbox360WirelessController::GetConfig()
|
||||
return &_xbox360WControllerConfig;
|
||||
}
|
||||
|
||||
Status Xbox360WirelessController::OnControllerConnect()
|
||||
Result Xbox360WirelessController::OnControllerConnect()
|
||||
{
|
||||
m_outputBuffer.push_back(OutputPacket{reconnectPacket, sizeof(reconnectPacket)});
|
||||
m_outputBuffer.push_back(OutputPacket{initDriverPacket, sizeof(initDriverPacket)});
|
||||
@ -260,23 +260,23 @@ Status Xbox360WirelessController::OnControllerConnect()
|
||||
return 0;
|
||||
}
|
||||
|
||||
Status Xbox360WirelessController::OnControllerDisconnect()
|
||||
Result Xbox360WirelessController::OnControllerDisconnect()
|
||||
{
|
||||
m_outputBuffer.push_back(OutputPacket{poweroffPacket, sizeof(poweroffPacket)});
|
||||
return 0;
|
||||
}
|
||||
|
||||
Status Xbox360WirelessController::WriteToEndpoint(const uint8_t *buffer, size_t size)
|
||||
Result Xbox360WirelessController::WriteToEndpoint(const uint8_t *buffer, size_t size)
|
||||
{
|
||||
return m_outPipe->Write(buffer, size);
|
||||
}
|
||||
|
||||
Status Xbox360WirelessController::OutputBuffer()
|
||||
Result Xbox360WirelessController::OutputBuffer()
|
||||
{
|
||||
if (m_outputBuffer.empty())
|
||||
return 1;
|
||||
|
||||
Status rc;
|
||||
Result rc;
|
||||
auto it = m_outputBuffer.begin();
|
||||
rc = WriteToEndpoint(it->packet, it->length);
|
||||
m_outputBuffer.erase(it);
|
||||
|
@ -13,12 +13,12 @@ XboxController::~XboxController()
|
||||
Exit();
|
||||
}
|
||||
|
||||
Status XboxController::Initialize()
|
||||
Result XboxController::Initialize()
|
||||
{
|
||||
Status rc;
|
||||
Result rc;
|
||||
|
||||
rc = OpenInterfaces();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
return rc;
|
||||
@ -28,11 +28,11 @@ void XboxController::Exit()
|
||||
CloseInterfaces();
|
||||
}
|
||||
|
||||
Status XboxController::OpenInterfaces()
|
||||
Result XboxController::OpenInterfaces()
|
||||
{
|
||||
Status rc;
|
||||
Result rc;
|
||||
rc = m_device->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
//This will open each interface and try to acquire Xbox controller's in and out endpoints, if it hasn't already
|
||||
@ -40,7 +40,7 @@ Status XboxController::OpenInterfaces()
|
||||
for (auto &&interface : interfaces)
|
||||
{
|
||||
rc = interface->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
if (interface->GetDescriptor()->bInterfaceProtocol != 0)
|
||||
@ -57,7 +57,7 @@ Status XboxController::OpenInterfaces()
|
||||
if (inEndpoint)
|
||||
{
|
||||
rc = inEndpoint->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return 55555;
|
||||
|
||||
m_inPipe = inEndpoint;
|
||||
@ -74,7 +74,7 @@ Status XboxController::OpenInterfaces()
|
||||
if (outEndpoint)
|
||||
{
|
||||
rc = outEndpoint->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return 66666;
|
||||
|
||||
m_outPipe = outEndpoint;
|
||||
@ -95,13 +95,13 @@ void XboxController::CloseInterfaces()
|
||||
m_device->Close();
|
||||
}
|
||||
|
||||
Status XboxController::GetInput()
|
||||
Result XboxController::GetInput()
|
||||
{
|
||||
uint8_t input_bytes[64];
|
||||
|
||||
Status rc = m_inPipe->Read(input_bytes, sizeof(input_bytes));
|
||||
Result rc = m_inPipe->Read(input_bytes, sizeof(input_bytes));
|
||||
|
||||
if (S_SUCCEEDED(rc))
|
||||
if (R_SUCCEEDED(rc))
|
||||
{
|
||||
m_buttonData = *reinterpret_cast<XboxButtonData *>(input_bytes);
|
||||
}
|
||||
@ -196,7 +196,7 @@ NormalizedButtonData XboxController::GetNormalizedButtonData()
|
||||
return normalData;
|
||||
}
|
||||
|
||||
Status XboxController::SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude)
|
||||
Result XboxController::SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude)
|
||||
{
|
||||
uint8_t rumbleData[]{0x00, 0x06, 0x00, strong_magnitude, weak_magnitude, 0x00, 0x00, 0x00};
|
||||
return m_outPipe->Write(rumbleData, sizeof(rumbleData));
|
||||
|
@ -18,16 +18,16 @@ XboxOneAdapter::~XboxOneAdapter()
|
||||
Exit();
|
||||
}
|
||||
|
||||
Status XboxOneAdapter::Initialize()
|
||||
Result XboxOneAdapter::Initialize()
|
||||
{
|
||||
Status rc;
|
||||
Result rc;
|
||||
|
||||
rc = OpenInterfaces();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
rc = SendInitBytes();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
return rc;
|
||||
}
|
||||
@ -36,18 +36,18 @@ void XboxOneAdapter::Exit()
|
||||
CloseInterfaces();
|
||||
}
|
||||
|
||||
Status XboxOneAdapter::OpenInterfaces()
|
||||
Result XboxOneAdapter::OpenInterfaces()
|
||||
{
|
||||
Status rc;
|
||||
Result rc;
|
||||
rc = m_device->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
std::vector<std::unique_ptr<IUSBInterface>> &interfaces = m_device->GetInterfaces();
|
||||
for (auto &&interface : interfaces)
|
||||
{
|
||||
rc = interface->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
if (interface->GetDescriptor()->bInterfaceProtocol != 255)
|
||||
@ -64,7 +64,7 @@ Status XboxOneAdapter::OpenInterfaces()
|
||||
if (inEndpoint)
|
||||
{
|
||||
rc = inEndpoint->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return 3333;
|
||||
|
||||
m_inPipePacket = inEndpoint;
|
||||
@ -77,7 +77,7 @@ Status XboxOneAdapter::OpenInterfaces()
|
||||
if (inEndpoint)
|
||||
{
|
||||
rc = inEndpoint->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return 4444;
|
||||
|
||||
m_inPipe = inEndpoint;
|
||||
@ -90,7 +90,7 @@ Status XboxOneAdapter::OpenInterfaces()
|
||||
if (outEndpoint)
|
||||
{
|
||||
rc = outEndpoint->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return 5555;
|
||||
|
||||
m_outPipe = outEndpoint;
|
||||
@ -110,9 +110,9 @@ void XboxOneAdapter::CloseInterfaces()
|
||||
m_device->Close();
|
||||
}
|
||||
|
||||
Status XboxOneAdapter::SendInitBytes()
|
||||
Result XboxOneAdapter::SendInitBytes()
|
||||
{
|
||||
Status rc;
|
||||
Result rc;
|
||||
DmaConfig config = {};
|
||||
|
||||
config.rxBulkEnabled = 1;
|
||||
@ -156,12 +156,12 @@ Status XboxOneAdapter::SendInitBytes()
|
||||
WriteToLog("Writing 1st part");
|
||||
|
||||
rc = LoadFirmwarePart(MT_MCU_ILM_OFFSET, ilmStart, dlmStart);
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
WriteToLog("Writing 2nd part");
|
||||
rc = LoadFirmwarePart(MT_MCU_DLM_OFFSET, dlmStart, dlmEnd);
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
WriteToLog("Wrote");
|
||||
@ -169,10 +169,10 @@ Status XboxOneAdapter::SendInitBytes()
|
||||
return 0;
|
||||
}
|
||||
|
||||
Status XboxOneAdapter::LoadFirmwarePart(uint32_t offset, uint8_t *start, uint8_t *end)
|
||||
Result XboxOneAdapter::LoadFirmwarePart(uint32_t offset, uint8_t *start, uint8_t *end)
|
||||
{
|
||||
// Send firmware in chunks
|
||||
Status rc = -1;
|
||||
Result rc = -1;
|
||||
for (uint8_t *chunk = start; chunk < end; chunk += MT_FW_CHUNK_SIZE)
|
||||
{
|
||||
uint32_t address = (uint32_t)(offset + chunk - start);
|
||||
@ -180,11 +180,11 @@ Status XboxOneAdapter::LoadFirmwarePart(uint32_t offset, uint8_t *start, uint8_t
|
||||
uint16_t length = remaining > MT_FW_CHUNK_SIZE ? MT_FW_CHUNK_SIZE : remaining;
|
||||
|
||||
rc = ControlWrite(m_interface, MT_FCE_DMA_ADDR, address, MT_VEND_WRITE_CFG);
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
rc = ControlWrite(m_interface, MT_FCE_DMA_LEN, length << 16, MT_VEND_WRITE_CFG);
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
uint8_t data[length + 8]{0x00, 0x38, 0x00, 0x10};
|
||||
@ -195,15 +195,15 @@ Status XboxOneAdapter::LoadFirmwarePart(uint32_t offset, uint8_t *start, uint8_t
|
||||
}
|
||||
|
||||
rc = m_outPipe->Write(data, sizeof(data));
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
Status XboxOneAdapter::ControlWrite(IUSBInterface *interface, uint16_t address, uint32_t value, VendorRequest request)
|
||||
Result XboxOneAdapter::ControlWrite(IUSBInterface *interface, uint16_t address, uint32_t value, VendorRequest request)
|
||||
{
|
||||
Status rc;
|
||||
Result rc;
|
||||
if (request == MT_VEND_DEV_MODE)
|
||||
{
|
||||
rc = interface->ControlTransfer(0x40, request, address, 0, 0, nullptr);
|
||||
|
@ -71,16 +71,16 @@ XboxOneController::~XboxOneController()
|
||||
Exit();
|
||||
}
|
||||
|
||||
Status XboxOneController::Initialize()
|
||||
Result XboxOneController::Initialize()
|
||||
{
|
||||
Status rc;
|
||||
Result rc;
|
||||
|
||||
rc = OpenInterfaces();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
rc = SendInitBytes();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
return rc;
|
||||
}
|
||||
@ -89,11 +89,11 @@ void XboxOneController::Exit()
|
||||
CloseInterfaces();
|
||||
}
|
||||
|
||||
Status XboxOneController::OpenInterfaces()
|
||||
Result XboxOneController::OpenInterfaces()
|
||||
{
|
||||
Status rc;
|
||||
Result rc;
|
||||
rc = m_device->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
//This will open each interface and try to acquire Xbox One controller's in and out endpoints, if it hasn't already
|
||||
@ -101,7 +101,7 @@ Status XboxOneController::OpenInterfaces()
|
||||
for (auto &&interface : interfaces)
|
||||
{
|
||||
rc = interface->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
if (interface->GetDescriptor()->bInterfaceProtocol != 208)
|
||||
@ -118,7 +118,7 @@ Status XboxOneController::OpenInterfaces()
|
||||
if (inEndpoint)
|
||||
{
|
||||
rc = inEndpoint->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return 5555;
|
||||
|
||||
m_inPipe = inEndpoint;
|
||||
@ -135,7 +135,7 @@ Status XboxOneController::OpenInterfaces()
|
||||
if (outEndpoint)
|
||||
{
|
||||
rc = outEndpoint->Open();
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return 6666;
|
||||
|
||||
m_outPipe = outEndpoint;
|
||||
@ -156,12 +156,12 @@ void XboxOneController::CloseInterfaces()
|
||||
m_device->Close();
|
||||
}
|
||||
|
||||
Status XboxOneController::GetInput()
|
||||
Result XboxOneController::GetInput()
|
||||
{
|
||||
uint8_t input_bytes[64];
|
||||
|
||||
Status rc = m_inPipe->Read(input_bytes, sizeof(input_bytes));
|
||||
if (S_FAILED(rc))
|
||||
Result rc = m_inPipe->Read(input_bytes, sizeof(input_bytes));
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
|
||||
uint8_t type = input_bytes[0];
|
||||
@ -170,7 +170,7 @@ Status XboxOneController::GetInput()
|
||||
{
|
||||
m_buttonData = *reinterpret_cast<XboxOneButtonData *>(input_bytes);
|
||||
}
|
||||
else if (type == XBONEINPUT_GUIDEBUTTON) //Guide button status
|
||||
else if (type == XBONEINPUT_GUIDEBUTTON) //Guide button Result
|
||||
{
|
||||
m_GuidePressed = input_bytes[4];
|
||||
|
||||
@ -179,7 +179,7 @@ Status XboxOneController::GetInput()
|
||||
if (input_bytes[1] == 0x30)
|
||||
{
|
||||
rc = WriteAckGuideReport(input_bytes[2]);
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
@ -187,9 +187,9 @@ Status XboxOneController::GetInput()
|
||||
return rc;
|
||||
}
|
||||
|
||||
Status XboxOneController::SendInitBytes()
|
||||
Result XboxOneController::SendInitBytes()
|
||||
{
|
||||
Status rc;
|
||||
Result rc;
|
||||
uint16_t vendor = m_device->GetVendor();
|
||||
uint16_t product = m_device->GetProduct();
|
||||
for (int i = 0; i != (sizeof(init_packets) / sizeof(VendorProductPacket)); ++i)
|
||||
@ -200,7 +200,7 @@ Status XboxOneController::SendInitBytes()
|
||||
continue;
|
||||
|
||||
rc = m_outPipe->Write(init_packets[i].Packet, init_packets[i].Length);
|
||||
if (S_FAILED(rc))
|
||||
if (R_FAILED(rc))
|
||||
break;
|
||||
else
|
||||
WriteToLog("Send a specific init packet ", i, " for controller v", vendor, " p", product);
|
||||
@ -295,9 +295,9 @@ NormalizedButtonData XboxOneController::GetNormalizedButtonData()
|
||||
return normalData;
|
||||
}
|
||||
|
||||
Status XboxOneController::WriteAckGuideReport(uint8_t sequence)
|
||||
Result XboxOneController::WriteAckGuideReport(uint8_t sequence)
|
||||
{
|
||||
Status rc;
|
||||
Result rc;
|
||||
uint8_t report[] = {
|
||||
0x01, 0x20,
|
||||
sequence,
|
||||
@ -307,7 +307,7 @@ Status XboxOneController::WriteAckGuideReport(uint8_t sequence)
|
||||
return rc;
|
||||
}
|
||||
|
||||
Status XboxOneController::SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude)
|
||||
Result XboxOneController::SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude)
|
||||
{
|
||||
uint8_t rumble_data[]{
|
||||
0x09, 0x00, 0x00,
|
||||
|
@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
#include "IUSBDevice.h"
|
||||
#include "switch.h"
|
||||
#include "IUSBDevice.h"
|
||||
#include "SwitchUSBInterface.h"
|
||||
#include <vector>
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
#include "IUSBEndpoint.h"
|
||||
#include "switch.h"
|
||||
#include "IUSBEndpoint.h"
|
||||
#include <memory>
|
||||
|
||||
class SwitchUSBEndpoint : public IUSBEndpoint
|
||||
|
@ -1,7 +1,6 @@
|
||||
#pragma once
|
||||
#include "IUSBInterface.h"
|
||||
#include "SwitchUSBEndpoint.h"
|
||||
#include "switch.h"
|
||||
#include "IUSBInterface.h"
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
|
@ -2,7 +2,6 @@
|
||||
#include "Controllers.h"
|
||||
#include "ControllerConfig.h"
|
||||
|
||||
#include "switch/result.h"
|
||||
#include <cstring>
|
||||
#include <sys/stat.h>
|
||||
#include <array>
|
||||
|
@ -1,7 +1,6 @@
|
||||
#include "switch.h"
|
||||
#include "log.h"
|
||||
#include "mainLoop.h"
|
||||
#include "log.h"
|
||||
|
||||
//ISSUES:
|
||||
// when exiting the applet, only one of the controllers is reset
|
||||
|
Loading…
x
Reference in New Issue
Block a user