e_bluez_private.h
Go to the documentation of this file.
1#ifdef HAVE_CONFIG_H
2#include "config.h"
3#endif
4
5#ifdef HAVE_ALLOCA_H
6# include <alloca.h>
7#elif defined __GNUC__
8# define alloca __builtin_alloca
9#elif defined _AIX
10# define alloca __alloca
11#elif defined _MSC_VER
12# include <malloc.h>
13# define alloca _alloca
14#else
15# include <stddef.h>
16# ifdef __cplusplus
17extern "C"
18# endif
19void * alloca (size_t);
20#endif
21
22#include <stdio.h>
23
24#include <Eina.h>
25#include <eina_safety_checks.h>
26
27#include "E_Bluez.h"
28
29static const char manager_path[] = "/";
30
31extern const char *e_bluez_iface_manager;
32extern const char *e_bluez_iface_adapter;
33extern const char *e_bluez_iface_device;
34extern const char *e_bluez_prop_address;
35extern const char *e_bluez_prop_name;
36extern const char *e_bluez_prop_alias;
37extern const char *e_bluez_prop_class;
38extern const char *e_bluez_prop_icon;
39extern const char *e_bluez_prop_paired;
40extern const char *e_bluez_prop_trusted;
41extern const char *e_bluez_prop_connected;
42extern const char *e_bluez_prop_uuids;
43extern const char *e_bluez_prop_powered;
44extern const char *e_bluez_prop_discoverable;
45extern const char *e_bluez_prop_pairable;
46extern const char *e_bluez_prop_discoverabletimeout;
47extern const char *e_bluez_prop_pairabletimeout;
48extern const char *e_bluez_prop_discovering;
49extern const char *e_bluez_prop_devices;
50
51extern int _e_dbus_bluez_log_dom;
52
54
56{
57 const char *name;
58 int type;
59 union {
60 Eina_Bool boolean;
61 const char *str;
62 short i16;
63 unsigned short u16;
64 unsigned int u32;
65 unsigned char byte;
66 const char *path;
68};
69
70#ifndef EINA_LOG_DEFAULT_COLOR
71#define EINA_LOG_DEFAULT_COLOR EINA_COLOR_CYAN
72#endif
73
74#undef DBG
75#undef INF
76#undef WRN
77#undef ERR
78
79#define DBG(...) EINA_LOG_DOM_DBG(_e_dbus_bluez_log_dom, __VA_ARGS__)
80#define INF(...) EINA_LOG_DOM_INFO(_e_dbus_bluez_log_dom, __VA_ARGS__)
81#define WRN(...) EINA_LOG_DOM_WARN(_e_dbus_bluez_log_dom, __VA_ARGS__)
82#define ERR(...) EINA_LOG_DOM_ERR(_e_dbus_bluez_log_dom, __VA_ARGS__)
83
84static inline Eina_Bool
85_dbus_callback_check_and_init(DBusMessage *msg, DBusMessageIter *itr, DBusError *err)
86{
87 if (!msg)
88 {
89 if (err)
90 ERR("an error was reported by server: "
91 "name=\"%s\", message=\"%s\"",
92 err->name, err->message);
93 else
94 ERR("callback without message arguments!");
95
96 return EINA_FALSE;
97 }
98
99 if (!dbus_message_iter_init(msg, itr))
100 {
101 ERR("could not init iterator.");
102 return EINA_FALSE;
103 }
104
105 return EINA_TRUE;
106}
107
108static inline Eina_Bool
109__dbus_iter_type_check(int type, int expected, const char *expected_name)
110{
111 if (type == expected)
112 return EINA_TRUE;
113
114 ERR("expected type %s (%c) but got %c instead!",
115 expected_name, expected, type);
116
117 return EINA_FALSE;
118}
119
120#define _dbus_iter_type_check(t, e) __dbus_iter_type_check(t, e, # e)
121
123
124const char * e_bluez_system_bus_name_get(void);
125
127
128void e_bluez_elements_init(void);
130
131E_Bluez_Element * e_bluez_element_register(const char *path, const char *interface);
133
134Eina_Bool e_bluez_element_message_send(E_Bluez_Element *element, const char *method_name, E_DBus_Method_Return_Cb cb, DBusMessage *msg, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data);
135E_Bluez_Array * e_bluez_element_iter_get_array(DBusMessageIter *itr, const char *key);
136void e_bluez_element_event_add(int event_type, E_Bluez_Element *element);
138void e_bluez_element_array_free(E_Bluez_Array *array, E_Bluez_Array *new __UNUSED__);
139
140Eina_Bool e_bluez_element_call_full(E_Bluez_Element *element, const char *method_name, E_DBus_Method_Return_Cb cb, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data);
141Eina_Bool e_bluez_element_call_with_path(E_Bluez_Element *element, const char *method_name, const char *string, E_DBus_Method_Return_Cb cb, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data);
142Eina_Bool e_bluez_element_call_with_string(E_Bluez_Element *element, const char *method_name, const char *string, E_DBus_Method_Return_Cb cb, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data);
143Eina_Bool e_bluez_element_call_with_path_and_string(E_Bluez_Element *element, const char *method_name, const char *path, const char *string, E_DBus_Method_Return_Cb cb, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data);
const char * e_bluez_prop_powered
Definition: e_bluez.c:33
E_Bluez_Element * e_bluez_element_register(const char *path, const char *interface)
Definition: e_bluez_element.c:2279
const char * e_bluez_prop_pairable
Definition: e_bluez.c:35
const char * e_bluez_prop_discovering
Definition: e_bluez.c:38
#define ERR(...)
Definition: e_bluez_private.h:82
void e_bluez_elements_init(void)
Definition: e_bluez_element.c:2375
Eina_Bool e_bluez_element_call_with_path(E_Bluez_Element *element, const char *method_name, const char *string, E_DBus_Method_Return_Cb cb, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data)
Definition: e_bluez_element.c:1631
E_Bluez_Array * e_bluez_element_iter_get_array(DBusMessageIter *itr, const char *key)
Definition: e_bluez_element.c:1250
const char * e_bluez_prop_address
Definition: e_bluez.c:24
Eina_Bool e_bluez_element_call_with_string(E_Bluez_Element *element, const char *method_name, const char *string, E_DBus_Method_Return_Cb cb, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data)
Definition: e_bluez_element.c:1656
Eina_Bool e_bluez_element_call_full(E_Bluez_Element *element, const char *method_name, E_DBus_Method_Return_Cb cb, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data)
Definition: e_bluez_element.c:1207
int _e_dbus_bluez_log_dom
Definition: e_bluez.c:41
const char * e_bluez_prop_discoverabletimeout
Definition: e_bluez.c:36
void * alloca(size_t)
void e_bluez_element_array_free(E_Bluez_Array *array, E_Bluez_Array *new __UNUSED__)
Definition: e_bluez_element.c:359
const char * e_bluez_prop_discoverable
Definition: e_bluez.c:34
E_DBus_Connection * e_bluez_conn
Definition: e_bluez.c:12
const char * e_bluez_iface_device
Definition: e_bluez.c:23
const char * e_bluez_prop_pairabletimeout
Definition: e_bluez.c:37
const char * e_bluez_prop_alias
Definition: e_bluez.c:26
E_Bluez_Element_Dict_Entry * e_bluez_element_array_dict_find_stringshared(const E_Bluez_Array *array, const char *key)
Definition: e_bluez_element.c:345
const char * e_bluez_prop_connected
Definition: e_bluez.c:31
const char * e_bluez_iface_adapter
Definition: e_bluez.c:22
const char * e_bluez_prop_trusted
Definition: e_bluez.c:30
void e_bluez_manager_clear_elements(void)
Definition: e_bluez_element.c:2362
Eina_Bool e_bluez_element_message_send(E_Bluez_Element *element, const char *method_name, E_DBus_Method_Return_Cb cb, DBusMessage *msg, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data)
Definition: e_bluez_element.c:1152
void e_bluez_element_event_add(int event_type, E_Bluez_Element *element)
Definition: e_bluez_element.c:63
void e_bluez_elements_shutdown(void)
Definition: e_bluez_element.c:2384
const char * e_bluez_iface_manager
Definition: e_bluez.c:21
const char * e_bluez_prop_uuids
Definition: e_bluez.c:32
const char * e_bluez_prop_devices
Definition: e_bluez.c:39
const char * e_bluez_system_bus_name_get(void)
Definition: e_bluez.c:44
const char * e_bluez_prop_paired
Definition: e_bluez.c:29
void e_bluez_element_unregister(E_Bluez_Element *element)
Definition: e_bluez_element.c:2342
const char * e_bluez_prop_class
Definition: e_bluez.c:27
const char * e_bluez_prop_icon
Definition: e_bluez.c:28
const char * e_bluez_prop_name
Definition: e_bluez.c:25
Eina_Bool e_bluez_element_call_with_path_and_string(E_Bluez_Element *element, const char *method_name, const char *path, const char *string, E_DBus_Method_Return_Cb cb, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data)
Definition: e_bluez_element.c:1681
void(* E_DBus_Method_Return_Cb)(void *data, DBusMessage *msg, DBusError *error)
Definition: E_DBus.h:124
Definition: e_dbus_private.h:19
Definition: E_Bluez.h:62
Definition: e_bluez_private.h:56
const char * name
Definition: e_bluez_private.h:57
unsigned int u32
Definition: e_bluez_private.h:64
const char * path
Definition: e_bluez_private.h:66
int type
Definition: e_bluez_private.h:58
const char * str
Definition: e_bluez_private.h:61
short i16
Definition: e_bluez_private.h:62
union _E_Bluez_Element_Dict_Entry::@3 value
unsigned char byte
Definition: e_bluez_private.h:65
Eina_Bool boolean
Definition: e_bluez_private.h:60
unsigned short u16
Definition: e_bluez_private.h:63
Definition: E_Bluez.h:35