summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGowtham Anandha Babu <gowtham.ab@samsung.com>2015-08-11 14:08:45 +0530
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2015-08-13 15:24:48 +0300
commitb58a5e5b607cd1f537428f66ed3295bb26453e99 (patch)
treee8f5bf4bbba925cc7e6ba6fc67e8deb12a5f4708
parent5f6f6623b407aa09f60c87f631e7badb2601f09f (diff)
downloadbluez-b58a5e5b607cd1f537428f66ed3295bb26453e99.tar.gz
gatt-database: Return meaningful ecodes for ccc write
Removed generic ATT protocol error codes and added Common Profile and Service Error Codes.
-rw-r--r--src/gatt-database.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/src/gatt-database.c b/src/gatt-database.c
index 69a814ddc..91aba2fd6 100644
--- a/src/gatt-database.c
+++ b/src/gatt-database.c
@@ -1783,22 +1783,16 @@ static uint8_t ccc_write_cb(uint16_t value, void *user_data)
return 0;
}
- /*
- * TODO: All of the errors below should fall into the so called
- * "Application Error" range. Since there is no well defined error for
- * these, we return a generic ATT protocol error for now.
- */
-
if (chrc->ntfy_cnt == UINT_MAX) {
/* Maximum number of per-device CCC descriptors configured */
- return BT_ATT_ERROR_REQUEST_NOT_SUPPORTED;
+ return BT_ATT_ERROR_INSUFFICIENT_RESOURCES;
}
/* Don't support undefined CCC values yet */
if (value > 2 ||
(value == 1 && !(chrc->props & BT_GATT_CHRC_PROP_NOTIFY)) ||
(value == 2 && !(chrc->props & BT_GATT_CHRC_PROP_INDICATE)))
- return BT_ATT_ERROR_REQUEST_NOT_SUPPORTED;
+ return BT_ERROR_CCC_IMPROPERLY_CONFIGURED;
/*
* Always call StartNotify for an incoming enable and ignore the return
@@ -1807,7 +1801,7 @@ static uint8_t ccc_write_cb(uint16_t value, void *user_data)
if (g_dbus_proxy_method_call(chrc->proxy,
"StartNotify", NULL, NULL,
NULL, NULL) == FALSE)
- return BT_ATT_ERROR_REQUEST_NOT_SUPPORTED;
+ return BT_ATT_ERROR_UNLIKELY;
__sync_fetch_and_add(&chrc->ntfy_cnt, 1);