nl:: Weave:: النظام:: الطبقة
#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
التعامل مع مؤتمر I/O من مكالمة محددة
|
Init(void *aContext)
|
Error
|
NewTimer(Timer *& aTimerPtr)
|
Error
|
PostEvent(Object & aTarget, EventType aEventType, uintptr_t aArgument)
|
Error
يؤدي هذا إلى نشر حدث / رسالة من النوع المحدد مع الوسيطة المتوفرة إلى قائمة انتظار الأحداث الخاصة بهذا المثيل's.
|
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
تعرِض الوقت الفعلي (ال مدني) بتنسيق الوقت الذي يستغرقه ميلي ثانية يونكس.
|
SetClock_RealTime(uint64_t newCurTime)
|
Error
تضبط مفهوم النظام الأساسي، عن الوقت الحالي (المدني) الحالي.
|
الأنواع المتاحة للجميع
معالج الأحداث
Error(* EventHandler)(Object &aTarget, EventType aEventType, uintptr_t aArgument)
موقِّت الموقّت
void(* TimerCompleteFunct)(Layer *aLayer, void *aAppState, Error aError)
وظائف عامة
AddEventHandlerDelegate
Error AddEventHandlerDelegate( LwIPEventHandlerDelegate & aDelegate )
يؤدي هذا إلى إضافة تفويض معالج حدث إلى طبقة النظام لتوسيع قدرته على التعامل مع أحداث LwIP.
التفاصيل | |||||
---|---|---|---|---|---|
المعلَمات |
|
||||
قيم الإرجاع |
|
إلغاء الموقِّت
void CancelTimer( TimerCompleteFunct aOnComplete, void *aAppState )
تلغي هذه الطريقة موقّتًا بلقطة واحدة تم بدؤها قبل StartTimer()
.
التفاصيل | |||||
---|---|---|---|---|---|
المعلَمات |
|
الحدث المرسَل
Error DispatchEvent( Event aEvent )
يؤدي ذلك إلى إرسال الحدث المحدّد للمعالجة من خلال هذه النسخة الافتراضية.
تتم معالجة إلغاء تجزئة النوع والوسيطات من الحدث من خلال خطافات خاصة بالنظام الأساسي، والتي من المفترض أن تستدعي بعد ذلك Layer::HandleEvent للإرسال الفعلي.
التفاصيل | |||
---|---|---|---|
المعلَمات |
|
||
المرتجعات |
WEAVE_SYSTEM_NO_ERROR في حالة النجاح، وإلا حدث خطأ محدد يشير إلى سبب إخفاق الإعداد.
|
إرسال الأحداث
Error DispatchEvents( void )
هذه برامج تضمينية حول عنصر جذب محدد في النظام الأساسي، والتي تؤثر على تكرار الحدث، في انتظار قائمة انتظار تعالج هذه النسخة الافتراضية، وتسحب الأحداث من قائمة الانتظار هذه، ثم ترسلها وتعالجها.
التفاصيل | |
---|---|
المرتجعات |
WEAVE_SYSTEM_NO_ERROR في حالة النجاح، أو حدث خطأ محدد يشير إلى سبب إخفاق الإعداد.
|
الحصول على بيانات النظام الأساسي
void * GetPlatformData( void ) const
يؤدي هذا إلى عرض أي بيانات نظام أساسي خاصة بالعميل تم تحديدها للمثيل، إذا تم تحديدها من قبل.
التفاصيل | |
---|---|
المرتجعات |
بيانات النظام الأساسي الخاصة بالعميل، إذا تم تحديدها من قبل، أو NULL.
|
مقبض الحدث
Error HandleEvent( Object & aTarget, EventType aEventType, uintptr_t aArgument )
ويؤدي ذلك إلى تنفيذ الإرسال الفعلي ومعالجة حدث طبقة نظام Weave.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المعلَمات |
|
||||||
قيم الإرجاع |
|
مقبض مقبض
Error HandlePlatformTimer( void )
التعامل مع حدث انتهاء صلاحية موقّت النظام الأساسي
للاتصال بـ nl::Weave::System::Timer::HandleexpirationTimers لمعالجة أي موقّتات منتهية الصلاحية. من المفترض أن يتم استدعاء واجهة برمجة التطبيقات هذه فقط أثناء سلسلة المحادثات التي تمتلك كائن طبقة Weave System.
التفاصيل | |
---|---|
المرتجعات |
WEAVE_SYSTEM_NO_ERROR في حالة النجاح، ورمز الخطأ بخلاف ذلك.
|
نتيجة الحساب
void HandleSelectResult( int aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet )
التعامل مع مؤتمر I/O من مكالمة محددة
تُسجِّل هذه الطريقة حدث I/O في انتظار المراجعة في كل نقطة نهاية نشطة، ثم تستدعي دوال معالجة الإدخال/الإخراج ذات الصلة لنقاط النهاية هذه.
التفاصيل | |||||||||
---|---|---|---|---|---|---|---|---|---|
المعلَمات |
|
إنيت
Error Init( void *aContext )
طبقة
Layer( void )
موقّت جديد
Error NewTimer( Timer *& aTimerPtr )
ما بعد الفعالية
Error PostEvent( Object & aTarget, EventType aEventType, uintptr_t aArgument )
يؤدي هذا إلى نشر حدث / رسالة من النوع المحدد مع الوسيطة المتوفرة إلى قائمة انتظار الأحداث الخاصة بهذا المثيل's.
التفاصيل | |||||||||
---|---|---|---|---|---|---|---|---|---|
المعلَمات |
|
||||||||
قيم الإرجاع |
|
تحضير التحديد
void PrepareSelect( int & aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet, struct timeval & aSleepTime )
وعليك إعداد مجموعات أدوات وصف الملفات لتعمل select()
معها.
التفاصيل | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
المعلَمات |
|
الجدول الزمني للعمل
Error ScheduleWork( TimerCompleteFunct aComplete, void *aAppState )
يتم تحديد جدول زمني لدالة تحتوي على توقيع مطابق لـ TimerCompleteFunct
ليتم تشغيله في أقرب وقت ممكن على سلسلة Weave.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المعلَمات |
|
||||||
قيم الإرجاع |
|
بيانات النظام الأساسي
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
يؤدي هذا إلى عرض الحالة الحالية لكائن الطبقة.
الاستيقاظ أو الكتابة
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... الأخرى. لذلك، لا يمكن إجراء عمليات حسابية نسبية إلا على القيم التي تعرضها الدالة نفسها.
تم تأكيد أن هذه الوظيفة آمنة لسلسلة المحادثات على أي نظام أساسي يستخدم سلاسل المحادثات.
التفاصيل | |
---|---|
المرتجعات |
الوقت المنقضي بالمللي ثانية منذ حقبة عشوائية مُحدَّدة في النظام الأساسي.
|
الحصول على الوقت الفعلي
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.
تم تأكيد أن هذه الوظيفة آمنة لسلسلة المحادثات على أي نظام أساسي يستخدم سلاسل المحادثات.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المعلَمات |
|
||||||
قيم الإرجاع |
|
ضبط CClock_الوقت الفعلي
Error SetClock_RealTime( uint64_t newCurTime )
تضبط مفهوم النظام الأساسي، عن الوقت الحالي (المدني) الحالي.
يمكن أن تطلب التطبيقات هذه الدالة لضبط فكرة النظام الأساسي المحلي في الوقت الفعلي. يتم التعبير عن الوقت الحالي الجديد بقيمة وقت Unix بمقدار ميكرو ثانية.
وعند ضبط الإعداد، يمكن ضمان أن تتتبَّع ساعة المنصة الأساسية في الوقت الفعلي بدقة تبلغ على الأقل ثوانٍ كاملة.
وقد تُقيّد بعض الأنظمة الأساسية التطبيقات أو العمليات التي يمكنها ضبط الوقت الفعلي. إذا لم يُسمَح للمتصل بتغيير الوقت الفعلي، ستعرض دالة SetClock_ RealTime() الخطأ WEAVE_SYSTEM_ERROR_ACCESS_DENIED.
على الأنظمة الأساسية التي لا يمكنها تتبُّع الوقت الفعلي أو التي لا توفّر إمكانية ضبط الوقت الفعلي، قد تكون دالة SetClock_ RealTime() غير موجودة، ما يؤدي إلى خطأ في الرابط لأي تطبيق يشير إليها. وبدلاً من ذلك، قد توفّر هذه الأنظمة الأساسية تنفيذ SetClock_ RealTime() الذي يعرض دائمًا الخطأ WEAVE_SYSTEM_ERROR_NOT_SUPPORTED.
تم تأكيد أن هذه الوظيفة آمنة لسلسلة المحادثات على أي نظام أساسي يستخدم سلاسل المحادثات.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المعلَمات |
|
||||||
قيم الإرجاع |
|