return 0;
}
+int __vc_cb_manager_pid(int manager_pid)
+{
+ SLOG(LOG_DEBUG, TAG_VCC, "Manager pid is changed : %d", manager_pid);
+
+ /* Save service state */
+ vc_client_set_mgr_pid(g_vc, manager_pid);
+
+ return 0;
+}
+
int vc_set_service_state_changed_cb(vc_service_state_changed_cb callback, void* user_data)
{
if (0 != __vc_get_feature_enabled()) {
extern int __vc_cb_service_state(int state);
+extern int __vc_cb_manager_pid(int manager_pid);
+
static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handler)
{
SLOG(LOG_DEBUG, TAG_VCC, " ");
} /* VCD_METHOD_RESULT */
+ else if (dbus_message_is_signal(msg, if_name, VCD_METHOD_SEND_MANAGER_PID)) {
+ int manager_pid = 0;
+
+ dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &manager_pid, DBUS_TYPE_INVALID);
+ if (dbus_error_is_set(&err)) {
+ SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Get arguments error (%s)", err.message);
+ dbus_error_free(&err);
+ }
+
+ SLOG(LOG_DEBUG, TAG_VCC, "<<<< manager pid is changed : %d", manager_pid);
+
+ __vc_cb_manager_pid(manager_pid);
+
+ } /* VCD_METHOD_SEND_MANAGER_PID */
else if (dbus_message_is_signal(msg, if_name, VCD_METHOD_ERROR)) {
SLOG(LOG_DEBUG, TAG_VCC, "===== Get Error");
#define VCD_METHOD_ERROR "vcd_method_error"
#define VCD_METHOD_HELLO "vcd_method_hello"
#define VCD_METHOD_SET_SERVICE_STATE "vcd_method_set_service_state"
+#define VCD_METHOD_SEND_MANAGER_PID "vcd_method_send_manager_pid"
/* Authority */
#if 0
return 0;
}
+int vcdc_send_manager_pid(int manager_pid)
+{
+ DBusError err;
+ dbus_error_init(&err);
+
+ DBusMessage* msg = NULL;
+
+ /* Send to client */
+ msg = dbus_message_new_signal(
+ VC_CLIENT_SERVICE_OBJECT_PATH,
+ VC_CLIENT_SERVICE_INTERFACE,
+ VCD_METHOD_SEND_MANAGER_PID);
+
+ if (NULL == msg) {
+ SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] Message is NULL");
+ return VCD_ERROR_OUT_OF_MEMORY;
+ }
+
+ dbus_message_append_args(msg, DBUS_TYPE_INT32, &manager_pid, DBUS_TYPE_INVALID);
+
+ if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
+ SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] Fail to Send");
+ return VCD_ERROR_OPERATION_FAILED;
+ } else {
+ SLOG(LOG_DEBUG, TAG_VCD, "<<<< Send manager pid to client : pid(%d)", manager_pid);
+ dbus_connection_flush(g_conn_sender);
+ }
+
+ dbus_message_unref(msg);
+
+ return 0;
+}
+
int vcdc_send_dialog(int manger_pid, int pid, const char* disp_text, const char* utt_text, int continuous)
{
DBusError err;
int vcdc_send_dialog(int manger_pid, int pid, const char* disp_text, const char* utt_text, int continuous);
+int vcdc_send_manager_pid(int manager_pid);
+
#ifdef __cplusplus
}
}
// Sent launch request
ret = app_control_send_launch_request(app_control, NULL, NULL);
- if(APP_CONTROL_ERROR_NONE != ret) {
+ if (APP_CONTROL_ERROR_NONE != ret) {
SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to send launch request, ret(%d)", ret);
return VCD_ERROR_OPERATION_FAILED;
}
return VCD_ERROR_OPERATION_FAILED;
}
+ if (0 != vcdc_send_manager_pid(pid))
+ SLOG(LOG_WARN, TAG_VCD, "[Server WARNING] Fail to send manager pid");
+
SLOG(LOG_DEBUG, TAG_VCD, "[Server Success] Manager initialize : pid(%d)", pid);
return VCD_ERROR_NONE;
/* Cancel recognition */
vcd_server_mgr_cancel();
+ if (0 != vcdc_send_manager_pid(-1))
+ SLOG(LOG_WARN, TAG_VCD, "[Server WARNING] Fail to send manager pid");
+
/* Remove manager information */
if (0 != vcd_client_manager_unset()) {
SLOG(LOG_WARN, TAG_VCD, "[Server WARNING] Fail to delete client");
}
int ret = __vcd_server_launch_manager_app();
- if (0 != ret){
+ if (0 != ret) {
SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Fail to send dialog : mgr_pid(%d), pid(%d), disp_text(%s), utt_text(%s), continue(%d)", vcd_client_manager_get_pid(), pid, disp_text, utt_text, continuous);
return ret;
}