TREL - Platform

Bu modül, DNS-SD ve UDP/IPv6 kullanan Thread Radio Encapsulation Link (TREL) için platform soyutlamasını içerir.

Özet

Türdefler

otPlatTrelPeerInfo typedef
"_trel._udp" hizmet adında DNS-SD göz atma kullanılarak keşfedilen bir TREL eş bilgisini temsil eder.

İşlevler

otPlatTrelDisable(otInstance *aInstance)
void
TREL platform katmanını devre dışı bırakır.
otPlatTrelEnable(otInstance *aInstance, uint16_t *aUdpPort)
void
TREL platform katmanını başlatır ve etkinleştirir.
otPlatTrelHandleDiscoveredPeerInfo(otInstance *aInstance, const otPlatTrelPeerInfo *aInfo)
void
Bu, keşfedilen TREL benzer bilgilerini bildirmek için platform katmanından geri çağırma işlevidir.
otPlatTrelHandleReceived(otInstance *aInstance, uint8_t *aBuffer, uint16_t aLength)
void
Alınan TREL UDP paketini bildirmek üzere platformdan geri aramadır.
otPlatTrelRegisterService(otInstance *aInstance, uint16_t aPort, const uint8_t *aTxtData, uint8_t aTxtLength)
void
DNS-SD [RFC6763] kullanılarak reklamı yapılacak yeni bir hizmeti kaydeder.
otPlatTrelSend(otInstance *aInstance, const uint8_t *aUdpPayload, uint16_t aUdpPayloadLen, const otSockAddr *aDestSockAddr)
void
TREL UDP paketinin belirli bir hedefe gönderilmesini ister.

Yapılar

otPlatTrelPeerInfo

"_trel._udp" hizmet adında DNS-SD göz atma kullanılarak keşfedilen bir TREL eş bilgisini temsil eder.

Türdefler

otPlatTrelPeerInfo

struct otPlatTrelPeerInfo otPlatTrelPeerInfo

"_trel._udp" hizmet adında DNS-SD göz atma kullanılarak keşfedilen bir TREL eş bilgisini temsil eder.

İşlevler

otPlatTrelDisable

void otPlatTrelDisable(
  otInstance *aInstance
)

TREL platform katmanını devre dışı bırakır.

Bu çağrıdan sonra, platform katmanının "_trel._udp" hizmet adında DNS-SD göz atmayı durdurması, TREL DNS-SD hizmetinin (otPlatTrelRegisterService() kaynağından) reklamını durdurması ve TREL mesajlarını almak için kullanılan UDP soketini kapatması ZORUNLUDUR.

[in] aInstance OpenThread örneği.

otPlatTrelEnable

void otPlatTrelEnable(
  otInstance *aInstance,
  uint16_t *aUdpPort
)

TREL platform katmanını başlatır ve etkinleştirir.

Bu çağrının ardından, platform katmanının aşağıdakileri gerçekleştirmesi ZORUNLUDUR:

1) TREL platform katmanının eşlerden gelen TREL mesajlarını dinlemek ve almak için bir UDP soketi açması ZORUNLUDUR. Yuva, platform katmanı tarafından seçilen geçici bir bağlantı noktası numarasına bağlıdır. Bağlantı noktası numarasının aUdpPort içinde döndürülmesi ZORUNLUDUR. Yuva, TREL'in destekleneceği ağ arayüzlerine de bağlıdır. TREL etkinleştirildiğinde soket ve seçilen bağlantı noktası geçerli kalmalıdır.

2) Platform katmanı, TREL'i destekleyen diğer cihazları keşfetmek için yerel tarama alan adındaki "_trel._udp" hizmet adında devam eden bir DNS-SD göz atma işlemi başlatmalıdır. Devam eden göz atma işlemi iki farklı etkinlik türü oluşturur: "etkinlik ekleme" ve "kaldırma" etkinlikleri. Göz atma başlatıldığında, geçerli olarak ağda bulunan her TREL eşleme için bir "add" etkinliği oluşturur. Bir TREL eşi çevrimdışı olduğunda "remove" etkinliği oluşturulmalıdır. Ancak "remove" etkinlikleri garanti edilmez. Bir TREL hizmet örneği bulunduğunda, keşfedilen örneğin SRV kaydında belirtilen ana makine adında AAAA kaydı için devam eden yeni bir DNS-SD sorgusu başlatılmalıdır. Bir eş için birden fazla ana makine IPv6 adresi bulunursa tüm adresler arasında en yüksek kapsama sahip bir IP bildirilmelidir (aynı kapsamda birden fazla adres varsa rastgele bir adres seçilmelidir).

