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