/* * SPDX-License-Identifier: AGPL-3.0-only * Copyright (c) Camden Dixie O'Brien */ #ifndef CONFIG_H #define CONFIG_H #include #define CONFIG_MAX_VALUE_SIZE 32U /** * Callback type for config updates */ typedef void (*ConfigCallback)(const char *value); /** * Initialize the configuration module. * * If there is a saved configuration, it will be loaded. Otherwise, * the default configuration will be loaded and saved. */ void config_init(void); /** * Set the device's hostname. * * The argument should be a null-terminated string. If the maximum * length is exceeded, the value will still be used, but will be * truncated. */ void config_set_hostname(const char *hostname); /** * Write the device's hostname into the given buffer. * * The length of the hostname is returned. If the value's size exceeds * the size of the buffer, nothing will be written to the buffer but * the length is still returned. */ size_t config_get_hostname(char *buffer, size_t buffer_size); /** * Add a callback for hostname updates. * * The function specified in the argument will be invoked whenever a * the hostname is updated, with the new value as its argument. The * lifetime of the passed argument will be static, but the value may * be modified once the callback returns. */ void config_add_hostname_callback(ConfigCallback callback); #endif