Define los campos de cabecera comunes de AVTPDU para datagramas IEEE 1722 en el módulo Raw Data Stream.
Contexto
En la AUTOSAR Adaptive Platform, el módulo Raw Data Stream (RDS) proporciona mecanismos para el intercambio eficiente de flujos de datos no estructurados y protocolos de streaming estandarizados. La clase ara::rds::IEEE1722DatagramAVTPDUCommonHeaderFields sirve dentro de este módulo como representación fundamental de los campos de cabecera comunes (Common Header Fields) de las unidades de datos de protocolo Audio/Video Transport Protocol (AVTPDU) conforme a IEEE 1722, tal como se especifica en SWS RawDataStream §1 «IEEE 1722 Datagram».
La estructura encapsula los campos de protocolo esenciales que están definidos para datagramas AVTPDU en el estándar IEEE 1722. Entre ellos se incluye el atributo version de tipo std::uint8_t ([SWS_RDS_90232]), el cual representa la versión de protocolo del estándar AVTP. Asimismo, el campo de datos avtpStreamDataSubtype de tipo std::uint16_t ([SWS_RDS_90230]) aloja el subtipo de la carga útil de streaming de AVTP para identificar el formato específico de los flujos de datos transportados. De forma complementaria, el elemento headerSpecific como std::uint8_t ([SWS_RDS_90231]) almacena bits de control y banderas de la cabecera AVTPDU específicos de protocolo y de formato.
Todos los campos de datos útiles de la clase se declaran bajo el modificador de acceso protected. De esto se desprende la interpretación de que ara::rds::IEEE1722DatagramAVTPDUCommonHeaderFields probablemente esté concebida principalmente como una clase base fundamental para clases de datagramas IEEE 1722 especializadas dentro del módulo RDS, en lugar de ser instanciada directamente por los usuarios como un objeto de valor independiente. Pregunta Q-674fc96343869829 (abierta)
Ciclo de vida
El ciclo de vida de ara::rds::IEEE1722DatagramAVTPDUCommonHeaderFields se orienta a su función como estructura de cabecera fundamental. La instanciación tiene lugar junto con una especialización concreta que hereda de esta clase base. La asignación e inicialización de los atributos protegidos version ([SWS_RDS_90232]), avtpStreamDataSubtype ([SWS_RDS_90230]) y headerSpecific ([SWS_RDS_90231]) se realiza habitualmente en el constructor de la clase derivada.
Para la destrucción de instancias, la especificación proporciona explícitamente un destructor virtual: ~IEEE1722DatagramAVTPDUCommonHeaderFields() noexcept ([SWS_RDS_90233]). La presencia de este destructor virtual asegura que los objetos de datagrama derivados puedan destruirse de manera polimórfica y segura a través de punteros o referencias a la clase base, sin que se produzca un comportamiento indefinido ni fugas de recursos. Mediante el especificador noexcept se garantiza contractualmente que no pueden lanzarse excepciones durante el proceso de destrucción.
En lo referente a la propiedad y a la gestión de memoria, la clase está sujeta a las convenciones generales para objetos de transferencia de datos en el módulo RDS: las instancias se mantienen típicamente en la pila de una función de procesamiento o son gestionadas por búferes de datos y manejadores de flujo de nivel superior. En relación con la concurrencia, la estructura de datos no ofrece mecanismos de sincronización interna. Interpretación: el acceso simultáneo de varios subprocesos a la misma instancia requiere, por tanto, presumiblemente una sincronización externa por parte de la aplicación llamadora o del sistema en tiempo de ejecución circundante. Pregunta (abierta)
Ruta de uso
La ruta de uso típica se articula en la creación, llenado y evaluación de datagramas en el marco de conexiones de streaming. Como los campos están protegidos, los desarrolladores acceden a los campos base a través de subclases especializadas.
Al enviar un flujo de datos IEEE 1722, la aplicación o una canalización interna del módulo RDS instancia una clase de datagrama derivada. A continuación, se completan los campos comunes de la cabecera AVTPDU: el campo version ([SWS_RDS_90232]) se establece en la versión de protocolo soportada correspondiente. Al campo avtpStreamDataSubtype ([SWS_RDS_90230]) se le asigna el valor identificador del tipo de carga útil específico a fin de permitir al receptor la descodificación del flujo de datos. Por último, la implementación derivada configura el campo headerSpecific ([SWS_RDS_90231]) con los bits de control necesarios conforme a la especificación IEEE 1722.
Al recibir paquetes de red a través del Raw Data Stream, el flujo es inverso: los datos brutos entrantes se deserializan y se transfieren a los atributos correspondientes de la clase de datagrama derivada. Los componentes de nivel superior pueden verificar seguidamente la información de cabecera a través de interfaces polimórficas o métodos de acceso tipificados de la subclase. Tras el procesamiento correcto y reenvío de la carga útil de la AVTPDU al sumidero de destino, el datagrama se libera, garantizando el destructor virtual ([SWS_RDS_90233]) la liberación limpia de todos los recursos. Interpretación: la transmisión serializada a través de la red se realiza presumiblemente mediante serializadores posteriores de la pila RDS, los cuales ordenan la cabecera en el flujo de bytes de conformidad con IEEE 1722. Pregunta Q-7f31ac02b5e4facf (abierta)
Escenarios de error
Los escenarios de error al trabajar con ara::rds::IEEE1722DatagramAVTPDUCommonHeaderFields se derivan principalmente de valores erróneos en los campos de cabecera o de una gestión inadecuada del ciclo de vida.
A nivel de elementos de datos, los valores no válidos pueden provocar violaciones de protocolo. Por ejemplo, si para version ([SWS_RDS_90232]) se suministra un valor de versión no soportado por el interlocutor, esto puede conllevar el descarte de toda la AVTPDU por parte del interlocutor de comunicación. Del mismo modo, un campo avtpStreamDataSubtype ([SWS_RDS_90230]) configurado incorrectamente provoca que el receptor no pueda asignar de forma adecuada el flujo de datos al descodificador correspondiente. Por su parte, una asignación incoherente de headerSpecific ([SWS_RDS_90231]) puede generar interpretaciones erróneas relativas a banderas de sincronización o longitudes de datos.
A nivel de C++, el destructor virtual ~IEEE1722DatagramAVTPDUCommonHeaderFields() noexcept ([SWS_RDS_90233]) excluye excepciones durante el proceso de destrucción. En caso de que una clase derivada ejecute su propia lógica de tratamiento de errores durante la liberación de recursos, debe asegurarse de que allí tampoco se lancen excepciones, a fin de evitar una terminación inmediata del programa mediante std::terminate.
Esta guía se basa en la especificación AUTOSAR Adaptive R25-11 y ha sido generada automáticamente.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán