Permite que aplicações processem genericamente solicitações de leitura e escrita UDS para identificadores de diagnóstico.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 02c252ff66d0ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Permite que aplicações processem genericamente solicitações de leitura e escrita UDS para identificadores de diagnóstico.
A classe ara::diag::GenericDataIdentifier serve como uma interface genérica para o processamento assíncrono de solicitações de leitura e escrita UDS para identificadores de diagnóstico no AUTOSAR Adaptive [SWS_DM_00636]. Após a vinculação a uma porta e a liberação via Offer(), o Diagnostic Management encaminha requisições aos métodos implementados [SWS_DM_00638]. Como instância singular, o objeto não pode ser copiado nem movido, enquanto a segurança de thread do processamento de requisições é controlada através da configuração de concorrência selecionada no construtor.
Contexto
A classe ara::diag::GenericDataIdentifier representa uma interface de serviço genérica dentro do cluster funcional Diagnostic Management (DM) da AUTOSAR Adaptive Platform SWS Diagnostics §8.2 «GenericDataIdentifier». Enquanto interfaces específicas de tipo estão vinculadas a tipos de dados modelados fixamente, GenericDataIdentifier destina-se ao processamento flexível de identificadores de diagnóstico (Data Identifiers, DIDs), nos quais o identificador de 16 bits é passado dinamicamente como parâmetro.
Três papéis participam primariamente do processamento de diagnóstico:
O testador de diagnóstico externo, que direciona ao veículo serviços UDS padronizados, tais como ReadDataByIdentifier (0x22) ou WriteDataByIdentifier (0x2E).
O Diagnostic Management (DM), que recebe solicitações de diagnóstico, valida-as e encaminha-as através de interfaces de porta definidas à respectiva instância da aplicação, desde que esta tenha sido previamente ativada via Offer[SWS_DM_00638].
A implementação específica da aplicação de GenericDataIdentifier, que encapsula a lógica real de processamento ao disponibilizar os métodos Read[SWS_DM_00636] e Write[SWS_DM_00637] e retornar os dados de forma assíncrona.
Ciclo de vida
Uma instância de ara::diag::GenericDataIdentifier é explicitamente instanciada através de seu construtor [SWS_DM_00634]. Ao fazer isso, o chamador vincula o objeto a um ara::core::InstanceSpecifier, que faz referência a um PortPrototype de um DiagnosticDataIdentifierGenericInterface modelado. Através do argumento concurrencyType (do tipo DataIdentifierConcurrencyType), define-se se as requisições são repassadas ao manipulador de forma concorrente (kConcurrent) ou sequencial (kNotConcurrent) [SWS_DM_00634].
Em termos de posse e tempo de vida, GenericDataIdentifier é modelado como uma instância singular, não copiável e não movível:
O construtor de cópia [SWS_DM_01653], bem como o operador de atribuição [SWS_DM_01651], foram excluídos (=delete).
Da mesma forma, o construtor move [SWS_DM_01654] e o operador de atribuição move [SWS_DM_01652] foram excluídos.
Após a instanciação, o objeto encontra-se no estado inativo; o Diagnostic Management ainda não encaminha requisições. O encaminhamento é ativado apenas através da chamada de Offer()[SWS_DM_00638]. Para desativar novamente o encaminhamento de requisições de diagnóstico, a aplicação chama StopOffer()[SWS_DM_00639]. A destruição do objeto ocorre através do destrutor virtual [SWS_DM_00635].
Em relação à concorrência, o construtor é thread-safe (thread-safe) [SWS_DM_00634]. Em contrapartida, os métodos administrativos Offer()[SWS_DM_00638] e StopOffer()[SWS_DM_00639], bem como o destrutor [SWS_DM_00635], são especificados como não thread-safe. A segurança de thread dos métodos Read e Write depende condicionalmente do concurrencyType selecionado [SWS_DM_00636], [SWS_DM_00637].
Um percurso típico para o tratamento de requisições de diagnóstico divide-se nas seguintes etapas:
Inicialização: a aplicação instancia sua classe de manipulador derivada indicando o InstanceSpecifier bem como a configuração de concorrência [SWS_DM_00634]. Interpretação: Na prática, isso deve ocorrer tipicamente durante a fase de inicialização do processo da aplicação. Pergunta Q-32596fba68253958 (aberta)
Disponibilização do serviço: a aplicação chama Offer()[SWS_DM_00638]. O Diagnostic Management ativa o encaminhamento de requisições de DID recebidas.
Processamento de requisições:
Ao receber uma ordem de leitura, o DM chama o método Read(dataIdentifier, metaInfo, cancellationHandler)[SWS_DM_00636]. A aplicação verifica o identificador de 16 bits passado e retorna assincronamente um ara::core::Future<OperationOutput>.
Ao chegar uma ordem de escrita, o DM chama Write(dataIdentifier, requestData, metaInfo, cancellationHandler)[SWS_DM_00637]. Os dados úteis em requestData permanecem válidos até que a respectiva promise seja cumprida ou o processamento seja cancelado.
Verificação de cancelamento: durante operações demoradas, o manipulador pode verificar através de cancellationHandler.IsCanceled() se a conversa foi cancelada, ou registrar uma função de notificação via cancellationHandler.SetNotifier[SWS_DM_00636], [SWS_DM_00637].
Desregistro do serviço: antes de encerrar o manipulador, a aplicação chama StopOffer()[SWS_DM_00639], fazendo com que o DM encerre o encaminhamento.
Diagrama de sequência: interação entre testador externo, Diagnostic Management e GenericDataIdentifier em uma requisição de leitura UDS. Fontes: [SWS_DM_00638], [SWS_DM_00636]
Cenários de erro
Podem ocorrer erros em diferentes fases da interação:
Violações de configuração e de mapeamento: se o InstanceSpecifier não puder ser resolvido no modelo ou não fizer referência a um PortPrototype, ocorre uma InstanceSpecifierMappingIntegrityViolation[SWS_DM_00634]. Se faltar a atribuição a um DiagnosticDataPortMapping, ocorre uma PortInterfaceMappingViolation[SWS_DM_00634]. Um mapeamento de processo ausente gera uma ProcessMappingViolation, e um InstanceSpecifier já utilizado resulta em uma InstanceSpecifierAlreadyInUseViolation[SWS_DM_00634].
Oferta múltipla: se Offer() for chamado embora o serviço já esteja sendo oferecido ativamente, o método retorna um ara::core::Result com o código de erro DiagOfferErrc::kAlreadyOffered[SWS_DM_00638].
Erros funcionais de diagnóstico: se uma requisição de leitura ou de escrita não puder ser atendida funcionalmente, a aplicação não retorna um status de sucesso no Future, mas sim um UDS-NRC (Negative Response Code) padronizado via DiagUdsNrcErrc de acordo com a ISO 14229-1 [SWS_DM_00636], [SWS_DM_00637].
Este guia baseia-se na especificação AUTOSAR 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 DiagnosticDataIdentifierGenericInterface needs to be referenced by a DiagnosticDataPortMapping. 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 DiagnosticDataIdentifierGenericInterface.
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: 860e6bd15d7fProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Uso: o método síncrono Offer da classe ara::diag::GenericDataIdentifier ([SWS_DM_00638]) destina-se ao registro de um manipulador de identificador de dados genérico junto ao Diagnostic Management (DM). Por meio desta chamada, o DM é autorizado a encaminhar solicitações de diagnóstico (Request Messages) de entrada para o respectivo identificador de dados para este manipulador ([SWS_DM_00638]). A função não recebe parâmetros de entrada e retorna sincronicamente um ara::core::Result<void> ([SWS_DM_00638]), que fornece informações sobre sucesso ou erro.
Tratamento de erros: o método é declarado com noexcept e garante segurança total contra exceções (exception safe) ([SWS_DM_00638]). Possíveis erros são reportados por meio do ara::core::Result. Se o manipulador já tiver sido disponibilizado anteriormente, a função retorna o código de erro DiagOfferErrc::kAlreadyOffered com semântica de reversão ([SWS_DM_00638]). Este corresponde à enumeração geral de erros DiagErrc::kAlreadyOffered ([SWS_DM_00514]).
Concorrência e restrições: a função é especificada como não segura para threads (not thread-safe) ([SWS_DM_00638]). Consequentemente, chamadas na mesma instância devem ser protegidas contra o acesso simultâneo. Como não há um método de cancelamento de registro separado especificado para GenericDataIdentifier, a oferta do serviço provavelmente está atrelada ao tempo de vida da instância do manipulador (interpretação). Pergunta Q-7c64a5bd308464a8 (aberta)
Interação: o procedimento segue o padrão de disponibilização contínuo do Diagnostic Management. Interfaces análogas são encontradas para identificadores de dados específicos de tipo ([SWS_DM_00599]), rotinas genéricas ([SWS_DM_00557]), bem como serviços UDS genéricos ([SWS_DM_00619]).
Called for ReadDataByIdentifier request for this DiagnosticDataIdentifier.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 7772a86b7791Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
usar
O método Read da classe ara::diag::GenericDataIdentifier é chamado assim que uma solicitação de diagnóstico para ReadDataByIdentifier (UDS 0x22) é recebida para o respectivo identificador de dados [SWS_DM_00636]. Como parâmetros, a função aceita a identificação numérica dataIdentifier, o contexto metaInfo e um cancellationHandler. Através do cancellationHandler, a aplicação pode consultar o status de cancelamento por meio de IsCanceled ou registrar uma função de notificação para conversas canceladas via SetNotifier[SWS_DM_00636]. O resultado é disponibilizado de forma assíncrona por meio de um ara::core::Future<OperationOutput>, que, em caso de sucesso, retorna os dados úteis (OperationOutput) [SWS_DM_00636].
Tratamento de erros
Em caso de erro, o Future retorna um valor de retorno negativo UDS (NRC) em conformidade com a ISO 14229-1 através de DiagUdsNrcErrc[SWS_DM_00636]. Caso a interface ainda não seja, ou não seja mais, oferecida através de offer(), o Diagnostic Management (DM) responde de forma autônoma com o NRC 0x94 (ResourceTemporarilyNotAvailable) [SWS_DM_01257]. Se o limite configurado de mensagens Response Pending for atingido, o servidor cancela o processamento e responde com o NRC 0x10 (generalReject) [SWS_DM_00369].
Concorrência e interação
O método é declarado como noexcept e é seguro contra exceções [SWS_DM_00636]. Sua segurança de thread é condicional: se a implementação precisa ser thread-safe é controlado através do ConcurrencyType passado no construtor [SWS_DM_00636]. Se readWrite estiver definido como kConcurrent, o DM pode disparar acessos de leitura e escrita de forma concorrente; caso contrário (kNotConcurrent), a chamada ocorre sequencialmente [SWS_DM_00939]. Ao contrário de interfaces específicas como [SWS_DM_00640], GenericDataIdentifier cobre faixas genéricas de DID de forma flexível por meio do ID passado [SWS_DM_00636].
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
dataIdentifier
the corresponding DataIdentifier
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 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: bd73a88bfde2ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Utilização e contexto de chamada
A função-membro StopOffer da classe ara::diag::GenericDataIdentifier serve para desativar o encaminhamento de mensagens de requisição recebidas do Diagnostic Management (DM) para a respectiva instância [SWS_DM_00639]. A chamada ocorre de forma síncrona por meio da interface do arquivo de cabeçalho #include "ara/diag/generic_data_identifier.h"[SWS_DM_00639]. A função possui a assinatura void StopOffer() noexcept;, não recebe parâmetros de entrada e não retorna nenhum valor [SWS_DM_00639].
Tratamento de erros e simultaneidade
A especificação define StopOffer como segura contra exceções (exception safe) e garante por meio do identificador noexcept a ausência de exceções [SWS_DM_00639]. Códigos de erro específicos, reações a erros ou mensagens para DET ou DEM não estão previstos para esta operação. Em relação à concorrência, o método está classificado como não thread-safe (not thread-safe) [SWS_DM_00639]. Chamadas paralelas na mesma instância devem, portanto, ser sincronizadas pelo chamador. Interpretação: presume-se que as requisições já iniciadas no Diagnostic Management ainda sejam processadas normalmente antes da parada definitiva do encaminhamento. Pergunta Q-94a464dc832c055c (aberta)
Interação no módulo de diagnóstico
O padrão de revogação da disponibilização de serviços é aplicado de forma padronizada e consistente no módulo de diagnóstico. Existem métodos StopOffer análogos, entre outros, para:
identificadores de dados específicos de tipo via DataIdentifierInterface::StopOffer[SWS_DM_00600] bem como elementos de dados [SWS_DM_00617],
rotinas genéricas via GenericRoutine::StopOffer[SWS_DM_00558] e interfaces de rotina específicas de tipo [SWS_DM_00595],
Called for WriteDataByIdentifier request for this DiagnosticDataIdentifier.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 7b195835c98cProcedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método Write da classe ara::diag::GenericDataIdentifier é chamado pelo Diagnostic Management assim que uma solicitação UDS do serviço WriteDataByIdentifier (0x2E) é recebida [SWS_DM_00637]. Pré-requisito para a chamada é que o identificador de dados solicitado seja suportado e que a respectiva sessão de diagnóstico, bem como o nível de segurança, permitam a execução [SWS_DM_00186], [SWS_DM_00415], [SWS_DM_00416].
A chamada ocorre com os seguintes parâmetros [SWS_DM_00637]:
dataIdentifier: A identificação de 16 bits do identificador de dados a ser gravado.
requestData: Um ara::core::Span com os dados brutos da solicitação sem o prefixo DID. O buffer permanece válido até que a Promise associada seja cumprida ou o processamento seja cancelado.
metaInfo: Metadados adicionais relativos à solicitação de diagnóstico.
cancellationHandler: Serve para monitorar um cancelamento prematuro da conversa via IsCanceled, bem como para registrar uma notificação de cancelamento através de SetNotifier.
A execução ocorre de forma assíncrona e retorna um ara::core::Future<void>[SWS_DM_00637]. Em caso de processamento bem-sucedido, a Promise é cumprida com void para uma mensagem de resposta positiva. Se ocorrer um erro, o Future deve ser concluído com um valor de retorno negativo UDS (NRC) apropriado, em conformidade com a ISO 14229-1, através de DiagUdsNrcErrc[SWS_DM_00637]. O método é declarado como noexcept e deve ser implementado de forma segura contra exceções [SWS_DM_00637].
Em relação à concorrência, a segurança de thread é condicional: se Write deve ser implementado de forma thread-safe depende do ConcurrencyType, que foi passado no construtor durante a instanciação [SWS_DM_00637]. Uma execução paralela de acessos de leitura e escrita é controlada por meio do sinalizador readWrite[SWS_DM_00939].
Este texto foi criado por uma IA. Todas as informações baseiam-se exclusivamente nas especificações do Release 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
dataIdentifier
the corresponding DataIdentifier
requestData
Content of request message (without DataIdentifier). 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.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão