Serve como interface UDS genérica para o processamento assíncrono de solicitações de diagnóstico recebidas no gerenciador de diagnóstico.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: d0d38c589b70Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Serve como interface UDS genérica para o processamento assíncrono de solicitações de diagnóstico recebidas no gerenciador de diagnóstico.
A classe ara::diag::GenericUDSService, como manipulador genérico de serviço UDS, permite o recebimento e o processamento de quaisquer solicitações de diagnóstico UDS por meio do gerenciador de diagnóstico AUTOSAR [SWS_DM_00616]. Após a vinculação a um protótipo de porta, o serviço é ativado via Offer(), processa solicitações de forma assíncrona no método HandleMessage() e tem seu registro cancelado com StopOffer()[SWS_DM_00618], [SWS_DM_00619], [SWS_DM_00620]. A instância não é copiável nem movível e sinaliza erros por meio de NRCs de DiagUdsNrcErrc[SWS_DM_01657], [SWS_DM_00618].
Contexto
A classe ara::diag::GenericUDSService fornece uma interface de serviço genérica para a comunicação de diagnóstico segundo o UDS (Unified Diagnostic Services). Ela serve como classe base para aplicações que desejam implementar e processar serviços UDS personalizados ou não cobertos por interfaces dedicadas. A interação ocorre essencialmente entre o componente de aplicação de diagnóstico, o gerenciador de diagnóstico (DM) AUTOSAR e o contexto de modelagem subjacente. A conexão com o gerenciador de diagnóstico e com o modelo de plataforma ocorre na instanciação por meio de um ara::core::InstanceSpecifier, que faz referência a um protótipo de porta correspondente de um DiagnosticGenericUdsInterface[SWS_DM_00616]. Assim que o registro é ativado por meio da interface, o gerenciador de diagnóstico encaminha as solicitações UDS recebidas para a instância implementada [SWS_DM_00619].
Uma instância de ara::diag::GenericUDSService está vinculada a um protótipo de porta fixo e é concebida como instância única: o construtor de cópia [SWS_DM_01657], o construtor de movimento [SWS_DM_01658] e os operadores de atribuição [SWS_DM_01655], [SWS_DM_01656] estão excluídos (delete). A criação ocorre explicitamente por meio do construtor, especificando um InstanceSpecifier e a configuração de concorrência ConcurrencyType (kConcurrent ou kNotConcurrent) [SWS_DM_00616]. O ciclo de vida da prontidão do serviço divide-se em duas fases principais:
Não oferecido (Stopped / Initial): Após a construção ou após a chamada de StopOffer(), o DM não encaminha solicitações para a instância [SWS_DM_00620].
Oferecido (Offered): Após a chamada bem-sucedida de Offer(), o manipulador fica ativo e processa mensagens de diagnóstico recebidas [SWS_DM_00619].
A destruição ocorre por meio do destruidor virtual ~GenericUDSService()[SWS_DM_00584]. Em relação à segurança de thread, o construtor é especificado como thread-safe, enquanto Offer(), StopOffer() e o destruidor não são thread-safe e requerem sincronização externa [SWS_DM_00616], [SWS_DM_00619], [SWS_DM_00620], [SWS_DM_00584].
O fluxo regular compreende a instanciação da classe de serviço derivada, a habilitação do manipulador, o processamento assíncrono de tarefas e a posterior desativação:
Instanciação: A aplicação instancia a classe de serviço especializada com o ara::core::InstanceSpecifier apropriado, bem como com o ConcurrencyType desejado [SWS_DM_00616].
Oferecer serviço: A chamada de Offer() sinaliza ao gerenciador de diagnóstico a prontidão para o recebimento de mensagens [SWS_DM_00619].
Processamento de mensagens: Solicitações UDS recebidas levam à chamada do método puramente virtual HandleMessage() pelo DM. São passados o identificador de serviço (sid), dados úteis (requestData), metadados (metaInfo) e um cancellationHandler[SWS_DM_00618]. O método retorna um ara::core::Future<OperationOutput>, por meio do qual o resultado ou um erro é disponibilizado de forma assíncrona [SWS_DM_00618]. O manipulador pode verificar via cancellationHandler.IsCanceled() se o processo foi cancelado ou registrar uma notificação via cancellationHandler.SetNotifier()[SWS_DM_00618].
Encerrar serviço: Por meio de StopOffer(), o encaminhamento de solicitações é encerrado antes que a instância seja destruída [SWS_DM_00620], [SWS_DM_00584].
Situações de erro podem ocorrer em diferentes fases e exigem tratamento diferenciado:
Violações de instanciação: Se a atribuição do InstanceSpecifier no modelo falhar, o framework reporta violações definidas: InstanceSpecifierMappingIntegrityViolation (o specifier não pode ser resolvido no modelo ou não faz referência a um PortPrototype), PortInterfaceMappingViolation (a porta não é referenciada por meio de um DiagnosticServiceGenericMapping), ProcessMappingViolation (nenhum processo correspondente modelado) ou InstanceSpecifierAlreadyInUseViolation (o specifier já está em uso no processo) [SWS_DM_00616].
Chamada duplicada de oferta: Se Offer() for chamado embora o serviço já esteja sendo ativamente oferecido, a chamada falha e retorna o código de erro DiagOfferErrc::kAlreadyOffered (semântica de rollback) [SWS_DM_00619].
Erros de execução relacionados ao diagnóstico: Se uma mensagem UDS não puder ser respondida positivamente quanto ao conteúdo em HandleMessage(), o resultado em Future deve ser preenchido com um Negative Response Code (NRC) adequado conforme a ISO 14229-1 via DiagUdsNrcErrc[SWS_DM_00618]. Além disso, a implementação deve reagir a sinais de cancelamento do cancellationHandler, caso a conversação de diagnóstico subjacente tenha sido encerrada prematuramente [SWS_DM_00618].
Este guia de classe foi gerado automaticamente com base no padrão AUTOSAR.
InstanceSpeci- InstanceSpecifier either cannot be resolved in the model in the fierMappingIn- context of your executable, or it refers to a model element other tegrityViolation than a PortPrototype. PortInterfaceMap- A PortPrototype that is typed by a pingViolation DiagnosticGenericUdsInterface needs to be referenced by a DiagnosticServiceGenericMapping. ProcessMappingVio- Matching InstanceRef exists, but no matching (modelled) Process lation found that matches the (runtime) process.
InstanceSpecifier- Violation message that is sent in case a constructor in the ara AlreadyInUseViola- framework was called with an InstanceSpecifier already in use in tion this process.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticGenericUdsInterface.
concurrencyType
Specifies if the interface is implemented as thread safe ( kConcurrent) or non-thread safe (kNotConcurrent).
Request a governed re-review of this record. The record is not changed immediately.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 38c6453769b1Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método HandleMessage de ara::diag::GenericUDSService destina-se ao processamento específico da aplicação de solicitações de diagnóstico UDS de entrada [SWS_DM_00618].
usar
O Diagnostic Management (DM) chama o método para cada mensagem de solicitação de diagnóstico recebida [SWS_DM_00618]. Com base nos parâmetros, são passados o identificador de serviço (sid), os dados úteis (requestData como ara::core::Span<const std::uint8_t>), informações de conexão (metaInfo), bem como um cancellationHandler. O processamento ocorre de forma assíncrona por meio do retorno de um ara::core::Future<OperationOutput>[SWS_DM_00618]. Os dados úteis em requestData permanecem válidos até que a Promise correspondente seja cumprida ou a operação seja cancelada. Através de cancellationHandler.IsCanceled(), a aplicação pode verificar o status de cancelamento ou, por meio de cancellationHandler.SetNotifier(), registrar uma notificação para cancelamentos de sessão [SWS_DM_00618].
Tratamento de erros
Se uma solicitação não puder ser processada com sucesso, a aplicação sinaliza o erro por meio do Future retornado, utilizando um código de resposta negativa apropriado (NRC segundo a ISO 14229-1) através de DiagUdsNrcErrc[SWS_DM_00618].
Simultaneidade e condições marginais
Tempo de vida de metaInfo: a validade do objeto metaInfo é estritamente restrita à duração de execução ativa da chamada do método [SWS_DM_01345]. O armazenamento ou uso após o retorno de HandleMessage resulta em comportamento indefinido.
Reentrância e concorrência: se as chamadas devem ocorrer de forma thread-safe é determinado pelo ara::diag::ConcurrencyType definido no construtor SWS Diagnostics §7.3.1.2 «Concurrency of ara::diag interfaces». Em kConcurrent, o DM pode chamar solicitações subsequentes em paralelo; em kNotConcurrent, o DM aguarda até que o resultado da solicitação em andamento tenha sido disponibilizado.
Esta nota de utilização foi gerada de forma automatizada com base na especificação AUTOSAR Adaptive R25-11.
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
sid
Diagnostic Request Service Identifier.
requestData
Diagnostic request data (starting after SID). Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.
This Offer will enable the DM to forward request messages to this handler.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 19027d24302fProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
usar
O método Offer da classe ara::diag::GenericUDSService ativa o encaminhamento de pedidos de diagnóstico: permite que o Diagnostic Manager (DM) encaminhe mensagens de pedido UDS recebidas para este manipulador [SWS_DM_00619]. A chamada síncrona não possui parâmetros, não é bloqueante e fornece como valor de retorno um ara::core::Result<void>[SWS_DM_00619]. A execução deverá ocorrer tipicamente (interpretação:) durante a fase de inicialização e arranque da Adaptive Application, antes de as mensagens de diagnóstico terem de ser processadas através da rede. Pergunta Q-c1e385a434fe1e4e (aberta)
Tratamento de erros e simultaneidade
A função está declarada com noexcept e garante segurança contra exceções [SWS_DM_00619]. Se o serviço já tiver sido oferecido anteriormente, o registo falha e retorna o código de erro DiagOfferErrc::kAlreadyOffered com semântica de rollback [SWS_DM_00619]. No que diz respeito à segurança de threads, a interface está especificada como not thread-safe[SWS_DM_00619]; chamadas simultâneas na mesma instância devem ser sincronizadas pela aplicação chamadora.
Interação
A disponibilização através de Offer corresponde ao padrão de registo padronizado no subsistema de diagnóstico do AUTOSAR Adaptive, conforme especificado de forma comparável para rotinas ([SWS_DM_00557]) ou identificadores de dados ([SWS_DM_00638]). Embora a nomenclatura seja inspirada em ara::com, trata-se de um método específico de diagnóstico do Diagnostic Manager AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors».
Esta nota de utilização foi gerada por uma IA com base na especificação AUTOSAR R25-11.
This StopOffer will disable the forwarding of request messages from DM.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 5dba8a8b4077ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
usar
O método StopOffer da classe ara::diag::GenericUDSService desativa o encaminhamento de requisições de diagnóstico recebidas do Diagnostic Management (DM) para a instância de serviço [SWS_DM_00620]. A função é disponibilizada através do cabeçalho ara/diag/generic_uds_service.h, não espera parâmetros e possui o tipo de retorno void[SWS_DM_00620].
Tratamento de erros
O método é especificado com noexcept e como seguro contra exceções (exception safe) [SWS_DM_00620]. Ele não lança exceções e não retorna códigos de erro; a interrupção do encaminhamento ocorre de forma determinística.
Simultaneidade e restrições
De acordo com a especificação, StopOffer é classificado como não seguro para threads (not thread-safe) [SWS_DM_00620]. Chamadas paralelas para a mesma instância devem ser protegidas pelo lado da aplicação. Interpretação: a chamada de StopOffer provavelmente deve ocorrer antes da destruição do objeto da instância ou em caso de indisponibilidade temporária, a fim de evitar encaminhamentos pendentes. Pergunta Q-408323dd00c313c0 (aberta)
Interação
O conceito de StopOffer segue um padrão arquitetural consistente dentro de ara::diag, assim como também é encontrado em rotinas genéricas [SWS_DM_00558], Data Identifiers genéricos [SWS_DM_00639], Security Access [SWS_DM_00767] e monitores [SWS_DM_01089]. Embora as designações sejam baseadas em ara::com, trata-se de uma implementação independente do Diagnostic Management AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors».
Esta nota de uso foi gerada por uma IA e baseia-se exclusivamente nas especificações da versão R25-11 do AUTOSAR.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão