#include <message_port.h>
#include <alarm.h>
#include <system_info.h>
+#include <tzplatform_config.h>
#include "plugin.h"
#include "http_util.h"
#define API __attribute__ ((visibility("default")))
/* IPC with Smartthings-thing for ST cloud account info */
-#define ST_APP_THING_SERVICE_APP_ID "org.tizen.smartthings-thing"
+#define ST_APP_THING_SERVICE_APP_ID "com.samsung.tizen.smartthings-thing"
#define ST_APP_OPERATION_UPDATE_AGENT "http://tizen.org/appcontrol/operation/update_agent"
#define ST_SVC_KEY_COMMAND "command"
#define ST_SVC_CMD_GET_ACCOUNT_INFO "get_account_info"
#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"
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>>>>>>>>>>>>>>>>>>");
}
#endif
- int *int_val;
int ret = UPDATE_CONTROL_ERROR_NONE;
switch (property) {
break;
case UPDATE_CONTROL_PROPERTY_PACKAGE_SIZE:
if (update_info->package_size) {
- int_val = (int *)malloc(sizeof(int));
- *int_val = update_info->package_size;
- *value = (void *)int_val;
- free(int_val);
+ *value = malloc(sizeof(int));
+ *(int *)(*value) = update_info->package_size;
} else {
_D("Package size is not set");
}
break;
case UPDATE_CONTROL_PROPERTY_RESULT:
+ *value = malloc(sizeof(int));
+ if (send_get_result_signal((int *)*value) < 0) {
+ free(*value);
+ *value = NULL;
+ _E("Failed to send_get_result_signal");
+ 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;
break;
case UPDATE_CONTROL_PROPERTY_UPDATE_AVAILABLE:
- int_val = (int *)malloc(sizeof(int));
- *int_val = update_info->updatable;
- *value = (void *)int_val;
- free(int_val);
+ *value = malloc(sizeof(int));
+ *(int *)(*value) = update_info->updatable;
break;
default:
_E("Not supported property key: %d", property);