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

Zusammenfassung

Funktionen

DidInit(Layer & aLayer, void *aContext, Error aStatus)
NL_DLL_EXPORT void
Dies ist ein plattformspezifischer Weave System-Layer-Hook nach der Initialisierung.
DidShutdown(Layer & aLayer, void *aContext, Error aStatus)
NL_DLL_EXPORT void
Dies ist ein plattformspezifischer Vor-Herunterfahren-Hook von Weave System Layer.
DispatchEvent(Layer & aLayer, void *aContext, Event aEvent)
NL_DLL_EXPORT Error
Dies ist ein plattformspezifischer Hook für Ereignis-/Nachrichtenweiterleitung.
DispatchEvents(Layer & aLayer, void *aContext)
NL_DLL_EXPORT Error
Dies ist ein plattformspezifischer Hook für Ereignis-/Nachrichtenweiterleitung.
GetClock_Monotonic(void)
uint64_t
Plattformspezifische Funktion zum Abrufen monotoner Systemzeit in Mikrosekunden
GetClock_MonotonicHiRes(void)
uint64_t
Plattformspezifische Funktion zum Abrufen einer hochauflösenden monotonen Systemzeit in Mikrosekunden
GetClock_MonotonicMS(void)
uint64_t
Plattformspezifische Funktion zum Abrufen monotoner Systemzeit in Millisekunden
GetClock_RealTime(uint64_t & curTime)
Error
Plattformspezifische Funktion zum Abrufen der aktuellen reellen (zivilen) Zeit im Unix-Zeitformat Mikrosekunden
GetClock_RealTimeMS(uint64_t & curTimeMS)
Error
Plattformspezifische Funktion zum Abrufen der aktuellen reellen (zivilen) Zeit im Unix-Zeitformat im Millisekundenbereich
PostEvent(Layer & aLayer, void *aContext, Object & aTarget, EventType aType, uintptr_t aArgument)
NL_DLL_EXPORT Error
Dies ist ein plattformspezifisches Ereignis / ein Hook für Nachrichtenpost.
SetClock_RealTime(uint64_t newCurTime)
Error
Plattformspezifische Funktion zum Einstellen der aktuellen reellen Zeit
StartTimer(Layer & aLayer, void *aContext, uint32_t aMilliseconds)
NL_DLL_EXPORT Error
Dies ist ein plattformspezifischer Hook für Ereignis-/Nachrichtenweiterleitung.
WillInit(Layer & aLayer, void *aContext)
NL_DLL_EXPORT Error
Dies ist ein plattformspezifischer Vorinitialisierungs-Hook der Layer-Ebene von Weave System.
WillShutdown(Layer & aLayer, void *aContext)
NL_DLL_EXPORT Error
Dies ist ein plattformspezifischer Vor-Herunterfahren-Hook von Weave System Layer.

Funktionen

DidInit

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

Dies ist ein plattformspezifischer Weave System-Layer-Hook nach der Initialisierung.

Dies kann außer Kraft gesetzt werden, indem die Präprozessordefinition WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS festgelegt wird.

Details
Parameter
[in,out] aLayer
Ein Verweis auf die Weave System-Layer-Instanz, die initialisiert wird.
[in,out] aContext
Plattformspezifische Kontextdaten, die an die Initialisierungsmethode der Ebene (::Init) übergeben werden.
[in] anError
Der Gesamtstatus, der über die Weave System-Layer ::Init-Methode zurückgegeben wird.

DidShutdown

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

Dies ist ein plattformspezifischer Vor-Herunterfahren-Hook von Weave System Layer.

Dies kann außer Kraft gesetzt werden, indem die Präprozessordefinition WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS festgelegt wird.

Details
Parameter
[in,out] aLayer
Ein Verweis auf die Weave System-Layer-Instanz, die heruntergefahren wird.
[in,out] aContext
Plattformspezifische Kontextdaten, die an die Ebeneninitialisierungsmethode „::Herunterfahren“ übergeben werden.
[in] anError
Der Gesamtstatus, der über die Weave System-Layer ::Herunterfahren-Methode zurückgegeben wird.
Rückgabe
WEAVE_SYSTEM_NO_ERROR bei Erfolg, andernfalls ein bestimmter Fehler, der den Grund für das Fehlschlagen des Herunterfahrens angibt. Wird der Status „Fehlgeschlagen“ zurückgegeben, wird das Herunterfahren abgebrochen.

DispatchEvent

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

Dies ist ein plattformspezifischer Hook für Ereignis-/Nachrichtenweiterleitung.

Dies kann überschrieben werden, indem die Präprozessordefinition WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS festgelegt wird.

Dadurch wird das angegebene Ereignis zur Verarbeitung gesendet und der Typ und die Argumente des Ereignisses zur Übergabe an das Weave System-Layer::HandleEvent-Ereignis für die tatsächliche Weiterleitung unmarshalliert.

Details
Parameter
[in,out] aLayer
Ein Verweis auf die Layer-Instanz, für die Ereignisse / Nachrichten gesendet werden.
[in,out] aContext
Plattformspezifische Kontextdaten, die an die Initialisierungsmethode der Ebene (::Init) übergeben werden.
[in] anEvent
Das plattformspezifische Ereignisobjekt, das für die Verarbeitung ausgelöst werden soll.
Rückgabewerte
#WEAVE_SYSTEM_ERROR_BAD_ARGS
Wenn #aLayer oder das Ereignisziel NULL ist.
#WEAVE_SYSTEM_ERROR_UNEXPECTED_EVENT
Wenn der Ereignistyp nicht erkannt wird.
#WEAVE_SYSTEM_ERROR_UNEXPECTED_STATE
Wenn der Zustand des Weave System-Layer-Objekts unerwartet ist.
WEAVE_SYSTEM_NO_ERROR
Bei Erfolg.

DispatchEvents

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

Dies ist ein plattformspezifischer Hook für Ereignis-/Nachrichtenweiterleitung.

Dies kann überschrieben werden, indem die Präprozessordefinition WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS festgelegt wird.

Dies wirkt sich auf eine Ereignisschleife aus, die auf eine Warteschlange wartet, die diese Instanz bedient, Ereignisse aus dieser Warteschlange holen und dann zur Verarbeitung abschicken.

Details
Parameter
[in,out] aLayer
Ein Verweis auf die Layer-Instanz, für die Ereignisse / Nachrichten gesendet werden.
[in,out] aContext
Plattformspezifische Kontextdaten, die an die Initialisierungsmethode der Ebene (::Init) übergeben werden.
Rückgabewerte
#WEAVE_SYSTEM_ERROR_BAD_ARGS
Wenn #aLayer oder #aContext NULL ist.
#WEAVE_SYSTEM_ERROR_UNEXPECTED_STATE
Wenn der Zustand des Weave System-Layer-Objekts unerwartet ist.
#WEAVE_SYSTEM_ERROR_UNEXPECTED_EVENT
Wenn ein Ereignistyp nicht erkannt wird.
WEAVE_SYSTEM_NO_ERROR
Bei Erfolg.

GetClock_Monotonic

uint64_t GetClock_Monotonic(
  void
)

Plattformspezifische Funktion zum Abrufen monotoner Systemzeit in Mikrosekunden

Von dieser Funktion wird erwartet, dass sie seit einer beliebigen, plattformdefinierten Epoche die verstrichene Zeit in Mikrosekunden zurückgibt. Plattformimplementierungen müssen zwischen Systemneustarts einen ständig ansteigenden Wert zurückgeben (d.h. nie umgebrochen) werden. Darüber hinaus muss die zugrunde liegende Zeitquelle in allen System-Schlafmodi, die keinen Neustart nach dem Aufwachen beinhalten, kontinuierlich ticken.

Die von dieser Funktion zurückgegebene Epoche muss nicht mit der anderer GetClock...-Funktionen übereinstimmen, einschließlich GetClock_MonotonicMS().

Von dieser Funktion wird erwartet, dass sie auf jeder Plattform mit Threading sicher ist.

Details
Rückgabe
Verstrichene Zeit in Mikrosekunden seit einer beliebigen, plattformdefinierten Epoche.

GetClock_MonotonicHiRes

uint64_t GetClock_MonotonicHiRes(
  void
)

Plattformspezifische Funktion zum Abrufen einer hochauflösenden monotonen Systemzeit in Mikrosekunden

Von dieser Funktion wird erwartet, dass sie seit einer beliebigen, plattformdefinierten Epoche die verstrichene Zeit in Mikrosekunden zurückgibt. Von GetClock_MonotonicHiRes() zurückgegebene Werte müssen kontinuierlich ansteigen (d.h. nie umgebrochen werden). Der zugrunde liegende Timer muss jedoch nicht kontinuierlich ticken, wenn sich das System im Ruhemodus befindet.

Es wird empfohlen, für die Plattform GetClock_MonotonicHiRes() mit einem hochauflösenden Timer zu implementieren, der keinen schrittweisen Anpassungen der Uhr (Steling) unterliegt. Auf Plattformen ohne einen solchen Timer kann GetClock_MonotonicHiRes() denselben Wert wie GetClock_Monotonic() zurückgeben.

Die von dieser Funktion zurückgegebene Epoche muss nicht mit der anderer GetClock...-Funktionen übereinstimmen.

Von dieser Funktion wird erwartet, dass sie auf jeder Plattform mit Threading sicher ist.

Details
Rückgabe
Verstrichene Zeit in Mikrosekunden seit einer beliebigen, plattformdefinierten Epoche.

GetClock_MonotonicMS

