Permite monitorizar ciclos de operação de diagnóstico e acionar o reinício de um ciclo através de portas modeladas.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 3e8e62c1c567ProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Permite monitorizar ciclos de operação de diagnóstico e acionar o reinício de um ciclo através de portas modeladas.
A classe ara::diag::OperationCycle disponibiliza à aplicação funções para o controlo e a monitorização de ciclos de operação de diagnóstico [SWS_DM_00752]. As instâncias são vinculadas a uma porta modelada através de um ara::core::InstanceSpecifier, não podem ser copiadas nem movidas e só podem existir de forma única por identificador no processo. Através de SetNotifier, pode ser configurada uma notificação para alterações de ciclo e, por meio de RestartOperationCycle, pode ser acionado um reinício do ciclo de operação [SWS_DM_01102]. Com exceção do construtor thread-safe, todos os métodos, bem como o destrutor, não são thread-safe e requerem sincronização por parte da aplicação em caso de acesso paralelo.
Contexto
A classe ara::diag::OperationCycle implementa o DiagnosticOperationCycleInterface no âmbito do diagnóstico AUTOSAR Adaptive e fornece funções para o manuseamento e controlo de ciclos de operação. Serve como interface entre a aplicação adaptativa e o Diagnostic Management, permitindo monitorizar ou redefinir deliberadamente os estados dos ciclos de operação.
A ligação ao sistema global efetua-se através de um ara::core::InstanceSpecifier, o qual é passado na chamada do construtor [SWS_DM_00752]. Este identificador referencia um PortPrototype definido no modelo. O modelo estipula aqui uma associação inequívoca: um PortPrototype referenciado por um DiagnosticOperationCyclePortMapping tem de ser tipado pelo DiagnosticOperationCycleInterface[SWS_DM_00752]. Além do controlo, a classe interage através de uma interface de callback do tipo ara::diag::OperationCycle::OperationCycleSetNotifier (definida como std::function<void(void)>), por meio da qual as notificações de alteração do ciclo de operação são transmitidas à aplicação [SWS_DM_02078], [SWS_DM_00755].
Ciclo de vida
A criação de ara::diag::OperationCycle ocorre explicitamente através da especificação da instância de porta por meio do construtor OperationCycle(const ara::core::InstanceSpecifier &specifier)[SWS_DM_00752]. O construtor está especificado como seguro contra exceções (exception safe) e seguro para threads (thread-safe) [SWS_DM_00752].
Em termos de semântica de posse e cópia, a classe está modelada como um objeto único estrito que representa uma ligação fixa 1:1 à porta modelada. A cópia e a movimentação estão totalmente impedidas:
O construtor de cópia está eliminado (delete) para excluir duplicações [SWS_DM_01598].
O construtor de movimentação está eliminado (delete) [SWS_DM_01599].
O operador de atribuição por cópia está eliminado (delete) [SWS_DM_01596].
O operador de atribuição por movimentação está eliminado (delete) [SWS_DM_01597].
Adicionalmente, a framework proíbe a atribuição múltipla: um InstanceSpecifier não pode ser reutilizado para instanciação dentro do mesmo processo [SWS_DM_00752]. A libertação ocorre no destrutor ~OperationCycle()[SWS_DM_00753]. Ao contrário do construtor, o destrutor não é seguro para threads (not thread-safe), embora esteja declarado como seguro contra exceções [SWS_DM_00753]. Também os restantes métodos da classe, bem como o tipo de callback, não são thread-safe [SWS_DM_00755], [SWS_DM_01102], [SWS_DM_02078], pelo que os acessos paralelos à mesma instância devem ser sincronizados por parte da aplicação.
Caminho de utilização
Um caminho de utilização típico compreende a instanciação, o registo opcional de um manipulador para alterações de ciclo, o acionamento repetido do reinício do ciclo e a libertação:
Instanciação: A aplicação cria o objeto OperationCycle passando o respetivo InstanceSpecifier[SWS_DM_00752].
Registar notificador: Através do método SetNotifier, a aplicação define uma função de callback do tipo OperationCycleSetNotifier[SWS_DM_00755], [SWS_DM_02078]. Esta função é chamada quando o ciclo de operação se altera. Uma chamada subsequente de SetNotifier sobrescreve integralmente o notificador previamente registado [SWS_DM_00755].
Reiniciar ciclo de operação: Por meio de RestartOperationCycle(), a aplicação aciona o reinício do ciclo de operação [SWS_DM_01102]. O Diagnostic Management atualiza o ciclo e notifica o callback registado em caso de transições de estado [SWS_DM_00755]. A notificação deverá ocorrer de forma assíncrona no contexto do Diagnostic Management. Pergunta Q-7cd22debf6fa91d7 (aberta)
Destruição: Aquando do encerramento do componente de software, o objeto é destruído através do destrutor [SWS_DM_00753].
Os erros na inicialização são sinalizados pela framework como violações (violations), uma vez que o construtor está declarado como noexcept[SWS_DM_00752]:
InstanceSpecifierMappingIntegrityViolation: O InstanceSpecifier não pode ser resolvido no contexto do executável ou aponta para um elemento que não é um PortPrototype[SWS_DM_00752].
PortInterfaceMappingViolation: O PortPrototype referenciado por DiagnosticOperationCyclePortMapping não é tipado por um DiagnosticOperationCycleInterface[SWS_DM_00752].
ProcessMappingViolation: Embora exista uma referência de instância adequada, não foi encontrado nenhum processo modelado correspondente para o processo em tempo de execução [SWS_DM_00752].
InstanceSpecifierAlreadyInUseViolation: O construtor foi chamado com um InstanceSpecifier que já está a ser utilizado no âmbito do processo atual [SWS_DM_00752].
Na operação normal, os métodos SetNotifier e RestartOperationCycle retornam um ara::core::Result<void>[SWS_DM_00755], [SWS_DM_01102]. Para ambas as funções, não estão definidos códigos de erro específicos na norma (“This function does not specify any standardized errors.”) [SWS_DM_00755], [SWS_DM_01102]. O recurso ao tipo Result deverá servir primariamente para uma conceção uniforme da interface e oferecer espaço para estados de erro específicos da implementação. Pergunta Q-2c59a287c0d5783a (aberta)
Este guia foi gerado por um sistema de IA com base na especificação AUTOSAR Adaptive R25-11.
Registering a notifier function which is called if the operation cycle is changed. A consecutive call of this method will overwrite the previous registered notifier.
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 DiagnosticOperationCyclePortMapping needs to be typed by a DiagnosticOperationCycleInterface. 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 DiagnosticOperationCycleInterface.
Request a governed re-review of this record. The record is not changed immediately.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 3cc8bab8ea58ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função-membro RestartOperationCycle da classe ara::diag::OperationCycle (disponibilizada através de #include "ara/diag/operation_cycle.h") serve para comunicar ao Diagnostic Management (DM) o reinício de um ciclo de operação [SWS_DM_01102]. Ciclos de operação como ciclos de ignição («Ignition on/off»), ciclos de alimentação («Power up/power down») ou tempos de operação acumulados são geridos pela aplicação adaptativa e têm influência direta no byte de estado do DTC UDS bem como no comportamento da memória de eventos de acordo com a ISO 14229-1 SWS Diagnostics §7.3.4.3 «Operation Cycles Management».
Chamada e semântica
A função é chamada sem parâmetros e devolve um ara::core::Result<void>[SWS_DM_01102]. Se o DM ainda não estiver pronto no momento da chamada para processar a comunicação do reinício, esta informação não se perde: o DM coloca o evento temporariamente em buffer (caching) e avalia o reinício do ciclo assim que a ligação for restabelecida [SWS_DM_01103].
Tratamento de erros e simultaneidade
Não estão previstos códigos de erro padronizados para RestartOperationCycle[SWS_DM_01102]. A função está especificada como segura contra exceções (exception safe) e não lança exceções C++ (noexcept) [SWS_DM_01102]. Uma vez que a interface está explicitamente designada como não segura para threads (not thread-safe) [SWS_DM_01102], acessos simultâneos à mesma instância deverão ter de ser sincronizados pela aplicação chamadora. Pergunta Q-b3b258a20fd9db22 (aberta)
Esta nota de utilização foi gerada automaticamente com base na especificação AUTOSAR R25-11.
Registering a notifier function which is called if the operation cycle is changed. A consecutive call of this method will overwrite the previous registered notifier.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 4ba4d539945dProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método ara::diag::OperationCycle::SetNotifier ([SWS_DM_00755]) serve para o registro de uma função de callback no lado da aplicação do tipo OperationCycleSetNotifier. Essa função notificador é chamada pelo Diagnostic Management (DM) assim que o estado do ciclo de operação monitorado for alterado ([SWS_DM_00755]). Para a utilização do método, o arquivo de cabeçalho ara/diag/operation_cycle.h deve ser incluído ([SWS_DM_00755]).
A operação é declarada como noexcept e oferece segurança contra exceções (exception safe) ([SWS_DM_00755]). Como valor de retorno síncrono, ara::core::Result<void> é fornecido; no entanto, códigos de erro padronizados específicos não são definidos ([SWS_DM_00755]). Eventuais estados de erro no objeto Result devem ser, portanto, específicos do fornecedor ou da plataforma. Pergunta Q-6799492164efd793 (aberta) Com relação à simultaneidade, o método é especificado como não thread-safe (not thread-safe) ([SWS_DM_00755]), de modo que chamadas paralelas na mesma instância de objeto devem ser obrigatoriamente sincronizadas pela aplicação.
Esta nota de uso foi elaborada de forma automatizada e baseia-se na especificação AUTOSAR Adaptive R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão