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 struct k_msgq fanControlQueue;
void initFanControlQueue()
{
static char fanControlBuffer[10 * sizeof(int)];
k_msgq_init(&fanControlQueue, fanControlBuffer, sizeof(int), 10);
}
struct k_msgq *getFanControlQueue()
{
return &fanControlQueue;
}
void FanControl_Thread(void *arg1, void *arg2, void *arg3)
{
(void) arg1;
(void) arg2;
(void) arg3;
int newSpeed;
HardwareEvent fanEvent;
while (true) {
if (k_msgq_get(&fanControlQueue, &newSpeed, K_FOREVER) == 0) {
int rotationPeriod = newSpeed == 0 ? 0 : 5000 / (newSpeed * 3);
fanEvent.id = HardwareEventId::FanRotationPeriod;
fanEvent.data = rotationPeriod;
postEventsToUI(fanEvent);
}
}
}