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

概要

関数

DidInit(Layer & aLayer, void *aContext, Error aStatus)
NL_DLL_EXPORT void
これは、プラットフォーム固有の Weave システム レイヤの初期化後のフックです。
DidShutdown(Layer & aLayer, void *aContext, Error aStatus)
NL_DLL_EXPORT void
これは、プラットフォーム固有の Weave システム レイヤのシャットダウン前フックです。
DispatchEvent(Layer & aLayer, void *aContext, Event aEvent)
NL_DLL_EXPORT Error
これは、プラットフォーム固有のイベント / メッセージ ディスパッチ フックです。
DispatchEvents(Layer & aLayer, void *aContext)
NL_DLL_EXPORT Error
これは、プラットフォーム固有のイベント / メッセージ ディスパッチ フックです。
GetClock_Monotonic(void)
uint64_t
システム時間をマイクロ秒単位で単調に取得するためのプラットフォーム固有の関数。
GetClock_MonotonicHiRes(void)
uint64_t
マイクロ秒単位の高解像度の単調なシステム時間を取得するためのプラットフォーム固有の関数。
GetClock_MonotonicMS(void)
uint64_t
ミリ秒単位の単調なシステム時間を取得するためのプラットフォーム固有の関数。
GetClock_RealTime(uint64_t & curTime)
Error
現在の実(民間)時刻をマイクロ秒単位の Unix 時間形式で取得するためのプラットフォーム固有の関数。
GetClock_RealTimeMS(uint64_t & curTimeMS)
Error
現在の実(民間)時刻をミリ秒単位の Unix 時間形式で取得するためのプラットフォーム固有の関数。
PostEvent(Layer & aLayer, void *aContext, Object & aTarget, EventType aType, uintptr_t aArgument)
NL_DLL_EXPORT Error
これは、プラットフォーム固有のイベント / メッセージの投稿フックです。
SetClock_RealTime(uint64_t newCurTime)
Error
現在の実(民間)時間を設定するためのプラットフォーム固有の関数。
StartTimer(Layer & aLayer, void *aContext, uint32_t aMilliseconds)
NL_DLL_EXPORT Error
これは、プラットフォーム固有のイベント / メッセージ ディスパッチ フックです。
WillInit(Layer & aLayer, void *aContext)
NL_DLL_EXPORT Error
プラットフォーム固有の Weave システム レイヤの事前初期化フックです。
WillShutdown(Layer & aLayer, void *aContext)
NL_DLL_EXPORT Error
これは、プラットフォーム固有の Weave システム レイヤのシャットダウン前フックです。

関数

DidInit

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

これは、プラットフォーム固有の Weave システム レイヤの初期化後のフックです。

これは、プリプロセッサ定義 WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS を表明することでオーバーライドできます。

詳細
パラメータ
[in,out] aLayer
初期化中の Weave システム レイヤ インスタンスへの参照。
[in,out] aContext
レイヤの初期化メソッド ::Init に渡されるプラットフォーム固有のコンテキスト データ。
[in] anError
Weave システムの Layer ::Init メソッドを介して返される全体的なステータス。

DidShutdown

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

これは、プラットフォーム固有の Weave システム レイヤのシャットダウン前フックです。

これは、プリプロセッサ定義 WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS を表明することでオーバーライドできます。

詳細
パラメータ
[in,out] aLayer
シャットダウン中の Weave システム レイヤ インスタンスへの参照。
[in,out] aContext
レイヤの初期化メソッド ::Shutdown に渡されるプラットフォーム固有のコンテキスト データ。
[in] anError
Weave システムの Layer ::Shutdown メソッド経由で返される全体的なステータス。
戻り値
成功すると WEAVE_SYSTEM_NO_ERROR。それ以外の場合は、シャットダウンに失敗した理由を示す特定のエラー。失敗ステータスを返すと、シャットダウンは中止されます。

DispatchEvent

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

これは、プラットフォーム固有のイベント / メッセージ ディスパッチ フックです。

これは、プリプロセッサ定義 WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS を表明することでオーバーライドできます。

