Jam Algılama

Kaynağı GitHub'da görüntüleyin

Herhangi bir OpenThread düğümünde sinyal sıkışması tespiti 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ılamayı gerektiren cihaz sertifikaları için faydalıdır. Her bir sertifika türünün gereksinimlerini karşılayacak şekilde yapılandırılabilir.

İşleyiş şekli

Jam Algılama, kanalın çalınıp çalınmadığını belirlemek için belirtilen zaman aralığında bir düğümün RSSI'sını (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'yı her bir saniye aralığında birden çok kez örnekler.
  3. Bu bir saniyelik aralıktaki RSSI, her örnek için yapılandırılmış RSSI Eşiği'nin üzerinde kalırsa bir saniyelik aralık sıkışmış olarak kabul edilir.
  4. Sıkıştırılmış bir saniyelik aralıkların toplam sayısıen az: eşittir yapılandırılan toplam sayıYoğun Dönem saniye cinsinden yapılandırılmışAlgılama Penceresi herhangi bir noktada saniye olarak, o zamandaki Jam Algılama Durumutrue ,
  5. Sıkıştırılmış bir saniyelik aralıkların toplam sayısıküçüktür yapılandırılmış toplam sayısıYoğun Dönem önceki yapılandırılmış saniye içindekiAlgılama Penceresi herhangi bir noktada saniye olarak, o zamandaki Jam Algılama Durumufalse ,

Geçmiş Bit Eşlemi

OpenThread API ve wpantund özelliklerinde, önceki 63 saniyenin bir bit eşlemi veri alma için kullanılabilir. Bu bit eşlem, RSSI'nın 63 saniyeden önce oluşturulan yapılandırılmış RSSI Eşiği'ni geçip geçmediğini gösterir.

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

0xC248068C416E7FF0

İkili biçime dönüştürme, RSSI'nın yapılandırılmış olan RSSI Eşiğinin üzerindeki 63 saniye boyunca geçtiği her örneği oluşturur:

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

Algılama Penceresi 16 saniyeye ve Yoğun Dönem 8 saniyeye ayarlanırsa, Jam Algılama Durumu, RSSI Eşiğinin ilk örneği olduğu için 51 saniyede true olur. önceki 16 saniyede en az 8 tam saniyeyi aştı. Bu örnekte, Jam Algılama Durumu önümüzdeki 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 temsil edilebilir:

OT Jam Algılama

Nasıl etkinleştirilir?

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

Tanıma göre

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

#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif

Seçeneğe göre

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

./script/build -DOT_JAM_DETECTION=ON

Parametreler

Jam Algılama parametreleri yalnızca OpenThread API,Spinel protokolü veya Ağ Ortak İşlemci (NCP) yönetimi için wpantund komut satırı aracı wpanctl aracılığıyla yapılandırılabilir. Özellik, daha sonraki bir 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
Kanal sıkışması olarak kabul edilecek, dBm cinsinden eşik RSSI düzeyini belirtir.
Algılama Penceresi
Varsayılan değer
63 saniye
Açıklama
Sinyal sıkışmasının kontrol edileceği pencereyi saniye cinsinden belirtir. Aralık: 1-63.
Meşgul Dönemi
Varsayılan değer
63 saniye
Açıklama
Jam Algılamayı tetiklemek için RSSI'nın RSSI Eşiğinin üzerinde olması gereken Algılama Penceresindeki toplam saniye sayısını belirtir. Algılama Penceresinden 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 Jam Detection 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üleme
  • Tüm parametreleri yönet
  • Mevcut Jam Algılama geçmişi bit eşlemini alma
  • Jam algılandığında geri çağırma işlevini kaydetme

Spinilin

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

  • Özelliği başlatma ve durdurma
  • Jam Algılama Durumunu görüntüleme
  • 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ı için 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ırmasını korur.

wpanctl, aşağıdaki wpantund özelliklerine erişim sağlar:

Özellikler
JamDetection:Status
Biçim
boole
Açıklama
Salt okunur. Jam Algılama Durumu. Sinyal sıkışıklığının algılanıp algılanmadığını belirtir.
JamDetection:Enable
Biçim
boole
Açıklama
Jam Algılama özelliğini etkinleştirin veya devre dışı bırakın.
JamDetection:RssiThreshold
Biçim
dBm
Açıklama
Kanalın engellenen dBm cinsinden eşik RSSI düzeyini belirtir.
JamDetection:Window
Biçim
saniye
Açıklama
Sinyal sıkışmasının kontrol edileceği pencereyi saniye cinsinden belirtir. Aralık: 1-63.
JamDetection:BusyPeriod
Biçim
saniye
Açıklama
Jam Algılamayı tetiklemek için RSSI'nin JamDetection:RssiThreshold üzerinde olması gereken JamDetection:Window içindeki toplam saniye sayısını belirtir. JamDetection:Window boyutundan küçük olmalıdır. Aralık: 1-63.
JamDetection:Debug:HistoryBitmap
Biçim
64 bit değer
Açıklama
İzleme ve hata ayıklama amaçları için Jam Algılama Durumu geçmişi hakkında bilgi sağlar.

Örneğin, bir NCP için Jam Algılama Durumunu almak için:

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

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

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

wpantund özellikleri hakkında daha fazla bilgi için wpantund GitHub deposu'na bakın.