Измените размер iOS BLE MTU на 512 (SWIFT)

Есть ли способ изменить значение MTU на iOS со значения по умолчанию на произвольное значение?

Как и в Android, можно сделать requestMTU(512).

Спасибо


person zorro    schedule 14.07.2021    source источник
comment
Нет, mtu изменить нельзя.   -  person Paulw11    schedule 14.07.2021
comment
Вот еще один вопрос об изменении MTU на iOS: stackoverflow.com/questions/58525818/, он также получил комментарий от @Paulw11;)   -  person Michael Kotzjan    schedule 14.07.2021
comment
Согласно моему комментарию к этому другому вопросу, вы можете использовать L2Cap, если вам нужно передавать большие объемы данных.   -  person Paulw11    schedule 14.07.2021
comment
@Paulw11 Paulw11 позволит ли мне использовать характеристики уведомлений BLE и т. д.? Мой вариант использования заключается в том, что у меня есть периферийное устройство BLE, которое отправляет мне данные большего размера, чем разрешено iOS MTU, и эти данные на моем центральном устройстве усекаются до 182 байтов.   -  person zorro    schedule 14.07.2021
comment
L2Cap — это потоковый протокол, отличный от GATT. Если вы хотите придерживаться GATT, вам нужно будет отправить свои данные через несколько обновлений.   -  person Paulw11    schedule 14.07.2021


Ответы (1)


Нет, MTU на iOS устанавливается автоматически, максимальное значение — 185. Это хороший ответ на ваш вопрос: https://stackoverflow.com/a/42336001/10380092

Примечание: вы можете получить значение MTU таким образом (оно будет на 3 байта меньше, чем MTU ATT):

connectedPeripheral.maximumWriteValueLength(for: .withoutResponse)

Важно использовать параметр .withoutResponse, потому что .withResponse всегда будет возвращать 512 (при записи с ответом iOS автоматически выбирает подход: одиночная запись, если данные короче MTU, или запись в очереди, если данные больше MTU).

person alexander.cpp    schedule 15.07.2021