- Integrated current limit settings in `nconfig`. - Enabled API support for managing current limits. - Added UI components for configuring current limits. - Implemented backend logic for handling validations and updates. Signed-off-by: YoungSoo Shin <shinys000114@gmail.com>
93 lines
3.5 KiB
C
93 lines
3.5 KiB
C
/**
|
|
* @file nconfig.h
|
|
* @brief Provides an interface for managing system configuration using Non-Volatile Storage (NVS).
|
|
*/
|
|
|
|
#ifndef NCONFIG_H
|
|
#define NCONFIG_H
|
|
|
|
#include "esp_err.h"
|
|
#include "nvs.h"
|
|
|
|
#define NCONFIG_NVS_NAMESPACE "er" ///< The NVS namespace where all configurations are stored.
|
|
#define NCONFIG_NOT_FOUND ESP_ERR_NVS_NOT_FOUND ///< Alias for the NVS not found error code.
|
|
|
|
/**
|
|
* @brief Initializes the nconfig module.
|
|
*
|
|
* This function initializes the Non-Volatile Storage (NVS) component, which is required
|
|
* for all other nconfig operations. It should be called once at application startup.
|
|
* @return ESP_OK on success, or an error code on failure.
|
|
*/
|
|
esp_err_t init_nconfig();
|
|
|
|
/**
|
|
* @brief Defines the keys for all configuration values managed by nconfig.
|
|
*/
|
|
enum nconfig_type
|
|
{
|
|
WIFI_SSID, ///< The SSID of the Wi-Fi network to connect to (STA mode).
|
|
WIFI_PASSWORD, ///< The password for the Wi-Fi network (STA mode).
|
|
WIFI_MODE, ///< The Wi-Fi operating mode (e.g., "sta" or "apsta").
|
|
AP_SSID, ///< The SSID for the device's Access Point mode.
|
|
AP_PASSWORD, ///< The password for the device's Access Point mode.
|
|
NETIF_HOSTNAME, ///< The hostname of the device on the network.
|
|
NETIF_IP, ///< The static IP address for the STA interface.
|
|
NETIF_GATEWAY, ///< The gateway address for the STA interface.
|
|
NETIF_SUBNET, ///< The subnet mask for the STA interface.
|
|
NETIF_DNS1, ///< The primary DNS server address.
|
|
NETIF_DNS2, ///< The secondary DNS server address.
|
|
NETIF_TYPE, ///< The network interface type (e.g., "dhcp" or "static").
|
|
UART_BAUD_RATE, ///< The baud rate for the UART communication.
|
|
VIN_CURRENT_LIMIT, ///< The maximum current limit for the VIN.
|
|
MAIN_CURRENT_LIMIT, ///< The maximum current limit for the MAIN out.
|
|
USB_CURRENT_LIMIT, ///< The maximum current limit for the USB out.
|
|
NCONFIG_TYPE_MAX, ///< Sentinel for the maximum number of configuration types.
|
|
};
|
|
|
|
/**
|
|
* @brief Checks if a specific configuration value has been set.
|
|
*
|
|
* @param type The configuration key to check.
|
|
* @return True if the value is not set, false otherwise.
|
|
*/
|
|
bool nconfig_value_is_not_set(enum nconfig_type type);
|
|
|
|
/**
|
|
* @brief Writes a configuration value to NVS.
|
|
*
|
|
* @param type The configuration key to write.
|
|
* @param data A pointer to the string data to be stored.
|
|
* @return ESP_OK on success, or an error code on failure.
|
|
*/
|
|
esp_err_t nconfig_write(enum nconfig_type type, const char* data);
|
|
|
|
/**
|
|
* @brief Gets the length of a stored string configuration value.
|
|
*
|
|
* @param type The configuration key to query.
|
|
* @param[out] len A pointer to a size_t variable to store the length.
|
|
* @return ESP_OK on success, NCONFIG_NOT_FOUND if the key doesn't exist, or another error code.
|
|
*/
|
|
esp_err_t nconfig_get_str_len(enum nconfig_type type, size_t* len);
|
|
|
|
/**
|
|
* @brief Reads a configuration value from NVS.
|
|
*
|
|
* @param type The configuration key to read.
|
|
* @param[out] data A buffer to store the read data.
|
|
* @param len The length of the buffer. It should be large enough to hold the value.
|
|
* @return ESP_OK on success, or an error code on failure.
|
|
*/
|
|
esp_err_t nconfig_read(enum nconfig_type type, char* data, size_t len);
|
|
|
|
/**
|
|
* @brief Deletes a configuration key-value pair from NVS.
|
|
*
|
|
* @param type The configuration key to delete.
|
|
* @return ESP_OK on success, or an error code on failure.
|
|
*/
|
|
esp_err_t nconfig_delete(enum nconfig_type type);
|
|
|
|
#endif // NCONFIG_H
|