Метод .cmdbuffrq

Назначение:Для выбранного сокета (выбор выполняется через sock.num) предварительно запрашивает numpages страниц буфера (1 страница = 256 байт) для буфера CMD этого сокета.
Синтаксис:sock.cmdbuffrq(numpages as {byte | word}) as {byte | word}
Возвращает:Фактическое число страниц, которое можно выделить.
См. также:sock.rplbuffrq, sock.cmdbuffsize

ПараметрОписание
numpagesЗапрашиваемое число страниц буфера для выделения. На данный момент максимально допустимое значение - 255.

Подробности

Буфер CMD накапливает входящие внутриполосные команды (сообщения). Метод возвращает фактическое число страниц, которое можно выделить. Само выделение происходит при вызове метода sys.buffalloc. Если ёмкость буфера CMD равна 0, сокет не может принимать внутриполосные команды. В отличие от буферов TX и RX, на 16-разрядных платформах нет свойства, которое возвращало бы фактическую ёмкость буфера CMD в байтах. Её можно вычислить как num_pages * 256 - X (или 0, если num_pages = 0), где "num_pages" - число страниц буфера, которое было ВЫДЕЛЕНО через метод sock.cmdbuffrq. Вычитание X нужно потому, что часть байтов занимают внутренние переменные буфера. X = 17 байт на 16-разрядных платформах и 33 байта на 32-разрядных. Тип платформы указан в документации на вашу платформу.

Выделение буфера не сработает, если сокет, которому принадлежит буфер, не находится в состоянии простоя (sock.statesimple не равно 0 - PL_SSTS_CLOSED) в момент выполнения sys.buffalloc. Размеры буферов можно менять только у сокетов в состоянии простоя.

Буфер CMD нужен, только когда включены внутриполосные команды (sock.inbandcommands = 1 - YES).

У старых устройств объём ОЗУ был меньше, поэтому аргумент numpages и возвращаемое методом значение имели тип byte. Из-за этого число страниц не могло превышать 255. На новых устройствах с большим объёмом ОЗУ метод принимает и возвращает значения типа word. Посмотрите объявление метода на вашей платформе, чтобы узнать, какой тип данных он использует.

Внимание

На данный момент максимальное число страниц, которое можно выделить для буфера RX, по-прежнему ограничено значением 255. В будущих версиях TiOS это ограничение будет снято.

Исходный материал Tibbo обновлён 12 сентября 2022Оригинал на docs.tibbo.com · Сообщить об ошибке