TREL platformu, otPlatTrelHandleDiscoveredPeerInfo() geri çağırma işlevini kullanarak, bulunan benzerler bilgisini geri VERMELİDİR. Yeni bir eş keşfedildiğinde, mevcut bir girişte bir değişiklik olduğunda (ör. yeni TXT kaydı veya yeni bağlantı noktası numarası ya da yeni IPv6 adresi) ya da eş kaldırıldığında bu geri çağırmanın çağrılması ZORUNLUDUR.

Ayrıntılar
Parametreler
[in] aInstance
OpenThread örneği.
[out] aUdpPort
Platform katmanına göre seçilen bağlantı noktası numarasını döndüren bir işaretçi.

otPlatTrelHandleDiscoveredPeerInfo

void otPlatTrelHandleDiscoveredPeerInfo(
  otInstance *aInstance,
  const otPlatTrelPeerInfo *aInfo
)

Bu, keşfedilen TREL benzer bilgilerini bildirmek için platform katmanından geri çağırma işlevidir.

Ayrıntılar
Parametreler
[in] aInstance
OpenThread örneği.
[in] aInfo
TREL eş bilgisi için işaretçi.

otPlatTrelHandleReceived

void otPlatTrelHandleReceived(
  otInstance *aInstance,
  uint8_t *aBuffer,
  uint16_t aLength
)

Alınan TREL UDP paketini bildirmek üzere platformdan geri aramadır.

Ayrıntılar
Parametreler
[in] aInstance
OpenThread örnek yapısı.
[in] aBuffer
Alınan UDP yükünü içeren bir tampon.
[in] aLength
UDP yük uzunluğu (bayt sayısı).

otPlatTrelRegisterService

void otPlatTrelRegisterService(
  otInstance *aInstance,
  uint16_t aPort,
  const uint8_t *aTxtData,
  uint8_t aTxtLength
)

DNS-SD [RFC6763] kullanılarak reklamı yapılacak yeni bir hizmeti kaydeder.

Hizmet adı: "_trel._udp". Platform, kendi ana makine adını kullanmalıdır. Bu ad, hizmet adı ve yerel DNS-SD alan adıyla birleştirildiğinde tam hizmet örneği adını oluşturur (ör. "example-host._trel._udp.local.").

Hizmet örneği adının göründüğü alan adı, mDNS için "yerel" olur. mDNS olmayan bir yerel DNS-SD hizmeti söz konusu olduğunda, hizmet kaydı için kullanılan alan adı olur.

Bu işleve yapılan sonraki bir çağrı, önceki hizmeti günceller. Bu numara, TXT kayıt verilerini ve/veya bağlantı noktası numarasını güncellemek için kullanılır.

aTxtData arabelleği, bu işlevden dönüşten sonra devam ettirilmiyor. Platform katmanı, işaretçiyi TUTMAMALIDIR ve gerekirse içeriği kopyalamamalıdır.

Ayrıntılar
Parametreler
[in] aInstance
OpenThread örneği.
[in] aPort
Reklamı yapılan hizmetin SRV kaydına eklenecek bağlantı noktası numarası.
[in] aTxtData
Reklamı yapılan hizmete dahil edilecek TXT kaydı verilerine (kodlanmış) işaret eden bir işaretçi.
[in] aTxtLength
aTxtData uzunluğu (bayt sayısı).

otPlatTrelSend

void otPlatTrelSend(
  otInstance *aInstance,
  const uint8_t *aUdpPayload,
  uint16_t aUdpPayloadLen,
  const otSockAddr *aDestSockAddr
)

TREL UDP paketinin belirli bir hedefe gönderilmesini ister.

Ayrıntılar
Parametreler
[in] aInstance
OpenThread örnek yapısı.
[in] aUdpPayload
UDP yüküne işaretçi.
[in] aUdpPayloadLen
Yük uzunluğu (bayt sayısı).
[in] aDestSockAddr
Hedef yuva adresi.

Kaynaklar

OpenThread API Referans konuları, GitHub'da bulunan kaynak koddan gelir. Daha fazla bilgi edinmek veya dokümanlarımıza katkıda bulunmak için Kaynaklar bölümüne bakın.