1
0
mirror of https://github.com/cathery/sys-con.git synced 2024-07-08 03:58:43 +00:00

Use Result type instead of Status

This commit is contained in:
cathery 2019-11-13 14:16:13 +03:00
parent 76baf30713
commit c2c58971a7
25 changed files with 195 additions and 194 deletions

View File

@ -132,13 +132,13 @@ public:
Dualshock3Controller(std::unique_ptr<IUSBDevice> &&interface); Dualshock3Controller(std::unique_ptr<IUSBDevice> &&interface);
virtual ~Dualshock3Controller(); virtual ~Dualshock3Controller();
virtual Status Initialize(); virtual Result Initialize();
virtual void Exit(); virtual void Exit();
Status OpenInterfaces(); Result OpenInterfaces();
void CloseInterfaces(); void CloseInterfaces();
virtual Status GetInput(); virtual Result GetInput();
virtual NormalizedButtonData GetNormalizedButtonData(); virtual NormalizedButtonData GetNormalizedButtonData();
@ -149,12 +149,12 @@ public:
float NormalizeTrigger(uint8_t value); float NormalizeTrigger(uint8_t value);
void NormalizeAxis(uint8_t x, uint8_t y, uint8_t deadzonePercent, float *x_out, float *y_out); void NormalizeAxis(uint8_t x, uint8_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
Status SendInitBytes(); Result SendInitBytes();
Status SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude); 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); static void LoadConfig(const ControllerConfig *config);
virtual ControllerConfig *GetConfig(); virtual ControllerConfig *GetConfig();

View File

@ -113,13 +113,13 @@ public:
Dualshock4Controller(std::unique_ptr<IUSBDevice> &&interface); Dualshock4Controller(std::unique_ptr<IUSBDevice> &&interface);
virtual ~Dualshock4Controller(); virtual ~Dualshock4Controller();
virtual Status Initialize(); virtual Result Initialize();
virtual void Exit(); virtual void Exit();
Status OpenInterfaces(); Result OpenInterfaces();
void CloseInterfaces(); void CloseInterfaces();
virtual Status GetInput(); virtual Result GetInput();
virtual NormalizedButtonData GetNormalizedButtonData(); virtual NormalizedButtonData GetNormalizedButtonData();
@ -130,8 +130,8 @@ public:
float NormalizeTrigger(uint8_t value); float NormalizeTrigger(uint8_t value);
void NormalizeAxis(uint8_t x, uint8_t y, uint8_t deadzonePercent, float *x_out, float *y_out); void NormalizeAxis(uint8_t x, uint8_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
Status SendInitBytes(); Result SendInitBytes();
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); static void LoadConfig(const ControllerConfig *config);
virtual ControllerConfig *GetConfig(); virtual ControllerConfig *GetConfig();

View File

@ -92,13 +92,13 @@ public:
Xbox360Controller(std::unique_ptr<IUSBDevice> &&interface); Xbox360Controller(std::unique_ptr<IUSBDevice> &&interface);
virtual ~Xbox360Controller(); virtual ~Xbox360Controller();
virtual Status Initialize(); virtual Result Initialize();
virtual void Exit(); virtual void Exit();
Status OpenInterfaces(); Result OpenInterfaces();
void CloseInterfaces(); void CloseInterfaces();
virtual Status GetInput(); virtual Result GetInput();
virtual NormalizedButtonData GetNormalizedButtonData(); virtual NormalizedButtonData GetNormalizedButtonData();
@ -109,10 +109,10 @@ public:
float NormalizeTrigger(uint8_t value); float NormalizeTrigger(uint8_t value);
void NormalizeAxis(int16_t x, int16_t y, uint8_t deadzonePercent, float *x_out, float *y_out); void NormalizeAxis(int16_t x, int16_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
Status SendInitBytes(); Result SendInitBytes();
Status SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude); Result SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude);
Status SetLED(Xbox360LEDValue value); Result SetLED(Xbox360LEDValue value);
static void LoadConfig(const ControllerConfig *config); static void LoadConfig(const ControllerConfig *config);
virtual ControllerConfig *GetConfig(); virtual ControllerConfig *GetConfig();

View File

@ -28,13 +28,13 @@ public:
Xbox360WirelessController(std::unique_ptr<IUSBDevice> &&interface); Xbox360WirelessController(std::unique_ptr<IUSBDevice> &&interface);
virtual ~Xbox360WirelessController(); virtual ~Xbox360WirelessController();
virtual Status Initialize(); virtual Result Initialize();
virtual void Exit(); virtual void Exit();
Status OpenInterfaces(); Result OpenInterfaces();
void CloseInterfaces(); void CloseInterfaces();
virtual Status GetInput(); virtual Result GetInput();
virtual NormalizedButtonData GetNormalizedButtonData(); virtual NormalizedButtonData GetNormalizedButtonData();
@ -45,18 +45,18 @@ public:
float NormalizeTrigger(uint8_t value); float NormalizeTrigger(uint8_t value);
void NormalizeAxis(int16_t x, int16_t y, uint8_t deadzonePercent, float *x_out, float *y_out); 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);
Status SetLED(Xbox360LEDValue value); Result SetLED(Xbox360LEDValue value);
Status OnControllerConnect(); Result OnControllerConnect();
Status OnControllerDisconnect(); Result OnControllerDisconnect();
static void LoadConfig(const ControllerConfig *config); static void LoadConfig(const ControllerConfig *config);
virtual ControllerConfig *GetConfig(); 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; } bool IsControllerActive() override { return m_presence; }
}; };

