Jam Algılama

Kaynağı GitHub'da göster

Herhangi bir OpenThread düğümünde sinyal sıkışma algılama için yapılandırılabilir bir mekanizma sağlamak amacıyla Jam Algılama özelliğini etkinleştirin.

Bu özellik, belirli bir kanalda sinyal sıkışmasını algılamanın gerekli olduğu cihaz sertifikaları için yararlıdır. Her bir sertifika türünün gereksinimlerini karşılayacak şekilde yapılandırılabilir.

Nasıl çalışır?

Jam Algılama, kanalın sıkışıp titremediğini belirlemek için belirli bir zaman aralığında bir düğümün RSSI'sini (alınan sinyal gücü göstergesi) izler.

Jam Algılama etkinleştirildiğinde:

  1. Jam Algılama Durumu false olarak ayarlandı.
  2. Düğüm, RSSI'yi her bir saniyelik aralıkta birden çok kez kullanır.
  3. Bir saniyelik aralığın üzerindeki RSSI, her örnek için yapılandırılmış RSSI Eşiği'nin üzerinde kalırsa bu bir saniye aralığı sıkışmış olarak kabul edilir.
  4. Herhangi bir zamanda, önceden yapılandırılmış Algılama Zaman Aralığı'nda yer alan yapılandırılmış Meşgul Dönemi'nin toplam sayısı, toplamından daha uzun olan bir adet sıkışmış durum toplamından yüksekse veya daha az ise o andaki Jam Algılama Durumu true olarak ayarlanır.
  5. Herhangi bir zamanda, önceden yapılandırılmış Algılama Penceresi'nde bulunan yapılandırılmış Meşgul Süresi'nin toplam sayısı, bir saniyelik aralıklarla oluşturulan sıkıştırılmış içeriğin toplamdan azsa o anda Jam Algılama Durumu false olarak ayarlanır.

Geçmiş Bit Eşlemi

Önceki 63 saniyenin bit eşlemi, OpenThread API ve wpantund mülklerinde alınabilir. Bu bit eşlem, RSSI'nin yapılandırılmış RSSI Eşiği'ni önceki 63 saniyenin her birinde geçip geçmediğini belirtir.

Örneğin, aşağıdaki bit eşlemeyi alabilirsiniz:

0xC248068C416E7FF0

İkili biçime dönüştürme, RSSI'nin yapılandırılmış RSSI Eşiği'nin üzerinde önceki 63 saniye boyunca gittiği her örneği oluşturur:

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

Algılama Aralığı 16 saniyeye ve Yoğun Kullanım Süresi 8 saniyeye ayarlanırsa Jam Algılama Durumu 51 saniyede true olur. Bu, RSSI Eşiği'nin önceki 16 saniye içinde en az 8 tam saniyenin aşıldığı ilk örnektir. Bu örnekte, Jam Algılama Durumu sonraki 13 saniye boyunca true olarak kalır.

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
                                      [00001 01101110 011] = 8 in 16

Yapılandırılmış RSSI Eşiği -45 dBm ise bu bit eşlem aşağıdaki grafikle gösterilebilir:

OT Jam Algılama

Etkinleştirme

Bu özellik varsayılan olarak devre dışıdır.

Tanımlayıcı

Jam Algılama'yı etkinleştirmek için OpenThread'ı oluşturmadan önce openthread/src/core/config/openthread-core-default-config.h dosyasında OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE özelliğini 1 olarak tanımlayın:

#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif

Seçeneğe göre

OpenThread oluştururken -DOT_JAM_DETECTION=ON derleme seçeneğini de kullanabilirsiniz:

./script/build -DOT_JAM_DETECTION=ON

Parametreler

Jam Algılama parametreleri yalnızca OpenThread API, Spinel protokolü veya Ağ İşleyen (NCP) yönetimi için wpantund komut satırı aracı olan wpanctl aracılığıyla yapılandırılabilir. Özellik sonraki yapılandırma olmadan etkinleştirilirse varsayılan değerler uygulanır.

