summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-02-28 17:37:23 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-03-06 18:10:13 +0200
commit8c051160e7a36d57493b25016f94a900b1260c04 (patch)
tree07fb68020547715e543c3ec990e2d76e923105c9
parent3f04152d56acadceaf0db8b9afa9b784d111452f (diff)
libcamera: ipa: Test control structure size with static_assert
The control-related structures ipa_controls_header, ipa_control_value_entry and ipa_control_range_entry define the IPA protocol and are thus part of the ABI. To avoid breaking it inadvertently, use static_assert() to check the size of the structures. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
-rw-r--r--src/libcamera/ipa_controls.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/libcamera/ipa_controls.cpp b/src/libcamera/ipa_controls.cpp
index dd3ff9a0..fc5ccd42 100644
--- a/src/libcamera/ipa_controls.cpp
+++ b/src/libcamera/ipa_controls.cpp
@@ -153,6 +153,9 @@
* Reserved for future extensions
*/
+static_assert(sizeof(ipa_controls_header) == 32,
+ "Invalid ABI size change for struct ipa_control_header");
+
/**
* \struct ipa_control_value_entry
* \brief Description of a serialized ControlValue entry
@@ -167,6 +170,9 @@
* value data (shall be a multiple of 8 bytes).
*/
+static_assert(sizeof(ipa_control_value_entry) == 16,
+ "Invalid ABI size change for struct ipa_control_value_entry");
+
/**
* \struct ipa_control_range_entry
* \brief Description of a serialized ControlRange entry
@@ -180,3 +186,6 @@
* \var ipa_control_range_entry::padding
* Padding bytes (shall be set to 0)
*/
+
+static_assert(sizeof(ipa_control_range_entry) == 16,
+ "Invalid ABI size change for struct ipa_control_range_entry");