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

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

GetClock_Monotonic(void)
uint64_t
แสดงผลเวลาของระบบโมโนโทนิกในหน่วยไมโครวินาที
GetClock_MonotonicHiRes(void)
uint64_t
แสดงผลเวลาระบบโมโนโทนิกความละเอียดสูง (อาจเป็น) ในหน่วยไมโครวินาที
GetClock_MonotonicMS(void)
uint64_t
แสดงผลเวลาระบบโมโนโทนิกในหน่วยมิลลิวินาที
GetClock_RealTime(uint64_t & curTime)
Error
แสดงผลเวลาจริง (civil) ปัจจุบันในรูปแบบเวลา 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
หากเคอร์เซอร์ฟังก์ชันที่อยู่ใน aDelegate มีค่าว่าง

CancelTimer

void CancelTimer(
  TimerCompleteFunct aOnComplete,
  void *aAppState
)

วิธีนี้จะยกเลิกตัวจับเวลาแบบครั้งเดียว โดยเริ่มตั้งแต่วันที่ StartTimer() เป็นต้นไป

รายละเอียด
พารามิเตอร์
[in] aOnComplete
ตัวชี้ไปยังฟังก์ชัน Callback ที่ใช้ในการเรียก 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
ตัวชี้ไปยังชุดข้อบ่งชี้ไฟล์ที่มีข้อผิดพลาด

Init

Error Init(
  void *aContext
)

เลเยอร์

 Layer(
  void
)

NewTimer

Error NewTimer(
  Timer *& aTimerPtr
)

PostEvent

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

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

รายละเอียด
พารามิเตอร์
[in,out] aTarget
ตัวชี้ไปยังออบเจ็กต์เลเยอร์ของระบบ Weave ที่กำลังสร้างคำขอโพสต์
[in] aEventType
ประเภทของกิจกรรมที่จะโพสต์
[in,out] aArgument
อาร์กิวเมนต์ที่เชื่อมโยงกับกิจกรรมที่จะโพสต์
ผลลัพธ์
WEAVE_SYSTEM_NO_ERROR
สำเร็จแล้ว
WEAVE_SYSTEM_ERROR_UNEXPECTED_STATE
หากสถานะของออบเจ็กต์เลเยอร์ไม่ถูกต้อง
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
ตัวชี้ไปยังฟังก์ชัน Callback ที่จะเรียกใช้เมื่อตัวจับเวลานี้เริ่มทํางาน
[in] aAppState
ตัวชี้ไปยังออบเจ็กต์สถานะแอปพลิเคชันที่จะส่งไปยังฟังก์ชัน Callback เป็นอาร์กิวเมนต์
ผลลัพธ์
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

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

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

GetClock_Monotonic

uint64_t GetClock_Monotonic(
  void
)

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

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

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

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

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

GetClock_MonotonicHiRes

uint64_t GetClock_MonotonicHiRes(
  void
)

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

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

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

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

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

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

GetClock_MonotonicMS

uint64_t GetClock_MonotonicMS(
  void
)

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

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

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

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

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

GetClock_RealTime

Error GetClock_RealTime(
  uint64_t & curTime
)

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