From c2c58971a7e1b8c9415d4e18fba890a3ccb069dd Mon Sep 17 00:00:00 2001 From: cathery Date: Wed, 13 Nov 2019 14:16:13 +0300 Subject: [PATCH] Use Result type instead of Status --- .../Controllers/Dualshock3Controller.h | 14 +++--- .../Controllers/Dualshock4Controller.h | 10 ++--- .../include/Controllers/Xbox360Controller.h | 12 ++--- .../Controllers/Xbox360WirelessController.h | 18 ++++---- .../include/Controllers/XboxController.h | 8 ++-- .../include/Controllers/XboxOneAdapter.h | 10 ++--- .../include/Controllers/XboxOneController.h | 12 ++--- ControllerUSB/include/IController.h | 10 ++--- ControllerUSB/include/IUSBDevice.h | 4 +- ControllerUSB/include/IUSBEndpoint.h | 8 ++-- ControllerUSB/include/IUSBInterface.h | 8 ++-- ControllerUSB/include/Result.h | 14 ++++++ ControllerUSB/include/Status.h | 10 ----- .../Controllers/Dualshock3Controller.cpp | 32 +++++++------- .../Controllers/Dualshock4Controller.cpp | 30 ++++++------- .../source/Controllers/Xbox360Controller.cpp | 30 ++++++------- .../Controllers/Xbox360WirelessController.cpp | 38 ++++++++-------- .../source/Controllers/XboxController.cpp | 26 +++++------ .../source/Controllers/XboxOneAdapter.cpp | 44 +++++++++---------- .../source/Controllers/XboxOneController.cpp | 42 +++++++++--------- SwitchUSB/include/SwitchUSBDevice.h | 2 +- SwitchUSB/include/SwitchUSBEndpoint.h | 2 +- SwitchUSB/include/SwitchUSBInterface.h | 3 +- source/configFile.cpp | 1 - source/main.cpp | 1 - 25 files changed, 195 insertions(+), 194 deletions(-) create mode 100644 ControllerUSB/include/Result.h delete mode 100644 ControllerUSB/include/Status.h diff --git a/ControllerUSB/include/Controllers/Dualshock3Controller.h b/ControllerUSB/include/Controllers/Dualshock3Controller.h index bdd2ab9..4838ef9 100644 --- a/ControllerUSB/include/Controllers/Dualshock3Controller.h +++ b/ControllerUSB/include/Controllers/Dualshock3Controller.h @@ -132,13 +132,13 @@ public: Dualshock3Controller(std::unique_ptr &&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(); diff --git a/ControllerUSB/include/Controllers/Dualshock4Controller.h b/ControllerUSB/include/Controllers/Dualshock4Controller.h index c758e36..f00abb0 100644 --- a/ControllerUSB/include/Controllers/Dualshock4Controller.h +++ b/ControllerUSB/include/Controllers/Dualshock4Controller.h @@ -113,13 +113,13 @@ public: Dualshock4Controller(std::unique_ptr &&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(); diff --git a/ControllerUSB/include/Controllers/Xbox360Controller.h b/ControllerUSB/include/Controllers/Xbox360Controller.h index 2e5c74e..de61294 100644 --- a/ControllerUSB/include/Controllers/Xbox360Controller.h +++ b/ControllerUSB/include/Controllers/Xbox360Controller.h @@ -92,13 +92,13 @@ public: Xbox360Controller(std::unique_ptr &&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(); diff --git a/ControllerUSB/include/Controllers/Xbox360WirelessController.h b/ControllerUSB/include/Controllers/Xbox360WirelessController.h index 61bf635..3391898 100644 --- a/ControllerUSB/include/Controllers/Xbox360WirelessController.h +++ b/ControllerUSB/include/Controllers/Xbox360WirelessController.h @@ -28,13 +28,13 @@ public: Xbox360WirelessController(std::unique_ptr &&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; } }; \ No newline at end of file diff --git a/ControllerUSB/include/Controllers/XboxController.h b/ControllerUSB/include/Controllers/XboxController.h index 7536f85..3aa33b2 100644 --- a/ControllerUSB/include/Controllers/XboxController.h +++ b/ControllerUSB/include/Controllers/XboxController.h @@ -62,13 +62,13 @@ public: XboxController(std::unique_ptr &&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(); diff --git a/ControllerUSB/include/Controllers/XboxOneAdapter.h b/ControllerUSB/include/Controllers/XboxOneAdapter.h index 0f02406..0369fc9 100644 --- a/ControllerUSB/include/Controllers/XboxOneAdapter.h +++ b/ControllerUSB/include/Controllers/XboxOneAdapter.h @@ -31,17 +31,17 @@ public: XboxOneAdapter(std::unique_ptr &&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(); diff --git a/ControllerUSB/include/Controllers/XboxOneController.h b/ControllerUSB/include/Controllers/XboxOneController.h index 0cc128a..9b4c66d 100644 --- a/ControllerUSB/include/Controllers/XboxOneController.h +++ b/ControllerUSB/include/Controllers/XboxOneController.h @@ -85,13 +85,13 @@ public: XboxOneController(std::unique_ptr &&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(); diff --git a/ControllerUSB/include/IController.h b/ControllerUSB/include/IController.h index f7673a4..b3668da 100644 --- a/ControllerUSB/include/IController.h +++ b/ControllerUSB/include/IController.h @@ -23,21 +23,21 @@ public: IController(std::unique_ptr &&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; } }; \ No newline at end of file diff --git a/ControllerUSB/include/IUSBDevice.h b/ControllerUSB/include/IUSBDevice.h index b22052a..4261fc2 100644 --- a/ControllerUSB/include/IUSBDevice.h +++ b/ControllerUSB/include/IUSBDevice.h @@ -1,6 +1,6 @@ #pragma once #include -#include "Status.h" +#include "Result.h" #include "IUSBInterface.h" #include #include @@ -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. diff --git a/ControllerUSB/include/IUSBEndpoint.h b/ControllerUSB/include/IUSBEndpoint.h index 30795d5..a849cde 100644 --- a/ControllerUSB/include/IUSBEndpoint.h +++ b/ControllerUSB/include/IUSBEndpoint.h @@ -1,5 +1,5 @@ #pragma once -#include "Status.h" +#include "Result.h" #include 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; diff --git a/ControllerUSB/include/IUSBInterface.h b/ControllerUSB/include/IUSBInterface.h index 66464a6..d7e7022 100644 --- a/ControllerUSB/include/IUSBInterface.h +++ b/ControllerUSB/include/IUSBInterface.h @@ -1,5 +1,5 @@ #pragma once -#include "Status.h" +#include "Result.h" #include "IUSBEndpoint.h" #include @@ -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; }; \ No newline at end of file diff --git a/ControllerUSB/include/Result.h b/ControllerUSB/include/Result.h new file mode 100644 index 0000000..d609d70 --- /dev/null +++ b/ControllerUSB/include/Result.h @@ -0,0 +1,14 @@ +#pragma once +#include + +//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 \ No newline at end of file diff --git a/ControllerUSB/include/Status.h b/ControllerUSB/include/Status.h deleted file mode 100644 index e3fbe0a..0000000 --- a/ControllerUSB/include/Status.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once -#include - -//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) \ No newline at end of file diff --git a/ControllerUSB/source/Controllers/Dualshock3Controller.cpp b/ControllerUSB/source/Controllers/Dualshock3Controller.cpp index fe2847e..8084acc 100644 --- a/ControllerUSB/source/Controllers/Dualshock3Controller.cpp +++ b/ControllerUSB/source/Controllers/Dualshock3Controller.cpp @@ -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(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, diff --git a/ControllerUSB/source/Controllers/Dualshock4Controller.cpp b/ControllerUSB/source/Controllers/Dualshock4Controller.cpp index d70d4f3..12f9a3d 100644 --- a/ControllerUSB/source/Controllers/Dualshock4Controller.cpp +++ b/ControllerUSB/source/Controllers/Dualshock4Controller.cpp @@ -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(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; /* diff --git a/ControllerUSB/source/Controllers/Xbox360Controller.cpp b/ControllerUSB/source/Controllers/Xbox360Controller.cpp index 36fe93b..6d46a3d 100644 --- a/ControllerUSB/source/Controllers/Xbox360Controller.cpp +++ b/ControllerUSB/source/Controllers/Xbox360Controller.cpp @@ -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(value)}; return m_outPipe->Write(ledPacket, sizeof(ledPacket)); diff --git a/ControllerUSB/source/Controllers/Xbox360WirelessController.cpp b/ControllerUSB/source/Controllers/Xbox360WirelessController.cpp index 017c20d..f32dcfd 100644 --- a/ControllerUSB/source/Controllers/Xbox360WirelessController.cpp +++ b/ControllerUSB/source/Controllers/Xbox360WirelessController.cpp @@ -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(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); diff --git a/ControllerUSB/source/Controllers/XboxController.cpp b/ControllerUSB/source/Controllers/XboxController.cpp index 2e77d75..2e4563d 100644 --- a/ControllerUSB/source/Controllers/XboxController.cpp +++ b/ControllerUSB/source/Controllers/XboxController.cpp @@ -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(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)); diff --git a/ControllerUSB/source/Controllers/XboxOneAdapter.cpp b/ControllerUSB/source/Controllers/XboxOneAdapter.cpp index ccd0d2e..d6405cb 100644 --- a/ControllerUSB/source/Controllers/XboxOneAdapter.cpp +++ b/ControllerUSB/source/Controllers/XboxOneAdapter.cpp @@ -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> &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); diff --git a/ControllerUSB/source/Controllers/XboxOneController.cpp b/ControllerUSB/source/Controllers/XboxOneController.cpp index d2370c8..5299e8b 100644 --- a/ControllerUSB/source/Controllers/XboxOneController.cpp +++ b/ControllerUSB/source/Controllers/XboxOneController.cpp @@ -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(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, diff --git a/SwitchUSB/include/SwitchUSBDevice.h b/SwitchUSB/include/SwitchUSBDevice.h index b11fe78..ab6d783 100644 --- a/SwitchUSB/include/SwitchUSBDevice.h +++ b/SwitchUSB/include/SwitchUSBDevice.h @@ -1,6 +1,6 @@ #pragma once -#include "IUSBDevice.h" #include "switch.h" +#include "IUSBDevice.h" #include "SwitchUSBInterface.h" #include diff --git a/SwitchUSB/include/SwitchUSBEndpoint.h b/SwitchUSB/include/SwitchUSBEndpoint.h index 04b9316..6457b3c 100644 --- a/SwitchUSB/include/SwitchUSBEndpoint.h +++ b/SwitchUSB/include/SwitchUSBEndpoint.h @@ -1,6 +1,6 @@ #pragma once -#include "IUSBEndpoint.h" #include "switch.h" +#include "IUSBEndpoint.h" #include class SwitchUSBEndpoint : public IUSBEndpoint diff --git a/SwitchUSB/include/SwitchUSBInterface.h b/SwitchUSB/include/SwitchUSBInterface.h index 73804d1..c2211cb 100644 --- a/SwitchUSB/include/SwitchUSBInterface.h +++ b/SwitchUSB/include/SwitchUSBInterface.h @@ -1,7 +1,6 @@ #pragma once -#include "IUSBInterface.h" #include "SwitchUSBEndpoint.h" -#include "switch.h" +#include "IUSBInterface.h" #include #include diff --git a/source/configFile.cpp b/source/configFile.cpp index f4320e1..cf4cbfc 100644 --- a/source/configFile.cpp +++ b/source/configFile.cpp @@ -2,7 +2,6 @@ #include "Controllers.h" #include "ControllerConfig.h" -#include "switch/result.h" #include #include #include diff --git a/source/main.cpp b/source/main.cpp index cf1637a..c2830b4 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -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