View File

@ -62,13 +62,13 @@ public:
XboxController(std::unique_ptr<IUSBDevice> &&interface); XboxController(std::unique_ptr<IUSBDevice> &&interface);
virtual ~XboxController(); virtual ~XboxController();
virtual Status Initialize(); virtual Result Initialize();
virtual void Exit(); virtual void Exit();
Status OpenInterfaces(); Result OpenInterfaces();
void CloseInterfaces(); void CloseInterfaces();
virtual Status GetInput(); virtual Result GetInput();
virtual NormalizedButtonData GetNormalizedButtonData(); virtual NormalizedButtonData GetNormalizedButtonData();
@ -79,7 +79,7 @@ public:
float NormalizeTrigger(uint8_t value); float NormalizeTrigger(uint8_t value);
void NormalizeAxis(int16_t x, int16_t y, uint8_t deadzonePercent, float *x_out, float *y_out); 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); static void LoadConfig(const ControllerConfig *config);
virtual ControllerConfig *GetConfig(); virtual ControllerConfig *GetConfig();

View File

@ -31,17 +31,17 @@ public:
XboxOneAdapter(std::unique_ptr<IUSBDevice> &&interface); XboxOneAdapter(std::unique_ptr<IUSBDevice> &&interface);
virtual ~XboxOneAdapter(); virtual ~XboxOneAdapter();
virtual Status Initialize(); virtual Result Initialize();
virtual void Exit(); virtual void Exit();
Status OpenInterfaces(); Result OpenInterfaces();
void CloseInterfaces(); void CloseInterfaces();
virtual ControllerType GetType() { return CONTROLLER_XBOXONEW; } virtual ControllerType GetType() { return CONTROLLER_XBOXONEW; }
Status LoadFirmwarePart(uint32_t offset, uint8_t *start, uint8_t *end); Result LoadFirmwarePart(uint32_t offset, uint8_t *start, uint8_t *end);
Status SendInitBytes(); Result SendInitBytes();
Status ControlWrite(IUSBInterface *interface, uint16_t address, uint32_t value, VendorRequest request = MT_VEND_MULTI_WRITE); 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); static void LoadConfig(const ControllerConfig *config, const char *path);
virtual ControllerConfig *GetConfig(); virtual ControllerConfig *GetConfig();

View File

@ -85,13 +85,13 @@ public:
XboxOneController(std::unique_ptr<IUSBDevice> &&interface); XboxOneController(std::unique_ptr<IUSBDevice> &&interface);
virtual ~XboxOneController(); virtual ~XboxOneController();
virtual Status Initialize(); virtual Result Initialize();
virtual void Exit(); virtual void Exit();
Status OpenInterfaces(); Result OpenInterfaces();
void CloseInterfaces(); void CloseInterfaces();
virtual Status GetInput(); virtual Result GetInput();
virtual NormalizedButtonData GetNormalizedButtonData(); virtual NormalizedButtonData GetNormalizedButtonData();
@ -102,9 +102,9 @@ public:
float NormalizeTrigger(uint16_t value); float NormalizeTrigger(uint16_t value);
void NormalizeAxis(int16_t x, int16_t y, uint8_t deadzonePercent, float *x_out, float *y_out); void NormalizeAxis(int16_t x, int16_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
Status SendInitBytes(); Result SendInitBytes();
Status WriteAckGuideReport(uint8_t sequence); Result WriteAckGuideReport(uint8_t sequence);
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); static void LoadConfig(const ControllerConfig *config);
virtual ControllerConfig *GetConfig(); virtual ControllerConfig *GetConfig();

View File

@ -23,21 +23,21 @@ public:
IController(std::unique_ptr<IUSBDevice> &&interface) : m_device(std::move(interface)) {} IController(std::unique_ptr<IUSBDevice> &&interface) : m_device(std::move(interface)) {}
virtual ~IController() = default; 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 void Exit() = 0;
virtual Status GetInput() { return 1; } virtual Result GetInput() { return 1; }
virtual NormalizedButtonData GetNormalizedButtonData() { return NormalizedButtonData(); } virtual NormalizedButtonData GetNormalizedButtonData() { return NormalizedButtonData(); }
inline IUSBDevice *GetDevice() { return m_device.get(); } inline IUSBDevice *GetDevice() { return m_device.get(); }
virtual ControllerType GetType() = 0; 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 bool IsControllerActive() { return true; }
virtual Status OutputBuffer() { return 1; }; virtual Result OutputBuffer() { return 1; };
virtual ControllerConfig *GetConfig() { return nullptr; } virtual ControllerConfig *GetConfig() { return nullptr; }
}; };

