2 * Copyright 2020 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.1 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://floralicense.org/license/
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #ifndef __SERVICE_IPC_DBUS_DISPATCHER_H__
18 #define __SERVICE_IPC_DBUS_DISPATCHER_H__
22 #include <dbus/dbus.h>
30 class IServiceIpcObserver {
32 virtual int on_initialize(pid_t pid) = 0;
33 virtual int on_deinitialize(pid_t pid) = 0;
34 virtual int on_get_audio_format(pid_t pid, int& rate, int& channel, int& audio_type) = 0;
35 virtual int on_get_audio_source_type(pid_t pid, std::string& type) = 0;
36 virtual int on_send_asr_result(pid_t pid, int event, std::string asr_result) = 0;
37 virtual int on_send_result(pid_t pid,
38 std::string display_text, std::string utterance_text, std::string result_json) = 0;
39 virtual int on_send_recognition_result(pid_t pid, int result) = 0;
40 virtual int on_start_streaming_audio_data(pid_t pid, int type) = 0;
41 virtual int on_stop_streaming_audio_data(pid_t pid, int type) = 0;
42 virtual int on_update_voice_feedback_state(pid_t pid, int state) = 0;
43 virtual int on_send_assistant_specific_command(pid_t pid, std::string command) = 0;
44 virtual int on_set_background_volume(pid_t pid, double ratio) = 0;
45 virtual int on_set_preprocessing_allow_mode(pid_t pid, int mode, std::string app_id) = 0;
46 virtual int on_send_preprocessing_result(pid_t pid, int result) = 0;
47 virtual int on_set_wake_word_audio_require_flag(pid_t pid, int require) = 0;
48 virtual int on_set_assistant_language(pid_t pid, std::string language) = 0;
49 virtual int on_add_wake_word(pid_t pid, std::string wake_word, std::string language) = 0;
50 virtual int on_remove_wake_word(pid_t pid, std::string wake_word, std::string language) = 0;
52 virtual int on_ui_initialize(pid_t pid) = 0;
53 virtual int on_ui_deinitialize(pid_t pid) = 0;
54 virtual int on_ui_change_assistant(std::string app_id) = 0;
57 class CServiceIpcDbusDispatcher {
59 CServiceIpcDbusDispatcher() {}
60 virtual ~CServiceIpcDbusDispatcher() {}
62 int on_hello(DBusConnection* conn, DBusMessage* msg);
63 int on_initialize(DBusConnection* conn, DBusMessage* msg);
64 int on_deinitialize(DBusConnection* conn, DBusMessage* msg);
65 int on_get_audio_format(DBusConnection* conn, DBusMessage* msg);
66 int on_get_audio_source_type(DBusConnection* conn, DBusMessage* msg);
67 int on_send_asr_result(DBusConnection* conn, DBusMessage* msg);
68 int on_send_result(DBusConnection* conn, DBusMessage* msg);
69 int on_send_recognition_result(DBusConnection* conn, DBusMessage* msg);
70 int on_start_streaming_audio_data(DBusConnection* conn, DBusMessage* msg);
71 int on_stop_streaming_audio_data(DBusConnection* conn, DBusMessage* msg);
72 int on_update_voice_feedback_state(DBusConnection* conn, DBusMessage* msg);
73 int on_send_assistant_specific_command(DBusConnection* conn, DBusMessage* msg);
74 int on_set_background_volume(DBusConnection* conn, DBusMessage* msg);
75 int on_set_preprocessing_allow_mode(DBusConnection* conn, DBusMessage* msg);
76 int on_send_preprocessing_result(DBusConnection* conn, DBusMessage* msg);
77 int on_set_wake_word_audio_require_flag(DBusConnection* conn, DBusMessage* msg);
78 int on_set_assistant_language(DBusConnection* conn, DBusMessage* msg);
79 int on_add_wake_word(DBusConnection* conn, DBusMessage* msg);
80 int on_remove_wake_word(DBusConnection* conn, DBusMessage* msg);
81 int on_ui_initialize(DBusConnection* conn, DBusMessage* msg);
82 int on_ui_deinitialize(DBusConnection* conn, DBusMessage* msg);
83 int on_ui_change_assistant(DBusConnection* conn, DBusMessage* msg);
85 void set_ipc_observer(IServiceIpcObserver* observer) { mIpcObserver = observer; }
87 IServiceIpcObserver *mIpcObserver{nullptr};
95 #endif /* __SERVICE_IPC_DBUS_DISPATCHER_H__ */