set(CMAKE_VERBOSE_MAKEFILE OFF)
IF("$ENV{CFLAGS}" MATCHES "-DMOBILE")
- OPTION(USE_D_MOBILE "Use Mobile Def" ON)
+ OPTION(USE_D_MOBILE "Use Mobile Def" ON)
ENDIF()
IF("$ENV{CFLAGS}" MATCHES "-DWEARABLE")
- OPTION(USE_D_WEARABLE "Use Wearable Def" ON)
+ OPTION(USE_D_WEARABLE "Use Wearable Def" ON)
ENDIF()
SET(SRCS
- src/emuld.cpp
- src/evdi.cpp
- src/client.cpp
- src/common.cpp
+ src/emuld.cpp
+ src/evdi.cpp
+ src/client.cpp
+ src/common.cpp
)
IF(USE_D_MOBILE)
- SET(SRCS ${SRCS}
- src/mobile.cpp
- src/mobile_dev.cpp
- src/common_dev.cpp
- )
+ SET(SRCS ${SRCS}
+ src/mobile.cpp
+ src/mobile_dev.cpp
+ src/common_dev.cpp
+ )
ENDIF(USE_D_MOBILE)
IF(USE_D_WEARABLE)
- SET(SRCS ${SRCS}
- src/wearable.cpp
- src/wearable_dev.cpp
- src/common_dev.cpp
- )
+ SET(SRCS ${SRCS}
+ src/wearable.cpp
+ src/wearable_dev.cpp
+ src/common_dev.cpp
+ )
ENDIF(USE_D_WEARABLE)
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
INCLUDE(FindPkgConfig)
SET(PKG_MODULE
- vconf
- deviced
- dlog
+ vconf
+ deviced
+ dlog
+ ecore
+ edbus
)
pkg_check_modules(PKGS REQUIRED ${PKG_MODULE})
#define HEADER_SIZE 4
// Thread TID profile uses >= 5
-#define TID_SDCARD 1
-#define TID_LOCATION 2
-#define TID_HDS 3
+#define TID_BOOT 1
+#define TID_SDCARD 2
+#define TID_LOCATION 3
+#define TID_HDS 4
extern pthread_t tid[MAX_CLIENT + 1];
extern int g_fd[fdtype_max];
void send_to_ecs(const char* cat, int group, int action, char* data);
void send_emuld_connection(void);
void send_default_suspend_req(void);
+void* dbus_booting_done_check(void* data);
void systemcall(const char* param);
int parse_val(char *buff, unsigned char data, char *parsbuf);
#define IJTYPE_SUSPEND "suspend"
#define IJTYPE_GUEST "guest"
#define IJTYPE_PACKAGE "package"
+#define IJTYPE_BOOT "boot"
void msgproc_suspend(ijcommand* ijcmd);
void msgproc_system(ijcommand* ijcmd);
#include <sys/time.h>
#include <sys/reboot.h>
+#include <sys/ioctl.h>
#include <stdio.h>
#include <unistd.h>
#include "emuld.h"
//#include "deviced/dd-display.h"
+#include <E_DBus.h>
+#include <Ecore.h>
+
#define PMAPI_RETRY_COUNT 3
#define POWEROFF_DURATION 2
if (!tmp)
return;
- if (data != NULL) {
- memcpy(tmp, &datalen, 2);
- }
+ memcpy(tmp, &datalen, 2);
memcpy(tmp + 2, &group, 1);
memcpy(tmp + 3, &action, 1);
if (data != NULL) {
}
}
+enum ioctl_cmd {
+ IOCTL_CMD_BOOT_DONE,
+};
+
+void send_to_kernel(void)
+{
+ if(ioctl(g_fd[fdtype_device], IOCTL_CMD_BOOT_DONE, NULL) == -1) {
+ LOGERR("Failed to send ioctl to kernel");
+ return;
+ }
+ LOGINFO("[DBUS] sent booting done to kernel");
+}
+
+#define DBUS_PATH_BOOT_DONE "/Org/Tizen/System/DeviceD/Core"
+#define DBUS_IFACE_BOOT_DONE "org.tizen.system.deviced.core"
+#define BOOT_DONE_SIGNAL "BootingDone"
+
+static void boot_done(void *data, DBusMessage *msg)
+{
+ if (dbus_message_is_signal(msg,
+ DBUS_IFACE_BOOT_DONE,
+ BOOT_DONE_SIGNAL) != 0) {
+ LOGINFO("[DBUS] sending booting done to ecs.");
+ send_to_ecs(IJTYPE_BOOT, 0, 0, NULL);
+ LOGINFO("[DBUS] sending booting done to kernel for log.");
+ send_to_kernel();
+ }
+}
+
+void* dbus_booting_done_check(void* data)
+{
+ E_DBus_Connection *connection;
+ E_DBus_Signal_Handler *boot_handler = NULL;
+
+ ecore_init();
+ e_dbus_init();
+
+ connection = e_dbus_bus_get(DBUS_BUS_SYSTEM);
+ if (!connection) {
+ LOGERR("[DBUS] Failed to get dbus bus.");
+ e_dbus_shutdown();
+ ecore_shutdown();
+ return NULL;
+ }
+
+ boot_handler = e_dbus_signal_handler_add(
+ connection,
+ NULL,
+ DBUS_PATH_BOOT_DONE,
+ DBUS_IFACE_BOOT_DONE,
+ BOOT_DONE_SIGNAL,
+ boot_done,
+ NULL);
+ if (!boot_handler) {
+ LOGERR("[DBUS] Failed to register handler");
+ e_dbus_signal_handler_del(connection, boot_handler);
+ e_dbus_shutdown();
+ ecore_shutdown();
+ return NULL;
+ }
+ LOGINFO("[DBUS] signal handler is added.");
+
+ ecore_main_loop_begin();
+
+ e_dbus_signal_handler_del(connection, boot_handler);
+ e_dbus_shutdown();
+ ecore_shutdown();
+
+ return NULL;
+}
+