nl:: بافت:: سیستم:: لایه
#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 این یک رویداد / پیام از نوع مشخص شده با آرگومان ارائه شده در صف رویداد ویژه پلتفرم این نمونه پست می کند. |
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 زمان واقعی (مدنی) فعلی را در قالب زمان یونیکس میکروثانیه برمی گرداند. |
GetClock_RealTimeMS (uint64_t & curTimeMS) | Error زمان واقعی (مدنی) فعلی را در قالب زمان یونیکس میلی ثانیه ای برمی گرداند. |
SetClock_RealTime (uint64_t newCurTime) | Error مفهوم پلتفرم از زمان واقعی (مدنی) فعلی را تنظیم می کند. |
انواع عمومی
رویداد Handler
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
این هر گونه داده پلتفرم خاص مشتری را که به نمونه اختصاص داده شده است، برمی گرداند، اگر قبلا تنظیم شده باشد.
جزئیات | |
---|---|
برمی گرداند | دادههای پلتفرم خاص مشتری، اگر قبلاً تنظیم شده باشد. در غیر این صورت، NULL. |
HandleEvent
Error HandleEvent( Object & aTarget, EventType aEventType, uintptr_t aArgument )
این امر اعزام و مدیریت یک رویداد لایه سیستم Weave را پیاده سازی می کند.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
پارامترها |
| ||||||
ارزش های بازگشتی |
|
HandlePlatformTimer
Error HandlePlatformTimer( void )
رویداد انقضای تایمر پلت فرم را مدیریت کنید.
nl::Weave::System::Timer::HandleExpiredTimers را برای رسیدگی به تایمرهای منقضی شده فراخوانی می کند. فرض بر این است که این API فقط در زمانی که روی رشته ای است که دارای شی لایه Weave System است فراخوانی می شود.
جزئیات | |
---|---|
برمی گرداند | WEAVE_SYSTEM_NO_ERROR در مورد موفقیت، کد خطا در غیر این صورت. |
HandleSelectResult
void HandleSelectResult( int aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet )
I/O را از یک تماس انتخابی کنترل کنید.
این روش رویداد ورودی/خروجی معلق را در هر نقطه پایانی فعال ثبت میکند و سپس توابع مدیریت ورودی/خروجی مربوطه را برای آن نقاط پایانی فراخوانی میکند.
جزئیات | |||||||||
---|---|---|---|---|---|---|---|---|---|
پارامترها |
|
شروع کنید
Error Init( void *aContext )
لایه
Layer( void )
نیوتایمر
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()
فراخوانی شود، می توان از نوشتن در wake pipe صرفنظر کرد، زیرا رشته ورودی/خروجی از قبل بیدار است. علاوه بر این، برای ما مهم نیست که این نوشتن با شکست مواجه شود، زیرا تنها شکست احتمالی معقول این است که لوله پر است، در این صورت رشته فراخوان انتخاب شده به هر حال بیدار می شود.
توابع استاتیک عمومی
GetClock_Monotonic
uint64_t GetClock_Monotonic( void )
زمان سیستم یکنواخت را بر حسب واحد میکروثانیه برمیگرداند.
این تابع زمان سپری شده را در میکروثانیه از یک دوره دلخواه و تعریف شده توسط پلت فرم برمی گرداند. مقدار بازگشتی تضمین شده است که بین راهاندازی مجدد سیستم همیشه در حال افزایش است (یعنی هرگز بسته نمیشود). علاوه بر این، منبع زمانی زیربنایی تضمین میشود که در هر حالت خواب سیستم که مستلزم راهاندازی مجدد پس از بیداری نیست، بهطور مداوم علامت بزند.
اگرچه برخی از پلتفرمها ممکن است مقداری را برگردانند که زمان از زمان راهاندازی سیستم را اندازهگیری میکند، برنامهها نباید به این متکی باشند. بعلاوه، لازم نیست که دوره ()GetClock_Monotonic مانند آن برای سایر توابع GetClock... باشد. بنابراین محاسبات زمان نسبی را فقط می توان بر روی مقادیر بازگردانده شده توسط همان تابع انجام داد.
این عملکرد در هر پلتفرمی که از threading استفاده میکند تضمین شده است که از نظر نخ ایمن است.
جزئیات | |
---|---|
برمی گرداند | زمان سپری شده در میکروثانیه از یک دوره دلخواه و مبتنی بر پلت فرم. |
GetClock_MonotonicHiRes
uint64_t GetClock_MonotonicHiRes( void )
زمان سیستم یکنواخت (بالقوه) با وضوح بالا را در واحد میکروثانیه برمیگرداند.
این تابع زمان سپری شده را در میکروثانیه از یک دوره دلخواه و تعریف شده توسط پلت فرم برمی گرداند. مقدار بازگشتی تضمین شده است که بین راهاندازی مجدد سیستم همیشه در حال افزایش است (یعنی هرگز بسته نمیشود). با این حال، تایمر زیربنایی نیازی به تیک زدن مداوم در حالت خواب عمیق سیستم ندارد .
برخی از پلتفرمها ممکن است GetClock_MonotonicHiRes() را با استفاده از یک تایمر با وضوح بالا که قادر به دقت بیشتری نسبت به GetClock_Monotonic() است، پیادهسازی کنند و این موضوع مشمول تنظیمات تدریجی ساعت (چرخش) نیست. سیستم های بدون چنین تایمر ممکن است به سادگی همان مقدار GetClock_Monotonic () را برگردانند.
لازم نیست دوره زمانی که توسط GetClock_MonotonicHiRes() برگردانده می شود، مانند سایر توابع GetClock... از جمله GetClock_Monotonic() باشد.
این عملکرد در هر پلتفرمی که از threading استفاده میکند تضمین شده است که از نظر نخ ایمن است.
جزئیات | |
---|---|
برمی گرداند | زمان سپری شده در میکروثانیه از یک دوره دلخواه و مبتنی بر پلت فرم. |
GetClock_MonotonicMS
uint64_t GetClock_MonotonicMS( void )
زمان سیستم یکنواخت را در واحد میلی ثانیه برمی گرداند.
این تابع زمان سپری شده را از یک دوره دلخواه و تعریف شده توسط پلت فرم بر حسب میلی ثانیه برمی گرداند. مقدار بازگشتی تضمین شده است که بین راهاندازی مجدد سیستم همیشه در حال افزایش است (یعنی هرگز بسته نمیشود). علاوه بر این، منبع زمانی زیربنایی تضمین میشود که در هر حالت خواب سیستم که مستلزم راهاندازی مجدد پس از بیداری نیست، بهطور مداوم علامت بزند.
اگرچه برخی از پلتفرمها ممکن است مقداری را برگردانند که زمان از زمان راهاندازی سیستم را اندازهگیری میکند، برنامهها نباید به این متکی باشند. بعلاوه، لازم نیست که دوره ()GetClock_Monotonic مانند آن برای سایر توابع GetClock... باشد. بنابراین محاسبات زمان نسبی را فقط می توان بر روی مقادیر بازگردانده شده توسط همان تابع انجام داد.
این عملکرد در هر پلتفرمی که از threading استفاده میکند تضمین شده است که از نظر نخ ایمن است.
جزئیات | |
---|---|
برمی گرداند | زمان سپری شده در میلی ثانیه از یک دوره دلخواه و تعریف شده توسط پلت فرم. |
GetClock_RealTime
Error GetClock_RealTime( uint64_t & curTime )
زمان واقعی (مدنی) فعلی را در قالب زمان یونیکس میکروثانیه برمی گرداند.
این روش مفهوم زمان واقعی فعلی پلتفرم محلی را برمیگرداند که به صورت یک مقدار زمانی یونیکس با مقیاس میکروثانیه بیان میشود. ساعت زیرین تضمین شده است که با سرعت حداقل در ثانیه های کامل (مقادیر 1,000,000) تیک می زند، اما در برخی از سیستم عامل ها ممکن است سریعتر تیک تیک بزند.
اگر پلتفرم زیربنایی قادر به ردیابی زمان واقعی باشد، اما سیستم در حال حاضر همگام سازی نشده است، GetClock_RealTime() خطای WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED را برمی گرداند.
در پلتفرم هایی که قادر به ردیابی زمان واقعی نیستند، متد GetClock_RealTime() ممکن است وجود نداشته باشد و در نتیجه یک خطای پیوند برای هر برنامه ای که به آن ارجاع می دهد منجر شود. از طرف دیگر، چنین پلتفرم هایی ممکن است پیاده سازی GetClock_RealTime() را ارائه دهند که همیشه خطای WEAVE_SYSTEM_ERROR_NOT_SUPPORTED را برمی گرداند.
این عملکرد در هر پلتفرمی که از threading استفاده میکند تضمین شده است که از نظر نخ ایمن است.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
پارامترها |
| ||||||
ارزش های بازگشتی |
|
GetClock_RealTimeMS
Error GetClock_RealTimeMS( uint64_t & curTimeMS )
زمان واقعی (مدنی) فعلی را در قالب زمان یونیکس میلی ثانیه ای برمی گرداند.
این روش مفهوم زمان واقعی فعلی پلتفرم محلی را برمیگرداند که به صورت یک مقدار زمانی یونیکس با مقیاس میلیثانیه بیان میشود. ساعت زیرین تضمین شده است که با سرعت حداقل در ثانیه های کامل (مقادیر 1,000,000) تیک می زند، اما در برخی از سیستم عامل ها ممکن است سریعتر تیک تیک بزند.
اگر پلتفرم زیربنایی قادر به ردیابی زمان واقعی باشد، اما سیستم در حال حاضر همگام نشده است، GetClock_RealTimeMS() خطای WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED را برمی گرداند.
در پلتفرمهایی که قادر به ردیابی زمان واقعی نیستند، متد GetClock_RealTimeMS() ممکن است وجود نداشته باشد که منجر به خطای پیوند برای هر برنامهای که به آن ارجاع میدهد، میشود. از طرف دیگر، چنین پلتفرم هایی ممکن است پیاده سازی GetClock_RealTimeMS() را ارائه دهند که همیشه خطای WEAVE_SYSTEM_ERROR_NOT_SUPPORTED را برمی گرداند.
این عملکرد در هر پلتفرمی که از threading استفاده میکند تضمین شده است که از نظر نخ ایمن است.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
پارامترها |
| ||||||
ارزش های بازگشتی |
|
SetClock_RealTime
Error SetClock_RealTime( uint64_t newCurTime )
مفهوم پلتفرم از زمان واقعی (مدنی) فعلی را تنظیم می کند.
برنامه ها می توانند این تابع را برای تنظیم مفهوم زمان واقعی فعلی پلت فرم محلی فراخوانی کنند. زمان فعلی جدید به عنوان یک مقدار زمان یونیکس با مقیاس میکروثانیه بیان می شود.
پس از تنظیم، ساعت پلت فرم زیرین تضمین می شود که زمان واقعی را با جزئیات حداقل ثانیه کامل ردیابی کند.
برخی از پلتفرمها ممکن است برنامهها یا فرآیندهایی را که میتوانند زمان واقعی تنظیم کنند، محدود کنند. اگر تماس گیرنده اجازه تغییر زمان واقعی را نداشته باشد، تابع SetClock_RealTime() خطای WEAVE_SYSTEM_ERROR_ACCESS_DENIED را برمی گرداند.
در پلتفرمهایی که قادر به ردیابی زمان واقعی نیستند یا قابلیت تنظیم زمان واقعی را ارائه نمیدهند، تابع SetClock_RealTime() ممکن است وجود نداشته باشد که منجر به خطای پیوند برای هر برنامهای که به آن ارجاع میدهد، میشود. از طرف دیگر، چنین پلتفرم هایی ممکن است پیاده سازی ()SetClock_RealTime را ارائه دهند که همیشه خطای WEAVE_SYSTEM_ERROR_NOT_SUPPORTED را برمی گرداند.
این عملکرد در هر پلتفرمی که از threading استفاده میکند تضمین شده است که از نظر نخ ایمن است.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
پارامترها |
| ||||||
ارزش های بازگشتی |
|
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates. The OPENTHREAD and related marks are trademarks of the Thread Group and are used under license.
تاریخ آخرین بهروزرسانی 2024-11-13 بهوقت ساعت هماهنگ جهانی.