#26: Add over temperature monitor settings to eeprom
This commit is contained in:
parent
e614eaa23b
commit
7c5b60ec6b
@ -29,4 +29,8 @@ int settings_eeprom_save_calibration(float sens, float offset, bool active);
|
||||
|
||||
int settings_eeprom_load_calibration(float *sens, float *offset, bool *active);
|
||||
|
||||
int settings_eeprom_save_overtemp_limit(float overtemp_limit);
|
||||
|
||||
int settings_eeprom_load_overtemp_limit(float *overtemp_limit);
|
||||
|
||||
#endif /* __SETTINGS_SETTINGS_EEPROM_H__ */
|
||||
|
@ -39,7 +39,7 @@ struct eeprom_calibration_settings {
|
||||
#define EEPROM_OVER_TEMP_CONFIG_BASE_ADDR (EEPROM_CALIBRATION_BASE_ADDR + sizeof(struct eeprom_calibration_settings))
|
||||
struct eeprom_over_temp_config {
|
||||
float over_temperature;
|
||||
float over_temperature_redundant;
|
||||
uint32_t over_temp_crc;
|
||||
};
|
||||
|
||||
static bool check_eeprom_header(void)
|
||||
@ -144,3 +144,39 @@ int settings_eeprom_load_calibration(float *sens, float *offset, bool *active)
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int settings_eeprom_save_overtemp_limit(float overtemp_limit)
|
||||
{
|
||||
int res;
|
||||
struct eeprom_over_temp_config over_temp_conf_entry;
|
||||
|
||||
over_temp_conf_entry.over_temperature = overtemp_limit;
|
||||
crc_unit_reset();
|
||||
crc_unit_input_array((uint32_t *)&over_temp_conf_entry, 1);
|
||||
over_temp_conf_entry.over_temp_crc = crc_unit_get_crc();
|
||||
res = spi_eeprom_write(EEPROM_OVER_TEMP_CONFIG_BASE_ADDR, (const uint8_t *)&over_temp_conf_entry,
|
||||
sizeof(over_temp_conf_entry));
|
||||
|
||||
return res ? -1 : 0;
|
||||
}
|
||||
|
||||
int settings_eeprom_load_overtemp_limit(float *overtemp_limit)
|
||||
{
|
||||
int res;
|
||||
struct eeprom_over_temp_config over_temp_conf_entry;
|
||||
|
||||
if (!overtemp_limit)
|
||||
return -1001;
|
||||
res = spi_eeprom_read(EEPROM_OVER_TEMP_CONFIG_BASE_ADDR, (uint8_t *)&over_temp_conf_entry,
|
||||
sizeof(struct eeprom_over_temp_config));
|
||||
if (res)
|
||||
return -2;
|
||||
|
||||
crc_unit_reset();
|
||||
crc_unit_input_array((uint32_t *)&over_temp_conf_entry, 1);
|
||||
if (crc_unit_get_crc() != over_temp_conf_entry.over_temp_crc)
|
||||
return -1;
|
||||
|
||||
*overtemp_limit = over_temp_conf_entry.over_temperature;
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user