Add g_steal_pointer to avoid double-free
[platform/core/uifw/tts.git] / client / tts_client.h
1 /*
2 *  Copyright (c) 2011-2016 Samsung Electronics Co., Ltd All Rights Reserved
3 *  Licensed under the Apache License, Version 2.0 (the "License");
4 *  you may not use this file except in compliance with the License.
5 *  You may obtain a copy of the License at
6 *  http://www.apache.org/licenses/LICENSE-2.0
7 *  Unless required by applicable law or agreed to in writing, software
8 *  distributed under the License is distributed on an "AS IS" BASIS,
9 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10 *  See the License for the specific language governing permissions and
11 *  limitations under the License.
12 */
13
14
15 #ifndef __TTS_CLIENT_H_
16 #define __TTS_CLIENT_H_
17
18 #include <Ecore.h>
19
20 #include "tts.h"
21 #include "tts_internal.h"
22 #include "tts_config_mgr.h"
23 #include "tts_main.h"
24
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28
29
30 #define TTS_STATE_INVALID -1
31
32 typedef struct {
33         /* base info */
34         tts_h   tts;
35         int     pid;
36         unsigned int    uid;                    /*<< unique id = pid + handle */
37         int     current_utt_id;
38
39         /* callback info */
40         tts_state_changed_cb            state_changed_cb;
41         void*                           state_changed_user_data;
42         tts_utterance_started_cb        utt_started_cb;
43         void*                           utt_started_user_data;
44         tts_utterance_completed_cb      utt_completed_cb;
45         void*                           utt_completed_user_data;
46         tts_error_cb                    error_cb;
47         void*                           error_user_data;
48         tts_default_voice_changed_cb    default_voice_changed_cb;
49         void*                           default_voice_changed_user_data;
50         tts_engine_changed_cb           engine_changed_cb;
51         void*                           engine_changed_user_data;
52         tts_screen_reader_changed_cb    screen_reader_changed_cb;
53         void*                           screen_reader_changed_user_data;
54         tts_supported_voice_cb          supported_voice_cb;
55         void*                           supported_voice_user_data;
56         tts_service_state_changed_cb            service_state_changed_cb;
57         void*                           service_state_changed_user_data;
58         tts_synthesized_pcm_cb          synthesized_pcm_cb;
59         void*                           synthesized_pcm_user_data;
60
61         int registered_event_mask;
62
63         /* mode / state */
64         tts_mode_e      mode;
65         tts_playing_mode_e playing_mode;
66         tts_state_e     before_state;
67         tts_state_e     current_state;
68         tts_service_state_e current_service_state;
69
70         /* semaphore */
71         int             cb_ref_count;
72
73         /* callback data */
74         int             utt_id;
75         int             reason;
76         char*           err_msg;
77
78         /* connection */
79         int             prepare_count;
80         Ecore_Timer*    hello_timer;
81         bool start_listening;
82         bool reprepared;
83         bool service_out;
84
85         /* options */
86         char*           credential;
87         bool            credential_needed;
88         bool            internal;
89
90         /* repetition */
91         char*           text_repeat;
92
93         /* timer */
94         Ecore_Timer* notify_error_timer;
95         Ecore_Timer* notify_state_timer;
96
97 } tts_client_s;
98
99 int tts_client_new(tts_h* tts);
100 int tts_client_destroy(tts_h tts);
101
102 tts_client_s* tts_client_get(tts_h tts);
103 tts_client_s* tts_client_get_by_uid(unsigned int uid);
104 tts_h tts_client_get_handle(tts_client_s* client);
105
106 bool tts_client_is_valid_uid(unsigned int uid);
107 bool tts_client_is_valid_client(tts_client_s* client);
108
109 unsigned int tts_client_get_size();
110
111 int tts_client_use_callback(tts_client_s* client);
112 int tts_client_not_use_callback(tts_client_s* client);
113
114 int tts_client_get_use_callback(tts_client_s* client);
115
116 GList* tts_client_get_client_list();
117
118 unsigned int tts_client_get_uid(tts_client_s* client);
119
120 void tts_client_set_current_state(tts_client_s* client, tts_state_e state);
121 tts_state_e tts_client_get_current_state(tts_client_s* client);
122
123 void tts_client_set_current_service_state(tts_client_s* client, tts_service_state_e service_state);
124 tts_service_state_e tts_client_get_current_service_state(tts_client_s* client);
125
126 void tts_client_set_start_listening(unsigned int uid, bool is_listening_started);
127 bool tts_client_is_listening_started(unsigned int uid);
128
129 void tts_client_set_reprepared(tts_client_s* client, bool is_reprepared);
130 bool tts_client_is_reprepared(tts_client_s* client);
131
132 void tts_client_set_service_out(tts_client_s* client, bool is_service_out);
133 bool tts_client_is_service_out(tts_client_s* client);
134
135 void tts_client_set_mode(tts_client_s* client, tts_mode_e mode);
136 tts_mode_e tts_client_get_mode(tts_client_s* client);
137
138 void tts_client_set_playing_mode(tts_client_s* client, tts_playing_mode_e mode);
139 tts_playing_mode_e tts_client_get_playing_mode(tts_client_s* client);
140
141 void tts_client_set_repeat_text(tts_client_s* client, const char* text);
142 char* tts_client_get_repeat_text(tts_client_s* client);
143
144 int tts_client_new_utterance_id(tts_client_s* client);
145
146 void tts_client_set_error_message(tts_client_s* client, const char* error_message);
147 const char* tts_client_get_error_message(tts_client_s* client);
148
149 void tts_client_set_credential_key(tts_client_s* client, const char* credential_key);
150 const char* tts_client_get_credential_key(tts_client_s* client);
151
152 void tts_client_set_state_changed_cb(tts_client_s* client, tts_state_changed_cb callback, void* user_data);
153 void tts_client_set_utterance_started_cb(tts_client_s* client, tts_utterance_started_cb callback, void* user_data);
154 void tts_client_set_utterance_completed_cb(tts_client_s* client, tts_utterance_completed_cb callback, void* user_data);
155 void tts_client_set_error_cb(tts_client_s* client, tts_error_cb callback, void* user_data);
156 void tts_client_set_default_voice_changed_cb(tts_client_s* client, tts_default_voice_changed_cb callback, void* user_data);
157 void tts_client_set_engine_changed_cb(tts_client_s* client, tts_engine_changed_cb callback, void* user_data);
158 void tts_client_set_screen_reader_changed_cb(tts_client_s* client, tts_screen_reader_changed_cb callback, void* user_data);
159 void tts_client_set_supported_voice_cb(tts_client_s* client, tts_supported_voice_cb callback, void* user_data);
160 void tts_client_set_service_state_changed_cb(tts_client_s* client, tts_service_state_changed_cb callback, void* user_data);
161 void tts_client_set_synthesized_pcm_cb(tts_client_s* client, tts_synthesized_pcm_cb callback, void* user_data);
162
163 tts_state_changed_cb tts_client_get_state_changed_cb(tts_client_s* client);
164 void* tts_client_get_state_changed_user_data(tts_client_s* client);
165
166 tts_utterance_started_cb tts_client_get_utterance_started_cb(tts_client_s* client);
167 void* tts_client_get_utterance_started_user_data(tts_client_s* client);
168
169 tts_utterance_completed_cb tts_client_get_utterance_completed_cb(tts_client_s* client);
170 void* tts_client_get_utterance_completed_user_data(tts_client_s* client);
171
172 tts_error_cb tts_client_get_error_cb(tts_client_s* client);
173 void* tts_client_get_error_user_data(tts_client_s* client);
174
175 tts_default_voice_changed_cb tts_client_get_default_voice_changed_cb(tts_client_s* client);
176 void* tts_client_get_default_voice_changed_user_data(tts_client_s* client);
177
178 tts_engine_changed_cb tts_client_get_engine_changed_cb(tts_client_s* client);
179 void* tts_client_get_engine_changed_user_data(tts_client_s* client);
180
181 tts_screen_reader_changed_cb tts_client_get_screen_reader_changed_cb(tts_client_s* client);
182 void* tts_client_get_screen_reader_changed_user_data(tts_client_s* client);
183
184 tts_supported_voice_cb tts_client_get_supported_voice_cb(tts_client_s* client);
185 void* tts_client_get_supported_voice_user_data(tts_client_s* client);
186
187 tts_service_state_changed_cb tts_client_get_service_state_changed_cb(tts_client_s* client);
188 void* tts_client_get_service_state_changed_user_data(tts_client_s* client);
189
190 tts_synthesized_pcm_cb tts_client_get_synthesized_pcm_cb(tts_client_s* client);
191 void* tts_client_get_synthesized_pcm_user_data(tts_client_s* client);
192
193 int tts_client_get_registered_event_mask(tts_client_s* client);
194
195 void tts_client_unset_all_cb(tts_client_s* client);
196
197 #ifdef __cplusplus
198 }
199 #endif
200
201 #endif /* __TTS_CLIENT_H_ */