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 durumu 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, etkinlikler / mesajlar ve 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(*
|
Kamu işlevleri |
|
---|---|
AddEventHandlerDelegate(LwIPEventHandlerDelegate & aDelegate)
|
Error
Bu işlem, LwIP etkinliklerini işleme becerisini genişletmek için sistem katmanına bir etkinlik işleyici temsilcisi ekler.
|
CancelTimer(TimerCompleteFunct aOnComplete, void *aAppState)
|
void
Bu yöntem,
StartTimer() tarihine kadar erken başlatılmış olan 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, bir etkinlik döngüsünü etkileyen, bu örneğe hizmet veren bir sıranın beklemesi, etkinlikleri sıranın dışına çekme ve ardından işlenmek üzere gönderme işlemlerini gerçekleştiren, platforma özel bir kancayı çevreleyen sözdizimsel bir sarmalayıcıdır.
|
GetPlatformData(void) const
|
void *
Bu işlem, örneğe atanmış olan istemciye özel platform verilerini döndürür (örnek daha önce ayarlanmışsa).
|
HandleEvent(Object & aTarget, EventType aEventType, uintptr_t aArgument)
|
Error
Bu, bir Weave Sistem Katman etkinliğinin gerçek dağıtımını ve işlemesini uygular.
|
HandlePlatformTimer(void)
|
Error
Platform zamanlayıcı süre sonu etkinliğini işleme.
|
HandleSelectResult(int aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet)
|
void
Belirli bir görüşmeden G/Ç'yi yönetin.
|
Init(void *aContext)
|
Error
|
NewTimer(Timer *& aTimerPtr)
|
Error
|
PostEvent(Object & aTarget, EventType aEventType, uintptr_t aArgument)
|
Error
Bu işlem, sağlanan bağımsız değişkeni kullanarak bu örneğin platforma özel etkinlik sırasına belirtilen türde bir etkinlik veya mesaj yayınlar.
|
PrepareSelect(int & aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet, struct timeval & aSleepTime)
|
void
select() için kullanılacak dosya açıklayıcı gruplarını hazırlayın. |
ScheduleWork(TimerCompleteFunct aComplete, void *aAppState)
|
Error
TimerCompleteFunct ile aynı imzaya sahip olan bir işlevin, mümkün olan en kısa sürede Weave iş parçacığında çalıştırılmasını planlar. |
SetPlatformData(void *aPlatformData)
|
void
Bu işlem, istemciye özel belirtilen platform verilerini daha sonra istemci platformu tarafından alınabilmesi için ö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
Katman nesnesinin mevcut durumunu döndürür.
|
WakeSelect(void)
|
void
Uyandırma kanalına tek bir bayt yazarak dosya açıklayıcılarını select() kullanarak izleyen G/Ç iş parçacığını uyandırın.
|
Herkese açık statik işlevler |
|
---|---|
GetClock_Monotonic(void)
|
uint64_t
Mikrosaniye cinsinden monotonik sistem zamanını döndürür.
|
GetClock_MonotonicHiRes(void)
|
uint64_t
Mikrosaniye cinsinden (muhtemelen) yüksek çözünürlüklü monotonik sistem zamanını döndürür.
|
GetClock_MonotonicMS(void)
|
uint64_t
Milisaniye cinsinden monotonik sistem zamanını döndürür.
|
GetClock_RealTime(uint64_t & curTime)
|
Error
Geçerli gerçek (sivil) zamanı mikrosaniye Unix saat biçiminde döndürür.
|
GetClock_RealTimeMS(uint64_t & curTimeMS)
|
Error
Geçerli gerçek (sivil) zamanı milisaniye Unix saat biçiminde döndürür.
|
SetClock_RealTime(uint64_t newCurTime)
|
Error
Platformun geçerli gerçek (resmi) 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)
Kamu işlevleri
AddEventHandlerDelegate
Error AddEventHandlerDelegate( LwIPEventHandlerDelegate & aDelegate )
Bu işlem, LwIP etkinliklerini işleme becerisini genişletmek için sistem katmanına bir etkinlik işleyici temsilcisi ekler.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Döndürülen Değerler |
|
CancelTimer
void CancelTimer( TimerCompleteFunct aOnComplete, void *aAppState )
Bu yöntem, StartTimer()
tarihine kadar erken başlatılmış olan 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.
Etkinlik türü ve bağımsız değişkenlerinin yeniden düzenlenmesi, platforma özgü bir kanca tarafından işlenir. Ardından, gerçek dağıtım için layer::HandleEvent öğesine geri çağrılması gerekir.
Ayrıntılar | |||
---|---|---|---|
Parametreler |
|
||
İadeler |
Başarılı durumda WEAVE_SYSTEM_NO_ERROR; aksi takdirde, başlatma hatasının nedenini belirten belirli bir hata.
|
DispatchEvents
Error DispatchEvents( void )
Bu, bir etkinlik döngüsünü etkileyen, bu örneğe hizmet veren bir sıranın beklemesi, etkinlikleri sıranın dışına çekme ve ardından işlenmek üzere gönderme işlemlerini gerçekleştiren, platforma özel bir kancayı çevreleyen sözdizimsel bir sarmalayıcıdır.
Ayrıntılar | |
---|---|
İadeler |
Başarılı olduğunda WEAVE_SYSTEM_NO_ERROR. Aksi takdirde başlatma hatasının nedenini belirten belirli bir hata.
|
GetPlatformData
void * GetPlatformData( void ) const
Bu işlem, örneğe atanmış olan istemciye özel platform verilerini döndürür (örnek daha önce ayarlanmışsa).
Ayrıntılar | |
---|---|
İadeler |
İstemciye özel platform verileri (daha önce ayarlanmışsa ayarlanırsa NULL).
|
HandleEvent
Error HandleEvent( Object & aTarget, EventType aEventType, uintptr_t aArgument )
Bu, bir Weave Sistem Katman etkinliğinin gerçek dağıtımını ve işlemesini uygular.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Döndürülen Değerler |
|
HandlePlatformTimer
Error HandlePlatformTimer( void )
Platform zamanlayıcı süre sonu etkinliğini işleme.
Çağrılar nl::Weave::Sistem::Zamanlayıcı::Süresi dolmuş olan zamanlayıcılar için geçerlidir. Bu API'nin yalnızca Örgü Sistemi Katman nesnesine sahip olan iş parçacığında çağrıldığı varsayılır.
Ayrıntılar | |
---|---|
İadeler |
Başarılı olduğunda 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üşmeden G/Ç'yi yönetin.
Bu yöntem, her etkin uç noktaya 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 |
|
Başlat
Error Init( void *aContext )
Katman
Layer( void )
NewTimer
Error NewTimer( Timer *& aTimerPtr )
PostEvent
Error PostEvent( Object & aTarget, EventType aEventType, uintptr_t aArgument )
Bu işlem, sağlanan bağımsız değişkeni kullanarak bu örneğin platforma özel etkinlik sırasına belirtilen türde bir etkinlik veya mesaj yayınlar.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||
Döndürülen Değerler |
|
PrepareSelect
void PrepareSelect( int & aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet, struct timeval & aSleepTime )
select()
için kullanılacak dosya açıklayıcı gruplarını hazırlayın.
Ayrıntılar | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
ScheduleWork
Error ScheduleWork( TimerCompleteFunct aComplete, void *aAppState )
TimerCompleteFunct
ile aynı imzaya sahip olan bir işlevin, mümkün olan en kısa sürede Weave iş parçacığında çalıştırılmasını planlar.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Döndürülen Değerler |
|
SetPlatformData
void SetPlatformData( void *aPlatformData )
Bu işlem, istemciye özel belirtilen platform verilerini daha sonra istemci platformu tarafından alınabilmesi için ö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ılı olursa.
|
||||||
İadeler |
WEAVE_SYSTEM_ERROR_NO_MEMORY Zamanlayıcı atanamazsa.
|
||||||
İadeler |
Zamanlayıcıyı gösteren diğer değer başlatılamadı.
|
Eyalet
LayerState State( void ) const
Katman nesnesinin mevcut durumunu döndürür.
WakeSelect
void WakeSelect( void )
Uyandırma kanalına tek bir bayt yazarak dosya açıklayıcılarını select() kullanarak izleyen G/Ç iş parçacığını uyandırın.
Not: WakeSelect()
, HandleSelectResult()
içinden çağrılıyorsa G/Ç iş parçacığı zaten uyanık olduğu için uyanık kalma borusuna yazma atlanabilir.
Ayrıca, bu yazma işleminin başarısız olmasını önemsemeyiz. Bunun nedeni, olası tek hata borunun dolu olmasıdır. Bu durumda, seçili çağrı yapan iş parçacığı yine de uyanacaktır.
Herkese açık statik işlevler
GetClock_Monotonic
uint64_t GetClock_Monotonic( void )
Mikrosaniye cinsinden monotonik 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şlatılmaları arasında sürekli artırılacağı (yani asla sarmalanmayacağı) garanti edilir. Buna ek olarak, temel alınan zaman kaynağının, uyandıktan sonra yeniden başlatmayı gerektirmeyen sistem uyku modları sırasında sürekli olarak ayarlanması garanti edilir.
Bazı platformlar sistem için başlatma işleminden bu yana geçen süreyi ölçen bir değer döndürmeyi seçse de uygulamalar buna dayanmamalıdır. Ayrıca GetClock_Monotonic() sıfır zamanının diğer herhangi bir GetClock... işleviyle 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 kullanılan tüm platformlarda iş parçacığı güvenli olduğu garanti edilir.
Ayrıntılar | |
---|---|
İadeler |
Rastgele, platform tanımlı bir dönemden bu yana geçen süre (mikrosaniye cinsinden).
|
GetClock_MonotonicHiRes
uint64_t GetClock_MonotonicHiRes( void )
Mikrosaniye cinsinden (muhtemelen) yüksek çözünürlüklü monotonik 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şlatılmaları arasında sürekli artırılacağı (yani asla sarmalanmayacağı) garanti edilir. Ancak altta yatan zamanlayıcının sistem derin uyku durumları sırasında sürekli olarak ayarlanması gerekmez.
Bazı platformlar, GetClock_MonotonicHiRes() fonksiyonunu GetClock_Monotonic() fonksiyonundan daha yüksek hassasiyette olan ve kademeli saat ayarlamalarına (hazırlık) tabi olmayan yüksek çözünürlüklü bir zamanlayıcı kullanarak uygulayabilir. Böyle bir zamanlayıcısı olmayan sistemler GetClock_Monotonic() işleviyle aynı değeri döndürebilir.
GetClock_MonotonicHiRes() tarafından döndürülen zaman diliminin, GetClock_Monotonic() dahil olmak üzere diğer GetClock... işlevlerinden herhangi biri için aynı olması gerekmez.
Bu işlevin, ileti dizisi kullanılan tüm platformlarda iş parçacığı güvenli olduğu garanti edilir.
Ayrıntılar | |
---|---|
İadeler |
Rastgele, platform tanımlı bir dönemden bu yana geçen süre (mikrosaniye cinsinden).
|
GetClock_MonotonicMS
uint64_t GetClock_MonotonicMS( void )
Milisaniye cinsinden monotonik sistem zamanını 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şlatılmaları arasında sürekli artırılacağı (yani asla sarmalanmayacağı) garanti edilir. Buna ek olarak, temel alınan zaman kaynağının, uyandıktan sonra yeniden başlatmayı gerektirmeyen sistem uyku modları sırasında sürekli olarak ayarlanması garanti edilir.
Bazı platformlar sistem için başlatma işleminden bu yana geçen süreyi ölçen bir değer döndürmeyi seçse de uygulamalar buna dayanmamalıdır. Ayrıca GetClock_Monotonic() sıfır zamanının diğer herhangi bir GetClock... işleviyle 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 kullanılan tüm platformlarda iş parçacığı güvenli olduğu garanti edilir.
Ayrıntılar | |
---|---|
İadeler |
Rastgele, platform tanımlı bir dönemden bu yana geçen süre (milisaniye cinsinden).
|
GetClock_RealTime
Error GetClock_RealTime( uint64_t & curTime )
Geçerli gerçek (sivil) zamanı mikrosaniye Unix saat biçiminde döndürür.
Bu yöntem, yerel platformun geçerli gerçek zamanlı kavramını döndürür ve mikrosaniyeye ölçeklenmiş Unix zaman değeri olarak ifade edilir. Temel saatin en az tam saniye hızında (1.000.000'lik değerler) ilerlemesi garanti edilir ancak bazı platformlarda daha hızlı çalışabilir.
Temel platform gerçek zamanlı izleme yapabiliyorsa ancak sistem şu 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 yapamayan platformlarda GetClock_RealTime() yöntemi bulunmayabilir. Bu durumda, söz konusu yönteme başvuruda bulunan uygulamalarda bağlantı hatası oluşabilir. Alternatif olarak, bu tür platformlar, her zaman WEAVE_SYSTEM_ERROR_NOT_SUPPORTED hatası veren bir GetClock_RealTime() uygulaması sağlayabilir.
Bu işlevin, ileti dizisi kullanılan tüm platformlarda iş parçacığı güvenli olduğu garanti edilir.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Döndürülen Değerler |
|
GetClock_RealTimeMS
Error GetClock_RealTimeMS( uint64_t & curTimeMS )
Geçerli gerçek (sivil) zamanı milisaniye Unix saat biçiminde döndürür.
Bu yöntem, yerel platformun geçerli gerçek zamanlı kavramını döndürür ve milisaniye cinsinden ölçeklendirilmiş bir Unix zaman değeri olarak ifade edilir. Temel saatin en az tam saniye hızında (1.000.000'lik değerler) ilerlemesi garanti edilir ancak bazı platformlarda daha hızlı çalışabilir.
Temel platform gerçek zamanlı izleme yapabiliyorsa ancak sistem şu 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 yapamayan platformlarda GetClock_RealTimeMS() yöntemi bulunmayabilir ve bu da, söz konusu yönteme başvuruda bulunan uygulamalarda bağlantı hatasına neden olabilir. Alternatif olarak, bu tür platformlar, her zaman WEAVE_SYSTEM_ERROR_NOT_SUPPORTED hatası veren bir GetClock_RealTimeMS() uygulaması sağlayabilir.
Bu işlevin, ileti dizisi kullanılan tüm platformlarda iş parçacığı güvenli olduğu garanti edilir.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Döndürülen Değerler |
|
SetClock_RealTime
Error SetClock_RealTime( uint64_t newCurTime )
Platformun geçerli gerçek (resmi) zaman kavramını belirler.
Uygulamalar, yerel platformun geçerli gerçek zamanlı kavramını ayarlamak için bu işlevi çağırabilir. Yeni geçerli saat, mikrosaniyeye ölçeklenmiş bir Unix zaman değeri olarak ifade edilir.
Temel platform saatinin ayarlandıktan sonra, en az tam saniyelik bir ayrıntı düzeyiyle gerçek zamanlı izlemesi garanti edilir.
Bazı platformlar, gerçek zamanlı ayarlanabilecek uygulama veya işlemleri kısıtlayabilir. Arayanın gerçek zamanlı değişikliği yapmasına izin verilmiyorsa SetClock_RealTime() işlevi şu hatayı döndürür: WEAVE_SYSTEM_ERROR_ACCESS_DENIED.
Gerçek zamanlı izleme yapamayan veya gerçek zamanlı ayarlama olanağı sunmayan platformlarda SetClock_RealTime() işlevi bulunmayabilir. Bu işlev, söz konusu işleve başvuruda bulunan uygulamalarda bağlantı hatasına neden olabilir. Alternatif olarak, bu tür platformlar, her zaman WEAVE_SYSTEM_ERROR_NOT_SUPPORTED hatası veren bir SetClock_RealTime() uygulaması sağlayabilir.
Bu işlevin, ileti dizisi kullanılan tüm platformlarda iş parçacığı güvenli olduğu garanti edilir.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Döndürülen Değerler |
|