14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*---------------------------------------------------------------------------*
24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  SRecTestAudio.c  *
34a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
44a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Copyright 2007, 2008 Nuance Communciations, Inc.                               *
54a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
64a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the 'License');          *
74a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  you may not use this file except in compliance with the License.         *
84a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
94a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  You may obtain a copy of the License at                                  *
104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0                           *
114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software      *
134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  distributed under the License is distributed on an 'AS IS' BASIS,        *
144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  See the License for the specific language governing permissions and      *
164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  limitations under the License.                                           *
174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *---------------------------------------------------------------------------*/
194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef _WIN32
224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  #include <windows.h>
234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  #include <mmsystem.h>
244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  #include "signal.h"
254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  #include "direct.h"
264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "passert.h"
294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "ESR_CommandLine.h"
304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "ESR_Session.h"
314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "LCHAR.h"
324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "PFile.h"
334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "PFileSystem.h"
344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "PANSIFileSystem.h"
354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project//#include "PMemoryFileSystem.h"
364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "plog.h"
374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "pmemory.h"
384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "ptypes.h"
394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "string.h"
404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "stdio.h"
414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "stdlib.h"
424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if defined(APP_ENABLE_TIMER)
434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "ptimer.h"
444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "SR_Grammar.h"
464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "SR_Recognizer.h"
474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "SR_RecognizerResult.h"
484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "SR_Session.h"
494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "SR_Vocabulary.h"
504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "SR_AcousticState.h"
514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "SR_Nametag.h"
524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "PStackSize.h"
534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef ACCURACY_TESTING
554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "SR_GrammarImpl.h"
564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "SR_SemanticProcessorImpl.h"
574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "audioin.h"
604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "srec_test_config.h"
614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project//Define this in makefile
634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project//#define _DEBUGHEAP
644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if defined(_DEBUGHEAP) && defined(_DEBUG) && defined(WIN32)
674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <crtdbg.h>
684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define SREC_TEST_DEFAULT_AUDIO_FREQUENCY       11025
724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LOG_BUFFER_SIZE                         512
734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define MAX_AUDIO_BUFFER_SIZE                   2048
744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define DEFAULT_AUDIO_BUFFER_SIZE               256
754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define MAX_LINE_LENGTH                         255
764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define TRANSCRIPTION_SIZE                      512
774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define MAX_SCORE_LENGTH                        5
784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define MAX_NUM_REC_CONTEXTS                    4
794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef PFILE_VIRTUAL_SUPPORT
824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  extern const FileRecord pFileRecTable[];
834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  extern const unsigned char pFileStart0[];
844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif /* #ifdef PFILE_VIRTUAL_SUPPORT */
854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef enum
874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SENTENCE_BEGIN,
894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SENTENCE_BEGIN_BRACKET_BEGIN,
904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SENTENCE_BEGIN_BRACKET_END,
914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SENTENCE_MIDDLE,
924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SENTENCE_MIDDLE_BRACKET_BEGIN,
934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SENTENCE_MIDDLE_BRACKET_END,
944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SENTENCE_MIDDLE_WITH_SPACE
954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    } SENTENCE_CLEANING_STATES;
964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef enum
1004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
1014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ForcedRecModeNotSet = -1,
1024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ForcedRecModeOff=0,
1034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ForcedRecModeOneTime,
1044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ForcedRecModeOn
1054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    } ForcedRecMode;
1064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef enum
1094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
1104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ERROR_LEVEL_CRITICAL = 0,
1114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ERROR_LEVEL_HIGH,
1124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ERROR_LEVEL_MODERATE,
1134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ERROR_LEVEL_LOW
1144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    } SREC_TEST_ERROR_LEVELS;
1154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct
1184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
1194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR       grammar_path [P_PATH_MAX];      /* File path of the grammar. */
1204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR       grammarID [P_PATH_MAX];         /* ID of the grammar. */
1214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR       ruleName  [P_PATH_MAX];         /* rule name of the grammar. */
1224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SR_Grammar* grammar;                        /* grammar. */
1234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_BOOL        is_ve_grammar;                  /* Is voice-enrollment grammar or not */
1244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    } APPL_GRAMMAR_DATA;
1254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct ApplicationData_t
1284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
1294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int                         argc;           /* The number of command-line arguments. */
1304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR                       **argv;         /* The command-line argument values. */
1314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    PFile                       *outputLog;     /* Output log. */
1324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_Locale                  locale;         /* Current application locale. */
1334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SR_Recognizer               *recognizer;    /* The current recognizer. */
1344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SR_RecognizerResult         *result;        /* The last recognition result. */
1354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SR_Vocabulary               *vocabulary;    /* The current vocabulary. */
1364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SR_Nametag                  *nametag;       /* The nametag generated by the last recognition. */
1374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SR_Nametags                 *nametags;      /* The active nametag collection. */
1384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    APPL_GRAMMAR_DATA           grammars [MAX_NUM_REC_CONTEXTS];        /* Grammar data */
1394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int                         grammarCount;   /* The number of grammars. */
1404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int                         active_grammar_num;     /* The index number of the active grammar. */
1414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    const asr_int16_t                 *raw_waveform;  /*Points to raw waveform returned from voice enrollment */
1424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    size_t                      raw_waveform_size;  /* Size of above wave_form */
1434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    asr_int16_t                 audio_buffer [MAX_AUDIO_BUFFER_SIZE];
1444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    unsigned int                audio_buffer_requested_size;
1454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    unsigned int                num_samples_read;
1464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR                       raw_waveform_filename [P_PATH_MAX];     /* Name of file of saved waveform data. */
1474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    PFile                       *raw_waveform_file;     /* Pointer to file of saved waveform data. */
1484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR                       transcription [MAX_LINE_LENGTH];
1494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ForcedRecMode               forced_rec_mode;
1504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    } ApplicationData;
1514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int      srec_test_get_run_params ( unsigned int *num_shutdown_loops, unsigned int *num_continuous_run_loops );
1554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int      srec_test_init_application_data ( ApplicationData *applicationData, int arg_count, LCHAR *arg_vals [] );
1564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int      srec_test_init_file_system ( int arg_count, LCHAR *arg_vals [] );
1574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int      srec_test_init_logging_system ( int arg_count, LCHAR *arg_vals [], PLogger *logger );
1584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int      srec_test_init_memory_system ( unsigned int srec_test_heap_size );
1594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int      srec_test_init_system ( unsigned int srec_test_heap_size, PLogger* logger, int arg_count,
1604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                        LCHAR *arg_vals [], AUDIOIN_H *audio_input_handle );
1614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int      srec_test_run_test_execute ( ApplicationData *applicationData, AUDIOIN_H audio_input_handle );
1624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int      srec_test_run_test_init ( ApplicationData *applicationData );
1634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int      srec_test_run_test ( ApplicationData *applicationData, AUDIOIN_H audio_input_handle );
1644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int      srec_test_shutdown_file_system ( void );
1654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int      srec_test_shutdown_logging_system ( PLogger *logger );
1664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int      srec_test_shutdown_memory_system ( void );
1674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int      srec_test_recognize_live ( SR_Grammar *active_grammar, ApplicationData *data, AUDIOIN_H audio_input_handle,
1684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                           FILE *results_file, size_t *recognition_count );
1694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic void     srec_test_log_recognition_failure ( ApplicationData *data );
1704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic ESR_BOOL interrupted = ESR_FALSE;
1744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* static ESR_BOOL no_enroll = ESR_FALSE;      //BJP */
1764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint signal_handler_SIGINT(int v)
1784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{
1794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  interrupted = ESR_TRUE;
1804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  return 0;
1814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
1824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode myDSMCallback(LCHAR* functionName, LCHAR** argv, size_t argc, void* value, LCHAR* result, size_t* resultSize)
1864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{
1874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  LCHAR* meaning;
1884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  PLOG_DBG_TRACE((L("myDSMCallback(%s) invoked\n"), functionName));
1904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  if ((LSTRCMP(functionName, "myDSMCallback")!=0) || (argc > 1))
1914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  {
1924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    /* Unsupported semantic function */
1934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ESR_INVALID_STATE;
1944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  }
1954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if (argc > 0)
1964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                meaning = argv[0];
1974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
1984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                meaning = L("");
1994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  lstrtrim(meaning);
2004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  LSTRLWR(meaning);
2014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  if (LISDIGIT(*meaning))
2034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
2044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                /* Penalize meaning starting with "<digit>" */
2054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if (*resultSize < LSTRLEN(L("1000"))+1)
2064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
2074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project      *resultSize = LSTRLEN(L("1000"))+1;
2084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project      return ESR_BUFFER_OVERFLOW;
2094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
2104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LSTRCPY(result, "1000");
2114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    *resultSize = LSTRLEN(L("1000"))+1;
2124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ESR_SUCCESS;
2134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
2144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  if (*resultSize < LSTRLEN(L("0"))+1)
2154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  {
2164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    *resultSize = LSTRLEN(L("0"))+1;
2174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ESR_BUFFER_OVERFLOW;
2184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  }
2194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  LSTRCPY(result, "0");
2204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  *resultSize = LSTRLEN(L("0"))+1;
2214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  return ESR_SUCCESS;
2224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
2234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid srec_test_log_error ( unsigned int error_id, SREC_TEST_ERROR_LEVELS error_level, LCHAR *error_text )
2274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
2284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    switch ( error_level )
2304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
2314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        case ERROR_LEVEL_CRITICAL:
2324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            LPRINTF ( "Critical Level Error %s\n", error_text );
2334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            break;
2344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        case ERROR_LEVEL_HIGH:
2364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            LPRINTF ( "High Level Error %s\n", error_text );
2374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            break;
2384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        case ERROR_LEVEL_MODERATE:
2404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            LPRINTF ( "Moderate Level Error %s\n", error_text );
2414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            break;
2424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        case ERROR_LEVEL_LOW:
2444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            LPRINTF ( "Low Level Error %s\n", error_text );
2454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            break;
2464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        default:
2484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            LPRINTF ( "Unknown Level Error %d  :  %s\n", error_level, error_text );
2494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            break;
2504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
2514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
2524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid srec_test_delete_grammar ( ApplicationData *data, int grammar_num )
2564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
2574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR log_buffer[LOG_BUFFER_SIZE];
2584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( grammar_num < data->grammarCount )
2604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
2614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( ( data->grammarCount - grammar_num ) > 1 )
2624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
2634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            memmove ( &data->grammars [grammar_num], &data->grammars [data->grammarCount - 1],
2644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                      ( data->grammarCount - grammar_num - 1 ) * sizeof ( APPL_GRAMMAR_DATA ) );
2654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( grammar_num > data->active_grammar_num )
2664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                data->active_grammar_num--;
2674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
2684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        data->grammarCount--;
2694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
2704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
2714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
2724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        LSPRINTF ( log_buffer, L("Internal Error Grammar TableCorrupt : Grammar %d Does Not Exist"), grammar_num );
2734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        srec_test_log_error ( 0, ERROR_LEVEL_CRITICAL, log_buffer );
2744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
2754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
2764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic void srec_test_get_active_grammar ( ApplicationData *data, SR_Grammar **active_grammar )
2804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
2814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( data->active_grammar_num >= 0 )
2834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        *active_grammar = data->grammars [data->active_grammar_num].grammar;
2844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
2854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        *active_grammar = NULL;
2864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
2874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic void srec_test_get_active_grammar_data ( ApplicationData *data, APPL_GRAMMAR_DATA **active_grammar_data )
2914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
2924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( data->active_grammar_num >= 0 )
2944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        *active_grammar_data = &data->grammars [data->active_grammar_num];
2954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
2964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        *active_grammar_data = NULL;
2974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
2984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic ESR_BOOL srec_test_get_grammar_from_id ( ApplicationData *data, char *grammar_id,
3024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                            int *grammar_index, ESR_BOOL *is_active, ESR_BOOL *is_ve_grammar )
3034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
3044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_BOOL            found_grammar;
3054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             grammar_counter;
3064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    found_grammar = ESR_FALSE;
3084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    grammar_counter = 0;
3094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    while ( ( found_grammar == ESR_FALSE ) && ( grammar_counter < data->grammarCount ) )
3114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
3124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( strcmp ( grammar_id, data->grammars [grammar_counter].grammarID ) == 0 )
3134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
3144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            *grammar_index = grammar_counter;
3154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            *is_ve_grammar = data->grammars [grammar_counter].is_ve_grammar;
3164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( grammar_counter == data->active_grammar_num )
3184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                *is_active = ESR_TRUE;
3194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            else
3204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                *is_active = ESR_FALSE;
3214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            found_grammar = ESR_TRUE;
3224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
3234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
3244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
3254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            grammar_counter++;
3264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
3274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
3284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( found_grammar );
3294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
3304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_get_empty_grammar_index ( ApplicationData *data, unsigned int *grammar_index )
3344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
3354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int get_status;
3364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( data->grammarCount < MAX_NUM_REC_CONTEXTS )
3384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
3394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        get_status = 0;
3404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        *grammar_index = data->grammarCount;
3414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
3424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
3434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
3444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        get_status = -1;
3454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
3464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( get_status );
3474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
3484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ShutdownSession ( void )
3524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
3534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode    shutdown_status;
3544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    shutdown_status = SR_SessionDestroy ( );
3564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( shutdown_status );
3584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
3594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode InitSession ( int argc, char** argv )
3634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
3644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode    init_status;
3654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR             path[P_PATH_MAX];
3664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    size_t            len;
3674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    len = P_PATH_MAX;
3694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    init_status = ESR_CommandLineGetValue ( argc, (const char **)argv, L("parfile"), path, &len );
3704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( init_status == ESR_SUCCESS )
3724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
3734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        init_status = SR_SessionCreate ( path );
3744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( init_status == ESR_SUCCESS )
3764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
3774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /* Command-line options always override PAR file options */
3784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            init_status = ESR_SessionImportCommandLine ( argc, argv );
3794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( init_status != ESR_SUCCESS )
3814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
3824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                SR_SessionDestroy ( );
3834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                /* Log Here */
3844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
3854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
3864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
3874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
3884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
3894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
3904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
3914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
3924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
3934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        srec_test_log_error ( 0, ERROR_LEVEL_CRITICAL, L("Parfile Nmae Not Specified on Command Line") );
3944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
3954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( init_status );
3964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
3974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ShutdownGrammarUnload ( ApplicationData *data, unsigned int grammar_num )
4014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
4024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  shutdown_status;
4034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    shutdown_status = SR_GrammarDestroy ( data->grammars [grammar_num].grammar );
4054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( shutdown_status );
4074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
4084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode SetupGrammarLoad ( ApplicationData *data, unsigned int grammar_num )
4124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
4134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  setup_status;
4144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    setup_status = SR_GrammarLoad (data->grammars [grammar_num].grammar_path, &data->grammars [grammar_num].grammar );
4164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( setup_status == ESR_SUCCESS )
4184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
4194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        setup_status = SR_GrammarSetupVocabulary ( data->grammars [grammar_num].grammar, data->vocabulary );
4204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( setup_status == ESR_SUCCESS )
4224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
4234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            // setup_status = SR_GrammarSetupModels ( data->grammars [grammar_num].grammar, data->models );
4244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            setup_status = SR_GrammarSetupRecognizer( data->grammars [grammar_num].grammar, data->recognizer );
4254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( setup_status == ESR_SUCCESS )
4274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
4284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                setup_status = SR_GrammarSetDispatchFunction ( data->grammars [grammar_num].grammar, L("myDSMCallback"), NULL, myDSMCallback );
4294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( setup_status != ESR_SUCCESS )
4314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    SR_GrammarDestroy ( data->grammars [grammar_num].grammar );
4324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
4334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            else
4344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
4354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                SR_GrammarDestroy ( data->grammars [grammar_num].grammar );
4364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
4374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
4384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
4394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
4404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            SR_GrammarDestroy ( data->grammars [grammar_num].grammar );
4414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
4424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
4434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( setup_status );
4444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
4454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode SetupGrammarActivate ( ApplicationData *data, unsigned int grammar_num )
4494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
4504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  setup_status;
4514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project	setup_status = SR_RecognizerActivateRule ( data->recognizer, data->grammars [grammar_num].grammar, data->grammars [grammar_num].ruleName, 1 );
4534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( setup_status );
4544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
4554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef ACCURACY_TESTING
4594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode srec_test_parse (SR_Grammar *grammar, const LCHAR* trans, LCHAR* meaning, size_t *len);
4604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
4614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
4634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Parses source string and copies the first whitespace-delimited token into destination.
4644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
4654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param source Source string to parse
4664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param target Target string to copy into
4674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param charsRead [in] Size of target buffer.
4684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                  [out] Number of characters read up to end of token.
4694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                  If the return code is ESR_BUFFER_OVERFLOW, the required length is
4704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                  returned in this variable.
4714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
4724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint getFirstToken(LCHAR* source, LCHAR* target, size_t* charsRead)
4734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{
4744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  LCHAR* beginning = source;
4754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  LCHAR* ending;
4764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /* Skip whitespace */
4784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  for (; *beginning!=L('\0') && LISSPACE(*beginning); ++beginning);
4794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  if (*beginning==L('\0'))
4804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( -1 ); /* invalid command syntax */
4814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /* Find next whitespace */
4824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  for (ending=beginning; *ending!=L('\0') && !LISSPACE(*ending); ++ending);
4834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  if ((size_t) (ending-beginning) > *charsRead)
4844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  {
4854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    *charsRead = ending-beginning;
4864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( -1 );
4874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  }
4884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  *charsRead = ending-source;
4894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  LSTRNCPY(target, beginning, ending-beginning);
4904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  target[ending-beginning] = L('\0');
4914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  return ( 0 );
4924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
4934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_get_five_command_items ( LCHAR *command_start, size_t first_max_command_size, LCHAR *first_command,
4974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                       size_t second_max_command_size, LCHAR *second_command,
4984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                       size_t third_max_command_size, LCHAR *third_command,
4994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                       size_t fourth_max_command_size, LCHAR *fourth_command,
5004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                       size_t fifth_max_command_size, LCHAR *fifth_command,
5014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                       size_t *actual_commands, LCHAR **command_end )
5024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
5034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int get_status;
5044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
5054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    get_status = getFirstToken ( command_start, first_command, &first_max_command_size );
5064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
5074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( get_status == ESR_SUCCESS )
5084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
5094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        get_status = getFirstToken ( command_start + first_max_command_size, second_command, &second_max_command_size );
5104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
5114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( get_status == ESR_SUCCESS )
5124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
5134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            get_status = getFirstToken ( command_start + first_max_command_size + second_max_command_size,
5144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                         third_command, &third_max_command_size );
5154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( get_status == ESR_SUCCESS )
5164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
5174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                get_status = getFirstToken ( command_start + first_max_command_size + second_max_command_size + third_max_command_size,
5184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                             fourth_command, &fourth_max_command_size );
5194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( get_status == ESR_SUCCESS )
5204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
5214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    get_status = getFirstToken ( command_start + first_max_command_size + second_max_command_size + third_max_command_size + fourth_max_command_size,
5224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                                 fifth_command, &fifth_max_command_size );
5234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    if ( get_status == ESR_SUCCESS )
5244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
5254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        if ( command_end != NULL )
5264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            *command_end = command_start + first_max_command_size + second_max_command_size + third_max_command_size + fourth_max_command_size + fifth_max_command_size;
5274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        if ( actual_commands != NULL )
5284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            *actual_commands = 5;
5294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
5304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    else
5314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
5324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        if ( command_end != NULL )
5334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            *command_end = command_start + first_max_command_size + second_max_command_size + third_max_command_size + fourth_max_command_size;
5344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        if ( actual_commands != NULL )
5354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            *actual_commands = 4;
5364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
5374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
5384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                else
5394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
5404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    if ( command_end != NULL )
5414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *command_end = command_start + first_max_command_size + second_max_command_size + third_max_command_size;
5424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    if ( actual_commands != NULL )
5434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *actual_commands = 3;
5444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
5454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
5464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            else
5474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
5484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( command_end != NULL )
5494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    *command_end = command_start + first_max_command_size + second_max_command_size;
5504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( actual_commands != NULL )
5514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    *actual_commands = 2;
5524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
5534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
5544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
5554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
5564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( command_end != NULL )
5574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                *command_end = command_start + first_max_command_size;
5584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( actual_commands != NULL )
5594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                *actual_commands = 1;
5604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
5614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
5624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
5634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
5644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( command_end != NULL )
5654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            *command_end = command_start;
5664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( actual_commands != NULL )
5674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            *actual_commands = 0;
5684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
5694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( get_status );
5704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
5714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
5724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
5734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
5744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_get_four_command_items ( LCHAR *command_start, size_t first_max_command_size, LCHAR *first_command,
5754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                       size_t second_max_command_size, LCHAR *second_command,
5764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                       size_t third_max_command_size, LCHAR *third_command,
5774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                       size_t fourth_max_command_size, LCHAR *fourth_command,
5784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                       size_t *actual_commands, LCHAR **command_end )
5794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
5804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int get_status;
5814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
5824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    get_status = getFirstToken ( command_start, first_command, &first_max_command_size );
5834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
5844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( get_status == ESR_SUCCESS )
5854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
5864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        get_status = getFirstToken ( command_start + first_max_command_size, second_command, &second_max_command_size );
5874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
5884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( get_status == ESR_SUCCESS )
5894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
5904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            get_status = getFirstToken ( command_start + first_max_command_size + second_max_command_size,
5914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                         third_command, &third_max_command_size );
5924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( get_status == ESR_SUCCESS )
5934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
5944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                get_status = getFirstToken ( command_start + first_max_command_size + second_max_command_size + third_max_command_size,
5954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                             fourth_command, &fourth_max_command_size );
5964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( get_status == ESR_SUCCESS )
5974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
5984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    if ( command_end != NULL )
5994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *command_end = command_start + first_max_command_size + second_max_command_size + third_max_command_size + fourth_max_command_size;
6004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    if ( actual_commands != NULL )
6014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *actual_commands = 4;
6024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
6034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                else
6044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
6054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    if ( command_end != NULL )
6064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *command_end = command_start + first_max_command_size + second_max_command_size + third_max_command_size;
6074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    if ( actual_commands != NULL )
6084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *actual_commands = 3;
6094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
6104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
6114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            else
6124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
6134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( command_end != NULL )
6144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    *command_end = command_start + first_max_command_size + second_max_command_size;
6154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( actual_commands != NULL )
6164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    *actual_commands = 2;
6174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
6184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
6194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
6204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
6214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( command_end != NULL )
6224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                *command_end = command_start + first_max_command_size;
6234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( actual_commands != NULL )
6244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                *actual_commands = 1;
6254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
6264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
6274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
6284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
6294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( command_end != NULL )
6304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            *command_end = command_start;
6314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( actual_commands != NULL )
6324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            *actual_commands = 0;
6334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
6344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( get_status );
6354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
6364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
6374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
6384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
6394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_get_three_command_items ( LCHAR *command_start, size_t first_max_command_size, LCHAR *first_command,
6404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                        size_t second_max_command_size, LCHAR *second_command,
6414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                        size_t third_max_command_size, LCHAR *third_command,
6424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                        size_t *actual_commands, LCHAR **command_end )
6434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
6444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int get_status;
6454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
6464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    get_status = getFirstToken ( command_start, first_command, &first_max_command_size );
6474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
6484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( get_status == ESR_SUCCESS )
6494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
6504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        get_status = getFirstToken ( command_start + first_max_command_size, second_command, &second_max_command_size );
6514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
6524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( get_status == ESR_SUCCESS )
6534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
6544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            get_status = getFirstToken ( command_start + first_max_command_size + second_max_command_size,
6554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                         third_command, &third_max_command_size );
6564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( get_status == ESR_SUCCESS )
6574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
6584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( command_end != NULL )
6594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    *command_end = command_start + first_max_command_size + second_max_command_size + third_max_command_size;
6604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( actual_commands != NULL )
6614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    *actual_commands = 3;
6624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
6634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            else
6644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
6654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( command_end != NULL )
6664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    *command_end = command_start + first_max_command_size + second_max_command_size;
6674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( actual_commands != NULL )
6684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    *actual_commands = 2;
6694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
6704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
6714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
6724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
6734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( command_end != NULL )
6744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                *command_end = command_start + first_max_command_size;
6754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( actual_commands != NULL )
6764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                *actual_commands = 1;
6774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
6784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
6794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
6804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
6814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( command_end != NULL )
6824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            *command_end = command_start;
6834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( actual_commands != NULL )
6844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            *actual_commands = 0;
6854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
6864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( get_status );
6874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
6884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
6894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
6904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
6914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_get_two_command_items ( LCHAR *command_start, size_t first_max_command_size, LCHAR *first_command,
6924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                      size_t second_max_command_size, LCHAR *second_command,
6934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                      size_t *actual_commands, LCHAR **command_end )
6944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
6954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int get_status;
6964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
6974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    get_status = getFirstToken ( command_start, first_command, &first_max_command_size );
6984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
6994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( get_status == ESR_SUCCESS )
7004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
7014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        get_status = getFirstToken ( command_start + first_max_command_size, second_command, &second_max_command_size );
7024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
7034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( get_status == ESR_SUCCESS )
7044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
7054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( command_end != NULL )
7064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                *command_end = command_start + first_max_command_size + second_max_command_size;
7074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( actual_commands != NULL )
7084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                *actual_commands = 2;
7094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
7104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
7114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
7124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( command_end != NULL )
7134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                *command_end = command_start + first_max_command_size;
7144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( actual_commands != NULL )
7154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                *actual_commands = 1;
7164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
7174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
7184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
7194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
7204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( command_end != NULL )
7214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            *command_end = command_start;
7224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( actual_commands != NULL )
7234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            *actual_commands = 0;
7244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
7254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( get_status );
7264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
7274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
7284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
7294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
7304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_get_one_command_item ( LCHAR *command_start, size_t max_command_size, LCHAR *command, LCHAR **command_end )
7314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
7324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int get_status;
7334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
7344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    get_status = getFirstToken ( command_start, command, &max_command_size );
7354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
7364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( get_status == ESR_SUCCESS )
7374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
7384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( command_end != NULL )
7394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            *command_end = command_start + max_command_size;
7404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
7414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( get_status );
7424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
7434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
7444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
7454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
7464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
7474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Execute TCP-file commands.
7484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
7494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param text String containing command
7504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param recognizer The recognizer
7514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
7524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project//static int words_added = 0;
7534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
7544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if defined(APP_ENABLE_TIMER)
7554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic PTimer *addWordTimer = NULL;
7564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic PTimer *compileTimer = NULL;
7574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
7584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
7594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
7604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
7614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_reset_slots ( SR_Grammar *active_grammar )
7624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
7634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             reset_status;
7644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
7654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
7664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( active_grammar != NULL )
7674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
7684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        reset_status = 0;
7694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        esr_status = SR_GrammarResetAllSlots ( active_grammar );
7704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
7714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( esr_status != ESR_SUCCESS )
7724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
7734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            reset_status = -1;
7744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
7754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
7764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
7774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
7784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
7794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        reset_status = -1;
7804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
7814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
7824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( reset_status );
7834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
7844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
7854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
7864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
7874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_add_word ( SR_Grammar *active_grammar, LCHAR *command_text )
7884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
7894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             add_status;
7904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
7914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           slot [MAX_LINE_LENGTH];
7924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           word [MAX_LINE_LENGTH];
7934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           pron [MAX_LINE_LENGTH];
7944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           weight [MAX_UINT_DIGITS+1];
7954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           semanticTag [MAX_LINE_LENGTH];
7964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             weightNumber;
7974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             convert_string_to_num;
7984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
7994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( active_grammar != NULL )
8004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
8014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        add_status  = srec_test_get_five_command_items ( command_text, MAX_LINE_LENGTH, slot,
8024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                                         MAX_LINE_LENGTH, word, MAX_LINE_LENGTH, pron,
8034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                                         MAX_UINT_DIGITS + 1, weight, MAX_LINE_LENGTH,
8044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                                         semanticTag, NULL, NULL );
8054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( add_status == 0 )
8064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
8074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            convert_string_to_num = lstrtoi (weight, &weightNumber, 10 );
8084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
8094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( convert_string_to_num == 0 )
8104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
8114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if defined(APP_ENABLE_TIMER)
8124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                PTimerStart ( addWordTimer );
8134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
8144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                esr_status = SR_GrammarAddWordToSlot ( active_grammar, slot, word, pron, weightNumber, semanticTag );
8154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if defined(APP_ENABLE_TIMER)
8164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                PTimerStop(addWordTimer);
8174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
8184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( esr_status != ESR_SUCCESS )
8194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
8204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    add_status = -1;
8214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    /* Log Here */
8224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
8234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
8244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            else
8254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
8264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                add_status = -1;
8274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                /* Log Here */
8284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
8294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
8304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
8314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
8324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            add_status = -1;
8334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
8344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
8354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
8364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
8374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
8384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        add_status = -1;
8394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        srec_test_log_error ( 0, ERROR_LEVEL_MODERATE, "No Grammar Activated" );
8404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
8414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( add_status );
8424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
8434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
8444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
8454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
8464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_compile_active_context ( SR_Grammar *active_grammar )
8474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
8484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             compile_status;
8494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
8504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
8514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( active_grammar != NULL )
8524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
8534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        compile_status = 0;
8544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if defined(APP_ENABLE_TIMER)
8554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        PTimerStart ( compileTimer );
8564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
8574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        esr_status = SR_GrammarCompile( active_grammar );
8584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if defined(APP_ENABLE_TIMER)
8594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        PTimerStop ( compileTimer );
8604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
8614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( esr_status != ESR_SUCCESS )
8624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
8634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            compile_status = -1;
8644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
8654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
8664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
8674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
8684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
8694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        compile_status = -1;
8704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        srec_test_log_error ( 0, ERROR_LEVEL_MODERATE, L("No Active Grammar To Compile") );
8714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
8724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( compile_status );
8734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
8744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
8754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
8764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
8774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_load_grammar_data_from_command ( ApplicationData *data, unsigned int grammar_num, LCHAR *command_text )
8784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
8794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             get_status;
8804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
8814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           path [P_PATH_MAX];
8824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           id [P_PATH_MAX];
8834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           rule [P_PATH_MAX];
8844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           ve_marker [P_PATH_MAX];
8854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    size_t          path_length;
8864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
8874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    get_status = srec_test_get_four_command_items ( command_text, P_PATH_MAX, path, P_PATH_MAX, id,
8884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                                    P_PATH_MAX, rule, P_PATH_MAX, ve_marker, NULL, NULL );
8894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( get_status == 0 )
8904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
8914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        path_length = P_PATH_MAX;
8924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        esr_status = ESR_SessionPrefixWithBaseDirectory ( path, &path_length );
8934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
8944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( esr_status == ESR_SUCCESS )
8954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
8964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            LSTRCPY ( data->grammars [grammar_num].grammar_path, path );
8974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            LSTRCPY ( data->grammars [grammar_num].grammarID, id );
8984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            LSTRCPY ( data->grammars [grammar_num].ruleName, rule );
8994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
9004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( LSTRCMP ( ve_marker, L("ve") ) ==0 )
9014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                data->grammars [grammar_num].is_ve_grammar = ESR_TRUE;
9024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            else if ( LSTRCMP ( ve_marker, L("not_ve") ) ==0 )
9034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                data->grammars [grammar_num].is_ve_grammar = ESR_FALSE;
9044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            else
9054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
9064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                get_status = -1;
9074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                /* Log Here */
9084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
9094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
9104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
9114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
9124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            get_status = -1;
9134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
9144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
9154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
9164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
9174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
9184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
9194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
9204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( get_status );
9214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
9224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
9234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
9244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
9254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_load_context ( ApplicationData *data, LCHAR *command_text )
9264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
9274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             load_status;
9284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
9294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    unsigned int    open_grammar;
9304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
9314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    load_status = srec_test_get_empty_grammar_index ( data, &open_grammar );
9324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
9334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( load_status == 0 )
9344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
9354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        load_status = srec_test_load_grammar_data_from_command ( data, open_grammar, command_text );
9364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
9374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( load_status == 0 )
9384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
9394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            esr_status = SetupGrammarLoad ( data, open_grammar );
9404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
9414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( esr_status == ESR_SUCCESS )
9424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
9434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                data->grammarCount++;
9444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
9454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            else
9464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
9474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                load_status = -1;
9484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                /* Log Here */
9494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
9504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
9514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
9524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
9534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
9544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
9554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
9564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
9574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
9584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        srec_test_log_error ( 0, ERROR_LEVEL_HIGH, L("Maximum Number Of Grammars Already Loaded") );
9594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
9604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( load_status );
9614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
9624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
9634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
9644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
9654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_free_context ( SR_Grammar *active_grammar, ApplicationData *data, LCHAR *command_text )
9664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
9674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             free_status;
9684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
9694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             grammar_num;
9704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_BOOL            found_grammar;
9714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_BOOL            grammar_is_active;
9724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_BOOL            grammar_is_ve;
9734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           grammar_id [P_PATH_MAX];
9744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
9754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    free_status = srec_test_get_one_command_item ( command_text, P_PATH_MAX, grammar_id, NULL );
9764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
9774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( free_status == 0 )
9784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
9794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        found_grammar = srec_test_get_grammar_from_id ( data, grammar_id, &grammar_num, &grammar_is_active, &grammar_is_ve );
9804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
9814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( found_grammar == ESR_TRUE )
9824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
9834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( grammar_is_active == ESR_TRUE )
9844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
9854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( grammar_is_ve == ESR_TRUE )
9864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
9874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    esr_status = SR_RecognizerSetBoolParameter ( data->recognizer, L("enableGetWaveform"), ESR_FALSE );
9884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
9894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    if ( esr_status != ESR_SUCCESS )
9904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
9914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        free_status = -1;
9924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        /* Log Here */
9934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
9944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
9954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                else
9964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
9974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    esr_status = ESR_SUCCESS;
9984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
9994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( esr_status == ESR_SUCCESS )
10004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
10014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    esr_status = SR_RecognizerDeactivateRule ( data->recognizer, data->grammars [data->active_grammar_num].grammar,
10024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                                               data->grammars [data->active_grammar_num].ruleName );
10034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    if ( esr_status == ESR_SUCCESS )
10044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
10054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project						data->active_grammar_num = -1;
10064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
10074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    else
10084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
10094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        free_status = -1;
10104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        /* Log Here */
10114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
10124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
10134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
10144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            else
10154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
10164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                free_status = -1;
10174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                /* Log Here */
10184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
10194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
10204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
10214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
10224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            free_status = -1;
10234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
10244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
10254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
10264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
10274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
10284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
10294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
10304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( free_status );
10314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
10324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
10334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
10344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
10354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_unload_context ( ApplicationData *data, LCHAR *command_text )
10364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
10374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             unload_status;
10384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
10394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             grammar_num;
10404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_BOOL            found_grammar;
10414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_BOOL            grammar_is_active;
10424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_BOOL            grammar_is_ve;
10434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           grammar_id [P_PATH_MAX];
10444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
10454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   unload_status = srec_test_get_one_command_item ( command_text, P_PATH_MAX, grammar_id, NULL );
10464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
10474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   if ( unload_status == 0 )
10484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
10494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        found_grammar = srec_test_get_grammar_from_id ( data, grammar_id, &grammar_num, &grammar_is_active, &grammar_is_ve );
10504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
10514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( found_grammar == ESR_TRUE )
10524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
10534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( grammar_is_active == ESR_FALSE )
10544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
10554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                esr_status = SR_GrammarDestroy ( data->grammars [grammar_num].grammar );
10564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
10574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( esr_status != ESR_SUCCESS )
10584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
10594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    unload_status = -1;
10604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    /* Log Here */
10614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
10624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                srec_test_delete_grammar ( data, grammar_num );
10634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
10644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            else
10654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
10664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                unload_status = -1;
10674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                /* Log Here */
10684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
10694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
10704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
10714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
10724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            unload_status = -1;
10734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
10744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
10754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
10764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
10774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
10784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
10794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
10804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( unload_status );
10814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
10824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
10834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
10844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
10854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_use_context ( SR_Grammar *active_grammar, ApplicationData *data, LCHAR *command_text )
10864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
10874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             use_status;
10884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
10894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             grammar_num;
10904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_BOOL            found_grammar;
10914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_BOOL            grammar_is_active;
10924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_BOOL            grammar_is_ve;
10934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           grammar_id [P_PATH_MAX];
10944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
10954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( active_grammar == NULL )
10964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
10974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        use_status = srec_test_get_one_command_item ( command_text, P_PATH_MAX, grammar_id, NULL );
10984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
10994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( use_status == 0 )
11004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
11014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            found_grammar = srec_test_get_grammar_from_id ( data, grammar_id, &grammar_num, &grammar_is_active, &grammar_is_ve );
11024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
11034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( found_grammar == ESR_TRUE )
11044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
11054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    esr_status = SR_RecognizerActivateRule ( data->recognizer, data->grammars [grammar_num].grammar,
11064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                                             data->grammars [grammar_num].ruleName, 1 );
11074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    if ( esr_status == ESR_SUCCESS )
11084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
11094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        if ( data->grammars [grammar_num].is_ve_grammar == ESR_TRUE )
11104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            {
11114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            esr_status = SR_RecognizerSetBoolParameter ( data->recognizer, L("enableGetWaveform"), ESR_TRUE );
11124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
11134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            if ( esr_status == ESR_SUCCESS )
11144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                {
11154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                data->active_grammar_num = (int)grammar_num;
11164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                }
11174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            else
11184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                {
11194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                use_status = -1;
11204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                /* Log Here */
11214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                SR_RecognizerDeactivateRule ( data->recognizer, data->grammars [grammar_num].grammar,
11224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                                              data->grammars [grammar_num].ruleName );
11234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                }
11244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            }
11254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        else
11264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            {
11274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            data->active_grammar_num = (int)grammar_num;
11284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            }
11294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
11304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    else
11314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
11324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        use_status = -1;
11334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        /* Log Here */
11344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
11354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
11364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            else
11374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
11384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                use_status = -1;
11394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                /* Log Here */
11404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
11414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
11424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
11434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
11444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            use_status = -1;
11454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
11464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
11474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
11484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
11494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
11504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project         use_status = -1;
11514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
11524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
11534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( use_status );
11544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
11554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
11564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
11574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
11584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_save_context ( SR_Grammar *active_grammar, LCHAR *command_text )
11594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
11604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             save_status;
11614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
11624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           file_name [P_PATH_MAX];
11634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
11644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( active_grammar != NULL )
11654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
11664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        save_status =  srec_test_get_one_command_item ( command_text, P_PATH_MAX, file_name, NULL );
11674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
11684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( save_status == 0 )
11694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
11704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            esr_status = SR_GrammarSave ( active_grammar, file_name );
11714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
11724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( esr_status != ESR_SUCCESS )
11734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
11744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                save_status = -1;
11754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                /* Log Here */
11764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
11774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
11784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
11794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
11804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
11814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
11824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
11834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
11844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
11854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        save_status = -1;
11864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        srec_test_log_error ( 0, ERROR_LEVEL_MODERATE, "No Grammar Activated" );
11874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
11884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( save_status );
11894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
11904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
11914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
11924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
11934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_voice_enroll ( SR_Grammar *active_grammar, ApplicationData *data, LCHAR *command_text )
11944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
11954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             enroll_status;
11964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
11974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           slot [P_PATH_MAX];
11984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           nametagID [P_PATH_MAX];
11994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           weight [MAX_UINT_DIGITS+1];
12004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             weightNumber;
12014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             convert_string_to_num;
12024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
12034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( active_grammar != NULL )
12044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
12054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( data->nametag != NULL )
12064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
12074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            enroll_status = srec_test_get_three_command_items ( command_text, P_PATH_MAX, slot, P_PATH_MAX, nametagID,
12084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                                                MAX_UINT_DIGITS + 1, weight, NULL, NULL );
12094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( enroll_status == 0 )
12104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
12114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                convert_string_to_num = lstrtoi ( weight, &weightNumber, 10 );
12124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
12134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( convert_string_to_num == 0 )
12144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
12154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    esr_status = SR_NametagSetID ( data->nametag, nametagID );
12164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
12174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    if ( esr_status == ESR_SUCCESS )
12184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
12194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        esr_status = SR_GrammarAddNametagToSlot ( active_grammar, slot, data->nametag, weightNumber, NULL );
12204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
12214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        if ( esr_status != ESR_SUCCESS )
12224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            {
12234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            enroll_status = -1;
12244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            /* Log Here */
12254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            }
12264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
12274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    else
12284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
12294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        enroll_status = -1;
12304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        /* Log Here */
12314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
12324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
12334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                else
12344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
12354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    enroll_status = -1;
12364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    /* Log Here */
12374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
12384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
12394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            else
12404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
12414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                /* Log Here */
12424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
12434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
12444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
12454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
12464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            enroll_status = -1;
12474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
12484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
12494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
12504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
12514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
12524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        enroll_status = -1;
12534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        srec_test_log_error ( 0, ERROR_LEVEL_MODERATE, "No Grammar Activated" );
12544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
12554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( enroll_status );
12564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
12574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
12584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
12594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
12604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_load_nametags ( ApplicationData *data, LCHAR *command_text )
12614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
12624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             load_status;
12634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
12644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           file_name [P_PATH_MAX];
12654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
12664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    load_status =  srec_test_get_one_command_item ( command_text, P_PATH_MAX, file_name, NULL );
12674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
12684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( load_status == 0 )
12694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
12704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        esr_status = SR_NametagsLoad ( data->nametags, file_name );
12714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
12724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( esr_status != ESR_SUCCESS )
12734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
12744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            load_status = -1;
12754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
12764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
12774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
12784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
12794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
12804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        load_status = -1;
12814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
12824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
12834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( load_status );
12844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
12854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
12864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
12874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
12884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_save_nametags ( ApplicationData *data, LCHAR *command_text )
12894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
12904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             save_status;
12914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
12924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           file_name [P_PATH_MAX];
12934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
12944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    save_status =  srec_test_get_one_command_item ( command_text, P_PATH_MAX, file_name, NULL );
12954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
12964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( save_status == 0 )
12974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
12984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        esr_status = SR_NametagsSave ( data->nametags, file_name );
12994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
13004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( esr_status != ESR_SUCCESS )
13014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
13024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            save_status = -1;
13034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
13044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
13054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
13064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
13074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
13084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        save_status = -1;
13094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
13104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
13114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( save_status );
13124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
13134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
13144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
13154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
13164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_clear_nametags ( ApplicationData *data )
13174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
13184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             clear_status;
13194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
13204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
13214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    clear_status = 0;
13224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    esr_status = SR_NametagsDestroy ( data->nametags );
13234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
13244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( esr_status == ESR_SUCCESS )
13254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
13264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        data->nametags = NULL;
13274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        esr_status = SR_NametagsCreate ( &data->nametags );
13284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
13294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( esr_status != ESR_SUCCESS )
13304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
13314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            clear_status = -1;
13324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
13334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
13344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
13354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
13364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
13374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        clear_status = -1;
13384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
13394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
13404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( clear_status );
13414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
13424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
13434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
13444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
13454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_add_to_nametags ( ApplicationData *data, LCHAR *command_text )
13464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
13474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             add_status;
13484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
13494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           nametagID [P_PATH_MAX];
13504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
13514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( data->nametag != NULL )
13524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
13534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        add_status =  srec_test_get_one_command_item ( command_text, P_PATH_MAX, nametagID, NULL );
13544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
13554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( add_status == 0 )
13564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
13574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            esr_status = SR_NametagSetID ( data->nametag, nametagID );
13584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
13594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( esr_status == ESR_SUCCESS )
13604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
13614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                esr_status = SR_NametagsAdd ( data->nametags, data->nametag );
13624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
13634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( esr_status == ESR_SUCCESS )
13644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
13654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    data->nametag = NULL;
13664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
13674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                else
13684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
13694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    add_status = -1;
13704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    /* Log Here */
13714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
13724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
13734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            else
13744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
13754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                add_status = -1;
13764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                /* Log Here */
13774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
13784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
13794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
13804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
13814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            add_status = -1;
13824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
13834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
13844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
13854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
13864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
13874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        add_status = -1;
13884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
13894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
13904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( add_status );
13914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
13924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
13934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
13944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_voice_enroll_nametags ( SR_Grammar *active_grammar, ApplicationData *data, LCHAR *command_text )
13954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  {
13964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             enroll_status;
13974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
13984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           slot [P_PATH_MAX];
13994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SR_Nametag      *nametag;
14004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    size_t          nametags_size;
14014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    size_t          current_nametag;
14024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
14034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( active_grammar != NULL )
14044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
14054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        enroll_status =  srec_test_get_one_command_item ( command_text, P_PATH_MAX, slot, NULL );
14064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
14074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( enroll_status == 0 )
14084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
14094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            esr_status = SR_NametagsGetSize (data->nametags, &nametags_size );
14104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
14114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( esr_status == ESR_SUCCESS )
14124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
14134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                current_nametag = 0;
14144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
14154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                while ( ( current_nametag < nametags_size ) && ( esr_status == ESR_SUCCESS ) )
14164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
14174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    esr_status = SR_NametagsGetAtIndex ( data->nametags, current_nametag, &nametag );
14184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
14194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    if ( esr_status == ESR_SUCCESS )
14204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
14214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        esr_status = SR_GrammarAddNametagToSlot ( active_grammar, slot, nametag, 0, NULL );
14224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
14234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        if ( esr_status == ESR_SUCCESS )
14244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            {
14254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            current_nametag++;
14264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            }
14274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        else
14284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            {
14294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            enroll_status = -1;
14304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            /* Log Here */
14314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            }
14324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
14334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    else
14344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
14354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        enroll_status = -1;
14364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        /* Log Here */
14374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
14384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
14394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
14404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            else
14414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
14424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                enroll_status = -1;
14434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                /* Log Here */
14444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
14454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
14464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
14474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
14484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
14494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
14504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
14514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
14524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
14534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        enroll_status = -1;
14544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        srec_test_log_error ( 0, ERROR_LEVEL_MODERATE, "No Grammar Activated" );
14554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
14564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( enroll_status );
14574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
14584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
14594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
14604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
14614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_load_acousticstate ( ApplicationData *data, LCHAR *command_text )
14624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
14634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             load_status;
14644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
14654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           file_name [P_PATH_MAX];
14664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
14674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    load_status =  srec_test_get_one_command_item ( command_text, P_PATH_MAX, file_name, NULL );
14684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
14694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( load_status == 0 )
14704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
14714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        esr_status = SR_AcousticStateLoad ( data->recognizer, file_name );
14724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
14734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( esr_status != ESR_SUCCESS )
14744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
14754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            load_status = -1;
14764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
14774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
14784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
14794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
14804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
14814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
14824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
14834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( load_status );
14844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
14854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
14864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
14874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
14884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_reset_acousticstate ( ApplicationData *data )
14894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
14904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             reset_status;
14914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
14924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
14934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    reset_status = 0;
14944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    esr_status = SR_AcousticStateReset ( data->recognizer );
14954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
14964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( esr_status != ESR_SUCCESS )
14974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
14984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        reset_status = -1;
14994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
15004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
15014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( reset_status );
15024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
15034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
15044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
15054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
15064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_set_forced_rec_mode ( ApplicationData *data, LCHAR *command_text )
15074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
15084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int         set_status;
15094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR       mode[P_PATH_MAX];
15104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
15114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    set_status =  srec_test_get_one_command_item ( command_text, P_PATH_MAX, mode, NULL );
15124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
15134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( set_status == 0 )
15144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
15154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( LSTRCMP ( mode, L("one_time") ) == 0 )
15164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
15174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            data->forced_rec_mode = ForcedRecModeOneTime;
15184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
15194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else if ( LSTRCMP ( mode, L("off") ) == 0 )
15204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
15214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            data->forced_rec_mode = ForcedRecModeOff;
15224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
15234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else if ( LSTRCMP ( mode, L("on") ) == 0 )
15244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
15254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            data->forced_rec_mode = ForcedRecModeOn;
15264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
15274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
15284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
15294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            set_status = -1;
15304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
15314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
15324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
15334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( set_status );
15344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
15354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
15364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
15374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
15384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_execute_command ( ApplicationData *data, AUDIOIN_H audio_input_handle, LCHAR *text, FILE *results_file, size_t *recognition_count )
15394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
15404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int         execute_status;
15414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR       *current_command_start;
15424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR       *current_end_command;
15434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR       command [MAX_LINE_LENGTH];
15444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SR_Grammar  *active_grammar;
15454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR       log_buffer [LOG_BUFFER_SIZE];
15464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
15474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    srec_test_get_active_grammar ( data, &active_grammar );
15484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    current_command_start = text;
15494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    execute_status = srec_test_get_one_command_item ( current_command_start, MAX_LINE_LENGTH, command, &current_end_command );
15504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
15514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( execute_status == 0 )
15524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
15534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project		if( data->nametag
15544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project			&& ((LSTRCMP(command, "recognize_nist")==0) || (LSTRCMP(command, "recognize_pcm")==0)) ) {
15554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project				/* if there is a nametag held in memory, and we don't make use of it, then
15564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project				let's destroy it here */
15574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project			SR_NametagDestroy(  data->nametag);
15584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project			data->nametag = NULL;
15594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project		}
15604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( LSTRCMP ( command, L("recognize_live") ) == 0 )
15614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            execute_status = srec_test_recognize_live ( active_grammar, data, audio_input_handle, results_file, recognition_count );
15624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else if ( LSTRCMP ( command, L("context_load") ) == 0 )
15634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            execute_status = srec_test_load_context ( data, current_end_command );
15644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else if ( LSTRCMP ( command, L("context_use") ) == 0 )
15654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            execute_status = srec_test_use_context ( active_grammar, data, current_end_command );
15664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else if ( LSTRCMP ( command, L("context_free") ) == 0 )
15674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            execute_status = srec_test_free_context ( active_grammar, data, current_end_command );
15684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else if ( LSTRCMP ( command, L("context_unload") ) == 0 )
15694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            execute_status = srec_test_unload_context ( data, current_end_command );
15704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else if ( LSTRCMP ( command, L("addwords_from_nametags") ) == 0 )
15714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            execute_status = srec_test_voice_enroll_nametags ( active_grammar, data, current_end_command );
15724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else if ( LSTRCMP ( command, L("resetslots") ) == 0 )
15734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            execute_status = srec_test_reset_slots ( active_grammar );
15744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else  if ( LSTRCMP ( command, L("addword") ) == 0 )
15754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            execute_status = srec_test_add_word ( active_grammar, current_end_command );
15764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else if ( LSTRCMP ( command, L("context_compile") ) == 0 )
15774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            execute_status = srec_test_compile_active_context ( active_grammar );
15784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else if ( LSTRCMP ( command, L("context_save") ) == 0 )
15794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            execute_status = srec_test_save_context ( active_grammar, current_end_command );
15804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else if ( LSTRCMP ( command, L("addword_from_last_nametag") ) == 0 )
15814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            execute_status = srec_test_voice_enroll ( active_grammar, data, current_end_command );
15824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else if ( LSTRCMP ( command, L("load_nametags") ) == 0 )
15834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            execute_status = srec_test_load_nametags ( data, current_end_command );
15844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else if ( LSTRCMP ( command, L("save_nametags") ) == 0 )
15854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            execute_status = srec_test_save_nametags ( data, current_end_command );
15864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else if ( LSTRCMP ( command, L("clear_nametags") ) ==0 )
15874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            execute_status = srec_test_clear_nametags ( data );
15884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else if ( LSTRCMP ( command, L("add_to_nametags") ) == 0 )
15894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            execute_status = srec_test_add_to_nametags ( data, current_end_command );
15904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else if ( LSTRCMP ( command, L("acousticstate_load") ) == 0 )
15914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            execute_status = srec_test_load_acousticstate ( data, current_end_command );
15924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else if ( LSTRCMP ( command, L("acousticstate_reset") ) == 0 )
15934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            execute_status = srec_test_reset_acousticstate ( data );
15944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else if ( LSTRCMP ( command, L("forced_rec") ) == 0 )
15954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            execute_status = srec_test_set_forced_rec_mode ( data, current_end_command );
15964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else if ( *( command ) == L('#') )
15974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            execute_status = 0;   /* Comment in file just skip */
15984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
15994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
16004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            execute_status = -1;
16014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            LSPRINTF ( log_buffer, L("Unknown Command %s"), command );
16024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            srec_test_log_error ( 0, ERROR_LEVEL_MODERATE, log_buffer );
16034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
16044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
16054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
16064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
16074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
16084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
16094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( execute_status );
16104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
16114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
16124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
16134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
16144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_open_command_file ( PFile **command_file )
16154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
16164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             open_status;
16174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
16184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           file_name [P_PATH_MAX];
16194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    size_t          len;
16204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
16214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    open_status = 0;
16224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    len = P_PATH_MAX;
16234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    esr_status = ESR_SessionGetLCHAR ( L("cmdline.tcp"), file_name, &len );
16244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
16254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( esr_status == ESR_SUCCESS )
16264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
16274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        len = P_PATH_MAX;
16284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        esr_status = ESR_SessionPrefixWithBaseDirectory ( file_name, &len );
16294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
16304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( esr_status == ESR_SUCCESS )
16314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
16324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project	    *command_file = pfopen ( file_name,  L("r") );
16334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
16344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project	    if ( ( *command_file ) == NULL )
16354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
16364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                open_status = -1;
16374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                /* Log Here */
16384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
16394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
16404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
16414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
16424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            open_status = -1;
16434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
16444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
16454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
16464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     else
16474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project         {
16484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project         open_status = -1;
16494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project         /* Log Here */
16504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project         }
16514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     return ( open_status );
16524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     }
16534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
16544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
16554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
16564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid srec_test_close_command_file ( PFile *command_file )
16574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
16584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
16594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    pfclose ( command_file );
16604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
16614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
16624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
16634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
16644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid srec_test_close_audio_file ( PFile *audio_file )
16654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
16664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
16674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    pfclose ( audio_file );
16684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
16694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
16704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
16714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
16724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_open_results_file ( FILE **results_file )
16734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
16744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             open_status;
16754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
16764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           file_name [P_PATH_MAX];
16774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    size_t          len;
16784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
16794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    open_status = 0;
16804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    len = P_PATH_MAX;
16814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    esr_status = ESR_SessionGetLCHAR ( L("cmdline.results"), file_name, &len );
16824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
16834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( esr_status == ESR_SUCCESS )
16844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
16854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        *results_file = fopen ( file_name, L("w") );
16864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
16874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( ( *results_file ) == NULL )
16884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
16894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            open_status = -1;
16904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
16914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
16924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
16934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     else
16944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project         {
16954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project         open_status = -1;
16964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project         /* Log Here */
16974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project         }
16984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     return ( open_status );
16994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     }
17004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid srec_test_close_results_file ( FILE *results_file )
17044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
17054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    fclose ( results_file );
17074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
17084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_process_commands ( ApplicationData *data, AUDIOIN_H audio_input_handle )
17124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
17134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             process_status;
17144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    PFile           *command_file;
17154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    FILE            *results_file;
17164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           *got_line_ok;
17174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           linebuffer [MAX_LINE_LENGTH];
17184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    size_t          recognition_count;
17194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    recognition_count = 0;
17214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    process_status = srec_test_open_command_file ( &command_file );
17224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( process_status == 0 )
17244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
17254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        process_status = srec_test_open_results_file ( &results_file );
17264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( process_status == 0 )
17284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
17294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            do
17304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
17314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                got_line_ok = pfgets ( linebuffer, MAX_LINE_LENGTH, command_file );
17324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( got_line_ok != NULL )
17344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    srec_test_execute_command ( data, audio_input_handle, linebuffer, results_file, &recognition_count );
17354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
17364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            while ( ( got_line_ok != NULL ) && ( process_status == 0 ) );
17374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project			if( data->nametag ) {
17384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project				SR_NametagDestroy(  data->nametag);
17394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project				data->nametag = NULL;
17404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project			}
17414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            srec_test_close_results_file ( results_file );
17434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
17444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        srec_test_close_command_file ( command_file );
17454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
17464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( process_status );
17474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
17484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_open_nist_file ( LCHAR *file_name, PFile **nist_file )
17524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
17534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             open_status;
17544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
17554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             lstr_result;
17564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           file_path [P_PATH_MAX];
17574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    size_t          len;
17584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    open_status = 0;
17604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    len = P_PATH_MAX;
17614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    esr_status = ESR_SessionGetLCHAR ( L("cmdline.datapath"), file_path, &len );
17624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( esr_status == ESR_SUCCESS )
17644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
17654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        len = P_PATH_MAX;
17664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        esr_status = ESR_SessionPrefixWithBaseDirectory ( file_path, &len );
17674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( esr_status == ESR_SUCCESS )
17694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
17704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            esr_status = pf_convert_backslashes_to_forwardslashes ( file_path );
17714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( esr_status == ESR_SUCCESS )
17734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
17744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                len = P_PATH_MAX;
17754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                lstr_result = lstrinsert ( file_path, file_name, 0, &len );
17764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( lstr_result == 0 )
17784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
17794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project		    *nist_file = pfopen ( file_name, L("rb") );
17804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    if ( ( *nist_file ) != NULL )
17824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
17834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        esr_status = pfseek ( *nist_file, 1024, SEEK_SET );
17844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
17854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        if ( esr_status != ESR_SUCCESS )
17864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            {
17874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            open_status = -1;
17884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            /* Log Here */
17894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            }
17904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
17914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    else
17924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
17934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        open_status = -1;
17944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        /* Log Here */
17954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
17964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
17974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                else
17984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
17994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    open_status = -1;
18004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    /* Log Here */
18014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
18024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
18034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            else
18044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
18054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                open_status = -1;
18064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                /* Log Here */
18074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
18084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
18094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
18104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
18114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            open_status = -1;
18124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
18134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
18144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
18154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     else
18164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project         {
18174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project         open_status = -1;
18184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project         /* Log Here */
18194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project         }
18204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     return ( open_status );
18214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     }
18224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
18234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
18244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
18254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_get_audio_from_file ( PFile *audio_file, ApplicationData *data, ESR_BOOL *hit_eof )
18264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
18274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int get_status;
18284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int eof_status;
18294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
18304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    get_status = 0;
18314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    data->num_samples_read = pfread ( data->audio_buffer, sizeof ( asr_int16_t ), data->audio_buffer_requested_size, audio_file );
18324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
18334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( data->num_samples_read > 0 )
18344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
18354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        *hit_eof = ESR_FALSE;
18364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
18374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
18384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
18394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        eof_status = pfeof ( audio_file );
18404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
18414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( eof_status == 0 )
18424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
18434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            get_status = -1;
18444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
18454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
18464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
18474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
18484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            *hit_eof = ESR_TRUE;
18494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
18504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
18514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( get_status );
18524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
18534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
18544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
18554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
18564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_feed_recognizer ( ApplicationData *data, ESR_BOOL hit_eof, SR_RecognizerStatus *esr_recog_status, SR_RecognizerResultType *result_type )
18574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
18584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             feed_status;
18594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
18604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
18614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    feed_status = 0;
18624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    esr_status = SR_RecognizerPutAudio ( data->recognizer, data->audio_buffer, &data->num_samples_read, hit_eof );
18634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
18644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( esr_status == ESR_SUCCESS )
18654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
18664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        do
18674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
18684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            esr_status = SR_RecognizerAdvance ( data->recognizer, esr_recog_status, result_type, &data->result );
18694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
18704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( esr_status != ESR_SUCCESS )
18714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
18724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                feed_status = -1;
18734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                *esr_recog_status = SR_RECOGNIZER_EVENT_STOPPED;
18744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                *result_type = SR_RECOGNIZER_RESULT_TYPE_COMPLETE;
18754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                /* Log Here */
18764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
18774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
18784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        while ( ( *esr_recog_status ) == SR_RECOGNIZER_EVENT_INCOMPLETE );
18794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
18804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
18814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
18824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        feed_status = -1;
18834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
18844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
18854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     return ( feed_status );
18864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     }
18874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
18884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
18894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
18904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_flush_audio ( ApplicationData *data, SR_RecognizerStatus *esr_recog_status, SR_RecognizerResultType *result_type )
18914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
18924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             flush_status;
18934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
18944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
18954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    flush_status = 0;
18964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
18974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    while ( ( *result_type ) != SR_RECOGNIZER_RESULT_TYPE_COMPLETE )
18984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
18994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        esr_status = SR_RecognizerAdvance ( data->recognizer, esr_recog_status, result_type, &data->result );
19004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
19014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( esr_status != ESR_SUCCESS )
19024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
19034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            flush_status = -1;
19044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            *esr_recog_status = SR_RECOGNIZER_EVENT_STOPPED;
19054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            *result_type = SR_RECOGNIZER_RESULT_TYPE_COMPLETE;
19064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
19074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
19084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
19094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( flush_status );
19104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
19114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
19124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
19134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
19144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_process_start_timeout ( ApplicationData *data, FILE *results_file )
19154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
19164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             process_status;
19174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
19184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    size_t          utterance_timeout;
19194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
19204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    process_status = 0;
19214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    esr_status = ESR_SessionGetSize_t ( L("SREC.Recognizer.utterance_timeout"), &utterance_timeout );
19224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
19234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( esr_status == ESR_SUCCESS )
19244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
19254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        LFPRINTF ( results_file, L("E: utterance_timeout %lu\n"), (unsigned long)utterance_timeout );
19264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        LFPRINTF ( results_file, L("R: <FAILED>\n") );
19274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        LPRINTF ( L("\n-------------------------------------\n") );
19284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        LPRINTF ( L("E: utterance_timeout %lu\n"), (unsigned long)utterance_timeout );
19294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        LPRINTF ( L("R: <FAILED>\n") );
19304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        LPRINTF ( L("-------------------------------------\n\n") );
19314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
19324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
19334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
19344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        process_status = -1;
19354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
19364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
19374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    srec_test_log_recognition_failure ( data );
19384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
19394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( process_status );
19404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
19414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
19424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
19434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_write_and_log_wave_form_file ( ApplicationData *data, size_t recognition_count )
19444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
19454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int                 write_status;
19464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode      esr_status;
19474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR               *wave_filename;
19484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
19494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    write_status = 0;
19504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LSPRINTF ( data->raw_waveform_filename, L("a%lu__%s.raw"), (unsigned long)recognition_count, data->transcription );
19514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    wave_filename = data->raw_waveform_filename;
19524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
19534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    while ( *wave_filename )
19544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
19554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( *wave_filename == ' ')
19564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            *wave_filename = '_';
19574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        wave_filename++;
19584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
19594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* just write to file for now... for testing purposes */
19604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LPRINTF ( L("Dumping audio waveform to file %s\n"), data->raw_waveform_filename );
19614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    data->raw_waveform_file = pfopen ( data->raw_waveform_filename, L("wb") );
19624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
19634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( data->raw_waveform_file != NULL )
19644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
19654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        pfwrite ( (void*)data->raw_waveform, 1, data->raw_waveform_size, data->raw_waveform_file );
19664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        pfclose ( data->raw_waveform_file );
19674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* log the filename in the ESR log */
19684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        esr_status = SR_RecognizerLogToken ( data->recognizer, "WVFMFILENAME", data->raw_waveform_filename );
19694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
19704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if( esr_status != ESR_SUCCESS )
19714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
19724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            write_status = -1;
19734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
19744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
19754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
19764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
19774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
19784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        write_status = -1;
19794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
19804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
19814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( write_status );
19824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
19834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
19844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
19854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
19864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_process_nbest_list ( ApplicationData *data, FILE *results_file )
19874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
19884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int                 process_status;
19894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode      esr_status;
19904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    size_t              nbestSize;
19914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    size_t              nbest_num;
19924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR               linebuffer [MAX_LINE_LENGTH];
19934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    size_t              line_length;
19944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
19954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    process_status = 0;
19964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project      /* At least one semantic result exists */
19974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LPRINTF ( L("\n\n----------------------------------------------\n") );
19984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    line_length =  MAX_LINE_LENGTH;
19994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    esr_status = SR_RecognizerResultGetValue ( data->result, 0, L("conf"), linebuffer, &line_length );
20004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
20014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( esr_status == ESR_SUCCESS )
20024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
20034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        LPRINTF ( L("CONFIDENCE SCORE : '%s'\n"), linebuffer );
20044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        LPRINTF ( L("TRANSCRIPTION    : '%s'\n"), data->transcription );
20054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        esr_status = SR_RecognizerResultGetSize (data->result, &nbestSize );
20064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
20074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( esr_status == ESR_SUCCESS )
20084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
20094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            for ( nbest_num = 0; nbest_num < nbestSize; nbest_num++ )
20104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
20114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                line_length =  MAX_LINE_LENGTH;
20124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                esr_status = SR_RecognizerResultGetValue ( data->result, nbest_num, L("literal"), linebuffer, &line_length );
20134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
20144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( esr_status == ESR_SUCCESS )
20154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
20164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    LPRINTF ( L("LITERAL[%2lu]      : '%s'\n"), (unsigned long)nbest_num, linebuffer );
20174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    line_length = MAX_LINE_LENGTH;
20184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    esr_status = SR_RecognizerResultGetValue ( data->result, nbest_num, L("meaning"), linebuffer, &line_length );
20194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
20204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    if ( esr_status != ESR_SUCCESS )
20214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
20224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        linebuffer [0] = L('\0') ;
20234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
20244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    LPRINTF ( L("MEANING[%2lu]      : '%s'\n"), (unsigned long)nbest_num, linebuffer );
20254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    line_length = MAX_LINE_LENGTH;
20264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    esr_status = SR_RecognizerResultGetValue (data->result, nbest_num, L("raws"), linebuffer, &line_length );
20274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
20284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    if ( esr_status == ESR_SUCCESS )
20294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
20304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            LPRINTF ( L("RAW SCORE[%2lu]    : '%s'\n\n"), (unsigned long)nbest_num, linebuffer);
20314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
20324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    else
20334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
20344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        process_status = -1;
20354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        /* Log Here */
20364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
20374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
20384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                else
20394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
20404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    process_status = -1;
20414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    /* Log Here */
20424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
20434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
20444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
20454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
20464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
20474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            process_status = -1;
20484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
20494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
20504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
20514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
20524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
20534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        process_status = -1;
20544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
20554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
20564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LPRINTF ( L("----------------------------------------------\n\n") );
20574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( process_status );
20584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
20594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
20604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
20614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
20624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_process_recognition ( ApplicationData *data, FILE *results_file, size_t recognition_count )
20634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
20644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int                 process_status;
20654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode      esr_status;
20664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    APPL_GRAMMAR_DATA   *grammar_data;
20674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR               linebuffer [MAX_LINE_LENGTH];
20684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    size_t              line_length;
20694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
20704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    process_status = 0;
20714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    srec_test_get_active_grammar_data ( data, &grammar_data );
20724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    line_length = MAX_LINE_LENGTH;
20734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    esr_status = SR_RecognizerResultGetValue ( data->result, 0, L("literal"), linebuffer, &line_length );
20744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
20754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( esr_status == ESR_SUCCESS )
20764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
20774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        LFPRINTF ( results_file, L("R: %s\n"), linebuffer );
20784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        line_length = MAX_LINE_LENGTH;
20794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        esr_status = SR_RecognizerResultGetValue ( data->result, 0, L("conf"), linebuffer, &line_length );
20804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
20814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( esr_status == ESR_SUCCESS )
20824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
20834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            LFPRINTF ( results_file, L("S: %s\n"), linebuffer);
20844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            LPRINTF ( L("S: %s\n"), linebuffer);
20854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            srec_test_process_nbest_list ( data, results_file );
20864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project         /*
20874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project          * SR_RecognizerResultGetWaveform will return pointer to buffer holding
20884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project          * audio data in it. This buffer is NOT under the application's control
20894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project          * and MUST only be read from.
20904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project          */
20914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( grammar_data->is_ve_grammar == ESR_TRUE )
20924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
20934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                LPRINTF ( L("VoiceEnrollement=>SUCCESS\n") );
20944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                esr_status = SR_NametagCreate ( data->result, L("dummyID"), &data->nametag );
20954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
20964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( esr_status == ESR_SUCCESS )
20974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
20984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    esr_status = SR_RecognizerResultGetWaveform ( data->result, &data->raw_waveform, &data->raw_waveform_size );
20994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
21004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    if( esr_status == ESR_SUCCESS )
21014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
21024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        if ( data->raw_waveform )
21034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            {
21044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            process_status = srec_test_write_and_log_wave_form_file ( data, recognition_count );
21054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
21064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            if ( process_status == 0 )
21074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                {
21084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                esr_status = SR_RecognizerLogEvent ( data->recognizer, "ESRve" );
21094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
21104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                if( esr_status != ESR_SUCCESS )
21114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                    {
21124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                    process_status = -1;
21134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                    /* Log Here */
21144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                    }
21154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                }
21164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            else
21174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                {
21184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                /* Log Here */
21194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                }
21204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            }
21214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
21224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    else
21234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
21244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        process_status = -1;
21254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        /* Log Here */
21264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
21274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
21284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                else
21294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
21304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    process_status = -1;
21314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    /* Log Here */
21324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
21334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
21344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
21354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
21364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
21374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            process_status = -1;
21384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
21394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
21404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
21414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
21424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
21434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        process_status = -1;
21444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
21454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
21464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( process_status );
21474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
21484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
21494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
21504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
21514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_process_recognition_fail ( ApplicationData *data )
21524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
21534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int                 process_status;
21544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode      esr_status;
21554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    APPL_GRAMMAR_DATA   *grammar_data;
21564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_BOOL                reason_status;
21574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
21584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    process_status = 0;
21594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    srec_test_get_active_grammar_data ( data, &grammar_data );
21604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LPRINTF(L("*** no match in recognition***\n"));
21614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
21624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( grammar_data->is_ve_grammar == ESR_TRUE )
21634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
21644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        data->nametag = NULL;
21654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        LPRINTF ( L("VoiceEnrollement = FAILED : \n") );
21664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
21674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    esr_status = SR_RecognizerIsSignalClipping ( data->recognizer, &reason_status );
21684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
21694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( esr_status == ESR_SUCCESS )
21704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
21714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( reason_status == ESR_TRUE )
21724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            LPRINTF ( L("- Signal is clipping\n") );
21734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
21744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
21754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
21764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        process_status = -1;
21774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
21784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
21794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    esr_status = SR_RecognizerIsSignalDCOffset ( data->recognizer, &reason_status );
21804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
21814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( esr_status == ESR_SUCCESS )
21824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
21834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( reason_status == ESR_TRUE )
21844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            LPRINTF ( L("- Signal is DC-offset\n") );
21854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
21864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
21874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
21884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        process_status = -1;
21894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
21904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
21914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    esr_status = SR_RecognizerIsSignalNoisy ( data->recognizer, &reason_status );
21924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
21934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( esr_status == ESR_SUCCESS )
21944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
21954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( reason_status == ESR_TRUE )
21964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            LPRINTF ( L("- Signal is noisy\n") );
21974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
21984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
21994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
22004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        process_status = -1;
22014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
22024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
22034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    esr_status = SR_RecognizerIsSignalTooFewSamples ( data->recognizer, &reason_status );
22044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( esr_status == ESR_SUCCESS )
22064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
22074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( reason_status == ESR_TRUE )
22084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            LPRINTF ( L("- Signal has too few samples\n") );
22094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
22104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
22114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
22124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        process_status = -1;
22134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
22144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
22154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    esr_status = SR_RecognizerIsSignalTooManySamples ( data->recognizer, &reason_status );
22164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( esr_status == ESR_SUCCESS )
22184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
22194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( reason_status == ESR_TRUE )
22204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            LPRINTF ( L("- Signal has too many samples\n") );
22214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
22224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
22234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
22244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        process_status = -1;
22254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
22264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
22274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    esr_status = SR_RecognizerIsSignalTooQuiet ( data->recognizer, &reason_status );
22284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( esr_status == ESR_SUCCESS )
22304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
22314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( reason_status == ESR_TRUE )
22324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            LPRINTF ( L("- Signal is too quiet\n") );
22334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
22344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
22354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
22364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        process_status = -1;
22374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
22384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
22394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    srec_test_log_recognition_failure ( data );
22404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( process_status );
22414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
22424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_process_recognition_unsupported_case ( ApplicationData *data, FILE *results_file )
22464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
22474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int process_status;
22484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    process_status = 0;
22504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LFPRINTF ( results_file, L("E: No results available\n") );
22514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LFPRINTF ( results_file, L("R: <FAILED>\n") );
22524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    srec_test_log_recognition_failure ( data );
22534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( process_status );
22554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
22564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic void srec_test_log_recognition_failure ( ApplicationData *data )
22604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
22614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LPRINTF(L("----------------------------------------------\n"));
22634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LPRINTF(L("TRANSCRIPTION    : '%s'\n"), data->transcription);
22644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LPRINTF(L("<NO-RESULTS>\n"));
22654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LPRINTF(L("----------------------------------------------\n\n"));
22664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
22674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_process_results ( ApplicationData *data, SR_RecognizerStatus esr_recog_status,
22714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                                FILE *results_file, size_t recognition_count )
22724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
22734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int process_status;
22744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    switch ( esr_recog_status )
22764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
22774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        case SR_RECOGNIZER_EVENT_START_OF_UTTERANCE_TIMEOUT:
22784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            process_status = srec_test_process_start_timeout ( data, results_file );
22794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            break;
22804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        case SR_RECOGNIZER_EVENT_RECOGNITION_RESULT:
22824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            process_status = srec_test_process_recognition ( data, results_file, recognition_count );
22834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            break;
22844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        case SR_RECOGNIZER_EVENT_NO_MATCH:
22864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            process_status = srec_test_process_recognition_fail ( data );
22874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            break;
22884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        default:
22904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            process_status = srec_test_process_recognition_unsupported_case ( data, results_file );
22914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            break;
22924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
22934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( process_status );
22944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
22954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
22984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_log_reco_from_file_data ( SR_Grammar *active_grammar, ApplicationData *data, LCHAR *waveform, LCHAR *bos, LCHAR *eos, LCHAR *transcription )
22994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
23004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             log_status;
23014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
23024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    size_t          result_count;
23034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_BOOL            got_results;
23044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    size_t          transcription_length;
23054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
23064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    log_status = 0;
23074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LSPRINTF ( data->transcription, "%s", transcription );
23084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    transcription_length = LSTRLEN ( data->transcription );
23094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
23104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    while ( ( *( data->transcription + transcription_length - 1 ) == '\n' ) ||
23114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            ( *( data->transcription + transcription_length - 1 ) == '\r' ) )
23124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
23134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        *( data->transcription + transcription_length - 1 ) = '\0';
23144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        transcription_length--;
23154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
23164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LPRINTF ( L("D: %s\nC: %s\n"), waveform, data->transcription );
23174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    esr_status = SR_GrammarCheckParse ( active_grammar, data->transcription, 0, &result_count );
23184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
23194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( esr_status == ESR_SUCCESS )
23204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
23214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( result_count > 0 )
23224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
23234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            got_results = ESR_TRUE;
23244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            LPRINTF ( L("Sem (%lu):  invocab=1\n"), (unsigned long)result_count );
23254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
23264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
23274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
23284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            got_results = ESR_FALSE;
23294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            LPRINTF ( L("Sem:  <NO INTERPRETATION FOUND>\n") );
23304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
23314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        esr_status = SR_RecognizerLogWaveformData ( data->recognizer, waveform, data->transcription, atof ( bos ), atof ( eos ), got_results );
23324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
23334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( esr_status != ESR_SUCCESS )
23344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
23354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            log_status = -1;
23364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
23374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
23384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
23394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
23404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
23414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        log_status = -1;
23424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
23434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
23444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( log_status );
23454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
23464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
23474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
23484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
23494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_start_audio ( AUDIOIN_H audio_input_handle )
23504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
23514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int                     start_status;
23524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LHS_AUDIOIN_ERROR       audio_status;
23534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
23544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    start_status = 0;
23554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    audio_status = lhs_audioinStart ( audio_input_handle );
23564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
23574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( audio_status == LHS_AUDIOIN_OK )
23584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
23594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        LPRINTF ( L("\n!!!!!! Start Speaking !!!!!!....\n") );
23604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
23614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
23624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
23634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        start_status = -1;
23644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        srec_test_log_error ( 0, ERROR_LEVEL_CRITICAL, "Audio Device Failed To Start" );
23654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
23664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( start_status );
23674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
23684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
23694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
23704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
23714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_stop_audio ( AUDIOIN_H audio_input_handle )
23724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
23734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int                     stop_status;
23744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LHS_AUDIOIN_ERROR       audio_status;
23754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
23764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    stop_status = 0;
23774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    audio_status = lhs_audioinStop ( audio_input_handle );
23784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
23794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( audio_status == LHS_AUDIOIN_OK )
23804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
23814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        LPRINTF ( L("\n!!!!!! Audio Stopped !!!!!!....\n") );
23824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
23834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
23844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
23854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        stop_status = -1;
23864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
23874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
23884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( stop_status );
23894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
23904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
23914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
23924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint srec_test_get_audio_from_live_input ( ApplicationData *data, AUDIOIN_H audio_input_handle, ESR_BOOL *hit_eof )
23934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
23944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int                     get_status;
23954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LHS_AUDIOIN_ERROR       audio_status;
23964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    AUDIOIN_INFO            input_status;
23974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    unsigned long data__num_samples_read;
23984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
23994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    get_status = 0;
24004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    *hit_eof = ESR_FALSE;
24014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    data->num_samples_read = data->audio_buffer_requested_size;
24024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    data__num_samples_read = data->num_samples_read;
24034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    audio_status = lhs_audioinGetSamples ( audio_input_handle, &data__num_samples_read, data->audio_buffer, &input_status );
24044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    data->num_samples_read = (unsigned  int)data__num_samples_read;
24054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
24064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( audio_status == LHS_AUDIOIN_OK )
24074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
24084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( data->num_samples_read == 0 )
24094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            *hit_eof = ESR_TRUE;
24104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
24114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
24124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
24134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        get_status = -1;
24144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        srec_test_log_error ( 0, ERROR_LEVEL_HIGH, "Audio Device Failed To Read" );
24154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
24164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( get_status );
24174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
24184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
24194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
24204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
24214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_recognize_live ( SR_Grammar *active_grammar, ApplicationData *data, AUDIOIN_H audio_input_handle, FILE *results_file, size_t *recognition_count )
24224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
24234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int                     recognize_status;
24244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode          esr_status;
24254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SR_RecognizerStatus     esr_recog_status;
24264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SR_RecognizerResultType result_type;
24274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_BOOL                    hit_eof;
24284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
24294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( active_grammar != NULL )
24304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
24314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        recognize_status = srec_test_start_audio ( audio_input_handle );
24324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
24334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( recognize_status == 0 )
24344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
24354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( ( data->forced_rec_mode == ForcedRecModeOn ) || ( data->forced_rec_mode == ForcedRecModeOneTime ) )
24364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                SR_GrammarAllowOnly ( active_grammar, data->transcription );
24374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            esr_status = SR_RecognizerStart ( data->recognizer );
24384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
24394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( esr_status == ESR_SUCCESS )
24404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
24414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                ( *recognition_count )++;
24424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                hit_eof = ESR_FALSE;
24434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
24444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                do
24454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
24464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    recognize_status = srec_test_get_audio_from_live_input ( data, audio_input_handle, &hit_eof );
24474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
24484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    if ( recognize_status == 0 )
24494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        recognize_status = srec_test_feed_recognizer ( data, hit_eof, &esr_recog_status, &result_type  );
24504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
24514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                while ( ( hit_eof == ESR_FALSE ) && ( result_type != SR_RECOGNIZER_RESULT_TYPE_COMPLETE ) && ( recognize_status == 0 ) );
24524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
24534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( recognize_status == 0 )
24544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
24554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    recognize_status = srec_test_flush_audio ( data, &esr_recog_status, &result_type );
24564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
24574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    if ( recognize_status == 0 )
24584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
24594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        recognize_status = srec_test_process_results ( data, esr_recog_status, results_file, *recognition_count );
24604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
24614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
24624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
24634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                esr_status = SR_RecognizerStop ( data->recognizer );
24644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
24654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if (esr_status == ESR_SUCCESS )
24664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
24674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    LPRINTF ( L("Recognizer has been stopped\n") );
24684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
24694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                else
24704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
24714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    recognize_status = -1;
24724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    LPRINTF ( L("Recognizer has failed to stop\n") );
24734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
24744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( data->forced_rec_mode == ForcedRecModeOneTime )
24754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
24764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                data->forced_rec_mode = ForcedRecModeOff;
24774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                SR_GrammarAllowAll ( active_grammar );
24784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
24794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            srec_test_stop_audio ( audio_input_handle );
24804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
24814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
24824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     else
24834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project         {
24844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project         recognize_status = -1;
24854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project         /* Log Here */
24864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project         }
24874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     return ( recognize_status );
24884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     }
24894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
24904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
24914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
24924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define STACK_SIZE (1024 * 200)
24934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
24944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef _WIN32
24954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* disable optimization for the next functions as the compiler optimizes away the assignment to mySTACK[i] */
24964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#pragma optimize("", off)
24974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
24984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic void initStack()
24994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{
25004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  int mySTACK[STACK_SIZE];
25014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project {
25024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   /* This extra block is to ensure that local variables of the function occur after buffer mySTACK. */
25034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   int i;
25044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
25054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   for (i = 0; i < STACK_SIZE; ++i)
25064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   {
25074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     mySTACK[i] = 0xDEADBEEF;
25084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   }
25094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project }
25104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
25114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
25124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int analyzeStack()
25134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{
25144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  int mySTACK[STACK_SIZE];
25154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project {
25164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
25174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   /* This extra block is to ensure that local variables of the function occur after buffer mySTACK. */
25184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   int i, j;
25194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
25204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   for (i = STACK_SIZE - 1; i >= 0; --i)
25214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   {
25224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     if (mySTACK[i] == 0xDEADBEEF)
25234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     {
25244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project       /* This might be a candidate for the end of stack marker, or it could be
25254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project          some value that is equal to our marker.  To ensure reliability of
25264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project          this candidate, we will make sure that all remaining entries int the
25274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project          stack are also equal to DEADBEEF.
25284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project       */
25294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project       for (j = i - 1; j >= 0; --j)
25304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project       {
25314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project         if (mySTACK[j] != 0xDEADBEEF)
25324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project         {
25334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project           i = j;
25344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project           break;
25354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project         }
25364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project       }
25374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project       if (j < 0) break;
25384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     }
25394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   }
25404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
25414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   if (i < 0)
25424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     return -1;
25434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   else
25444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     return (STACK_SIZE - 1 - i) * sizeof(int);
25454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project }
25464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
25474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
25484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* restore optmization settings to what they used to be. */
25494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#pragma optimize("", on)
25504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
25514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
25524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
25534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef ACCURACY_TESTING
25544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic void srec_test_clean_up_sentence ( char* sentence )
25554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
25564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int                         clean_up_status;
25574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int                         sentence_finished;
25584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SENTENCE_CLEANING_STATES    current_state;
25594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    char                        *current_input;
25604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    char                        *current_output;
25614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
25624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    clean_up_status = 0;
25634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    sentence_finished = 0;
25644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    current_state = SENTENCE_BEGIN;
25654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    current_input = sentence;
25664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    current_output = sentence;
25674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
25684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    do
25694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
25704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        switch ( *current_input )
25714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
25724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            case '\0':
25734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                switch ( current_state )
25744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
25754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_BEGIN:
25764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
25774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
25784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_BEGIN_BRACKET_BEGIN:  /* Is this error condition */
25794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = '\0';
25804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        clean_up_status = -1;
25814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
25824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
25834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_BEGIN_BRACKET_END:
25844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = '\0';
25854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
25864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
25874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_MIDDLE:
25884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = '\0';
25894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
25904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
25914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_MIDDLE_BRACKET_BEGIN: /* Is this error condition */
25924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *( current_output - 1 ) = '\0';
25934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        clean_up_status = -1;
25944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
25954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
25964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_MIDDLE_BRACKET_END:
25974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *( current_output - 1 ) = '\0';
25984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
25994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
26004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_MIDDLE_WITH_SPACE:
26014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *( current_output - 1 ) = '\0';
26024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
26034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
26044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    default:
26054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = '\0';
26064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        /* Log error */
26074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
26084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
26094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                sentence_finished = 1;
26104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                break;
26114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
26124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            case ' ':
26134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                switch ( current_state )
26144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
26154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_BEGIN:
26164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
26174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
26184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_BEGIN_BRACKET_BEGIN:
26194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
26204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
26214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_BEGIN_BRACKET_END:
26224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
26234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
26244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_MIDDLE:
26254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = ' ';
26264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        current_output++;
26274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        current_state = SENTENCE_MIDDLE_WITH_SPACE;
26284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
26294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
26304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_MIDDLE_BRACKET_BEGIN: /* Is this error condition */
26314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
26324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
26334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_MIDDLE_BRACKET_END:
26344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
26354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
26364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_MIDDLE_WITH_SPACE:
26374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
26384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
26394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    default:
26404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = '\0';
26414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        clean_up_status = -1;
26424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        /* Log error */
26434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
26444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
26454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                current_input++;
26464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                break;
26474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
26484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            case '[':
26494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                switch ( current_state )
26504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
26514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_BEGIN:
26524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        current_state = SENTENCE_BEGIN_BRACKET_BEGIN;
26534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
26544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
26554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_BEGIN_BRACKET_BEGIN:
26564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = '\0';
26574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        clean_up_status = -1;
26584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        /* Log error */
26594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
26604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
26614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_BEGIN_BRACKET_END:
26624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        current_state = SENTENCE_BEGIN_BRACKET_BEGIN;
26634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
26644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
26654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_MIDDLE:
26664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = ' ';
26674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        current_output++;
26684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        current_state = SENTENCE_MIDDLE_BRACKET_BEGIN;
26694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
26704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
26714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_MIDDLE_BRACKET_BEGIN: /* Is this error condition */
26724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = '\0';
26734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        clean_up_status = -1;
26744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        /* Log error */
26754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
26764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
26774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_MIDDLE_BRACKET_END:
26784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        current_state = SENTENCE_MIDDLE_BRACKET_BEGIN;
26794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
26804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
26814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_MIDDLE_WITH_SPACE:
26824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        current_state = SENTENCE_MIDDLE_BRACKET_BEGIN;
26834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
26844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
26854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    default:
26864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = '\0';
26874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        clean_up_status = -1;
26884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        /* Log error */
26894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
26904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
26914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                current_input++;
26924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                break;
26934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
26944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            case ']':
26954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                switch ( current_state )
26964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
26974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_BEGIN:
26984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = '\0';
26994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        clean_up_status = -1;
27004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        /* Log error */
27014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
27024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
27034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_BEGIN_BRACKET_BEGIN:
27044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        current_state = SENTENCE_BEGIN_BRACKET_END;
27054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
27064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
27074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_BEGIN_BRACKET_END:
27084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = '\0';
27094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        clean_up_status = -1;
27104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        /* Log error */
27114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
27124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
27134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_MIDDLE:
27144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = '\0';
27154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        clean_up_status = -1;
27164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        /* Log error */
27174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
27184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
27194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_MIDDLE_BRACKET_BEGIN: /* Is this error condition */
27204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        current_state = SENTENCE_MIDDLE_BRACKET_END;
27214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
27224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
27234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_MIDDLE_BRACKET_END:
27244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = '\0';
27254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        clean_up_status = -1;
27264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        /* Log error */
27274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
27284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
27294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_MIDDLE_WITH_SPACE:
27304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = '\0';
27314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        clean_up_status = -1;
27324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        /* Log error */
27334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
27344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
27354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    default:
27364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = '\0';
27374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        clean_up_status = -1;
27384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        /* Log error */
27394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
27404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
27414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                current_input++;
27424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                break;
27434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
27444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            default:
27454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                switch ( current_state )
27464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
27474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_BEGIN:
27484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = *current_input;
27494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        current_output++;
27504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        current_state = SENTENCE_MIDDLE;
27514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
27524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
27534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_BEGIN_BRACKET_BEGIN:
27544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
27554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
27564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_BEGIN_BRACKET_END:
27574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = *current_input;
27584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        current_output++;
27594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        current_state = SENTENCE_MIDDLE;
27604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
27614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
27624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_MIDDLE:
27634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = *current_input;
27644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        current_output++;
27654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        current_state = SENTENCE_MIDDLE;
27664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
27674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
27684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_MIDDLE_BRACKET_BEGIN:
27694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
27704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
27714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_MIDDLE_BRACKET_END:
27724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = *current_input;
27734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        current_output++;
27744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        current_state = SENTENCE_MIDDLE;
27754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
27764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
27774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    case SENTENCE_MIDDLE_WITH_SPACE:
27784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = *current_input;
27794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        current_output++;
27804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        current_state = SENTENCE_MIDDLE;
27814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
27824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
27834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    default:
27844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        *current_output = '\0';
27854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        clean_up_status = -1;
27864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        /* Log error */
27874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        break;
27884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
27894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                current_input++;
27904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                break;
27914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
27924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
27934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    while ( ( sentence_finished == 0 ) && ( clean_up_status == 0 ) );
27944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
27954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
27964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
27974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
27984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode srec_test_parse ( SR_Grammar* grammar, const LCHAR* trans, LCHAR* meaning, size_t *len )
27994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
28004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode      parse_status;
28014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    char                cleaned_trans[TRANSCRIPTION_SIZE];
28024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SR_SemanticResult   *semanticResults;
28034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    size_t              result_count;
28044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
28054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    result_count = 0;
28064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    strcpy( cleaned_trans, trans );
28074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    srec_test_clean_up_sentence ( cleaned_trans );
28084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
28094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /* create the result holders, initially not greater than MAX */
28104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    parse_status = SR_SemanticResultCreate ( &semanticResults );
28114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
28124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( parse_status == ESR_SUCCESS )
28134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
28144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        result_count = 1;
28154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        parse_status = SR_SemanticProcessor_Flush( ( (SR_GrammarImpl*)grammar )->semproc );
28164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
28174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( parse_status == ESR_SUCCESS )
28184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
28194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            parse_status = SR_SemanticProcessor_SetParam( ((SR_GrammarImpl*)grammar)->semproc, L("literal"), cleaned_trans );
28204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
28214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( parse_status == ESR_SUCCESS )
28224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
28234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                parse_status = grammar->checkParse ( grammar, cleaned_trans, &semanticResults, (size_t*)&result_count );
28244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
28254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( parse_status == ESR_SUCCESS )
28264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
28274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    if ( result_count < 1 )
28284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
28294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        LSTRCPY ( meaning, L("") );
28304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        SR_SemanticResultDestroy( semanticResults);
28314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        parse_status = ESR_NO_MATCH_ERROR;
28324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
28334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    else
28344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
28354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        parse_status = semanticResults->getValue ( semanticResults, "meaning", meaning, len);
28364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        SR_SemanticResultDestroy( semanticResults);
28374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
28384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
28394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
28404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
28414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
28424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( parse_status );
28434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
28444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
28454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
28464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
28474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_get_run_params ( unsigned int *num_shutdown_loops, unsigned int *num_continuous_run_loops )
28484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
28494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int get_status;
28504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
28514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    get_status = get_num_srec_test_shutdown_times ( num_shutdown_loops );
28524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
28534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( get_status == 0 )
28544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                get_status = get_num_srec_test_continuous_loops ( num_continuous_run_loops );
28554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
28564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( get_status );
28574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
28584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
28594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
28604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
28614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_shutdown_application_data ( ApplicationData *applicationData )
28624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
28634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int init_status;
28644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int i;
28654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
28664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    init_status = 0;
28674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
28684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->argc = 0;
28694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->argv = NULL;
28704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->outputLog = PSTDOUT;       // may need to check if non PSTDOUT or non PSTDERROR
28714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->locale = -1;
28724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
28734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if (applicationData->recognizer != NULL)
28744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
28754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        srec_test_log_error ( 0, ERROR_LEVEL_HIGH, L("Failed To Cleanup Recognizer") );
28764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*        SR_RecognizerLogSessionEnd ( applicationData->recognizer );
28774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        SR_RecognizerDestroy ( applicationData->recognizer );*/
28784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        applicationData->recognizer = NULL;
28794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        applicationData->result = NULL;                 // this was deallocated by SR_RecognizerDestroy()
28804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
28814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
28824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if (applicationData->vocabulary != NULL)
28834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
28844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        srec_test_log_error ( 0, ERROR_LEVEL_HIGH, L("Failed To Cleanup Vocabulary") );
28854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*        SR_VocabularyDestroy(applicationData->vocabulary);
28864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        applicationData->vocabulary = NULL;*/
28874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
28884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
28894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
28904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if (applicationData->nametag != NULL)
28914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
28924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        srec_test_log_error ( 0, ERROR_LEVEL_HIGH, L("Failed To Cleanup NameTag") );
28934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*        SR_NametagDestroy(applicationData->nametag);
28944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        applicationData->nametag = NULL;*/
28954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
28964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
28974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if (applicationData->nametags != NULL)
28984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
28994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        srec_test_log_error ( 0, ERROR_LEVEL_HIGH, L("Failed To Cleanup NameTagSet") );
29004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*        SR_NametagsDestroy(applicationData->nametags);
29014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        applicationData->nametags = NULL;*/
29024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
29034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
29044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    for (i = 0; i < applicationData->grammarCount; ++i)
29054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        srec_test_log_error ( 0, ERROR_LEVEL_HIGH, L("Failed To Cleanup Grammar") );
29064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*
29074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( applicationData->grammars [i] != NULL )
29084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
29094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            printf ( "!!!!!!!!  %d Grammars Not Destroyed !!!!!!!!!!!!\n", i );
29104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            SR_GrammarDestroy(applicationData->grammars[i]);
29114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            applicationData->grammars[i] = NULL;
29124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
29134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
29144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
29154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->activeGrammar = -1;
29164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->activeRule = NULL;
29174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->voiceEnrollment = NULL;
29184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project*/
29194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->raw_waveform = NULL;
29204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->raw_waveform_filename [0] = L( '\0' );
29214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->raw_waveform_file = NULL;
29224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->transcription[0] = L( '\0' );
29234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->forced_rec_mode = ForcedRecModeNotSet;
29244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
29254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( init_status );
29264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
29274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
29284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
29294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
29304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_init_application_data ( ApplicationData *applicationData, int arg_count, LCHAR *arg_vals [] )
29314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
29324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int init_status;
29334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
29344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    init_status = 0;
29354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->argc = arg_count;
29364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->argv = arg_vals;
29374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->outputLog = PSTDOUT;
29384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->locale = -1;
29394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->recognizer = NULL;
29404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->result = NULL;
29414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->vocabulary = NULL;
29424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->nametag = NULL;
29434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->nametags = NULL;
29444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->grammarCount = 0;  /* No need to initialize arrays, index is 0 */
29454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->active_grammar_num = -1;
29464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*    applicationData->activeRule = NULL;
29474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData-> = applicationData->voiceEnrollment = NULL;*/
29484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->audio_buffer_requested_size = DEFAULT_AUDIO_BUFFER_SIZE;
29494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->raw_waveform = NULL;
29504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->raw_waveform_filename [0] = L( '\0' );
29514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->raw_waveform_file = NULL;
29524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->transcription[0] = L( '\0' );
29534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->forced_rec_mode = ForcedRecModeNotSet;
29544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( init_status );
29554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
29564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
29574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
29584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_run_test_shutdown_session ( ApplicationData *applicationData )
29594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
29604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int shutdown_status;
29614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
29624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    shutdown_status = 0;
29634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
29644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SR_RecognizerUnsetup ( applicationData->recognizer); // releases acoustic models
29654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SR_RecognizerDestroy ( applicationData->recognizer );
29664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->recognizer = NULL;
29674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ShutdownSession ( );
29684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
29694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( shutdown_status );
29704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
29714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
29724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
29734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
29744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_run_test_init_session ( ApplicationData *applicationData )
29754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{
29764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  int             run_status;
29774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode  esr_status;
29784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
29794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  run_status = 0;
29804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  LPRINTF(L("\nCreate recognizer:\n"));
29814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  LPRINTF(L("    InitSession()\n"));
29824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  esr_status = InitSession ( applicationData->argc, applicationData->argv );
29834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
29844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  if ( esr_status == ESR_SUCCESS )
29854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
29864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project      LPRINTF(L("    SR_RecognizerCreate()\n"));
29874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project      esr_status = SR_RecognizerCreate ( &applicationData->recognizer );
29884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
29894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project      if ( esr_status != ESR_SUCCESS )
29904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project	{
29914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project	  ShutdownSession ( );
29924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project	  run_status = -1;
29934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project	  /* Log Here */
29944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project	} else {
29954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project	  LPRINTF(L("    SR_RecognizerSetup()\n"));
29964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project	  esr_status = SR_RecognizerSetup ( applicationData->recognizer);
29974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project	  if ( esr_status != ESR_SUCCESS )
29984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project	    {
29994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project	      ShutdownSession ( );
30004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project	      run_status = -1;
30014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project	      /* Log Here */
30024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project	    }
30034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project	}
30044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
30054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  return ( run_status );
30064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
30074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
30084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
30094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_run_test_shutdown_vocab_grammar ( ApplicationData *applicationData )
30104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
30114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int shutdown_status;
30124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
30134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    shutdown_status = 0;
30144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SR_RecognizerLogSessionEnd ( applicationData->recognizer );
30154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*    SR_GrammarDestroy ( applicationData->grammars [0].grammar );
30164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->grammars [0].grammar = NULL;*/
30174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    SR_VocabularyDestroy ( applicationData->vocabulary );
30184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->vocabulary = NULL;
30194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
30204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( shutdown_status );
30214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
30224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
30234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
30244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
30254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_run_test_init_vocab_grammar ( ApplicationData *applicationData )
30264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
30274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             run_status;
30284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
30294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LCHAR           filename[P_PATH_MAX];
30304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    size_t          len;
30314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
30324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    run_status = 0;
30334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   /* Create vocabulary object and associate with grammar */
30344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LPRINTF(L("Create vocabulary object and associate with grammar:\n"));
30354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    len = P_PATH_MAX;
30364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    esr_status = ESR_SessionGetLCHAR ( L("cmdline.vocabulary"), filename, &len );
30374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
30384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( esr_status == ESR_SUCCESS )
30394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
30404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        LPRINTF(L("    SR_VocabularyLoad()\n"));
30414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        esr_status = SR_VocabularyLoad ( filename, &applicationData->vocabulary );
30424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
30434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( esr_status == ESR_SUCCESS )
30444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
30454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            LPRINTF(L("    SR_VocabularyGetLanguage()\n"));
30464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            esr_status =  SR_VocabularyGetLanguage ( applicationData->vocabulary, &applicationData->locale );
30474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
30484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( esr_status == ESR_SUCCESS )
30494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
30504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                /* start a new log session */
30514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                LPRINTF( L("Start a new log session:\n") );
30524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                LPRINTF( L("    SR_RecognizerLogSessionStart()\n") );
30534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                esr_status = SR_RecognizerLogSessionStart ( applicationData->recognizer, L("SRecTest.session1") );
30544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
30554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( esr_status != ESR_SUCCESS )
30564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
30574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    SR_VocabularyDestroy ( applicationData->vocabulary );
30584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    applicationData->vocabulary = NULL;
30594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    run_status = -1;
30604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    /* Log here */
30614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
30624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
30634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            else
30644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
30654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                SR_VocabularyDestroy ( applicationData->vocabulary );
30664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                applicationData->vocabulary = NULL;
30674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                run_status = -1;
30684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                /* Log Here */
30694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
30704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
30714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
30724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
30734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            run_status = -1;
30744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
30754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
30764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
30774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
30784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
30794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        run_status = -1;
30804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
30814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
30824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( run_status );
30834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
30844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
30854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
30864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
30874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_run_test_shutdown ( ApplicationData *applicationData )
30884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
30894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int shutdown_status;
30904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
30914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    shutdown_status = srec_test_run_test_shutdown_vocab_grammar ( applicationData );
30924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
30934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( shutdown_status == 0 )
30944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
30954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            shutdown_status = srec_test_run_test_shutdown_session ( applicationData );
30964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
30974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( shutdown_status );
30984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
30994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_run_test_init ( ApplicationData *applicationData )
31024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{
31034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  int run_status;
31044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  run_status = srec_test_run_test_init_session ( applicationData );
31064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  if ( run_status == 0 )
31084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
31094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project      run_status = srec_test_run_test_init_vocab_grammar ( applicationData );
31104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project      if ( run_status != 0 )
31124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project	{
31134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project	  srec_test_run_test_shutdown_session ( applicationData );
31144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project	}
31154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
31164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  else
31174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
31184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project      srec_test_run_test_shutdown_session ( applicationData );
31194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
31204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  return ( run_status );
31214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
31224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_run_test_execute ( ApplicationData *applicationData, AUDIOIN_H audio_input_handle )
31254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
31264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             run_status;
31274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
31284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    run_status = 0;
31304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    applicationData->nametag = NULL;
31314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LPRINTF(L("Recognize:\n"));
31334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LPRINTF(L("    SR_NametagsCreate()\n"));
31344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    esr_status = SR_NametagsCreate ( &applicationData->nametags );
31354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( esr_status == ESR_SUCCESS )
31374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
31384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        run_status = srec_test_process_commands ( applicationData, audio_input_handle );
31394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        SR_NametagsDestroy ( applicationData->nametags );
31404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        applicationData->nametags = NULL;
31414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( run_status != 0 )
31434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
31444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
31454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
31464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
31474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
31484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
31494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        run_status = -1;
31504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
31514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
31524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( run_status );
31534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
31544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_run_test ( ApplicationData *applicationData, AUDIOIN_H audio_input_handle )
31584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
31594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int run_status;
31604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    run_status = srec_test_run_test_init ( applicationData );
31624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( run_status == 0 )
31644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
31654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        run_status = srec_test_run_test_execute ( applicationData, audio_input_handle );
31664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        srec_test_run_test_shutdown ( applicationData );
31674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
31684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( run_status );
31694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
31704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_shutdown_memory_system ( void )
31744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
31754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int shutdown_status;
31764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    shutdown_status = 0;
31784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    PMemShutdown ( );
31794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( shutdown_status );
31814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
31824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_init_memory_system ( unsigned int srec_test_heap_size )
31864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
31874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             init_status;
31884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
31894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    init_status = 0;
31914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    esr_status = PMemInit ( );
31924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
31934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( esr_status == ESR_SUCCESS )
31944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
31954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        PSTACK_SIZE_INIT ( );   /* I don't know what this is, it should probably have a status */
31964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
31974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
31984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
31994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        init_status = -1;
32004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
32014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
32024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( init_status );
32034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
32044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_shutdown_file_system ( void )
32084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
32094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int shutdown_status;
32104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    shutdown_status = 0;
32124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( shutdown_status );
32144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
32154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_init_file_system ( int arg_count, LCHAR *arg_vals [] )
32194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
32204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             init_status;
32214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    init_status = 0;
32234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( init_status );
32244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
32254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_shutdown_logging_system ( PLogger *logger )
32294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
32304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int shutdown_status;
32314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    shutdown_status = 0;
32334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    PLogShutdown ( );
32344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( shutdown_status );
32364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
32374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_init_logging_system ( int arg_count, LCHAR *arg_vals [], PLogger *logger )
32414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
32424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int             init_status;
32434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    ESR_ReturnCode  esr_status;
32444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    init_status = 0;
32464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    esr_status = PLogCreateFileLogger ( PSTDOUT, &logger );
32474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( esr_status == ESR_SUCCESS )
32494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
32504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        esr_status = PLogInit ( logger, 0 );
32514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( esr_status != ESR_SUCCESS )
32534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
32544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*          pfclose ( (struct PFile_t *)logger );       I'm not sure this is correct, check with Gili */
32554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            init_status = -1;
32564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            /* Log Here */
32574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
32584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
32594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    else
32604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
32614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        init_status = -1;
32624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
32634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
32644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( init_status );
32654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
32664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_init_audio_input ( AUDIOIN_H *audio_input_handle )
32704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
32714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int                 init_status;
32724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LHS_AUDIOIN_ERROR   audio_status;
32734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    init_status = 0;
32754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    audio_status = lhs_audioinOpen ( WAVE_MAPPER, SREC_TEST_DEFAULT_AUDIO_FREQUENCY, audio_input_handle );
32764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( audio_status != LHS_AUDIOIN_OK )
32784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
32794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        init_status = -1;
32804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        srec_test_log_error ( 0, ERROR_LEVEL_CRITICAL, "Audio Device Failed To Open" );
32814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
32824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( init_status );
32834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
32844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_shutdown_audio_input ( AUDIOIN_H *audio_input_handle )
32884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
32894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int                 shutdown_status;
32904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    LHS_AUDIOIN_ERROR   audio_status;
32914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    shutdown_status = 0;
32934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    audio_status = lhs_audioinClose ( audio_input_handle );
32944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
32954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( audio_status != LHS_AUDIOIN_OK )
32964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
32974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        shutdown_status = -1;
32984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        /* Log Here */
32994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
33004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( shutdown_status );
33014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
33024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_shutdown_system ( PLogger *logger, AUDIOIN_H *audio_input_handle )
33064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
33074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int shutdown_status;
33084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    shutdown_status = srec_test_shutdown_audio_input ( audio_input_handle );
33104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( shutdown_status == 0 )
33124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
33134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        shutdown_status = srec_test_shutdown_logging_system ( logger );
33144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( shutdown_status == 0 )
33164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
33174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            shutdown_status = srec_test_shutdown_file_system ( );
33184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( shutdown_status == 0 )
33204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                shutdown_status = srec_test_shutdown_memory_system ( );
33214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
33224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
33234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( shutdown_status );
33244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
33254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic int srec_test_init_system ( unsigned int srec_test_heap_size, PLogger* logger, int arg_count, LCHAR *arg_vals [], AUDIOIN_H *audio_input_handle )
33304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
33314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    int init_status;
33324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   /* register signal handler so cleanup works on CTRL-C (Win32) */
33344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef _WIN32
33354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    signal(SIGINT, signal_handler_SIGINT);
33364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
33374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    init_status = srec_test_init_memory_system ( srec_test_heap_size );
33384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    if ( init_status == 0 )
33404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
33414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        init_status = srec_test_init_file_system ( arg_count, arg_vals );
33424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( init_status == 0 )
33444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
33454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            init_status = srec_test_init_logging_system ( arg_count, arg_vals, logger );
33464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            if ( init_status == 0 )
33484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
33494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                init_status = srec_test_init_audio_input ( audio_input_handle );
33504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( init_status != 0 )
33524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
33534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    srec_test_shutdown_logging_system ( logger );
33544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    srec_test_shutdown_file_system ( );
33554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    srec_test_shutdown_memory_system ( );
33564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
33574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
33584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            else
33594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
33604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                srec_test_shutdown_file_system ( );
33614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                srec_test_shutdown_memory_system ( );
33624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
33634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
33644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        else
33654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
33664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            srec_test_shutdown_memory_system ( );
33674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
33684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
33694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( init_status );
33704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
33714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if defined(_DEBUGHEAP) && defined(_DEBUG) && defined(WIN32)
33754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project_CrtMemState s0,s1,s2;
33764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid OutputDivider( void )
33804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
33814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    _RPT1(_CRT_WARN, "%s", "********************************************************************\n");
33834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
33844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid OutputNewline( void )
33884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
33894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    _RPT1(_CRT_WARN, "%s", "\n");
33914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
33924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
33934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
33964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if defined(_DEBUGHEAP) && defined(_DEBUG) && defined(WIN32)
33974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid initialize_heap_logging ( void )
33984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
33994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
34004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     _CrtSetReportMode(_CRT_WARN,   _CRTDBG_MODE_FILE);
34014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     _CrtSetReportFile(_CRT_WARN,   _CRTDBG_FILE_STDOUT);
34024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     _CrtSetReportMode(_CRT_ERROR,  _CRTDBG_MODE_FILE);
34034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     _CrtSetReportFile(_CRT_ERROR,  _CRTDBG_FILE_STDOUT);
34044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE);
34054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT);
34064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     _CrtMemCheckpoint(&s0);
34074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     }
34084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
34094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
34104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
34114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
34124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if defined(_DEBUGHEAP) && defined(_DEBUG) && defined(WIN32)
34134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid execute_heap_logging ( void )
34144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
34154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    OutputNewline();
34164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    OutputDivider();
34174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    _RPT1(_CRT_WARN, "%s", "After cleanup, before exiting main()\n");
34184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    OutputDivider();
34194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    _CrtMemCheckpoint(&s1);
34204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    _CrtMemDifference(&s2, &s0, &s1);
34214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    _CrtMemDumpStatistics(&s2);
34224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    OutputNewline();
34234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    OutputDivider();
34244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    _RPT1(_CRT_WARN, "%s", "Checking for memory leaks...\n");
34254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    OutputDivider();
34264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    _CrtDumpMemoryLeaks();
34274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
34284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
34294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
34304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
34314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
34324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint main(int argc, LCHAR* argv [] )
34334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
34344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     int             test_status;
34354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     unsigned int    num_shutdown_loops;
34364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     unsigned int    current_shutdown_loop;
34374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     unsigned int    num_continuous_run_loops;
34384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     unsigned int    current_continuous_run_loop;
34394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project     unsigned int    srec_test_heap_size;
34404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
34414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef _WIN32
34424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    initStack();
34434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
34444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        {
34454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    /* This extra block is there to get a more precise estimate of the stack
34464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project      depth.  This way we also make sure that the local variables of main are
34474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project      taken into acount when estimating the stack size.
34484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
34494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        ApplicationData applicationData;
34504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        PLogger         *logger;
34514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        AUDIOIN_H       audio_in_handle;
34524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
34534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        srec_test_heap_size = ( 4 * 1024 * 1024 );
34544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        logger = NULL;
34554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        test_status = srec_test_get_run_params ( &num_shutdown_loops, &num_continuous_run_loops );
34564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
34574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        if ( test_status == 0 )
34584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            {
34594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            current_shutdown_loop = 0;
34604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
34614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            while ( ( current_shutdown_loop < num_shutdown_loops )/* && ( test_status == 0 )*/ )
34624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                {
34634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if defined(_DEBUGHEAP) && defined(_DEBUG) && defined(WIN32)
34644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                initialize_heap_logging ( );
34654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
34664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                test_status = srec_test_init_system ( srec_test_heap_size, logger, argc, argv, &audio_in_handle );
34674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
34684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                if ( test_status == 0 )
34694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    {
34704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    current_continuous_run_loop = 0;
34714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
34724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    while ( ( current_continuous_run_loop < num_continuous_run_loops ) && ( test_status == 0 ) )
34734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        {
34744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        test_status = srec_test_init_application_data ( &applicationData, argc, argv );
34754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
34764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        if ( test_status == 0 )
34774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            {
34784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            test_status = srec_test_run_test ( &applicationData, audio_in_handle );
34794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            srec_test_shutdown_application_data ( &applicationData );
34804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                            }
34814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        current_continuous_run_loop++;
34824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                        }
34834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    test_status = srec_test_shutdown_system ( logger, &audio_in_handle );
34844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                    }
34854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                current_shutdown_loop++;
34864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#if defined(_DEBUGHEAP) && defined(_DEBUG) && defined(WIN32)
34874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                execute_heap_logging ( );
34884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
34894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project                }
34904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project            }
34914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project        }
34924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
34934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    return ( test_status );
34944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
34954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
34964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3497