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