nl::Weave::System::Platform::Layer

Resumo

remotas

DidInit(Layer & aLayer, void *aContext, Error aStatus)
NL_DLL_EXPORT void
Este é um gancho de pós-inicialização específico da plataforma Weave System Layer.
DidShutdown(Layer & aLayer, void *aContext, Error aStatus)
NL_DLL_EXPORT void
Este é um gancho de pré-encerramento da Layer do sistema Weave específico da plataforma.
DispatchEvent(Layer & aLayer, void *aContext, Event aEvent)
NL_DLL_EXPORT Error
Este é um gancho de envio de evento / mensagem específico da plataforma.
DispatchEvents(Layer & aLayer, void *aContext)
NL_DLL_EXPORT Error
Este é um gancho de envio de evento / mensagem específico da plataforma.
GetClock_Monotonic(void)
uint64_t
Função específica da plataforma para receber o horário monotônico do sistema em microssegundos.
GetClock_MonotonicHiRes(void)
uint64_t
Função específica da plataforma para conseguir o horário monotônico do sistema de alta resolução em microssegundos.
GetClock_MonotonicMS(void)
uint64_t
Função específica da plataforma para obter o horário monotônico do sistema em milissegundos.
GetClock_RealTime(uint64_t & curTime)
Error
Função específica da plataforma para conseguir o horário real (civil) atual no formato Unix de microssegundos.
GetClock_RealTimeMS(uint64_t & curTimeMS)
Error
Função específica da plataforma para conseguir o horário real (civil) atual no formato Unix de milissegundos.
PostEvent(Layer & aLayer, void *aContext, Object & aTarget, EventType aType, uintptr_t aArgument)
NL_DLL_EXPORT Error
Esse é um gancho de postagem de mensagem / evento específico da plataforma.
SetClock_RealTime(uint64_t newCurTime)
Error
Função específica da plataforma para definir o tempo real (civil) atual.
StartTimer(Layer & aLayer, void *aContext, uint32_t aMilliseconds)
NL_DLL_EXPORT Error
Este é um gancho de envio de evento / mensagem específico da plataforma.
WillInit(Layer & aLayer, void *aContext)
NL_DLL_EXPORT Error
Este é um gancho de pré-inicialização da Layer do sistema Weave específico da plataforma.
WillShutdown(Layer & aLayer, void *aContext)
NL_DLL_EXPORT Error
Este é um gancho de pré-encerramento da Layer do sistema Weave específico da plataforma.

remotas

DidInit

NL_DLL_EXPORT void DidInit(
  Layer & aLayer,
  void *aContext,
  Error aStatus
)

Este é um gancho de pós-inicialização específico da plataforma Weave System Layer.

Isso pode ser substituído afirmando a definição de pré-processador, WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS.

Detalhes
Parâmetros
[in,out] aLayer
Uma referência à instância de Layer do Weave System que está sendo inicializada.
[in,out] aContext
Dados de contexto específicos da plataforma transmitidos ao método de inicialização da camada ::Init.
[in] anError
O status geral retornado pelo método Layer ::Init do sistema Weave.

DidShutdown

NL_DLL_EXPORT void DidShutdown(
  Layer & aLayer,
  void *aContext,
  Error aStatus
)

Este é um gancho de pré-encerramento da Layer do sistema Weave específico da plataforma.

Isso pode ser substituído afirmando a definição de pré-processador, WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS.

Detalhes
Parâmetros
[in,out] aLayer
Uma referência à instância de camada do sistema Weave que está sendo encerrada.
[in,out] aContext
Dados de contexto específicos da plataforma transmitidos ao método de inicialização da camada ::Shutdown.
[in] anError
O status geral retornado pelo método Layer ::Shutdown do sistema Weave.
Retorna
WEAVE_SYSTEM_NO_ERROR em caso de sucesso. Caso contrário, um erro específico que indica o motivo da falha no encerramento. Se o status não for bem-sucedido, o encerramento será cancelado.

DispatchEvent

NL_DLL_EXPORT Error DispatchEvent(
  Layer & aLayer,
  void *aContext,
  Event aEvent
)

Este é um gancho de envio de evento / mensagem específico da plataforma.

