ГОСТ Р ИСО/МЭК 8825-3—2016
D.2.7 Присутствие факультативного компонента в зависимости от некоторого внешнего условия
D.2.7.1 Присвоение АСН.1 равно:
ConditionalPresenceOnExternalCondition ::= SEQUENCE {
a BOOLEAN OPTIONAL
-
Условие:
"а"
присутствует, если сохраняется внешнее условие
’С ".
—
в противном случае "а" отсутствует
-
)
-
Отметим, что ограничение присутствия может добавляться только в комментарии.
D.2.7.2 Код приложения для передатчика и приемника может оценивать условие «С» от некоторой инфор
мации. не содержащейся в сообщении. Спецификатор ECN нуждается в инструментах для вызова такого кода при
определении присутствия «а», а не в использовании какого-либо бита в кодовой последовательности.
D.2.7.3 Присвоением объекта кодирования является:
conditionalPresenceOnExternalConditionEncoding «ConditionalPresenceOnExternalCondition ::= {
ENCODE STRUCTURE {
a USE-SET OPTIONAL-ENCODING is-a-present}
WITH PER-BASIC-UNALIGNED}
is-a-present «OPTIONAL ::=
NON-ECN-BEGIN (joint-iso-itu-t(2) asn1(1) ecn(4) examples(5) user-notation(7)}
extern C;
extern channel:
/* а
присутствует только, если канал эквивалентен некоторому значению
"С“ 7
int is_a_present() {
iffchannel
==
C) return 1;
else return 0 ;}
NON-ECN-END
D.2.7.4 Так как условие является внешним по отношению к сообщению, обьект кодирования для определе
ния присутствия компонента «а» может быть описан только не-ECN определением некоторого объекта кодиро
вания. Хотя это экономит биты в линии, многие разработчики, однако, могут считать, что лучше включать бит в
сообщение, чтобы уменьшить вероятность ошибки и облегчить тестирование и контроль. Этот выбор остается за
разработчиком ECN.
D.2.8 Список с переменной длиной
EnclosingStructureForListSEQUENCE {
list VariableLengthList}
VariableLengthList ::= SEQUENCE (SIZE (0..1023)) OF INTEGER (1..2)
- -
Обычно этот список содержит только
небольшое
число элементов (О
—
31). но мог бы содержать много.
D.2.8.2 PER basic unaligned кодирует длину списка с помощью 10 битов, даже если обычно длина находится
в диапазоне 0—31. Мы хотим минимизировать размер кодирования детерминанта длины в обычных случаях, раз
решая. тем не менее, значения, которые появляются реже.
D.2.8.3 Присвоением объекта кодирования является:
enclosingStructureForListEncoding «EnclosingStructureForList ::= {
USE «EnclosingStructureForListStruct
MAPPING FIELDS
WITH{
ENCODE STRUCTURE{
aux-length list-iengthEncoding.
list {
ENCODE STRUCTURE{
STRUCTURED WITH {
REPETITION-ENCODING {
REPETITION-SPACE
DETERMINED BY field-to-be-set
USING aux-length}}}
WITH PER-BASIC-UNALIGNED }}
WITH PER-BASIC-UNALIGNED}}
-
Первое отображение: использование структуры кодирования с
явным
детерминантом
178