C

Qt Quick Ultralite Automotive Cluster Demo

// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial
#ifndef SPEEDLIMITS_H
#define SPEEDLIMITS_H

#include <stdint.h>
#include "Automotive/SpeedLimitValues.h"

namespace Simulation {
class SpeedLimits
{
public:
    SpeedLimits(uint32_t updatePeriod, uint32_t updatePeriodVariation);
    void update(uint32_t tick);

    float getCurrentSpeedLimitInKmh() const;
    Automotive::SpeedLimitValues::Limit getCurrentSpeedLimit() const;
    void reset(Automotive::SpeedLimitValues::Limit limit = Automotive::SpeedLimitValues::None);

private:
    void calculateNewChangeTime(int32_t variation);
    void changeSpeedLimit();

    const uint32_t _updatePeriod;
    const uint32_t _updatePeriodVariation;

    uint32_t _timer;
    uint32_t _timeToChange;
    Automotive::SpeedLimitValues::Limit _limit;
};
} // namespace Simulation

#endif // SPEEDLIMITS_H