tts_core_notify_engine_changed(client, engine_id, language, voice_type, need_credential);
return;
}
+
+static void __tts_config_screen_reader_changed_cb(bool value, void* user_data)
+{
+ tts_h tts = (tts_h)user_data;
+
+ tts_client_s* client = tts_client_get(tts);
+ if (NULL == client) {
+ SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] A handle is not valid. tts(%p)", tts);
+ return;
+ }
+
+ SLOG(LOG_DEBUG, TAG_TTSC, "Screen reader is changed. current status (%d)", value);
+
+ /* call callback function */
+ tts_core_notify_screen_reader_changed(client, value);
+}
+
//LCOV_EXCL_STOP
int tts_create(tts_h* tts)
return __tts_convert_config_error_code(ret);
}
+ ret = tts_config_mgr_set_screen_reader_callback(uid, __tts_config_screen_reader_changed_cb, new_tts);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to set config changed : %d", ret);
+ tts_config_mgr_finalize(uid);
+ tts_client_destroy(new_tts);
+ return __tts_convert_config_error_code(ret);
+ }
+
if (is_first_client) {
// These function would be called only when first client is created.
if (0 != tts_core_initialize()) {
return TTS_ERROR_NONE;
}
+int tts_check_screen_reader_on(tts_h tts, bool* is_on)
+{
+ if (0 != __tts_get_feature_enabled()) {
+ return TTS_ERROR_NOT_SUPPORTED;
+ }
+
+ if (NULL == is_on) {
+ SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input parameter is null");
+ return TTS_ERROR_INVALID_PARAMETER;
+ }
+
+ tts_client_s* client = tts_client_get(tts);
+ if (NULL == client) {
+ SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] A handle is not valid. tts(%p)", tts);
+ return TTS_ERROR_INVALID_PARAMETER;
+ }
+
+ if (false == tts_core_check_screen_reader(client)) {
+ SLOG(LOG_WARN, TAG_TTSC, "[WARNING] Screen reader option is not available");
+ *is_on = false;
+ } else {
+ SLOG(LOG_INFO, TAG_TTSC, "[INFO] Screen reader option is available");
+ *is_on = true;
+ }
+
+ return TTS_ERROR_NONE;
+}
+
int tts_add_text(tts_h tts, const char* text, const char* language, int voice_type, int speed, int* utt_id)
{
if (0 != __tts_get_feature_enabled()) {
if (false == tts_core_check_screen_reader(client)) {
SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Screen reader option is not available");
- return TTS_ERROR_INVALID_STATE;
+ return TTS_ERROR_SCREEN_READER_OFF;
}
if (true == client->credential_needed && NULL == client->credential) {
if (false == tts_core_check_screen_reader(client)) {
SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Screen reader option is not available");
- return TTS_ERROR_INVALID_STATE;
+ return TTS_ERROR_SCREEN_READER_OFF;
}
if (true == client->credential_needed && NULL == client->credential) {
if (false == tts_core_check_screen_reader(client)) {
SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Screen reader option is not available");
- return TTS_ERROR_INVALID_STATE;
+ return TTS_ERROR_SCREEN_READER_OFF;
}
if (true == client->credential_needed && NULL == client->credential) {
if (false == tts_core_check_screen_reader(client)) {
SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Screen reader option is not available");
- return TTS_ERROR_INVALID_STATE;
+ return TTS_ERROR_SCREEN_READER_OFF;
}
ecore_main_loop_thread_safe_call_async(__tts_stop_async, (void*)tts);
if (false == tts_core_check_screen_reader(client)) {
SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Screen reader option is not available");
- return TTS_ERROR_INVALID_STATE;
+ return TTS_ERROR_SCREEN_READER_OFF;
}
int ret = tts_core_stop(client);
if (false == tts_core_check_screen_reader(client)) {
SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Screen reader option is not available");
- return TTS_ERROR_INVALID_STATE;
+ return TTS_ERROR_SCREEN_READER_OFF;
}
ecore_main_loop_thread_safe_call_async(__tts_pause_async, (void*)tts);
if (false == tts_core_check_screen_reader(client)) {
SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Screen reader option is not available");
- return TTS_ERROR_INVALID_STATE;
+ return TTS_ERROR_SCREEN_READER_OFF;
}
int ret = tts_core_pause(client);
return 0;
}
+int tts_set_screen_reader_changed_cb(tts_h tts, tts_screen_reader_changed_cb callback, void* user_data)
+{
+ if (0 != __tts_get_feature_enabled()) {
+ return TTS_ERROR_NOT_SUPPORTED;
+ }
+
+ tts_client_s* client = tts_client_get(tts);
+ if (NULL == client) {
+ SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] A handle is not valid. tts(%p)", tts);
+ return TTS_ERROR_INVALID_PARAMETER;
+ }
+
+ if (NULL == callback) {
+ SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Set screen reader changed cb : Input parameter is null");
+ return TTS_ERROR_INVALID_PARAMETER;
+ }
+
+ tts_state_e current_state = tts_client_get_current_state(client);
+ if (TTS_STATE_CREATED != current_state) {
+ SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Set screen reader changed cb : Current state is not 'Created'.");
+ return TTS_ERROR_INVALID_STATE;
+ }
+
+ tts_client_set_screen_reader_changed_cb(client, callback, user_data);
+
+ SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Set screen reader changed cb");
+
+ return 0;
+}
+
+int tts_unset_screen_reader_changed_cb(tts_h tts)
+{
+ if (0 != __tts_get_feature_enabled()) {
+ return TTS_ERROR_NOT_SUPPORTED;
+ }
+
+ tts_client_s* client = tts_client_get(tts);
+ if (NULL == client) {
+ SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] A handle is not valid. tts(%p)", tts);
+ return TTS_ERROR_INVALID_PARAMETER;
+ }
+
+ tts_state_e current_state = tts_client_get_current_state(client);
+ if (TTS_STATE_CREATED != current_state) {
+ SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Unset screen reader changed cb : Current state is not 'Created'.");
+ return TTS_ERROR_INVALID_STATE;
+ }
+
+ tts_client_set_screen_reader_changed_cb(client, NULL, NULL);
+
+ SLOG(LOG_DEBUG, TAG_TTSC, "[SUCCESS] Unset screen reader changed cb");
+
+ return 0;
+}
+
+
//LCOV_EXCL_START
int tts_add_pcm(tts_h tts, int event, const void* data, unsigned int data_size, int audio_type, int rate)
{
if (false == tts_core_check_screen_reader(client)) {
SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Screen reader option is not available");
- return TTS_ERROR_INVALID_STATE;
+ return TTS_ERROR_SCREEN_READER_OFF;
}
int ret = tts_core_add_pcm(client, event, data, data_size, audio_type, rate);
if (false == tts_core_check_screen_reader(client)) {
SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Screen reader option is not available");
- return TTS_ERROR_INVALID_STATE;
+ return TTS_ERROR_SCREEN_READER_OFF;
}
int ret = tts_core_play_pcm(client);
if (false == tts_core_check_screen_reader(client)) {
SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Screen reader option is not available");
- return TTS_ERROR_INVALID_STATE;
+ return TTS_ERROR_SCREEN_READER_OFF;
}
int ret = tts_core_stop_pcm(client);
if (false == tts_core_check_screen_reader(client)) {
SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Screen reader option is not available");
- return TTS_ERROR_INVALID_STATE;
+ return TTS_ERROR_SCREEN_READER_OFF;
}
if (true == client->credential_needed && NULL == client->credential) {
TTS_ERROR_OPERATION_FAILED = TIZEN_ERROR_TTS | 0x04, /**< Operation failed */
TTS_ERROR_AUDIO_POLICY_BLOCKED = TIZEN_ERROR_TTS | 0x05, /**< Audio policy blocked */
TTS_ERROR_NOT_SUPPORTED_FEATURE = TIZEN_ERROR_TTS | 0x06, /**< Not supported feature of current engine @if MOBILE (Since 3.0) @elseif WEARABLE (Since 2.3.2) @endif */
- TTS_ERROR_SERVICE_RESET = TIZEN_ERROR_TTS | 0x07 /**< Service reset @if MOBILE (Since 3.0) @elseif WEARABLE (Since 2.3.2) @endif */
+ TTS_ERROR_SERVICE_RESET = TIZEN_ERROR_TTS | 0x07, /**< Service reset @if MOBILE (Since 3.0) @elseif WEARABLE (Since 2.3.2) @endif */
+ TTS_ERROR_SCREEN_READER_OFF = TIZEN_ERROR_TTS | 0x08 /**< Screen reader is off (Since 6.5) */
} tts_error_e;
typedef void (*tts_engine_changed_cb)(tts_h tts, const char* engine_id, const char* language, int voice_type, bool need_credential, void* user_data);
+/**
+ * @brief Called when the option of screen reader is changed.
+ * @since_tizen 6.5
+ * @param[in] tts The TTS handle
+ * @param[in] is_on The status of screen reader. If @a is_on is @c true, screen reader is turned on. If not, it is turned off.
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see tts_set_screen_reader_changed_cb()
+*/
+typedef void (*tts_screen_reader_changed_cb)(tts_h tts, bool is_on, void* user_data);
+
/**
* @brief Creates a handle for TTS.
* @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
- * @retval #TTS_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #TTS_ERROR_OUT_OF_MEMORY Out of memory
* @retval #TTS_ERROR_ENGINE_NOT_FOUND Engine not found
* @retval #TTS_ERROR_OPERATION_FAILED Operation failure
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @post If this function is called, the TTS state will be #TTS_STATE_CREATED.
* @see tts_destroy()
*/
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_OPERATION_FAILED Operation failure
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @see tts_create()
*/
int tts_destroy(tts_h tts);
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
* @retval #TTS_ERROR_OPERATION_FAILED Operation failure
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @pre The state should be #TTS_STATE_CREATED.
* @see tts_get_mode()
*/
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @pre The state should be #TTS_STATE_CREATED.
* @see tts_set_mode()
*/
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Success
- * @retval #TTS_ERROR_INVALID_STATE Invalid state
- * @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
+ * @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #TTS_ERROR_INVALID_STATE Invalid state
* @pre The state should be #TTS_STATE_CREATED or #TTS_STATE_READY.
* @see tts_play()
*/
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
+ * @retval #TTS_ERROR_SCREEN_READER_OFF Screen reader is turned off
* @pre The state should be #TTS_STATE_CREATED.
* @post If this function is successful, the TTS state will be #TTS_STATE_READY.
* If this function is failed, the error callback is called. (e.g. #TTS_ERROR_ENGINE_NOT_FOUND)
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @pre The state should be #TTS_STATE_READY.
* @post If this function is called, the TTS state will be #TTS_STATE_CREATED.
* @see tts_prepare()
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_ENGINE_NOT_FOUND Engine not found
* @retval #TTS_ERROR_OPERATION_FAILED Operation failure
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @post This function invokes tts_supported_voice_cb() repeatedly for getting voices.
* @see tts_get_default_voice()
*/
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_ENGINE_NOT_FOUND Engine not found
* @retval #TTS_ERROR_OPERATION_FAILED Operation failure
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @see tts_foreach_supported_voices()
*/
int tts_get_default_voice(tts_h tts, char** language, int* voice_type);
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
* @retval #TTS_ERROR_ENGINE_NOT_FOUND Engine not found
* @retval #TTS_ERROR_OPERATION_FAILED Operation failure
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @pre The state should be #TTS_STATE_READY.
* @see tts_get_private_data()
*/
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
- * @retval #TTS_ERROR_INVALID_STATE Invalid state
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #TTS_ERROR_INVALID_STATE Invalid state
* @retval #TTS_ERROR_ENGINE_NOT_FOUND Engine not found
* @retval #TTS_ERROR_OPERATION_FAILED Operation failure
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @pre The state should be #TTS_STATE_READY.
* @see tts_set_private_data()
*/
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
* @retval #TTS_ERROR_OPERATION_FAILED Operation failure
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @pre The state should be #TTS_STATE_READY.
* @see tts_add_text()
*/
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
- * @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
+ * @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @see tts_play()
* @see tts_stop()
* @see tts_pause()
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
* @retval #TTS_ERROR_OPERATION_FAILED Operation failure
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @pre The state should be #TTS_STATE_CREATED.
* @see tts_add_text()
*/
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
- * @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
+ * @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_OPERATION_FAILED Operation failure
* @see tts_set_error_cb()
* @see tts_unset_error_cb()
int tts_get_error_message(tts_h tts, char** err_msg);
+/**
+ * @brief Checks whether screen reader is turned on or not.
+ * @since_tizen 6.5
+ * @remarks If TTS mode is #TTS_MODE_SCREEN_READER, you should call this function to check whether screen reader is turned on or not, before calling 'tts_prepare()'.
+ * If TTS mode is #TTS_MODE_SCREEN_READER and @a is_on is @c false, all other functions will return #TIZEN_ERROR_SCREEN_READER_OFF.
+ * The @a is_on must be released using free() when it is no longer required.
+ * @param[in] tts The TTS handle
+ * @param[out] is_on The current status of screen reader
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ * @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
+ * @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #TTS_ERROR_OPERATION_FAILED Operation failure
+ * @see tts_set_screen_reader_changed_cb()
+ * @see tts_unset_screen_reader_changed_cb()
+*/
+int tts_check_screen_reader_on(tts_h tts, bool* is_on);
+
+
/**
* @brief Adds a text to the queue.
* @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
+ * @retval #TTS_ERROR_PERMISSION_DENIED Permission denied
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
* @retval #TTS_ERROR_INVALID_VOICE Invalid voice about language, voice type
* @retval #TTS_ERROR_OPERATION_FAILED Operation failure
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
- * @retval #TTS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #TTS_ERROR_SCREEN_READER_OFF Screen reader is turned off
* @pre The state should be #TTS_STATE_READY, #TTS_STATE_PLAYING or #TTS_STATE_PAUSED.
* @see tts_get_max_text_size()
* @see tts_set_credential()
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
+ * @retval #TTS_ERROR_PERMISSION_DENIED Permission denied
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_OUT_OF_NETWORK Out of network
* @retval #TTS_ERROR_INVALID_STATE Invalid state
* @retval #TTS_ERROR_OPERATION_FAILED Operation failure
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
- * @retval #TTS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #TTS_ERROR_SCREEN_READER_OFF Screen reader is turned off
* @pre The current state should be #TTS_STATE_READY or #TTS_STATE_PAUSED.
* @post If this function succeeds, the TTS state will be #TTS_STATE_PLAYING.
* @see tts_add_text()
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
* @retval #TTS_ERROR_OPERATION_FAILED Operation failure
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
+ * @retval #TTS_ERROR_SCREEN_READER_OFF Screen reader is turned off
* @pre The TTS state should be #TTS_STATE_READY or #TTS_STATE_PLAYING or #TTS_STATE_PAUSED.
* @post If this function succeeds, the TTS state will be #TTS_STATE_READY.
* This function will remove all text via tts_add_text() and synthesized sound data.
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
* @retval #TTS_ERROR_OPERATION_FAILED Operation failure
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
+ * @retval #TTS_ERROR_SCREEN_READER_OFF Screen reader is turned off
* @pre The TTS state should be #TTS_STATE_PLAYING.
* @post If this function succeeds, the TTS state will be #TTS_STATE_PAUSED.
* @see tts_play()
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_OPERATION_FAILED Operation failure
+ * @retval #TTS_ERROR_SCREEN_READER_OFF Screen reader is turned off
* @pre The state should be #TTS_STATE_READY.
* @post If this function succeeds, the TTS state will be #TTS_STATE_PLAYING.
* @see tts_add_text()
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @pre The state should be #TTS_STATE_CREATED.
* @see tts_state_changed_cb()
* @see tts_unset_state_changed_cb()
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @pre The state should be #TTS_STATE_CREATED.
* @see tts_set_state_changed_cb()
*/
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @pre The state should be #TTS_STATE_CREATED.
* @see tts_utterance_started_cb()
* @see tts_unset_utterance_started_cb()
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @pre The state should be #TTS_STATE_CREATED.
* @see tts_set_utterance_started_cb()
*/
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @pre The state should be #TTS_STATE_CREATED.
* @see tts_utterance_completed_cb()
* @see tts_unset_utterance_completed_cb()
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @pre The state should be #TTS_STATE_CREATED.
* @see tts_set_utterance_completed_cb()
*/
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @pre The state should be #TTS_STATE_CREATED.
* @see tts_error_cb()
* @see tts_unset_error_cb()
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @pre The state should be #TTS_STATE_CREATED.
* @see tts_set_error_cb()
*/
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @pre The state should be #TTS_STATE_CREATED.
* @see tts_default_voice_changed_cb()
* @see tts_unset_default_voice_changed_cb()
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @pre The state should be #TTS_STATE_CREATED.
* @see tts_set_default_voice_changed_cb()
*/
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @pre The state should be #TTS_STATE_CREATED.
* @see tts_engine_changed_cb()
* @see tts_unset_engine_changed_cb()
* @return @c 0 on success,
* otherwise a negative error value
* @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #TTS_ERROR_INVALID_STATE Invalid state
- * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
* @pre The state should be #TTS_STATE_CREATED.
* @see tts_set_engine_changed_cb()
*/
int tts_unset_engine_changed_cb(tts_h tts);
+/**
+ * @brief Registers a callback function to detect the option of screen reader is changed or not.
+ * @since_tizen 6.5
+ * @remarks If TTS mode is #TTS_MODE_SCREEN_READER, you should set the callback to check the option of screen reader is changed or not.
+ * @param[in] tts The TTS handle
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ * @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
+ * @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #TTS_ERROR_INVALID_STATE Invalid state
+ * @pre The state should be #TTS_STATE_CREATED.
+ * @see tts_screen_reader_changed_cb()
+ * @see tts_unset_screen_reader_changed_cb()
+*/
+int tts_set_screen_reader_changed_cb(tts_h tts, tts_screen_reader_changed_cb callback, void* user_data);
+
+
+/**
+ * @brief Unregisters the callback function to detect the option of screen reader is changed or not.
+ * @since_tizen 6.5
+ * @param[in] tts The TTS handle
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ * @retval #TTS_ERROR_NONE Successful
+ * @retval #TTS_ERROR_NOT_SUPPORTED TTS NOT supported
+ * @retval #TTS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #TTS_ERROR_INVALID_STATE Invalid state
+ * @pre The state should be #TTS_STATE_CREATED.
+ * @see tts_set_screen_reader_changed_cb()
+*/
+int tts_unset_screen_reader_changed_cb(tts_h tts);
+
#ifdef __cplusplus
}
#endif