C
Qt Cluster: Rendering and Recovery from Main UI Failure
// Copyright (C) 2023 Pelagicore AG
// SPDX-License-Identifier: PELAGICORE OR LGPL-3.0-only
// This file is part of the Qt Safe Renderer module
#include "qtiviclusterdata.h"
QtIVIClusterData::QtIVIClusterData(QObject* parent)
: QObject(parent),
m_vehicleSpeed(0),
m_latitude(0),
m_longitude(0),
m_direction(0),
m_flatTire(false),
m_doorOpen(false),
m_lightFailure(false),
m_reverse(false),
m_leftTurnLight(false),
m_rightTurnLight(false),
m_headLight(false),
m_parkLight(false),
m_carId(2),
m_brake(false),
m_engineTemp(60),
m_oilTemp(0.0),
m_oilPressure(0),
m_batteryPotential(80.0),
m_gasLevel(67.0),
m_rpm(4000),
m_gear(1),
m_crash(false)
{
m_backend = new ClusterDataBackend(this);
m_crasher = new Crasher(this);
connectToServiceObject();
}
void QtIVIClusterData::connectToServiceObject()
{
initializeZones();
m_backend->initializeAttributes();
}
ZonedProperties *QtIVIClusterData::zoneAt(const QString &zone) const
{
for (ZonedProperties *f : m_zoneFeatures)
if (f->zone() == zone)
return f;
return 0;
}
void QtIVIClusterData::initializeZones()
{
connect(m_backend, &ClusterDataBackend::vehicleSpeedChanged, this, &QtIVIClusterData::onVehicleSpeedChanged);
connect(m_backend, &ClusterDataBackend::latitudeChanged, this, &QtIVIClusterData::onLatitudeChanged);
connect(m_backend, &ClusterDataBackend::longitudeChanged, this, &QtIVIClusterData::onLongitudeChanged);
connect(m_backend, &ClusterDataBackend::directionChanged, this, &QtIVIClusterData::onDirectionChanged);
connect(m_backend, &ClusterDataBackend::flatTireChanged, this, &QtIVIClusterData::onFlatTireChanged);
connect(m_backend, &ClusterDataBackend::doorOpenChanged, this, &QtIVIClusterData::onDoorOpenChanged);
connect(m_backend, &ClusterDataBackend::lightFailureChanged, this, &QtIVIClusterData::onLightFailureChanged);
connect(m_backend, &ClusterDataBackend::reverseChanged, this, &QtIVIClusterData::onReverseChanged);
connect(m_backend, &ClusterDataBackend::leftTurnLightChanged, this, &QtIVIClusterData::onLeftTurnLightChanged);
connect(m_backend, &ClusterDataBackend::rightTurnLightChanged, this, &QtIVIClusterData::onRightTurnLightChanged);
connect(m_backend, &ClusterDataBackend::headLightChanged, this, &QtIVIClusterData::onHeadLightChanged);
connect(m_backend, &ClusterDataBackend::parkLightChanged, this, &QtIVIClusterData::onParkLightChanged);
connect(m_backend, &ClusterDataBackend::carIdChanged, this, &QtIVIClusterData::onCarIdChanged);
connect(m_backend, &ClusterDataBackend::brakeChanged, this, &QtIVIClusterData::onBrakeChanged);
connect(m_backend, &ClusterDataBackend::engineTempChanged, this, &QtIVIClusterData::onEngineTempChanged);
connect(m_backend, &ClusterDataBackend::oilTempChanged, this, &QtIVIClusterData::onOilTempChanged);
connect(m_backend, &ClusterDataBackend::oilPressureChanged, this, &QtIVIClusterData::onOilPressureChanged);
connect(m_backend, &ClusterDataBackend::batteryPotentialChanged, this, &QtIVIClusterData::onBatteryPotentialChanged);
connect(m_backend, &ClusterDataBackend::gasLevelChanged, this, &QtIVIClusterData::onGasLevelChanged);
connect(m_backend, &ClusterDataBackend::rpmChanged, this, &QtIVIClusterData::onRpmChanged);
connect(m_backend, &ClusterDataBackend::gearChanged, this, &QtIVIClusterData::onGearChanged);
connect(m_backend, &ClusterDataBackend::crashChanged, this, &QtIVIClusterData::onCrashChanged);
}
QVariantMap QtIVIClusterData::zoneFeatureMap() const
{
return m_zoneFeatureMap;
}
double QtIVIClusterData::vehicleSpeed() const
{
return m_vehicleSpeed;
}
double QtIVIClusterData::latitude() const
{
return m_latitude;
}
double QtIVIClusterData::longitude() const
{
return m_longitude;
}
double QtIVIClusterData::direction() const
{
return m_direction;
}
bool QtIVIClusterData::flatTire() const
{
return m_flatTire;
}
bool QtIVIClusterData::doorOpen() const
{
return m_doorOpen;
}
bool QtIVIClusterData::lightFailure() const
{
return m_lightFailure;
}
bool QtIVIClusterData::reverse() const
{
return m_reverse;
}
bool QtIVIClusterData::leftTurnLight() const
{
return m_leftTurnLight;
}
bool QtIVIClusterData::rightTurnLight() const
{
return m_rightTurnLight;
}
bool QtIVIClusterData::headLight() const
{
return m_headLight;
}
bool QtIVIClusterData::parkLight() const
{
return m_parkLight;
}
int QtIVIClusterData::carId() const
{
return m_carId;
}
bool QtIVIClusterData::brake() const
{
return m_brake;
}
int QtIVIClusterData::engineTemp() const
{
return m_engineTemp;
}
double QtIVIClusterData::oilTemp() const
{
return m_oilTemp;
}
int QtIVIClusterData::oilPressure() const
{
return m_oilPressure;
}
double QtIVIClusterData::batteryPotential() const
{
return m_batteryPotential;
}
double QtIVIClusterData::gasLevel() const
{
return m_gasLevel;
}
int QtIVIClusterData::rpm() const
{
return m_rpm;
}
int QtIVIClusterData::gear() const
{
return m_gear;
}
bool QtIVIClusterData::crashArg() const
{
return m_crash;
}
void QtIVIClusterData::classBegin()
{
}
void QtIVIClusterData::componentComplete()
{
}
void QtIVIClusterData::onVehicleSpeedChanged(double vehicleSpeed, const QString &zone)
{
Q_UNUSED(zone);
m_vehicleSpeed = vehicleSpeed;
emit vehicleSpeedChanged(vehicleSpeed);
}
void QtIVIClusterData::onLatitudeChanged(double latitude, const QString &zone)
{
Q_UNUSED(zone);
m_latitude = latitude;
emit latitudeChanged(latitude);
}
void QtIVIClusterData::onLongitudeChanged(double longitude, const QString &zone)
{
Q_UNUSED(zone);
m_longitude = longitude;
emit longitudeChanged(longitude);
}
void QtIVIClusterData::onDirectionChanged(double direction, const QString &zone)
{
Q_UNUSED(zone);
m_direction = direction;
emit directionChanged(direction);
}
void QtIVIClusterData::onFlatTireChanged(bool flatTire, const QString &zone)
{
Q_UNUSED(zone);
m_flatTire = flatTire;
emit flatTireChanged(flatTire);
}
void QtIVIClusterData::onDoorOpenChanged(bool doorOpen, const QString &zone)
{
ZonedProperties *z = zoneAt(zone);
if (z) {
z->setDoorOpen(doorOpen);
}
}
void QtIVIClusterData::onLightFailureChanged(bool lightFailure, const QString &zone)
{
Q_UNUSED(zone);
m_lightFailure = lightFailure;
emit lightFailureChanged(lightFailure);
}
void QtIVIClusterData::onReverseChanged(bool reverse, const QString &zone)
{
Q_UNUSED(zone);
m_reverse = reverse;
emit reverseChanged(reverse);
}
void QtIVIClusterData::onLeftTurnLightChanged(bool leftTurnLight, const QString &zone)
{
Q_UNUSED(zone);
m_leftTurnLight = leftTurnLight;
emit leftTurnLightChanged(leftTurnLight);
}
void QtIVIClusterData::onRightTurnLightChanged(bool rightTurnLight, const QString &zone)
{
Q_UNUSED(zone);
m_rightTurnLight = rightTurnLight;
emit rightTurnLightChanged(rightTurnLight);
}
void QtIVIClusterData::onHeadLightChanged(bool headLight, const QString &zone)
{
Q_UNUSED(zone);
m_headLight = headLight;
emit headLightChanged(headLight);
}
void QtIVIClusterData::onParkLightChanged(bool parkLight, const QString &zone)
{
Q_UNUSED(zone);
m_parkLight = parkLight;
emit parkLightChanged(parkLight);
}
void QtIVIClusterData::onCarIdChanged(int carId, const QString &zone)
{
Q_UNUSED(zone);
m_carId = carId;
emit carIdChanged(carId);
}
void QtIVIClusterData::onBrakeChanged(bool brakeOn, const QString &zone)
{
Q_UNUSED(zone);
m_brake = brakeOn;
emit brakeChanged(brakeOn);
}
void QtIVIClusterData::onEngineTempChanged(int engineTemp, const QString &zone)
{
Q_UNUSED(zone);
m_engineTemp = engineTemp;
emit engineTempChanged(engineTemp);
}
void QtIVIClusterData::onOilTempChanged(double oilTemp, const QString &zone)
{
Q_UNUSED(zone);
m_oilTemp = oilTemp;
emit oilTempChanged(oilTemp);
}
void QtIVIClusterData::onOilPressureChanged(int oilPressure, const QString &zone)
{
Q_UNUSED(zone);
m_oilPressure = oilPressure;
emit oilPressureChanged(oilPressure);
}
void QtIVIClusterData::onBatteryPotentialChanged(double batteryPotential, const QString &zone)
{
Q_UNUSED(zone);
m_batteryPotential = batteryPotential;
emit batteryPotentialChanged(batteryPotential);
}
void QtIVIClusterData::onGasLevelChanged(double gasLevel, const QString &zone)
{
Q_UNUSED(zone);
m_gasLevel = gasLevel;
emit gasLevelChanged(gasLevel);
}
void QtIVIClusterData::onRpmChanged(int rpm, const QString &zone)
{
Q_UNUSED(zone);
m_rpm = rpm;
emit rpmChanged(rpm);
}
void QtIVIClusterData::onGearChanged(int gear, const QString &zone)
{
Q_UNUSED(zone);
m_gear = gear;
emit gearChanged(gear);
}
void QtIVIClusterData::onCrashChanged(bool crashArg, const QString &zone)
{
Q_UNUSED(zone);
if (crashArg == true) {
m_crasher->crash();
}
}