Disponibiliza interfaces padronizadas para bases de tempo sincronizadas, carimbos de data/hora de alta precisão e monitorização de estado.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: aa3b87a713ceProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Disponibiliza interfaces padronizadas para bases de tempo sincronizadas, carimbos de data/hora de alta precisão e monitorização de estado.
O namespace ara::tsync disponibiliza interfaces para o acesso sincronizado ao tempo na Adaptive Platform, ligando aplicações a bases de tempo configuradas através de SynchronizedTimeBaseConsumer. O registo do tempo é efetuado através de carimbos de data/hora de alta precisão do tipo Timestamp com base numa resolução de nanossegundos [SWS_TS_01251]. As aplicações monitorizam a sincronia através de indicadores de estado como SynchronizationStatus[SWS_TS_01050]. Como condição limite essencial, os callbacks de notificação assíncronos não são concebidos para serem thread-safe e as perdas de ligação ao daemon de tempo têm de ser tratadas.
Contexto
O namespace ara::tsync disponibiliza as interfaces para sincronização de tempo de alta precisão no âmbito da AUTOSAR Adaptive Platform. Permite às aplicações ler pontos no tempo sincronizados, monitorizar o estado de sincronização e registar valores de medição para fins de validação. O papel central para aplicações consumidoras é assumido pela classe SynchronizedTimeBaseConsumer, que encapsula o acesso a uma base de tempo configurada através de um InstanceSpecifier. No lado do fornecedor, SynchronizedTimeBaseProvider serve como ponto de acesso para a disponibilização e o controlo de bases de tempo.
A base da representação temporal é o pseudo-relógio TimeBase, através do qual o alias de tipo Timestamp é definido como std::chrono::time_point<TimeBase, std::chrono::nanoseconds>[SWS_TS_01251]. O trabalho de sincronização propriamente dito e a ligação a protocolos de barramento como IEEE 802.1AS ou PTP ocorrem tipicamente através de um serviço de segundo plano. Interpretação: este daemon de tempo comunica entre processos com as instâncias de ara::tsync, o que pode ser comprovado pelo erro específico TsyncErrc::kDaemonConnectionLost[SWS_TS_00901]. Pergunta Q-dd9d1a36f7573a03 (aberta) A arquitetura é complementada por interfaces como ConsumerTimeBaseValidationNotification e ProviderTimeBaseValidationNotification, bem como estruturas de dados para medições de tempo de execução e precisão (por exemplo, TimeMasterMeasurementType, TimeSlaveMeasurementType, PdelayInitiatorMeasurementType e PdelayResponderMeasurementType).
Diagrama de contexto: interação entre aplicações, classes de interface e daemon de tempo no namespace ara::tsync. Fontes: [SWS_TS_00901], [SWS_TS_01251].
Ciclo de vida
O ciclo de vida de uma base de tempo sincronizada é determinado por estruturas de estado e transições de estado discretas. Um instantâneo do estado temporal, incluindo todos os metadados, é representado por SynchronizedTimeBaseStatus. O estado de comunicação e sincronização é controlado através da enumeração SynchronizationStatus[SWS_TS_01050]:
kNotSynchronizedUntilStartup: estado inicial antes da primeira sincronização bem-sucedida após o arranque do sistema.
kSynchronized: a base de tempo está síncrona com o Time-Master.
kSynchToGateway: a sincronização ocorre através de um gateway.
kTimeOut: dentro de uma janela temporal definida, não foi possível estabelecer nem manter a sincronização.
Além do estado de comunicação, a enumeração LeapJump[SWS_TS_01051] regista correções bruscas da base de tempo: kTimeLeapNone sinaliza uma execução contínua sem ultrapassagem de limiar, enquanto kTimeLeapFuture e kTimeLeapPast indicam correções significativas para o futuro ou passado, respetivamente.
No que diz respeito à concorrência, deve notar-se que tipos de callback como SynchronizationNotifier[SWS_TS_14222], SynchronizedTimeBaseNotifier[SWS_TS_14221] e TimePrecisionNotifier[SWS_TS_14223] estão classificados na especificação como não sendo thread-safe. As transições de estado, especialmente a ocorrência de timeouts ou ressincronizações, exigem, portanto, uma sincronização do lado da aplicação.
Diagrama de estados: ciclo de vida e estados de comunicação de uma base de tempo sincronizada. Fontes: [SWS_TS_01050].
Caminho de utilização
O fluxo típico para a utilização de uma base de tempo sincronizada por uma aplicação consumidora subdivide-se nos seguintes passos:
Inicialização e vinculação: a aplicação instancia SynchronizedTimeBaseConsumer para a base de tempo pretendida, indicando o InstanceSpecifier correspondente.
Registo de notificações: para monitorizar o estado de sincronização, a aplicação passa funções de callback. Estas incluem SynchronizationNotifier[SWS_TS_14222] para alterações do SynchronizationStatus, SynchronizedTimeBaseNotifier[SWS_TS_14221] para instantâneos de estado detalhados (SynchronizedTimeBaseStatus) e TimePrecisionNotifier[SWS_TS_14223] para dados de medição de precisão (TimePrecisionMeasurement).
Consulta do carimbo de data/hora: na presença do estado kSynchronized ou kSynchToGateway[SWS_TS_01050], a aplicação lê valores temporais de alta precisão do tipo Timestamp[SWS_TS_01251].
Reação a saltos de estado e de tempo: se as notificações sinalizarem um LeapJump diferente de kTimeLeapNone[SWS_TS_01051] ou uma transição para kTimeOut[SWS_TS_01050], a aplicação ajusta temporizadores internos ou passa para um modo de degradação.
Transmissão de dados do utilizador: se forem transmitidos dados úteis específicos do utilizador no âmbito da sincronização de tempo, é utilizada a estrutura UserData.
Cenários de erro
O tratamento de erros do namespace segue o modelo padrão da AUTOSAR através do domínio de erro TsyncErrorDomain. O acesso a este domínio global é realizado através de GetTsyncErrorDomain()[SWS_TS_00909]. As causas dos erros são descritas pelo tipo de enumeração TsyncErrc[SWS_TS_00901]:
kDaemonConnectionLost: a operação solicitada falha porque a ligação ao daemon de sincronização de tempo está interrompida.
kLimitsExceeded: um valor transmitido ou calculado encontra-se fora do intervalo de valores permitido.
kFunctionNotSupported: a função solicitada não é suportada na configuração atual ou no ambiente da plataforma.
kInvalidUserDataSize: o comprimento dos dados do utilizador transmitidos excede o máximo de atualmente 3 bytes definido por UserData::kMaxUserDataSize.
Instâncias de ara::core::ErrorCode são criadas através da função auxiliar MakeErrorCode[SWS_TS_00910]. A função está declarada como noexcept e é thread-safe. Para arquiteturas baseadas em exceções, o namespace disponibiliza a classe de exceção TsyncException.
Este guia baseia-se na especificação AUTOSAR Adaptive Platform R25-11 para o módulo tsync.
KI-gestützte Gruppierung auf Basis der Records und Spezifikationsauszüge; keine Gliederung aus der AUTOSAR-Spezifikation.
Diagrama de classes
Abgerundete Rahmen = Namespace- bzw. Klassen-Scopes; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = namespace-fremde bzw. externe Basisklassen. Klicken öffnet die jeweilige Klassen- bzw. cppreference-Seite.
=0 The TB is not synchronized until startup (inital state)
kTimeOut
= 0x1 The TB was not synchronized within a certain time frame.
kSynchronized
= 0x2 The TB is in sync with the time master.
kSynchToGateway
= 0x3 The TB is in sync with the gateway.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 2b617e90b13fProcedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A enumeração SynchronizationStatus expressa o status de comunicação e sincronização de uma base de tempo no namespace ara::tsync[SWS_TS_01050]. O tipo baseia-se em std::uint32_t e é fornecido por meio do arquivo de cabeçalho ara/tsync/synchronized_time_base_status.h bem como pelo cabeçalho de encaminhamento ara/tsync/tsync_fwd.h[SWS_TS_01050]. A enumeração define quatro estados:
kNotSynchronizedUntilStartup (= 0): A base de tempo não está sincronizada antes da inicialização do sistema (estado inicial) [SWS_TS_01050].
kTimeOut (= 0x1): A base de tempo não foi sincronizada dentro de uma janela de tempo predefinida [SWS_TS_01050].
kSynchronized (= 0x2): A base de tempo está síncrona com o Time-Master [SWS_TS_01050].
kSynchToGateway (= 0x3): A base de tempo está síncrona com o gateway [SWS_TS_01050].
A consulta síncrona do status ocorre por meio do método GetSynchronizationStatus() da classe ara::tsync::SynchronizedTimeBaseStatus, o qual fornece o estado no momento da criação do objeto de status de forma thread-safe e segura contra exceções (noexcept) [SWS_TS_01053]. Para notificações em mudanças de status, existe em ara/tsync/synchronized_time_base_consumer.h o alias de tipo SynchronizationNotifier (std::function<void(const SynchronizationStatus &)>), que é especificado explicitamente como não thread-safe [SWS_TS_14222].
Em caso de erro ou de ausência de sincronização, deve-se observar o comportamento dos métodos associados: se a base de tempo nunca tiver sido sincronizada e apresentar o status kNotSynchronizedUntilStartup, o método GetCreationTime() retornará um ara::core::Optional vazio, pois não há um momento de criação válido em tempo sincronizado [SWS_TS_01055].
Este texto foi gerado por um sistema de IA e baseia-se exclusivamente nos dados de especificação da AUTOSAR R25-11.
Guia do implementador em breve (complexidade I1)
Request a governed re-review of this record. The record is not changed immediately.
=1 The action cannot be executed, because the connection to time sync daemon is currently lost.
kLimitsExceeded
=2 The value exceeds valid value range
kFunctionNotSupported
=3 The requested function is not supported
kInvalidUserDataSize
=4 The length of the user data exceeded the maximum allowed size, defined by UserData::kMaxUserDataSize (currently 3 bytes).
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: bf6ea0154525ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A enumeração TsyncErrc define os códigos de erro padronizados do cluster funcional Time Synchronization [SWS_TS_00901]. Ela é baseada em ara::core::ErrorDomain::CodeType e é declarada dentro do namespace ara::tsync; além disso, um alias está disponível por meio de ara::tsync::TsyncErrorDomain::Errc[SWS_TS_01266]. A função thread-safe MakeErrorCode serve para criar objetos de erro completos, vinculando um valor de TsyncErrc a dados adicionais específicos do fabricante para formar um ara::core::ErrorCode[SWS_TS_00910].
A especificação define quatro valores concretos de erro [SWS_TS_00901]:
kDaemonConnectionLost (=1): A ação não pode ser executada porque a conexão com o daemon de Time-Sync foi interrompida.
kLimitsExceeded (=2): Um parâmetro passado excede a faixa de valores permitida. Isso ocorre, por exemplo, em SetRateCorrection quando a correção de taxa solicitada for inválida [SWS_TS_01110].
kFunctionNotSupported (=3): A função solicitada não é suportada. Interpretação: isto deve afetar implementações nas quais funções opcionais de hardware ou de interface não estejam disponíveis. Pergunta Q-e22067d84fd6adb4 (aberta)
kInvalidUserDataSize (=4): O comprimento dos dados úteis excede o tamanho máximo de 3 bytes especificado por UserData::kMaxUserDataSize. Esse erro ocorre em SetTime[SWS_TS_01107] bem como em SetUserData[SWS_TS_01112].
Métodos para atualização de tempo e dados, como SetTime, UpdateTime, SetRateCorrection e SetUserData da classe ara::tsync::SynchronizedTimeBaseProvider, retornam resultados de forma síncrona via ara::core::Result<void> e são especificados como non-thread-safe [SWS_TS_01107][SWS_TS_01108][SWS_TS_01110][SWS_TS_01112]. Em caso de erro, de acordo com a especificação, não se aplica nenhuma semântica de rollback (no_rollback_semantics) [SWS_TS_01107][SWS_TS_01110][SWS_TS_01112].
Este texto foi gerado por uma IA e baseia-se no estado de especificação R25-11.
Guia do implementador em breve (complexidade I1)
Request a governed re-review of this record. The record is not changed immediately.
Returns a reference to the global TsyncErrorDomain object.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 3848538f31e7ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
usar
A função síncrona GetTsyncErrorDomain pertence ao namespace ara::tsync e é incluída através do arquivo de cabeçalho ara/tsync/tsync_error_domain.h[SWS_TS_00909]. A chamada é feita sem parâmetros e serve ao propósito de obter uma referência para o objeto global TsyncErrorDomain da sincronização de tempo [SWS_TS_00909].
Como valor de retorno, a função fornece uma referência constante para este objeto de domínio de erro global do tipo const ara::core::ErrorDomain &[SWS_TS_00909]. Interpretação: A instância fornecida provavelmente serve como ponto de referência no conceito de tratamento de erros do AUTOSAR Adaptive para identificar, atribuir ou comparar códigos de erro específicos do módulo da área de sincronização de tempo com outros domínios de erro. Pergunta Q-cf1fce412576bca3 (aberta)
Tratamento de erros e segurança de exceções
A assinatura da função é explicitamente declarada como noexcept e especificada como segura contra exceções (exception safe) [SWS_TS_00909]. Isto significa que nenhuma exceção pode ser lançada durante a execução. Como a função apenas retorna a referência para o objeto de domínio global já existente, não ocorrem estados de erro internos e não existem códigos de erro específicos nem mensagens de erro para a chamada [SWS_TS_00909].
Simultaneidade e restrições
De acordo com a especificação, GetTsyncErrorDomain é classificada como segura para threads (thread-safe) [SWS_TS_00909]. Chamadas podem, portanto, ser executadas em paralelo a partir de threads diferentes sem sincronização prévia ou mecanismos de bloqueio. Condições de ordenação especiais ou pré-condições para a chamada não existem segundo a especificação [SWS_TS_00909].
Este texto foi gerado por uma IA e baseia-se em especificações AUTOSAR.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: ad8052caa2c8Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função MakeErrorCode serve para a criação síncrona de um objeto ara::core::ErrorCode para o domínio de erros da sincronização de tempo no namespace ara::tsync[SWS_TS_00910]. Ela está disponível por meio do cabeçalho ara/tsync/tsync_error_domain.h e converte números de erro da sincronização de tempo para o modelo padronizado de tratamento de erros do AUTOSAR Adaptive.
Parâmetros e valor de retorno
code (ara::tsync::TsyncErrc): Designa o número de erro específico do domínio [SWS_TS_00910].
data (ara::core::ErrorDomain::SupportDataType): Passa dados adicionais específicos do fornecedor sobre o erro ocorrido [SWS_TS_00910].
Valor de retorno: Retorna um objeto ara::core::ErrorCode inicializado [SWS_TS_00910].
Simultaneidade e segurança de execução
A função é declarada com noexcept e classificada como segura contra exceções [SWS_TS_00910]; ela não lança exceções em tempo de execução. Além disso, a implementação é especificada como thread-safe[SWS_TS_00910], razão pela qual pode ser chamada em paralelo a partir de múltiplas threads sem medidas adicionais de sincronização.
Interação
Como complemento a esta função básica, o requisito relacionado [SWS_TS_14213] especifica uma sobrecarga análoga para TsyncFvmErrc no namespace apext::tsync (cabeçalho apext/tsync/fvm_error_domain.h), a qual é definida como constexpr.
Este texto foi gerado por uma IA com base na especificação AUTOSAR R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão