nl::Weave::System::Layer

#include <src/system/SystemLayer.h>

This provides access to timers according to the configured event handling model.

สรุป

สำหรับ WEAVE_SYSTEM_CONFIG_USE_SOCKETS การแจ้งเตือนความพร้อมของกิจกรรมจะจัดการผ่านการใช้แบบสำรวจ/การเลือกแบบดั้งเดิมในการปรับแพลตฟอร์ม

สำหรับ WEAVE_SYSTEM_CONFIG_USE_LWIP การแจ้งเตือนความพร้อมของกิจกรรมจะจัดการผ่านเหตุการณ์ / ข้อความ และฮุกเฉพาะแพลตฟอร์มและระบบสำหรับระบบเหตุการณ์/ข้อความ

ผู้ผลิตและผู้ทำลาย

Layer(void)

ประเภทสาธารณะ

EventHandler)(Object &aTarget, EventType aEventType, uintptr_t aArgument) typedef
Error(*
TimerCompleteFunct)(Layer *aLayer, void *aAppState, Error aError) typedef
void(*

ฟังก์ชันสาธารณะ

AddEventHandlerDelegate(LwIPEventHandlerDelegate & aDelegate)
Error
ซึ่งจะเป็นการเพิ่มการมอบสิทธิ์ตัวแฮนเดิลเหตุการณ์ไปยังเลเยอร์ระบบเพื่อขยายความสามารถในการจัดการเหตุการณ์ LwIP
CancelTimer(TimerCompleteFunct aOnComplete, void *aAppState)
void
วิธีนี้จะยกเลิกตัวจับเวลาแบบช็อตเดียวซึ่งเริ่มก่อนหน้านี้จนถึงวันที่ StartTimer()
DispatchEvent(Event aEvent)
Error
การดำเนินการนี้จะจ่ายเหตุการณ์ที่ระบุเพื่อให้จัดการโดยอินสแตนซ์นี้
DispatchEvents(void)
Error
นี่คือ Wrapper โครงสร้างของฮุกเฉพาะแพลตฟอร์มที่ส่งผลต่อลูปเหตุการณ์ โดยรอคิวที่บริการอินสแตนซ์นี้ โดยจะดึงเหตุการณ์ออกจากคิวดังกล่าว แล้วส่งเหตุการณ์เข้ารับการจัดการ
GetPlatformData(void) const
void *
การดำเนินการนี้จะแสดงผลข้อมูลแพลตฟอร์มเฉพาะไคลเอ็นต์ที่กำหนดให้กับอินสแตนซ์ หากมีการตั้งค่าไว้ก่อนหน้านี้
HandleEvent(Object & aTarget, EventType aEventType, uintptr_t aArgument)
Error
ซึ่งจะเป็นการนำการส่งและการจัดการเหตุการณ์ Layer ของระบบ Weave ไปใช้จริง
HandlePlatformTimer(void)
Error
จัดการเหตุการณ์การหมดอายุของตัวจับเวลาแพลตฟอร์ม
HandleSelectResult(int aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet)
void
จัดการ I/O จากการโทรที่เลือก
Init(void *aContext)
Error
NewTimer(Timer *& aTimerPtr)
Error
PostEvent(Object & aTarget, EventType aEventType, uintptr_t aArgument)
Error
การดำเนินการนี้จะโพสต์กิจกรรม / ข้อความของประเภทที่ระบุด้วยอาร์กิวเมนต์ที่ระบุไปยังคิวกิจกรรมเฉพาะแพลตฟอร์มของอินสแตนซ์นี้
PrepareSelect(int & aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet, struct timeval & aSleepTime)
void
เตรียมชุดตัวบ่งชี้ไฟล์เพื่อให้ select() ทำงานได้
ScheduleWork(TimerCompleteFunct aComplete, void *aAppState)
Error
กำหนดเวลาให้ฟังก์ชันที่มีลายเซ็นเหมือนกับ TimerCompleteFunct ให้ทำงานโดยเร็วที่สุดในเทรด Weave
SetPlatformData(void *aPlatformData)
void
การดำเนินการนี้จะตั้งค่าข้อมูลแพลตฟอร์มเฉพาะไคลเอ็นต์ที่ระบุเป็นอินสแตนซ์เพื่อดึงข้อมูลในภายหลังโดยแพลตฟอร์มไคลเอ็นต์
Shutdown(void)
Error
StartTimer(uint32_t aMilliseconds, TimerCompleteFunct aComplete, void *aAppState)
Error
วิธีนี้จะเริ่มจับเวลาแบบช็อตเดียว
State(void) const
LayerState
ซึ่งจะแสดงสถานะปัจจุบันของออบเจ็กต์เลเยอร์
WakeSelect(void)
void
ปลุกชุดข้อความ I/O ที่ตรวจสอบคำอธิบายไฟล์โดยใช้ select() โดยการเขียนไบต์เดียวลงใน Wake Pie

ฟังก์ชันแบบคงที่แบบสาธารณะ

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 ในหน่วยมิลลิวินาที
SetClock_RealTime(uint64_t newCurTime)
Error
กำหนดแนวคิดของแพลตฟอร์มเกี่ยวกับเวลาจริง (พลเมือง) ในปัจจุบัน

ประเภทสาธารณะ

EventHandler

Error(* EventHandler)(Object &aTarget, EventType aEventType, uintptr_t aArgument)

TimerCompleteFunct

void(* TimerCompleteFunct)(Layer *aLayer, void *aAppState, Error aError)

ฟังก์ชันสาธารณะ

AddEventHandlerDelegate

Error AddEventHandlerDelegate(
  LwIPEventHandlerDelegate & aDelegate
)

ซึ่งจะเป็นการเพิ่มการมอบสิทธิ์ตัวแฮนเดิลเหตุการณ์ไปยังเลเยอร์ระบบเพื่อขยายความสามารถในการจัดการเหตุการณ์ LwIP

รายละเอียด
พารามิเตอร์
[in] aDelegate
โครงสร้างการมอบสิทธิ์เครื่องจัดการเหตุการณ์ LwIP ที่ไม่ได้เริ่มต้น
แสดงผลค่า
WEAVE_SYSTEM_NO_ERROR
ความสำเร็จ
WEAVE_SYSTEM_ERROR_BAD_ARGS
หากตัวชี้ฟังก์ชันที่มีอยู่ในการมอบสิทธิ์เป็นค่า NULL

CancelTimer

void CancelTimer(
  TimerCompleteFunct aOnComplete,
  void *aAppState
)

วิธีนี้จะยกเลิกตัวจับเวลาแบบช็อตเดียวซึ่งเริ่มก่อนหน้านี้จนถึงวันที่ StartTimer()

รายละเอียด
พารามิเตอร์
[in] aOnComplete
ตัวชี้ไปยังฟังก์ชันเรียกกลับที่ใช้ในการเรียก StartTimer()
[in] aAppState
ตัวชี้ไปยังออบเจ็กต์สถานะแอปพลิเคชันที่ใช้ในการเรียกใช้ StartTimer()

DispatchEvent

Error DispatchEvent(
  Event aEvent
)

การดำเนินการนี้จะจ่ายเหตุการณ์ที่ระบุเพื่อให้จัดการโดยอินสแตนซ์นี้

การเลิกแบ่งประเภทและอาร์กิวเมนต์จากเหตุการณ์จะได้รับการจัดการโดย hook เฉพาะแพลตฟอร์ม ซึ่งจากนั้นจะเรียกกลับไปที่ Layer::HandleEvent สำหรับการส่งจริง

รายละเอียด
พารามิเตอร์
[in] aEvent
ออบเจ็กต์เหตุการณ์เฉพาะแพลตฟอร์มที่จะส่งไปจัดการ
การส่งคืน
WEAVE_SYSTEM_NO_ERROR อาจเป็นข้อผิดพลาดที่ระบุสาเหตุของความล้มเหลวในการเริ่มต้น

DispatchEvents

Error DispatchEvents(
  void
)

นี่คือ Wrapper โครงสร้างของฮุกเฉพาะแพลตฟอร์มที่ส่งผลต่อลูปเหตุการณ์ โดยรอคิวที่บริการอินสแตนซ์นี้ โดยจะดึงเหตุการณ์ออกจากคิวดังกล่าว แล้วส่งเหตุการณ์เข้ารับการจัดการ

รายละเอียด
การส่งคืน
WEAVE_SYSTEM_NO_ERROR เมื่อเริ่มต้นสำเร็จ หรือมีข้อผิดพลาดที่เฉพาะเจาะจงที่ระบุสาเหตุของความล้มเหลวในการเริ่มต้น

GetPlatformData

void * GetPlatformData(
  void
) const 

การดำเนินการนี้จะแสดงผลข้อมูลแพลตฟอร์มเฉพาะไคลเอ็นต์ที่กำหนดให้กับอินสแตนซ์ หากมีการตั้งค่าไว้ก่อนหน้านี้

รายละเอียด
การส่งคืน
ข้อมูลแพลตฟอร์มเฉพาะไคลเอ็นต์ (หากมี) ที่กำหนดไว้ก่อนหน้า มิเช่นนั้น จะเป็น NULL

HandleEvent

Error HandleEvent(
  Object & aTarget,
  EventType aEventType,
  uintptr_t aArgument
)

ซึ่งจะเป็นการนำการส่งและการจัดการเหตุการณ์ Layer ของระบบ Weave ไปใช้จริง

รายละเอียด
พารามิเตอร์
[in,out] aTarget
การอ้างอิงไปยังออบเจ็กต์เลเยอร์ที่กำหนดเหตุการณ์เป็นเป้าหมาย
[in] aEventType
เหตุการณ์ / ประเภทข้อความที่จะจัดการ
[in] aArgument
อาร์กิวเมนต์ที่เชื่อมโยงกับเหตุการณ์ / ข้อความ
แสดงผลค่า
WEAVE_SYSTEM_NO_ERROR
ความสำเร็จ
WEAVE_SYSTEM_ERROR_UNEXPECTED_STATE
หากสถานะของออบเจ็กต์ InetLayer ไม่ถูกต้อง
WEAVE_SYSTEM_ERROR_UNEXPECTED_EVENT
หากไม่รู้จักประเภทเหตุการณ์

HandlePlatformTimer

Error HandlePlatformTimer(
  void
)

จัดการเหตุการณ์การหมดอายุของตัวจับเวลาแพลตฟอร์ม

เรียกใช้ nl::Weave::System::Timer::HandleExpirationTimers เพื่อจัดการกับตัวจับเวลาที่หมดอายุ โดยมีสมมติฐานว่ามีการเรียก API นี้เฉพาะในชุดข้อความที่เป็นเจ้าของออบเจ็กต์ Layer ของระบบ Weave เท่านั้น

รายละเอียด
การส่งคืน
WEAVE_SYSTEM_NO_ERROR อาจเป็นข้อผิดพลาดหากไม่เป็นเช่นนั้น

HandleSelectResult

void HandleSelectResult(
  int aSetSize,
  fd_set *aReadSet,
  fd_set *aWriteSet,
  fd_set *aExceptionSet
)

จัดการ I/O จากการโทรที่เลือก

วิธีนี้จะบันทึกเหตุการณ์ I/O ที่รอดำเนินการในปลายทางแต่ละรายการที่ใช้งานอยู่ จากนั้นเรียกใช้ฟังก์ชันการจัดการ I/O ที่เกี่ยวข้องสำหรับปลายทางเหล่านั้น

รายละเอียด
พารามิเตอร์
[in] aSetSize
ค่าที่ส่งคืนของการโทรที่เลือก
[in] aReadSet
ตัวชี้ไปยังชุดคำอธิบายไฟล์แบบอ่าน
[in] aWriteSet
ตัวชี้ไปยังชุดของตัวอธิบายไฟล์การเขียน
[in] aExceptionSet
ตัวชี้ไปยังชุดของตัวบอกไฟล์ที่มีข้อผิดพลาด

เริ่มต้น

Error Init(
  void *aContext
)

เลเยอร์

 Layer(
  void
)

NewTimer

Error NewTimer(
  Timer *& aTimerPtr
)

PostEvent

Error PostEvent(
  Object & aTarget,
  EventType aEventType,
  uintptr_t aArgument
)

การดำเนินการนี้จะโพสต์กิจกรรม / ข้อความของประเภทที่ระบุด้วยอาร์กิวเมนต์ที่ระบุไปยังคิวกิจกรรมเฉพาะแพลตฟอร์มของอินสแตนซ์นี้

รายละเอียด
พารามิเตอร์
[in,out] aTarget
ตัวชี้ไปยังออบเจ็กต์ Layer ของระบบ Weave ที่สร้างคำขอโพสต์
[in] aEventType
ประเภทของกิจกรรมที่จะโพสต์
[in,out] aArgument
อาร์กิวเมนต์ที่เชื่อมโยงกับกิจกรรมที่จะโพสต์
แสดงผลค่า
WEAVE_SYSTEM_NO_ERROR
ความสำเร็จ
WEAVE_SYSTEM_ERROR_UNEXPECTED_STATE
หากสถานะของออบเจ็กต์ Layer ไม่ถูกต้อง
WEAVE_SYSTEM_ERROR_NO_MEMORY
หากคิวกิจกรรมเต็มแล้ว
other
ข้อผิดพลาดเฉพาะแพลตฟอร์มที่สร้างขึ้นเพื่อระบุสาเหตุของความล้มเหลว

PrepareSelect

void PrepareSelect(
  int & aSetSize,
  fd_set *aReadSet,
  fd_set *aWriteSet,
  fd_set *aExceptionSet,
  struct timeval & aSleepTime
)

เตรียมชุดตัวบ่งชี้ไฟล์เพื่อให้ select() ทำงานได้

รายละเอียด
พารามิเตอร์
[out] aSetSize
ช่วงของตัวบอกไฟล์ในชุดตัวบอกไฟล์
[in] aReadSet
ตัวชี้ไปยังชุดข้อบ่งชี้ไฟล์ที่อ่านได้
[in] aWriteSet
ตัวชี้ไปยังชุดคำอธิบายไฟล์ที่เขียนได้
[in] aExceptionSet
ตัวชี้ไปยังชุดของตัวบอกไฟล์ที่มีข้อผิดพลาด
[in] aSleepTime
การอ้างอิงเวลานอนสูงสุด

ScheduleWork

Error ScheduleWork(
  TimerCompleteFunct aComplete,
  void *aAppState
)

กำหนดเวลาให้ฟังก์ชันที่มีลายเซ็นเหมือนกับ TimerCompleteFunct ให้ทำงานโดยเร็วที่สุดในเทรด Weave

รายละเอียด
พารามิเตอร์
[in] aComplete
ตัวชี้ไปยังฟังก์ชันเรียกกลับที่จะเรียกใช้เมื่อตัวจับเวลานี้เริ่มทำงาน
[in] aAppState
ตัวชี้ไปยังออบเจ็กต์สถานะของแอปพลิเคชันที่จะส่งไปที่ฟังก์ชันเรียกกลับเป็นอาร์กิวเมนต์
แสดงผลค่า
WEAVE_SYSTEM_ERROR_UNEXPECTED_STATE
หาก SystemLayer ยังไม่ได้เริ่มต้น
WEAVE_SYSTEM_ERROR_NO_MEMORY
หาก SystemLayer จัดสรรตัวจับเวลาใหม่ไม่ได้
WEAVE_SYSTEM_NO_ERROR
ความสำเร็จ

SetPlatformData

void SetPlatformData(
  void *aPlatformData
)

การดำเนินการนี้จะตั้งค่าข้อมูลแพลตฟอร์มเฉพาะไคลเอ็นต์ที่ระบุเป็นอินสแตนซ์เพื่อดึงข้อมูลในภายหลังโดยแพลตฟอร์มไคลเอ็นต์

รายละเอียด
พารามิเตอร์
[in] aPlatformData
ข้อมูลแพลตฟอร์มเฉพาะไคลเอ็นต์ที่จะตั้งค่า

ปิดการทำงาน

Error Shutdown(
  void
)

StartTimer

Error StartTimer(
  uint32_t aMilliseconds,
  TimerCompleteFunct aComplete,
  void *aAppState
)

วิธีนี้จะเริ่มจับเวลาแบบช็อตเดียว

รายละเอียด
พารามิเตอร์
[in] aMilliseconds
เวลาหมดอายุเป็นมิลลิวินาที
[in] aComplete
ตัวชี้ไปยังฟังก์ชันที่เรียกใช้เมื่อตัวจับเวลาหมดอายุ
[in] aAppState
ตัวชี้ไปยังออบเจ็กต์สถานะแอปพลิเคชันที่ใช้เมื่อตัวจับเวลาหมดอายุ
การส่งคืน
WEAVE_SYSTEM_NO_ERROR ที่สำเร็จ
การส่งคืน
WEAVE_SYSTEM_ERROR_NO_MEMORY หากไม่สามารถจัดสรรตัวจับเวลาได้
การส่งคืน
ค่าอื่นๆ ที่ระบุตัวจับเวลาไม่สามารถเริ่มได้

รัฐ

LayerState State(
  void
) const 

ซึ่งจะแสดงสถานะปัจจุบันของออบเจ็กต์เลเยอร์

WakeSelect

void WakeSelect(
  void
)

ปลุกชุดข้อความ I/O ที่ตรวจสอบคำอธิบายไฟล์โดยใช้ select() โดยการเขียนไบต์เดียวลงใน Wake Pie

หมายเหตุ: หากมีการเรียก WakeSelect() จากภายใน HandleSelectResult() คุณจะข้ามการเขียนไปยัง Wake pipe ได้ เนื่องจากเทรด I/O เริ่มทำงานแล้ว นอกจากนี้ เราไม่สนใจว่าการเขียนนี้จะไม่สำเร็จหรือไม่ เนื่องจากเป็นไปได้อย่างยิ่งที่จะดำเนินการไม่สำเร็จเพราะไปป์ไลน์เต็มแล้ว ซึ่งในกรณีนี้ชุดข้อความการเรียกใช้ที่เลือกจะทำงานอยู่ต่อไป

ฟังก์ชันแบบคงที่แบบสาธารณะ

GetClock_Monotonic

uint64_t GetClock_Monotonic(
  void
)

จะแสดงผลเวลาของระบบโมโนโทนิคเป็นหน่วยไมโครวินาที

ฟังก์ชันนี้จะแสดงผลเวลาที่ผ่านไปในหน่วยไมโครวินาทีตั้งแต่ Epoch ที่กำหนดเองตามแพลตฟอร์ม ระบบรับประกันได้ว่าค่าที่ส่งคืนจะมีค่าเพิ่มขึ้นตลอดเวลา (กล่าวคือ ไม่ตัดคำขึ้นบรรทัดใหม่) ระหว่างการรีบูตระบบ นอกจากนี้ ระบบรับประกันแหล่งที่มาของเวลาที่อยู่เบื้องหลังจะทำเครื่องหมายอย่างต่อเนื่องในโหมดสลีปของระบบใดๆ ที่ไม่ได้มีการรีสตาร์ทเมื่อปลุกระบบ

แม้ว่าบางแพลตฟอร์มอาจเลือกแสดงผลค่าที่วัดระยะเวลานับตั้งแต่เปิดเครื่องระบบ แต่แอปพลิเคชันต้องไม่อาศัยข้อมูลนี้ นอกจากนี้ Epoch ของ GetClock_Monotonic() ยังไม่จำเป็นต้องเหมือนกันกับฟังก์ชัน GetClock อื่นๆ... ดังนั้นการคํานวณเวลาสัมพัทธ์จะดําเนินการกับค่าที่แสดงผลโดยฟังก์ชันเดียวกันเท่านั้น

ฟังก์ชันนี้รับประกันได้ว่าเทรดจะปลอดภัยบนแพลตฟอร์มทุกแพลตฟอร์มที่ใช้การแยกชุดข้อความ

รายละเอียด
การส่งคืน
เวลาที่ผ่านไปในหน่วยไมโครวินาทีตั้งแต่ Epoch ที่กำหนดเองตามแพลตฟอร์ม

GetClock_MonotonicHiRes

uint64_t GetClock_MonotonicHiRes(
  void
)

จะแสดงผลเวลาของระบบโมโนโทนิกความละเอียดสูง (อาจ) เป็นหน่วยไมโครวินาที

ฟังก์ชันนี้จะแสดงผลเวลาที่ผ่านไปในหน่วยไมโครวินาทีตั้งแต่ Epoch ที่กำหนดเองตามแพลตฟอร์ม ระบบรับประกันได้ว่าค่าที่ส่งคืนจะมีค่าเพิ่มขึ้นตลอดเวลา (กล่าวคือ ไม่ตัดคำขึ้นบรรทัดใหม่) ระหว่างการรีบูตระบบ แต่ไม่จำเป็นต้องใช้ตัวจับเวลาที่อยู่เบื้องหลังเพื่อทำเครื่องหมายอย่างต่อเนื่องในช่วงสถานะหลับลึกของระบบ

บางแพลตฟอร์มอาจใช้ GetClock_MonotonicHiRes() โดยใช้ตัวจับเวลาความละเอียดสูงที่แม่นยํากว่า GetClock_Monotonic() และไม่ได้มีการปรับนาฬิกาทีละน้อย (ช้าลง) ระบบที่ไม่มีตัวจับเวลาดังกล่าวอาจส่งคืนค่าเดียวกับ GetClock_Monotonic()

Epoch สำหรับเวลาที่แสดงผลโดย GetClock_MonotonicHiRes() ไม่จำเป็นต้องเหมือนกับสำหรับฟังก์ชัน GetClock อื่นๆ รวมถึง GetClock_Monotonic()

ฟังก์ชันนี้รับประกันได้ว่าเทรดจะปลอดภัยบนแพลตฟอร์มทุกแพลตฟอร์มที่ใช้การแยกชุดข้อความ

รายละเอียด
การส่งคืน
เวลาที่ผ่านไปในหน่วยไมโครวินาทีตั้งแต่ Epoch ที่กำหนดเองตามแพลตฟอร์ม

GetClock_MonotonicMS

uint64_t GetClock_MonotonicMS(
  void
)

จะแสดงผลเวลาของระบบแบบโมโนโทนิกในหน่วยมิลลิวินาที

ฟังก์ชันนี้แสดงผลเวลาที่ผ่านไปในหน่วยมิลลิวินาที เนื่องจาก Epoch ที่กำหนดเองตามแพลตฟอร์ม ระบบรับประกันได้ว่าค่าที่ส่งคืนจะมีค่าเพิ่มขึ้นตลอดเวลา (กล่าวคือ ไม่ตัดคำขึ้นบรรทัดใหม่) ระหว่างการรีบูตระบบ นอกจากนี้ ระบบรับประกันแหล่งที่มาของเวลาที่อยู่เบื้องหลังจะทำเครื่องหมายอย่างต่อเนื่องในโหมดสลีปของระบบใดๆ ที่ไม่ได้มีการรีสตาร์ทเมื่อปลุกระบบ

แม้ว่าบางแพลตฟอร์มอาจเลือกแสดงผลค่าที่วัดระยะเวลานับตั้งแต่เปิดเครื่องระบบ แต่แอปพลิเคชันต้องไม่อาศัยข้อมูลนี้ นอกจากนี้ Epoch ของ GetClock_Monotonic() ยังไม่จำเป็นต้องเหมือนกันกับฟังก์ชัน GetClock อื่นๆ... ดังนั้นการคํานวณเวลาสัมพัทธ์จะดําเนินการกับค่าที่แสดงผลโดยฟังก์ชันเดียวกันเท่านั้น

ฟังก์ชันนี้รับประกันได้ว่าเทรดจะปลอดภัยบนแพลตฟอร์มทุกแพลตฟอร์มที่ใช้การแยกชุดข้อความ

รายละเอียด
การส่งคืน
เวลาที่ผ่านไปในหน่วยมิลลิวินาทีตั้งแต่ Epoch ที่แพลตฟอร์มกำหนดตามอำเภอใจ

GetClock_RealTime

Error GetClock_RealTime(
  uint64_t & curTime
)

แสดงผลเวลาจริง (พลเมือง) ปัจจุบันในรูปแบบเวลา Unix แบบไมโครวินาที

เมธอดนี้จะแสดงผลค่าเรียลไทม์ปัจจุบันของแพลตฟอร์มท้องถิ่น โดยแสดงเป็นค่าเวลาของ Unix ที่ปรับขนาดเป็นไมโครวินาที ระบบรับประกันได้ว่านาฬิกาจะทำงานที่อัตราอย่างน้อย 1 วินาทีเป็นอย่างน้อย (ค่า 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 ที่ปรับขนาดเป็นมิลลิวินาที ระบบรับประกันได้ว่านาฬิกาจะทำงานที่อัตราอย่างน้อย 1 วินาทีเป็นอย่างน้อย (ค่า 1,000,000) แต่ในบางแพลตฟอร์มอาจเลือกเร็วกว่า

หากแพลตฟอร์มเบื้องหลังสามารถติดตามแบบเรียลไทม์ได้ แต่ขณะนี้ระบบไม่ซิงค์แล้ว GetClock_RealTimeMS() จะแสดงผลข้อผิดพลาด WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED

ส่วนในแพลตฟอร์มที่สามารถติดตามแบบเรียลไทม์ไม่ได้ อาจไม่มีเมธอด GetClock_RealTimeMS() ซึ่งทำให้เกิดข้อผิดพลาดเกี่ยวกับลิงก์ของแอปพลิเคชันที่อ้างอิง หรือแพลตฟอร์มดังกล่าวอาจมีการติดตั้งใช้งาน GetClock_RealTimeMS() ที่แสดงข้อผิดพลาด WEAVE_SYSTEM_ERROR_NOT_SUPPORTED เสมอ

ฟังก์ชันนี้รับประกันได้ว่าเทรดจะปลอดภัยบนแพลตฟอร์มทุกแพลตฟอร์มที่ใช้การแยกชุดข้อความ

รายละเอียด
พารามิเตอร์
[out] curTime
เวลาปัจจุบันซึ่งแสดงเป็นเวลา Unix ที่ปรับขนาดเป็นมิลลิวินาที
แสดงผลค่า
WEAVE_SYSTEM_NO_ERROR
วิธีการนี้สำเร็จหรือไม่
#WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED
แพลตฟอร์มนั้นสามารถติดตามแบบเรียลไทม์ได้ แต่ยังไม่มีการซิงค์ในขณะนี้
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
หากแพลตฟอร์มติดตามแบบเรียลไทม์ไม่ได้

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
หากแอปพลิเคชันการโทรไม่มีสิทธิ์ตั้งเวลาปัจจุบัน