* limitations under the License.
*/
+#include <bundle.h>
+
#include "vcd_client_data.h"
#include "vcd_main.h"
#include "vcd_server.h"
#include "vcd_widget_stub.h"
#include "vcd_widget_proxy.h"
-
static rpc_port_stub_vcd_mgr_stub_vc_mgr_callback_s g_mgr_callback;
static pthread_mutex_t g_mgr_tidl_info_mutex = PTHREAD_MUTEX_INITIALIZER;
static int g_volume_count = 0;
-int vcd_client_tidl_open_connection();
-int vcd_client_tidl_close_connection();
-int vcd_mgr_tidl_open_connection();
-int vcd_mgr_tidl_close_connection();
-int vcd_widget_tidl_open_connection();
-int vcd_widget_tidl_close_connection();
-int vcd_setting_tidl_open_connection();
-int vcd_setting_tidl_close_connection();
-
-
+extern int __client_tidl_open_connection();
+extern int __client_tidl_close_connection();
+extern int __mgr_tidl_open_connection();
+extern int __mgr_tidl_close_connection();
+extern int __widget_tidl_open_connection();
+extern int __widget_tidl_close_connection();
+extern int __setting_tidl_open_connection();
+extern int __setting_tidl_close_connection();
-/* for common request */
+/* For common request */
static void __request_tidl_connect(vcd_client_type_e type, int pid)
{
char* type_str = NULL;
pthread_mutex_unlock(&g_widget_tidl_info_mutex);
}
+
/**
- * TIDL functions for VC client
+ * TIDL callback functions for VC client
*/
static void __vc_create_cb(rpc_port_stub_vcd_stub_vc_context_h context, void *user_data)
{
return ret;
}
-int vcd_client_tidl_open_connection()
+int __client_tidl_open_connection()
{
- SLOG(LOG_INFO, TAG_VCD, "[TIDL] vcd_client_tidl_open_connection");
+ SLOG(LOG_INFO, TAG_VCD, "[TIDL] __client_tidl_open_connection");
g_client_callback.create = __vc_create_cb;
g_client_callback.terminate = __vc_terminate_cb;
return VCD_ERROR_NONE;
}
-int vcd_client_tidl_close_connection()
+int __client_tidl_close_connection()
{
- SLOG(LOG_INFO, TAG_VCD, "[TIDL] vcd_tidl_close_connection");
+ SLOG(LOG_INFO, TAG_VCD, "[TIDL] __client_tidl_close_connection");
rpc_port_stub_vcd_stub_vc_unregister();
return VCD_ERROR_NONE;
}
-int vcdc_send_error_signal_to_app(int pid, int reason, char *err_msg)
+/**
+ * TIDL callback functions for VC manager
+ */
+static void __mgr_on_connected(rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_h h, void *user_data)
{
- if (NULL == err_msg) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Input parameter is NULL");
- return VCD_ERROR_INVALID_PARAMETER;
- }
+ manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
- client_tidl_info_s* info = vcd_client_get_tidl_info(pid);
- if (NULL == info) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to get tidl info. pid(%d)", pid);
- return VCD_ERROR_INVALID_PARAMETER;
+ if (NULL == mgr_tidl_info) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL] tidl proxy info not allocated");
+ return;
}
- bundle* msg = bundle_create();
- if (NULL == msg) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create bundle data");
- return VCD_ERROR_OUT_OF_MEMORY;
- }
+ mgr_tidl_info->connected = true;
+ mgr_tidl_info->connection_requesting = false;
- SLOG(LOG_INFO, TAG_VCD, "[TIDL] Send error signal to app(%d)", pid);
+ SLOG(LOG_INFO, TAG_VCD, "Connected to manager");
+}
- char pid_char[10] = {0};
- char reason_char[10] = {0};
- snprintf(pid_char, 10, "%d", pid);
- snprintf(reason_char, 10, "%d", reason);
+static void __mgr_on_disconnected(rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_h h, void *user_data)
+{
+ manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
- bundle_add_str(msg, VC_BUNDLE_METHOD, VCD_METHOD_ERROR_TO_APP);
- bundle_add_str(msg, VC_BUNDLE_PID, pid_char);
- bundle_add_str(msg, VC_BUNDLE_REASON, reason_char);
- bundle_add_str(msg, VC_BUNDLE_ERR_MSG, err_msg);
+ if (NULL == mgr_tidl_info) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL] tidl proxy info not allocated");
+ return;
+ }
- rpc_port_stub_vcd_stub_vc_notify_cb_invoke(info->notify_cb, pid, msg);
+ mgr_tidl_info->connected = false;
+ mgr_tidl_info->connection_requesting = false;
- return VCD_ERROR_NONE;
+ SLOG(LOG_INFO, TAG_VCD, "Disonnected to manager");
}
-int vcdc_send_manager_pid(int manager_pid)
+static void __mgr_on_rejected(rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_h h, void *user_data)
{
- // send signal to all pid
+ manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
- // get all pids
- int* client_list = NULL;
- int client_count = 0;
- int ret = -1;
- ret = vcd_client_get_tidl_list(&client_list, &client_count);
- if (0 != ret || 0 == client_count) {
- SLOG(LOG_WARN, TAG_VCD, "[WARNING] There is no client");
- return VCD_ERROR_NONE;
+ if (NULL == mgr_tidl_info) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL] tidl proxy info not allocated");
+ return;
}
- client_tidl_info_s* info;
- int pid = -1;
- bundle* msg;
- char pid_char[10] = {0};
- char mgrpid_char[10] = {0};
- for (int i = 0 ; i < client_count ; i++) {
- pid = client_list[i];
-
- info = vcd_client_get_tidl_info(pid);
- if (NULL == info) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to get tidl info. pid(%d)", pid);
- continue;
- }
+ mgr_tidl_info->connection_requesting = false;
- msg = bundle_create();
- if (NULL == msg) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create bundle data");
- continue;
- }
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Rejected from manager");
+}
- SLOG(LOG_INFO, TAG_VCD, "[TIDL] Send manager pid(%d) to app(%d)", manager_pid, pid);
+static rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_h __mgr_create_rpc_port(const char* engine_app_id)
+{
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] __mgr_create_rpc_port");
+ rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_callback_s rpc_callback = {
+ .connected = __mgr_on_connected,
+ .disconnected = __mgr_on_disconnected,
+ .rejected = __mgr_on_rejected
+ };
- snprintf(pid_char, 10, "%d", pid);
- snprintf(mgrpid_char, 10, "%d", manager_pid);
+ rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_h handle = NULL;
+ if (0 != rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_create(engine_app_id, &rpc_callback, NULL, &handle)) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create proxy");
+ return NULL;
+ }
- bundle_add_str(msg, VC_BUNDLE_METHOD, VCD_METHOD_SEND_MANAGER_PID);
- bundle_add_str(msg, VC_BUNDLE_PID, pid_char);
- bundle_add_str(msg, VC_BUNDLE_MANAGER_PID, mgrpid_char);
+ return handle;
+}
- rpc_port_stub_vcd_stub_vc_notify_cb_invoke(info->notify_cb, pid, msg);
+static void __vc_mgr_create_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, void *user_data)
+{
+ char *sender = NULL;
- bundle_free(msg);
+ rpc_port_stub_vcd_mgr_stub_vc_mgr_context_get_sender(context, &sender);
+ if (!sender){
+ SLOG(LOG_ERROR, TAG_VCD, "Sender is NULL");
+ return;
}
- return VCD_ERROR_NONE;
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ Manager connect. appid(%s)", sender);
+
+ free(sender);
}
-int vcdc_send_feedback_streaming(int pid, int utt_id, vc_feedback_event_e event, char* buffer, int len)
+static void __vc_mgr_terminate_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, void *user_data)
{
- if (NULL == buffer || 0 >= len) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Invalid parameter");
- return VCD_ERROR_INVALID_PARAMETER;
+ pthread_mutex_lock(&g_mgr_tidl_info_mutex);
+ manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
+ if (NULL == mgr_tidl_info) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to get manager tidl info.");
+ pthread_mutex_unlock(&g_mgr_tidl_info_mutex);
+ return;
}
- client_tidl_info_s* info = vcd_client_get_tidl_info(pid);
- if (NULL == info) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to get tidl info. pid(%d)", pid);
- return VCD_ERROR_INVALID_PARAMETER;
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VC MANAGER FINALIZE. pid(%u)", mgr_tidl_info->pid);
+
+ if (0 != vcd_client_manager_unset_tidl_notify_cb()) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to unset notify callback");
}
- bundle* msg = bundle_create();
- if (NULL == msg) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create bundle data");
- return VCD_ERROR_OUT_OF_MEMORY;
+ if (0 != vcd_client_manager_unset_tidl_send_buffer_cb()) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to unset send buffer callback");
}
- SLOG(LOG_INFO, TAG_VCD, "[TIDL] Send feedback streaming to app(%d), utt_id(%d), event(%d), length(%d)", pid, utt_id, event, len);
+ if (0 != vcd_client_manager_delete_tidl_info()) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to delete manager tidl info");
+ }
+ mgr_tidl_info = NULL;
- rpc_port_stub_vcd_stub_array_char_h arr_char = NULL;
- rpc_port_stub_vcd_stub_array_char_create(&arr_char);
- rpc_port_stub_vcd_stub_array_char_set(arr_char, buffer, len);
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
- rpc_port_stub_vcd_stub_vc_feedback_cb_invoke(info->feedback_cb, utt_id, event, arr_char, len);
+ pthread_mutex_unlock(&g_mgr_tidl_info_mutex);
- rpc_port_stub_vcd_stub_array_char_destroy(arr_char);
- bundle_free(msg);
+ char *sender = NULL;
+ rpc_port_stub_vcd_mgr_stub_vc_mgr_context_get_sender(context, &sender);
+ if (!sender)
+ return;
- return VCD_ERROR_NONE;
+ SLOG(LOG_INFO, TAG_VCD, "@@@ Manager disconnect. appid(%s)", sender);
+
+ free(sender);
}
-int vcdc_send_hello(int pid, vcd_client_type_e type)
+static void __vc_mgr_register_cb_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, rpc_port_stub_vcd_mgr_stub_vc_mgr_notify_cb_h notify_callback, rpc_port_stub_vcd_mgr_stub_vc_mgr_send_buffer_cb_h send_buffer_callback, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send hello");
-
- char tmp_pid[10] = {0, };
+ pthread_mutex_lock(&g_mgr_tidl_info_mutex);
+ SLOG(LOG_INFO, TAG_VCD, "@@@ VC MANAGER REGISTER CALLBACK");
- bundle* msg = bundle_create();
- snprintf(tmp_pid, 10, "%d", pid);
+ int ret = -1;
+ ret = vcd_client_manager_create_tidl_info(pid);
- if (VCD_CLIENT_TYPE_NORMAL == type) {
- bundle_add_str(msg, VC_BUNDLE_METHOD, VCD_METHOD_HELLO);
- bundle_add_str(msg, VC_BUNDLE_PID, tmp_pid);
- } else if (VCD_CLIENT_TYPE_MANAGER == type) {
- bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_HELLO);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_MESSAGE, tmp_pid);
- } else if (VCD_CLIENT_TYPE_WIDGET == type) {
- bundle_add_str(msg, VC_WIDGET_BUNDLE_METHOD, VCD_WIDGET_METHOD_HELLO);
- bundle_add_str(msg, VC_WIDGET_BUNDLE_MESSAGE, tmp_pid);
- } else {
- SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] Client type is NOT valid");
- bundle_free(msg);
- return VCD_ERROR_INVALID_PARAMETER;
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create manager tidl info.");
+ pthread_mutex_unlock(&g_mgr_tidl_info_mutex);
+ return;
}
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] VCD SEND MESSAGE");
-
- // TODO: VCD_CLIENT_TYPE_MANAGER?? type??
- __send_msg(msg, VCD_CLIENT_TYPE_MANAGER, pid);
- bundle_free(msg);
+ manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
- return VCD_ERROR_NONE;
-}
+ if (NULL == mgr_tidl_info) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to get manager tidl info. pid(%d)", pid);
+ pthread_mutex_unlock(&g_mgr_tidl_info_mutex);
+ return;
+ }
-int vcd_tidl_open_connection()
-{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] vcd_tidl_open_connection");
+ char *sender = NULL;
+ rpc_port_stub_vcd_mgr_stub_vc_mgr_context_get_sender(context, &sender);
- if (0 != vcd_mgr_tidl_open_connection()) {
- SLOG(LOG_ERROR, TAG_VCD, "Fail to open connection to manager");
- return VCD_ERROR_OPERATION_FAILED;
+ if (!sender){
+ SLOG(LOG_ERROR, TAG_VCD, "Sender is NULL");
+ pthread_mutex_unlock(&g_mgr_tidl_info_mutex);
+ return;
}
- if (0 != vcd_client_tidl_open_connection()) {
- SLOG(LOG_ERROR, TAG_VCD, "Fail to open connection to client");
- return VCD_ERROR_OPERATION_FAILED;
+ mgr_tidl_info->rpc_h = __mgr_create_rpc_port(sender);
+
+ if (NULL == mgr_tidl_info->rpc_h) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create server proxy");
+ } else {
+ SLOG(LOG_INFO, TAG_VCD, "[TIDL] rpc_h(%p), engine_app_id(%s)", mgr_tidl_info->rpc_h, sender);
}
- if (0 != vcd_widget_tidl_open_connection()) {
- SLOG(LOG_ERROR, TAG_VCD, "Fail to open connection to widget");
- return VCD_ERROR_OPERATION_FAILED;
+ free(sender);
+
+ if (0 != vcd_client_manager_set_tidl_notify_cb(notify_callback, user_data)) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to set notify callback");
+ } else {
+ SLOG(LOG_INFO, TAG_VCD, "[TIDL] Succeed to set notify callback.");
}
- if (0 != vcd_setting_tidl_open_connection()) {
- SLOG(LOG_ERROR, TAG_VCD, "Fail to open connection to setting");
- return VCD_ERROR_OPERATION_FAILED;
+ if (0 != vcd_client_manager_set_tidl_send_buffer_cb(send_buffer_callback, user_data)) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to set send buffer callback");
+ } else {
+ SLOG(LOG_INFO, TAG_VCD, "[TIDL] Succeed to set send buffer callback.");
}
- return VCD_ERROR_NONE;
+ pthread_mutex_unlock(&g_mgr_tidl_info_mutex);
+
+ __request_tidl_connect(VCD_CLIENT_TYPE_MANAGER, pid);
+
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
}
-int vcd_tidl_close_connection()
+static int __vc_mgr_initialize_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, int audio_streaming_mode, int *service_state, int *foreground, int *daemon_pid, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] vcd_tidl_close_connection");
+ SLOG(LOG_INFO, TAG_VCD, "@@@ VCD Manager Initialize");
- if (0 != vcd_mgr_tidl_close_connection()) {
- SLOG(LOG_ERROR, TAG_VCD, "Fail to close connection to manager");
- return VCD_ERROR_OPERATION_FAILED;
- }
+ int ret = -1;
- if (0 != vcd_client_tidl_close_connection()) {
- SLOG(LOG_ERROR, TAG_VCD, "Fail to close connection to client");
- return VCD_ERROR_OPERATION_FAILED;
- }
-
- if (0 != vcd_widget_tidl_close_connection()) {
- SLOG(LOG_ERROR, TAG_VCD, "Fail to close connection to widget");
- return VCD_ERROR_OPERATION_FAILED;
- }
-
- if (0 != vcd_setting_tidl_close_connection()) {
- SLOG(LOG_ERROR, TAG_VCD, "Fail to close connection to setting");
- return VCD_ERROR_OPERATION_FAILED;
+ vcd_config_set_audio_streaming_mode((vcd_audio_streaming_mode_e)audio_streaming_mode);
+ ret = vcd_server_mgr_initialize(pid, audio_streaming_mode);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ return ret;
}
+ *service_state = vcd_server_get_service_state();
+ *foreground = vcd_server_get_foreground();
+ *daemon_pid = getpid();
- return VCD_ERROR_NONE;
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr initialize : pid(%d) service state(%d) foreground(%d) daemon_pid(%d)", pid, *service_state, *foreground, *daemon_pid);
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ return ret;
}
-int vcdc_send_set_volume(int manager_pid, float volume)
+static int __vc_mgr_finalize_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Set volume");
-
- char tmp_volume[20] = {0, };
-
- bundle* msg = bundle_create();
-
- snprintf(tmp_volume, 20, "%.6f", volume);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_SET_VOLUME);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_MESSAGE, tmp_volume);
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager Finalize");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr finalize : pid(%d)", pid);
+ int ret = -1;
- SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
- __send_msg(msg, VCD_CLIENT_TYPE_MANAGER, manager_pid);
- if (20 == g_volume_count) {
- SLOG(LOG_INFO, TAG_VCD, "@@ Send set volume : pid(%d), volume(%f)", manager_pid, volume);
- g_volume_count = 0;
+ ret = vcd_server_mgr_finalize(pid);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
}
- g_volume_count++;
- bundle_free(msg);
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
- return VCD_ERROR_NONE;
+ return ret;
}
-int vcdc_send_show_tooltip(int pid, bool show)
+static int __vc_mgr_set_command_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send pre result to manager");
-
- char tmp_pid[10] = {0, };
- char tmp_show[10] = {0, };
-
- bundle* msg = bundle_create();
-
- snprintf(tmp_pid, 10, "%d", pid);
- snprintf(tmp_show, 10, "%d", (int)show);
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager Set command");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr set command : pid(%d)", pid);
- bundle_add_str(msg, VC_WIDGET_BUNDLE_METHOD, VCD_WIDGET_METHOD_SHOW_TOOLTIP);
- bundle_add_str(msg, VC_WIDGET_BUNDLE_MESSAGE, tmp_pid);
- bundle_add_str(msg, VC_WIDGET_BUNDLE_SHOW, tmp_show);
+ int ret = -1;
- SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
+ ret = vcd_server_mgr_set_command(pid);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ return ret;
+ }
- __send_msg(msg, VCD_CLIENT_TYPE_WIDGET, pid);
- bundle_free(msg);
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
- return VCD_ERROR_NONE;
+ return ret;
}
-int vcdc_send_result(int pid, int manager_pid, int cmd_type)
+static int __vc_mgr_unset_command_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send result");
-
- vcd_client_type_e type;
- bundle* msg = bundle_create();
- if (NULL == msg) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create bundle data");
- return VCD_ERROR_OUT_OF_MEMORY;
- }
-
- SLOG(LOG_INFO, TAG_VCD, "[TIDL] Result command type(%d)", cmd_type);
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager unset command");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr unset command : pid(%d)", pid);
- switch (cmd_type) {
- case VC_COMMAND_TYPE_FOREGROUND:
- case VC_COMMAND_TYPE_BACKGROUND:
- if (pid == manager_pid) {
- type = VCD_CLIENT_TYPE_MANAGER;
- bundle_add_str(msg, VC_BUNDLE_METHOD, VCD_MANAGER_METHOD_RESULT);
- } else {
- type = VCD_CLIENT_TYPE_NORMAL;
- char pid_char[10] = {0};
- snprintf(pid_char, 10, "%d", pid);
- bundle_add_str(msg, VC_BUNDLE_PID, pid_char);
- bundle_add_str(msg, VC_BUNDLE_METHOD, VCD_METHOD_RESULT);
- }
- break;
- case VC_COMMAND_TYPE_WIDGET:
- type = VCD_CLIENT_TYPE_WIDGET;
- bundle_add_str(msg, VC_BUNDLE_METHOD, VCD_WIDGET_METHOD_RESULT);
- break;
- case VC_COMMAND_TYPE_SYSTEM:
- case VC_COMMAND_TYPE_SYSTEM_BACKGROUND:
- case VC_COMMAND_TYPE_EXCLUSIVE:
- type = VCD_CLIENT_TYPE_MANAGER;
- bundle_add_str(msg, VC_BUNDLE_METHOD, VCD_MANAGER_METHOD_RESULT);
- break;
+ int ret = -1;
- default:
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Command type is NOT valid(%d)", cmd_type);
- bundle_free(msg);
- return VCD_ERROR_INVALID_PARAMETER;
+ ret = vcd_server_mgr_unset_command(pid);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ return ret;
}
- SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
-
- __send_msg(msg, type, pid);
- bundle_free(msg);
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
- return VCD_ERROR_NONE;
+ return ret;
}
-int vcdc_send_pre_result_to_manager(int manager_pid, int event, const char* pre_result)
+static int __vc_mgr_set_demandable_client_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send pre result to manager");
-
- char tmp_event[10] = {0, };
-
- bundle* msg = bundle_create();
- snprintf(tmp_event, 10, "%d", event);
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager Set demandable client");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr set demandable client : pid(%d)", pid);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_PRE_RESULT);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_EVENT, tmp_event);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_PRE_RESULT, pre_result);
+ int ret = -1;
- SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
+ ret = vcd_server_mgr_set_demandable_client(pid);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ return ret;
+ }
- __send_msg(msg, VCD_CLIENT_TYPE_MANAGER, manager_pid);
- bundle_free(msg);
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
- return VCD_ERROR_NONE;
+ return ret;
}
-int vcdc_send_specific_engine_result_to_manager(int manager_pid, const char* engine_app_id, const char* event, const char* result)
+static int __vc_mgr_set_audio_type_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, const char *audio_type, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send specific engine result to manager");
-
- bundle* msg = bundle_create();
-
- gchar *gEncodedResult = g_base64_encode((const guchar*)result, strlen(result));
-
- bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_SPECIFIC_ENGINE_RESULT);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_ENGINE_APP_ID, engine_app_id);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_EVENT, event);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_RESULT, gEncodedResult);
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager set audio type");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr set audio type : pid(%d), audio type(%s)", pid, audio_type);
- SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
+ int ret = -1;
- __send_msg(msg, VCD_CLIENT_TYPE_MANAGER, manager_pid);
- bundle_free(msg);
+ ret = vcd_server_mgr_set_audio_type(pid, audio_type);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ return ret;
+ }
- if (gEncodedResult)
- g_free(gEncodedResult);
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
- return VCD_ERROR_NONE;
+ return ret;
}
-int vcdc_send_result_to_manager(int manager_pid, int result_type)
+static int __vc_mgr_get_audio_type_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, char **audio_type, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send result to manager");
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager get audio type");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr set audio type : pid(%d)", pid);
- char tmp_result[10] = {0, };
+ int ret = -1;
+ char* tmp_audio_type = NULL;
- bundle* msg = bundle_create();
- snprintf(tmp_result, 10, "%d", result_type);
+ ret = vcd_server_mgr_get_audio_type(pid, &tmp_audio_type);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ free(tmp_audio_type);
+ return ret;
+ }
- bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_ALL_RESULT);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_MESSAGE, tmp_result);
+ *audio_type = strdup(tmp_audio_type);
+ free(tmp_audio_type);
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
- SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
+ return ret;
+}
- __send_msg(msg, VCD_CLIENT_TYPE_MANAGER, manager_pid);
- bundle_free(msg);
+static void __vc_mgr_set_private_data_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, const char *key, const char *data, void *user_data)
+{
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager set private data");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr set domain : pid(%d), key(%s), data(%s)", pid, key, data);
- return VCD_ERROR_NONE;
+ int ret = -1;
+
+ ret = vcd_server_mgr_set_private_data(pid, key, data);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to set private data");
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ }
+
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
}
-int vcdc_send_speech_detected(int manager_pid)
+static int __vc_mgr_get_private_data_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, const char *key, char **data, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send speech detected");
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager get private data");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr get private data : pid(%d), key(%s)", pid, key);
- bundle* msg = bundle_create();
+ int ret = -1;
+ char *temp_data = NULL;
- bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_SPEECH_DETECTED);
+ ret = vcd_server_mgr_get_private_data(pid, key, &temp_data);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ return ret;
+ }
+ if (NULL == temp_data) {
+ SLOG(LOG_INFO, TAG_VCD, "data parameter is NULL");
+ temp_data = strdup("#NULL");
+ }
- SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
+ *data = strdup(temp_data);
+ free(temp_data);
- __send_msg(msg, VCD_CLIENT_TYPE_MANAGER, manager_pid);
- bundle_free(msg);
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
- return VCD_ERROR_NONE;
+ return ret;
}
-int vcdc_send_service_state(vcd_state_e state)
+static int __vc_mgr_set_client_info_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send service state");
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager set client info");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr set client info : pid(%d)", pid);
- char tmp_state[10] = {0, };
+ int ret = -1;
- bundle* msg = bundle_create();
- snprintf(tmp_state, 10, "%d", (int)state);
+ ret = vcd_server_mgr_set_client_info(pid);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ return ret;
+ }
- bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_SET_SERVICE_STATE);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_MESSAGE, tmp_state);
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
- bundle_add_str(msg, VC_BUNDLE_METHOD, VCD_METHOD_SET_SERVICE_STATE);
- bundle_add_str(msg, VC_BUNDLE_SERVICE_STATE, tmp_state);
+ return ret;
+}
- bundle_add_str(msg, VC_WIDGET_BUNDLE_METHOD, VCD_WIDGET_METHOD_SET_SERVICE_STATE);
- bundle_add_str(msg, VC_WIDGET_BUNDLE_MESSAGE, tmp_state);
+static int __vc_mgr_set_domain_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, const char *domain, void *user_data)
+{
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager set domain type");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr set domain : pid(%d), domain(%s)", pid, domain);
- SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND SIGNAL");
- __send_signal(msg);
- bundle_free(msg);
+ int ret = -1;
- return VCD_ERROR_NONE;
+ ret = vcd_server_mgr_set_domain(pid, domain);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ return ret;
+ }
+
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+
+ return ret;
}
-int vcdc_send_dialog(int manager_pid, int pid, const char* disp_text, const char* utt_text, int continuous)
+static void __vc_mgr_do_action_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, int type, const char *send_event, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send dialog");
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager request to do action");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr request to do action : pid(%d), type(%d) send_event(%s)", pid, type, send_event);
- char tmp_pid[10] = {0, };
- char tmp_continuous[10] = {0, };
- char* tmp_disp_text = NULL;
- char* tmp_utt_text = NULL;
- bundle* msg = bundle_create();
- snprintf(tmp_pid, 10, "%d", pid);
- snprintf(tmp_continuous, 10, "%d", continuous);
+ int ret = -1;
- if (NULL == disp_text) {
- tmp_disp_text = strdup("#NULL");
- } else {
- tmp_disp_text = strdup(disp_text);
+ ret = vcd_server_mgr_do_action(pid, type, send_event);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
}
- if (NULL == utt_text) {
- tmp_utt_text = strdup("#NULL");
- } else {
- tmp_utt_text = strdup(utt_text);
- }
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+}
- bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_DIALOG);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_MESSAGE, tmp_pid);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_DISP_TEXT, tmp_disp_text);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_UTT_TEXT, tmp_utt_text);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_CONTINUOUS, tmp_continuous);
+static int __vc_mgr_start_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, int recognition_mode, bool exclusive_command_option, bool start_by_client, int disabled_cmd_type, void *user_data)
+{
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager start");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd check enabled or disabled command types. disabled cmd type(%d)", disabled_cmd_type);
- SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
+ int ret = -1;
- __send_msg(msg, VCD_CLIENT_TYPE_MANAGER, manager_pid);
- bundle_free(msg);
- free(tmp_disp_text);
- free(tmp_utt_text);
+ vcd_server_mgr_set_disabled_command_type(pid, disabled_cmd_type);
- return VCD_ERROR_NONE;
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr start : pid(%d) recognition_mode(%d) exclusive(%d) start by client(%d)", pid, recognition_mode, exclusive_command_option, start_by_client);
+ ret = vcd_server_mgr_start((vcd_recognition_mode_e)recognition_mode, exclusive_command_option, start_by_client);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ return ret;
+ }
+
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+
+ return ret;
}
-int vcdc_tidl_send_error_to_manager(int manager_pid, int reason, char *err_msg)
+static int __vc_mgr_stop_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, void *user_data)
{
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL] Send error signal to manager");
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager stop");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr stop : pid(%d)", pid);
- char tmp_reason[10] = {0, };
- char tmp_daemon_pid[10] = {0, };
- char *temp_msg = NULL;
+ int ret = -1;
- if (NULL == err_msg) {
- SLOG(LOG_WARN, TAG_VCD, "[TIDL ERROR] Input parameter is NULL");
- temp_msg = strdup("#NULL");
- } else {
- temp_msg = strdup(err_msg);
+ ret = vcd_server_mgr_stop();
+
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ return ret;
}
- bundle* msg = bundle_create();
- snprintf(tmp_reason, 10, "%d", reason);
- snprintf(tmp_daemon_pid, 10, "%d", getpid());
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
- bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_ERROR);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_REASON, tmp_reason);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_DAEMON_PID, tmp_daemon_pid);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_ERROR_MESSAGE, temp_msg);
+ return ret;
+}
- SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
+static int __vc_mgr_cancel_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, void *user_data)
+{
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager cancel");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr cancel : pid(%d)", pid);
- __send_msg(msg, VCD_CLIENT_TYPE_MANAGER, manager_pid);
- bundle_free(msg);
+ int ret = -1;
- free(temp_msg);
- temp_msg = NULL;
+ ret = vcd_server_mgr_cancel();
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ return ret;
+ }
- return VCD_ERROR_NONE;
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+
+ return ret;
}
-/*
-// TODO: remove _tidl after remove dbus
-// TODO: make client, widget error signal
-// But... it seems there is no call of this function.. Need to check.
-int vcdc_tidl_send_error(int reason, char *err_msg)
+static void __vc_mgr_set_audio_streaming_mode_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, int mode, void *user_data)
{
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL] Send error signal");
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager set audio streaming mode");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr set audio streaming mode : pid(%d) mode(%d)", pid, mode);
- char tmp_reason[10] = {0, };
- char tmp_daemon_pid[10] = {0, };
- char *temp_msg = NULL;
+ vcd_config_set_audio_streaming_mode((vcd_audio_streaming_mode_e)mode);
- if (NULL == err_msg) {
- SLOG(LOG_WARN, TAG_VCD, "[TIDL ERROR] Input parameter is NULL");
- temp_msg = strdup("#NULL");
- } else {
- temp_msg = strdup(err_msg);
- }
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+}
- bundle* msg = bundle_create();
- snprintf(tmp_reason, 10, "%d", reason);
- snprintf(tmp_daemon_pid, 10, "%d", getpid());
+static void __vc_mgr_send_specific_engine_request_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, const char *engine_app_id, const char *event, const char *request, void *user_data)
+{
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager specific engine request");
- bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_ERROR);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_REASON, tmp_reason);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_DAEMON_PID, tmp_daemon_pid);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_ERROR_MESSAGE, temp_msg);
+ int ret = -1;
+ gsize decodingSize = 0;
+ gchar *gDecodedRequest = (gchar *)g_base64_decode((const gchar *)request, &decodingSize);
- bundle_add_str(msg, VC_WIDGET_BUNDLE_METHOD, VCD_MANAGER_METHOD_ERROR);
- bundle_add_str(msg, VC_WIDGET_BUNDLE_REASON, tmp_reason);
- bundle_add_str(msg, VC_WIDGET_BUNDLE_DAEMON_PID, tmp_daemon_pid);
- bundle_add_str(msg, VC_WIDGET_BUNDLE_ERROR_MESSAGE, temp_msg);
+ if (gDecodedRequest) {
+ ret = vcd_server_mgr_send_specific_engine_request(pid, engine_app_id, event, gDecodedRequest);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ }
- SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND SIGNAL");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr specific engine request : pid(%d), engine_app_id(%s), event(%s), request(%s), ret(%d)", pid, engine_app_id, event, gDecodedRequest, ret);
+ g_free(gDecodedRequest);
+ }
- __send_signal(msg);
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+}
- bundle_free(msg);
+static void __vc_mgr_send_result_selection_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, void *user_data)
+{
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager result selection");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr result selection : pid(%d)", pid);
- free(temp_msg);
- temp_msg = NULL;
+ vcd_server_mgr_result_select();
- return VCD_ERROR_NONE;
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
}
-*/
-int vcdc_send_request_set_private_data(int pid, const char* key, const char* data)
+
+static void __vc_mgr_send_utterance_status_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, int utt_id, int utt_status, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Set private data");
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager send utterance status");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr send utterance status : pid(%d), utt_id(%d), utt_status(%d)", pid, utt_id, utt_status);
- char tmp_pid[10] = { 0, };
+ pthread_mutex_lock(&g_client_tidl_info_mutex);
+
+ SLOG(LOG_INFO, TAG_VCD, "[TIDL] message to client");
+ client_tidl_info_s* client_tidl_info = vcd_client_get_tidl_info(pid);
+ if (NULL == client_tidl_info) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL] tidl proxy info not allocated");
+ pthread_mutex_unlock(&g_client_tidl_info_mutex);
+ return;
+ }
+
+ rpc_port_stub_vcd_stub_vc_notify_cb_h handle = client_tidl_info->notify_cb;
+ if (NULL == handle) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL] notify callback handle is null");
+ pthread_mutex_unlock(&g_client_tidl_info_mutex);
+ return;
+ }
bundle* msg = bundle_create();
- snprintf(tmp_pid, 10, "%d", pid);
+ if (NULL == msg) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create bundle data");
+ pthread_mutex_unlock(&g_client_tidl_info_mutex);
+ return;
+ }
- bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_SET_PRIVATE_DATA);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_MESSAGE, tmp_pid);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_KEY, key);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_PRIVATE_DATA, data);
+ char pid_char[10] = {0};
+ char uttid_char[10] = {0};
+ char uttstatus_char[10] = {0};
+ snprintf(pid_char, 10, "%d", pid);
+ snprintf(uttid_char, 10, "%d", utt_id);
+ snprintf(uttstatus_char, 10, "%d", utt_status);
- SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
+ bundle_add_str(msg, VC_BUNDLE_METHOD, VC_MANAGER_METHOD_UTTERANCE_STATUS);
+ bundle_add_str(msg, VC_BUNDLE_PID, pid_char);
+ bundle_add_str(msg, VC_BUNDLE_REASON, uttid_char);
+ bundle_add_str(msg, VC_BUNDLE_ERR_MSG, uttstatus_char);
+
+ if (0 != rpc_port_stub_vcd_stub_vc_notify_cb_invoke(handle, pid, msg)) {
+ SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Fail to send msg");
+ bundle_free(msg);
+ pthread_mutex_unlock(&g_client_tidl_info_mutex);
+ return;
+ }
- __send_msg(msg, VCD_CLIENT_TYPE_MANAGER, pid);
bundle_free(msg);
+ pthread_mutex_unlock(&g_client_tidl_info_mutex);
- return VCD_ERROR_NONE;
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
}
-int vcdc_send_feedback_audio_format_to_manager(int manager_pid, int rate, vc_audio_channel_e channel, vce_audio_type_e audio_type)
+static void __vc_mgr_send_audio_streaming_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, int event, rpc_port_stub_vcd_mgr_stub_array_char_h data, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send feedback audio format to manager");
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager send audio streaming");
- char tmp_rate[10] = {0, };
- char tmp_channel[10] = {0, };
- char tmp_audio_type[10] = {0, };
-
- bundle* msg = bundle_create();
- snprintf(tmp_rate, 10, "%d", rate);
- snprintf(tmp_channel, 10, "%d", (int)channel);
- snprintf(tmp_audio_type, 10, "%d", (int)audio_type);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_FEEDBACK_AUDIO_FORMAT);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_AUDIO_RATE, tmp_rate);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_AUDIO_CHANNEL, tmp_channel);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_AUDIO_TYPE, tmp_audio_type);
+ char* buffer = NULL;
+ int len = 0;
+ int ret = -1;
+ rpc_port_stub_vcd_mgr_stub_array_char_get(data, &buffer, &len);
- SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr send audio streaming : pid(%d), event(%d), buffer(%p), len(%d)", pid, event, buffer, len);
- __send_msg(msg, VCD_CLIENT_TYPE_MANAGER, manager_pid);
- bundle_free(msg);
+ ret = vcd_server_mgr_send_audio_streaming(pid, event, buffer, (unsigned int)len);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ }
- return VCD_ERROR_NONE;
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
}
-int vcdc_send_feedback_streaming_to_manager(int manager_pid, int pid, int utt_id, vc_feedback_event_e event, char* buffer, int len)
+int __mgr_tidl_open_connection()
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send feedback streaming to manager");
-
- char tmp_pid[10] = {0, };
- char tmp_utt_id[10] = {0, };
- char tmp_event[10] = {0, };
-
- bundle* msg = bundle_create();
- snprintf(tmp_pid, 10, "%d", pid);
- snprintf(tmp_utt_id, 10, "%d", utt_id);
- snprintf(tmp_event, 10, "%d", (int)event);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_FEEDBACK_STREAMING);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_MESSAGE, tmp_pid);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_UTTID, tmp_utt_id);
- bundle_add_str(msg, VC_MANAGER_BUNDLE_EVENT, tmp_event);
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] __mgr_tidl_open_connection");
- rpc_port_stub_vcd_mgr_stub_array_char_h streaming_data = NULL;
- rpc_port_stub_vcd_mgr_stub_array_char_create(&streaming_data);
- if (NULL == streaming_data) {
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to create data handle");
- return VCD_ERROR_OUT_OF_MEMORY;
- }
-
- if (NULL != buffer && 0 < len) {
- rpc_port_stub_vcd_mgr_stub_array_char_set(streaming_data, (char*)buffer, len);
- } else {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL] buffer is empty");
- }
-
- SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
-
- pthread_mutex_lock(&g_mgr_tidl_info_mutex);
- SLOG(LOG_INFO, TAG_VCD, "[TIDL] message to manager");
- manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
+ g_mgr_callback.create = __vc_mgr_create_cb;
+ g_mgr_callback.terminate = __vc_mgr_terminate_cb;
+ g_mgr_callback.register_cb = __vc_mgr_register_cb_cb;
+ g_mgr_callback.initialize = __vc_mgr_initialize_cb;
+ g_mgr_callback.finalize = __vc_mgr_finalize_cb;
+ g_mgr_callback.set_command = __vc_mgr_set_command_cb;
+ g_mgr_callback.unset_command = __vc_mgr_unset_command_cb;
+ g_mgr_callback.demandable_client = __vc_mgr_set_demandable_client_cb;
+ g_mgr_callback.set_audio_type = __vc_mgr_set_audio_type_cb;
+ g_mgr_callback.get_audio_type = __vc_mgr_get_audio_type_cb;
+ g_mgr_callback.set_private_data = __vc_mgr_set_private_data_cb;
+ g_mgr_callback.get_private_data = __vc_mgr_get_private_data_cb;
+ g_mgr_callback.set_client_info = __vc_mgr_set_client_info_cb;
+ g_mgr_callback.set_domain = __vc_mgr_set_domain_cb;
+ g_mgr_callback.do_action = __vc_mgr_do_action_cb;
+ g_mgr_callback.start = __vc_mgr_start_cb;
+ g_mgr_callback.stop = __vc_mgr_stop_cb;
+ g_mgr_callback.cancel = __vc_mgr_cancel_cb;
+ g_mgr_callback.set_audio_streaming_mode = __vc_mgr_set_audio_streaming_mode_cb;
+ g_mgr_callback.send_specific_engine_request = __vc_mgr_send_specific_engine_request_cb;
+ g_mgr_callback.send_result_selection = __vc_mgr_send_result_selection_cb;
+ g_mgr_callback.send_utterance_status = __vc_mgr_send_utterance_status_cb;
+ g_mgr_callback.send_audio_streaming = __vc_mgr_send_audio_streaming_cb;
- if (NULL == mgr_tidl_info) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to get manager tidl info. pid(%d)", pid);
- pthread_mutex_unlock(&g_mgr_tidl_info_mutex);
- rpc_port_stub_vcd_mgr_stub_array_char_destroy(streaming_data);
- bundle_free(msg);
- return VCD_ERROR_OPERATION_FAILED;
+ int ret = -1;
+ int count = 0;
+ while (VC_RETRY_MIN_COUNT >= count) {
+ ret = rpc_port_stub_vcd_mgr_stub_vc_mgr_register(&g_mgr_callback, NULL);
+ if (0 == ret) {
+ SLOG(LOG_DEBUG, TAG_VCD, "register callback");
+ return VCD_ERROR_NONE;
+ }
+ usleep(100000);
+ count++;
}
- rpc_port_stub_vcd_mgr_stub_vc_mgr_send_buffer_cb_h handle = mgr_tidl_info->send_buffer_cb;
- if (NULL == handle) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL] notify callback handle is null");
- pthread_mutex_unlock(&g_mgr_tidl_info_mutex);
- rpc_port_stub_vcd_mgr_stub_array_char_destroy(streaming_data);
- bundle_free(msg);
- return VCD_ERROR_OPERATION_FAILED;
- }
+ SLOG(LOG_ERROR, TAG_VCD, "Fail to register callback(%d)", ret);
+ return VCD_ERROR_OPERATION_FAILED;
+}
- if (0 != rpc_port_stub_vcd_mgr_stub_vc_mgr_send_buffer_cb_invoke(handle, streaming_data, msg)) {
- SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Fail to send msg");
- pthread_mutex_unlock(&g_mgr_tidl_info_mutex);
- rpc_port_stub_vcd_mgr_stub_array_char_destroy(streaming_data);
- bundle_free(msg);
- return VCD_ERROR_OPERATION_FAILED;
- }
- pthread_mutex_unlock(&g_mgr_tidl_info_mutex);
- rpc_port_stub_vcd_mgr_stub_array_char_destroy(streaming_data);
- bundle_free(msg);
+int __mgr_tidl_close_connection()
+{
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Close connection");
+ rpc_port_stub_vcd_mgr_stub_vc_mgr_unregister();
return VCD_ERROR_NONE;
}
-void vcdc_send_request_set_foreground(int pid, int value)
+/**
+ * TIDL callback functions for VC widget
+ */
+static void __widget_on_connected(rpc_port_proxy_vcd_widget_proxy_vcd_widget_h h, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Set foreground");
+ widget_tidl_info_s* widget_tidl_info = vcd_client_widget_get_tidl_info((int)user_data);
- manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
+ widget_tidl_info->connected = true;
+ widget_tidl_info->connection_requesting = false;
- if (NULL == mgr_tidl_info) {
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to get tidl info");
- return;
- }
+ SLOG(LOG_INFO, TAG_VCD, "Connected to widget");
+}
- if (!mgr_tidl_info->connected) {
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Not Connected");
- return;
- }
+static void __widget_on_disconnected(rpc_port_proxy_vcd_widget_proxy_vcd_widget_h h, void *user_data)
+{
+ widget_tidl_info_s* widget_tidl_info = vcd_client_widget_get_tidl_info((int)user_data);
- rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_invoke_set_foreground(mgr_tidl_info->rpc_h, pid, value);
+ widget_tidl_info->connected = false;
+ widget_tidl_info->connection_requesting = false;
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Request set foreground");
+ SLOG(LOG_INFO, TAG_VCD, "Disonnected to widget");
}
-int vcdc_send_request_get_private_data(int pid, const char* key, char** data)
+static void __widget_on_rejected(rpc_port_proxy_vcd_widget_proxy_vcd_widget_h h, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Get private data");
+ widget_tidl_info_s* widget_tidl_info = vcd_client_widget_get_tidl_info((int)user_data);
- manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
+ widget_tidl_info->connection_requesting = false;
- if (NULL == mgr_tidl_info) {
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to get tidl info");
- return VC_ERROR_OPERATION_FAILED;
- }
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Rejected from widget");
+}
- if (!mgr_tidl_info->connected) {
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Not Connected");
- return VC_ERROR_OPERATION_FAILED;
- }
+static rpc_port_proxy_vcd_widget_proxy_vcd_widget_h __widget_create_rpc_port(const char* engine_app_id, int pid)
+{
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] __widget_create_rpc_port");
+ rpc_port_proxy_vcd_widget_proxy_vcd_widget_callback_s rpc_callback = {
+ .connected = __widget_on_connected,
+ .disconnected = __widget_on_disconnected,
+ .rejected = __widget_on_rejected
+ };
- char *tmp = NULL;
- int ret = rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_invoke_get_private_data(mgr_tidl_info->rpc_h, pid, key, &tmp);
- if (RPC_PORT_ERROR_NONE != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Request vcd manager get private data : Fail to invoke message, error(%d)", ret);
- return ret;
+ rpc_port_proxy_vcd_widget_proxy_vcd_widget_h handle = NULL;
+ if (0 != rpc_port_proxy_vcd_widget_proxy_vcd_widget_create(engine_app_id, &rpc_callback, (void *)pid, &handle)) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create proxy");
+ return NULL;
}
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Request vcd manager get private data : Success");
- *data = tmp;
-
- return VC_ERROR_NONE;
+ return handle;
}
-int vcdc_send_request_auth_enable(int pid)
+static void __vc_widget_create_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] auth enable");
-
- manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
-
- if (NULL == mgr_tidl_info) {
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to get tidl info");
- return VC_ERROR_OPERATION_FAILED;
- }
-
- if (!mgr_tidl_info->connected) {
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Not Connected");
- return VC_ERROR_OPERATION_FAILED;
- }
+ char *sender = NULL;
- int ret = rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_invoke_auth_enable(mgr_tidl_info->rpc_h, pid);
- if (RPC_PORT_ERROR_NONE != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Request auth enable : Fail to invoke message, error(%d)", ret);
- return ret;
+ rpc_port_stub_vcd_widget_stub_vc_widget_context_get_sender(context, &sender);
+ if (!sender) {
+ SLOG(LOG_ERROR, TAG_VCD, "Sender is NULL");
+ return;
}
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Request auth enable : Success");
- return VC_ERROR_NONE;
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ Widget connect. appid(%s)", sender);
+ free(sender);
}
-int vcdc_send_request_auth_disable(int pid)
+static void __vc_widget_terminate_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] auth disable");
-
- manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
+ void* tag = NULL;
+ rpc_port_stub_vcd_widget_stub_vc_widget_context_get_tag(context, &tag);
- if (NULL == mgr_tidl_info) {
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to get tidl info");
- return VC_ERROR_OPERATION_FAILED;
- }
+ if (NULL != tag) {
+ int pid = (intptr_t)tag;
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VC WIDGET FINALIZE. pid(%u)", pid);
- if (!mgr_tidl_info->connected) {
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Not Connected");
- return VC_ERROR_OPERATION_FAILED;
- }
+ pthread_mutex_lock(&g_widget_tidl_info_mutex);
+ widget_tidl_info_s* widget_tidl_info = vcd_client_widget_get_tidl_info(pid);
+ if (NULL == widget_tidl_info) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to get widget tidl info.");
+ pthread_mutex_unlock(&g_widget_tidl_info_mutex);
+ return;
+ }
- int ret = rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_invoke_auth_disable(mgr_tidl_info->rpc_h, pid);
- if (RPC_PORT_ERROR_NONE != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Request auth disable : Fail to invoke message, error(%d)", ret);
- return ret;
- }
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Request auth disable : Success");
+ if (0 != vcd_client_widget_unset_tidl_notify_cb(pid)) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to unset notify callback");
+ }
- return VC_ERROR_NONE;
-}
+ if (0 != vcd_client_widget_delete_tidl_info(pid)) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to delete widget tidl info");
+ }
+ widget_tidl_info = NULL;
-int vcdc_send_request_auth_start(int pid)
-{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] auth start");
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
- manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
+ pthread_mutex_unlock(&g_widget_tidl_info_mutex);
- if (NULL == mgr_tidl_info) {
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to get tidl info");
- return VC_ERROR_OPERATION_FAILED;
- }
+ char *sender = NULL;
+ rpc_port_stub_vcd_widget_stub_vc_widget_context_get_sender(context, &sender);
+ if (!sender)
+ return;
- if (!mgr_tidl_info->connected) {
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Not Connected");
- return VC_ERROR_OPERATION_FAILED;
- }
+ SLOG(LOG_INFO, TAG_VCD, "@@@ Manager disconnect. appid(%s)", sender);
- int ret = rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_invoke_auth_start(mgr_tidl_info->rpc_h, pid);
- if (RPC_PORT_ERROR_NONE != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Request auth start : Fail to invoke message, error(%d)", ret);
- return ret;
+ free(sender);
}
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Request auth start : Success");
-
- return VC_ERROR_NONE;
+ rpc_port_stub_vcd_widget_stub_vc_widget_context_set_tag(context, NULL);
}
-int vcdc_send_request_auth_stop(int pid)
+static void __vc_widget_register_cb_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, int pid, rpc_port_stub_vcd_widget_stub_vc_widget_notify_cb_h notify_callback, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] auth stop");
+ pthread_mutex_lock(&g_widget_tidl_info_mutex);
+ SLOG(LOG_INFO, TAG_VCD, "@@@ VC WIDGET REGISTER CALLBACK");
- manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
+ int ret = -1;
+ ret = vcd_client_widget_add_tidl_info(pid);
- if (NULL == mgr_tidl_info) {
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to get tidl info");
- return VC_ERROR_OPERATION_FAILED;
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to add widget tidl info.");
+ pthread_mutex_unlock(&g_widget_tidl_info_mutex);
+ return;
}
+ widget_tidl_info_s* widget_tidl_info = vcd_client_widget_get_tidl_info(pid);
- if (!mgr_tidl_info->connected) {
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Not Connected");
- return VC_ERROR_OPERATION_FAILED;
+ if (NULL == widget_tidl_info) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to get widget tidl info. pid(%d)", pid);
+ pthread_mutex_unlock(&g_widget_tidl_info_mutex);
+ return;
}
- int ret = rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_invoke_auth_stop(mgr_tidl_info->rpc_h, pid);
- if (RPC_PORT_ERROR_NONE != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Request auth stop : Fail to invoke message, error(%d)", ret);
- return ret;
+ char *sender = NULL;
+ rpc_port_stub_vcd_widget_stub_vc_widget_context_get_sender(context, &sender);
+
+ if (!sender){
+ SLOG(LOG_ERROR, TAG_VCD, "Sender is NULL");
+ pthread_mutex_unlock(&g_widget_tidl_info_mutex);
+ return;
}
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Request auth stop : Success");
- return VC_ERROR_NONE;
-}
+ widget_tidl_info->rpc_h = __widget_create_rpc_port(sender, pid);
-int vcdc_send_request_auth_cancel(int pid)
-{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] auth cancel");
+ if (NULL == widget_tidl_info->rpc_h) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create server proxy");
+ } else {
+ SLOG(LOG_INFO, TAG_VCD, "[TIDL] rpc_h(%p), engine_app_id(%s)", widget_tidl_info->rpc_h, sender);
+ }
- manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
+ free(sender);
- if (NULL == mgr_tidl_info) {
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to get tidl info");
- return VC_ERROR_OPERATION_FAILED;
+ if (0 != vcd_client_widget_set_tidl_notify_cb(pid, notify_callback, user_data)) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to set notify callback");
+ } else {
+ SLOG(LOG_INFO, TAG_VCD, "[TIDL] Succeed to set notify callback.");
}
- if (!mgr_tidl_info->connected) {
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Not Connected");
- return VC_ERROR_OPERATION_FAILED;
- }
+ pthread_mutex_unlock(&g_widget_tidl_info_mutex);
- int ret = rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_invoke_auth_cancel(mgr_tidl_info->rpc_h, pid);
- if (RPC_PORT_ERROR_NONE != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Request auth cancel : Fail to invoke message, error(%d)", ret);
- return ret;
- }
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Request auth cancel : Success");
+ __request_tidl_connect(VCD_CLIENT_TYPE_WIDGET, pid);
- return VC_ERROR_NONE;
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
}
-int vcdc_send_asr_result(int pid, int event, const char* asr_result, int cmd_type, bool* is_consumed)
+static int __vc_widget_initialize_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, int pid, int *service_state, int *daemon_pid, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send asr result");
-
- widget_tidl_info_s* widget_tidl_info = vcd_client_widget_get_tidl_info(pid);
+ SLOG(LOG_INFO, TAG_VCD, "@@@ VCD Widget Initialize");
- if (NULL == widget_tidl_info) {
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to get tidl info");
- return VC_ERROR_OPERATION_FAILED;
- }
+ uintptr_t ptr_pid = pid;
+ int ret = -1;
- if (!widget_tidl_info->connected) {
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Not Connected");
- return VC_ERROR_OPERATION_FAILED;
- }
+ rpc_port_stub_vcd_widget_stub_vc_widget_context_set_tag(context, (void*)ptr_pid);
- bool temp;
- int ret = rpc_port_proxy_vcd_widget_proxy_vcd_widget_invoke_send_asr_result(widget_tidl_info->rpc_h, pid, event, asr_result, &temp);
- if (RPC_PORT_ERROR_NONE != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Request vcd widget send asr result : Fail to invoke message, error(%d)", ret);
+ ret = vcd_server_widget_initialize(pid);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
return ret;
}
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Request vcd widget send asr result : Success");
-
- *is_consumed = temp;
+ *service_state = vcd_server_get_service_state();
+ *daemon_pid = getpid();
- return VC_ERROR_NONE;
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd widget initialize : pid(%d) service state(%d) daemon_pid(%d)", pid, *service_state, *daemon_pid);
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ return ret;
}
-/*
-* Tidl for manager
-*/
-static void __mgr_on_connected(rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_h h, void *user_data)
+static int __vc_widget_finalize_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, int pid, void *user_data)
{
- manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
-
- if (NULL == mgr_tidl_info) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL] tidl proxy info not allocated");
- return;
- }
-
- mgr_tidl_info->connected = true;
- mgr_tidl_info->connection_requesting = false;
-
- SLOG(LOG_INFO, TAG_VCD, "Connected to manager");
-}
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Widget Finalize");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd widget finalize : pid(%d)", pid);
-static void __mgr_on_disconnected(rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_h h, void *user_data)
-{
- manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
+ int ret = -1;
- if (NULL == mgr_tidl_info) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL] tidl proxy info not allocated");
- return;
+ ret = vcd_server_widget_finalize(pid);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ return ret;
}
- mgr_tidl_info->connected = false;
- mgr_tidl_info->connection_requesting = false;
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
- SLOG(LOG_INFO, TAG_VCD, "Disonnected to manager");
+ return ret;
}
-static void __mgr_on_rejected(rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_h h, void *user_data)
+static int __vc_widget_start_recording_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, int pid, int command, void *user_data)
{
- manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Widget Start Recording");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd widget start recording : pid(%d) command(%d)", pid, command);
- if (NULL == mgr_tidl_info) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL] tidl proxy info not allocated");
- return;
+ int ret = -1;
+
+ ret = vcd_server_widget_start_recording(pid, command);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ return ret;
}
- mgr_tidl_info->connection_requesting = false;
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Rejected from manager");
+ return ret;
}
-static rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_h __mgr_create_rpc_port(const char* engine_app_id)
+static int __vc_widget_start_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, int pid, int silence, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] __mgr_create_rpc_port");
- rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_callback_s rpc_callback = {
- .connected = __mgr_on_connected,
- .disconnected = __mgr_on_disconnected,
- .rejected = __mgr_on_rejected
- };
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Widget Start");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd widget start : pid(%d) silence(%d)", pid, silence);
- rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_h handle = NULL;
- if (0 != rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_create(engine_app_id, &rpc_callback, NULL, &handle)) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create proxy");
- return NULL;
+ int ret = -1;
+
+ ret = vcd_server_widget_start(pid, (bool)silence);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ return ret;
}
- return handle;
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+
+ return ret;
}
-static void __vc_mgr_create_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, void *user_data)
+static int __vc_widget_stop_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, int pid, void *user_data)
{
- char *sender = NULL;
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Widget Stop");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd widget stop : pid(%d)", pid);
- rpc_port_stub_vcd_mgr_stub_vc_mgr_context_get_sender(context, &sender);
- if (!sender){
- SLOG(LOG_ERROR, TAG_VCD, "Sender is NULL");
- return;
+ int ret = -1;
+
+ ret = vcd_server_widget_stop(pid);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ return ret;
}
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ Manager connect. appid(%s)", sender);
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
- free(sender);
+ return ret;
}
-static void __vc_mgr_terminate_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, void *user_data)
+static int __vc_widget_cancel_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, int pid, void *user_data)
{
- pthread_mutex_lock(&g_mgr_tidl_info_mutex);
- manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
- if (NULL == mgr_tidl_info) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to get manager tidl info.");
- pthread_mutex_unlock(&g_mgr_tidl_info_mutex);
- return;
- }
-
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VC MANAGER FINALIZE. pid(%u)", mgr_tidl_info->pid);
-
- if (0 != vcd_client_manager_unset_tidl_notify_cb()) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to unset notify callback");
- }
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Widget Cancel");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd widget cancel : pid(%d)", pid);
- if (0 != vcd_client_manager_unset_tidl_send_buffer_cb()) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to unset send buffer callback");
- }
+ int ret = -1;
- if (0 != vcd_client_manager_delete_tidl_info()) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to delete manager tidl info");
+ ret = vcd_server_widget_cancel(pid);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ return ret;
}
- mgr_tidl_info = NULL;
SLOG(LOG_DEBUG, TAG_VCD, "@@@");
- pthread_mutex_unlock(&g_mgr_tidl_info_mutex);
-
-
- char *sender = NULL;
- rpc_port_stub_vcd_mgr_stub_vc_mgr_context_get_sender(context, &sender);
- if (!sender)
- return;
-
- SLOG(LOG_INFO, TAG_VCD, "@@@ Manager disconnect. appid(%s)", sender);
-
- free(sender);
+ return ret;
}
-static void __vc_mgr_register_cb_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, rpc_port_stub_vcd_mgr_stub_vc_mgr_notify_cb_h notify_callback, rpc_port_stub_vcd_mgr_stub_vc_mgr_send_buffer_cb_h send_buffer_callback, void *user_data)
+static int __vc_widget_enable_asr_result_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, int pid, int enable, void *user_data)
{
- pthread_mutex_lock(&g_mgr_tidl_info_mutex);
- SLOG(LOG_INFO, TAG_VCD, "@@@ VC MANAGER REGISTER CALLBACK");
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Widget Enable Asr Result");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd widget enable asr result : pid(%d) enable(%d)", pid, enable);
int ret = -1;
- ret = vcd_client_manager_create_tidl_info(pid);
+ ret = vcd_server_widget_enable_asr_result(pid, enable);
if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create manager tidl info.");
- pthread_mutex_unlock(&g_mgr_tidl_info_mutex);
- return;
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ return ret;
}
- manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
- if (NULL == mgr_tidl_info) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to get manager tidl info. pid(%d)", pid);
- pthread_mutex_unlock(&g_mgr_tidl_info_mutex);
- return;
- }
+ return ret;
+}
- char *sender = NULL;
- rpc_port_stub_vcd_mgr_stub_vc_mgr_context_get_sender(context, &sender);
+static void __vc_widget_set_foreground_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, int pid, int value, void *user_data)
+{
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Widget Set Foreground");
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd widget set foreground : pid(%d) value(%d)", pid, value);
- if (!sender){
- SLOG(LOG_ERROR, TAG_VCD, "Sender is NULL");
- pthread_mutex_unlock(&g_mgr_tidl_info_mutex);
+ int ret = -1;
+
+ ret = vcd_server_set_foreground(pid, value);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
return;
}
- mgr_tidl_info->rpc_h = __mgr_create_rpc_port(sender);
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ send request set foreground to manager");
+ vcdc_send_request_set_foreground(pid, value);
- if (NULL == mgr_tidl_info->rpc_h) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create server proxy");
- } else {
- SLOG(LOG_INFO, TAG_VCD, "[TIDL] rpc_h(%p), engine_app_id(%s)", mgr_tidl_info->rpc_h, sender);
- }
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
- free(sender);
+ return;
+}
- if (0 != vcd_client_manager_set_tidl_notify_cb(notify_callback, user_data)) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to set notify callback");
- } else {
- SLOG(LOG_INFO, TAG_VCD, "[TIDL] Succeed to set notify callback.");
- }
+int __widget_tidl_open_connection()
+{
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] __widget_tidl_open_connection");
- if (0 != vcd_client_manager_set_tidl_send_buffer_cb(send_buffer_callback, user_data)) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to set send buffer callback");
- } else {
- SLOG(LOG_INFO, TAG_VCD, "[TIDL] Succeed to set send buffer callback.");
+ g_widget_callback.create = __vc_widget_create_cb;
+ g_widget_callback.terminate = __vc_widget_terminate_cb;
+ g_widget_callback.register_cb = __vc_widget_register_cb_cb;
+ g_widget_callback.initialize = __vc_widget_initialize_cb;
+ g_widget_callback.finalize = __vc_widget_finalize_cb;
+ g_widget_callback.start_recording = __vc_widget_start_recording_cb;
+ g_widget_callback.start = __vc_widget_start_cb;
+ g_widget_callback.stop = __vc_widget_stop_cb;
+ g_widget_callback.cancel = __vc_widget_cancel_cb;
+ g_widget_callback.enable_asr_result = __vc_widget_enable_asr_result_cb;
+ g_widget_callback.set_foreground = __vc_widget_set_foreground_cb;
+
+ int ret = -1;
+ int count = 0;
+ while (VC_RETRY_MIN_COUNT >= count) {
+ ret = rpc_port_stub_vcd_widget_stub_vc_widget_register(&g_widget_callback, NULL);
+ if (0 == ret) {
+ SLOG(LOG_DEBUG, TAG_VCD, "register callback");
+ return VCD_ERROR_NONE;
+ }
+ usleep(100000);
+ count++;
}
- pthread_mutex_unlock(&g_mgr_tidl_info_mutex);
+ SLOG(LOG_ERROR, TAG_VCD, "Fail to register callback(%d)", ret);
+ return VCD_ERROR_OPERATION_FAILED;
+}
- __request_tidl_connect(VCD_CLIENT_TYPE_MANAGER, pid);
+int __widget_tidl_close_connection()
+{
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Close connection");
+ rpc_port_stub_vcd_widget_stub_vc_widget_unregister();
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ return VCD_ERROR_NONE;
}
-static int __vc_mgr_initialize_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, int audio_streaming_mode, int *service_state, int *foreground, int *daemon_pid, void *user_data)
+/**
+ * TIDL callback functions for VC setting client
+ */
+static void __vc_setting_create_cb(rpc_port_stub_vcd_setting_stub_vc_setting_context_h context, void *user_data)
{
- SLOG(LOG_INFO, TAG_VCD, "@@@ VCD Manager Initialize");
+ SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_setting_create_cb");
- int ret = -1;
+ char *sender = NULL;
- vcd_config_set_audio_streaming_mode((vcd_audio_streaming_mode_e)audio_streaming_mode);
- ret = vcd_server_mgr_initialize(pid, audio_streaming_mode);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- return ret;
+ rpc_port_stub_vcd_setting_stub_vc_setting_context_get_sender(context, &sender);
+ if (!sender) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Sender is NULL");
+ return;
}
- *service_state = vcd_server_get_service_state();
- *foreground = vcd_server_get_foreground();
- *daemon_pid = getpid();
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr initialize : pid(%d) service state(%d) foreground(%d) daemon_pid(%d)", pid, *service_state, *foreground, *daemon_pid);
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
- return ret;
+ SLOG(LOG_INFO, TAG_VCD, "[TIDL] sender(%s)", sender); // sender (app_id)
+ free(sender);
}
-static int __vc_mgr_finalize_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, void *user_data)
+static void __vc_setting_terminate_cb(rpc_port_stub_vcd_setting_stub_vc_setting_context_h context, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager Finalize");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr finalize : pid(%d)", pid);
+ SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_setting_terminate_cb");
+ void* tag = NULL;
+ rpc_port_stub_vcd_setting_stub_vc_setting_context_get_tag(context, &tag);
- int ret = -1;
+ if (NULL != tag) {
+ int pid = (intptr_t)tag;
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@ VC SETTING FINALIZE. pid(%u)", pid);
- ret = vcd_server_mgr_finalize(pid);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- }
+ pthread_mutex_lock(&g_setting_tidl_info_mutex);
+ setting_tidl_info_s* setting_tidl_info = vcd_client_setting_get_tidl_info(pid);
+ if (NULL == setting_tidl_info) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to get setting tidl info.");
+ pthread_mutex_unlock(&g_setting_tidl_info_mutex);
+ return;
+ }
+
+ if (0 != vcd_client_setting_unset_tidl_notify_cb(pid)) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to unset notify callback");
+ }
+
+ if (0 != vcd_client_setting_delete_tidl_info(pid)) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to delete setting tidl info");
+ }
+ setting_tidl_info = NULL;
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ SLOG(LOG_DEBUG, TAG_VCD, "@@@");
- return ret;
+ pthread_mutex_unlock(&g_setting_tidl_info_mutex);
+ }
+ rpc_port_stub_vcd_setting_stub_vc_setting_context_set_tag(context, NULL);
}
-static int __vc_mgr_set_command_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, void *user_data)
+static void __vc_setting_register_notify_cb_cb(rpc_port_stub_vcd_setting_stub_vc_setting_context_h context, int pid, rpc_port_stub_vcd_setting_stub_vc_setting_notify_cb_h callback, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager Set command");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr set command : pid(%d)", pid);
+ SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_setting_register_notify_cb_cb. pid(%d)", pid);
- int ret = -1;
+ if (NULL == callback) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] callback is null.");
+ return;
+ }
- ret = vcd_server_mgr_set_command(pid);
+ int ret = -1;
+ ret = vcd_client_setting_add_tidl_info(pid);
if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- return ret;
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to add tidl info.");
+ return;
}
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
-
- return ret;
+ ret = vcd_client_setting_set_tidl_notify_cb(pid, callback, user_data);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to set notify callback.");
+ } else {
+ SLOG(LOG_INFO, TAG_VCD, "[TIDL] Succeed to set notify callback.");
+ }
}
-static int __vc_mgr_unset_command_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, void *user_data)
+static int __vc_setting_register_notify_cb_sync_cb(rpc_port_stub_vcd_setting_stub_vc_setting_context_h context, int pid, rpc_port_stub_vcd_setting_stub_vc_setting_notify_cb_h callback, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager unset command");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr unset command : pid(%d)", pid);
+ SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_setting_register_notify_cb_sync_cb. pid(%d)", pid);
- int ret = -1;
+ if (NULL == callback) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] callback is null.");
+ return VCD_ERROR_INVALID_PARAMETER;
+ }
- ret = vcd_server_mgr_unset_command(pid);
+ int ret = -1;
+ ret = vcd_client_setting_add_tidl_info(pid);
if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to add tidl info.");
return ret;
}
-
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+
+ ret = vcd_client_setting_set_tidl_notify_cb(pid, callback, user_data);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to set notify callback.");
+ } else {
+ SLOG(LOG_INFO, TAG_VCD, "[TIDL] Succeed to set notify callback.");
+ }
return ret;
}
-static int __vc_mgr_set_demandable_client_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, void *user_data)
+int __vc_setting_set_language_cb(rpc_port_stub_vcd_setting_stub_vc_setting_context_h context, int pid, const char *language, void *user_data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager Set demandable client");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr set demandable client : pid(%d)", pid);
+ if (NULL == language) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Invalid parameter");
+ return VCD_ERROR_INVALID_PARAMETER;
+ }
- int ret = -1;
+ SLOG(LOG_INFO, TAG_VCD, "[IN] vcd server set language : language(%s)", language);
- ret = vcd_server_mgr_set_demandable_client(pid);
+ int ret = vcd_server_set_language(language);
if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- return ret;
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to set language(%d).", ret);
+ } else {
+ SLOG(LOG_INFO, TAG_VCD, "[TIDL] Succeed to set language.");
}
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
-
return ret;
}
-static int __vc_mgr_set_audio_type_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, const char *audio_type, void *user_data)
+int __setting_tidl_open_connection()
{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager set audio type");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr set audio type : pid(%d), audio type(%s)", pid, audio_type);
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] __setting_tidl_open_connection");
- int ret = -1;
+ g_setting_callback.create = __vc_setting_create_cb;
+ g_setting_callback.terminate = __vc_setting_terminate_cb;
+ g_setting_callback.register_notify_cb = __vc_setting_register_notify_cb_cb;
+ g_setting_callback.register_notify_cb_sync = __vc_setting_register_notify_cb_sync_cb;
+ g_setting_callback.set_language = __vc_setting_set_language_cb;
- ret = vcd_server_mgr_set_audio_type(pid, audio_type);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- return ret;
+ int ret = -1;
+ int count = 0;
+ while (VC_RETRY_MIN_COUNT >= count) {
+ ret = rpc_port_stub_vcd_setting_stub_vc_setting_register(&g_setting_callback, NULL);
+ if (0 == ret) {
+ SLOG(LOG_DEBUG, TAG_VCD, "register callback");
+ return VCD_ERROR_NONE;
+ }
+ usleep(100000);
+ count++;
}
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
-
- return ret;
+ SLOG(LOG_ERROR, TAG_VCD, "Fail to register callback(%d)", ret);
+ return VCD_ERROR_OPERATION_FAILED;
}
-static int __vc_mgr_get_audio_type_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, char **audio_type, void *user_data)
+int __setting_tidl_close_connection()
{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager get audio type");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr set audio type : pid(%d)", pid);
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Close connection");
+ rpc_port_stub_vcd_setting_stub_vc_setting_unregister();
- int ret = -1;
- char* tmp_audio_type = NULL;
+ return VCD_ERROR_NONE;
+}
- ret = vcd_server_mgr_get_audio_type(pid, &tmp_audio_type);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- free(tmp_audio_type);
- return ret;
+
+
+int vcdc_send_error_signal_to_app(int pid, int reason, char *err_msg)
+{
+ if (NULL == err_msg) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Input parameter is NULL");
+ return VCD_ERROR_INVALID_PARAMETER;
}
- *audio_type = strdup(tmp_audio_type);
- free(tmp_audio_type);
+ client_tidl_info_s* info = vcd_client_get_tidl_info(pid);
+ if (NULL == info) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to get tidl info. pid(%d)", pid);
+ return VCD_ERROR_INVALID_PARAMETER;
+ }
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ bundle* msg = bundle_create();
+ if (NULL == msg) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create bundle data");
+ return VCD_ERROR_OUT_OF_MEMORY;
+ }
- return ret;
-}
+ SLOG(LOG_INFO, TAG_VCD, "[TIDL] Send error signal to app(%d)", pid);
-static void __vc_mgr_set_private_data_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, const char *key, const char *data, void *user_data)
-{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager set private data");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr set domain : pid(%d), key(%s), data(%s)", pid, key, data);
+ char pid_char[10] = {0};
+ char reason_char[10] = {0};
+ snprintf(pid_char, 10, "%d", pid);
+ snprintf(reason_char, 10, "%d", reason);
- int ret = -1;
+ bundle_add_str(msg, VC_BUNDLE_METHOD, VCD_METHOD_ERROR_TO_APP);
+ bundle_add_str(msg, VC_BUNDLE_PID, pid_char);
+ bundle_add_str(msg, VC_BUNDLE_REASON, reason_char);
+ bundle_add_str(msg, VC_BUNDLE_ERR_MSG, err_msg);
- ret = vcd_server_mgr_set_private_data(pid, key, data);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to set private data");
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- }
+ rpc_port_stub_vcd_stub_vc_notify_cb_invoke(info->notify_cb, pid, msg);
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ return VCD_ERROR_NONE;
}
-static int __vc_mgr_get_private_data_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, const char *key, char **data, void *user_data)
+int vcdc_send_manager_pid(int manager_pid)
{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager get private data");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr get private data : pid(%d), key(%s)", pid, key);
+ // send signal to all pid
+ // get all pids
+ int* client_list = NULL;
+ int client_count = 0;
int ret = -1;
- char *temp_data = NULL;
-
- ret = vcd_server_mgr_get_private_data(pid, key, &temp_data);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- return ret;
- }
- if (NULL == temp_data) {
- SLOG(LOG_INFO, TAG_VCD, "data parameter is NULL");
- temp_data = strdup("#NULL");
+ ret = vcd_client_get_tidl_list(&client_list, &client_count);
+ if (0 != ret || 0 == client_count) {
+ SLOG(LOG_WARN, TAG_VCD, "[WARNING] There is no client");
+ return VCD_ERROR_NONE;
}
- *data = strdup(temp_data);
- free(temp_data);
+ client_tidl_info_s* info;
+ int pid = -1;
+ bundle* msg;
+ char pid_char[10] = {0};
+ char mgrpid_char[10] = {0};
+ for (int i = 0 ; i < client_count ; i++) {
+ pid = client_list[i];
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ info = vcd_client_get_tidl_info(pid);
+ if (NULL == info) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to get tidl info. pid(%d)", pid);
+ continue;
+ }
- return ret;
-}
+ msg = bundle_create();
+ if (NULL == msg) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create bundle data");
+ continue;
+ }
-static int __vc_mgr_set_client_info_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, void *user_data)
-{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager set client info");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr set client info : pid(%d)", pid);
+ SLOG(LOG_INFO, TAG_VCD, "[TIDL] Send manager pid(%d) to app(%d)", manager_pid, pid);
- int ret = -1;
+ snprintf(pid_char, 10, "%d", pid);
+ snprintf(mgrpid_char, 10, "%d", manager_pid);
- ret = vcd_server_mgr_set_client_info(pid);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- return ret;
- }
+ bundle_add_str(msg, VC_BUNDLE_METHOD, VCD_METHOD_SEND_MANAGER_PID);
+ bundle_add_str(msg, VC_BUNDLE_PID, pid_char);
+ bundle_add_str(msg, VC_BUNDLE_MANAGER_PID, mgrpid_char);
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ rpc_port_stub_vcd_stub_vc_notify_cb_invoke(info->notify_cb, pid, msg);
- return ret;
+ bundle_free(msg);
+ }
+
+ return VCD_ERROR_NONE;
}
-static int __vc_mgr_set_domain_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, const char *domain, void *user_data)
+int vcdc_send_feedback_streaming(int pid, int utt_id, vc_feedback_event_e event, char* buffer, int len)
{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager set domain type");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr set domain : pid(%d), domain(%s)", pid, domain);
+ if (NULL == buffer || 0 >= len) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Invalid parameter");
+ return VCD_ERROR_INVALID_PARAMETER;
+ }
- int ret = -1;
+ client_tidl_info_s* info = vcd_client_get_tidl_info(pid);
+ if (NULL == info) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to get tidl info. pid(%d)", pid);
+ return VCD_ERROR_INVALID_PARAMETER;
+ }
- ret = vcd_server_mgr_set_domain(pid, domain);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- return ret;
+ bundle* msg = bundle_create();
+ if (NULL == msg) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create bundle data");
+ return VCD_ERROR_OUT_OF_MEMORY;
}
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ SLOG(LOG_INFO, TAG_VCD, "[TIDL] Send feedback streaming to app(%d), utt_id(%d), event(%d), length(%d)", pid, utt_id, event, len);
- return ret;
-}
+ rpc_port_stub_vcd_stub_array_char_h arr_char = NULL;
+ rpc_port_stub_vcd_stub_array_char_create(&arr_char);
+ rpc_port_stub_vcd_stub_array_char_set(arr_char, buffer, len);
-static void __vc_mgr_do_action_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, int type, const char *send_event, void *user_data)
-{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager request to do action");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr request to do action : pid(%d), type(%d) send_event(%s)", pid, type, send_event);
+ rpc_port_stub_vcd_stub_vc_feedback_cb_invoke(info->feedback_cb, utt_id, event, arr_char, len);
- int ret = -1;
+ rpc_port_stub_vcd_stub_array_char_destroy(arr_char);
- ret = vcd_server_mgr_do_action(pid, type, send_event);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- }
+ bundle_free(msg);
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ return VCD_ERROR_NONE;
}
-static int __vc_mgr_start_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, int recognition_mode, bool exclusive_command_option, bool start_by_client, int disabled_cmd_type, void *user_data)
+int vcdc_send_hello(int pid, vcd_client_type_e type)
{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager start");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd check enabled or disabled command types. disabled cmd type(%d)", disabled_cmd_type);
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send hello");
- int ret = -1;
+ char tmp_pid[10] = {0, };
- vcd_server_mgr_set_disabled_command_type(pid, disabled_cmd_type);
+ bundle* msg = bundle_create();
+ snprintf(tmp_pid, 10, "%d", pid);
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr start : pid(%d) recognition_mode(%d) exclusive(%d) start by client(%d)", pid, recognition_mode, exclusive_command_option, start_by_client);
- ret = vcd_server_mgr_start((vcd_recognition_mode_e)recognition_mode, exclusive_command_option, start_by_client);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- return ret;
+ if (VCD_CLIENT_TYPE_NORMAL == type) {
+ bundle_add_str(msg, VC_BUNDLE_METHOD, VCD_METHOD_HELLO);
+ bundle_add_str(msg, VC_BUNDLE_PID, tmp_pid);
+ } else if (VCD_CLIENT_TYPE_MANAGER == type) {
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_HELLO);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_MESSAGE, tmp_pid);
+ } else if (VCD_CLIENT_TYPE_WIDGET == type) {
+ bundle_add_str(msg, VC_WIDGET_BUNDLE_METHOD, VCD_WIDGET_METHOD_HELLO);
+ bundle_add_str(msg, VC_WIDGET_BUNDLE_MESSAGE, tmp_pid);
+ } else {
+ SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] Client type is NOT valid");
+ bundle_free(msg);
+ return VCD_ERROR_INVALID_PARAMETER;
}
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] VCD SEND MESSAGE");
- return ret;
+ // TODO: VCD_CLIENT_TYPE_MANAGER?? type??
+ __send_msg(msg, VCD_CLIENT_TYPE_MANAGER, pid);
+ bundle_free(msg);
+
+ return VCD_ERROR_NONE;
}
-static int __vc_mgr_stop_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, void *user_data)
+int vcd_tidl_open_connection()
{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager stop");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr stop : pid(%d)", pid);
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] vcd_tidl_open_connection");
- int ret = -1;
+ if (0 != __mgr_tidl_open_connection()) {
+ SLOG(LOG_ERROR, TAG_VCD, "Fail to open connection to manager");
+ return VCD_ERROR_OPERATION_FAILED;
+ }
- ret = vcd_server_mgr_stop();
+ if (0 != __client_tidl_open_connection()) {
+ SLOG(LOG_ERROR, TAG_VCD, "Fail to open connection to client");
+ return VCD_ERROR_OPERATION_FAILED;
+ }
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- return ret;
+ if (0 != __widget_tidl_open_connection()) {
+ SLOG(LOG_ERROR, TAG_VCD, "Fail to open connection to widget");
+ return VCD_ERROR_OPERATION_FAILED;
}
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ if (0 != __setting_tidl_open_connection()) {
+ SLOG(LOG_ERROR, TAG_VCD, "Fail to open connection to setting");
+ return VCD_ERROR_OPERATION_FAILED;
+ }
- return ret;
+ return VCD_ERROR_NONE;
}
-static int __vc_mgr_cancel_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, void *user_data)
+int vcd_tidl_close_connection()
{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager cancel");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr cancel : pid(%d)", pid);
-
- int ret = -1;
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] vcd_tidl_close_connection");
- ret = vcd_server_mgr_cancel();
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- return ret;
+ if (0 != __mgr_tidl_close_connection()) {
+ SLOG(LOG_ERROR, TAG_VCD, "Fail to close connection to manager");
+ return VCD_ERROR_OPERATION_FAILED;
}
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
-
- return ret;
-}
+ if (0 != __client_tidl_close_connection()) {
+ SLOG(LOG_ERROR, TAG_VCD, "Fail to close connection to client");
+ return VCD_ERROR_OPERATION_FAILED;
+ }
-static void __vc_mgr_set_audio_streaming_mode_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, int mode, void *user_data)
-{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager set audio streaming mode");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr set audio streaming mode : pid(%d) mode(%d)", pid, mode);
+ if (0 != __widget_tidl_close_connection()) {
+ SLOG(LOG_ERROR, TAG_VCD, "Fail to close connection to widget");
+ return VCD_ERROR_OPERATION_FAILED;
+ }
- vcd_config_set_audio_streaming_mode((vcd_audio_streaming_mode_e)mode);
+ if (0 != __setting_tidl_close_connection()) {
+ SLOG(LOG_ERROR, TAG_VCD, "Fail to close connection to setting");
+ return VCD_ERROR_OPERATION_FAILED;
+ }
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ return VCD_ERROR_NONE;
}
-static void __vc_mgr_send_specific_engine_request_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, const char *engine_app_id, const char *event, const char *request, void *user_data)
+int vcdc_send_set_volume(int manager_pid, float volume)
{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager specific engine request");
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Set volume");
- int ret = -1;
- gsize decodingSize = 0;
- gchar *gDecodedRequest = (gchar *)g_base64_decode((const gchar *)request, &decodingSize);
+ char tmp_volume[20] = {0, };
- if (gDecodedRequest) {
- ret = vcd_server_mgr_send_specific_engine_request(pid, engine_app_id, event, gDecodedRequest);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- }
+ bundle* msg = bundle_create();
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr specific engine request : pid(%d), engine_app_id(%s), event(%s), request(%s), ret(%d)", pid, engine_app_id, event, gDecodedRequest, ret);
- g_free(gDecodedRequest);
- }
+ snprintf(tmp_volume, 20, "%.6f", volume);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_SET_VOLUME);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_MESSAGE, tmp_volume);
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
-}
-static void __vc_mgr_send_result_selection_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, void *user_data)
-{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager result selection");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr result selection : pid(%d)", pid);
+ SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
+ __send_msg(msg, VCD_CLIENT_TYPE_MANAGER, manager_pid);
+ if (20 == g_volume_count) {
+ SLOG(LOG_INFO, TAG_VCD, "@@ Send set volume : pid(%d), volume(%f)", manager_pid, volume);
+ g_volume_count = 0;
+ }
+ g_volume_count++;
- vcd_server_mgr_result_select();
+ bundle_free(msg);
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ return VCD_ERROR_NONE;
}
-static void __vc_mgr_send_utterance_status_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, int utt_id, int utt_status, void *user_data)
+int vcdc_send_show_tooltip(int pid, bool show)
{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager send utterance status");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr send utterance status : pid(%d), utt_id(%d), utt_status(%d)", pid, utt_id, utt_status);
-
- pthread_mutex_lock(&g_client_tidl_info_mutex);
-
- SLOG(LOG_INFO, TAG_VCD, "[TIDL] message to client");
- client_tidl_info_s* client_tidl_info = vcd_client_get_tidl_info(pid);
- if (NULL == client_tidl_info) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL] tidl proxy info not allocated");
- pthread_mutex_unlock(&g_client_tidl_info_mutex);
- return;
- }
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send pre result to manager");
- rpc_port_stub_vcd_stub_vc_notify_cb_h handle = client_tidl_info->notify_cb;
- if (NULL == handle) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL] notify callback handle is null");
- pthread_mutex_unlock(&g_client_tidl_info_mutex);
- return;
- }
+ char tmp_pid[10] = {0, };
+ char tmp_show[10] = {0, };
bundle* msg = bundle_create();
- if (NULL == msg) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create bundle data");
- pthread_mutex_unlock(&g_client_tidl_info_mutex);
- return;
- }
- char pid_char[10] = {0};
- char uttid_char[10] = {0};
- char uttstatus_char[10] = {0};
- snprintf(pid_char, 10, "%d", pid);
- snprintf(uttid_char, 10, "%d", utt_id);
- snprintf(uttstatus_char, 10, "%d", utt_status);
+ snprintf(tmp_pid, 10, "%d", pid);
+ snprintf(tmp_show, 10, "%d", (int)show);
- bundle_add_str(msg, VC_BUNDLE_METHOD, VC_MANAGER_METHOD_UTTERANCE_STATUS);
- bundle_add_str(msg, VC_BUNDLE_PID, pid_char);
- bundle_add_str(msg, VC_BUNDLE_REASON, uttid_char);
- bundle_add_str(msg, VC_BUNDLE_ERR_MSG, uttstatus_char);
+ bundle_add_str(msg, VC_WIDGET_BUNDLE_METHOD, VCD_WIDGET_METHOD_SHOW_TOOLTIP);
+ bundle_add_str(msg, VC_WIDGET_BUNDLE_MESSAGE, tmp_pid);
+ bundle_add_str(msg, VC_WIDGET_BUNDLE_SHOW, tmp_show);
- if (0 != rpc_port_stub_vcd_stub_vc_notify_cb_invoke(handle, pid, msg)) {
- SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Fail to send msg");
- bundle_free(msg);
- pthread_mutex_unlock(&g_client_tidl_info_mutex);
- return;
- }
+ SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
+ __send_msg(msg, VCD_CLIENT_TYPE_WIDGET, pid);
bundle_free(msg);
- pthread_mutex_unlock(&g_client_tidl_info_mutex);
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ return VCD_ERROR_NONE;
}
-static void __vc_mgr_send_audio_streaming_cb(rpc_port_stub_vcd_mgr_stub_vc_mgr_context_h context, int pid, int event, rpc_port_stub_vcd_mgr_stub_array_char_h data, void *user_data)
+int vcdc_send_result(int pid, int manager_pid, int cmd_type)
{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Manager send audio streaming");
-
- char* buffer = NULL;
- int len = 0;
- int ret = -1;
- rpc_port_stub_vcd_mgr_stub_array_char_get(data, &buffer, &len);
-
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr send audio streaming : pid(%d), event(%d), buffer(%p), len(%d)", pid, event, buffer, len);
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send result");
- ret = vcd_server_mgr_send_audio_streaming(pid, event, buffer, (unsigned int)len);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
+ vcd_client_type_e type;
+ bundle* msg = bundle_create();
+ if (NULL == msg) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create bundle data");
+ return VCD_ERROR_OUT_OF_MEMORY;
}
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
-}
-
-int vcd_mgr_tidl_open_connection()
-{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] vcd_mgr_tidl_open_connection");
-
- g_mgr_callback.create = __vc_mgr_create_cb;
- g_mgr_callback.terminate = __vc_mgr_terminate_cb;
- g_mgr_callback.register_cb = __vc_mgr_register_cb_cb;
- g_mgr_callback.initialize = __vc_mgr_initialize_cb;
- g_mgr_callback.finalize = __vc_mgr_finalize_cb;
- g_mgr_callback.set_command = __vc_mgr_set_command_cb;
- g_mgr_callback.unset_command = __vc_mgr_unset_command_cb;
- g_mgr_callback.demandable_client = __vc_mgr_set_demandable_client_cb;
- g_mgr_callback.set_audio_type = __vc_mgr_set_audio_type_cb;
- g_mgr_callback.get_audio_type = __vc_mgr_get_audio_type_cb;
- g_mgr_callback.set_private_data = __vc_mgr_set_private_data_cb;
- g_mgr_callback.get_private_data = __vc_mgr_get_private_data_cb;
- g_mgr_callback.set_client_info = __vc_mgr_set_client_info_cb;
- g_mgr_callback.set_domain = __vc_mgr_set_domain_cb;
- g_mgr_callback.do_action = __vc_mgr_do_action_cb;
- g_mgr_callback.start = __vc_mgr_start_cb;
- g_mgr_callback.stop = __vc_mgr_stop_cb;
- g_mgr_callback.cancel = __vc_mgr_cancel_cb;
- g_mgr_callback.set_audio_streaming_mode = __vc_mgr_set_audio_streaming_mode_cb;
- g_mgr_callback.send_specific_engine_request = __vc_mgr_send_specific_engine_request_cb;
- g_mgr_callback.send_result_selection = __vc_mgr_send_result_selection_cb;
- g_mgr_callback.send_utterance_status = __vc_mgr_send_utterance_status_cb;
- g_mgr_callback.send_audio_streaming = __vc_mgr_send_audio_streaming_cb;
+ SLOG(LOG_INFO, TAG_VCD, "[TIDL] Result command type(%d)", cmd_type);
- int ret = -1;
- int count = 0;
- while (VC_RETRY_MIN_COUNT >= count) {
- ret = rpc_port_stub_vcd_mgr_stub_vc_mgr_register(&g_mgr_callback, NULL);
- if (0 == ret) {
- SLOG(LOG_DEBUG, TAG_VCD, "register callback");
- return VCD_ERROR_NONE;
+ switch (cmd_type) {
+ case VC_COMMAND_TYPE_FOREGROUND:
+ case VC_COMMAND_TYPE_BACKGROUND:
+ if (pid == manager_pid) {
+ type = VCD_CLIENT_TYPE_MANAGER;
+ bundle_add_str(msg, VC_BUNDLE_METHOD, VCD_MANAGER_METHOD_RESULT);
+ } else {
+ type = VCD_CLIENT_TYPE_NORMAL;
+ char pid_char[10] = {0};
+ snprintf(pid_char, 10, "%d", pid);
+ bundle_add_str(msg, VC_BUNDLE_PID, pid_char);
+ bundle_add_str(msg, VC_BUNDLE_METHOD, VCD_METHOD_RESULT);
}
- usleep(100000);
- count++;
+ break;
+ case VC_COMMAND_TYPE_WIDGET:
+ type = VCD_CLIENT_TYPE_WIDGET;
+ bundle_add_str(msg, VC_BUNDLE_METHOD, VCD_WIDGET_METHOD_RESULT);
+ break;
+ case VC_COMMAND_TYPE_SYSTEM:
+ case VC_COMMAND_TYPE_SYSTEM_BACKGROUND:
+ case VC_COMMAND_TYPE_EXCLUSIVE:
+ type = VCD_CLIENT_TYPE_MANAGER;
+ bundle_add_str(msg, VC_BUNDLE_METHOD, VCD_MANAGER_METHOD_RESULT);
+ break;
+
+ default:
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Command type is NOT valid(%d)", cmd_type);
+ bundle_free(msg);
+ return VCD_ERROR_INVALID_PARAMETER;
}
- SLOG(LOG_ERROR, TAG_VCD, "Fail to register callback(%d)", ret);
- return VCD_ERROR_OPERATION_FAILED;
-}
+ SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
-int vcd_mgr_tidl_close_connection()
-{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Close connection");
- rpc_port_stub_vcd_mgr_stub_vc_mgr_unregister();
+ __send_msg(msg, type, pid);
+ bundle_free(msg);
return VCD_ERROR_NONE;
}
-/*
-* Tidl for widget
-*/
-static void __widget_on_connected(rpc_port_proxy_vcd_widget_proxy_vcd_widget_h h, void *user_data)
+int vcdc_send_pre_result_to_manager(int manager_pid, int event, const char* pre_result)
{
- widget_tidl_info_s* widget_tidl_info = vcd_client_widget_get_tidl_info((int)user_data);
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send pre result to manager");
- widget_tidl_info->connected = true;
- widget_tidl_info->connection_requesting = false;
+ char tmp_event[10] = {0, };
- SLOG(LOG_INFO, TAG_VCD, "Connected to widget");
-}
+ bundle* msg = bundle_create();
+ snprintf(tmp_event, 10, "%d", event);
-static void __widget_on_disconnected(rpc_port_proxy_vcd_widget_proxy_vcd_widget_h h, void *user_data)
-{
- widget_tidl_info_s* widget_tidl_info = vcd_client_widget_get_tidl_info((int)user_data);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_PRE_RESULT);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_EVENT, tmp_event);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_PRE_RESULT, pre_result);
- widget_tidl_info->connected = false;
- widget_tidl_info->connection_requesting = false;
+ SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
- SLOG(LOG_INFO, TAG_VCD, "Disonnected to widget");
+ __send_msg(msg, VCD_CLIENT_TYPE_MANAGER, manager_pid);
+ bundle_free(msg);
+
+ return VCD_ERROR_NONE;
}
-static void __widget_on_rejected(rpc_port_proxy_vcd_widget_proxy_vcd_widget_h h, void *user_data)
+int vcdc_send_specific_engine_result_to_manager(int manager_pid, const char* engine_app_id, const char* event, const char* result)
{
- widget_tidl_info_s* widget_tidl_info = vcd_client_widget_get_tidl_info((int)user_data);
-
- widget_tidl_info->connection_requesting = false;
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send specific engine result to manager");
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Rejected from widget");
-}
+ bundle* msg = bundle_create();
-static rpc_port_proxy_vcd_widget_proxy_vcd_widget_h __widget_create_rpc_port(const char* engine_app_id, int pid)
-{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] __widget_create_rpc_port");
- rpc_port_proxy_vcd_widget_proxy_vcd_widget_callback_s rpc_callback = {
- .connected = __widget_on_connected,
- .disconnected = __widget_on_disconnected,
- .rejected = __widget_on_rejected
- };
+ gchar *gEncodedResult = g_base64_encode((const guchar*)result, strlen(result));
- rpc_port_proxy_vcd_widget_proxy_vcd_widget_h handle = NULL;
- if (0 != rpc_port_proxy_vcd_widget_proxy_vcd_widget_create(engine_app_id, &rpc_callback, (void *)pid, &handle)) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create proxy");
- return NULL;
- }
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_SPECIFIC_ENGINE_RESULT);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_ENGINE_APP_ID, engine_app_id);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_EVENT, event);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_RESULT, gEncodedResult);
- return handle;
-}
+ SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
-static void __vc_widget_create_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, void *user_data)
-{
- char *sender = NULL;
+ __send_msg(msg, VCD_CLIENT_TYPE_MANAGER, manager_pid);
+ bundle_free(msg);
- rpc_port_stub_vcd_widget_stub_vc_widget_context_get_sender(context, &sender);
- if (!sender) {
- SLOG(LOG_ERROR, TAG_VCD, "Sender is NULL");
- return;
- }
+ if (gEncodedResult)
+ g_free(gEncodedResult);
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ Widget connect. appid(%s)", sender);
- free(sender);
+ return VCD_ERROR_NONE;
}
-static void __vc_widget_terminate_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, void *user_data)
+int vcdc_send_result_to_manager(int manager_pid, int result_type)
{
- void* tag = NULL;
- rpc_port_stub_vcd_widget_stub_vc_widget_context_get_tag(context, &tag);
-
- if (NULL != tag) {
- int pid = (intptr_t)tag;
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VC WIDGET FINALIZE. pid(%u)", pid);
-
- pthread_mutex_lock(&g_widget_tidl_info_mutex);
- widget_tidl_info_s* widget_tidl_info = vcd_client_widget_get_tidl_info(pid);
- if (NULL == widget_tidl_info) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to get widget tidl info.");
- pthread_mutex_unlock(&g_widget_tidl_info_mutex);
- return;
- }
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send result to manager");
- if (0 != vcd_client_widget_unset_tidl_notify_cb(pid)) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to unset notify callback");
- }
+ char tmp_result[10] = {0, };
- if (0 != vcd_client_widget_delete_tidl_info(pid)) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to delete widget tidl info");
- }
- widget_tidl_info = NULL;
+ bundle* msg = bundle_create();
+ snprintf(tmp_result, 10, "%d", result_type);
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_ALL_RESULT);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_MESSAGE, tmp_result);
- pthread_mutex_unlock(&g_widget_tidl_info_mutex);
- char *sender = NULL;
- rpc_port_stub_vcd_widget_stub_vc_widget_context_get_sender(context, &sender);
- if (!sender)
- return;
+ SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
- SLOG(LOG_INFO, TAG_VCD, "@@@ Manager disconnect. appid(%s)", sender);
+ __send_msg(msg, VCD_CLIENT_TYPE_MANAGER, manager_pid);
+ bundle_free(msg);
- free(sender);
- }
- rpc_port_stub_vcd_widget_stub_vc_widget_context_set_tag(context, NULL);
+ return VCD_ERROR_NONE;
}
-static void __vc_widget_register_cb_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, int pid, rpc_port_stub_vcd_widget_stub_vc_widget_notify_cb_h notify_callback, void *user_data)
+int vcdc_send_speech_detected(int manager_pid)
{
- pthread_mutex_lock(&g_widget_tidl_info_mutex);
- SLOG(LOG_INFO, TAG_VCD, "@@@ VC WIDGET REGISTER CALLBACK");
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send speech detected");
- int ret = -1;
- ret = vcd_client_widget_add_tidl_info(pid);
+ bundle* msg = bundle_create();
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to add widget tidl info.");
- pthread_mutex_unlock(&g_widget_tidl_info_mutex);
- return;
- }
- widget_tidl_info_s* widget_tidl_info = vcd_client_widget_get_tidl_info(pid);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_SPEECH_DETECTED);
- if (NULL == widget_tidl_info) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to get widget tidl info. pid(%d)", pid);
- pthread_mutex_unlock(&g_widget_tidl_info_mutex);
- return;
- }
+ SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
- char *sender = NULL;
- rpc_port_stub_vcd_widget_stub_vc_widget_context_get_sender(context, &sender);
+ __send_msg(msg, VCD_CLIENT_TYPE_MANAGER, manager_pid);
+ bundle_free(msg);
- if (!sender){
- SLOG(LOG_ERROR, TAG_VCD, "Sender is NULL");
- pthread_mutex_unlock(&g_widget_tidl_info_mutex);
- return;
- }
+ return VCD_ERROR_NONE;
+}
- widget_tidl_info->rpc_h = __widget_create_rpc_port(sender, pid);
+int vcdc_send_service_state(vcd_state_e state)
+{
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send service state");
- if (NULL == widget_tidl_info->rpc_h) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create server proxy");
- } else {
- SLOG(LOG_INFO, TAG_VCD, "[TIDL] rpc_h(%p), engine_app_id(%s)", widget_tidl_info->rpc_h, sender);
- }
+ char tmp_state[10] = {0, };
- free(sender);
+ bundle* msg = bundle_create();
+ snprintf(tmp_state, 10, "%d", (int)state);
- if (0 != vcd_client_widget_set_tidl_notify_cb(pid, notify_callback, user_data)) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to set notify callback");
- } else {
- SLOG(LOG_INFO, TAG_VCD, "[TIDL] Succeed to set notify callback.");
- }
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_SET_SERVICE_STATE);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_MESSAGE, tmp_state);
- pthread_mutex_unlock(&g_widget_tidl_info_mutex);
+ bundle_add_str(msg, VC_BUNDLE_METHOD, VCD_METHOD_SET_SERVICE_STATE);
+ bundle_add_str(msg, VC_BUNDLE_SERVICE_STATE, tmp_state);
- __request_tidl_connect(VCD_CLIENT_TYPE_WIDGET, pid);
+ bundle_add_str(msg, VC_WIDGET_BUNDLE_METHOD, VCD_WIDGET_METHOD_SET_SERVICE_STATE);
+ bundle_add_str(msg, VC_WIDGET_BUNDLE_MESSAGE, tmp_state);
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND SIGNAL");
+ __send_signal(msg);
+ bundle_free(msg);
+
+ return VCD_ERROR_NONE;
}
-static int __vc_widget_initialize_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, int pid, int *service_state, int *daemon_pid, void *user_data)
+int vcdc_send_dialog(int manager_pid, int pid, const char* disp_text, const char* utt_text, int continuous)
{
- SLOG(LOG_INFO, TAG_VCD, "@@@ VCD Widget Initialize");
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send dialog");
- uintptr_t ptr_pid = pid;
- int ret = -1;
+ char tmp_pid[10] = {0, };
+ char tmp_continuous[10] = {0, };
+ char* tmp_disp_text = NULL;
+ char* tmp_utt_text = NULL;
+ bundle* msg = bundle_create();
+ snprintf(tmp_pid, 10, "%d", pid);
+ snprintf(tmp_continuous, 10, "%d", continuous);
- rpc_port_stub_vcd_widget_stub_vc_widget_context_set_tag(context, (void*)ptr_pid);
+ if (NULL == disp_text) {
+ tmp_disp_text = strdup("#NULL");
+ } else {
+ tmp_disp_text = strdup(disp_text);
+ }
- ret = vcd_server_widget_initialize(pid);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- return ret;
+ if (NULL == utt_text) {
+ tmp_utt_text = strdup("#NULL");
+ } else {
+ tmp_utt_text = strdup(utt_text);
}
- *service_state = vcd_server_get_service_state();
- *daemon_pid = getpid();
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd widget initialize : pid(%d) service state(%d) daemon_pid(%d)", pid, *service_state, *daemon_pid);
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
- return ret;
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_DIALOG);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_MESSAGE, tmp_pid);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_DISP_TEXT, tmp_disp_text);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_UTT_TEXT, tmp_utt_text);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_CONTINUOUS, tmp_continuous);
+
+ SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
+
+ __send_msg(msg, VCD_CLIENT_TYPE_MANAGER, manager_pid);
+ bundle_free(msg);
+ free(tmp_disp_text);
+ free(tmp_utt_text);
+
+ return VCD_ERROR_NONE;
}
-static int __vc_widget_finalize_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, int pid, void *user_data)
+int vcdc_tidl_send_error_to_manager(int manager_pid, int reason, char *err_msg)
{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Widget Finalize");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd widget finalize : pid(%d)", pid);
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL] Send error signal to manager");
- int ret = -1;
+ char tmp_reason[10] = {0, };
+ char tmp_daemon_pid[10] = {0, };
+ char *temp_msg = NULL;
- ret = vcd_server_widget_finalize(pid);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- return ret;
+ if (NULL == err_msg) {
+ SLOG(LOG_WARN, TAG_VCD, "[TIDL ERROR] Input parameter is NULL");
+ temp_msg = strdup("#NULL");
+ } else {
+ temp_msg = strdup(err_msg);
}
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
-
- return ret;
-}
+ bundle* msg = bundle_create();
+ snprintf(tmp_reason, 10, "%d", reason);
+ snprintf(tmp_daemon_pid, 10, "%d", getpid());
-static int __vc_widget_start_recording_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, int pid, int command, void *user_data)
-{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Widget Start Recording");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd widget start recording : pid(%d) command(%d)", pid, command);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_ERROR);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_REASON, tmp_reason);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_DAEMON_PID, tmp_daemon_pid);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_ERROR_MESSAGE, temp_msg);
- int ret = -1;
+ SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
- ret = vcd_server_widget_start_recording(pid, command);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- return ret;
- }
+ __send_msg(msg, VCD_CLIENT_TYPE_MANAGER, manager_pid);
+ bundle_free(msg);
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ free(temp_msg);
+ temp_msg = NULL;
- return ret;
+ return VCD_ERROR_NONE;
}
-static int __vc_widget_start_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, int pid, int silence, void *user_data)
+/*
+// TODO: remove _tidl after remove dbus
+// TODO: make client, widget error signal
+// But... it seems there is no call of this function.. Need to check.
+int vcdc_tidl_send_error(int reason, char *err_msg)
{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Widget Start");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd widget start : pid(%d) silence(%d)", pid, silence);
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL] Send error signal");
- int ret = -1;
+ char tmp_reason[10] = {0, };
+ char tmp_daemon_pid[10] = {0, };
+ char *temp_msg = NULL;
- ret = vcd_server_widget_start(pid, (bool)silence);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- return ret;
+ if (NULL == err_msg) {
+ SLOG(LOG_WARN, TAG_VCD, "[TIDL ERROR] Input parameter is NULL");
+ temp_msg = strdup("#NULL");
+ } else {
+ temp_msg = strdup(err_msg);
}
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ bundle* msg = bundle_create();
+ snprintf(tmp_reason, 10, "%d", reason);
+ snprintf(tmp_daemon_pid, 10, "%d", getpid());
- return ret;
-}
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_ERROR);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_REASON, tmp_reason);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_DAEMON_PID, tmp_daemon_pid);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_ERROR_MESSAGE, temp_msg);
-static int __vc_widget_stop_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, int pid, void *user_data)
-{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Widget Stop");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd widget stop : pid(%d)", pid);
+ bundle_add_str(msg, VC_WIDGET_BUNDLE_METHOD, VCD_MANAGER_METHOD_ERROR);
+ bundle_add_str(msg, VC_WIDGET_BUNDLE_REASON, tmp_reason);
+ bundle_add_str(msg, VC_WIDGET_BUNDLE_DAEMON_PID, tmp_daemon_pid);
+ bundle_add_str(msg, VC_WIDGET_BUNDLE_ERROR_MESSAGE, temp_msg);
- int ret = -1;
+ SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND SIGNAL");
- ret = vcd_server_widget_stop(pid);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- return ret;
- }
+ __send_signal(msg);
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ bundle_free(msg);
- return ret;
-}
+ free(temp_msg);
+ temp_msg = NULL;
-static int __vc_widget_cancel_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, int pid, void *user_data)
+ return VCD_ERROR_NONE;
+}
+*/
+int vcdc_send_request_set_private_data(int pid, const char* key, const char* data)
{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Widget Cancel");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd widget cancel : pid(%d)", pid);
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Set private data");
- int ret = -1;
+ char tmp_pid[10] = { 0, };
- ret = vcd_server_widget_cancel(pid);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- return ret;
- }
+ bundle* msg = bundle_create();
+ snprintf(tmp_pid, 10, "%d", pid);
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_SET_PRIVATE_DATA);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_MESSAGE, tmp_pid);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_KEY, key);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_PRIVATE_DATA, data);
- return ret;
+ SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
+
+ __send_msg(msg, VCD_CLIENT_TYPE_MANAGER, pid);
+ bundle_free(msg);
+
+ return VCD_ERROR_NONE;
}
-static int __vc_widget_enable_asr_result_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, int pid, int enable, void *user_data)
+int vcdc_send_feedback_audio_format_to_manager(int manager_pid, int rate, vc_audio_channel_e channel, vce_audio_type_e audio_type)
{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Widget Enable Asr Result");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd widget enable asr result : pid(%d) enable(%d)", pid, enable);
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send feedback audio format to manager");
- int ret = -1;
+ char tmp_rate[10] = {0, };
+ char tmp_channel[10] = {0, };
+ char tmp_audio_type[10] = {0, };
- ret = vcd_server_widget_enable_asr_result(pid, enable);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- return ret;
- }
+ bundle* msg = bundle_create();
+ snprintf(tmp_rate, 10, "%d", rate);
+ snprintf(tmp_channel, 10, "%d", (int)channel);
+ snprintf(tmp_audio_type, 10, "%d", (int)audio_type);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_FEEDBACK_AUDIO_FORMAT);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_AUDIO_RATE, tmp_rate);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_AUDIO_CHANNEL, tmp_channel);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_AUDIO_TYPE, tmp_audio_type);
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
- return ret;
+ __send_msg(msg, VCD_CLIENT_TYPE_MANAGER, manager_pid);
+ bundle_free(msg);
+
+ return VCD_ERROR_NONE;
}
-static void __vc_widget_set_foreground_cb(rpc_port_stub_vcd_widget_stub_vc_widget_context_h context, int pid, int value, void *user_data)
+int vcdc_send_feedback_streaming_to_manager(int manager_pid, int pid, int utt_id, vc_feedback_event_e event, char* buffer, int len)
{
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VCD Widget Set Foreground");
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd widget set foreground : pid(%d) value(%d)", pid, value);
-
- int ret = -1;
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send feedback streaming to manager");
- ret = vcd_server_set_foreground(pid, value);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[OUT ERROR] Result(%d)", ret);
- return;
- }
+ char tmp_pid[10] = {0, };
+ char tmp_utt_id[10] = {0, };
+ char tmp_event[10] = {0, };
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ send request set foreground to manager");
- vcdc_send_request_set_foreground(pid, value);
+ bundle* msg = bundle_create();
+ snprintf(tmp_pid, 10, "%d", pid);
+ snprintf(tmp_utt_id, 10, "%d", utt_id);
+ snprintf(tmp_event, 10, "%d", (int)event);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_METHOD, VCD_MANAGER_METHOD_FEEDBACK_STREAMING);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_MESSAGE, tmp_pid);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_UTTID, tmp_utt_id);
+ bundle_add_str(msg, VC_MANAGER_BUNDLE_EVENT, tmp_event);
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ rpc_port_stub_vcd_mgr_stub_array_char_h streaming_data = NULL;
+ rpc_port_stub_vcd_mgr_stub_array_char_create(&streaming_data);
+ if (NULL == streaming_data) {
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to create data handle");
+ return VCD_ERROR_OUT_OF_MEMORY;
+ }
- return;
-}
+ if (NULL != buffer && 0 < len) {
+ rpc_port_stub_vcd_mgr_stub_array_char_set(streaming_data, (char*)buffer, len);
+ } else {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL] buffer is empty");
+ }
-int vcd_widget_tidl_open_connection()
-{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] vcd_widget_tidl_open_connection");
+ SLOG(LOG_DEBUG, TAG_VCD, ">>>> VCD SEND MESSAGE");
- g_widget_callback.create = __vc_widget_create_cb;
- g_widget_callback.terminate = __vc_widget_terminate_cb;
- g_widget_callback.register_cb = __vc_widget_register_cb_cb;
- g_widget_callback.initialize = __vc_widget_initialize_cb;
- g_widget_callback.finalize = __vc_widget_finalize_cb;
- g_widget_callback.start_recording = __vc_widget_start_recording_cb;
- g_widget_callback.start = __vc_widget_start_cb;
- g_widget_callback.stop = __vc_widget_stop_cb;
- g_widget_callback.cancel = __vc_widget_cancel_cb;
- g_widget_callback.enable_asr_result = __vc_widget_enable_asr_result_cb;
- g_widget_callback.set_foreground = __vc_widget_set_foreground_cb;
+ pthread_mutex_lock(&g_mgr_tidl_info_mutex);
+ SLOG(LOG_INFO, TAG_VCD, "[TIDL] message to manager");
+ manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
- int ret = -1;
- int count = 0;
- while (VC_RETRY_MIN_COUNT >= count) {
- ret = rpc_port_stub_vcd_widget_stub_vc_widget_register(&g_widget_callback, NULL);
- if (0 == ret) {
- SLOG(LOG_DEBUG, TAG_VCD, "register callback");
- return VCD_ERROR_NONE;
- }
- usleep(100000);
- count++;
+ if (NULL == mgr_tidl_info) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to get manager tidl info. pid(%d)", pid);
+ pthread_mutex_unlock(&g_mgr_tidl_info_mutex);
+ rpc_port_stub_vcd_mgr_stub_array_char_destroy(streaming_data);
+ bundle_free(msg);
+ return VCD_ERROR_OPERATION_FAILED;
}
- SLOG(LOG_ERROR, TAG_VCD, "Fail to register callback(%d)", ret);
- return VCD_ERROR_OPERATION_FAILED;
-}
+ rpc_port_stub_vcd_mgr_stub_vc_mgr_send_buffer_cb_h handle = mgr_tidl_info->send_buffer_cb;
+ if (NULL == handle) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL] notify callback handle is null");
+ pthread_mutex_unlock(&g_mgr_tidl_info_mutex);
+ rpc_port_stub_vcd_mgr_stub_array_char_destroy(streaming_data);
+ bundle_free(msg);
+ return VCD_ERROR_OPERATION_FAILED;
+ }
-int vcd_widget_tidl_close_connection()
-{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Close connection");
- rpc_port_stub_vcd_widget_stub_vc_widget_unregister();
+ if (0 != rpc_port_stub_vcd_mgr_stub_vc_mgr_send_buffer_cb_invoke(handle, streaming_data, msg)) {
+ SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Fail to send msg");
+ pthread_mutex_unlock(&g_mgr_tidl_info_mutex);
+ rpc_port_stub_vcd_mgr_stub_array_char_destroy(streaming_data);
+ bundle_free(msg);
+ return VCD_ERROR_OPERATION_FAILED;
+ }
+ pthread_mutex_unlock(&g_mgr_tidl_info_mutex);
+ rpc_port_stub_vcd_mgr_stub_array_char_destroy(streaming_data);
+ bundle_free(msg);
return VCD_ERROR_NONE;
}
-/**
- * TIDL functions for VC setting client
- */
-static void __vc_setting_create_cb(rpc_port_stub_vcd_setting_stub_vc_setting_context_h context, void *user_data)
+void vcdc_send_request_set_foreground(int pid, int value)
{
- SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_setting_create_cb");
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Set foreground");
- char *sender = NULL;
+ manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
- rpc_port_stub_vcd_setting_stub_vc_setting_context_get_sender(context, &sender);
- if (!sender) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Sender is NULL");
+ if (NULL == mgr_tidl_info) {
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to get tidl info");
return;
}
- SLOG(LOG_INFO, TAG_VCD, "[TIDL] sender(%s)", sender); // sender (app_id)
- free(sender);
+ if (!mgr_tidl_info->connected) {
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Not Connected");
+ return;
+ }
+
+ rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_invoke_set_foreground(mgr_tidl_info->rpc_h, pid, value);
+
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Request set foreground");
}
-static void __vc_setting_terminate_cb(rpc_port_stub_vcd_setting_stub_vc_setting_context_h context, void *user_data)
+int vcdc_send_request_get_private_data(int pid, const char* key, char** data)
{
- SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_setting_terminate_cb");
- void* tag = NULL;
- rpc_port_stub_vcd_setting_stub_vc_setting_context_get_tag(context, &tag);
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Get private data");
- if (NULL != tag) {
- int pid = (intptr_t)tag;
- SLOG(LOG_DEBUG, TAG_VCD, "@@@ VC SETTING FINALIZE. pid(%u)", pid);
+ manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
- pthread_mutex_lock(&g_setting_tidl_info_mutex);
- setting_tidl_info_s* setting_tidl_info = vcd_client_setting_get_tidl_info(pid);
- if (NULL == setting_tidl_info) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to get setting tidl info.");
- pthread_mutex_unlock(&g_setting_tidl_info_mutex);
- return;
- }
+ if (NULL == mgr_tidl_info) {
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to get tidl info");
+ return VC_ERROR_OPERATION_FAILED;
+ }
- if (0 != vcd_client_setting_unset_tidl_notify_cb(pid)) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to unset notify callback");
- }
+ if (!mgr_tidl_info->connected) {
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Not Connected");
+ return VC_ERROR_OPERATION_FAILED;
+ }
- if (0 != vcd_client_setting_delete_tidl_info(pid)) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to delete setting tidl info");
- }
- setting_tidl_info = NULL;
+ char *tmp = NULL;
+ int ret = rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_invoke_get_private_data(mgr_tidl_info->rpc_h, pid, key, &tmp);
+ if (RPC_PORT_ERROR_NONE != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Request vcd manager get private data : Fail to invoke message, error(%d)", ret);
+ return ret;
+ }
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Request vcd manager get private data : Success");
- SLOG(LOG_DEBUG, TAG_VCD, "@@@");
+ *data = tmp;
- pthread_mutex_unlock(&g_setting_tidl_info_mutex);
- }
- rpc_port_stub_vcd_setting_stub_vc_setting_context_set_tag(context, NULL);
+ return VC_ERROR_NONE;
}
-static void __vc_setting_register_notify_cb_cb(rpc_port_stub_vcd_setting_stub_vc_setting_context_h context, int pid, rpc_port_stub_vcd_setting_stub_vc_setting_notify_cb_h callback, void *user_data)
+int vcdc_send_request_auth_enable(int pid)
{
- SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_setting_register_notify_cb_cb. pid(%d)", pid);
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] auth enable");
- if (NULL == callback) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] callback is null.");
- return;
+ manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
+
+ if (NULL == mgr_tidl_info) {
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to get tidl info");
+ return VC_ERROR_OPERATION_FAILED;
}
- int ret = -1;
- ret = vcd_client_setting_add_tidl_info(pid);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to add tidl info.");
- return;
+ if (!mgr_tidl_info->connected) {
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Not Connected");
+ return VC_ERROR_OPERATION_FAILED;
}
- ret = vcd_client_setting_set_tidl_notify_cb(pid, callback, user_data);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to set notify callback.");
- } else {
- SLOG(LOG_INFO, TAG_VCD, "[TIDL] Succeed to set notify callback.");
+ int ret = rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_invoke_auth_enable(mgr_tidl_info->rpc_h, pid);
+ if (RPC_PORT_ERROR_NONE != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Request auth enable : Fail to invoke message, error(%d)", ret);
+ return ret;
}
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Request auth enable : Success");
+
+ return VC_ERROR_NONE;
}
-static int __vc_setting_register_notify_cb_sync_cb(rpc_port_stub_vcd_setting_stub_vc_setting_context_h context, int pid, rpc_port_stub_vcd_setting_stub_vc_setting_notify_cb_h callback, void *user_data)
+int vcdc_send_request_auth_disable(int pid)
{
- SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_setting_register_notify_cb_sync_cb. pid(%d)", pid);
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] auth disable");
- if (NULL == callback) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] callback is null.");
- return VCD_ERROR_INVALID_PARAMETER;
+ manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
+
+ if (NULL == mgr_tidl_info) {
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to get tidl info");
+ return VC_ERROR_OPERATION_FAILED;
}
- int ret = -1;
- ret = vcd_client_setting_add_tidl_info(pid);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to add tidl info.");
+ if (!mgr_tidl_info->connected) {
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Not Connected");
+ return VC_ERROR_OPERATION_FAILED;
+ }
+
+ int ret = rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_invoke_auth_disable(mgr_tidl_info->rpc_h, pid);
+ if (RPC_PORT_ERROR_NONE != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Request auth disable : Fail to invoke message, error(%d)", ret);
return ret;
}
-
- ret = vcd_client_setting_set_tidl_notify_cb(pid, callback, user_data);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to set notify callback.");
- } else {
- SLOG(LOG_INFO, TAG_VCD, "[TIDL] Succeed to set notify callback.");
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Request auth disable : Success");
+
+ return VC_ERROR_NONE;
+}
+
+int vcdc_send_request_auth_start(int pid)
+{
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] auth start");
+
+ manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
+
+ if (NULL == mgr_tidl_info) {
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to get tidl info");
+ return VC_ERROR_OPERATION_FAILED;
}
- return ret;
+ if (!mgr_tidl_info->connected) {
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Not Connected");
+ return VC_ERROR_OPERATION_FAILED;
+ }
+
+ int ret = rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_invoke_auth_start(mgr_tidl_info->rpc_h, pid);
+ if (RPC_PORT_ERROR_NONE != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Request auth start : Fail to invoke message, error(%d)", ret);
+ return ret;
+ }
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Request auth start : Success");
+
+ return VC_ERROR_NONE;
}
-int __vc_setting_set_language_cb(rpc_port_stub_vcd_setting_stub_vc_setting_context_h context, int pid, const char *language, void *user_data)
+int vcdc_send_request_auth_stop(int pid)
{
- if (NULL == language) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Invalid parameter");
- return VCD_ERROR_INVALID_PARAMETER;
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] auth stop");
+
+ manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
+
+ if (NULL == mgr_tidl_info) {
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to get tidl info");
+ return VC_ERROR_OPERATION_FAILED;
}
- SLOG(LOG_INFO, TAG_VCD, "[IN] vcd server set language : language(%s)", language);
+ if (!mgr_tidl_info->connected) {
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Not Connected");
+ return VC_ERROR_OPERATION_FAILED;
+ }
- int ret = vcd_server_set_language(language);
- if (0 != ret) {
- SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to set language(%d).", ret);
- } else {
- SLOG(LOG_INFO, TAG_VCD, "[TIDL] Succeed to set language.");
+ int ret = rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_invoke_auth_stop(mgr_tidl_info->rpc_h, pid);
+ if (RPC_PORT_ERROR_NONE != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Request auth stop : Fail to invoke message, error(%d)", ret);
+ return ret;
}
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Request auth stop : Success");
- return ret;
+ return VC_ERROR_NONE;
}
-int vcd_setting_tidl_open_connection()
+int vcdc_send_request_auth_cancel(int pid)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] vcd_setting_tidl_open_connection");
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] auth cancel");
- g_setting_callback.create = __vc_setting_create_cb;
- g_setting_callback.terminate = __vc_setting_terminate_cb;
- g_setting_callback.register_notify_cb = __vc_setting_register_notify_cb_cb;
- g_setting_callback.register_notify_cb_sync = __vc_setting_register_notify_cb_sync_cb;
- g_setting_callback.set_language = __vc_setting_set_language_cb;
+ manager_tidl_info_s* mgr_tidl_info = vcd_client_manager_get_tidl_info();
- int ret = -1;
- int count = 0;
- while (VC_RETRY_MIN_COUNT >= count) {
- ret = rpc_port_stub_vcd_setting_stub_vc_setting_register(&g_setting_callback, NULL);
- if (0 == ret) {
- SLOG(LOG_DEBUG, TAG_VCD, "register callback");
- return VCD_ERROR_NONE;
- }
- usleep(100000);
- count++;
+ if (NULL == mgr_tidl_info) {
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to get tidl info");
+ return VC_ERROR_OPERATION_FAILED;
}
- SLOG(LOG_ERROR, TAG_VCD, "Fail to register callback(%d)", ret);
- return VCD_ERROR_OPERATION_FAILED;
+ if (!mgr_tidl_info->connected) {
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Not Connected");
+ return VC_ERROR_OPERATION_FAILED;
+ }
+
+ int ret = rpc_port_proxy_vcd_mgr_proxy_vcd_mgr_invoke_auth_cancel(mgr_tidl_info->rpc_h, pid);
+ if (RPC_PORT_ERROR_NONE != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Request auth cancel : Fail to invoke message, error(%d)", ret);
+ return ret;
+ }
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Request auth cancel : Success");
+
+ return VC_ERROR_NONE;
}
-int vcd_setting_tidl_close_connection()
+int vcdc_send_asr_result(int pid, int event, const char* asr_result, int cmd_type, bool* is_consumed)
{
- SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Close connection");
- rpc_port_stub_vcd_setting_stub_vc_setting_unregister();
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Send asr result");
- return VCD_ERROR_NONE;
+ widget_tidl_info_s* widget_tidl_info = vcd_client_widget_get_tidl_info(pid);
+
+ if (NULL == widget_tidl_info) {
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to get tidl info");
+ return VC_ERROR_OPERATION_FAILED;
+ }
+
+ if (!widget_tidl_info->connected) {
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Not Connected");
+ return VC_ERROR_OPERATION_FAILED;
+ }
+
+ bool temp;
+ int ret = rpc_port_proxy_vcd_widget_proxy_vcd_widget_invoke_send_asr_result(widget_tidl_info->rpc_h, pid, event, asr_result, &temp);
+ if (RPC_PORT_ERROR_NONE != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Request vcd widget send asr result : Fail to invoke message, error(%d)", ret);
+ return ret;
+ }
+ SLOG(LOG_DEBUG, TAG_VCD, "[TIDL] Request vcd widget send asr result : Success");
+
+ *is_consumed = temp;
+
+ return VC_ERROR_NONE;
}
+