Merge changes I94bee8d4,I9dc8f8fb,Id361946a,I1b8aef64 into tizen
[platform/core/uifw/multi-assistant-service.git] / inc / service_ipc_dbus_dispatcher.h
1 /*
2  * Copyright 2020 Samsung Electronics Co., Ltd
3  *
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
7  *
8  * http://floralicense.org/license/
9  *
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.
15  */
16
17 #ifndef __SERVICE_IPC_DBUS_DISPATCHER_H__
18 #define __SERVICE_IPC_DBUS_DISPATCHER_H__
19
20 #include <string>
21
22 #include <dbus/dbus.h>
23
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27
28 class CServiceMain;
29
30 class IServiceIpcObserver {
31 public:
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;
51
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;
55 };
56
57 class CServiceIpcDbusDispatcher {
58 public:
59         CServiceIpcDbusDispatcher() {}
60         virtual ~CServiceIpcDbusDispatcher() {}
61
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);
84
85         void set_ipc_observer(IServiceIpcObserver* observer) { mIpcObserver = observer; }
86 private:
87         IServiceIpcObserver *mIpcObserver{nullptr};
88 };
89
90 #ifdef __cplusplus
91 }
92 #endif
93
94
95 #endif  /* __SERVICE_IPC_DBUS_DISPATCHER_H__ */