summaryrefslogtreecommitdiff
path: root/ports/nrf/common-hal/bleio
diff options
context:
space:
mode:
authorDan Halbert <halbert@halwitz.org>2019-06-13 21:55:07 -0400
committerDan Halbert <halbert@halwitz.org>2019-06-13 21:55:07 -0400
commitbed6d43a768838fd3bc5d2048bf7acdc6e9b0a33 (patch)
tree814683e585940b502d4e47f8556a69045729c77a /ports/nrf/common-hal/bleio
parent6fed24e1b6fce58f2c06328b9bc8b8f9d9512b42 (diff)
parent6be7cf7440acb827d4b0f767b6083a859499b045 (diff)
merge from upstream; WIP redo Address; no more AddressType
Diffstat (limited to 'ports/nrf/common-hal/bleio')
-rw-r--r--ports/nrf/common-hal/bleio/Adapter.c10
-rw-r--r--ports/nrf/common-hal/bleio/Peripheral.c1
-rw-r--r--ports/nrf/common-hal/bleio/Scanner.c5
3 files changed, 7 insertions, 9 deletions
diff --git a/ports/nrf/common-hal/bleio/Adapter.c b/ports/nrf/common-hal/bleio/Adapter.c
index 540659aa1..120fcf055 100644
--- a/ports/nrf/common-hal/bleio/Adapter.c
+++ b/ports/nrf/common-hal/bleio/Adapter.c
@@ -136,17 +136,15 @@ void common_hal_bleio_adapter_get_address(bleio_address_obj_t *address) {
uint32_t err_code;
common_hal_bleio_adapter_set_enabled(true);
-
-#if (BLE_API_VERSION == 2)
- err_code = sd_ble_gap_address_get(&local_address);
-#else
err_code = sd_ble_gap_addr_get(&local_address);
-#endif
if (err_code != NRF_SUCCESS) {
mp_raise_OSError_msg(translate("Failed to get local address"));
}
address->type = local_address.addr_type;
- memcpy(address->value, local_address.addr, BLEIO_ADDRESS_BYTES);
+
+ mp_buffer_info_t buf_info;
+ mp_get_buffer_raise(address, &buf_info, MP_BUFFER_READ);
+ memcpy(address->bytes, buf_info.buf, NUM_BLEIO_ADDRESS_BYTES);
}
diff --git a/ports/nrf/common-hal/bleio/Peripheral.c b/ports/nrf/common-hal/bleio/Peripheral.c
index e522b50d2..e59676fde 100644
--- a/ports/nrf/common-hal/bleio/Peripheral.c
+++ b/ports/nrf/common-hal/bleio/Peripheral.c
@@ -32,6 +32,7 @@
#include "ble_drv.h"
#include "ble_hci.h"
#include "nrf_soc.h"
+#include "py/gc.h"
#include "py/objstr.h"
#include "py/runtime.h"
#include "shared-bindings/bleio/Adapter.h"
diff --git a/ports/nrf/common-hal/bleio/Scanner.c b/ports/nrf/common-hal/bleio/Scanner.c
index b76caaf21..08600bc0a 100644
--- a/ports/nrf/common-hal/bleio/Scanner.c
+++ b/ports/nrf/common-hal/bleio/Scanner.c
@@ -51,15 +51,14 @@ STATIC void on_ble_evt(ble_evt_t *ble_evt, void *scanner_in) {
return;
}
- // TODO: Don't add new entry for each item, group by address and update
bleio_scanentry_obj_t *entry = m_new_obj(bleio_scanentry_obj_t);
entry->base.type = &bleio_scanentry_type;
entry->rssi = report->rssi;
+ memcpy(entry->address.bytes, report->data.p_data, NUM_BLEIO_ADDRESS_BYTES);
entry->address.type = report->peer_addr.addr_type;
- memcpy(entry->address.value, report->peer_addr.addr, BLEIO_ADDRESS_BYTES);
- entry->data = mp_obj_new_bytearray(report->data.len, report->data.p_data);
+ entry->data = mp_obj_new_bytes(report->data.p_data, report->data.len);
mp_obj_list_append(scanner->adv_reports, entry);