Merged revisions 77831 via svnmerge from
authorJoshua Colp <jcolp@digium.com>
Tue, 31 Jul 2007 16:21:34 +0000 (16:21 +0000)
committerJoshua Colp <jcolp@digium.com>
Tue, 31 Jul 2007 16:21:34 +0000 (16:21 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r77831 | file | 2007-07-31 13:17:09 -0300 (Tue, 31 Jul 2007) | 2 lines

Add a flag to the speech API that allows an engine to set whether it received results or not.

........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77833 65c4cc65-6c06-0410-ace0-fbb531ad65f3

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

index 02d056f..e040629 100644 (file)
@@ -29,8 +29,9 @@ extern "C" {
 
 /* Speech structure flags */
 enum ast_speech_flags {
-       AST_SPEECH_QUIET = (1 << 0), /* Quiet down output... they are talking */
-       AST_SPEECH_SPOKE = (1 << 1), /* Speaker spoke! */
+       AST_SPEECH_QUIET = (1 << 0),        /* Quiet down output... they are talking */
+       AST_SPEECH_SPOKE = (1 << 1),        /* Speaker spoke! */
+       AST_SPEECH_HAVE_RESULTS = (1 << 2), /* Results are present */
 };
 
 /* Speech structure states - in order of expected change */
index cf83034..ed815b6 100644 (file)
@@ -92,7 +92,7 @@ int ast_speech_grammar_unload(struct ast_speech *speech, char *grammar_name)
 /*! \brief Return the results of a recognition from the speech structure */
 struct ast_speech_result *ast_speech_results_get(struct ast_speech *speech)
 {
-       return (speech->engine->get ? speech->engine->get(speech) : NULL);
+       return ((speech->engine->get && ast_test_flag(speech, AST_SPEECH_HAVE_RESULTS)) ? speech->engine->get(speech) : NULL);
 }
 
 /*! \brief Free a list of results */
@@ -128,6 +128,7 @@ void ast_speech_start(struct ast_speech *speech)
        /* Clear any flags that may affect things */
        ast_clear_flag(speech, AST_SPEECH_SPOKE);
        ast_clear_flag(speech, AST_SPEECH_QUIET);
+       ast_clear_flag(speech, AST_SPEECH_HAVE_RESULTS);
 
        /* If results are on the structure, free them since we are starting again */
        if (speech->results) {