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)
|
تعريف الكتابةError(*
|
TimerCompleteFunct)(Layer *aLayer, void *aAppState, Error aError)
|
تعريف الكتابةvoid(*
|
وظائف عامة |
|
---|---|
AddEventHandlerDelegate(LwIPEventHandlerDelegate & aDelegate)
|
Error
يؤدي ذلك إلى إضافة تفويض معالِج حدث إلى طبقة النظام لتوسيع قدرته على معالجة أحداث LwIP.
|
CancelTimer(TimerCompleteFunct aOnComplete, void *aAppState)
|
void
تؤدي هذه الطريقة إلى إلغاء الموقّت بلقطة واحدة والذي بدأ في وقت سابق حتى
StartTimer() . |
DispatchEvent(Event aEvent)
|
Error
يؤدي هذا إلى إرسال الحدث المحدّد لمعالجته من خلال هذا المثيل.
|
DispatchEvents(void)
|
Error
وهذا برنامج تضميني حول عنصر جذب خاص بالنظام الأساسي يؤثر في حلقة حدث، وينتظر في قائمة انتظار تخدم هذا المثيل، ويسحب الأحداث من قائمة الانتظار، ثم يرسلها للتعامل معها.
|
GetPlatformData(void) const
|
void *
يعرض ذلك أي بيانات نظام أساسي خاص بالعميل تم تعيينها للمثيل، إذا تم تعيينها مسبقًا.
|
HandleEvent(Object & aTarget, EventType aEventType, uintptr_t aArgument)
|
Error
ويؤدي ذلك إلى تنفيذ عملية الإرسال والتعامل الفعليين لحدث طبقة نظام Weave.
|
HandlePlatformTimer(void)
|
Error
التعامل مع حدث انتهاء صلاحية موقّت النظام الأساسي
|
HandleSelectResult(int aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet)
|
void
التعامل مع وحدات الإدخال والإخراج من مكالمة محدّدة
|
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
قم بتنشيط سلسلة الإدخال/الإخراج التي تراقب واصفات الملفات باستخدام select() عن طريق كتابة بايت واحد في ممر التنشيط.
|
الدوال الثابتة العامة |
|
---|---|
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
لعرض الوقت الحقيقي (المدني) الحالي بتنسيق توقيت يونكس بالمللي ثانية.
|
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.
التفاصيل | |||||
---|---|---|---|---|---|
المعلمات |
|
||||
قيم الإرجاع |
|
CancelTimer
void CancelTimer( TimerCompleteFunct aOnComplete, void *aAppState )
تؤدي هذه الطريقة إلى إلغاء الموقّت بلقطة واحدة والذي بدأ في وقت سابق حتى StartTimer()
.
التفاصيل | |||||
---|---|---|---|---|---|
المعلمات |
|
DispatchEvent
Error DispatchEvent( Event aEvent )
يؤدي هذا إلى إرسال الحدث المحدّد لمعالجته من خلال هذا المثيل.
يتم التعامل مع إعادة تنظيم النوع والوسيطات من الحدث بواسطة عنصر جذب خاص بالنظام الأساسي من المفترض أن يستدعي Layer::HandleEvent للإرسال الفعلي.
التفاصيل | |||
---|---|---|---|
المعلمات |
|
||
المرتجعات |
WEAVE_SYSTEM_NO_ERROR في النجاح؛ وإلا، سيظهر خطأ محدد يشير إلى سبب إخفاق التهيئة.
|
DispatchEvents
Error DispatchEvents( void )
يشكّل هذا الالتفاف التفاف بنيوي حول عنصر جذب خاص بالنظام الأساسي يؤثر في حلقة حدث، وينتظر في صفّ يقدّم الخدمات لهذا الحدث، ويُسحب الأحداث من قائمة الانتظار ويرسلها لمعالجتها.
التفاصيل | |
---|---|
المرتجعات |
WEAVE_SYSTEM_NO_ERROR عند النجاح؛ وإلا، سيظهر خطأ محدد يشير إلى سبب إخفاق التهيئة.
|
GetPlatformData
void * GetPlatformData( void ) const
يعرض ذلك أي بيانات نظام أساسي خاص بالعميل تم تعيينها للمثيل، إذا تم تعيينها مسبقًا.
التفاصيل | |
---|---|
المرتجعات |
بيانات النظام الأساسي الخاصة بالعميل، إذا سبق تحديدها وإلا، وهو فارغ.
|
HandleEvent
Error HandleEvent( Object & aTarget, EventType aEventType, uintptr_t aArgument )
ويؤدي ذلك إلى تنفيذ عملية الإرسال والتعامل الفعليين لحدث طبقة نظام Weave.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المعلمات |
|
||||||
قيم الإرجاع |
|
HandlePlatformTimer
Error HandlePlatformTimer( void )
التعامل مع حدث انتهاء صلاحية موقّت النظام الأساسي
الاستدعاءات nl::Weave::System::Timer::HandleSensitiveTimers للتعامل مع أي موقّتات منتهية الصلاحية. ومن المفترض أنّ واجهة برمجة التطبيقات هذه لا يتم استدعاؤها إلا أثناء وجودها في سلسلة التعليمات التي تملك كائن طبقة نظام Weave.
التفاصيل | |
---|---|
المرتجعات |
WEAVE_SYSTEM_NO_ERROR في حالة النجاح، رمز الخطأ في الحالات الأخرى.
|
HandleSelectResult
void HandleSelectResult( int aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet )
التعامل مع وحدات الإدخال والإخراج من مكالمة محدّدة
تسجِّل هذه الطريقة حدث الإدخال/الإخراج المعلّق في كل نقطة نهاية نشطة، ثم تستدعي وظائف معالجة وحدات الإدخال والإخراج ذات الصلة لنقاط النهاية هذه.
التفاصيل | |||||||||
---|---|---|---|---|---|---|---|---|---|
المعلمات |
|
Init
Error Init( void *aContext )
طبقة
Layer( void )
NewTimer
Error NewTimer( Timer *& aTimerPtr )
PostEvent
Error PostEvent( Object & aTarget, EventType aEventType, uintptr_t aArgument )
يؤدي هذا إلى نشر حدث أو رسالة من النوع المحدّد مع الوسيطة المتوفرة في قائمة انتظار الأحداث الخاصة بالنظام الأساسي لهذا المثيل.
التفاصيل | |||||||||
---|---|---|---|---|---|---|---|---|---|
المعلمات |
|
||||||||
قيم الإرجاع |
|
PrepareSelect
void PrepareSelect( int & aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet, struct timeval & aSleepTime )
عليك إعداد مجموعات أدوات وصف الملفات لكي يتمكن select()
من استخدامها.
التفاصيل | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
المعلمات |
|
ScheduleWork
Error ScheduleWork( TimerCompleteFunct aComplete, void *aAppState )
تعمل على جدولة دالة ذات توقيع مطابق لـ TimerCompleteFunct
ليتم تشغيلها في أقرب وقت ممكن في سلسلة محادثات Weave.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المعلمات |
|
||||||
قيم الإرجاع |
|
SetPlatformData
void SetPlatformData( void *aPlatformData )
يؤدي ذلك إلى ضبط بيانات النظام الأساسي المحدّدة الخاصة بالعميل على المثيل لاستردادها لاحقًا بواسطة النظام الأساسي للعميل.
التفاصيل | |||
---|---|---|---|
المعلمات |
|
إيقاف التشغيل
Error Shutdown( void )
StartTimer
Error StartTimer( uint32_t aMilliseconds, TimerCompleteFunct aComplete, void *aAppState )
تؤدي هذه الطريقة إلى بدء موقّت بلقطة واحدة.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المعلمات |
|
||||||
المرتجعات |
WEAVE_SYSTEM_NO_ERROR بشأن النجاح.
|
||||||
المرتجعات |
WEAVE_SYSTEM_ERROR_NO_MEMORY إذا تعذر تخصيص مؤقت.
|
||||||
المرتجعات |
قيمة أخرى تشير إلى تعذّر بدء الموقّت.
|
الحالة
LayerState State( void ) const
يُرجع هذا الحالة الحالية لكائن الطبقة.
WakeSelect
void WakeSelect( void )
قم بتنشيط سلسلة الإدخال/الإخراج التي تراقب واصفات الملفات باستخدام select() عن طريق كتابة بايت واحد في ممر التنشيط.
ملاحظة:إذا تم استدعاء WakeSelect()
من داخل HandleSelectResult()
، يمكن تخطّي الكتابة في ممر التنشيط، لأنّ سلسلة وحدات الإدخال والإخراج نشطة حاليًا.
بالإضافة إلى ذلك، لا نهتم إذا فشلت عملية الكتابة هذه، لأن الفشل الوحيد المحتمل بشكل معقول هو امتلاء الممر، وفي هذه الحالة ستنبثق سلسلة الاتصال المحددة على أي حال.
الدوال الثابتة العامة
GetClock_Monotonic
uint64_t GetClock_Monotonic( void )
لعرض وقت نظام رتيب بوحدات الميكرو ثانية.
تعرض هذه الدالة الوقت المنقضي بالميكرو ثانية منذ بدء حقبة عشوائية تحدّدها النظام الأساسي. وتضمن القيمة التي يتم عرضها تزايدًا مستمرًا (أي عدم الالتفاف) بين عمليات إعادة تشغيل النظام. بالإضافة إلى ذلك، يمكن أن نضمن أن يتم وضع علامة متابعة في مصدر الوقت الأساسي أثناء أي أوضاع سكون للنظام لا تستلزم إعادة التشغيل عند التنشيط.
على الرغم من أنّ بعض الأنظمة الأساسية قد تختار عرض قيمة تقيس الوقت منذ تشغيل النظام، لا تعتمد التطبيقات على ذلك. إضافةً إلى ذلك، ليس من الضروري أن تكون فترة GetClock_Monotonic() هي نفسها الفترة في أيٍّ من دوال GetClock... الأخرى. لذلك، لا يمكن إجراء العمليات الحسابية للوقت النسبية إلا على القيم التي تم إرجاعها بواسطة نفس الدالة.
تضمن أنّ هذه الدالة آمنة على سلاسل المحادثات على أي نظام أساسي يتيح استخدام سلاسل المحادثات.
التفاصيل | |
---|---|
المرتجعات |
الوقت المنقضي بالميكرو ثانية منذ تاريخ عشوائي تحدّده المنصة
|
GetClock_MonotonicHiRes
uint64_t GetClock_MonotonicHiRes( void )
تعرض وقت نظام رتيب عالي الدقة (من المحتمل) بوحدات الميكرو ثانية.
تعرض هذه الدالة الوقت المنقضي بالميكرو ثانية منذ بدء حقبة عشوائية تحدّدها النظام الأساسي. وتضمن القيمة التي يتم عرضها تزايدًا مستمرًا (أي عدم الالتفاف) بين عمليات إعادة تشغيل النظام. ومع ذلك، ليس مطلوبًا وضع علامة في المربّع بجانب الموقّت الأساسي بشكل متواصل أثناء حالات سكون النظام العميق.
قد تنفّذ بعض الأنظمة الأساسية الإجراء GetClock_MonotonicHiRes() باستخدام موقّت عالي الدقة قادر على توفير دقة أكبر من GetClock_Monotonic()، ولا يخضع لتعديلات تدريجية في الساعة. قد تعرض الأنظمة التي لا تحتوي على مثل هذا الموقّت القيمة نفسها التي يعرضها GetClock_Monotonic().
لا يلزم أن تكون فترة الوقت التي يعرضها GetClock_MonotonicHiRes() هي نفسها الفترة الزمنية لأيٍّ من دوال GetClock... الأخرى، بما في ذلك GetClock_Monotonic().
تضمن أنّ هذه الدالة آمنة على سلاسل المحادثات على أي نظام أساسي يتيح استخدام سلاسل المحادثات.
التفاصيل | |
---|---|
المرتجعات |
الوقت المنقضي بالميكرو ثانية منذ تاريخ عشوائي تحدّده المنصة
|
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() غير متاحة، ما يؤدي إلى حدوث خطأ في الرابط لأي تطبيق يشير إليه. وبدلاً من ذلك، قد توفر هذه الأنظمة الأساسية تنفيذ GetClock_RealTime() الذي يعرض دائمًا الخطأ WEAVE_SYSTEM_ERROR_NOT_SUPPORTED.
تضمن أنّ هذه الدالة آمنة على سلاسل المحادثات على أي نظام أساسي يتيح استخدام سلاسل المحادثات.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المعلمات |
|
||||||
قيم الإرجاع |
|
GetClock_RealTimeMS
Error GetClock_RealTimeMS( uint64_t & curTimeMS )
لعرض الوقت الحقيقي (المدني) الحالي بتنسيق توقيت يونكس بالمللي ثانية.
تعرض هذه الطريقة مفهوم الوقت الفعلي الحالي للنظام الأساسي المحلي، ويتم التعبير عنه بقيمة وقت Unix مُقسَّمة إلى مللي ثانية. من المضمون أن يتم ضبط الساعة الأساسية بمعدّل لا يقل عن ثوانٍ كاملة (القيم 1,000,000)، ولكن قد تعمل بعض الأنظمة الأساسية بشكل أسرع.
إذا كان النظام الأساسي الأساسي قادرًا على التتبع في الوقت الفعلي، ولكن النظام غير متزامن حاليًا، ستعرض GetClock_RealTimeMS() الخطأ WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED.
على الأنظمة الأساسية التي لا يمكنها التتبّع في الوقت الفعلي، قد تكون طريقة GetClock_RealTimeMS() غير متاحة، ما يؤدي إلى حدوث خطأ في الرابط لأي تطبيق يشير إليه. وبدلاً من ذلك، قد توفِّر هذه الأنظمة الأساسية تنفيذًا للدالة GetClock_RealTimeMS() التي تعرض دائمًا الخطأ 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.
تضمن أنّ هذه الدالة آمنة على سلاسل المحادثات على أي نظام أساسي يتيح استخدام سلاسل المحادثات.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المعلمات |
|
||||||
قيم الإرجاع |
|