2 * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (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://www.apache.org/licenses/LICENSE-2.0
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.
21 #include <app_common.h>
22 #include <package_manager.h>
24 #include "gesture_engine.h"
25 #include "gesture_engine_main.h"
26 #include "gesture_engine_dbus.h"
31 #define LOG_TAG "GESTURE_ENGINE"
33 EXPORT_API int gesture_engine_connect(gesture_engine_h *engine_handle)
35 LOGD("gesture_engine_connect start");
36 CHECK_GESTURE_FEATURE();
40 return GESTURE_ENGINE_ERROR_INVALID_PARAMETER;
42 struct gesture_engine_s *engine_struct = (gesture_engine_h)calloc(1, sizeof(struct gesture_engine_s));
45 return GESTURE_ENGINE_ERROR_OUT_OF_MEMORY;
47 ret = gesture_engine_dbus_init(&engine_struct->gdbus_connection, &engine_struct->server_watcher_id,
48 &engine_struct->monitor_id, &engine_struct->server_monitor_id, GESTURE_CLIENT_LIB_ENGINE, (void *)engine_struct);
49 if (ret != GESTURE_ENGINE_ERROR_NONE) {
50 LOGE("Failed to initialize dbus : %d", ret);
52 return GESTURE_ENGINE_ERROR_OPERATION_FAILED;
55 *engine_handle = engine_struct;
57 return GESTURE_ENGINE_ERROR_NONE;
60 EXPORT_API int gesture_engine_disconnect(gesture_engine_h engine_handle)
62 CHECK_GESTURE_FEATURE();
66 return GESTURE_ENGINE_ERROR_INVALID_PARAMETER;
68 ret = gesture_engine_dbus_shutdown(engine_handle->gdbus_connection, &engine_handle->server_monitor_id, &engine_handle->monitor_id);
69 if (ret != GESTURE_ENGINE_ERROR_NONE) {
70 LOGE("Failed to finalize dbus : %d", ret);
72 return GESTURE_ENGINE_ERROR_OPERATION_FAILED;
75 if (engine_handle->gdbus_connection)
76 g_object_unref(engine_handle->gdbus_connection);
80 return GESTURE_ENGINE_ERROR_NONE;
83 EXPORT_API int gesture_engine_main(int argc, char** argv, gesture_engine_h engine_handle, gesture_engine_request_callback_s *callback)
85 LOGD("gesture_engine_main start");
87 CHECK_GESTURE_FEATURE();
90 LOGE("basic engine callbacks pointer is null.");
91 return GESTURE_ENGINE_ERROR_INVALID_PARAMETER;
94 int ret = GESTURE_ENGINE_ERROR_NONE;
96 ret = gesture_engine_dbus_main_start(engine_handle->gdbus_connection, callback);
97 if (ret != GESTURE_ENGINE_ERROR_NONE) {
98 LOGE("Failed to start engine main : %d", ret);
99 return GESTURE_ENGINE_ERROR_OPERATION_FAILED;
105 EXPORT_API int gesture_engine_send_result(gesture_engine_h engine_handle, gesture_engine_result_event_e event, hand_gesture_type_e gesture_type, hand_gesture_data_h result, void* time_info, void* user_data)
107 LOGD("gesture_engine_send_result start");
108 LOGD("gesture type = %d", gesture_type);
110 CHECK_GESTURE_FEATURE();
112 if (!engine_handle) {
113 LOGE("invalid parameter : engine_handle");
114 return GESTURE_ENGINE_ERROR_INVALID_PARAMETER;
117 int ret = GESTURE_ENGINE_ERROR_NONE;
119 ret = gesture_engine_dbus_send_result(engine_handle->gdbus_connection, event, gesture_type, result, time_info, user_data);
120 if (ret != GESTURE_ENGINE_ERROR_NONE) {
121 LOGE("Failed to send result : %d", ret);
122 return GESTURE_ENGINE_ERROR_OPERATION_FAILED;
128 EXPORT_API int gesture_engine_send_error(gesture_engine_h engine_handle, gesture_engine_error_e error, const char* msg)
130 LOGD("gesture_engine_send_error start");
131 LOGD("error type = %d", error);
132 LOGD("msg = %s", msg);
134 CHECK_GESTURE_FEATURE();
136 if (!engine_handle) {
137 LOGE("invalid parameter : engine_handle");
138 return GESTURE_ENGINE_ERROR_INVALID_PARAMETER;
141 int ret = GESTURE_ENGINE_ERROR_NONE;
143 ret = gesture_engine_dbus_send_error(engine_handle->gdbus_connection, error, msg);
144 if (ret != GESTURE_ENGINE_ERROR_NONE) {
145 LOGE("Failed to send result : %d", ret);
146 return GESTURE_ENGINE_ERROR_OPERATION_FAILED;
152 EXPORT_API int gesture_engine_send_motion_status(gesture_engine_h engine_handle, gesture_engine_motion_status_e status, void* user_data)
154 LOGD("gesture_engine_send_motion_status start");
155 LOGD("motion status = %d", status);
157 CHECK_GESTURE_FEATURE();
159 if (!engine_handle) {
160 LOGE("invalid parameter : engine_handle");
161 return GESTURE_ENGINE_ERROR_INVALID_PARAMETER;
164 int ret = GESTURE_ENGINE_ERROR_NONE;
166 ret = gesture_engine_dbus_send_motion_status(engine_handle->gdbus_connection, status, user_data);
167 if (ret != GESTURE_ENGINE_ERROR_NONE) {
168 LOGE("Failed to send motion status : %d", ret);
169 return GESTURE_ENGINE_ERROR_OPERATION_FAILED;
175 EXPORT_API int gesture_engine_set_private_data_set_cb(gesture_engine_h engine_handle, gesture_engine_private_data_set_cb callback_func)
180 EXPORT_API int gesture_engine_set_private_data_requested_cb(gesture_engine_h engine_handle, gesture_engine_private_data_requested_cb callback_func)
185 EXPORT_API int gesture_engine_send_engine_get_info(gesture_engine_h engine_handle, char* engine_app_id, char* engine_name)
187 LOGD("gesture engine_app_id = %s", engine_app_id);
189 CHECK_GESTURE_FEATURE();
191 if (!engine_handle) {
192 LOGE("invalid parameter : engine_handle");
193 return GESTURE_ENGINE_ERROR_INVALID_PARAMETER;
196 int ret = GESTURE_ENGINE_ERROR_NONE;
198 ret = gesture_engine_dbus_send_engine_get_info(engine_handle->gdbus_connection, engine_app_id, engine_name);
199 if (ret != GESTURE_ENGINE_ERROR_NONE) {
200 LOGE("Failed to send result : %d", ret);
201 return GESTURE_ENGINE_ERROR_OPERATION_FAILED;