diff --git a/android/scpp.c b/android/scpp.c
index c73a015..751d3f2 100644
--- a/android/scpp.c
+++ b/android/scpp.c
if (!scan)
return NULL;
+ scan->interval = SCAN_INTERVAL;
+ scan->window = SCAN_WINDOW;
+
if (primary)
scan->primary = g_memdup(primary, sizeof(*scan->primary));
scpp_free(scan);
}
-static void write_scan_params(GAttrib *attrib, uint16_t handle)
+static void write_scan_params(GAttrib *attrib, uint16_t handle,
+ uint16_t interval, uint16_t window)
{
uint8_t value[4];
- put_le16(SCAN_INTERVAL, &value[0]);
- put_le16(SCAN_WINDOW, &value[2]);
+ put_le16(interval, &value[0]);
+ put_le16(window, &value[2]);
gatt_write_cmd(attrib, handle, value, sizeof(value), NULL, NULL);
}
DBG("Server requires refresh: %d", pdu[3]);
if (pdu[3] == SERVER_REQUIRES_REFRESH)
- write_scan_params(scan->attrib, scan->iwhandle);
+ write_scan_params(scan->attrib, scan->iwhandle, scan->interval,
+ scan->window);
}
static void ccc_written_cb(guint8 status, const guint8 *pdu,
DBG("Scan Interval Window handle: 0x%04x", scan->iwhandle);
- write_scan_params(scan->attrib, scan->iwhandle);
+ write_scan_params(scan->attrib, scan->iwhandle, scan->interval,
+ scan->window);
}
bool bt_scpp_attach(struct bt_scpp *scan, void *attrib)
scan->attrib = g_attrib_ref(attrib);
if (scan->iwhandle) {
- write_scan_params(scan->attrib, scan->iwhandle);
+ write_scan_params(scan->attrib, scan->iwhandle, scan->interval,
+ scan->window);
return true;
}
g_attrib_unref(scan->attrib);
scan->attrib = NULL;
}
+
+bool bt_scpp_set_interval(struct bt_scpp *scan, uint16_t value)
+{
+ if (!scan)
+ return false;
+
+ /* TODO: Check valid range */
+
+ scan->interval = value;
+
+ return true;
+}
+
+bool bt_scpp_set_window(struct bt_scpp *scan, uint16_t value)
+{
+ if (!scan)
+ return false;
+
+ /* TODO: Check valid range */
+
+ scan->window = value;
+
+ return true;
+}
diff --git a/android/scpp.h b/android/scpp.h
index f374cee..048fb9f 100644
--- a/android/scpp.h
+++ b/android/scpp.h
bool bt_scpp_attach(struct bt_scpp *scan, void *gatt);
void bt_scpp_detach(struct bt_scpp *scan);
+
+bool bt_scpp_set_interval(struct bt_scpp *scan, uint16_t value);
+bool bt_scpp_set_window(struct bt_scpp *scan, uint16_t value);