Header files and Init data so you can use the Text To Speech Click Board with a Hexiware and mBed OS5
Dependents: Talking_breathalyzer FindTheColor mbed_Projet
text_to_speech.h
- Committer:
- daveyclk
- Date:
- 2016-10-07
- Revision:
- 0:b33a6418e125
File content as of revision 0:b33a6418e125:
/******************************************************************************
* Title : Text To Speech
* Filename : text_to_speech.h
* Author : MSV
* Origin Date : 30/01/2016
* Notes :
*******************************************************************************/
/**************************CHANGE LIST ****************************************
*
* Date Software Version Initials Description
* 30/01/16 .1 MSV Interface Created.
*
*******************************************************************************/
/**
* @file text_to_speech.h
* @brief <h3> Text to Speech </h3>
*
* @par
* The device operates as a companion device. It is connected to a host using
* the SPI. When connected to a host, the operation of the device is completely
* determined by control and data information provided by the host. Control and
* data information is transferred to and from device using a defined
* message protocol.
*
* @par
* The features of the messaging protocol are presented below :
* - The device is completely driven by the reception of messages from the
* host.
* - The message set is byte oriented, with a fixed length header part,
* and variable length payload
* - The messages follow a request –> response flow. All request messages are
* sent by the host processor. All response messages are generated by the
* device in response to a request message.
* - The host processor is required to wait for a response to a request
* message, before issuing any subsequent request. Any request message sent
* before receiving the previous response will trigger an error state within
* the device.
* - Some messages are termed indication messages. Such messages require no
* confirmation from the recipient. Indication messages can only be sent by
* the device.
*
* @par
* In general, a response message is sent immediately on receiving its
* corresponding request message. The sending of a response informs the host
* that the request has been received but not that it has been actioned.
* However for some messages, the interval between the sending of a request and
* receipt of a response can be considerable. In corner cases, the delay
* between the sending of a request message by a host and the receipt of the
* corresponding response message can be several hundred milliseconds.
* Delay between request and response is guaranteed not to exceed
* MAX_RESPONSE_TIME.
*
* @par
* The device have two working modes - boot and main mode. The device boot mode
* is entered on hardware reset. The device requires the download of
* initialisation data in boot mode before it is run in main mode.
* This initialisation data is contained in the device binary file included
* with this documentation.
* @link text_to_speech_img.h @endlink
* In order to enter the main work mode user should call execution of the loaded
* image
* @link tts_image_exec @endlink
* and registration of the host with the device with
* @link tts_interface_test @endlink.
* After this steps device enters the main working mode.
*
* @par
* Any request message can be sent at any time after the last response message
* has been received. If it is inappropriate to send a request message at a
* certain point, then the device will indicate this with a non-fatal error
* code in the response message.
*
* @par
* In the normal course of operation, the host should not receive a reserved
* error from device. Non-fatal errors can be viewed as warnings, from which
* the system recovers, and have no adverse effect on system behaviour.
* Non-fatal errors are communicated to the host processor via the appropriate
* response message, or, in an application specific error indication.
* A response message that includes an error code indicates that the requested
* action could not be completed. Fatal errors cannot be recovered by software.
* The only recovery mechanism is to reset the device. Fore more informations
* about error codes
* @link TTS_ERROR_t @endlink.
*
* @par
* All functions inside this module returns recevied response from device so
* sucessfull execution will return 0 and all other returned values means
* that function is not executed properly.
*/
/******************************************************************************
* Includes
*******************************************************************************/
#include "text_to_speech_hw.h"
#include <string.h>
/******************************************************************************
* Preprocessor Constants
*******************************************************************************/
#define ISC_VERSION_REQ_BOOT 0x0005
#define ISC_VERSION_RESP_BOOT 0x0006
#define ISC_BOOT_LOAD_REQ 0x1000
#define ISC_BOOT_LOAD_RESP 0x1001
#define ISC_BOOT_RUN_REQ 0x1002
#define ISC_BOOT_RUN_RESP 0x1003
#define ISC_TEST_REQ 0x0003
#define ISC_TEST_RESP 0x0004
#define ISC_VERSION_REQ_MAIN 0x0005
#define ISC_VERSION_RESP_MAIN 0x0006
#define ISC_ERROR_IND 0x0000
#define ISC_MSG_BLOCKED_RESP 0x0007
#define ISC_PMAN_CONFIG_REQ 0x0062
#define ISC_PMAN_CONFIG_RESP 0x0063
#define ISC_PMAN_STANDBY_ENTRY_REQ 0x0064
#define ISC_PMAN_STANDBY_ENTRY_RESP 0x0065
#define ISC_PMAN_STANDBY_EXIT_IND 0x0066
#define ISC_AUDIO_CONFIG_REQ 0x0008
#define ISC_AUDIO_CONFIG_RESP 0x0009
#define ISC_AUDIO_VOULME_REQ 0x000A
#define ISC_AUDIO_VOLUME_RESP 0x000B
#define ISC_AUDIO_MUTE_REQ 0x000C
#define ISC_AUDIO_MUTE_RESP 0x000D
#define ISC_SPCODEC_CONFIG_REQ 0x0056
#define ISC_SPCODEC_CONFIG_RESP 0x0057
#define ISC_SPCODEC_START_REQ 0x0058
#define ISC_SPCODEC_START_RESP 0x0059
#define ISC_SPCODEC_PAUSE_REQ 0x005C
#define ISC_SPCODEC_PAUSE_RESP 0x005D
#define ISC_SPCODEC_STOP_REQ 0x005A
#define ISC_SPCODEC_STOP_RESP 0x005B
#define ISC_SPCODEC_READY_IND 0x0060
#define ISC_SPCODEC_FINISHED_IND 0x0061
#define ISC_TTS_CONFIG_REQ 0x0012
#define ISC_TTS_CONFIG_RESP 0x0013
#define ISC_TTS_SPEAK_REQ 0x0014
#define ISC_TTS_SPEAK_RESP 0x0015
#define ISC_TTS_READY_IND 0x0020
#define ISC_TTS_FINISHED_IND 0x0021
#define ISC_TTS_PAUSE_REQ 0x0016
#define ISC_TTS_PAUSE_RESP 0x0017
#define ISC_TTS_STOP_REQ 0x0018
#define ISC_TTS_STOP_RESP 0x0019
#define ISC_TTS_UDICT_DATA_REQ 0x00CE
#define ISC_TTS_UDICT_DATA_RESP 0x00D0
/******************************************************************************
* Configuration Constants
*******************************************************************************/
/******************************************************************************
* Macros
*******************************************************************************/
/******************************************************************************
* Typedefs
*******************************************************************************/
/**
* @enum TTS_ERROR_t
* @brief <h3> Text to speech errors </h3>
*/
typedef enum
{
/**
* No Error */
NO_ERROR = 0x0000,
/**
* Insufficient system resource to perform request */
GEN_INSUFF_RESOURCES = 0x4002,
/**
* Unrecognised message ID */
GEN_UNKNOWN_MSG = 0x4003,
/**
* Application is not supported by device */
GEN_APP_NO_SUPPORT = 0x4005,
/**
* Invalid audio configuration */
AUDIO_INVALID_CONF = 0x4020,
/**
* Out of range configuration value */
AUDIO_OUT_OF_RANGE = 0x4021,
/**
* Audio message out of sequence */
AUDIO_OUT_OF_SEQUENCE = 0x4026,
/**
* Incompatible routing configuration */
AUDIO_INVALID_ROUTING_CONF = 0x4028,
/**
* Incompatible frequency configuration */
AUDIO_INVALID_FREQUENCY_CONF = 0x4029,
/**
* Power nabager invalid configuration */
PMAN_INVALID_CONF = 0x40C0,
/**
* Device is not ready to enter standby mode */
PMAN_NOT_READY = 0x40C1,
/**
* Invalid language */
TTS_INVALID_LANGUAGE = 0x4040,
/**
* Invalid sample rate */
TTS_INVALID_SAMPLE_RATE = 0x4041,
/**
* Invalid voice selection */
TTS_INVALID_VOICE = 0x4042,
/**
* Invalid data source */
TTS_INVALID_DATA_SRC = 0x4043,
/**
* TTS not configured */
TTS_NOT_CONFIGURED = 0x4044,
/**
* TTS not ready */
TTS_NOT_READY = 0x4045,
/**
* Audio output channel open failed */
TTS_AUDIO_OPEN_FAIL = 0x4046,
/**
* Audio output channel close failed */
TTS_AUDIO_CLOSE_FAIL = 0x4047,
/**
* TTS already stopped */
TTS_STOP_ERR = 0x4048,
/**
* Unexpected config request */
TTS_CONF_REQUEST_ERR = 0x4049,
/**
* File already open */
TTS_OPEN_ERR = 0x404A,
/**
* File open failed */
TTS_OPEN_FAIL = 0x404B,
/**
* File close failed */
TTS_CLOSE_FAIL = 0x404C,
/**
* Cannot pause */
TTS_PAUSE_ERR = 0x404F,
/**
* Invalid user dictionary file */
TTS_DICT_ERR = 0x4052,
/**
* Invalid whilst paused */
TTS_WHIILS_ERR = 0x4053,
/**
* Speech codec not configured before starting */
SPCODEC_START_ERR = 0x4101,
/**
* Pause attempted when speech codec is inactive */
SPCODEC_PAUSE_ERR = 0x4102,
/**
* Config attempted when speech codec is active */
SPCODEC_CONFIG_ERR = 0x4103,
/**
* Invalid data source */
SPCODEC_DATA_SRC_ERR = 0x4104,
/**
* Speech codec already paused */
SPCODEC_ALREADY_PAUSED = 0x4106,
/**
* Speech codec already active (not paused) */
SPCODEC_PAUSE_FAIL = 0x4107,
/**
* Invalid codec configuration */
SPCODEC_INVALID_CONF = 0x4108,
/**
* Too much input data*/
SPCODEC_INPUT_DATA_ERR = 0x4109,
/**
* Cannot open audio channel */
SPCODEC_AUDIO_OPEN_ERR = 0x410B,
/**
* Cannot close audio channel */
SPCODEC_AUDIO_CLOSE_ERR = 0x410C,
/**
* Unexpected message */
FATAL_ERR_UNEXPECTED_MSG = 0x80E0,
/**
* Invalid SPCODEC file / CODEC error */
FATAL_CODEC_ERR_1 = 0x8104,
/**
* Invalid SPCODEC file / CODEC error */
FATAL_CODEC_ERR_2 = 0x8105,
/**
* Invalid SPCODEC file / CODEC error */
FATAL_CODEC_ERR_3 = 0x8106
}TTS_ERROR_t;
/**
* @enum FF_t
* @brief <h3> Firmware Features </h3>
*/
typedef enum
{
/**
* Text to Speech */
FF_TTS = 0x0001,
/**
* ADPCM */
FF_ADPCM = 0x0010,
/**
* GPIO */
FF_GPIO = 0x0100
}FF_t;
/**
* @enum EFF_t
* @brief <h3> Extended Firmware Features </h3>
*
* @par
* TTS language support.
*/
typedef enum
{
/**
* US English */
EFF_US = 0x01,
/**
* German */
EFF_D = 0x02,
/**
* Castilian Spanish */
EFF_CS = 0x04,
/**
* French */
EFF_F = 0x08,
/**
* UK English */
EFF_UK = 0x10,
/**
* Latin Spanish */
EFF_LS = 0x20
}EFF_t;
/**
* @enum ASR_t
* @brief <h3> Audio Sample Rate </h3>
*
* @par
* Audio sample rate configuration.Used in audio configuration.
*
* @note
* If desired, the ASR_AUTO setting may be used for ADPCM file playback. In
* this case the sample rate used is the sample rate that was specified by the
* encoder and stored in the encoded ADPCM file header.
*
* @note
* ASR_11KHZ is reserved for use with TTS synthesis. All other sample rates
* are reserved for use with ADPCM.
*/
typedef enum
{
/**
* 8 kHz ( usable ) */
ASR_8KHZ = 0x00,
/**
* 11.025 kHz ( usable ) */
ASR_11KHZ = 0x01,
/**
* 12 kHz ( reserved ) */
ASR_12KHZ = 0x02,
/**
* 16 kHz ( usable ) */
ASR_16KHZ = 0x03,
/**
* 22.05 kHz ( reserved ) */
ASR_22KHZ = 0x04,
/**
* 24 kHz ( reserved ) */
ASR_24KHZ = 0x05,
/**
* 32 kHz ( reserved ) */
ASR_32KHZ = 0x06,
/**
* 44.1 kHz ( reserved ) */
ASR_44KHZ = 0x07,
/**
* 48 kHz ( reserved ) */
ASR_48KHZ = 0x08,
/**
* Set by application */
ASR_AUTO = 0x09
}ASR_t;
/**
* @enum TTS_VOICE_t
* @brief <h3> Voice Configuration </h3>
*/
typedef enum
{
/**
* UK English */
TTSV_US = 0x00,
/**
* Castilian Spanish */
TTSV_CS = 0x01,
/**
* Latin Spanish */
TTSV_LS = 0x04
}TTSV_t;
/**
* @struct VER_t
* @brief <h3> Device version </h3>
*
* @note
* For the hardware version, the first number refers to the hardware platform,
* and the second number refers to the ROM revision number.
*
* @note
* The firmware versions are defined as version X.Y.Z. where X is the major
* release number, Y is the minor release number ( typically associated with a
* functionality enhancement ), and Z is an incremental ( bug fix ) release.
*/
typedef struct
{
/**
* Hardware version*/
char hwver[ 5 ];
/**
* Firmware version*/
char fwver[ 8 ];
/**
* Firmware features*/
FF_t fwf;
/**
* Firmware extended features*/
EFF_t fwef;
}VER_t;
/**
* @struct ACONF_t
* @brief <h3> Audio Configuration </h3>
*
* @note
* If DAC permanently on is set and minimum delay time is required before
* audio output after receiving a data bearing message, an asr must be
* selected. It must not be set to ASR_AUTO.
*
*/
typedef struct
{
/**
* Audio stereo ( 0x00 ) */
bool as;
/**
* Audio gain value ( 0x00 ~ 0x43 ) */
uint8_t ag;
/**
* Audio amplefier ( 0x00 ) */
bool amp;
/**
* Audio sample rate ( 0x00 / 0x01 / 0x03 / 0x09 ) */
ASR_t asr;
/**
* Audio routing ( 0x00 ) */
uint8_t ar;
/**
* Audio tone control ( 0x00 ) */
uint8_t atc;
/**
* Audio clock source ( 0x00 ) */
bool acs;
/**
* DAC control ( 0x00 / 0x01 ) */
bool dc;
}ACONF_t;
/**
* @struct TTS_CONFIG_t
* @brief <h3> Text To Speech Configuration </h3>
*
* @par
* TTS configuration can only be used when the TTS system is inactive.
*
* @note
* The valid range for speaking rate is 0x004B to 0x0258. A suitable default
* value is 200 words/min ( 0x00C8 ).
*/
typedef struct
{
/**
* Sample rate ( 0x01 ) */
uint8_t sr;
/**
* Voice selection ( 0x01 ~ 0x09 ) */
uint8_t voice;
/**
* Epson parse ( true / false ) */
bool ep;
/**
* TTS language ( 0x01 / 0x01 / 0x04 ) */
TTSV_t lang;
/**
* Speaking rate in words per minute */
uint8_t sr_wpm_lsb;
uint8_t sr_wpm_msb;
/**
* Data Source ( 0x00 ) */
uint8_t ds;
/**
* Reserved ( 0x00 ) */
uint8_t res;
}TTSCONF_t;
/**
* @struct PMANCONF_t
* @brief <h3> Power Manager Configuration </h3>
*/
typedef struct
{
/**
* Audio mode ( 0x01 ) */
uint8_t am_lsb;
uint8_t am_msb;
/**
* SPI bit clock frequency ( 0x01 ) */
uint8_t spi_clk;
/**
* Padding byte */
uint8_t pad;
}PMANCONF_t;
/******************************************************************************
* Variables
*******************************************************************************/
/******************************************************************************
* Function Prototypes
*******************************************************************************/
/**
* @brief <h3> Text to Speech Initialization </h3>
*
* @par
* Sets all needed internal parameters to default. This function must be called
* before any other function.
*/
void tts_init( void );
/**
* @brief <h3> Message Block Callback </h3>
*
* @par
* Callback function must be made by user and will be called
* every time when message block response is received.
* Message block is sent in response to a request that has been blocked by
* the device system controller. Request messages are blocked usually when
* the system controller identifies that there is insufficient system
* resource to service the request.
*
* @note
* All request messages are blocked if the interface has not been
* registered.
*
* @par
* <h4> Example :</h4>
*
* @code
* // Declaration of callback for blocked messages
* void msg_blk( uint16_t *req, uint16_t *err )
* {
* char txt[ 15 ];
*
* UART_Write_Text( " Message blocked : " );
* sprinti( txt, "%x\r\n", *req );
* UART_Write_Text( txt );
* sprinti( txt, "%x\r\n", *err );
* UART_Write_Text( txt );
* }
*
* // Setting up
* tts_msg_block_callback( msg_blk );
* @endcode
*
*/
void tts_msg_block_callback( void( *msg_blk_ptr )( uint16_t *req_ptr,
uint16_t *err_ptr ) );
/**
* @brief <h3> Fatal Error Callback </h3>
*
* @par
* This function adds the callback function made by user that will be called
* every time when fatal error indication is received so user can handle
* fatal error exception. Once fatal error is received user should
* restart the module.
*
* @par
* <h4> Example :</h4>
*
* @code
* // Declaration of callback for fatal errors
* void fatal_err( uint16_t *err )
* {
* UART_Write_Text( "Fatal Error Occured - TTS restart..." );
* // Reinitialization of TTS
* tts_init();
* // Reset the callback
* tts_fatal_err_callback( fatal_err );
* }
*
* // Setting up
* tts_fatal_err_callback( fatal_err );
* @endcode
*/
void tts_fatal_err_callback( void( *fatal_err_ptr )( uint16_t *err_ptr ) );
/**
* @brief <h3> Non Fatal Error </h3>
*
* @par
* This function adds the callback function made by user that will be called
* every time when non fatal error inidication is received.
*
* @par
* <h4> Example :</h4>
*
* @code
* // Declaration of callback for error occurence
* void err_detected( uint16_t *err )
* {
* char txt[ 15 ];
*
* UART_Write_Text( " Error occured : " );
* sprinti( txt, "%x\r\n", *err );
* UART_Write_Text( txt );
* }
*
* // Setting up
* tts_err_callback( err_detected );
* @endcode
*/
void tts_err_callback( void( *error_ptr )( uint16_t *err_ptr ) );
/**
* @brief <h3> TTS Hardware Mute </h3>
*
* @par
* Mute using MUT pin
*/
void tts_mute( void );
/**
* @brief <h3> TTS Hardware Unmute </h3>
*
* @par
* Unmute using MUT pin
*/
void tts_unmute( void );
/**
* @brief <h3> Default setup </h3>
*
* @par
* Should be used after the @link tts_init @endlink to upload the init data
* and configure the click board in the most common manner.
*/
void tts_setup( void );
/**
* @brief <h3> Requests Version in Boot Mode </h3>
*
* @par
* Used to request information about the chip hardware version.
* This request should be performed after the power on or restart
* routine. The functionality to wait
* @link RESET_TO_BOOT_TIME @endlink
* is already implemented into the restart function and don't care
* about that timing. This is the simpliest way to check does device is
* powered on and to check the basic functionality of the device itself.
* For detailed information about version of the device you should use
* @link tts_version_main @endlink . For more information
* @link VER_t @endlink .
*
* @par
* <h4> Example : </h4>
*
* @code
* VER_t boot_ver;
*
* if( !tts_version_boot( boot_ver ) )
* {
* UART_Write_Text( boot_ver.hwver );
* }
* @endcode
*/
void tts_version_boot( void );
//uint16_t tts_version_boot( VER_t *version );
/**
* @brief <h3> Loads Code Image into the SRAM </h3>
*
* @par
* This request must be pefrormed after the power on or restart
* routine and before the entering to main mode.
*
* @param[in] image - valid image
* @param[in] count - image length in bytes
*
* @note Keep on mind that because of large image size this loadnig can take
* few seconds, depends on SPI bus speed.
*
* @par
* <h4> Example : </h4>
*
* @code
* if( !tts_image_load( TTS_INIT_DATA, sizeof( TTS_INIT_DATA ) ) )
* UART_Write_Text( "Image loading done successfully");
* else
* UART_Write_Text( "Image loading error");
* @endcode
*/
uint16_t tts_image_load( const uint8_t *image,
uint16_t count );
/**
* @brief <h3> Starts Executing Image and Enters the Main Mode </h3>
*
* @par
* This request enters from boot to main mode after completion of loading the
* initialisation data. This function is used to switch to running in main
* mode. The functionality to wait
* @link
* BOOT_TO_MAIN_MODE
* @endlink
* is already implemented inside the restart function so don't care
* about that timing.
*
* @par
* <h4> Example : </h4>
*
* @code
* if( !tts_image_exec() )
UART_Write_Text( "Main mode entered successfully" );
* @endcode
*/
uint16_t tts_image_exec( void );
/**
* @brief <h3> Test & Register Host Hardware Interface </h3>
*
* @par
* This request must be called after the entering the main mode because it
* register the host with the device ( S1V30120 ). If request is performed
* without errors that indicates the device is operating correctly and host
* registration was successful.
*
* @par
* <h4> Example : </h4>
*
* @code
* if( !tts_interface_test() )
* UART_Write_Text( "Interface test - success" );
* @endcode
*/
uint16_t tts_interface_test( void );
/**
* @brief <h3> Version & Support Info in Main Mode </h3>
*
* @par
* Used to request information about the hardware version, firmware
* version and supported firmware functionality. Returns informations
* about current system version, more info
* @link VER_t @endlink
*
* @par
* <h4> Example : </h4>
*
* @code
* VER_t current_version;
*
* if ( !tts_version_main( ¤t_version ) )
* {
* UART_Write_Text( current_version.hwver );
* UART_Write_Text( current_version.fwver );
* }
* @endcode
*/
uint16_t tts_version_main( VER_t *buffer );
/**
* @brief <h3> Power Manager Configuration </h3>
*
* @par
* Request to configure power manager with default parameters.
*
* @note All of parameters are configured automaticly by device
* and this request also doesnt have any parameters yet.
*
* @par
* <h4> Example : </h4>
*
* @code
* if( !tts_power_default_config() )
* UART_Write_Text( "Power configuration done !" );
* @endcode
*/
uint16_t tts_power_default_config( void );
/**
* @brief <h3> Entry to standby mode </h3>
*
* @par
* Request can be used to reach the lowest power mode.
* Most power management on the device is performed automatically by the
* device without intervention from the host.
* However, to reach the lowest power mode, Standby Mode, the host has to
* request entry to this mode. Device can leave this mode only with
* @link tts_standby_exit @endlink.
* Time needed to enter the standby mode
* @link STBY_MODE_ENTERY @endlink
* is already implemented and you don't have to care about that.
*
* @par
* <h4> Example : </h4>
*
* @code
* if( !tts_standby_enter() )
* UART_Write_Text( "Standby mode entered !" );
* @endcode
*/
uint16_t tts_standby_enter( void );
/**
* @brief <h3> Standby Mode Exit </h3>
*
* @par
* Request wakes up the device from standby mode. This is only request
* that device can performe whhile it is in standby mode.
*
* @par
* <h4> Example : </h4>
*
* @code
* if( !tts_standby_exit() )
* UART_Write_Text( "Standby mode exited !" );
* @endcode
*/
uint16_t tts_standby_exit( void );
/**
* @brief <h3> Configure Audio Output </h3>
*
* @par
* Audio configuration is required before starting speech/audio playback.
* Request sends default audio configuration to device.
*
* @par
* <h4> Example : </h4>
*
* @code
* if( !tts_audio_default_config() )
* UART_Write_Text( "Audio configuration done !" );
* @endcode
*/
uint16_t tts_audio_default_config( void );
/**
* @brief <h3> Sets the audio output configuration. </h3>
*
* @par
* Audio configuration is required before starting speech/audio playback.
*
* @param[in] audio_gain ( -49 ~ 19 )
* @param[in] sample_rate
* @param[in] dac_control ( true / false )
*
* @par
* <h4> Example : </h4>
*
* @code
* if( !tts_audio_config( 10, ASR_11KHZ, true ) )
* UART_Write_Text( "Advanced audio configuration done !" );
* @endcode
*/
uint16_t tts_audio_config( int8_t audio_gain,
ASR_t sample_rate,
bool dac_control );
/**
* @brief <h3> Set volume ( Analogue Gain ) </h3>
*
* @par
* Request changes the output audio volume and sends it to the device.
* Value is gain increment / decrement in dB.
*
* @param[in] audio_gain
*
* @par
* <h4> Example : </h4>
*
* @code
* if( !tts_volume_set( 0 ) )
* UART1_Write_Text( "Volume setting done !" );
* @endcode
*/
uint16_t tts_volume_set( int16_t gain );
/**
* @brief <h3> Mute Audio Output </h3>
*
* @par
* Request mutes the audio output immediately.
*
* @par
* <h4> Example : </h4>
*
* @code
* if( !tts_audio_mute() )
* UART1_Write_Text( "Audio muted !" );
* @endcode
*/
uint16_t tts_audio_mute( void );
/**
* @brief <h3> Unmute Audio Output </h3>
*
* @par
* Request mutes the audio output immediately.
*
* @par
* <h4> Example : </h4>
*
* @code
* if( !tts_audio_unmute() )
* UART1_Write_Text( "Audio unmuted !" );
* @endcode
*/
uint16_t tts_audio_unmute( void );
/**
* @brief <h3> Configure Speech Codec </h3>
*
* @par
* The Speech Codec application supports Voice Playback (Decode) using an
* ADPCM codec. This is request to configure the codec and can only be used
* when the SPCODEC is inactive. Currently all parameters are default so there
* is no setable parameters in this request.
*/
uint16_t tts_codec_configure( void );
/**
* @brief <h3> Start Speech Codec </h3>
*
* @par
* Request is used to transfer data to the speech decoder.
*/
uint16_t tts_codec_start( uint8_t *codec_data,
uint16_t count );
/**
* @brief <h3> Pause Speech Codec Audio Input / Output </h3>
*
* @par
* Request to pause the speech decoders to processing speech data.
*/
uint16_t tts_codec_pause( void );
/**
* @brief <h3> Unpause Speech Codec Audio Input / Output </h3>
*
* @par
* Request to unpause the speech decoders to processing speech data.
*/
uint16_t tts_codec_unpause( void );
/**
* @brief <h3> Stop Speech Codec Immediately </h3>
*
* @par
* Request to terminate the decode of speech data immediately. Audio data
* already decoded will be processed before termination. If the SPCODEC is
* reset, system resources used by the SPCODEC are freed, and all configuration
* data is lost ( the SPCODEC is finalised ).
*
* @param[in] reset
*/
uint16_t tts_codec_stop( bool reset );
/**
* @brief <h3> Configure the TTS </h3>
*
* @par
* Request sends the default configuration to the device and can be used when
* the TTS system is inactive.
*
* @par
* <h4> Example : </h4>
*
* @code
* if( !tts_default_config() )
* UART1_Write_Text( "TTS configured !\" );
* @endcode
*/
uint16_t tts_default_config( void );
/**
* @brief <h3> Sets the text to speech configuration </h3>
*
* @par
* Request sends the user provided configuration to the device and can be used
* when the TTS system is inactive.
*
* @param[in] voice_type ( 0 ~ 9 )
* @param[in] epson_parse ( true / false )
* @param[in] language
* @param[in] speaking_rate ( 0x004A ~ 0x0259 )
*
* @par
* <h4> Example : </h4>
*
* @code
* if( !tts_config( 0x01, false, TTSV_US, 0x0200 ) )
* UART_Write_Text( "TTS advanced configuration done !" );
* @endcode
*/
uint16_t tts_config( uint8_t voice_type,
bool epson_parse,
TTSV_t language,
uint16_t speaking_rate );
/**
* @brief <h3> Start the TTS ( Optionally Attach Data ) </h3>
*
* @par
* Request sends the text data to the device. User can't send more data
* while the response indication that device is ready for more data is not
* received.
*
* @par
* <h4> Example : </h4>
*
* @code
* if( !tts_speak( "Hello world" ) )
* UART1_Write_Text( "Speak done !" );
* @endcode
*/
uint16_t tts_speak( char *word );
/**
* @brief <h3> Pause the TTS </h3>
*
* @par
* Request will stop or restart the speech synthesiser text proccessing.
* Time must be allowed for the audio output buffers to drain before the pause
* can take effect.
*
* @par
* <h4> Example : </h4>
*
* @code
* if( !tts_pause() )
* UART_Write_Text( "Paused !" );
* @endcode
*/
uint16_t tts_pause( void );
/**
* @brief <h3> Unpause the TTS </h3>
*
* @par
* Request will resume the speech synthesiser.
*
* @par
* <h4> Example : </h4>
*
* @code
* if( !tts_unpause() )
* UART_Write_Text( "Unpaused !" );
* @endcode
*/
uint16_t tts_unpause( void );
/**
* @brief <h3> Stop TTS Immediately </h3>
*
* @par
* Request that should be executed to stop text sythesis in order to free
* system resources associated with TTS. Device can be reseted after the this
* request and in that case all configuration data is lost.
*
* @param[in] reset ( true / false )
*
* @par
* <h4> Example : </h4>
*
* @code
* if( !tts_stop() )
* UART_Write_Text( "Stoped !" );
* @endcode
*/
uint16_t tts_stop( bool reset );
/**
* @brief <h3> Send User Dictionary Data to the Device </h3>
*
* @par
* Request sends user dictionary data. User dictionary data is transferred in a
* single message. Erase parameter is used to erase any previously transferred
* user dictionary data. Udict data must be valid and counter is size of data
* in bytes.
*
* @param[in] erase ( true / false )
* @param[in] udict_data
* @param[in] count
*/
uint16_t tts_user_dict( bool erase,
uint8_t *udict_data,
uint16_t count );
/*** End of File **************************************************************/
Dave Clarke