Diff between 8b58d5f86efd8c69ffe5c6661867eefe36b99949 and a5c85eabb5e8eb8dfec5066d6e0c0e52cfdb9244

Changed Files

File Additions Deletions Status
src/service.c +7 -0 modified
src/service.h +1 -0 modified

Full Patch

diff --git a/src/service.c b/src/service.c
index e03a412..6228de1 100644
--- a/src/service.c
+++ b/src/service.c
@@ -52,6 +52,7 @@ struct btd_service {
 	struct btd_profile	*profile;
 	void			*user_data;
 	btd_service_state_t	state;
+	int			err;
 };
 
 static const char *state2str(btd_service_state_t state)
@@ -85,6 +86,7 @@ static void change_state(struct btd_service *service, btd_service_state_t state,
 	assert(service->profile != NULL);
 
 	service->state = state;
+	service->err = err;
 
 	ba2str(device_get_address(service->device), addr);
 	DBG("%p: device %s profile %s state changed: %s -> %s (%d)", service,
@@ -256,6 +258,11 @@ btd_service_state_t btd_service_get_state(const struct btd_service *service)
 	return service->state;
 }
 
+int btd_service_get_error(const struct btd_service *service)
+{
+	return service->err;
+}
+
 void btd_service_connecting_complete(struct btd_service *service, int err)
 {
 	if (service->state != BTD_SERVICE_STATE_DISCONNECTED &&
diff --git a/src/service.h b/src/service.h
index a89b524..e3bc6e5 100644
--- a/src/service.h
+++ b/src/service.h
@@ -51,6 +51,7 @@ int btd_service_disconnect(struct btd_service *service);
 struct btd_device *btd_service_get_device(const struct btd_service *service);
 struct btd_profile *btd_service_get_profile(const struct btd_service *service);
 btd_service_state_t btd_service_get_state(const struct btd_service *service);
+int btd_service_get_error(const struct btd_service *service);
 
 /* Functions used by profile implementation */
 void btd_service_connecting_complete(struct btd_service *service, int err);