connman_bool_t hardblock;
};
-enum connman_technology_state {
- CONNMAN_TECHNOLOGY_STATE_UNKNOWN = 0,
- CONNMAN_TECHNOLOGY_STATE_OFFLINE = 1,
- CONNMAN_TECHNOLOGY_STATE_ENABLED = 2,
- CONNMAN_TECHNOLOGY_STATE_CONNECTED = 3,
-};
-
struct connman_technology {
int refcount;
enum connman_service_type type;
- enum connman_technology_state state;
char *path;
GHashTable *rfkill_list;
GSList *device_list;
g_free(rfkill);
}
-static const char *state2string(enum connman_technology_state state)
-{
- switch (state) {
- case CONNMAN_TECHNOLOGY_STATE_UNKNOWN:
- break;
- case CONNMAN_TECHNOLOGY_STATE_OFFLINE:
- return "offline";
- case CONNMAN_TECHNOLOGY_STATE_ENABLED:
- return "enabled";
- case CONNMAN_TECHNOLOGY_STATE_CONNECTED:
- return "connected";
- }
-
- return NULL;
-}
-
-static void state_changed(struct connman_technology *technology)
-{
- const char *str;
-
- str = state2string(technology->state);
- if (str == NULL)
- return;
-
- connman_dbus_property_changed_basic(technology->path,
- CONNMAN_TECHNOLOGY_INTERFACE, "State",
- DBUS_TYPE_STRING, &str);
-}
-
static const char *get_name(enum connman_service_type type)
{
switch (type) {
connman_dbus_dict_open(iter, &dict);
- str = state2string(technology->state);
- if (str != NULL)
- connman_dbus_dict_append_basic(&dict, "State",
- DBUS_TYPE_STRING, &str);
-
str = get_name(technology->type);
if (str != NULL)
connman_dbus_dict_append_basic(&dict, "Name",
technology->device_list = NULL;
technology->pending_reply = NULL;
- technology->state = CONNMAN_TECHNOLOGY_STATE_OFFLINE;
load_state(technology);
technology->device_list = g_slist_remove(technology->device_list,
device);
- if (technology->device_list == NULL) {
- technology->state = CONNMAN_TECHNOLOGY_STATE_OFFLINE;
- state_changed(technology);
- }
-
return 0;
}
if (technology == NULL)
return -ENXIO;
- if (__sync_fetch_and_add(&technology->enabled, 1) == 0) {
- technology->state = CONNMAN_TECHNOLOGY_STATE_ENABLED;
- state_changed(technology);
+ if (__sync_fetch_and_add(&technology->enabled, 1) == 0)
powered_changed(technology);
- }
if (technology->pending_reply != NULL) {
g_dbus_send_reply(connection, technology->pending_reply, DBUS_TYPE_INVALID);
technology->pending_timeout = 0;
}
- if (__sync_fetch_and_sub(&technology->enabled, 1) != 1)
- return 0;
-
- technology->state = CONNMAN_TECHNOLOGY_STATE_OFFLINE;
- state_changed(technology);
- powered_changed(technology);
+ if (__sync_fetch_and_sub(&technology->enabled, 1) == 1)
+ powered_changed(technology);
return 0;
}