C
Qt Quick Ultralite multitask Example
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial
#include "hardwarecontrol.h"
#include "fan_thread.h"
#include "led_thread.h"
extern k_tid_t LedTask;
HardwareControl::HardwareControl()
: fanSpeed(1)
, ledCycleCount(0)
{}
void HardwareControl::updateSpeed(int newSpeed)
{
fanSpeed.setValue(newSpeed);
updateFanSpeed();
updateLedSpeed();
}
void HardwareControl::updateLedSpeed()
{
while (k_msgq_put(getLedControlQueue(), (void *) &(fanSpeed.value()), K_NO_WAIT) != 0) {
k_msgq_purge(getLedControlQueue());
}
}
void HardwareControl::updateFanSpeed()
{
k_msgq_put(getFanControlQueue(), (void *) &(fanSpeed.value()), K_FOREVER);
}