これにより、指定された処理対象のイベントがディスパッチされ、イベントから型と引数がマーシャリング解除されて、実際のディスパッチのために Weave システム Layer::HandleEvent に引き渡されます。

詳細
パラメータ
[in,out] aLayer
イベントやメッセージがディスパッチされているレイヤ インスタンスへの参照。
[in,out] aContext
レイヤの初期化メソッド ::Init に渡されるプラットフォーム固有のコンテキスト データ。
[in] anEvent
処理のためにディスパッチするプラットフォーム固有のイベント オブジェクト。
戻り値
#WEAVE_SYSTEM_ERROR_BAD_ARGS
#aLayer またはイベント ターゲットが NULL の場合。
#WEAVE_SYSTEM_ERROR_UNEXPECTED_EVENT
イベントタイプを認識できない場合。
#WEAVE_SYSTEM_ERROR_UNEXPECTED_STATE
Weave システムの Layer オブジェクトの状態が予期しないものである場合、
WEAVE_SYSTEM_NO_ERROR
成功時。

DispatchEvents

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

これは、プラットフォーム固有のイベント / メッセージ ディスパッチ フックです。

これは、プリプロセッサ定義 WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS を表明することでオーバーライドできます。

これにより、イベント ループが発生し、このインスタンスにサービスを提供するキューを待機して、そのキューからイベントを pull し、処理のためにイベントをディスパッチします。

詳細
パラメータ
[in,out] aLayer
イベントやメッセージがディスパッチされているレイヤ インスタンスへの参照。
[in,out] aContext
レイヤの初期化メソッド ::Init に渡されるプラットフォーム固有のコンテキスト データ。
戻り値
#WEAVE_SYSTEM_ERROR_BAD_ARGS
#aLayer または #aContext が NULL の場合。
#WEAVE_SYSTEM_ERROR_UNEXPECTED_STATE
Weave システムの Layer オブジェクトの状態が予期しないものである場合、
#WEAVE_SYSTEM_ERROR_UNEXPECTED_EVENT
イベントタイプを認識できない場合。
WEAVE_SYSTEM_NO_ERROR
成功時。

GetClock_Monotonic

uint64_t GetClock_Monotonic(
  void
)

システム時間をマイクロ秒単位で単調に取得するためのプラットフォーム固有の関数。

この関数は、プラットフォームで定義された任意のエポックからの経過時間をマイクロ秒単位で返します。プラットフォームの実装は、システムの再起動の合間に増え続ける値を返す(つまり、ラップしない)必要があります。さらに、復帰時の再起動を必要としないシステム スリープ モードでも、基盤となるタイムソースが継続的にチェックされる必要があります。

この関数によって返される時刻のエポックは、GetClock_MonotonicMS() を含む他の GetClock... 関数のエポックと同じである必要はありません

この関数は、スレッドを使用するすべてのプラットフォームでスレッドセーフであると想定されます。

詳細
戻り値
プラットフォームで定義された任意のエポックからの経過時間(マイクロ秒単位)。

GetClock_MonotonicHiRes

uint64_t GetClock_MonotonicHiRes(
  void
)

マイクロ秒単位の高解像度の単調なシステム時間を取得するためのプラットフォーム固有の関数。

この関数は、プラットフォームで定義された任意のエポックからの経過時間をマイクロ秒単位で返します。GetClock_MonotonicHiRes() によって返される値は、常に増加する必要があります(つまり、ラップされないようにします)。ただし、システムのディープ スリープ状態でも、基になるタイマーは継続的に作動する必要はありません

プラットフォームには、段階的なクロック調整(スルーイング)の対象ではない高解像度タイマーを使用して GetClock_MonotonicHiRes() を実装することをおすすめします。このようなタイマーがないプラットフォームでは、GetClock_MonotonicHiRes() は GetClock_Monotonic() と同じ値を返す可能性があります。

この関数によって返される時刻のエポックは、他の GetClock... 関数のエポックと同じにする必要はありません。

この関数は、スレッドを使用するすべてのプラットフォームでスレッドセーフであると想定されます。

詳細
戻り値
プラットフォームで定義された任意のエポックからの経過時間(マイクロ秒単位)。

GetClock_MonotonicMS

uint64_t GetClock_MonotonicMS(
  void
)

ミリ秒単位の単調なシステム時間を取得するためのプラットフォーム固有の関数。

この関数は、プラットフォームで定義された任意のエポックからの経過時間をミリ秒単位で返します。プラットフォームの実装は、システムの再起動の合間に増え続ける値を返す(つまり、ラップしない)必要があります。さらに、復帰時の再起動を必要としないシステム スリープ モードでも、基盤となるタイムソースが継続的にチェックされる必要があります。

この関数によって返される時刻のエポックは、GetClock_Monotonic() を含む他の GetClock... 関数のエポックと同じである必要はありません

この関数は、スレッドを使用するすべてのプラットフォームでスレッドセーフであると想定されます。

詳細
戻り値
プラットフォームで定義された任意のエポックからの経過時間(ミリ秒)。

GetClock_RealTime

Error GetClock_RealTime(
  uint64_t & curTime
)

現在の実(民間)時刻をマイクロ秒単位の Unix 時間形式で取得するためのプラットフォーム固有の関数。

この関数は、ローカル プラットフォームの現在のリアルタイムという概念を、マイクロ秒単位にスケーリングされた Unix 時間値で表して返します。基礎となるクロックは少なくとも整数秒(値 1,000,000)のレートで刻んでいる必要がありますが、より速く動く場合もあります。

リアルタイムで追跡できるプラットフォームでは、システムがリアルタイムと同期していない場合、GetClock_RealTime() はエラー WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED を返す必要があります。

リアルタイムでトラッキングできないプラットフォームでは、GetClock_RealTime() 関数を実装すべきではありません。これにより、リアルタイムへのアクセスに依存する機能のリンクタイム エラーが強制的に発生します。または、このようなプラットフォームでは、エラー WEAVE_SYSTEM_ERROR_NOT_SUPPORTED を返す GetClock_RealTime() の実装が提供されることがあります。

この関数は、スレッドを使用するすべてのプラットフォームでスレッドセーフであると想定されます。

詳細
パラメータ
[out] curTime
マイクロ秒単位にスケーリングされた Unix 時間で表される現在の時刻。
戻り値
WEAVE_SYSTEM_NO_ERROR
メソッドが成功した場合。
#WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED
プラットフォームがリアルタイムで追跡できるが、現在は同期されていない場合。
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
プラットフォームがリアルタイムで追跡できない場合。

GetClock_RealTimeMS

Error GetClock_RealTimeMS(
  uint64_t & curTimeMS
)

現在の実(民間)時刻をミリ秒単位の Unix 時間形式で取得するためのプラットフォーム固有の関数。

この関数は、ローカル プラットフォームの現在のリアルタイムという概念を、ミリ秒単位にスケーリングされた Unix 時間値で表して返します。

想定される動作について詳しくは、GetClock_RealTime() のドキュメントをご覧ください。

詳細
パラメータ
[out] curTime
ミリ秒単位にスケーリングされた Unix 時間で表される現在の時刻。
戻り値
WEAVE_SYSTEM_NO_ERROR
メソッドが成功した場合。
#WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED
プラットフォームがリアルタイムで追跡できるが、現在は同期されていない場合。
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
プラットフォームがリアルタイムで追跡できない場合。

PostEvent

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

これは、プラットフォーム固有のイベント / メッセージの投稿フックです。

これは、プリプロセッサ定義 WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS を表明することでオーバーライドできます。

このメソッドは、指定された引数を使用して、指定されたタイプのイベント / メッセージを、このインスタンスのプラットフォーム固有のイベント / メッセージ キューに送信します。

