diff options
author | jomui <jongmun.woo@samsung.com> | 2015-12-02 11:33:06 +0900 |
---|---|---|
committer | jomui <jongmun.woo@samsung.com> | 2015-12-02 11:33:32 +0900 |
commit | 7d21d7e0d7a3650f498b5fdf6c0fde59e7be4451 (patch) | |
tree | 7299e3c7e07d07a36b9aba52d81f8b09d0d40fab | |
parent | b1ad881d50f5ed6c1abee43baacb3cddd1311ade (diff) | |
download | geofence-dbus-7d21d7e0d7a3650f498b5fdf6c0fde59e7be4451.tar.gz geofence-dbus-7d21d7e0d7a3650f498b5fdf6c0fde59e7be4451.tar.bz2 geofence-dbus-7d21d7e0d7a3650f498b5fdf6c0fde59e7be4451.zip |
add new geofence API for proximity(except BLE)submit/tizen/20151204.080727accepted/tizen/wearable/20151206.224208accepted/tizen/tv/20151206.224149accepted/tizen/mobile/20151206.224133
Signed-off-by: jomui <jongmun.woo@samsung.com>
Change-Id: Ib879f1ec195a890df5f52050141aa74f9b77c56b
-rw-r--r-- | geofence/src/geofence_client.c | 13 | ||||
-rw-r--r-- | introspection/geofence.xml | 7 | ||||
-rw-r--r-- | packaging/geofence-dbus.spec | 2 | ||||
-rw-r--r-- | server/include/geofence_dbus_server.h | 2 | ||||
-rw-r--r-- | server/src/geofence_dbus_server.c | 19 |
5 files changed, 42 insertions, 1 deletions
diff --git a/geofence/src/geofence_client.c b/geofence/src/geofence_client.c index 0e25521..eca2942 100644 --- a/geofence/src/geofence_client.c +++ b/geofence/src/geofence_client.c @@ -28,6 +28,7 @@ typedef struct _geofence_client_dbus_s { gchar *service_path; gchar *signal_path; int geofence_evt_id; + int geofence_proximity_id; int geofence_evt_status_id; geofence_client_cb user_cb; void *user_data; @@ -432,6 +433,14 @@ EXPORT_API int geo_client_start(geofence_client_dbus_h geofence_client, geofence GEOFENCE_CLIENT_LOGD("Fail to listen GeofenceInout"); } + handle->geofence_proximity_id = g_dbus_connection_signal_subscribe(handle->conn, handle->service_name, GEOFENCE_INTERFACE_NAME, "GeofenceProximity", handle->signal_path, NULL, G_DBUS_SIGNAL_FLAGS_NONE, __geofence_signal_callback, handle, NULL); + + if (handle->geofence_proximity_id) { + GEOFENCE_CLIENT_LOGD("Listening GeofenceProximity"); + } else { + GEOFENCE_CLIENT_LOGD("Fail to listen GeofenceProximity"); + } + handle->geofence_evt_status_id = g_dbus_connection_signal_subscribe(handle->conn, handle->service_name, GEOFENCE_INTERFACE_NAME, "GeofenceEvent", handle->signal_path, NULL, G_DBUS_SIGNAL_FLAGS_NONE, __geofence_signal_callback, handle, NULL); if (handle->geofence_evt_status_id) { @@ -482,6 +491,10 @@ static void __geo_client_signal_unsubcribe(geofence_client_dbus_h geofence_clien g_dbus_connection_signal_unsubscribe(handle->conn, handle->geofence_evt_status_id); handle->geofence_evt_status_id = 0; } + if (handle->geofence_proximity_id) { + g_dbus_connection_signal_unsubscribe(handle->conn, handle->geofence_proximity_id); + handle->geofence_proximity_id = 0; + } } EXPORT_API int geo_client_stop(geofence_client_dbus_h geofence_client) diff --git a/introspection/geofence.xml b/introspection/geofence.xml index 391f37e..8a9a7e5 100644 --- a/introspection/geofence.xml +++ b/introspection/geofence.xml @@ -42,6 +42,13 @@ <arg direction="out" type="i" name="access_type"/> <arg direction="out" type="i" name="fence_state"/> </signal> + <signal name="GeofenceProximity"> + <arg direction="out" type="s" name="app_id"/> + <arg direction="out" type="i" name="fence_id"/> + <arg direction="out" type="i" name="access_type"/> + <arg direction="out" type="i" name="fence_proximity_state"/> + <arg direction="out" type="i" name="provider"/> + </signal> <!-- Place Management --> <method name="AddPlace"> diff --git a/packaging/geofence-dbus.spec b/packaging/geofence-dbus.spec index a8ab983..eb8de10 100644 --- a/packaging/geofence-dbus.spec +++ b/packaging/geofence-dbus.spec @@ -1,6 +1,6 @@ Name: geofence-dbus Summary: Dbus interface for Geofence service -Version: 0.3.1 +Version: 0.3.2 Release: 1 Group: Location/Libraries License: Apache-2.0 diff --git a/server/include/geofence_dbus_server.h b/server/include/geofence_dbus_server.h index 7448c2e..1504936 100644 --- a/server/include/geofence_dbus_server.h +++ b/server/include/geofence_dbus_server.h @@ -122,6 +122,8 @@ typedef GVariant *(*GeofenceGetPlacesCB)(const gchar *app_id, int *fence_cnt, in */ int geofence_dbus_server_send_geofence_inout_changed(geofence_dbus_server_h geofence_dbus_server, const gchar *app_id, gint fence_id, gint access_type, gint fence_state); +int geofence_dbus_server_send_geofence_proximity_changed(geofence_dbus_server_h geofence_dbus_server, const gchar *app_id, gint fence_id, gint access_type, gint fence_proximity_state, gint provider); + int geofence_dbus_server_send_geofence_event_changed(geofence_dbus_server_h geofence_dbus_server, gint place_id, gint fence_id, gint access_type, const gchar *app_id, gint error, gint state); typedef struct { diff --git a/server/src/geofence_dbus_server.c b/server/src/geofence_dbus_server.c index f3a6bd1..441dc75 100644 --- a/server/src/geofence_dbus_server.c +++ b/server/src/geofence_dbus_server.c @@ -443,6 +443,25 @@ EXPORT_API int geofence_dbus_server_send_geofence_inout_changed(geofence_dbus_se return GEOFENCE_DBUS_SERVER_ERROR_NONE; } +EXPORT_API int geofence_dbus_server_send_geofence_proximity_changed(geofence_dbus_server_h geofence_dbus_server, const gchar *app_id, gint fence_id, gint access_type, gint fence_proximity_state, gint provider) +{ + GEOFENCE_DBUS_SERVER_LOGD("ENTER >>>"); + g_return_val_if_fail(geofence_dbus_server, GEOFENCE_DBUS_SERVER_ERROR_PARAMETER); + + geofence_dbus_server_s *handle = (geofence_dbus_server_s *)geofence_dbus_server; + g_return_val_if_fail(handle->obj_skeleton, GEOFENCE_DBUS_SERVER_ERROR_PARAMETER); + + SLocGeofence *geofence = NULL; + geofence = sloc_object_get_geofence(SLOC_OBJECT(handle->obj_skeleton)); + g_return_val_if_fail(geofence, GEOFENCE_DBUS_SERVER_ERROR_PARAMETER); + + sloc_geofence_emit_geofence_proximity(geofence, app_id, fence_id, access_type, fence_proximity_state, provider); + g_object_unref(geofence); + + return GEOFENCE_DBUS_SERVER_ERROR_NONE; +} + + EXPORT_API int geofence_dbus_server_send_geofence_event_changed(geofence_dbus_server_h geofence_dbus_server, gint place_id, gint fence_id, gint access_type, const gchar *app_id, gint error, gint state) { GEOFENCE_DBUS_SERVER_LOGD("ENTER >>>"); |