Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
ef62ce0
fix(websocket): Use previous connection state in CLOSED callback
steffen-vogel-opalrt Aug 7, 2026
427144c
fix(file): Disambiguate duplicated in.epoch key in node details string
steffen-vogel-opalrt Aug 7, 2026
40d9e72
fix(dumper): Bound copy of socket path into sun_path
steffen-vogel-opalrt Aug 7, 2026
ceb10a8
fix(can): Bound copy of interface name into ifr_name
steffen-vogel-opalrt Aug 7, 2026
c43fa09
fix(path): Add missing commas in json_pack format string
steffen-vogel-opalrt Aug 7, 2026
7ad3031
style(utils): Fix typo in tokenize() variable name
steffen-vogel-opalrt Aug 7, 2026
1cd77a8
fix(utils): Handle vasprintf/realloc failure in vstrcatf
steffen-vogel-opalrt Aug 7, 2026
03e050a
fix(api): Correct capabilities request file and description spelling
steffen-vogel-opalrt Aug 7, 2026
796c830
fix(python): Avoid mutable default, init child, use self.config in Node
steffen-vogel-opalrt Aug 7, 2026
4986c08
fix(python): Only join started threads in communicate()
steffen-vogel-opalrt Aug 7, 2026
495d450
fix(python): Assign stripped string in VillasHuman.loads()
steffen-vogel-opalrt Aug 7, 2026
383dedf
fix(tools): Correct several issues in tc-netem.sh
steffen-vogel-opalrt Aug 7, 2026
d97ed20
fix(tools): Remove stray exits and fix debug output in tc-netem2.sh
steffen-vogel-opalrt Aug 7, 2026
bf24319
fix(tools): Include .h headers in format-all.sh glob
steffen-vogel-opalrt Aug 7, 2026
3a65456
fix(tools): Return explicit success and fix exit code in pre-commit hook
steffen-vogel-opalrt Aug 7, 2026
43ac58b
fix(tools): Quote $@ in villas-helper.sh wrapper
steffen-vogel-opalrt Aug 7, 2026
772ec4b
fix(tools): Port villas-api.sh to the VILLASnode API v2
steffen-vogel-opalrt Aug 7, 2026
a05580e
fix(shmem-client): Show required RNAME argument in usage line
steffen-vogel-opalrt Aug 7, 2026
dc7f5ae
fix(packaging): Report correct parameter and fix typos in deps.sh
steffen-vogel-opalrt Aug 7, 2026
145e49a
fix(lua): Correct SampleFlags bit-shift comments in test hook
steffen-vogel-opalrt Aug 7, 2026
152e52b
fix(tools): Correct comment typos, author email and whitelist in hwde…
steffen-vogel-opalrt Aug 7, 2026
70d0f91
fix: Correct various spelling mistakes in comments and messages
steffen-vogel-opalrt Aug 7, 2026
c5d7b35
fix: Correct spelling mistakes in infiniband node and ip_device
steffen-vogel-opalrt Aug 7, 2026
d5e633d
fix: Correct 'snd' -> 'and' in file header comments
steffen-vogel-opalrt Aug 7, 2026
348fd84
fix(tools): Correct spelling in integration-tests.sh output
steffen-vogel-opalrt Aug 7, 2026
32b5af9
fix: Remove duplicated 'the' in config example and OpenAPI descriptions
steffen-vogel-opalrt Aug 7, 2026
2c531ec
fix(villas-pipe): Add missing closing quote in RuntimeError format st…
steffen-vogel-opalrt Aug 7, 2026
26ba87d
fix: Correct spelling in plugin descriptions and CLI help
steffen-vogel-opalrt Aug 7, 2026
7c74da2
fix(test_rtt): Correct inverted strcmp logic and max-mode in parseMode
steffen-vogel-opalrt Aug 7, 2026
d76f084
fix(hooks): Read correctly-spelled start/end_frequency in pmu_dft
steffen-vogel-opalrt Aug 7, 2026
292afdf
fix(villas-signal): Enable and document -p, -w, -L, -H options
steffen-vogel-opalrt Aug 7, 2026
04846d8
fix(villas-test-config): Parse advertised -d debug-level option
steffen-vogel-opalrt Aug 7, 2026
2d8041f
fix(openapi): Add enabled and correct port default in http schema
steffen-vogel-opalrt Aug 8, 2026
9954195
fix(openapi): Align zeromq and websocket schemas with parsed options
steffen-vogel-opalrt Aug 8, 2026
9045ffe
fix(examples): Correct spelling in redis and ngsi example comments
steffen-vogel-opalrt Aug 8, 2026
75e0b8e
fix(examples): Use correct 'samples' option in skip_first example com…
steffen-vogel-opalrt Aug 8, 2026
3d037ae
fix: Correct spelling typos in comments and log messages
steffen-vogel-opalrt Aug 8, 2026
b5e984e
fix(api): Remove duplicated 'with' in UUID error messages
steffen-vogel-opalrt Aug 8, 2026
b0f2302
fix(hooks): Use correct ConfigError ID in moving-average hook
steffen-vogel-opalrt Aug 8, 2026
89de4be
fix(hooks): Initialize optional json_unpack outputs in digest hook
steffen-vogel-opalrt Aug 8, 2026
b23b4ed
fix(hooks): Initialize optional 'mode' output in gate hook
steffen-vogel-opalrt Aug 8, 2026
6817062
fix(pre-commit): Update black-pre-commit-mirror to version 24.10.0
stv0g Aug 9, 2026
82224f2
fix(style): Fix code formatting with clang-format
stv0g Aug 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions .pre-commit-config.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -47,26 +47,26 @@ repos:
- id: editorconfig-checker
alias: ec
args:
- -disable-indent-size
- -exclude
- ^LICENSE$|^LICENSES/|\.ecf$
- -disable-indent-size
- -exclude
- ^LICENSE$|^LICENSES/|\.ecf$

