diff options
author | Damien George <damien.p.george@gmail.com> | 2020-05-08 13:54:10 +1000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2020-05-11 21:30:41 +1000 |
commit | 3b6c9119eb3593d9a3af8474d7186541f08d849e (patch) | |
tree | ec6fe93a8d9657398d80eca6ff5ac1e257477847 /extmod/nimble/modbluetooth_nimble.c | |
parent | f385b7bfa86aa4657d4a28971a63b8681e1403e2 (diff) |
extmod/modbluetooth: Add support for changing the GAP device name.
This commit allows the user to set/get the GAP device name used by service
0x1800, characteristic 0x2a00. The usage is:
BLE.config(gap_name="myname")
print(BLE.config("gap_name"))
As part of this change the compile-time setting
MICROPY_PY_BLUETOOTH_DEFAULT_NAME is renamed to
MICROPY_PY_BLUETOOTH_DEFAULT_GAP_NAME to emphasise its link to GAP and this
new "gap_name" config value. And the default value of this for the NimBLE
bindings is changed from "PYBD" to "MPY NIMBLE" to be more generic.
Diffstat (limited to 'extmod/nimble/modbluetooth_nimble.c')
-rw-r--r-- | extmod/nimble/modbluetooth_nimble.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/extmod/nimble/modbluetooth_nimble.c b/extmod/nimble/modbluetooth_nimble.c index 9498e998b..69067e077 100644 --- a/extmod/nimble/modbluetooth_nimble.c +++ b/extmod/nimble/modbluetooth_nimble.c @@ -40,8 +40,8 @@ #include "nimble/nimble_port.h" #include "services/gap/ble_svc_gap.h" -#ifndef MICROPY_PY_BLUETOOTH_DEFAULT_NAME -#define MICROPY_PY_BLUETOOTH_DEFAULT_NAME "PYBD" +#ifndef MICROPY_PY_BLUETOOTH_DEFAULT_GAP_NAME +#define MICROPY_PY_BLUETOOTH_DEFAULT_GAP_NAME "MPY NIMBLE" #endif #define DEBUG_EVENT_printf(...) //printf(__VA_ARGS__) @@ -191,7 +191,7 @@ STATIC void sync_cb(void) { assert(rc == 0); } - ble_svc_gap_device_name_set(MICROPY_PY_BLUETOOTH_DEFAULT_NAME); + ble_svc_gap_device_name_set(MICROPY_PY_BLUETOOTH_DEFAULT_GAP_NAME); mp_bluetooth_nimble_ble_state = MP_BLUETOOTH_NIMBLE_BLE_STATE_ACTIVE; } @@ -352,6 +352,22 @@ void mp_bluetooth_get_device_addr(uint8_t *addr) { #endif } +size_t mp_bluetooth_gap_get_device_name(const uint8_t **buf) { + const char *name = ble_svc_gap_device_name(); + *buf = (const uint8_t *)name; + return strlen(name); +} + +int mp_bluetooth_gap_set_device_name(const uint8_t *buf, size_t len) { + char tmp_buf[MYNEWT_VAL(BLE_SVC_GAP_DEVICE_NAME_MAX_LENGTH) + 1]; + if (len + 1 > sizeof(tmp_buf)) { + return MP_EINVAL; + } + memcpy(tmp_buf, buf, len); + tmp_buf[len] = '\0'; + return ble_hs_err_to_errno(ble_svc_gap_device_name_set(tmp_buf)); +} + int mp_bluetooth_gap_advertise_start(bool connectable, int32_t interval_us, const uint8_t *adv_data, size_t adv_data_len, const uint8_t *sr_data, size_t sr_data_len) { if (!mp_bluetooth_is_active()) { return ERRNO_BLUETOOTH_NOT_ACTIVE; |