Permite a transmissão periódica de mensagens de diagnóstico UDS para dar suporte ao serviço 0x2A.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: fabfa1b95261ProcedênciaPerguntas em aberto (3)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Permite a transmissão periódica de mensagens de diagnóstico UDS para dar suporte ao serviço 0x2A.
A classe apext::diag::uds_transport::UdsTransportProtocolPeriodicHandler disponibiliza uma interface puramente virtual para o processamento do serviço UDS periódico 0x2A através de canais de diagnóstico específicos de transporte ([SWS_DM_01064]). Ela permite que o gerenciamento de diagnóstico determine limites de quantidade e de carga útil específicos de cada canal, além de realizar a transmissão ordenada de múltiplas mensagens UDS por meio de PeriodicTransmit ([SWS_DM_01067]). Se o envio de uma mensagem falhar, o procedimento é interrompido e o estado é reportado por meio de uma função de confirmação. Como todos os métodos são especificados como não seguros para threads (non-thread-safe), os acessos concorrentes devem ser sincronizados pelo chamador.
Contexto
A classe puramente virtual apext::diag::uds_transport::UdsTransportProtocolPeriodicHandler representa a interface padronizada para suportar a leitura periódica de dados de diagnóstico de acordo com o serviço UDS 0x2A ([SWS_DM_01064], AUTOSAR_AP_SWS_Diagnostics §C.3.1 «Class: UdsTransportProtocolPeriodicHandler»). No sistema de diagnóstico da AUTOSAR Adaptive Platform, ela desacopla o gerenciamento de diagnóstico de nível superior da implementação concreta de rede e de protocolo de transporte. Enquanto o gerenciamento de diagnóstico avalia requisições recebidas para transmissões periódicas e monta os pacotes de dados correspondentes, o handler assume a transmissão propriamente dita dessas mensagens periódicas por meio de uma conexão concreta ([SWS_DM_01067]). Como parceiros de interação atuam o gerenciamento de diagnóstico no lado do chamador e o respectivo canal de comunicação, que é identificado por meio de um ChannelID exclusivo ([SWS_DM_01065], [SWS_DM_01066]).
Como UdsTransportProtocolPeriodicHandler é definida como uma interface base abstrata com métodos puramente virtuais, ela não pode ser instanciada diretamente ([SWS_DM_01064]). A criação de instâncias concretas do handler ocorre, presumivelmente, por meio de componentes de driver específicos do transporte (por exemplo, para protocolos baseados em DoIP ou CAN). Pergunta Q-d0b3bf3b0c14dcf6 (aberta) O ciclo de vida da instância é tipicamente vinculado à disponibilidade da respectiva pilha de protocolos de transporte. Para uma destruição polimórfica limpa no encerramento da pilha de comunicação, a classe disponibiliza um destrutor virtual ~UdsTransportProtocolPeriodicHandler() ([SWS_DM_02089], AUTOSAR_AP_SWS_Diagnostics §C.3.1.1.1.1 «Destructor»).
Em relação à concorrência, todas as funções-membro da classe são explicitamente designadas como não seguras para threads (not thread-safe) ([SWS_DM_01065], [SWS_DM_01066], [SWS_DM_01067], [SWS_DM_02089]). Em caso de acesso paralelo por múltiplas threads ou solicitações simultâneas através do mesmo ChannelID, os chamadores devem, portanto, sincronizar os acessos por conta própria.
Caminho de utilização
Um fluxo típico para a realização de transmissões periódicas de mensagens para o serviço 0x2A divide-se nas seguintes etapas:
Determinação do comprimento máximo da carga útil: o gerenciamento de diagnóstico chama GetMaxPayloadLength(channelId) para verificar o comprimento máximo da carga útil suportado na conexão especificada para uma única transmissão periódica ([SWS_DM_01066], AUTOSAR_AP_SWS_Diagnostics §C.3.1.1.2.1 «GetMaxPayloadLength»).
Execução da transmissão periódica: o gerenciamento de diagnóstico passa uma lista ordenada de mensagens em um ara::core::Vector<UdsMessageConstPtr> para o método PeriodicTransmit(channelId, messages) ([SWS_DM_01067], AUTOSAR_AP_SWS_Diagnostics §C.3.1.1.2.3 «PeriodicTransmit»). O handler transmite as mensagens contidas na ordem pré-definida.
Confirmação: a camada de transporte sinaliza o resultado do procedimento de envio por meio da chamada de PeriodicTransmit Confirmation, que retorna a quantidade de mensagens transmitidas com sucesso e o vetor original ([SWS_DM_01067]).
Durante a execução de PeriodicTransmit, todas as mensagens da lista são transmitidas sequencialmente. Se a transmissão de uma única mensagem falhar, todo o processo de envio é abortado imediatamente ([SWS_DM_01067]). As mensagens subsequentes da lista não serão mais enviadas nesse caso. Para fins de diagnóstico de falhas e informação ao gerenciamento de diagnóstico, a chamada de confirmação PeriodicTransmit Confirmation é, ainda assim, acionada. Esta contém o número de mensagens transmitidas com sucesso até a interrupção, bem como, de forma inalterada, o vetor completo de mensagens UDS ([SWS_DM_01067]). Com isso, o gerenciamento de diagnóstico pode identificar com precisão qual mensagem causou o erro.
Todos os métodos de interface são especificados como noexcept e seguros contra exceções (exception safe) ([SWS_DM_01065], [SWS_DM_01066], [SWS_DM_01067], [SWS_DM_02089]). Condições de erro na transmissão não resultam em exceções C++, mas são reportadas de forma determinística por meio do mecanismo de confirmação previsto.
Este guia de classe baseia-se na especificação AUTOSAR Adaptive Platform Release R25-11 e foi gerado automaticamente.
Sends all the messages in the list in the given order. If one message transmission fails, the send process is stopped and the PeriodicTransmit Confirmation is invoked with the number of sent messages and the same Vector with Uds Messages.
Sends all the messages in the list in the given order. If one message transmission fails, the send process is stopped and the PeriodicTransmit Confirmation is invoked with the number of sent messages and the same Vector with Uds Messages.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: ceb97c8b447fProcedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método puramente virtual PeriodicTransmit da interface apext::diag::uds_transport::UdsTransportProtocolPeriodicHandler serve para o envio agrupado de mensagens UDS periódicas através de uma ligação de transporte existente [SWS_DM_01067]. É tipicamente chamado pelo Diagnostic Management (DM) no âmbito da transmissão periódica segundo o tipo de escalonador 1 conforme a ISO 14229-1, no qual DIDs periódicos configurados (PDIDs) são despoletados ciclicamente AUTOSAR_AP_SWS_Diagnostics §Scheduler Periodic Transmission[SWS_DM_01060].
Parâmetros e semântica
channelId: Identificador do canal de comunicação concreto através do qual a transmissão ocorre [SWS_DM_01067].
messages: Lista ordenada (ara::core::Vector<UdsMessageConstPtr>) de todas as mensagens a transmitir diretamente uma após a outra [SWS_DM_01067].
A função não devolve qualquer valor e garante segurança contra exceções declarada como noexcept[SWS_DM_01067]. As mensagens são processadas estritamente na ordem fornecida.
Tratamento de erros e confirmação
Se o envio de uma mensagem individual falhar, todo o processo de envio é abortado imediatamente [SWS_DM_01067]. Para o reporte do resultado, é chamada a função de confirmação PeriodicTransmitConfirmation de UdsTransportProtocolMgr[SWS_DM_01069]. Este callback passa a quantidade de mensagens transmitidas com sucesso bem como o mesmo vetor de mensagens original [SWS_DM_01067].
simultaneidade
O método está especificado como not thread-safe[SWS_DM_01067]. Chamadas paralelas na mesma instância têm de ser sincronizadas do lado do chamador.
Este texto foi gerado por uma IA com base na especificação AUTOSAR Adaptive R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão