diff options
author | Santiago Carot-Nemesio <sancane@gmail.com> | 2011-10-13 17:29:20 +0200 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2011-10-17 11:08:37 +0300 |
commit | c9fc590787b409191f1970fe818ec92484019edb (patch) | |
tree | d14f2ea63dad5106a5b1208ccfd891cbb44b986d /thermometer | |
parent | 2219cc884ce529cb7bd6e0f52f2e58df028d1871 (diff) | |
download | bluez-c9fc590787b409191f1970fe818ec92484019edb.tar.gz |
Read temperature type characteristic
Diffstat (limited to 'thermometer')
-rw-r--r-- | thermometer/thermometer.c | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/thermometer/thermometer.c b/thermometer/thermometer.c index 41b9d72f7..163a80498 100644 --- a/thermometer/thermometer.c +++ b/thermometer/thermometer.c @@ -48,6 +48,13 @@ struct thermometer { guint attioid; /* Att watcher id */ guint attindid; /* Att incications id */ GSList *chars; /* Characteristics */ + gboolean intermediate; + guint8 type; + guint16 interval; + guint16 max; + guint16 min; + gboolean has_type; + gboolean has_interval; }; struct characteristic { @@ -114,7 +121,29 @@ static void discover_desc_cb(guint8 status, const guint8 *pdu, guint16 len, static void read_temp_type_cb(guint8 status, const guint8 *pdu, guint16 len, gpointer user_data) { - /* TODO */ + struct characteristic *ch = user_data; + struct thermometer *t = ch->t; + uint8_t value[ATT_MAX_MTU]; + int vlen; + + if (status != 0) { + DBG("Temperature Type value read failed: %s", + att_ecode2str(status)); + return; + } + + if (!dec_read_resp(pdu, len, value, &vlen)) { + DBG("Protocol error."); + return; + } + + if (vlen != 1) { + DBG("Invalid length for Temperature type"); + return; + } + + t->has_type = TRUE; + t->type = value[0]; } static void read_interval_cb(guint8 status, const guint8 *pdu, guint16 len, |