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 系統圖層 ::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
傳遞至圖層初始化方法的平台專屬內容資料,::關機。
[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 System 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 System Layer 物件狀態是否為非預期的狀態。
#WEAVE_SYSTEM_ERROR_UNEXPECTED_EVENT
如果事件類型無法辨識。
WEAVE_SYSTEM_NO_ERROR
成功時。

GetClock_Monotonic

uint64_t GetClock_Monotonic(
  void
)

平台特定功能,用於取得單調系統時間 (以微秒為單位)。

由於任意、平台定義的 Epoch,此函式預期會傳回經過時間 (以微秒為單位)。平台實作必須傳回會在系統重新啟動之間不斷遞增 (即從未換行) 的值。此外,如有任何系統睡眠模式 (不會在醒來後重新啟動) ,基礎時間來源就必須持續保持不變。

其他 GetClock... 函式 (包括 GetClock_MonotonicMS()) 時,此函式所傳回時間的週期不必相同。

在採用執行緒的任何平台上,此函式應該符合執行緒安全規定。

詳細資料
傳回
從平台定義任意訓練週期以來經過的時間 (以微秒為單位)。

GetClock_MonotonicHiRes

uint64_t GetClock_MonotonicHiRes(
  void
)

這個平台專屬功能,可以以微秒為單位取得高解析度單調系統時間。

由於任意、平台定義的 Epoch,此函式預期會傳回經過時間 (以微秒為單位)。GetClock_MonotonicHiRes() 傳回的值必須不斷增加 (即一律不會換行)。不過,系統「不需要」在系統處於熟睡狀態時持續遵守基礎計時器。

我們鼓勵平台使用高解析度計時器實作 GetClock_MonotonicHiRes(),而且不會逐步調整時鐘 (彈跳)。在沒有這類計時器的平台上,GetClock_MonotonicHiRes() 會傳回與 GetClock_Monotonic() 相同的值。

此函式傳回的時間週期不需要與其他 GetClock... 函式一樣。

在採用執行緒的任何平台上,此函式應該符合執行緒安全規定。

詳細資料
傳回
從平台定義任意訓練週期以來經過的時間 (以微秒為單位)。

GetClock_MonotonicMS

uint64_t GetClock_MonotonicMS(
  void
)

平台特定函式,用於取得單調系統時間 (以毫秒為單位)。

此函式預期會傳回由平台定義的任意訓練週期所經過的時間 (以毫秒為單位)。平台實作必須傳回會在系統重新啟動之間不斷遞增 (即從未換行) 的值。此外,如有任何系統睡眠模式 (不會在醒來後重新啟動) ,基礎時間來源就必須持續保持不變。

其他 GetClock... 函式 (包括 GetClock_Monotonic()) 在內,此函式傳回的時間週期不必相同。

在採用執行緒的任何平台上,此函式應該符合執行緒安全規定。

詳細資料
傳回
從任意平台定義週期以來經過的時間 (以毫秒為單位)。

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
指向提出 post 要求的 Weave System Layer 物件。
[in] aType
要發布的活動類型。
[in,out] anArg
與要發布事件相關聯的引數。
傳回
WEAVE_SYSTEM_NO_ERROR 成功;否則會顯示特定錯誤,指出初始化失敗的原因。

SetClock_RealTime

Error SetClock_RealTime(
  uint64_t newCurTime
)

用於設定目前實際 (民用) 時間的平台專用函式。

我們呼叫這個函式,設定當地平台的目前即時觀念。新的目前時間會以 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 系統預初始化掛鉤。

如果宣告預先處理器定義 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
傳遞至圖層初始化方法的平台專屬內容資料,::關機。
傳回
WEAVE_SYSTEM_NO_ERROR 成功;否則會顯示特定錯誤,指出關閉失敗的原因。傳回未成功的狀態將會取消關閉。