/*
-* Copyright (c) 2011 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
{
stt_client_s *client = NULL;
- client = (stt_client_s*)g_malloc0 (sizeof(stt_client_s));
+ client = (stt_client_s*)calloc(1, sizeof(stt_client_s));
+ if (NULL == client) {
+ SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Fail to allocate memory"); //LCOV_EXCL_LINE
+ return STT_ERROR_OUT_OF_MEMORY;
+ }
- stt_h temp = (stt_h)g_malloc0(sizeof(stt_h));
- temp->handle = __client_generate_uid(getpid());
+ stt_h temp = (stt_h)calloc(1, sizeof(struct stt_s));
+ if (NULL == temp) {
+ SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Fail to allocate memory"); //LCOV_EXCL_LINE
+ free(client);
+ return STT_ERROR_OUT_OF_MEMORY;
+ }
+ temp->handle = __client_generate_uid(getpid());
/* initialize client data */
client->stt = temp;
- client->pid = getpid();
+ client->pid = getpid();
client->uid = temp->handle;
-
- client->result_cb = NULL;
- client->result_user_data = NULL;
- client->partial_result_cb = NULL;
- client->partial_result_user_data = NULL;
+
+ client->recognition_result_cb = NULL;
+ client->recognition_result_user_data = NULL;
client->state_changed_cb = NULL;
client->state_changed_user_data = NULL;
client->error_cb = NULL;
client->error_user_data = NULL;
+ client->default_lang_changed_cb = NULL;
+ client->default_lang_changed_user_data = NULL;
+ client->speech_status_cb = NULL;
+ client->speech_status_user_data = NULL;
+
+ client->current_engine_id = NULL;
+ client->credential = NULL;
- client->profanity = STT_OPTION_PROFANITY_AUTO;
- client->punctuation = STT_OPTION_PUNCTUATION_AUTO;
+ client->silence_supported = false;
client->silence = STT_OPTION_SILENCE_DETECTION_AUTO;
- client->current_state = STT_STATE_READY;
+ client->event = 0;
+ client->data_list = NULL;
+ client->data_count = 0;
+ client->msg = NULL;
+
+ client->reason = 0;
+ client->err_msg = NULL;
+
+ client->before_state = STT_STATE_CREATED;
+ client->current_state = STT_STATE_CREATED;
+
+ client->internal_state = STT_INTERNAL_STATE_NONE;
+
+ client->speech_status = -1;
client->cb_ref_count = 0;
+ client->internal = false;
+
g_client_list = g_list_append(g_client_list, client);
*stt = temp;
- return 0;
+ return 0;
}
int stt_client_destroy(stt_h stt)
{
if (stt == NULL) {
- SLOG(LOG_ERROR, TAG_STTC, "Input parameter is NULL");
+ SLOG(LOG_ERROR, TAG_STTC, "Input parameter is NULL"); //LCOV_EXCL_LINE
return 0;
- }
+ }
GList *iter = NULL;
stt_client_s *data = NULL;
if (stt->handle == data->stt->handle) {
g_client_list = g_list_remove_link(g_client_list, iter);
- while (0 != data->cb_ref_count)
- {
+ while (0 != data->cb_ref_count) {
/* wait for release callback function */
}
+
+ if (NULL != data->current_engine_id) {
+ free(data->current_engine_id);
+ }
+
+ if (NULL != data->err_msg) {
+ free(data->err_msg);
+ data->err_msg = NULL;
+ }
+
+ if (NULL != data->credential) {
+ free(data->credential);
+ data->credential = NULL;
+ }
+
free(data);
free(stt);
+ data = NULL;
+ stt = NULL;
return 0;
}
}
}
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] client Not founded");
+ SLOG(LOG_ERROR, TAG_STTC, "[ERROR] client Not founded"); //LCOV_EXCL_LINE
return -1;
}
stt_client_s* stt_client_get(stt_h stt)
{
- if (stt == NULL) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Input parameter is NULL");
+ if (NULL == stt) {
+ SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Input parameter is NULL"); //LCOV_EXCL_LINE
return NULL;
}
while (NULL != iter) {
data = iter->data;
-
- if (stt->handle == data->stt->handle)
- return data;
-
+ if (NULL != data) {
+ if (stt->handle == data->stt->handle)
+ return data;
+ }
/* Next item */
iter = g_list_next(iter);
}
stt_client_s* stt_client_get_by_uid(const int uid)
{
if (uid < 0) {
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] out of range : handle");
+ SLOG(LOG_ERROR, TAG_STTC, "[ERROR] out of range : handle"); //LCOV_EXCL_LINE
return NULL;
}
}
}
- SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Fail to get client by uid");
+ SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Fail to get client by uid"); //LCOV_EXCL_LINE
return NULL;
}
return 0;
}
+int stt_client_get_use_callback(stt_client_s* client)
+{
+ return client->cb_ref_count;
+}
-
+GList* stt_client_get_client_list()
+{
+ return g_client_list;
+}