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 <FreeRTOS.h>
#include <task.h>
#include <queue.h>
extern TaskHandle_t LedTask;
HardwareControl::HardwareControl()
: fanSpeed(1)
, ledCycleCount(0)
{}
void HardwareControl::updateSpeed(int newSpeed)
{
fanSpeed.setValue(newSpeed);
updateFanSpeed();
updateLedSpeed();
}
void HardwareControl::updateLedSpeed()
{
xTaskNotify(LedTask, fanSpeed.value(), eSetValueWithOverwrite);
}
void HardwareControl::updateFanSpeed()
{
xQueueSend(getFanControlQueueHandle(), (void *) &(fanSpeed.value()), portMAX_DELAY);
}