1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
/*
* lbs-dbus
*
* Copyright (c) 2013 Samsung Electronics Co., Ltd. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __LBS_DBUS_SERVER_H__
#define __LBS_DBUS_SERVER_H__
__BEGIN_DECLS
#include <gio/gio.h>
typedef void (*LbsDbusSetOptionsCB)(GVariant *options, const gchar *client, gpointer userdata);
typedef void (*LbsDbusShutdownCB)(gpointer userdata, gboolean *shutdown_arr);
typedef enum {
LBS_SERVER_INTERVAL_ADD = 0,
LBS_SERVER_INTERVAL_REMOVE,
LBS_SERVER_INTERVAL_UPDATE,
LBS_SERVER_INTERVAL_REMOVE_CLIENT,
} lbs_server_interval_manipulation_type;
typedef gboolean(*LbsDbusUpdateIntervalCB)(lbs_server_interval_manipulation_type type, const gchar *client, int method, guint interval, guint prev_interval, gpointer userdata);
typedef void (*LbsDbusRequestChangeIntervalCB)(int method, gpointer userdata);
typedef void (*LbsDbusGetNmeaCB)(int *timestamp, gchar **nmea_data, gpointer userdata);
/* for geofence callbacks */
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);
typedef void (*LbsGeofenceRemoveFenceCB)(gint fence_id, const gchar *app_id, gpointer userdata);
typedef void (*LbsGeofencePauseFenceCB)(gint fence_id, const gchar *app_id, gpointer userdata);
typedef void (*LbsGeofenceResumeFenceCB)(gint fence_id, const gchar *app_id, gpointer userdata);
typedef void (*LbsGeofenceStartGeofenceCB)(const gchar *app_id, gpointer userdata);
typedef void (*LbsGeofenceStopGeofenceCB)(const gchar *app_id, gpointer userdata);
/* for gps-geofence (H/W geofence) callbacks */
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);
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,
LBS_SERVER_ERROR_PARAMETER,
LBS_SERVER_ERROR_MEMORY,
LBS_SERVER_ERROR_CONNECTION,
LBS_SERVER_ERROR_STATUS,
LBS_SERVER_ERROR_DBUS_CALL,
LBS_SERVER_ERROR_NO_RESULT,
} lbs_server_error_e;
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_dbus_server, gint arg_method, gint arg_fields, gint arg_timestamp,
gdouble arg_latitude, gdouble arg_longitude, gdouble arg_altitude, gdouble arg_speed, gdouble arg_direction, gdouble arg_climb, GVariant *arg_accuracy);
int lbs_server_emit_batch_changed(lbs_server_dbus_h lbs_dbus_server, gint arg_num_of_location);
int lbs_server_emit_satellite_changed(lbs_server_dbus_h lbs_dbus_server, gint arg_timestamp, gint arg_satellite_used, gint arg_satellite_visible, GVariant *arg_used_prn, GVariant *arg_sat_info);
int lbs_server_emit_nmea_changed(lbs_server_dbus_h lbs_dbus_server, gint arg_timestamp, const gchar *arg_nmea_data);
int lbs_server_emit_status_changed(lbs_server_dbus_h lbs_dbus_server, int method, gint status);
int lbs_server_emit_geofence_status_changed(lbs_server_dbus_h lbs_dbus_server, gint status);
int lbs_server_emit_geofence_changed(lbs_server_dbus_h lbs_dbus_server, const gchar *app_id, gint fence_id, gint fence_state);
int lbs_server_emit_gps_geofence_status_changed(lbs_server_dbus_h lbs_dbus_server, gint status);
int lbs_server_emit_gps_geofence_changed(lbs_server_dbus_h lbs_dbus_server, gint fence_id, gint transition, gdouble latitude, gdouble longitude, gdouble altitude, gdouble speed, gdouble bearing, gdouble hor_accuracy);
/* Tizen 3.0 */
int lbs_server_create(char *service_name, char *service_path, char *name, char *description, lbs_server_dbus_h *lbs_dbus_server, lbs_server_dbus_cb_t *lbs_server_cb, gpointer userdata);
int lbs_server_destroy(lbs_server_dbus_h lbs_dbus_server);
typedef enum {
LBS_SERVER_METHOD_GPS = 0,
LBS_SERVER_METHOD_NPS,
LBS_SERVER_METHOD_AGPS,
LBS_SERVER_METHOD_GEOFENCE,
LBS_SERVER_METHOD_MOCK,
LBS_SERVER_METHOD_PASSIVE,
LBS_SERVER_METHOD_FUSED,
LBS_SERVER_METHOD_SIZE,
} lbs_server_method_e;
__END_DECLS
#endif /* __LBS_DBUS_SERVER_H__ */
|