Как объединить функциональность клиента и сервера BLE в одной программе на ESP32?

#c #bluetooth-lowenergy #esp32

#c #bluetooth-низкое энергопотребление #esp32

Вопрос:

Цель

Создайте приложение на ESP32, которое использует BLE для отправки и получения сообщений с других устройств ESP32, на которых запущена та же программа. Нет фиксированного центрального сервера. Как только ESP32 обменивается данными с другим, он должен занести недавно подключенные ESP32 в белый список и не связываться с ними в течение определенного периода времени.

Мой подход

Я предполагаю, что мне нужно будет переключаться между ролями клиента и сервера, чтобы иметь возможность достичь своей цели. Я планирую поддерживать массив с информацией о недавно подключенных устройствах ESP32 и устанавливать таймер для каждой записи, после чего эта конкретная запись будет удалена.

Проблема

Я попробовал пример BLE_client по умолчанию и пример BLE_server, но их объединение привело к тому, что мой код не работал должным образом, а теги ESP32 не соединялись друг с другом.

Что я могу сделать, чтобы мои устройства ESP32 переключались между ролями сервера и клиента?

Комментарии:

1. Посмотрите на этот вопрос на github. Кто-то реализовал сервер и клиент в одной программе: github.com/espressif/arduino-esp32/issues/3011#issue-470354794

2. Если это вам не поможет: не могли бы вы опубликовать свой код, пожалуйста?