1b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* 2b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland 3b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 4b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * Licensed under the Apache License, Version 2.0 (the "License"); 5b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * you may not use this file except in compliance with the License. 6b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * You may obtain a copy of the License at 7b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 8b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * http://www.apache.org/licenses/LICENSE-2.0 9b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 10b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * Unless required by applicable law or agreed to in writing, software 11b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * distributed under the License is distributed on an "AS IS" BASIS, 12b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * See the License for the specific language governing permissions and 14b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * limitations under the License. 15b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen */ 16b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/** 17b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * @file picorsrc.h 18b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 19b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland 20b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * All rights reserved. 21b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 22b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * History: 23b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * - 2009-04-20 -- initial version 24b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 25b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen */ 26b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/** 27b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * @addtogroup picorsrc 28b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 29b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * <b> Pico Resource Management module </b>\n 30b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 31b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/ 32b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 33b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#ifndef PICORSRC_H_ 34b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICORSRC_H_ 35b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 36b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#include "picodefs.h" 37b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#include "picoos.h" 38b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#include "picoknow.h" 39b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 40b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#ifdef __cplusplus 41b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenextern "C" { 42b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif 43b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#if 0 44b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen} 45b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif 46b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 47b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 48b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICORSRC_MAX_RSRC_NAME_SIZ PICO_MAX_RESOURCE_NAME_SIZE /* including terminating NULLC */ 49b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 50b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICORSRC_MAX_NUM_VOICES 64 51b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 52b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* size of kb array of a voice */ 53b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICORSRC_KB_ARRAY_SIZE 64 54b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 55b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef picoos_char picorsrc_resource_name_t[PICORSRC_MAX_RSRC_NAME_SIZ]; 56b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 57b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef enum picorsrc_resource_type { 58b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICORSRC_TYPE_NULL, 59b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICORSRC_TYPE_TEXTANA, 60b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICORSRC_TYPE_SIGGEN, 61b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICORSRC_TYPE_USER_LEX, 62b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICORSRC_TYPE_USER_PREPROC, 63b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICORSRC_TYPE_OTHER 64b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen} picorsrc_resource_type_t; 65b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 66b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 67b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICORSRC_FIELD_VALUE_TEXTANA (picoos_char *) "TEXTANA" 68b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICORSRC_FIELD_VALUE_SIGGEN (picoos_char *) "SIGGEN" 69b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICORSRC_FIELD_VALUE_USERLEX (picoos_char *) "USERLEX" 70b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICORSRC_FIELD_VALUE_USERTPP (picoos_char *) "USERTPP" 71b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 72b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 73b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 74b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef struct picorsrc_resource_manager * picorsrc_ResourceManager; 75b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef struct picorsrc_voice * picorsrc_Voice; 76b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef struct picorsrc_resource * picorsrc_Resource; 77b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 78b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 79b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* ************************************************************************** 80b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 81b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * file name extensions 82b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 83b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen ****************************************************************************/ 84b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 85b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICO_BIN_EXTENSION ".bin" 86b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICO_INPLACE_EXTENSION ".inp" 87b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 88b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 89b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 90b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* ************************************************************************** 91b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 92b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * construct/destruct resource manager 93b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 94b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen ****************************************************************************/ 95b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 96b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* create resource manager, given a config file name (or default name, if empty) */ 97b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 98b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenpicorsrc_ResourceManager picorsrc_newResourceManager(picoos_MemoryManager mm, picoos_Common common /* , picoos_char * configFile */); 99b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 100b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenvoid picorsrc_disposeResourceManager(picoos_MemoryManager mm, picorsrc_ResourceManager * this); 101b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 102b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 103b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* ************************************************************************** 104b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 105b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * resources 106b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 107b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen ****************************************************************************/ 108b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 109b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/** 110b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * Returns non-zero if 'resource' is a valid resource handle, zero otherwise. 111b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen */ 112b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenpicoos_int16 picoctrl_isValidResourceHandle(picorsrc_Resource resource); 113b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 114b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* load resource file. the type of resource file, magic numbers, checksum etc. are in the header, then follows the directory 115b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * (with fixed structure per resource type), then the knowledge bases themselves (as byte streams) */ 116b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenpico_status_t picorsrc_loadResource(picorsrc_ResourceManager this, 117b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen picoos_char * fileName, picorsrc_Resource * resource); 118b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 119b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* unload resource file. (warn if resource file is busy) */ 120b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenpico_status_t picorsrc_unloadResource(picorsrc_ResourceManager this, picorsrc_Resource * rsrc); 121b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 122b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 123b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenpico_status_t picorsrc_createDefaultResource(picorsrc_ResourceManager this /*, 124b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen picorsrc_Resource * resource */); 125b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 126b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 127b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenpico_status_t picorsrc_rsrcGetName(picorsrc_Resource resource, 128b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen picoos_char * name, picoos_uint32 maxlen); 129b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 130b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* ************************************************************************** 131b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 132b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * voice definitions 133b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 134b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen ****************************************************************************/ 135b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 136b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 137b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenpico_status_t picorsrc_createVoiceDefinition(picorsrc_ResourceManager this, 138b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen picoos_char * voiceName); 139b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 140b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 141b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenpico_status_t picorsrc_releaseVoiceDefinition(picorsrc_ResourceManager this, 142b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen picoos_char * voiceName); 143b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 144b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenpico_status_t picorsrc_addResourceToVoiceDefinition(picorsrc_ResourceManager this, 145b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen picoos_char * voiceName, picoos_char * resourceName); 146b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 147b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* ************************************************************************** 148b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 149b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * voices 150b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 151b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen ****************************************************************************/ 152b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 153b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/** object : Voice 154b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * shortcut : voice 155b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 156b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen */ 157b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 158b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef struct picorsrc_voice { 159b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 160b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen picorsrc_Voice next; 161b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 162b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen picoknow_KnowledgeBase kbArray[PICORSRC_KB_ARRAY_SIZE]; 163b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 164b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen picoos_uint8 numResources; 165b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 166b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen picorsrc_Resource resourceArray[PICO_MAX_NUM_RSRC_PER_VOICE]; 167b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 168b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 169b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen} picorsrc_voice_t; 170b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 171b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 172b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 173b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* create voice, given a voice name. the corresponding lock counts are incremented */ 174b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenpico_status_t picorsrc_createVoice(picorsrc_ResourceManager this, const picoos_char * voiceName, picorsrc_Voice * voice); 175b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 176b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* dispose voice. the corresponding lock counts are decremented. */ 177b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenpico_status_t picorsrc_releaseVoice(picorsrc_ResourceManager this, picorsrc_Voice * voice); 178b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 179b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#ifdef __cplusplus 180b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen} 181b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif 182b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 183b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 184b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 185b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif /*PICORSRC_H_*/ 186