int uid;
bool connected;
rpc_port_proxy_tts_h rpc_h;
+ rpc_port_tts_notify_cb_h notify_cb_h;
int mode;
} tts_tidl_info_s;
SLOG(LOG_DEBUG, TAG_TTSC, ">>>>> TTS Hello");
/* register callback - needed to create new client before adding callback */
- rpc_port_tts_notify_cb_h cb = rpc_port_tts_notify_cb_create(__notify_cb, false, NULL);
- if (0 != rpc_port_proxy_tts_invoke_register_cb(info->rpc_h, client->pid, uid, cb)) {
- SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Failed to invoke register");
- return TTS_ERROR_OPERATION_FAILED;
+ if (NULL != info->notify_cb_h) {
+ rpc_port_proxy_tts_notify_cb_dispose(info->rpc_h, info->notify_cb_h);
+ info->notify_cb_h = NULL;
}
+ info->notify_cb_h = rpc_port_tts_notify_cb_create(__notify_cb, false, NULL);
+ rpc_port_proxy_tts_invoke_register_cb(info->rpc_h, client->pid, uid, info->notify_cb_h);
+
SLOG(LOG_DEBUG, TAG_TTSC, "<<<<");
return TTS_ERROR_NONE;
}
int tts_tidl_request_hello_sync(int uid)
{
- //TODO implement when adding sync api
+ SLOG(LOG_DEBUG, TAG_TTSC, "[TIDL] tts_tidl_request_hello");
+
+ tts_client_s* client = tts_client_get_by_uid(uid);
+ if (NULL == client) {
+ SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to get client");
+ return TTS_ERROR_INVALID_PARAMETER;
+ }
+
+ tts_tidl_info_s* info = __get_tidl_info_s(uid);
+ if (NULL == info) {
+ SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to get tidl info");
+ return TTS_ERROR_INVALID_PARAMETER;
+ }
+
+ if (!info->connected) {
+ SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Not Connected");
+ return TTS_ERROR_OPERATION_FAILED;
+ }
+
+ SLOG(LOG_DEBUG, TAG_TTSC, ">>>>> TTS Hello");
+ /* register callback - needed to create new client before adding callback */
+ if (NULL != info->notify_cb_h) {
+ rpc_port_proxy_tts_notify_cb_dispose(info->rpc_h, info->notify_cb_h);
+ info->notify_cb_h = NULL;
+ }
+
+ info->notify_cb_h = rpc_port_tts_notify_cb_create(__notify_cb, false, NULL);
+ if (0 != rpc_port_proxy_tts_invoke_register_cb_sync(info->rpc_h, client->pid, uid, info->notify_cb_h)) {
+ SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Failed to invoke register");
+ return TTS_ERROR_OPERATION_FAILED;
+ }
+
+ SLOG(LOG_DEBUG, TAG_TTSC, "<<<<");
return TTS_ERROR_NONE;
}
free(sender);
}
-static int __register_cb(rpc_port_stub_tts_context_h context, int pid, int uid, rpc_port_tts_notify_cb_h callback, void* user_data)
+static void __register_cb(rpc_port_stub_tts_context_h context, int pid, int uid, rpc_port_tts_notify_cb_h callback, void* user_data)
{
SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS REGISTER CALLBACK uid(%d)", uid);
bool credential_needed = false;
if (0 != ttsd_server_initialize(pid, uid, TTS_IPC_METHOD_TIDL, &credential_needed)) {
SLOG(LOG_ERROR, tts_tag(), "[IN ERROR] ttsd Hello : server initialize");
- return TTSE_ERROR_OPERATION_FAILED;
+ return;
}
if (0 != ttsd_data_set_notify_h(uid, callback, NULL)) {
SLOG(LOG_ERROR, tts_tag(), "[Server ERROR] Fail to set notify callback");
- return TTSD_ERROR_OPERATION_FAILED;
+ return;
}
SLOG(LOG_INFO, tts_tag(), "create player instance");
SLOG(LOG_ERROR, tts_tag(), "<<<<<<<<<<<");
+ return;
+}
+
+static int __register_cb_sync(rpc_port_stub_tts_context_h context, int pid, int uid, rpc_port_tts_notify_cb_h callback, void* user_data)
+{
+ SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS REGISTER CALLBACK synchronously uid(%d)", uid);
+ if (0 != ttsd_data_set_notify_h(uid, callback, NULL)) {
+ SLOG(LOG_ERROR, tts_tag(), "[Server ERROR] Fail to set notify callback");
+ return TTSD_ERROR_OPERATION_FAILED;
+ }
+
+ SLOG(LOG_ERROR, tts_tag(), "<<<<<<<<<<<");
+
return TTSE_ERROR_NONE;
}
SECURE_SLOG(LOG_DEBUG, tts_tag(), "[IN] tts initialize : pid(%d), uid(%d)", pid , uid);
if (0 != ttsd_server_initialize(pid, uid, TTS_IPC_METHOD_TIDL, credential_needed)) {
- return -1;
+ return TTSD_ERROR_OPERATION_FAILED;
}
SLOG(LOG_DEBUG, tts_tag(), "[OUT] tts initialize credential_needed(%d)", *credential_needed);
g_callback.terminate = __destroy_client_cb;
g_callback.set_mode = __set_mode_cb;
g_callback.register_cb = __register_cb;
+ g_callback.register_cb_sync = __register_cb_sync;
g_callback.unregister_cb = __unregister_cb;
g_callback.initialize = __initialize_cb;
g_callback.finalize = __finalize_cb;
interface tts {
void notify_cb(int pid, int uid, bundle msg) delegate;
- int register_cb(int pid, int uid, notify_cb callback);
+ void register_cb(int pid, int uid, notify_cb callback) async;
+ int register_cb_sync(int pid, int uid, notify_cb callback);
int unregister_cb(int uid);
int set_mode(int mode);