diff options
author | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-08-13 14:55:17 +0000 |
---|---|---|
committer | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-08-13 14:55:17 +0000 |
commit | 4d6bda544523a6cb54de18ef53e7b29221e38872 (patch) | |
tree | 2810c964517b037514971a0a21d590826a7ab348 | |
parent | f31ea6a834bb6aaf57aa46fef9fcaa336baf746e (diff) |
Merged revisions 79207 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r79207 | file | 2007-08-13 11:51:09 -0300 (Mon, 13 Aug 2007) | 2 lines
Add an API call to allow the engine to know that DTMF was received.
........
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@79208 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | apps/app_speech_utils.c | 1 | ||||
-rw-r--r-- | include/asterisk/speech.h | 4 | ||||
-rw-r--r-- | res/res_speech.c | 15 |
3 files changed, 20 insertions, 0 deletions
diff --git a/apps/app_speech_utils.c b/apps/app_speech_utils.c index 13aa709b6..df2fe468a 100644 --- a/apps/app_speech_utils.c +++ b/apps/app_speech_utils.c @@ -662,6 +662,7 @@ static int speech_background(struct ast_channel *chan, void *data) /* Free the frame we received */ switch (f->frametype) { case AST_FRAME_DTMF: + ast_speech_dtmf(speech, f->subclass); if (dtmf_terminator != '\0' && f->subclass == dtmf_terminator) { done = 1; } else { diff --git a/include/asterisk/speech.h b/include/asterisk/speech.h index e040629d4..e4d0c76d5 100644 --- a/include/asterisk/speech.h +++ b/include/asterisk/speech.h @@ -87,6 +87,8 @@ struct ast_speech_engine { int (*deactivate)(struct ast_speech *speech, char *grammar_name); /*! Write audio to the speech engine */ int (*write)(struct ast_speech *speech, void *data, int len); + /*! Signal DTMF was received */ + int (*dtmf)(struct ast_speech *speech, char dtmf); /*! Prepare engine to accept audio */ int (*start)(struct ast_speech *speech); /*! Change an engine specific setting */ @@ -134,6 +136,8 @@ struct ast_speech *ast_speech_new(char *engine_name, int formats); int ast_speech_destroy(struct ast_speech *speech); /*! \brief Write audio to the speech engine */ int ast_speech_write(struct ast_speech *speech, void *data, int len); +/*! \brief Signal to the engine that DTMF was received */ +int ast_speech_dtmf(struct ast_speech *speech, char dtmf); /*! \brief Change an engine specific attribute */ int ast_speech_change(struct ast_speech *speech, char *name, const char *value); /*! \brief Change the type of results we want */ diff --git a/res/res_speech.c b/res/res_speech.c index ed815b6ec..82614a50a 100644 --- a/res/res_speech.c +++ b/res/res_speech.c @@ -153,6 +153,21 @@ int ast_speech_write(struct ast_speech *speech, void *data, int len) return speech->engine->write(speech, data, len); } +/*! \brief Signal to the engine that DTMF was received */ +int ast_speech_dtmf(struct ast_speech *speech, char dtmf) +{ + int res = 0; + + if (speech->state != AST_SPEECH_STATE_READY) + return -1; + + if (speech->engine->dtmf != NULL) { + res = speech->engine->dtmf(speech, dtmf); + } + + return res; +} + /*! \brief Change an engine specific attribute */ int ast_speech_change(struct ast_speech *speech, char *name, const char *value) { |