Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Improve Node Field Query API (#6613)
* fix typo * send proto ancestry to controllers * expose proto ancestry in controller api * send proto ancestry in all relevant messages * relocate proto data to WbProto * rename WbProto to WbNodeProtoInfo * revert last two commits * keep track of internal proto fields * basic supervisor proto implementation * swap meanings of wb_supervisor_node_get_field and wb_supervisor_node_get_parameter * use an array list rather than a linked list for keeping track of node proto parents * allow supervisor to query protos from Webots * use correct read_only behavior * fix get_proto api * update supervisor/Webots field query api * fix Makefile * fix return reference to temporary * supervisor fixes * more supervisor fixes * fix variable name * fix field get value impl * fix controller field lookup * fix get number of fields/parameters * fix function name * fix wb_supervisor_proto_get_parent * better handling of hidden parameters * remove wb_supervisor_node_get_proto_ancestor * revert 30953fc...01e067d * remove accidental deletion * fix indentation * forward proto field lookups to the actual parameters * fix typo * update supervisor_notify_import_remove test * null safety * add proto tests * fix C_SUPERVISOR_FIELD_GET_FROM_NAME implementation * test fixes * update supervisor_proto test * fix supervisor_proto_fields compilation errors * fix proto import paths * fix bracket type * fix memory leak * remove unused SolidProtoHierarchy.children field (#6630) * add additional log info * bugfix to previous commit * step the simulation after setting field values * fix null return value in wb_supervisor_proto_get_number_of_parameters * fix actual parameter lookup in proto parameter lookup functions * use wb_supervisor_node_get_from_proto_def to retrieve the internal node * fix def name * fix proto names in test * initialize struct members to NULL * initialize node proto_info to NULL * update expected proto hierarchy * increment loop counter * alternate method of determining the actual parameter of a field * initialize field to NULL * fix SolidProtoHierarchyBase * use correct parameter retrieval method * use internal=true for proto parameter lookups * fix bug when retrieving the first field of a proto * fix base node field query * refresh internal node reference after regeneration * fix internal_proto nullity check * fix base node field lookup error messages * fix retrieval of internal node fields * don't expect changes in read-only fields * use correct check value in read-only assertion * don't check non-existent parameters * fix array in if condition * add wb_supervisor_proto_is_derived * fix wb_proto_is_derived * update c++ api * fix variable name conflict * add Node::getProto and update style * update java api * add todo * update python api * update the matlab api * use camelCase in python api * add wb_supervisor_proto_is_derived to python and matlab apis * update WbLanguage.cpp * rename methods for clarity * fix circular dependency * fix other circular dependency * unset allow_search_in_proto * swap field read only logic * update proto_get_parent method name * update references to renamed supervisor methods * update ros api * run clang-format * fix cppcheck warnings * fix Controller.def method names * fix function name * python formatting * ros fixes * run clang-format * more ros fixes * pin empy version * bump webots_ros * bump webots_ros * bump webots_ros * bump webots_ros * fix lua syntax * account for proto regeneration in test suite * verify field integrity before checking lookup_field * run clang-format * don't return invalid proto references * fix FieldImportBase proto definition * fix race condition (see long commit message) Before this commit, the code would update one of the fields, wait one timestep, and verify the change while updating the next field (two separate controllers). However, because the field updates regenerated the node, this led some references used in the check to be invalidated during the check. This was not an issue before, because no internal fields were used in the previous version of the test (so nothing was invalidated). This commit adds an additional step to each field update so that the check gets its own timestep. This means that the node is no longer regenerated while its being validated. * use snake_case in supervisor_notify_import_remove_mf * get rid of FieldImportBase * use spaces instead of tabs * cleanup proto map * run clang-format * remove const for consistency * make wb_supervisor_proto_get_type_name(NULL) return "" for consistency * update documentation * fix references to old proto field access methods * run clang-format * fix proto regeneration check * update the changelog * bug fixes * always get fields by name * run clang-format * remove explicit field name array size * Bump actions/download-artifact from 3 to 4.1.7 in /.github/workflows (#6652) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4.1.7. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](actions/download-artifact@v3...v4.1.7) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-type: direct:production ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * add comment * Bump actions/upload-artifact to v4 (#6654) * include proto id in field query when processing value get requests * check for proto parent validity instead of just NULL (this shouldn't be necessary because if the parent ref is invalidated, the child should've been as well, but it's good practice) * fix variable name * add changelog entry for matlab method signature change * fix test assert message * formatting * fix types in supervisor documentation Co-authored-by: Olivier Michel <[email protected]> * add missing references to wb_supervisor_node_get_proto * fix ros service ids in documentation * add wb_supervisor_node_get_proto to Controller.def --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Dean Brettle <[email protected]> Co-authored-by: Olivier Michel <[email protected]>
- Loading branch information