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
17 extern "C"
18 # endif
19 void * 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 
29 static const char manager_path[] = "/";
30 
31 extern const char *e_bluez_iface_manager;
32 extern const char *e_bluez_iface_adapter;
33 extern const char *e_bluez_iface_device;
34 extern const char *e_bluez_prop_address;
35 extern const char *e_bluez_prop_name;
36 extern const char *e_bluez_prop_alias;
37 extern const char *e_bluez_prop_class;
38 extern const char *e_bluez_prop_icon;
39 extern const char *e_bluez_prop_paired;
40 extern const char *e_bluez_prop_trusted;
41 extern const char *e_bluez_prop_connected;
42 extern const char *e_bluez_prop_uuids;
43 extern const char *e_bluez_prop_powered;
44 extern const char *e_bluez_prop_discoverable;
45 extern const char *e_bluez_prop_pairable;
46 extern const char *e_bluez_prop_discoverabletimeout;
47 extern const char *e_bluez_prop_pairabletimeout;
48 extern const char *e_bluez_prop_discovering;
49 extern const char *e_bluez_prop_devices;
50 
51 extern 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;
67  } value;
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 
84 static 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 
108 static 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 
124 const char * e_bluez_system_bus_name_get(void);
125 
127 
128 void e_bluez_elements_init(void);
129 void e_bluez_elements_shutdown(void);
130 
131 E_Bluez_Element * e_bluez_element_register(const char *path, const char *interface);
133 
134 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);
135 E_Bluez_Array * e_bluez_element_iter_get_array(DBusMessageIter *itr, const char *key);
136 void e_bluez_element_event_add(int event_type, E_Bluez_Element *element);
138 void e_bluez_element_array_free(E_Bluez_Array *array, E_Bluez_Array *new __UNUSED__);
139 
140 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);
141 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);
142 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);
143 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);
const char * e_bluez_prop_connected
Definition: e_bluez.c:31
void e_bluez_element_event_add(int event_type, E_Bluez_Element *element)
Definition: e_bluez_element.c:63
Eina_Bool boolean
Definition: e_bluez_private.h:60
Definition: E_Bluez.h:34
const char * e_bluez_prop_devices
Definition: e_bluez.c:39
const char * e_bluez_prop_discoverable
Definition: e_bluez.c:34
const char * str
Definition: e_bluez_private.h:61
const char * e_bluez_prop_uuids
Definition: e_bluez.c:32
unsigned int u32
Definition: e_bluez_private.h:64
Definition: e_dbus_private.h:18
const char * e_bluez_prop_discoverabletimeout
Definition: e_bluez.c:36
const char * e_bluez_prop_alias
Definition: e_bluez.c:26
void(* E_DBus_Method_Return_Cb)(void *data, DBusMessage *msg, DBusError *error)
Definition: E_DBus.h:124
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
unsigned char byte
Definition: e_bluez_private.h:65
const char * e_bluez_prop_pairabletimeout
Definition: e_bluez.c:37
const char * e_bluez_prop_trusted
Definition: e_bluez.c:30
void e_bluez_elements_init(void)
Definition: e_bluez_element.c:2375
const char * e_bluez_prop_discovering
Definition: e_bluez.c:38
const char * e_bluez_prop_address
Definition: e_bluez.c:24
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
Definition: E_Bluez.h:61
short i16
Definition: e_bluez_private.h:62
void e_bluez_elements_shutdown(void)
Definition: e_bluez_element.c:2384
E_DBus_Connection * e_bluez_conn
Definition: e_bluez.c:12
const char * e_bluez_prop_paired
Definition: e_bluez.c:29
int type
Definition: e_bluez_private.h:58
const char * e_bluez_iface_manager
Definition: e_bluez.c:21
const char * e_bluez_system_bus_name_get(void)
Definition: e_bluez.c:44
void * alloca(size_t)
void e_bluez_element_unregister(E_Bluez_Element *element)
Definition: e_bluez_element.c:2342
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
E_Bluez_Element * e_bluez_element_register(const char *path, const char *interface)
Definition: e_bluez_element.c:2279
const char * path
Definition: e_bluez_private.h:66
const char * e_bluez_iface_device
Definition: e_bluez.c:23
const char * e_bluez_prop_class
Definition: e_bluez.c:27
Definition: e_bluez_private.h:55
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
const char * e_bluez_iface_adapter
Definition: e_bluez.c:22
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
void e_bluez_element_array_free(E_Bluez_Array *array, E_Bluez_Array *new __UNUSED__)
Definition: e_bluez_element.c:359
#define ERR(...)
Definition: e_bluez_private.h:82
unsigned short u16
Definition: e_bluez_private.h:63
void e_bluez_manager_clear_elements(void)
Definition: e_bluez_element.c:2362
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
union _E_Bluez_Element_Dict_Entry::@3 value
const char * e_bluez_prop_pairable
Definition: e_bluez.c:35
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_icon
Definition: e_bluez.c:28
const char * e_bluez_prop_powered
Definition: e_bluez.c:33
const char * name
Definition: e_bluez_private.h:57