Serve para a disponibilização, pelo lado da aplicação, de dados de diagnóstico estendidos para o Diagnostic Management adaptativo.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 0446a63ad449ProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Serve para a disponibilização, pelo lado da aplicação, de dados de diagnóstico estendidos para o Diagnostic Management adaptativo.
A classe <ExtendedDataRecordElementInterface> serve às aplicações adaptativas como interface para a disponibilização de dados de diagnóstico estendidos ao Diagnostic Management ([SWS_DM_02152]). Após a instanciação e a ativação através de Offer(), o handler implementa a disponibilização assíncrona dos dados através do método puramente virtual Read() ([SWS_DM_02156]). Como o Diagnostic Manager guarda os registos de forma permanente na memória não volátil, os valores não disponíveis têm de ser obrigatoriamente preenchidos com um padrão de preenchimento. A interface não pode ser copiada nem movida, e o seu destrutor não é thread-safe.
Contexto
A interface <ExtendedDataRecordElementInterface> serve no subsistema de diagnóstico da AUTOSAR Adaptive Platform para a disponibilização de dados de diagnóstico estendidos específicos da aplicação (Extended Data Records) para o Diagnostic Management (DM) (AUTOSAR AP SWS Diagnostics §7.2 «DiagnosticExtendedDataRecordInterface»). Um Extended Data Record contém dados adicionais relacionados com o diagnóstico, como valores de contadores ou informações de ambiente, atribuídos a um evento de erro. A classe funciona como interface base abstrata para componentes handler do lado da aplicação. Entre os parceiros de interação encontram-se o Diagnostic Manager (DM), que solicita e coordena operações de leitura, a implementação concreta do handler dentro da aplicação, bem como a memória não volátil (Non-Volatile Memory, NVM), na qual o DM armazena permanentemente os dados consultados ([SWS_DM_02156]). Interpretation: O acionamento de Read() é presumivelmente desencadeado por um processamento interno de diagnóstico no DM, por exemplo aquando da ocorrência de um evento de erro ou em mudanças de estado de um Diagnostic Trouble Code. Pergunta Q-f80be8c2bd5697fc (aberta)
A criação é efetuada através do construtor parametrizado com a indicação de um ara::core::InstanceSpecifier bem como do modo de concorrência ara::diag::ConcurrencyType ([SWS_DM_02158], AUTOSAR AP SWS Diagnostics §7.2 «DiagnosticExtendedDataRecordInterface»). A construção é thread-safe e segura contra exceções (exception safe). Através do parâmetro concurrencyType, define-se se as chamadas da interface podem ser processadas de forma concorrente (kConcurrent) ou sequencial (kNotConcurrent) ([SWS_DM_02158]). As operações de cópia e movimentação estão totalmente impedidas: o construtor de cópia ([SWS_DM_02147]), a atribuição por cópia ([SWS_DM_02148]), o construtor de movimentação ([SWS_DM_02149]) e a atribuição por movimentação ([SWS_DM_02150]) foram eliminados (=delete). Uma instância possui, assim, uma identidade fixa e não pode ser duplicada nem transferida.
Após a instanciação, o objeto encontra-se inicialmente no estado inativo. Apenas através da chamada de Offer() ([SWS_DM_02152]) o serviço é ativado e o DM encaminha pedidos para o handler. Por meio de StopOffer() ([SWS_DM_02153]), este encaminhamento pode ser interrompido a qualquer momento. A destruição ocorre através do destrutor virtual ~<ExtendedDataRecordElementInterface>() ([SWS_DM_02151]). Este é, na verdade, seguro contra exceções, mas explicitamente não thread-safe (not thread-safe) ([SWS_DM_02151]). Interpretation: StopOffer() deverá ter de ser chamado antes da destruição do objeto handler, para assegurar que não sejam recebidos mais pedidos enquanto o objeto estiver a ser libertado. Pergunta Q-c77dda63f0e8798a (aberta)
Caminho de utilização
O fluxo regular compreende a disponibilização, a resposta assíncrona a pedidos de leitura e a desativação do serviço:
Inicialização: A aplicação instancia a classe derivada com o identificador de porta adequado e a configuração de concorrência ([SWS_DM_02158]).
Oferta do serviço: Através da chamada de Offer(), é ativado o encaminhamento de pedidos no DM ([SWS_DM_02152]). O método retorna um ara::core::Result<void>.
Consulta de dados: Quando chega um pedido de leitura, o DM chama o método puramente virtual Read() ([SWS_DM_02156]). Neste processo, são transmitidos os metadados do pedido (metaInfo) e um cancellationHandler.
Tratamento de cancelamento e retorno: O handler pode verificar através de cancellationHandler.IsCanceled() se a conversação foi cancelada ou registar uma notificação via cancellationHandler.SetNotifier() ([SWS_DM_02156]). O resultado é fornecido assincronamente através de um ara::core::Future com um objeto ReadOutput ([SWS_DM_02156], [SWS_DM_02154]).
Persistência: O DM assume os dados obtidos e armazena-os permanentemente na memória não volátil ([SWS_DM_02156]).
Cancelamento do registo do serviço: Antes do encerramento, a aplicação chama StopOffer() ([SWS_DM_02153]) para terminar o encaminhamento pelo DM antes que a instância seja destruída ([SWS_DM_02151]).
Durante a utilização da interface, devem ser observadas várias condições de erro e pré-condições:
Erros de construção e violações de modelo: Ao chamar o construtor, podem ocorrer erros de modelação ([SWS_DM_02158]). Entre estes incluem-se InstanceSpecifierMappingIntegrityViolation (o identificador não pode ser resolvido ou não referencia um PortPrototype), PortInterfaceMappingViolation (ausência de referenciação por um DiagnosticDataPortMapping), ProcessMappingViolation (nenhum processo correspondente encontrado no modelo), bem como InstanceSpecifierAlreadyInUseViolation (o identificador já está a ser utilizado no processo) ([SWS_DM_02158]).
Oferta múltipla: Se Offer() for chamado quando o serviço já estiver a ser ativamente oferecido, a chamada falha e retorna o código de erro DiagOfferErrc::kAlreadyOffered ([SWS_DM_02152]).
Dados não disponíveis em pedidos de leitura: Uma vez que o DM armazena os dados na memória não volátil, aquando de uma chamada de Read() tem de ser obrigatoriamente retornado um valor ([SWS_DM_02156]). Se os dados não estiverem disponíveis no momento da consulta, a implementação do handler tem de preenchê-los com um padrão de preenchimento definido como 0xFF ([SWS_DM_02156]).
Erros de aplicação e de diagnóstico: Se a disponibilização de dados falhar por completo, o ara::core::Future retornado pode conter um código de erro NRC de diagnóstico correspondente (DiagUdsNrcErrc) ou um erro específico da aplicação (ApApplicationError) ([SWS_DM_02156]).
Perigo na destruição: Dado que o destrutor não é thread-safe ([SWS_DM_02151]), a destruição do objeto durante chamadas em execução paralela ou sem um StopOffer() prévio ([SWS_DM_02153]) resulta em comportamento indefinido.
Este guia foi gerado por uma IA com base na especificação AUTOSAR R25-11.
Provision of a Read ExtendedDataRecordElement. The data fetched by this method is stored in non-volatile memory by the DM and therefore always a value needs to be returned. Not available data at the time of the method call shall be filled with a filling pattern, e.g 0xFF by the implementation of this method (DiagnosticExtendedDataRecordInterface in the role provide).
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 5f6f8ec51798Procedê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 <ExtendedDataRecordElementInterface> serve como construtor para a criação de um DataElement para uma interface de registro de dados estendidos com base em um ara::core::InstanceSpecifier[SWS_DM_02158]. A declaração localiza-se no escopo <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface> e requer a inclusão do arquivo de cabeçalho #include "<ExtendedDataRecordElementShortname>.h"AUTOSAR_AP_SWS_Diagnostics §8.49.2.2.1.6.
A chamada síncrona requer dois parâmetros de entrada [SWS_DM_02158]:
instanceSpec (ara::core::InstanceSpecifier): Identificador da instância de serviço concreta no modelo AUTOSAR.
concurrencyType (ara::diag::ConcurrencyType): Determina se a interface é instanciada como thread-safe (kConcurrent) ou não thread-safe (kNotConcurrent).
Concorrência e segurança contra erros
A própria função construtora é declarada como noexcept e especificada como thread-safe bem como exception safe[SWS_DM_02158]. Interpretação: Como a função é definida como noexcept, erros de modelagem e inicialização não devem ser sinalizados via C++-Exceptions, mas sim através das violations definidas no framework Adaptive [SWS_DM_02158]. Pergunta Q-9ce91764c3e8364e (aberta)
Tratamento de erros e violações de modelo
Em caso de configuração incorreta do modelo ou identificadores inválidos, ocorrem violations específicas [SWS_DM_02158]:
InstanceSpecifierMappingIntegrityViolation: O identificador não pode ser resolvido no contexto do processo ou não referencia um PortPrototype.
PortInterfaceMappingViolation: Um PortPrototype tipificado por DiagnosticExtendedDataRecordInterface não é referenciado por um DiagnosticDataPortMapping.
ProcessMappingViolation: Existe uma InstanceRef correspondente, mas não foi encontrado nenhum processo modelado correspondente para o processo de tempo de execução.
InstanceSpecifierAlreadyInUseViolation: O construtor foi chamado com um InstanceSpecifier que já está em uso no processo.
Esta nota de uso foi gerada automaticamente com base na especificação do AUTOSAR Adaptive R25-11.
Guia do implementador em breve (complexidade I1)
Header-Datei
#include "<ExtendedDataRecordElementShortname>.h"
Scope
class <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>
Exception-Sicherheit
exception safe
Thread-Sicherheit
thread-safe
Verletzungen (Violations)
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 DiagnosticExtendedDataRecordInterface 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
instanceSpec
The specifier of a specific instance of a service.
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: e44e4ef775f3ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função Offer ativa o encaminhamento de requisições de diagnóstico pelo Diagnostic Management Daemon (DM) para a respectiva instância do handler [SWS_DM_02152]. Ela é chamada sem parâmetros e retorna sincronicamente um ara::core::Result<void>, declarado como noexcept e especificado como exception-safe [SWS_DM_02152].
Para a utilização correta e o tratamento de erros, aplicam-se as seguintes diretrizes:
Valor de retorno e erros: Em caso de sucesso, o resultado contém um valor vazio. Se o serviço já tiver sido registrado anteriormente para esta instância de handler, a chamada falha e retorna o código de erro DiagOfferErrc::kAlreadyOffered com semântica de rollback [SWS_DM_02152]. Domínios de erro correlatos também definem o código de erro kAlreadyOffered para este estado [SWS_DM_00514][SWS_DM_00560].
Simultaneidade: Ao contrário de outros handlers de diagnóstico, frequentemente designados como não thread-safe (como em [SWS_DM_00557]), este método é explicitamente definido como thread-safe [SWS_DM_02152].
Interação no sistema: Enquanto uma interface ainda não tiver sido disponibilizada pela aplicação por meio de Offer, o DM reage, conforme o contexto, com valores padrão ou substitutos definidos, como, por exemplo, com o status «Not ready» em consultas de DoIP-PowerMode [SWS_DM_01525] ou valores substitutos para identificadores de grupo [SWS_DM_01527]. Além disso, a especificação enfatiza que funções de offer de diagnóstico são específicas para ara::diag e não devem ser confundidas com ara::com::OfferAUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors».
Interpretação: O comportamento de retorno síncrono de Offer deve garantir que o registro do handler seja completamente concluído antes da recepção de requisições UDS subsequentes. Pergunta Q-e6b2916cf4887164 (aberta)
Este texto foi gerado por uma IA com base na especificação AUTOSAR R25-11.
Guia do implementador em breve (complexidade I2)
Header-Datei
#include "<ExtendedDataRecordElementShortname>.h"
Scope
class <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>
• If successful: an ara::core::Result containing a ara:: core::Result::value_type • If unsuccessful: an ara::core::Result containing an ara:: core::Result::error_type i.e. a corresponding ara:: diag::DiagOfferErrc
Fehler
Fehlercode
Beschreibung
DiagOfferErrc::kAlreadyOffered
rollback_semantics The service is already offered.
Request a governed re-review of this record. The record is not changed immediately.
Provision of a Read ExtendedDataRecordElement. The data fetched by this method is stored in non-volatile memory by the DM and therefore always a value needs to be returned. Not available data at the time of the method call shall be filled with a filling pattern, e.g 0xFF by the implementation of this method (DiagnosticExtendedDataRecordInterface in the role provide).
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: fe834745387eProcedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Utilização e semântica
O método puramente virtual Read é chamado pelo Diagnostic Management (DM) para obter os dados de um ExtendedDataRecordElement a partir da aplicação ([SWS_DM_02156]). Como o DM salva os dados obtidos de forma duradoura na memória não volátil, o método deve sempre fornecer um valor. Se os dados não estiverem disponíveis no momento da chamada, eles deverão ser preenchidos pela implementação com um padrão de preenchimento como 0xFF ([SWS_DM_02156]).
A execução ocorre de forma assíncrona e retorna um ara::core::Future, que encapsula a estrutura ReadOutput em caso de sucesso ([SWS_DM_02154]). A chamada passa os seguintes parâmetros ([SWS_DM_02156]):
metaInfo: transmite metainformações da requisição de diagnóstico subjacente.
cancellationHandler: permite a consulta de um cancelamento por meio de cancellationHandler.IsCanceled(), bem como o registro de uma função de notificação via cancellationHandler.SetNotifier().
Tratamento de erros
Em caso de erro, o Future disponibiliza um código de resposta negativa UDS (DiagUdsNrcErrc) ou um erro específico da aplicação (ApApplicationError) ([SWS_DM_02156], AUTOSAR_AP_SWS_Diagnostics §7.3.2.6.1 «NRCs created by application»). Caso a interface de serviço necessária ainda não seja ou não seja mais disponibilizada via offer(), o DM responde com NRC 0x94 (ResourceTemporarilyNotAvailable) ([SWS_DM_01257]). Além disso, DiagOfferErrc::kAlreadyOffered reporta se o serviço já estiver sendo oferecido ([SWS_DM_02156]).
Concorrência e interação
O método é especificado como seguro contra exceções (exception safe) ([SWS_DM_02156]). A segurança de threads é condicional e definida pela implementação (implementation defined) ([SWS_DM_02156]). Isso diferencia Read para Extended Data Records de operações de leitura em elementos de dados regulares ([SWS_DM_00596]) ou identificadores de dados ([SWS_DM_00640]), que são expressamente não thread-safe.
Este texto foi gerado por um sistema de IA com base nas especificações do release R25-11.
Guia do implementador em breve (complexidade I1)
Header-Datei
#include "<ExtendedDataRecordElementShortname>.h"
Scope
class <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>
Exception-Sicherheit
exception safe
Thread-Sicherheit
conditional Thread safety is implementation defined
Parameter (in)
Parameter
Beschreibung
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.
• If successful: an ara::core::Future containing an ReadOutput object as per [SWS_DM_02154] • If unsuccessful: an ara::core::Future containing a corresponding DiagUdsNrcErrc or ApApplicationError.
Fehler
Fehlercode
Beschreibung
DiagOfferErrc::kAlreadyOffered
rollback_semantics The service is already offered.
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: 7a0fc3b7b561Procedê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 StopOffer é chamada em uma instância da interface de Extended-Data-Record (<ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>), a qual é incluída através do cabeçalho #include "<ExtendedDataRecordElementShortname>.h"[SWS_DM_02153]. A chamada ocorre de forma síncrona, não aceita parâmetros e não possui valor de retorno (void).
A finalidade do método é desativar o encaminhamento de mensagens de requisição recebidas do Diagnostic Management (DM) para o respectivo elemento de Extended-Data-Record [SWS_DM_02153]. Após a execução, o DM não encaminha mais novas requisições de diagnóstico para o handler associado.
Tratamento de erros e simultaneidade
A função é declarada com o identificador noexcept e especificada como segura contra exceções (exception safe) [SWS_DM_02153]. Códigos de erro específicos, valores de retorno ou notificações para monitoramentos de erro não são definidos no payload; em caso de erro, nenhuma exception é lançada.
Em relação à simultaneidade, o método é expressamente classificado como thread-safe (thread-safe) [SWS_DM_02153]. Isso representa uma particularidade, já que interfaces StopOffer correlatas em ara::diag – como, por exemplo, para rotinas [SWS_DM_00558], elementos de dados [SWS_DM_00617] ou monitores [SWS_DM_01089] – são especificadas como não thread-safe. Requisições que já estejam em processamento presumivelmente ainda serão concluídas ou descartadas antes da parada definitiva. Pergunta Q-82e9d44f8ac1969d (aberta)
Interação no Diagnostic Management
A nomenclatura segue o padrão uniforme de serviços no AUTOSAR Adaptive, no qual unidades funcionais controlam sua disponibilidade via Offer e StopOfferAUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors». O elemento alinha-se, assim, a interfaces comparáveis do DM, como para serviços UDS genéricos [SWS_DM_00620], identificadores de dados [SWS_DM_00600], acessos de segurança [SWS_DM_00767] ou requisições de reset da ECU [SWS_DM_01017].
Esta nota de uso foi gerada por uma IA com base na especificação AUTOSAR Adaptive R25-11.
Guia do implementador em breve (complexidade I2)
Header-Datei
#include "<ExtendedDataRecordElementShortname>.h"
Scope
class <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>
Exception-Sicherheit
exception safe
Thread-Sicherheit
thread-safe
Rückgabewert
Typ
Beschreibung
None
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão