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