From 01d20c0c46a121e876139ba59d4242c669c4ad61 Mon Sep 17 00:00:00 2001 From: cathery Date: Sun, 10 Nov 2019 00:02:30 +0300 Subject: [PATCH] Xbox360W: add wrapper function to endpoint write --- .../Controllers/Xbox360WirelessController.h | 4 +++- .../Controllers/Xbox360WirelessController.cpp | 18 +++++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/ControllerUSB/include/Controllers/Xbox360WirelessController.h b/ControllerUSB/include/Controllers/Xbox360WirelessController.h index bdf701d..61bf635 100644 --- a/ControllerUSB/include/Controllers/Xbox360WirelessController.h +++ b/ControllerUSB/include/Controllers/Xbox360WirelessController.h @@ -54,7 +54,9 @@ public: static void LoadConfig(const ControllerConfig *config); virtual ControllerConfig *GetConfig(); - Status OutputBuffer(); + Status WriteToEndpoint(const uint8_t *buffer, size_t size); + + virtual Status OutputBuffer(); bool IsControllerActive() override { return m_presence; } }; \ No newline at end of file diff --git a/ControllerUSB/source/Controllers/Xbox360WirelessController.cpp b/ControllerUSB/source/Controllers/Xbox360WirelessController.cpp index 6b6b0c1..017c20d 100644 --- a/ControllerUSB/source/Controllers/Xbox360WirelessController.cpp +++ b/ControllerUSB/source/Controllers/Xbox360WirelessController.cpp @@ -26,13 +26,12 @@ Status Xbox360WirelessController::Initialize() rc = OpenInterfaces(); if (S_FAILED(rc)) return rc; - /* - rc = m_outPipe->Write(reconnectPacket, sizeof(reconnectPacket)); + + rc = WriteToEndpoint(reconnectPacket, sizeof(reconnectPacket)); if (S_FAILED(rc)) return rc; SetLED(XBOX360LED_TOPLEFT); - */ return rc; } void Xbox360WirelessController::Exit() @@ -104,7 +103,7 @@ Status Xbox360WirelessController::OpenInterfaces() void Xbox360WirelessController::CloseInterfaces() { if (m_presence) - m_outPipe->Write(poweroffPacket, sizeof(poweroffPacket)); + WriteToEndpoint(poweroffPacket, sizeof(poweroffPacket)); //m_device->Reset(); m_device->Close(); @@ -234,13 +233,13 @@ NormalizedButtonData Xbox360WirelessController::GetNormalizedButtonData() Status 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 m_outPipe->Write(rumbleData, sizeof(rumbleData)); + return WriteToEndpoint(rumbleData, sizeof(rumbleData)); } Status Xbox360WirelessController::SetLED(Xbox360LEDValue value) { uint8_t customLEDPacket[]{0x00, 0x00, 0x08, static_cast(value | 0x40), 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - return m_outPipe->Write(customLEDPacket, sizeof(customLEDPacket)); + return WriteToEndpoint(customLEDPacket, sizeof(customLEDPacket)); } void Xbox360WirelessController::LoadConfig(const ControllerConfig *config) @@ -267,6 +266,11 @@ Status Xbox360WirelessController::OnControllerDisconnect() return 0; } +Status Xbox360WirelessController::WriteToEndpoint(const uint8_t *buffer, size_t size) +{ + return m_outPipe->Write(buffer, size); +} + Status Xbox360WirelessController::OutputBuffer() { if (m_outputBuffer.empty()) @@ -274,7 +278,7 @@ Status Xbox360WirelessController::OutputBuffer() Status rc; auto it = m_outputBuffer.begin(); - rc = m_outPipe->Write(it->packet, it->length); + rc = WriteToEndpoint(it->packet, it->length); m_outputBuffer.erase(it); return rc;