Serve para receber e retornar dados úteis em respostas bem-sucedidas de serviços de rotina genéricos.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: d9df3888892fProcedênciaPerguntas em aberto (3)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Serve para receber e retornar dados úteis em respostas bem-sucedidas de serviços de rotina genéricos.
A estrutura ara::diag::GenericRoutine::OperationOutput serve como estrutura de retorno para mensagens de resposta positiva de serviços de rotina genéricos no AUTOSAR Adaptive [SWS_DM_00633]. Após a execução bem-sucedida de uma rotina, a aplicação instancia a estrutura e preenche o membro responseData com os dados úteis do resultado SWS Diagnostics p. 80. Uma condição de contorno essencial é que o vetor responseData deve conter exclusivamente os dados brutos do resultado, sendo expressamente proibida a inclusão do RoutineIdentifier[SWS_DM_00633].
Contexto
A estrutura ara::diag::GenericRoutine::OperationOutput serve, no módulo de diagnóstico do AUTOSAR Adaptive, como contêiner de dados dedicado para mensagens de resposta positiva de serviços de rotina genéricos [SWS_DM_00633]. Ela está disponível por meio do cabeçalho ara/diag/generic_routine.h[SWS_DM_00633] e encapsula os dados úteis que uma aplicação de diagnóstico adaptativa retorna ao gerenciamento de diagnóstico (ara::diag) após a conclusão bem-sucedida de uma rotina. Na interação participam primariamente três instâncias: o testador de diagnóstico externo como remetente de solicitações de rotina, o framework da plataforma ara::diag para o processamento de protocolos e a implementação específica da aplicação de GenericRoutine, que executa a lógica funcional e disponibiliza o resultado SWS Diagnostics p. 80. A tarefa central de OperationOutput consiste em disponibilizar os dados de saída puros da rotina de forma estruturada, sendo que o RoutineIdentifier explicitamente não faz parte dessa estrutura de dados [SWS_DM_00633].
Ciclo de vida
Como estrutura de dados leve (struct), OperationOutput possui um ciclo de vida simples baseado em valores. A instanciação é realizada sob demanda pela aplicação de diagnóstico adaptativa, assim que um comando direcionado à rotina (por exemplo, iniciar, parar ou consultar resultado) tiver sido concluído positivamente. O único elemento de dados é responseData, do tipo ara::core::Vector<std::uint8_t>[SWS_DM_00633]. A aplicação aloca o vetor, preenche-o com os dados de retorno específicos da aplicação e entrega a estrutura pronta ao subsistema de diagnóstico. O retorno ao framework de diagnóstico deve ocorrer tipicamente de forma assíncrona por meio de tipos Result ou Future de ara::core (interpretação: convenção de interface assíncrona da Adaptive Platform). Pergunta Q-e672dfb8b9ff416a (aberta) Após a entrega, a responsabilidade pela serialização transfere-se para ara::diag. Assim que os dados forem transmitidos ou transferidos para buffers internos, a estrutura é novamente destruída ao sair do respectivo escopo. Quanto à concorrência, deve-se notar que OperationOutput é criada para o contexto de uma única execução de operação; um acesso compartilhado e desprotegido entre múltiplos threads normalmente não ocorre.
Caminho de utilização
O fluxo regular para o uso de OperationOutput engloba várias fases consecutivas:
Recepção da solicitação: um cliente de diagnóstico envia uma solicitação UDS RoutineControl, que é encaminhada pela camada de diagnóstico para a instância responsável de GenericRoutineSWS Diagnostics p. 84.
Execução: a aplicação adaptativa executa a rotina solicitada e processa os parâmetros de entrada.
Geração do resultado: após a execução bem-sucedida, a aplicação cria uma instância de OperationOutput e preenche responseData com os valores de bytes resultantes [SWS_DM_00633].
Entrega da resposta: a estrutura é retornada a ara::diag como resultado positivo da operação.
Transmissão da resposta: o gerenciamento de diagnóstico assume presumivelmente a adição automática do RoutineIdentifier antes do campo responseData na montagem da resposta UDS (interpretação: inclusão do cabeçalho de protocolo pelo daemon) e envia o pacote completo para o cliente [SWS_DM_00633]. Pergunta Q-ccdd2867b87d00d1 (aberta)
Diagrama de sequência: fluxo típico da disponibilização de dados via OperationOutput em caso de execução bem-sucedida da rotina. Fontes: [SWS_DM_00633], SWS Diagnostics p. 80.
Cenários de erro
Se ocorrer um erro durante o processamento da rotina ou se os dados de entrada fornecidos forem inválidos, o caminho de uso de OperationOutput é interrompido. Em caso de erro, a aplicação deve enviar um código de erro ao gerenciamento de diagnóstico em vez de OperationOutput, disparando uma resposta UDS negativa (interpretação: caminho de erro via Result/Error-Domain). Pergunta (aberta) Como pré-condição essencial para o uso de OperationOutput, considera-se que a operação de rotina tenha sido concluída de forma integral e sem erros. Como pós-condição, a aplicação garante que responseData contenha exclusivamente os dados úteis puros da mensagem de resposta positiva e que nenhum prefixo de protocolo, como o RoutineIdentifier, esteja incluído [SWS_DM_00633]. Caso uma rotina seja concluída com sucesso, mas não gere dados adicionais de retorno, o vetor responseData permanece vazio SWS Diagnostics p. 70.
Este guia baseia-se na especificação AUTOSAR Adaptive para o módulo Diagnostics (R25-11). As explicações apoiam-se no excerto da especificação e estão sujeitas às premissas documentadas.
Diagrama de classes UML
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão