Add internal method to get speech status info
[platform/core/uifw/stt.git] / server / sttd_server.c
index aaee986..d2f0bf2 100644 (file)
@@ -179,7 +179,7 @@ void __cancel_by_no_record(void *data)
        return;
 }
 
-void __server_recognition_result_callback(stte_result_event_e event, const char* type,
+int __server_recognition_result_callback(stte_result_event_e event, const char* type,
                                        const char** data, int data_count, const char* msg, void *user_data)
 {
        // critical section
@@ -196,7 +196,7 @@ void __server_recognition_result_callback(stte_result_event_e event, const char*
                SLOG(LOG_DEBUG, TAG_STTD, "=====");
                SLOG(LOG_DEBUG, TAG_STTD, "  ");
                pthread_mutex_unlock(&stte_result_mutex);
-               return;
+               return STTD_ERROR_OPERATION_FAILED;
        }
 
        SLOG(LOG_DEBUG, TAG_STTD, "[Server] uid (%d), event(%d)", uid, event);
@@ -217,6 +217,9 @@ void __server_recognition_result_callback(stte_result_event_e event, const char*
                sttd_config_time_save();
                sttd_config_time_reset();
 
+               sttd_client_set_state(uid, APP_STATE_READY);
+               stt_client_unset_current_recognition();
+
                if (NULL == data || 0 == data_count) {
                        if (0 != sttdc_send_result(uid, event, NULL, 0, msg)) {
                                SLOG(LOG_ERROR, TAG_STTD, "[Server ERROR] Fail to send result");
@@ -238,8 +241,8 @@ void __server_recognition_result_callback(stte_result_event_e event, const char*
                }
 
                /* change state of uid */
-               sttd_client_set_state(uid, APP_STATE_READY);
-               stt_client_unset_current_recognition();
+//             sttd_client_set_state(uid, APP_STATE_READY);
+//             stt_client_unset_current_recognition();
 
        } else if (STTE_RESULT_EVENT_PARTIAL_RESULT == event) {
                SLOG(LOG_DEBUG, TAG_STTD, "[Server] The partial result from engine is event[%d] data_count[%d]", event,  data_count);
@@ -266,6 +269,9 @@ void __server_recognition_result_callback(stte_result_event_e event, const char*
                }
                sttd_config_time_reset();
 
+               sttd_client_set_state(uid, APP_STATE_READY);
+               stt_client_unset_current_recognition();
+
                if (0 != sttdc_send_result(uid, event, NULL, 0, msg)) {
                        SLOG(LOG_ERROR, TAG_STTD, "[Server ERROR] Fail to send result ");
 
@@ -277,8 +283,8 @@ void __server_recognition_result_callback(stte_result_event_e event, const char*
                }
 
                /* change state of uid */
-               sttd_client_set_state(uid, APP_STATE_READY);
-               stt_client_unset_current_recognition();
+//             sttd_client_set_state(uid, APP_STATE_READY);
+//             stt_client_unset_current_recognition();
        } else {
                /* nothing */
        }
@@ -287,7 +293,7 @@ void __server_recognition_result_callback(stte_result_event_e event, const char*
        SLOG(LOG_DEBUG, TAG_STTD, "  ");
        pthread_mutex_unlock(&stte_result_mutex);
 
-       return;
+       return STTD_ERROR_NONE;
 }
 
 bool __server_result_time_callback(int index, stte_result_time_event_e event, const char* text, long start_time, long end_time, void* user_data)
@@ -310,7 +316,7 @@ bool __server_result_time_callback(int index, stte_result_time_event_e event, co
        return true;
 }
 
-void __server_speech_status_callback(stte_speech_status_e status, void *user_param)
+int __server_speech_status_callback(stte_speech_status_e status, void *user_param)
 {
        SLOG(LOG_DEBUG, TAG_STTD, "===== Speech status detected Callback");
 
@@ -319,16 +325,17 @@ void __server_speech_status_callback(stte_speech_status_e status, void *user_par
                app_state_e state;
                if (0 != sttd_client_get_state(uid, &state)) {
                        SLOG(LOG_ERROR, TAG_STTD, "[Server ERROR] uid is not valid ");
-                       return;
+                       return STTD_ERROR_OPERATION_FAILED;
                }
 
                if (APP_STATE_RECORDING != state) {
                        SLOG(LOG_ERROR, TAG_STTD, "[Server ERROR] Current state is not recording");
-                       return;
+                       return STTD_ERROR_INVALID_STATE;
                }
 
                if (STTE_SPEECH_STATUS_BEGINNING_POINT_DETECTED == status) {
                        SLOG(LOG_DEBUG, TAG_STTD, "Begin Speech detected");
+                       sttdc_send_speech_status(uid, status);
                } else if (STTE_SPEECH_STATUS_END_POINT_DETECTED == status) {
                        SLOG(LOG_DEBUG, TAG_STTD, "End Speech detected");
                        ecore_main_loop_thread_safe_call_async(__stop_by_silence, NULL);
@@ -340,13 +347,13 @@ void __server_speech_status_callback(stte_speech_status_e status, void *user_par
        SLOG(LOG_DEBUG, TAG_STTD, "=====");
        SLOG(LOG_DEBUG, TAG_STTD, "  ");
 
-       return;
+       return STTD_ERROR_NONE;
 }
 
-void __server_error_callback(stte_error_e error, const char* msg)
+int __server_error_callback(stte_error_e error, const char* msg)
 {
        SLOG(LOG_DEBUG, TAG_STTD, "[Server] Error Callback is called");
-       return;
+       return STTD_ERROR_NONE;
 }
 
 void __sttd_server_engine_changed_cb(const char* engine_id, const char* language, bool support_silence, bool need_credential, void* user_data)