summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/service.h4
-rw-r--r--src/connman.h2
-rw-r--r--src/service.c18
3 files changed, 23 insertions, 1 deletions
diff --git a/include/service.h b/include/service.h
index 5e5faa93..c173a91b 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 d170a903..0af58146 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 <connman/notifier.h>
diff --git a/src/service.c b/src/service.c
index 002bc846..4a6efae9 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);