#bluetooth-lowenergy #uart #movesense
#bluetooth-низкое энергопотребление #uart #movesense
Вопрос:
Я хочу использовать BLE UART (модуль BleNordicUART) с моей пользовательской прошивкой для печати простых отладочных выходных данных (у меня нет приспособления для программирования). Я не нашел никакой информации о BLE UART в вики или источниках. Я могу найти службу BLE UART и подключиться к ней со своего устройства Android, но никаких данных не получено.
Кто-нибудь может помочь?
Спасибо
Ответ №1:
Альтернативой использованию BLE Nordic UART является DebugService, который может предоставлять вам отладочные сообщения в режиме реального времени, а также сохранять их в EEPROM для последующего извлечения.
Документации по этому вопросу все еще немного (см.: debug.yaml в MovesenseCoreLib) но вот краткая версия:
Для записи отладочного сообщения (информационного уровня) в коде (см.: DebugLogger.hpp для других уровней):
DebugLogger::info("stateChange DOUBLETAP: newState = %d", stateChange.newState);
Для получения сообщений отладки через BLE:
-
Подпишитесь на path /System /Debug/{Level} где {Level} является одним из:
- ‘Фатальный’: 0
- ‘Ошибка’: 1
- «Предупреждение»: 2
- «Информация»: 3
- «Подробный»: 4
Для сохранения сообщений отладки в EEPROM необходимо определить область памяти для использования вApp.cpp и убедитесь, что он не перекрывается с памятью журнала. Пример определения (16 КБ для отладки, остальное для журнала):
// Define 16kB DEBUG message area
// NOTE: If building a simulator build, these macros are obligatory!
DEBUGSERVICE_BUFFER_SIZE(6, 120); // 6 lines, 120 characters total
DEBUG_EEPROM_MEMORY_AREA(true, 0, 16384)
// Rest of the EEPROM is for Logbook
LOGBOOK_MEMORY_AREA(16384, (384 * 1024)-16384);
… и настройте минимальный уровень для сохранения в EEPROM с помощью /System/Debug /Log /Config.
Чтобы извлечь записи из EEPROM, зайдите в / System / Debug /Log с объектом запроса, который содержит максимальную временную метку (в Movesense > = 1.9 используйте «Id») для выборки (GET возвращает максимум 4-6 записей за раз, поэтому вам придется вызывать его повторно, чтобы получить все записи).
Полное раскрытие: Я работаю в команде Movesense
Ответ №2:
Найдена функция send_ble_nus_data() в BleController.hpp.