C
Qt Quick Ultralite multitask Example
// Copyright (C) 2024 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial #include "fan_thread.h" #include "qul_thread.h" #include "hardwarecontrol.h" #include "platforminterface/log.h" static QueueHandle_t fanControlQueue = NULL; void initFanControlQueue() { fanControlQueue = xQueueCreate(10, sizeof(int)); } QueueHandle_t getFanControlQueueHandle() { return fanControlQueue; } void FanControl_Thread(void *argument) { (void) argument; int newSpeed; HardwareEvent fanEvent; while (true) { if (xQueueReceive(fanControlQueue, &newSpeed, portMAX_DELAY) == pdTRUE) { int rotationPeriod = newSpeed == 0 ? 0 : 5000 / (newSpeed * 3); fanEvent.id = HardwareEventId::FanRotationPeriod; fanEvent.data = rotationPeriod; postEventsToUI(fanEvent); } } }