M module-services/service-desktop/WorkerDesktop.cpp => module-services/service-desktop/WorkerDesktop.cpp +7 -0
@@ 15,6 15,7 @@
#include <map>
#include <vector>
#include <module-services/service-desktop/service-desktop/DesktopMessages.hpp>
+#include "SystemManager/messages/SentinelRegistrationMessage.hpp"
inline constexpr auto uploadFailedMessage = "file upload terminated before all data transferred";
@@ 31,6 32,10 @@ bool WorkerDesktop::init(std::list<sys::WorkerQueueInfo> queues)
receiveQueue = Worker::getQueueHandleByName(sdesktop::RECEIVE_QUEUE_BUFFER_NAME);
parserFSM::MessageHandler::setSendQueueHandle(Worker::getQueueHandleByName(sdesktop::SEND_QUEUE_BUFFER_NAME));
+ cpuSentinel = std::make_shared<sys::CpuSentinel>("WorkerDesktop", ownerService);
+ auto sentinelRegistrationMsg = std::make_shared<sys::SentinelRegistrationMessage>(cpuSentinel);
+ ownerService->bus.sendUnicast(sentinelRegistrationMsg, service::name::system_manager);
+
return (bsp::usbInit(receiveQueue, irqQueue, this) < 0) ? false : true;
}
@@ 122,10 127,12 @@ bool WorkerDesktop::handleMessage(uint32_t queueID)
service::name::service_desktop);
}
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);
}
else if (notification == bsp::USBDeviceStatus::Disconnected) {
+ cpuSentinel->ReleaseMinimumFrequency();
ownerService->bus.sendUnicast(std::make_shared<sdesktop::usb::USBDisconnected>(),
service::name::service_desktop);
}
M module-services/service-desktop/service-desktop/WorkerDesktop.hpp => module-services/service-desktop/service-desktop/WorkerDesktop.hpp +3 -0
@@ 8,6 8,7 @@
#include "Service/Message.hpp"
#include "Service/Service.hpp"
#include "Service/Worker.hpp"
+#include "Service/CpuSentinel.hpp"
#include "parser/ParserFSM.hpp"
#include "endpoints/EndpointFactory.hpp"
#include "bsp/usb/usb.hpp"
@@ 68,4 69,6 @@ class WorkerDesktop : public sys::Worker, public bsp::USBDeviceListener
const sdesktop::USBSecurityModel &securityModel;
sys::Service *ownerService = nullptr;
parserFSM::StateMachine parser;
+
+ std::shared_ptr<sys::CpuSentinel> cpuSentinel;
};