Isso pode ser substituído afirmando a definição de pré-processador, WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS.

Ele envia o evento especificado para processamento, desmarcando o tipo e os argumentos do evento para entrega ao Layer::HandleEvent do sistema Weave para o envio real.

Detalhes
Parâmetros
[in,out] aLayer
Uma referência à instância da camada que recebe eventos / mensagens que estão sendo enviados.
[in,out] aContext
Dados de contexto específicos da plataforma transmitidos ao método de inicialização da camada ::Init.
[in] anEvent
O objeto de evento específico da plataforma que será enviado para processamento.
Valores de retorno
#WEAVE_SYSTEM_ERROR_BAD_ARGS
Se #aLayer ou o destino do evento for NULL.
#WEAVE_SYSTEM_ERROR_UNEXPECTED_EVENT
Se o tipo de evento não for reconhecido.
#WEAVE_SYSTEM_ERROR_UNEXPECTED_STATE
Se o estado do objeto Layer do sistema Weave for inesperado.
WEAVE_SYSTEM_NO_ERROR
Se der certo.

DispatchEvents

NL_DLL_EXPORT Error DispatchEvents(
  Layer & aLayer,
  void *aContext
)

Este é um gancho de envio de evento / mensagem específico da plataforma.

Isso pode ser substituído afirmando a definição de pré-processador, WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS.

Isso afeta um loop de eventos, aguardando uma fila que atende a essa instância, extraindo eventos dessa fila e despachando-os para processamento.

Detalhes
Parâmetros
[in,out] aLayer
Uma referência à instância da camada que recebe eventos / mensagens que estão sendo enviados.
[in,out] aContext
Dados de contexto específicos da plataforma transmitidos ao método de inicialização da camada ::Init.
Valores de retorno
#WEAVE_SYSTEM_ERROR_BAD_ARGS
Se #aLayer ou #aContext for NULL.
#WEAVE_SYSTEM_ERROR_UNEXPECTED_STATE
Se o estado do objeto Layer do sistema Weave for inesperado.
#WEAVE_SYSTEM_ERROR_UNEXPECTED_EVENT
Se um tipo de evento não for reconhecido.
WEAVE_SYSTEM_NO_ERROR
Se der certo.

GetClock_Monotonic

uint64_t GetClock_Monotonic(
  void
)

Função específica da plataforma para receber o horário monotônico do sistema em microssegundos.

Espera-se que essa função retorne o tempo decorrido em microssegundos desde um período arbitrário e definido pela plataforma. As implementações da plataforma são obrigadas a retornar um valor que está sempre aumentando (ou seja, nunca encapsula) entre as reinicializações do sistema. Além disso, a fonte de tempo subjacente precisa ser ativada continuamente durante os modos de sono do sistema que não exigem uma reinicialização após a ativação.

A época do tempo retornado por essa função não precisa ser a mesma de qualquer outra função GetClock..., incluindo GetClock_MonotonicMS().

Espera-se que essa função seja thread-safe em qualquer plataforma que use threading.

Detalhes
Retorna
Tempo decorrido em microssegundos desde um período arbitrário definido pela plataforma.

GetClock_MonotonicHiRes

uint64_t GetClock_MonotonicHiRes(
  void
)

Função específica da plataforma para conseguir o horário monotônico do sistema de alta resolução em microssegundos.

Espera-se que essa função retorne o tempo decorrido em microssegundos desde um período arbitrário e definido pela plataforma. Os valores retornados por GetClock_MonotonicHiRes() precisam ser sempre crescentes (ou seja, nunca quebrar). No entanto, o timer não precisa ser ativado continuamente durante os estados de suspensão profunda do sistema.

A plataforma é incentivada a implementar GetClock_MonotonicHiRes() usando um temporizador de alta resolução que não esteja sujeito a ajustes graduais do relógio (slewing). Em plataformas sem esse timer, GetClock_MonotonicHiRes() pode retornar o mesmo valor que GetClock_Monotonic().

A época do tempo retornado por essa função não precisa ser a mesma de qualquer outra função GetClock...

Espera-se que essa função seja thread-safe em qualquer plataforma que use threading.

Detalhes
Retorna
Tempo decorrido em microssegundos desde um período arbitrário definido pela plataforma.

