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

摘要

函式

DidInit(Layer & aLayer, void *aContext, Error aStatus)
NL_DLL_EXPORT void
這是特定平台專用的 Weave 系統 Layer 後,會在初始化後掛鉤。
DidShutdown(Layer & aLayer, void *aContext, Error aStatus)
NL_DLL_EXPORT void
這是特定平台專用的 Weave 系統 Layer 關閉前掛鉤。
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 系統 Layer 預先初始化掛鉤。
WillShutdown(Layer & aLayer, void *aContext)
NL_DLL_EXPORT Error
這是特定平台專用的 Weave 系統 Layer 關閉前掛鉤。

函式

DidInit

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

這是特定平台專用的 Weave 系統 Layer 後,會在初始化後掛鉤。

宣告預先處理工具定義 WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS,可能會覆寫這項設定。

詳細說明
參數
[in,out] aLayer
初始化 Weave 系統 Layer 例項時的參照。
[in,out] aContext
傳送至圖層初始化方法 ::Init 的平台專屬結構定義資料。
[in] anError
透過 Weave 系統 Layer ::Init 方法傳回的整體狀態。

DidShutdown

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

這是特定平台專用的 Weave 系統 Layer 關閉前掛鉤。

宣告預先處理工具定義 WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS,可能會覆寫這項設定。

詳細說明
參數
[in,out] aLayer
關閉 Weave 系統 Layer 執行個體的參考資料。
[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 或事件目標為空值。
#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 為空值。
#WEAVE_SYSTEM_ERROR_UNEXPECTED_STATE
如果 Weave 系統 Layer 物件的狀態為非預期的狀態。
#WEAVE_SYSTEM_ERROR_UNEXPECTED_EVENT
無法辨識事件類型。
WEAVE_SYSTEM_NO_ERROR
成功時。

GetClock_Monotonic

uint64_t GetClock_Monotonic(
  void
)

用來取得單聲道系統時間 (以微秒為單位) 的平台專屬功能。

此函式應傳回經過的時間 (以微秒為單位),自平台定義的任意週期以來。平台實作作業有義務傳回在系統重新啟動間成長幅度逐漸增加的值 (即一律不換行)。此外,如有任何系統睡眠模式是處於喚醒後重新啟動的模式,就必須持續使用基準時間來源。

這個函式傳回的時間週期不必與任何其他 GetClock... 函式 (包括 GetClock_MonotonicMS()) 相同。

此函式應在採用執行緒的任何平台上都符合執行緒安全性。

詳細說明
傳回
從任意平台定義的 Epoch 紀元後經過的時間,以微秒為單位。

GetClock_MonotonicHiRes

uint64_t GetClock_MonotonicHiRes(
  void
)

特定平台專用的功能,用於取得高解析度的單聲道系統時間 (以微秒為單位)。

此函式應傳回經過的時間 (以微秒為單位),自平台定義的任意週期以來。GetClock_MonotonicHiRes() 傳回的值必須不斷增加 (也就是永不換行)。然而,在系統深度睡眠狀態期間,「不」需要持續執行基礎計時器。

建議平台使用高解析度計時器實作 GetClock_MonotonicHiRes(),且該計時器不需逐步調整 (搖桿)。在沒有設定計時器的平台上,GetClock_MonotonicHiRes() 可傳回與 GetClock_Monotonic() 相同的值。

這個函式傳回的時間紀元,不一定要與其他 GetClock... 函式相同。

此函式應在採用執行緒的任何平台上都符合執行緒安全性。

詳細說明
傳回
從任意平台定義的 Epoch 紀元後經過的時間,以微秒為單位。

GetClock_MonotonicMS

uint64_t GetClock_MonotonicMS(
  void
)

用來取得單調系統時間 (以毫秒為單位) 的平台專屬功能。

此函式應傳回經過的時間 (以毫秒為單位),從任意平台定義的 Epoch 紀元時間。平台實作作業有義務傳回在系統重新啟動間成長幅度逐漸增加的值 (即一律不換行)。此外,如有任何系統睡眠模式是處於喚醒後重新啟動的模式,就必須持續使用基準時間來源。

這個函式傳回的時間週期不必與任何其他 GetClock... 函式 (包括 GetClock_Monotonic()) 相同。

此函式應在採用執行緒的任何平台上都符合執行緒安全性。

詳細說明
傳回
從任意平台定義的 Epoch 紀元後經過的時間,以毫秒為單位。

GetClock_RealTime

Error GetClock_RealTime(
  uint64_t & curTime
)

用來取得目前實際 (民用) 時間的平台專屬功能,採用微秒 Unix 時間格式。

這個函式應會傳回當地平台針對目前即時的概念 (以縮放成微秒的 Unix 時間值表示)。基礎時鐘必須以至少整秒 (1,000,000 的值) 為準,但速度可能更快。

在能夠即時追蹤的平台上,GetClock_RealTime() 一律必須傳回 WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED 錯誤,直到系統與即時同步為止。

無法即時追蹤的平台不應導入 GetClock_RealTime() 函式,導致需要即時存取權的功能發生連結時無法使用。此外,這類平台也可能提供 GetClock_RealTime() 的實作方式,以傳回 WEAVE_SYSTEM_ERROR_NOT_SUPPORTED 錯誤。

此函式應在採用執行緒的任何平台上都符合執行緒安全性。

詳細說明
參數
[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() 函式,導致需要使用即時設定的功能發生連結時錯誤。此外,這類平台也可能提供 SetClock_RealTime() 的實作方式,以傳回 WEAVE_SYSTEM_ERROR_NOT_SUPPORTED 錯誤。

此函式應在採用執行緒的任何平台上都符合執行緒安全性。

詳細說明
參數
[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 系統 Layer 預先初始化掛鉤。

宣告預先處理工具定義 WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS,可能會覆寫這項設定。

詳細說明
參數
[in,out] aLayer
初始化 Weave 系統 Layer 例項時的參照。
[in,out] aContext
傳送至圖層初始化方法 ::Init 的平台專屬結構定義資料。
傳回
WEAVE_SYSTEM_NO_ERROR,否則發生指出初始化失敗的特定錯誤。如果傳回未成功的狀態,系統會取消初始化作業。

WillShutdown

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

這是特定平台專用的 Weave 系統 Layer 關閉前掛鉤。

宣告預先處理工具定義 WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS,可能會覆寫這項設定。

詳細說明
參數
[in,out] aLayer
指向關閉 Weave 系統 Layer 執行個體的指標。
[in,out] aContext
傳送至圖層初始化方法 ::Shutdown. 的平台專屬結構定義資料。
傳回
WEAVE_SYSTEM_NO_ERROR;否則,這是指出關閉失敗原因的特定錯誤。如果傳回未成功的狀態,系統會取消關閉作業。