4 * Copyright (c) 2013 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Youngae Kang <youngae.kang@samsung.com>, Minjune Kim <sena06.kim@samsung.com>
7 * Genie Kim <daejins.kim@samsung.com>, Ming Zhu <mingwu.zhu@samsung.com>
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
22 #ifndef __LBS_DBUS_SERVER_H__
23 #define __LBS_DBUS_SERVER_H__
29 typedef void (*LbsDbusSetOptionsCB)(GVariant *options, const gchar *client, gpointer userdata);
30 typedef void (*LbsDbusShutdownCB)(gpointer userdata, gboolean *shutdown_arr);
33 LBS_SERVER_INTERVAL_ADD = 0,
34 LBS_SERVER_INTERVAL_REMOVE,
35 LBS_SERVER_INTERVAL_UPDATE,
36 } lbs_server_interval_manipulation_type;
37 typedef gboolean(*LbsDbusUpdateIntervalCB)(lbs_server_interval_manipulation_type type, const gchar *client, int method, guint interval, guint prev_interval, gpointer userdata);
38 typedef void (*LbsDbusRequestChangeIntervalCB)(int method, gpointer userdata);
39 typedef void (*LbsDbusGetNmeaCB)(int *timestamp, gchar **nmea_data, gpointer userdata);
41 /* for geofence callbacks */
42 typedef gint(*LbsGeofenceAddFenceCB)(const gchar *app_id, gint geofence_type, const gchar *name, gint direction, gdouble latitude, gdouble longitude, gdouble radius, const gchar *bssid, gpointer userdata);
43 typedef void (*LbsGeofenceRemoveFenceCB)(gint fence_id, const gchar *app_id, gpointer userdata);
44 typedef void (*LbsGeofencePauseFenceCB)(gint fence_id, const gchar *app_id, gpointer userdata);
45 typedef void (*LbsGeofenceResumeFenceCB)(gint fence_id, const gchar *app_id, gpointer userdata);
46 typedef void (*LbsGeofenceStartGeofenceCB)(const gchar *app_id, gpointer userdata);
47 typedef void (*LbsGeofenceStopGeofenceCB)(const gchar *app_id, gpointer userdata);
49 /* for gps-geofence (H/W geofence) callbacks */
50 typedef void (*GpsGeofenceAddFenceCB)(gint fence_id, gdouble latitude, gdouble longitude, gint radius, gint last_state, gint monitor_states, gint notification_responsiveness, gint unknown_timer, gpointer userdata);
51 typedef void (*GpsGeofenceDeleteFenceCB)(gint fence_id, gpointer userdata);
52 typedef void (*GpsGeofencePauseFenceCB)(gint fence_id, gpointer userdata);
53 typedef void (*GpsGeofenceResumeFenceCB)(gint fence_id, gint monitor_states, gpointer userdata);
56 typedef void (*LbsDbusSetMockLocationCB)(int method, double latitude, double longtitude, double altitude, double speed, double direction, double accuracy, gpointer userdata);
60 LBS_SERVER_ERROR_NONE = 0x0,
61 LBS_SERVER_ERROR_UNKNOWN,
62 LBS_SERVER_ERROR_PARAMETER,
63 LBS_SERVER_ERROR_MEMORY,
64 LBS_SERVER_ERROR_CONNECTION,
65 LBS_SERVER_ERROR_STATUS,
66 LBS_SERVER_ERROR_DBUS_CALL,
67 LBS_SERVER_ERROR_NO_RESULT,
70 typedef void *lbs_server_dbus_h;
73 typedef struct _lbs_server_dbus_cb_t {
74 LbsDbusSetOptionsCB set_options_cb;
75 LbsDbusShutdownCB shutdown_cb;
76 LbsDbusUpdateIntervalCB update_interval_cb;
77 LbsDbusRequestChangeIntervalCB request_change_interval_cb;
78 LbsDbusGetNmeaCB get_nmea_cb;
79 GpsGeofenceAddFenceCB add_hw_fence_cb;
80 GpsGeofenceDeleteFenceCB delete_hw_fence_cb;
81 GpsGeofencePauseFenceCB pause_hw_fence_cb;
82 GpsGeofenceResumeFenceCB resume_hw_fence_cb;
83 LbsDbusSetMockLocationCB set_mock_location_cb;
84 } lbs_server_dbus_cb_t;
87 int lbs_server_emit_position_changed(lbs_server_dbus_h lbs_server, gint arg_method, gint arg_fields, gint arg_timestamp,
88 gdouble arg_latitude, gdouble arg_longitude, gdouble arg_altitude, gdouble arg_speed, gdouble arg_direction, gdouble arg_climb, GVariant *arg_accuracy);
89 int lbs_server_emit_batch_changed(lbs_server_dbus_h lbs_server, gint arg_num_of_location);
90 int lbs_server_emit_satellite_changed(lbs_server_dbus_h lbs_server, gint arg_timestamp, gint arg_satellite_used, gint arg_satellite_visible, GVariant *arg_used_prn, GVariant *arg_sat_info);
91 int lbs_server_emit_nmea_changed(lbs_server_dbus_h lbs_server, gint arg_timestamp, const gchar *arg_nmea_data);
92 int lbs_server_emit_status_changed(lbs_server_dbus_h lbs_server, int method, gint status);
93 int lbs_server_emit_geofence_status_changed(lbs_server_dbus_h lbs_server, gint status);
94 int lbs_server_emit_geofence_changed(lbs_server_dbus_h lbs_server, const gchar *app_id, gint fence_id, gint fence_state);
95 int lbs_server_emit_gps_geofence_status_changed(lbs_server_dbus_h lbs_server, gint status);
96 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);
101 lbs_server_create(char *service_name,
105 lbs_server_dbus_h *lbs_server,
106 LbsDbusSetOptionsCB set_options_cb,
107 LbsDbusShutdownCB shutdown_cb,
108 LbsDbusUpdateIntervalCB update_interval_cb,
109 LbsDbusRequestChangeIntervalCB request_change_interval_cb,
110 LbsDbusGetNmeaCB get_nmea_cb,
111 GpsGeofenceAddFenceCB add_hw_fence_cb,
112 GpsGeofenceDeleteFenceCB delete_hw_fence_cb,
113 GpsGeofencePauseFenceCB pause_hw_fence_cb,
114 GpsGeofenceResumeFenceCB resume_hw_fence_cb,
120 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);
121 int lbs_server_destroy(lbs_server_dbus_h lbs_server);
126 #endif /* __LBS_DBUS_SERVER_H__ */