# Using this mirror lets us use mypyc-compiled black, which is about 2x faster
- repo: https://github.com/psf/black-pre-commit-mirror
rev: "23.3.0"
rev: "24.10.0"
hooks:
- id: black-jupyter
exclude: .*_pb2.pyi?$
args:
- --line-length=90
- --line-length=90

- repo: https://github.com/pycqa/flake8
rev: "7.3.0"
hooks:
- id: flake8
exclude: .*_pb2.pyi?$
args:
- --max-line-length=90
- --max-line-length=90

- repo: https://github.com/markdownlint/markdownlint
rev: "v0.13.0"
Expand Down
2 changes: 1 addition & 1 deletion clients/shmem/villas-shmem.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -36,7 +36,7 @@ class Shmem : public Tool {

void usage() override {
std::cout
<< "Usage: villas-test-shmem WNAME VECTORIZE" << std::endl
<< "Usage: villas-test-shmem WNAME RNAME VECTORIZE" << std::endl
<< " WNAME name of the shared memory object for the output queue"
<< std::endl
<< " RNAME name of the shared memory object for the input queue"
Expand Down
2 changes: 1 addition & 1 deletion common/include/villas/compat.hpp
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
/* Compatability for different library versions.
/* Compatibility for different library versions.
*
* Author: Steffen Vogel <post@steffenvogel.de>
* SPDX-FileCopyrightText: 2014-2023 Institute for Automation of Complex Power Systems, RWTH Aachen University
Expand Down
2 changes: 1 addition & 1 deletion common/include/villas/kernel/vfio_container.hpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -24,7 +24,7 @@ namespace villas {
namespace kernel {
namespace vfio {

// Backwards compatability with older kernels
// Backwards compatibility with older kernels
#ifdef VFIO_UPDATE_VADDR
static constexpr size_t EXTENSION_SIZE = VFIO_UPDATE_VADDR + 1;
#elif defined(VFIO_UNMAP_ALL)
Expand Down
4 changes: 2 additions & 2 deletions common/include/villas/list.hpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -64,7 +64,7 @@ void list_push(struct List *l, void *p);
// Clear list.
void list_clear(struct List *l);

// Remove all occurences of a list item.
// Remove all occurrences of a list item.
void list_remove_all(struct List *l, void *p);

int list_remove(struct List *l, size_t idx);
Expand All@@ -74,7 +74,7 @@ int list_insert(struct List *l, size_t idx, void *p);
// Return the first element of the list for which cmp returns zero.
void *list_search(struct List *l, cmp_cb_t cmp, const void *ctx);

// Returns the number of occurences for which cmp returns zero when called on all list elements.
// Returns the number of occurrences for which cmp returns zero when called on all list elements.
int list_count(struct List *l, cmp_cb_t cmp, void *ctx);

// Return 0 if list contains pointer p.
Expand Down
6 changes: 3 additions & 3 deletions common/include/villas/utils.hpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -66,18 +66,18 @@ char *decolor(char *str);
// @return Normal variate random variable (Gaussian)
double boxMuller(float m, float s);

// Double precission uniform random variable
// Double precision uniform random variable
double randf();

// Concat formatted string to an existing string.
//
// This function uses realloc() to resize the destination.
// Please make sure to only on dynamic allocated destionations!!!
// Please make sure to only use it on dynamically allocated destinations!!!
//
// @param dest A pointer to a malloc() allocated memory region
// @param fmt A format string like for printf()
// @param ... Optional parameters like for printf()
// @retval The the new value of the dest buffer.
// @retval The new value of the dest buffer.
char *strcatf(char **dest, const char *fmt, ...)
__attribute__((format(printf, 2, 3)));

Expand Down
2 changes: 1 addition & 1 deletion common/lib/compat.cpp
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
/* Compatability for different library versions.
/* Compatibility for different library versions.
*
* Author: Steffen Vogel <post@steffenvogel.de>
* SPDX-FileCopyrightText: 2014-2023 Institute for Automation of Complex Power Systems, RWTH Aachen University
Expand Down
2 changes: 1 addition & 1 deletion common/lib/kernel/devices/ip_device.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,7 +19,7 @@ using villas::kernel::devices::IpDevice;
IpDevice IpDevice::from(const fs::path unsafe_path) {
if (!is_path_valid(unsafe_path))
throw RuntimeError(
"Path {} failed validation as IpDevicePath [adress in hex].[name] ",
"Path {} failed validation as IpDevicePath [address in hex].[name] ",
unsafe_path.string());
return IpDevice(unsafe_path);
}
Expand Down
2 changes: 1 addition & 1 deletion common/lib/kernel/vfio_container.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -57,7 +57,7 @@ static std::array<std::string, EXTENSION_SIZE> construct_vfio_extension_str() {
ret[VFIO_SPAPR_TCE_v2_IOMMU] = "SPAPR TCE v2";
// cppcheck-suppress containerOutOfBounds
ret[VFIO_NOIOMMU_IOMMU] = "No IOMMU";
// Backwards compatability with older kernels
// Backwards compatibility with older kernels
#ifdef VFIO_UNMAP_ALL
ret[VFIO_UNMAP_ALL] = "Unmap all";
#endif
Expand Down
2 changes: 1 addition & 1 deletion common/lib/memory.cpp
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
/* Memory managment.
/* Memory management.
*
* Author: Daniel Krebs <github@daniel-krebs.net>
* SPDX-FileCopyrightText: 2014-2023 Institute for Automation of Complex Power Systems, RWTH Aachen University
Expand Down
2 changes: 1 addition & 1 deletion common/lib/memory_manager.cpp
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
/* Memory managment.
/* Memory management.
*
* Author: Daniel Krebs <github@daniel-krebs.net>
* SPDX-FileCopyrightText: 2014-2023 Institute for Automation of Complex Power Systems, RWTH Aachen University
Expand Down
24 changes: 16 additions & 8 deletions common/lib/utils.cpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -43,14 +43,14 @@ std::vector<std::string> tokenize(const std::string &s,
std::vector<std::string> tokens;

size_t lastPos = 0;
size_t curentPos;
size_t currentPos;

while ((curentPos = s.find(delimiter, lastPos)) != std::string::npos) {
const size_t tokenLength = curentPos - lastPos;
while ((currentPos = s.find(delimiter, lastPos)) != std::string::npos) {
const size_t tokenLength = currentPos - lastPos;
tokens.push_back(s.substr(lastPos, tokenLength));

// Advance in string
lastPos = curentPos + delimiter.length();
lastPos = currentPos + delimiter.length();
}

// Check if there's a last token behind the last delimiter.
Expand DownExpand Up@@ -159,7 +159,7 @@ char *decolor(char *str) {
}

void killme(int sig) {
// Send only to main thread in case the ID was initilized by signalsInit()
// Send only to main thread in case the ID was initialized by signalsInit()
if (main_thread)
pthread_kill(main_thread, sig);
else
Expand DownExpand Up@@ -198,9 +198,17 @@ char *vstrcatf(char **dest, const char *fmt, va_list ap) {
int n = *dest ? strlen(*dest) : 0;
int i = vasprintf(&tmp, fmt, ap);

*dest = (char *)(realloc(*dest, n + i + 1));
if (*dest != nullptr)
strncpy(*dest + n, tmp, i + 1);
if (i < 0)
return *dest;

char *p = (char *)realloc(*dest, n + i + 1);
if (p == nullptr) {
free(tmp);
return *dest;
}

*dest = p;
strncpy(*dest + n, tmp, i + 1);

free(tmp);

Expand Down
2 changes: 1 addition & 1 deletion doc/openapi/components/schemas/config/hooks/pmu_dft.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -84,7 +84,7 @@ allOf:
- center
- right
default: center
description: The timestamp alignment in respect to the the window.
description: The timestamp alignment in respect to the window.
phase_offset:
type: number
default: 0.0
Expand Down
12 changes: 10 additions & 2 deletions doc/openapi/components/schemas/config/http.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -4,12 +4,20 @@
---
type: object
properties:
enabled:
type: boolean
default: true
title: Enable HTTP/WebSocket server
description: |
Whether the HTTP & WebSocket server listens on a port.

port:
type: integer
default: 80
default: 8080
title: Listening port
description: |
The TCP port number on which HTTP & WebSocket server.
The TCP port number on which the HTTP & WebSocket server listens.
Defaults to 80 when running as root, otherwise 8080.

ssl_cert:
type: string
Expand Down
7 changes: 7 additions & 0 deletions doc/openapi/components/schemas/config/nodes/websocket.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -29,5 +29,12 @@ allOf:
format: uri
description: A WebSocket URI

wait_connected:
type: boolean
default: true
description: |
Wait until all configured client connections in `destinations` are
established before finishing node startup.

- $ref: ../node_signals.yaml
- $ref: ../node.yaml
13 changes: 11 additions & 2 deletions doc/openapi/components/schemas/config/nodes/zeromq.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,6 +14,15 @@ allOf:
- pubsub
- radiodish

pattern:
type: string
enum:
- pubsub
- radiodish
default: pubsub
description: |
The ZeroMQ socket pattern to use.

publish:
type: string
format: uri
Expand DownExpand Up@@ -49,10 +58,10 @@ allOf:
description: |
The public key of the server.

private_key:
secret_key:
type: string
description: |
The private key of the server.
The secret (private) key of the server.

out:
type: object
Expand Down
4 changes: 2 additions & 2 deletions doc/openapi/components/schemas/config/path.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -64,7 +64,7 @@ properties:

mask:
description: |
This setting allows masking the the input nodes which can trigger the path.
This setting allows masking the input nodes which can trigger the path.

See also `mode` setting.

Expand DownExpand Up@@ -107,7 +107,7 @@ properties:
A boolean flag which enables the poll-based mode for reading samples from multiple path sources.

**Note:** This is an advanced setting.
Most users should use the the default value which will always do the right thing based on the number and type of input nodes for this path.
Most users should use the default value which will always do the right thing based on the number and type of input nodes for this path.

type: boolean

Expand Down
2 changes: 1 addition & 1 deletion etc/examples/hooks/skip_first.conf
Original file line numberDiff line numberDiff line change
Expand Up@@ -13,7 +13,7 @@ paths = (
type = "skip_first"

seconds = 10
# sequence = 10
# samples = 10

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this commented on purpose?

}
)
}
Expand Down
2 changes: 1 addition & 1 deletion etc/examples/nodes/file.conf
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,7 +5,7 @@ nodes = {
file_node = {
type = "file"

# These options specify the URI where the the files are stored
# These options specify the URI where the files are stored
# The URI accepts all format tokens of (see strftime(3))
uri = "logs/input.log"
# uri = "logs/output_%F_%T.log"
Expand Down
2 changes: 1 addition & 1 deletion etc/examples/nodes/ngsi.conf
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,7 +5,7 @@ nodes = {
ngsi_node = {
type = "ngsi"

# The HTTP REST API endpoint of the FIRWARE context broker
# The HTTP REST API endpoint of the FIWARE context broker
endpoint = "http://46.101.131.212:1026"

# Add an 'Auth-Token' token header to each request
Expand Down
2 changes: 1 addition & 1 deletion etc/examples/nodes/redis.conf
Original file line numberDiff line numberDiff line change
Expand Up@@ -12,7 +12,7 @@ nodes = {
# The Redis key to be used for mode = 'key' or 'hash' (default is the node name)
key = "my_key"

# The Redis channel tp be used for mode = 'channel' (default is the node name)
# The Redis channel to be used for mode = 'channel' (default is the node name)
channel = "my_channel"

# One of:
Expand Down
4 changes: 2 additions & 2 deletions include/villas/kernel/tc.hpp
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
/* Setup interface queuing desciplines for network emulation.
/* Setup interface queuing disciplines for network emulation.
*
* We use the firewall mark to apply individual netem qdiscs
* per node. Every node uses an own BSD socket.
* By using so SO_MARK socket option (see socket(7))
* we can classify traffic originating from a node seperately.
* we can classify traffic originating from a node separately.
*
* Author: Steffen Vogel <post@steffenvogel.de>
* SPDX-FileCopyrightText: 2014-2023 Institute for Automation of Complex Power Systems, RWTH Aachen University
Expand Down
2 changes: 1 addition & 1 deletion include/villas/kernel/tc_netem.hpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,7 +3,7 @@
* We use the firewall mark to apply individual netem qdiscs
* per node. Every node uses an own BSD socket.
* By using so SO_MARK socket option (see socket(7))
* we can classify traffic originating from a node seperately.
* we can classify traffic originating from a node separately.
*
* Author: Steffen Vogel <post@steffenvogel.de>
* SPDX-FileCopyrightText: 2014-2023 Institute for Automation of Complex Power Systems, RWTH Aachen University
Expand Down
2 changes: 1 addition & 1 deletion include/villas/node/config.hpp.in
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,7 +18,7 @@
#define MAX_SAMPLE_LENGTH 512u
#define DEFAULT_FORMAT_BUFFER_LENGTH 4096u

/* Number of hugepages which are requested from the the kernel.
/* Number of hugepages which are requested from the kernel.
* @see https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt
*/
#define DEFAULT_NR_HUGEPAGES 100
Expand Down
2 changes: 1 addition & 1 deletion include/villas/node_compat.hpp
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
/* Node compatability layer for C++.
/* Node compatibility layer for C++.
*
* Author: Steffen Vogel <post@steffenvogel.de>
* SPDX-FileCopyrightText: 2014-2023 Institute for Automation of Complex Power Systems, RWTH Aachen University
Expand Down
2 changes: 1 addition & 1 deletion include/villas/nodes/comedi.hpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -34,7 +34,7 @@ struct comedi_direction {
int sample_rate_hz; // Sample rate in Hz
bool present; // Config present
bool enabled; // Card is started successfully
bool running; // Card is actively transfering samples
bool running; // Card is actively transferring samples
struct timespec started; // Timestamp when sampling started
struct timespec last_debug; // Timestamp of last debug output
size_t counter; // Number of villas samples transfered
Expand Down
4 changes: 2 additions & 2 deletions include/villas/nodes/infiniband.hpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -76,11 +76,11 @@ struct infiniband {
// Counter to keep track of available recv. WRs
unsigned available_recv_wrs;

/* Fixed number to substract from min. number available
/* Fixed number to subtract from min. number available
* WRs in receive queue */
unsigned buffer_subtraction;

// Unrealiable connectionless data
// Unreliable connectionless data
struct ud_s {
::rdma_ud_param ud;
::ibv_ah *ah;
Expand Down
2 changes: 1 addition & 1 deletion include/villas/shmem.hpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -56,7 +56,7 @@ struct ShmemInterface {
* calls will be written to this pointer.
* @param[in] conf Configuration parameters for the output queue.
* @retval 0 The objects were opened and initialized successfully.
* @retval <0 An error occured; errno is set accordingly.
* @retval <0 An error occurred; errno is set accordingly.
*/
int shmem_int_open(const char *wname, const char *rname,
struct ShmemInterface *shm, struct ShmemConfig *conf);
Expand Down
2 changes: 1 addition & 1 deletion include/villas/socket_addr.hpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -40,7 +40,7 @@ enum class SocketLayer { ETH, IP, UDP, UNIX, TCP_CLIENT, TCP_SERVER };
/* Generate printable socket address depending on the address family
*
* A IPv4 address is formatted as dotted decimals followed by the port/protocol number
* A link layer address is formatted in hexadecimals digits seperated by colons and the inferface name
* A link layer address is formatted in hexadecimals digits separated by colons and the interface name
*
* @param sa A pointer to the socket address.
* @return The buffer containing the textual representation of the address. The caller is responsible to free() this buffer!
Expand Down
2 changes: 1 addition & 1 deletion include/villas/web.hpp
Original file line numberDiff line numberDiff line change
Expand Up@@ -67,7 +67,7 @@ class Web final {

Api *getApi() { return api; }

// for C-compatability
// for C-compatibility
lws_context *getContext() { return context; }

lws_vhost *getVHost() { return vhost; }
Expand Down
Loading
Loading