C
Qt Quick Ultralite instrument_cluster Example
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial
#pragma once
#include <stdint.h>
struct SimulationStep
{
int duration;
int targetSpeed;
bool leftBlinkerOn;
bool rightBlinkerOn;
};
class Simulator
{
public:
Simulator()
: steps()
, timestamp(0)
, previousValueUpdate(0)
, previousStepUpdate(0)
, currentStep(0)
, currentSpeed(0)
, stepIndex(0)
, updatePeriod(500)
, stepCount(sizeof(steps) / sizeof(steps[0]))
, leftBlinkerState(false)
, rightBlinkerState(false)
, tripMeter(0.0)
{
steps[0].duration = 4000;
steps[0].targetSpeed = 80;
steps[0].leftBlinkerOn = true;
steps[0].rightBlinkerOn = false;
steps[1].duration = 2000;
steps[1].targetSpeed = 80;
steps[1].leftBlinkerOn = false;
steps[1].rightBlinkerOn = false;
steps[2].duration = 7000;
steps[2].targetSpeed = 60;
steps[2].leftBlinkerOn = false;
steps[2].rightBlinkerOn = false;
steps[3].duration = 4000;
steps[3].targetSpeed = 70;
steps[3].leftBlinkerOn = false;
steps[3].rightBlinkerOn = true;
steps[4].duration = 6000;
steps[4].targetSpeed = 95;
steps[4].leftBlinkerOn = false;
steps[4].rightBlinkerOn = false;
}
void tick(int delta);
private:
SimulationStep steps[5];
uint64_t timestamp;
uint64_t previousValueUpdate;
uint64_t previousStepUpdate;
uint64_t currentStep;
int currentSpeed;
int stepIndex;
const int updatePeriod;
const int stepCount;
bool leftBlinkerState;
bool rightBlinkerState;
double tripMeter;
};