summaryrefslogtreecommitdiff
path: root/shared-bindings
diff options
context:
space:
mode:
Diffstat (limited to 'shared-bindings')
-rw-r--r--shared-bindings/bleio/Characteristic.c2
-rw-r--r--shared-bindings/bleio/Characteristic.h1
-rw-r--r--shared-bindings/bleio/Device.c24
-rw-r--r--shared-bindings/bleio/Device.h2
-rw-r--r--shared-bindings/bleio/Scanner.h1
-rw-r--r--shared-bindings/bleio/Service.c2
6 files changed, 13 insertions, 19 deletions
diff --git a/shared-bindings/bleio/Characteristic.c b/shared-bindings/bleio/Characteristic.c
index 905babecb..3563d3895 100644
--- a/shared-bindings/bleio/Characteristic.c
+++ b/shared-bindings/bleio/Characteristic.c
@@ -125,6 +125,8 @@ STATIC mp_obj_t bleio_characteristic_make_new(const mp_obj_type_t *type, size_t
"Invalid UUID parameter"));
}
+ common_hal_bleio_characteristic_construct(self);
+
return MP_OBJ_FROM_PTR(self);
}
diff --git a/shared-bindings/bleio/Characteristic.h b/shared-bindings/bleio/Characteristic.h
index dd67170d9..0e99e97cc 100644
--- a/shared-bindings/bleio/Characteristic.h
+++ b/shared-bindings/bleio/Characteristic.h
@@ -31,6 +31,7 @@
extern const mp_obj_type_t bleio_characteristic_type;
+extern void common_hal_bleio_characteristic_construct(bleio_characteristic_obj_t *self);
extern void common_hal_bleio_characteristic_read_value(bleio_characteristic_obj_t *self);
extern void common_hal_bleio_characteristic_write_value(bleio_characteristic_obj_t *self, mp_buffer_info_t *bufinfo);
diff --git a/shared-bindings/bleio/Device.c b/shared-bindings/bleio/Device.c
index 386261683..8c7cef95f 100644
--- a/shared-bindings/bleio/Device.c
+++ b/shared-bindings/bleio/Device.c
@@ -199,7 +199,7 @@ STATIC mp_obj_t bleio_device_add_service(mp_obj_t self_in, mp_obj_t service_in)
"Can't add services in Central mode"));
}
- service->device = self_in;
+ service->device = self;
mp_obj_list_append(self->service_list, service);
@@ -266,31 +266,21 @@ STATIC mp_obj_t bleio_device_start_advertising(mp_uint_t n_args, const mp_obj_t
"Can't advertise in Central mode"));
}
- enum { ARG_connectable };
+ enum { ARG_connectable, ARG_data };
static const mp_arg_t allowed_args[] = {
{ MP_QSTR_connectable, MP_ARG_KW_ONLY | MP_ARG_BOOL, {.u_bool = true} },
+ { MP_QSTR_data, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} },
};
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
- // TODO: data
- bleio_advertisement_data_t adv_data = {
- .device_name = self->name,
- .services = mp_obj_new_list(0, NULL),
- .data = mp_obj_new_bytearray(0, NULL),
- .connectable = args[ARG_connectable].u_bool
- };
-
- mp_obj_list_t *service_list = MP_OBJ_TO_PTR(self->service_list);
- for (size_t i = 0; i < service_list->len; ++i) {
- bleio_service_obj_t *service = MP_OBJ_TO_PTR(service_list->items[i]);
- if (!service->is_secondary) {
- mp_obj_list_append(adv_data.services, service_list->items[i]);
- }
+ mp_buffer_info_t bufinfo = { 0 };
+ if (args[ARG_data].u_obj != mp_const_none) {
+ mp_get_buffer_raise(args[ARG_data].u_obj, &bufinfo, MP_BUFFER_READ);
}
- common_hal_bleio_device_start_advertising(self, &adv_data);
+ common_hal_bleio_device_start_advertising(self, args[ARG_connectable].u_bool, &bufinfo);
return mp_const_none;
}
diff --git a/shared-bindings/bleio/Device.h b/shared-bindings/bleio/Device.h
index d099e5c43..f989736dd 100644
--- a/shared-bindings/bleio/Device.h
+++ b/shared-bindings/bleio/Device.h
@@ -32,7 +32,7 @@
extern const mp_obj_type_t bleio_device_type;
-extern void common_hal_bleio_device_start_advertising(bleio_device_obj_t *device, bleio_advertisement_data_t *adv_data);
+extern void common_hal_bleio_device_start_advertising(bleio_device_obj_t *device, bool connectable, mp_buffer_info_t *raw_data);
extern void common_hal_bleio_device_stop_advertising(bleio_device_obj_t *device);
extern void common_hal_bleio_device_connect(bleio_device_obj_t *device);
extern void common_hal_bleio_device_disconnect(bleio_device_obj_t *device);
diff --git a/shared-bindings/bleio/Scanner.h b/shared-bindings/bleio/Scanner.h
index 03db5cd8b..9bd071747 100644
--- a/shared-bindings/bleio/Scanner.h
+++ b/shared-bindings/bleio/Scanner.h
@@ -34,5 +34,6 @@
extern const mp_obj_type_t bleio_scanner_type;
extern void common_hal_bleio_scanner_scan(bleio_scanner_obj_t *self, mp_int_t timeout);
+extern void common_hal_bleio_scanner_stop(bleio_scanner_obj_t *self);
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_SCANNER_H
diff --git a/shared-bindings/bleio/Service.c b/shared-bindings/bleio/Service.c
index 338269a5f..a2f9b9899 100644
--- a/shared-bindings/bleio/Service.c
+++ b/shared-bindings/bleio/Service.c
@@ -74,7 +74,7 @@ STATIC mp_obj_t bleio_service_make_new(const mp_obj_type_t *type, size_t n_args,
mp_arg_check_num(n_args, n_kw, 1, 1, true);
bleio_service_obj_t *self = m_new_obj(bleio_service_obj_t);
self->base.type = &bleio_service_type;
- self->device = mp_const_none;
+ self->device = NULL;
self->char_list = mp_obj_new_list(0, NULL);
mp_map_t kw_args;