GetClock_MonotonicMS

uint64_t GetClock_MonotonicMS(
  void
)

Função específica da plataforma para obter o horário monotônico do sistema em milissegundos.

Espera-se que essa função retorne o tempo decorrido em milissegundos desde uma época arbitrária definida pela plataforma. As implementações da plataforma são obrigadas a retornar um valor que está sempre aumentando (ou seja, nunca encapsula) entre as reinicializações do sistema. Além disso, a fonte de tempo subjacente precisa ser ativada continuamente durante os modos de sono do sistema que não exigem uma reinicialização após a ativação.

A época do tempo retornado por essa função não precisa ser igual à de outras funções GetClock..., incluindo GetClock_Monotonic().

Espera-se que essa função seja thread-safe em qualquer plataforma que use threading.

Detalhes
Retorna
Tempo decorrido em milissegundos desde um período arbitrário definido pela plataforma.

GetClock_RealTime

Error GetClock_RealTime(
  uint64_t & curTime
)

Função específica da plataforma para conseguir o horário real (civil) atual no formato Unix de microssegundos.

Essa função precisa retornar a noção de tempo real atual da plataforma local, expressa como um valor de tempo Unix dimensionado em microssegundos. O relógio subjacente precisa ter uma frequência de pelo menos segundos inteiros (valores de 1.000.000), mas pode marcar mais rápido.

Nessas plataformas capazes de acompanhar em tempo real, GetClock_RealTime() deve retornar o erro WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED sempre que o sistema não estiver sincronizado com o tempo real.

As plataformas incapazes de acompanhar em tempo real não devem implementar a função GetClock_RealTime(), forçando, assim, falhas de tempo de link de recursos que dependem de acesso a tempo real. Como alternativa, essas plataformas podem fornecer uma implementação de GetClock_RealTime() que retorne o erro WEAVE_SYSTEM_ERROR_NOT_SUPPORTED.

Espera-se que essa função seja thread-safe em qualquer plataforma que use threading.

Detalhes
Parâmetros
[out] curTime
O horário atual, expresso no formato Unix, dimensionado para microssegundos.
Valores de retorno
WEAVE_SYSTEM_NO_ERROR
Se o método tiver sido bem-sucedido,
#WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED
Se a plataforma for capaz de monitorar em tempo real, mas não estiver sincronizada no momento.
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
Se a plataforma não for capaz de fazer isso em tempo real.

GetClock_RealTimeMS

Error GetClock_RealTimeMS(
  uint64_t & curTimeMS
)

Função específica da plataforma para conseguir o horário real (civil) atual no formato Unix de milissegundos.

Essa função precisa retornar a noção de tempo real atual da plataforma local, expressa como um valor de tempo Unix dimensionado para milissegundos.

Consulte a documentação de GetClock_RealTime() para obter detalhes sobre o comportamento esperado.

Detalhes
Parâmetros
[out] curTime
A hora atual, expressa como o horário Unix dimensionado para milissegundos.
Valores de retorno
WEAVE_SYSTEM_NO_ERROR
Se o método tiver sido bem-sucedido,
#WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED
Se a plataforma for capaz de monitorar em tempo real, mas não estiver sincronizada no momento.
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
Se a plataforma não for capaz de fazer isso em tempo real.

PostEvent

NL_DLL_EXPORT Error PostEvent(
  Layer & aLayer,
  void *aContext,
  Object & aTarget,
  EventType aType,
  uintptr_t aArgument
)

Esse é um gancho de postagem de mensagem / evento específico da plataforma.

Isso pode ser substituído afirmando a definição de pré-processador, WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS.

Isso publica um evento / uma mensagem do tipo especificado com o argumento fornecido na fila de eventos / mensagens específica da plataforma dessa instância.

Detalhes
Parâmetros
[in,out] aLayer
Um ponteiro para a instância da camada em que o evento ou a mensagem está sendo postado.
[in,out] aContext
Dados de contexto específicos da plataforma transmitidos ao método de inicialização da camada ::Init.
[in,out] aTarget
Um ponteiro para o objeto Layer do Weave System que faz a solicitação de postagem.
[in] aType
O tipo de evento a ser postado.
[in,out] anArg
O argumento associado ao evento a ser postado.
Retorna
WEAVE_SYSTEM_NO_ERROR em caso de sucesso. Caso contrário, um erro específico que indica o motivo da falha na inicialização.

