Adres Ataması

Özet

Giriş:

Arayüzler arasında bir dizi karşılıklı bağımlılık olduğundan ve farklı cihaz yapılandırmaları farklı TCP/IP adresi ve rota ataması gerektirmesi nedeniyle, IP adresi ve Rota atamasını kontrol etme mantığının tek bir modülde birleştirilmesi gerekli görülmüştür. WARM, TCP/IP adreslerini ve Weave ile ilgili IP arayüzlerine yönelik rotaları düzgün bir şekilde ekleyip kaldırma amacına hizmet eder. Bu arayüzler etkin<->etkin değil durumundan geçer.

WARM, sıcakProjeConfig.h ve WarmConfig.h aracılığıyla derleme zamanında yapılandırılmak üzere tasarlanmıştır. Sıcak ProjeConfig.h, WARM'ın yürütüleceği cihazın desteklenen özelliklerini doğru bir şekilde yansıtmalıdır.

WARM, TCP/IP yığınının ve İş Parçacığı Arayüzünün yapılandırma şekline bağımlılığını sınırlayan taşınabilir bir modüldür. Bunun için WARM, Platform Entegratörü tarafından uygulanması gereken bir Platform API Grubu kullanır. Ayrıca Platform Entegratörü, Platform kodu tabanındaki uygun yürütme noktalarından çeşitli nl::Warm API çağrıları yapmaktan sorumludur.

Operasyon Teorisi:

Platform kodu tabanı, Kablosuz arayüzü ve İş Parçacığı arayüzü gibi ilgili özelliklerin Durum değişikliğini duyurmak için nl::Warm API'lerini çağırır. Bu nl::Sıcak API'lerden herhangi birine yapılan bir çağrı, WARM'ın Platform::RequestInvokeActions() öğesine bir çağrı yapmasına neden olabilir. Warm::InvokeActions() çağrısı yapacak gerekli işlemlerin yapılması için Platform::RequestInvokeActions() uygulanmalıdır. Bu işlem ilk bakışta gereksiz şekilde dolaylı olarak görünebilir. WARM neden InvokeActions'ı doğrudan çağırmaz? Bu sorunun cevabı, çoklu görev sistemindeki herhangi bir görevin nl::Warm State Change API'lerini çağırmasına izin vermek ve Platform:: API'larını yalnızca belirli bir görevin çağıracağı bir mekanizma sağlamaktır. Platform gereksinimlerini dikkate aldıktan sonra, Platform Entegratörü Platform::RequestInvokeActions() işlevini uygulamayı seçebilir. Böylece, Warm::InvokeActions() çağrısı yaparak tepki verecek uygun göreve bir etkinlik gönderir. Belirli bir platform için böyle bir çoklu görev sorunu olmadığına karar verilirse Platform::RequestInvokeActions() doğrudan Warm():InvokeActions çağrısına uygulanabilir.

Warm::InvokeActions() çağrıldığında WARM mantığı, mevcut Sistem Durumunu inceler ve adresi ve yönlendirme Durumunu Sistem ve Yapılandırma Durumu ile aynı hizaya getirmek için gerekli Platform:: API çağrılarını yapar. Bu çağrılar önceden tanımlanmış bir sırada gerçekleştirilir ve bu API'lerin herhangi biri kPlatformResultInİlerlemesi'ni döndürürse sıralı listenin yürütülmesi askıya alınır ve çıkar. Dahası, bu API'lerden biri kPlatformResultInİlerleme durumunu döndürdüğünde işlemin eşzamansız olarak tamamlanacağı ve WARM mantığının bu işlemin tamamlanmasını beklemesi gerektiği şeklinde yorumlanır. İşlem tamamlandıktan sonra, Platform kodu Warm::ReportActionComplete() işlevini çağırarak kPlatformResultSuccess veya kPlatformResultFailure sonucunu geçirmelidir. Bu çağrının ardından WARM mantığı, sıralı işlem listesinin yürütülmesini yeniden başlatmak için Platform::RequestInvokeActions() işlevini tekrar çağırır.

Bu şekilde WARM kendi görevini gerektirmez, bunun yerine uygun olan Sıcak seçeneğini çağırmak için başka bir göreve güvenir. Buna ek olarak herhangi bir görev, bir veya daha fazla Sistem Durumu Değişikliği API'sini çağırarak entegrasyonu basitleştirebilir.