halapi: Add function checking HAL compatibility 20/309320/9
authorYoungjae Cho <y0.cho@samsung.com>
Mon, 8 Apr 2024 11:34:54 +0000 (20:34 +0900)
committerYoungjae Cho <y0.cho@samsung.com>
Mon, 15 Apr 2024 02:27:14 +0000 (11:27 +0900)
int hal_common_check_backend_compatibility()
  : It checks compatibility of the given hal module.

Change-Id: I1f4e7a61b709b4bc364400a9ec7f6b920f4eb550
Signed-off-by: Youngjae Cho <y0.cho@samsung.com>
include/hal-common.h
src/hal-api-compatibility-checker.c

index 9a9dced239ff2e1b528a160f9132648eb471cea9..3ae6517cf90dd4d9ad0cc57aeec5cc0a9837b3bf 100644 (file)
@@ -226,6 +226,15 @@ int hal_common_get_backend_library_names(enum hal_module module,
  */
 int hal_common_check_backend_compatibility_all(enum hal_common_backend_compatibility **arr_compatibility, int *len);
 
+/**
+ * @brief Check compatibility of the given module
+ * @param[in] module HAL module for checking compatibility
+ * @param[out] compatibility Address for storing compatibility result
+ * @return @c 0 on success, otherwise a negative error value
+ */
+int hal_common_check_backend_compatibility(enum hal_module module,
+       enum hal_common_backend_compatibility *compatibility);
+
 #ifdef __cplusplus
 }
 #endif
index 660e4fb9ba9e9be7b2022c3ff50c0a9846c8fcee..f604b6debad9e1991773ba16b5834d22ed4a7618 100644 (file)
@@ -410,25 +410,32 @@ static int load_backend_compatibility_from_storage(void)
        return 0;
 }
 
-EXPORT
-int hal_common_check_backend_compatibility_all(enum hal_common_backend_compatibility **arr_compatibility, int *len)
+static int load_backend_compatibility(void)
 {
-       enum hal_common_backend_compatibility *arr = NULL;
-
        if (g_compatibility_info_loaded)
-               goto load_success;
+               return 0;
 
        load_backend_compatibility_from_storage();
        if (g_compatibility_info_loaded)
-               goto load_success;
+               return 0;
 
        load_backend_compatibility_from_manifest();
        if (g_compatibility_info_loaded)
-               goto load_success;
+               return 0;
 
        return -ENODATA;
+}
+
+EXPORT
+int hal_common_check_backend_compatibility_all(enum hal_common_backend_compatibility **arr_compatibility, int *len)
+{
+       int ret;
+       enum hal_common_backend_compatibility *arr = NULL;
+
+       ret = load_backend_compatibility();
+       if (ret != 0)
+               return ret;
 
-load_success:
        if (access(HAL_COMMON_DEFAULT_BACKEND_COMPATIBILITY_PATH, F_OK) != 0)
                store_backend_compatibility_to_storage();
 
@@ -451,3 +458,27 @@ load_success:
 
        return 0;
 }
+
+EXPORT
+int hal_common_check_backend_compatibility(enum hal_module module,
+       enum hal_common_backend_compatibility *compatibility)
+{
+       int ret;
+
+       if (module < HAL_MODULE_UNKNOWN || module >= HAL_MODULE_END)
+               return -EINVAL;
+
+       if (!compatibility)
+               return -EINVAL;
+
+       ret = load_backend_compatibility();
+       if (ret != 0)
+               return ret;
+
+       if (access(HAL_COMMON_DEFAULT_BACKEND_COMPATIBILITY_PATH, F_OK) != 0)
+               store_backend_compatibility_to_storage();
+
+       *compatibility = g_compatibility_info[module].compat;
+
+       return 0;
+}