6 GVariantDict prop_dict;
7 GVariant *is_connected_gvariant;
8 GVariant *is_trusted_gvariant;
9 GVariant *addr_gvariant;
11 g_variant_dict_init(&prop_dict, properties);
13 if (!(is_connected_gvariant = g_variant_dict_lookup_value(&prop_dict,
"Connected", G_VARIANT_TYPE(
"b")))) {
14 perror(
"No such key or Unexpected type");
18 if (!(is_trusted_gvariant = g_variant_dict_lookup_value(&prop_dict,
"Trusted", G_VARIANT_TYPE(
"b")))) {
19 perror(
"No such key or Unexpected type");
23 if (g_variant_get_boolean(is_connected_gvariant) && g_variant_get_boolean(is_trusted_gvariant)) {
24 if (!(addr_gvariant = g_variant_dict_lookup_value(&prop_dict,
"Address", G_VARIANT_TYPE(
"s")))) {
25 perror(
"No such key or Unexpected type");
29 g_print(
"pika: %s\n", g_variant_get_string(addr_gvariant, NULL));
31 if (!(addr = malloc(
sizeof(
char) *
BT_MAC_LEN + 1))) {
36 strncpy(addr, (
char *)g_variant_get_string(addr_gvariant, NULL),
BT_MAC_LEN);
48 char **paired_devices = NULL;
49 int num_of_paired_lc = 0;
51 if (!(paired_devices = malloc(
sizeof(
char *) *
BT_MAX_CONN))) {
57 const gchar *object_path;
58 GVariant *ifaces_and_properties;
60 result = g_variant_get_child_value(result, 0);
61 g_variant_iter_init(&i, result);
62 while(g_variant_iter_next(&i,
"{&o@a{sa{sv}}}", &object_path, &ifaces_and_properties)) {
63 const gchar *interface_name;
66 g_variant_iter_init(&ii, ifaces_and_properties);
67 while(g_variant_iter_next(&ii,
"{&s@a{sv}}", &interface_name, &properties)) {
68 gchar *interface_name_lower = g_ascii_strdown(interface_name, -1);
69 if(g_strstr_len(interface_name_lower, -1,
"device")) {
72 paired_devices[num_of_paired_lc] = addr;
76 g_free(interface_name_lower);
77 g_variant_unref(properties);
79 g_variant_unref(ifaces_and_properties);
82 *num_of_paired = num_of_paired_lc;
83 return paired_devices;
87 GDBusConnection *conn;
89 GVariant *result = NULL;
90 char **paired_devices = NULL;
92 if(!(conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, NULL))) {
93 g_print(
"Not able to get connection to system bus\n");
97 result = g_dbus_connection_call_sync(
105 G_DBUS_CALL_FLAGS_NONE,
113 g_variant_unref(result);
115 g_object_unref(conn);
117 return paired_devices;
char ** get_paired_devices(int *num_of_paired)
char ** process_dbus_bt_list(GVariant *result, int *num_of_paired)
char * check_is_paired(GVariant *properties)
#define DBUS_INTERFACE_NAME
#define BLUEZ_DBUS_OBJ_PATH
#define DBUS_METHOD_RETURN_TYPE