Инкапсулирует общие поля заголовка, такие как временные метки и порядковые номера, для потоков AVTPDU IEEE 1722 в виде опциональных значений.
Контекст
Класс ara::rds::IEEE1722DatagramAVTPDUCommonStreamHeaderFields предоставляет в модуле Raw Data Stream (rds) платформы AUTOSAR Adaptive Platform общее представление полей заголовка потока для датаграмм AVTPDU IEEE 1722 SWS RawDataStream с. 1. Он подключается через заголовочный файл #include "ara/rds/raw_data_stream_IEEE1722.h" и формирует стандартизированную основу для обработки Audio/Video Transport Protocol Data Units (AVTPDU) через потоки данных на базе Ethernet. Все определенные в спецификации переменные протокола снабжены модификатором доступа protected ([SWS_RDS_90235], [SWS_RDS_90236], [SWS_RDS_90237], [SWS_RDS_90238], [SWS_RDS_90239], [SWS_RDS_90240], [SWS_RDS_90241]). Интерпретация: это указывает на то, что класс спроектирован как базовый класс наследования для специализированных типов датаграмм и, вероятно, не предназначен для прямого использования в качестве самостоятельного объекта в коде приложения. Вопрос Q-11a6ac64bcd3c7d8 (открытый)
Класс объединяет атрибуты протокола потока IEEE 1722 AVTP. К ним относятся порядковый номер sequenceNum [SWS_RDS_90240] для отслеживания очередности пакетов, временная метка avtp_timestamp типа ara::tsync::Timestamp [SWS_RDS_90237] для временной привязки в синхронизированной сети, а также флаг неопределенности времени tu [SWS_RDS_90241]. Дополнительные поля заголовка, такие как MAC-адрес, идентификатор и флаги, дополняют кадр протокола ([SWS_RDS_90235], [SWS_RDS_90236], [SWS_RDS_90238], [SWS_RDS_90239]). Последовательная инкапсуляция каждого поля данных в ara::core::Optional учитывает, что в зависимости от варианта формата AVTPDU не все поля обязательно должны быть заполнены.
Жизненный цикл
Инстанцирование и время жизни общих полей заголовка напрямую связаны с соответствующим производным классом датаграммы. Поскольку члены объявлены как protected, они обычно создаются в конструкторе специализированного подкласса, как только принимается поток AVTPDU или выполняется его сборка для отправки SWS RawDataStream с. 1.
Для надлежащего уничтожения класс объявляет виртуальный деструктор с идентификатором ~IEEE1722DatagramAVTPDUCommonStreamHeaderFields() noexcept [SWS_RDS_90242]. За счет виртуальности гарантируется, что при удалении датаграммы через указатель на базовый класс происходит полный вызов деструктора производного экземпляра. Обозначение как noexcept гарантирует, что при уничтожении не будут генерироваться исключения.
В отношении параллелизма класс не предоставляет механизмов синхронизации. Интерпретация: потокобезопасный доступ к защищенным членам при параллельной обработке, предположительно, должен обеспечиваться вышестоящими механизмами использующих уровней. Вопрос (открытый)
Путь использования
На практике использование обычно происходит в соответствии со следующей последовательностью:
- Создание и заполнение: производный класс датаграммы инстанцирует структуру заголовка. При отправке он заполняет необходимые поля
ara::core::Optional, например порядковый номер sequenceNum [SWS_RDS_90240] и временную метку AVTP avtp_timestamp [SWS_RDS_90237].
- Обработка в тракте приема: входящие необработанные данные десериализуются и присваиваются атрибутам. Логика обработки проверяет наличие опциональных значений и обрабатывает, например, тайминг по временной метке синхронизации [SWS_RDS_90237] или отбрасывает дублированные пакеты на основе
sequenceNum [SWS_RDS_90240].
- Освобождение: после обработки потока экземпляр очищается через деструктор [SWS_RDS_90242].
Сценарии ошибок
Для данного класса в спецификации не определены конкретные коды ошибок или типы исключений. Возможные ошибочные состояния ограничиваются обращением с опциональными полями данных и условиями интерфейсов:
Поскольку все поля инкапсулированы как ara::core::Optional ([SWS_RDS_90235], [SWS_RDS_90236], [SWS_RDS_90237], [SWS_RDS_90238], [SWS_RDS_90239], [SWS_RDS_90240], [SWS_RDS_90241]), перед обращением к их значению необходимо убедиться, что поле корректно заполнено. Непроверенный прямой доступ к пустому объекту Optional приводит к некорректному поведению.
Деструктор объявлен как noexcept [SWS_RDS_90242]. Таким образом, возможные ошибки при очистке ресурсов в производных структурах не должны пробрасываться дальше в виде исключений, а должны обрабатываться локально.
Данное руководство основано на спецификации AUTOSAR Adaptive R25-11.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал