~aleteoryx/muditaos

14d4ce8220bc55e9b19a128b4b7d18f4d3645cba — Wojtek Rzepecki 4 years ago 92f028d
[EGD-6615] Fix tethering repeated notification

Repair of repeated tethering notification
after disconnection.
M module-services/service-desktop/DesktopMessages.cpp => module-services/service-desktop/DesktopMessages.cpp +12 -0
@@ 40,4 40,16 @@ namespace sdesktop
        }
    } // namespace developerMode

    namespace usb
    {
        USBConfigured::USBConfigured(USBConfigurationType configurationType)
            : sys::DataMessage(MessageType::USBConfigured), configurationType(configurationType)
        {}

        USBConfigurationType USBConfigured::getConfigurationType() const noexcept
        {
            return configurationType;
        }
    } // namespace usb

} // namespace sdesktop

M module-services/service-desktop/ServiceDesktop.cpp => module-services/service-desktop/ServiceDesktop.cpp +5 -2
@@ 211,8 211,11 @@ sys::ReturnCodes ServiceDesktop::InitHandler()
    });

    connect(sdesktop::usb::USBConfigured(), [&](sys::Message *msg) {
        bus.sendUnicast(std::make_shared<sys::TetheringStateRequest>(sys::phone_modes::Tethering::On),
                        service::name::system_manager);
        auto message = static_cast<sdesktop::usb::USBConfigured *>(msg);
        if (message->getConfigurationType() == sdesktop::usb::USBConfigurationType::firstConfiguration) {
            bus.sendUnicast(std::make_shared<sys::TetheringStateRequest>(sys::phone_modes::Tethering::On),
                            service::name::system_manager);
        }

        if (!usbSecurityModel->isSecurityEnabled()) {
            LOG_INFO("Endpoint security disabled.");

M module-services/service-desktop/WorkerDesktop.cpp => module-services/service-desktop/WorkerDesktop.cpp +11 -2
@@ 134,8 134,16 @@ bool WorkerDesktop::handleMessage(uint32_t queueID)
        }
        else if (notification == bsp::USBDeviceStatus::Configured) {
            cpuSentinel->HoldMinimumFrequency(bsp::CpuFrequencyHz::Level_4);
            ownerService->bus.sendUnicast(std::make_shared<sdesktop::usb::USBConfigured>(),
                                          service::name::service_desktop);
            if (usbStatus == bsp::USBDeviceStatus::Connected) {
                ownerService->bus.sendUnicast(std::make_shared<sdesktop::usb::USBConfigured>(
                                                  sdesktop::usb::USBConfigurationType::firstConfiguration),
                                              service::name::service_desktop);
            }
            else {
                ownerService->bus.sendUnicast(std::make_shared<sdesktop::usb::USBConfigured>(
                                                  sdesktop::usb::USBConfigurationType::reconfiguration),
                                              service::name::service_desktop);
            }
        }
        else if (notification == bsp::USBDeviceStatus::Disconnected) {
            usbSuspendTimer.start();


@@ 143,6 151,7 @@ bool WorkerDesktop::handleMessage(uint32_t queueID)
            ownerService->bus.sendUnicast(std::make_shared<sdesktop::usb::USBDisconnected>(),
                                          service::name::service_desktop);
        }
        usbStatus = notification;
    }
    else {
        LOG_INFO("handeMessage got message on an unhandled queue");

M module-services/service-desktop/service-desktop/DesktopMessages.hpp => module-services/service-desktop/service-desktop/DesktopMessages.hpp +12 -2
@@ 72,6 72,12 @@ namespace sdesktop

    namespace usb
    {
        enum class USBConfigurationType
        {
            firstConfiguration,
            reconfiguration
        };

        class USBConnected : public sys::DataMessage
        {
          public:


@@ 83,9 89,13 @@ namespace sdesktop
        class USBConfigured : public sys::DataMessage
        {
          public:
            USBConfigured() : sys::DataMessage(MessageType::USBConfigured)
            {}
            explicit USBConfigured(
                USBConfigurationType configurationType = sdesktop::usb::USBConfigurationType::firstConfiguration);
            ~USBConfigured() override = default;
            USBConfigurationType getConfigurationType() const noexcept;

          private:
            USBConfigurationType configurationType;
        };

        class USBDisconnected : public sys::DataMessage

M module-services/service-desktop/service-desktop/WorkerDesktop.hpp => module-services/service-desktop/service-desktop/WorkerDesktop.hpp +1 -0
@@ 76,6 76,7 @@ class WorkerDesktop : public sys::Worker, public bsp::USBDeviceListener
    sys::Service *ownerService = nullptr;
    parserFSM::StateMachine parser;
    sys::TimerHandle usbSuspendTimer;
    bsp::USBDeviceStatus usbStatus = bsp::USBDeviceStatus::Disconnected;

    std::shared_ptr<sys::CpuSentinel> cpuSentinel;
};