This commit introduces configurable obstacle detection thresholds for the valve, allowing them to be set and persisted via the Zephyr settings subsystem and controlled through the shell and Modbus tool.
- `software/lib/valve/Kconfig`: Added new Kconfig options `VALVE_OBSTACLE_THRESHOLD_OPEN_MA` and `VALVE_OBSTACLE_THRESHOLD_CLOSE_MA` for compile-time configuration and default values.
- `software/include/lib/valve.h`: Removed hardcoded defines and added API functions for setting and getting obstacle thresholds.
- `software/lib/valve/valve.c`:
- Updated `valve_work_handler` to use the new configurable obstacle thresholds.
- Integrated loading and saving of obstacle thresholds via the settings subsystem in `valve_init`.
- Implemented the new setter and getter functions for obstacle thresholds.
- Updated the `LOG_INF` message in `valve_init` to display the new obstacle threshold values.
- `software/apps/slave_node/prj.conf`: Added default values for the new Kconfig options.
- `software/lib/shell_valve/shell_valve.c`: Added new shell commands `valve set_obstacle_open` and `valve set_obstacle_close` to modify the obstacle thresholds, and updated `valve show` to display them.
- `software/tools/modbus_tool/modbus_tool.py`:
- Defined new Modbus holding registers (`REG_HOLDING_OBSTACLE_THRESHOLD_OPEN_MA`, `REG_HOLDING_OBSTACLE_THRESHOLD_CLOSE_MA`).
- Updated `poll_status` to read these new registers.
- Modified the `main_menu` to include "Set Obstacle Open" and "Set Obstacle Close" options in the settings menu, allowing users to view and modify these parameters.
- `software/lib/modbus_server/modbus_server.c`:
- Updated `holding_reg_rd` to read the new obstacle threshold registers.
- Updated `holding_reg_wr` to write to the new obstacle threshold registers.
- Removed incorrect `REG_HOLDING_END_CURRENT_THRESHOLD_OPEN_MA` and `REG_HOLDING_END_CURRENT_THRESHOLD_CLOSE_MA` cases from `input_reg_rd`.
- `software/include/lib/modbus_registers.h`: Created a new header file to centralize Modbus register definitions, which were previously hardcoded in `modbus_tool.py`.
Signed-off-by: Eduard Iten <eduard@iten.pro>
32 lines
904 B
Plaintext
32 lines
904 B
Plaintext
config LIB_VALVE
|
|
bool "Enable Valve Library"
|
|
default y
|
|
help
|
|
Enable the Valve Library.
|
|
|
|
if LIB_VALVE
|
|
config LOG_VALVE_LEVEL
|
|
int "Valve Log Level"
|
|
default 3
|
|
help
|
|
Set the log level for the Valve Library.
|
|
0 = None, 1 = Error, 2 = Warning, 3 = Info, 4 = Debug
|
|
|
|
config VALVE_OBSTACLE_THRESHOLD_OPEN_MA
|
|
int "Obstacle Threshold Open (mA)"
|
|
default 200
|
|
help
|
|
Set the current threshold in milliamps for obstacle detection
|
|
during valve opening. If the motor current exceeds this value,
|
|
an obstacle is detected and the valve stops.
|
|
|
|
config VALVE_OBSTACLE_THRESHOLD_CLOSE_MA
|
|
int "Obstacle Threshold Close (mA)"
|
|
default 200
|
|
help
|
|
Set the current threshold in milliamps for obstacle detection
|
|
during valve closing. If the motor current exceeds this value,
|
|
an obstacle is detected and the valve stops.
|
|
|
|
endif # LIB_VALVE
|