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 picoapi.h
18b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen *
19b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * SVOX Pico application programming interface
20b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * (SVOX Pico version 1.0 and later)
21b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen *
22b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland
23b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * All rights reserved.
24b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen *
25b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * History:
26b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * - 2009-04-20 -- initial version
27b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen */
28b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
29b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
30b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
31b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * @addtogroup picoapi
32b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen *
33b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen@b Basic_Concepts
34b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
35b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen@e SVOX_Pico_System
36b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
37b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenThe SVOX Pico 'system' is the entity that manages data common to all
38b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenSVOX Pico engines, e.g. linguistic data needed to do text-to-speech
39b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen(TTS) synthesis, license key, etc.  All API functions on the Pico
40b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chensystem level take a 'pico_System' handle as the first parameter.
41b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
42b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen@e SVOX_Pico_Engine
43b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
44b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenA SVOX Pico 'engine' provides the functions needed to perform actual
45b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chensynthesis. Currently there can be only one engine instance at a time
46b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen(concurrent engines will be possible in the future). All API functions
47b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenat the engine level take a 'pico_Engine' handle as the first
48b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenparameter.
49b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
50b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen@e SVOX_Pico_Resource
51b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
52b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenA SVOX Pico 'resource' denotes all the language- and speaker-dependent
53b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chendata needed to do TTS synthesis. In the following, the term 'resource'
54b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenmay be used interchangeably with the term 'lingware'. A resource file
55b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chencontains a set of knowledge bases for an entire TTS voice or parts of
56b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenit.
57b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
58b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
59b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen@b Basic_Usage
60b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
61b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenIn its most basic form, an application must call the following
62b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenfunctions in order to perform TTS synthesis:
63b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
64b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   - pico_initialize
65b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   - pico_loadResource
66b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   - pico_createVoiceDefinition
67b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   - pico_addResourceToVoiceDefinition
68b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   - pico_newEngine
69b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   - pico_putTextUtf8
70b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   - pico_getData (several times)
71b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   - pico_disposeEngine
72b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   - pico_releaseVoiceDefinition
73b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   - pico_unloadResource
74b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   - pico_terminate
75b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
76b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenIt is possible to repeatedly run the above sequence, i.e., the SVOX
77b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenPico system may be initialized and terminated multiple times. This may
78b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenbe useful in applications that need TTS functionality only from time
79b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chento time.
80b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
81b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
82b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen@b Conventions
83b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
84b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen@e Function_arguments
85b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
86b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenAll arguments that only return values are marked by a leading 'out...'
87b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenin their name. All arguments that are used as input and output values
88b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenare marked by a leading 'inout...'. All other arguments are read-only
89b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen(input) arguments.
90b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
91b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen@e Error_handling
92b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
93b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenAll API functions return a status code which is one of the status
94b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenconstants defined in picodefs.h. In case of an error, a more detailed
95b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chendescription of the status can be retrieved by calling function
96b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen'pico_getSystemStatusMessage' (or 'pico_getEngineStatusMessage'
97b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenif the error happened on the SVOX Pico engine level).
98b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
99b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenUnlike errors, warnings do not prevent an API function from performing
100b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenits function, but output might not be as intended. Functions
101b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen'pico_getNrSystemWarnings' and 'pico_getNrEngineWarnings' respectively
102b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chencan be used to determine whether an API function caused any
103b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenwarnings. Details about warnings can be retrieved by calling
104b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen'pico_getSystemWarning' and 'pico_getEngineWarning' respectively.
105b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
106b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/
107b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
108b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
109b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
110b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#ifndef PICOAPI_H_
111b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICOAPI_H_
112b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
113b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
114b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
115b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#include "picodefs.h"
116b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
117b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#ifdef __cplusplus
118b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenextern "C" {
119b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif
120b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#if 0
121b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen}
122b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif
123b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
124b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
125b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#ifdef _WIN32
126b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#  define PICO_EXPORT  __declspec( dllexport )
127b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#else
128b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#  define PICO_EXPORT extern
129b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif
130b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
131b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICO_FUNC PICO_EXPORT pico_Status
132b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
133b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
134b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
135b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* ********************************************************************/
136b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* PICO data types                                                    */
137b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* ********************************************************************/
138b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
139b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* Handle types (opaque) for Pico system, resource, engine ************/
140b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
141b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef struct pico_system   *pico_System;
142b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef struct pico_resource *pico_Resource;
143b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef struct pico_engine   *pico_Engine;
144b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
145b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
146b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* Signed/unsigned integer data types *********************************/
147b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
148b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICO_INT16_MAX   32767
149b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICO_UINT16_MAX  0xffff
150b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICO_INT32_MAX   2147483647
151b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICO_UINT32_MAX  0xffffffff
152b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
153b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#include <limits.h>
154b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
155b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#if (SHRT_MAX == PICO_INT16_MAX)
156b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef short pico_Int16;
157b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#else
158b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#error "platform not supported"
159b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif
160b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
161b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#if (USHRT_MAX == PICO_UINT16_MAX)
162b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef unsigned short pico_Uint16;
163b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#else
164b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#error "platform not supported"
165b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif
166b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
167b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#if (INT_MAX == PICO_INT32_MAX)
168b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef int pico_Int32;
169b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#else
170b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#error "platform not supported"
171b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif
172b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
173b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#if (UINT_MAX == PICO_UINT32_MAX)
174b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef unsigned int pico_Uint32;
175b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#else
176b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#error "platform not supported"
177b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif
178b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
179b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
180b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* Char data type *****************************************************/
181b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
182b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef unsigned char pico_Char;
183b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
184b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
185b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* String type to be used when ASCII string values are returned *******/
186b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
187b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICO_RETSTRINGSIZE 200  /* maximum length of returned strings */
188b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
189b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef char pico_Retstring[PICO_RETSTRINGSIZE];
190b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
191b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
192b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
193b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* ********************************************************************/
194b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* System-level API functions                                         */
195b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* ********************************************************************/
196b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
197b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* System initialization and termination functions ********************/
198b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
199b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
200b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   Initializes the Pico system and returns its handle in 'outSystem'.
201b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   'memory' and 'size' define the location and maximum size of memory
202b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   in number of bytes that the Pico system will use. The minimum size
203b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   required depends on the number of engines and configurations of
204b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   lingware to be used. No additional memory will be allocated by the
205b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   Pico system. This function must be called before any other API
206b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   function is called. It may only be called once (e.g. at application
207b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   startup), unless a call to 'pico_terminate'.
208b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/
209b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenPICO_FUNC pico_initialize(
210b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        void *memory,
211b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        const pico_Uint32 size,
212b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_System *outSystem
213b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        );
214b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
215b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
216b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   Terminates the Pico system. Lingware resources still being loaded
217b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   are unloaded automatically. The memory area provided to Pico in
218b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   'pico_initialize' is released. The system handle becomes
219b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   invalid. It is not allowed to call this function as long as Pico
220b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   engine instances are existing. No API function may be called after
221b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   this function, except for 'pico_initialize', which reinitializes
222b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   the system.
223b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/
224b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenPICO_FUNC pico_terminate(
225b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_System *system
226b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        );
227b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
228b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
229b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* System status and error/warning message retrieval ******************/
230b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
231b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
232b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   Returns in 'outMessage' a description of the system status or of an
233b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   error that occurred with the most recently called system-level API
234b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   function.
235b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/
236b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenPICO_FUNC pico_getSystemStatusMessage(
237b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_System system,
238b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Status errCode,
239b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Retstring outMessage
240b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        );
241b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
242b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
243b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   Returns in 'outNrOfWarnings' the number of warnings that occurred
244b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   with the most recently called system-level API function.
245b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/
246b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenPICO_FUNC pico_getNrSystemWarnings(
247b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_System system,
248b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Int32 *outNrOfWarnings
249b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        );
250b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
251b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
252b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   Returns in 'outMessage' a description of a warning that occurred
253b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   with the most recently called system-level API function.
254b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   'warningIndex' must be in the range 0..N-1 where N is the number of
255b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   warnings returned by 'pico_getNrSystemWarnings'. 'outCode' returns
256b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   the warning as an integer code (cf. PICO_WARN_*).
257b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/
258b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenPICO_FUNC pico_getSystemWarning(
259b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_System system,
260b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        const pico_Int32 warningIndex,
261b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Status *outCode,
262b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Retstring outMessage
263b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        );
264b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
265b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
266b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* Resource loading and unloading functions ***************************/
267b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
268b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
269b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   Loads a resource file into the Pico system. The number of resource
270b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   files loaded in parallel is limited by PICO_MAX_NUM_RESOURCES.
271b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   Loading of a resource file may be done at any time (even in
272b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   parallel to a running engine doing TTS synthesis), but with the
273b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   general restriction that functions taking a system handle as their
274b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   first argument must be called in a mutually exclusive fashion. The
275b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   loaded resource will be available only to engines started after the
276b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   resource is fully loaded, i.e., not to engines currently
277b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   running.
278b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/
279b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenPICO_FUNC pico_loadResource(
280b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_System system,
281b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        const pico_Char *resourceFileName,
282b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Resource *outResource
283b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        );
284b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
285b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
286b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   Unloads a resource file from the Pico system. If no engine uses the
287b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   resource file, the resource is removed immediately and its
288b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   associated internal memory is released, otherwise
289b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   PICO_EXC_RESOURCE_BUSY is returned.
290b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/
291b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenPICO_FUNC pico_unloadResource(
292b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_System system,
293b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Resource *inoutResource
294b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        );
295b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
296b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* *** Resource inspection functions *******************************/
297b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
298b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
299b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen Gets the unique resource name of a loaded resource
300b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/
301b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenPICO_FUNC pico_getResourceName(
302b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_System system,
303b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Resource resource,
304b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Retstring outName);
305b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
306b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
307b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* Voice definition ***************************************************/
308b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
309b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
310b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   Creates a voice definition. Resources must be added to the created
311b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   voice with 'pico_addResourceToVoiceDefinition' before using the
312b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   voice in 'pico_newEngine'. It is an error to create a voice
313b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   definition with a previously defined voice name. In that case use
314b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   'pico_releaseVoiceName' first.
315b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/
316b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenPICO_FUNC pico_createVoiceDefinition(
317b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_System system,
318b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        const pico_Char *voiceName
319b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        );
320b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
321b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
322b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   Adds a mapping pair ('voiceName', 'resourceName') to the voice
323b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   definition. Multiple mapping pairs can added to a voice defintion.
324b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   When calling 'pico_newEngine' with 'voiceName', the corresponding
325b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   resources from the mappings will be used with that engine. */
326b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
327b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenPICO_FUNC pico_addResourceToVoiceDefinition(
328b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_System system,
329b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        const pico_Char *voiceName,
330b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        const pico_Char *resourceName
331b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        );
332b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
333b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
334b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
335b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen  Releases the voice definition 'voiceName'.
336b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
337b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/
338b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenPICO_FUNC pico_releaseVoiceDefinition(
339b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_System system,
340b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        const pico_Char *voiceName
341b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        );
342b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
343b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
344b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* Engine creation and deletion functions *****************************/
345b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
346b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
347b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   Creates and initializes a new Pico engine instance and returns its
348b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   handle in 'outEngine'. Only one instance per system is currently
349b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   possible.
350b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/
351b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenPICO_FUNC pico_newEngine(
352b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_System system,
353b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        const pico_Char *voiceName,
354b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Engine *outEngine
355b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        );
356b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
357b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
358b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
359b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen Disposes a Pico engine and releases all memory it occupied. The
360b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen engine handle becomes invalid.
361b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/
362b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenPICO_FUNC pico_disposeEngine(
363b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_System system,
364b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Engine *inoutEngine
365b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        );
366b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
367b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
368b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
369b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* ********************************************************************/
370b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* Engine-level API functions                                         */
371b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* ********************************************************************/
372b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
373b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
374b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   Puts text 'text' encoded in UTF8 into the Pico text input buffer.
375b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   'textSize' is the maximum size in number of bytes accessible in
376b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   'text'. The input text may also contain text-input commands to
377b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   change, for example, speed or pitch of the resulting speech
378b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   output. The number of bytes actually copied to the Pico text input
379b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   buffer is returned in 'outBytesPut'. Sentence ends are
380b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   automatically detected. '\0' characters may be embedded in 'text'
381b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   to finish text input or separate independently to be synthesized
382b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   text parts from each other. Repeatedly calling 'pico_getData' will
383b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   result in the content of the text input buffer to be synthesized
384b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   (up to the last sentence end or '\0' character detected). To empty
385b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   the internal buffers without finishing synthesis, use the function
386b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   'pico_resetEngine'.
387b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/
388b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenPICO_FUNC pico_putTextUtf8(
389b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Engine engine,
390b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        const pico_Char *text,
391b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        const pico_Int16 textSize,
392b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Int16 *outBytesPut
393b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        );
394b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
395b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
396b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   Gets speech data from the engine. Every time this function is
397b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   called, the engine performs, within a short time slot, a small
398b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   amount of processing its input text, and then gives control back to
399b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   the calling application. Ie. after calling 'pico_putTextUtf8'
400b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   (incl. a final embedded '\0'), this function needs to be called
401b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   repeatedly till 'outBytesReceived' bytes are returned in
402b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   'outBuffer'. The type of data returned in 'outBuffer' (e.g. 8 or 16
403b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   bit PCM samples) is returned in 'outDataType' and depends on the
404b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   lingware resources. Possible 'outDataType' values are listed in
405b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   picodefs.h (PICO_DATA_*).
406b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   This function returns PICO_STEP_BUSY while processing input and
407b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   producing speech output. Once all data is returned and there is no
408b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   more input text available in the Pico text input buffer,
409b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   PICO_STEP_IDLE is returned.  All other function return values
410b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   indicate a system error.
411b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/
412b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenPICO_FUNC pico_getData(
413b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Engine engine,
414b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        void *outBuffer,
415b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        const pico_Int16 bufferSize,
416b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Int16 *outBytesReceived,
417b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Int16 *outDataType
418b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        );
419b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
420b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
421b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   Resets the engine and clears all engine-internal buffers, in
422b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   particular text input and signal data output buffers.
423e9f72c8954f29f10cb4feb16d328a1b5c1fd7169Jean-Michel Trivi   'resetMode' is one of 'PICO_RESET_SOFT', to be used to flush the engine,
424e9f72c8954f29f10cb4feb16d328a1b5c1fd7169Jean-Michel Trivi   or 'PICO_RESET_FULL', to reset the engine after an engine error.
425b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/
426b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenPICO_FUNC pico_resetEngine(
4277bc39b0d41efe0d8733490d54e14bc392d9f0b6dJean-Michel Trivi        pico_Engine engine,
428e9f72c8954f29f10cb4feb16d328a1b5c1fd7169Jean-Michel Trivi        pico_Int32 resetMode
4297bc39b0d41efe0d8733490d54e14bc392d9f0b6dJean-Michel Trivi);
430b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
431b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
432b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* Engine status and error/warning message retrieval ******************/
433b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
434b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
435b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   Returns in 'outMessage' a description of the engine status or of an
436b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   error that occurred with the most recently called engine-level API
437b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   function.
438b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/
439b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenPICO_FUNC pico_getEngineStatusMessage(
440b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Engine engine,
441b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Status errCode,
442b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Retstring outMessage
443b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        );
444b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
445b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
446b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   Returns in 'outNrOfWarnings' the number of warnings that occurred
447b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   with the most recently called engine-level API function.
448b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/
449b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenPICO_FUNC pico_getNrEngineWarnings(
450b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Engine engine,
451b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Int32 *outNrOfWarnings
452b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        );
453b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
454b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/**
455b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   Returns in 'outMessage' a description of a warning that occurred
456b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   with the most recently called engine-level API function.
457b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   'warningIndex' must be in the range 0..N-1 where N is the number of
458b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   warnings returned by 'pico_getNrEngineWarnings'. 'outCode' returns
459b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen   the warning as an integer code (cf. PICO_WARN_*).
460b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/
461b190149a69b110e6719ce0a41877a683f8db7ae7Charles ChenPICO_FUNC pico_getEngineWarning(
462b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Engine engine,
463b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        const pico_Int32 warningIndex,
464b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Status *outCode,
465b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        pico_Retstring outMessage
466b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen        );
467b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
468b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#ifdef __cplusplus
469b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen}
470b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif
471b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen
472b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif /*PICOAPI_H_*/
473