batch : Fix for emulator 67/152067/1 accepted/tizen/4.0/unified/20170926.062608 submit/tizen_4.0/20170925.072842
authorkj7.sung <kj7.sung@samsung.com>
Mon, 25 Sep 2017 04:09:57 +0000 (13:09 +0900)
committerkj7.sung <kj7.sung@samsung.com>
Mon, 25 Sep 2017 04:10:13 +0000 (13:10 +0900)
- batch changed to dbus (file logging removed)

Change-Id: I2460c0c43f8fa811e0aca314568b353a918d9aef
Signed-off-by: kj7.sung <kj7.sung@samsung.com>
lbs-server/include/gps_plugin_data_types.h
lbs-server/src/lbs_server.c
module/gps_module.c
packaging/lbs-server.spec

index db4f10c5192d947c2f78a672e1100cc2dcf0aaae..635127a8b9e740616f8663b3f7a186716944680d 100644 (file)
@@ -90,6 +90,7 @@ typedef struct {
  */
 typedef struct {
        int     num_of_location;        /**< Number of batch data */
+       pos_data_t *data;
 } batch_data_t;
 
 /**
index 425891d79e55d0cfa336dbaa6e029f5416ded70a..3208aced066b963939f63330553ef86750e0b748 100644 (file)
@@ -1422,17 +1422,31 @@ static void gps_update_position_cb(pos_data_t *pos, gps_error_t error, void *use
                                        pos->latitude, pos->longitude, pos->altitude, pos->speed, pos->bearing, 0.0, accuracy);
 }
 
-static void gps_update_batch_cb(batch_data_t *batch, void *user_data)
+static void gps_update_batch_cb(batch_data_t *bat, void *user_data)
 {
        lbs_server_s *lbs_server = (lbs_server_s *)(user_data);
-       memcpy(&lbs_server->batch, batch, sizeof(batch_data_t));
+
+       int idx;
+       GVariant *batch_info = NULL;
+       GVariantBuilder *batch_builder = NULL;
+       memcpy(&lbs_server->batch, bat, sizeof(batch_data_t));
 
        if (lbs_server->status != LBS_STATUS_AVAILABLE) {
                lbs_server_emit_status_changed(lbs_server->lbs_dbus_server, LBS_SERVER_METHOD_GPS, LBS_STATUS_AVAILABLE);
                lbs_server->status = LBS_STATUS_AVAILABLE;
        }
 
-       lbs_server_emit_batch_changed(lbs_server->lbs_dbus_server, batch->num_of_location);
+       batch_builder = g_variant_builder_new(G_VARIANT_TYPE("a(iddddddd)"));
+       for (idx = 0; idx < bat->num_of_location; idx++) {
+               g_variant_builder_add(batch_builder, "(iddddddd)", bat->data[idx].timestamp,
+                                       bat->data[idx].latitude, bat->data[idx].longitude, bat->data[idx].altitude,
+                                       bat->data[idx].speed, bat->data[idx].bearing,
+                                       bat->data[idx].hor_accuracy, bat->data[idx].ver_accuracy);
+       }
+
+       batch_info = g_variant_builder_end(batch_builder);
+
+       lbs_server_emit_batch_changed(lbs_server->lbs_dbus_server, bat->num_of_location, batch_info);
 }
 
 static void gps_update_satellite_cb(sv_data_t *sv, void *user_data)
index 499d560c4a9fe549b28c5fcec945d6acdf106980..fed16917ac6f8923ca6d9802832b2d226777738e 100644 (file)
@@ -182,15 +182,39 @@ static void position_callback(GVariant *param, void *user_data)
 
 static void batch_callback(GVariant *param, void *user_data)
 {
-       MOD_LOGD("batch_callback");
        GpsManagerData *module = (GpsManagerData *)user_data;
        g_return_if_fail(module);
        g_return_if_fail(module->batch_cb);
 
-       int num_of_location = 0;
-       g_variant_get(param, "(i)", &num_of_location);
+       guint idx;
+       int num_of_location = 0, timestamp = 0;
+       double lat = 0.0, lon = 0.0, alt = 0.0, speed = 0.0, direction = 0.0, horizontal = 0.0, vertical = 0.0;
+
+       LocationBatch *batch = NULL;
+       GVariant *batch_data = NULL;
+       GVariantIter *batch_iter = NULL;
+
+       g_variant_get(param, "(i@a(iddddddd))", &num_of_location, &batch_data);
+       g_variant_get(batch_data, "a(iddddddd)", &batch_iter);
+       MOD_LOGD("batch_callback - batch size [%d]", num_of_location);
+
+       batch = location_batch_new(num_of_location);
+       batch->num_of_location = num_of_location;
+
+       GVariant *tmp_var = NULL;
+       for (idx = 0; idx < num_of_location; idx++) {
+               tmp_var = g_variant_iter_next_value(batch_iter);
+               g_variant_get(tmp_var, "(iddddddd)", &timestamp, &lat, &lon, &alt, &speed, &direction, &horizontal, &vertical);
+
+               MOD_LOGD("idx[%d] %d, %lf, %lf, %lf ", idx, timestamp, lat, lon, alt);
+               location_set_batch_details(batch, idx, lat, lon, alt, speed, direction, horizontal, vertical, timestamp);
+               g_variant_unref(tmp_var);
+       }
 
-       module->batch_cb(TRUE, num_of_location, module->userdata);
+       module->batch_cb(TRUE, num_of_location, batch, module->userdata);
+       location_batch_free(batch);
+       g_variant_iter_free(batch_iter);
+       g_variant_unref(batch_data);
 }
 
 static void on_signal_batch_callback(const gchar *sig, GVariant *param, gpointer user_data)
index 8dde1b3ea35ae3f52ff0ec425287d58c4af513b0..cc52b23cbf714e52462a0d2f631d31c725fb8398 100644 (file)
@@ -1,6 +1,6 @@
 Name:    lbs-server
 Summary: LBS Server for Tizen
-Version: 1.2.8
+Version: 1.2.9
 Release: 1
 Group:   Location/Service
 License: Apache-2.0