詳細
パラメータ
[in,out] aLayer
イベントやメッセージの投稿先となるレイヤ インスタンスへのポインタ。
[in,out] aContext
レイヤの初期化メソッド ::Init に渡されるプラットフォーム固有のコンテキスト データ。
[in,out] aTarget
ポスト リクエストを行う Weave システム レイヤ オブジェクトへのポインタ。
[in] aType
送信するイベントのタイプ。
[in,out] anArg
送信するイベントに関連付けられている引数。
戻り値
成功すると WEAVE_SYSTEM_NO_ERROR。それ以外の場合は、初期化が失敗した理由を示す特定のエラー。

SetClock_RealTime

Error SetClock_RealTime(
  uint64_t newCurTime
)

現在の実(民間)時間を設定するためのプラットフォーム固有の関数。

Weave はこの関数を呼び出して、ローカル プラットフォームの現在のリアルタイムという概念を設定します。新しい現在時刻は、マイクロ秒単位にスケーリングされた Unix 時間値で表されます。

設定されると、基盤となるプラットフォーム クロックは少なくとも秒単位の粒度でリアルタイムにトラッキングされることが期待されます。

リアルタイムのトラッキングをサポートするプラットフォームでは、呼び出し元アプリケーションに現在の時刻を設定する権限がない場合、SetClock_RealTime() 関数はエラー WEAVE_SYSTEM_ERROR_ACCESS_DENIED を返す必要があります。

リアルタイムでトラッキングできない、またはリアルタイムを設定できないプラットフォームでは、SetClock_RealTime() 関数を実装すべきではありません。これにより、リアルタイム設定に依存する機能のリンクタイム エラーを強制的に発生させることができます。または、このようなプラットフォームでは、エラー WEAVE_SYSTEM_ERROR_NOT_SUPPORTED を返す SetClock_RealTime() の実装が提供されることがあります。

この関数は、スレッドを使用するすべてのプラットフォームでスレッドセーフであると想定されます。

詳細
パラメータ
[in] newCurTime
マイクロ秒単位にスケーリングされた Unix 時間で表される新しい現在時刻。
戻り値
WEAVE_SYSTEM_NO_ERROR
メソッドが成功した場合。
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
プラットフォームがリアルタイムで追跡できない場合。
#WEAVE_SYSTEM_ERROR_ACCESS_DENIED
呼び出し元アプリケーションに現在の時刻を設定する権限がない場合。

StartTimer

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

これは、プラットフォーム固有のイベント / メッセージ ディスパッチ フックです。

これは、プリプロセッサ定義 WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS を表明することでオーバーライドできます。

詳細
パラメータ
[in,out] aLayer
イベントやメッセージがディスパッチされているレイヤ インスタンスへの参照。
[in,out] aContext
レイヤの初期化メソッド ::Init に渡されるプラットフォーム固有のコンテキスト データ。
[in] aMilliseconds
タイマーに設定するミリ秒数。
戻り値
WEAVE_SYSTEM_NO_ERROR
オーバーライドされない限り、常に成功します。

WillInit

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

プラットフォーム固有の Weave システム レイヤの事前初期化フックです。

これは、プリプロセッサ定義 WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS を表明することでオーバーライドできます。

詳細
パラメータ
[in,out] aLayer
初期化中の Weave システム レイヤ インスタンスへの参照。
[in,out] aContext
レイヤの初期化メソッド ::Init に渡されるプラットフォーム固有のコンテキスト データ。
戻り値
成功すると WEAVE_SYSTEM_NO_ERROR。それ以外の場合は、初期化が失敗した理由を示す特定のエラー。失敗を示すステータスが返されると、初期化が中止されます。

WillShutdown

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

これは、プラットフォーム固有の Weave システム レイヤのシャットダウン前フックです。

これは、プリプロセッサ定義 WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS を表明することでオーバーライドできます。

詳細
パラメータ
[in,out] aLayer
シャットダウン中の Weave システム レイヤ インスタンスへのポインタ。
[in,out] aContext
レイヤの初期化メソッド ::Shutdown に渡されるプラットフォーム固有のコンテキスト データ。
戻り値
成功すると WEAVE_SYSTEM_NO_ERROR。それ以外の場合は、シャットダウンに失敗した理由を示す特定のエラー。失敗ステータスを返すと、シャットダウンは中止されます。