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 System Layer インスタンスへの参照。
[in,out] aContext
レイヤの初期化メソッド ::Init に渡される、プラットフォーム固有のコンテキスト データ。
[in] anError
Weave システムのレイヤ ::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 System Layer インスタンスへの参照。
[in,out] aContext
レイヤの初期化メソッド ::Shutdown に渡されるプラットフォーム固有のコンテキスト データ。
[in] anError
Weave システムのレイヤ ::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 をアサートすることでオーバーライドできます。

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

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