2 * Copyright (c) 2021 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.
13 #include "ttsd_main.h"
15 #include "ttsd_dbus.h"
16 #include "ttsd_tidl.h"
17 #include "ttsd_data.h"
20 int(*ttsd_dbus_vtable[])() = {&ttsd_dbus_open_connection, &ttsd_dbus_close_connection, &ttsdc_dbus_send_utt_start_message,
21 &ttsdc_dbus_send_utt_finish_message, &ttsdc_dbus_send_set_state_message, &ttsdc_dbus_send_error_message};
22 int(*ttsd_tidl_vtable[])() = {&ttsd_tidl_open_connection, &ttsd_tidl_close_connection, &ttsdc_tidl_send_utt_start_message,
23 &ttsdc_tidl_send_utt_finish_message, &ttsdc_tidl_send_set_state_message, &ttsdc_tidl_send_error_message};
25 int ttsd_ipc_open_connection()
27 SLOG(LOG_INFO, tts_tag(), "[IPC] ttsd_ipc_open_connection");
29 int return_for_tidl = TTSD_ERROR_OPERATION_FAILED;
30 int return_for_dbus = TTSD_ERROR_OPERATION_FAILED;
32 return_for_tidl = ttsd_tidl_vtable[OPEN_CONNECTION]();
33 return_for_dbus = ttsd_dbus_vtable[OPEN_CONNECTION]();
35 if (return_for_tidl != TTSE_ERROR_NONE || return_for_dbus != TTSE_ERROR_NONE) {
36 return TTSD_ERROR_OPERATION_FAILED;
39 return TTSD_ERROR_NONE;
42 int ttsd_ipc_close_connection()
44 SLOG(LOG_INFO, tts_tag(), "[IPC] ttsd_ipc_close_connection");
46 int return_for_tidl = TTSD_ERROR_OPERATION_FAILED;
47 int return_for_dbus = TTSD_ERROR_OPERATION_FAILED;
49 return_for_tidl = ttsd_tidl_vtable[CLOSE_CONNECTION]();
50 return_for_dbus = ttsd_dbus_vtable[CLOSE_CONNECTION]();
52 if (return_for_tidl != TTSE_ERROR_NONE || return_for_dbus != TTSE_ERROR_NONE) {
53 return TTSD_ERROR_OPERATION_FAILED;
56 return TTSD_ERROR_NONE;
59 int ttsdc_ipc_send_utt_start_message(int pid, unsigned int uid, int uttid)
61 SLOG(LOG_INFO, tts_tag(), "[IPC] ttsdc_ipc_send_utt_start_message");
63 if (0 > ttsd_data_is_client(uid)) {
64 SLOG(LOG_ERROR, tts_tag(), "[ERROR] uid is not valid (%u)", uid);
65 return TTSD_ERROR_INVALID_PARAMETER;
68 switch (ttsd_data_get_ipc_method(uid))
70 case TTS_IPC_METHOD_DBUS:
71 SLOG(LOG_DEBUG, tts_tag(), "[IPC] ipc method : dbus");
72 return ttsd_dbus_vtable[SEND_UTTERANCE_START](pid, uid, uttid);
74 case TTS_IPC_METHOD_TIDL:
75 SLOG(LOG_DEBUG, tts_tag(), "[IPC] ipc method : tidl");
76 return ttsd_tidl_vtable[SEND_UTTERANCE_START](pid, uid, uttid);
79 SLOG(LOG_ERROR, tts_tag(), "[ERROR] method is not valid");
82 return TTSD_ERROR_OPERATION_FAILED;
85 int ttsdc_ipc_send_utt_finish_message(int pid, unsigned int uid, int uttid)
87 SLOG(LOG_INFO, tts_tag(), "[IPC] ttsdc_ipc_send_utt_finish_message");
89 if (0 > ttsd_data_is_client(uid)) {
90 SLOG(LOG_ERROR, tts_tag(), "[ERROR] uid is not valid (%u)", uid);
91 return TTSD_ERROR_INVALID_PARAMETER;
94 switch (ttsd_data_get_ipc_method(uid))
96 case TTS_IPC_METHOD_DBUS:
97 SLOG(LOG_DEBUG, tts_tag(), "[IPC] ipc method : dbus");
98 return ttsd_dbus_vtable[SEND_UTTERANCE_FINISH](pid, uid, uttid);
100 case TTS_IPC_METHOD_TIDL:
101 SLOG(LOG_DEBUG, tts_tag(), "[IPC] ipc method : tidl");
102 return ttsd_tidl_vtable[SEND_UTTERANCE_FINISH](pid, uid, uttid);
105 SLOG(LOG_ERROR, tts_tag(), "[ERROR] method is not valid");
108 return TTSD_ERROR_OPERATION_FAILED;
111 int ttsdc_ipc_send_set_state_message(int pid, unsigned int uid, int state)
113 SLOG(LOG_INFO, tts_tag(), "[IPC] ttsdc_ipc_send_set_state_message");
115 if (0 > ttsd_data_is_client(uid)) {
116 SLOG(LOG_ERROR, tts_tag(), "[ERROR] uid is not valid (%u)", uid);
117 return TTSD_ERROR_INVALID_PARAMETER;
120 switch (ttsd_data_get_ipc_method(uid))
122 case TTS_IPC_METHOD_DBUS:
123 SLOG(LOG_DEBUG, tts_tag(), "[IPC] ipc method : dbus");
124 return ttsd_dbus_vtable[SEND_SET_STATE](pid, uid, state);
126 case TTS_IPC_METHOD_TIDL:
127 SLOG(LOG_DEBUG, tts_tag(), "[IPC] ipc method : tidl");
128 return ttsd_tidl_vtable[SEND_SET_STATE] (pid, uid, state);
131 SLOG(LOG_ERROR, tts_tag(), "[ERROR] method is not valid");
134 return TTSD_ERROR_OPERATION_FAILED;
137 int ttsdc_ipc_send_error_message(int pid, unsigned int uid, int uttid, int reason, char* err_msg)
139 SLOG(LOG_INFO, tts_tag(), "[IPC] ttsdc_ipc_send_error_message");
141 if (0 > ttsd_data_is_client(uid)) {
142 SLOG(LOG_ERROR, tts_tag(), "[ERROR] uid is not valid (%u)", uid);
143 return TTSD_ERROR_INVALID_PARAMETER;
146 switch (ttsd_data_get_ipc_method(uid))
148 case TTS_IPC_METHOD_DBUS:
149 SLOG(LOG_DEBUG, tts_tag(), "[IPC] ipc method : dbus");
150 return ttsd_dbus_vtable[SEND_ERROR](pid, uid, uttid, reason, err_msg);
152 case TTS_IPC_METHOD_TIDL:
153 SLOG(LOG_DEBUG, tts_tag(), "[IPC] ipc method : tidl");
154 return ttsd_tidl_vtable[SEND_ERROR](pid, uid, uttid, reason, err_msg);
157 SLOG(LOG_ERROR, tts_tag(), "[ERROR] method is not valid");
160 return TTSD_ERROR_OPERATION_FAILED;