Add saving to EEPROM on bootloader entry
This commit is contained in:
parent
6a7213de60
commit
d6269952a6
@ -42,7 +42,7 @@ void Statistics::callback()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (clk::millis() >= m_lastTemperatureWriteback + TEMPERATURE_WRITEBACK_DELAY) {
|
if (clk::millis() >= m_lastTemperatureWriteback + TEMPERATURE_WRITEBACK_DELAY) {
|
||||||
writeTemperatureHistogram();
|
saveTemperatureHistogram();
|
||||||
m_lastTemperatureWriteback = clk::millis();
|
m_lastTemperatureWriteback = clk::millis();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -105,6 +105,13 @@ uint32_t Statistics::getHistogram(const int8_t &temperature)
|
|||||||
return m_temperatureHistogram[clampTemperature(temperature)];
|
return m_temperatureHistogram[clampTemperature(temperature)];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Statistics::saveTemperatureHistogram()
|
||||||
|
{
|
||||||
|
for (uint8_t i = 0; i < g_eepTemperatureHistogram.size(); ++i) {
|
||||||
|
g_eepTemperatureHistogram[i] = m_temperatureHistogram[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t Statistics::clampTemperature(const int8_t &temperature)
|
uint8_t Statistics::clampTemperature(const int8_t &temperature)
|
||||||
{
|
{
|
||||||
if (temperature < 0)
|
if (temperature < 0)
|
||||||
@ -113,10 +120,3 @@ uint8_t Statistics::clampTemperature(const int8_t &temperature)
|
|||||||
return TEMPERATURE_RANGE - 1;
|
return TEMPERATURE_RANGE - 1;
|
||||||
return static_cast<uint8_t>(temperature);
|
return static_cast<uint8_t>(temperature);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Statistics::writeTemperatureHistogram()
|
|
||||||
{
|
|
||||||
for (uint8_t i = 0; i < g_eepTemperatureHistogram.size(); ++i) {
|
|
||||||
g_eepTemperatureHistogram[i] = m_temperatureHistogram[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -17,6 +17,8 @@ class Statistics {
|
|||||||
static uint32_t getHighestHistogramSamples();
|
static uint32_t getHighestHistogramSamples();
|
||||||
static uint32_t getHistogram(const int8_t &temperature);
|
static uint32_t getHistogram(const int8_t &temperature);
|
||||||
|
|
||||||
|
static void saveTemperatureHistogram();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static constexpr auto TEMPERATURE_WRITEBACK_DELAY = 1'800'000;
|
static constexpr auto TEMPERATURE_WRITEBACK_DELAY = 1'800'000;
|
||||||
static constexpr auto TEMPERATURE_SAMPLE_DELAY = 1'000;
|
static constexpr auto TEMPERATURE_SAMPLE_DELAY = 1'000;
|
||||||
@ -26,5 +28,4 @@ class Statistics {
|
|||||||
static uint32_t m_temperatureHistogram[TEMPERATURE_RANGE];
|
static uint32_t m_temperatureHistogram[TEMPERATURE_RANGE];
|
||||||
|
|
||||||
static uint8_t clampTemperature(const int8_t &temperature);
|
static uint8_t clampTemperature(const int8_t &temperature);
|
||||||
static void writeTemperatureHistogram();
|
|
||||||
};
|
};
|
||||||
|
@ -218,6 +218,9 @@ class Terminal {
|
|||||||
|
|
||||||
static void handleBootloader()
|
static void handleBootloader()
|
||||||
{
|
{
|
||||||
|
m_serial << F("Saving statistics to EEPROM") << detail::ENDL;
|
||||||
|
Statistics::saveTemperatureHistogram();
|
||||||
|
|
||||||
m_serial << F("Entering bootloader...") << detail::ENDL;
|
m_serial << F("Entering bootloader...") << detail::ENDL;
|
||||||
m_serial.flushTx();
|
m_serial.flushTx();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user