diff --git a/software/apps/slave_node/src/main.c b/software/apps/slave_node/src/main.c index dc3789c..ab74f3a 100644 --- a/software/apps/slave_node/src/main.c +++ b/software/apps/slave_node/src/main.c @@ -7,7 +7,7 @@ * * @copyright Copyright (c) 2020 PHYTEC Messtechnik GmbH * @copyright Copyright (c) 2022 Nordic Semiconductor ASA - * @license SPDX-License-Identifier: Apache-2.0 + * @copyright SPDX-License-Identifier: Apache-2.0 */ #include @@ -22,10 +22,14 @@ #include #include "modbus_bridge.h" +/** @brief Logging module registration. */ LOG_MODULE_REGISTER(mbs_sample, LOG_LEVEL_INF); +/** @brief Major version of the application firmware. */ #define APP_VERSION_MAJOR 1 +/** @brief Minor version of the application firmware. */ #define APP_VERSION_MINOR 0 +/** @brief Patch version of the application firmware. */ #define APP_VERSION_PATCH 0 /** @@ -88,6 +92,7 @@ static uint16_t device_status = 0; static uint16_t watchdog_timeout_s = 0; static struct k_timer watchdog_timer; +/** @brief Size of the buffer for firmware update chunks. */ #define FWU_BUFFER_SIZE 256 static uint8_t fwu_buffer[FWU_BUFFER_SIZE]; static uint32_t fwu_chunk_offset = 0; @@ -281,15 +286,55 @@ static struct modbus_user_callbacks mbs_cbs = { .input_reg_rd = input_reg_rd, }; +/** @brief Device tree node for the Modbus serial interface. */ #define MODBUS_NODE DT_COMPAT_GET_ANY_STATUS_OKAY(zephyr_modbus_serial) -// Settings and other functions omitted for brevity... + +/** + * @brief Reconfigures the Modbus interface with new parameters. + * @param baudrate New baud rate. + * @param unit_id New unit ID. + * @return 0 on success, negative error code otherwise. + */ int modbus_reconfigure(uint32_t baudrate, uint8_t unit_id) { /* ... */ return 0; } +/** + * @brief Gets the current Modbus baud rate. + * @return Current baud rate. + */ uint32_t modbus_get_baudrate(void) { return server_param.serial.baud; } +/** + * @brief Gets the current Modbus unit ID. + * @return Current unit ID. + */ uint8_t modbus_get_unit_id(void) { return server_param.server.unit_id; } +/** + * @brief Sets the maximum valve opening time. + * @param seconds Time in seconds. + */ void valve_set_max_open_time(uint16_t seconds) { max_opening_time_s = seconds; settings_save_one("valve/max_open_time", &max_opening_time_s, sizeof(max_opening_time_s)); } +/** + * @brief Sets the maximum valve closing time. + * @param seconds Time in seconds. + */ void valve_set_max_close_time(uint16_t seconds) { max_closing_time_s = seconds; settings_save_one("valve/max_close_time", &max_closing_time_s, sizeof(max_closing_time_s)); } +/** + * @brief Gets the maximum valve opening time. + * @return Time in seconds. + */ uint16_t valve_get_max_open_time(void) { return max_opening_time_s; } +/** + * @brief Gets the maximum valve closing time. + * @return Time in seconds. + */ uint16_t valve_get_max_close_time(void) { return max_closing_time_s; } + +/** + * @brief Callback for loading settings from non-volatile storage. + * @param name Name of the setting. + * @param len Length of the setting value. + * @param read_cb Function to read the setting value. + * @param cb_arg Callback argument. + * @return 0 on success, negative error code otherwise. + */ static int settings_load_cb(const char *name, size_t len, settings_read_cb read_cb, void *cb_arg) { const char *next; int rc; @@ -311,9 +356,17 @@ static int settings_load_cb(const char *name, size_t len, settings_read_cb read_ } return -ENOENT; } + +/** @brief Settings handler definition for Modbus parameters. */ SETTINGS_STATIC_HANDLER_DEFINE(modbus, "modbus", NULL, settings_load_cb, NULL, NULL); +/** @brief Settings handler definition for valve parameters. */ SETTINGS_STATIC_HANDLER_DEFINE(valve, "valve", NULL, settings_load_cb, NULL, NULL); +/** + * @brief Initializes the Modbus server interface. + * + * @return 0 on success, negative error code otherwise. + */ static int init_modbus_server(void) { const char iface_name[] = {DEVICE_DT_NAME(MODBUS_NODE)};