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
[in,out] aLayer
Odwołanie do inicjowanej warstwy systemu Weave.
[in,out] aContext
Dane kontekstowe związane z platformą przekazywane do metody inicjowania warstwy, ::Init.
[in] anError
Ogólny stan zwracany za pomocą metody warstwy systemu Weave ::Init.

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
[in,out] aLayer
Odwołanie do wyłączanej instancji warstwy systemu Weave.
[in,out] aContext
Dane kontekstowe z konkretnej platformy przekazywane do metody inicjowania warstwy, ::Shutdown.
[in] anError
Ogólny stan zwracany za pomocą metody warstwy systemu Weave ::Shutdown.
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
[in,out] aLayer
Odwołanie do instancji warstwy, z której wysyłane są zdarzenia / wiadomości.
[in,out] aContext
Dane kontekstowe związane z platformą przekazywane do metody inicjowania warstwy, ::Init.
[in] anEvent
Obiekt zdarzenia na platformie do wysłania do obsługi.
Zwracane wartości
#WEAVE_SYSTEM_ERROR_BAD_ARGS
Jeśli #aLayer lub cel zdarzenia ma wartość NULL.
#WEAVE_SYSTEM_ERROR_UNEXPECTED_EVENT
Jeśli typ wydarzenia nie został rozpoznany.
#WEAVE_SYSTEM_ERROR_UNEXPECTED_STATE
Stan obiektu warstwy systemu Weave jest nieoczekiwany.
WEAVE_SYSTEM_NO_ERROR
Na sukces.

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
[in,out] aLayer
Odwołanie do instancji warstwy, z której wysyłane są zdarzenia / wiadomości.
[in,out] aContext
Dane kontekstowe związane z platformą przekazywane do metody inicjowania warstwy, ::Init.
Zwracane wartości
#WEAVE_SYSTEM_ERROR_BAD_ARGS
Jeśli #aLayer lub #aContext ma wartość NULL.
#WEAVE_SYSTEM_ERROR_UNEXPECTED_STATE
Stan obiektu warstwy systemu Weave jest nieoczekiwany.
#WEAVE_SYSTEM_ERROR_UNEXPECTED_EVENT
Jeśli nie rozpoznano typu wydarzenia.
WEAVE_SYSTEM_NO_ERROR
Na sukces.

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
[out] curTime
Bieżący czas, wyrażony jako czas uniksowy przeskalowany do mikrosekund.
Zwracane wartości
WEAVE_SYSTEM_NO_ERROR
Jeśli to się uda,
#WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED
Jeśli platforma może śledzić dane w czasie rzeczywistym, ale obecnie nie jest zsynchronizowana.
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
Czy platforma nie jest w stanie śledzić danych w czasie rzeczywistym

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
[out] curTime
Bieżący czas, wyrażony jako czas uniksowy ze skalą w milisekundach.
Zwracane wartości
WEAVE_SYSTEM_NO_ERROR
Jeśli to się uda,
#WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED
Jeśli platforma może śledzić dane w czasie rzeczywistym, ale obecnie nie jest zsynchronizowana.
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
Czy platforma nie jest w stanie śledzić danych w czasie rzeczywistym

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
[in,out] aLayer
Wskaźnik do instancji warstwy, w której publikowane są zdarzenie lub wiadomość.
[in,out] aContext
Dane kontekstowe związane z platformą przekazywane do metody inicjowania warstwy, ::Init.
[in,out] aTarget
Wskaźnik do obiektu Layer systemu Weave wysyłającego żądanie publikacji.
[in] aType
Typ wydarzenia do opublikowania.
[in,out] anArg
Argument powiązany ze zdarzeniem do opublikowania.
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
[in] newCurTime
Nowy bieżący czas, wyrażony jako czas uniksowy przeskalowany do mikrosekund.
Zwracane wartości
WEAVE_SYSTEM_NO_ERROR
Jeśli to się uda,
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
Czy platforma nie jest w stanie śledzić danych w czasie rzeczywistym
#WEAVE_SYSTEM_ERROR_ACCESS_DENIED
Jeśli aplikacja wywołująca nie ma uprawnień do ustawienia bieżącej godziny.

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
[in,out] aLayer
Odwołanie do instancji warstwy, z której wysyłane są zdarzenia / wiadomości.
[in,out] aContext
Dane kontekstowe związane z platformą przekazywane do metody inicjowania warstwy, ::Init.
[in] aMilliseconds
Liczba milisekund, która ma być ustawiona na minutnik.
Zwracane wartości
WEAVE_SYSTEM_NO_ERROR
Zawsze działa, chyba że zostanie zastąpione.

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
[in,out] aLayer
Odwołanie do inicjowanej warstwy systemu Weave.
[in,out] aContext
Dane kontekstowe związane z platformą przekazywane do metody inicjowania warstwy, ::Init.
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
[in,out] aLayer
Wskaźnik do wyłączania instancji Layer systemu Weave.
[in,out] aContext
Dane kontekstowe z konkretnej platformy przekazywane do metody inicjowania warstwy, ::Shutdown.
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.