vc_mgr_client_use_callback(g_vc_m);
callback(pid, disp_text, utt_text, continuous, user_data);
vc_mgr_client_not_use_callback(g_vc_m);
- SLOG(LOG_DEBUG, TAG_VCM, "Dialog callback is called");
+ SLOG(LOG_DEBUG, TAG_VCM, "Dialog callback is called, disp_text(%s), utt)text(%s), continous(%d)", disp_text, utt_text, continuous);
} else {
SLOG(LOG_WARN, TAG_VCM, "[WARNING] Error callback is null");
}
DBUS_TYPE_INT32, &tmp_continue,
DBUS_TYPE_INVALID);
+ if (!strcmp(disp_text, "#NULL"))
+ disp_text = NULL;
+ if (!strcmp(utt_text, "#NULL"))
+ utt_text = NULL;
+
__vc_mgr_cb_dialog(pid, disp_text, utt_text, (bool)tmp_continue);
SLOG(LOG_DEBUG, TAG_VCM, "=====");
typedef void (*vcpe_asr_result_cb)(vcp_asr_result_event_e event, const char* asr_result, void *user_data);
/**
+* @brief Called when the daemon gets nlg result.
+*
+* @param[in] nlg_result Nlg result
+* @param[in] user_data The user data passed from the start
+*/
+typedef void (*vcpe_nlg_result_cb)(const char* nlg_result, void *user_data);
+
+/**
* @brief Called when the daemon gets error.
*
* @param[in] error Error type
*/
typedef int (*vcpe_set_asr_result_cb)(vcpe_asr_result_cb callback, void* user_data);
+/**
+* @brief Registers a callback function for getting nlg result.
+*
+* @param[in] callback Callback function to register
+* @param[in] user_data The user data to be passed to the callback function
+*
+* @return 0 on success, otherwise a negative error value
+*
+*/
+typedef int (*vcpe_set_nlg_result_cb)(vcpe_nlg_result_cb, void* user_data);
+
#if 0
/**
* @brief Registers a callback function for getting partial recognition result.
//vcpe_set_pre_result_cb set_pre_result_cb; /**< Set pre result callback */
vcpe_set_asr_result_cb set_asr_result_cb; /**< Set asr result callback */
+ vcpe_set_nlg_result_cb set_nlg_result_cb; /**< Set nlg result callback */
vcpe_set_error_cb set_error_cb; /**< Set error callback */
vcpe_set_domain set_domain; /**< Set domain */
vcpe_get_nlu_base_info get_nlu_base_info; /**< Get essential info */
SLOG(LOG_DEBUG, TAG_VCD, "[Dbus] send dialog : pid(%d), disp_text(%s), utt_text(%s), continue(%d)", pid, disp_text, utt_text, continuous);
+ if (NULL == disp_text)
+ disp_text = strdup("#NULL");
+ if (NULL == utt_text)
+ utt_text = strdup("#NULL");
+
dbus_message_append_args(msg,
DBUS_TYPE_INT32, &pid,
DBUS_TYPE_STRING, &disp_text,
static result_callback g_result_cb = NULL;
static asr_result_callback g_asr_result_cb = NULL;
+static nlg_result_callback g_nlg_result_cb = NULL;
#if 0
static pre_result_callback g_pre_result_cb = NULL;
* VCS Engine Agent Interfaces
*/
//int vcd_engine_agent_init(pre_result_callback pre_result_cb, result_callback result_cb, nlu_result_callback nlu_result_cb, error_callback error_cb)
-int vcd_engine_agent_init(asr_result_callback asr_result_cb, result_callback result_cb, error_callback error_cb)
+int vcd_engine_agent_init(asr_result_callback asr_result_cb, result_callback result_cb, nlg_result_callback nlg_result_cb, error_callback error_cb)
{
if (/*NULL == pre_result_cb*/ NULL == asr_result_cb || NULL == result_cb /*|| NULL == nlu_result_cb*/ || NULL == error_cb) {
SLOG(LOG_ERROR, TAG_VCD, "[Engine Agent ERROR] Input parameter is NULL");
//g_pre_result_cb = pre_result_cb;
g_asr_result_cb = asr_result_cb;
+ g_nlg_result_cb = nlg_result_cb;
g_result_cb = result_cb;
//g_nlu_result_cb = nlu_result_cb;
g_error_cb = error_cb;
//g_pre_result_cb = NULL;
g_asr_result_cb = NULL;
+ g_nlg_result_cb = NULL;
g_result_cb = NULL;
//g_nlu_result_cb = NULL;
g_error_cb = NULL;
return;
}
+void __nlg_result_cb(const char* nlg_result, void *user_data)
+{
+ SLOG(LOG_DEBUG, TAG_VCD, "[Engine Agent] NLG result - Result(%s)", nlg_result);
+
+ if (NULL != g_nlg_result_cb) {
+ g_nlg_result_cb(nlg_result, user_data);
+ } else {
+ SLOG(LOG_DEBUG, TAG_VCD, "[Engine Agent ERROR] NLG result callback function is NOT valid");
+ }
+
+ return;
+}
+
void __error_cb(vcp_error_e error, const char* msg, void *user_data)
{
SLOG(LOG_ERROR, TAG_VCD, "[Engine Agent] ERROR(%d)", error);
return VCD_ERROR_OPERATION_FAILED;
}
- SLOG(LOG_DEBUG, TAG_VCD, "[Engine Agent] engine info : version(%d), size(%d)", engine->pefuncs->version, engine->pefuncs->size);
+ SLOG(LOG_DEBUG, TAG_VCD, "[Engine Agent] engine info : version(%d), size(%d)(%d)", engine->pefuncs->version, engine->pefuncs->size, sizeof(vcpe_funcs_s));
/* engine error check */
if (engine->pefuncs->size != sizeof(vcpe_funcs_s)) {
NULL == engine->pefuncs->stop ||
NULL == engine->pefuncs->cancel ||
NULL == engine->pefuncs->set_asr_result_cb ||
+ NULL == engine->pefuncs->set_nlg_result_cb ||
//NULL == engine->pefuncs->set_pre_result_cb ||
NULL == engine->pefuncs->set_error_cb ||
NULL == engine->pefuncs->set_domain ||
return VCD_ERROR_OPERATION_FAILED;
}
+ if (0 != engine->pefuncs->set_nlg_result_cb(__nlg_result_cb, NULL)) {
+ SLOG(LOG_ERROR, TAG_VCD, "[Engine Agent ERROR] Fail to set nlg result callback of vc-engine");
+ return VCD_ERROR_OPERATION_FAILED;
+ }
+
if (0 != engine->pefuncs->set_error_cb(__error_cb, NULL)) {
SLOG(LOG_ERROR, TAG_VCD, "[Engine Agent ERROR] Fail to set error callback of vc-engine");
return VCD_ERROR_OPERATION_FAILED;
typedef void (*asr_result_callback)(vcp_asr_result_event_e event, const char* asr_result, void *user_data);
+typedef void (*nlg_result_callback)(const char* nlg_result, void *user_data);
+
#if 0
typedef void (*pre_result_callback)(vcp_pre_result_event_e event, const char* pre_result, void *user_data);
/** Init engine agent */
//int vcd_engine_agent_init(pre_result_callback pre_result_cb, result_callback result_cb, nlu_result_callback nlu_result_cb, error_callback error_cb);
-int vcd_engine_agent_init(asr_result_callback asr_result_cb, result_callback result_cb, error_callback error_cb);
+int vcd_engine_agent_init(asr_result_callback asr_result_cb, result_callback result_cb, nlg_result_callback nlg_result_cb, error_callback error_cb);
/** Release engine agent */
int vcd_engine_agent_release();
VCD_SEND_EVENT_TYPE_HAPTIC_EVENT /**< send haptic event to vc engine */
} vcd_send_event_type_e;
+static int __vcd_server_launch_manager_app();
+
/*
* VC Server Internal Functions
*/
return;
}
+static void __vcd_server_nlg_result_cb(const char* nlg_result, void *user_data)
+{
+ int ret = __vcd_server_launch_manager_app();
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Fail to send dialog : mgr_pid(%d), nlg_result(%s)", vcd_client_manager_get_pid(), nlg_result);
+ return;
+ }
+
+ ret = vcdc_send_dialog(vcd_client_manager_get_pid(), -1, nlg_result, NULL, 0); //0: VC_DIALOG_END
+ if (0 != ret)
+ SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Fail to send dialog : mgr_pid(%d), nlg_result(%s)", vcd_client_manager_get_pid(), nlg_result);
+ return;
+}
+
static void* __recorder_stop(void *data)
{
vcd_recorder_stop();
vcd_config_set_service_state(VCD_STATE_NONE);
//ret = vcd_engine_agent_init(__vcd_server_pre_result_cb, __vcd_server_result_cb, __vcd_server_nlu_result_cb, __vcd_server_error_cb);
- ret = vcd_engine_agent_init(__vcd_server_asr_result_cb, __vcd_server_result_cb, __vcd_server_error_cb);
+ ret = vcd_engine_agent_init(__vcd_server_asr_result_cb, __vcd_server_result_cb, __vcd_server_nlg_result_cb, __vcd_server_error_cb);
if (0 != ret) {
SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Fail to engine agent initialize : result(%d)", ret);
return ret;