summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYoung-Ae Kang <youngae.kang@samsung.com>2015-11-27 15:00:01 +0900
committerYoungae Kang <youngae.kang@samsung.com>2016-01-21 02:27:28 -0800
commitc3ea9d9c4ffb5735aaa00daca829f84a117a5a17 (patch)
treed6c839fad4bc58de5376148ea1a84bdec9501ada
parent0b35431998e809e42839a93871d0f8c3b3e151ee (diff)
downloadlbs-dbus-c3ea9d9c4ffb5735aaa00daca829f84a117a5a17.tar.gz
lbs-dbus-c3ea9d9c4ffb5735aaa00daca829f84a117a5a17.tar.bz2
lbs-dbus-c3ea9d9c4ffb5735aaa00daca829f84a117a5a17.zip
Change-Id: Ia1d36aa65485a9f1de302efba9d42ab0ffc00695
-rw-r--r--client/include/lbs_dbus_client.h7
-rwxr-xr-x[-rw-r--r--]client/src/lbs_dbus_client.c110
-rw-r--r--introspection/lbs.xml15
-rw-r--r--packaging/liblbs-dbus.changes6
-rw-r--r--packaging/liblbs-dbus.spec2
-rw-r--r--server/include/lbs_dbus_server.h36
-rw-r--r--server/src/lbs_dbus_server.c158
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;