From da838b8c8fdd7d6154edb74872803ddfb923b6f0 Mon Sep 17 00:00:00 2001 From: Lefucjusz Date: Thu, 1 Jun 2023 19:52:37 +0200 Subject: [PATCH] [BH-1706] Fix inaccessible MTP on Harmony Fix of the issue that Harmony's MTP was constantly locked after MOS-686 fix, as the mechanics of unlocking was not handled for Harmony at all. --- module-bsp/bsp/usb/usb.hpp | 1 + .../service-desktop/ServiceDesktop.cpp | 2 +- .../service-desktop/WorkerDesktop.cpp | 20 ++++++++++++++----- .../service-desktop/WorkerDesktop.hpp | 1 - third-party/usb_stack | 2 +- 5 files changed, 18 insertions(+), 8 deletions(-) diff --git a/module-bsp/bsp/usb/usb.hpp b/module-bsp/bsp/usb/usb.hpp index d53594efbad9be08d0e40d4f064032b43d7e5f82..604dba08f1bf65353e7b92c73f3bd52695ad36f6 100644 --- a/module-bsp/bsp/usb/usb.hpp +++ b/module-bsp/bsp/usb/usb.hpp @@ -38,6 +38,7 @@ namespace bsp std::string serialNumber; std::uint16_t deviceVersion; std::string rootPath; + bool mtpLockedAtInit; }; int usbInit(const usbInitParams &initParams); diff --git a/module-services/service-desktop/ServiceDesktop.cpp b/module-services/service-desktop/ServiceDesktop.cpp index ed64c9557da214df4db52acdfd5f5ab75c6f2a04..312bc50bc2ee0bfa0392b5d0b3afada5c4ba5467 100644 --- a/module-services/service-desktop/ServiceDesktop.cpp +++ b/module-services/service-desktop/ServiceDesktop.cpp @@ -172,9 +172,9 @@ auto ServiceDesktop::usbWorkerInit() -> sys::ReturnCodes if (initialized) { return sys::ReturnCodes::Success; } + auto serialNumber = getSerialNumber(); auto caseColour = getCaseColour(); - LOG_DEBUG("usbWorkerInit Serial Number: %s, Case Colour: %s", serialNumber.c_str(), caseColour.c_str()); desktopWorker = std::make_unique(this, diff --git a/module-services/service-desktop/WorkerDesktop.cpp b/module-services/service-desktop/WorkerDesktop.cpp index 0a30ccba85ba0dbb07ad3bd6046d9a050256237e..ad66f06178f9aa03702d309d12306a9863c1e32a 100644 --- a/module-services/service-desktop/WorkerDesktop.cpp +++ b/module-services/service-desktop/WorkerDesktop.cpp @@ -48,8 +48,12 @@ bool WorkerDesktop::init(std::list queues) auto sentinelRegistrationMsg = std::make_shared(cpuSentinel); ownerService->bus.sendUnicast(sentinelRegistrationMsg, service::name::system_manager); - const bsp::usbInitParams initParams = { - receiveQueue, irqQueue, serialNumber, device_colour::getColourVersion(caseColour), rootPath}; + const bsp::usbInitParams initParams = {receiveQueue, + irqQueue, + serialNumber, + device_colour::getColourVersion(caseColour), + rootPath, + securityModel.isSecurityEnabled()}; initialized = bsp::usbInit(initParams) == 0; @@ -96,9 +100,15 @@ void WorkerDesktop::reset() usbStatus = bsp::USBDeviceStatus::Disconnected; bsp::usbDeinit(); - bsp::usbInitParams initParams = { - receiveQueue, irqQueue, serialNumber, device_colour::getColourVersion(caseColour), rootPath}; - initialized = bsp::usbInit(initParams) >= 0; + const bsp::usbInitParams initParams = {receiveQueue, + irqQueue, + serialNumber, + device_colour::getColourVersion(caseColour), + rootPath, + securityModel.isSecurityEnabled()}; + + initialized = bsp::usbInit(initParams) == 0; + if (initialized) { usbStatus = bsp::USBDeviceStatus::Connected; ownerService->bus.sendMulticast(std::make_shared(), diff --git a/module-services/service-desktop/WorkerDesktop.hpp b/module-services/service-desktop/WorkerDesktop.hpp index 29d646b0384056a35fbf27c28d9e2bf72aeaa95d..53ac4f77c0ddc2c3c63acbb76251744c6c2c6734 100644 --- a/module-services/service-desktop/WorkerDesktop.hpp +++ b/module-services/service-desktop/WorkerDesktop.hpp @@ -44,7 +44,6 @@ class WorkerDesktop : public sys::Worker private: void reset(); - void suspendUsb(); bool handleReceiveQueueMessage(std::shared_ptr &queue); bool handleSendQueueMessage(std::shared_ptr &queue); diff --git a/third-party/usb_stack b/third-party/usb_stack index 262386626b4135a8809bedfdce46202c2bbcd712..66264940da90314542d3e4087e88d1f57992628f 160000 --- a/third-party/usb_stack +++ b/third-party/usb_stack @@ -1 +1 @@ -Subproject commit 262386626b4135a8809bedfdce46202c2bbcd712 +Subproject commit 66264940da90314542d3e4087e88d1f57992628f