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