Ошибка чтения / записи в 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

У меня есть следующие вопросы:

  1. Могу ли я создать новые (определенные пользователем) атрибуты на устройстве?
  2. Могу ли я написать / изменить существующие атрибуты на устройстве?
  3. Если я собираюсь сохранить какие-либо данные на устройстве, как это можно сделать?

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, вы стираете всю свою постоянную флэш-информацию.

Другие вопросы по тегам