port adc.multiplier command

This commit is contained in:
liquidraver
2026-04-22 10:49:41 +02:00
parent de4bcd9a52
commit d03deda313
3 changed files with 39 additions and 2 deletions
+29 -2
View File
@@ -135,14 +135,41 @@ uint16_t ZephyrBoard::getBattMilliVolts()
return 0;
}
raw /= valid_samples;
uint16_t mv = (uint16_t)((VBAT_MV_MULTIPLIER * (int64_t)raw) / 4096);
LOG_DBG("Battery: raw=%d multiplier=%d mv=%u", (int)raw, VBAT_MV_MULTIPLIER, mv);
int64_t mult = (_adc_multiplier_override != 0.0f)
? (int64_t)_adc_multiplier_override
: (int64_t)VBAT_MV_MULTIPLIER;
uint16_t mv = (uint16_t)((mult * (int64_t)raw) / 4096);
LOG_DBG("Battery: raw=%d multiplier=%lld mv=%u", (int)raw, (long long)mult, mv);
return mv;
#else
return 0;
#endif
}
bool ZephyrBoard::setAdcMultiplier(float multiplier)
{
#if DT_NODE_EXISTS(DT_PATH(zephyr_user)) && \
DT_NODE_HAS_PROP(DT_PATH(zephyr_user), io_channels)
_adc_multiplier_override = multiplier;
return true;
#else
(void)multiplier;
return false;
#endif
}
float ZephyrBoard::getAdcMultiplier() const
{
#if DT_NODE_EXISTS(DT_PATH(zephyr_user)) && \
DT_NODE_HAS_PROP(DT_PATH(zephyr_user), io_channels)
return (_adc_multiplier_override != 0.0f)
? _adc_multiplier_override
: (float)VBAT_MV_MULTIPLIER;
#else
return 0.0f;
#endif
}
float ZephyrBoard::getMCUTemperature()
{
/* nRF52840 die temperature sensor - "nordic,nrf-temp" at 0x4000c000