First implementation

This commit is contained in:
Yury Shuvakin
2025-07-02 18:00:35 +09:00
commit 6cf2010c08
107 changed files with 10803 additions and 0 deletions

275
BatteryController.cpp Normal file
View File

@@ -0,0 +1,275 @@
#include "BatteryController.h"
#include <QDateTime>
#include <QDebug>
#include <bitset>
BatteryController::BatteryController(
QObject *parent)
: QObject{parent}
{}
BatteryController::~BatteryController()
{
}
int BatteryController::batteryIndex() const
{
return batteryIndex_;
}
void BatteryController::setBatteryIndex(int index)
{
if (batteryIndex_ == index)
return;
batteryIndex_ = index;
emit batteryIndexChanged();
}
int BatteryController::chargeType() const
{
return chargeType_;
}
void BatteryController::setChargeType(int type)
{
if (chargeType_ == type)
return;
chargeType_ = type;
emit chargeTypeChanged();
}
int BatteryController::workingMode() const
{
return workingMode_;
}
void BatteryController::setWorkingMode(int mode)
{
if (workingMode_ == mode)
return;
workingMode_ = mode;
emit workingModeChanged();
}
QVariant BatteryController::controlVoltage() const
{
return controlVoltage_;
}
void BatteryController::setControlVoltage(const QVariant& value)
{
if (controlVoltage_ == value)
return;
controlVoltage_ = value;
emit controlVoltageChanged();
}
QVariant BatteryController::controlCurrent() const
{
return controlCurrent_;
}
void BatteryController::setControlCurrent(const QVariant& value)
{
if (controlCurrent_ == value)
return;
controlCurrent_ = value;
emit controlCurrentChanged();
}
QVariant BatteryController::controlTemperature() const
{
return controlTemperature_;
}
void BatteryController::setControlTemperature(const QVariant& value)
{
if (controlTemperature_ == value)
return;
controlTemperature_ = value;
emit controlTemperatureChanged();
}
QVariant BatteryController::controlCapacity() const
{
return controlCapacity_;
}
void BatteryController::setControlCapacity(const QVariant& value)
{
if (controlCapacity_ == value)
return;
controlCapacity_ = value;
emit controlCapacityChanged();
}
QVariant BatteryController::measuredVoltage() const
{
return measuredVoltage_;
}
void BatteryController::setMeasuredVoltage(const QVariant& value)
{
if (measuredVoltage_ == value)
return;
measuredVoltage_ = value;
emit measuredVoltageChanged();
}
QVariant BatteryController::measuredCurrent() const
{
return measuredCurrent_;
}
void BatteryController::setMeasuredCurrent(const QVariant& value)
{
if (measuredCurrent_ == value)
return;
measuredCurrent_ = value;
emit measuredCurrentChanged();
}
QVariant BatteryController::measuredTemperature() const
{
return measuredTemperature_;
}
void BatteryController::setMeasuredTemperature(const QVariant& value)
{
if (measuredTemperature_ == value)
return;
measuredTemperature_ = value;
emit measuredTemperatureChanged();
}
QVariant BatteryController::measuredCapacity() const
{
return measuredCapacity_;
}
void BatteryController::setMeasuredCapacity(const QVariant& value)
{
if (measuredCapacity_ == value)
return;
measuredCapacity_ = value;
emit measuredCapacityChanged();
}
QVariantList BatteryController::statuses() const
{
return statuses_;
}
void BatteryController::setStatuses(const QVariantList& statuses)
{
if (statuses_ == statuses)
return;
statuses_ = statuses;
emit statusesChanged();
}
void BatteryController::addStatus(const quint16 status)
{
QString description;
auto appendDescription = [&description](const QString& subStatus)
{
if (!description.isEmpty())
{
description += ", ";
}
description += subStatus;
};
std::bitset<16> descriptionBitset(status);
if (descriptionBitset.test(0))
{
appendDescription("Ошибка Т датчика КП");
}
if (descriptionBitset.test(1))
{
appendDescription("Низкий разряд АКБ");
}
if (descriptionBitset.test(2))
{
appendDescription("Заряд завершен");
}
if (descriptionBitset.test(3))
{
appendDescription("Ошибка Т датчика УКПБ");
}
if (descriptionBitset.test(4))
{
appendDescription("Ток долго не снижается");
}
if (descriptionBitset.test(5))
{
appendDescription("Ошибка БПС3000");
}
if (descriptionBitset.test(6))
{
appendDescription("U менее 61.25 В");
}
if (descriptionBitset.test(7))
{
appendDescription("U выше нормы по КП");
}
if (descriptionBitset.test(8))
{
appendDescription("Останов первого заряда");
}
if (descriptionBitset.test(9))
{
appendDescription("Останов разряда");
}
if (descriptionBitset.test(10))
{
appendDescription("Останов второго заряда");
}
if (descriptionBitset.test(11))
{
appendDescription("Более 45 гр. С");
}
if (descriptionBitset.test(12))
{
appendDescription("Разночтение в токах");
}
if (description.isEmpty())
{
appendDescription("Штатный режим");
}
QVariantMap statusMap;
statusMap.insert("time", QDateTime::currentDateTime().toString("hh:mm:ss dd-MM-yyyy"));
statusMap.insert("status", "0x" + QString::number(status, 16).toUpper().rightJustified(2, '0'));
statusMap.insert("description", description);
statuses_.clear();
statuses_.append(statusMap);
emit statusesChanged();
// if (statuses_.isEmpty() || statuses_.first().toMap()["status"] != statusMap["status"])
// {
// qDebug() << "Status:" << statusMap["status"].toString() << statusMap["description"].toString();
// statuses_.prepend(statusMap);
// emit statusesChanged();
// }
}