~aleteoryx/muditaos

da838b8c8fdd7d6154edb74872803ddfb923b6f0 — Lefucjusz 2 years ago 4ae3d9e
[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.
M module-bsp/bsp/usb/usb.hpp => module-bsp/bsp/usb/usb.hpp +1 -0
@@ 38,6 38,7 @@ namespace bsp
        std::string serialNumber;
        std::uint16_t deviceVersion;
        std::string rootPath;
        bool mtpLockedAtInit;
    };

    int usbInit(const usbInitParams &initParams);

M module-services/service-desktop/ServiceDesktop.cpp => module-services/service-desktop/ServiceDesktop.cpp +1 -1
@@ 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<WorkerDesktop>(this,

M module-services/service-desktop/WorkerDesktop.cpp => module-services/service-desktop/WorkerDesktop.cpp +15 -5
@@ 48,8 48,12 @@ bool WorkerDesktop::init(std::list<sys::WorkerQueueInfo> queues)
    auto sentinelRegistrationMsg = std::make_shared<sys::SentinelRegistrationMessage>(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<sdesktop::usb::USBConnected>(),

M module-services/service-desktop/WorkerDesktop.hpp => module-services/service-desktop/WorkerDesktop.hpp +0 -1
@@ 44,7 44,6 @@ class WorkerDesktop : public sys::Worker

  private:
    void reset();
    void suspendUsb();

    bool handleReceiveQueueMessage(std::shared_ptr<sys::WorkerQueue> &queue);
    bool handleSendQueueMessage(std::shared_ptr<sys::WorkerQueue> &queue);

M third-party/usb_stack => third-party/usb_stack +1 -1
@@ 1,1 1,1 @@
Subproject commit 262386626b4135a8809bedfdce46202c2bbcd712
Subproject commit 66264940da90314542d3e4087e88d1f57992628f