View File

@ -1,6 +1,6 @@
#pragma once #pragma once
#include <cstdio> #include <cstdio>
#include "Status.h" #include "Result.h"
#include "IUSBInterface.h" #include "IUSBInterface.h"
#include <memory> #include <memory>
#include <vector> #include <vector>
@ -17,7 +17,7 @@ public:
virtual ~IUSBDevice() = default; virtual ~IUSBDevice() = default;
//Open and close the device. //Open and close the device.
virtual Status Open() = 0; virtual Result Open() = 0;
virtual void Close() = 0; virtual void Close() = 0;
//Reset the device. //Reset the device.

View File

@ -1,5 +1,5 @@
#pragma once #pragma once
#include "Status.h" #include "Result.h"
#include <cstddef> #include <cstddef>
class IUSBEndpoint class IUSBEndpoint
@ -24,14 +24,14 @@ public:
virtual ~IUSBEndpoint() = default; virtual ~IUSBEndpoint() = default;
//Open and close the endpoint. if maxPacketSize is not set, it uses wMaxPacketSize from the descriptor. //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; virtual void Close() = 0;
//This will read from the inBuffer pointer for the specified size and write it to the endpoint. //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. //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) //Get endpoint's direction. (IN or OUT)
virtual IUSBEndpoint::Direction GetDirection() = 0; virtual IUSBEndpoint::Direction GetDirection() = 0;

View File

@ -1,5 +1,5 @@
#pragma once #pragma once
#include "Status.h" #include "Result.h"
#include "IUSBEndpoint.h" #include "IUSBEndpoint.h"
#include <memory> #include <memory>
@ -21,13 +21,13 @@ public:
}; };
virtual ~IUSBInterface() = default; virtual ~IUSBInterface() = default;
virtual Status Open() = 0; virtual Result Open() = 0;
virtual void Close() = 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 IUSBEndpoint *GetEndpoint(IUSBEndpoint::Direction direction, uint8_t index);
virtual InterfaceDescriptor *GetDescriptor(); virtual InterfaceDescriptor *GetDescriptor();
virtual Status Reset() = 0; virtual Result Reset() = 0;
}; };

View 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

View File

@ -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)

View File

