Serve como interface para aplicações para verificação e execução de resets de ECUs UDS no Diagnostic Management.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 5b921e2dd86fProcedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Serve como interface para aplicações para verificação e execução de resets de ECUs UDS no Diagnostic Management.
A classe ara::diag::EcuResetRequest representa a interface de aplicação para o processamento de serviços de reset UDS (Service 0x11) no Diagnostic Management AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.5.1. Após a ativação por meio de Offer(), ela recebe requisições para a verificação e execução de reinicializações, bem como para o controle de rapid shutdown ([SWS_DM_01016], [SWS_DM_01013], [SWS_DM_01014]). As instâncias não são copiáveis nem móveis e todos os métodos são especificados como não thread-safe ([SWS_DM_01010], [SWS_DM_01621]).
Contexto
A classe de interface ara::diag::EcuResetRequest serve para o processamento do serviço UDS ECUReset (Service 0x11) na AUTOSAR Adaptive Platform AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.5.1 «Service 0x11 – ECUReset – RapidPowerShutdown sub function». Ela permite que uma aplicação atue como handler para requisições de reset do Diagnostic Management (DM). Entre as tarefas estão a ativação ou desativação do desligamento rápido ([SWS_DM_01012]), a verificação de requisições de reset recebidas ([SWS_DM_01013]) e a execução propriamente dita da reinicialização ([SWS_DM_01014]). Os parceiros de interação envolvidos são o testador de diagnóstico externo, a instância do Diagnostic Management (DM ou Diagnostic Server) e a implementação de EcuResetRequest no lado da aplicação.
Uma instância de EcuResetRequest é criada por meio de seu construtor explícito indicando um ara::core::InstanceSpecifier que referencia um PortPrototype de um DiagnosticEcuResetInterface ([SWS_DM_01010]). De acordo com as diretrizes de design, a classe não é copiável nem móvel; os construtores de cópia e de movimentação ([SWS_DM_01621], [SWS_DM_01622]), bem como os respectivos operadores de atribuição ([SWS_DM_01619], [SWS_DM_01620]), são explicitamente excluídos (=delete). Todos os métodos de interface e o destrutor ([SWS_DM_01011]) são especificados como not thread-safe ([SWS_DM_01010], [SWS_DM_01016], [SWS_DM_01017]). Após a inicialização, o handler permanece inicialmente no estado em que não ocorre o encaminhamento de requisições, até que o registro seja explicitamente ativado via Offer() ([SWS_DM_01016]). Ao chamar StopOffer(), o encaminhamento de requisições é desativado novamente ([SWS_DM_01017]), antes que o objeto possa ser destruído ([SWS_DM_01011]).
Um caminho típico de uso divide-se em inicialização, habilitação e processamento subsequente de requisições de diagnóstico:
Instanciação e liberação: a aplicação instancia a classe derivada com o InstanceSpecifier adequado ([SWS_DM_01010]) e chama Offer() para permitir que o DM encaminhe requisições ([SWS_DM_01016]).
Controle de rapid shutdown: se o DM receber uma requisição UDS para EnableRapidPowerShutdown ou DisableRapidPowerShutdown, ele chama EnableRapidShutdown(enable, metaInfo, cancellationHandler) ([SWS_DM_01020], [SWS_DM_01021], [SWS_DM_01012]). Em caso de confirmação positiva, o DM insere o valor configurado para o tempo de desligamento na resposta (AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.5.1 [SWS_DM_01092]).
Requisição de reset: para todas as outras subfunções de reset UDS, o DM chama o método RequestReset(resetType, id, metaInfo, cancellationHandler) ([SWS_DM_01013]). O processo instanciador deve verificar cuidadosamente se a reinicialização de partes ou de toda a máquina é permitida ([SWS_DM_01013]). Por meio do cancellationHandler, o status de cancelamento pode ser consultado ou um notificador pode ser registrado ([SWS_DM_01013]).
Execução do reset: se a requisição for aceita e estiver configurado que a resposta positiva deve ser enviada antes do reset (respondBeforeReset ou não presente), o Diagnostic Server envia a resposta UDS positiva e, em seguida, chama ExecuteReset(metaInfo) (AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.5.2 [SWS_DM_01023], [SWS_DM_01014]). Se, em vez disso, respondAfterReset foi configurado, a resposta positiva só é enviada de volta após a reinicialização, desde que RequestReset() não tenha relatado nenhum erro (AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.5.2 [SWS_DM_00360]).
Cancelamento do registro do serviço: para encerrar o encaminhamento do serviço, a aplicação chama StopOffer() ([SWS_DM_01017]).
Em caso de erro, os seguintes aspectos devem ser observados nas diversas chamadas:
Violações do construtor: durante a criação, podem ocorrer violações de modelo, entre outras coisas se o InstanceSpecifier não puder ser resolvido no modelo (InstanceSpecifierMappingIntegrityViolation), apontar para um elemento de modelo incorreto, a associação de porta estiver ausente (PortInterfaceMappingViolation), não houver referência a um processo (ProcessMappingViolation) ou o identificador já estiver em uso no processo (InstanceSpecifierAlreadyInUseViolation) ([SWS_DM_01010]).
Erros de registro: se Offer() for chamado enquanto o serviço já estiver sendo oferecido, o método retorna um ara::core::Result com o código de erro DiagOfferErrc::kAlreadyOffered ([SWS_DM_01016]).
Códigos de erro de diagnóstico (NRCs): se EnableRapidShutdown, RequestReset ou ExecuteReset não puderem ser concluídos com sucesso, seus futures de retorno devolvem um erro com um Negative Response Code (NRC) da ISO 14229-1 correspondente via DiagUdsNrcErrc ([SWS_DM_01012], [SWS_DM_01013], [SWS_DM_01014]). Deve-se observar: se respondToReset estiver definido como respondBeforeReset ou não estiver configurado, um erro em ExecuteReset() não terá mais impacto na resposta de diagnóstico, pois a confirmação positiva já foi enviada previamente ao testador ([SWS_DM_01014], AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.5.2 [SWS_DM_01023]).
Este guia baseia-se exclusivamente nas especificações da AUTOSAR Adaptive Platform R25-11.
Called for any EcuReset subFunction, except En-/DisableRapidShutdown. The process, which is instantiating this interface, needs to evaluate carefully if the request to restart parts or the whole machine. Once the request to reset is accepted, the process, which is instantiating this interface, has to rely on this decision for the ExecuteReset() trigger.
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 DiagnosticEcuResetInterface 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 DiagnosticEcuResetInterface.
Request a governed re-review of this record. The record is not changed immediately.
Interface for subFunction En-/DisableRapidShutdown.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 64d1feb19eceProcedê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
O método puramente virtual EnableRapidShutdown da classe ara::diag::EcuResetRequest serve de interface para o tratamento das subfunções UDS para o encerramento rápido ([SWS_DM_01012]). Ao receber pedidos de diagnóstico do serviço 0x11 (ECUReset), o Diagnostic Manager (DM) chama esta função: para EnableRapidPowerShutdown com o argumento enable = true ([SWS_DM_01020]) e para DisableRapidPowerShutdown com enable = false ([SWS_DM_01021]). Isto distingue estas duas subfunções de todos os restantes serviços ECUReset, que, em vez disso, acionam RequestReset ([SWS_DM_00235]).
enable: Ativa o encerramento rápido em true e desativa-o em false.
metaInfo: Passa metainformações sobre o pedido de diagnóstico.
cancellationHandler: Serve para a monitorização do estado de cancelamento via cancellationHandler.IsCanceled() ou para o registo de um notificador através de cancellationHandler.SetNotifier(), caso a conversação de diagnóstico em curso seja cancelada.
Semântica, tratamento de erros e concorrência
A interface devolve um ara::core::Future<void>; o processamento propriamente dito ocorre, portanto, presumivelmente de forma assíncrona em segundo plano ([SWS_DM_01012]). Pergunta Q-ee781913ae88fabb (aberta) Em caso de sucesso, a future não fornece qualquer valor. Em caso de erro, deve ser definido um Negative Response Code (NRC) adequado conforme a ISO 14229-1 por meio de DiagUdsNrcErrc (AUTOSAR_AP_SWS_Diagnostics §8.16.3.1.3.1 «EnableRapidShutdown»). A função está especificada como noexcept e segura contra exceções (exception safe), mas é considerada não segura para threads (not thread-safe), razão pela qual chamadas concorrentes na mesma instância devem ser evitadas pelo lado da aplicação ([SWS_DM_01012]).
Este texto foi gerado por uma IA com base na especificação AUTOSAR R25-11.
When enable is set to true the rapid shutdown will be enabled, setting enable to false will disable rapid shutdown.
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.
process which is instantiating this interface, has to execute the requested reset.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 5a6dac3995bcProcedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método ExecuteReset da interface ara::diag::EcuResetRequest é chamado pelo Diagnostic Server (DM) para acionar efetivamente no processo de implementação o reset da ECU aceite previamente por meio de [SWS_DM_01013][SWS_DM_01014]. Como parâmetro, é passado o metaInfo do pedido. A função está especificada como não segura para threads (not thread-safe), mas segura contra exceções (exception safe) [SWS_DM_01014].
O momento da chamada pelo Diagnostic Server depende do parâmetro de configuração DiagnosticEcuResetClass.respondToReset:
Se o parâmetro não estiver presente ou estiver definido como respondBeforeReset, o Diagnostic Server só chama ExecuteReset após a resposta UDS positiva ter sido enviada [SWS_DM_01023].
Se respondAfterReset estiver configurado, a chamada de ExecuteReset ocorre diretamente e sem o envio prévio da resposta positiva [SWS_DM_01090].
A função devolve um ara::core::Future<void>[SWS_DM_01014]. Se os pedidos UDS recebidos tiverem sido bloqueados após a aceitação do reset [SWS_DM_01022], o Diagnostic Server remove esse bloqueio assim que a Future devolvida por ExecuteReset estiver concluída [SWS_DM_01309]. Possíveis erros são sinalizados através de NRCs da ISO 14229-1 por meio de DiagUdsNrcErrc no Future; no entanto, com a configuração respondBeforeReset, um erro passado não produz efeito [SWS_DM_01014].
Este texto foi criado por uma IA e baseia-se no AUTOSAR Release R25-11.
Return nothing or an error. In case the parameter DiagnosticEcu ResetClass.respondToReset is either not present or present and set to respondBeforeReset, a given error has no effect.
Fehler
Fehlercode
Beschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.
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: c497a60736afProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Com o método ara::diag::EcuResetRequest::Offer ([SWS_DM_01016]), uma Adaptive Application sinaliza ao Diagnostic Management (DM) que está pronta para receber pedidos de diagnóstico de entrada para um reset da ECU. Através da chamada síncrona, o DM é autorizado a encaminhar mensagens de pedido (request) correspondentes para este handler ([SWS_DM_01016]). Presume-se que a chamada ocorra tipicamente durante a fase de inicialização da aplicação, antes de os pedidos de diagnóstico serem processados pelo DM. Pergunta Q-93d794e6b1dba23e (aberta)
Chamada e tratamento de erros
A função não possui parâmetros de entrada, está declarada como noexcept e garante segurança contra exceções ([SWS_DM_01016]). Como valor de retorno é utilizado um ara::core::Result<void>. Se a disponibilização falhar porque o serviço já foi oferecido anteriormente, o método devolve o código de erro DiagOfferErrc::kAlreadyOffered com semântica de rollback ([SWS_DM_01016]).
Concorrência e interação
De acordo com a especificação, a função está classificada como not thread-safe ([SWS_DM_01016]). Chamadas na mesma instância de ara::diag::EcuResetRequest têm, por conseguinte, de ser sincronizadas do lado da aplicação. O padrão de disponibilização corresponde ao design uniforme de interfaces no Adaptive Diagnostic Management, tal como se encontra definido analogamente para outros handlers como ara::diag::GenericUDSService::Offer ([SWS_DM_00619]), ara::diag::GenericRoutine::Offer ([SWS_DM_00557]) ou ara::diag::CommunicationControl::Offer ([SWS_DM_00809]). Embora a nomenclatura seja inspirada em ara::com, trata-se de uma implementação autónoma do Diagnostic Management (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors»).
Esta nota de utilização foi gerada automaticamente e baseia-se na especificação AUTOSAR Adaptive R25-11.
Called for any EcuReset subFunction, except En-/DisableRapidShutdown. The process, which is instantiating this interface, needs to evaluate carefully if the request to restart parts or the whole machine. Once the request to reset is accepted, the process, which is instantiating this interface, has to rely on this decision for the ExecuteReset() trigger.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 4ec2f9bf44c2Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método ara::diag::EcuResetRequest::RequestReset (#include "ara/diag/ecu_reset_request.h") é chamado pelo servidor de diagnóstico assim que uma solicitação UDS para o serviço 0x11 (ECUReset) é recebida ([SWS_DM_00235], SWS Diagnostics §7.3.2.8.5.2 «Service 0x11 – ECUReset – all other sub functions»). Isso se aplica a todas as subfunções de reset com exceção de EnableRapidPowerShutdown e DisableRapidPowerShutdown ([SWS_DM_01013]). A aplicação instanciadora deve verificar cuidadosamente antes da aceitação se um reinício de partes ou de toda a máquina pode ser executado ([SWS_DM_01013]).
Parâmetros e interface assíncrona
A chamada passa o tipo de reset resetType, um identificador opcional id (avaliado apenas se resetType estiver em custom), os metadados metaInfo, bem como um cancellationHandler ([SWS_DM_01013]). Através do cancellationHandler, a aplicação pode determinar o estado de cancelamento via IsCanceled ou registrar uma função de callback para eventos de cancelamento por meio de SetNotifier ([SWS_DM_01013]). O resultado é disponibilizado de forma assíncrona através de ara::core::Future<void> ([SWS_DM_01013]).
Tratamento de erros, controle de fluxo e simultaneidade
Se o reset não puder ser aceito, um código de erro NRC apropriado em conformidade com a ISO 14229-1 deve ser retornado no Future através de DiagUdsNrcErrc ([SWS_DM_01013]); além disso, o reporte de um ApApplicationError é considerado ([SWS_DM_00360]). Se a solicitação for aceita, essa decisão será vinculativa para o acionador subsequente de ExecuteReset ([SWS_DM_01013]), e o servidor de diagnóstico ignorará solicitações UDS de entrada posteriores ([SWS_DM_01022]), até que o bloqueio seja removido após a conclusão de ExecuteReset ([SWS_DM_01309]). A execução real do reset ocorre, dependendo de DiagnosticEcuResetClass.respondToReset, após o envio da resposta UDS positiva ([SWS_DM_01023]) ou diretamente antes do reinício ([SWS_DM_01090]). A função é especificada como exception safe, mas explicitamente como not thread-safe ([SWS_DM_01013]).
Esta nota de uso baseia-se na especificação AUTOSAR Adaptive Platform Release R25-11.
id of the custom reset type. Will only be evaluated when resetType is "custom".
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: b9e940cd3ae2Procedê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::EcuResetRequest::StopOffer encerra a disponibilização do serviço de reset e desativa o encaminhamento de mensagens de requisição recebidas do Diagnostic Management (DM) para a aplicação ([SWS_DM_01017], AUTOSAR_AP_SWS_Diagnostics §8.16.3.1.3.5 «StopOffer»). A função possui a assinatura void StopOffer() noexcept, não espera parâmetros e não retorna nenhum valor.
Tratamento de erros e comportamento com exceções
A operação é declarada como noexcept e classificada em termos de especificação como segura contra exceções (exception safe) ([SWS_DM_01017]). Não são lançadas exceções nem são reportados códigos de erro específicos ao chamador.
Simultaneidade e restrições
O método é explicitamente classificado como não seguro para threads (not thread-safe) ([SWS_DM_01017]). Os chamadores devem sincronizar acessos concorrentes à mesma instância de ara::diag::EcuResetRequest pelo lado da aplicação. Do ponto de vista técnico, a chamada provavelmente só deve ser prevista após um prévio oferecimento do manipulador, a fim de interromper de forma ordenada a recepção de novas requisições de reset. Pergunta Q-25f37b77dc8cf80f (aberta)
Interação
A desativação do encaminhamento através de StopOffer segue o padrão de interface uniforme dos manipuladores funcionais de diagnóstico no Adaptive AUTOSAR, conforme definido analogamente para outros serviços como CommunicationControl ([SWS_DM_00810]) ou DownloadService ([SWS_DM_00793]).
Esta nota de uso foi gerada por uma IA com base na especificação para o AUTOSAR Adaptive R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão