technology: Return technology name Cellular instead 3G
[framework/connectivity/connman.git] / src / technology.c
index c6fd826..de0fab8 100644 (file)
@@ -51,13 +51,13 @@ enum connman_technology_state {
 };
 
 struct connman_technology {
-       gint refcount;
+       int refcount;
        enum connman_service_type type;
        enum connman_technology_state state;
        char *path;
        GHashTable *rfkill_list;
        GSList *device_list;
-       gint enabled;
+       int enabled;
        char *regdom;
 
        connman_bool_t tethering;
@@ -309,7 +309,7 @@ static const char *get_name(enum connman_service_type type)
        case CONNMAN_SERVICE_TYPE_BLUETOOTH:
                return "Bluetooth";
        case CONNMAN_SERVICE_TYPE_CELLULAR:
-               return "3G";
+               return "Cellular";
        }
 
        return NULL;
@@ -575,7 +575,7 @@ static struct connman_technology *technology_get(enum connman_service_type type)
 
        technology = technology_find(type);
        if (technology != NULL) {
-               g_atomic_int_inc(&technology->refcount);
+               __sync_fetch_and_add(&technology->refcount, 1);
                goto done;
        }
 
@@ -642,7 +642,7 @@ static void technology_put(struct connman_technology *technology)
 {
        DBG("technology %p", technology);
 
-       if (g_atomic_int_dec_and_test(&technology->refcount) == FALSE)
+       if (__sync_fetch_and_sub(&technology->refcount, 1) != 1)
                return;
 
        if (technology->driver) {
@@ -809,7 +809,7 @@ int __connman_technology_enabled(enum connman_service_type type)
        if (technology == NULL)
                return -ENXIO;
 
-       if (g_atomic_int_exchange_and_add(&technology->enabled, 1) == 0) {
+       if (__sync_fetch_and_add(&technology->enabled, 1) == 0) {
                __connman_notifier_enable(type);
                technology->state = CONNMAN_TECHNOLOGY_STATE_ENABLED;
                state_changed(technology);
@@ -848,7 +848,6 @@ int __connman_technology_enable(enum connman_service_type type, DBusMessage *msg
        }
 
        if (msg != NULL) {
-               technology->pending_reply = dbus_message_ref(msg);
                /*
                 * This is a bit of a trick. When msg is not NULL it means
                 * thats technology_enable was invoked from the manager API. Hence we save
@@ -881,14 +880,18 @@ int __connman_technology_enable(enum connman_service_type type, DBusMessage *msg
        }
 
 done:
-       if (ret == 0)
+       if (ret == 0) {
+               if (msg != NULL)
+                       g_dbus_send_reply(connection, msg, DBUS_TYPE_INVALID);
                return ret;
+       }
 
        if (msg != NULL) {
-               if (err == -EINPROGRESS)
+               if (err == -EINPROGRESS) {
+                       technology->pending_reply = dbus_message_ref(msg);
                        technology->pending_timeout = g_timeout_add_seconds(10,
                                        technology_pending_reply, technology);
-               else {
+               else {
                        reply = __connman_error_failed(msg, -err);
                        if (reply != NULL)
                                g_dbus_send_message(connection, reply);
@@ -914,11 +917,12 @@ int __connman_technology_disabled(enum connman_service_type type)
                technology->pending_timeout = 0;
        }
 
-       if (g_atomic_int_dec_and_test(&technology->enabled) == TRUE) {
-               __connman_notifier_disable(type);
-               technology->state = CONNMAN_TECHNOLOGY_STATE_OFFLINE;
-               state_changed(technology);
-       }
+       if (__sync_fetch_and_sub(&technology->enabled, 1) != 1)
+               return 0;
+
+       __connman_notifier_disable(type);
+       technology->state = CONNMAN_TECHNOLOGY_STATE_OFFLINE;
+       state_changed(technology);
 
        return 0;
 }
@@ -948,7 +952,6 @@ int __connman_technology_disable(enum connman_service_type type, DBusMessage *ms
                set_tethering(technology, FALSE);
 
        if (msg != NULL) {
-               technology->pending_reply = dbus_message_ref(msg);
                technology->enable_persistent = FALSE;
                save_state(technology);
        }
@@ -964,14 +967,18 @@ int __connman_technology_disable(enum connman_service_type type, DBusMessage *ms
        }
 
 done:
-       if (ret == 0)
+       if (ret == 0) {
+               if (msg != NULL)
+                       g_dbus_send_reply(connection, msg, DBUS_TYPE_INVALID);
                return ret;
+       }
 
        if (msg != NULL) {
-               if (err == -EINPROGRESS)
+               if (err == -EINPROGRESS) {
+                       technology->pending_reply = dbus_message_ref(msg);
                        technology->pending_timeout = g_timeout_add_seconds(10,
                                        technology_pending_reply, technology);
-               else {
+               else {
                        reply = __connman_error_failed(msg, -err);
                        if (reply != NULL)
                                g_dbus_send_message(connection, reply);