nl:: Weave:: System:: Layer
#include <src/system/SystemLayer.h>
This provides access to timers according to the configured event handling model.
Özet
WEAVE_SYSTEM_CONFIG_USE_SOCKETS
için etkinlik hazırlık bildirimi, platform uyarlamasında geleneksel anket/seçim uygulaması aracılığıyla işlenir.
WEAVE_SYSTEM_CONFIG_USE_LWIP
için etkinlik hazırlık bildirimi, etkinlik/mesaj sistemi için platforma ve sisteme özel kancalar aracılığıyla işlenir.
Oluşturucular ve Yıkıcılar |
|
---|---|
Layer(void)
|
Herkese açık türler |
|
---|---|
EventHandler)(Object &aTarget, EventType aEventType, uintptr_t aArgument)
|
typedefError(*
|
TimerCompleteFunct)(Layer *aLayer, void *aAppState, Error aError)
|
typedefvoid(*
|
Herkese açık işlevler |
|
---|---|
AddEventHandlerDelegate(LwIPEventHandlerDelegate & aDelegate)
|
Error
Bu komut, sistem katmanına LwIP etkinliklerini işleyebilme becerisini genişletmek için bir etkinlik işleyici temsilcisi ekler.
|
CancelTimer(TimerCompleteFunct aOnComplete, void *aAppState)
|
void
Bu yöntem,
StartTimer() tarihinden önce başlatılan tek seferlik zamanlayıcıyı iptal eder. |
DispatchEvent(Event aEvent)
|
Error
Bu işlem, belirtilen etkinliği bu örnek tarafından işlenmek üzere gönderir.
|
DispatchEvents(void)
|
Error
Bu, platforma özgü bir kancayı çevreleyen sözdizimsel bir sarmalayıcıdır. Bu sarmalayıcı; bir etkinlik döngüsünü etkileyen, bu örneğe hizmet veren bir sırayı bekler, etkinlikleri bu sıradan alır ve ardından işlenmek üzere gönderir.
|
GetPlatformData(void) const
|
void *
Bu komut, daha önce ayarlanmışsa örneğe atanmış tüm istemciye özel platform verilerini döndürür.
|
HandleEvent(Object & aTarget, EventType aEventType, uintptr_t aArgument)
|
Error
Bu işlem, bir Weave System Katman etkinliğinin gerçek dağıtımını ve işlenmesini uygular.
|
HandlePlatformTimer(void)
|
Error
Platform zamanlayıcısı süre sonu etkinliğini işleyin.
|
HandleSelectResult(int aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet)
|
void
Belirli bir görüşmede G/Ç işlemini yönetme.
|
Init(void *aContext)
|
Error
|
NewTimer(Timer *& aTimerPtr)
|
Error
|
PostEvent(Object & aTarget, EventType aEventType, uintptr_t aArgument)
|
Error
Bu işlemle, belirtilen türde bir etkinlik / mesaj, sağlanan bağımsız değişkenle birlikte bu örneğin platforma özel etkinlik sırasına gönderilir.
|
PrepareSelect(int & aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet, struct timeval & aSleepTime)
|
void
select() için kullanılacak dosya tanımlayıcısı gruplarını hazırlayın. |
ScheduleWork(TimerCompleteFunct aComplete, void *aAppState)
|
Error
Weave iş parçacığında en kısa zamanda çalıştırılması için
TimerCompleteFunct ile aynı imzaya sahip bir işlevi programlar. |
SetPlatformData(void *aPlatformData)
|
void
Bu işlem, istemciye özel platform verilerini, istemci platformu tarafından daha sonra almak üzere örneğe ayarlar.
|
Shutdown(void)
|
Error
|
StartTimer(uint32_t aMilliseconds, TimerCompleteFunct aComplete, void *aAppState)
|
Error
Bu yöntem tek seferlik bir zamanlayıcı başlatır.
|
State(void) const
|
LayerState
Bu, katman nesnesinin mevcut durumunu döndürür.
|
WakeSelect(void)
|
void
Uyandırma akışına tek bir bayt yazarak select() işlevini kullanarak dosya tanımlayıcılarını izleyen G/Ç iş parçacığını uyandırın.
|
Herkese açık statik işlevler |
|
---|---|
GetClock_Monotonic(void)
|
uint64_t
Tekdüze sistem zamanını mikrosaniye cinsinden döndürür.
|
GetClock_MonotonicHiRes(void)
|
uint64_t
Mikrosaniye cinsinden (potansiyel olarak) yüksek çözünürlüklü monoton sistem zamanını döndürür.
|
GetClock_MonotonicMS(void)
|
uint64_t
Monoton sistem zamanını milisaniye cinsinden döndürür.
|
GetClock_RealTime(uint64_t & curTime)
|
Error
Geçerli gerçek (siyah) zamanı mikrosaniye Unix saat biçiminde döndürür.
|
GetClock_RealTimeMS(uint64_t & curTimeMS)
|
Error
Geçerli gerçek (sivil) zamanı milisaniye cinsinden Unix saati biçiminde döndürür.
|
SetClock_RealTime(uint64_t newCurTime)
|
Error
Platformun mevcut gerçek (sivil) zaman kavramını belirler.
|
Herkese açık türler
EventHandler
Error(* EventHandler)(Object &aTarget, EventType aEventType, uintptr_t aArgument)
TimerCompleteFunct
void(* TimerCompleteFunct)(Layer *aLayer, void *aAppState, Error aError)
Herkese açık işlevler
AddEventHandlerDelegate
Error AddEventHandlerDelegate( LwIPEventHandlerDelegate & aDelegate )
Bu komut, sistem katmanına LwIP etkinliklerini işleyebilme becerisini genişletmek için bir etkinlik işleyici temsilcisi ekler.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Değerleri Döndür |
|
CancelTimer
void CancelTimer( TimerCompleteFunct aOnComplete, void *aAppState )
Bu yöntem, StartTimer()
tarihinden önce başlatılan tek seferlik zamanlayıcıyı iptal eder.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
DispatchEvent
Error DispatchEvent( Event aEvent )
Bu işlem, belirtilen etkinliği bu örnek tarafından işlenmek üzere gönderir.
Etkinlikteki tür ve bağımsız değişkenlerin marjinalleştirmesi, platforma özgü bir kanca tarafından işlenir. Bu kanca, gerçek gönderme için layer::HandleEvent yöntemini geri çağırır.
Ayrıntılar | |||
---|---|---|---|
Parametreler |
|
||
İadeler |
Başarıda WEAVE_SYSTEM_NO_ERROR; aksi takdirde, başlatma hatasının nedenini belirten belirli bir hata alırsınız.
|
DispatchEvents
Error DispatchEvents( void )
Bu, platforma özgü bir kancayı çevreleyen sözdizimsel bir sarmalayıcıdır. Bu sarmalayıcı; bir etkinlik döngüsünü etkileyen, bu örneğe hizmet veren bir sırayı bekler, etkinlikleri bu sıradan alır ve ardından işlenmek üzere gönderir.
Ayrıntılar | |
---|---|
İadeler |
Başarıda WEAVE_SYSTEM_NO_ERROR; aksi takdirde, başlatma hatasının nedenini belirten belirli bir hata alırsınız.
|
GetPlatformData
void * GetPlatformData( void ) const
Bu komut, daha önce ayarlanmışsa örneğe atanmış tüm istemciye özel platform verilerini döndürür.
Ayrıntılar | |
---|---|
İadeler |
Daha önce ayarlanmışsa müşteriye özel platform verileri; Aksi takdirde, NULL olacaktır.
|
HandleEvent
Error HandleEvent( Object & aTarget, EventType aEventType, uintptr_t aArgument )
Bu işlem, bir Weave System Katman etkinliğinin gerçek dağıtımını ve işlenmesini uygular.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Değerleri Döndür |
|
HandlePlatformTimer
Error HandlePlatformTimer( void )
Platform zamanlayıcısı süre sonu etkinliğini işleyin.
Süresi dolan zamanlayıcıları işlemek için nl::Weave::System::Timing::HandleDurationDuration Kronometre'yi çağırır. Bu API'nin yalnızca Weave System layer nesnesinin sahibi olan iş parçacığında çağrıldığı varsayılır.
Ayrıntılar | |
---|---|
İadeler |
Başarıda WEAVE_SYSTEM_NO_ERROR, aksi takdirde hata kodu.
|
HandleSelectResult
void HandleSelectResult( int aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet )
Belirli bir görüşmede G/Ç işlemini yönetme.
Bu yöntem, her etkin uç noktadaki beklemedeki G/Ç etkinliğini kaydeder ve ardından bu uç noktalar için ilgili G/Ç işleme işlevlerini çağırır.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
Init
Error Init( void *aContext )
Katman
Layer( void )
NewTimer
Error NewTimer( Timer *& aTimerPtr )
PostEvent
Error PostEvent( Object & aTarget, EventType aEventType, uintptr_t aArgument )
Bu işlemle, belirtilen türde bir etkinlik / mesaj, sağlanan bağımsız değişkenle birlikte bu örneğin platforma özel etkinlik sırasına gönderilir.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||
Değerleri Döndür |
|
PrepareSelect
void PrepareSelect( int & aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet, struct timeval & aSleepTime )
select()
için kullanılacak dosya tanımlayıcısı gruplarını hazırlayın.
Ayrıntılar | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
ScheduleWork
Error ScheduleWork( TimerCompleteFunct aComplete, void *aAppState )
Weave iş parçacığında en kısa zamanda çalıştırılması için TimerCompleteFunct
ile aynı imzaya sahip bir işlevi programlar.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Değerleri Döndür |
|
SetPlatformData
void SetPlatformData( void *aPlatformData )
Bu işlem, istemciye özel platform verilerini, istemci platformu tarafından daha sonra almak üzere örneğe ayarlar.
Ayrıntılar | |||
---|---|---|---|
Parametreler |
|
Kapat
Error Shutdown( void )
StartTimer
Error StartTimer( uint32_t aMilliseconds, TimerCompleteFunct aComplete, void *aAppState )
Bu yöntem tek seferlik bir zamanlayıcı başlatır.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
İadeler |
WEAVE_SYSTEM_NO_ERROR Başarıyla tamamlandı.
|
||||||
İadeler |
WEAVE_SYSTEM_ERROR_NO_MEMORY Zamanlayıcı atanamazsa.
|
||||||
İadeler |
Zamanlayıcının başlatılamadığını gösteren diğer değer.
|
Eyalet
LayerState State( void ) const
Bu, katman nesnesinin mevcut durumunu döndürür.
WakeSelect
void WakeSelect( void )
Uyandırma akışına tek bir bayt yazarak select() işlevini kullanarak dosya tanımlayıcılarını izleyen G/Ç iş parçacığını uyandırın.
Not: WakeSelect()
, HandleSelectResult()
içinden çağrılıyorsa G/Ç ileti dizisi zaten uyanık olduğu için uyanık kalma kanalına yazma atlanabilir.
Dahası, bu yazma işleminin başarısız olmasıyla ilgilenmiyoruz. Makul olasılıkla tek hata, kanalın dolu olmasıdır. Bu durumda, seçilen çağrı iş parçacığı yine de uyanır.
Herkese açık statik işlevler
GetClock_Monotonic
uint64_t GetClock_Monotonic( void )
Tekdüze sistem zamanını mikrosaniye cinsinden döndürür.
Bu işlev, platform tanımlı rastgele bir dönemden bu yana geçen süreyi mikrosaniye cinsinden döndürür. Döndürülen değerin, sistem yeniden başlatmaları arasında sürekli olarak artacağı (yani hiçbir zaman sarmalanmayacağı) garanti edilir. Ayrıca, uyanık kalındığında yeniden başlatma gerektirmeyen sistem uyku modları sırasında temel zaman kaynağının sürekli olarak işaretlenmesi garanti edilir.
Bazı platformlar, sistemin önyüklemesinden itibaren geçen süreyi ölçen bir değer döndürmeyi seçebilir ancak uygulamaların buna dayanmaması gerekir. Ayrıca, GetClock_Monotonic() döneminin diğer GetClock... işlevleriyle aynı olması gerekmez. Bu nedenle, göreli zaman hesaplamaları yalnızca aynı işlev tarafından döndürülen değerler üzerinde yapılabilir.
Bu işlevin, ileti dizisi kullanan tüm platformlarda iş parçacığı için güvenli olacağı garanti edilir.
Ayrıntılar | |
---|---|
İadeler |
Platform tanımlı rastgele bir dönemden bu yana geçen süre (mikrosaniye cinsinden).
|
GetClock_MonotonicHiRes
uint64_t GetClock_MonotonicHiRes( void )
Mikrosaniye cinsinden (potansiyel olarak) yüksek çözünürlüklü monoton sistem zamanını döndürür.
Bu işlev, platform tanımlı rastgele bir dönemden bu yana geçen süreyi mikrosaniye cinsinden döndürür. Döndürülen değerin, sistem yeniden başlatmaları arasında sürekli olarak artacağı (yani hiçbir zaman sarmalanmayacağı) garanti edilir. Bununla birlikte, temel zamanlayıcının sistem derin uyku durumları sırasında sürekli olarak işaretlemesi gerekmez.
Bazı platformlar, GetClock_MonotonicHiRes() yöntemini kullanarak GetClock_Monotonic() işlevinden daha yüksek hassasiyetli yüksek çözünürlüklü bir zamanlayıcı kullanabilir ve bu, kademeli saat ayarlamalarına (çeviri) tabi değildir. Böyle bir zamanlayıcısı olmayan sistemler GetClock_Monotonic() ile aynı değeri döndürebilir.
GetClock_MonotonicHiRes() tarafından döndürülen zaman dönemi, GetClock_Monotonic() dahil olmak üzere diğer GetClock... işlevleriyle aynı olmalıdır.
Bu işlevin, ileti dizisi kullanan tüm platformlarda iş parçacığı için güvenli olacağı garanti edilir.
Ayrıntılar | |
---|---|
İadeler |
Platform tanımlı rastgele bir dönemden bu yana geçen süre (mikrosaniye cinsinden).
|
GetClock_MonotonicMS
uint64_t GetClock_MonotonicMS( void )
Monoton sistem zamanını milisaniye cinsinden döndürür.
Bu işlev, platform tanımlı rastgele bir dönemden bu yana geçen süreyi milisaniye cinsinden döndürür. Döndürülen değerin, sistem yeniden başlatmaları arasında sürekli olarak artacağı (yani hiçbir zaman sarmalanmayacağı) garanti edilir. Ayrıca, uyanık kalındığında yeniden başlatma gerektirmeyen sistem uyku modları sırasında temel zaman kaynağının sürekli olarak işaretlenmesi garanti edilir.
Bazı platformlar, sistemin önyüklemesinden itibaren geçen süreyi ölçen bir değer döndürmeyi seçebilir ancak uygulamaların buna dayanmaması gerekir. Ayrıca, GetClock_Monotonic() döneminin diğer GetClock... işlevleriyle aynı olması gerekmez. Bu nedenle, göreli zaman hesaplamaları yalnızca aynı işlev tarafından döndürülen değerler üzerinde yapılabilir.
Bu işlevin, ileti dizisi kullanan tüm platformlarda iş parçacığı için güvenli olacağı garanti edilir.
Ayrıntılar | |
---|---|
İadeler |
Platform tanımlı rastgele bir dönemden bu yana geçen süre (milisaniye cinsinden).
|
GetClock_RealTime
Error GetClock_RealTime( uint64_t & curTime )
Geçerli gerçek (siyah) zamanı mikrosaniye Unix saat biçiminde döndürür.
Bu yöntem, yerel platformun geçerli gerçek zaman kavramını döndürür. Bu değer, mikrosaniyeye ölçeklendirilmiş Unix zaman değeri olarak ifade edilir. Temel saatin en az tam saniye hızda (1.000.000 değerinde) ilerlemesi garanti edilir, ancak bazı platformlarda daha hızlı akabilir.
Temel platform gerçek zamanlı izleme yapabiliyorsa ancak sistem o anda senkronize edilmemişse GetClock_RealTime() işlevi WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED hatasını döndürür.
Gerçek zamanlı izleme yapılamayan platformlarda GetClock_RealTime() yöntemi bulunmayabilir ve bu yönteme referans veren tüm uygulamalar için bağlantı hatası oluşabilir. Alternatif olarak, bu tür platformlar her zaman WEAVE_SYSTEM_ERROR_NOT_SUPPORTED hatası döndüren bir GetClock_RealTime() uygulaması sağlayabilir.
Bu işlevin, ileti dizisi kullanan tüm platformlarda iş parçacığı için güvenli olacağı garanti edilir.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Değerleri Döndür |
|
GetClock_RealTimeMS
Error GetClock_RealTimeMS( uint64_t & curTimeMS )
Geçerli gerçek (sivil) zamanı milisaniye cinsinden Unix saati biçiminde döndürür.
Bu yöntem, yerel platformun milisaniyeye ölçeklendirilmiş Unix zaman değeri olarak ifade edilen geçerli gerçek zaman kavramını döndürür. Temel saatin en az tam saniye hızda (1.000.000 değerinde) ilerlemesi garanti edilir, ancak bazı platformlarda daha hızlı akabilir.
Temel platform gerçek zamanlı izleme yapabiliyorsa ancak sistem o anda senkronize edilmemişse GetClock_RealTimeMS() işlevi WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED hatasını döndürür.
Gerçek zamanlı izleme yapılamayan platformlarda GetClock_RealTimeMS() yöntemi bulunmayabilir ve bu yönteme referans veren tüm uygulamalar için bağlantı hatası oluşabilir. Alternatif olarak, bu tür platformlar her zaman WEAVE_SYSTEM_ERROR_NOT_SUPPORTED hatası döndüren bir GetClock_RealTimeMS() uygulaması sağlayabilir.
Bu işlevin, ileti dizisi kullanan tüm platformlarda iş parçacığı için güvenli olacağı garanti edilir.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Değerleri Döndür |
|
SetClock_RealTime
Error SetClock_RealTime( uint64_t newCurTime )
Platformun mevcut gerçek (sivil) zaman kavramını belirler.
Uygulamalar, yerel platformun geçerli gerçek zaman kavramını ayarlamak için bu işlevi çağırabilir. Yeni geçerli zaman, mikrosaniyeye ölçeklenmiş Unix zaman değeriyle ifade edilir.
Ayarlandıktan sonra, temel platform saatinin en az tam saniye ayrıntı düzeyiyle gerçek zamanı izlemesi garanti edilir.
Bazı platformlar, gerçek zamanlı ayarlanabilecek uygulama veya işlemleri kısıtlayabilir. Arayanın gerçek zamanı değiştirmesine izin verilmiyorsa SetClock_RealTime() işlevi WEAVE_SYSTEM_ERROR_ACCESS_DENIED hatası döndürür.
Gerçek zamanlı izleme yapılamayan veya gerçek zamanlı ayarlama olanağı sunmayan platformlarda SetClock_RealTime() işlevi bulunmayabilir ve bu işleve referans veren tüm uygulamalar için bağlantı hatası oluşur. Alternatif olarak, bu tür platformlar her zaman WEAVE_SYSTEM_ERROR_NOT_SUPPORTED hatası döndüren bir SetClock_RealTime() uygulaması sağlayabilir.
Bu işlevin, ileti dizisi kullanan tüm platformlarda iş parçacığı için güvenli olacağı garanti edilir.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Değerleri Döndür |
|