1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-16 12:55:19 +03:00

Abstracted the PG backup and restore for use in multiple places

This commit is contained in:
Bruce Luckcuck 2018-05-21 21:31:01 -04:00
parent fc2f01cdf7
commit 40a88ada81

View file

@ -215,6 +215,16 @@ static const char * const *sensorHardwareNames[] = {
}; };
#endif // USE_SENSOR_NAMES #endif // USE_SENSOR_NAMES
static void backupPgConfig(const pgRegistry_t *pg)
{
memcpy(pg->copy, pg->address, pg->size);
}
static void restorePgConfig(const pgRegistry_t *pg)
{
memcpy(pg->address, pg->copy, pg->size);
}
static void cliPrint(const char *str) static void cliPrint(const char *str)
{ {
while (*str) { while (*str) {
@ -3081,7 +3091,7 @@ void cliPrintVarDefault(const clivalue_t *value)
if (pg) { if (pg) {
const char *defaultFormat = "Default value: "; const char *defaultFormat = "Default value: ";
const int valueOffset = getValueOffset(value); const int valueOffset = getValueOffset(value);
memcpy(pg->copy, pg->address, pg->size); backupPgConfig(pg);
pgReset(pg); pgReset(pg);
const bool equalsDefault = valuePtrEqualsDefault(value, pg->copy + valueOffset, pg->address + valueOffset); const bool equalsDefault = valuePtrEqualsDefault(value, pg->copy + valueOffset, pg->address + valueOffset);
if (!equalsDefault) { if (!equalsDefault) {
@ -3089,7 +3099,7 @@ void cliPrintVarDefault(const clivalue_t *value)
printValuePointer(value, (uint8_t*)pg->address + valueOffset, false); printValuePointer(value, (uint8_t*)pg->address + valueOffset, false);
cliPrintLinefeed(); cliPrintLinefeed();
} }
memcpy(pg->address, pg->copy, pg->size); restorePgConfig(pg);
} }
} }
@ -3891,7 +3901,7 @@ static void backupConfigs(void)
{ {
// make copies of configs to do differencing // make copies of configs to do differencing
PG_FOREACH(pg) { PG_FOREACH(pg) {
memcpy(pg->copy, pg->address, pg->size); backupPgConfig(pg);
} }
configIsInCopy = true; configIsInCopy = true;
@ -3900,7 +3910,7 @@ static void backupConfigs(void)
static void restoreConfigs(void) static void restoreConfigs(void)
{ {
PG_FOREACH(pg) { PG_FOREACH(pg) {
memcpy(pg->address, pg->copy, pg->size); restorePgConfig(pg);
} }
configIsInCopy = false; configIsInCopy = false;