summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/nrf/bluetooth/ble_drv.h6
-rw-r--r--ports/nrf/common-hal/bleio/Characteristic.c23
-rw-r--r--ports/nrf/common-hal/bleio/Device.c2
-rw-r--r--shared-bindings/bleio/Device.c2
-rw-r--r--shared-bindings/bleio/Service.c2
5 files changed, 17 insertions, 18 deletions
diff --git a/ports/nrf/bluetooth/ble_drv.h b/ports/nrf/bluetooth/ble_drv.h
index 426354a19..0443b41b8 100644
--- a/ports/nrf/bluetooth/ble_drv.h
+++ b/ports/nrf/bluetooth/ble_drv.h
@@ -25,8 +25,8 @@
* THE SOFTWARE.
*/
-#ifndef BLUETOOTH_LE_DRIVER_H__
-#define BLUETOOTH_LE_DRIVER_H__
+#ifndef MICROPY_INCLUDED_NRF_BLUETOOTH_BLE_DRV_H
+#define MICROPY_INCLUDED_NRF_BLUETOOTH_BLE_DRV_H
#include "ble.h"
@@ -50,4 +50,4 @@ typedef void (*ble_drv_evt_handler_t)(ble_evt_t*, void*);
void ble_drv_add_event_handler(ble_drv_evt_handler_t func, void *param);
-#endif // BLUETOOTH_LE_DRIVER_H__
+#endif // MICROPY_INCLUDED_NRF_BLUETOOTH_BLE_DRV_H
diff --git a/ports/nrf/common-hal/bleio/Characteristic.c b/ports/nrf/common-hal/bleio/Characteristic.c
index 040cacc3f..a370d29a7 100644
--- a/ports/nrf/common-hal/bleio/Characteristic.c
+++ b/ports/nrf/common-hal/bleio/Characteristic.c
@@ -36,7 +36,6 @@
static volatile bleio_characteristic_obj_t *m_read_characteristic;
static volatile uint8_t m_tx_in_progress;
static nrf_mutex_t *m_write_mutex;
-//static volatile bool m_write_done;
STATIC void gatts_write(bleio_characteristic_obj_t *characteristic, mp_buffer_info_t *bufinfo) {
bleio_device_obj_t *device = characteristic->service->device;
@@ -101,23 +100,19 @@ STATIC void gattc_read(bleio_characteristic_obj_t *characteristic) {
STATIC void gattc_write(bleio_characteristic_obj_t *characteristic, mp_buffer_info_t *bufinfo) {
bleio_device_obj_t *device = characteristic->service->device;
- uint16_t conn_handle = device->conn_handle;
uint32_t err_code;
- ble_gattc_write_params_t write_params;
- write_params.write_op = BLE_GATT_OP_WRITE_REQ;
+ ble_gattc_write_params_t write_params = {
+ .flags = BLE_GATT_EXEC_WRITE_FLAG_PREPARED_CANCEL,
+ .write_op = BLE_GATT_OP_WRITE_REQ,
+ .handle = characteristic->handle,
+ .p_value = bufinfo->buf,
+ .len = bufinfo->len,
+ };
if (characteristic->props.write_wo_resp) {
write_params.write_op = BLE_GATT_OP_WRITE_CMD;
- }
-
- write_params.flags = BLE_GATT_EXEC_WRITE_FLAG_PREPARED_CANCEL;
- write_params.handle = characteristic->handle;
- write_params.offset = 0;
- write_params.len = bufinfo->len;
- write_params.p_value = bufinfo->buf;
- if (write_params.write_op == BLE_GATT_OP_WRITE_CMD) {
err_code = sd_mutex_acquire(m_write_mutex);
if (err_code != NRF_SUCCESS) {
nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_OSError,
@@ -125,8 +120,8 @@ STATIC void gattc_write(bleio_characteristic_obj_t *characteristic, mp_buffer_in
}
}
- err_code = sd_ble_gattc_write(conn_handle, &write_params);
- if (err_code != 0) {
+ err_code = sd_ble_gattc_write(device->conn_handle, &write_params);
+ if (err_code != NRF_SUCCESS) {
nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_OSError,
"Failed to write attribute value, status: 0x%08lX", err_code));
}
diff --git a/ports/nrf/common-hal/bleio/Device.c b/ports/nrf/common-hal/bleio/Device.c
index 195b6cd32..8e52b2fbc 100644
--- a/ports/nrf/common-hal/bleio/Device.c
+++ b/ports/nrf/common-hal/bleio/Device.c
@@ -297,7 +297,7 @@ STATIC bool discover_characteristics(bleio_device_obj_t *device, bleio_service_o
m_discovery_successful = false;
uint32_t err_code = sd_ble_gattc_characteristics_discover(device->conn_handle, &handle_range);
- if (err_code != 0) {
+ if (err_code != NRF_SUCCESS) {
return false;
}
diff --git a/shared-bindings/bleio/Device.c b/shared-bindings/bleio/Device.c
index 8c7cef95f..ec7121f54 100644
--- a/shared-bindings/bleio/Device.c
+++ b/shared-bindings/bleio/Device.c
@@ -144,6 +144,8 @@
//| Disconnects from the remote device.
//| This method can only be called for Peripheral devices.
//|
+
+// TODO: Add unique MAC address part to name
static const char default_name[] = "CIRCUITPY";
STATIC void bleio_device_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
diff --git a/shared-bindings/bleio/Service.c b/shared-bindings/bleio/Service.c
index a2f9b9899..3a4aa4737 100644
--- a/shared-bindings/bleio/Service.c
+++ b/shared-bindings/bleio/Service.c
@@ -115,6 +115,8 @@ STATIC mp_obj_t bleio_service_add_characteristic(mp_obj_t self_in, mp_obj_t char
characteristic->service_handle = self->handle;
+ // TODO: If service is 128b then update Chara UUID to be 128b too
+
common_hal_bleio_service_add_characteristic(self, characteristic);
mp_obj_list_append(self->char_list, characteristic);