Add new API to manipulate the "cloned" flag 54/272354/6 accepted/tizen/unified/20220331.010044 submit/tizen/20220328.084941
authorSangYoun Kwak <sy.kwak@samsung.com>
Tue, 15 Mar 2022 07:13:40 +0000 (16:13 +0900)
committerHyotaek Shim <hyotaek.shim@samsung.com>
Wed, 23 Mar 2022 02:42:00 +0000 (02:42 +0000)
Change-Id: I9f6fbbdc7526280a3c59c9febcc4bd82e3067f8c
Signed-off-by: SangYoun Kwak <sy.kwak@samsung.com>
include/backend/hal-board-interface.h
include/hal-board.h
src/board.c

index 8b6a517..049037a 100644 (file)
@@ -26,11 +26,17 @@ typedef struct _hal_backend_board_funcs {
        /* Serial number of this device */
        int (*get_device_serial_number)(char *buffer, int len);
        int (*get_device_revision)(int *revision);
-       int (*switch_partition)(int argc, char *argv[]);
+
        int (*set_boot_success)(void);
        int (*clear_boot_mode)(void);
        int (*get_boot_mode)(char *buffer, int len);
        int (*get_boot_reason)(char *buffer, int len);
+
+       int (*switch_partition)(int argc, char *argv[]);
+       int (*set_partition_ab_cloned)(void);
+       int (*clear_partition_ab_cloned)(void);
+       int (*get_partition_ab_cloned)(int *cloned);
+
 } hal_backend_board_funcs;
 
 #ifdef __cplusplus
index aa3c679..5d6c319 100644 (file)
@@ -26,14 +26,20 @@ extern "C" {
 
 int hal_device_board_get_backend(void);
 int hal_device_board_put_backend(void);
+
 int hal_device_board_get_device_serial_number(char *buffer, int len);
 int hal_device_board_get_device_revision(int *revision);
-int hal_device_board_switch_partition(int argc, char *argv[]);
+
 int hal_device_board_set_boot_success(void);
 int hal_device_board_clear_boot_mode(void);
 int hal_device_board_get_boot_mode(char *buffer, int len);
 int hal_device_board_get_boot_reason(char *buffer, int len);
 
+int hal_device_board_switch_partition(int argc, char *argv[]);
+int hal_device_board_set_partition_ab_cloned(void);
+int hal_device_board_clear_partition_ab_cloned(void);
+int hal_device_board_get_partition_ab_cloned(int *cloned);
+
 #ifdef __cplusplus
 }
 #endif
index 41b8254..c4bdbbf 100644 (file)
@@ -90,7 +90,7 @@ int hal_device_board_get_device_revision(int *revision)
        return hal_board_funcs->get_device_revision(revision);
 }
 
-int hal_device_board_switch_partition(int argc, char *argv[])
+int hal_device_board_set_boot_success(void)
 {
        int ret;
 
@@ -100,13 +100,14 @@ int hal_device_board_switch_partition(int argc, char *argv[])
        }
 
        if (!hal_board_funcs ||
-           !hal_board_funcs->switch_partition)
+           !hal_board_funcs->set_boot_success)
                return -ENODEV;
 
-       return hal_board_funcs->switch_partition(argc, argv);
+       return hal_board_funcs->set_boot_success();
 }
 
-int hal_device_board_set_boot_success(void)
+
+int hal_device_board_clear_boot_mode(void)
 {
        int ret;
 
@@ -116,14 +117,29 @@ int hal_device_board_set_boot_success(void)
        }
 
        if (!hal_board_funcs ||
-           !hal_board_funcs->set_boot_success)
+           !hal_board_funcs->clear_boot_mode)
                return -ENODEV;
 
-       return hal_board_funcs->set_boot_success();
+       return hal_board_funcs->clear_boot_mode();
 }
 
+int hal_device_board_get_boot_mode(char *buffer, int len)
+{
+       int ret;
 
-int hal_device_board_clear_boot_mode(void)
+       if (!hal_board_funcs && !hal_initialized) {
+               if ((ret = hal_device_board_get_backend()) < 0)
+                       return ret;
+       }
+
+       if (!hal_board_funcs ||
+           !hal_board_funcs->get_boot_mode)
+               return -ENODEV;
+
+       return hal_board_funcs->get_boot_mode(buffer, len);
+}
+
+int hal_device_board_get_boot_reason(char *buffer, int len)
 {
        int ret;
 
@@ -133,13 +149,13 @@ int hal_device_board_clear_boot_mode(void)
        }
 
        if (!hal_board_funcs ||
-           !hal_board_funcs->clear_boot_mode)
+           !hal_board_funcs->get_boot_reason)
                return -ENODEV;
 
-       return hal_board_funcs->clear_boot_mode();
+       return hal_board_funcs->get_boot_reason(buffer, len);
 }
 
-int hal_device_board_get_boot_mode(char *buffer, int len)
+int hal_device_board_switch_partition(int argc, char *argv[])
 {
        int ret;
 
@@ -149,13 +165,13 @@ int hal_device_board_get_boot_mode(char *buffer, int len)
        }
 
        if (!hal_board_funcs ||
-           !hal_board_funcs->get_boot_mode)
+           !hal_board_funcs->switch_partition)
                return -ENODEV;
 
-       return hal_board_funcs->get_boot_mode(buffer, len);
+       return hal_board_funcs->switch_partition(argc, argv);
 }
 
-int hal_device_board_get_boot_reason(char *buffer, int len)
+int hal_device_board_set_partition_ab_cloned(void)
 {
        int ret;
 
@@ -165,8 +181,40 @@ int hal_device_board_get_boot_reason(char *buffer, int len)
        }
 
        if (!hal_board_funcs ||
-           !hal_board_funcs->get_boot_reason)
+           !hal_board_funcs->set_partition_ab_cloned)
                return -ENODEV;
 
-       return hal_board_funcs->get_boot_reason(buffer, len);
+       return hal_board_funcs->set_partition_ab_cloned();
+}
+
+int hal_device_board_clear_partition_ab_cloned(void)
+{
+       int ret;
+
+       if (!hal_board_funcs && !hal_initialized) {
+               if ((ret = hal_device_board_get_backend()) < 0)
+                       return ret;
+       }
+
+       if (!hal_board_funcs ||
+           !hal_board_funcs->clear_partition_ab_cloned)
+               return -ENODEV;
+
+       return hal_board_funcs->clear_partition_ab_cloned();
+}
+
+int hal_device_board_get_partition_ab_cloned(int *cloned)
+{
+       int ret;
+
+       if (!hal_board_funcs && !hal_initialized) {
+               if ((ret = hal_device_board_get_backend()) < 0)
+                       return ret;
+       }
+
+       if (!hal_board_funcs ||
+           !hal_board_funcs->get_partition_ab_cloned)
+               return -ENODEV;
+
+       return hal_board_funcs->get_partition_ab_cloned(cloned);
 }