~aleteoryx/muditaos

bf06b5bad8849237fdfcf6eff5492a8c893b6f5a — Marek Niepieklo 4 years ago dc96b90
[CP-206] Report Pure serial number in USB descriptors

Added serial number to USB device descriptor
M module-bsp/board/linux/usb_cdc/usb_cdc.cpp => module-bsp/board/linux/usb_cdc/usb_cdc.cpp +3 -3
@@ 160,7 160,7 @@ namespace bsp
        LOG_INFO("usbSuspend");
    }

    int usbInit(xQueueHandle receiveQueue, xQueueHandle irqQueue, USBDeviceListener *)
    int usbInit(const bsp::usbInitParams &initParams)
    {

        fd = 0;


@@ 203,8 203,8 @@ namespace bsp
        tcsetattr(fd, TCSANOW, &newtio);

        xTaskHandle taskHandleReceive;
        USBReceiveQueue = receiveQueue;
        USBIrqQueue     = irqQueue;
        USBReceiveQueue = initParams.queueHandle;
        USBIrqQueue     = initParams.irqQueueHandle;

        BaseType_t task_error = xTaskCreate(&bsp::usbDeviceTask,
                                            "USBLinuxReceive",

M module-bsp/board/rt1051/bsp/usb => module-bsp/board/rt1051/bsp/usb +1 -1
@@ 1,1 1,1 @@
Subproject commit 6ca41ce836f160f2253b7d9527124306bd1f9ca1
Subproject commit a2c9e2d9ab20427cd8675c7eccd2a12a0fd40ccb

M module-bsp/bsp/usb/usb.hpp => module-bsp/bsp/usb/usb.hpp +8 -1
@@ 39,7 39,14 @@ namespace bsp
        virtual void rawDataReceived(void *dataPtr, uint32_t dataLen) = 0;
    };

    int usbInit(xQueueHandle, xQueueHandle, USBDeviceListener *deviceListener = nullptr);
    struct usbInitParams {
        xQueueHandle queueHandle;
        xQueueHandle irqQueueHandle;
        USBDeviceListener *deviceListener;
        const char *serialNumber;
    };

    int usbInit(const usbInitParams &initParams);
    int usbCDCReceive(void *ptr);
    int usbCDCSend(std::string *sendMsg);
    int usbCDCSendRaw(const char *dataPtr, size_t dataLen);

M module-services/service-desktop/ServiceDesktop.cpp => module-services/service-desktop/ServiceDesktop.cpp +12 -1
@@ 77,13 77,24 @@ ServiceDesktop::~ServiceDesktop()
    LOG_INFO("[ServiceDesktop] Cleaning resources");
}

auto ServiceDesktop::getSerialNumber() const -> std::string
{
    return settings->getValue(std::string("factory_data/serial"), settings::SettingsScope::Global);
}

sys::ReturnCodes ServiceDesktop::InitHandler()
{

    settings = std::make_unique<settings::Settings>();
    settings->init(service::ServiceProxy(shared_from_this()));
    usbSecurityModel = std::make_unique<sdesktop::USBSecurityModel>(this, settings.get());
    desktopWorker = std::make_unique<WorkerDesktop>(this, *usbSecurityModel.get());

    auto serialNumber = getSerialNumber();

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

    desktopWorker = std::make_unique<WorkerDesktop>(this, *usbSecurityModel.get(), serialNumber);

    const bool ret =
        desktopWorker->init({{sdesktop::RECEIVE_QUEUE_BUFFER_NAME, sizeof(std::string *), sdesktop::cdc_queue_len},
                             {sdesktop::SEND_QUEUE_BUFFER_NAME, sizeof(std::string *), sdesktop::cdc_queue_object_size},

M module-services/service-desktop/WorkerDesktop.cpp => module-services/service-desktop/WorkerDesktop.cpp +7 -3
@@ 21,9 21,11 @@

inline constexpr auto uploadFailedMessage = "file upload terminated before all data transferred";

WorkerDesktop::WorkerDesktop(sys::Service *ownerServicePtr, const sdesktop::USBSecurityModel &securityModel)
WorkerDesktop::WorkerDesktop(sys::Service *ownerServicePtr,
                             const sdesktop::USBSecurityModel &securityModel,
                             const std::string serialNumber)
    : sys::Worker(ownerServicePtr, sdesktop::worker_stack), fileDes(nullptr), securityModel(securityModel),
      ownerService(ownerServicePtr), parser(ownerServicePtr)
      serialNumber(serialNumber), ownerService(ownerServicePtr), parser(ownerServicePtr)
{}

bool WorkerDesktop::init(std::list<sys::WorkerQueueInfo> queues)


@@ 41,7 43,9 @@ bool WorkerDesktop::init(std::list<sys::WorkerQueueInfo> queues)
    usbSuspendTimer = sys::TimerFactory::createSingleShotTimer(
        ownerService, "usbSuspend", constants::usbSuspendTimeout, [this](sys::Timer &) { suspendUsb(); });

    return (bsp::usbInit(receiveQueue, irqQueue, this) < 0) ? false : true;
    bsp::usbInitParams initParams = {receiveQueue, irqQueue, this, serialNumber.c_str()};

    return (bsp::usbInit(initParams) < 0) ? false : true;
}

bool WorkerDesktop::deinit(void)

M module-services/service-desktop/service-desktop/ServiceDesktop.hpp => module-services/service-desktop/service-desktop/ServiceDesktop.hpp +1 -0
@@ 110,6 110,7 @@ class ServiceDesktop : public sys::Service
    }

  private:
    auto getSerialNumber() const -> std::string;
    std::unique_ptr<sdesktop::USBSecurityModel> usbSecurityModel;
    std::unique_ptr<settings::Settings> settings;
    sys::TimerHandle transferTimer;

M module-services/service-desktop/service-desktop/WorkerDesktop.hpp => module-services/service-desktop/service-desktop/WorkerDesktop.hpp +4 -1
@@ 32,7 32,9 @@ class WorkerDesktop : public sys::Worker, public bsp::USBDeviceListener
        CancelTransfer,
    };

    WorkerDesktop(sys::Service *ownerServicePtr, const sdesktop::USBSecurityModel &securityModel);
    WorkerDesktop(sys::Service *ownerServicePtr,
                  const sdesktop::USBSecurityModel &securityModel,
                  const std::string serialNumber);

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


@@ 73,6 75,7 @@ class WorkerDesktop : public sys::Worker, public bsp::USBDeviceListener
    std::filesystem::path filePath;
    std::atomic<bool> rawModeEnabled = false;
    const sdesktop::USBSecurityModel &securityModel;
    const std::string serialNumber;
    sys::Service *ownerService = nullptr;
    parserFSM::StateMachine parser;
    sys::TimerHandle usbSuspendTimer;