SetClock_RealTime

Error SetClock_RealTime(
  uint64_t newCurTime
)

Função específica da plataforma para definir o tempo real (civil) atual.

O Weave chama essa função para definir a noção de tempo real atual da plataforma local. O novo horário atual é expresso como um valor do horário Unix dimensionado em microssegundos.

Depois de definido, espera-se que o relógio da plataforma subjacente acompanhe em tempo real com uma granularidade de pelo menos segundos inteiros.

Em plataformas compatíveis com o rastreamento em tempo real, a função SetClock_RealTime() precisará retornar o erro WEAVE_SYSTEM_ERROR_ACCESS_DENIED se o aplicativo que fez a chamada não tiver o privilégio de definir a hora atual.

Plataformas que são incapazes de acompanhar em tempo real ou que não oferecem a capacidade de definir tempo real não devem implementar a função SetClock_RealTime(), o que força as falhas de tempo de link de recursos que dependem da definição de tempo real. Como alternativa, essas plataformas podem fornecer uma implementação de SetClock_RealTime() que retorne o erro WEAVE_SYSTEM_ERROR_NOT_SUPPORTED.

Espera-se que essa função seja thread-safe em qualquer plataforma que use threading.

Detalhes
Parâmetros
[in] newCurTime
O novo horário atual, expresso como tempo Unix dimensionado para microssegundos.
Valores de retorno
WEAVE_SYSTEM_NO_ERROR
Se o método tiver sido bem-sucedido,
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
Se a plataforma não for capaz de fazer isso em tempo real.
#WEAVE_SYSTEM_ERROR_ACCESS_DENIED
Se o aplicativo de chamada não tiver o privilégio de definir a hora atual.

StartTimer

NL_DLL_EXPORT Error StartTimer(
  Layer & aLayer,
  void *aContext,
  uint32_t aMilliseconds
)

Este é um gancho de envio de evento / mensagem específico da plataforma.

Isso pode ser substituído afirmando a definição de pré-processador, WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS.

Detalhes
Parâmetros
[in,out] aLayer
Uma referência à instância da camada que recebe eventos / mensagens que estão sendo enviados.
[in,out] aContext
Dados de contexto específicos da plataforma transmitidos ao método de inicialização da camada ::Init.
[in] aMilliseconds
O número de milissegundos a ser definido para o timer.
Valores de retorno
WEAVE_SYSTEM_NO_ERROR
Sempre é bem-sucedido, a menos que seja substituído.

WillInit

NL_DLL_EXPORT Error WillInit(
  Layer & aLayer,
  void *aContext
)

Este é um gancho de pré-inicialização da Layer do sistema Weave específico da plataforma.

Isso pode ser substituído afirmando a definição de pré-processador, WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS.

Detalhes
Parâmetros
[in,out] aLayer
Uma referência à instância de Layer do Weave System que está sendo inicializada.
[in,out] aContext
Dados de contexto específicos da plataforma transmitidos ao método de inicialização da camada ::Init.
Retorna
WEAVE_SYSTEM_NO_ERROR em caso de sucesso. Caso contrário, um erro específico que indica o motivo da falha na inicialização. Se o status não for bem-sucedido, a inicialização será cancelada.

WillShutdown

NL_DLL_EXPORT Error WillShutdown(
  Layer & aLayer,
  void *aContext
)

Este é um gancho de pré-encerramento da Layer do sistema Weave específico da plataforma.

Isso pode ser substituído afirmando a definição de pré-processador, WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS.

Detalhes
Parâmetros
[in,out] aLayer
Um ponteiro para a instância de camada do sistema Weave do que está sendo encerrada.
[in,out] aContext
Dados de contexto específicos da plataforma transmitidos ao método de inicialização da camada ::Shutdown.
Retorna
WEAVE_SYSTEM_NO_ERROR em caso de sucesso. Caso contrário, um erro específico que indica o motivo da falha no encerramento. Se o status não for bem-sucedido, o encerramento será cancelado.