From 8937ae5e05e64c884b9f8d0736628a596bba6728 Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Mon, 22 Feb 2021 08:17:49 -0500 Subject: [PATCH] Single controller patch --- controller/controller.cpp | 6 ++++++ controller/controller.h | 1 + dongle/dongle.cpp | 13 +++++++++---- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/controller/controller.cpp b/controller/controller.cpp index d138e0c..83640ea 100644 --- a/controller/controller.cpp +++ b/controller/controller.cpp @@ -171,6 +171,12 @@ void Controller::initInput(const AnnounceData *announce) return; } + if (initialized) { + Log::info("HACK: Skip initialization because of reute"); + return; + } + initialized = true; + InputDevice::AxisConfig stickConfig = {}; // 16 bits (signed) for the sticks diff --git a/controller/controller.h b/controller/controller.h index 5486895..cd11853 100644 --- a/controller/controller.h +++ b/controller/controller.h @@ -52,4 +52,5 @@ private: InputDevice inputDevice; uint8_t batteryLevel = 0xff; + bool initialized = false; }; diff --git a/dongle/dongle.cpp b/dongle/dongle.cpp index b931ff8..5c5305e 100644 --- a/dongle/dongle.cpp +++ b/dongle/dongle.cpp @@ -72,9 +72,13 @@ void Dongle::handleControllerConnect(Bytes address) std::placeholders::_1 ); - controllers[wcid - 1].reset(new Controller(sendPacket)); - - Log::info("Controller '%d' connected", wcid); + if (controllers[wcid - 1] == nullptr) + { + controllers[wcid - 1].reset(new Controller(sendPacket)); + Log::info("Controller '%d' connected", wcid); + } else { + Log::info("Controller '%d' connected (re-attached)", wcid); + } } void Dongle::handleControllerDisconnect(uint8_t wcid) @@ -93,7 +97,8 @@ void Dongle::handleControllerDisconnect(uint8_t wcid) return; } - controllers[wcid - 1].reset(); + // QQQ: Figure out how to flag protect this. + // controllers[wcid - 1].reset(); if (!removeClient(wcid)) { -- 2.29.2