Метод .rplbuffrq
| Назначение: | Для выбранного сокета (выбор выполняется через sock.num) возвращает строку с «предварительным просмотром» данных из буфера RX. Данные из буфера НЕ удаляются. |
| Синтаксис: | sock.cmdbuffrq(numpages as {byte | word}) as {byte | word} |
| Возвращает: | Фактическое число страниц, которое можно выделить. |
| См. также: | sock.cmdbuffrq, sock.rplbuffsize |
| Параметр | Описание |
| numpages | Запрашиваемое число страниц буфера для выделения. На данный момент максимально допустимое значение - 255. |
Подробности
Буфер RPL - это буфер, в котором хранятся исходящие внутриполосные ответы (сообщения). Само выделение происходит при вызове метода sys.buffalloc. Если ёмкость буфера RPL равна 0, сокет не может отправлять внутриполосные ответы.
В отличие от буферов TX и RX, на 16-разрядных платформах нет свойства, которое возвращало бы фактическую ёмкость буфера RPL в байтах. Её можно вычислить как num_pages * 256 - X (или 0, если num_pages = 0), где "num_pages" - число страниц буфера, которое было ВЫДЕЛЕНО через sock.rplbuffrq. Вычитание X нужно потому, что часть байтов занимают внутренние переменные буфера. X = 17 байт на 16-разрядных платформах и 33 байта на 32-разрядных. Тип платформы указан в документации на вашу платформу.
Выделение буфера не сработает, если сокет, которому принадлежит буфер, не находится в состоянии простоя (sock.statesimple не равно 0 - PL_SSTS_CLOSED) в момент выполнения sys.buffalloc. Размеры буферов можно менять только у сокетов в состоянии простоя.
Буфер RPL нужен, только когда включены внутриполосные команды (sock.inbandcommands = 1 - YES).
У старых устройств объём ОЗУ был меньше, поэтому аргумент numpages и возвращаемое методом значение имели тип byte. Из-за этого число страниц не могло превышать 255. На новых устройствах с большим объёмом ОЗУ метод принимает и возвращает значения типа word. Посмотрите объявление метода на вашей платформе, чтобы узнать, какой тип данных он использует.
На данный момент максимальное число страниц, которое можно выделить для буфера RX, по-прежнему ограничено значением 255. В будущих версиях TiOS это ограничение будет снято.