Espruino:Справочник по API/Класс NRF/updateServices()

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Функция NRF.updateServices()[1]

Синтаксис

NRF.updateServices(data)

Параметры

  • data – сервис (и характеристики), которые надо обновить

Возвращаемое значение

Описание

Обновляет значения сервисов и характеристик, которые Espruino рассылает в своих пакетах объявлений. Это затронет только те сервисы и характеристики, которые ранее были объявлены с помощью функции NRF.setServices().

Чтобы обновить значение в характеристике '0xABCD' сервиса '0xBCDE', сделайте следующее:

NRF.updateServices({
  0xBCDE : {
    0xABCD : {
      value : "Мир"
    }
  }
});

Вы также можете задавать 128-битные UUID вроде "b7920001-3c1b-4b40-869f-3c0db9be80c6".

Чтобы задать сервис и характеристику, а также сделать так, чтобы подключенным клиентам сообщали об этом изменении при нажатии на кнопку, сделайте следующее:

NRF.setServices({
  0xBCDE : {
    0xABCD : {
      value : "Привет",
      maxLen : 20,
      notify: true
    }
  }
});
setWatch(function() {
  NRF.updateServices({
    0xBCDE : {
      0xABCD : {
        value : "Мир!",
        notify: true
      }
    }
  });
}, BTN, { repeat:true, edge:"rising", debounce: 50 });

Это работает, только если характеристика была создана при помощи NRF.setServices() с использованием настройки notify: true. В противном случае характеристика будет обновлена, но без уведомления.

Также обратите внимание, что в коде была задана настройка maxLen. Если бы ее не было, максимальным размером характеристики было бы «6» (это размер "Привет").

Чтобы сообщить (т.е. уведомить с помощью ACK) подключенных клиентов об изменении в характеристике '0xABCD' сервиса '0xBCDE', сделайте следующее:

NRF.updateServices({
  0xBCDE : {
    0xABCD : {
      value : "Мир",
      indicate: true
    }
  }
});

Это работает, только если характеристика была создана при помощи NRF.setServices() с использованием настройки indicate: true. В противном случае характеристика будет обновлена, но уведомления отправлено не будет.

Примечание: Дополнительную информацию ищите в описании NRF.setServices().

Примеры

См.также

Внешние ссылки