~aleteoryx/muditaos

1a66e73b78c6535829ee6ab180ff5e5c5892e343 — Wojtek Rzepecki 4 years ago 9e27416
[BH-1167] USB async receive

Polling routine replaced with event driven
implementation for USB receive
M module-bsp/board/linux/usb_cdc/usb_cdc.cpp => module-bsp/board/linux/usb_cdc/usb_cdc.cpp +3 -0
@@ 220,4 220,7 @@ namespace bsp

        return 0;
    }

    void usbHandleDataReceived()
    {}
} // namespace bsp

M module-bsp/bsp/usb/usb.hpp => module-bsp/bsp/usb/usb.hpp +3 -1
@@ 26,7 26,8 @@ namespace bsp
    {
        Disconnected,
        Connected,
        Configured
        Configured,
        DataReceived,
    };

    struct usbInitParams


@@ 43,5 44,6 @@ namespace bsp
    void usbDeinit();
    void usbReinit(const char *mtpRoot);
    void usbSuspend();
    void usbHandleDataReceived();

} // namespace bsp

M module-services/service-desktop/WorkerDesktop.cpp => module-services/service-desktop/WorkerDesktop.cpp +6 -1
@@ 148,6 148,7 @@ bool WorkerDesktop::handleMessage(uint32_t queueID)
            usbSuspendTimer.stop();
            ownerService->bus.sendUnicast(std::make_shared<sdesktop::usb::USBConnected>(),
                                          service::name::service_desktop);
            usbStatus = bsp::USBDeviceStatus::Connected;
        }
        else if (notification == bsp::USBDeviceStatus::Configured) {
            cpuSentinel->HoldMinimumFrequency(bsp::CpuFrequencyHz::Level_4);


@@ 161,14 162,18 @@ bool WorkerDesktop::handleMessage(uint32_t queueID)
                                                  sdesktop::usb::USBConfigurationType::reconfiguration),
                                              service::name::service_desktop);
            }
            usbStatus = bsp::USBDeviceStatus::Configured;
        }
        else if (notification == bsp::USBDeviceStatus::Disconnected) {
            usbSuspendTimer.start();
            cpuSentinel->ReleaseMinimumFrequency();
            ownerService->bus.sendUnicast(std::make_shared<sdesktop::usb::USBDisconnected>(),
                                          service::name::service_desktop);
            usbStatus = bsp::USBDeviceStatus::Disconnected;
        }
        else if (notification == bsp::USBDeviceStatus::DataReceived) {
            bsp::usbHandleDataReceived();
        }
        usbStatus = notification;
    }
    else {
        LOG_INFO("handeMessage got message on an unhandled queue");

M third-party/usb_stack => third-party/usb_stack +1 -1
@@ 1,1 1,1 @@
Subproject commit 4b996eadb9ee27f0d0a26bb06e5c1587e8102a22
Subproject commit 60799ac591164bf2a85e1ad054e9ce937c05d2a8