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)
|
typedefError(*
|
TimerCompleteFunct)(Layer *aLayer, void *aAppState, Error aError)
|
typedefvoid(*
|
الدوال العامة |
|
---|---|
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
استيقظ سلسلة I/O التي تراقب واصفات الملفات باستخدام 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
تعرض الوقت الحقيقي (المدني) الحالي بتنسيق وقت 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.
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
||||
قيم الإرجاع |
|
CancelTimer
void CancelTimer( TimerCompleteFunct aOnComplete, void *aAppState )
تؤدي هذه الطريقة إلى إلغاء موقّت الالتقاط مرة واحدة، الذي تم تشغيله في وقت سابق حتى StartTimer()
.
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
DispatchEvent
Error DispatchEvent( Event aEvent )
يؤدي هذا إلى إرسال الحدث المحدّد للمعالجة بواسطة هذا المثيل.
يتم التعامل مع إلغاء تنظيم النوع والوسيطات من الحدث من خلال عنصر جذب خاص بالنظام الأساسي والذي ينبغي أن يستدعي بعد ذلك الطبقة::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::HandleExpirationTimers للتعامل مع أي مؤقتات منتهية الصلاحية. من المفترض أنّه يتم استدعاء واجهة برمجة التطبيقات هذه فقط أثناء سلسلة التعليمات التي تملك كائن طبقة نظام Weave.
التفاصيل | |
---|---|
المرتجعات |
WEAVE_SYSTEM_NO_ERROR عند النجاح، أو قد يظهر رمز الخطأ في الحالات الأخرى.
|
HandleSelectResult
void HandleSelectResult( int aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet )
التعامل مع وحدات الإدخال والإخراج من مكالمة محدّدة
تُسجِّل هذه الطريقة حدث إدخال/إخراج معلّق في كل نقطة نهاية نشطة، ثم تستدعي وظائف معالجة وحدات الإدخال والإخراج ذات الصلة لنقاط النهاية هذه.
التفاصيل | |||||||||
---|---|---|---|---|---|---|---|---|---|
المَعلمات |
|
إنت
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 )
استيقظ سلسلة I/O التي تراقب واصفات الملفات باستخدام select() عن طريق كتابة بايت واحد إلى ممر التنشيط.
ملاحظة: في حال طلب الرقم WakeSelect()
من داخل HandleSelectResult()
، يمكن تخطّي الكتابة إلى مسار التنشيط، لأنّ سلسلة محادثات I/O نشطة حاليًا.
بالإضافة إلى ذلك، لا يهمنا إذا تعذّر إكمال عملية الكتابة هذه لأنّ الخطأ الوحيد المحتمل هو أنّ الممر ممتلئ، وفي هذه الحالة، سيتم تنشيط سلسلة التعليمات المحددة على أي حال.
الدوال الثابتة العامة
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 بالميكرو ثانية.
وتعرض هذه الطريقة مفهوم النظام الأساسي المحلي في الوقت الفعلي الحالي، معبرًا عنه بقيمة وقت نظام يونكس المحسوبة بالميكرو ثانية. من المضمون أن يتم ضبط الساعة الأساسية بمعدّل لا يقل عن ثوانٍ كاملة (بقيم 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 بالملي ثانية.
تُرجع هذه الطريقة مفهوم النظام الأساسي المحلي في الوقت الفعلي الحالي، معبرًا عنه بقيمة وقت نظام التشغيل 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.
تضمن هذه الميزة أن تكون آمنة على أي نظام أساسي يستخدم سلاسل المحادثات.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
قيم الإرجاع |
|