implemented reset with excludes

This commit is contained in:
Andreas Antener
2015-01-30 11:21:05 +01:00
committed by Lorenz Meier
parent 4b1ddba817
commit 7c63be7450
2 changed files with 37 additions and 0 deletions
+25
View File
@@ -488,6 +488,31 @@ param_reset_all(void)
param_notify_changes();
}
void
param_reset_excludes(const char* excludes[], int num_excludes)
{
param_lock();
param_t param;
for (param = 0; handle_in_range(param); param++) {
const char* name = param_name(param);
for (int index = 0, len = strlen(excludes[index]); index < num_excludes; index ++) {
if((excludes[index][len - 1] == '*'
&& strncmp(name, excludes[index], strlen(excludes[index]))) == 0
|| strcmp(name, excludes[index]) == 0) {
param_reset(param);
}
}
}
param_unlock();
param_notify_changes();
}
static const char *param_default_file = "/eeprom/parameters";
static char *param_user_file = NULL;
+12
View File
@@ -189,6 +189,18 @@ __EXPORT int param_reset(param_t param);
*/
__EXPORT void param_reset_all(void);
/**
* Reset all parameters to their default values except for excluded parameters.
*
* This function also releases the storage used by struct parameters.
*
* @param excludes Array of param names to exclude from resetting. Use a wildcard
* at the end to exclude parameters with a certain prefix.
* @param num_excludes The number of excludes provided.
*/
__EXPORT void param_reset_excludes(const char* excludes[], int num_excludes);
/**
* Export changed parameters to a file.
*