[libcamera-devel] [PATCH v5 0/9] utils: ipc: Add support for enums and Flags

Paul Elder paul.elder at ideasonboard.com
Tue Oct 11 12:58:50 CEST 2022


v5 fixes a mistake in the scopedEnum implementation in v4, and adds
support for skipHeader to enums defined in core.mojom, so that they can
be defined in a C++ header and not redefined in mojom.


This patch series adds support for enums in function parameters, and
Flags all-around.

"all-around" does happen to exclude direct function return values,
though.

Patches 1~2 touch enums, where the first patch adds a test for current
enum support that hasn't been tested before, and the second actually
adds support for enums in function parameters.

Patches 3~4 add support for Flags, and 5 adds a test for it.

Patches 6 and 7 extend vimc to have dummy function parameters that are
enums and Flags to test enums and Flags as function parameters.

Patch 8 (new in v5) adds support for skipHeader. This was originally
going to posted on top after the rest of the series was merged, but I
found an issue with serialization of scoped enums directly, so this
series is getting a new version :/

Patch 9 adds a test for scoped enums and flags that are designated as
skipHeader. It touches core components (it has to, because that's the
only place that skipHeader enums can be defined), so it's set as RFC.


Paul Elder (9):
  test: generated_serializer: Test enum that is struct member
  utils: ipc: Add support for enums in function parameters
  libcamera: ipa_data_serializer: Add serializer for Flags
  utils: ipc: Add support for Flags
  test: generated_serializer: Test Flags that is struct member
  ipa: vimc: Add IPAOperationCode to init() parameter list
  ipa: vimc: Add Flags to parameters
  utils: ipc: Allow the skipHeader attribute on enums
  [RFC] test: generated_serializer: Test skipHeader enums and flags

 .../libcamera/internal/ipa_data_serializer.h  | 46 +++++++++++++++++++
 include/libcamera/ipa/core.mojom              | 15 +++++-
 include/libcamera/ipa/ipa_interface.h         | 12 ++++-
 include/libcamera/ipa/vimc.mojom              | 14 +++++-
 src/ipa/vimc/vimc.cpp                         | 22 +++++++--
 src/libcamera/pipeline/vimc/vimc.cpp          | 15 ++++--
 test/ipa/ipa_interface_test.cpp               |  6 ++-
 .../generated_serializer_test.cpp             | 36 +++++++++++++++
 .../include/libcamera/ipa/test.mojom          | 14 ++++++
 .../core_ipa_interface.h.tmpl                 |  2 +-
 .../definition_functions.tmpl                 |  2 +-
 .../module_ipa_interface.h.tmpl               |  2 +-
 .../module_ipa_proxy.h.tmpl                   |  2 +-
 .../libcamera_templates/proxy_functions.tmpl  | 20 +++++++-
 .../libcamera_templates/serializer.tmpl       |  6 +++
 .../generators/mojom_libcamera_generator.py   | 39 ++++++++++++++--
 16 files changed, 231 insertions(+), 22 deletions(-)

-- 
2.30.2



More information about the libcamera-devel mailing list