|
|
|
//
|
|
|
|
// Created by MightyPork on 2017/11/26.
|
|
|
|
//
|
|
|
|
// This module manages the INI and binary settings storage.
|
|
|
|
//
|
|
|
|
|
|
|
|
#ifndef GEX_SETTINGS_H
|
|
|
|
#define GEX_SETTINGS_H
|
|
|
|
|
|
|
|
#include "platform.h"
|
|
|
|
#include "utils/ini_writer.h"
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Load settings from flash (system settings + units).
|
|
|
|
* Unit registry must be already initialized.
|
|
|
|
*
|
|
|
|
* This should happen only once, during the boot sequence.
|
|
|
|
*/
|
|
|
|
void settings_load(void);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Save all settings to flash.
|
|
|
|
* This may be called multiple times after user changes the config file.
|
|
|
|
*/
|
|
|
|
void settings_save(void);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Call this before any of the ini read stuff
|
|
|
|
*
|
|
|
|
* Resets everything to defaults so we have a clean start.
|
|
|
|
*
|
|
|
|
* NOTE: Should the file be received only partially, this may corrupt the settings.
|
|
|
|
* For this reason we don't commit it to flash immediately but require user to replace
|
|
|
|
* the LOCK jumper before unplugging the device.
|
|
|
|
*/
|
|
|
|
void settings_load_ini_begin(void);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Load settings from INI kv pair.
|
|
|
|
*/
|
|
|
|
void settings_load_ini_key(const char *restrict section, const char *restrict key, const char *restrict value);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Call this before any of the ini read stuff
|
|
|
|
*
|
|
|
|
* Resets everything to defaults so we have a clean start.
|
|
|
|
*
|
|
|
|
* NOTE: Should the file be received only partially, this may corrupt the settings.
|
|
|
|
* For this reason we don't commit it to flash immediately but require user to replace
|
|
|
|
* the LOCK jumper before unplugging the device.
|
|
|
|
*/
|
|
|
|
void settings_load_ini_end(void);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Write UNITS.INI to a iniwriter
|
|
|
|
* @param iw - writer handle
|
|
|
|
*/
|
|
|
|
void settings_build_units_ini(IniWriter *iw);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Write SYSTEM.INI to iniwriter
|
|
|
|
* @param iw - writer handle
|
|
|
|
*/
|
|
|
|
void settings_build_system_ini(IniWriter *iw);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Write UNITS.TXT to iniwriter
|
|
|
|
* @param iw - writer handle
|
|
|
|
*/
|
|
|
|
void settings_build_pinout_txt(IniWriter *iw);
|
|
|
|
|
|
|
|
#endif //GEX_SETTINGS_H
|