Add new API to get current partition 42/274542/1
authorSangYoun Kwak <sy.kwak@samsung.com>
Mon, 2 May 2022 05:33:07 +0000 (14:33 +0900)
committerSangYoun Kwak <sy.kwak@samsung.com>
Mon, 2 May 2022 05:33:07 +0000 (14:33 +0900)
Change-Id: I29f146cd093294511642e029deed55f8703bed28
Signed-off-by: SangYoun Kwak <sy.kwak@samsung.com>
include/backend/hal-board-interface.h
include/hal-board.h
src/board.c

index 2294cf62755d05cf2973a4dd7bde249d85dc6e26..b73f47de699785fa9fff3f6072d4ac9a7afc6f91 100644 (file)
@@ -32,6 +32,7 @@ typedef struct _hal_backend_board_funcs {
        int (*get_boot_mode)(char *buffer, int len);
        int (*get_boot_reason)(char *buffer, int len);
 
+       int (*get_current_partition)(char *partition_ab);
        int (*switch_partition)(char partition_ab);
        int (*set_partition_ab_cloned)(void);
        int (*clear_partition_ab_cloned)(void);
index 7f70fc939a1196695343b309d12940455b798ac8..f1dfe223aaed2495e5fba90108ed0032b70bcd9a 100644 (file)
@@ -94,9 +94,18 @@ int hal_device_board_get_boot_reason(char *buffer, int len);// not in use
 
 
 /**
- * @brief Switch partition to partition_ab ('a' or 'b')
+ * @brief Get partition_ab ('a' or 'b')
  *
- * @param[in] partition_ab Partition name to switch to ('a' or 'b')
+ * @param[in] partition_ab Current partition name ('a' or 'b')
+ *
+ * @return 0 on success, otherwise a negative error value
+ */
+int hal_device_board_get_current_partition(char *partition_ab);
+
+/**
+ * @brief Switch partition to partition_ab ('a' or 'b') or toggle partition if partition_ab is '\0'
+ *
+ * @param[in] partition_ab Partition name to switch to ('a' or 'b') or '\0'(toggle)
  *
  * @return 0 on success, otherwise a negative error value
  */
index 60c8bf2741562714d04a96a884deffe5736972ba..4affda15215bba56a874ff2b49e70ba333ff59de 100644 (file)
@@ -155,6 +155,22 @@ int hal_device_board_get_boot_reason(char *buffer, int len)
        return hal_board_funcs->get_boot_reason(buffer, len);
 }
 
+int hal_device_board_get_current_partition(char *partition_ab)
+{
+       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_current_partition)
+               return -ENODEV;
+
+       return hal_board_funcs->get_current_partition(partition_ab);
+}
+
 int hal_device_board_switch_partition(char partition_ab)
 {
        int ret;