Приоритеты программирования
DS поддерживает пять способов программирования: последовательный порт, out-of-band UDP, inband TCP, command-phase TCP и telnet-программирование. Inband и command-phase программирование в данном вопросе одинаковы, так как оба выполняются внутри TCP-соединения для данных. Поэтому ниже рассматриваются четыре способа: последовательный порт, out-of-band, inband/command-phase и telnet.
Поскольку все четыре способа могут использоваться одновременно, DS применяет механизм приоритетов. Он позволяет избежать конфликтов, которые возникли бы, если бы подключённое последовательное устройство и сетевые хосты одновременно попытались программировать DS.
Программирование через последовательный порт имеет наивысший приоритет. Любая команда, отправленная в DS через последовательный интерфейс (в режиме последовательного программирования), всегда принимается и обрабатывается*, независимо от того, выполняется ли в этот момент (или выполнялось ли ранее) какое-либо сетевое программирование.
Как описано в разделе аутентификация, все сетевые команды делятся на команды без аутентификации, команды с немедленной аутентификацией и команды, требующие предварительного входа с помощью команды Login (L), то есть команды, для которых должен быть открыт сеанс программирования.
Сетевые команды, не требующие аутентификации, можно отправлять в любое время и любым способом. Например, сетевая команда Echo (X) будет принята и обработана, даже если DS находится в режиме последовательного программирования.
Сетевые команды с немедленной аутентификацией можно отправлять в любое время и любым способом, если DS не находится в режиме последовательного программирования. Когда DS в этом режиме, такие команды отклоняются (код ответа R).
Для сетевых команд, требующих предварительного входа, действует следующая иерархия приоритетов:
- Последовательное программирование (наивысший приоритет)
- Сеанс программирования out-of-band
- Сеанс telnet-программирования
- Inband или сеанс command-phase программирования (наименьший приоритет)
Это следует понимать так:
- Сеанс программирования способом с меньшим приоритетом не может начаться, пока выполняется сеанс с большим приоритетом. Например, сеанс программирования out-of-band командами не может начаться, пока DS находится в режиме последовательного программирования. Сеанс программирования через TCP-соединение с telnet-портом не может начаться, пока выполняется out-of-band сеанс.
- Программирование с более высоким приоритетом может начаться в любой момент, даже если уже выполняется сеанс с меньшим приоритетом. В этом случае сеанс с меньшим приоритетом немедленно прерывается. Так, если out-of-band сеанс уже открыт и DS переходит в режим последовательного программирования, out-of-band сеанс прерывается.
- Открытый сеанс программирования не может быть прерван сеансом того же уровня приоритета. DS допускает несколько одновременных TCP-соединений с telnet-портом 23. Однако только одно из них может нести сеанс программирования в данный момент. Попытка входа через другое TCP-соединение с портом 23 будет отклонена, пока открыт предыдущий сеанс.
* Если эта команда вообще разрешена для отправки через последовательный порт. В таблице на странице команды, сообщения и ответы указано, какие команды можно отправлять через последовательный порт (см. столбец «S»).