Aşağıdaki parametreleri kullanarak bu özelliği özelleştirin:

Parametreler
RSSI Eşiği
Varsayılan değer
0 dBm
Açıklama
dBm'de kanalın sıkışmış sayılacağı RSSI düzeyini belirtir.
Algılama Aralığı
Varsayılan değer
63 saniye
Açıklama
Sinyal sıkışmasının kontrol edileceği saniye cinsinden pencereyi belirtir. Aralık: 1-63.
Meşgul Dönemi
Varsayılan değer
63 saniye
Açıklama
Jam Algılama'yı tetiklemek için RSSI Eşiği'nin RSSI Eşiği'nin üzerinde olması gereken Algılama Aralığı içinde toplam saniye sayısını belirtir. Algılama Aralığı'ndan küçük olmalıdır. Aralık: 1-63.

API

OpenThread

Jam Algılama özelliğini doğrudan OpenThread uygulamanızda yönetmek için JamDetect API'yi kullanın. OpenThread API aşağıdaki işlevleri sağlar:

  • Özelliği başlatma ve durdurma
  • Jam Algılama Durumunu görüntüle
  • Tüm parametreleri yönet
  • Mevcut Jam algılama geçmişi bit eşlemini alma
  • Jam tespit edildiğinde geri çağırma işlevi kaydetme

Dönen

Spinel protokolü, ana makine cihazının bir NCP ile doğrudan iletişim kurmasını sağlar. Bu protokol, openthread/src/lib/spinel/spinel.h ürününde aşağıdaki işlevleri sağlayan Jam Algılama özelliklerini gösterir:

  • Özelliği başlatma ve durdurma
  • Jam Algılama Durumunu görüntüle
  • Tüm parametreleri yönet
  • Mevcut Jam algılama geçmişi bit eşlemini alma

KSA

OpenThread

Bu özellikle ilgili OpenThread CLI komutu yok.

Wpantund

OpenThread NCP yapılandırmasının Jam Algılama özelliğini yönetmek için wpanctl KSA'yı kullanın. wpantund, NCP sıfırlandıktan sonra tüm Jam Algılama yapılandırmalarını korur.

wpanctl aşağıdaki wpantund mülklerine erişim sağlar:

Özellikler
JamDetection:Status
Biçim
boolean
Açıklama
Salt okunur. Jam Algılama Durumu. Sinyal sıkışmasının tespit edilip edilmediğini belirtir.
JamDetection:Enable
Biçim
boolean
Açıklama
Jam algılama özelliğini etkinleştirin veya devre dışı bırakın.
JamDetection:RssiThreshold
Biçim
dBm
Açıklama
dBm'de, kanalın engellenmiş olarak kabul edileceği eşik RSSI düzeyini belirtir.
JamDetection:Window
Biçim
saniye
Açıklama
Sinyal sıkışmasının kontrol edileceği saniye cinsinden pencereyi belirtir. Aralık: 1-63.
JamDetection:BusyPeriod
Biçim
saniye
Açıklama
Jam Algılama'yı tetiklemek için RSSI değerinin JamDetection:RssiThreshold üzerinde olması gereken, JamDetection:Window içindeki toplam saniye sayısını belirtir. JamDetection:Window değerinden küçük olmalıdır. Aralık: 1-63.
JamDetection:Debug:HistoryBitmap
Biçim
64 bit değeri
Açıklama
İzleme ve hata ayıklama amacıyla Jam Algılama Durumu geçmişi hakkında bilgi sağlar.

Örneğin, NCP için Jam Algılama Durumu bilgilerini almak üzere:

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

NCP'de Jam Algılama RSSI Eşiği'ni -45 dBm olarak ayarlamak için:

sudo wpanctl setprop JamDetection:RssiThreshold -45
sudo wpanctl getprop JamDetection:RssiThreshold
JamDetection:RssiThreshold = -45

wpantund mülkleri hakkında daha fazla bilgi için wpantund GitHub deposuna bakın.