diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2009-04-21 05:08:48 +0100 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-04-21 05:08:48 +0100 |
commit | 90406cff092e149ef835d684e5d4d445687a2e01 (patch) | |
tree | 8355f7d87b5b28fdcc19a7d83cde898bd568a5b1 | |
parent | 87c4130bdb16e8ce0b033708e219d22b19e29a04 (diff) | |
download | connman-90406cff092e149ef835d684e5d4d445687a2e01.tar.gz connman-90406cff092e149ef835d684e5d4d445687a2e01.tar.bz2 connman-90406cff092e149ef835d684e5d4d445687a2e01.zip |
Add support for carrier service state
-rw-r--r-- | include/service.h | 11 | ||||
-rw-r--r-- | src/connman.h | 3 | ||||
-rw-r--r-- | src/profile.c | 2 | ||||
-rw-r--r-- | src/service.c | 22 |
4 files changed, 32 insertions, 6 deletions
diff --git a/include/service.h b/include/service.h index f85c3b39..fb7d5e7f 100644 --- a/include/service.h +++ b/include/service.h @@ -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; diff --git a/src/connman.h b/src/connman.h index 102b334c..d66e0cf7 100644 --- a/src/connman.h +++ b/src/connman.h @@ -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); diff --git a/src/profile.c b/src/profile.c index eeb777f1..cad8a359 100644 --- a/src/profile.c +++ b/src/profile.c @@ -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) diff --git a/src/service.c b/src/service.c index 4c55555f..084ffb03 100644 --- a/src/service.c +++ b/src/service.c @@ -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 |