[libcamera-devel,RFC,1/5] libcamera: ipa_module_info: update struct to allow IPA matching

Message ID 20190522210220.1631-2-paul.elder@ideasonboard.com
State Superseded
Headers show
Series
  • Add IPAManager
Related show

Commit Message

Paul Elder May 22, 2019, 9:02 p.m. UTC
We need a way to match pipelines with IPA modules, so add fields in
IPAModuleInfo to hold the IPA API version number and the pipeline
matching string.

Also update IPA module tests accordingly.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
---
 include/libcamera/ipa/ipa_module_info.h |  8 ++++--
 test/ipa/ipa_test.cpp                   | 37 +++++++++++++++++--------
 test/ipa/shared_test.c                  |  4 ++-
 test/ipa/shared_test.cpp                |  6 ++--
 4 files changed, 39 insertions(+), 16 deletions(-)

Patch

diff --git a/include/libcamera/ipa/ipa_module_info.h b/include/libcamera/ipa/ipa_module_info.h
index 4e0d668..f3ae97d 100644
--- a/include/libcamera/ipa/ipa_module_info.h
+++ b/include/libcamera/ipa/ipa_module_info.h
@@ -7,14 +7,18 @@ 
 #ifndef __LIBCAMERA_IPA_MODULE_INFO_H__
 #define __LIBCAMERA_IPA_MODULE_INFO_H__
 
+#include <stdint.h>
+
 #ifdef __cplusplus
 namespace libcamera {
 #endif
 
 struct IPAModuleInfo {
+	uint32_t ipaAPIVersion;
+	uint32_t pipelineVersion;
+	char pipelineName[256];
 	char name[256];
-	unsigned int version;
-};
+} __attribute__((packed));
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/test/ipa/ipa_test.cpp b/test/ipa/ipa_test.cpp
index 9861ee2..ca15fbd 100644
--- a/test/ipa/ipa_test.cpp
+++ b/test/ipa/ipa_test.cpp
@@ -33,6 +33,19 @@  protected:
 
 		const struct IPAModuleInfo &info = ll->info();
 
+		if (info.ipaAPIVersion != testInfo.ipaAPIVersion) {
+			cerr << "test IPA module has incorrect ipaAPIVersion" << endl;
+			cerr << "expected \"" << testInfo.ipaAPIVersion << "\", got \""
+			     << info.ipaAPIVersion << "\"" << endl;
+			ret = -1;
+		}
+		if (info.pipelineVersion != testInfo.pipelineVersion) {
+			cerr << "test IPA module has incorrect pipelineVersion" << endl;
+			cerr << "expected \"" << testInfo.pipelineVersion << "\", got \""
+			     << info.pipelineVersion << "\"" << endl;
+			ret = -1;
+		}
+
 		if (strcmp(info.name, testInfo.name)) {
 			cerr << "test IPA module has incorrect name" << endl;
 			cerr << "expected \"" << testInfo.name << "\", got \""
@@ -40,13 +53,6 @@  protected:
 			ret = -1;
 		}
 
-		if (info.version != testInfo.version) {
-			cerr << "test IPA module has incorrect version" << endl;
-			cerr << "expected \"" << testInfo.version << "\", got \""
-			     << info.version << "\"" << endl;
-			ret = -1;
-		}
-
 		delete ll;
 		return ret;
 	}
@@ -55,14 +61,23 @@  protected:
 	{
 		int count = 0;
 
-		const struct IPAModuleInfo testInfo = {
-			"It's over nine thousand!",
+		const struct IPAModuleInfo testInfo1 = {
+			1,
 			9001,
+			"bloop",
+			"It's over nine thousand!",
+		};
+
+		const struct IPAModuleInfo testInfo2 = {
+			1,
+			8999,
+			"bleep",
+			"It's under nine thousand!",
 		};
 
-		count += runTest("test/ipa/ipa-dummy-c.so", testInfo);
+		count += runTest("test/ipa/ipa-dummy-c.so", testInfo1);
 
-		count += runTest("test/ipa/ipa-dummy-cpp.so", testInfo);
+		count += runTest("test/ipa/ipa-dummy-cpp.so", testInfo2);
 
 		if (count < 0)
 			return TestFail;
diff --git a/test/ipa/shared_test.c b/test/ipa/shared_test.c
index 87d182b..0046ace 100644
--- a/test/ipa/shared_test.c
+++ b/test/ipa/shared_test.c
@@ -1,6 +1,8 @@ 
 #include <libcamera/ipa/ipa_module_info.h>
 
 const struct IPAModuleInfo ipaModuleInfo = {
+	.ipaAPIVersion = 1,
+	.pipelineVersion = 9001,
+	.pipelineName = "bloop",
 	.name = "It's over nine thousand!",
-	.version = 9001,
 };
diff --git a/test/ipa/shared_test.cpp b/test/ipa/shared_test.cpp
index 4e5c976..78405b1 100644
--- a/test/ipa/shared_test.cpp
+++ b/test/ipa/shared_test.cpp
@@ -4,8 +4,10 @@  namespace libcamera {
 
 extern "C" {
 const struct libcamera::IPAModuleInfo ipaModuleInfo = {
-	"It's over nine thousand!",
-	9001,
+	1,
+	8999,
+	"bleep",
+	"It's under nine thousand!",
 };
 };