update-control: Use device HAL api to retrieve upgrade progress 06/273206/5
authorKarol Lewandowski <k.lewandowsk@samsung.com>
Thu, 31 Mar 2022 11:19:03 +0000 (13:19 +0200)
committerKarol Lewandowski <k.lewandowsk@samsung.com>
Tue, 26 Apr 2022 20:31:07 +0000 (22:31 +0200)
This commit reworks API to use HAL-provided functions for retrieving
upgrade progress and sharing it via UPDATE_CONTROL_PROPERTY_RESULT
property.

Change-Id: Ie8888b31af565fd30e3e4c603e7fa8a361a8ac8d

CMakeLists.txt
packaging/update-control.spec
src/plugin/CMakeLists.txt
src/plugin/plugin.c

index aa94eab77e5c41414395254c57e0bfc37892c218..a9183b1e5be75337190ad15c7b9d04d912332ee0 100644 (file)
@@ -61,4 +61,4 @@ CONFIGURE_FILE(
 INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
 
 ADD_SUBDIRECTORY(src/plugin)
-ADD_SUBDIRECTORY(update-manager)
\ No newline at end of file
+ADD_SUBDIRECTORY(update-manager)
index 1042718e74c4b63a0509de63f90b1be6d0a81738..eaf29658c173534b5f506b61f30f73b3703b7880 100644 (file)
@@ -25,6 +25,7 @@ BuildRequires:  pkgconfig(libcurl)
 BuildRequires:  pkgconfig(glib-2.0)
 BuildRequires:  pkgconfig(gio-2.0)
 BuildRequires:  pkgconfig(gio-unix-2.0)
+BuildRequires:  pkgconfig(hal-api-device)
 BuildRequires:  pkgconfig(alarm-service)
 BuildRequires:  pkgconfig(libtzplatform-config)
 BuildRequires:  pkgconfig(key-manager)
index dd6ed043b39f487d5dd51031be4ff21c6e35080a..adcf42a16423de551874fae64a8ebdd59d504ea5 100644 (file)
@@ -23,6 +23,7 @@ SET(requires
        libcurl
        libtzplatform-config
        key-manager
+       hal-api-device
 )
 
 INCLUDE(FindPkgConfig)
index 2dbb25a74e9ae85c353bccde92cf5106fab0b9a3..eea012fd9de6a55531b0d4bfc00765df47ccca5b 100644 (file)
@@ -22,6 +22,7 @@
 #include <system_info.h>
 #include <tzplatform_config.h>
 #include <ckmc/ckmc-manager.h>
+#include <hal/device/hal-board.h>
 #include "plugin.h"
 #include "http_util.h"
 
 #define UPDATE_OBJECT_PATH      "/Org/Tizen/System/Update"
 #define UPDATE_INTERFACE_NAME   UPDATE_BUS_NAME".Update"
 #define UPDATE_METHOD           "do_update"
-#define RESULT_METHOD           "get_result"
 
 #define FIRMWARE_FILE_NAME "delta.tar.gz"
-#define RESULT_FILE tzplatform_mkpath(TZ_SYS_UPGRADE_DATA, "result")
 
 #ifdef DEBUG_MODE
 #define DEBUG_FLAG "/opt/etc/.debugupdate"
@@ -409,50 +408,6 @@ exit:
        return ret;
 }
 
-static int send_get_result_signal(int *result)
-{
-       GDBusConnection *conn;
-       GVariant *reply = NULL;
-       GError *error = NULL;
-       int ret = 0;
-
-       retvm_if(!result, -1, "result is NULL");
-       conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
-       if (error) {
-               _E("Failed to get dbus: %s", error->message);
-               g_error_free(error);
-               return -1;
-       }
-
-       reply = g_dbus_connection_call_sync(conn,
-                                           UPDATE_BUS_NAME,
-                                           UPDATE_OBJECT_PATH,
-                                           UPDATE_INTERFACE_NAME,
-                                           RESULT_METHOD,
-                                           NULL,
-                                           G_VARIANT_TYPE("(i)"),
-                                           G_DBUS_CALL_FLAGS_NONE,
-                                           120000,
-                                           NULL,
-                                           &error);
-       if (error) {
-               _E("Failed to get reply: %s", error->message);
-               g_error_free(error);
-               ret = -1;
-               goto exit;
-       }
-
-       g_variant_get(reply, "(i)", result);
-       _I("Get result signal returns: (%d)", *result);
-
-exit:
-       if (reply)
-               g_variant_unref(reply);
-
-       return ret;
-}
-
-
 API int update_control_initialize(void)
 {
        _D("FN CALLED>>>>>>>>>>>>>>>>>>");
@@ -870,19 +825,30 @@ API int update_control_get_property(update_control_property_e property, void **v
                }
                break;
        case UPDATE_CONTROL_PROPERTY_RESULT:
+       {
                *value = malloc(sizeof(int));
                if (!*value) {
                        _E("Failed to malloc");
                        return UPDATE_CONTROL_ERROR_OUT_OF_MEMORY;
                }
 
-               if (send_get_result_signal((int *)*value) < 0) {
-                       free(*value);
-                       *value = NULL;
-                       _E("Failed to send_get_result_signal");
+               int r = hal_device_board_get_upgrade_status(*value);
+               if (r >= 0) {
+                       ret = UPDATE_CONTROL_ERROR_NONE;
+                       break;
+               }
+
+               free(*value);
+
+               if (r == -ENODEV) {
+                       _E("get_upgrade_status not implemented in HAL");
+                       ret = UPDATE_CONTROL_ERROR_INVALID_OPERATION;
+               } else {
+                       _E("Unable to get upgrade progress from HAL");
                        ret = UPDATE_CONTROL_ERROR_SYSTEM_ERROR;
                }
                break;
+       }
        case UPDATE_CONTROL_PROPERTY_DESCRIPTION:
                _D("Not implemented for key: %d", property);
                ret = UPDATE_CONTROL_ERROR_INVALID_OPERATION;