summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2016-10-12 12:26:10 +0300
committerJohan Hedberg <johan.hedberg@intel.com>2016-10-21 07:47:31 +0300
commitee9f5c178453190a323e510face60085cf32ccfa (patch)
tree2a6bab7f07d93cd95bebdb5597188688d6df0f07 /net
parentc41d3edda8cd25de5e88efb2b24a79fef60fa26d (diff)
Bluetooth: GATT: Pass CCC attribute to changed callback
This way the application can reuse the same callback for multiple CCC since it can track what CCC is affect by checking the attribute pointer. Change-Id: I608da643aea07de26b65d67e6db3268d717d0f53 Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Diffstat (limited to 'net')
-rw-r--r--net/bluetooth/gatt.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/net/bluetooth/gatt.c b/net/bluetooth/gatt.c
index 278549d2f..39a551520 100644
--- a/net/bluetooth/gatt.c
+++ b/net/bluetooth/gatt.c
@@ -309,7 +309,8 @@ ssize_t bt_gatt_attr_read_ccc(struct bt_conn *conn,
sizeof(value));
}
-static void gatt_ccc_changed(struct _bt_gatt_ccc *ccc)
+static void gatt_ccc_changed(const struct bt_gatt_attr *attr,
+ struct _bt_gatt_ccc *ccc)
{
int i;
uint16_t value = 0x0000;
@@ -324,7 +325,7 @@ static void gatt_ccc_changed(struct _bt_gatt_ccc *ccc)
if (value != ccc->value) {
ccc->value = value;
- ccc->cfg_changed(value);
+ ccc->cfg_changed(attr, value);
}
}
@@ -384,7 +385,7 @@ ssize_t bt_gatt_attr_write_ccc(struct bt_conn *conn,
/* Update cfg if don't match */
if (ccc->cfg[i].value != ccc->value) {
- gatt_ccc_changed(ccc);
+ gatt_ccc_changed(attr, ccc);
}
return len;
@@ -638,7 +639,7 @@ static uint8_t connected_cb(const struct bt_gatt_attr *attr, void *user_data)
}
if (ccc->cfg[i].value) {
- gatt_ccc_changed(ccc);
+ gatt_ccc_changed(attr, ccc);
return BT_GATT_ITER_CONTINUE;
}
}
@@ -695,8 +696,9 @@ static uint8_t disconnected_cb(const struct bt_gatt_attr *attr, void *user_data)
/* Reset value while disconnected */
memset(&ccc->value, 0, sizeof(ccc->value));
- if (ccc->cfg_changed)
- ccc->cfg_changed(ccc->value);
+ if (ccc->cfg_changed) {
+ ccc->cfg_changed(attr, ccc->value);
+ }
BT_DBG("ccc %p reseted", ccc);