]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_speech: Add a type conversion, and new engine unregister methods
authorKevin Harwell <kharwell@sangoma.com>
Thu, 21 Oct 2021 17:49:44 +0000 (12:49 -0500)
committerFriendly Automation <jenkins2@gerrit.asterisk.org>
Fri, 22 Oct 2021 13:14:59 +0000 (08:14 -0500)
Add a new function that converts a speech results type to a string.
Also add another function to unregister an engine, but returns a
pointer to the unregistered engine object instead of a success/fail
integer.

Change-Id: I0f7de17cb411021c09fb03988bc2b904e1380192

include/asterisk/speech.h
res/res_speech.c

index 7af7e998de768b3482f31430d314d96cf3f9ce87..681c536019c1f67f031d3f9d8f1be96e1849503f 100644 (file)
@@ -47,6 +47,9 @@ enum ast_speech_results_type {
        AST_SPEECH_RESULTS_TYPE_NBEST,
 };
 
+/*! \brief Convert a speech results type to a string */
+const char *ast_speech_results_type_to_string(enum ast_speech_results_type type);
+
 /* Speech structure */
 struct ast_speech {
        /*! Structure lock */
@@ -152,6 +155,9 @@ int ast_speech_change_state(struct ast_speech *speech, int state);
 int ast_speech_register(struct ast_speech_engine *engine);
 /*! \brief Unregister a speech recognition engine */
 int ast_speech_unregister(const char *engine_name);
+/*! \brief Unregister a speech recognition engine */
+struct ast_speech_engine *ast_speech_unregister2(const char *engine_name);
+
 
 #if defined(__cplusplus) || defined(c_plusplus)
 }
index 57f6fa61e9a8cf42a5a2f367bde28b19547857be..d425fde181abbf802a1dbfa4dd0a9fa8a48a9443 100644 (file)
@@ -280,6 +280,19 @@ int ast_speech_change_state(struct ast_speech *speech, int state)
        return res;
 }
 
+const char *ast_speech_results_type_to_string(enum ast_speech_results_type type)
+{
+       switch (type) {
+       case AST_SPEECH_RESULTS_TYPE_NORMAL:
+               return "normal";
+       case AST_SPEECH_RESULTS_TYPE_NBEST:
+               return "nbest";
+       default:
+               ast_assert(0);
+               return "unknown";
+       }
+}
+
 /*! \brief Change the type of results we want */
 int ast_speech_change_results_type(struct ast_speech *speech, enum ast_speech_results_type results_type)
 {
@@ -321,12 +334,17 @@ int ast_speech_register(struct ast_speech_engine *engine)
 
 /*! \brief Unregister a speech recognition engine */
 int ast_speech_unregister(const char *engine_name)
+{
+       return ast_speech_unregister2(engine_name) == NULL ? -1 : 0;
+}
+
+struct ast_speech_engine *ast_speech_unregister2(const char *engine_name)
 {
        struct ast_speech_engine *engine = NULL;
-       int res = -1;
 
-       if (ast_strlen_zero(engine_name))
-               return -1;
+       if (ast_strlen_zero(engine_name)) {
+               return NULL;
+       }
 
        AST_RWLIST_WRLOCK(&engines);
        AST_RWLIST_TRAVERSE_SAFE_BEGIN(&engines, engine, list) {
@@ -339,14 +357,13 @@ int ast_speech_unregister(const char *engine_name)
                        }
                        ast_verb(2, "Unregistered speech recognition engine '%s'\n", engine_name);
                        /* All went well */
-                       res = 0;
                        break;
                }
        }
        AST_RWLIST_TRAVERSE_SAFE_END;
        AST_RWLIST_UNLOCK(&engines);
 
-       return res;
+       return engine;
 }
 
 static int unload_module(void)