#include "ina219.hpp" void ForteINA219 ::setup() { Wire.begin(I2C_SDA, I2C_SCL); if (!ina219.init()) { // Sensor init went wrong ESP_LOGW(sensorInformation.getHardwareName().c_str(), "Initialization failed"); return; } } out_data_ina219 ForteINA219 ::readData() { if (!ina219.getOverflow()) { data.shuntVoltage_mV = ina219.getShuntVoltage_mV(); data.busVoltage_V = ina219.getBusVoltage_V(); data.current_mA = ina219.getCurrent_mA(); data.power_mW = ina219.getBusPower(); data.loadVoltage_V = data.busVoltage_V + (data.shuntVoltage_mV / 1000); data.ina219_overflow = ina219.getOverflow(); return data; } else return data; } std::list<Message> ForteINA219::buildMessages() { std::list<Message> messages; out_data_ina219 data = readData(); MeasurementData shuntVoltageData{ data.shuntVoltage_mV, 0, {}, measurementTypeToString.at(MeasurementType::SHUNT_VOLTAGE) }; MeasurementData busVoltageData{ data.busVoltage_V, 0, {}, measurementTypeToString.at(MeasurementType::BUS_VOLTAGE) }; MeasurementData currentMilliAmpData{ data.current_mA, 0, {}, measurementTypeToString.at(MeasurementType::CURRENT_mA) }; MeasurementData powerMilliWattData{ data.power_mW, 0, {}, measurementTypeToString.at(MeasurementType::POWER_mA) }; MeasurementData loadVoltageData{ data.loadVoltage_V, 0, {}, measurementTypeToString.at(MeasurementType::LOAD_VOLTAGE_V) }; MeasurementData ina219OverflowData{ data.ina219_overflow, 0, {}, measurementTypeToString.at(MeasurementType::INA219_OVERFLOW) }; messages.emplace_back(Message(shuntVoltageData, sensorInformation, 0)); messages.emplace_back(Message(busVoltageData, sensorInformation,0)); messages.emplace_back(Message(currentMilliAmpData, sensorInformation, 0)); messages.emplace_back(Message(powerMilliWattData, sensorInformation, 0)); messages.emplace_back(Message(loadVoltageData, sensorInformation, 0)); messages.emplace_back(Message(ina219OverflowData, sensorInformation, 0)); return messages; } SensorInformation ForteINA219::getSensorInformation() const { return sensorInformation; }