From 29db85bf38ab26b459159dcf42d842f35c6e13a2 Mon Sep 17 00:00:00 2001 From: Santiago Carot-Nemesio Date: Mon, 24 Oct 2011 19:04:06 +0200 Subject: [PATCH] Disable final measurements indication when last watcher is removed --- thermometer/thermometer.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/thermometer/thermometer.c b/thermometer/thermometer.c index ffcdf6e9d..9513fcdfc 100644 --- a/thermometer/thermometer.c +++ b/thermometer/thermometer.c @@ -526,7 +526,30 @@ static void enable_final_measurement(struct thermometer *t) static void disable_final_measurement(struct thermometer *t) { - /* TODO: disable final measurements */ + struct characteristic *ch; + struct descriptor *desc; + bt_uuid_t btuuid; + uint8_t atval[2]; + gchar *msg; + + ch = get_characteristic(t, TEMPERATURE_MEASUREMENT_UUID); + if (ch == NULL) { + DBG("Temperature measurement characteristic not found"); + return; + } + + bt_uuid16_create(&btuuid, GATT_CLIENT_CHARAC_CFG_UUID); + desc = get_descriptor(ch, &btuuid); + if (desc == NULL) { + DBG("Client characteristic configuration descriptor not found"); + return; + } + + atval[0] = 0x00; + atval[1] = 0x00; + msg = g_strdup("Disable final measurement"); + gatt_write_char(t->attrib, desc->handle, atval, 2, + final_measurement_cb, msg); } static void watcher_exit(DBusConnection *conn, void *user_data) -- 2.47.3