summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Matocha <kmatocha@icloud.com>2020-08-21 14:14:38 -0500
committerKevin Matocha <kmatocha@icloud.com>2020-08-21 14:14:38 -0500
commit3747ea29c2d9b366f7a5eacb7411eace8336424c (patch)
tree102b6667866c93f6cf50d0bcfcecefe1b66b2607
parent14f5d03b6dd947bd82d2daf88ca398d7d3b44930 (diff)
parent98469322b7d35748f0f2cb03cc5bd4d470ea6339 (diff)
Merge remote-tracking branch 'source/main' into main
-rw-r--r--locale/circuitpython.pot6
-rw-r--r--ports/nrf/common-hal/_bleio/Adapter.c11
-rw-r--r--shared-bindings/_bleio/Adapter.c12
-rw-r--r--shared-bindings/_bleio/Adapter.h1
4 files changed, 27 insertions, 3 deletions
diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot
index 32b5df5ee..a1b286e2e 100644
--- a/locale/circuitpython.pot
+++ b/locale/circuitpython.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-11 15:37-0500\n"
+"POT-Creation-Date: 2020-08-14 09:36-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -641,6 +641,10 @@ msgstr ""
msgid "Could not restart PWM"
msgstr ""
+#: shared-bindings/_bleio/Adapter.c
+msgid "Could not set address"
+msgstr ""
+
#: ports/stm/common-hal/pulseio/PWMOut.c
msgid "Could not start PWM"
msgstr ""
diff --git a/ports/nrf/common-hal/_bleio/Adapter.c b/ports/nrf/common-hal/_bleio/Adapter.c
index 0b23bb7bf..6d6669c5e 100644
--- a/ports/nrf/common-hal/_bleio/Adapter.c
+++ b/ports/nrf/common-hal/_bleio/Adapter.c
@@ -386,6 +386,17 @@ bleio_address_obj_t *common_hal_bleio_adapter_get_address(bleio_adapter_obj_t *s
return address;
}
+bool common_hal_bleio_adapter_set_address(bleio_adapter_obj_t *self, bleio_address_obj_t *address) {
+ ble_gap_addr_t local_address;
+ mp_buffer_info_t bufinfo;
+ if (!mp_get_buffer(address->bytes, &bufinfo, MP_BUFFER_READ)) {
+ return false;
+ }
+ local_address.addr_type = address->type;
+ memcpy(local_address.addr, bufinfo.buf, NUM_BLEIO_ADDRESS_BYTES);
+ return sd_ble_gap_addr_set(&local_address) == NRF_SUCCESS;
+}
+
mp_obj_str_t* common_hal_bleio_adapter_get_name(bleio_adapter_obj_t *self) {
uint16_t len = 0;
sd_ble_gap_device_name_get(NULL, &len);
diff --git a/shared-bindings/_bleio/Adapter.c b/shared-bindings/_bleio/Adapter.c
index 7a44d560f..3ffe65be3 100644
--- a/shared-bindings/_bleio/Adapter.c
+++ b/shared-bindings/_bleio/Adapter.c
@@ -96,7 +96,7 @@ const mp_obj_property_t bleio_adapter_enabled_obj = {
};
//| address: Address
-//| """MAC address of the BLE adapter. (read-only)"""
+//| """MAC address of the BLE adapter."""
//|
STATIC mp_obj_t bleio_adapter_get_address(mp_obj_t self) {
return MP_OBJ_FROM_PTR(common_hal_bleio_adapter_get_address(self));
@@ -104,10 +104,18 @@ STATIC mp_obj_t bleio_adapter_get_address(mp_obj_t self) {
}
MP_DEFINE_CONST_FUN_OBJ_1(bleio_adapter_get_address_obj, bleio_adapter_get_address);
+STATIC mp_obj_t bleio_adapter_set_address(mp_obj_t self, mp_obj_t new_address) {
+ if (!common_hal_bleio_adapter_set_address(self, new_address)) {
+ mp_raise_bleio_BluetoothError(translate("Could not set address"));
+ }
+ return mp_const_none;
+}
+MP_DEFINE_CONST_FUN_OBJ_2(bleio_adapter_set_address_obj, bleio_adapter_set_address);
+
const mp_obj_property_t bleio_adapter_address_obj = {
.base.type = &mp_type_property,
.proxy = { (mp_obj_t)&bleio_adapter_get_address_obj,
- (mp_obj_t)&mp_const_none_obj,
+ (mp_obj_t)&bleio_adapter_set_address_obj,
(mp_obj_t)&mp_const_none_obj },
};
diff --git a/shared-bindings/_bleio/Adapter.h b/shared-bindings/_bleio/Adapter.h
index 39147b6eb..352373357 100644
--- a/shared-bindings/_bleio/Adapter.h
+++ b/shared-bindings/_bleio/Adapter.h
@@ -42,6 +42,7 @@ extern bool common_hal_bleio_adapter_get_enabled(bleio_adapter_obj_t *self);
extern void common_hal_bleio_adapter_set_enabled(bleio_adapter_obj_t *self, bool enabled);
extern bool common_hal_bleio_adapter_get_connected(bleio_adapter_obj_t *self);
extern bleio_address_obj_t *common_hal_bleio_adapter_get_address(bleio_adapter_obj_t *self);
+extern bool common_hal_bleio_adapter_set_address(bleio_adapter_obj_t *self, bleio_address_obj_t *address);
extern mp_obj_str_t* common_hal_bleio_adapter_get_name(bleio_adapter_obj_t *self);
extern void common_hal_bleio_adapter_set_name(bleio_adapter_obj_t *self, const char* name);