uint64_t GetClock_MonotonicMS(
  void
)

Plattformspezifische Funktion zum Abrufen monotoner Systemzeit in Millisekunden

Von dieser Funktion wird erwartet, dass sie die verstrichene Zeit in Millisekunden seit einer beliebigen, plattformdefinierten Epoche zurückgibt. Plattformimplementierungen müssen zwischen Systemneustarts einen ständig ansteigenden Wert zurückgeben (d.h. nie umgebrochen) werden. Darüber hinaus muss die zugrunde liegende Zeitquelle in allen System-Schlafmodi, die keinen Neustart nach dem Aufwachen beinhalten, kontinuierlich ticken.

Die von dieser Funktion zurückgegebene Epoche muss nicht dieselbe sein wie die anderer GetClock...-Funktionen, einschließlich GetClock_Monotonic().

Von dieser Funktion wird erwartet, dass sie auf jeder Plattform mit Threading sicher ist.

Details
Rückgabe
Verstrichene Zeit in Millisekunden seit einer beliebigen, plattformdefinierten Epoche.

GetClock_RealTime

Error GetClock_RealTime(
  uint64_t & curTime
)

Plattformspezifische Funktion zum Abrufen der aktuellen reellen (zivilen) Zeit im Unix-Zeitformat Mikrosekunden

Von dieser Funktion wird erwartet, dass sie den Standpunkt der lokalen Plattform für die aktuelle Echtzeit zurückgibt, ausgedrückt als Unix-Zeitwert, skaliert auf Mikrosekunden. Die zugrunde liegende Uhr muss mindestens ganze Sekunden ticken (Werte von 1.000.000), aber möglicherweise schneller.

Auf Plattformen, die Echtzeit-Tracking unterstützen, muss GetClock_RealTime() den Fehler WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED zurückgeben, wenn das System nicht mit Echtzeit synchronisiert ist.

Plattformen, die kein Echtzeit-Tracking ermöglichen, sollten die Funktion GetClock_RealTime() nicht implementieren, um so Verknüpfungsfehler bei Funktionen zu erzwingen, die vom Echtzeitzugriff abhängig sind. Alternativ können solche Plattformen eine Implementierung von GetClock_RealTime() bereitstellen, die den Fehler WEAVE_SYSTEM_ERROR_NOT_SUPPORTED zurückgibt.

Von dieser Funktion wird erwartet, dass sie auf jeder Plattform mit Threading sicher ist.

Details
Parameter
[out] curTime
Die aktuelle Zeit als Unix-Zeit, skaliert auf Mikrosekunden.
Rückgabewerte
WEAVE_SYSTEM_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
#WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED
Ob die Plattform Echtzeit-Tracking unterstützt, aber derzeit nicht synchronisiert ist.
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
Ob die Plattform das Tracking in Echtzeit nicht unterstützt.

GetClock_RealTimeMS

Error GetClock_RealTimeMS(
  uint64_t & curTimeMS
)

Plattformspezifische Funktion zum Abrufen der aktuellen reellen (zivilen) Zeit im Unix-Zeitformat im Millisekundenbereich

Von dieser Funktion wird erwartet, dass sie das Konzept der lokalen Plattform für die aktuelle Echtzeit zurückgibt, ausgedrückt als Unix-Zeitwert, skaliert auf Millisekunden.

Weitere Informationen zum erwarteten Verhalten finden Sie in der Dokumentation zu GetClock_RealTime().

Details
Parameter
[out] curTime
Die aktuelle Zeit, ausgedrückt als Unix-Zeit, skaliert auf Millisekunden.
Rückgabewerte
WEAVE_SYSTEM_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
#WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED
Ob die Plattform Echtzeit-Tracking unterstützt, aber derzeit nicht synchronisiert ist.
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
Ob die Plattform das Tracking in Echtzeit nicht unterstützt.

PostEvent

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

Dies ist ein plattformspezifisches Ereignis / ein Hook für Nachrichtenpost.

Dies kann überschrieben werden, indem die Präprozessordefinition WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS festgelegt wird.

Dadurch wird ein Ereignis oder eine Nachricht des angegebenen Typs mit dem angegebenen Argument an die plattformspezifische Ereignis-/Nachrichtenwarteschlange dieser Instanz gesendet.

Details
Parameter
[in,out] aLayer
Ein Zeiger auf die Layer-Instanz, an die das Ereignis bzw. die Nachricht gesendet wird.
[in,out] aContext
Plattformspezifische Kontextdaten, die an die Initialisierungsmethode der Ebene (::Init) übergeben werden.
[in,out] aTarget
Ein Zeiger auf das Weave System-Layer-Objekt, von dem die Post-Anfrage stammt.
[in] aType
Die Art der Veranstaltung, die gepostet werden soll.
[in,out] anArg
Das mit dem zu postenden Ereignis verknüpfte Argument.
Rückgabe
WEAVE_SYSTEM_NO_ERROR bei Erfolg, andernfalls ein bestimmter Fehler, der den Grund für das Fehlschlagen der Initialisierung angibt.

