70
70
notifier_list = g_slist_remove(notifier_list, notifier);
73
static const char *type2string(enum connman_service_type type)
76
case CONNMAN_SERVICE_TYPE_UNKNOWN:
78
case CONNMAN_SERVICE_TYPE_ETHERNET:
80
case CONNMAN_SERVICE_TYPE_WIFI:
82
case CONNMAN_SERVICE_TYPE_WIMAX:
84
case CONNMAN_SERVICE_TYPE_BLUETOOTH:
86
case CONNMAN_SERVICE_TYPE_CELLULAR:
93
73
#define MAX_TECHNOLOGIES 10
95
75
static volatile gint registered[MAX_TECHNOLOGIES];
96
76
static volatile gint enabled[MAX_TECHNOLOGIES];
97
77
static volatile gint connected[MAX_TECHNOLOGIES];
99
void __connman_notifier_list_registered(DBusMessageIter *iter)
79
void __connman_notifier_list_registered(DBusMessageIter *iter, void *user_data)
103
83
for (i = 0; i < 10; i++) {
104
const char *type = type2string(i);
84
const char *type = __connman_service_type2string(i);
147
127
static void technology_registered(enum connman_service_type type,
148
128
connman_bool_t registered)
151
DBusMessageIter entry, value, iter;
152
const char *key = "AvailableTechnologies";
154
130
DBG("type %d registered %d", type, registered);
156
signal = dbus_message_new_signal(CONNMAN_MANAGER_PATH,
157
CONNMAN_MANAGER_INTERFACE, "PropertyChanged");
161
dbus_message_iter_init_append(signal, &entry);
163
dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key);
165
dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT,
166
DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_STRING_AS_STRING,
169
dbus_message_iter_open_container(&value, DBUS_TYPE_ARRAY,
170
DBUS_TYPE_STRING_AS_STRING, &iter);
171
__connman_notifier_list_registered(&iter);
172
dbus_message_iter_close_container(&value, &iter);
174
dbus_message_iter_close_container(&entry, &value);
176
g_dbus_send_message(connection, signal);
132
connman_dbus_property_changed_array(CONNMAN_MANAGER_PATH,
133
CONNMAN_MANAGER_INTERFACE, "AvailableTechnologies",
134
DBUS_TYPE_STRING, __connman_notifier_list_registered, NULL);
179
137
static void technology_enabled(enum connman_service_type type,
180
138
connman_bool_t enabled)
184
DBusMessageIter entry, value, iter;
185
const char *key = "EnabledTechnologies";
187
142
DBG("type %d enabled %d", type, enabled);
189
signal = dbus_message_new_signal(CONNMAN_MANAGER_PATH,
190
CONNMAN_MANAGER_INTERFACE, "PropertyChanged");
194
dbus_message_iter_init_append(signal, &entry);
196
dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key);
198
dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT,
199
DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_STRING_AS_STRING,
202
dbus_message_iter_open_container(&value, DBUS_TYPE_ARRAY,
203
DBUS_TYPE_STRING_AS_STRING, &iter);
204
__connman_notifier_list_enabled(&iter);
205
dbus_message_iter_close_container(&value, &iter);
207
dbus_message_iter_close_container(&entry, &value);
209
g_dbus_send_message(connection, signal);
144
connman_dbus_property_changed_array(CONNMAN_MANAGER_PATH,
145
CONNMAN_MANAGER_INTERFACE, "EnabledTechnologies",
146
DBUS_TYPE_STRING, __connman_notifier_list_enabled, NULL);
212
148
for (list = notifier_list; list; list = list->next) {
213
149
struct connman_notifier *notifier = list->data;
220
156
static void technology_connected(enum connman_service_type type,
221
157
connman_bool_t connected)
224
DBusMessageIter entry, value, iter;
225
const char *key = "ConnectedTechnologies";
227
159
DBG("type %d connected %d", type, connected);
229
signal = dbus_message_new_signal(CONNMAN_MANAGER_PATH,
230
CONNMAN_MANAGER_INTERFACE, "PropertyChanged");
234
dbus_message_iter_init_append(signal, &entry);
236
dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key);
238
dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT,
239
DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_STRING_AS_STRING,
242
dbus_message_iter_open_container(&value, DBUS_TYPE_ARRAY,
243
DBUS_TYPE_STRING_AS_STRING, &iter);
244
__connman_notifier_list_connected(&iter);
245
dbus_message_iter_close_container(&value, &iter);
247
dbus_message_iter_close_container(&entry, &value);
249
g_dbus_send_message(connection, signal);
161
connman_dbus_property_changed_array(CONNMAN_MANAGER_PATH,
162
CONNMAN_MANAGER_INTERFACE, "ConnectedTechnologies",
163
DBUS_TYPE_STRING, __connman_notifier_list_connected, NULL);
252
166
void __connman_notifier_register(enum connman_service_type type)
363
289
technology_connected(type, FALSE);
292
static void technology_default(enum connman_service_type type)
296
str = __connman_service_type2string(type);
300
connman_dbus_property_changed_basic(CONNMAN_MANAGER_PATH,
301
CONNMAN_MANAGER_INTERFACE, "DefaultTechnology",
302
DBUS_TYPE_STRING, &str);
305
void __connman_notifier_default_changed(struct connman_service *service)
307
enum connman_service_type type = connman_service_get_type(service);
310
technology_default(type);
312
for (list = notifier_list; list; list = list->next) {
313
struct connman_notifier *notifier = list->data;
315
if (notifier->default_changed)
316
notifier->default_changed(service);
366
320
static void offlinemode_changed(dbus_bool_t enabled)
369
DBusMessageIter entry, value;
370
const char *key = "OfflineMode";
372
322
DBG("enabled %d", enabled);
374
signal = dbus_message_new_signal(CONNMAN_MANAGER_PATH,
375
CONNMAN_MANAGER_INTERFACE, "PropertyChanged");
379
dbus_message_iter_init_append(signal, &entry);
381
dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key);
383
dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT,
384
DBUS_TYPE_BOOLEAN_AS_STRING, &value);
385
dbus_message_iter_append_basic(&value, DBUS_TYPE_BOOLEAN, &enabled);
386
dbus_message_iter_close_container(&entry, &value);
388
g_dbus_send_message(connection, signal);
324
connman_dbus_property_changed_basic(CONNMAN_MANAGER_PATH,
325
CONNMAN_MANAGER_INTERFACE, "OfflineMode",
326
DBUS_TYPE_BOOLEAN, &enabled);
391
329
void __connman_notifier_offlinemode(connman_bool_t enabled)