added formatting
This commit is contained in:
@@ -18,7 +18,7 @@
|
||||
* This function sets up the necessary ADC channels and configurations.
|
||||
* It should be called once before any other function in this library.
|
||||
* In simulated mode, it logs the simulated values.
|
||||
*
|
||||
*
|
||||
* @return 0 on success, or a negative error code on failure.
|
||||
*/
|
||||
int adc_sensor_init(void);
|
||||
@@ -28,7 +28,7 @@ int adc_sensor_init(void);
|
||||
*
|
||||
* This function reads the value from the corresponding ADC channel and converts
|
||||
* it to millivolts.
|
||||
*
|
||||
*
|
||||
* @return The supply voltage in millivolts (mV).
|
||||
*/
|
||||
uint16_t adc_sensor_get_voltage_mv(void);
|
||||
@@ -38,7 +38,7 @@ uint16_t adc_sensor_get_voltage_mv(void);
|
||||
*
|
||||
* This function reads the value from the motor driver's sense pin via ADC
|
||||
* and converts it to milliamps. This is used for end-stop detection.
|
||||
*
|
||||
*
|
||||
* @return The motor current in milliamps (mA).
|
||||
*/
|
||||
uint16_t adc_sensor_get_current_ma(void);
|
||||
|
||||
@@ -44,4 +44,4 @@ void fwu_handler(uint16_t addr, uint16_t reg);
|
||||
*/
|
||||
uint16_t fwu_get_last_chunk_crc(void);
|
||||
|
||||
#endif // FWU_H
|
||||
#endif // FWU_H
|
||||
|
||||
@@ -7,116 +7,120 @@
|
||||
* @file modbus_server.h
|
||||
* @brief API for the Modbus server implementation.
|
||||
*
|
||||
* This file defines the Modbus register map and provides functions to initialize
|
||||
* and manage the Modbus server.
|
||||
* This file defines the Modbus register map and provides functions to
|
||||
* initialize and manage the Modbus server.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Modbus Input Register Addresses (Read-Only).
|
||||
* @see docs/modbus-registers.de.md
|
||||
*/
|
||||
enum
|
||||
{
|
||||
/**
|
||||
* @brief Kombiniertes Status-Register für das Ventil.
|
||||
* High-Byte: Bewegung (0=Idle, 1=Öffnet, 2=Schliesst, 3=Fehler).
|
||||
* Low-Byte: Zustand (0=Geschlossen, 1=Geöffnet).
|
||||
*/
|
||||
REG_INPUT_VALVE_STATE_MOVEMENT = 0x0000,
|
||||
/**
|
||||
* @brief Aktueller Motorstrom in Milliampere (mA).
|
||||
*/
|
||||
REG_INPUT_MOTOR_CURRENT_MA = 0x0001,
|
||||
/**
|
||||
* @brief Bitmaske der digitalen Eingänge. Bit 0: Eingang 1, Bit 1: Eingang 2. 1=Aktiv.
|
||||
*/
|
||||
REG_INPUT_DIGITAL_INPUTS_STATE = 0x0020,
|
||||
/**
|
||||
* @brief Event-Flags für Taster (Clear-on-Read). Bit 0: Taster 1 gedrückt. Bit 1: Taster 2 gedrückt.
|
||||
*/
|
||||
REG_INPUT_BUTTON_EVENTS = 0x0021,
|
||||
/**
|
||||
* @brief Firmware-Version, z.B. 0x0102 für v1.2.
|
||||
*/
|
||||
REG_INPUT_FIRMWARE_VERSION_MAJOR_MINOR = 0x00F0,
|
||||
/**
|
||||
* @brief Firmware-Version Patch-Level, z.B. 3 für v1.2.3.
|
||||
*/
|
||||
REG_INPUT_FIRMWARE_VERSION_PATCH = 0x00F1,
|
||||
/**
|
||||
* @brief Gerätestatus (0=OK, 1=Allgemeiner Fehler).
|
||||
*/
|
||||
REG_INPUT_DEVICE_STATUS = 0x00F2,
|
||||
/**
|
||||
* @brief Untere 16 Bit der Uptime in Sekunden.
|
||||
*/
|
||||
REG_INPUT_UPTIME_SECONDS_LOW = 0x00F3,
|
||||
/**
|
||||
* @brief Obere 16 Bit der Uptime in Sekunden.
|
||||
*/
|
||||
REG_INPUT_UPTIME_SECONDS_HIGH = 0x00F4,
|
||||
/**
|
||||
* @brief Aktuelle Versorgungsspannung in Millivolt (mV).
|
||||
*/
|
||||
REG_INPUT_SUPPLY_VOLTAGE_MV = 0x00F5,
|
||||
/**
|
||||
* @brief CRC16 des zuletzt im Puffer empfangenen Daten-Chunks für das Firmware-Update.
|
||||
*/
|
||||
REG_INPUT_FWU_LAST_CHUNK_CRC = 0x0100
|
||||
enum {
|
||||
/**
|
||||
* @brief Kombiniertes Status-Register für das Ventil.
|
||||
* High-Byte: Bewegung (0=Idle, 1=Öffnet, 2=Schliesst, 3=Fehler).
|
||||
* Low-Byte: Zustand (0=Geschlossen, 1=Geöffnet).
|
||||
*/
|
||||
REG_INPUT_VALVE_STATE_MOVEMENT = 0x0000,
|
||||
/**
|
||||
* @brief Aktueller Motorstrom in Milliampere (mA).
|
||||
*/
|
||||
REG_INPUT_MOTOR_CURRENT_MA = 0x0001,
|
||||
/**
|
||||
* @brief Bitmaske der digitalen Eingänge. Bit 0: Eingang 1, Bit 1: Eingang 2.
|
||||
* 1=Aktiv.
|
||||
*/
|
||||
REG_INPUT_DIGITAL_INPUTS_STATE = 0x0020,
|
||||
/**
|
||||
* @brief Event-Flags für Taster (Clear-on-Read). Bit 0: Taster 1 gedrückt.
|
||||
* Bit 1: Taster 2 gedrückt.
|
||||
*/
|
||||
REG_INPUT_BUTTON_EVENTS = 0x0021,
|
||||
/**
|
||||
* @brief Firmware-Version, z.B. 0x0102 für v1.2.
|
||||
*/
|
||||
REG_INPUT_FIRMWARE_VERSION_MAJOR_MINOR = 0x00F0,
|
||||
/**
|
||||
* @brief Firmware-Version Patch-Level, z.B. 3 für v1.2.3.
|
||||
*/
|
||||
REG_INPUT_FIRMWARE_VERSION_PATCH = 0x00F1,
|
||||
/**
|
||||
* @brief Gerätestatus (0=OK, 1=Allgemeiner Fehler).
|
||||
*/
|
||||
REG_INPUT_DEVICE_STATUS = 0x00F2,
|
||||
/**
|
||||
* @brief Untere 16 Bit der Uptime in Sekunden.
|
||||
*/
|
||||
REG_INPUT_UPTIME_SECONDS_LOW = 0x00F3,
|
||||
/**
|
||||
* @brief Obere 16 Bit der Uptime in Sekunden.
|
||||
*/
|
||||
REG_INPUT_UPTIME_SECONDS_HIGH = 0x00F4,
|
||||
/**
|
||||
* @brief Aktuelle Versorgungsspannung in Millivolt (mV).
|
||||
*/
|
||||
REG_INPUT_SUPPLY_VOLTAGE_MV = 0x00F5,
|
||||
/**
|
||||
* @brief CRC16 des zuletzt im Puffer empfangenen Daten-Chunks für das
|
||||
* Firmware-Update.
|
||||
*/
|
||||
REG_INPUT_FWU_LAST_CHUNK_CRC = 0x0100
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Modbus Holding Register Addresses (Read/Write).
|
||||
* @see docs/modbus-registers.de.md
|
||||
*/
|
||||
enum
|
||||
{
|
||||
/**
|
||||
* @brief Ventilsteuerungsbefehl (1=Öffnen, 2=Schliessen, 0=Bewegung stoppen).
|
||||
*/
|
||||
REG_HOLDING_VALVE_COMMAND = 0x0000,
|
||||
/**
|
||||
* @brief Sicherheits-Timeout in Sekunden für den Öffnen-Vorgang.
|
||||
*/
|
||||
REG_HOLDING_MAX_OPENING_TIME_S = 0x0001,
|
||||
/**
|
||||
* @brief Sicherheits-Timeout in Sekunden für den Schliessen-Vorgang.
|
||||
*/
|
||||
REG_HOLDING_MAX_CLOSING_TIME_S = 0x0002,
|
||||
/**
|
||||
* @brief Bitmaske zum Lesen und Schreiben der digitalen Ausgänge. Bit 0: Ausgang 1, Bit 1: Ausgang 2. 1=AN, 0=AUS.
|
||||
*/
|
||||
REG_HOLDING_DIGITAL_OUTPUTS_STATE = 0x0010,
|
||||
/**
|
||||
* @brief Timeout des Fail-Safe-Watchdogs in Sekunden. 0=Deaktiviert.
|
||||
*/
|
||||
REG_HOLDING_WATCHDOG_TIMEOUT_S = 0x00F0,
|
||||
/**
|
||||
* @brief Schreiben von 1 startet das Gerät neu.
|
||||
*/
|
||||
REG_HOLDING_DEVICE_RESET = 0x00F1,
|
||||
/**
|
||||
* @brief Befehl für das Firmware-Update.
|
||||
* 1: Verify Chunk - Slave schreibt den letzten Chunk ins Flash.
|
||||
* 2: Finalize Update - Installation abschliessen und neu starten.
|
||||
*/
|
||||
REG_HOLDING_FWU_COMMAND = 0x0100,
|
||||
/**
|
||||
* @brief Untere 16 Bit des 32-Bit-Offsets für den nächsten Firmware-Update-Chunk.
|
||||
*/
|
||||
REG_HOLDING_FWU_CHUNK_OFFSET_LOW = 0x0101,
|
||||
/**
|
||||
* @brief Obere 16 Bit des 32-Bit-Offsets für den nächsten Firmware-Update-Chunk.
|
||||
*/
|
||||
REG_HOLDING_FWU_CHUNK_OFFSET_HIGH = 0x0102,
|
||||
/**
|
||||
* @brief Grösse des nächsten Firmware-Update-Chunks in Bytes (max. 256).
|
||||
*/
|
||||
REG_HOLDING_FWU_CHUNK_SIZE = 0x0103,
|
||||
/**
|
||||
* @brief Startadresse des 256-Byte-Puffers für Firmware-Update-Daten.
|
||||
*/
|
||||
REG_HOLDING_FWU_DATA_BUFFER = 0x0180,
|
||||
enum {
|
||||
/**
|
||||
* @brief Ventilsteuerungsbefehl (1=Öffnen, 2=Schliessen, 0=Bewegung stoppen).
|
||||
*/
|
||||
REG_HOLDING_VALVE_COMMAND = 0x0000,
|
||||
/**
|
||||
* @brief Sicherheits-Timeout in Sekunden für den Öffnen-Vorgang.
|
||||
*/
|
||||
REG_HOLDING_MAX_OPENING_TIME_S = 0x0001,
|
||||
/**
|
||||
* @brief Sicherheits-Timeout in Sekunden für den Schliessen-Vorgang.
|
||||
*/
|
||||
REG_HOLDING_MAX_CLOSING_TIME_S = 0x0002,
|
||||
/**
|
||||
* @brief Bitmaske zum Lesen und Schreiben der digitalen Ausgänge. Bit 0:
|
||||
* Ausgang 1, Bit 1: Ausgang 2. 1=AN, 0=AUS.
|
||||
*/
|
||||
REG_HOLDING_DIGITAL_OUTPUTS_STATE = 0x0010,
|
||||
/**
|
||||
* @brief Timeout des Fail-Safe-Watchdogs in Sekunden. 0=Deaktiviert.
|
||||
*/
|
||||
REG_HOLDING_WATCHDOG_TIMEOUT_S = 0x00F0,
|
||||
/**
|
||||
* @brief Schreiben von 1 startet das Gerät neu.
|
||||
*/
|
||||
REG_HOLDING_DEVICE_RESET = 0x00F1,
|
||||
/**
|
||||
* @brief Befehl für das Firmware-Update.
|
||||
* 1: Verify Chunk - Slave schreibt den letzten Chunk ins Flash.
|
||||
* 2: Finalize Update - Installation abschliessen und neu starten.
|
||||
*/
|
||||
REG_HOLDING_FWU_COMMAND = 0x0100,
|
||||
/**
|
||||
* @brief Untere 16 Bit des 32-Bit-Offsets für den nächsten
|
||||
* Firmware-Update-Chunk.
|
||||
*/
|
||||
REG_HOLDING_FWU_CHUNK_OFFSET_LOW = 0x0101,
|
||||
/**
|
||||
* @brief Obere 16 Bit des 32-Bit-Offsets für den nächsten
|
||||
* Firmware-Update-Chunk.
|
||||
*/
|
||||
REG_HOLDING_FWU_CHUNK_OFFSET_HIGH = 0x0102,
|
||||
/**
|
||||
* @brief Grösse des nächsten Firmware-Update-Chunks in Bytes (max. 256).
|
||||
*/
|
||||
REG_HOLDING_FWU_CHUNK_SIZE = 0x0103,
|
||||
/**
|
||||
* @brief Startadresse des 256-Byte-Puffers für Firmware-Update-Daten.
|
||||
*/
|
||||
REG_HOLDING_FWU_DATA_BUFFER = 0x0180,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -137,8 +141,9 @@ int modbus_server_init(void);
|
||||
*
|
||||
* @param baudrate The new baudrate to set.
|
||||
* @param unit_id The new Modbus unit ID (slave address).
|
||||
* @return 0 on success, or a negative error code if immediate reconfiguration fails.
|
||||
* Returns 0 even on failure if settings could be saved for the next boot.
|
||||
* @return 0 on success, or a negative error code if immediate reconfiguration
|
||||
* fails. Returns 0 even on failure if settings could be saved for the next
|
||||
* boot.
|
||||
*/
|
||||
int modbus_reconfigure(uint32_t baudrate, uint8_t unit_id);
|
||||
|
||||
@@ -156,4 +161,4 @@ uint32_t modbus_get_baudrate(void);
|
||||
*/
|
||||
uint8_t modbus_get_unit_id(void);
|
||||
|
||||
#endif // MODBUS_SERVER_H
|
||||
#endif // MODBUS_SERVER_H
|
||||
|
||||
@@ -8,39 +8,41 @@
|
||||
* @file valve.h
|
||||
* @brief API for controlling the motorized valve.
|
||||
*
|
||||
* This library provides functions to initialize, open, close, and stop the valve.
|
||||
* It also allows getting the valve's state and movement status, and configuring
|
||||
* the maximum opening and closing times.
|
||||
* This library provides functions to initialize, open, close, and stop the
|
||||
* valve. It also allows getting the valve's state and movement status, and
|
||||
* configuring the maximum opening and closing times.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Defines the GPIO pins used for the valve controller.
|
||||
*/
|
||||
struct valve_gpios {
|
||||
const struct gpio_dt_spec in0; /**< Control input 0 for the VND7050AJ driver. */
|
||||
const struct gpio_dt_spec in1; /**< Control input 1 for the VND7050AJ driver. */
|
||||
const struct gpio_dt_spec rst; /**< Reset pin for the VND7050AJ driver. */
|
||||
const struct gpio_dt_spec sen; /**< Sense (current measurement) pin. */
|
||||
const struct gpio_dt_spec s0; /**< S0 select pin. */
|
||||
const struct gpio_dt_spec s1; /**< S1 select pin. */
|
||||
const struct gpio_dt_spec
|
||||
in0; /**< Control input 0 for the VND7050AJ driver. */
|
||||
const struct gpio_dt_spec
|
||||
in1; /**< Control input 1 for the VND7050AJ driver. */
|
||||
const struct gpio_dt_spec rst; /**< Reset pin for the VND7050AJ driver. */
|
||||
const struct gpio_dt_spec sen; /**< Sense (current measurement) pin. */
|
||||
const struct gpio_dt_spec s0; /**< S0 select pin. */
|
||||
const struct gpio_dt_spec s1; /**< S1 select pin. */
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Represents the static state of the valve (open or closed).
|
||||
*/
|
||||
enum valve_state {
|
||||
VALVE_STATE_CLOSED, /**< The valve is fully closed. */
|
||||
VALVE_STATE_OPEN, /**< The valve is fully open. */
|
||||
VALVE_STATE_CLOSED, /**< The valve is fully closed. */
|
||||
VALVE_STATE_OPEN, /**< The valve is fully open. */
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Represents the dynamic movement status of the valve.
|
||||
*/
|
||||
enum valve_movement {
|
||||
VALVE_MOVEMENT_IDLE, /**< The valve is not moving. */
|
||||
VALVE_MOVEMENT_OPENING, /**< The valve is currently opening. */
|
||||
VALVE_MOVEMENT_CLOSING, /**< The valve is currently closing. */
|
||||
VALVE_MOVEMENT_ERROR /**< An error occurred during movement. */
|
||||
VALVE_MOVEMENT_IDLE, /**< The valve is not moving. */
|
||||
VALVE_MOVEMENT_OPENING, /**< The valve is currently opening. */
|
||||
VALVE_MOVEMENT_CLOSING, /**< The valve is currently closing. */
|
||||
VALVE_MOVEMENT_ERROR /**< An error occurred during movement. */
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -118,4 +120,4 @@ uint16_t valve_get_max_open_time(void);
|
||||
*/
|
||||
uint16_t valve_get_max_close_time(void);
|
||||
|
||||
#endif // VALVE_H
|
||||
#endif // VALVE_H
|
||||
|
||||
Reference in New Issue
Block a user