Permite que aplicações realizem o processamento genérico de serviços UDS RoutineControl com transferência assíncrona de dados.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: ed3ab770d945ProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Permite que aplicações realizem o processamento genérico de serviços UDS RoutineControl com transferência assíncrona de dados.
A classe disponibiliza um handler genérico para serviços UDS RoutineControl e encaminha solicitações para diferentes identificadores de rotina a aplicações adaptativas [SWS_DM_00552]. Os desenvolvedores implementam as ações de rotina requeridas por meio de métodos assíncronos como Start e ativam o encaminhamento de mensagens através de Offer[SWS_DM_00557]. Como as instâncias não podem ser copiadas nem movidas, o ciclo de vida e a simultaneidade devem ser controlados de forma exata por meio do construtor e da configuração da interface. As operações em andamento suportam cancelamentos cooperativos bem como códigos de erro UDS padronizados.
Contexto
A classe ara::diag::GenericRoutine disponibiliza a interface genérica para o processamento de rotinas de diagnóstico conforme a ISO 14229-1 (UDS RoutineControl, serviço 0x31) na AUTOSAR Adaptive Platform. Ela atua como elemento de ligação entre o Diagnostic Management (DM) central e a aplicação adaptativa. Uma instância dessa classe é vinculada a um protótipo de porta modelado do tipo DiagnosticRoutineGenericInterface, o qual deve ser referenciado no modelo por meio de um DiagnosticServiceGenericMapping[SWS_DM_00552]. Diferentemente de interfaces de rotina específicas de tipo, GenericRoutine transfere os dados brutos da solicitação de diagnóstico como ara::core::Span<const std::uint8_t> juntamente com o identificador de rotina concreto (routineId) para a aplicação [SWS_DM_00554], [SWS_DM_00555], [SWS_DM_00556]. Com isso, um único handler pode atender a múltiplas rotinas de forma flexível.
Ciclo de vida
As instâncias de GenericRoutine são vinculadas à sua porta específica e não devem ser copiadas nem movidas; os construtores de cópia e de movimento, bem como os operadores de atribuição, estão explicitamente excluídos [SWS_DM_01637], [SWS_DM_01638], [SWS_DM_01635], [SWS_DM_01636]. A inicialização ocorre por meio do construtor, com a indicação de ara::core::InstanceSpecifier bem como do comportamento de simultaneidade (ConcurrencyType: kConcurrent ou kNotConcurrent) [SWS_DM_00552]. Esse parâmetro define se os métodos virtuais de execução precisam ser implementados de forma thread-safe.
Após a criação, o DM inicialmente não encaminha mensagens para o handler. O encaminhamento é ativado apenas pela chamada de Offer()[SWS_DM_00557]. Por meio de StopOffer(), o encaminhamento pode ser desativado novamente [SWS_DM_00558], antes que a instância seja liberada pelo destrutor virtual ~GenericRoutine()[SWS_DM_00553]. Enquanto o construtor é thread-safe, Offer(), StopOffer() e o destrutor não são thread-safe e requerem sincronização externa [SWS_DM_00552], [SWS_DM_00557], [SWS_DM_00558], [SWS_DM_00553].
Para disponibilizar uma rotina genérica, uma aplicação deriva de GenericRoutine e sobrescreve os métodos virtuais necessários. O método Start (subfunção UDS 0x01) é puramente virtual (pure virtual) e deve ser obrigatoriamente implementado [SWS_DM_00554]. Os métodos Stop (subfunção 0x02) [SWS_DM_00555] e RequestResults (subfunção 0x03) [SWS_DM_00556] são métodos virtuais; interpretação: como não são puramente virtuais, eles provavelmente só precisam ser sobrescritos se a respectiva rotina suportar funcionalmente a parada ou a consulta separada de resultados. Pergunta (aberta)
O fluxo regular compreende as seguintes fases:
Instanciação: criação do handler derivado com referência de porta e modo de simultaneidade [SWS_DM_00552].
Ativação: chamada de Offer() para liberação para o DM [SWS_DM_00557].
Execução: em solicitações UDS recebidas, o DM chama Start, Stop ou RequestResults. A aplicação recebe routineId, requestData, metaInfo bem como um CancellationHandler e retorna um ara::core::Future<OperationOutput>[SWS_DM_00554], [SWS_DM_00555], [SWS_DM_00556]. A validade de requestData é garantida até que a promise correspondente seja cumprida ou a operação seja cancelada [SWS_DM_00554].
Tratamento de cancelamento: a aplicação pode verificar o status de cancelamento via cancellationHandler.IsCanceled() ou registrar um callback via cancellationHandler.SetNotifier()[SWS_DM_00554]. Interpretação: em caso de cancelamento, a aplicação provavelmente deve encerrar prematuramente atividades de segundo plano em andamento e resolver a promise em tempo hábil. Pergunta (aberta)
Desativação: encerramento do encaminhamento via StopOffer()[SWS_DM_00558] antes da destruição do objeto.
Erros podem ocorrer tanto na configuração quanto durante o tempo de execução e a execução:
Violações de modelo e de mapeamento: se a resolução de InstanceSpecifier no modelo falhar, se ele não for identificado como PortPrototype ou se não existir um DiagnosticServiceGenericMapping correspondente, o framework reporta violações como InstanceSpecifierMappingIntegrityViolation, PortInterfaceMappingViolation, ProcessMappingViolation ou InstanceSpecifierAlreadyInUseViolation[SWS_DM_00552].
Erro de disponibilização: se Offer() for chamado enquanto o serviço já estiver sendo oferecido, a chamada falha e retorna o código de erro DiagOfferErrc::kAlreadyOffered[SWS_DM_00557].
Códigos de erro de diagnóstico (NRC): caso uma operação de rotina não possa ser concluída com sucesso ou a solicitação contenha parâmetros inválidos, a aplicação não cumpre a future retornada com OperationOutput, mas com um UDS Negative Response Code (NRC) adequado de DiagUdsNrcErrc conforme a ISO 14229-1 [SWS_DM_00554], [SWS_DM_00555], [SWS_DM_00556].
Este guia de classe baseia-se na especificação AUTOSAR Adaptive Platform R25-11 e foi gerado automaticamente.
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 DiagnosticRoutineGenericInterface 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 DiagnosticRoutineGenericInterface.
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.
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: 36b2772d0811ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
usar
A função Offer da classe ara::diag::GenericRoutine permite que o Diagnostic Management (DM) encaminhe mensagens de pedido de diagnóstico recebidas para uma rotina ao manipulador registado [SWS_DM_00557]. A chamada ocorre de forma síncrona, não recebe parâmetros e retorna um ara::core::Result<void>[SWS_DM_00557]. Uma vez que o método está declarado com a especificação noexcept, é considerado seguro contra exceções (exception safe) [SWS_DM_00557].
Tratamento de erros
Se a disponibilização falhar, o método retorna um resultado negativo. Se a rotina já tiver sido oferecida anteriormente para a instância em questão, o método retorna o código de erro específico DiagOfferErrc::kAlreadyOffered[SWS_DM_00557]. Para este caso de erro está definida uma semântica de rollback, de modo que o estado permanece inalterado [SWS_DM_00557]. O identificador de erro kAlreadyOffered está, além disso, ancorado nos domínios de erro internos para chamadas de diagnóstico [SWS_DM_00514].
Simultaneidade e restrições
A interface está expressamente especificada como não segura para threads (not thread-safe) [SWS_DM_00557]. Se múltiplas threads de uma aplicação acederem ao mesmo manipulador, a chamada deve ser sincronizada. Interpretação: a chamada deverá ocorrer tipicamente durante a inicialização, dado que nenhum pedido pode ser recebido antes da execução de Offer. Pergunta Q-0c42f415bcb0de20 (aberta)
Interação
A disponibilização de funcionalidades através de Offer é um padrão central no cluster de diagnóstico do AUTOSAR Adaptive; é utilizado de forma análoga também para interfaces de rotina específicas de tipo [SWS_DM_00594], serviços genéricos de UDS [SWS_DM_00619], bem como Data Identifiers [SWS_DM_00638]. Apesar da identidade de nome com ara::com, trata-se de uma implementação específica do Diagnostic Management SWS Diagnostics §7.3.4.1.2 «Monitors».
Esta nota de utilização foi selecionada por uma IA e baseia-se exclusivamente na especificação AUTOSAR R25-11.
Called for RoutineControl with SubFunction RequestResults (0x03) request for this Diagnostic RoutineIdentifier.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: f4080ca4c8cdProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método RequestResults da classe ara::diag::GenericRoutine é chamado pela instância do servidor de diagnóstico para processar genericamente requisições RoutineControl do UDS do serviço 0x31 com a subfunção requestRoutineResults (0x03) para o identificador de rotina de diagnóstico parametrizado ([SWS_DM_00575], [SWS_DM_00556]).
Na chamada, são passados o identificador de rotina routineId, os metadados específicos da requisição metaInfo, bem como os dados de entrada requestData ([SWS_DM_00556]). A validade do span requestData é estritamente limitada até que o Promise correspondente seja cumprido ou a execução seja cancelada ([SWS_DM_00556]). Um cancellationHandler passado permite consultar o status de cancelamento via IsCanceled bem como registrar uma função de notificação via SetNotifier ([SWS_DM_00556]).
O resultado é retornado de forma assíncrona como ara::core::Future<OperationOutput> ([SWS_DM_00556]). Interpretação: A disponibilização dos dados de saída deve ocorrer tipicamente de forma assíncrona por meio de um ara::core::Promise no lado da aplicação. Em caso de sucesso, o Future disponibiliza um OperationOutput, enquanto em caso de erro, um NRC do UDS adequado de acordo com a ISO 14229-1 é transmitido via DiagUdsNrcErrc ([SWS_DM_00556]). A função é declarada como noexcept e é considerada segura contra exceções ([SWS_DM_00556]). Pergunta Q-f50c8509d7515e3f (aberta)
Em relação à concorrência, a segurança para threads é condicional (conditional): se o método deve ser implementado de forma thread-safe é controlado de maneira vinculativa por meio do ConcurrencyType passado ao construtor ([SWS_DM_00556]).
Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR.
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
routineId
the corresponding RoutineIdentifier
requestData
Content of request message (without RoutineIdentifier), 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.
Called for RoutineControl with SubFunction Start (0x01) request for this DiagnosticRoutine Identifier.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 9e819a027940Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método Start da classe ara::diag::GenericRoutine é chamado assim que uma solicitação de diagnóstico para RoutineControl com a subfunção Start (0x01) for recebida para a routineId especificada [SWS_DM_00554]. Em contraste com a interface de rotina tipada de acordo com [SWS_DM_00591], esta interface genérica recebe os dados brutos da mensagem de solicitação como um span de bytes.
Para a implementação, aplicam-se os seguintes requisitos e propriedades de interface:
Contexto de chamada e parâmetros: Além de routineId e dos metadados (metaInfo), é passado o parâmetro requestData. O tempo de vida dos dados de solicitação permanece válido até que a promise seja cumprida ou o processamento seja cancelado pelo cancellationHandler[SWS_DM_00554].
Tratamento de cancelamento: A rotina pode consultar o status de cancelamento atual por meio de cancellationHandler.IsCanceled() ou registrar, via cancellationHandler.SetNotifier(), uma função notificador que é chamada no cancelamento da conversação [SWS_DM_00554].
Semântica assíncrona: O processamento ocorre de forma não bloqueante via ara::core::Future<OperationOutput>. Em caso de execução bem-sucedida, OperationOutput disponibiliza os dados úteis para a resposta positiva [SWS_DM_00554].
Tratamento de erros: Se a execução falhar, o future deve ser concluído com um Negative Response Code (NRC) apropriado conforme a ISO 14229-1 utilizando DiagUdsNrcErrc[SWS_DM_00554].
Simultaneidade: A função é declarada como segura quanto a exceções (noexcept). Se a disponibilização deve ser feita de forma thread-safe, decide o ConcurrencyType passado ao construtor [SWS_DM_00554].
Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR.
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
routineId
the corresponding RoutineIdentifier
requestData
Content of request message (without RoutineIdentifier). 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.
Called for RoutineControl with SubFunction Stop (0x02) request for this DiagnosticRoutine Identifier.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: d8c6cb55284bProcedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método Stop é chamado numa solicitação UDS RoutineControl com a subfunção Stop (0x02) para a respetiva rotina de diagnóstico genérica [SWS_DM_00555]. Em comparação com interfaces de rotina tipificadas [SWS_DM_00592], ele recebe o identificador de rotina routineId bem como os dados de solicitação como span de dados brutos requestData[SWS_DM_00555].
Durante a utilização, devem ser observadas as seguintes regras de parâmetros e de fluxo [SWS_DM_00555]:
Tempo de vida do span de dados de entrada: A área de memória de requestData permanece válida até que a respetiva Promise seja satisfeita ou a execução seja cancelada através do cancellationHandler[SWS_DM_00555].
Tratamento de cancelamento: A aplicação pode verificar através de cancellationHandler.IsCanceled() se a conversação de diagnóstico atual foi cancelada, ou registar através de cancellationHandler.SetNotifier uma função de notificação que é acionada no cancelamento [SWS_DM_00555].
Assincronismo e retorno: A função opera de forma assíncrona e retorna um ara::core::Future<OperationOutput> que, em caso de sucesso, contém os dados de saída para a resposta UDS positiva [SWS_DM_00555].
O tratamento de erros ocorre através de valores de retorno de diagnóstico negativos: se a interrupção da rotina falhar, o future deve ser concluído com um código de erro UDS NRC apropriado, em conformidade com a ISO 14229-1, através de DiagUdsNrcErrc[SWS_DM_00555].
Em relação à concorrência, o método é especificado como noexcept e seguro contra exceções. Se a implementação concreta deve ser projetada para ser segura para threads depende do ConcurrencyType passado no construtor durante a instanciação [SWS_DM_00555].
Esta nota de uso baseia-se exclusivamente nas especificações da versão R25-11 do Adaptive AUTOSAR.
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
routineId
the corresponding RoutineIdentifier
requestData
Content of request message (without RoutineIdentifier). Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
metaInfo
MetaData 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 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: 73588f5f0b57ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
usar
O método ara::diag::GenericRoutine::StopOffer desativa o encaminhamento de pedidos de diagnóstico recebidos do Diagnostic Management (DM) para a instância de rotina correspondente [SWS_DM_00558]. A função possui a assinatura void StopOffer() noexcept;, não recebe parâmetros e não fornece qualquer valor de retorno [SWS_DM_00558]. A chamada é processada de forma síncrona e sinaliza ao DM que a rotina deixará de aceitar pedidos a partir desse momento.
Tratamento de erros
A operação está especificada como exception safe e declarada com noexcept[SWS_DM_00558]. Não ocorrem códigos de erro nem exceções C++ durante a execução. Mensagens específicas para instâncias de memória de desenvolvimento ou de erros (DET/DEM) não estão previstas para esta interface no módulo de diagnóstico.
Simultaneidade e restrições
Relativamente ao comportamento de threading, o método é indicado como not thread-safe[SWS_DM_00558]. Chamadas concorrentes na mesma instância de ara::diag::GenericRoutine devem, portanto, ser sincronizadas do lado da aplicação. Interpretação: uma chamada deverá ocorrer sobretudo quando uma rotina for temporariamente desativada ou a aplicação for terminada de forma controlada após ter ocorrido previamente uma chamada de disponibilização. Pergunta Q-e110ce01110699e3 (aberta)
Interação
A nomenclatura segue concetualmente a oferta de serviços de ara::com, mas representa uma implementação autónoma dentro de ara::diag e não deve ser confundida com ofertas de comunicação (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors»). O mesmo padrão de disponibilização para a desativação do encaminhamento de pedidos é também utilizado em todo o módulo por outras classes de diagnóstico, como ara::diag::GenericUDSService[SWS_DM_00620], ara::diag::GenericDataIdentifier[SWS_DM_00639], interfaces de rotina [SWS_DM_00595], bem como ara::diag::Monitor[SWS_DM_01089].
Este texto foi criado por uma IA e baseia-se exclusivamente nos documentos de especificação do AUTOSAR R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão