Dynamic interval table for multi handle
[platform/core/location/lbs-dbus.git] / server / include / lbs_dbus_server.h
1 /*
2  * lbs-dbus
3  *
4  * Copyright (c) 2013 Samsung Electronics Co., Ltd. All rights reserved.
5  *
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>
8  *
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
12  *
13  * http://www.apache.org/licenses/LICENSE-2.0
14  *
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.
20  */
21
22 #ifndef __LBS_DBUS_SERVER_H__
23 #define __LBS_DBUS_SERVER_H__
24
25 __BEGIN_DECLS
26
27 #include <gio/gio.h>
28
29 typedef void (*LbsDbusSetOptionsCB)(GVariant *options, const gchar *client, gpointer userdata);
30 typedef void (*LbsDbusShutdownCB)(gpointer userdata, gboolean *shutdown_arr);
31
32 typedef enum {
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);
40
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);
48
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);
54
55 /* Tizen 3.0 */
56 typedef void (*LbsDbusSetMockLocationCB)(int method, double latitude, double longtitude, double altitude, double speed, double direction, double accuracy, gpointer userdata);
57
58
59 typedef enum {
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,
68 } lbs_server_error_e;
69
70 typedef void *lbs_server_dbus_h;
71
72 /* Tizen 3.0 */
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;
85
86
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);
97
98
99 #ifdef TIZEN_2_4
100 int
101 lbs_server_create(char *service_name,
102                                   char *service_path,
103                                   char *name,
104                                   char *description,
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,
115                                   gpointer userdata);
116
117 #endif
118
119 /* Tizen 3.0 */
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);
122
123
124 __END_DECLS
125
126 #endif /* __LBS_DBUS_SERVER_H__ */
127