SetClock_RealTime

Error SetClock_RealTime(
  uint64_t newCurTime
)

Plattformspezifische Funktion zum Einstellen der aktuellen reellen Zeit

Weave ruft diese Funktion auf, um das Konzept der lokalen Plattform für die aktuelle Echtzeit festzulegen. Die neue aktuelle Zeit wird als Unix-Zeitwert ausgedrückt, der auf Mikrosekunden skaliert wird.

Nach der Einstellung wird die zugrunde liegende Plattformuhr voraussichtlich in Echtzeit mit einem Detaillierungsgrad von mindestens ganzen Sekunden verfolgt.

Auf Plattformen, die Echtzeit-Tracking unterstützen, muss die Funktion „SetClock_RealTime()“ den Fehler WEAVE_SYSTEM_ERROR_ACCESS_DENIED zurückgeben, wenn die aufrufende Anwendung nicht über die Berechtigung zum Einstellen der aktuellen Uhrzeit verfügt.

Auf Plattformen, die kein Echtzeit-Tracking ermöglichen oder keine Echtzeit-Einstellung bieten, sollte die Funktion „SetClock_RealTime()“ nicht implementiert werden. Dadurch werden Linkzeitausfälle bei Funktionen erzwungen, die von der Einstellung in Echtzeit abhängen. Alternativ können solche Plattformen eine Implementierung von SetClock_RealTime() bereitstellen, die den Fehler WEAVE_SYSTEM_ERROR_NOT_SUPPORTED zurückgibt.

Von dieser Funktion wird erwartet, dass sie auf jeder Plattform mit Threading sicher ist.

Details
Parameter
[in] newCurTime
Die neue aktuelle Zeit, ausgedrückt als Unix-Zeit, skaliert auf Mikrosekunden.
Rückgabewerte
WEAVE_SYSTEM_NO_ERROR
Gibt an, ob die Methode erfolgreich war.
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
Ob die Plattform das Tracking in Echtzeit nicht unterstützt.
#WEAVE_SYSTEM_ERROR_ACCESS_DENIED
Die aufrufende Anwendung ist nicht berechtigt, die aktuelle Uhrzeit festzulegen.

StartTimer

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

Dies ist ein plattformspezifischer Hook für Ereignis-/Nachrichtenweiterleitung.

Dies kann überschrieben werden, indem die Präprozessordefinition WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS festgelegt wird.

Details
Parameter
[in,out] aLayer
Ein Verweis auf die Layer-Instanz, für die Ereignisse / Nachrichten gesendet werden.
[in,out] aContext
Plattformspezifische Kontextdaten, die an die Initialisierungsmethode der Ebene (::Init) übergeben werden.
[in] aMilliseconds
Die Anzahl der Millisekunden, die für den Timer eingestellt werden soll.
Rückgabewerte
WEAVE_SYSTEM_NO_ERROR
Immer erfolgreich, sofern nicht überschrieben.

WillInit

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

Dies ist ein plattformspezifischer Vorinitialisierungs-Hook der Layer-Ebene von Weave System.

Dies kann außer Kraft gesetzt werden, indem die Präprozessordefinition WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS festgelegt wird.

Details
Parameter
[in,out] aLayer
Ein Verweis auf die Weave System-Layer-Instanz, die initialisiert wird.
[in,out] aContext
Plattformspezifische Kontextdaten, die an die Initialisierungsmethode der Ebene (::Init) übergeben werden.
Rückgabe
WEAVE_SYSTEM_NO_ERROR bei Erfolg, andernfalls ein bestimmter Fehler, der den Grund für das Fehlschlagen der Initialisierung angibt. Wird der Status „Nicht erfolgreich“ zurückgegeben, wird die Initialisierung abgebrochen.

WillShutdown

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

Dies ist ein plattformspezifischer Vor-Herunterfahren-Hook von Weave System Layer.

Dies kann außer Kraft gesetzt werden, indem die Präprozessordefinition WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS festgelegt wird.

Details
Parameter
[in,out] aLayer
Ein Zeiger auf die Weave System-Layer-Instanz, die heruntergefahren wird.
[in,out] aContext
Plattformspezifische Kontextdaten, die an die Ebeneninitialisierungsmethode „::Herunterfahren“ übergeben werden.
Rückgabe
WEAVE_SYSTEM_NO_ERROR bei Erfolg, andernfalls ein bestimmter Fehler, der den Grund für das Fehlschlagen des Herunterfahrens angibt. Wird der Status „Fehlgeschlagen“ zurückgegeben, wird das Herunterfahren abgebrochen.