@ -13,12 +13,12 @@ Dualshock3Controller::~Dualshock3Controller()
Exit(); Exit();
} }
Status Dualshock3Controller::Initialize() Result Dualshock3Controller::Initialize()
{ {
Status rc; Result rc;
rc = OpenInterfaces(); rc = OpenInterfaces();
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
SetLED(DS3LED_1); SetLED(DS3LED_1);
@ -29,11 +29,11 @@ void Dualshock3Controller::Exit()
CloseInterfaces(); CloseInterfaces();
} }
Status Dualshock3Controller::OpenInterfaces() Result Dualshock3Controller::OpenInterfaces()
{ {
Status rc; Result rc;
rc = m_device->Open(); rc = m_device->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
//Open each interface, send it a setup packet and get the endpoints if it succeeds //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) for (auto &&interface : interfaces)
{ {
rc = interface->Open(); rc = interface->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
if (interface->GetDescriptor()->bNumEndpoints < 2) if (interface->GetDescriptor()->bNumEndpoints < 2)
@ -50,7 +50,7 @@ Status Dualshock3Controller::OpenInterfaces()
//Send an initial control packet //Send an initial control packet
uint8_t initBytes[] = {0x42, 0x0C, 0x00, 0x00}; uint8_t initBytes[] = {0x42, 0x0C, 0x00, 0x00};
rc = SendCommand(interface.get(), Ds3FeatureStartDevice, initBytes, sizeof(initBytes)); rc = SendCommand(interface.get(), Ds3FeatureStartDevice, initBytes, sizeof(initBytes));
if (S_FAILED(rc)) if (R_FAILED(rc))
return 60; return 60;
m_interface = interface.get(); m_interface = interface.get();
@ -63,7 +63,7 @@ Status Dualshock3Controller::OpenInterfaces()
if (inEndpoint) if (inEndpoint)
{ {
rc = inEndpoint->Open(); rc = inEndpoint->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return 61; return 61;
m_inPipe = inEndpoint; m_inPipe = inEndpoint;
@ -80,7 +80,7 @@ Status Dualshock3Controller::OpenInterfaces()
if (outEndpoint) if (outEndpoint)
{ {
rc = outEndpoint->Open(); rc = outEndpoint->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return 62; return 62;
m_outPipe = outEndpoint; m_outPipe = outEndpoint;
@ -101,13 +101,13 @@ void Dualshock3Controller::CloseInterfaces()
m_device->Close(); m_device->Close();
} }
Status Dualshock3Controller::GetInput() Result Dualshock3Controller::GetInput()
{ {
uint8_t input_bytes[49]; uint8_t input_bytes[49];
Status rc = m_inPipe->Read(input_bytes, sizeof(input_bytes)); Result rc = m_inPipe->Read(input_bytes, sizeof(input_bytes));
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
if (input_bytes[0] == Ds3InputPacket_Button) if (input_bytes[0] == Ds3InputPacket_Button)
@ -203,18 +203,18 @@ NormalizedButtonData Dualshock3Controller::GetNormalizedButtonData()
return normalData; 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 //Not implemented yet
return 9; 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); 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[]{ uint8_t ledPacket[]{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

View File

@ -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] = { constexpr uint8_t init_bytes[32] = {
@ -34,16 +34,16 @@ Status Dualshock4Controller::SendInitBytes()
return m_outPipe->Write(init_bytes, sizeof(init_bytes)); return m_outPipe->Write(init_bytes, sizeof(init_bytes));
} }
Status Dualshock4Controller::Initialize() Result Dualshock4Controller::Initialize()
{ {
Status rc; Result rc;
rc = OpenInterfaces(); rc = OpenInterfaces();
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
rc = SendInitBytes(); rc = SendInitBytes();
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
WriteToLog("Max IN packet size: ", m_inPipe->GetDescriptor()->wMaxPacketSize); WriteToLog("Max IN packet size: ", m_inPipe->GetDescriptor()->wMaxPacketSize);
@ -58,11 +58,11 @@ void Dualshock4Controller::Exit()
CloseInterfaces(); CloseInterfaces();
} }
Status Dualshock4Controller::OpenInterfaces() Result Dualshock4Controller::OpenInterfaces()
{ {
Status rc; Result rc;
rc = m_device->Open(); rc = m_device->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return 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 //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) for (auto &&interface : interfaces)
{ {
rc = interface->Open(); rc = interface->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
if (interface->GetDescriptor()->bInterfaceProtocol != 0) if (interface->GetDescriptor()->bInterfaceProtocol != 0)
@ -89,7 +89,7 @@ Status Dualshock4Controller::OpenInterfaces()
if (inEndpoint) if (inEndpoint)
{ {
rc = inEndpoint->Open(100); rc = inEndpoint->Open(100);
if (S_FAILED(rc)) if (R_FAILED(rc))
return 61; return 61;
m_inPipe = inEndpoint; m_inPipe = inEndpoint;
@ -106,7 +106,7 @@ Status Dualshock4Controller::OpenInterfaces()
if (outEndpoint) if (outEndpoint)
{ {
rc = outEndpoint->Open(100); rc = outEndpoint->Open(100);
if (S_FAILED(rc)) if (R_FAILED(rc))
return 62; return 62;
m_outPipe = outEndpoint; m_outPipe = outEndpoint;
@ -127,11 +127,11 @@ void Dualshock4Controller::CloseInterfaces()
m_device->Close(); m_device->Close();
} }
Status Dualshock4Controller::GetInput() Result Dualshock4Controller::GetInput()
{ {
uint8_t input_bytes[64]; 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_FAILED(rc)) if (R_FAILED(rc))
{ {
m_inputData[0] = static_cast<uint8_t>(rc); m_inputData[0] = static_cast<uint8_t>(rc);
return rc; return rc;
@ -232,7 +232,7 @@ NormalizedButtonData Dualshock4Controller::GetNormalizedButtonData()
return normalData; 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; return 9;
/* /*

View File

@ -13,12 +13,12 @@ Xbox360Controller::~Xbox360Controller()
Exit(); Exit();
} }
Status Xbox360Controller::Initialize() Result Xbox360Controller::Initialize()
{ {
Status rc; Result rc;
rc = OpenInterfaces(); rc = OpenInterfaces();
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
SetLED(XBOX360LED_TOPLEFT); SetLED(XBOX360LED_TOPLEFT);
@ -29,11 +29,11 @@ void Xbox360Controller::Exit()
CloseInterfaces(); CloseInterfaces();
} }
Status Xbox360Controller::OpenInterfaces() Result Xbox360Controller::OpenInterfaces()
{ {
Status rc; Result rc;
rc = m_device->Open(); rc = m_device->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return 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 //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) for (auto &&interface : interfaces)
{ {
rc = interface->Open(); rc = interface->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
if (interface->GetDescriptor()->bInterfaceProtocol != 1) if (interface->GetDescriptor()->bInterfaceProtocol != 1)
@ -58,7 +58,7 @@ Status Xbox360Controller::OpenInterfaces()
if (inEndpoint) if (inEndpoint)
{ {
rc = inEndpoint->Open(); rc = inEndpoint->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return 55555; return 55555;
m_inPipe = inEndpoint; m_inPipe = inEndpoint;
@ -75,7 +75,7 @@ Status Xbox360Controller::OpenInterfaces()
if (outEndpoint) if (outEndpoint)
{ {
rc = outEndpoint->Open(); rc = outEndpoint->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return 66666; return 66666;
m_outPipe = outEndpoint; m_outPipe = outEndpoint;
@ -96,11 +96,11 @@ void Xbox360Controller::CloseInterfaces()
m_device->Close(); m_device->Close();
} }
Status Xbox360Controller::GetInput() Result Xbox360Controller::GetInput()
{ {
uint8_t input_bytes[64]; 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]; uint8_t type = input_bytes[0];
@ -112,13 +112,13 @@ Status Xbox360Controller::GetInput()
return rc; return rc;
} }
Status Xbox360Controller::SendInitBytes() Result Xbox360Controller::SendInitBytes()
{ {
uint8_t init_bytes[]{ uint8_t init_bytes[]{
0x05, 0x05,
0x20, 0x00, 0x01, 0x00}; 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; return rc;
} }
@ -209,13 +209,13 @@ NormalizedButtonData Xbox360Controller::GetNormalizedButtonData()
return normalData; 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}; uint8_t rumbleData[]{0x00, sizeof(Xbox360RumbleData), 0x00, strong_magnitude, weak_magnitude, 0x00, 0x00, 0x00};
return m_outPipe->Write(rumbleData, sizeof(rumbleData)); 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)}; uint8_t ledPacket[]{0x01, 0x03, static_cast<uint8_t>(value)};
return m_outPipe->Write(ledPacket, sizeof(ledPacket)); return m_outPipe->Write(ledPacket, sizeof(ledPacket));

View File

@ -17,18 +17,18 @@ Xbox360WirelessController::~Xbox360WirelessController()
Exit(); Exit();
} }
Status Xbox360WirelessController::Initialize() Result Xbox360WirelessController::Initialize()
{ {
Status rc; Result rc;
m_outputBuffer.clear(); m_outputBuffer.clear();
m_outputBuffer.reserve(4); m_outputBuffer.reserve(4);
rc = OpenInterfaces(); rc = OpenInterfaces();
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
rc = WriteToEndpoint(reconnectPacket, sizeof(reconnectPacket)); rc = WriteToEndpoint(reconnectPacket, sizeof(reconnectPacket));
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
SetLED(XBOX360LED_TOPLEFT); SetLED(XBOX360LED_TOPLEFT);
@ -39,11 +39,11 @@ void Xbox360WirelessController::Exit()
CloseInterfaces(); CloseInterfaces();
} }
Status Xbox360WirelessController::OpenInterfaces() Result Xbox360WirelessController::OpenInterfaces()
{ {
Status rc; Result rc;
rc = m_device->Open(); rc = m_device->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return 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 //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) for (auto &&interface : interfaces)
{ {
rc = interface->Open(); rc = interface->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
if (interface->GetDescriptor()->bInterfaceProtocol != 129) if (interface->GetDescriptor()->bInterfaceProtocol != 129)
@ -68,7 +68,7 @@ Status Xbox360WirelessController::OpenInterfaces()
if (inEndpoint) if (inEndpoint)
{ {
rc = inEndpoint->Open(); rc = inEndpoint->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return 55555; return 55555;
m_inPipe = inEndpoint; m_inPipe = inEndpoint;
@ -85,7 +85,7 @@ Status Xbox360WirelessController::OpenInterfaces()
if (outEndpoint) if (outEndpoint)
{ {
rc = outEndpoint->Open(); rc = outEndpoint->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return 66666; return 66666;
m_outPipe = outEndpoint; m_outPipe = outEndpoint;
@ -109,11 +109,11 @@ void Xbox360WirelessController::CloseInterfaces()
m_device->Close(); m_device->Close();
} }
Status Xbox360WirelessController::GetInput() Result Xbox360WirelessController::GetInput()
{ {
uint8_t input_bytes[64]; 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]; uint8_t type = input_bytes[0];
@ -230,13 +230,13 @@ NormalizedButtonData Xbox360WirelessController::GetNormalizedButtonData()
return normalData; 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}; uint8_t rumbleData[]{0x00, 0x01, 0x0F, 0xC0, 0x00, strong_magnitude, weak_magnitude, 0x00, 0x00, 0x00, 0x00, 0x00};
return WriteToEndpoint(rumbleData, sizeof(rumbleData)); 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}; 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)); return WriteToEndpoint(customLEDPacket, sizeof(customLEDPacket));
@ -252,7 +252,7 @@ ControllerConfig *Xbox360WirelessController::GetConfig()
return &_xbox360WControllerConfig; return &_xbox360WControllerConfig;
} }
Status Xbox360WirelessController::OnControllerConnect() Result Xbox360WirelessController::OnControllerConnect()
{ {
m_outputBuffer.push_back(OutputPacket{reconnectPacket, sizeof(reconnectPacket)}); m_outputBuffer.push_back(OutputPacket{reconnectPacket, sizeof(reconnectPacket)});
m_outputBuffer.push_back(OutputPacket{initDriverPacket, sizeof(initDriverPacket)}); m_outputBuffer.push_back(OutputPacket{initDriverPacket, sizeof(initDriverPacket)});
@ -260,23 +260,23 @@ Status Xbox360WirelessController::OnControllerConnect()
return 0; return 0;
} }
Status Xbox360WirelessController::OnControllerDisconnect() Result Xbox360WirelessController::OnControllerDisconnect()
{ {
m_outputBuffer.push_back(OutputPacket{poweroffPacket, sizeof(poweroffPacket)}); m_outputBuffer.push_back(OutputPacket{poweroffPacket, sizeof(poweroffPacket)});
return 0; 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); return m_outPipe->Write(buffer, size);
} }
Status Xbox360WirelessController::OutputBuffer() Result Xbox360WirelessController::OutputBuffer()
{ {
if (m_outputBuffer.empty()) if (m_outputBuffer.empty())
return 1; return 1;
Status rc; Result rc;
auto it = m_outputBuffer.begin(); auto it = m_outputBuffer.begin();
rc = WriteToEndpoint(it->packet, it->length); rc = WriteToEndpoint(it->packet, it->length);
m_outputBuffer.erase(it); m_outputBuffer.erase(it);

View File

@ -13,12 +13,12 @@ XboxController::~XboxController()
Exit(); Exit();
} }
Status XboxController::Initialize() Result XboxController::Initialize()
{ {
Status rc; Result rc;
rc = OpenInterfaces(); rc = OpenInterfaces();
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
return rc; return rc;
@ -28,11 +28,11 @@ void XboxController::Exit()
CloseInterfaces(); CloseInterfaces();
} }
Status XboxController::OpenInterfaces() Result XboxController::OpenInterfaces()
{ {
Status rc; Result rc;
rc = m_device->Open(); rc = m_device->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
//This will open each interface and try to acquire Xbox controller's in and out endpoints, if it hasn't already //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) for (auto &&interface : interfaces)
{ {
rc = interface->Open(); rc = interface->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
if (interface->GetDescriptor()->bInterfaceProtocol != 0) if (interface->GetDescriptor()->bInterfaceProtocol != 0)
@ -57,7 +57,7 @@ Status XboxController::OpenInterfaces()
if (inEndpoint) if (inEndpoint)
{ {
rc = inEndpoint->Open(); rc = inEndpoint->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return 55555; return 55555;
m_inPipe = inEndpoint; m_inPipe = inEndpoint;
@ -74,7 +74,7 @@ Status XboxController::OpenInterfaces()
if (outEndpoint) if (outEndpoint)
{ {
rc = outEndpoint->Open(); rc = outEndpoint->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return 66666; return 66666;
m_outPipe = outEndpoint; m_outPipe = outEndpoint;
@ -95,13 +95,13 @@ void XboxController::CloseInterfaces()
m_device->Close(); m_device->Close();
} }
Status XboxController::GetInput() Result XboxController::GetInput()
{ {
uint8_t input_bytes[64]; 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); m_buttonData = *reinterpret_cast<XboxButtonData *>(input_bytes);
} }
@ -196,7 +196,7 @@ NormalizedButtonData XboxController::GetNormalizedButtonData()
return normalData; 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}; uint8_t rumbleData[]{0x00, 0x06, 0x00, strong_magnitude, weak_magnitude, 0x00, 0x00, 0x00};
return m_outPipe->Write(rumbleData, sizeof(rumbleData)); return m_outPipe->Write(rumbleData, sizeof(rumbleData));

View File

@ -18,16 +18,16 @@ XboxOneAdapter::~XboxOneAdapter()
Exit(); Exit();
} }
Status XboxOneAdapter::Initialize() Result XboxOneAdapter::Initialize()
{ {
Status rc; Result rc;
rc = OpenInterfaces(); rc = OpenInterfaces();
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
rc = SendInitBytes(); rc = SendInitBytes();
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
return rc; return rc;
} }
@ -36,18 +36,18 @@ void XboxOneAdapter::Exit()
CloseInterfaces(); CloseInterfaces();
} }
Status XboxOneAdapter::OpenInterfaces() Result XboxOneAdapter::OpenInterfaces()
{ {
Status rc; Result rc;
rc = m_device->Open(); rc = m_device->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
std::vector<std::unique_ptr<IUSBInterface>> &interfaces = m_device->GetInterfaces(); std::vector<std::unique_ptr<IUSBInterface>> &interfaces = m_device->GetInterfaces();
for (auto &&interface : interfaces) for (auto &&interface : interfaces)
{ {
rc = interface->Open(); rc = interface->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
if (interface->GetDescriptor()->bInterfaceProtocol != 255) if (interface->GetDescriptor()->bInterfaceProtocol != 255)
@ -64,7 +64,7 @@ Status XboxOneAdapter::OpenInterfaces()
if (inEndpoint) if (inEndpoint)
{ {
rc = inEndpoint->Open(); rc = inEndpoint->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return 3333; return 3333;
m_inPipePacket = inEndpoint; m_inPipePacket = inEndpoint;
@ -77,7 +77,7 @@ Status XboxOneAdapter::OpenInterfaces()
if (inEndpoint) if (inEndpoint)
{ {
rc = inEndpoint->Open(); rc = inEndpoint->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return 4444; return 4444;
m_inPipe = inEndpoint; m_inPipe = inEndpoint;
@ -90,7 +90,7 @@ Status XboxOneAdapter::OpenInterfaces()
if (outEndpoint) if (outEndpoint)
{ {
rc = outEndpoint->Open(); rc = outEndpoint->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return 5555; return 5555;
m_outPipe = outEndpoint; m_outPipe = outEndpoint;
@ -110,9 +110,9 @@ void XboxOneAdapter::CloseInterfaces()
m_device->Close(); m_device->Close();
} }
Status XboxOneAdapter::SendInitBytes() Result XboxOneAdapter::SendInitBytes()
{ {
Status rc; Result rc;
DmaConfig config = {}; DmaConfig config = {};
config.rxBulkEnabled = 1; config.rxBulkEnabled = 1;
@ -156,12 +156,12 @@ Status XboxOneAdapter::SendInitBytes()
WriteToLog("Writing 1st part"); WriteToLog("Writing 1st part");
rc = LoadFirmwarePart(MT_MCU_ILM_OFFSET, ilmStart, dlmStart); rc = LoadFirmwarePart(MT_MCU_ILM_OFFSET, ilmStart, dlmStart);
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
WriteToLog("Writing 2nd part"); WriteToLog("Writing 2nd part");
rc = LoadFirmwarePart(MT_MCU_DLM_OFFSET, dlmStart, dlmEnd); rc = LoadFirmwarePart(MT_MCU_DLM_OFFSET, dlmStart, dlmEnd);
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
WriteToLog("Wrote"); WriteToLog("Wrote");
@ -169,10 +169,10 @@ Status XboxOneAdapter::SendInitBytes()
return 0; 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 // Send firmware in chunks
Status rc = -1; Result rc = -1;
for (uint8_t *chunk = start; chunk < end; chunk += MT_FW_CHUNK_SIZE) for (uint8_t *chunk = start; chunk < end; chunk += MT_FW_CHUNK_SIZE)
{ {
uint32_t address = (uint32_t)(offset + chunk - start); 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; 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); rc = ControlWrite(m_interface, MT_FCE_DMA_ADDR, address, MT_VEND_WRITE_CFG);
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
rc = ControlWrite(m_interface, MT_FCE_DMA_LEN, length << 16, MT_VEND_WRITE_CFG); rc = ControlWrite(m_interface, MT_FCE_DMA_LEN, length << 16, MT_VEND_WRITE_CFG);
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
uint8_t data[length + 8]{0x00, 0x38, 0x00, 0x10}; 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)); rc = m_outPipe->Write(data, sizeof(data));
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return 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) if (request == MT_VEND_DEV_MODE)
{ {
rc = interface->ControlTransfer(0x40, request, address, 0, 0, nullptr); rc = interface->ControlTransfer(0x40, request, address, 0, 0, nullptr);

View File

@ -71,16 +71,16 @@ XboxOneController::~XboxOneController()
Exit(); Exit();
} }
Status XboxOneController::Initialize() Result XboxOneController::Initialize()
{ {
Status rc; Result rc;
rc = OpenInterfaces(); rc = OpenInterfaces();
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
rc = SendInitBytes(); rc = SendInitBytes();
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
return rc; return rc;
} }
@ -89,11 +89,11 @@ void XboxOneController::Exit()
CloseInterfaces(); CloseInterfaces();
} }
Status XboxOneController::OpenInterfaces() Result XboxOneController::OpenInterfaces()
{ {
Status rc; Result rc;
rc = m_device->Open(); rc = m_device->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return 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 //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) for (auto &&interface : interfaces)
{ {
rc = interface->Open(); rc = interface->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
if (interface->GetDescriptor()->bInterfaceProtocol != 208) if (interface->GetDescriptor()->bInterfaceProtocol != 208)
@ -118,7 +118,7 @@ Status XboxOneController::OpenInterfaces()
if (inEndpoint) if (inEndpoint)
{ {
rc = inEndpoint->Open(); rc = inEndpoint->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return 5555; return 5555;
m_inPipe = inEndpoint; m_inPipe = inEndpoint;
@ -135,7 +135,7 @@ Status XboxOneController::OpenInterfaces()
if (outEndpoint) if (outEndpoint)
{ {
rc = outEndpoint->Open(); rc = outEndpoint->Open();
if (S_FAILED(rc)) if (R_FAILED(rc))
return 6666; return 6666;
m_outPipe = outEndpoint; m_outPipe = outEndpoint;
@ -156,12 +156,12 @@ void XboxOneController::CloseInterfaces()
m_device->Close(); m_device->Close();
} }
Status XboxOneController::GetInput() Result XboxOneController::GetInput()
{ {
uint8_t input_bytes[64]; 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_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
uint8_t type = input_bytes[0]; uint8_t type = input_bytes[0];
@ -170,7 +170,7 @@ Status XboxOneController::GetInput()
{ {
m_buttonData = *reinterpret_cast<XboxOneButtonData *>(input_bytes); 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]; m_GuidePressed = input_bytes[4];
@ -179,7 +179,7 @@ Status XboxOneController::GetInput()
if (input_bytes[1] == 0x30) if (input_bytes[1] == 0x30)
{ {
rc = WriteAckGuideReport(input_bytes[2]); rc = WriteAckGuideReport(input_bytes[2]);
if (S_FAILED(rc)) if (R_FAILED(rc))
return rc; return rc;
} }
} }
@ -187,9 +187,9 @@ Status XboxOneController::GetInput()
return rc; return rc;
} }
Status XboxOneController::SendInitBytes() Result XboxOneController::SendInitBytes()
{ {
Status rc; Result rc;
uint16_t vendor = m_device->GetVendor(); uint16_t vendor = m_device->GetVendor();
uint16_t product = m_device->GetProduct(); uint16_t product = m_device->GetProduct();
for (int i = 0; i != (sizeof(init_packets) / sizeof(VendorProductPacket)); ++i) for (int i = 0; i != (sizeof(init_packets) / sizeof(VendorProductPacket)); ++i)
@ -200,7 +200,7 @@ Status XboxOneController::SendInitBytes()
continue; continue;
rc = m_outPipe->Write(init_packets[i].Packet, init_packets[i].Length); rc = m_outPipe->Write(init_packets[i].Packet, init_packets[i].Length);
if (S_FAILED(rc)) if (R_FAILED(rc))
break; break;
else else
WriteToLog("Send a specific init packet ", i, " for controller v", vendor, " p", product); WriteToLog("Send a specific init packet ", i, " for controller v", vendor, " p", product);
@ -295,9 +295,9 @@ NormalizedButtonData XboxOneController::GetNormalizedButtonData()
return normalData; return normalData;
} }
Status XboxOneController::WriteAckGuideReport(uint8_t sequence) Result XboxOneController::WriteAckGuideReport(uint8_t sequence)
{ {
Status rc; Result rc;
uint8_t report[] = { uint8_t report[] = {
0x01, 0x20, 0x01, 0x20,
sequence, sequence,
@ -307,7 +307,7 @@ Status XboxOneController::WriteAckGuideReport(uint8_t sequence)
return rc; 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[]{ uint8_t rumble_data[]{
0x09, 0x00, 0x00, 0x09, 0x00, 0x00,

View File

@ -1,6 +1,6 @@
#pragma once #pragma once
#include "IUSBDevice.h"
#include "switch.h" #include "switch.h"
#include "IUSBDevice.h"
#include "SwitchUSBInterface.h" #include "SwitchUSBInterface.h"
#include <vector> #include <vector>

View File

@ -1,6 +1,6 @@
#pragma once #pragma once
#include "IUSBEndpoint.h"
#include "switch.h" #include "switch.h"
#include "IUSBEndpoint.h"
#include <memory> #include <memory>
class SwitchUSBEndpoint : public IUSBEndpoint class SwitchUSBEndpoint : public IUSBEndpoint

View File

@ -1,7 +1,6 @@
#pragma once #pragma once
#include "IUSBInterface.h"
#include "SwitchUSBEndpoint.h" #include "SwitchUSBEndpoint.h"
#include "switch.h" #include "IUSBInterface.h"
#include <memory> #include <memory>
#include <vector> #include <vector>

View File

@ -2,7 +2,6 @@
#include "Controllers.h" #include "Controllers.h"
#include "ControllerConfig.h" #include "ControllerConfig.h"
#include "switch/result.h"
#include <cstring> #include <cstring>
#include <sys/stat.h> #include <sys/stat.h>
#include <array> #include <array>

View File

@ -1,7 +1,6 @@
#include "switch.h" #include "switch.h"
#include "log.h" #include "log.h"
#include "mainLoop.h" #include "mainLoop.h"
#include "log.h"
//ISSUES: //ISSUES:
// when exiting the applet, only one of the controllers is reset // when exiting the applet, only one of the controllers is reset