Определяет общие поля заголовка AVTPDU для датаграмм IEEE 1722 в модуле Raw Data Stream.
Контекст
В AUTOSAR Adaptive Platform модуль Raw Data Stream (RDS) предоставляет механизмы для эффективного обмена неструктурированными потоками данных и стандартизированными протоколами потоковой передачи. Класс ara::rds::IEEE1722DatagramAVTPDUCommonHeaderFields служит внутри этого модуля базовым представлением общих полей заголовка (Common Header Fields) для Audio/Video Transport Protocol Data Units (AVTPDUs) согласно IEEE 1722, как специфицировано в SWS RawDataStream §1 «IEEE 1722 Datagram».
Структура инкапсулирует основные поля протокола, определенные для датаграмм AVTPDU в стандарте IEEE 1722. Сюда относится атрибут version типа std::uint8_t ([SWS_RDS_90232]), отображающий версию протокола стандарта AVTP. Кроме того, поле данных avtpStreamDataSubtype типа std::uint16_t ([SWS_RDS_90230]) принимает подтип полезной нагрузки потоковой передачи AVTP для идентификации конкретного формата транспортируемых потоков данных. Дополнительно элемент headerSpecific в виде std::uint8_t ([SWS_RDS_90231]) хранит специфичные для протокола и формата управляющие биты и флаги заголовка AVTPDU.
Все поля полезных данных класса объявлены с модификатором доступа protected. Из этого следует интерпретация, что ara::rds::IEEE1722DatagramAVTPDUCommonHeaderFields, вероятно, спроектирован преимущественно как фундаментальный базовый класс для специализированных классов датаграмм IEEE 1722 внутри модуля RDS, а не для непосредственного инстанцирования пользователями в качестве самостоятельного объекта-значения. Вопрос Q-674fc96343869829 (открытый)
Жизненный цикл
Жизненный цикл ara::rds::IEEE1722DatagramAVTPDUCommonHeaderFields ориентирован на роль фундаментальной структуры заголовка. Инстанцирование происходит в связке с конкретной специализацией, наследующей от этого базового класса. Присвоение и инициализация защищенных атрибутов version ([SWS_RDS_90232]), avtpStreamDataSubtype ([SWS_RDS_90230]) и headerSpecific ([SWS_RDS_90231]) обычно выполняются в конструкторе производного класса.
Для уничтожения экземпляров спецификация явно предоставляет виртуальный деструктор: ~IEEE1722DatagramAVTPDUCommonHeaderFields() noexcept ([SWS_RDS_90233]). Наличие этого виртуального деструктора гарантирует, что производные объекты датаграмм могут быть безопасно полиморфно уничтожены через указатели или ссылки на базовый класс без риска неопределенного поведения или утечек ресурсов. Спецификатор noexcept контрактно гарантирует, что в процессе деструкции не могут быть сгенерированы исключения.
В вопросах владения и управления памятью класс подчиняется общим соглашениям для объектов передачи данных в модуле RDS: экземпляры обычно либо размещаются на стеке обрабатывающей функции, либо управляются вышестоящими буферами данных и обработчиками потоков. В отношении параллелизма структура данных не предоставляет внутренних механизмов синхронизации. Интерпретация: одновременный доступ нескольких потоков к одному и тому же экземпляру, следовательно, предположительно требует внешней синхронизации со стороны вызывающего приложения или окружающей среды выполнения. Вопрос (открытый)
Путь использования
Типичный путь использования подразделяется на создание, заполнение и анализ датаграмм в рамках потоковых соединений. Поскольку поля защищены, разработчики обращаются к базовым полям через специализированные подклассы.
При отправке потока данных IEEE 1722 приложение или внутренний конвейер модуля RDS инстанцирует производный класс датаграммы. Затем заполняются общие поля заголовка AVTPDU: поле version ([SWS_RDS_90232]) устанавливается на соответствующее поддерживаемое состояние версии протокола. Полю avtpStreamDataSubtype ([SWS_RDS_90230]) присваивается кодовое значение конкретного типа полезной нагрузки, чтобы предоставить получателю возможность декодирования потока данных. Наконец, производная реализация конфигурирует поле headerSpecific ([SWS_RDS_90231]) требуемыми управляющими контрольными битами согласно спецификации IEEE 1722.
При приеме сетевых пакетов через Raw Data Stream выполняется обратная последовательность действий: входящие сырые данные десериализуются и переносятся в соответствующие атрибуты производного класса датаграммы. Вышестоящие компоненты могут затем через полиморфные интерфейсы или типизированные методы доступа подкласса проверить информацию заголовка. После успешной обработки и пересылки полезной нагрузки AVTPDU целевому приемнику датаграмма освобождается, при этом виртуальный деструктор ([SWS_RDS_90233]) обеспечивает корректное освобождение всех ресурсов. Интерпретация: сериализованная передача по сети выполняется, предположительно, через расположенные ниже по потоку сериализаторы стека RDS, которые размещают заголовок в байтовом потоке в соответствии с IEEE 1722. Вопрос Q-7f31ac02b5e4facf (открытый)
Сценарии ошибок
Сценарии ошибок при работе с ara::rds::IEEE1722DatagramAVTPDUCommonHeaderFields возникают главным образом из-за некорректных значений в полях заголовка или ненадлежащего управления жизненным циклом.
На уровне элементов данных недопустимые значения могут приводить к нарушениям протокола. Если, например, для version ([SWS_RDS_90232]) передается значение версии, не поддерживаемое удаленной стороной, это может повлечь за собой отбрасывание всего AVTPDU коммуникационным партнером. Точно так же некорректно установленное поле avtpStreamDataSubtype ([SWS_RDS_90230]) приводит к тому, что получатель не может правильно сопоставить поток данных с подходящим декодером. Несогласованное заполнение headerSpecific ([SWS_RDS_90231]), в свою очередь, может вызвать неверную интерпретацию флагов синхронизации или длины данных.
На уровне C++ виртуальный деструктор ~IEEE1722DatagramAVTPDUCommonHeaderFields() noexcept ([SWS_RDS_90233]) исключает возникновение исключений во время процесса уничтожения. Если производный класс выполняет собственную логику обработки ошибок при освобождении ресурсов, необходимо гарантировать, что исключения не будут выброшены и там, во избежание немедленного аварийного завершения программы через std::terminate.
Настоящее руководство основано на спецификации AUTOSAR Adaptive R25-11 и создано автоматически.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал