forked from enlightenment/enlightenment
modules/geolocation: Add communication to geoClue2 to receive current location.
This basically is the GeoClue2 client functionality a normal application also uses. We request the current location and subscribe to updates on it. Only activated when the users does a left click on the gadget so we do not run always run it in the background. The received information will be displayed in a popup in a following commit.
This commit is contained in:
parent
b6104ce004
commit
d67a085b00
|
@ -12,7 +12,15 @@ geolocationpkg_LTLIBRARIES = src/modules/geoclue2/module.la
|
||||||
src_modules_geoclue2_module_la_LIBADD = $(MOD_LIBS)
|
src_modules_geoclue2_module_la_LIBADD = $(MOD_LIBS)
|
||||||
src_modules_geoclue2_module_la_CPPFLAGS = $(MOD_CPPFLAGS)
|
src_modules_geoclue2_module_la_CPPFLAGS = $(MOD_CPPFLAGS)
|
||||||
src_modules_geoclue2_module_la_LDFLAGS = $(MOD_LDFLAGS)
|
src_modules_geoclue2_module_la_LDFLAGS = $(MOD_LDFLAGS)
|
||||||
src_modules_geoclue2_module_la_SOURCES = src/modules/geoclue2/e_mod_main.c
|
src_modules_geoclue2_module_la_SOURCES = \
|
||||||
|
src/modules/geoclue2/e_mod_main.c \
|
||||||
|
src/modules/geoclue2/gen/eldbus_geo_clue2_client.c \
|
||||||
|
src/modules/geoclue2/gen/eldbus_geo_clue2_client.h \
|
||||||
|
src/modules/geoclue2/gen/eldbus_geo_clue2_location.c \
|
||||||
|
src/modules/geoclue2/gen/eldbus_geo_clue2_location.h \
|
||||||
|
src/modules/geoclue2/gen/eldbus_geo_clue2_manager.c \
|
||||||
|
src/modules/geoclue2/gen/eldbus_geo_clue2_manager.h \
|
||||||
|
src/modules/geoclue2/gen/eldbus_utils.h
|
||||||
|
|
||||||
PHONIES += geolocation install-geolocation
|
PHONIES += geolocation install-geolocation
|
||||||
geolocation: $(geolocationpkg_LTLIBRARIES) $(geolocation_DATA)
|
geolocation: $(geolocationpkg_LTLIBRARIES) $(geolocation_DATA)
|
||||||
|
|
|
@ -1,14 +1,8 @@
|
||||||
#include "e.h"
|
#include "e.h"
|
||||||
|
|
||||||
/* TODO
|
#include "gen/eldbus_geo_clue2_manager.h"
|
||||||
* o Grey if inUse property is false
|
#include "gen/eldbus_geo_clue2_client.h"
|
||||||
* o Blue if the inUse property is true
|
#include "gen/eldbus_geo_clue2_location.h"
|
||||||
* o Pulsing if an app requests access and the dialog shows?
|
|
||||||
* o Dialog with app name and option for Not yet, Never, Only once, Always
|
|
||||||
* o List of apps in settings window.
|
|
||||||
* o Display accuracy level? Per app?
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/* gadcon requirements */
|
/* gadcon requirements */
|
||||||
static E_Gadcon_Client *_gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style);
|
static E_Gadcon_Client *_gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style);
|
||||||
|
@ -37,17 +31,54 @@ struct _Instance
|
||||||
E_Gadcon_Client *gcc;
|
E_Gadcon_Client *gcc;
|
||||||
Evas_Object *o_geoclue2;
|
Evas_Object *o_geoclue2;
|
||||||
Eina_Bool in_use;
|
Eina_Bool in_use;
|
||||||
|
Eldbus_Connection *conn;
|
||||||
|
Eldbus_Service_Interface *iface;
|
||||||
|
Eldbus_Proxy *manager;
|
||||||
|
Eldbus_Proxy *client;
|
||||||
|
Eldbus_Proxy *location;
|
||||||
|
double latitude;
|
||||||
|
double longitude;
|
||||||
|
double accuracy;
|
||||||
|
double altitude;
|
||||||
|
const char *description;
|
||||||
};
|
};
|
||||||
|
|
||||||
static Eina_List *geoclue2_instances = NULL;
|
static Eina_List *geoclue2_instances = NULL;
|
||||||
static E_Module *geoclue2_module = NULL;
|
static E_Module *geoclue2_module = NULL;
|
||||||
|
|
||||||
|
void
|
||||||
|
cb_client_start(Eldbus_Proxy *proxy EINA_UNUSED, void *data, Eldbus_Pending *pending EINA_UNUSED,
|
||||||
|
Eldbus_Error_Info *error EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Instance *inst = data;
|
||||||
|
|
||||||
|
DBG("Client proxy start callback received");
|
||||||
|
|
||||||
|
edje_object_signal_emit(inst->o_geoclue2, "e,state,location_on", "e");
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cb_client_stop(Eldbus_Proxy *proxy EINA_UNUSED, void *data, Eldbus_Pending *pending EINA_UNUSED,
|
||||||
|
Eldbus_Error_Info *error EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Instance *inst = data;
|
||||||
|
|
||||||
|
DBG("Client proxy stop callback received");
|
||||||
|
|
||||||
|
edje_object_signal_emit(inst->o_geoclue2, "e,state,location_off", "e");
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_geoclue2_cb_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event)
|
_geoclue2_cb_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event)
|
||||||
{
|
{
|
||||||
Instance *inst = data;
|
Instance *inst = data;
|
||||||
Evas_Event_Mouse_Down *ev = event;
|
Evas_Event_Mouse_Down *ev = event;
|
||||||
|
|
||||||
|
if (ev->button == 1)
|
||||||
|
{
|
||||||
|
DBG("**** DEBUG **** Left mouse button clicked on icon");
|
||||||
|
geo_clue2_client_start_call(inst->client, cb_client_start, inst);
|
||||||
|
}
|
||||||
if (ev->button == 3)
|
if (ev->button == 3)
|
||||||
{
|
{
|
||||||
E_Zone *zone;
|
E_Zone *zone;
|
||||||
|
@ -55,6 +86,9 @@ _geoclue2_cb_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UN
|
||||||
E_Menu_Item *mi;
|
E_Menu_Item *mi;
|
||||||
int x, y;
|
int x, y;
|
||||||
|
|
||||||
|
DBG("**** DEBUG **** Right mouse button clicked on icon");
|
||||||
|
geo_clue2_client_stop_call(inst->client, cb_client_stop, inst);
|
||||||
|
|
||||||
zone = e_util_zone_current_get(e_manager_current_get());
|
zone = e_util_zone_current_get(e_manager_current_get());
|
||||||
|
|
||||||
m = e_menu_new();
|
m = e_menu_new();
|
||||||
|
@ -73,6 +107,108 @@ _geoclue2_cb_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UN
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cb_location_prop_latitude_get(void *data EINA_UNUSED, Eldbus_Pending *p EINA_UNUSED,
|
||||||
|
const char *propname EINA_UNUSED, Eldbus_Proxy *proxy EINA_UNUSED,
|
||||||
|
Eldbus_Error_Info *error_info EINA_UNUSED, double value)
|
||||||
|
{
|
||||||
|
Instance *inst = data;
|
||||||
|
inst->latitude = value;
|
||||||
|
|
||||||
|
DBG("Location property Latitude: %f", value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cb_location_prop_longitude_get(void *data EINA_UNUSED, Eldbus_Pending *p EINA_UNUSED,
|
||||||
|
const char *propname EINA_UNUSED, Eldbus_Proxy *proxy EINA_UNUSED,
|
||||||
|
Eldbus_Error_Info *error_info EINA_UNUSED, double value)
|
||||||
|
{
|
||||||
|
Instance *inst = data;
|
||||||
|
inst->longitude = value;
|
||||||
|
|
||||||
|
DBG("Location property Longitude: %f", value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cb_location_prop_accuracy_get(void *data EINA_UNUSED, Eldbus_Pending *p EINA_UNUSED,
|
||||||
|
const char *propname EINA_UNUSED, Eldbus_Proxy *proxy EINA_UNUSED,
|
||||||
|
Eldbus_Error_Info *error_info EINA_UNUSED, double value)
|
||||||
|
{
|
||||||
|
Instance *inst = data;
|
||||||
|
inst->accuracy = value;
|
||||||
|
|
||||||
|
DBG("Location property Accuracy: %f", value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cb_location_prop_altitude_get(void *data EINA_UNUSED, Eldbus_Pending *p EINA_UNUSED,
|
||||||
|
const char *propname EINA_UNUSED, Eldbus_Proxy *proxy EINA_UNUSED,
|
||||||
|
Eldbus_Error_Info *error_info EINA_UNUSED, double value)
|
||||||
|
{
|
||||||
|
Instance *inst = data;
|
||||||
|
inst->altitude = value;
|
||||||
|
|
||||||
|
DBG("Location property Altitude: %f", value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cb_location_prop_description_get(void *data EINA_UNUSED, Eldbus_Pending *p EINA_UNUSED,
|
||||||
|
const char *propname EINA_UNUSED, Eldbus_Proxy *proxy EINA_UNUSED,
|
||||||
|
Eldbus_Error_Info *error_info EINA_UNUSED, const char *value)
|
||||||
|
{
|
||||||
|
Instance *inst = data;
|
||||||
|
inst->description = value;
|
||||||
|
|
||||||
|
DBG("Location property Description: %s", value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cb_client_location_updated_signal(void *data, const Eldbus_Message *msg)
|
||||||
|
{
|
||||||
|
const char *new_path, *old_path;
|
||||||
|
Instance *inst = data;
|
||||||
|
|
||||||
|
DBG("Client LocationUpdated signal received");
|
||||||
|
|
||||||
|
if (!eldbus_message_arguments_get(msg, "oo", &old_path, &new_path))
|
||||||
|
{
|
||||||
|
ERR("Error: could not get location update");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DBG("Client signal location path old: %s", old_path);
|
||||||
|
DBG("Client signal location path new: %s", new_path);
|
||||||
|
|
||||||
|
inst->location = geo_clue2_location_proxy_get(inst->conn, "org.freedesktop.GeoClue2", new_path);
|
||||||
|
if (!inst->location)
|
||||||
|
{
|
||||||
|
ERR("Error: could not connect to GeoClue2 location proxy");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
geo_clue2_location_latitude_propget(inst->location, cb_location_prop_latitude_get, inst);
|
||||||
|
geo_clue2_location_longitude_propget(inst->location, cb_location_prop_longitude_get, inst);
|
||||||
|
geo_clue2_location_accuracy_propget(inst->location, cb_location_prop_accuracy_get, inst);
|
||||||
|
geo_clue2_location_altitude_propget(inst->location, cb_location_prop_altitude_get, inst);
|
||||||
|
geo_clue2_location_description_propget(inst->location, cb_location_prop_description_get, inst);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cb_client_object_get(Eldbus_Proxy *proxy EINA_UNUSED, void *data, Eldbus_Pending *pending EINA_UNUSED,
|
||||||
|
Eldbus_Error_Info *error EINA_UNUSED, const char *client_path)
|
||||||
|
{
|
||||||
|
Instance *inst = data;
|
||||||
|
|
||||||
|
DBG("Client object path: %s", client_path);
|
||||||
|
inst->client = geo_clue2_client_proxy_get(inst->conn, "org.freedesktop.GeoClue2", client_path);
|
||||||
|
if (!inst->client)
|
||||||
|
{
|
||||||
|
ERR("Error: could not connect to GeoClue2 client proxy");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
eldbus_proxy_signal_handler_add(inst->client, "LocationUpdated", cb_client_location_updated_signal, inst);
|
||||||
|
}
|
||||||
|
|
||||||
static E_Gadcon_Client *
|
static E_Gadcon_Client *
|
||||||
_gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style)
|
_gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style)
|
||||||
{
|
{
|
||||||
|
@ -80,6 +216,7 @@ _gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style)
|
||||||
E_Gadcon_Client *gcc;
|
E_Gadcon_Client *gcc;
|
||||||
Instance *inst;
|
Instance *inst;
|
||||||
|
|
||||||
|
eldbus_init();
|
||||||
inst = E_NEW(Instance, 1);
|
inst = E_NEW(Instance, 1);
|
||||||
|
|
||||||
o = edje_object_add(gc->evas);
|
o = edje_object_add(gc->evas);
|
||||||
|
@ -102,6 +239,23 @@ _gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style)
|
||||||
inst);
|
inst);
|
||||||
|
|
||||||
geoclue2_instances = eina_list_append(geoclue2_instances, inst);
|
geoclue2_instances = eina_list_append(geoclue2_instances, inst);
|
||||||
|
|
||||||
|
inst->conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SYSTEM);
|
||||||
|
if (!inst->conn)
|
||||||
|
{
|
||||||
|
ERR("Error: could not get system bus.");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
inst->manager = geo_clue2_manager_proxy_get(inst->conn, "org.freedesktop.GeoClue2", "/org/freedesktop/GeoClue2/Manager");
|
||||||
|
if (!inst->manager)
|
||||||
|
{
|
||||||
|
ERR("Error: could not connect to GeoClue2 manager proxy");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
geo_clue2_manager_get_client_call(inst->manager, cb_client_object_get, inst);
|
||||||
|
|
||||||
return gcc;
|
return gcc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -113,7 +267,12 @@ _gc_shutdown(E_Gadcon_Client *gcc)
|
||||||
inst = gcc->data;
|
inst = gcc->data;
|
||||||
geoclue2_instances = eina_list_remove(geoclue2_instances, inst);
|
geoclue2_instances = eina_list_remove(geoclue2_instances, inst);
|
||||||
evas_object_del(inst->o_geoclue2);
|
evas_object_del(inst->o_geoclue2);
|
||||||
|
geo_clue2_manager_proxy_unref(inst->location);
|
||||||
|
geo_clue2_manager_proxy_unref(inst->client);
|
||||||
|
geo_clue2_manager_proxy_unref(inst->manager);
|
||||||
|
eldbus_connection_unref(inst->conn);
|
||||||
free(inst);
|
free(inst);
|
||||||
|
eldbus_shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -0,0 +1,442 @@
|
||||||
|
#include "eldbus_geo_clue2_client.h"
|
||||||
|
|
||||||
|
static int _log_main = -1;
|
||||||
|
#undef ERR
|
||||||
|
#define ERR(...) EINA_LOG_DOM_ERR(_log_main, __VA_ARGS__);
|
||||||
|
int GEO_CLUE2_CLIENT_LOCATION_UPDATED_EVENT = 0;
|
||||||
|
|
||||||
|
static void
|
||||||
|
cb_geo_clue2_client_start(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
|
||||||
|
{
|
||||||
|
void *user_data = eldbus_pending_data_del(pending, "__user_data");
|
||||||
|
Geo_Clue2_Client_Start_Cb cb = data;
|
||||||
|
const char *error, *error_msg;
|
||||||
|
Eldbus_Proxy *proxy = eldbus_pending_data_del(pending, "__proxy");
|
||||||
|
if (eldbus_message_error_get(msg, &error, &error_msg))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {error, error_msg};
|
||||||
|
cb(proxy, user_data, pending, &error_info);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_arguments_get(msg, ""))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
ERR("Error: Getting arguments from message.");
|
||||||
|
cb(proxy, user_data, pending, &error_info);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cb(proxy, user_data, pending, NULL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Pending *
|
||||||
|
geo_clue2_client_start_call(Eldbus_Proxy *proxy, Geo_Clue2_Client_Start_Cb cb, const void *data)
|
||||||
|
{
|
||||||
|
Eldbus_Message *msg;
|
||||||
|
Eldbus_Pending *p;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(proxy, NULL);
|
||||||
|
msg = eldbus_proxy_method_call_new(proxy, "Start");
|
||||||
|
if (!eldbus_message_arguments_append(msg, ""))
|
||||||
|
{
|
||||||
|
ERR("Error: Filling message.");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
p = eldbus_proxy_send(proxy, msg, cb_geo_clue2_client_start, cb, -1);
|
||||||
|
if (data)
|
||||||
|
eldbus_pending_data_set(p, "__user_data", data);
|
||||||
|
eldbus_pending_data_set(p, "__proxy", proxy);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cb_geo_clue2_client_stop(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
|
||||||
|
{
|
||||||
|
void *user_data = eldbus_pending_data_del(pending, "__user_data");
|
||||||
|
Geo_Clue2_Client_Stop_Cb cb = data;
|
||||||
|
const char *error, *error_msg;
|
||||||
|
Eldbus_Proxy *proxy = eldbus_pending_data_del(pending, "__proxy");
|
||||||
|
if (eldbus_message_error_get(msg, &error, &error_msg))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {error, error_msg};
|
||||||
|
cb(proxy, user_data, pending, &error_info);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_arguments_get(msg, ""))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
ERR("Error: Getting arguments from message.");
|
||||||
|
cb(proxy, user_data, pending, &error_info);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cb(proxy, user_data, pending, NULL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Pending *
|
||||||
|
geo_clue2_client_stop_call(Eldbus_Proxy *proxy, Geo_Clue2_Client_Stop_Cb cb, const void *data)
|
||||||
|
{
|
||||||
|
Eldbus_Message *msg;
|
||||||
|
Eldbus_Pending *p;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(proxy, NULL);
|
||||||
|
msg = eldbus_proxy_method_call_new(proxy, "Stop");
|
||||||
|
if (!eldbus_message_arguments_append(msg, ""))
|
||||||
|
{
|
||||||
|
ERR("Error: Filling message.");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
p = eldbus_proxy_send(proxy, msg, cb_geo_clue2_client_stop, cb, -1);
|
||||||
|
if (data)
|
||||||
|
eldbus_pending_data_set(p, "__user_data", data);
|
||||||
|
eldbus_pending_data_set(p, "__proxy", proxy);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
geo_clue2_client_location_updated_data_free(void *user_data EINA_UNUSED, void *func_data)
|
||||||
|
{
|
||||||
|
Geo_Clue2_Client_LocationUpdated_Data *s_data = func_data;
|
||||||
|
free(s_data->old);
|
||||||
|
free(s_data->new);
|
||||||
|
free(s_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
on_geo_clue2_client_location_updated(void *data, const Eldbus_Message *msg)
|
||||||
|
{
|
||||||
|
Eldbus_Proxy *proxy = data;
|
||||||
|
Geo_Clue2_Client_LocationUpdated_Data *s_data = calloc(1, sizeof(Geo_Clue2_Client_LocationUpdated_Data));
|
||||||
|
s_data->proxy = proxy;
|
||||||
|
if (!eldbus_message_arguments_get(msg, "oo", &s_data->old, &s_data->new))
|
||||||
|
{
|
||||||
|
ERR("Error: Getting arguments from message.");
|
||||||
|
free(s_data);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
s_data->old = strdup(s_data->old);
|
||||||
|
s_data->new = strdup(s_data->new);
|
||||||
|
ecore_event_add(GEO_CLUE2_CLIENT_LOCATION_UPDATED_EVENT, s_data, geo_clue2_client_location_updated_data_free, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cb_geo_clue2_client_location(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
|
||||||
|
{
|
||||||
|
void *user_data = eldbus_pending_data_del(pending, "__user_data");
|
||||||
|
const char *error, *error_msg;
|
||||||
|
Eldbus_Codegen_Property_String_Get_Cb cb = data;
|
||||||
|
Eldbus_Proxy *proxy = eldbus_pending_data_del(pending, "__proxy");
|
||||||
|
Eldbus_Message_Iter *variant;
|
||||||
|
const char *v;
|
||||||
|
if (eldbus_message_error_get(msg, &error, &error_msg))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {error, error_msg};
|
||||||
|
cb(user_data, pending, "Location", proxy, &error_info, NULL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_arguments_get(msg, "v", &variant))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "Location", proxy, &error_info, NULL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_iter_arguments_get(variant, "o", &v))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "Location", proxy, &error_info, NULL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cb(user_data, pending, "Location", proxy, NULL, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Pending *
|
||||||
|
geo_clue2_client_location_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_String_Get_Cb cb, const void *data)
|
||||||
|
{
|
||||||
|
Eldbus_Pending *p;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(proxy, NULL);
|
||||||
|
p = eldbus_proxy_property_get(proxy, "Location", cb_geo_clue2_client_location, cb);
|
||||||
|
if (data)
|
||||||
|
eldbus_pending_data_set(p, "__user_data", data);
|
||||||
|
eldbus_pending_data_set(p, "__proxy", proxy);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cb_geo_clue2_client_distance_threshold(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
|
||||||
|
{
|
||||||
|
void *user_data = eldbus_pending_data_del(pending, "__user_data");
|
||||||
|
const char *error, *error_msg;
|
||||||
|
Eldbus_Codegen_Property_Uint32_Get_Cb cb = data;
|
||||||
|
Eldbus_Proxy *proxy = eldbus_pending_data_del(pending, "__proxy");
|
||||||
|
Eldbus_Message_Iter *variant;
|
||||||
|
unsigned int v;
|
||||||
|
if (eldbus_message_error_get(msg, &error, &error_msg))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {error, error_msg};
|
||||||
|
cb(user_data, pending, "DistanceThreshold", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_arguments_get(msg, "v", &variant))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "DistanceThreshold", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_iter_arguments_get(variant, "u", &v))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "DistanceThreshold", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cb(user_data, pending, "DistanceThreshold", proxy, NULL, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Pending *
|
||||||
|
geo_clue2_client_distance_threshold_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Uint32_Get_Cb cb, const void *data)
|
||||||
|
{
|
||||||
|
Eldbus_Pending *p;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(proxy, NULL);
|
||||||
|
p = eldbus_proxy_property_get(proxy, "DistanceThreshold", cb_geo_clue2_client_distance_threshold, cb);
|
||||||
|
if (data)
|
||||||
|
eldbus_pending_data_set(p, "__user_data", data);
|
||||||
|
eldbus_pending_data_set(p, "__proxy", proxy);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cb_geo_clue2_client_distance_threshold_set(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
|
||||||
|
{
|
||||||
|
const char *error, *error_msg;
|
||||||
|
void *user_data = eldbus_pending_data_del(pending, "__user_data");
|
||||||
|
Eldbus_Proxy *proxy = eldbus_pending_data_del(pending, "__proxy");
|
||||||
|
Eldbus_Codegen_Property_Set_Cb cb = data;
|
||||||
|
if (eldbus_message_error_get(msg, &error, &error_msg)) {
|
||||||
|
Eldbus_Error_Info error_info = {error, error_msg};
|
||||||
|
|
||||||
|
cb(user_data, "DistanceThreshold", proxy, pending, &error_info);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cb(user_data, "DistanceThreshold", proxy, pending, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Pending *
|
||||||
|
geo_clue2_client_distance_threshold_propset(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Set_Cb cb, const void *data, const void *value)
|
||||||
|
{
|
||||||
|
Eldbus_Pending *p;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(proxy, NULL);
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(value, NULL);
|
||||||
|
p = eldbus_proxy_property_set(proxy, "DistanceThreshold", "u", value, cb_geo_clue2_client_distance_threshold_set, data);
|
||||||
|
eldbus_pending_data_set(p, "__user_data", data);
|
||||||
|
eldbus_pending_data_set(p, "__proxy", proxy);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cb_geo_clue2_client_desktop_id(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
|
||||||
|
{
|
||||||
|
void *user_data = eldbus_pending_data_del(pending, "__user_data");
|
||||||
|
const char *error, *error_msg;
|
||||||
|
Eldbus_Codegen_Property_String_Get_Cb cb = data;
|
||||||
|
Eldbus_Proxy *proxy = eldbus_pending_data_del(pending, "__proxy");
|
||||||
|
Eldbus_Message_Iter *variant;
|
||||||
|
const char *v;
|
||||||
|
if (eldbus_message_error_get(msg, &error, &error_msg))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {error, error_msg};
|
||||||
|
cb(user_data, pending, "DesktopId", proxy, &error_info, NULL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_arguments_get(msg, "v", &variant))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "DesktopId", proxy, &error_info, NULL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_iter_arguments_get(variant, "s", &v))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "DesktopId", proxy, &error_info, NULL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cb(user_data, pending, "DesktopId", proxy, NULL, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Pending *
|
||||||
|
geo_clue2_client_desktop_id_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_String_Get_Cb cb, const void *data)
|
||||||
|
{
|
||||||
|
Eldbus_Pending *p;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(proxy, NULL);
|
||||||
|
p = eldbus_proxy_property_get(proxy, "DesktopId", cb_geo_clue2_client_desktop_id, cb);
|
||||||
|
if (data)
|
||||||
|
eldbus_pending_data_set(p, "__user_data", data);
|
||||||
|
eldbus_pending_data_set(p, "__proxy", proxy);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cb_geo_clue2_client_desktop_id_set(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
|
||||||
|
{
|
||||||
|
const char *error, *error_msg;
|
||||||
|
void *user_data = eldbus_pending_data_del(pending, "__user_data");
|
||||||
|
Eldbus_Proxy *proxy = eldbus_pending_data_del(pending, "__proxy");
|
||||||
|
Eldbus_Codegen_Property_Set_Cb cb = data;
|
||||||
|
if (eldbus_message_error_get(msg, &error, &error_msg)) {
|
||||||
|
Eldbus_Error_Info error_info = {error, error_msg};
|
||||||
|
|
||||||
|
cb(user_data, "DesktopId", proxy, pending, &error_info);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cb(user_data, "DesktopId", proxy, pending, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Pending *
|
||||||
|
geo_clue2_client_desktop_id_propset(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Set_Cb cb, const void *data, const void *value)
|
||||||
|
{
|
||||||
|
Eldbus_Pending *p;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(proxy, NULL);
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(value, NULL);
|
||||||
|
p = eldbus_proxy_property_set(proxy, "DesktopId", "s", value, cb_geo_clue2_client_desktop_id_set, data);
|
||||||
|
eldbus_pending_data_set(p, "__user_data", data);
|
||||||
|
eldbus_pending_data_set(p, "__proxy", proxy);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cb_geo_clue2_client_requested_accuracy_level(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
|
||||||
|
{
|
||||||
|
void *user_data = eldbus_pending_data_del(pending, "__user_data");
|
||||||
|
const char *error, *error_msg;
|
||||||
|
Eldbus_Codegen_Property_Uint32_Get_Cb cb = data;
|
||||||
|
Eldbus_Proxy *proxy = eldbus_pending_data_del(pending, "__proxy");
|
||||||
|
Eldbus_Message_Iter *variant;
|
||||||
|
unsigned int v;
|
||||||
|
if (eldbus_message_error_get(msg, &error, &error_msg))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {error, error_msg};
|
||||||
|
cb(user_data, pending, "RequestedAccuracyLevel", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_arguments_get(msg, "v", &variant))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "RequestedAccuracyLevel", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_iter_arguments_get(variant, "u", &v))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "RequestedAccuracyLevel", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cb(user_data, pending, "RequestedAccuracyLevel", proxy, NULL, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Pending *
|
||||||
|
geo_clue2_client_requested_accuracy_level_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Uint32_Get_Cb cb, const void *data)
|
||||||
|
{
|
||||||
|
Eldbus_Pending *p;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(proxy, NULL);
|
||||||
|
p = eldbus_proxy_property_get(proxy, "RequestedAccuracyLevel", cb_geo_clue2_client_requested_accuracy_level, cb);
|
||||||
|
if (data)
|
||||||
|
eldbus_pending_data_set(p, "__user_data", data);
|
||||||
|
eldbus_pending_data_set(p, "__proxy", proxy);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cb_geo_clue2_client_requested_accuracy_level_set(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
|
||||||
|
{
|
||||||
|
const char *error, *error_msg;
|
||||||
|
void *user_data = eldbus_pending_data_del(pending, "__user_data");
|
||||||
|
Eldbus_Proxy *proxy = eldbus_pending_data_del(pending, "__proxy");
|
||||||
|
Eldbus_Codegen_Property_Set_Cb cb = data;
|
||||||
|
if (eldbus_message_error_get(msg, &error, &error_msg)) {
|
||||||
|
Eldbus_Error_Info error_info = {error, error_msg};
|
||||||
|
|
||||||
|
cb(user_data, "RequestedAccuracyLevel", proxy, pending, &error_info);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cb(user_data, "RequestedAccuracyLevel", proxy, pending, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Pending *
|
||||||
|
geo_clue2_client_requested_accuracy_level_propset(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Set_Cb cb, const void *data, const void *value)
|
||||||
|
{
|
||||||
|
Eldbus_Pending *p;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(proxy, NULL);
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(value, NULL);
|
||||||
|
p = eldbus_proxy_property_set(proxy, "RequestedAccuracyLevel", "u", value, cb_geo_clue2_client_requested_accuracy_level_set, data);
|
||||||
|
eldbus_pending_data_set(p, "__user_data", data);
|
||||||
|
eldbus_pending_data_set(p, "__proxy", proxy);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cb_geo_clue2_client_active(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
|
||||||
|
{
|
||||||
|
void *user_data = eldbus_pending_data_del(pending, "__user_data");
|
||||||
|
const char *error, *error_msg;
|
||||||
|
Eldbus_Codegen_Property_Bool_Get_Cb cb = data;
|
||||||
|
Eldbus_Proxy *proxy = eldbus_pending_data_del(pending, "__proxy");
|
||||||
|
Eldbus_Message_Iter *variant;
|
||||||
|
Eina_Bool v;
|
||||||
|
if (eldbus_message_error_get(msg, &error, &error_msg))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {error, error_msg};
|
||||||
|
cb(user_data, pending, "Active", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_arguments_get(msg, "v", &variant))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "Active", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_iter_arguments_get(variant, "b", &v))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "Active", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cb(user_data, pending, "Active", proxy, NULL, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Pending *
|
||||||
|
geo_clue2_client_active_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Bool_Get_Cb cb, const void *data)
|
||||||
|
{
|
||||||
|
Eldbus_Pending *p;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(proxy, NULL);
|
||||||
|
p = eldbus_proxy_property_get(proxy, "Active", cb_geo_clue2_client_active, cb);
|
||||||
|
if (data)
|
||||||
|
eldbus_pending_data_set(p, "__user_data", data);
|
||||||
|
eldbus_pending_data_set(p, "__proxy", proxy);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
geo_clue2_client_log_domain_set(int id)
|
||||||
|
{
|
||||||
|
_log_main = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
geo_clue2_client_proxy_unref(Eldbus_Proxy *proxy)
|
||||||
|
{
|
||||||
|
Eldbus_Object *obj = eldbus_proxy_object_get(proxy);
|
||||||
|
eldbus_proxy_unref(proxy);
|
||||||
|
eldbus_object_unref(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Proxy *
|
||||||
|
geo_clue2_client_proxy_get(Eldbus_Connection *conn, const char *bus, const char *path)
|
||||||
|
{
|
||||||
|
Eldbus_Object *obj;
|
||||||
|
Eldbus_Proxy *proxy;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(conn, NULL);
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(bus, NULL);
|
||||||
|
if (!path) path = "/";
|
||||||
|
obj = eldbus_object_get(conn, bus, path);
|
||||||
|
proxy = eldbus_proxy_get(obj, "org.freedesktop.GeoClue2.Client");
|
||||||
|
eldbus_proxy_signal_handler_add(proxy, "LocationUpdated", on_geo_clue2_client_location_updated, proxy);
|
||||||
|
if (!GEO_CLUE2_CLIENT_LOCATION_UPDATED_EVENT)
|
||||||
|
GEO_CLUE2_CLIENT_LOCATION_UPDATED_EVENT = ecore_event_type_new();
|
||||||
|
return proxy;
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
#ifndef ELDBUS_GEO_CLUE2_CLIENT_H
|
||||||
|
#define ELDBUS_GEO_CLUE2_CLIENT_H
|
||||||
|
|
||||||
|
#include <Eina.h>
|
||||||
|
#include <Ecore.h>
|
||||||
|
#include <Eldbus.h>
|
||||||
|
#include "eldbus_utils.h"
|
||||||
|
|
||||||
|
Eldbus_Proxy *geo_clue2_client_proxy_get(Eldbus_Connection *conn, const char *bus, const char *path);
|
||||||
|
void geo_clue2_client_proxy_unref(Eldbus_Proxy *proxy);
|
||||||
|
void geo_clue2_client_log_domain_set(int id);
|
||||||
|
typedef void (*Geo_Clue2_Client_Start_Cb)(Eldbus_Proxy *proxy, void *data, Eldbus_Pending *pending, Eldbus_Error_Info *error);
|
||||||
|
Eldbus_Pending *geo_clue2_client_start_call(Eldbus_Proxy *proxy, Geo_Clue2_Client_Start_Cb cb, const void *data);
|
||||||
|
typedef void (*Geo_Clue2_Client_Stop_Cb)(Eldbus_Proxy *proxy, void *data, Eldbus_Pending *pending, Eldbus_Error_Info *error);
|
||||||
|
Eldbus_Pending *geo_clue2_client_stop_call(Eldbus_Proxy *proxy, Geo_Clue2_Client_Stop_Cb cb, const void *data);
|
||||||
|
extern int GEO_CLUE2_CLIENT_LOCATION_UPDATED_EVENT;
|
||||||
|
typedef struct _Geo_Clue2_Client_LocationUpdated_Data
|
||||||
|
{
|
||||||
|
Eldbus_Proxy *proxy;
|
||||||
|
char *old;
|
||||||
|
char *new;
|
||||||
|
} Geo_Clue2_Client_LocationUpdated_Data;
|
||||||
|
Eldbus_Pending *geo_clue2_client_location_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_String_Get_Cb cb, const void *data);
|
||||||
|
Eldbus_Pending *geo_clue2_client_distance_threshold_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Uint32_Get_Cb cb, const void *data);
|
||||||
|
Eldbus_Pending *geo_clue2_client_distance_threshold_propset(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Set_Cb cb, const void *data, const void *value);
|
||||||
|
Eldbus_Pending *geo_clue2_client_desktop_id_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_String_Get_Cb cb, const void *data);
|
||||||
|
Eldbus_Pending *geo_clue2_client_desktop_id_propset(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Set_Cb cb, const void *data, const void *value);
|
||||||
|
Eldbus_Pending *geo_clue2_client_requested_accuracy_level_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Uint32_Get_Cb cb, const void *data);
|
||||||
|
Eldbus_Pending *geo_clue2_client_requested_accuracy_level_propset(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Set_Cb cb, const void *data, const void *value);
|
||||||
|
Eldbus_Pending *geo_clue2_client_active_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Bool_Get_Cb cb, const void *data);
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,242 @@
|
||||||
|
#include "eldbus_geo_clue2_location.h"
|
||||||
|
|
||||||
|
static int _log_main = -1;
|
||||||
|
#undef ERR
|
||||||
|
#define ERR(...) EINA_LOG_DOM_ERR(_log_main, __VA_ARGS__);
|
||||||
|
|
||||||
|
static void
|
||||||
|
cb_geo_clue2_location_latitude(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
|
||||||
|
{
|
||||||
|
void *user_data = eldbus_pending_data_del(pending, "__user_data");
|
||||||
|
const char *error, *error_msg;
|
||||||
|
Eldbus_Codegen_Property_Double_Get_Cb cb = data;
|
||||||
|
Eldbus_Proxy *proxy = eldbus_pending_data_del(pending, "__proxy");
|
||||||
|
Eldbus_Message_Iter *variant;
|
||||||
|
double v;
|
||||||
|
if (eldbus_message_error_get(msg, &error, &error_msg))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {error, error_msg};
|
||||||
|
cb(user_data, pending, "Latitude", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_arguments_get(msg, "v", &variant))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "Latitude", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_iter_arguments_get(variant, "d", &v))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "Latitude", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cb(user_data, pending, "Latitude", proxy, NULL, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Pending *
|
||||||
|
geo_clue2_location_latitude_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Double_Get_Cb cb, const void *data)
|
||||||
|
{
|
||||||
|
Eldbus_Pending *p;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(proxy, NULL);
|
||||||
|
p = eldbus_proxy_property_get(proxy, "Latitude", cb_geo_clue2_location_latitude, cb);
|
||||||
|
if (data)
|
||||||
|
eldbus_pending_data_set(p, "__user_data", data);
|
||||||
|
eldbus_pending_data_set(p, "__proxy", proxy);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cb_geo_clue2_location_longitude(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
|
||||||
|
{
|
||||||
|
void *user_data = eldbus_pending_data_del(pending, "__user_data");
|
||||||
|
const char *error, *error_msg;
|
||||||
|
Eldbus_Codegen_Property_Double_Get_Cb cb = data;
|
||||||
|
Eldbus_Proxy *proxy = eldbus_pending_data_del(pending, "__proxy");
|
||||||
|
Eldbus_Message_Iter *variant;
|
||||||
|
double v;
|
||||||
|
if (eldbus_message_error_get(msg, &error, &error_msg))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {error, error_msg};
|
||||||
|
cb(user_data, pending, "Longitude", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_arguments_get(msg, "v", &variant))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "Longitude", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_iter_arguments_get(variant, "d", &v))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "Longitude", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cb(user_data, pending, "Longitude", proxy, NULL, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Pending *
|
||||||
|
geo_clue2_location_longitude_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Double_Get_Cb cb, const void *data)
|
||||||
|
{
|
||||||
|
Eldbus_Pending *p;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(proxy, NULL);
|
||||||
|
p = eldbus_proxy_property_get(proxy, "Longitude", cb_geo_clue2_location_longitude, cb);
|
||||||
|
if (data)
|
||||||
|
eldbus_pending_data_set(p, "__user_data", data);
|
||||||
|
eldbus_pending_data_set(p, "__proxy", proxy);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cb_geo_clue2_location_accuracy(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
|
||||||
|
{
|
||||||
|
void *user_data = eldbus_pending_data_del(pending, "__user_data");
|
||||||
|
const char *error, *error_msg;
|
||||||
|
Eldbus_Codegen_Property_Double_Get_Cb cb = data;
|
||||||
|
Eldbus_Proxy *proxy = eldbus_pending_data_del(pending, "__proxy");
|
||||||
|
Eldbus_Message_Iter *variant;
|
||||||
|
double v;
|
||||||
|
if (eldbus_message_error_get(msg, &error, &error_msg))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {error, error_msg};
|
||||||
|
cb(user_data, pending, "Accuracy", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_arguments_get(msg, "v", &variant))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "Accuracy", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_iter_arguments_get(variant, "d", &v))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "Accuracy", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cb(user_data, pending, "Accuracy", proxy, NULL, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Pending *
|
||||||
|
geo_clue2_location_accuracy_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Double_Get_Cb cb, const void *data)
|
||||||
|
{
|
||||||
|
Eldbus_Pending *p;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(proxy, NULL);
|
||||||
|
p = eldbus_proxy_property_get(proxy, "Accuracy", cb_geo_clue2_location_accuracy, cb);
|
||||||
|
if (data)
|
||||||
|
eldbus_pending_data_set(p, "__user_data", data);
|
||||||
|
eldbus_pending_data_set(p, "__proxy", proxy);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cb_geo_clue2_location_altitude(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
|
||||||
|
{
|
||||||
|
void *user_data = eldbus_pending_data_del(pending, "__user_data");
|
||||||
|
const char *error, *error_msg;
|
||||||
|
Eldbus_Codegen_Property_Double_Get_Cb cb = data;
|
||||||
|
Eldbus_Proxy *proxy = eldbus_pending_data_del(pending, "__proxy");
|
||||||
|
Eldbus_Message_Iter *variant;
|
||||||
|
double v;
|
||||||
|
if (eldbus_message_error_get(msg, &error, &error_msg))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {error, error_msg};
|
||||||
|
cb(user_data, pending, "Altitude", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_arguments_get(msg, "v", &variant))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "Altitude", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_iter_arguments_get(variant, "d", &v))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "Altitude", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cb(user_data, pending, "Altitude", proxy, NULL, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Pending *
|
||||||
|
geo_clue2_location_altitude_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Double_Get_Cb cb, const void *data)
|
||||||
|
{
|
||||||
|
Eldbus_Pending *p;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(proxy, NULL);
|
||||||
|
p = eldbus_proxy_property_get(proxy, "Altitude", cb_geo_clue2_location_altitude, cb);
|
||||||
|
if (data)
|
||||||
|
eldbus_pending_data_set(p, "__user_data", data);
|
||||||
|
eldbus_pending_data_set(p, "__proxy", proxy);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cb_geo_clue2_location_description(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
|
||||||
|
{
|
||||||
|
void *user_data = eldbus_pending_data_del(pending, "__user_data");
|
||||||
|
const char *error, *error_msg;
|
||||||
|
Eldbus_Codegen_Property_String_Get_Cb cb = data;
|
||||||
|
Eldbus_Proxy *proxy = eldbus_pending_data_del(pending, "__proxy");
|
||||||
|
Eldbus_Message_Iter *variant;
|
||||||
|
const char *v;
|
||||||
|
if (eldbus_message_error_get(msg, &error, &error_msg))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {error, error_msg};
|
||||||
|
cb(user_data, pending, "Description", proxy, &error_info, NULL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_arguments_get(msg, "v", &variant))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "Description", proxy, &error_info, NULL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_iter_arguments_get(variant, "s", &v))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "Description", proxy, &error_info, NULL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cb(user_data, pending, "Description", proxy, NULL, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Pending *
|
||||||
|
geo_clue2_location_description_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_String_Get_Cb cb, const void *data)
|
||||||
|
{
|
||||||
|
Eldbus_Pending *p;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(proxy, NULL);
|
||||||
|
p = eldbus_proxy_property_get(proxy, "Description", cb_geo_clue2_location_description, cb);
|
||||||
|
if (data)
|
||||||
|
eldbus_pending_data_set(p, "__user_data", data);
|
||||||
|
eldbus_pending_data_set(p, "__proxy", proxy);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
geo_clue2_location_log_domain_set(int id)
|
||||||
|
{
|
||||||
|
_log_main = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
geo_clue2_location_proxy_unref(Eldbus_Proxy *proxy)
|
||||||
|
{
|
||||||
|
Eldbus_Object *obj = eldbus_proxy_object_get(proxy);
|
||||||
|
eldbus_proxy_unref(proxy);
|
||||||
|
eldbus_object_unref(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Proxy *
|
||||||
|
geo_clue2_location_proxy_get(Eldbus_Connection *conn, const char *bus, const char *path)
|
||||||
|
{
|
||||||
|
Eldbus_Object *obj;
|
||||||
|
Eldbus_Proxy *proxy;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(conn, NULL);
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(bus, NULL);
|
||||||
|
if (!path) path = "/";
|
||||||
|
obj = eldbus_object_get(conn, bus, path);
|
||||||
|
proxy = eldbus_proxy_get(obj, "org.freedesktop.GeoClue2.Location");
|
||||||
|
return proxy;
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
#ifndef ELDBUS_GEO_CLUE2_LOCATION_H
|
||||||
|
#define ELDBUS_GEO_CLUE2_LOCATION_H
|
||||||
|
|
||||||
|
#include <Eina.h>
|
||||||
|
#include <Ecore.h>
|
||||||
|
#include <Eldbus.h>
|
||||||
|
#include "eldbus_utils.h"
|
||||||
|
|
||||||
|
Eldbus_Proxy *geo_clue2_location_proxy_get(Eldbus_Connection *conn, const char *bus, const char *path);
|
||||||
|
void geo_clue2_location_proxy_unref(Eldbus_Proxy *proxy);
|
||||||
|
void geo_clue2_location_log_domain_set(int id);
|
||||||
|
Eldbus_Pending *geo_clue2_location_latitude_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Double_Get_Cb cb, const void *data);
|
||||||
|
Eldbus_Pending *geo_clue2_location_longitude_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Double_Get_Cb cb, const void *data);
|
||||||
|
Eldbus_Pending *geo_clue2_location_accuracy_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Double_Get_Cb cb, const void *data);
|
||||||
|
Eldbus_Pending *geo_clue2_location_altitude_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Double_Get_Cb cb, const void *data);
|
||||||
|
Eldbus_Pending *geo_clue2_location_description_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_String_Get_Cb cb, const void *data);
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,203 @@
|
||||||
|
#include "eldbus_geo_clue2_manager.h"
|
||||||
|
|
||||||
|
static int _log_main = -1;
|
||||||
|
#undef ERR
|
||||||
|
#define ERR(...) EINA_LOG_DOM_ERR(_log_main, __VA_ARGS__);
|
||||||
|
|
||||||
|
static void
|
||||||
|
cb_geo_clue2_manager_get_client(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
|
||||||
|
{
|
||||||
|
void *user_data = eldbus_pending_data_del(pending, "__user_data");
|
||||||
|
Geo_Clue2_Manager_Get_Client_Cb cb = data;
|
||||||
|
const char *error, *error_msg;
|
||||||
|
Eldbus_Proxy *proxy = eldbus_pending_data_del(pending, "__proxy");
|
||||||
|
const char *client = NULL;
|
||||||
|
if (eldbus_message_error_get(msg, &error, &error_msg))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {error, error_msg};
|
||||||
|
cb(proxy, user_data, pending, &error_info, client);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_arguments_get(msg, "o", &client))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
ERR("Error: Getting arguments from message.");
|
||||||
|
cb(proxy, user_data, pending, &error_info, client);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cb(proxy, user_data, pending, NULL, client);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Pending *
|
||||||
|
geo_clue2_manager_get_client_call(Eldbus_Proxy *proxy, Geo_Clue2_Manager_Get_Client_Cb cb, const void *data)
|
||||||
|
{
|
||||||
|
Eldbus_Message *msg;
|
||||||
|
Eldbus_Pending *p;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(proxy, NULL);
|
||||||
|
msg = eldbus_proxy_method_call_new(proxy, "GetClient");
|
||||||
|
if (!eldbus_message_arguments_append(msg, ""))
|
||||||
|
{
|
||||||
|
ERR("Error: Filling message.");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
p = eldbus_proxy_send(proxy, msg, cb_geo_clue2_manager_get_client, cb, -1);
|
||||||
|
if (data)
|
||||||
|
eldbus_pending_data_set(p, "__user_data", data);
|
||||||
|
eldbus_pending_data_set(p, "__proxy", proxy);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cb_geo_clue2_manager_add_agent(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
|
||||||
|
{
|
||||||
|
void *user_data = eldbus_pending_data_del(pending, "__user_data");
|
||||||
|
Geo_Clue2_Manager_Add_Agent_Cb cb = data;
|
||||||
|
const char *error, *error_msg;
|
||||||
|
Eldbus_Proxy *proxy = eldbus_pending_data_del(pending, "__proxy");
|
||||||
|
if (eldbus_message_error_get(msg, &error, &error_msg))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {error, error_msg};
|
||||||
|
cb(proxy, user_data, pending, &error_info);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_arguments_get(msg, ""))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
ERR("Error: Getting arguments from message.");
|
||||||
|
cb(proxy, user_data, pending, &error_info);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cb(proxy, user_data, pending, NULL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Pending *
|
||||||
|
geo_clue2_manager_add_agent_call(Eldbus_Proxy *proxy, Geo_Clue2_Manager_Add_Agent_Cb cb, const void *data, const char *id)
|
||||||
|
{
|
||||||
|
Eldbus_Message *msg;
|
||||||
|
Eldbus_Pending *p;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(proxy, NULL);
|
||||||
|
msg = eldbus_proxy_method_call_new(proxy, "AddAgent");
|
||||||
|
if (!eldbus_message_arguments_append(msg, "s", id))
|
||||||
|
{
|
||||||
|
ERR("Error: Filling message.");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
p = eldbus_proxy_send(proxy, msg, cb_geo_clue2_manager_add_agent, cb, -1);
|
||||||
|
if (data)
|
||||||
|
eldbus_pending_data_set(p, "__user_data", data);
|
||||||
|
eldbus_pending_data_set(p, "__proxy", proxy);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cb_geo_clue2_manager_in_use(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
|
||||||
|
{
|
||||||
|
void *user_data = eldbus_pending_data_del(pending, "__user_data");
|
||||||
|
const char *error, *error_msg;
|
||||||
|
Eldbus_Codegen_Property_Bool_Get_Cb cb = data;
|
||||||
|
Eldbus_Proxy *proxy = eldbus_pending_data_del(pending, "__proxy");
|
||||||
|
Eldbus_Message_Iter *variant;
|
||||||
|
Eina_Bool v;
|
||||||
|
if (eldbus_message_error_get(msg, &error, &error_msg))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {error, error_msg};
|
||||||
|
cb(user_data, pending, "InUse", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_arguments_get(msg, "v", &variant))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "InUse", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_iter_arguments_get(variant, "b", &v))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "InUse", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cb(user_data, pending, "InUse", proxy, NULL, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Pending *
|
||||||
|
geo_clue2_manager_in_use_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Bool_Get_Cb cb, const void *data)
|
||||||
|
{
|
||||||
|
Eldbus_Pending *p;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(proxy, NULL);
|
||||||
|
p = eldbus_proxy_property_get(proxy, "InUse", cb_geo_clue2_manager_in_use, cb);
|
||||||
|
if (data)
|
||||||
|
eldbus_pending_data_set(p, "__user_data", data);
|
||||||
|
eldbus_pending_data_set(p, "__proxy", proxy);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cb_geo_clue2_manager_available_accuracy_level(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)
|
||||||
|
{
|
||||||
|
void *user_data = eldbus_pending_data_del(pending, "__user_data");
|
||||||
|
const char *error, *error_msg;
|
||||||
|
Eldbus_Codegen_Property_Uint32_Get_Cb cb = data;
|
||||||
|
Eldbus_Proxy *proxy = eldbus_pending_data_del(pending, "__proxy");
|
||||||
|
Eldbus_Message_Iter *variant;
|
||||||
|
unsigned int v;
|
||||||
|
if (eldbus_message_error_get(msg, &error, &error_msg))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {error, error_msg};
|
||||||
|
cb(user_data, pending, "AvailableAccuracyLevel", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_arguments_get(msg, "v", &variant))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "AvailableAccuracyLevel", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!eldbus_message_iter_arguments_get(variant, "u", &v))
|
||||||
|
{
|
||||||
|
Eldbus_Error_Info error_info = {"", ""};
|
||||||
|
cb(user_data, pending, "AvailableAccuracyLevel", proxy, &error_info, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cb(user_data, pending, "AvailableAccuracyLevel", proxy, NULL, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Pending *
|
||||||
|
geo_clue2_manager_available_accuracy_level_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Uint32_Get_Cb cb, const void *data)
|
||||||
|
{
|
||||||
|
Eldbus_Pending *p;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(proxy, NULL);
|
||||||
|
p = eldbus_proxy_property_get(proxy, "AvailableAccuracyLevel", cb_geo_clue2_manager_available_accuracy_level, cb);
|
||||||
|
if (data)
|
||||||
|
eldbus_pending_data_set(p, "__user_data", data);
|
||||||
|
eldbus_pending_data_set(p, "__proxy", proxy);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
geo_clue2_manager_log_domain_set(int id)
|
||||||
|
{
|
||||||
|
_log_main = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
geo_clue2_manager_proxy_unref(Eldbus_Proxy *proxy)
|
||||||
|
{
|
||||||
|
Eldbus_Object *obj = eldbus_proxy_object_get(proxy);
|
||||||
|
eldbus_proxy_unref(proxy);
|
||||||
|
eldbus_object_unref(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eldbus_Proxy *
|
||||||
|
geo_clue2_manager_proxy_get(Eldbus_Connection *conn, const char *bus, const char *path)
|
||||||
|
{
|
||||||
|
Eldbus_Object *obj;
|
||||||
|
Eldbus_Proxy *proxy;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(conn, NULL);
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(bus, NULL);
|
||||||
|
if (!path) path = "/";
|
||||||
|
obj = eldbus_object_get(conn, bus, path);
|
||||||
|
proxy = eldbus_proxy_get(obj, "org.freedesktop.GeoClue2.Manager");
|
||||||
|
return proxy;
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
#ifndef ELDBUS_GEO_CLUE2_MANAGER_H
|
||||||
|
#define ELDBUS_GEO_CLUE2_MANAGER_H
|
||||||
|
|
||||||
|
#include <Eina.h>
|
||||||
|
#include <Ecore.h>
|
||||||
|
#include <Eldbus.h>
|
||||||
|
#include "eldbus_utils.h"
|
||||||
|
|
||||||
|
Eldbus_Proxy *geo_clue2_manager_proxy_get(Eldbus_Connection *conn, const char *bus, const char *path);
|
||||||
|
void geo_clue2_manager_proxy_unref(Eldbus_Proxy *proxy);
|
||||||
|
void geo_clue2_manager_log_domain_set(int id);
|
||||||
|
typedef void (*Geo_Clue2_Manager_Get_Client_Cb)(Eldbus_Proxy *proxy, void *data, Eldbus_Pending *pending, Eldbus_Error_Info *error, const char *client);
|
||||||
|
Eldbus_Pending *geo_clue2_manager_get_client_call(Eldbus_Proxy *proxy, Geo_Clue2_Manager_Get_Client_Cb cb, const void *data);
|
||||||
|
typedef void (*Geo_Clue2_Manager_Add_Agent_Cb)(Eldbus_Proxy *proxy, void *data, Eldbus_Pending *pending, Eldbus_Error_Info *error);
|
||||||
|
Eldbus_Pending *geo_clue2_manager_add_agent_call(Eldbus_Proxy *proxy, Geo_Clue2_Manager_Add_Agent_Cb cb, const void *data, const char *id);
|
||||||
|
Eldbus_Pending *geo_clue2_manager_in_use_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Bool_Get_Cb cb, const void *data);
|
||||||
|
Eldbus_Pending *geo_clue2_manager_available_accuracy_level_propget(Eldbus_Proxy *proxy, Eldbus_Codegen_Property_Uint32_Get_Cb cb, const void *data);
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,24 @@
|
||||||
|
#ifndef ELDBUS_UTILS_H
|
||||||
|
#define ELDBUS_UTILS_H 1
|
||||||
|
|
||||||
|
typedef struct _Eldbus_Error_Info
|
||||||
|
{
|
||||||
|
const char *error;
|
||||||
|
const char *message;
|
||||||
|
} Eldbus_Error_Info;
|
||||||
|
|
||||||
|
typedef void (*Eldbus_Codegen_Property_Set_Cb)(void *data, const char *propname, Eldbus_Proxy *proxy, Eldbus_Pending *p, Eldbus_Error_Info *error_info);
|
||||||
|
|
||||||
|
typedef void (*Eldbus_Codegen_Property_String_Get_Cb)(void *data, Eldbus_Pending *p, const char *propname, Eldbus_Proxy *proxy, Eldbus_Error_Info *error_info, const char *value);
|
||||||
|
typedef void (*Eldbus_Codegen_Property_Int32_Get_Cb)(void *data, Eldbus_Pending *p, const char *propname, Eldbus_Proxy *proxy, Eldbus_Error_Info *error_info, int value);
|
||||||
|
typedef void (*Eldbus_Codegen_Property_Byte_Get_Cb)(void *data, Eldbus_Pending *p, const char *propname, Eldbus_Proxy *proxy, Eldbus_Error_Info *error_info, unsigned char value);
|
||||||
|
typedef void (*Eldbus_Codegen_Property_Bool_Get_Cb)(void *data, Eldbus_Pending *p, const char *propname, Eldbus_Proxy *proxy, Eldbus_Error_Info *error_info, Eina_Bool value);
|
||||||
|
typedef void (*Eldbus_Codegen_Property_Int16_Get_Cb)(void *data, Eldbus_Pending *p, const char *propname, Eldbus_Proxy *proxy, Eldbus_Error_Info *error_info, short int value);
|
||||||
|
typedef void (*Eldbus_Codegen_Property_Uint16_Get_Cb)(void *data, Eldbus_Pending *p, const char *propname, Eldbus_Proxy *proxy, Eldbus_Error_Info *error_info, unsigned short int value);
|
||||||
|
typedef void (*Eldbus_Codegen_Property_Uint32_Get_Cb)(void *data, Eldbus_Pending *p, const char *propname, Eldbus_Proxy *proxy, Eldbus_Error_Info *error_info, unsigned int value);
|
||||||
|
typedef void (*Eldbus_Codegen_Property_Double_Get_Cb)(void *data, Eldbus_Pending *p, const char *propname, Eldbus_Proxy *proxy, Eldbus_Error_Info *error_info, double value);
|
||||||
|
typedef void (*Eldbus_Codegen_Property_Int64_Get_Cb)(void *data, Eldbus_Pending *p, const char *propname, Eldbus_Proxy *proxy, Eldbus_Error_Info *error_info, int64_t value);
|
||||||
|
typedef void (*Eldbus_Codegen_Property_Uint64_Get_Cb)(void *data, Eldbus_Pending *p, const char *propname, Eldbus_Proxy *proxy, Eldbus_Error_Info *error_info, uint64_t value);
|
||||||
|
typedef void (*Eldbus_Codegen_Property_Complex_Get_Cb)(void *data, Eldbus_Pending *p, const char *propname, Eldbus_Proxy *proxy, Eldbus_Error_Info *error_info, Eina_Value *value);
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue