diff --git a/rcl_interfaces/CMakeLists.txt b/rcl_interfaces/CMakeLists.txt index 57dedbd4..71ec4cca 100644 --- a/rcl_interfaces/CMakeLists.txt +++ b/rcl_interfaces/CMakeLists.txt @@ -27,12 +27,16 @@ rosidl_generate_interfaces(${PROJECT_NAME} "msg/ParameterType.msg" "msg/ParameterValue.msg" "msg/SetParametersResult.msg" + "msg/LoggerLevel.msg" + "msg/SetLoggerLevelsResult.msg" "srv/DescribeParameters.srv" "srv/GetParameters.srv" "srv/GetParameterTypes.srv" "srv/ListParameters.srv" "srv/SetParametersAtomically.srv" "srv/SetParameters.srv" + "srv/GetLoggerLevels.srv" + "srv/SetLoggerLevels.srv" DEPENDENCIES builtin_interfaces ) diff --git a/rcl_interfaces/README.md b/rcl_interfaces/README.md index 4382f5ea..84adefdf 100644 --- a/rcl_interfaces/README.md +++ b/rcl_interfaces/README.md @@ -32,6 +32,10 @@ The ROS API for a node will be as follows inside the node's namespace. * List the parameters on this node matching the filters. * `set_parameters`: `SetParameters` * Set parameters on this node. + * `get_logger_levels`: `GetLoggerLevels` + * Get the logger levels of nodes which are in the same process space. + * `set_logger_levels`: `SetLoggerLevels` + * Set the logger levels of nodes which are in the same process space. ## Messages (.msg) * [FloatingPointRange](msg/FloatingPointRange.msg): Represents bounds and a step value for a floating point typed parameter @@ -46,6 +50,7 @@ The ROS API for a node will be as follows inside the node's namespace. * [ParameterType](msg/ParameterType.msg): Enum definitions for denoting a parameter value's type * [ParameterValue](msg/ParameterValue.msg): The associated value and type of a parameter * [SetParameterResult](msg/SetParametersResult.msg): Result message indicating whether a set parameters event succeeded +* [SetLoggerLevelsResult](msg/SetLoggerLevelsResult.msg): Result message indicating whether a set logger level event succeeded ## Services (.srv) * [DescribeParameters](srv/DescribeParameters.srv): Request a list of descriptions for a specified list of parameters. @@ -53,7 +58,9 @@ The ROS API for a node will be as follows inside the node's namespace. * [GetParameterTypes](srv/GetParametersTypes.srv): Get the enum type of a list of parameters * [ListParameters](srv/ListParameters.srv): Get the list of parameters given a list of prefixes * [SetParameters](srv/SetParameters.srv): Add or change a list of parameters individually -* [SetParametersAtomically](srv/SetParametersAtomically.srv): Add or change all parameters in a list or none at all. +* [SetParametersAtomically](srv/SetParametersAtomically.srv): Add or change all parameters in a list or none at all +* [GetLoggerLevels](srv/GetLoggerLevels.srv): Get the logger levels of a specific list of nodes which are in the same process space +* [SetLoggerLevels](srv/SetLoggerLevels.srv): Change a list of logger levels of nodes which are in the same process space ## Quality Declaration This package claims to be in the **Quality Level 1** category, see the [Quality Declaration](QUALITY_DECLARATION.md) for more details. diff --git a/rcl_interfaces/msg/LoggerLevel.msg b/rcl_interfaces/msg/LoggerLevel.msg new file mode 100644 index 00000000..5dedb6f2 --- /dev/null +++ b/rcl_interfaces/msg/LoggerLevel.msg @@ -0,0 +1,14 @@ +# All available logger levels; these correspond to the enum in rcutils/logger.h + +uint8 LOG_LEVEL_UNKNOWN = 0 +uint8 LOG_LEVEL_DEBUG = 10 +uint8 LOG_LEVEL_INFO = 20 +uint8 LOG_LEVEL_WARN = 30 +uint8 LOG_LEVEL_ERROR = 40 +uint8 LOG_LEVEL_FATAL = 50 + +# The logger name. +string name + +# The logger level +uint32 level diff --git a/rcl_interfaces/msg/SetLoggerLevelsResult.msg b/rcl_interfaces/msg/SetLoggerLevelsResult.msg new file mode 100644 index 00000000..41a04b66 --- /dev/null +++ b/rcl_interfaces/msg/SetLoggerLevelsResult.msg @@ -0,0 +1,5 @@ +# True when succeed, false when failed. +bool successful + +# Reason why the setting was either successful or a failure. +string reason diff --git a/rcl_interfaces/srv/GetLoggerLevels.srv b/rcl_interfaces/srv/GetLoggerLevels.srv new file mode 100644 index 00000000..3c0884e5 --- /dev/null +++ b/rcl_interfaces/srv/GetLoggerLevels.srv @@ -0,0 +1,7 @@ +# A list of logger names to get. +string[] names + +--- +# List of logger levels which is the same order as the provided names. If a +# logger was not yet set, the value will have 'unknown' as the value. +LoggerLevel[] levels diff --git a/rcl_interfaces/srv/SetLoggerLevels.srv b/rcl_interfaces/srv/SetLoggerLevels.srv new file mode 100644 index 00000000..7a83b1b0 --- /dev/null +++ b/rcl_interfaces/srv/SetLoggerLevels.srv @@ -0,0 +1,6 @@ +# A list of loggers to set. +LoggerLevel[] levels + +--- +# Indicates whether setting each logger succeeded or not and why. +SetLoggerLevelsResult[] results