Skip to main content

nros_params/
lib.rs

1//! Parameter server for nros
2//!
3//! This crate provides a ROS 2 compatible parameter server for embedded systems.
4//! Parameters are stored in static memory with compile-time configurable capacity.
5//!
6//! # Example
7//!
8//! ```
9//! use nros_params::{ParameterDescriptor, ParameterServer, ParameterType, ParameterValue};
10//!
11//! let mut server = ParameterServer::new();
12//!
13//! // Declare a simple parameter
14//! server.declare("max_speed", ParameterValue::Double(1.0));
15//!
16//! // Declare a parameter with constraints
17//! let desc = ParameterDescriptor::new("velocity", ParameterType::Double)
18//!     .unwrap()
19//!     .with_description("Maximum velocity in m/s")
20//!     .with_float_range(0.0, 10.0, 0.1);
21//! server.declare_with_descriptor("velocity", ParameterValue::Double(5.0), Some(desc));
22//!
23//! // Get and set parameters
24//! assert_eq!(server.get_double("max_speed"), Some(1.0));
25//! server.set_double("max_speed", 2.0);
26//! ```
27//!
28//! # Features
29//!
30//! - `std` - Enable standard library support
31//! - `alloc` - Enable heap allocation
32
33#![no_std]
34
35#[cfg(feature = "std")]
36extern crate std;
37
38#[cfg(feature = "alloc")]
39extern crate alloc;
40
41pub(crate) mod config;
42pub mod persist;
43pub mod server;
44pub mod typed;
45pub mod types;
46
47// Re-export main types
48#[cfg(feature = "std")]
49pub use persist::FileParamStore;
50pub use persist::{NullParamStore, ParamStore, ParamStoreError};
51pub use server::{LegacyParameterBuilder, ParameterServer};
52pub use typed::{
53    MandatoryParameter, OptionalParameter, ParameterBuilder, ParameterError, RangeConvertible,
54    ReadOnlyParameter, UndeclaredParameters,
55};
56pub use types::{
57    FloatingPointRange, IntegerRange, MAX_ARRAY_LEN, MAX_BYTE_ARRAY_LEN, MAX_PARAM_NAME_LEN,
58    MAX_PARAMETERS, MAX_STRING_VALUE_LEN, Parameter, ParameterDescriptor, ParameterRange,
59    ParameterType, ParameterValue, ParameterVariant, SetParameterResult,
60};