nl:: Doku:: Sistem:: Katman
#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, platforma uyum sağlaması için geleneksel anket/seçim uygulaması kullanılarak gerçekleştirilir.
WEAVE_SYSTEM_CONFIG_USE_LWIP
için etkinlik hazırlık bildirimi, etkinlikler / mesajlar ile etkinlik/mesaj sistemi için platforma ve sisteme özgü kancalar aracılığıyla ele alınır.
İnşaat Ustaları ve Yıkıcılar |
|
---|---|
Layer(void)
|
Herkese açık türler |
|
---|---|
EventHandler)(Object &aTarget, EventType aEventType, uintptr_t aArgument)
|
TürError(*
|
TimerCompleteFunct)(Layer *aLayer, void *aAppState, Error aError)
|
Türvoid(*
|
Herkese açık işlevler |
|
---|---|
AddEventHandlerDelegate(LwIPEventHandlerDelegate & aDelegate)
|
Error
Bu sayede, LwIP etkinliklerini işleme kapasitesini genişletmek için sistem katmanına bir etkinlik işleyici yetkisi eklenir.
|
CancelTimer(TimerCompleteFunct aOnComplete, void *aAppState)
|
void
Bu yöntem,
StartTimer() tarihine kadar başlayan tek seferlik bir zamanlayıcıyı iptal eder. |
DispatchEvent(Event aEvent)
|
Error
Bu işlem, belirtilen etkinliği bu örnek tarafından işlenmesi için gönderir.
|
DispatchEvents(void)
|
Error
Bu, bir etkinlik döngüsünü etkileyen platforma özgü bir kancanın etrafında yer alan, bu örneğe hizmet eden bir sıranın beklemesi, etkinlikleri bu sıradan çekmesi ve daha sonra, işlenmek üzere göndermesi için kullanılan söz dizimidir.
|
GetPlatformData(void) const
|
void *
Bu, daha önce ayarlandıysa, örneğe atanmış istemciye özel platform verilerini döndürür.
|
HandleEvent(Object & aTarget, EventType aEventType, uintptr_t aArgument)
|
Error
Bu işlem, Weave System Katman etkinliğinin gerçek gönderilme ve işlenmesini sağlar.
|
HandlePlatformTimer(void)
|
Error
Platform zamanlayıcının sona erme etkinliğini yönetin.
|
HandleSelectResult(int aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet)
|
void
Seçili görüşmeden G/Ç işlemini gerçekleştirin.
|
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şkenle birlikte bu örneğe ait platforma özel etkinlik sırasına gönderilen etkinlik türünü / mesajı yayınlar.
|
PrepareSelect(int & aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet, struct timeval & aSleepTime)
|
void
select() için çalışacak dosya açıklayıcı gruplarını hazırlayın. |
ScheduleWork(TimerCompleteFunct aComplete, void *aAppState)
|
Error
Weave ileti dizisinde en kısa sürede çalıştırılacak, imzası
TimerCompleteFunct olan bir işlevi programlar. |
SetPlatformData(void *aPlatformData)
|
void
Bu işlem, müşteriye özel belirtilen platform verilerini daha sonra istemci platformu tarafından alınacak şekilde ö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
Uyanma borusuna tek bir bayt yazarak file() tanımlayıcılarını kullanarak dosya tanımlayıcılarını izleyen I/O ileti dizisini uyandırın.
|
Herkese açık statik işlevler |
|
---|---|
GetClock_Monotonic(void)
|
uint64_t
Mikrosaniye cinsinden mikromononik sistem süresi döndürür.
|
GetClock_MonotonicHiRes(void)
|
uint64_t
Mikrosaniye cinsinden (potansiyel olarak) yüksek çözünürlüklü monoton sistem sistemi döndürür.
|
GetClock_MonotonicMS(void)
|
uint64_t
Milisaniye cinsinden monotonik sistem süresi döndürür.
|
GetClock_RealTime(uint64_t & curTime)
|
Error
Mikro saniye Unix zaman biçiminde geçerli gerçek (nabız) zamanı döndürür.
|
GetClock_RealTimeMS(uint64_t & curTimeMS)
|
Error
Geçerli (milisaniye) zamanı, milisaniye Unix zaman biçiminde döndürür.
|
SetClock_RealTime(uint64_t newCurTime)
|
Error
Platformun gerçek zamanlı (nakit) kavramını belirler.
|
Herkese açık türler
EventHandler
Error(* EventHandler)(Object &aTarget, EventType aEventType, uintptr_t aArgument)
Zamanlayıcı TamamlamaFunct
void(* TimerCompleteFunct)(Layer *aLayer, void *aAppState, Error aError)
Herkese açık işlevler
AddEventHandlerTemsilcisi
Error AddEventHandlerDelegate( LwIPEventHandlerDelegate & aDelegate )
Bu sayede, LwIP etkinliklerini işleme kapasitesini genişletmek için sistem katmanına bir etkinlik işleyici yetkisi eklenir.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Döndürülen Değerler |
|
Zamanlayıcıyı iptal et
void CancelTimer( TimerCompleteFunct aOnComplete, void *aAppState )
Bu yöntem, StartTimer()
tarihine kadar başlayan tek seferlik bir zamanlayıcıyı iptal eder.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
DispatchEtkinlik
Error DispatchEvent( Event aEvent )
Bu işlem, belirtilen etkinliği bu örnek tarafından işlenmesi için gönderir.
Etkinlik türünde türün ve bağımsız değişkenlerin ayrıştırılması platforma özel bir kanca tarafından gerçekleştirilir. Bu daha sonra asıl dağıtım için Layer::HandleEvent değerine çağrılmalıdır.
Ayrıntılar | |||
---|---|---|---|
Parametreler |
|
||
İadeler |
Başarıyla ilgili WEAVE_SYSTEM_NO_ERROR; aksi halde, başlatma hatasının nedenini belirten belirli bir hata görüntülenir.
|
Planlama Etkinlikleri
Error DispatchEvents( void )
Bu, bir etkinlik döngüsünü etkileyen platforma özgü bir kancanın etrafında yer alan, bu örneğe hizmet eden bir sıranın beklemesi, etkinlikleri bu sıradan çekmesi ve daha sonra, işlenmek üzere göndermesi için kullanılan söz dizimidir.
Ayrıntılar | |
---|---|
İadeler |
Başarıyla ilgili WEAVE_SYSTEM_NO_ERROR; aksi halde, başlatma hatasının nedenini belirten belirli bir hata görüntülenir.
|
GetPlatformData
void * GetPlatformData( void ) const
Bu, daha önce ayarlandıysa, örneğe atanmış istemciye özel platform verilerini döndürür.
Ayrıntılar | |
---|---|
İadeler |
Daha önce ayarlanmışsa müşteriye özel platform verileri; aksi takdirde BOŞ olacaktır.
|
Etkinlik Etkinliği
Error HandleEvent( Object & aTarget, EventType aEventType, uintptr_t aArgument )
Bu işlem, Weave System Katman etkinliğinin gerçek gönderilme ve işlenmesini sağlar.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Döndürülen Değerler |
|
Herkese Açık Kullanıcı Adı
Error HandlePlatformTimer( void )
Platform zamanlayıcının sona erme etkinliğini yönetin.
Tüm süresi dolan zamanlayıcıları işlemek için nl::Weave::System::Zamanlayıcı::Handled Schedules. Bu API'nin yalnızca Weave System layer nesnesinin sahibi olan ileti dizisinde çağrıldığı varsayılır.
Ayrıntılar | |
---|---|
İadeler |
Başarı için WEAVE_SYSTEM_NO_ERROR, aksi takdirde hata kodu.
|
Herkese Açık Kullanıcı Seçimi
void HandleSelectResult( int aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet )
Seçili görüşmeden G/Ç işlemini gerçekleştirin.
Bu yöntem, her etkin uç nokta için 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şlangıç
Error Init( void *aContext )
Katman
Layer( void )
Yeni Zamanlayıcı
Error NewTimer( Timer *& aTimerPtr )
Etkinlik Sonrası
Error PostEvent( Object & aTarget, EventType aEventType, uintptr_t aArgument )
Bu işlem, sağlanan bağımsız değişkenle birlikte bu örneğe ait platforma özel etkinlik sırasına gönderilen etkinlik türünü / mesajı yayınlar.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||
Döndürülen Değerler |
|
ChooseSelect
void PrepareSelect( int & aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet, struct timeval & aSleepTime )
select()
için çalışacak dosya açıklayıcı gruplarını hazırlayın.
Ayrıntılar | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
Planlamaİşi
Error ScheduleWork( TimerCompleteFunct aComplete, void *aAppState )
Weave ileti dizisinde en kısa sürede çalıştırılacak, imzası TimerCompleteFunct
olan bir işlevi programlar.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Döndürülen Değerler |
|
PlatformPlatform Verileri
void SetPlatformData( void *aPlatformData )
Bu işlem, müşteriye özel belirtilen platform verilerini daha sonra istemci platformu tarafından alınacak şekilde örneğe ayarlar.
Ayrıntılar | |||
---|---|---|---|
Parametreler |
|
Kapat
Error Shutdown( void )
Zamanlayıcı
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 |
Başarılı yüklemede WEAVE_SYSTEM_NO_ERROR.
|
||||||
İadeler |
Bir zamanlayıcı ayrılamıyorsa WEAVE_SYSTEM_ERROR_NO_MEMORY.
|
||||||
İadeler |
Zamanlayıcının başlatılamadığını gösteren Diğer Değer.
|
Durum
LayerState State( void ) const
Bu, katman nesnesinin mevcut durumunu döndürür.
Uyandırma Seçimi
void WakeSelect( void )
Uyanma borusuna tek bir bayt yazarak file() tanımlayıcılarını kullanarak dosya tanımlayıcılarını izleyen I/O ileti dizisini uyandırın.
Not: WakeSelect()
, HandleSelectResult()
içinde aranıyorsa G/Ç ileti dizisi zaten uyanık olduğu için uyanma hattına yazma işlemi atlanabilir.
Ayrıca, bu yazma işleminin başarısız olup olmadığını da önemsemeyiz. Çünkü, büyük olasılıkla tek hata, borunun dolu olmasıdır. Bu durumda, seçili çağrı dizisi yine de uyandırılacaktır.
Herkese açık statik işlevler
GetClock_Motonik
uint64_t GetClock_Monotonic( void )
Mikrosaniye cinsinden mikromononik sistem süresi döndürür.
Bu işlev, platform tarafından rastgele seçilen bir dönemden sonra mikrosaniye olarak geçen bir süre döndürür. Döndürülen değerin, sistem yeniden başlatmaları arasında sürekli olarak artacağı (yani asla sarmalanmayacağı) garanti edilir. Ayrıca, temeldeki saat kaynağının uyandıktan sonra yeniden başlatma gerektirmeyen herhangi bir sistem uyku modu sırasında sürekli olarak tıklanacağı garanti edilir.
Bazı platformlar, sistemin başlatılmasından itibaren geçen süreyi ölçen bir değer döndürmeyi tercih etse de uygulamalar bunu kullanmamalıdır. Ayrıca, GetClock_Monotonic() için Epoch'un diğer GetClock... işlevlerinden herhangi biriyle aynı olması zorunlu değildir. Bu nedenle, göreli zaman hesaplamaları yalnızca aynı işlev tarafından döndürülen değerlerde gerçekleştirilebilir.
Bu işlevin, ileti dizisi kullanılan tüm platformlarda ileti dizisi açısından güvenli olduğu garanti edilir.
Ayrıntılar | |
---|---|
İadeler |
Rastgele, platform tarafından tanımlanmış bir dönemden bu yana geçen, mikro saniye cinsinden geçen süre.
|
GetClock_MonotonicHiRes
uint64_t GetClock_MonotonicHiRes( void )
Mikrosaniye cinsinden (potansiyel olarak) yüksek çözünürlüklü monoton sistem sistemi döndürür.
Bu işlev, platform tarafından rastgele seçilen bir dönemden sonra mikrosaniye olarak geçen bir süre döndürür. Döndürülen değerin, sistem yeniden başlatmaları arasında sürekli olarak artacağı (yani asla sarmalanmayacağı) garanti edilir. Ancak, sistemin derin uyku durumları sırasında sürekli zamanlayıcının işaretlenmesi için temel alınan zamanlayıcı gerekmez.
Bazı platformlar, GetClock_Monotonic() işlevinden daha yüksek hassasiyete sahip, yüksek çözünürlüklü bir zamanlayıcı kullanarak GetClock_MonotonicHiRes() uygulayabilir. Bu da kademeli saat ayarlamalarına tabi değildir (değişim). Zamanlayıcısı olmayan sistemler sadece GetClock_Monotonic() ile aynı değeri döndürebilir.
GetClock_MonotonicHiRes() tarafından döndürülen zaman aralığının, GetClock_Monotonic() dahil olmak üzere diğer GetClock... işlevlerinden herhangi biriyle aynı olması gerekmez.
Bu işlevin, ileti dizisi kullanılan tüm platformlarda ileti dizisi açısından güvenli olduğu garanti edilir.
Ayrıntılar | |
---|---|
İadeler |
Rastgele, platform tarafından tanımlanmış bir dönemden bu yana geçen, mikro saniye cinsinden geçen süre.
|
GetClock_MonotonicMS
uint64_t GetClock_MonotonicMS( void )
Milisaniye cinsinden monotonik sistem süresi döndürür.
Bu işlev, rastgele bir platform tanımlı dönemden beri 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 asla sarmalanmayacağı) garanti edilir. Ayrıca, temeldeki saat kaynağının uyandıktan sonra yeniden başlatma gerektirmeyen herhangi bir sistem uyku modu sırasında sürekli olarak tıklanacağı garanti edilir.
Bazı platformlar, sistemin başlatılmasından itibaren geçen süreyi ölçen bir değer döndürmeyi tercih etse de uygulamalar bunu kullanmamalıdır. Ayrıca, GetClock_Monotonic() için Epoch'un diğer GetClock... işlevlerinden herhangi biriyle aynı olması zorunlu değildir. Bu nedenle, göreli zaman hesaplamaları yalnızca aynı işlev tarafından döndürülen değerlerde gerçekleştirilebilir.
Bu işlevin, ileti dizisi kullanılan tüm platformlarda ileti dizisi açısından güvenli olduğu garanti edilir.
Ayrıntılar | |
---|---|
İadeler |
Rastgele, platform tarafından tanımlanmış bir dönemden bu yana geçen milisaniye cinsinden süre.
|
GetClock_Gerçek Zamanlı
Error GetClock_RealTime( uint64_t & curTime )
Mikro saniye Unix zaman biçiminde geçerli gerçek (nabız) zamanı döndürür.
Bu yöntem, yerel platformun geçerli gerçek zamanlı kavramını (Mix-saniye cinsinden ölçeklendirilmiş bir Unix zaman değeri olarak ifade eder) döndürür. Temel alınan saatin en az tam saniye hızında (1.000.000 değer) işaretleneceği garanti edilir ancak bazı platformlarda daha hızlı işaretlenebilir.
Temel platform gerçek zamanlı izleme yapabiliyorsa ancak sistem şu anda senkronize edilmemişse GetClock_RealTime(), WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED hatası döndürür.
Gerçek zamanlı izleme yapamayan platformlarda GetClock_RealTime() yöntemi eksik olabilir 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 kullanılan tüm platformlarda ileti dizisi açısından 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 (milisaniye) zamanı, milisaniye Unix zaman biçiminde döndürür.
Bu yöntem, yerel platformun güncel gerçek zamanlı kavramını döndürür. Unix zaman değeri milisaniye olarak ölçeklendirilir. Temel alınan saatin en az tam saniye hızında (1.000.000 değer) işaretleneceği garanti edilir ancak bazı platformlarda daha hızlı işaretlenebilir.
Temel platform gerçek zamanlı izleme yapabiliyorsa ancak sistem şu anda senkronize edilmemişse GetClock_RealTimeMS(), WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED hatası verir.
Gerçek zamanlı izleme yapamayan platformlarda GetClock_RealTimeMS() yöntemi eksik olabilir 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ı veren bir GetClock_RealTimeMS() uygulaması sağlayabilir.
Bu işlevin, ileti dizisi kullanılan tüm platformlarda ileti dizisi açısından güvenli olduğu garanti edilir.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Döndürülen Değerler |
|
SetClock_Gerçek Zamanlı
Error SetClock_RealTime( uint64_t newCurTime )
Platformun gerçek zamanlı (nakit) kavramını belirler.
Uygulamalar yerel platformun mevcut gerçek zamanlı kavramını belirlemek için bu işlevi çağırabilir. Yeni geçerli zaman, mikrosaniye cinsinden ölçeklendirilmiş bir Unix zaman değeri olarak ifade edilir.
Ayarlandıktan sonra, temel platform saatinin en az tam saniye cinsinden ayrıntı düzeyiyle gerçek zamanlı olarak izlenmesi garanti edilir.
Bazı platformlar gerçek zamanlı olarak ayarlanabilecek uygulamaları veya işlemleri kısıtlayabilir. Arayanın gerçek zamanlı olarak değişiklik yapmasına izin verilmezse SetClock_RealTime() işlevi WEAVE_SYSTEM_ERROR_ACCESS_DENIED hatası döndürür.
Gerçek zamanlı izleme yapamayan veya gerçek zamanlı ayarlama olanağı sunmayan platformlarda, SetClock_RealTime() işlevi eksik olabilir ve bu durumda, kendisine referans veren tüm uygulamalar için bir bağlantı hatası ortaya çıkabilir. Alternatif olarak, bu tür platformlar her zaman WEAVE_SYSTEM_ERROR_NOT_SUPPORTED hatası döndüren SetClock_RealTime() uygulaması sağlayabilir.
Bu işlevin, ileti dizisi kullanılan tüm platformlarda ileti dizisi açısından güvenli olduğu garanti edilir.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Döndürülen Değerler |
|