Allow transport definition for device mode
authorMarcel Holtmann <marcel@holtmann.org>
Thu, 1 Jan 2009 17:52:16 +0000 (18:52 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 1 Jan 2009 17:52:16 +0000 (18:52 +0100)
include/device.h
plugins/bluetooth.c
plugins/wifi.c
src/detect.c
src/device.c

index c9f6d76..b434db5 100644 (file)
@@ -46,9 +46,10 @@ enum connman_device_type {
 };
 
 enum connman_device_mode {
-       CONNMAN_DEVICE_MODE_NO_NETWORK        = 0,
-       CONNMAN_DEVICE_MODE_SINGLE_NETWORK    = 1,
-       CONNMAN_DEVICE_MODE_MULTIPLE_NETWORKS = 2,
+       CONNMAN_DEVICE_MODE_UNKNOWN          = 0,
+       CONNMAN_DEVICE_MODE_NETWORK_SINGLE   = 1,
+       CONNMAN_DEVICE_MODE_NETWORK_MULTIPLE = 2,
+       CONNMAN_DEVICE_MODE_TRANSPORT_IP     = 3,
 };
 
 enum connman_device_policy {
index 8f90a98..ba5c3a2 100644 (file)
@@ -627,7 +627,7 @@ static void adapter_properties(DBusConnection *connection, const char *path,
        connman_device_set_interface(adapter, node);
 
        connman_device_set_policy(adapter, CONNMAN_DEVICE_POLICY_MANUAL);
-       connman_device_set_mode(adapter, CONNMAN_DEVICE_MODE_MULTIPLE_NETWORKS);
+       connman_device_set_mode(adapter, CONNMAN_DEVICE_MODE_NETWORK_MULTIPLE);
 
        if (connman_device_register(adapter) < 0) {
                connman_device_unref(adapter);
index 10541f2..e07901c 100644 (file)
@@ -568,7 +568,7 @@ static void wifi_newlink(unsigned short type, int index,
        g_free(devname);
        g_free(name);
 
-       connman_device_set_mode(device, CONNMAN_DEVICE_MODE_SINGLE_NETWORK);
+       connman_device_set_mode(device, CONNMAN_DEVICE_MODE_NETWORK_SINGLE);
 
        if (connman_device_register(device) < 0) {
                connman_device_unregister(device);
index 781b8fa..57ea83e 100644 (file)
@@ -130,6 +130,7 @@ static void detect_newlink(unsigned short type, int index,
                                        unsigned flags, unsigned change)
 {
        enum connman_device_type devtype = CONNMAN_DEVICE_TYPE_UNKNOWN;
+       enum connman_device_mode mode;
        struct connman_device *device;
        gchar *name, *devname;
 
@@ -198,15 +199,28 @@ static void detect_newlink(unsigned short type, int index,
        }
 
        switch (devtype) {
+       case CONNMAN_DEVICE_TYPE_UNKNOWN:
+       case CONNMAN_DEVICE_TYPE_VENDOR:
+               mode = CONNMAN_DEVICE_MODE_UNKNOWN;
+               break;
+       case CONNMAN_DEVICE_TYPE_ETHERNET:
+               mode = CONNMAN_DEVICE_MODE_TRANSPORT_IP;
+               break;
+       case CONNMAN_DEVICE_TYPE_WIFI:
+       case CONNMAN_DEVICE_TYPE_WIMAX:
+               mode = CONNMAN_DEVICE_MODE_NETWORK_SINGLE;
+               break;
+       case CONNMAN_DEVICE_TYPE_BLUETOOTH:
+               mode = CONNMAN_DEVICE_MODE_NETWORK_MULTIPLE;
+               break;
        case CONNMAN_DEVICE_TYPE_HSO:
+               mode = CONNMAN_DEVICE_MODE_NETWORK_SINGLE;
                connman_device_set_policy(device, CONNMAN_DEVICE_POLICY_MANUAL);
-               connman_device_set_mode(device,
-                                       CONNMAN_DEVICE_MODE_SINGLE_NETWORK);
-               break;
-       default:
                break;
        }
 
+       connman_device_set_mode(device, mode);
+
        connman_device_set_index(device, index);
        connman_device_set_interface(device, devname);
 
index 84be26e..d5e836b 100644 (file)
@@ -48,6 +48,9 @@ struct connman_device {
 static const char *type2description(enum connman_device_type type)
 {
        switch (type) {
+       case CONNMAN_DEVICE_TYPE_UNKNOWN:
+       case CONNMAN_DEVICE_TYPE_VENDOR:
+               break;
        case CONNMAN_DEVICE_TYPE_ETHERNET:
                return "Ethernet";
        case CONNMAN_DEVICE_TYPE_WIFI:
@@ -58,14 +61,17 @@ static const char *type2description(enum connman_device_type type)
                return "Bluetooth";
        case CONNMAN_DEVICE_TYPE_HSO:
                return "Cellular";
-       default:
-               return NULL;
        }
+
+       return NULL;
 }
 
 static const char *type2string(enum connman_device_type type)
 {
        switch (type) {
+       case CONNMAN_DEVICE_TYPE_UNKNOWN:
+       case CONNMAN_DEVICE_TYPE_VENDOR:
+               break;
        case CONNMAN_DEVICE_TYPE_ETHERNET:
                return "ethernet";
        case CONNMAN_DEVICE_TYPE_WIFI:
@@ -76,9 +82,9 @@ static const char *type2string(enum connman_device_type type)
                return "bluetooth";
        case CONNMAN_DEVICE_TYPE_HSO:
                return "cellular";
-       default:
-               return NULL;
        }
+
+       return NULL;
 }
 
 static const char *policy2string(enum connman_device_policy policy)
@@ -264,11 +270,17 @@ static DBusMessage *get_properties(DBusConnection *conn,
                connman_dbus_dict_append_variant(&dict, "Scanning",
                                        DBUS_TYPE_BOOLEAN, &device->scanning);
 
-       if (device->mode != CONNMAN_DEVICE_MODE_NO_NETWORK) {
+       switch (device->mode) {
+       case CONNMAN_DEVICE_MODE_UNKNOWN:
+       case CONNMAN_DEVICE_MODE_TRANSPORT_IP:
+               break;
+       case CONNMAN_DEVICE_MODE_NETWORK_SINGLE:
+       case CONNMAN_DEVICE_MODE_NETWORK_MULTIPLE:
                dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY,
                                                                NULL, &entry);
                append_networks(device, &entry);
                dbus_message_iter_close_container(&dict, &entry);
+               break;
        }
 
        dbus_message_iter_close_container(&array, &dict);
@@ -357,8 +369,14 @@ static DBusMessage *propose_scan(DBusConnection *conn,
 
        DBG("conn %p", conn);
 
-       if (device->mode == CONNMAN_DEVICE_MODE_NO_NETWORK)
+       switch (device->mode) {
+       case CONNMAN_DEVICE_MODE_UNKNOWN:
+       case CONNMAN_DEVICE_MODE_TRANSPORT_IP:
                return __connman_error_not_supported(msg);
+       case CONNMAN_DEVICE_MODE_NETWORK_SINGLE:
+       case CONNMAN_DEVICE_MODE_NETWORK_MULTIPLE:
+               break;
+       }
 
        if (!device->driver || !device->driver->scan)
                return __connman_error_not_supported(msg);
@@ -557,8 +575,8 @@ struct connman_device *connman_device_create(const char *node,
        device->element.device = device;
        device->element.destruct = device_destruct;
 
-       device->type = type;
-       device->mode = CONNMAN_DEVICE_MODE_NO_NETWORK;
+       device->type   = type;
+       device->mode   = CONNMAN_DEVICE_MODE_UNKNOWN;
        device->policy = CONNMAN_DEVICE_POLICY_AUTO;
 
        device->networks = g_hash_table_new_full(g_str_hash, g_str_equal,
@@ -748,8 +766,14 @@ int connman_device_set_carrier(struct connman_device *device,
 {
        DBG("driver %p carrier %d", device, carrier);
 
-       if (device->mode != CONNMAN_DEVICE_MODE_NO_NETWORK)
+       switch (device->mode) {
+       case CONNMAN_DEVICE_MODE_UNKNOWN:
+       case CONNMAN_DEVICE_MODE_NETWORK_SINGLE:
+       case CONNMAN_DEVICE_MODE_NETWORK_MULTIPLE:
                return -EINVAL;
+       case CONNMAN_DEVICE_MODE_TRANSPORT_IP:
+               break;
+       }
 
        if (device->carrier == carrier)
                return -EALREADY;
@@ -833,8 +857,14 @@ int connman_device_add_network(struct connman_device *device,
 
        DBG("device %p network %p", device, network);
 
-       if (device->mode == CONNMAN_DEVICE_MODE_NO_NETWORK)
+       switch (device->mode) {
+       case CONNMAN_DEVICE_MODE_UNKNOWN:
+       case CONNMAN_DEVICE_MODE_TRANSPORT_IP:
                return -EINVAL;
+       case CONNMAN_DEVICE_MODE_NETWORK_SINGLE:
+       case CONNMAN_DEVICE_MODE_NETWORK_MULTIPLE:
+               break;
+       }
 
        __connman_network_set_device(network, device);