M module-services/service-desktop/WorkerDesktop.cpp => module-services/service-desktop/WorkerDesktop.cpp +7 -9
@@ 47,13 47,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);
- usbSuspendTimer = sys::TimerFactory::createSingleShotTimer(
- ownerService, "usbSuspend", constants::usbSuspendTimeout, [this](sys::Timer &) { suspendUsb(); });
-
bsp::usbInitParams initParams = {receiveQueue, irqQueue, serialNumber.c_str()};
initialized = bsp::usbInit(initParams) >= 0;
+ cpuSentinel->HoldMinimumFrequency(bsp::CpuFrequencyMHz::Level_4);
+
return initialized;
}
@@ 76,11 75,14 @@ void WorkerDesktop::closeWorker(void)
this->close();
+ cpuSentinel->ReleaseMinimumFrequency();
auto sentinelRemoveMsg = std::make_shared<sys::SentinelRemovalMessage>("WorkerDesktop");
- ownerService->bus.sendUnicast(sentinelRemoveMsg, service::name::system_manager);
+ auto result = ownerService->bus.sendUnicastSync(sentinelRemoveMsg, service::name::system_manager, 1000);
+ if (result.first != sys::ReturnCodes::Success) {
+ LOG_ERROR("Sentinel %s could not be removed!", cpuSentinel->GetName().c_str());
+ }
cpuSentinel.reset();
- usbSuspendTimer.reset();
LOG_DEBUG("deinit end");
initialized = false;
}
@@ 151,13 153,11 @@ bool WorkerDesktop::handleMessage(uint32_t queueID)
LOG_DEBUG("USB status: %d", static_cast<int>(notification));
if (notification == bsp::USBDeviceStatus::Connected) {
- usbSuspendTimer.stop();
ownerService->bus.sendMulticast(std::make_shared<sdesktop::usb::USBConnected>(),
sys::BusChannel::USBNotifications);
usbStatus = bsp::USBDeviceStatus::Connected;
}
else if (notification == bsp::USBDeviceStatus::Configured) {
- cpuSentinel->HoldMinimumFrequency(bsp::CpuFrequencyMHz::Level_4);
if (usbStatus == bsp::USBDeviceStatus::Connected) {
ownerService->bus.sendUnicast(std::make_shared<sdesktop::usb::USBConfigured>(
sdesktop::usb::USBConfigurationType::firstConfiguration),
@@ 171,8 171,6 @@ bool WorkerDesktop::handleMessage(uint32_t queueID)
usbStatus = bsp::USBDeviceStatus::Configured;
}
else if (notification == bsp::USBDeviceStatus::Disconnected) {
- usbSuspendTimer.start();
- cpuSentinel->ReleaseMinimumFrequency();
ownerService->bus.sendMulticast(std::make_shared<sdesktop::usb::USBDisconnected>(),
sys::BusChannel::USBNotifications);
usbStatus = bsp::USBDeviceStatus::Disconnected;
M module-services/service-desktop/WorkerDesktop.hpp => module-services/service-desktop/WorkerDesktop.hpp +0 -1
@@ 51,7 51,6 @@ class WorkerDesktop : public sys::Worker
const std::string serialNumber;
sys::Service *ownerService = nullptr;
sdesktop::endpoints::StateMachine parser;
- sys::TimerHandle usbSuspendTimer;
bsp::USBDeviceStatus usbStatus = bsp::USBDeviceStatus::Disconnected;
std::shared_ptr<sys::CpuSentinel> cpuSentinel;
M module-sys/SystemManager/SystemManagerCommon.cpp => module-sys/SystemManager/SystemManagerCommon.cpp +1 -1
@@ 608,7 608,7 @@ namespace sys
auto msg = static_cast<sys::SentinelRemovalMessage *>(message);
powerManager->RemoveSentinel(msg->getSentinelName());
- return sys::MessageNone{};
+ return std::make_shared<sys::ResponseMessage>();
});
connect(typeid(sys::HoldCpuFrequencyMessage), [this](sys::Message *message) -> sys::MessagePointer {
M third-party/usb_stack => third-party/usb_stack +1 -1
@@ 1,1 1,1 @@
-Subproject commit 7321e1f348b09234c57ba2b64edcbc1caabfeb01
+Subproject commit 42f05834a8b1798b2bcf0e9ccee736d821edf1a5