diff --git a/profiles/thermometer/thermometer.c b/profiles/thermometer/thermometer.c
index 46e2b7c..49d4d6f 100644
--- a/profiles/thermometer/thermometer.c
+++ b/profiles/thermometer/thermometer.c
uint16_t min;
gboolean has_type;
gboolean has_interval;
+
+ uint16_t measurement_ccc_handle;
};
struct characteristic {
if (g_strcmp0(ch->attr.uuid,
TEMPERATURE_MEASUREMENT_UUID) == 0) {
+ desc->ch->t->measurement_ccc_handle = desc->handle;
+
if (g_slist_length(ch->t->tadapter->fwatchers) == 0)
return;
static void enable_final_measurement(gpointer data, gpointer user_data)
{
struct thermometer *t = data;
+ uint16_t handle = t->measurement_ccc_handle;
+ uint8_t value[2];
+ char *msg;
+
+ if (t->attrib == NULL || !handle)
+ return;
+
+ att_put_u16(GATT_CLIENT_CHARAC_CFG_IND_BIT, value);
+ msg = g_strdup("Enable Temperature Measurement indications");
- write_ccc(t, TEMPERATURE_MEASUREMENT_UUID,
- GATT_CLIENT_CHARAC_CFG_IND_BIT);
+ gatt_write_char(t->attrib, handle, value, sizeof(value),
+ write_ccc_cb, msg);
}
static void enable_intermediate_measurement(gpointer data, gpointer user_data)
static void disable_final_measurement(gpointer data, gpointer user_data)
{
struct thermometer *t = data;
+ uint16_t handle = t->measurement_ccc_handle;
+ uint8_t value[2];
+ char *msg;
+
+ if (t->attrib == NULL || !handle)
+ return;
+
+ att_put_u16(0x0000, value);
+ msg = g_strdup("Disable Temperature Measurement indications");
- write_ccc(t, TEMPERATURE_MEASUREMENT_UUID, 0x0000);
+ gatt_write_char(t->attrib, handle, value, sizeof(value),
+ write_ccc_cb, msg);
}
static void disable_intermediate_measurement(gpointer data, gpointer user_data)