From 89e0857c734f1b51dcfa631d9050217cd069dc3b Mon Sep 17 00:00:00 2001 From: gjelsoe <36234524+gjelsoe@users.noreply.github.com> Date: Sat, 15 Feb 2025 19:18:25 +0100 Subject: [PATCH 1/7] Update Power.cpp First stab at using I2C detected INA addr. --- src/Power.cpp | 38 +++++++++++++++----------------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/src/Power.cpp b/src/Power.cpp index 8d5fe1c32..932dee736 100644 --- a/src/Power.cpp +++ b/src/Power.cpp @@ -421,7 +421,7 @@ class AnalogBatteryLevel : public HasBatteryLevel if (hasINA()) { // get current flow from INA sensor - negative value means power flowing into the battery // default assuming BATTERY+ <--> INA_VIN+ <--> SHUNT RESISTOR <--> INA_VIN- <--> LOAD - LOG_DEBUG("Using INA on I2C addr 0x%x for charging detection", config.power.device_battery_ina_address); +// LOG_DEBUG("Using INA on I2C addr 0x%x for charging detection", config.power.device_battery_ina_address); #if defined(INA_CHARGING_DETECTION_INVERT) return getINACurrent() > 0; #else @@ -464,16 +464,13 @@ class AnalogBatteryLevel : public HasBatteryLevel #if HAS_TELEMETRY && !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && !defined(ARCH_PORTDUINO) && !defined(ARCH_STM32WL) uint16_t getINAVoltage() { - if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first == config.power.device_battery_ina_address) { + if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { return ina219Sensor.getBusVoltageMv(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first == - config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { return ina226Sensor.getBusVoltageMv(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first == - config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first > 0) { return ina260Sensor.getBusVoltageMv(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first == - config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first > 0) { return ina3221Sensor.getBusVoltageMv(); } return 0; @@ -481,13 +478,11 @@ class AnalogBatteryLevel : public HasBatteryLevel int16_t getINACurrent() { - if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first == config.power.device_battery_ina_address) { + if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { return ina219Sensor.getCurrentMa(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first == - config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { return ina226Sensor.getCurrentMa(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first == - config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first > 0) { return ina3221Sensor.getCurrentMa(); } return 0; @@ -495,24 +490,21 @@ class AnalogBatteryLevel : public HasBatteryLevel bool hasINA() { - if (!config.power.device_battery_ina_address) { - return false; - } - if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first == config.power.device_battery_ina_address) { +// if (!config.power.device_battery_ina_address) { +// return false; +// } + if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { if (!ina219Sensor.isInitialized()) return ina219Sensor.runOnce() > 0; return ina219Sensor.isRunning(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first == - config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { if (!ina226Sensor.isInitialized()) return ina226Sensor.runOnce() > 0; - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first == - config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first > 0) { if (!ina260Sensor.isInitialized()) return ina260Sensor.runOnce() > 0; return ina260Sensor.isRunning(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first == - config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first > 0) { if (!ina3221Sensor.isInitialized()) return ina3221Sensor.runOnce() > 0; return ina3221Sensor.isRunning(); From 8b2a6c3b78d1e7d72151ec79ae6298fed2f5df6f Mon Sep 17 00:00:00 2001 From: gjelsoe <36234524+gjelsoe@users.noreply.github.com> Date: Sat, 15 Feb 2025 23:40:27 +0100 Subject: [PATCH 2/7] Update Power.cpp Take two --- src/Power.cpp | 124 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 90 insertions(+), 34 deletions(-) diff --git a/src/Power.cpp b/src/Power.cpp index 932dee736..e43e7bf40 100644 --- a/src/Power.cpp +++ b/src/Power.cpp @@ -72,6 +72,7 @@ static const uint8_t ext_chrg_detect_value = EXT_CHRG_DETECT_VALUE; #endif #if HAS_TELEMETRY && !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && !defined(ARCH_PORTDUINO) +uint8_t INA_ADDR_LOCAL; INA219Sensor ina219Sensor; INA226Sensor ina226Sensor; INA260Sensor ina260Sensor; @@ -421,7 +422,8 @@ class AnalogBatteryLevel : public HasBatteryLevel if (hasINA()) { // get current flow from INA sensor - negative value means power flowing into the battery // default assuming BATTERY+ <--> INA_VIN+ <--> SHUNT RESISTOR <--> INA_VIN- <--> LOAD -// LOG_DEBUG("Using INA on I2C addr 0x%x for charging detection", config.power.device_battery_ina_address); + //LOG_DEBUG("Using INA on I2C addr 0x%x for charging detection", config.power.device_battery_ina_address); + LOG_DEBUG("Using INA on I2C addr 0x%x for charging detection", INA_ADDR_LOCAL); #if defined(INA_CHARGING_DETECTION_INVERT) return getINACurrent() > 0; #else @@ -462,53 +464,107 @@ class AnalogBatteryLevel : public HasBatteryLevel #endif #if HAS_TELEMETRY && !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && !defined(ARCH_PORTDUINO) && !defined(ARCH_STM32WL) +/* + Read Voltage from INA using autodetect of addr first else use addr in config.power.device_battery_ina_address +*/ uint16_t getINAVoltage() { - if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { - return ina219Sensor.getBusVoltageMv(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { - return ina226Sensor.getBusVoltageMv(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first > 0) { - return ina260Sensor.getBusVoltageMv(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first > 0) { - return ina3221Sensor.getBusVoltageMv(); + if (!config.power.device_battery_ina_address) { + if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { + return ina219Sensor.getBusVoltageMv(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { + return ina226Sensor.getBusVoltageMv(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first > 0) { + return ina260Sensor.getBusVoltageMv(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first > 0) { + return ina3221Sensor.getBusVoltageMv(); + } + } else if (config.power.device_battery_ina_address) { + if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first == config.power.device_battery_ina_address) { + return ina219Sensor.getBusVoltageMv(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first == config.power.device_battery_ina_address) { + return ina226Sensor.getBusVoltageMv(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first == config.power.device_battery_ina_address) { + return ina260Sensor.getBusVoltageMv(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first == config.power.device_battery_ina_address) { + return ina3221Sensor.getBusVoltageMv(); + } } return 0; } - int16_t getINACurrent() +/* + Read Current from INA using autodetect of addr first else use addr in config.power.device_battery_ina_address +*/ +int16_t getINACurrent() { - if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { - return ina219Sensor.getCurrentMa(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { - return ina226Sensor.getCurrentMa(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first > 0) { - return ina3221Sensor.getCurrentMa(); + if (!config.power.device_battery_ina_address) { + if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { + return ina219Sensor.getCurrentMa(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { + return ina226Sensor.getCurrentMa(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first > 0) { + return ina3221Sensor.getCurrentMa(); + } + } else if (config.power.device_battery_ina_address) { + if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first == config.power.device_battery_ina_address) { + return ina219Sensor.getCurrentMa(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first == config.power.device_battery_ina_address) { + return ina226Sensor.getCurrentMa(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first == config.power.device_battery_ina_address) { + return ina3221Sensor.getCurrentMa(); + } } return 0; } bool hasINA() +/* + Use autodetect of addr first else use addr in config.power.device_battery_ina_address + Store INA addr in local variable for later use. +*/ { -// if (!config.power.device_battery_ina_address) { -// return false; -// } - if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { - if (!ina219Sensor.isInitialized()) - return ina219Sensor.runOnce() > 0; - return ina219Sensor.isRunning(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { - if (!ina226Sensor.isInitialized()) - return ina226Sensor.runOnce() > 0; - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first > 0) { - if (!ina260Sensor.isInitialized()) - return ina260Sensor.runOnce() > 0; - return ina260Sensor.isRunning(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first > 0) { - if (!ina3221Sensor.isInitialized()) - return ina3221Sensor.runOnce() > 0; - return ina3221Sensor.isRunning(); + if (!config.power.device_battery_ina_address) { + if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { + INA_ADDR_LOCAL = nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first; + if (!ina219Sensor.isInitialized()) + return ina219Sensor.runOnce() > 0; + return ina219Sensor.isRunning(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { + INA_ADDR_LOCAL = nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first; + if (!ina226Sensor.isInitialized()) + return ina226Sensor.runOnce() > 0; + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first > 0) { + INA_ADDR_LOCAL = nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first; + if (!ina260Sensor.isInitialized()) + return ina260Sensor.runOnce() > 0; + return ina260Sensor.isRunning(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first > 0) { + INA_ADDR_LOCAL = nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first; + if (!ina3221Sensor.isInitialized()) + return ina3221Sensor.runOnce() > 0; + return ina3221Sensor.isRunning(); + } + } else if (config.power.device_battery_ina_address) { + INA_ADDR_LOCAL = config.power.device_battery_ina_address; + if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first == config.power.device_battery_ina_address) { + if (!ina219Sensor.isInitialized()) + return ina219Sensor.runOnce() > 0; + return ina219Sensor.isRunning(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first == config.power.device_battery_ina_address) { + if (!ina226Sensor.isInitialized()) + return ina226Sensor.runOnce() > 0; + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first == config.power.device_battery_ina_address) { + if (!ina260Sensor.isInitialized()) + return ina260Sensor.runOnce() > 0; + return ina260Sensor.isRunning(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first == config.power.device_battery_ina_address) { + if (!ina3221Sensor.isInitialized()) + return ina3221Sensor.runOnce() > 0; + return ina3221Sensor.isRunning(); + } } + INA_ADDR_LOCAL = 0; return false; } #endif From fc289198c966b161ccd81487f6cb9b3d2d152d14 Mon Sep 17 00:00:00 2001 From: gjelsoe <36234524+gjelsoe@users.noreply.github.com> Date: Sat, 15 Feb 2025 19:18:25 +0100 Subject: [PATCH 3/7] Update Power.cpp First stab at using I2C detected INA addr. --- src/Power.cpp | 38 +++++++++++++++----------------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/src/Power.cpp b/src/Power.cpp index 8d5fe1c32..932dee736 100644 --- a/src/Power.cpp +++ b/src/Power.cpp @@ -421,7 +421,7 @@ class AnalogBatteryLevel : public HasBatteryLevel if (hasINA()) { // get current flow from INA sensor - negative value means power flowing into the battery // default assuming BATTERY+ <--> INA_VIN+ <--> SHUNT RESISTOR <--> INA_VIN- <--> LOAD - LOG_DEBUG("Using INA on I2C addr 0x%x for charging detection", config.power.device_battery_ina_address); +// LOG_DEBUG("Using INA on I2C addr 0x%x for charging detection", config.power.device_battery_ina_address); #if defined(INA_CHARGING_DETECTION_INVERT) return getINACurrent() > 0; #else @@ -464,16 +464,13 @@ class AnalogBatteryLevel : public HasBatteryLevel #if HAS_TELEMETRY && !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && !defined(ARCH_PORTDUINO) && !defined(ARCH_STM32WL) uint16_t getINAVoltage() { - if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first == config.power.device_battery_ina_address) { + if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { return ina219Sensor.getBusVoltageMv(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first == - config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { return ina226Sensor.getBusVoltageMv(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first == - config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first > 0) { return ina260Sensor.getBusVoltageMv(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first == - config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first > 0) { return ina3221Sensor.getBusVoltageMv(); } return 0; @@ -481,13 +478,11 @@ class AnalogBatteryLevel : public HasBatteryLevel int16_t getINACurrent() { - if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first == config.power.device_battery_ina_address) { + if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { return ina219Sensor.getCurrentMa(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first == - config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { return ina226Sensor.getCurrentMa(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first == - config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first > 0) { return ina3221Sensor.getCurrentMa(); } return 0; @@ -495,24 +490,21 @@ class AnalogBatteryLevel : public HasBatteryLevel bool hasINA() { - if (!config.power.device_battery_ina_address) { - return false; - } - if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first == config.power.device_battery_ina_address) { +// if (!config.power.device_battery_ina_address) { +// return false; +// } + if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { if (!ina219Sensor.isInitialized()) return ina219Sensor.runOnce() > 0; return ina219Sensor.isRunning(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first == - config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { if (!ina226Sensor.isInitialized()) return ina226Sensor.runOnce() > 0; - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first == - config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first > 0) { if (!ina260Sensor.isInitialized()) return ina260Sensor.runOnce() > 0; return ina260Sensor.isRunning(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first == - config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first > 0) { if (!ina3221Sensor.isInitialized()) return ina3221Sensor.runOnce() > 0; return ina3221Sensor.isRunning(); From 81176de5a7695246ce781aea993531461feb42a5 Mon Sep 17 00:00:00 2001 From: gjelsoe <36234524+gjelsoe@users.noreply.github.com> Date: Sat, 15 Feb 2025 23:40:27 +0100 Subject: [PATCH 4/7] Update Power.cpp Take two --- src/Power.cpp | 124 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 90 insertions(+), 34 deletions(-) diff --git a/src/Power.cpp b/src/Power.cpp index 932dee736..e43e7bf40 100644 --- a/src/Power.cpp +++ b/src/Power.cpp @@ -72,6 +72,7 @@ static const uint8_t ext_chrg_detect_value = EXT_CHRG_DETECT_VALUE; #endif #if HAS_TELEMETRY && !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && !defined(ARCH_PORTDUINO) +uint8_t INA_ADDR_LOCAL; INA219Sensor ina219Sensor; INA226Sensor ina226Sensor; INA260Sensor ina260Sensor; @@ -421,7 +422,8 @@ class AnalogBatteryLevel : public HasBatteryLevel if (hasINA()) { // get current flow from INA sensor - negative value means power flowing into the battery // default assuming BATTERY+ <--> INA_VIN+ <--> SHUNT RESISTOR <--> INA_VIN- <--> LOAD -// LOG_DEBUG("Using INA on I2C addr 0x%x for charging detection", config.power.device_battery_ina_address); + //LOG_DEBUG("Using INA on I2C addr 0x%x for charging detection", config.power.device_battery_ina_address); + LOG_DEBUG("Using INA on I2C addr 0x%x for charging detection", INA_ADDR_LOCAL); #if defined(INA_CHARGING_DETECTION_INVERT) return getINACurrent() > 0; #else @@ -462,53 +464,107 @@ class AnalogBatteryLevel : public HasBatteryLevel #endif #if HAS_TELEMETRY && !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && !defined(ARCH_PORTDUINO) && !defined(ARCH_STM32WL) +/* + Read Voltage from INA using autodetect of addr first else use addr in config.power.device_battery_ina_address +*/ uint16_t getINAVoltage() { - if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { - return ina219Sensor.getBusVoltageMv(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { - return ina226Sensor.getBusVoltageMv(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first > 0) { - return ina260Sensor.getBusVoltageMv(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first > 0) { - return ina3221Sensor.getBusVoltageMv(); + if (!config.power.device_battery_ina_address) { + if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { + return ina219Sensor.getBusVoltageMv(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { + return ina226Sensor.getBusVoltageMv(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first > 0) { + return ina260Sensor.getBusVoltageMv(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first > 0) { + return ina3221Sensor.getBusVoltageMv(); + } + } else if (config.power.device_battery_ina_address) { + if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first == config.power.device_battery_ina_address) { + return ina219Sensor.getBusVoltageMv(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first == config.power.device_battery_ina_address) { + return ina226Sensor.getBusVoltageMv(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first == config.power.device_battery_ina_address) { + return ina260Sensor.getBusVoltageMv(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first == config.power.device_battery_ina_address) { + return ina3221Sensor.getBusVoltageMv(); + } } return 0; } - int16_t getINACurrent() +/* + Read Current from INA using autodetect of addr first else use addr in config.power.device_battery_ina_address +*/ +int16_t getINACurrent() { - if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { - return ina219Sensor.getCurrentMa(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { - return ina226Sensor.getCurrentMa(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first > 0) { - return ina3221Sensor.getCurrentMa(); + if (!config.power.device_battery_ina_address) { + if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { + return ina219Sensor.getCurrentMa(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { + return ina226Sensor.getCurrentMa(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first > 0) { + return ina3221Sensor.getCurrentMa(); + } + } else if (config.power.device_battery_ina_address) { + if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first == config.power.device_battery_ina_address) { + return ina219Sensor.getCurrentMa(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first == config.power.device_battery_ina_address) { + return ina226Sensor.getCurrentMa(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first == config.power.device_battery_ina_address) { + return ina3221Sensor.getCurrentMa(); + } } return 0; } bool hasINA() +/* + Use autodetect of addr first else use addr in config.power.device_battery_ina_address + Store INA addr in local variable for later use. +*/ { -// if (!config.power.device_battery_ina_address) { -// return false; -// } - if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { - if (!ina219Sensor.isInitialized()) - return ina219Sensor.runOnce() > 0; - return ina219Sensor.isRunning(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { - if (!ina226Sensor.isInitialized()) - return ina226Sensor.runOnce() > 0; - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first > 0) { - if (!ina260Sensor.isInitialized()) - return ina260Sensor.runOnce() > 0; - return ina260Sensor.isRunning(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first > 0) { - if (!ina3221Sensor.isInitialized()) - return ina3221Sensor.runOnce() > 0; - return ina3221Sensor.isRunning(); + if (!config.power.device_battery_ina_address) { + if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { + INA_ADDR_LOCAL = nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first; + if (!ina219Sensor.isInitialized()) + return ina219Sensor.runOnce() > 0; + return ina219Sensor.isRunning(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { + INA_ADDR_LOCAL = nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first; + if (!ina226Sensor.isInitialized()) + return ina226Sensor.runOnce() > 0; + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first > 0) { + INA_ADDR_LOCAL = nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first; + if (!ina260Sensor.isInitialized()) + return ina260Sensor.runOnce() > 0; + return ina260Sensor.isRunning(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first > 0) { + INA_ADDR_LOCAL = nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first; + if (!ina3221Sensor.isInitialized()) + return ina3221Sensor.runOnce() > 0; + return ina3221Sensor.isRunning(); + } + } else if (config.power.device_battery_ina_address) { + INA_ADDR_LOCAL = config.power.device_battery_ina_address; + if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first == config.power.device_battery_ina_address) { + if (!ina219Sensor.isInitialized()) + return ina219Sensor.runOnce() > 0; + return ina219Sensor.isRunning(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first == config.power.device_battery_ina_address) { + if (!ina226Sensor.isInitialized()) + return ina226Sensor.runOnce() > 0; + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first == config.power.device_battery_ina_address) { + if (!ina260Sensor.isInitialized()) + return ina260Sensor.runOnce() > 0; + return ina260Sensor.isRunning(); + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first == config.power.device_battery_ina_address) { + if (!ina3221Sensor.isInitialized()) + return ina3221Sensor.runOnce() > 0; + return ina3221Sensor.isRunning(); + } } + INA_ADDR_LOCAL = 0; return false; } #endif From 57cf9ddd0a7b2468f0d718f9a78437951024a16d Mon Sep 17 00:00:00 2001 From: michael Date: Thu, 27 Feb 2025 16:08:44 +0100 Subject: [PATCH 5/7] Trunk.... --- src/Power.cpp | 52 +++++++++++++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 22 deletions(-) diff --git a/src/Power.cpp b/src/Power.cpp index e43e7bf40..5f1b99449 100644 --- a/src/Power.cpp +++ b/src/Power.cpp @@ -422,7 +422,7 @@ class AnalogBatteryLevel : public HasBatteryLevel if (hasINA()) { // get current flow from INA sensor - negative value means power flowing into the battery // default assuming BATTERY+ <--> INA_VIN+ <--> SHUNT RESISTOR <--> INA_VIN- <--> LOAD - //LOG_DEBUG("Using INA on I2C addr 0x%x for charging detection", config.power.device_battery_ina_address); + // LOG_DEBUG("Using INA on I2C addr 0x%x for charging detection", config.power.device_battery_ina_address); LOG_DEBUG("Using INA on I2C addr 0x%x for charging detection", INA_ADDR_LOCAL); #if defined(INA_CHARGING_DETECTION_INVERT) return getINACurrent() > 0; @@ -464,12 +464,12 @@ class AnalogBatteryLevel : public HasBatteryLevel #endif #if HAS_TELEMETRY && !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && !defined(ARCH_PORTDUINO) && !defined(ARCH_STM32WL) -/* - Read Voltage from INA using autodetect of addr first else use addr in config.power.device_battery_ina_address -*/ + /* + Read Voltage from INA using autodetect of addr first else use addr in config.power.device_battery_ina_address + */ uint16_t getINAVoltage() { - if (!config.power.device_battery_ina_address) { + if (!config.power.device_battery_ina_address) { if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { return ina219Sensor.getBusVoltageMv(); } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { @@ -482,21 +482,24 @@ class AnalogBatteryLevel : public HasBatteryLevel } else if (config.power.device_battery_ina_address) { if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first == config.power.device_battery_ina_address) { return ina219Sensor.getBusVoltageMv(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first == config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first == + config.power.device_battery_ina_address) { return ina226Sensor.getBusVoltageMv(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first == config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first == + config.power.device_battery_ina_address) { return ina260Sensor.getBusVoltageMv(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first == config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first == + config.power.device_battery_ina_address) { return ina3221Sensor.getBusVoltageMv(); } } return 0; } -/* - Read Current from INA using autodetect of addr first else use addr in config.power.device_battery_ina_address -*/ -int16_t getINACurrent() + /* + Read Current from INA using autodetect of addr first else use addr in config.power.device_battery_ina_address + */ + int16_t getINACurrent() { if (!config.power.device_battery_ina_address) { if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { @@ -509,20 +512,22 @@ int16_t getINACurrent() } else if (config.power.device_battery_ina_address) { if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first == config.power.device_battery_ina_address) { return ina219Sensor.getCurrentMa(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first == config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first == + config.power.device_battery_ina_address) { return ina226Sensor.getCurrentMa(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first == config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first == + config.power.device_battery_ina_address) { return ina3221Sensor.getCurrentMa(); - } + } } return 0; } bool hasINA() -/* - Use autodetect of addr first else use addr in config.power.device_battery_ina_address - Store INA addr in local variable for later use. -*/ + /* + Use autodetect of addr first else use addr in config.power.device_battery_ina_address + Store INA addr in local variable for later use. + */ { if (!config.power.device_battery_ina_address) { if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { @@ -551,14 +556,17 @@ int16_t getINACurrent() if (!ina219Sensor.isInitialized()) return ina219Sensor.runOnce() > 0; return ina219Sensor.isRunning(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first == config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first == + config.power.device_battery_ina_address) { if (!ina226Sensor.isInitialized()) return ina226Sensor.runOnce() > 0; - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first == config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first == + config.power.device_battery_ina_address) { if (!ina260Sensor.isInitialized()) return ina260Sensor.runOnce() > 0; return ina260Sensor.isRunning(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first == config.power.device_battery_ina_address) { + } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first == + config.power.device_battery_ina_address) { if (!ina3221Sensor.isInitialized()) return ina3221Sensor.runOnce() > 0; return ina3221Sensor.isRunning(); From 07f955518a9e0f849f5d251f26ece81475ede146 Mon Sep 17 00:00:00 2001 From: gjelsoe <36234524+gjelsoe@users.noreply.github.com> Date: Mon, 31 Mar 2025 15:37:53 +0200 Subject: [PATCH 6/7] Use ScanI2C Re-wrote some to use ScanI2C --- src/Power.cpp | 83 +++++++++++++++++++++++++----------------- src/detect/ScanI2C.cpp | 6 +++ src/detect/ScanI2C.h | 2 + src/main.cpp | 10 +++++ src/main.h | 2 + 5 files changed, 70 insertions(+), 33 deletions(-) diff --git a/src/Power.cpp b/src/Power.cpp index 5f1b99449..fa94ea229 100644 --- a/src/Power.cpp +++ b/src/Power.cpp @@ -72,6 +72,7 @@ static const uint8_t ext_chrg_detect_value = EXT_CHRG_DETECT_VALUE; #endif #if HAS_TELEMETRY && !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && !defined(ARCH_PORTDUINO) +#include "main.h"; uint8_t INA_ADDR_LOCAL; INA219Sensor ina219Sensor; INA226Sensor ina226Sensor; @@ -470,14 +471,21 @@ class AnalogBatteryLevel : public HasBatteryLevel uint16_t getINAVoltage() { if (!config.power.device_battery_ina_address) { - if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { - return ina219Sensor.getBusVoltageMv(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { - return ina226Sensor.getBusVoltageMv(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first > 0) { - return ina260Sensor.getBusVoltageMv(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first > 0) { - return ina3221Sensor.getBusVoltageMv(); + if (ina_found.type != ScanI2C::DeviceType::NONE) { + switch (ina_found.type) { + case ScanI2C::DeviceType::INA219: + return ina219Sensor.getBusVoltageMv(); + break; + case ScanI2C::DeviceType::INA226: + return ina226Sensor.getBusVoltageMv(); + break; + case ScanI2C::DeviceType::INA260: + return ina260Sensor.getBusVoltageMv(); + break; + case ScanI2C::DeviceType::INA3221: + return ina3221Sensor.getBusVoltageMv(); + break; + } } } else if (config.power.device_battery_ina_address) { if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first == config.power.device_battery_ina_address) { @@ -502,12 +510,17 @@ class AnalogBatteryLevel : public HasBatteryLevel int16_t getINACurrent() { if (!config.power.device_battery_ina_address) { - if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { - return ina219Sensor.getCurrentMa(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { - return ina226Sensor.getCurrentMa(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first > 0) { - return ina3221Sensor.getCurrentMa(); + if (ina_found.type != ScanI2C::DeviceType::NONE) { + switch (ina_found.type) { + case ScanI2C::DeviceType::INA219: + return ina219Sensor.getCurrentMa(); + + case ScanI2C::DeviceType::INA226: + return ina226Sensor.getCurrentMa(); + + case ScanI2C::DeviceType::INA3221: + return ina3221Sensor.getCurrentMa(); + } } } else if (config.power.device_battery_ina_address) { if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first == config.power.device_battery_ina_address) { @@ -530,25 +543,29 @@ class AnalogBatteryLevel : public HasBatteryLevel */ { if (!config.power.device_battery_ina_address) { - if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first > 0) { - INA_ADDR_LOCAL = nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA219].first; - if (!ina219Sensor.isInitialized()) - return ina219Sensor.runOnce() > 0; - return ina219Sensor.isRunning(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first > 0) { - INA_ADDR_LOCAL = nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA226].first; - if (!ina226Sensor.isInitialized()) - return ina226Sensor.runOnce() > 0; - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first > 0) { - INA_ADDR_LOCAL = nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA260].first; - if (!ina260Sensor.isInitialized()) - return ina260Sensor.runOnce() > 0; - return ina260Sensor.isRunning(); - } else if (nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first > 0) { - INA_ADDR_LOCAL = nodeTelemetrySensorsMap[meshtastic_TelemetrySensorType_INA3221].first; - if (!ina3221Sensor.isInitialized()) - return ina3221Sensor.runOnce() > 0; - return ina3221Sensor.isRunning(); + if (ina_found.type != ScanI2C::DeviceType::NONE) { + INA_ADDR_LOCAL = ina_found.address.address; + switch (ina_found.type) { + case ScanI2C::DeviceType::INA219: + if (!ina219Sensor.isInitialized()) + return ina219Sensor.runOnce() > 0; + return ina219Sensor.isRunning(); + + case ScanI2C::DeviceType::INA226: + if (!ina226Sensor.isInitialized()) + return ina226Sensor.runOnce() > 0; + return ina226Sensor.isRunning(); + + case ScanI2C::DeviceType::INA260: + if (!ina260Sensor.isInitialized()) + return ina260Sensor.runOnce() > 0; + return ina260Sensor.isRunning(); + + case ScanI2C::DeviceType::INA3221: + if (!ina3221Sensor.isInitialized()) + return ina3221Sensor.runOnce() > 0; + return ina3221Sensor.isRunning(); + } } } else if (config.power.device_battery_ina_address) { INA_ADDR_LOCAL = config.power.device_battery_ina_address; diff --git a/src/detect/ScanI2C.cpp b/src/detect/ScanI2C.cpp index 4caa0f730..28bcc34c9 100644 --- a/src/detect/ScanI2C.cpp +++ b/src/detect/ScanI2C.cpp @@ -41,6 +41,12 @@ ScanI2C::FoundDevice ScanI2C::firstAccelerometer() const return firstOfOrNONE(8, types); } +ScanI2C::FoundDevice ScanI2C::firstINA() const +{ + ScanI2C::DeviceType types[] = {INA219, INA226, INA260, INA3221}; + return firstOfOrNONE(4, types); +} + ScanI2C::FoundDevice ScanI2C::find(ScanI2C::DeviceType) const { return DEVICE_NONE; diff --git a/src/detect/ScanI2C.h b/src/detect/ScanI2C.h index 6828169a8..91e7fdb3e 100644 --- a/src/detect/ScanI2C.h +++ b/src/detect/ScanI2C.h @@ -119,6 +119,8 @@ class ScanI2C FoundDevice firstKeyboard() const; FoundDevice firstAccelerometer() const; + + FoundDevice firstINA() const; virtual FoundDevice find(DeviceType) const; diff --git a/src/main.cpp b/src/main.cpp index e5e1a2537..cec8763c1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -168,6 +168,10 @@ ScanI2C::DeviceAddress rtc_found = ScanI2C::ADDRESS_NONE; ScanI2C::DeviceAddress accelerometer_found = ScanI2C::ADDRESS_NONE; // The I2C address of the RGB LED (if found) ScanI2C::FoundDevice rgb_found = ScanI2C::FoundDevice(ScanI2C::DeviceType::NONE, ScanI2C::ADDRESS_NONE); +// The I2C address of the INA Module (if found) +ScanI2C::FoundDevice ina_found = ScanI2C::FoundDevice(ScanI2C::DeviceType::NONE, ScanI2C::ADDRESS_NONE); +ScanI2C::DeviceAddress ina_Address = ScanI2C::ADDRESS_NONE; + #ifdef T_WATCH_S3 Adafruit_DRV2605 drv; @@ -609,6 +613,12 @@ void setup() LOG_DEBUG("acc_info = %i", acc_info.type); #endif +#if HAS_TELEMETRY && !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && !defined(ARCH_PORTDUINO) + auto ina_Info = i2cScanner->firstINA(); +// ina_Address = ina_Info.type != ScanI2C::DeviceType::NONE ? ina_Info.address : ina_Address; + LOG_DEBUG("ina_info = %i", ina_Info.type); +#endif + scannerToSensorsMap(i2cScanner, ScanI2C::DeviceType::BME_680, meshtastic_TelemetrySensorType_BME680); scannerToSensorsMap(i2cScanner, ScanI2C::DeviceType::BME_280, meshtastic_TelemetrySensorType_BME280); scannerToSensorsMap(i2cScanner, ScanI2C::DeviceType::BMP_280, meshtastic_TelemetrySensorType_BMP280); diff --git a/src/main.h b/src/main.h index 3b71cfeea..c06227301 100644 --- a/src/main.h +++ b/src/main.h @@ -34,6 +34,8 @@ extern uint8_t kb_model; extern ScanI2C::DeviceAddress rtc_found; extern ScanI2C::DeviceAddress accelerometer_found; extern ScanI2C::FoundDevice rgb_found; +//extern ScanI2C::DeviceAddress ina_Address; +extern ScanI2C::FoundDevice ina_found; extern bool eink_found; extern bool pmu_found; From aca5249fd16b4ae4cd0e842d3a605eb0b0d40ec9 Mon Sep 17 00:00:00 2001 From: michael Date: Sun, 18 May 2025 18:26:58 +0200 Subject: [PATCH 7/7] Trunk formating --- src/Power.cpp | 70 ++++++++++++++++++++---------------------- src/detect/ScanI2C.cpp | 1 - src/detect/ScanI2C.h | 2 +- src/main.cpp | 3 +- src/main.h | 2 +- 5 files changed, 37 insertions(+), 41 deletions(-) diff --git a/src/Power.cpp b/src/Power.cpp index afc1dcd6b..3a41966b8 100644 --- a/src/Power.cpp +++ b/src/Power.cpp @@ -76,7 +76,6 @@ static const uint8_t ext_chrg_detect_value = EXT_CHRG_DETECT_VALUE; #endif #endif - #if HAS_TELEMETRY && !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR #include "main.h"; uint8_t INA_ADDR_LOCAL; @@ -507,7 +506,6 @@ class AnalogBatteryLevel : public HasBatteryLevel } #endif - #if HAS_TELEMETRY && !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && !defined(ARCH_STM32WL) /* Read Voltage from INA using autodetect of addr first else use addr in config.power.device_battery_ina_address @@ -517,18 +515,18 @@ class AnalogBatteryLevel : public HasBatteryLevel if (!config.power.device_battery_ina_address) { if (ina_found.type != ScanI2C::DeviceType::NONE) { switch (ina_found.type) { - case ScanI2C::DeviceType::INA219: - return ina219Sensor.getBusVoltageMv(); - break; - case ScanI2C::DeviceType::INA226: - return ina226Sensor.getBusVoltageMv(); - break; - case ScanI2C::DeviceType::INA260: - return ina260Sensor.getBusVoltageMv(); - break; - case ScanI2C::DeviceType::INA3221: - return ina3221Sensor.getBusVoltageMv(); - break; + case ScanI2C::DeviceType::INA219: + return ina219Sensor.getBusVoltageMv(); + break; + case ScanI2C::DeviceType::INA226: + return ina226Sensor.getBusVoltageMv(); + break; + case ScanI2C::DeviceType::INA260: + return ina260Sensor.getBusVoltageMv(); + break; + case ScanI2C::DeviceType::INA3221: + return ina3221Sensor.getBusVoltageMv(); + break; } } } else if (config.power.device_battery_ina_address) { @@ -556,14 +554,14 @@ class AnalogBatteryLevel : public HasBatteryLevel if (!config.power.device_battery_ina_address) { if (ina_found.type != ScanI2C::DeviceType::NONE) { switch (ina_found.type) { - case ScanI2C::DeviceType::INA219: - return ina219Sensor.getCurrentMa(); + case ScanI2C::DeviceType::INA219: + return ina219Sensor.getCurrentMa(); - case ScanI2C::DeviceType::INA226: - return ina226Sensor.getCurrentMa(); + case ScanI2C::DeviceType::INA226: + return ina226Sensor.getCurrentMa(); - case ScanI2C::DeviceType::INA3221: - return ina3221Sensor.getCurrentMa(); + case ScanI2C::DeviceType::INA3221: + return ina3221Sensor.getCurrentMa(); } } } else if (config.power.device_battery_ina_address) { @@ -590,25 +588,25 @@ class AnalogBatteryLevel : public HasBatteryLevel if (ina_found.type != ScanI2C::DeviceType::NONE) { INA_ADDR_LOCAL = ina_found.address.address; switch (ina_found.type) { - case ScanI2C::DeviceType::INA219: - if (!ina219Sensor.isInitialized()) - return ina219Sensor.runOnce() > 0; - return ina219Sensor.isRunning(); + case ScanI2C::DeviceType::INA219: + if (!ina219Sensor.isInitialized()) + return ina219Sensor.runOnce() > 0; + return ina219Sensor.isRunning(); - case ScanI2C::DeviceType::INA226: - if (!ina226Sensor.isInitialized()) - return ina226Sensor.runOnce() > 0; - return ina226Sensor.isRunning(); + case ScanI2C::DeviceType::INA226: + if (!ina226Sensor.isInitialized()) + return ina226Sensor.runOnce() > 0; + return ina226Sensor.isRunning(); - case ScanI2C::DeviceType::INA260: - if (!ina260Sensor.isInitialized()) - return ina260Sensor.runOnce() > 0; - return ina260Sensor.isRunning(); + case ScanI2C::DeviceType::INA260: + if (!ina260Sensor.isInitialized()) + return ina260Sensor.runOnce() > 0; + return ina260Sensor.isRunning(); - case ScanI2C::DeviceType::INA3221: - if (!ina3221Sensor.isInitialized()) - return ina3221Sensor.runOnce() > 0; - return ina3221Sensor.isRunning(); + case ScanI2C::DeviceType::INA3221: + if (!ina3221Sensor.isInitialized()) + return ina3221Sensor.runOnce() > 0; + return ina3221Sensor.isRunning(); } } } else if (config.power.device_battery_ina_address) { diff --git a/src/detect/ScanI2C.cpp b/src/detect/ScanI2C.cpp index ea64a98aa..e107c0779 100644 --- a/src/detect/ScanI2C.cpp +++ b/src/detect/ScanI2C.cpp @@ -41,7 +41,6 @@ ScanI2C::FoundDevice ScanI2C::firstAccelerometer() const return firstOfOrNONE(8, types); } - ScanI2C::FoundDevice ScanI2C::firstINA() const { ScanI2C::DeviceType types[] = {INA219, INA226, INA260, INA3221}; diff --git a/src/detect/ScanI2C.h b/src/detect/ScanI2C.h index 9d35d1bf3..91dd7c82a 100644 --- a/src/detect/ScanI2C.h +++ b/src/detect/ScanI2C.h @@ -122,7 +122,7 @@ class ScanI2C FoundDevice firstKeyboard() const; FoundDevice firstAccelerometer() const; - + FoundDevice firstINA() const; FoundDevice firstRGBLED() const; diff --git a/src/main.cpp b/src/main.cpp index 54c057447..66a0c9179 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -180,7 +180,6 @@ ScanI2C::FoundDevice rgb_found = ScanI2C::FoundDevice(ScanI2C::DeviceType::NONE, ScanI2C::FoundDevice ina_found = ScanI2C::FoundDevice(ScanI2C::DeviceType::NONE, ScanI2C::ADDRESS_NONE); ScanI2C::DeviceAddress ina_Address = ScanI2C::ADDRESS_NONE; - #ifdef T_WATCH_S3 Adafruit_DRV2605 drv; #endif @@ -704,7 +703,7 @@ void setup() #if HAS_TELEMETRY && !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && !defined(ARCH_PORTDUINO) auto ina_Info = i2cScanner->firstINA(); -// ina_Address = ina_Info.type != ScanI2C::DeviceType::NONE ? ina_Info.address : ina_Address; + // ina_Address = ina_Info.type != ScanI2C::DeviceType::NONE ? ina_Info.address : ina_Address; LOG_DEBUG("ina_info = %i", ina_Info.type); #endif diff --git a/src/main.h b/src/main.h index fa9f230b1..c0bb818a4 100644 --- a/src/main.h +++ b/src/main.h @@ -34,7 +34,7 @@ extern uint8_t kb_model; extern ScanI2C::DeviceAddress rtc_found; extern ScanI2C::DeviceAddress accelerometer_found; extern ScanI2C::FoundDevice rgb_found; -//extern ScanI2C::DeviceAddress ina_Address; +// extern ScanI2C::DeviceAddress ina_Address; extern ScanI2C::FoundDevice ina_found; extern bool eink_found;