nl:: Weave:: System:: Layer
#include <src/system/SystemLayer.h>
This provides access to timers according to the configured event handling model.
Resumo
Para WEAVE_SYSTEM_CONFIG_USE_SOCKETS
, a notificação de preparação para o evento é processada pela implementação tradicional de enquete/seleção na adaptação da plataforma.
Para WEAVE_SYSTEM_CONFIG_USE_LWIP
, a notificação de prontidão de eventos é processada por eventos / mensagens e hooks específicos da plataforma e do sistema para o sistema de eventos/mensagens.
Construtores e destrutores |
|
---|---|
Layer(void)
|
Tipos públicos |
|
---|---|
EventHandler)(Object &aTarget, EventType aEventType, uintptr_t aArgument)
|
typedefError(*
|
TimerCompleteFunct)(Layer *aLayer, void *aAppState, Error aError)
|
typedefvoid(*
|
Funções públicas |
|
---|---|
AddEventHandlerDelegate(LwIPEventHandlerDelegate & aDelegate)
|
Error
Isso adiciona um delegado do manipulador de eventos à camada do sistema para ampliar a capacidade de lidar com eventos LwIP.
|
CancelTimer(TimerCompleteFunct aOnComplete, void *aAppState)
|
void
Esse método cancela um timer único, iniciado anteriormente por
StartTimer() . |
DispatchEvent(Event aEvent)
|
Error
Isso envia o evento especificado para processamento por essa instância.
|
DispatchEvents(void)
|
Error
É um wrapper sintático em torno de um hook específico da plataforma que aplica um loop de eventos, aguardando uma fila que atende essa instância, extraindo eventos dessa fila e despacho deles para processamento.
|
GetPlatformData(void) const
|
void *
Isso retorna todos os dados da plataforma específicos do cliente atribuídos à instância, se tiverem sido definidos anteriormente.
|
HandleEvent(Object & aTarget, EventType aEventType, uintptr_t aArgument)
|
Error
Isso implementa o envio e o manuseio reais de um evento Layer do sistema Weave.
|
HandlePlatformTimer(void)
|
Error
Processe o evento de expiração do timer da plataforma.
|
HandleSelectResult(int aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet)
|
void
Processe a E/S de uma chamada selecionada.
|
Init(void *aContext)
|
Error
|
NewTimer(Timer *& aTimerPtr)
|
Error
|
PostEvent(Object & aTarget, EventType aEventType, uintptr_t aArgument)
|
Error
Isso publica um evento / mensagem do tipo especificado com o argumento fornecido na fila de eventos específica da plataforma dessa instância.
|
PrepareSelect(int & aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet, struct timeval & aSleepTime)
|
void
Prepare os conjuntos de descritores de arquivo para trabalhar com o
select() . |
ScheduleWork(TimerCompleteFunct aComplete, void *aAppState)
|
Error
Programa uma função com uma assinatura idêntica à
TimerCompleteFunct para ser executada o mais rápido possível na linha de execução do Weave. |
SetPlatformData(void *aPlatformData)
|
void
Isso define os dados da plataforma específicos do cliente especificados na instância para recuperação posterior pela plataforma do cliente.
|
Shutdown(void)
|
Error
|
StartTimer(uint32_t aMilliseconds, TimerCompleteFunct aComplete, void *aAppState)
|
Error
Esse método inicia um timer único.
|
State(void) const
|
LayerState
Isso retorna o estado atual do objeto da camada.
|
WakeSelect(void)
|
void
Ativar a linha de execução de E/S que monitora os descritores de arquivo usando select(), gravando um único byte no pipe de ativação.
|
Funções estáticas públicas |
|
---|---|
GetClock_Monotonic(void)
|
uint64_t
Retorna o horário monotônico do sistema em unidades de microssegundos.
|
GetClock_MonotonicHiRes(void)
|
uint64_t
Retorna um horário de sistema monotônico de alta resolução (possivelmente) em unidades de microssegundos.
|
GetClock_MonotonicMS(void)
|
uint64_t
Retorna o tempo monotônico do sistema em unidades de milissegundos.
|
GetClock_RealTime(uint64_t & curTime)
|
Error
Retorna o horário real (civil) atual no formato de tempo Unix de microssegundos.
|
GetClock_RealTimeMS(uint64_t & curTimeMS)
|
Error
Retorna o horário real (civil) atual no formato de hora Unix de milissegundos.
|
SetClock_RealTime(uint64_t newCurTime)
|
Error
Define a noção do tempo real (civil) atual da plataforma.
|
Tipos públicos
EventHandler
Error(* EventHandler)(Object &aTarget, EventType aEventType, uintptr_t aArgument)
TimerCompleteFunct
void(* TimerCompleteFunct)(Layer *aLayer, void *aAppState, Error aError)
Funções públicas
AddEventHandlerDelegate
Error AddEventHandlerDelegate( LwIPEventHandlerDelegate & aDelegate )
Isso adiciona um delegado do manipulador de eventos à camada do sistema para ampliar a capacidade de lidar com eventos LwIP.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
||||
Valores de retorno |
|
CancelTimer
void CancelTimer( TimerCompleteFunct aOnComplete, void *aAppState )
Esse método cancela um timer único, iniciado anteriormente por StartTimer()
.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
DispatchEvent
Error DispatchEvent( Event aEvent )
Isso envia o evento especificado para processamento por essa instância.
O desembaralhamento do tipo e dos argumentos do evento é processado por um hook específico da plataforma que precisa chamar Layer::HandleEvent de volta para o envio real.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
||
Retorna |
WEAVE_SYSTEM_NO_ERROR em caso de êxito; caso contrário, um erro específico que indica o motivo da falha na inicialização.
|
DispatchEvents
Error DispatchEvents( void )
É um wrapper sintático em torno de um hook específico da plataforma que aplica um loop de eventos, aguardando uma fila que atende essa instância, extraindo eventos dessa fila e despacho deles para processamento.
Detalhes | |
---|---|
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.
|
GetPlatformData
void * GetPlatformData( void ) const
Isso retorna todos os dados da plataforma específicos do cliente atribuídos à instância, se tiverem sido definidos anteriormente.
Detalhes | |
---|---|
Retorna |
Dados da plataforma específicos do cliente, se tiverem sido definidos anteriormente. Caso contrário, NULL.
|
HandleEvent
Error HandleEvent( Object & aTarget, EventType aEventType, uintptr_t aArgument )
Isso implementa o envio e o manuseio reais de um evento Layer do sistema Weave.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
HandlePlatformTimer
Error HandlePlatformTimer( void )
Processe o evento de expiração do timer da plataforma.
Chamadas nl::Weave::System::Timer::HandleExpiresTimers para processar qualquer timer expirado. Presume-se que essa API é chamada apenas no encadeamento proprietário do objeto Layer do sistema Weave.
Detalhes | |
---|---|
Retorna |
WEAVE_SYSTEM_NO_ERROR em caso de êxito, caso contrário, código de erro.
|
HandleSelectResult
void HandleSelectResult( int aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet )
Processe a E/S de uma chamada selecionada.
Esse método registra o evento pendente de E/S em cada endpoint ativo e, em seguida, invoca as respectivas funções de processamento de E/S para esses endpoints.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
Init
Error Init( void *aContext )
Camada
Layer( void )
NewTimer
Error NewTimer( Timer *& aTimerPtr )
PostEvent
Error PostEvent( Object & aTarget, EventType aEventType, uintptr_t aArgument )
Isso publica um evento / mensagem do tipo especificado com o argumento fornecido na fila de eventos específica da plataforma dessa instância.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||||
Valores de retorno |
|
PrepareSelect
void PrepareSelect( int & aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet, struct timeval & aSleepTime )
Prepare os conjuntos de descritores de arquivo para trabalhar com o select()
.
Detalhes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
ScheduleWork
Error ScheduleWork( TimerCompleteFunct aComplete, void *aAppState )
Programa uma função com uma assinatura idêntica à TimerCompleteFunct
para ser executada o mais rápido possível na linha de execução do Weave.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
SetPlatformData
void SetPlatformData( void *aPlatformData )
Isso define os dados da plataforma específicos do cliente especificados na instância para recuperação posterior pela plataforma do cliente.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
Desligamento
Error Shutdown( void )
StartTimer
Error StartTimer( uint32_t aMilliseconds, TimerCompleteFunct aComplete, void *aAppState )
Esse método inicia um timer único.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Retorna |
WEAVE_SYSTEM_NO_ERROR Em caso de êxito.
|
||||||
Retorna |
WEAVE_SYSTEM_ERROR_NO_MEMORY Se um timer não pode ser alocado.
|
||||||
Retorna |
Outro valor que indica falha ao iniciar o timer.
|
Estado
LayerState State( void ) const
Isso retorna o estado atual do objeto da camada.
WakeSelect
void WakeSelect( void )
Ativar a linha de execução de E/S que monitora os descritores de arquivo usando select(), gravando um único byte no pipe de ativação.
Observação:se WakeSelect()
estiver sendo chamado de dentro do HandleSelectResult()
, a gravação no pipeline de ativação poderá ser ignorada, já que a linha de execução de E/S já está ativada.
Além disso, não nos importamos se essa gravação falhar, porque a única falha razoavelmente provável é que o pipe está cheio. Nesse caso, a linha de execução de chamada de seleção será ativada de qualquer maneira.
Funções estáticas públicas
GetClock_Monotonic
uint64_t GetClock_Monotonic( void )
Retorna o horário monotônico do sistema em unidades de microssegundos.
Essa função retorna um tempo decorrido em microssegundos desde um período arbitrário e definido pela plataforma. O valor retornado certamente aumentará sempre (ou seja, nunca será encapsulado) entre as reinicializações do sistema. Além disso, a fonte de tempo subjacente tem garantia de ativação contínua durante os modos de sono do sistema que não exigem reinicialização após a ativação.
Embora algumas plataformas possam optar por retornar um valor que mede o tempo desde a inicialização do sistema, os aplicativos não podem depender disso. Além disso, o período de GetClock_Monotonic() não precisa ser o mesmo de qualquer outra função GetClock.... Portanto, os cálculos de tempo relativo só podem ser realizados em valores retornados pela mesma função.
Essa função é segura em qualquer plataforma que use linhas de execução.
Detalhes | |
---|---|
Retorna |
Tempo decorrido em microssegundos desde um período arbitrário definido pela plataforma.
|
GetClock_MonotonicHiRes
uint64_t GetClock_MonotonicHiRes( void )
Retorna um horário de sistema monotônico de alta resolução (possivelmente) em unidades de microssegundos.
Essa função retorna um tempo decorrido em microssegundos desde um período arbitrário e definido pela plataforma. O valor retornado certamente aumentará sempre (ou seja, nunca será encapsulado) entre as reinicializações do sistema. No entanto, o timer não precisa ser ativado continuamente durante os estados de suspensão profunda do sistema.
Algumas plataformas podem implementar GetClock_MonotonicHiRes() usando um timer de alta resolução com precisão maior do que GetClock_Monotonic() e que não está sujeito a ajustes graduais do relógio (slewing). Os sistemas sem esse timer podem simplesmente retornar o mesmo valor que GetClock_Monotonic().
A época do tempo retornado por GetClock_MonotonicHiRes() não precisa ser a mesma de qualquer outra função GetClock..., incluindo GetClock_Monotonic().
Essa função é segura em qualquer plataforma que use linhas de execução.
Detalhes | |
---|---|
Retorna |
Tempo decorrido em microssegundos desde um período arbitrário definido pela plataforma.
|
GetClock_MonotonicMS
uint64_t GetClock_MonotonicMS( void )
Retorna o tempo monotônico do sistema em unidades de milissegundos.
Essa função retorna um tempo decorrido em milissegundos desde uma época arbitrária definida pela plataforma. O valor retornado certamente aumentará sempre (ou seja, nunca será encapsulado) entre as reinicializações do sistema. Além disso, a fonte de tempo subjacente tem garantia de ativação contínua durante os modos de sono do sistema que não exigem reinicialização após a ativação.
Embora algumas plataformas possam optar por retornar um valor que mede o tempo desde a inicialização do sistema, os aplicativos não podem depender disso. Além disso, o período de GetClock_Monotonic() não precisa ser o mesmo de qualquer outra função GetClock.... Portanto, os cálculos de tempo relativo só podem ser realizados em valores retornados pela mesma função.
Essa função é segura em qualquer plataforma que use linhas de execução.
Detalhes | |
---|---|
Retorna |
Tempo decorrido em milissegundos desde um período arbitrário definido pela plataforma.
|
GetClock_RealTime
Error GetClock_RealTime( uint64_t & curTime )
Retorna o horário real (civil) atual no formato de tempo Unix de microssegundos.
Esse método retorna a noção de tempo real atual da plataforma local, expressa como um valor de hora Unix dimensionado para microssegundos. O relógio tem a garantia de uma frequência de,no mínimo,segundos inteiros (valores de 1.000.000), mas em algumas plataformas pode marcar mais rápido.
Se a plataforma subjacente for capaz de monitorar em tempo real, mas o sistema não estiver sincronizado no momento, GetClock_RealTime() retornará o erro WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED.
Em plataformas incapazes de acompanhar em tempo real, o método GetClock_RealTime() pode estar ausente, resultando em um erro de link para qualquer aplicativo que faça referência a ele. Como alternativa, essas plataformas podem oferecer uma implementação de GetClock_RealTime() que sempre retorna o erro WEAVE_SYSTEM_ERROR_NOT_SUPPORTED.
Essa função é segura em qualquer plataforma que use linhas de execução.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
GetClock_RealTimeMS
Error GetClock_RealTimeMS( uint64_t & curTimeMS )
Retorna o horário real (civil) atual no formato de hora Unix de milissegundos.
Esse método retorna a noção de tempo real atual da plataforma local, expressa como um valor de hora Unix dimensionado para milissegundos. O relógio tem a garantia de uma frequência de,no mínimo,segundos inteiros (valores de 1.000.000), mas em algumas plataformas pode marcar mais rápido.
Se a plataforma subjacente for capaz de monitorar em tempo real, mas o sistema não estiver sincronizado no momento, GetClock_RealTimeMS() retornará o erro WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED.
Em plataformas incapazes de acompanhar em tempo real, o método GetClock_RealTimeMS() pode estar ausente, resultando em um erro de link para qualquer aplicativo que faça referência a ele. Como alternativa, essas plataformas podem fornecer uma implementação de GetClock_RealTimeMS() que sempre retorna o erro WEAVE_SYSTEM_ERROR_NOT_SUPPORTED.
Essa função é segura em qualquer plataforma que use linhas de execução.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
SetClock_RealTime
Error SetClock_RealTime( uint64_t newCurTime )
Define a noção do tempo real (civil) atual da plataforma.
Os aplicativos podem chamar 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, o relógio da plataforma subjacente vai acompanhar em tempo real com uma granularidade de pelo menos segundos inteiros.
Algumas plataformas restringem quais aplicativos ou processos podem definir o tempo real. Se o autor da chamada não tem permissão para mudar em tempo real, a função SetClock_RealTime() retorna o erro WEAVE_SYSTEM_ERROR_ACCESS_DENIED.
Em plataformas que são incapazes de monitorar em tempo real ou que não oferecem a capacidade de definir esse tempo, a função SetClock_RealTime() pode estar ausente, resultando em um erro de link para qualquer aplicativo que a referencie. Como alternativa, essas plataformas podem oferecer uma implementação de SetClock_RealTime() que sempre retorna o erro WEAVE_SYSTEM_ERROR_NOT_SUPPORTED.
Essa função é segura em qualquer plataforma que use linhas de execução.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|