4 * Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Ja-young Gu <jygu@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
25 #include "tapi_common.h"
26 #include "TapiUtility.h"
32 static void on_response_default_set(GObject *source_object, GAsyncResult *res, gpointer user_data)
35 GDBusConnection *conn = NULL;
36 struct tapi_resp_data *evt_cb_data = user_data;
39 GVariant *dbus_result;
41 conn = G_DBUS_CONNECTION (source_object);
42 dbus_result = g_dbus_connection_call_finish(conn, res, &error);
46 if (evt_cb_data->cb_fn) {
47 evt_cb_data->cb_fn(evt_cb_data->handle, -1, NULL, evt_cb_data->user_data);
58 g_variant_get (dbus_result, "(i)", &result);
60 if (evt_cb_data->cb_fn) {
61 evt_cb_data->cb_fn(evt_cb_data->handle, result, NULL, evt_cb_data->user_data);
68 EXPORT_API int tel_set_gps_frequency_aiding(TapiHandle *handle, unsigned char state, tapi_response_cb callback, void *user_data)
70 struct tapi_resp_data *evt_cb_data = NULL;
75 TAPI_RET_ERR_NUM_IF_FAIL(handle, TAPI_API_INVALID_PTR);
77 MAKE_RESP_CB_DATA(evt_cb_data, handle, callback, user_data);
79 param = g_variant_new("(y)", state);
81 g_dbus_connection_call(handle->dbus_connection,
82 DBUS_TELEPHONY_SERVICE , handle->path, DBUS_TELEPHONY_GPS_INTERFACE,
83 "SetFrequencyAiding", param, NULL,
84 G_DBUS_CALL_FLAGS_NONE, TAPI_DEFAULT_TIMEOUT, handle->ca,
85 on_response_default_set, evt_cb_data);
87 return TAPI_API_SUCCESS;
90 EXPORT_API int tel_confirm_gps_measure_pos(TapiHandle *handle, unsigned char *data, unsigned int data_len)
92 GVariant *param = NULL;
95 gchar *encoded_data = NULL;
100 TAPI_RET_ERR_NUM_IF_FAIL(handle, TAPI_API_INVALID_PTR);
101 TAPI_RET_ERR_NUM_IF_FAIL(handle->dbus_connection, TAPI_API_INVALID_INPUT);
102 TAPI_RET_ERR_NUM_IF_FAIL(data, TAPI_API_INVALID_PTR);
104 msg("call tel_confirm_gps_measure_pos(). data_len=%d", data_len);
105 encoded_data = g_base64_encode((const guchar*)data, data_len);
107 param = g_variant_new("(s)", encoded_data);
109 rst = g_dbus_connection_call_sync(handle->dbus_connection, DBUS_TELEPHONY_SERVICE , handle->path,
110 DBUS_TELEPHONY_GPS_INTERFACE, "ConfirmMeasurePos", param, NULL, G_DBUS_CALL_FLAGS_NONE, TAPI_DEFAULT_TIMEOUT, handle->ca, &gerr);
112 g_free(encoded_data);
115 dbg( "error to gps measure pos confirm(%s)", gerr->message);
117 return TAPI_API_OPERATION_FAILED;
119 dbg("send gps user confirm format(%s)", g_variant_get_type_string(rst));
121 g_variant_get(rst, "(i)", &result);
122 dbg("result (%d)", result);
124 return TAPI_API_SUCCESS;
127 EXPORT_API int tel_enable_smart_assistant(TapiHandle *handle, tapi_response_cb callback, void *user_data)
129 struct tapi_resp_data *evt_cb_data = NULL;
131 dbg("Func Entrance");
133 TAPI_RET_ERR_NUM_IF_FAIL(handle, TAPI_API_INVALID_PTR);
135 MAKE_RESP_CB_DATA(evt_cb_data, handle, callback, user_data);
137 g_dbus_connection_call(handle->dbus_connection,
138 DBUS_TELEPHONY_SERVICE , handle->path, DBUS_TELEPHONY_GPS_INTERFACE,
139 "EnableSmartAssistant", NULL, NULL,
140 G_DBUS_CALL_FLAGS_NONE, TAPI_DEFAULT_TIMEOUT, handle->ca,
141 on_response_default_set, evt_cb_data);
143 return TAPI_API_SUCCESS;
146 EXPORT_API int tel_disable_smart_assistant(TapiHandle *handle, tapi_response_cb callback, void *user_data)
148 struct tapi_resp_data *evt_cb_data = NULL;
150 dbg("Func Entrance");
152 TAPI_RET_ERR_NUM_IF_FAIL(handle, TAPI_API_INVALID_PTR);
154 MAKE_RESP_CB_DATA(evt_cb_data, handle, callback, user_data);
156 g_dbus_connection_call(handle->dbus_connection,
157 DBUS_TELEPHONY_SERVICE , handle->path, DBUS_TELEPHONY_GPS_INTERFACE,
158 "DisableSmartAssistant", NULL, NULL,
159 G_DBUS_CALL_FLAGS_NONE, TAPI_DEFAULT_TIMEOUT, handle->ca,
160 on_response_default_set, evt_cb_data);
162 return TAPI_API_SUCCESS;
165 EXPORT_API int tel_sync_smart_assistant_area_list(TapiHandle *handle, TelSmartAssistantAreaList_t *area_list, tapi_response_cb callback, void *user_data)
167 struct tapi_resp_data *evt_cb_data = NULL;
168 GVariant *param = NULL, *inparam = NULL;
172 TAPI_RET_ERR_NUM_IF_FAIL(area_list, TAPI_API_INVALID_PTR);
173 TAPI_RET_ERR_NUM_IF_FAIL(handle, TAPI_API_INVALID_PTR);
175 MAKE_RESP_CB_DATA(evt_cb_data, handle, callback, user_data);
176 dbg("count:%d", area_list->count);
178 b = g_variant_builder_new(G_VARIANT_TYPE ("a(ii)"));
180 for (i = 0; i < area_list->count; i++) {
181 g_variant_builder_add(b, "(ii)", area_list->area[i].index, area_list->area[i].mode_state);
184 inparam = g_variant_builder_end(b);
185 param = g_variant_new("(iv)", area_list->count, inparam);
187 g_dbus_connection_call(handle->dbus_connection,
188 DBUS_TELEPHONY_SERVICE , handle->path, DBUS_TELEPHONY_GPS_INTERFACE,
189 "SyncSmartAssistantAreaList", param, NULL,
190 G_DBUS_CALL_FLAGS_NONE, TAPI_DEFAULT_TIMEOUT, handle->ca,
191 on_response_default_set, evt_cb_data);
193 return TAPI_API_SUCCESS;
196 EXPORT_API int tel_del_smart_assistant_area_list(TapiHandle *handle, TelSmartAssistantAreaList_t *area_list, tapi_response_cb callback, void *user_data)
198 struct tapi_resp_data *evt_cb_data = NULL;
199 GVariant *param = NULL, *inparam = NULL;
203 TAPI_RET_ERR_NUM_IF_FAIL(area_list, TAPI_API_INVALID_PTR);
204 TAPI_RET_ERR_NUM_IF_FAIL(handle, TAPI_API_INVALID_PTR);
206 MAKE_RESP_CB_DATA(evt_cb_data, handle, callback, user_data);
207 dbg("count:%d", area_list->count);
209 b = g_variant_builder_new(G_VARIANT_TYPE ("a(ii)"));
211 for (i = 0; i < area_list->count; i++) {
212 g_variant_builder_add(b, "(ii)", area_list->area[i].index, area_list->area[i].mode_state);
215 inparam = g_variant_builder_end(b);
216 param = g_variant_new("(iv)", area_list->count, inparam);
218 g_dbus_connection_call(handle->dbus_connection,
219 DBUS_TELEPHONY_SERVICE , handle->path, DBUS_TELEPHONY_GPS_INTERFACE,
220 "DelSmartAssistantAreaList", param, NULL,
221 G_DBUS_CALL_FLAGS_NONE, TAPI_DEFAULT_TIMEOUT, handle->ca,
222 on_response_default_set, evt_cb_data);
224 return TAPI_API_SUCCESS;
227 EXPORT_API int tel_add_smart_assistant_area(TapiHandle *handle, TelSmartAssistantArea_t *area, tapi_response_cb callback, void *user_data)
229 struct tapi_resp_data *evt_cb_data = NULL;
232 TAPI_RET_ERR_NUM_IF_FAIL(area, TAPI_API_INVALID_PTR);
233 TAPI_RET_ERR_NUM_IF_FAIL(handle, TAPI_API_INVALID_PTR);
235 MAKE_RESP_CB_DATA(evt_cb_data, handle, callback, user_data);
237 param = g_variant_new("(ii)",
241 g_dbus_connection_call(handle->dbus_connection,
242 DBUS_TELEPHONY_SERVICE , handle->path, DBUS_TELEPHONY_GPS_INTERFACE,
243 "AddSmartAssistantArea", param, NULL,
244 G_DBUS_CALL_FLAGS_NONE, TAPI_DEFAULT_TIMEOUT, handle->ca,
245 on_response_default_set, evt_cb_data);
247 return TAPI_API_SUCCESS;
250 EXPORT_API int tel_modify_smart_assistant_area(TapiHandle *handle, TelSmartAssistantArea_t *area, tapi_response_cb callback, void *user_data)
252 struct tapi_resp_data *evt_cb_data = NULL;
255 TAPI_RET_ERR_NUM_IF_FAIL(area, TAPI_API_INVALID_PTR);
256 TAPI_RET_ERR_NUM_IF_FAIL(handle, TAPI_API_INVALID_PTR);
258 dbg("index:%d, mode_state:%d", area->index, area->mode_state);
260 MAKE_RESP_CB_DATA(evt_cb_data, handle, callback, user_data);
262 param = g_variant_new("(ii)",
266 g_dbus_connection_call(handle->dbus_connection,
267 DBUS_TELEPHONY_SERVICE , handle->path, DBUS_TELEPHONY_GPS_INTERFACE,
268 "ModifySmartAssistantArea", param, NULL,
269 G_DBUS_CALL_FLAGS_NONE, TAPI_DEFAULT_TIMEOUT, handle->ca,
270 on_response_default_set, evt_cb_data);
272 return TAPI_API_SUCCESS;
275 EXPORT_API int tel_set_smart_assistant_info(TapiHandle *handle, TelSmartAssistantInfo_t *info, tapi_response_cb callback, void *user_data)
277 struct tapi_resp_data *evt_cb_data = NULL;
280 TAPI_RET_ERR_NUM_IF_FAIL(info, TAPI_API_INVALID_PTR);
281 TAPI_RET_ERR_NUM_IF_FAIL(handle, TAPI_API_INVALID_PTR);
283 dbg("index:%d, lpp_state:%d", info->index, info->lpp_state);
285 MAKE_RESP_CB_DATA(evt_cb_data, handle, callback, user_data);
287 param = g_variant_new("(ii)",
291 g_dbus_connection_call(handle->dbus_connection,
292 DBUS_TELEPHONY_SERVICE , handle->path, DBUS_TELEPHONY_GPS_INTERFACE,
293 "SetSmartAssistantInfo", param, NULL,
294 G_DBUS_CALL_FLAGS_NONE, TAPI_DEFAULT_TIMEOUT, handle->ca,
295 on_response_default_set, evt_cb_data);
297 return TAPI_API_SUCCESS;