summaryrefslogtreecommitdiff
path: root/shared-module/_bleio/ScanEntry.c
diff options
context:
space:
mode:
authorHierophect <hierophect@gmail.com>2019-11-06 14:46:56 -0500
committerHierophect <hierophect@gmail.com>2019-11-06 14:46:56 -0500
commitadfef8b520e937de0a3ecd9900cb0e9f25e30e96 (patch)
tree73928fce07fa69c7fba088a6e86075c45fb9ebe1 /shared-module/_bleio/ScanEntry.c
parentdfe73a063d5a38745e314120ce1b28008b719481 (diff)
parentb8373aca0c38d709266e3c0534da26ab3bcbff80 (diff)
Merge remote-tracking branch 'upstream/master' into stm32-dac-deinit
Diffstat (limited to 'shared-module/_bleio/ScanEntry.c')
-rw-r--r--shared-module/_bleio/ScanEntry.c43
1 files changed, 42 insertions, 1 deletions
diff --git a/shared-module/_bleio/ScanEntry.c b/shared-module/_bleio/ScanEntry.c
index 8dfa17f31..785209c4a 100644
--- a/shared-module/_bleio/ScanEntry.c
+++ b/shared-module/_bleio/ScanEntry.c
@@ -37,9 +37,50 @@ mp_obj_t common_hal_bleio_scanentry_get_address(bleio_scanentry_obj_t *self) {
}
mp_obj_t common_hal_bleio_scanentry_get_advertisement_bytes(bleio_scanentry_obj_t *self) {
- return self->data;
+ return MP_OBJ_FROM_PTR(self->data);
}
mp_int_t common_hal_bleio_scanentry_get_rssi(bleio_scanentry_obj_t *self) {
return self->rssi;
}
+
+bool common_hal_bleio_scanentry_get_connectable(bleio_scanentry_obj_t *self) {
+ return self->connectable;
+}
+
+bool common_hal_bleio_scanentry_get_scan_response(bleio_scanentry_obj_t *self) {
+ return self->scan_response;
+}
+
+bool bleio_scanentry_data_matches(const uint8_t* data, size_t len, const uint8_t* prefixes, size_t prefixes_length, bool any) {
+ if (prefixes_length == 0) {
+ return true;
+ }
+ size_t i = 0;
+ while(i < prefixes_length) {
+ uint8_t prefix_length = prefixes[i];
+ i += 1;
+ size_t j = 0;
+ while (j < len) {
+ uint8_t structure_length = data[j];
+ j += 1;
+ if (structure_length == 0) {
+ break;
+ }
+ if (structure_length >= prefix_length && memcmp(data + j, prefixes + i, prefix_length) == 0) {
+ if (any) {
+ return true;
+ }
+ } else if (!any) {
+ return false;
+ }
+ j += structure_length;
+ }
+ i += prefix_length;
+ }
+ return !any;
+}
+
+bool common_hal_bleio_scanentry_matches(bleio_scanentry_obj_t *self, const uint8_t* prefixes, size_t prefixes_len, bool all) {
+ return bleio_scanentry_data_matches(self->data->data, self->data->len, prefixes, prefixes_len, !all);
+}