Ошибка чтения / записи в BGAPI для модулей BLE112 от BlueGiga
Я пытаюсь установить связь между платой BLE112 и BLE112 Smart Dongle от BlueGiga.
Эти два поддерживают набор AT-команд.
Мне удалось выполнить сопряжение между этими двумя инструментами BLEGUI, как показано на скриншоте ниже.
Для операций чтения консоль показывает следующее:
ble_cmd_attclient_read_by_handle connection: 0 chrhandle: 3
TX: 00030404000300
ble_rsp_attclient_read_by_handle connection: 0 result: 0 ['No Error']
RX: 00030404000000
ble_evt_attclient_attribute_value connection: 0 atthandle: 3 type: 0 value:426c75656769676120554152542044656d6f
RX: 801704050003000012426c75656769676120554152542044656d6f
Вышеуказанные строки означают, что Клиент (USB-ключ BLED112) может прочитать 3-е значение атрибута, хранящееся на Сервере (плата BLE112). Это значение было прямо там с тех пор, как я его получил.
Теперь ниже часть показывает, что я пытался прочитать 7-й атрибут, которого не было на устройстве, но я намерен создать. Поскольку команда followinf read была написана мной непосредственно на консоль BLEGUI, она выглядит иначе, чем то, что выглядело бы, если бы она была отправлена через кнопки, присутствующие на BLEGUI.
ble_cmd_attclient_read_by_handle 0 7
TX: 00030404000700
ble_rsp_attclient_read_by_handle connection: 0 result: 0 ['No Error']
RX: 00030404000700
ble_evt_attclient_procedure_completed connection: 0 result: 401 ['The attribute handle given was not valid on this server']chrhandle: 7
RX: 800504010001040700
У меня есть следующие вопросы:
- Могу ли я создать новые (определенные пользователем) атрибуты на устройстве?
- Могу ли я написать / изменить существующие атрибуты на устройстве?
- Если я собираюсь сохранить какие-либо данные на устройстве, как это можно сделать?
2 ответа
Да, вы можете создавать и загружать свои собственные прошивки на плату BLE112 с определенными вами услугами и характеристиками. Хорошим руководством по этому процессу является примечание к приложению Bluegiga "Разработка вашего первого приложения Bluetooth Smart", которое можно найти здесь: BLE112 Документация и программное обеспечение
Что касается хранения данных, BLE112 имеет постоянное хранилище, где вы можете хранить пары (ключ, значение). Ознакомьтесь с документом "Справочник по программному обеспечению Bluetooth Smart Software", чтобы узнать, как получить к нему доступ. Этот документ также можно найти по ссылке выше.
Для тех, кто рассмотрит этот вопрос позже, я постараюсь добавить пример кода.
Могу ли я создать новые (определенные пользователем) атрибуты на устройстве?
Могу ли я написать / изменить существующие атрибуты на устройстве?
@stathisv поместил ссылки на документацию Bluegiga, но вот несколько практических примеров: https://github.com/sureshjoshi/ble113-firmware-examples
Вам нужно отредактировать gatt.xml, определить сервис (или использовать существующий) и определить характеристику. Например:
<service uuid="aaa51666-e7cb-469b-8e4d-2742f1ba7aaa" advertise="true">
<characteristic uuid="0dddd780-b042-4876-aae1-112855353ddd" id="xgatt_who">
<description>Who Am I</description>
<properties read="true" notify="true" />
<value length="1" />
</characteristic>
</service>
Если я собираюсь сохранить какие-либо данные на устройстве, как это можно сделать?
Я написал компилируемый пример здесь: https://github.com/sureshjoshi/ble113-firmware-examples/tree/master/Persistence, но основы так же просты, как две команды API:
# Write value to PS-store
call flash_ps_save($8000, 2, value_data(0:2))
# Read value from PS-store
call flash_ps_load($8000)(read_result, len, data(0:2))
Единственный реальный трюк - это 8000 долларов, которые являются первым используемым (постоянным) адресом памяти согласно документации Bluegiga.
Обратите внимание, что если вы перезаписываете прошивку BLE112/BLE113, либо с помощью CC-Debugger, либо с помощью программирования OTA, вы стираете всю свою постоянную флэш-информацию.