В общем я решил - не парить себе и окружающим мозги и сделать нормальную поддержку Client Characteristic Configuration descriptor.
У меня весь обмен от сервера к клиенту планируется делать нотификациями. Пусть клиент включает нотификацию, как положено.
Кстати - раз пошел разговор, то хочу представить на рассмотрение свой вариант (протокол над аттрибутами) обмена данными. Цель моего самопального протокола - работа по принципу "команда-ответ" с наибольшей пропускной способностью и наименьшими задержками.
Стандартные процедуры записи и чтения аттрибутов мне не нравятся тем, что на каждый запрос идет подтверждение, и если ATT_MTU будет маленьким (23 байта), это кардинально уменьшит и без того маленькую пропускную способность. Поэтому я планирую:
- Для выдачи команд использовать WRITE_NO_RESP - выдавать необходимое количество, на сервере их собирать и перезапрашивать если какие-то пакеты не дошли (в пакетах будет присутствовать идентификатор). Для перезапроса (и подтверждения приема всей команды) сервер будет использовать нотификации в спец формате.
- Для выдачи ответов использовать нотификации, поступать с ними так-же как описано выше - собирать на клиенте, перезапрашивать недостающие. Клиент для перезапросов будет использовать WRITE_NO_RESP в спец. формате.
Формат блоков у меня уже проработан. В этой части проблем быть не должно.
Интересует мнение знающих стандарт BLE - получится таким образом выжать бОльшую скорость??? Или может есть какие-то проблемы, которых я не вижу...
У меня весь обмен от сервера к клиенту планируется делать нотификациями. Пусть клиент включает нотификацию, как положено.
Кстати - раз пошел разговор, то хочу представить на рассмотрение свой вариант (протокол над аттрибутами) обмена данными. Цель моего самопального протокола - работа по принципу "команда-ответ" с наибольшей пропускной способностью и наименьшими задержками.
Стандартные процедуры записи и чтения аттрибутов мне не нравятся тем, что на каждый запрос идет подтверждение, и если ATT_MTU будет маленьким (23 байта), это кардинально уменьшит и без того маленькую пропускную способность. Поэтому я планирую:
- Для выдачи команд использовать WRITE_NO_RESP - выдавать необходимое количество, на сервере их собирать и перезапрашивать если какие-то пакеты не дошли (в пакетах будет присутствовать идентификатор). Для перезапроса (и подтверждения приема всей команды) сервер будет использовать нотификации в спец формате.
- Для выдачи ответов использовать нотификации, поступать с ними так-же как описано выше - собирать на клиенте, перезапрашивать недостающие. Клиент для перезапросов будет использовать WRITE_NO_RESP в спец. формате.
Формат блоков у меня уже проработан. В этой части проблем быть не должно.
Интересует мнение знающих стандарт BLE - получится таким образом выжать бОльшую скорость??? Или может есть какие-то проблемы, которых я не вижу...