nl:: Weave:: System:: Platform:: Layer
Podsumowanie
Funkcje |
|
---|---|
DidInit(Layer & aLayer, void *aContext, Error aStatus)
|
NL_DLL_EXPORT void
Jest to zaczep warstwy systemu Weave na konkretnej platformie.
|
DidShutdown(Layer & aLayer, void *aContext, Error aStatus)
|
NL_DLL_EXPORT void
Jest to punkt zaczepienia poprzedzający warstwę systemu Weave na konkretnej platformie.
|
DispatchEvent(Layer & aLayer, void *aContext, Event aEvent)
|
NL_DLL_EXPORT Error
Jest to punkt zaczepienia wysyłania zdarzenia lub wiadomości na konkretnej platformie.
|
DispatchEvents(Layer & aLayer, void *aContext)
|
NL_DLL_EXPORT Error
Jest to punkt zaczepienia wysyłania zdarzenia lub wiadomości na konkretnej platformie.
|
GetClock_Monotonic(void)
|
uint64_t
Zależna od platformy funkcja pobierania monotonicznego czasu systemowego w mikrosekundach.
|
GetClock_MonotonicHiRes(void)
|
uint64_t
Zależna od platformy funkcja uzyskiwania monotonicznego czasu układu w wysokiej rozdzielczości w mikrosekundach.
|
GetClock_MonotonicMS(void)
|
uint64_t
Zależna od platformy funkcja uzyskiwania monotonnego czasu systemowego w milisekundach.
|
GetClock_RealTime(uint64_t & curTime)
|
Error
Zależna od platformy funkcja pobierania bieżącego rzeczywistego (cywilnego) czasu w mikrosekundowym formacie czasu uniksowego.
|
GetClock_RealTimeMS(uint64_t & curTimeMS)
|
Error
Zależna od platformy funkcja do pobierania aktualnego czasu rzeczywistego (cywilnego) w milisekundowym formacie czasu uniksowego.
|
PostEvent(Layer & aLayer, void *aContext, Object & aTarget, EventType aType, uintptr_t aArgument)
|
NL_DLL_EXPORT Error
Jest to punkt zaczepienia po zdarzeniu lub wysłaniu wiadomości na danej platformie.
|
SetClock_RealTime(uint64_t newCurTime)
|
Error
Zależna od platformy funkcja do ustawiania bieżącego rzeczywistego (cywilnego) czasu.
|
StartTimer(Layer & aLayer, void *aContext, uint32_t aMilliseconds)
|
NL_DLL_EXPORT Error
Jest to punkt zaczepienia wysyłania zdarzenia lub wiadomości na konkretnej platformie.
|
WillInit(Layer & aLayer, void *aContext)
|
NL_DLL_EXPORT Error
Jest to zaczep wstępnego inicjowania warstwsystemu Weave na konkretnej platformie.
|
WillShutdown(Layer & aLayer, void *aContext)
|
NL_DLL_EXPORT Error
Jest to punkt zaczepienia poprzedzający warstwę systemu Weave na konkretnej platformie.
|
Funkcje
DidInit
NL_DLL_EXPORT void DidInit( Layer & aLayer, void *aContext, Error aStatus )
Jest to zaczep warstwy systemu Weave na konkretnej platformie.
To ustawienie można zastąpić, zgłaszając definicję preprocesora (WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS).
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
DidShutdown
NL_DLL_EXPORT void DidShutdown( Layer & aLayer, void *aContext, Error aStatus )
Jest to punkt zaczepienia poprzedzający warstwę systemu Weave na konkretnej platformie.
To ustawienie można zastąpić, zgłaszając definicję preprocesora (WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS).
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
||||||
Zwroty |
WEAVE_SYSTEM_NO_ERROR w przypadku powodzenia. W przeciwnym razie jest to określony błąd wskazujący przyczynę niepowodzenia wyłączenia. Zwrócenie stanu nieudanego spowoduje przerwanie zamykania.
|
DispatchEvent
NL_DLL_EXPORT Error DispatchEvent( Layer & aLayer, void *aContext, Event aEvent )
Jest to punkt zaczepienia wysyłania zdarzenia lub wiadomości na konkretnej platformie.
To ustawienie można zastąpić, zgłaszając definicję preprocesora (WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS).
Wysyła określone zdarzenie do obsługi, usuwając ze zdarzenia typ i argumenty przekazywane do systemu Weave (Layer::HandleEvent) na potrzeby rzeczywistej wysyłki.
Szczegóły | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||
Zwracane wartości |
|
DispatchEvents
NL_DLL_EXPORT Error DispatchEvents( Layer & aLayer, void *aContext )
Jest to punkt zaczepienia wysyłania zdarzenia lub wiadomości na konkretnej platformie.
To ustawienie można zastąpić, zgłaszając definicję preprocesora (WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS).
Powoduje to pętlę zdarzeń – oczekiwanie na kolejkę obsługującą daną instancję, usunięcie zdarzeń z kolejki i wysłanie ich do obsługi.
Szczegóły | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||
Zwracane wartości |
|
GetClock_Monotonic
uint64_t GetClock_Monotonic( void )
Zależna od platformy funkcja pobierania monotonicznego czasu systemowego w mikrosekundach.
Ta funkcja powinna zwracać czas w mikrosekundach, ponieważ jest to dowolna epoka zdefiniowana przez platformę. Implementacje na platformie są zobowiązane zwracać wartość, która stale rośnie (czyli nigdy się nie zawija) pomiędzy ponownymi uruchomieniami systemu. Dodatkowo bazowe źródło czasu musi działać bez przerwy we wszystkich trybach uśpienia systemu, które nie wymagają ponownego uruchomienia po wybudzeniu.
Epoka czasu zwrócona przez tę funkcję nie musi być taka sama jak w przypadku innych funkcji GetClock..., w tym GetClock_MonotonicMS().
Ta funkcja powinna być bezpieczna w wątkach na wszystkich platformach obsługujących wątki.
Szczegóły | |
---|---|
Zwroty |
Czas, który upłynął w mikrosekundach od dowolnej epoki zdefiniowanej na platformie.
|
GetClock_MonotonicHiRes
uint64_t GetClock_MonotonicHiRes( void )
Zależna od platformy funkcja uzyskiwania monotonicznego czasu układu w wysokiej rozdzielczości w mikrosekundach.
Ta funkcja powinna zwracać czas w mikrosekundach, ponieważ jest to dowolna epoka zdefiniowana przez platformę. Wartości zwracane przez funkcję GetClock_MonotonicHiRes() muszą stale rosnąć (czyli nigdy nie zawijać). Podstawowy licznik czasu nie musi jednak włączać się bez przerwy w stanach głębokiego uśpienia systemu.
Zachęcamy do zaimplementowania metody GetClock_MonotonicHiRes() za pomocą licznika czasu o wysokiej rozdzielczości, który nie podlega stopniowej regulacji zegara (przewijania). Na platformach bez takiego licznika funkcja GetClock_MonotonicHiRes() może zwrócić tę samą wartość co GetClock_Monotonic().
Epoka czasu zwrócona przez tę funkcję nie musi być taka sama jak w przypadku żadnej innej funkcji GetClock.
Ta funkcja powinna być bezpieczna w wątkach na wszystkich platformach obsługujących wątki.
Szczegóły | |
---|---|
Zwroty |
Czas, który upłynął w mikrosekundach od dowolnej epoki zdefiniowanej na platformie.
|
GetClock_MonotonicMS
uint64_t GetClock_MonotonicMS( void )
Zależna od platformy funkcja uzyskiwania monotonnego czasu systemowego w milisekundach.
Ta funkcja powinna zwracać czas w milisekundach od dowolnej epoki zdefiniowanej na platformie. Implementacje na platformie są zobowiązane zwracać wartość, która stale rośnie (czyli nigdy się nie zawija) pomiędzy ponownymi uruchomieniami systemu. Dodatkowo bazowe źródło czasu musi działać bez przerwy we wszystkich trybach uśpienia systemu, które nie wymagają ponownego uruchomienia po wybudzeniu.
Epoka czasu zwrócona przez tę funkcję nie musi być taka sama jak w przypadku innych funkcji GetClock..., w tym GetClock_Monotonic().
Ta funkcja powinna być bezpieczna w wątkach na wszystkich platformach obsługujących wątki.
Szczegóły | |
---|---|
Zwroty |
Czas, który upłynął w milisekundach od dowolnej epoki zdefiniowanej na platformie.
|
GetClock_RealTime
Error GetClock_RealTime( uint64_t & curTime )
Zależna od platformy funkcja pobierania bieżącego rzeczywistego (cywilnego) czasu w mikrosekundowym formacie czasu uniksowego.
Ta funkcja powinna zwracać definicję bieżącego czasu rzeczywistego generowanego przez platformę lokalną, wyrażoną jako wartość czasu uniksowego przeskalowana do mikrosekund. Podstawowy zegar musi pokazywać się z prędkością co najmniej pełnych sekund (wartości 1 000 000), ale może to być szybsze.
Na platformach, które są w stanie śledzić dane w czasie rzeczywistym, funkcja GetClock_RealTime() musi zwracać błąd WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED za każdym razem, gdy system nie jest zsynchronizowany z czasem rzeczywistym.
Platformy, które nie mogą śledzić danych w czasie rzeczywistym, nie powinny implementować funkcji GetClock_RealTime(), co wymusza błędy związane z łączeniem w czasie rzeczywistym w przypadku funkcji, które wymagają dostępu do czasu rzeczywistego. Platformy te mogą też udostępniać implementację metody GetClock_RealTime(), która zwraca błąd WEAVE_SYSTEM_ERROR_NOT_SUPPORTED.
Ta funkcja powinna być bezpieczna w wątkach na wszystkich platformach obsługujących wątki.
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
||||||
Zwracane wartości |
|
GetClock_RealTimeMS
Error GetClock_RealTimeMS( uint64_t & curTimeMS )
Zależna od platformy funkcja do pobierania aktualnego czasu rzeczywistego (cywilnego) w milisekundowym formacie czasu uniksowego.
Oczekuje się, że ta funkcja zwraca pojęcie bieżącego czasu rzeczywistego przez platformę lokalną, wyrażone jako wartość czasu uniksowa w milisekundach.
Szczegółowe informacje na temat oczekiwanego działania znajdziesz w dokumentacji metody GetClock_RealTime().
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
||||||
Zwracane wartości |
|
PostEvent
NL_DLL_EXPORT Error PostEvent( Layer & aLayer, void *aContext, Object & aTarget, EventType aType, uintptr_t aArgument )
Jest to punkt zaczepienia po zdarzeniu lub wysłaniu wiadomości na danej platformie.
To ustawienie można zastąpić, zgłaszając definicję preprocesora (WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS).
Powoduje to opublikowanie zdarzenia lub komunikatu określonego typu z podanym argumentem do kolejki zdarzeń lub wiadomości związanych z platformą tej instancji.
Szczegóły | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||||
Zwroty |
WEAVE_SYSTEM_NO_ERROR w przypadku powodzenia; w innym przypadku określony błąd wskazujący przyczynę niepowodzenia zainicjowania.
|
SetClock_RealTime
Error SetClock_RealTime( uint64_t newCurTime )
Zależna od platformy funkcja do ustawiania bieżącego rzeczywistego (cywilnego) czasu.
Weave wywołuje tę funkcję, aby określić na platformie lokalnej wyobrażenie o bieżącym czasie rzeczywistym. Nowy bieżący czas jest wyrażony jako wartość czasu uniksowa przeskalowana do mikrosekund.
Po ustawieniu zegar bazowy platformy powinien śledzić czas rzeczywisty z dokładnością wynoszącą co najmniej całe sekundy.
Na platformach, które obsługują śledzenie w czasie rzeczywistym, funkcja SetClock_RealTime() musi zwracać błąd WEAVE_SYSTEM_ERROR_ACCESS_DENIED, jeśli aplikacja wywołująca nie ma uprawnień do ustawienia bieżącej godziny.
Platformy, które nie umożliwiają śledzenia w czasie rzeczywistym lub nie oferują możliwości ustawiania czasu rzeczywistego, nie powinny implementować funkcji SetClock_RealTime(), co wymusza błędy w czasie połączenia funkcji, które wymagają ustawienia czasu rzeczywistego. Platformy te mogą też udostępniać implementację funkcji SetClock_RealTime(), która zwraca błąd WEAVE_SYSTEM_ERROR_NOT_SUPPORTED.
Ta funkcja powinna być bezpieczna w wątkach na wszystkich platformach obsługujących wątki.
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
||||||
Zwracane wartości |
|
StartTimer
NL_DLL_EXPORT Error StartTimer( Layer & aLayer, void *aContext, uint32_t aMilliseconds )
Jest to punkt zaczepienia wysyłania zdarzenia lub wiadomości na konkretnej platformie.
To ustawienie można zastąpić, zgłaszając definicję preprocesora (WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS).
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
||||||
Zwracane wartości |
|
WillInit
NL_DLL_EXPORT Error WillInit( Layer & aLayer, void *aContext )
Jest to zaczep wstępnego inicjowania warstwsystemu Weave na konkretnej platformie.
To ustawienie można zastąpić, zgłaszając definicję preprocesora (WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS).
Szczegóły | |||||
---|---|---|---|---|---|
Parametry |
|
||||
Zwroty |
WEAVE_SYSTEM_NO_ERROR w przypadku powodzenia; w innym przypadku określony błąd wskazujący przyczynę niepowodzenia zainicjowania. Zwrócenie stanu nieudanego spowoduje przerwanie inicjowania.
|
WillShutdown
NL_DLL_EXPORT Error WillShutdown( Layer & aLayer, void *aContext )
Jest to punkt zaczepienia poprzedzający warstwę systemu Weave na konkretnej platformie.
To ustawienie można zastąpić, zgłaszając definicję preprocesora (WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS).
Szczegóły | |||||
---|---|---|---|---|---|
Parametry |
|
||||
Zwroty |
WEAVE_SYSTEM_NO_ERROR w przypadku powodzenia. W przeciwnym razie jest to określony błąd wskazujący przyczynę niepowodzenia wyłączenia. Zwrócenie stanu nieudanego spowoduje przerwanie zamykania.
|