Define os campos de cabeçalho comuns da AVTPDU para datagramas IEEE 1722 no módulo Raw Data Stream.
Contexto
Na AUTOSAR Adaptive Platform, o módulo Raw Data Stream (RDS) disponibiliza mecanismos para a troca eficiente de fluxos de dados não estruturados e protocolos de streaming padronizados. A classe ara::rds::IEEE1722DatagramAVTPDUCommonHeaderFields serve, dentro deste módulo, como representação fundamental dos campos de cabeçalho comuns (Common Header Fields) de Audio/Video Transport Protocol Data Units (AVTPDUs) de acordo com a norma IEEE 1722, conforme especificado em SWS RawDataStream §1 «IEEE 1722 Datagram».
A estrutura encapsula os campos de protocolo essenciais que estão definidos para datagramas AVTPDU na norma IEEE 1722. Isto inclui o atributo version do tipo std::uint8_t ([SWS_RDS_90232]), que mapeia a versão do protocolo da norma AVTP. Além disso, o campo de dados avtpStreamDataSubtype do tipo std::uint16_t ([SWS_RDS_90230]) acolhe o subtipo da carga útil de streaming AVTP, a fim de identificar o formato específico dos fluxos de dados transportados. Complementarmente, o elemento headerSpecific armazena, como std::uint8_t ([SWS_RDS_90231]), bits de controlo e flags específicos do protocolo e do formato do cabeçalho da AVTPDU.
Todos os campos de dados úteis da classe são declarados sob o modificador de acesso protected. Daqui resulta a interpretação de que ara::rds::IEEE1722DatagramAVTPDUCommonHeaderFields deverá ser concebida primariamente como uma classe base fundamental para classes de datagramas IEEE 1722 especializadas dentro do módulo RDS, em vez de ser diretamente instanciada pelos utilizadores como um objeto de valor autónomo. Pergunta Q-674fc96343869829 (aberta)
Ciclo de vida
O ciclo de vida de ara::rds::IEEE1722DatagramAVTPDUCommonHeaderFields orienta-se pela sua função como estrutura de cabeçalho fundamental. A instanciação ocorre em conjunto com uma especialização concreta que herda desta classe base. A atribuição e inicialização dos atributos protegidos version ([SWS_RDS_90232]), avtpStreamDataSubtype ([SWS_RDS_90230]) e headerSpecific ([SWS_RDS_90231]) é habitualmente realizada no construtor da classe derivada.
Para a destruição de instâncias, a especificação disponibiliza explicitamente um destrutor virtual: ~IEEE1722DatagramAVTPDUCommonHeaderFields() noexcept ([SWS_RDS_90233]). A presença deste destrutor virtual assegura que objetos de datagrama derivados possam ser destruídos com segurança de forma polimórfica através de ponteiros ou referências para a classe base, sem originar comportamentos indefinidos ou fugas de recursos. Através do especificador noexcept, é assegurado contratualmente que não podem ser lançadas exceções durante o processo de destruição.
No que diz respeito às relações de posse e à gestão de memória, a classe está sujeita às convenções gerais para objetos de transferência de dados no módulo RDS: as instâncias são mantidas tipicamente na pilha de uma função de processamento ou geridas por buffers de dados e manipuladores de stream de nível superior. Relativamente à concorrência, a estrutura de dados não oferece mecanismos de sincronização internos. Interpretação: o acesso simultâneo de várias threads à mesma instância requer, portanto, presumivelmente uma sincronização externa pela aplicação chamadora ou pelo sistema de tempo de execução circundante. Pergunta (aberta)
Caminho de utilização
O percurso de utilização típico divide-se na criação, preenchimento e avaliação de datagramas no âmbito de ligações de streaming. Como os campos são protegidos, os programadores acedem aos campos base através de subclasses especializadas.
Ao enviar um fluxo de dados IEEE 1722, a aplicação ou um pipeline interno do módulo RDS instancia uma classe de datagrama derivada. Em seguida, os campos de cabeçalho comuns da AVTPDU são preenchidos: o campo version ([SWS_RDS_90232]) é definido para a versão de protocolo respetivamente suportada. O campo avtpStreamDataSubtype ([SWS_RDS_90230]) recebe o valor identificador do tipo de payload específico, a fim de permitir ao recetor a descodificação do fluxo de dados. Por fim, a implementação derivada configura o campo headerSpecific ([SWS_RDS_90231]) com os bits de controlo necessários de acordo com a especificação IEEE 1722.
Na receção de pacotes de rede através do Raw Data Stream, ocorre o processo inverso: os dados brutos recebidos são desserializados e transferidos para os atributos correspondentes da classe de datagrama derivada. Os componentes de nível superior podem, em seguida, verificar as informações de cabeçalho através de interfaces polimórficas ou métodos de acesso tipificados da subclasse. Após o processamento bem-sucedido e o reencaminhamento do payload da AVTPDU para o coletor de destino, o datagrama é libertado, garantindo o destruidor virtual ([SWS_RDS_90233]) a libertação limpa de todos os recursos. Interpretação: a transmissão serializada através da rede ocorre presumivelmente através de serializadores a jusante da pilha RDS, que dispõem o cabeçalho no fluxo de bytes em conformidade com o IEEE 1722. Pergunta Q-7f31ac02b5e4facf (aberta)
Cenários de erro
Cenários de erro ao trabalhar com ara::rds::IEEE1722DatagramAVTPDUCommonHeaderFields resultam primariamente de valores incorretos nos campos de cabeçalho ou de uma gestão inadequada do ciclo de vida.
Ao nível dos elementos de dados, valores inválidos podem levar a violações de protocolo. Se, por exemplo, for passado para version ([SWS_RDS_90232]) um valor de versão não suportado pelo interlocutor, isso pode levar ao descarte de toda a AVTPDU pelo parceiro de comunicação. Da mesma forma, um campo avtpStreamDataSubtype ([SWS_RDS_90230]) configurado incorretamente faz com que o recetor não consiga mapear corretamente o fluxo de dados para o descodificador adequado. Uma atribuição inconsistente de headerSpecific ([SWS_RDS_90231]) pode, por sua vez, resultar em interpretações erradas relativamente a flags de sincronização ou comprimentos de dados.
Ao nível do C++, o destruidor virtual ~IEEE1722DatagramAVTPDUCommonHeaderFields() noexcept ([SWS_RDS_90233]) exclui exceções durante o processo de destruição. Caso uma classe derivada execute lógica própria de tratamento de erros durante a libertação de recursos, deve ser assegurado que também aí não sejam lançadas exceções, de modo a evitar a terminação imediata do programa via std::terminate.
Este guia baseia-se na especificação AUTOSAR Adaptive R25-11 e foi criado automaticamente.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão