diff options
author | Young-Ae Kang <youngae.kang@samsung.com> | 2015-11-27 15:00:01 +0900 |
---|---|---|
committer | Youngae Kang <youngae.kang@samsung.com> | 2016-01-21 02:27:28 -0800 |
commit | c3ea9d9c4ffb5735aaa00daca829f84a117a5a17 (patch) | |
tree | d6c839fad4bc58de5376148ea1a84bdec9501ada | |
parent | 0b35431998e809e42839a93871d0f8c3b3e151ee (diff) | |
download | lbs-dbus-c3ea9d9c4ffb5735aaa00daca829f84a117a5a17.tar.gz lbs-dbus-c3ea9d9c4ffb5735aaa00daca829f84a117a5a17.tar.bz2 lbs-dbus-c3ea9d9c4ffb5735aaa00daca829f84a117a5a17.zip |
[ACR-476] Added mock location APIs (Version 1.0.0)submit/tizen_ivi/20160217.000002submit/tizen_ivi/20160217.000000submit/tizen_common/20160218.142243submit/tizen/20160122.005552accepted/tizen/wearable/20160122.034919accepted/tizen/tv/20160122.034859accepted/tizen/mobile/20160122.034842accepted/tizen/ivi/20160218.023402accepted/tizen_tv
Change-Id: Ia1d36aa65485a9f1de302efba9d42ab0ffc00695
-rw-r--r-- | client/include/lbs_dbus_client.h | 7 | ||||
-rwxr-xr-x[-rw-r--r--] | client/src/lbs_dbus_client.c | 110 | ||||
-rw-r--r-- | introspection/lbs.xml | 15 | ||||
-rw-r--r-- | packaging/liblbs-dbus.changes | 6 | ||||
-rw-r--r-- | packaging/liblbs-dbus.spec | 2 | ||||
-rw-r--r-- | server/include/lbs_dbus_server.h | 36 | ||||
-rw-r--r-- | server/src/lbs_dbus_server.c | 158 |
7 files changed, 277 insertions, 57 deletions
diff --git a/client/include/lbs_dbus_client.h b/client/include/lbs_dbus_client.h index fe4e45c..c2d17f9 100644 --- a/client/include/lbs_dbus_client.h +++ b/client/include/lbs_dbus_client.h @@ -34,6 +34,7 @@ typedef enum { LBS_CLIENT_METHOD_NPS, LBS_CLIENT_METHOD_AGPS, LBS_CLIENT_METHOD_GEOFENCE, + LBS_CLIENT_METHOD_MOCK, } lbs_client_method_e; typedef enum { @@ -71,6 +72,12 @@ int lbs_client_stop_batch(lbs_client_dbus_h lbs_client); int lbs_client_get_nmea(lbs_client_dbus_h lbs_client, int *timestamp, char **nmea); int lbs_client_set_position_update_interval(lbs_client_dbus_h lbs_client, unsigned int interval); +/* Tizen 3.0 */ +int lbs_client_set_mock_location_async(lbs_client_dbus_h lbs_client, + gint method, gdouble latitude, gdouble longitude, gdouble altitude, + gdouble speed, gdouble direction, gdouble accuracy, + lbs_client_cb callback, void *user_data); + __END_DECLS #endif /* __LBS_DBUS_CLIENT_H__ */ diff --git a/client/src/lbs_dbus_client.c b/client/src/lbs_dbus_client.c index f32000f..a831347 100644..100755 --- a/client/src/lbs_dbus_client.c +++ b/client/src/lbs_dbus_client.c @@ -43,6 +43,7 @@ typedef struct _lbs_client_dbus_s { int privacy_evt_id; lbs_client_cb user_cb; lbs_client_cb batch_cb; + lbs_client_cb set_mock_cb; void *user_data; } lbs_client_dbus_s; @@ -594,7 +595,6 @@ EXPORT_API int lbs_client_start(lbs_client_dbus_h lbs_client, unsigned int interval, lbs_client_callback_e callback_type, lbs_client_cb callback, void *user_data) { LBS_CLIENT_LOGD("lbs_client_start"); - g_return_val_if_fail(lbs_client, LBS_CLIENT_ERROR_PARAMETER); g_return_val_if_fail(callback_type >= LBS_CLIENT_LOCATION_CB && callback_type <= LBS_CLIENT_BATCH_CB, LBS_CLIENT_ERROR_PARAMETER); @@ -927,7 +927,6 @@ lbs_client_stop(lbs_client_dbus_h lbs_client) EXPORT_API int lbs_client_get_nmea(lbs_client_dbus_h lbs_client, int *timestamp, char **nmea) { - LBS_CLIENT_LOGD("ENTER >>>"); g_return_val_if_fail(lbs_client, LBS_CLIENT_ERROR_PARAMETER); g_return_val_if_fail(timestamp, LBS_CLIENT_ERROR_PARAMETER); g_return_val_if_fail(nmea, LBS_CLIENT_ERROR_PARAMETER); @@ -961,7 +960,6 @@ lbs_client_get_nmea(lbs_client_dbus_h lbs_client, int *timestamp, char **nmea) ret = LBS_CLIENT_ERROR_DBUS_CALL; } g_error_free(error); - lbs_client_signal_unsubcribe(handle); return ret; } @@ -1042,6 +1040,7 @@ lbs_client_destroy(lbs_client_dbus_h lbs_client) handle->user_cb = NULL; handle->batch_cb = NULL; + handle->set_mock_cb = NULL; handle->user_data = NULL; if (handle->conn) { @@ -1053,3 +1052,108 @@ lbs_client_destroy(lbs_client_dbus_h lbs_client) return LBS_CLIENT_ERROR_NONE; } + +/* Tizen 3.0 */ + +static void __dbus_set_location_callback(GObject *source_object, GAsyncResult *res, gpointer user_data) +{ + LBS_CLIENT_LOGD("ENTER >>>"); + + g_return_if_fail(source_object); + g_return_if_fail(res); + + lbs_client_dbus_s *handle = (lbs_client_dbus_s *)user_data; + GError *error = NULL; + gboolean success = FALSE; + gchar *sig = NULL; + GVariant *param = NULL; + + LbsManager *proxy = (LbsManager *)source_object; + + /* TODO: lbs-server will send method and status via DBUS. Have to change lbs.xml */ + success = lbs_manager_call_set_mock_location_finish(proxy, res, &error); + if (success) { + if (handle && handle->set_mock_cb) { + sig = g_strdup("SetLocation"); + param = g_variant_new("(ii)", LBS_CLIENT_METHOD_MOCK, 5); /* LBS_STATUS_BATCH + 1 */ + handle->set_mock_cb(sig, param, handle->user_data); + + g_free(sig); + g_variant_unref(param); + } + } else { + LBS_CLIENT_LOGW("SetLocation failed!!!"); + if (handle && handle->set_mock_cb) { + sig = g_strdup("SetLocation"); + param = g_variant_new("(ii)", LBS_CLIENT_METHOD_MOCK, 6); /* LBS_STATUS_BATCH + 2 */ + handle->set_mock_cb(sig, param, handle->user_data); + + g_free(sig); + g_variant_unref(param); + } + + if (error && error->message) { + if (error->code == G_DBUS_ERROR_ACCESS_DENIED) { + LBS_CLIENT_LOGE("Access denied. Msg[%s]", error->message); + } else { + LBS_CLIENT_LOGE("Fail to new proxy ErrCode[%d], Msg[%s]", error->code, error->message); + } + g_error_free(error); + } + } + + LBS_CLIENT_LOGD("EXIT <<<"); +} + +EXPORT_API int +lbs_client_set_mock_location_async(lbs_client_dbus_h lbs_client, + gint method, + gdouble latitude, + gdouble longitude, + gdouble altitude, + gdouble speed, + gdouble direction, + gdouble accuracy, + lbs_client_cb callback, void *user_data) +{ + LBS_CLIENT_LOGD("ENTER >>>"); + g_return_val_if_fail(lbs_client, LBS_CLIENT_ERROR_PARAMETER); + + lbs_client_dbus_s *handle = (lbs_client_dbus_s *)lbs_client; + int ret = LBS_CLIENT_ERROR_NONE; + + handle->set_mock_cb = callback; + handle->user_data = user_data; + + LbsManager *proxy = NULL; + GError *error = NULL; + + proxy = lbs_manager_proxy_new_sync(handle->conn, + G_DBUS_PROXY_FLAGS_NONE, + SERVICE_NAME, + SERVICE_PATH, + NULL, + &error); + + if (proxy) { + lbs_manager_call_set_mock_location(proxy, method, latitude, longitude, altitude, speed, direction, accuracy, + NULL, __dbus_set_location_callback, handle); + + g_object_unref(proxy); + proxy = NULL; + } else { + if (error && error->message) { + if (error->code == G_DBUS_ERROR_ACCESS_DENIED) { + LBS_CLIENT_LOGE("Access denied. Msg[%s]", error->message); + ret = LBS_CLIENT_ERROR_ACCESS_DENIED; + } else { + LBS_CLIENT_LOGE("Fail to new proxy ErrCode[%d], Msg[%s]", error->code, error->message); + ret = LBS_CLIENT_ERROR_DBUS_CALL; + } + g_error_free(error); + } + } + LBS_CLIENT_LOGD("EXIT <<<"); + + return ret; +} diff --git a/introspection/lbs.xml b/introspection/lbs.xml index e54241f..5a79c3d 100644 --- a/introspection/lbs.xml +++ b/introspection/lbs.xml @@ -22,5 +22,20 @@ <arg direction="in" type="i" name="method" /> <annotation name="org.freedesktop.DBus.GLib.Async" value=""/> </method> + <method name="SetMockLocation"> + <arg direction="in" type="i" name="method"/> + <arg direction="in" type="d" name="latitude"/> + <arg direction="in" type="d" name="longitude"/> + <arg direction="in" type="d" name="altitude"/> + <arg direction="in" type="d" name="speed"/> + <arg direction="in" type="d" name="direction"/> + <arg direction="in" type="d" name="accuracy"/> + <!-- + <arg direction="out" type="i" name="method"/> + <arg direction="out" type="i" name="status"/> + --> + <annotation name="org.freedesktop.DBus.GLib.Async" value=""/> + </method> + </interface> </node> diff --git a/packaging/liblbs-dbus.changes b/packaging/liblbs-dbus.changes index 476b4ee..13b8901 100644 --- a/packaging/liblbs-dbus.changes +++ b/packaging/liblbs-dbus.changes @@ -1,3 +1,9 @@ +[Version] lbs-dbus_1.0.0 +[Date] 20 January 2016 +[Changes] Supported mock location +[Developer] Young-Ae Kang <youngae.kang@samsung.com> +================================================================================ + [Version] lbs-dbus_0.3.4 [Date] 12 November 2015 [Changes] 1.Fixed memory corruption diff --git a/packaging/liblbs-dbus.spec b/packaging/liblbs-dbus.spec index b7f362c..bbf1707 100644 --- a/packaging/liblbs-dbus.spec +++ b/packaging/liblbs-dbus.spec @@ -1,6 +1,6 @@ Name: liblbs-dbus Summary: DBus interface for Location Based Service -Version: 0.3.4 +Version: 1.0.0 Release: 1 Group: Location/Libraries License: Apache-2.0 diff --git a/server/include/lbs_dbus_server.h b/server/include/lbs_dbus_server.h index fc076e7..44ebd06 100644 --- a/server/include/lbs_dbus_server.h +++ b/server/include/lbs_dbus_server.h @@ -68,6 +68,11 @@ typedef void (*GpsGeofenceDeleteFenceCB)(gint fence_id, gpointer userdata); typedef void (*GpsGeofencePauseFenceCB)(gint fence_id, gpointer userdata); typedef void (*GpsGeofenceResumeFenceCB)(gint fence_id, gint monitor_states, gpointer userdata); +/* Tizen 3.0 */ +typedef void (*LbsDbusSetMockLocationCB)(int method, double latitude, double longtitude, double altitude, + double speed, double direction, double accuracy, gpointer userdata); + + typedef enum { LBS_SERVER_ERROR_NONE = 0x0, LBS_SERVER_ERROR_UNKNOWN, @@ -81,6 +86,22 @@ typedef enum { typedef void *lbs_server_dbus_h; +/* Tizen 3.0 */ +typedef struct _lbs_server_dbus_cb_t { + LbsDbusSetOptionsCB set_options_cb; + LbsDbusShutdownCB shutdown_cb; + LbsDbusUpdateIntervalCB update_interval_cb; + LbsDbusRequestChangeIntervalCB request_change_interval_cb; + LbsDbusGetNmeaCB get_nmea_cb; + GpsGeofenceAddFenceCB add_hw_fence_cb; + GpsGeofenceDeleteFenceCB delete_hw_fence_cb; + GpsGeofencePauseFenceCB pause_hw_fence_cb; + GpsGeofenceResumeFenceCB resume_hw_fence_cb; + + LbsDbusSetMockLocationCB set_mock_location_cb; +} lbs_server_dbus_cb_t; + + int lbs_server_emit_position_changed(lbs_server_dbus_h lbs_server, gint arg_method, @@ -126,6 +147,8 @@ lbs_server_emit_gps_geofence_status_changed(lbs_server_dbus_h lbs_server, gint s int lbs_server_emit_gps_geofence_changed(lbs_server_dbus_h lbs_server, gint fence_id, gint transition, gdouble latitude, gdouble longitude, gdouble altitude, gdouble speed, gdouble bearing, gdouble hor_accuracy); + +#ifdef TIZEN_2_4 int lbs_server_create(char *service_name, char *service_path, @@ -143,6 +166,19 @@ lbs_server_create(char *service_name, GpsGeofenceResumeFenceCB resume_hw_fence_cb, gpointer userdata); +#endif + +/* Tizen 3.0 */ + +int +lbs_server_create(char *service_name, + char *service_path, + char *name, + char *description, + lbs_server_dbus_h *lbs_server, + lbs_server_dbus_cb_t *lbs_server_cb, + gpointer userdata); + int lbs_server_destroy(lbs_server_dbus_h lbs_server); diff --git a/server/src/lbs_dbus_server.c b/server/src/lbs_dbus_server.c index 63f109f..0f814ef 100644 --- a/server/src/lbs_dbus_server.c +++ b/server/src/lbs_dbus_server.c @@ -72,6 +72,14 @@ typedef struct _lbs_server_dbus_s { GpsGeofenceDeleteFenceCB delete_hw_fence_cb; GpsGeofencePauseFenceCB pause_hw_fence_cb; GpsGeofenceResumeFenceCB resume_hw_fence_cb; + + /* Tizen 3.0 */ + guint set_mock_location_h; + LbsDbusSetMockLocationCB set_mock_location_cb; + +#ifdef TIZEN_3_0_OPT + lbs_server_dbus_cb_t callback; +#endif } lbs_server_dbus_s; typedef enum { @@ -79,6 +87,7 @@ typedef enum { LBS_SERVER_METHOD_NPS, LBS_SERVER_METHOD_AGPS, LBS_SERVER_METHOD_GEOFENCE, + LBS_SERVER_METHOD_MOCK, LBS_SERVER_METHOD_SIZE, } lbs_server_method_e; @@ -160,8 +169,8 @@ static gboolean lbs_dbus_setup_gps_geofence_interface(LbsObjectSkeleton *object, static gboolean on_manager_getproviderinfo(LbsManager *mgr, - GDBusMethodInvocation *invocation, - gpointer user_data) + GDBusMethodInvocation *invocation, + gpointer user_data) { LBS_SERVER_LOGD("on_manager_getproviderinfo"); lbs_server_dbus_s *ctx = (lbs_server_dbus_s *)user_data; @@ -180,8 +189,8 @@ on_manager_getproviderinfo(LbsManager *mgr, static gboolean on_manager_getstatus(LbsManager *mgr, - GDBusMethodInvocation *invocation, - gpointer user_data) + GDBusMethodInvocation *invocation, + gpointer user_data) { LBS_SERVER_LOGD("on_manager_getstatus"); lbs_server_dbus_s *ctx = (lbs_server_dbus_s *)user_data; @@ -196,7 +205,7 @@ on_manager_getstatus(LbsManager *mgr, static gboolean on_nmea_getnmea(LbsNmea *nmea, - GDBusMethodInvocation *invocation, + GDBusMethodInvocation *invocation, gpointer user_data) { lbs_server_dbus_s *ctx = (lbs_server_dbus_s *)user_data; @@ -220,8 +229,8 @@ on_nmea_getnmea(LbsNmea *nmea, static gboolean on_manager_setoptions(LbsManager *mgr, GDBusMethodInvocation *invocation, - GVariant *options, - gpointer user_data) + GVariant *options, + gpointer user_data) { LBS_SERVER_LOGD("ENTER >>>"); lbs_server_dbus_s *ctx = (lbs_server_dbus_s *)user_data; @@ -243,12 +252,12 @@ on_manager_setoptions(LbsManager *mgr, static gboolean on_manager_addreference(LbsManager *mgr, - GDBusMethodInvocation *invocation, + GDBusMethodInvocation *invocation, int method, - gpointer user_data) + gpointer user_data) { LBS_SERVER_LOGD("method: %d", method); - if(method < 0 || method >= LBS_SERVER_METHOD_SIZE) return FALSE; + if (method < 0 || method >= LBS_SERVER_METHOD_SIZE) return FALSE; lbs_server_dbus_s *ctx = (lbs_server_dbus_s *)user_data; if (!ctx) { @@ -273,8 +282,6 @@ on_manager_addreference(LbsManager *mgr, } count = count_arr[method]; - - LBS_SERVER_LOGD("sender: [%s] method:%d count:%d table:%p", sender_cp, method, count, count_arr); count++; if (count <= 0) { @@ -368,8 +375,8 @@ lbs_server_remove_client(lbs_server_dbus_s *ctx, const char *client, int method) if (ctx->shutdown_cb) { ctx->shutdown_cb(ctx->userdata, shutdown_arr); - LBS_SERVER_LOGD("shutdown_cb called.. gps:%d, nps:%d", - shutdown_arr[LBS_SERVER_METHOD_GPS], shutdown_arr[LBS_SERVER_METHOD_NPS]); + LBS_SERVER_LOGD("shutdown_cb called.. gps:%d, nps:%d, mock:%d", + shutdown_arr[LBS_SERVER_METHOD_GPS], shutdown_arr[LBS_SERVER_METHOD_NPS], shutdown_arr[LBS_SERVER_METHOD_MOCK]); } g_free(shutdown_arr); @@ -377,12 +384,12 @@ lbs_server_remove_client(lbs_server_dbus_s *ctx, const char *client, int method) } static gboolean on_manager_removereference(LbsManager *mgr, - GDBusMethodInvocation *invocation, - int method, - gpointer user_data) + GDBusMethodInvocation *invocation, + int method, + gpointer user_data) { LBS_SERVER_LOGD("method: %d", method); - if(method < 0 || method >= LBS_SERVER_METHOD_SIZE) return FALSE; + if (method < 0 || method >= LBS_SERVER_METHOD_SIZE) return FALSE; lbs_server_dbus_s *ctx = (lbs_server_dbus_s *)user_data; if (!ctx) { @@ -414,7 +421,7 @@ on_gps_geofence_addfence(LbsGpsGeofence *gps_geofence, gint monitor_states, gint notification_responsiveness, gint unknown_timer, - gpointer user_data) + gpointer user_data) { LBS_SERVER_LOGD("on_gps_geofence_addfence"); @@ -435,9 +442,9 @@ on_gps_geofence_addfence(LbsGpsGeofence *gps_geofence, static gboolean on_gps_geofence_deletefence(LbsGpsGeofence *gps_geofence, - GDBusMethodInvocation *invocation, - gint fence_id, - gpointer user_data) + GDBusMethodInvocation *invocation, + gint fence_id, + gpointer user_data) { LBS_SERVER_LOGD("on_gps_geofence_deletefence"); @@ -457,7 +464,7 @@ on_gps_geofence_deletefence(LbsGpsGeofence *gps_geofence, static gboolean on_gps_geofence_pausefence(LbsGpsGeofence *gps_geofence, - GDBusMethodInvocation *invocation, + GDBusMethodInvocation *invocation, gint fence_id, gpointer user_data) { @@ -480,10 +487,10 @@ on_gps_geofence_pausefence(LbsGpsGeofence *gps_geofence, static gboolean on_gps_geofence_resumefence(LbsGpsGeofence *gps_geofence, - GDBusMethodInvocation *invocation, + GDBusMethodInvocation *invocation, gint fence_id, gint monitor_states, - gpointer user_data) + gpointer user_data) { LBS_SERVER_LOGD("on_gps_geofence_resumefence"); @@ -502,6 +509,40 @@ on_gps_geofence_resumefence(LbsGpsGeofence *gps_geofence, return TRUE; } + +/* Tizen 3.0 */ + +static gboolean +on_manager_setmocklocation(LbsManager *mgr, + GDBusMethodInvocation *invocation, + gint method, + gdouble latitude, + gdouble longitude, + gdouble altitude, + gdouble speed, + gdouble direction, + gdouble accuracy, + gpointer user_data) +{ + LBS_SERVER_LOGD("method: %d", method); + if (method < 0 || method >= LBS_SERVER_METHOD_SIZE) return FALSE; + + lbs_server_dbus_s *ctx = (lbs_server_dbus_s *)user_data; + if (!ctx) { + return FALSE; + } + + if (ctx->set_mock_location_cb) { + ctx->set_mock_location_cb(method, latitude, longitude, altitude, speed, direction, accuracy, user_data); + + LBS_SERVER_LOGD("set_mock_location_cb was called"); + } + + lbs_manager_complete_set_mock_location(mgr, invocation); + + return TRUE; +} + static gboolean lbs_remove_client_by_force(const char *client, void *data) { @@ -541,8 +582,8 @@ lbs_remove_client_by_force(const char *client, void *data) if (ctx->shutdown_cb) { ctx->shutdown_cb(ctx->userdata, shutdown_arr); - LBS_SERVER_LOGD("shutdown_cb called.. gps:%d, nps:%d", - shutdown_arr[LBS_SERVER_METHOD_GPS], shutdown_arr[LBS_SERVER_METHOD_NPS]); + LBS_SERVER_LOGD("shutdown_cb called.. gps:%d, nps:%d, mock:%d", + shutdown_arr[LBS_SERVER_METHOD_GPS], shutdown_arr[LBS_SERVER_METHOD_NPS], shutdown_arr[LBS_SERVER_METHOD_MOCK]); } if (ctx->update_interval_cb) { @@ -580,12 +621,12 @@ lbs_scan_sender(char *key, char *value, gpointer user_data) static void on_name_owner_changed(GDBusConnection *connection, - const gchar *sender_name, - const gchar *object_path, - const gchar *interface_name, - const gchar *signal_name, - GVariant *parameters, /* 1. service name 2. prev_owner 3. new_owner */ - gpointer user_data) + const gchar *sender_name, + const gchar *object_path, + const gchar *interface_name, + const gchar *signal_name, + GVariant *parameters, /* 1. service name 2. prev_owner 3. new_owner */ + gpointer user_data) { lbs_server_dbus_s *handle = (lbs_server_dbus_s *)user_data; g_return_if_fail(handle); @@ -680,6 +721,14 @@ static void on_bus_acquired(GDBusConnection *conn, const gchar *name, gpointer u ctx); /* user_data */ } + /* Tizen 3.0 */ + if (ctx->set_mock_location_cb) { + ctx->set_mock_location_h = g_signal_connect(mgr, + "handle-set-mock-location", + G_CALLBACK(on_manager_setmocklocation), + ctx); + } + /* Add interface for nmea method*/ LbsNmea *nmea = NULL; nmea = lbs_nmea_skeleton_new(); @@ -734,7 +783,6 @@ static void on_bus_acquired(GDBusConnection *conn, const gchar *name, gpointer u g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELETON(mgr), conn, ctx->service_path, NULL); g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELETON(nmea), conn, ctx->service_path, NULL); - /* g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELETON(nmea), conn, path, NULL); */ g_dbus_object_manager_server_set_connection(ctx->manager, conn); @@ -944,17 +992,8 @@ lbs_server_create(char *service_name, char *name, char *description, lbs_server_dbus_h *lbs_server, - LbsDbusSetOptionsCB set_options_cb, - LbsDbusShutdownCB shutdown_cb, - LbsDbusUpdateIntervalCB update_interval_cb, - LbsDbusRequestChangeIntervalCB request_change_interval_cb, - LbsDbusGetNmeaCB get_nmea_cb, - GpsGeofenceAddFenceCB add_hw_fence_cb, - GpsGeofenceDeleteFenceCB delete_hw_fence_cb, - GpsGeofencePauseFenceCB pause_hw_fence_cb, - GpsGeofenceResumeFenceCB resume_hw_fence_cb, + lbs_server_dbus_cb_t *lbs_server_cb, gpointer userdata) - { LBS_SERVER_LOGD("ENTER >>>"); g_return_val_if_fail(service_name, LBS_SERVER_ERROR_PARAMETER); @@ -982,17 +1021,25 @@ lbs_server_create(char *service_name, server->connections = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); server->userdata = userdata; - server->set_options_cb = set_options_cb; - server->shutdown_cb = shutdown_cb; - server->update_interval_cb = update_interval_cb; - server->request_change_interval_cb = request_change_interval_cb; - server->get_nmea_cb = get_nmea_cb; + +#if TIZEN_3_0_OPT + server->callback = lbs_server_cb; +#endif + + server->set_options_cb = lbs_server_cb->set_options_cb; + server->shutdown_cb = lbs_server_cb->shutdown_cb; + server->update_interval_cb = lbs_server_cb->update_interval_cb; + server->request_change_interval_cb = lbs_server_cb->request_change_interval_cb; + server->get_nmea_cb = lbs_server_cb->get_nmea_cb; + + /* Tizen 3.0 */ + server->set_mock_location_cb = lbs_server_cb->set_mock_location_cb; /* add H/W gps-gefence callbacks */ - server->add_hw_fence_cb = add_hw_fence_cb; - server->delete_hw_fence_cb = delete_hw_fence_cb; - server->pause_hw_fence_cb = pause_hw_fence_cb; - server->resume_hw_fence_cb = resume_hw_fence_cb; + server->add_hw_fence_cb = lbs_server_cb->add_hw_fence_cb; + server->delete_hw_fence_cb = lbs_server_cb->delete_hw_fence_cb; + server->pause_hw_fence_cb = lbs_server_cb->pause_hw_fence_cb; + server->resume_hw_fence_cb = lbs_server_cb->resume_hw_fence_cb; server->owner_id = g_bus_own_name(G_BUS_TYPE_SYSTEM, service_name, @@ -1056,6 +1103,11 @@ lbs_server_destroy(lbs_server_dbus_h lbs_server) g_signal_handler_disconnect(lbs_mgr, handle->remove_reference_h); handle->remove_reference_h = 0; } + + if (handle->set_mock_location_h) { + g_signal_handler_disconnect(lbs_mgr, handle->set_mock_location_h); + handle->set_mock_location_h = 0; + } g_object_unref(lbs_mgr); LbsNmea *nmea = NULL; |