Add basic handling of configuration state
authorMarcel Holtmann <marcel@holtmann.org>
Tue, 21 Apr 2009 04:17:41 +0000 (05:17 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Tue, 21 Apr 2009 04:17:41 +0000 (05:17 +0100)
src/connman.h
src/device.c
src/profile.c
src/service.c

index d66e0cf..f370e0d 100644 (file)
@@ -190,8 +190,6 @@ int __connman_device_set_offlinemode(connman_bool_t offlinemode);
 
 int __connman_profile_add_device(struct connman_device *device);
 int __connman_profile_remove_device(struct connman_device *device);
-int __connman_profile_set_carrier(struct connman_device *device,
-                                               connman_bool_t carrier);
 
 #include <connman/network.h>
 
@@ -226,6 +224,7 @@ struct connman_service *__connman_service_create_from_network(struct connman_net
 
 int __connman_service_set_carrier(struct connman_service *service,
                                                connman_bool_t carrier);
+int __connman_service_indicate_configuration(struct connman_service *service);
 
 #include <connman/notifier.h>
 
index b5d7cd6..b0210b0 100644 (file)
@@ -161,7 +161,10 @@ static enum connman_device_policy string2policy(const char *policy)
 
 static int set_carrier(struct connman_device *device, connman_bool_t carrier)
 {
-       __connman_profile_set_carrier(device, carrier);
+       struct connman_service *service;
+
+       service = __connman_service_lookup_from_device(device);
+       __connman_service_set_carrier(service, carrier);
 
        if (carrier == TRUE) {
                enum connman_element_type type = CONNMAN_ELEMENT_TYPE_UNKNOWN;
@@ -187,6 +190,8 @@ static int set_carrier(struct connman_device *device, connman_bool_t carrier)
                        if (connman_element_register(element,
                                                        &device->element) < 0)
                                connman_element_unref(element);
+
+                       __connman_service_indicate_configuration(service);
                }
        } else
                connman_element_unregister_children(&device->element);
index cad8a35..f12bdb8 100644 (file)
@@ -111,20 +111,6 @@ int __connman_profile_remove_device(struct connman_device *device)
        return 0;
 }
 
-int __connman_profile_set_carrier(struct connman_device *device,
-                                               connman_bool_t carrier)
-{
-       struct connman_service *service;
-
-       DBG("device %p carrier %d", device, carrier);
-
-       service = __connman_service_lookup_from_device(device);
-       if (service == NULL)
-               return -EINVAL;
-
-       return __connman_service_set_carrier(service, carrier);
-}
-
 int __connman_profile_add_network(struct connman_network *network)
 {
        struct connman_service *service;
index 084ffb0..7b765c2 100644 (file)
@@ -434,6 +434,9 @@ int connman_service_set_favorite(struct connman_service *service,
 int __connman_service_set_carrier(struct connman_service *service,
                                                connman_bool_t carrier)
 {
+       if (service == NULL)
+               return -EINVAL;
+
        switch (service->type) {
        case CONNMAN_SERVICE_TYPE_UNKNOWN:
        case CONNMAN_SERVICE_TYPE_WIFI:
@@ -451,6 +454,16 @@ int __connman_service_set_carrier(struct connman_service *service,
        return connman_service_set_favorite(service, carrier);
 }
 
+int __connman_service_indicate_configuration(struct connman_service *service)
+{
+       if (service == NULL)
+               return -EINVAL;
+
+       service->state = CONNMAN_SERVICE_STATE_CONFIGURATION;
+
+       return 0;
+}
+
 /**
  * connman_service_lookup:
  * @identifier: service identifier