From 5b0ca4c3f51d2481992863f491be8d8f3b4c622c Mon Sep 17 00:00:00 2001 From: Suyeon Hwang Date: Mon, 27 Dec 2021 14:47:38 +0900 Subject: [PATCH 01/16] Change variable related with uid to unsigned integer Change-Id: Id74b98a2adc21d5e71905203ec5752c11b826abf Signed-off-by: Suyeon Hwang --- client/vc_widget_client.c | 12 ++++++------ common/vc_main.h | 2 +- server/vcd_server.c | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/client/vc_widget_client.c b/client/vc_widget_client.c index 0907406..c18036e 100644 --- a/client/vc_widget_client.c +++ b/client/vc_widget_client.c @@ -21,9 +21,9 @@ #include "voice_control_common.h" /* Max number of handle */ -static const int g_max_handle = 999; +static const unsigned int MAX_NUMBER_OF_HANDLE = 999; /* allocated handle */ -static int g_allocated_handle = 0; +static unsigned int g_allocated_handle = 0; /* widget list */ static GSList *g_widget_list = NULL; @@ -61,16 +61,16 @@ vc_widget_s* widget_get(vc_h vc) return NULL; } -static int __client_generate_uid(int pid) +static unsigned int __client_generate_uid(unsigned int pid) { g_allocated_handle++; - if (g_allocated_handle > g_max_handle) { + if (g_allocated_handle > MAX_NUMBER_OF_HANDLE) { g_allocated_handle = 1; } /* generate uid, handle number should be smaller than 1000 */ - return pid * 1000 + g_allocated_handle; + return pid * 1000u + g_allocated_handle; } int vc_widget_client_create(vc_h* vc) @@ -90,7 +90,7 @@ int vc_widget_client_create(vc_h* vc) return VC_ERROR_OUT_OF_MEMORY; } - temp->handle = __client_generate_uid(getpid()); + temp->handle = __client_generate_uid((unsigned int)getpid()); /* initialize widget data */ widget->vc = temp; diff --git a/common/vc_main.h b/common/vc_main.h index 9ed4128..15e94f9 100644 --- a/common/vc_main.h +++ b/common/vc_main.h @@ -48,7 +48,7 @@ extern "C" { * @brief A structure of handle for identification */ struct vc_s { - int handle; + unsigned int handle; }; typedef struct vc_s *vc_h; diff --git a/server/vcd_server.c b/server/vcd_server.c index aa2a347..f55f33af4 100644 --- a/server/vcd_server.c +++ b/server/vcd_server.c @@ -1153,7 +1153,7 @@ int vcd_send_feedback_streaming(vce_feedback_event_e event, char* buffer, int le { if (VC_INVALID_TTS_UID == g_current_tts_uid && VCE_FEEDBACK_EVENT_START == event) { g_current_utt_id = (g_current_utt_id + 1) % 1000; - g_current_tts_uid = vcd_client_manager_get_pid() * 1000 + g_current_utt_id; + g_current_tts_uid = (unsigned int)vcd_client_manager_get_pid() * 1000u + g_current_utt_id; SLOG(LOG_INFO, TAG_VCD, "[Server info] set current uid and utt_id as manager pid(%d)", vcd_client_manager_get_pid()); } @@ -2687,9 +2687,9 @@ int vcd_server_request_tts(int pid, const char* text, const char* language, int g_current_utt_id = (g_current_utt_id + 1) % 1000; *utt_id = g_current_utt_id; if (0 == to_vcm) { - tts_uid = pid * 1000 + g_current_utt_id; + tts_uid = (unsigned int)pid * 1000u + (unsigned int)g_current_utt_id; } else { - tts_uid = vcd_client_manager_get_pid() * 1000 + g_current_utt_id; + tts_uid = (unsigned int)vcd_client_manager_get_pid() * 1000u + (unsigned int)g_current_utt_id; } SLOG(LOG_INFO, TAG_VCD, "[Server INFO] pid(%d), text(%s), language(%s), to_vcm(%d), ", pid, text, language, to_vcm); SLOG(LOG_INFO, TAG_VCD, "[Server INFO] current_uid(%u), current_utt_id(%d)", tts_uid, g_current_utt_id); @@ -2736,7 +2736,7 @@ int vcd_server_cancel_tts(int pid, int utt_id) vc_tts_text_data_s* tts_text_data = NULL; - unsigned int tts_uid = pid * 1000 + utt_id; + unsigned int tts_uid = (unsigned int)pid * 1000u + (unsigned int)utt_id; int ret = vcd_data_get_tts_text_data(tts_uid, &tts_text_data); if (0 != ret) { SLOG(LOG_WARN, TAG_VCD, "[Server WARN] No data in vcd tts text queue"); -- 2.7.4 From 7eefa39a5fcadd5a783e143227832cea5cb191ce Mon Sep 17 00:00:00 2001 From: Suyeon Hwang Date: Mon, 22 Nov 2021 19:32:57 +0900 Subject: [PATCH 02/16] Send error about tts failed to client app Change-Id: Ic7736f0f2381bc873f87da0f8d455b61ebd87d1a Signed-off-by: Suyeon Hwang --- client/vc.c | 18 ++++++++++++++++++ client/vc_client.c | 9 +++++++-- client/vc_client.h | 2 +- client/vc_dbus.c | 25 +++++++++++++++++++++++++ common/vc_defs.h | 1 + server/vcd_dbus.c | 40 ++++++++++++++++++++++++++++++++++++++++ server/vcd_dbus.h | 2 ++ server/vcd_server.c | 16 ++++++++++++---- 8 files changed, 106 insertions(+), 7 deletions(-) diff --git a/client/vc.c b/client/vc.c index 60143a2..f42cc66 100644 --- a/client/vc.c +++ b/client/vc.c @@ -1713,6 +1713,24 @@ int __vc_cb_error(int reason, int daemon_pid, char* msg) return 0; } +int __vc_cb_error_to_app(int pid, int reason, const char* msg) +{ + SLOG(LOG_INFO, TAG_VCC, "[INFO] send error to app(%d)", pid); + + vc_h vc; + if (0 != vc_client_get_handle(pid, &vc)) { + SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to get vc handle"); + return VC_ERROR_INVALID_PARAMETER; + } + + SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Error reason(%d), msg(%s)", reason, msg); + + vc_client_set_error(vc, reason); + ecore_main_loop_thread_safe_call_async(__vc_notify_error, (void*)vc); + + return VC_ERROR_NONE; +} + static void __vc_notify_state_changed(void *data) { vc_h vc = (vc_h)data; diff --git a/client/vc_client.c b/client/vc_client.c index 60194c0..fe116b0 100644 --- a/client/vc_client.c +++ b/client/vc_client.c @@ -164,6 +164,8 @@ int vc_client_create(vc_h* vc) client->is_foreground = false; client->invocation_name = NULL; + SLOG(LOG_INFO, TAG_VCC, "[INFO] client create. uid(%u)", client->uid); + g_client_list = g_slist_append(g_client_list, client); *vc = temp; @@ -246,18 +248,21 @@ bool vc_client_is_valid_by_uid(unsigned int uid) } //LCOV_EXCL_START -int vc_client_get_handle(unsigned int uid, vc_h* vc) +int vc_client_get_handle(int pid, vc_h* vc) { vc_client_s *data = NULL; int count = g_slist_length(g_client_list); int i; + SLOG(LOG_DEBUG, TAG_VCC, "[DEBUG] The number of VC clients(%d)", count); + for (i = 0; i < count; i++) { data = g_slist_nth_data(g_client_list, i); if (NULL != data) { - if (uid == data->vc->handle) { + SLOG(LOG_DEBUG, TAG_VCC, "[DEBUG] pid(%d), handle(%d)", pid, data->vc->handle); + if (pid == data->vc->handle) { *vc = data->vc; return 0; } diff --git a/client/vc_client.h b/client/vc_client.h index 7c22e2c..cfc8d4b 100644 --- a/client/vc_client.h +++ b/client/vc_client.h @@ -40,7 +40,7 @@ bool vc_client_is_valid(vc_h vc); bool vc_client_is_valid_by_uid(unsigned int uid); -int vc_client_get_handle(unsigned int uid, vc_h* vc); +int vc_client_get_handle(int pid, vc_h* vc); /* * set/get callback function diff --git a/client/vc_dbus.c b/client/vc_dbus.c index e41b7ef..05e5bed 100644 --- a/client/vc_dbus.c +++ b/client/vc_dbus.c @@ -31,6 +31,8 @@ static DBusConnection* g_conn_listener = NULL; extern int __vc_cb_error(int reason, int daemon_pid, char* msg); +extern int __vc_cb_error_to_app(int pid, int reason, char* msg); + extern void __vc_cb_result(); extern int __vc_cb_service_state(int state); @@ -163,6 +165,29 @@ static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handle SLOG(LOG_DEBUG, TAG_VCC, "@@@"); } /* VCD_METHOD_ERROR */ + else if (dbus_message_is_signal(msg, if_name, VCD_METHOD_ERROR_TO_APP)) { + SLOG(LOG_DEBUG, TAG_VCC, "@@@ Get Error and send to client app"); + int pid; + int reason; + char* err_msg; + + dbus_message_get_args(msg, &err, + DBUS_TYPE_INT32, &pid, + DBUS_TYPE_INT32, &reason, + DBUS_TYPE_STRING, &err_msg, + DBUS_TYPE_INVALID); + + if (dbus_error_is_set(&err)) { + SLOG(LOG_ERROR, TAG_VCC, "@@ vc Get Error message : Get arguments error (%s)", err.message); + dbus_error_free(&err); + } else { + SLOG(LOG_DEBUG, TAG_VCC, "@@ vc Get Error message : reason(%d), pid(%d), msg(%s)", reason, pid, err_msg); + __vc_cb_error_to_app(pid, reason, err_msg); + } + + SLOG(LOG_DEBUG, TAG_VCC, "@@@"); + } /* VCD_METHOD_ERROR_TO_APP */ + else if (dbus_message_is_method_call(msg, if_name, VCD_METHOD_FEEDBACK_STREAMING)) { SLOG(LOG_INFO, TAG_VCC, "@@@ Get TTS feedback streaming"); int utt_id; diff --git a/common/vc_defs.h b/common/vc_defs.h index 21c2e58..121950e 100644 --- a/common/vc_defs.h +++ b/common/vc_defs.h @@ -82,6 +82,7 @@ extern "C" { #define VCD_METHOD_RESULT "vcd_method_result" #define VCD_METHOD_ERROR "vcd_method_error" +#define VCD_METHOD_ERROR_TO_APP "vcd_method_error_to_app" #define VCD_METHOD_HELLO "vcd_method_hello" #define VCD_METHOD_SET_SERVICE_STATE "vcd_method_set_service_state" #define VCD_METHOD_SEND_MANAGER_PID "vcd_method_send_manager_pid" diff --git a/server/vcd_dbus.c b/server/vcd_dbus.c index 7811988..9ac4f0c 100755 --- a/server/vcd_dbus.c +++ b/server/vcd_dbus.c @@ -864,6 +864,46 @@ int vcdc_send_error_signal(int reason, char *err_msg) return 0; } +int vcdc_send_error_signal_to_app(int pid, int reason, char *err_msg) +{ + if (NULL == err_msg) { + SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] Input parameter is NULL"); + return VCD_ERROR_INVALID_PARAMETER; + } + + if (VCD_ERROR_NONE != __dbus_check()) { + return VCD_ERROR_OPERATION_FAILED; + } + + DBusError err; + dbus_error_init(&err); + + SLOG(LOG_ERROR, TAG_VCD, "@@ Send error to app(%d)", pid); + + DBusMessage* msg = __get_message(pid, VCD_METHOD_ERROR_TO_APP, VCD_CLIENT_TYPE_NORMAL); + if (NULL == msg) { + SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] Message is NULL"); + return VCD_ERROR_OUT_OF_MEMORY; + } + + dbus_message_append_args(msg, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INT32, &reason, DBUS_TYPE_STRING, &err_msg, DBUS_TYPE_INVALID); + + dbus_message_set_no_reply(msg, TRUE); + + if (TRUE != dbus_connection_send(g_conn_sender, msg, NULL)) { + SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] Fail to Send"); + dbus_message_unref(msg); + return VCD_ERROR_OPERATION_FAILED; + } else { + SLOG(LOG_DEBUG, TAG_VCD, "@@ Send error to app: pid(%d), reason(%d), Error Msg(%s)", pid, reason, err_msg); + dbus_connection_flush(g_conn_sender); + } + + dbus_message_unref(msg); + + return VCD_ERROR_NONE; +} + int vcdc_send_request_set_private_data(int pid, const char* key, const char* data) { if (0 != __dbus_check()) { diff --git a/server/vcd_dbus.h b/server/vcd_dbus.h index a6d97a5..5fd1b7b 100644 --- a/server/vcd_dbus.h +++ b/server/vcd_dbus.h @@ -58,6 +58,8 @@ int vcdc_send_error_signal(int reason, char *err_msg); int vcdc_send_error_signal_to_manager(int manager_pid, int reason, char *err_msg); +int vcdc_send_error_signal_to_app(int pid, int reason, char *err_msg); + int vcdc_send_service_state(vcd_state_e state); int vcdc_send_dialog(int manger_pid, int pid, const char* disp_text, const char* utt_text, int continuous); diff --git a/server/vcd_server.c b/server/vcd_server.c index 853597c..19b3950 100644 --- a/server/vcd_server.c +++ b/server/vcd_server.c @@ -1114,7 +1114,14 @@ int vcd_send_error(vce_error_e error, const char* msg, void *user_data) } int ret = VCD_ERROR_NONE; - ret = vcdc_send_error_signal_to_manager(vcd_client_manager_get_pid(), error, error_msg); + if (VCE_ERROR_TTS_FAILED == error) { + int pid = g_current_uid / 1000; + ret = vcdc_send_error_signal_to_app(pid, error, error_msg); + } else { + ret = vcdc_send_error_signal_to_manager(vcd_client_manager_get_pid(), error, error_msg); + ecore_main_loop_thread_safe_call_async(__cancel_by_error, NULL); + } + if (VCD_ERROR_NONE != ret) { SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Fail to send error signal"); } @@ -1124,8 +1131,6 @@ int vcd_send_error(vce_error_e error, const char* msg, void *user_data) error_msg = NULL; } - ecore_main_loop_thread_safe_call_async(__cancel_by_error, NULL); - return ret; } @@ -2759,7 +2764,10 @@ int vcd_server_cancel_tts(int pid, int utt_id) SLOG(LOG_INFO, TAG_VCD, "[Server SUCCESS] request tts, pid(%d), utt_id(%d)", pid, utt_id); } - return 0; + /* Set service state */ + vcd_config_set_service_state(VCD_STATE_READY); + + return VCD_ERROR_NONE; } int vcd_server_get_tts_audio_format(int pid, int* rate, int* channel, int* audio_type) -- 2.7.4 From 898a61de2c08ba50ecd84be38be4542b6e53e90f Mon Sep 17 00:00:00 2001 From: Suyeon Hwang Date: Mon, 22 Nov 2021 19:50:37 +0900 Subject: [PATCH 03/16] Make function for get pid that requests tts play Change-Id: Ica6e6c058814f06a3e276dc65474d175a21f837a Signed-off-by: Suyeon Hwang --- server/vcd_server.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/server/vcd_server.c b/server/vcd_server.c index 19b3950..fbeab48 100644 --- a/server/vcd_server.c +++ b/server/vcd_server.c @@ -63,6 +63,11 @@ static int __start_internal_recognition(); /* * VC Server Internal Functions */ +static inline int __get_tts_played_pid() +{ + return g_current_uid > 0 ? g_current_uid / 1000 : 0; +} + static Eina_Bool __stop_by_silence(void *data) { SLOG(LOG_INFO, TAG_VCD, "@@@ Silence Detected "); @@ -1115,7 +1120,7 @@ int vcd_send_error(vce_error_e error, const char* msg, void *user_data) int ret = VCD_ERROR_NONE; if (VCE_ERROR_TTS_FAILED == error) { - int pid = g_current_uid / 1000; + int pid = __get_tts_played_pid(); ret = vcdc_send_error_signal_to_app(pid, error, error_msg); } else { ret = vcdc_send_error_signal_to_manager(vcd_client_manager_get_pid(), error, error_msg); @@ -1141,8 +1146,8 @@ int vcd_send_feedback_audio_format(int rate, vce_audio_channel_e channel, vce_au /* send TTS feedback audio format to VC manager */ int ret = VCD_ERROR_NONE; - int pid = g_current_uid / 1000; - if (0 == g_current_uid || vcd_client_manager_get_pid() == pid) { + int pid = __get_tts_played_pid(); + if (0 == pid || vcd_client_manager_get_pid() == pid) { ret = vcdc_send_feedback_audio_format_to_manager(vcd_client_manager_get_pid(), rate, channel, audio_type); if (VCD_ERROR_NONE != ret) { SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Fail to send TTS feedback audio format to VC manager"); @@ -1163,7 +1168,7 @@ int vcd_send_feedback_streaming(vce_feedback_event_e event, char* buffer, int le } int ret = VCD_ERROR_NONE; - int pid = g_current_uid / 1000; + int pid = __get_tts_played_pid(); int utt_id = g_current_uid % 1000; SLOG(LOG_INFO, TAG_VCD, "[Server DEBUG] Engine - Send TTS feedback streaming event(%d), uid(%d), is_mgr_client(%d)", event, g_current_uid, (pid == vcd_client_manager_get_pid() ? true : false)); -- 2.7.4 From 0215f6e5cfd3ea859e241c7fcb585f0bf02de026 Mon Sep 17 00:00:00 2001 From: Suyeon Hwang Date: Tue, 30 Nov 2021 11:06:53 +0900 Subject: [PATCH 04/16] Unify indentation of enums on vce.h Change-Id: I101f12cea06cfd55a5b1c75fc2cb91982a52a814 Signed-off-by: Suyeon Hwang --- include/vce.h | 70 +++++++++++++++++++++++++++++------------------------------ 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/include/vce.h b/include/vce.h index a504a94..e700059 100644 --- a/include/vce.h +++ b/include/vce.h @@ -34,18 +34,18 @@ extern "C" { * @since_tizen @if MOBILE 4.0 @elseif WEARABLE 5.0 @endif */ typedef enum { - VCE_ERROR_NONE = TIZEN_ERROR_NONE, /**< Successful */ - VCE_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY, /**< Out of Memory */ - VCE_ERROR_IO_ERROR = TIZEN_ERROR_IO_ERROR, /**< I/O error */ - VCE_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER,/**< Invalid parameter */ - VCE_ERROR_OUT_OF_NETWORK = TIZEN_ERROR_NETWORK_DOWN, /**< Out of network */ - VCE_ERROR_RECORDER_BUSY = TIZEN_ERROR_RESOURCE_BUSY,/**< Busy resource */ - VCE_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED, /**< VC Engine NOT supported */ - VCE_ERROR_INVALID_STATE = TIZEN_ERROR_VOICE_CONTROL | 0x011, /**< Invalid state */ - VCE_ERROR_INVALID_LANGUAGE = TIZEN_ERROR_VOICE_CONTROL | 0x012, /**< Invalid language */ - VCE_ERROR_OPERATION_FAILED = TIZEN_ERROR_VOICE_CONTROL | 0x014, /**< Operation failed */ - VCE_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Permission denied */ - VCE_ERROR_NOT_SUPPORTED_FEATURE = TIZEN_ERROR_VOICE_CONTROL | 0x022, /**< Not supported feature of current engine */ + VCE_ERROR_NONE = TIZEN_ERROR_NONE, /**< Successful */ + VCE_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY, /**< Out of Memory */ + VCE_ERROR_IO_ERROR = TIZEN_ERROR_IO_ERROR, /**< I/O error */ + VCE_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */ + VCE_ERROR_OUT_OF_NETWORK = TIZEN_ERROR_NETWORK_DOWN, /**< Out of network */ + VCE_ERROR_RECORDER_BUSY = TIZEN_ERROR_RESOURCE_BUSY, /**< Busy resource */ + VCE_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED, /**< VC Engine NOT supported */ + VCE_ERROR_INVALID_STATE = TIZEN_ERROR_VOICE_CONTROL | 0x011, /**< Invalid state */ + VCE_ERROR_INVALID_LANGUAGE = TIZEN_ERROR_VOICE_CONTROL | 0x012, /**< Invalid language */ + VCE_ERROR_OPERATION_FAILED = TIZEN_ERROR_VOICE_CONTROL | 0x014, /**< Operation failed */ + VCE_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Permission denied */ + VCE_ERROR_NOT_SUPPORTED_FEATURE = TIZEN_ERROR_VOICE_CONTROL | 0x022, /**< Not supported feature of current engine */ VCE_ERROR_TTS_FAILED = TIZEN_ERROR_VOICE_CONTROL | 0x024 /**< TTS operation failed (Since 7.0) */ } vce_error_e; @@ -54,8 +54,8 @@ typedef enum { * @since_tizen @if MOBILE 4.0 @elseif WEARABLE 5.0 @endif */ typedef enum { - VCE_AUDIO_TYPE_PCM_S16_LE = 0, /**< Signed 16bit audio type, Little endian */ - VCE_AUDIO_TYPE_PCM_U8 /**< Unsigned 8bit audio type */ + VCE_AUDIO_TYPE_PCM_S16_LE = 0, /**< Signed 16bit audio type, Little endian */ + VCE_AUDIO_TYPE_PCM_U8 /**< Unsigned 8bit audio type */ } vce_audio_type_e; /** @@ -63,9 +63,9 @@ typedef enum { * @since_tizen @if MOBILE 4.0 @elseif WEARABLE 5.0 @endif */ typedef enum { - VCE_RESULT_EVENT_SUCCESS = 0, /**< Event when the recognition full result is ready */ - VCE_RESULT_EVENT_REJECTED, /**< Event when the recognition result is rejected */ - VCE_RESULT_EVENT_ERROR /**< Event when the recognition has failed */ + VCE_RESULT_EVENT_SUCCESS = 0, /**< Event when the recognition full result is ready */ + VCE_RESULT_EVENT_REJECTED, /**< Event when the recognition result is rejected */ + VCE_RESULT_EVENT_ERROR /**< Event when the recognition has failed */ } vce_result_event_e; /** @@ -73,13 +73,13 @@ typedef enum { * @since_tizen @if MOBILE 4.0 @elseif WEARABLE 5.0 @endif */ typedef enum { - VCE_COMMAND_FORMAT_FIXED = 0, /**< Fixed command */ - VCE_COMMAND_FORMAT_FIXED_AND_VFIXED, /**< Fixed command + variable-fixed command */ - VCE_COMMAND_FORMAT_VFIXED_AND_FIXED, /**< variable-fixed command + Fixed command */ - VCE_COMMAND_FORMAT_FIXED_AND_NONFIXED, /**< Fixed command + Non-fixed command */ - VCE_COMMAND_FORMAT_NONFIXED_AND_FIXED, /**< Non-fixed command + Fixed command */ - VCE_COMMAND_FORMAT_ACTION, /**< Action command */ - VCE_COMMAND_FORMAT_PARTIAL /**< Partial matched command */ + VCE_COMMAND_FORMAT_FIXED = 0, /**< Fixed command */ + VCE_COMMAND_FORMAT_FIXED_AND_VFIXED, /**< Fixed command + variable-fixed command */ + VCE_COMMAND_FORMAT_VFIXED_AND_FIXED, /**< variable-fixed command + Fixed command */ + VCE_COMMAND_FORMAT_FIXED_AND_NONFIXED, /**< Fixed command + Non-fixed command */ + VCE_COMMAND_FORMAT_NONFIXED_AND_FIXED, /**< Non-fixed command + Fixed command */ + VCE_COMMAND_FORMAT_ACTION, /**< Action command */ + VCE_COMMAND_FORMAT_PARTIAL /**< Partial matched command */ } vce_command_format_e; /** @@ -87,9 +87,9 @@ typedef enum { * @since_tizen @if MOBILE 4.0 @elseif WEARABLE 5.0 @endif */ typedef enum { - VCE_SPEECH_DETECT_NONE = 0, /**< No event */ - VCE_SPEECH_DETECT_BEGIN, /**< Begin of speech detected */ - VCE_SPEECH_DETECT_END, /**< End of speech detected */ + VCE_SPEECH_DETECT_NONE = 0, /**< No event */ + VCE_SPEECH_DETECT_BEGIN, /**< Begin of speech detected */ + VCE_SPEECH_DETECT_END, /**< End of speech detected */ } vce_speech_detect_e; /** @@ -97,9 +97,9 @@ typedef enum { * @since_tizen @if MOBILE 4.0 @elseif WEARABLE 5.0 @endif */ typedef enum { - VCE_ASR_RESULT_EVENT_FINAL_RESULT = 0, /**< Event when the ASR result is last data or ASR result is only one result */ - VCE_ASR_RESULT_EVENT_PARTIAL_RESULT, /**< Event when the ASR result exist, not first and not last */ - VCE_ASR_RESULT_EVENT_ERROR /**< Event when the ASR result is failed */ + VCE_ASR_RESULT_EVENT_FINAL_RESULT = 0, /**< Event when the ASR result is last data or ASR result is only one result */ + VCE_ASR_RESULT_EVENT_PARTIAL_RESULT, /**< Event when the ASR result exist, not first and not last */ + VCE_ASR_RESULT_EVENT_ERROR /**< Event when the ASR result is failed */ } vce_asr_result_event_e; /** @@ -107,8 +107,8 @@ typedef enum { * @since_tizen @if MOBILE 4.0 @elseif WEARABLE 5.0 @endif */ typedef enum { - VCE_AUDIO_CHANNEL_MONO = 0, /**< 1 channel, mono */ - VCE_AUDIO_CHANNEL_STEREO = 1 /**< 2 channels, stereo */ + VCE_AUDIO_CHANNEL_MONO = 0, /**< 1 channel, mono */ + VCE_AUDIO_CHANNEL_STEREO = 1 /**< 2 channels, stereo */ } vce_audio_channel_e; /** @@ -116,10 +116,10 @@ typedef enum { * @since_tizen @if MOBILE 4.0 @elseif WEARABLE 5.0 @endif */ typedef enum { - VCE_FEEDBACK_EVENT_FAIL = -1, /**< Failed */ - VCE_FEEDBACK_EVENT_START = 1, /**< Start event */ + VCE_FEEDBACK_EVENT_FAIL = -1, /**< Failed */ + VCE_FEEDBACK_EVENT_START = 1, /**< Start event */ VCE_FEEDBACK_EVENT_CONTINUE = 2, /**< Continue event */ - VCE_FEEDBACK_EVENT_FINISH = 3 /**< Finish event */ + VCE_FEEDBACK_EVENT_FINISH = 3 /**< Finish event */ } vce_feedback_event_e; /** -- 2.7.4 From 34bb1a4432861aecb23bf97615193c39a2b06629 Mon Sep 17 00:00:00 2001 From: Suyeon Hwang Date: Mon, 27 Dec 2021 17:35:37 +0900 Subject: [PATCH 05/16] Update version (1.65.6) Change-Id: Ief5c962460cf35e3396f347ab0aab79fc61a7b2d Signed-off-by: Suyeon Hwang --- CMakeLists.txt | 2 +- packaging/voice-control.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d997670..52965e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,7 @@ PROJECT(vc) SET(PREFIX ${CMAKE_INSTALL_PREFIX}) SET(EXEC_PREFIX "${PREFIX}") -SET(VERSION 1.65.5) +SET(VERSION 1.65.6) FIND_PROGRAM(UNAME NAMES uname) EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH") diff --git a/packaging/voice-control.spec b/packaging/voice-control.spec index 01b059c..cf89a50 100644 --- a/packaging/voice-control.spec +++ b/packaging/voice-control.spec @@ -1,6 +1,6 @@ Name: voice-control Summary: Voice control client library and daemon -Version: 1.65.5 +Version: 1.65.6 Release: 1 Group: Graphics & UI Framework/Voice Framework License: Apache-2.0 -- 2.7.4 From 6c2ab0d3c7a3b4a430c97cb60b9a84f25182dc24 Mon Sep 17 00:00:00 2001 From: Suyeon Hwang Date: Mon, 27 Dec 2021 18:14:39 +0900 Subject: [PATCH 06/16] Update version (1.70.0) Change-Id: I3ff2697cbbb06d9e2fc1dbaa7ab0b5bad473642a Signed-off-by: Suyeon Hwang --- CMakeLists.txt | 2 +- packaging/voice-control.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d997670..fe5746f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,7 @@ PROJECT(vc) SET(PREFIX ${CMAKE_INSTALL_PREFIX}) SET(EXEC_PREFIX "${PREFIX}") -SET(VERSION 1.65.5) +SET(VERSION 1.70.0) FIND_PROGRAM(UNAME NAMES uname) EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH") diff --git a/packaging/voice-control.spec b/packaging/voice-control.spec index 01b059c..b20f88d 100644 --- a/packaging/voice-control.spec +++ b/packaging/voice-control.spec @@ -1,6 +1,6 @@ Name: voice-control Summary: Voice control client library and daemon -Version: 1.65.5 +Version: 1.70.0 Release: 1 Group: Graphics & UI Framework/Voice Framework License: Apache-2.0 -- 2.7.4 From 5e91052bc28849cccbd94b1e6a5dad8d966e9c57 Mon Sep 17 00:00:00 2001 From: Suyeon Hwang Date: Thu, 6 Jan 2022 20:31:56 +0900 Subject: [PATCH 07/16] Get library name from vconf Current code tries to get full path of dependency module from vconf of system. This means that framework allows to use annonymous library which is installed on any location. However, this behavior might allow to access malicious code and this would become critical problem. To solve this issue, this patch fix that the code gets the file name of library from the vconf. By this patch, all dependency module libraries should be installed predetermined location. The location is read only directory, so malicious code can not be located. Change-Id: I5ab83609229a0fe84b152894b3935d586859c98a Signed-off-by: Suyeon Hwang --- server/dependency_audio_manager.cpp | 12 ++++++------ server/dependency_audio_manager.h | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/server/dependency_audio_manager.cpp b/server/dependency_audio_manager.cpp index 8e2f6b0..f10abaa 100644 --- a/server/dependency_audio_manager.cpp +++ b/server/dependency_audio_manager.cpp @@ -41,13 +41,13 @@ int dependency_audio_manager_initialize(sound_stream_info_h stream_info_h, depen const int FILEPATH_LEN = 512; char filepath[FILEPATH_LEN] = {'\0', }; - char *vconf_str = vconf_get_str(VCD_DEPENDENCY_MODULE_PATH); - if (vconf_str) { - snprintf(filepath, FILEPATH_LEN - 1, "%s", vconf_str); - free(vconf_str); + const char *module_directory_path = VCD_DEPENDENCY_MODULE_DIRECTORY_PATH; + char *module_library_name = vconf_get_str(VCD_DEPENDENCY_MODULE_NAME); + if (module_library_name) { + snprintf(filepath, FILEPATH_LEN - 1, "%s/%s", module_directory_path, module_library_name); + free(module_library_name); } else { - const char *default_path = VCD_DEPENDENCY_DEFAULT_PATH; - snprintf(filepath, FILEPATH_LEN - 1, "%s/%s", default_path, VCD_DEPENDENCY_DEFAULT_FILENAME); + snprintf(filepath, FILEPATH_LEN - 1, "%s/%s", module_directory_path, VCD_DEPENDENCY_DEFAULT_FILENAME); } filepath[FILEPATH_LEN - 1] = '\0'; diff --git a/server/dependency_audio_manager.h b/server/dependency_audio_manager.h index 9568379..073ebf4 100644 --- a/server/dependency_audio_manager.h +++ b/server/dependency_audio_manager.h @@ -30,13 +30,13 @@ extern "C" { /************************************************************************************** *** Definitions for dependencies *************************************************************************************/ -#define VCD_DEPENDENCY_DEFAULT_PATH tzplatform_mkpath(tzplatform_getid("TZ_SYS_RO_SHARE"), "voice/vc/1.0/dependency-audio-manager") +#define VCD_DEPENDENCY_MODULE_DIRECTORY_PATH tzplatform_mkpath(tzplatform_getid("TZ_SYS_RO_SHARE"), "voice/vc/1.0/dependency-audio-manager") #ifdef TV_PRODUCT #define VCD_DEPENDENCY_DEFAULT_FILENAME "libaudio-manager-vd.so" #else #define VCD_DEPENDENCY_DEFAULT_FILENAME "libvc-audio-manager.so" #endif -#define VCD_DEPENDENCY_MODULE_PATH "db/voice/vc/dependency_module_path" +#define VCD_DEPENDENCY_MODULE_NAME "db/voice/vc/dependency_module_name" typedef int (*dependency_audio_manager_feed_audio_data)(const void* data, const unsigned int length); -- 2.7.4 From af4b421226b0e7ce7636b5f381dd5ea46b1503b3 Mon Sep 17 00:00:00 2001 From: "wn.jang" Date: Thu, 20 Jan 2022 15:31:25 +0900 Subject: [PATCH 08/16] Coverage support for robot profile Change-Id: Ifc880b594a7183e62603ee6801c5bad6465e985b --- packaging/voice-control.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/voice-control.spec b/packaging/voice-control.spec index b20f88d..0c353c1 100644 --- a/packaging/voice-control.spec +++ b/packaging/voice-control.spec @@ -158,8 +158,8 @@ mv -f org.tizen.voice.vcserver.tv.service org.tizen.voice.vcserver.service %make_install %if 0%{?gcov:1} -mkdir -p %{buildroot}%{_datadir}/gcov/obj -install -m 0644 gcov-obj/* %{buildroot}%{_datadir}/gcov/obj +mkdir -p %{buildroot}%{_datadir}/gcov/obj/%{name} +install -m 0644 gcov-obj/* %{buildroot}%{_datadir}/gcov/obj/%{name} %endif %post -- 2.7.4 From e200b2403672623bd57eeb8942450df548494b16 Mon Sep 17 00:00:00 2001 From: "wn.jang" Date: Thu, 20 Jan 2022 16:33:20 +0900 Subject: [PATCH 09/16] Update version to 1.70.1 Change-Id: I9d3cf3d032bdf59657fbb54729707b5b325f2743 --- CMakeLists.txt | 2 +- packaging/voice-control.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fe5746f..1c57109 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,7 @@ PROJECT(vc) SET(PREFIX ${CMAKE_INSTALL_PREFIX}) SET(EXEC_PREFIX "${PREFIX}") -SET(VERSION 1.70.0) +SET(VERSION 1.70.1) FIND_PROGRAM(UNAME NAMES uname) EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH") diff --git a/packaging/voice-control.spec b/packaging/voice-control.spec index 0c353c1..3a6a5f2 100644 --- a/packaging/voice-control.spec +++ b/packaging/voice-control.spec @@ -1,6 +1,6 @@ Name: voice-control Summary: Voice control client library and daemon -Version: 1.70.0 +Version: 1.70.1 Release: 1 Group: Graphics & UI Framework/Voice Framework License: Apache-2.0 -- 2.7.4 From 877a5b40910fa1a85d23585cb3ef87fbfc1e7913 Mon Sep 17 00:00:00 2001 From: Suyeon Hwang Date: Fri, 7 Jan 2022 16:35:08 +0900 Subject: [PATCH 10/16] Call service state changed callback before state changed callback https://review.tizen.org/gerrit/c/platform/core/uifw/voice-control/+/223267 The patch of this link makes that service state changed callback is called asynchronously. This was because prepare process was handled on sub thread. In order to assure the callback calls on main thread, the patch seperated the code for calling service state changed callback and state changed callback. However, this change made client can not assure the value of service state because it was updated unknown timing. To solve this problem, this patch calls the service state changed callback before calling the state changed callback. Current code does not handle the prepare process on sub thread but on main thread. So, by this change, service state would be synchornously updated when the state changed callback is called. Change-Id: I276577fb494a93c8e4f58182c2e16a6ff88b7423 Signed-off-by: Suyeon Hwang --- client/vc_mgr.c | 20 +++++++++++++++++++- server/vcd_server.c | 12 ------------ 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/client/vc_mgr.c b/client/vc_mgr.c index 0c82dc8..9c07f62 100755 --- a/client/vc_mgr.c +++ b/client/vc_mgr.c @@ -457,6 +457,24 @@ static Eina_Bool __request_initialize(void *data) /* Success to connect */ } + /* Set service state */ + vc_service_state_e previous_service_state; + vc_mgr_client_get_service_state(g_vc_m, &previous_service_state); + vc_mgr_client_set_service_state(g_vc_m, (vc_service_state_e)service_state); + + vc_service_state_changed_cb service_changed_callback = NULL; + void* user_data = NULL; + vc_mgr_client_get_service_state_changed_cb(g_vc_m, &service_changed_callback, &user_data); + + if (NULL != service_changed_callback) { + vc_mgr_client_use_callback(g_vc_m); + service_changed_callback(previous_service_state, service_state, user_data); + vc_mgr_client_not_use_callback(g_vc_m); + SLOG(LOG_INFO, TAG_VCM, "Service state changed callback is called"); + } else { + SLOG(LOG_WARN, TAG_VCM, "[WARNING] Service state changed callback is null"); + } + /* Set foreground */ vc_mgr_client_set_foreground(g_vc_m, foreground, true); @@ -466,7 +484,7 @@ static Eina_Bool __request_initialize(void *data) vc_mgr_client_set_client_state(g_vc_m, VC_STATE_READY); vc_state_changed_cb changed_callback = NULL; - void* user_data = NULL; + user_data = NULL; vc_mgr_client_get_state_changed_cb(g_vc_m, &changed_callback, &user_data); vc_state_e current_state; diff --git a/server/vcd_server.c b/server/vcd_server.c index 81cbd50..faf41e5 100644 --- a/server/vcd_server.c +++ b/server/vcd_server.c @@ -1673,16 +1673,6 @@ int vcd_server_get_foreground() return pid; } -static Eina_Bool __vcd_send_service_state(void *data) -{ - vcd_config_set_service_state(VCD_STATE_READY); - vcdc_send_service_state(VCD_STATE_READY); - - SLOG(LOG_INFO, TAG_VCD, "[Server Success] success to send service status for READY"); - - return EINA_FALSE; -} - /* * API for manager */ @@ -1707,8 +1697,6 @@ int vcd_server_mgr_initialize(int pid, vcd_audio_streaming_mode_e mode) vcd_recorder_set_audio_streaming_mode(mode); - ecore_timer_add(0.05, __vcd_send_service_state, NULL); - SLOG(LOG_ERROR, TAG_VCD, "[Server Success] Manager initialize : pid(%d)", pid); return VCD_ERROR_NONE; -- 2.7.4 From 94c46f76d577b416f2351b093e4a26047f45aed7 Mon Sep 17 00:00:00 2001 From: "wn.jang" Date: Tue, 8 Feb 2022 14:24:43 +0900 Subject: [PATCH 11/16] Fix defects from static analysis tool Change-Id: I9cb797a9f2ab1ade83b2e752359fe906ede6c5f5 --- common/vc_cmd_db.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/common/vc_cmd_db.c b/common/vc_cmd_db.c index c5004ef..92df706 100644 --- a/common/vc_cmd_db.c +++ b/common/vc_cmd_db.c @@ -1498,8 +1498,9 @@ int __vc_db_open_db_for_daemon(char** path, sqlite3** db_handle) struct stat stat; int ret = db_util_open(*path, db_handle, DB_UTIL_REGISTER_HOOK_METHOD); if (ret != SQLITE_OK) { - SLOG(LOG_ERROR, vc_db_tag(), "[ERROR] Fail to open db, path = %s, ret %d: %s", *path, ret, sqlite3_errmsg(*db_handle)); + SLOG(LOG_ERROR, vc_db_tag(), "[ERROR] Fail to open db, path = %s, ret(%d)", *path, ret); if (*db_handle) { + SLOG(LOG_ERROR, vc_db_tag(), "[ERROR] Error msg (%s)", sqlite3_errmsg(*db_handle)); db_util_close(*db_handle); *db_handle = NULL; } @@ -1760,8 +1761,9 @@ int __vc_db_open_db(char** path, sqlite3** db_handle) { int ret = db_util_open(*path, db_handle, DB_UTIL_REGISTER_HOOK_METHOD); if (ret != SQLITE_OK) { - SLOG(LOG_ERROR, vc_db_tag(), "[ERROR] Fail to open db for daemon, path = %s, ret %d: %s", *path, ret, sqlite3_errmsg(*db_handle)); + SLOG(LOG_ERROR, vc_db_tag(), "[ERROR] Fail to open db for daemon, path = %s, ret(%d)", *path, ret); if (*db_handle) { + SLOG(LOG_ERROR, vc_db_tag(), "[ERROR] Error msg (%s)", sqlite3_errmsg(*db_handle)); db_util_close(*db_handle); *db_handle = NULL; } -- 2.7.4 From 04a6827ff78dc29bb196df46f7d1fdf706697566 Mon Sep 17 00:00:00 2001 From: "wn.jang" Date: Tue, 8 Feb 2022 14:56:05 +0900 Subject: [PATCH 12/16] Update version to 1.70.2 Change-Id: I6a3f5cd4bf2065da5f832aad153ebf4eb5a7b247 --- CMakeLists.txt | 2 +- packaging/voice-control.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c57109..def351d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,7 @@ PROJECT(vc) SET(PREFIX ${CMAKE_INSTALL_PREFIX}) SET(EXEC_PREFIX "${PREFIX}") -SET(VERSION 1.70.1) +SET(VERSION 1.70.2) FIND_PROGRAM(UNAME NAMES uname) EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH") diff --git a/packaging/voice-control.spec b/packaging/voice-control.spec index 3a6a5f2..714e679 100644 --- a/packaging/voice-control.spec +++ b/packaging/voice-control.spec @@ -1,6 +1,6 @@ Name: voice-control Summary: Voice control client library and daemon -Version: 1.70.1 +Version: 1.70.2 Release: 1 Group: Graphics & UI Framework/Voice Framework License: Apache-2.0 -- 2.7.4 From 00abf454fae1e0da4b428537949111c632d755b4 Mon Sep 17 00:00:00 2001 From: sooyeon Date: Thu, 24 Feb 2022 00:19:48 +0900 Subject: [PATCH 13/16] Fix svace issue (PASSED_TO_PROC_AFTER_RELEASE) Change-Id: I5278c5197e3298fb4fdd933eb5972d8c3e6dc5f7 Signed-off-by: sooyeon --- common/vc_cmd_db.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/vc_cmd_db.c b/common/vc_cmd_db.c index 92df706..54c1df0 100644 --- a/common/vc_cmd_db.c +++ b/common/vc_cmd_db.c @@ -1499,7 +1499,7 @@ int __vc_db_open_db_for_daemon(char** path, sqlite3** db_handle) int ret = db_util_open(*path, db_handle, DB_UTIL_REGISTER_HOOK_METHOD); if (ret != SQLITE_OK) { SLOG(LOG_ERROR, vc_db_tag(), "[ERROR] Fail to open db, path = %s, ret(%d)", *path, ret); - if (*db_handle) { + if (db_handle && *db_handle) { SLOG(LOG_ERROR, vc_db_tag(), "[ERROR] Error msg (%s)", sqlite3_errmsg(*db_handle)); db_util_close(*db_handle); *db_handle = NULL; @@ -1762,7 +1762,7 @@ int __vc_db_open_db(char** path, sqlite3** db_handle) int ret = db_util_open(*path, db_handle, DB_UTIL_REGISTER_HOOK_METHOD); if (ret != SQLITE_OK) { SLOG(LOG_ERROR, vc_db_tag(), "[ERROR] Fail to open db for daemon, path = %s, ret(%d)", *path, ret); - if (*db_handle) { + if (db_handle && *db_handle) { SLOG(LOG_ERROR, vc_db_tag(), "[ERROR] Error msg (%s)", sqlite3_errmsg(*db_handle)); db_util_close(*db_handle); *db_handle = NULL; -- 2.7.4 From f90031768c89c5511eb437f3e91573a26abc4445 Mon Sep 17 00:00:00 2001 From: sooyeon Date: Thu, 24 Feb 2022 19:10:46 +0900 Subject: [PATCH 14/16] Update version (1.70.3) Change-Id: Ie8ba2b7c8d416de1662759984565737a5541bb9a Signed-off-by: sooyeon --- CMakeLists.txt | 2 +- packaging/voice-control.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index def351d..d72a322 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,7 @@ PROJECT(vc) SET(PREFIX ${CMAKE_INSTALL_PREFIX}) SET(EXEC_PREFIX "${PREFIX}") -SET(VERSION 1.70.2) +SET(VERSION 1.70.3) FIND_PROGRAM(UNAME NAMES uname) EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH") diff --git a/packaging/voice-control.spec b/packaging/voice-control.spec index 714e679..9c5e914 100644 --- a/packaging/voice-control.spec +++ b/packaging/voice-control.spec @@ -1,6 +1,6 @@ Name: voice-control Summary: Voice control client library and daemon -Version: 1.70.2 +Version: 1.70.3 Release: 1 Group: Graphics & UI Framework/Voice Framework License: Apache-2.0 -- 2.7.4 From 0f45e773e855163998050d3956dcb19903159cab Mon Sep 17 00:00:00 2001 From: "wn.jang" Date: Mon, 7 Mar 2022 12:12:27 +0900 Subject: [PATCH 15/16] Remove unused codes UpdateEvent has never used until now. But this should be supported for notifying update state. Therefore, I leave a TODO comment. Change-Id: I4ef0ea99785b51c23cf9c93363d93a65c67ca0a5 --- server/vce.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/server/vce.c b/server/vce.c index 5d71383..fae0fbb 100644 --- a/server/vce.c +++ b/server/vce.c @@ -384,16 +384,17 @@ int vce_set_private_data(const char* key, const char* data) return VCE_ERROR_INVALID_PARAMETER; } - if (!strncmp(key, "UpdateEventStart", strlen(key))) - ret = vce_send_update_status(VCE_UPDATE_EVENT_START, NULL); - else if (!strncmp(data, "UpdateEventComplete", strlen(key))) - ret = vce_send_update_status(VCE_UPDATE_EVENT_FINISH, NULL); - else if (!strncmp(data, "UpdateEventFail", strlen(key))) - ret = vce_send_update_status(VCE_UPDATE_EVENT_FAIL, data); - if (0 != ret) { - SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to send update status, event(%s), msg(%s): ret(%d)", key, data, ret); - return ret; - } + // TODO: Shoud be added updateEvent to client, need to ACR for update state. + // if (!strncmp(key, "UpdateEventStart", strlen(key))) + // ret = vce_send_update_status(VCE_UPDATE_EVENT_START, NULL); + // else if (!strncmp(key, "UpdateEventComplete", strlen(key))) + // ret = vce_send_update_status(VCE_UPDATE_EVENT_FINISH, NULL); + // else if (!strncmp(key, "UpdateEventFail", strlen(key))) + // ret = vce_send_update_status(VCE_UPDATE_EVENT_FAIL, data); + // if (0 != ret) { + // SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to send update status, event(%s), msg(%s): ret(%d)", key, data, ret); + // return ret; + // } ret = vcd_set_private_data(key, data); if (0 != ret) { -- 2.7.4 From a71829021ac0a28bc51c6ae1d9fbf996d3956c57 Mon Sep 17 00:00:00 2001 From: Suyeon Hwang Date: Mon, 14 Mar 2022 11:25:06 +0900 Subject: [PATCH 16/16] Add error into the description of vce_send_error() Change-Id: I64f455f0433459508d6016f16806fc9b296626ca Signed-off-by: Suyeon Hwang --- include/vce.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/vce.h b/include/vce.h index e700059..1b16529 100644 --- a/include/vce.h +++ b/include/vce.h @@ -877,7 +877,8 @@ int vce_send_specific_engine_result(const char* engine_app_id, const char* event * #VCE_ERROR_INVALID_LANGUAGE, \n * #VCE_ERROR_OPERATION_FAILED, \n * #VCE_ERROR_PERMISSION_DENIED, \n - * #VCE_ERROR_NOT_SUPPORTED_FEATURE. + * #VCE_ERROR_NOT_SUPPORTED_FEATURE \n + * #VCE_ERROR_TTS_FAILED. * @since_tizen @if MOBILE 4.0 @elseif WEARABLE 5.0 @endif * @param[in] error Error type * @param[in] msg Error message -- 2.7.4