Еще насчет библиотеки BLE у меня есть такое предположение (которое подтверждается на практике):
В настроиках библиотеки есть параметр BLE_BUFF_MAX_LEN, который (как описано в комментарии) связан с тем, какой ATT_MTU будет поддерживаться. При этом я убедился, что за connection interval не передается болше, чем указано в этом параметре. Переключение на PHY-2M не помогает. За connection interval передается только BLE_BUFF_MAX_LEN байт, да и то не всегда. Если будет выполнено соединение с устройством BLE ниже 4.2 (без поддержки DLE), то и этот объем данных не получится протащить.
Здесь будет уже играть роль ограничение по BLE_TX_NUM_EVENT - я экспериментально установил что за connection interval передается не более BLE_TX_NUM_EVENT + 1 пакетов.
Есть еще BLE_BUFF_NUM, который желательно установить = BLE_TX_NUM_EVENT + 1
т.е получается 2 ограничения на пропускную способность, которые действуют одновременно:
1. За connection interval может быть передано не более BLE_BUFF_MAX_LEN (или вернее - не более установленного при соединении ATT_MTU). Это судя по всему какое-то искусственное ограничения библиотеки BLE. Вывод - надо устанавливать это значение максимальным, чтобы было преимущество при соединениях с устройствами, поддерживающими ATT_MTU выше 23 байта.
2. Собственно физическое ограничение канала PHY-1M (PHY-2M не в счет). Чтобы упереться в это ограничение при определенных параметрах соединения, надо задаться - какой у вас может быть connection interval (для Win10 и своих устройств - 7.5мс, для Андроид - не помню, но там почти в 2 раза больше). Значение BLE_TX_NUM_EVENT нужно выбрать, исходя из того сколько пакетов размером 23 байта передается за 1 такой connection interval при PHY-1M. Не помню сейчас своих замеров, но у меня в настройках используется BLE_TX_NUM_EVENT = 4 (5 пакетов по 23 байта за 1 connection interval(7.5мс??? не помню). Больше не пролезало.
Если у вас connection interval более длинный, то имеет смысл увеличить BLE_TX_NUM_EVENT.
Использование PHY-2M не дает увеличения пропускной способности, ибо при его использовании вроде бы можно прогнать больше даннных за 1 connection interval, но тут вступает в действие ограничение по BLE_BUFF_MAX_LEN
Тем не менее я у себя выполняю переключение на PHY-2M, думаю что это полезно в плане времени занятия радио-каналов.
В настроиках библиотеки есть параметр BLE_BUFF_MAX_LEN, который (как описано в комментарии) связан с тем, какой ATT_MTU будет поддерживаться. При этом я убедился, что за connection interval не передается болше, чем указано в этом параметре. Переключение на PHY-2M не помогает. За connection interval передается только BLE_BUFF_MAX_LEN байт, да и то не всегда. Если будет выполнено соединение с устройством BLE ниже 4.2 (без поддержки DLE), то и этот объем данных не получится протащить.
Здесь будет уже играть роль ограничение по BLE_TX_NUM_EVENT - я экспериментально установил что за connection interval передается не более BLE_TX_NUM_EVENT + 1 пакетов.
Есть еще BLE_BUFF_NUM, который желательно установить = BLE_TX_NUM_EVENT + 1
т.е получается 2 ограничения на пропускную способность, которые действуют одновременно:
1. За connection interval может быть передано не более BLE_BUFF_MAX_LEN (или вернее - не более установленного при соединении ATT_MTU). Это судя по всему какое-то искусственное ограничения библиотеки BLE. Вывод - надо устанавливать это значение максимальным, чтобы было преимущество при соединениях с устройствами, поддерживающими ATT_MTU выше 23 байта.
2. Собственно физическое ограничение канала PHY-1M (PHY-2M не в счет). Чтобы упереться в это ограничение при определенных параметрах соединения, надо задаться - какой у вас может быть connection interval (для Win10 и своих устройств - 7.5мс, для Андроид - не помню, но там почти в 2 раза больше). Значение BLE_TX_NUM_EVENT нужно выбрать, исходя из того сколько пакетов размером 23 байта передается за 1 такой connection interval при PHY-1M. Не помню сейчас своих замеров, но у меня в настройках используется BLE_TX_NUM_EVENT = 4 (5 пакетов по 23 байта за 1 connection interval(7.5мс??? не помню). Больше не пролезало.
Если у вас connection interval более длинный, то имеет смысл увеличить BLE_TX_NUM_EVENT.
Использование PHY-2M не дает увеличения пропускной способности, ибо при его использовании вроде бы можно прогнать больше даннных за 1 connection interval, но тут вступает в действие ограничение по BLE_BUFF_MAX_LEN
Тем не менее я у себя выполняю переключение на PHY-2M, думаю что это полезно в плане времени занятия радио-каналов.