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);
}