From a7b3cd5992de6abfb5efcd77658887e2eddfdba0 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Mon, 29 Jun 2009 23:45:12 +0200 Subject: [PATCH] Add function for more detailed error reporting --- include/service.h | 4 ++++ src/connman.h | 2 ++ src/service.c | 18 +++++++++++++++++- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/include/service.h b/include/service.h index 5e5faa9..c173a91 100644 --- a/include/service.h +++ b/include/service.h @@ -66,6 +66,10 @@ enum connman_service_state { CONNMAN_SERVICE_STATE_FAILURE = 7, }; +enum connman_service_error { + CONNMAN_SERVICE_ERROR_UNKNOWN = 0, +}; + struct connman_service; struct connman_service *connman_service_create(void); diff --git a/src/connman.h b/src/connman.h index d170a90..0af5814 100644 --- a/src/connman.h +++ b/src/connman.h @@ -266,6 +266,8 @@ int __connman_service_set_carrier(struct connman_service *service, connman_bool_t carrier); int __connman_service_indicate_state(struct connman_service *service, enum connman_service_state state); +int __connman_service_indicate_error(struct connman_service *service, + enum connman_service_error error); int __connman_service_indicate_default(struct connman_service *service); #include diff --git a/src/service.c b/src/service.c index 002bc84..4a6efae 100644 --- a/src/service.c +++ b/src/service.c @@ -40,6 +40,7 @@ struct connman_service { enum connman_service_mode mode; enum connman_service_security security; enum connman_service_state state; + enum connman_service_error error; connman_uint8_t strength; connman_bool_t favorite; connman_bool_t hidden; @@ -873,7 +874,8 @@ int __connman_service_indicate_state(struct connman_service *service, service->state = CONNMAN_SERVICE_STATE_IDLE; state_changed(service); - } + } else + service->error = CONNMAN_SERVICE_ERROR_UNKNOWN; iter = g_hash_table_lookup(service_hash, service->identifier); if (iter != NULL) @@ -884,6 +886,20 @@ int __connman_service_indicate_state(struct connman_service *service, return 0; } +int __connman_service_indicate_error(struct connman_service *service, + enum connman_service_error error) +{ + DBG("service %p error %d", service, error); + + if (service == NULL) + return -EINVAL; + + service->error = error; + + return __connman_service_indicate_state(service, + CONNMAN_SERVICE_STATE_FAILURE); +} + int __connman_service_indicate_default(struct connman_service *service) { DBG("service %p", service); -- 2.7.4