annotate src/bluetooth/agent.c @ 2838:22a2ffe86750

added passkey agent and basic pairing functionality
author Paula Stanciu <paula.stanciu@gmail.com>
date Wed, 16 Jul 2008 20:48:09 +0300
parents
children 22a5075fc7f7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2838
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
1 #include <glib/gprintf.h>
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
2 #include "bluetooth.h"
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
3 #include "gui.h"
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
4
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
5 #define PASSKEY_AGENT_PATH "/org/bluez/audacious_passkey"
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
6 #define AUTH_AGENT_PATH "/org/bluez/audacious_auth"
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
7
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
8 static GtkWidget *agent_window = NULL;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
9 static GtkWidget *window_box = NULL;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
10 static GtkWidget *top_box = NULL;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
11 static GtkWidget *middle_box = NULL;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
12 static GtkWidget *bottom_box = NULL;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
13 static GtkWidget *pair_label = NULL;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
14 static GtkWidget *device_label = NULL;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
15 static GtkWidget *passkey_entry = NULL;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
16 static GtkWidget *ok_button = NULL;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
17 static GtkWidget *cancel_button = NULL;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
18 static char* passkey;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
19 DBusGProxy *pair_obj = NULL;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
20 static DBusGConnection *connection;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
21 void ok_button_call()
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
22 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
23 passkey = gtk_entry_get_text(GTK_ENTRY(passkey_entry));
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
24 printf("Key entered : %s\n",passkey);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
25 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
26
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
27 void cancel_button_call()
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
28 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
29 gtk_widget_destroy (agent_window);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
30 agent_window = NULL;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
31 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
32
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
33 void run_agent()
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
34 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
35 if (!agent_window)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
36 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
37 agent_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
38 g_signal_connect (agent_window, "destroy",G_CALLBACK (gtk_widget_destroyed), &agent_window);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
39 window_box = gtk_vbox_new(FALSE,2);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
40 top_box = gtk_vbox_new(FALSE,2);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
41 middle_box = gtk_hbox_new(FALSE,2);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
42 bottom_box = gtk_hbox_new(FALSE,2);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
43
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
44 gtk_container_add(GTK_CONTAINER(agent_window),window_box);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
45 gtk_container_add(GTK_CONTAINER(window_box),top_box);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
46 gtk_container_set_border_width (GTK_CONTAINER(middle_box), 20);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
47 gtk_container_add(GTK_CONTAINER(window_box),middle_box);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
48 gtk_container_add(GTK_CONTAINER(window_box),bottom_box);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
49
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
50 pair_label = gtk_label_new_with_mnemonic("Enter passkey for pairing");
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
51 device_label = gtk_label_new_with_mnemonic(((DeviceData*)(selected_dev->data))->name);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
52
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
53 gtk_container_add(GTK_CONTAINER(top_box),pair_label);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
54 gtk_container_add(GTK_CONTAINER(top_box),device_label);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
55
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
56 passkey_entry = gtk_entry_new();
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
57 gtk_container_add(GTK_CONTAINER(middle_box),passkey_entry);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
58
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
59 ok_button = gtk_button_new_with_mnemonic("OK");
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
60 cancel_button = gtk_button_new_with_mnemonic("Cancel");
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
61 gtk_container_add(GTK_CONTAINER(bottom_box),ok_button);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
62 g_signal_connect(ok_button,"clicked",G_CALLBACK(ok_button_call),NULL);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
63
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
64 gtk_container_add(GTK_CONTAINER(bottom_box),cancel_button);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
65 g_signal_connect(cancel_button,"clicked",G_CALLBACK (cancel_button_call),NULL);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
66
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
67
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
68 gtk_window_set_title(GTK_WINDOW(agent_window),"Pairing passkey request");
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
69 if (!GTK_WIDGET_VISIBLE (agent_window))
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
70 gtk_widget_show_all (agent_window);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
71 else
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
72 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
73 gtk_widget_destroy (agent_window);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
74 agent_window = NULL;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
75 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
76
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
77 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
78
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
79
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
80 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
81 static DBusGConnection *connection;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
82
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
83 static int volatile registered_passkey = 0;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
84 static int volatile registered_auth = 0;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
85
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
86 static gboolean auto_authorize = FALSE;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
87
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
88 typedef enum {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
89 AGENT_ERROR_REJECT
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
90 } AgentError;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
91
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
92 #define AGENT_ERROR (agent_error_quark())
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
93
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
94 #define AGENT_ERROR_TYPE (agent_error_get_type())
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
95
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
96 static GQuark agent_error_quark(void)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
97 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
98 static GQuark quark = 0;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
99 if (!quark)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
100 quark = g_quark_from_static_string("agent");
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
101
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
102 return quark;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
103 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
104
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
105 #define ENUM_ENTRY(NAME, DESC) { NAME, "" #NAME "", DESC }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
106
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
107 static GType agent_error_get_type(void)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
108 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
109 static GType etype = 0;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
110 if (etype == 0) {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
111 static const GEnumValue values[] = {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
112 ENUM_ENTRY(AGENT_ERROR_REJECT, "Rejected"),
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
113 { 0, 0, 0 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
114 };
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
115
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
116 etype = g_enum_register_static("agent", values);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
117 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
118
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
119 return etype;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
120 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
121
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
122 static GList *input_list = NULL;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
123
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
124 struct input_data {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
125 char *path;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
126 char *address;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
127 char *service;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
128 char *uuid;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
129 DBusGMethodInvocation *context;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
130 };
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
131
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
132 static gint input_compare(gconstpointer a, gconstpointer b)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
133 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
134 struct input_data *a_data = (struct input_data *) a;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
135 struct input_data *b_data = (struct input_data *) b;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
136
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
137 return g_ascii_strcasecmp(a_data->address, b_data->address);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
138 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
139
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
140 static void input_free(struct input_data *input)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
141 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
142
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
143 input_list = g_list_remove(input_list, input);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
144
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
145 g_free(input->uuid);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
146 g_free(input->service);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
147 g_free(input->address);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
148 g_free(input->path);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
149 g_free(input);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
150
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
151 // if (g_list_length(input_list) == 0)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
152 // disable_blinking();
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
153 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
154
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
155 static void passkey_callback(gint response, gpointer user_data)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
156 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
157 struct input_data *input = user_data;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
158
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
159 if (response == GTK_RESPONSE_ACCEPT) {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
160 const char *passkey;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
161 /*!!!!!!!!! hardcoded passkey !!!!!!!!!!!!! to modify*/
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
162 passkey ="0000";
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
163 dbus_g_method_return(input->context, passkey);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
164 } else {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
165 GError *error;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
166 error = g_error_new(AGENT_ERROR, AGENT_ERROR_REJECT,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
167 "Pairing request rejected");
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
168 dbus_g_method_return_error(input->context, error);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
169 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
170
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
171 input_free(input);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
172 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
173
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
174 static void confirm_callback(gint response, gpointer user_data)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
175 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
176 struct input_data *input = user_data;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
177
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
178 if (response != GTK_RESPONSE_YES) {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
179 GError *error;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
180 error = g_error_new(AGENT_ERROR, AGENT_ERROR_REJECT,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
181 "Confirmation request rejected");
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
182 dbus_g_method_return_error(input->context, error);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
183 } else
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
184 dbus_g_method_return(input->context);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
185
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
186 input_free(input);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
187 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
188
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
189 static void set_trusted(struct input_data *input)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
190 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
191 DBusGProxy *object;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
192 gboolean active;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
193
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
194 //aways set trusted -- we dont have yet an active button -
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
195 //maybe I'll add one
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
196 object = dbus_g_proxy_new_for_name(connection, "org.bluez",
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
197 input->path, "org.bluez.Adapter");
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
198
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
199 dbus_g_proxy_call(object, "SetTrusted", NULL,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
200 G_TYPE_STRING, input->address, G_TYPE_INVALID,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
201 G_TYPE_INVALID);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
202 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
203
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
204 static void auth_callback(gint response, gpointer user_data)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
205 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
206
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
207 /* I must call this function with the alway allow option and
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
208 * don't boder to aks the user - to many questions
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
209 */
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
210 struct input_data *input = user_data;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
211
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
212 if (response == GTK_RESPONSE_YES) {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
213 set_trusted(input);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
214 dbus_g_method_return(input->context);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
215 } else {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
216 GError *error;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
217 error = g_error_new(AGENT_ERROR, AGENT_ERROR_REJECT,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
218 "Authorization request rejected");
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
219 dbus_g_method_return_error(input->context, error);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
220 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
221
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
222 input_free(input);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
223 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
224
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
225
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
226 static void passkey_dialog(const char *path, const char *address,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
227 const gchar *device, DBusGMethodInvocation *context)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
228 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
229 struct input_data *input;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
230
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
231 input = g_try_malloc0(sizeof(*input));
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
232 if (!input)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
233 return;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
234
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
235 input->path = g_strdup(path);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
236 input->address = g_strdup(address);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
237
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
238 input->context = context;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
239
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
240
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
241
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
242 /*
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
243 g_signal_connect(G_OBJECT(entry), "changed",
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
244 G_CALLBACK(changed_callback), input);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
245
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
246
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
247 g_signal_connect(G_OBJECT(button), "toggled",
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
248 G_CALLBACK(toggled_callback), input);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
249
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
250 gtk_container_add(GTK_CONTAINER(vbox), button);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
251
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
252 input_list = g_list_append(input_list, input);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
253
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
254 g_signal_connect(G_OBJECT(dialog), "response",
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
255 G_CALLBACK(passkey_callback), input);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
256
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
257 enable_blinking();
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
258 */
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
259 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
260
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
261 static void confirm_dialog(const char *path, const char *address,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
262 const char *value, const gchar *device,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
263 DBusGMethodInvocation *context)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
264 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
265 struct input_data *input;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
266
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
267 input = g_try_malloc0(sizeof(*input));
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
268 if (!input)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
269 return;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
270
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
271 input->path = g_strdup(path);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
272 input->address = g_strdup(address);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
273
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
274 input->context = context;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
275
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
276
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
277 // g_signal_connect(G_OBJECT(dialog), "response",
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
278 // G_CALLBACK(confirm_callback), input);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
279
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
280 //enable_blinking();
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
281 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
282
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
283 static void auth_dialog(const char *path, const char *address,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
284 const char *service, const char *uuid, const gchar *device,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
285 const gchar *profile, DBusGMethodInvocation *context)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
286 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
287 GtkWidget *dialog;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
288 GtkWidget *button;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
289 GtkWidget *image;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
290 GtkWidget *label;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
291 GtkWidget *table;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
292 GtkWidget *vbox;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
293 gchar *markup, *text;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
294 struct input_data *input;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
295
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
296 input = g_try_malloc0(sizeof(*input));
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
297 if (!input)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
298 return;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
299
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
300 input->path = g_strdup(path);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
301 input->address = g_strdup(address);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
302 input->service = g_strdup(service);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
303 input->uuid = g_strdup(uuid);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
304
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
305 input->context = context;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
306
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
307
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
308 /* translators: Whether to grant access to a particular service
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
309 * to the device mentioned */
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
310
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
311 // g_signal_connect(G_OBJECT(dialog), "response",
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
312 // G_CALLBACK(auth_callback), input);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
313
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
314 //enable_blinking();
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
315 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
316
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
317 typedef struct {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
318 GObject parent;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
319 } PasskeyAgent;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
320
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
321 typedef struct {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
322 GObjectClass parent;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
323 } PasskeyAgentClass;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
324
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
325 static GObjectClass *passkey_agent_parent;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
326
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
327 G_DEFINE_TYPE(PasskeyAgent, passkey_agent, G_TYPE_OBJECT)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
328
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
329 #define PASSKEY_AGENT_OBJECT_TYPE (passkey_agent_get_type())
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
330
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
331 #define PASSKEY_AGENT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
332 PASSKEY_AGENT_OBJECT_TYPE, PasskeyAgent))
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
333
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
334 static void passkey_agent_finalize(GObject *obj)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
335 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
336 passkey_agent_parent->finalize(obj);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
337 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
338
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
339 static void passkey_agent_init(PasskeyAgent *obj)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
340 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
341 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
342
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
343 static void passkey_agent_class_init(PasskeyAgentClass *klass)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
344 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
345 GObjectClass *gobject_class;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
346
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
347 passkey_agent_parent = g_type_class_peek_parent(klass);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
348
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
349 gobject_class = G_OBJECT_CLASS(klass);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
350 gobject_class->finalize = passkey_agent_finalize;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
351 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
352
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
353 static PasskeyAgent *passkey_agent_new(const char *path)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
354 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
355 PasskeyAgent *agent;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
356
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
357 agent = g_object_new(PASSKEY_AGENT_OBJECT_TYPE, NULL);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
358
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
359 dbus_g_connection_register_g_object(connection, path, G_OBJECT(agent));
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
360
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
361 return agent;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
362 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
363
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
364
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
365
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
366 static gboolean passkey_agent_request(PasskeyAgent *agent,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
367 const char *path, const char *address,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
368 DBusGMethodInvocation *context)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
369 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
370 DBusGProxy *object;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
371 const char *adapter = NULL, *name = NULL;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
372 gchar *device, *line;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
373
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
374 object = dbus_g_proxy_new_for_name(connection, "org.bluez",
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
375 path, "org.bluez.Adapter");
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
376
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
377 dbus_g_proxy_call(object, "GetName", NULL, G_TYPE_INVALID,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
378 G_TYPE_STRING, &adapter, G_TYPE_INVALID);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
379
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
380 dbus_g_proxy_call(object, "GetRemoteName", NULL,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
381 G_TYPE_STRING, address, G_TYPE_INVALID,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
382 G_TYPE_STRING, &name, G_TYPE_INVALID);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
383
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
384 if (name) {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
385 if (g_strrstr(name, address))
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
386 device = g_strdup(name);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
387 else
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
388 device = g_strdup_printf("%s (%s)", name, address);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
389 } else
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
390 device = g_strdup(address);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
391
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
392 passkey_dialog(path, address, device, context);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
393
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
394 /* translators: this is a popup telling you a particular device
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
395 * has asked for pairing */
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
396 line = g_strdup_printf(_("Pairing request for '%s'"), device);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
397 g_free(device);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
398
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
399 /*show_notification(adapter ? adapter : _("Bluetooth device"),
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
400 line, _("Enter passkey"), 0,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
401 G_CALLBACK(notification_closed));
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
402 */
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
403 g_free(line);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
404
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
405 return TRUE;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
406 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
407
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
408 static gboolean passkey_agent_confirm(PasskeyAgent *agent,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
409 const char *path, const char *address,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
410 const char *value, DBusGMethodInvocation *context)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
411 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
412 DBusGProxy *object;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
413 const char *adapter = NULL, *name = NULL;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
414 gchar *device, *line;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
415
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
416 object = dbus_g_proxy_new_for_name(connection, "org.bluez",
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
417 path, "org.bluez.Adapter");
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
418
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
419 dbus_g_proxy_call(object, "GetName", NULL, G_TYPE_INVALID,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
420 G_TYPE_STRING, &adapter, G_TYPE_INVALID);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
421
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
422 dbus_g_proxy_call(object, "GetRemoteName", NULL,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
423 G_TYPE_STRING, address, G_TYPE_INVALID,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
424 G_TYPE_STRING, &name, G_TYPE_INVALID);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
425
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
426 if (name) {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
427 if (g_strrstr(name, address))
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
428 device = g_strdup(name);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
429 else
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
430 device = g_strdup_printf("%s (%s)", name, address);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
431 } else
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
432 device = g_strdup(address);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
433
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
434 confirm_dialog(path, address, value, device, context);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
435
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
436 line = g_strdup_printf(_("Pairing request for '%s'"), device);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
437 g_free(device);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
438
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
439 /*show_notification(adapter ? adapter : _("Bluetooth device"),
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
440 line, _("Confirm pairing"), 0,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
441 G_CALLBACK(notification_closed));
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
442 */
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
443 g_free (line);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
444
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
445 return TRUE;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
446 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
447
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
448 static gboolean passkey_agent_cancel(PasskeyAgent *agent,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
449 const char *path, const char *address, GError **error)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
450 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
451 GList *list;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
452 GError *result;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
453 struct input_data *input;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
454
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
455 input = g_try_malloc0(sizeof(*input));
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
456 if (!input)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
457 return FALSE;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
458
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
459 input->path = g_strdup(path);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
460 input->address = g_strdup(address);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
461
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
462 list = g_list_find_custom(input_list, input, input_compare);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
463
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
464 g_free(input->address);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
465 g_free(input->path);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
466 g_free(input);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
467
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
468 if (!list || !list->data)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
469 return FALSE;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
470
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
471 input = list->data;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
472
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
473 //close_notification();
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
474
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
475 result = g_error_new(AGENT_ERROR, AGENT_ERROR_REJECT,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
476 "Agent callback canceled");
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
477
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
478 dbus_g_method_return_error(input->context, result);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
479
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
480 input_free(input);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
481
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
482 return TRUE;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
483 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
484
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
485 static gboolean passkey_agent_release(PasskeyAgent *agent, GError **error)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
486 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
487 registered_passkey = 0;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
488
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
489 return TRUE;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
490 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
491
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
492 #include "passkey-agent-glue.h"
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
493
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
494 typedef struct {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
495 GObject parent;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
496 } AuthAgent;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
497
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
498 typedef struct {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
499 GObjectClass parent;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
500 } AuthAgentClass;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
501
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
502 static GObjectClass *auth_agent_parent;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
503
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
504 G_DEFINE_TYPE(AuthAgent, auth_agent, G_TYPE_OBJECT)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
505
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
506 #define AUTH_AGENT_OBJECT_TYPE (auth_agent_get_type())
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
507
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
508 #define AUTH_AGENT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
509 AUTH_AGENT_OBJECT_TYPE, AuthAgent))
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
510
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
511 static void auth_agent_finalize(GObject *obj)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
512 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
513 auth_agent_parent->finalize(obj);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
514 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
515
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
516 static void auth_agent_init(AuthAgent *obj)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
517 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
518 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
519
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
520 static void auth_agent_class_init(AuthAgentClass *klass)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
521 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
522 GObjectClass *gobject_class;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
523
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
524 auth_agent_parent = g_type_class_peek_parent(klass);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
525
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
526 gobject_class = G_OBJECT_CLASS(klass);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
527 gobject_class->finalize = auth_agent_finalize;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
528 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
529
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
530 static AuthAgent *auth_agent_new(const char *path)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
531 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
532 AuthAgent *agent;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
533
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
534 agent = g_object_new(AUTH_AGENT_OBJECT_TYPE, NULL);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
535
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
536 dbus_g_connection_register_g_object(connection, path, G_OBJECT(agent));
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
537
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
538 return agent;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
539 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
540
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
541 static gboolean auth_agent_authorize(PasskeyAgent *agent,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
542 const char *path, const char *address, const char *service,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
543 const char *uuid, DBusGMethodInvocation *context)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
544 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
545 DBusGProxy *object;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
546 const char *adapter = NULL, *name = NULL;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
547 gchar *device, *profile, *line;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
548
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
549 if (auto_authorize == TRUE) {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
550 dbus_g_method_return(context);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
551 return TRUE;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
552 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
553
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
554 object = dbus_g_proxy_new_for_name(connection, "org.bluez",
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
555 path, "org.bluez.Adapter");
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
556
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
557 dbus_g_proxy_call(object, "GetName", NULL, G_TYPE_INVALID,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
558 G_TYPE_STRING, &adapter, G_TYPE_INVALID);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
559
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
560 dbus_g_proxy_call(object, "GetRemoteName", NULL,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
561 G_TYPE_STRING, address, G_TYPE_INVALID,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
562 G_TYPE_STRING, &name, G_TYPE_INVALID);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
563
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
564 object = dbus_g_proxy_new_for_name(connection, "org.bluez",
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
565 service, "org.bluez.Service");
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
566
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
567 dbus_g_proxy_call(object, "GetName", NULL, G_TYPE_INVALID,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
568 G_TYPE_STRING, &profile, G_TYPE_INVALID);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
569
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
570 if (name) {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
571 if (g_strrstr(name, address))
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
572 device = g_strdup(name);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
573 else
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
574 device = g_strdup_printf("%s (%s)", name, address);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
575 } else
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
576 device = g_strdup(address);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
577
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
578 auth_dialog(path, address, service, uuid, device, profile, context);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
579
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
580 line = g_strdup_printf(_("Authorization request for %s"), device);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
581 g_free(device);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
582
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
583 /*show_notification(adapter ? adapter : _("Bluetooth device"),
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
584 line, _("Check authorization"), 0,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
585 G_CALLBACK(notification_closed));
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
586 */
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
587 g_free(line);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
588
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
589 return TRUE;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
590 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
591
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
592 static gboolean auth_agent_cancel(PasskeyAgent *agent,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
593 const char *path, const char *address, const char *service,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
594 const char *uuid, DBusGMethodInvocation *context)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
595 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
596 GList *list;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
597 GError *result;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
598 struct input_data *input;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
599
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
600 input = g_try_malloc0(sizeof(*input));
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
601 if (!input)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
602 return FALSE;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
603
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
604 input->path = g_strdup(path);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
605 input->address = g_strdup(address);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
606 input->service = g_strdup(service);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
607 input->uuid = g_strdup(uuid);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
608
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
609 list = g_list_find_custom(input_list, input, input_compare);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
610
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
611 g_free(input->uuid);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
612 g_free(input->service);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
613 g_free(input->address);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
614 g_free(input->path);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
615 g_free(input);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
616
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
617 if (!list || !list->data)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
618 return FALSE;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
619
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
620 input = list->data;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
621
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
622 //close_notification();
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
623
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
624 result = g_error_new(AGENT_ERROR, AGENT_ERROR_REJECT,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
625 "Agent callback canceled");
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
626
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
627 dbus_g_method_return_error(input->context, result);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
628
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
629 input_free(input);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
630
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
631 return TRUE;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
632 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
633
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
634 static gboolean auth_agent_release(PasskeyAgent *agent, GError **error)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
635 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
636 registered_auth = 0;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
637
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
638 return TRUE;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
639 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
640
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
641 #include "auth-agent-glue.h"
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
642
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
643 int register_agents(void)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
644 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
645 DBusGProxy *object;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
646 GError *error = NULL;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
647
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
648 if (registered_passkey && registered_auth)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
649 return 0;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
650
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
651 object = dbus_g_proxy_new_for_name(connection, "org.bluez",
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
652 "/org/bluez", "org.bluez.Security");
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
653
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
654 if (!registered_passkey) {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
655
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
656 dbus_g_proxy_call(object, "RegisterDefaultPasskeyAgent",
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
657 &error, G_TYPE_STRING, PASSKEY_AGENT_PATH,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
658 G_TYPE_INVALID, G_TYPE_INVALID);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
659
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
660 if (error != NULL) {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
661 g_error_free(error);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
662 return -1;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
663 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
664
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
665 registered_passkey = 1;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
666 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
667
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
668 if (!registered_auth) {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
669 dbus_g_proxy_call(object, "RegisterDefaultAuthorizationAgent",
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
670 &error, G_TYPE_STRING, AUTH_AGENT_PATH,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
671 G_TYPE_INVALID, G_TYPE_INVALID);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
672
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
673 if (error != NULL) {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
674 g_error_free(error);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
675 return -1;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
676 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
677
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
678 registered_auth = 1;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
679 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
680
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
681 return 0;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
682 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
683
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
684 void unregister_agents(void)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
685 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
686 registered_passkey = 0;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
687 registered_auth = 0;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
688 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
689
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
690 int setup_agents(DBusGConnection *conn)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
691 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
692 void *agent;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
693
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
694 connection = dbus_g_connection_ref(conn);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
695
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
696 dbus_g_object_type_install_info(PASSKEY_AGENT_OBJECT_TYPE,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
697 &dbus_glib_passkey_agent_object_info);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
698
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
699 dbus_g_object_type_install_info(AUTH_AGENT_OBJECT_TYPE,
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
700 &dbus_glib_auth_agent_object_info);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
701
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
702 dbus_g_error_domain_register(AGENT_ERROR, "org.bluez.Error",
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
703 AGENT_ERROR_TYPE);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
704
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
705 agent = passkey_agent_new(PASSKEY_AGENT_PATH);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
706
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
707 agent = auth_agent_new(AUTH_AGENT_PATH);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
708
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
709 return 0;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
710 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
711
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
712 void cleanup_agents(void)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
713 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
714 unregister_agents();
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
715
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
716 dbus_g_connection_unref(connection);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
717 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
718
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
719 void show_agents(void)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
720 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
721 //close_notification();
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
722
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
723 // g_list_foreach(input_list, show_dialog, NULL);
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
724
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
725 // disable_blinking();
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
726 }
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
727
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
728 void set_auto_authorize(gboolean value)
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
729 {
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
730 auto_authorize = value;
22a2ffe86750 added passkey agent and basic pairing functionality
Paula Stanciu <paula.stanciu@gmail.com>
parents:
diff changeset
731 }