Add support for carrier service state
authorMarcel Holtmann <marcel@holtmann.org>
Tue, 21 Apr 2009 04:08:48 +0000 (05:08 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Tue, 21 Apr 2009 04:08:48 +0000 (05:08 +0100)
include/service.h
src/connman.h
src/profile.c
src/service.c

index f85c3b3..fb7d5e7 100644 (file)
@@ -56,11 +56,12 @@ enum connman_service_security {
 enum connman_service_state {
        CONNMAN_SERVICE_STATE_UNKNOWN       = 0,
        CONNMAN_SERVICE_STATE_IDLE          = 1,
-       CONNMAN_SERVICE_STATE_ASSOCIATION   = 2,
-       CONNMAN_SERVICE_STATE_CONFIGURATION = 3,
-       CONNMAN_SERVICE_STATE_READY         = 4,
-       CONNMAN_SERVICE_STATE_DISCONNECT    = 5,
-       CONNMAN_SERVICE_STATE_FAILURE       = 6,
+       CONNMAN_SERVICE_STATE_CARRIER       = 2,
+       CONNMAN_SERVICE_STATE_ASSOCIATION   = 3,
+       CONNMAN_SERVICE_STATE_CONFIGURATION = 4,
+       CONNMAN_SERVICE_STATE_READY         = 5,
+       CONNMAN_SERVICE_STATE_DISCONNECT    = 6,
+       CONNMAN_SERVICE_STATE_FAILURE       = 7,
 };
 
 struct connman_service;
index 102b334..d66e0cf 100644 (file)
@@ -224,6 +224,9 @@ struct connman_service *__connman_service_create_from_device(struct connman_devi
 struct connman_service *__connman_service_lookup_from_network(struct connman_network *network);
 struct connman_service *__connman_service_create_from_network(struct connman_network *network);
 
+int __connman_service_set_carrier(struct connman_service *service,
+                                               connman_bool_t carrier);
+
 #include <connman/notifier.h>
 
 int __connman_notifier_init(void);
index eeb777f..cad8a35 100644 (file)
@@ -122,7 +122,7 @@ int __connman_profile_set_carrier(struct connman_device *device,
        if (service == NULL)
                return -EINVAL;
 
-       return connman_service_set_favorite(service, carrier);
+       return __connman_service_set_carrier(service, carrier);
 }
 
 int __connman_profile_add_network(struct connman_network *network)
index 4c55555..084ffb0 100644 (file)
@@ -121,6 +121,8 @@ static const char *state2string(enum connman_service_state state)
                break;
        case CONNMAN_SERVICE_STATE_IDLE:
                return "idle";
+       case CONNMAN_SERVICE_STATE_CARRIER:
+               return "carrier";
        case CONNMAN_SERVICE_STATE_ASSOCIATION:
                return "association";
        case CONNMAN_SERVICE_STATE_CONFIGURATION:
@@ -429,6 +431,26 @@ int connman_service_set_favorite(struct connman_service *service,
        return 0;
 }
 
+int __connman_service_set_carrier(struct connman_service *service,
+                                               connman_bool_t carrier)
+{
+       switch (service->type) {
+       case CONNMAN_SERVICE_TYPE_UNKNOWN:
+       case CONNMAN_SERVICE_TYPE_WIFI:
+       case CONNMAN_SERVICE_TYPE_WIMAX:
+               return -EINVAL;
+       case CONNMAN_SERVICE_TYPE_ETHERNET:
+               break;
+       }
+
+       if (carrier == TRUE)
+               service->state = CONNMAN_SERVICE_STATE_CARRIER;
+       else
+               service->state = CONNMAN_SERVICE_STATE_IDLE;
+
+       return connman_service_set_favorite(service, carrier);
+}
+
 /**
  * connman_service_lookup:
  * @identifier: service identifier