mirror of
https://github.com/liquidraver/ZephCore.git
synced 2026-09-02 15:23:42 +00:00
port adc.multiplier command
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -13,6 +13,8 @@ class ZephyrBoard : public MainBoard {
|
||||
public:
|
||||
uint16_t getBattMilliVolts() override;
|
||||
float getMCUTemperature() override;
|
||||
bool setAdcMultiplier(float multiplier) override;
|
||||
float getAdcMultiplier() const override;
|
||||
const char *getManufacturerName() const override;
|
||||
void onBeforeTransmit() override;
|
||||
void onAfterTransmit() override;
|
||||
@@ -22,6 +24,11 @@ public:
|
||||
bool startOTAUpdate(const char *id, char reply[]) override; /* Reboot into BLE OTA DFU */
|
||||
void clearBootloaderMagic(); /* Clear stale GPREGRET values at startup */
|
||||
uint8_t getStartupReason() const override;
|
||||
|
||||
private:
|
||||
/* Runtime override for vbat-mv-multiplier. Units match DT `vbat-mv-multiplier`
|
||||
* (mV scale such that `mv = multiplier * raw / 4096`). 0 = use DT default. */
|
||||
float _adc_multiplier_override = 0.0f;
|
||||
};
|
||||
|
||||
} /* namespace mesh */
|
||||
|
||||
@@ -669,6 +669,9 @@ int main(void)
|
||||
lora_radio.setRxBoost(companion_mesh.prefs.rx_boost != 0);
|
||||
lora_radio.enableRxDutyCycle(companion_mesh.prefs.rx_duty_cycle != 0);
|
||||
|
||||
/* Restore runtime ADC multiplier override (0 = keep DT default) */
|
||||
zephyr_board.setAdcMultiplier(companion_mesh.prefs.adc_multiplier);
|
||||
|
||||
/* Initialize mesh event object */
|
||||
k_event_init(&mesh_events);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user