~aleteoryx/muditaos

5fc2f024db29834e3cc626977547d707afaa3497 — Mateusz Piesta 3 years ago 90ed595
[CP-1560] MTP root path

Make MTP root path configurable.
M module-bsp/board/linux/usb_cdc/usb_cdc.cpp => module-bsp/board/linux/usb_cdc/usb_cdc.cpp +1 -1
@@ 150,7 150,7 @@ namespace bsp
        std::remove(ptsFileName);
    }

    void usbReinit(const char * /*mtpRoot*/)
    void usbReinit(const std::string &)
    {
        LOG_INFO("usbReinit");
    }

M module-bsp/bsp/usb/usb.hpp => module-bsp/bsp/usb/usb.hpp +3 -2
@@ 35,7 35,8 @@ namespace bsp
    {
        xQueueHandle queueHandle;
        xQueueHandle irqQueueHandle;
        const char *serialNumber;
        std::string serialNumber;
        std::string rootPath;
    };

    int usbInit(const usbInitParams &initParams);


@@ 43,7 44,7 @@ namespace bsp
    int usbCDCSend(std::string *sendMsg);
    int usbCDCSendRaw(const char *dataPtr, size_t dataLen);
    void usbDeinit();
    void usbReinit(const char *mtpRoot);
    void usbReinit(const std::string& rootPath);
    void usbSuspend();
    void usbHandleDataReceived();


M module-services/service-desktop/ServiceDesktop.cpp => module-services/service-desktop/ServiceDesktop.cpp +6 -3
@@ 195,8 195,11 @@ auto ServiceDesktop::usbWorkerInit() -> sys::ReturnCodes

    LOG_DEBUG("usbWorkerInit Serial Number: %s", serialNumber.c_str());

    desktopWorker = std::make_unique<WorkerDesktop>(
        this, std::bind(&ServiceDesktop::restartConnectionActiveTimer, this), *usbSecurityModel, serialNumber);
    desktopWorker = std::make_unique<WorkerDesktop>(this,
                                                    std::bind(&ServiceDesktop::restartConnectionActiveTimer, this),
                                                    *usbSecurityModel,
                                                    serialNumber,
                                                    purefs::dir::getUserDiskPath() / "music");

    initialized =
        desktopWorker->init({{sdesktop::RECEIVE_QUEUE_BUFFER_NAME, sizeof(std::string *), sdesktop::cdc_queue_len},


@@ 220,7 223,7 @@ auto ServiceDesktop::usbWorkerDeinit() -> sys::ReturnCodes
        settings->deinit();
        desktopWorker->closeWorker();
        desktopWorker.reset();
        initialized = false;
        initialized     = false;
        isUsbConfigured = false;
    }
    return sys::ReturnCodes::Success;

M module-services/service-desktop/WorkerDesktop.cpp => module-services/service-desktop/WorkerDesktop.cpp +7 -6
@@ 23,9 23,10 @@ inline constexpr auto uploadFailedMessage = "file upload terminated before all d
WorkerDesktop::WorkerDesktop(sys::Service *ownerServicePtr,
                             std::function<void()> messageProcessedCallback,
                             const sdesktop::USBSecurityModel &securityModel,
                             const std::string &serialNumber)
    : sys::Worker(ownerServicePtr, sdesktop::worker_stack), securityModel(securityModel), serialNumber(serialNumber),
      ownerService(ownerServicePtr), parser(ownerServicePtr),
                             const std::string &serialNumber,
                             const std::string &rootPath)
    : sys::Worker(ownerServicePtr, sdesktop::worker_stack), securityModel(securityModel),
      serialNumber(serialNumber), rootPath{rootPath}, ownerService(ownerServicePtr), parser(ownerServicePtr),
      messageProcessedCallback(std::move(messageProcessedCallback))
{}



@@ 45,7 46,7 @@ bool WorkerDesktop::init(std::list<sys::WorkerQueueInfo> queues)
    auto sentinelRegistrationMsg = std::make_shared<sys::SentinelRegistrationMessage>(cpuSentinel);
    ownerService->bus.sendUnicast(sentinelRegistrationMsg, service::name::system_manager);

    bsp::usbInitParams initParams = {receiveQueue, irqQueue, serialNumber.c_str()};
    bsp::usbInitParams initParams = {receiveQueue, irqQueue, serialNumber, rootPath};

    initialized = bsp::usbInit(initParams) >= 0;



@@ 90,7 91,7 @@ bool WorkerDesktop::reinit(const std::filesystem::path &path)
{
    LOG_DEBUG("Reinit USB begin");

    bsp::usbReinit(path.c_str());
    bsp::usbReinit(path);

    LOG_DEBUG("Reinit USB end");
    return true;


@@ 102,7 103,7 @@ void WorkerDesktop::reset()
    usbStatus   = bsp::USBDeviceStatus::Disconnected;
    bsp::usbDeinit();

    bsp::usbInitParams initParams = {receiveQueue, irqQueue, serialNumber.c_str()};
    bsp::usbInitParams initParams = {receiveQueue, irqQueue, serialNumber, rootPath};
    initialized                   = bsp::usbInit(initParams) >= 0;
    if (initialized) {
        usbStatus = bsp::USBDeviceStatus::Connected;

M module-services/service-desktop/WorkerDesktop.hpp => module-services/service-desktop/WorkerDesktop.hpp +3 -1
@@ 22,7 22,8 @@ class WorkerDesktop : public sys::Worker
    WorkerDesktop(sys::Service *ownerServicePtr,
                  std::function<void()> messageProcessedCallback,
                  const sdesktop::USBSecurityModel &securityModel,
                  const std::string &serialNumber);
                  const std::string &serialNumber,
                  const std::string &rootPath);

    virtual bool init(std::list<sys::WorkerQueueInfo> queues) override;
    void closeWorker();


@@ 50,6 51,7 @@ class WorkerDesktop : public sys::Worker
    xQueueHandle irqQueue;
    const sdesktop::USBSecurityModel &securityModel;
    const std::string serialNumber;
    std::string rootPath;
    sys::Service *ownerService = nullptr;
    sdesktop::endpoints::StateMachine parser;
    bsp::USBDeviceStatus usbStatus = bsp::USBDeviceStatus::Disconnected;

M third-party/usb_stack => third-party/usb_stack +1 -1
@@ 1,1 1,1 @@
Subproject commit 2f68b39236f706d9f1dea0789c3869cfcd449b02
Subproject commit 1712d16bacb5a07c2e0a56ee7952e279d290fb47