#include "BatteryController.h" #include #include #include 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(); // } }