@@ -487,6 +487,33 @@ fn parameter_descriptor_schema()
487487 . build ( )
488488}
489489
490+ /// Schema for the `rcl_interfaces/msg/ParameterEvent` message that is
491+ /// implicitly published on `/parameter_events` by every parameterized node.
492+ fn parameter_event_schema ( )
493+ -> std:: result:: Result < std:: sync:: Arc < MessageSchema > , crate :: dynamic:: DynamicError > {
494+ let parameter = parameter_schema ( ) ?;
495+ let stamp = MessageSchema :: builder ( "builtin_interfaces/msg/Time" )
496+ . field ( "sec" , FieldType :: Int32 )
497+ . field ( "nanosec" , FieldType :: Uint32 )
498+ . build ( ) ?;
499+ MessageSchema :: builder ( "rcl_interfaces/msg/ParameterEvent" )
500+ . field ( "stamp" , FieldType :: Message ( stamp) )
501+ . field ( "node" , FieldType :: String )
502+ . field (
503+ "new_parameters" ,
504+ FieldType :: Sequence ( Box :: new ( FieldType :: Message ( parameter. clone ( ) ) ) ) ,
505+ )
506+ . field (
507+ "changed_parameters" ,
508+ FieldType :: Sequence ( Box :: new ( FieldType :: Message ( parameter. clone ( ) ) ) ) ,
509+ )
510+ . field (
511+ "deleted_parameters" ,
512+ FieldType :: Sequence ( Box :: new ( FieldType :: Message ( parameter) ) ) ,
513+ )
514+ . build ( )
515+ }
516+
490517fn set_parameters_result_schema ( )
491518-> std:: result:: Result < std:: sync:: Arc < MessageSchema > , crate :: dynamic:: DynamicError > {
492519 MessageSchema :: builder ( "rcl_interfaces/msg/SetParametersResult" )
@@ -607,4 +634,8 @@ pub(crate) fn register_parameter_schemas(tds: &TypeDescriptionService) {
607634 . field ( "result" , FieldType :: Message ( result) )
608635 . build ( )
609636 } ) ) ;
637+
638+ // The implicitly-published `/parameter_events` topic
639+ // (`rcl_interfaces/msg/ParameterEvent`).
640+ register ( parameter_event_schema ( ) ) ;
610641}
0 commit comments