nros C API
Lightweight ROS 2 client for embedded real-time systems
Loading...
Searching...
No Matches
parameter.h
Go to the documentation of this file.
1
9#ifndef NROS_PARAMETER_H
10#define NROS_PARAMETER_H
11
12#include "nros/types.h"
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18/* Phase 91.C1: type definitions (nros_param_server_state_t,
19 * nros_parameter_type_t, nros_param_array_t, nros_parameter_value_t,
20 * nros_parameter_t, nros_param_callback_t, nros_param_server_t) come
21 * from <nros/nros_generated.h> via the nros/types.h include above.
22 *
23 * The typed parameter setters / getters (bool / integer / double /
24 * *_array) are declared by hand below; the auto-generated header
25 * cannot synthesise them from the runtime side, so this file keeps
26 * the canonical declarations.
27 */
28
29/* ===================================================================
30 * Functions
31 * =================================================================== */
32
38
50 struct nros_parameter_t* storage, size_t capacity);
51
63 nros_param_callback_t callback, void* context);
64
76 bool default_value);
77
89 int64_t default_value);
90
102 double default_value);
103
115 const char* default_value);
116
128nros_ret_t nros_param_get_bool(const struct nros_param_server_t* server, const char* name,
129 bool* value);
130
142nros_ret_t nros_param_get_integer(const struct nros_param_server_t* server, const char* name,
143 int64_t* value);
144
156nros_ret_t nros_param_get_double(const struct nros_param_server_t* server, const char* name,
157 double* value);
158
171nros_ret_t nros_param_get_string(const struct nros_param_server_t* server, const char* name,
172 char* value, size_t max_len);
173
185nros_ret_t nros_param_set_bool(struct nros_param_server_t* server, const char* name, bool value);
186
199 int64_t value);
200
212nros_ret_t nros_param_set_double(struct nros_param_server_t* server, const char* name,
213 double value);
214
226nros_ret_t nros_param_set_string(struct nros_param_server_t* server, const char* name,
227 const char* value);
228
229/* -------------------------------------------------------------------
230 * Array parameters
231 *
232 * Array parameters store a pointer + length to caller-owned data.
233 * The caller MUST keep the underlying storage alive for the lifetime of
234 * the parameter (until @ref nros_param_server_fini, or until the
235 * parameter is overwritten with a new pointer via the matching `_set`
236 * function). String arrays point to an array of `const char*` — each
237 * element is itself a null-terminated, caller-owned string.
238 * ------------------------------------------------------------------- */
239
243 const uint8_t* data, size_t len);
247 const bool* data, size_t len);
251 const int64_t* data, size_t len);
255 const double* data, size_t len);
259 const char* const* data, size_t len);
260
263nros_ret_t nros_param_get_byte_array(const struct nros_param_server_t* server, const char* name,
264 const uint8_t** data, size_t* len);
267nros_ret_t nros_param_get_bool_array(const struct nros_param_server_t* server, const char* name,
268 const bool** data, size_t* len);
271nros_ret_t nros_param_get_integer_array(const struct nros_param_server_t* server, const char* name,
272 const int64_t** data, size_t* len);
275nros_ret_t nros_param_get_double_array(const struct nros_param_server_t* server, const char* name,
276 const double** data, size_t* len);
279nros_ret_t nros_param_get_string_array(const struct nros_param_server_t* server, const char* name,
280 const char* const** data, size_t* len);
281
285 const uint8_t* data, size_t len);
289 const bool* data, size_t len);
293 const int64_t* data, size_t len);
297 const double* data, size_t len);
301 const char* const* data, size_t len);
302
310NROS_PUBLIC bool nros_param_has(const struct nros_param_server_t* server, const char* name);
311
321 const char* name);
322
330
338
339/* ===================================================================
340 * Service-Backed Parameter API (requires NROS_PARAM_SERVICES feature)
341 *
342 * These functions operate on the nros-params::ParameterServer owned by
343 * the Executor. After calling nros_executor_register_parameter_services,
344 * declared parameters are visible to `ros2 param list /<node>`.
345 *
346 * Only available when nros-c is built with the `param-services` Cargo
347 * feature (requires alloc).
348 * =================================================================== */
349
350struct nros_executor_t;
351
367
370 const char* name, bool value);
373 const char* name, int64_t value);
376 const char* name, double value);
379 const char* name, const char* value);
380
383 const char* name, bool* out_value);
386 const char* name, int64_t* out_value);
389 const char* name, double* out_value);
392 const char* name, char* out_value,
393 size_t max_len);
394
397 const char* name, bool value);
400 const char* name, int64_t value);
403 const char* name, double value);
406 const char* name, const char* value);
407
409NROS_PUBLIC bool nros_executor_has_param(struct nros_executor_t* executor, const char* name);
410
411#ifdef __cplusplus
412}
413#endif
414
415#endif /* NROS_PARAMETER_H */
int nros_ret_t
Definition nros_generated.h:785
nros_parameter_type_t
Definition nros_generated.h:223
bool(* nros_param_callback_t)(const char *name, const struct nros_parameter_t *param, void *context)
Definition nros_generated.h:879
nros_ret_t nros_param_get_integer_array(const struct nros_param_server_t *server, const char *name, const int64_t **data, size_t *len)
Get an integer array parameter (returns stored pointer + length).
nros_ret_t nros_param_declare_integer_array(struct nros_param_server_t *server, const char *name, const int64_t *data, size_t len)
Declare an integer array parameter (int64_t[]).
nros_ret_t nros_param_declare_byte_array(struct nros_param_server_t *server, const char *name, const uint8_t *data, size_t len)
Declare a byte array parameter (uint8_t[]).
nros_ret_t nros_executor_register_parameter_services(struct nros_executor_t *executor)
Register the 6 ROS 2 parameter services on the executor's node.
nros_ret_t nros_param_declare_string_array(struct nros_param_server_t *server, const char *name, const char *const *data, size_t len)
Declare a string array parameter (array of const char*).
nros_ret_t nros_param_declare_integer(struct nros_param_server_t *server, const char *name, int64_t default_value)
Declare an integer parameter.
nros_ret_t nros_param_declare_double(struct nros_param_server_t *server, const char *name, double default_value)
Declare a double parameter.
nros_ret_t nros_param_set_integer(struct nros_param_server_t *server, const char *name, int64_t value)
Set an integer parameter value.
nros_ret_t nros_param_declare_double_array(struct nros_param_server_t *server, const char *name, const double *data, size_t len)
Declare a double array parameter (double[]).
nros_ret_t nros_executor_set_param_double(struct nros_executor_t *executor, const char *name, double value)
Set a double parameter on the executor's server.
size_t nros_param_server_get_count(const struct nros_param_server_t *server)
Get the number of declared parameters.
nros_ret_t nros_param_declare_string(struct nros_param_server_t *server, const char *name, const char *default_value)
Declare a string parameter.
nros_ret_t nros_executor_set_param_integer(struct nros_executor_t *executor, const char *name, int64_t value)
Set an integer parameter on the executor's server.
nros_ret_t nros_executor_declare_param_bool(struct nros_executor_t *executor, const char *name, bool value)
Declare a boolean parameter on the executor's server.
bool nros_executor_has_param(struct nros_executor_t *executor, const char *name)
Check if a parameter exists on the executor's server.
nros_ret_t nros_param_get_string_array(const struct nros_param_server_t *server, const char *name, const char *const **data, size_t *len)
Get a string array parameter (returns stored pointer + length).
nros_ret_t nros_param_server_set_callback(struct nros_param_server_t *server, nros_param_callback_t callback, void *context)
Set a parameter change callback.
nros_ret_t nros_param_set_double_array(struct nros_param_server_t *server, const char *name, const double *data, size_t len)
Set a double array parameter (replaces stored pointer + length).
nros_ret_t nros_executor_declare_param_string(struct nros_executor_t *executor, const char *name, const char *value)
Declare a string parameter on the executor's server.
nros_ret_t nros_param_get_bool(const struct nros_param_server_t *server, const char *name, bool *value)
Get a boolean parameter value.
nros_ret_t nros_param_get_bool_array(const struct nros_param_server_t *server, const char *name, const bool **data, size_t *len)
Get a boolean array parameter (returns stored pointer + length).
nros_ret_t nros_param_declare_bool_array(struct nros_param_server_t *server, const char *name, const bool *data, size_t len)
Declare a boolean array parameter (bool[]).
nros_ret_t nros_executor_get_param_integer(struct nros_executor_t *executor, const char *name, int64_t *out_value)
Get an integer parameter from the executor's server.
nros_ret_t nros_executor_get_param_bool(struct nros_executor_t *executor, const char *name, bool *out_value)
Get a boolean parameter from the executor's server.
nros_ret_t nros_param_declare_bool(struct nros_param_server_t *server, const char *name, bool default_value)
Declare a boolean parameter.
nros_ret_t nros_param_set_bool_array(struct nros_param_server_t *server, const char *name, const bool *data, size_t len)
Set a boolean array parameter (replaces stored pointer + length).
enum nros_parameter_type_t nros_param_get_type(const struct nros_param_server_t *server, const char *name)
Get the type of a parameter.
nros_ret_t nros_executor_get_param_double(struct nros_executor_t *executor, const char *name, double *out_value)
Get a double parameter from the executor's server.
nros_ret_t nros_param_set_bool(struct nros_param_server_t *server, const char *name, bool value)
Set a boolean parameter value.
nros_ret_t nros_param_get_integer(const struct nros_param_server_t *server, const char *name, int64_t *value)
Get an integer parameter value.
nros_ret_t nros_param_get_double_array(const struct nros_param_server_t *server, const char *name, const double **data, size_t *len)
Get a double array parameter (returns stored pointer + length).
nros_ret_t nros_param_set_string(struct nros_param_server_t *server, const char *name, const char *value)
Set a string parameter value.
nros_ret_t nros_executor_declare_param_double(struct nros_executor_t *executor, const char *name, double value)
Declare a double parameter on the executor's server.
struct nros_param_server_t nros_param_server_get_zero_initialized(void)
Get a zero-initialized parameter server.
bool nros_param_has(const struct nros_param_server_t *server, const char *name)
Check if a parameter exists.
nros_ret_t nros_param_server_init(struct nros_param_server_t *server, struct nros_parameter_t *storage, size_t capacity)
Initialise a parameter server with user-provided storage.
nros_ret_t nros_param_get_byte_array(const struct nros_param_server_t *server, const char *name, const uint8_t **data, size_t *len)
Get a byte array parameter (returns stored pointer + length).
nros_ret_t nros_executor_set_param_bool(struct nros_executor_t *executor, const char *name, bool value)
Set a boolean parameter on the executor's server.
nros_ret_t nros_executor_set_param_string(struct nros_executor_t *executor, const char *name, const char *value)
Set a string parameter on the executor's server.
nros_ret_t nros_executor_get_param_string(struct nros_executor_t *executor, const char *name, char *out_value, size_t max_len)
Get a string parameter into a caller-provided null-terminated buffer.
nros_ret_t nros_param_set_double(struct nros_param_server_t *server, const char *name, double value)
Set a double parameter value.
nros_ret_t nros_param_set_byte_array(struct nros_param_server_t *server, const char *name, const uint8_t *data, size_t len)
Set a byte array parameter (replaces stored pointer + length).
nros_ret_t nros_param_server_fini(struct nros_param_server_t *server)
Finalise a parameter server.
nros_ret_t nros_executor_declare_param_integer(struct nros_executor_t *executor, const char *name, int64_t value)
Declare an integer parameter on the executor's server.
nros_ret_t nros_param_get_double(const struct nros_param_server_t *server, const char *name, double *value)
Get a double parameter value.
nros_ret_t nros_param_set_integer_array(struct nros_param_server_t *server, const char *name, const int64_t *data, size_t len)
Set an integer array parameter (replaces stored pointer + length).
nros_ret_t nros_param_set_string_array(struct nros_param_server_t *server, const char *name, const char *const *data, size_t len)
Set a string array parameter (replaces stored pointer + length).
nros_ret_t nros_param_get_string(const struct nros_param_server_t *server, const char *name, char *value, size_t max_len)
Get a string parameter value.
Definition nros_generated.h:972
Definition nros_generated.h:886
nros_param_callback_t callback
Definition nros_generated.h:906
size_t capacity
Definition nros_generated.h:894
Definition nros_generated.h:861
Shared types and constants for the nros C API.
#define NROS_PUBLIC
Definition visibility.h:33