From: Jeon Sang-Heon Date: Fri, 3 Jul 2020 17:10:40 +0000 (+0000) Subject: Support result dbus method X-Git-Tag: submit/tizen/20200706.142233~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=19a9aa78378241a67d746f7d2e280ce662f3fa17;p=platform%2Fcore%2Fsystem%2Fupdate-control.git Support result dbus method - To better manager, divide dbus manager from fota controller - Support result dbus method - Minor log message and convention fix Change-Id: Ia5eee14f9e314113eed0e098382a75a48cb92947 Signed-off-by: Jeon Sang-Heon --- diff --git a/update-manager/dbus-manager.c b/update-manager/dbus-manager.c new file mode 100644 index 0000000..9d4c059 --- /dev/null +++ b/update-manager/dbus-manager.c @@ -0,0 +1,64 @@ +#include "update-manager.h" + +static guint owner_id; + +gboolean dbus_manager_result(OrgTizenUpdateManager *skeleton, GDBusMethodInvocation *invocation, gpointer user_data) +{ + int ret = 0; + + _D("Dbus status : result called"); + ret = fota_controller_result(); + if (ret < 0) + _W("Failed to fetch result with fota : %d", ret); + org_tizen_update_manager_complete_result(skeleton, invocation, ret); + + return TRUE; +} + +gboolean dbus_manager_install(OrgTizenUpdateManager *skeleton, GDBusMethodInvocation *invocation, gpointer user_data) +{ + int ret = 0; + + _D("Dbus status : install called"); + ret = fota_controller_install(); + if (ret < 0) + _W("Failed to install delta with fota : %d", ret); + org_tizen_update_manager_complete_install(skeleton, invocation, ret); + + return TRUE; +} + +void dbus_manager_on_name_lost(GDBusConnection *connection, const gchar *name, gpointer user_data) +{ + _D("Dbus status : name lost"); +} + +void dbus_manager_on_name_acquired(GDBusConnection *connection, const gchar *name, gpointer user_data) +{ + _D("Dbus status : name acquired"); + + OrgTizenUpdateManager *skeleton = org_tizen_update_manager_skeleton_new(); + g_signal_connect(skeleton, "handle-install", G_CALLBACK(dbus_manager_install), NULL); + g_signal_connect(skeleton, "handle-result", G_CALLBACK(dbus_manager_result), NULL); + g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELETON(skeleton), connection, NODE_NAME, NULL); +} + +void dbus_manager_on_bus_acquired(GDBusConnection *connection, const gchar *name, gpointer user_data) +{ + _D("Dbus status : bus acquired"); +} + +int dbus_manager_init() +{ + owner_id = g_bus_own_name(G_BUS_TYPE_SYSTEM, INTERFACE_NAME, G_BUS_NAME_OWNER_FLAGS_NONE, + dbus_manager_on_bus_acquired, dbus_manager_on_name_acquired, dbus_manager_on_name_lost, NULL, NULL); + + return 0; +} + +int dbus_manager_fini() +{ + g_bus_unown_name(owner_id); + + return 0; +} diff --git a/update-manager/fota-controller.c b/update-manager/fota-controller.c index 4665ffb..c525884 100644 --- a/update-manager/fota-controller.c +++ b/update-manager/fota-controller.c @@ -1,7 +1,5 @@ #include "update-manager.h" -static guint owner_id; - int fota_controller_verify_delta(const char *delta_path) { int ret = 0, status = 0; @@ -77,14 +75,10 @@ int fota_controller_setup_delta() shared_path = g_strjoin("/", SHARED_DIR, appid, SHARED_DATA_DIR, FOTA_DELTA_FILE, NULL); ret = fota_controller_verify_delta(shared_path); - if (ret < 0) { + if (ret != 0) { _E("Failed to verify delta : %d", ret); status = -1; goto delta_destroy; - } else if (ret > 0) { - _I("Failed to verify delta : %d", ret); - status = -1; - goto delta_destroy; } ret = symlink(shared_path, FOTA_DELTA_PATH); @@ -158,77 +152,73 @@ version_destroy: return status; } -/* dbus-send --system --dest=org.tizen.update.manager --type=method_call /org/tizen/update/manager org.tizen.update.manager.install */ -gboolean fota_controller_install(OrgTizenUpdateManager *skeleton, GDBusMethodInvocation *invocation, gpointer user_data) +int fota_controller_install() { - int ret = 0, status = 0; + int ret = 0; ret = fota_controller_setup_delta(); if (ret < 0) { - _E("Failed to setup delta.tar"); - status = -1; - goto install_destroy; + _E("Failed to setup delta.tar : %d", ret); + return -1; } ret = fota_controller_write_platform_version(); if (ret < 0) { - _E("Failed to write platform version"); - status = -1; - goto install_destroy; + _E("Failed to write platform version : %d", ret); + return -1; } ret = fota_controller_setup_status(); if (ret < 0) { - _E("Failed to setup fota update status"); - status = -1; - goto install_destroy; + _E("Failed to setup fota update status : %d", ret); + return -1; } ret = device_power_reboot(FOTA_REBOOT_REASON); if (ret != DEVICE_ERROR_NONE) { _E("Failed to request reboot with reason : %s", FOTA_REBOOT_REASON); - status = -1; - goto install_destroy; + return -1; } _I("Success to request fota, device will reboot"); - -install_destroy: - org_tizen_update_manager_complete_install(skeleton, invocation, status); - - return TRUE; -} - -void fota_controller_on_name_lost(GDBusConnection *conn, const gchar *name, gpointer user_data) -{ - _D("Dbus status : name lost"); + return 0; } -void fota_controller_on_name_acquired(GDBusConnection *conn, const gchar *name, gpointer user_data) +int fota_controller_result() { - _D("Dbus status : name acquired"); + char *fota_result = NULL; + int len = 0; - OrgTizenUpdateManager *skeleton = org_tizen_update_manager_skeleton_new(); - g_signal_connect(skeleton, "handle-install", G_CALLBACK(fota_controller_install), NULL); - g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELETON(skeleton), conn, NODE_NAME, NULL); -} + fota_result = fota_status_get_result(); + if (fota_result == NULL) { + _I("Fota result : Not exist"); + return 4; + } -void fota_controller_on_bus_acquired(GDBusConnection *conn, const gchar *name, gpointer user_data) -{ - _D("Dbus status : bus acquired"); -} + len = strlen(fota_result); + _I("Fota result length : %d", len); -int fota_controller_init() -{ - owner_id = g_bus_own_name(G_BUS_TYPE_SYSTEM, INTERFACE_NAME, G_BUS_NAME_OWNER_FLAGS_NONE, - fota_controller_on_bus_acquired, fota_controller_on_name_acquired, fota_controller_on_name_lost, NULL, NULL); + if (len > 2 && fota_result[0] == 'F') { + if (fota_result[1] == 'D') { + _I("Fota result : RO failed, %s", fota_result); + return 3; + } + else if (fota_result[1] == 'A') { + _I("Fota result : RW failed, %s", fota_result); + return 2; + } + } - return 0; -} + if (len > 1 && fota_result[1] != '0') { + _I("Fota result : RO only success, %s", fota_result); + return 1; + } -int fota_controller_fini() -{ - g_bus_unown_name(owner_id); + if (len > 1 && fota_result[0] == '0' && fota_result[1] == '0') { + _I("Fota result : RO/RW success, %s", fota_result); + return 0; + } - return 0; + _E("Unexpected result : %s", fota_result); + return -1; } diff --git a/update-manager/fota-status-checker.c b/update-manager/fota-status-checker.c index 7091ba5..0045334 100644 --- a/update-manager/fota-status-checker.c +++ b/update-manager/fota-status-checker.c @@ -75,4 +75,4 @@ int fota_status_checker_fini() free(fota_result); return 0; -} \ No newline at end of file +} diff --git a/update-manager/main.c b/update-manager/main.c index 0d0fafd..6c959c3 100644 --- a/update-manager/main.c +++ b/update-manager/main.c @@ -31,21 +31,22 @@ int main(int argc, char *argv[]) goto main_destroy; } - ret = fota_storage_checker_init(); + ret = fota_status_checker_init(); if (ret < 0) { - _E("Failed to initialize fota storage checker : %d", ret); + _E("Failed to initialize fota status checker : %d", ret); goto main_destroy; } - ret = fota_status_checker_init(); + ret = fota_storage_checker_init(); if (ret < 0) { - _E("Failed to initialize fota status checker : %d", ret); + _E("Failed to initialize fota storage checker : %d", ret); goto main_destroy; } - ret = fota_controller_init(); + /* Dbus */ + ret = dbus_manager_init(); if (ret < 0) { - _E("Failed to initialize fota controller : %d", ret); + _E("Failed to initialize dbus manager : %d", ret); goto main_destroy; } @@ -66,17 +67,18 @@ main_destroy: if (ret < 0) _W("Failed to finalize fota info checker : %d", ret); - ret = fota_storage_checker_fini(); - if (ret < 0) - _W("Failed to finalize fota storage checker : %d", ret); - ret = fota_status_checker_fini(); if (ret < 0) _E("Failed to finalize fota status checker : %d", ret); - ret = fota_controller_fini(); + ret = fota_storage_checker_fini(); + if (ret < 0) + _W("Failed to finalize fota storage checker : %d", ret); + + /* Dbus */ + ret = dbus_manager_fini(); if (ret < 0) - _W("Failed to finalize fota controller : %d", ret); + _W("Failed to finalize dbus manager : %d", ret); if (mainloop) { g_main_loop_quit(mainloop); diff --git a/update-manager/update-manager.h b/update-manager/update-manager.h index d99b6ac..c3f5332 100644 --- a/update-manager/update-manager.h +++ b/update-manager/update-manager.h @@ -84,6 +84,9 @@ bool client_status_checker_is_success(void); int client_controller_process_launch_request(void); int client_controller_add_launch_request_with_data(char *, char *); +int dbus_manager_init(void); +int dbus_manager_fini(void); + int fota_info_checker_init(void); int fota_info_checker_fini(void); char *fota_info_get_release_version(void); @@ -96,9 +99,9 @@ int fota_status_checker_init(void); int fota_status_checker_fini(void); char *fota_status_get_result(void); -int fota_controller_init(void); -int fota_controller_fini(void); int fota_controller_verify_delta(const char *); +int fota_controller_install(void); +int fota_controller_result(void); int util_file_mkdir(const char *); int util_file_read_line(const char *, char []);