/*
-* Copyright (c) 2011-2014 Samsung Electronics Co., Ltd All Rights Reserved
+* Copyright (c) 2011-2016 Samsung Electronics Co., Ltd All Rights Reserved
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
case STTP_ERROR_OUT_OF_MEMORY: return "STTP_ERROR_OUT_OF_MEMORY";
case STTP_ERROR_IO_ERROR: return "STTP_ERROR_IO_ERROR";
case STTP_ERROR_INVALID_PARAMETER: return "STTP_ERROR_INVALID_PARAMETER";
+ case STTP_ERROR_TIMED_OUT: return "STTP_ERROR_TIMED_OUT";
+ case STTP_ERROR_RECORDER_BUSY: return "STTP_ERROR_RECORDER_BUSY";
case STTP_ERROR_OUT_OF_NETWORK: return "STTP_ERROR_OUT_OF_NETWORK";
+ case STTP_ERROR_PERMISSION_DENIED: return "STTP_ERROR_PERMISSION_DENIED";
+ case STTP_ERROR_NOT_SUPPORTED: return "STTP_ERROR_NOT_SUPPORTED";
case STTP_ERROR_INVALID_STATE: return "STTP_ERROR_INVALID_STATE";
case STTP_ERROR_INVALID_LANGUAGE: return "STTP_ERROR_INVALID_LANGUAGE";
+ case STTP_ERROR_ENGINE_NOT_FOUND: return "STTP_ERROR_ENGINE_NOT_FOUND";
case STTP_ERROR_OPERATION_FAILED: return "STTP_ERROR_OPERATION_FAILED";
case STTP_ERROR_NOT_SUPPORTED_FEATURE: return "STTP_ERROR_NOT_SUPPORTED_FEATURE";
default:
free(engine->pdfuncs);
free(engine->engine_path);
free(engine);
- return STTP_ERROR_OPERATION_FAILED;
+ return ret;
}
/* engine error check */
return STTP_ERROR_OPERATION_FAILED;
}
- SECURE_SLOG(LOG_DEBUG, stt_tag(), "[Engine Success] Load engine : version(%d), size(%d)", engine->pefuncs->version, engine->pefuncs->size);
+ SLOG(LOG_DEBUG, stt_tag(), "[Engine Success] Load engine : version(%d), size(%d)", engine->pefuncs->version, engine->pefuncs->size);
g_engine_list = g_slist_append(g_engine_list, engine);
ret = engine->pefuncs->initialize(result_cb, silence_cb);
if (0 != ret) {
SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to initialize : %s", __stt_get_engine_error_code(ret));
- return STTP_ERROR_OPERATION_FAILED;
}
- return 0;
+ return ret;
}
int stt_engine_deinitialize(int engine_id)
SLOG(LOG_WARN, stt_tag(), "[Engine WARNING] Fail to deinitialize : %s", __stt_get_engine_error_code(ret));
}
- return 0;
+ return ret;
}
static bool __supported_language_cb(const char* language, void* user_data)
ret = engine->pefuncs->foreach_langs(__supported_language_cb, (void*)lang_list);
if (0 != ret) {
SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] get language list error : %s", __stt_get_engine_error_code(ret));
- return STTP_ERROR_OPERATION_FAILED;
}
- return 0;
+ return ret;
}
int stt_engine_is_valid_language(int engine_id, const char* language, bool *is_valid)
return 0;
}
+int stt_engine_set_private_data(int engine_id, const char* key, const char* data)
+{
+ if (NULL == key || NULL == data) {
+ SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Invalid Parameter");
+ return STTP_ERROR_INVALID_PARAMETER;
+ }
+
+ sttengine_s* engine = NULL;
+ engine = __get_engine(engine_id);
+ if (NULL == engine) {
+ SECURE_SLOG(LOG_WARN, stt_tag(), "[Engine WARNING] engine id(%d) is invalid", engine_id);
+ return STTP_ERROR_INVALID_PARAMETER;
+ }
+
+ int ret = engine->pefuncs->set_private_data(key, data);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to set private data(%d)", ret);
+ }
+ return ret;
+}
+
+int stt_engine_get_private_data(int engine_id, const char* key, char** data)
+{
+ if (NULL == key || NULL == data) {
+ SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Invalid Parameter");
+ return STTP_ERROR_INVALID_PARAMETER;
+ }
+
+ sttengine_s* engine = NULL;
+ engine = __get_engine(engine_id);
+ if (NULL == engine) {
+ SECURE_SLOG(LOG_WARN, stt_tag(), "[Engine WARNING] engine id(%d) is invalid", engine_id);
+ return STTP_ERROR_INVALID_PARAMETER;
+ }
+
+ char* temp = NULL;
+ int ret = engine->pefuncs->get_private_data(key, &temp);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to get private data(%d)", ret);
+ return ret;
+ }
+
+ *data = strdup(temp);
+
+ return STTP_ERROR_NONE;
+}
+
int stt_engine_get_first_language(int engine_id, char** language)
{
if (NULL == language) {
ret = engine->pefuncs->foreach_langs(__supported_language_cb, &lang_list);
if (0 != ret) {
SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] get language list error : %s", __stt_get_engine_error_code(ret));
- return STTP_ERROR_OPERATION_FAILED;
+ return ret;
}
GSList *iter = NULL;
return 0;
}
+
+int stt_engine_need_app_credential(int engine_id, bool* need)
+{
+ if (NULL == need) {
+ SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Invalid Parameter");
+ return STTP_ERROR_INVALID_PARAMETER;
+ }
+
+ sttengine_s* engine = NULL;
+ engine = __get_engine(engine_id);
+ if (NULL == engine) {
+ SECURE_SLOG(LOG_WARN, stt_tag(), "[Engine WARNING] engine id(%d) is invalid", engine_id);
+ return STTP_ERROR_INVALID_PARAMETER;
+ }
+
+ bool result;
+ if (NULL != engine->pefuncs->need_app_credential) {
+ result = engine->pefuncs->need_app_credential();
+ *need = result;
+ return STTP_ERROR_NONE;
+ }
+
+ return STTP_ERROR_OPERATION_FAILED;
+}
+
int stt_engine_support_recognition_type(int engine_id, const char* type, bool* support)
{
if (NULL == type || NULL == support) {
ret = engine->pefuncs->get_audio_format(types, rate, channels);
if (0 != ret) {
SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to get audio format : %s", __stt_get_engine_error_code(ret));
- return STTP_ERROR_OPERATION_FAILED;
}
- return 0;
+ return ret;
}
/* Set option */
return STTP_ERROR_NOT_SUPPORTED_FEATURE;
} else if (0 != ret) {
SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to set silence detection : %d", ret);
- return STTP_ERROR_OPERATION_FAILED;
}
- return 0;
+ return ret;
}
int stt_engine_check_app_agreed(int engine_id, const char* appid, bool* value)
if (0 != ret) {
SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to get app agreement : %s", __stt_get_engine_error_code(ret));
*value = false;
- return STTP_ERROR_OPERATION_FAILED;
}
- return 0;
+ return ret;
}
/* Recognition */
-int stt_engine_recognize_start(int engine_id, const char* lang, const char* recognition_type, void* user_param)
+int stt_engine_recognize_start(int engine_id, const char* lang, const char* recognition_type, const char* credential, void* user_param)
{
if (NULL == lang || NULL == recognition_type) {
SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Invalid Parameter");
return STTP_ERROR_INVALID_PARAMETER;
}
- int ret = engine->pefuncs->start(lang, recognition_type, user_param);
+ int ret = engine->pefuncs->start(lang, recognition_type, credential, user_param);
if (0 != ret) {
SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to start recognition : %s", __stt_get_engine_error_code(ret));
- return STTP_ERROR_OPERATION_FAILED;
+ SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to start recognition : lang(%s), recognition_type(%s), credential(%s)", lang, recognition_type, credential);
}
- return 0;
+ return ret;
}
int stt_engine_set_recording_data(int engine_id, const void* data, unsigned int length)
int ret = engine->pefuncs->set_recording(data, length);
if (0 != ret) {
SLOG(LOG_WARN, stt_tag(), "[Engine WARNING] Fail to set recording : %s", __stt_get_engine_error_code(ret));
- return STTP_ERROR_OPERATION_FAILED;
}
- return 0;
+ return ret;
}
int stt_engine_recognize_stop(int engine_id)
int ret = engine->pefuncs->stop();
if (0 != ret) {
SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to stop : %s", __stt_get_engine_error_code(ret));
- return STTP_ERROR_OPERATION_FAILED;
}
- return 0;
+ return ret;
}
int stt_engine_recognize_cancel(int engine_id)
int ret = engine->pefuncs->cancel();
if (0 != ret) {
SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to cancel : %s", __stt_get_engine_error_code(ret));
- return STTP_ERROR_OPERATION_FAILED;
}
- return 0;
+ return ret;
}
int stt_engine_foreach_result_time(int engine_id, void* time_info, sttpe_result_time_cb callback, void* user_data)
int ret = engine->pefuncs->foreach_result_time(time_info, callback, user_data);
if (0 != ret) {
SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to foreach result time : %s", __stt_get_engine_error_code(ret));
- return STTP_ERROR_OPERATION_FAILED;
}
- return 0;
+ return ret;
}
int stt_engine_recognize_start_file(int engine_id, const char* lang, const char* recognition_type,
int ret = engine->pefuncs->start_file(lang, recognition_type, filepath, audio_type, sample_rate, user_param);
if (0 != ret) {
SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to start file recognition : %s", __stt_get_engine_error_code(ret));
- return STTP_ERROR_OPERATION_FAILED;
}
- return 0;
+ return ret;
}
int stt_engine_recognize_cancel_file(int engine_id)
int ret = engine->pefuncs->cancel_file();
if (0 != ret) {
SLOG(LOG_ERROR, stt_tag(), "[Engine ERROR] Fail to start file recognition : %s", __stt_get_engine_error_code(ret));
- return STTP_ERROR_OPERATION_FAILED;
}
- return 0;
-}
\ No newline at end of file
+ return ret;
+}