C

Qt Safe Monitor: Qt Quick Ultralite Example on Bare-Metal Traveo II

// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial

#ifndef SIMULATOR_H
#define SIMULATOR_H

#include <QtSafeRenderer/qsafeglobal.h>

struct SimulationStep
{
    SafeRenderer::qint duration;
    SafeRenderer::qint targetSpeed;
    bool beamsOn;
    bool engineOn;
    bool batteryOn;
    bool oilOn;
    bool screenFailureOn;
};

class Simulator
{
public:
    Simulator()
        : steps()
        , timestamp(0)
        , previousValueUpdate(0)
        , previousStepUpdate(0)
        , currentStep(0)
        , currentSpeed(0)
        , stepIndex(0)
        , updatePeriod(100)
        , stepCount(sizeof(steps) / sizeof(steps[0]))
        , beamsState(true)
        , engineState(true)
        , batteryState(true)
        , oilState(true)
        , screenFailureState(false)
    {
        steps[0].duration = 3000;
        steps[0].targetSpeed = 0;
        steps[0].engineOn = true;
        steps[0].beamsOn = true;
        steps[0].batteryOn = true;
        steps[0].oilOn = true;

        steps[1].duration = 2000;
        steps[1].targetSpeed = 0;

        steps[2].duration = 5000;
        steps[2].targetSpeed = 60;
        steps[2].beamsOn = true;

        steps[3].duration = 4000;
        steps[3].targetSpeed = 70;
        steps[3].beamsOn = true;
        steps[3].batteryOn = true;
        steps[3].screenFailureOn = true;

        steps[4].duration = 6000;
        steps[4].targetSpeed = 95;

        steps[5].duration = 12000;
        steps[5].targetSpeed = 0;
        steps[5].batteryOn = true;
        steps[5].engineOn = true;
        steps[5].oilOn = true;

        steps[6].duration = 3000;
        steps[6].targetSpeed = 0;
    }

    void tick(SafeRenderer::qint delta);
    bool getBeamsState() const { return beamsState; }
    bool getEngineState() const { return engineState; }
    bool getBatteryState() const { return batteryState; }
    bool getOilState() const { return oilState; }

private:
    SimulationStep steps[7];
    SafeRenderer::qint64 timestamp;
    SafeRenderer::qint64 previousValueUpdate;
    SafeRenderer::qint64 previousStepUpdate;
    SafeRenderer::qint64 currentStep;
    SafeRenderer::qint currentSpeed;
    SafeRenderer::qint stepIndex;
    const SafeRenderer::qint updatePeriod;
    const SafeRenderer::qint stepCount;
    bool beamsState;
    bool engineState;
    bool batteryState;
    bool oilState;
    bool screenFailureState;
};

#endif // SIMULATOR_H