summaryrefslogtreecommitdiff
path: root/thermometer
diff options
context:
space:
mode:
authorSantiago Carot-Nemesio <sancane@gmail.com>2011-10-13 17:29:20 +0200
committerJohan Hedberg <johan.hedberg@intel.com>2011-10-17 11:08:37 +0300
commitc9fc590787b409191f1970fe818ec92484019edb (patch)
treed14f2ea63dad5106a5b1208ccfd891cbb44b986d /thermometer
parent2219cc884ce529cb7bd6e0f52f2e58df028d1871 (diff)
downloadbluez-c9fc590787b409191f1970fe818ec92484019edb.tar.gz
Read temperature type characteristic
Diffstat (limited to 'thermometer')
-rw-r--r--thermometer/thermometer.c31
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,