summaryrefslogtreecommitdiff
path: root/src/device.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2009-01-01 18:52:16 +0100
committerMarcel Holtmann <marcel@holtmann.org>2009-01-01 18:52:16 +0100
commit3909f166fb41fba2521bf84ed5fc87d367c163b8 (patch)
tree80fa5f4c0bc5057805f4bf209447ca34b04af7ae /src/device.c
parent5be6dc3d4b22d736bb47e6fd6d4d5c8c11f70364 (diff)
downloadconnman-3909f166fb41fba2521bf84ed5fc87d367c163b8.tar.gz
connman-3909f166fb41fba2521bf84ed5fc87d367c163b8.tar.bz2
connman-3909f166fb41fba2521bf84ed5fc87d367c163b8.zip
Allow transport definition for device mode
Diffstat (limited to 'src/device.c')
-rw-r--r--src/device.c50
1 files changed, 40 insertions, 10 deletions
diff --git a/src/device.c b/src/device.c
index 84be26ea..d5e836b7 100644
--- a/src/device.c
+++ b/src/device.c
@@ -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);