Выделение памяти под буфер
Для объекта wln. нужен один буфер. Он используется для формирования исходящих пакетов и необходим для правильной работы. Напрямую с этим буфером работать не приходится - им управляет сам объект wln..
Память под буфер выделяется страницами. Страница - это 256 байт памяти. Выделение памяти под буфер состоит из двух шагов: сначала нужно запросить определённый объём (число страниц), а затем выполнить само выделение. Нужный размер в страницах запрашивается методом wln.buffrq.
Метод выделения (sys.buffalloc) применяется ко всем ранее заданным буферам, включая буферы других объектов:
Dim x As Byte
x = wln.buffrq(5) ' request 5 pages for the wln buffer. X will then contain how many can actually be allocated
' .... Allocation requests for buffers of other objects...
sys.buffalloc 'perform actual memory allocation, as per previous requests
Запрошенный объём памяти вы получите не всегда. Память - ресурс не бесконечный, и если вы уже запросили (и получили) 95% памяти платформы, то на следующий запрос достанется максимум 5%, даже если вы просили 10%.
Текущий размер буфера объекта wln. в байтах всегда можно узнать из свойства wln.buffsize (только чтение).
Обратите внимание: размер буфера объекта wln. нельзя менять, если оборудование Wi-Fi уже загружено (wln.enabled = 1 - YES).
Сколько страниц отдать буферу
Размер буфера напрямую определяет максимальный размер сетевых пакетов, которые сможет отправлять объект wln. (к входящим пакетам этот буфер отношения не имеет). До 100 байт буфера нужно для разных заголовков пакетов, остальное доступно для полезной нагрузки. Например, если под буфер выделено 2 страницы, его размер составляет 512 байт, и максимальная полезная нагрузка не может превышать 412 байт. То есть каждый отправленный пакет TCP, UDP и т. д. вместе с заголовками протоколов не превысит 412 байт.
Для обмена по TCP размер отдельных пакетов не так критичен. Прелесть TCP в том, что он работает практически с любым доступным объёмом буфера. Теоретически чем больше буфер, тем выше пропускная способность TCP. На деле улучшение производительности TCP перестаёт ощущаться, когда размер буфера объекта wln. превышает примерно 3 страницы.
С UDP всё совсем иначе. Если вы хотите отправлять датаграммы UDP определённого размера, нужно убедиться, что буфер объекта wln. создан достаточного размера.
В любом случае TiOS не отправляет пакеты TCP или UDP с полезной нагрузкой более 1 024 байт (4 страницы). Это внутреннее ограничение самой TiOS. С учётом заголовков TCP/UDP и Wi-Fi всё равно укладываемся в 5 страниц. Поэтому задавать буфер объекта wln. больше 5 страниц нет смысла.