Permite que as aplicações criem e verifiquem comprovações de proximidade para operações de diagnóstico SOVD protegidas.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 7c7c088635a6ProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Permite que as aplicações criem e verifiquem comprovações de proximidade para operações de diagnóstico SOVD protegidas.
A classe de interface serve, na AUTOSAR Adaptive Platform, para a implementação de verificações de proximidade para operações SOVD no ambiente de Diagnostics [SWS_DM_01481]. As aplicações derivam da classe, ativam o encaminhamento pelo Diagnostic Management via Offer() e fornecem de forma assíncrona o desafio (challenge) solicitado, bem como sua posterior validação [SWS_DM_01478]. Chamadas concorrentes aos métodos de validação orientam-se pelo modo de concorrência selecionado durante a construção, enquanto o registro e a destruição não são thread-safe.
Contexto
A classe ara::diag::SovdProximityChallenge[SWS_DM_01481] serve, na AUTOSAR Adaptive Platform, para a implementação do lado da aplicação da interface para comprovações de proximidade (Proximity Challenge) no ambiente de Service-Oriented Vehicle Diagnostics (SOVD). Ela forma a ponte entre o Diagnostic Management da AUTOSAR (DM ou Diagnostic Server) e a aplicação veicular propriamente dita, a qual fornece a lógica de segurança para verificações de proximidade físicas ou criptográficas AUTOSAR_AP_SWS_Diagnostics §8.56 «Providing the SOVD operation proximity_challenge». Quando está configurado para uma operação SOVD que uma comprovação de proximidade é necessária (o atributo proximityProofRequired é TRUE), o Diagnostic Management solicita um desafio (challenge) à aplicação durante o processamento de uma requisição de diagnóstico e providencia a verificação da resposta transmitida pelo cliente [SWS_DM_01398]. Três partes essenciais estão envolvidas nessa associação: o cliente SOVD externo, o Diagnostic Management intermediário e a aplicação usuária.
A instanciação da classe de tratador ocorre por meio do construtor SovdProximityChallenge[SWS_DM_01480]. Este vincula a instância a um ara::core::InstanceSpecifier definido no manifesto e determina, por meio do parâmetro ConcurrencyType, se a execução posterior ocorre de forma concorrente (kConcurrent) ou sequencial (kNotConcurrent). O próprio construtor é especificado como thread-safe [SWS_DM_01480]. Após a criação do objeto, o tratador permanece inicialmente em estado passivo. Apenas mediante a chamada explícita de Offer()[SWS_DM_01478] o Diagnostic Management é autorizado a encaminhar requisições à instância da aplicação.
O encaminhamento pode ser desativado novamente a qualquer momento por meio de StopOffer()[SWS_DM_01495]. Nem Offer(), StopOffer() nem o destrutor virtual ~SovdProximityChallenge()[SWS_DM_01479] são thread-safe. Interpretação: antes da destruição do objeto, supõe-se que seja necessário chamar StopOffer() para evitar um encaminhamento a um objeto em processo de desconstrução. Além disso, supõe-se que, na prática, uma instância de aplicação seja tipicamente mantida durante todo o tempo de execução do processo de diagnóstico para proteger continuamente as operações SOVD. A segurança de threads dos métodos reais de consulta e validação GetChallenge()[SWS_DM_01494] e ValidateResponse()[SWS_DM_01493] é controlada pelo ConcurrencyType passado no construtor. Pergunta Q-b4c66854163f433e (aberta)
Caminho de utilização
Após a inicialização e a disponibilização do serviço bem-sucedidas por meio de Offer()[SWS_DM_01478], a classe reage a requisições do Diagnostic Management. Se um cliente SOVD solicitar uma operação protegida, o DM chama o método puramente virtual GetChallenge()[SWS_DM_01494]. A aplicação gera o token de proximidade e o retorna assincronamente por meio de um ara::core::Future<SovdProximityChallengeType>, juntamente com o instante de validade (valid_until) [SWS_DM_01494]. Por padrão, assume-se que exista apenas um único desafio (challenge) em cada momento, válido para todos os clientes e operações, sendo seu tempo de vida tipicamente definido de forma fixa (por exemplo, em dois minutos) AUTOSAR_AP_SWS_Diagnostics §8.56 «Providing the SOVD operation proximity_challenge». Para cenários mais complexos, a aplicação pode avaliar o objeto ara::diag::MetaInfo passado a fim de realizar verificações específicas de clientes ou operações AUTOSAR_AP_SWS_Diagnostics §8.56 «Providing the SOVD operation proximity_challenge».
O Diagnostic Management transmite o atributo proximity_challenge no corpo da resposta para o cliente [SWS_DM_01398]. Se o cliente responder com uma comprovação de proximidade, o DM encaminha esses dados via ValidateResponse()[SWS_DM_01493]. A área de memória proximityResponse passada permanece válida até que o ara::core::Future<ProximityChallengeValidationResultType> retornado seja atendido ou o processamento seja cancelado [SWS_DM_01493]. Antes do encerramento do processo, o serviço é cancelado via StopOffer()[SWS_DM_01495].
Já durante a criação do objeto por meio do construtor [SWS_DM_01480], o framework verifica a consistência do modelo e pode reportar as seguintes violações: InstanceSpecifierMappingIntegrityViolation (o identificador não pode ser resolvido ou não aponta para um protótipo de porta), PortInterfaceMappingViolation (o protótipo de porta não está tipificado como DiagnosticSovdProximityChallengeInterface), ProcessMappingViolation (nenhum processo modelado correspondente foi encontrado) ou InstanceSpecifierAlreadyInUseViolation (o identificador já está sendo utilizado no processo) [SWS_DM_01480].
Na chamada de Offer()[SWS_DM_01478], o ara::core::Result<void> resultante fornece códigos de erro padronizados em caso de erro: DiagOfferErrc::kAlreadyOffered, se o serviço já estiver sendo oferecido ativamente para esta porta, ou DiagOfferErrc::kConfigurationMismatch, se a configuração do monitor não coincidir com o DEXT. Para GetChallenge()[SWS_DM_01494] e ValidateResponse()[SWS_DM_01493] não estão definidos códigos de erro padronizados. Todas as funções-membro da classe são declaradas como noexcept e garantem segurança contra exceções.
Este guia baseia-se na especificação AUTOSAR Adaptive Platform Release R25-11.
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: f009f89ccf76ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método síncrono Offer da classe ara::diag::SovdProximityChallenge (definido em #include "ara/diag/sovd_proximity_challenge.h") regista o manipulador no Diagnostic Management (DM) e capacita-o a encaminhar mensagens de pedido (request messages) recebidas para a instância do manipulador [SWS_DM_01478]. A chamada é efetuada sem parâmetros e está especificada com noexcept[SWS_DM_01478].
Serve como valor de retorno ara::core::Result<void>[SWS_DM_01478]. Em caso de erro, o método devolve um código de erro específico com semântica de rollback [SWS_DM_01478]:
DiagOfferErrc::kAlreadyOffered: o serviço já foi oferecido através da instância [SWS_DM_01478].
DiagOfferErrc::kConfigurationMismatch: a configuração do manipulador não coincide com os dados DEXT [SWS_DM_01478].
Quanto à segurança de execução, o método está declarado como exception safe, mas é expressamente considerado not thread-safe[SWS_DM_01478]. Chamadas paralelas na mesma instância têm, por isso, de ser sincronizadas pela aplicação chamadora. O padrão de disponibilização corresponde ao princípio uniforme de ativação de manipuladores do DM, tal como aplicado, entre outros, em ara::diag::GenericRoutine[SWS_DM_00557], ara::diag::GenericUDSService[SWS_DM_00619] e ara::diag::CommunicationControl[SWS_DM_00809]. Interpretação: enquanto Offer não tiver sido executado com sucesso, o DM presumivelmente não encaminha pedidos para o desafio de proximidade (proximity challenge) para o manipulador. Pergunta Q-320a80aca81ef460 (aberta)
Esta nota de uso foi gerada automaticamente com base no AUTOSAR R25-11.
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 referenced by a pingViolation DiagnosticSovdProximityChallengePortMapping needs to be typed by a DiagnosticSovdProximityChallengeInterface. 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
instanceSpecifier
InstanceSpecifier to a PortPrototype of a DiagnosticSovdProximityChallengeInterface service instance in the manifest.
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 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: d973f1eccf91ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método StopOffer da classe ara::diag::SovdProximityChallenge desativa o encaminhamento de mensagens de pedido do Diagnostic Management (DM) para esta instância de serviço ([SWS_DM_01495]). A interface é disponibilizada através do cabeçalho ara/diag/sovd_proximity_challenge.h.
Utilização e contexto de execução
A função é chamada de forma síncrona, não aceita parâmetros de passagem e não possui valor de retorno ([SWS_DM_01495]). Após a execução, o DM não encaminha mais pedidos para o desafio de proximidade para a aplicação.
Tratamento de erros e segurança contra exceções
O método está declarado como noexcept e é totalmente seguro em termos de exceções (exception safe) ([SWS_DM_01495]). Não estão previstos estados de erro ou códigos de erro específicos para esta chamada.
Concorrência e ciclo de vida
No que respeita à execução, StopOffer está expressamente especificado como não seguro entre threads (not thread-safe) ([SWS_DM_01495]). Chamadas paralelas na mesma instância têm de ser sincronizadas do lado do chamador. Interpretação: a chamada deverá ocorrer tipicamente no encerramento do componente ou em caso de suspensão temporária da verificação do desafio de proximidade. Pergunta Q-7b8910a8d5f6dc05 (aberta)
This function validates the proximity response sent by the client.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 0179eb4520d7ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método puramente virtual ara::diag::SovdProximityChallenge::ValidateResponse serve para a validação de uma resposta de proximidade transmitida pelo cliente [SWS_DM_01493]. A instância do Diagnostic Server chama este método assim que um corpo de requisição SOVD contiver o atributo proximity_response[SWS_DM_01395], como, por exemplo, em solicitações para encerrar a execução de uma operação [SWS_DM_01391]. São passados o byte span proximityResponse, bem como o objeto de contexto metaInfo[SWS_DM_01493]. Este último permite à aplicação realizar verificações específicas do cliente ou da operação, caso necessário SWS Diagnostics p. 215. O resultado da validação é disponibilizado assincronamente por meio de um ara::core::Future<ProximityChallengeValidationResultType>[SWS_DM_01493].
A interface está declarada como noexcept e segura contra exceções (exception safe) [SWS_DM_01493]. Não são prescritos códigos de erro padronizados [SWS_DM_01493]. Interpretação: presume-se que uma falha na validação de proximidade seja mapeada por meio do tipo de retorno ProximityChallengeValidationResultType ou do canal de erro do Future. Pergunta Q-1be6378537b59f2b (aberta)
Quanto à concorrência, a segurança de threads é condicional (conditional): se a implementação precisa ser segura para threads é controlado por meio do ConcurrencyType definido no construtor [SWS_DM_01493]. Os dados passados no buffer proximityResponse permanecem válidos até que o Promise associado seja cumprido ou o processamento seja cancelado por um CancellationHandler [SWS_DM_01493].
A função interage com a disponibilização do challenge via GetChallenge[SWS_DM_01398]. Somente após a validação bem-sucedida da resposta de proximidade o servidor executa ações solicitadas, como o encerramento de uma operação via Terminate na SovdOperationExecution[SWS_DM_02179].
Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR Adaptive R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão