From: Karol Lewandowski Date: Thu, 31 Mar 2022 11:19:03 +0000 (+0200) Subject: update-control: Use device HAL api to retrieve upgrade progress X-Git-Tag: submit/tizen/20220630.103030~9 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=38f6d6f445027823581e8df9000ae45d5c1c74e9;p=platform%2Fcore%2Fsystem%2Fupdate-control.git update-control: Use device HAL api to retrieve upgrade progress 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 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index aa94eab..a9183b1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/packaging/update-control.spec b/packaging/update-control.spec index 1042718..eaf2965 100644 --- a/packaging/update-control.spec +++ b/packaging/update-control.spec @@ -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) diff --git a/src/plugin/CMakeLists.txt b/src/plugin/CMakeLists.txt index dd6ed04..adcf42a 100644 --- a/src/plugin/CMakeLists.txt +++ b/src/plugin/CMakeLists.txt @@ -23,6 +23,7 @@ SET(requires libcurl libtzplatform-config key-manager + hal-api-device ) INCLUDE(FindPkgConfig) diff --git a/src/plugin/plugin.c b/src/plugin/plugin.c index 2dbb25a..eea012f 100644 --- a/src/plugin/plugin.c +++ b/src/plugin/plugin.c @@ -22,6 +22,7 @@ #include #include #include +#include #include "plugin.h" #include "http_util.h" @@ -40,10 +41,8 @@ #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;