BLE geliştirme: GATT nedir ve nasıl çalışır?

İçindekiler

GATT Kavramı

BLE ile ilgili geliştirmeyi gerçekleştirmek için belli temel bilgilere sahip olmamız gerekiyor, tabi ki çok basit olması gerekiyor.

GATT Cihaz rolü:

Anlaşılması gereken ilk şey, bu iki rol arasındaki ayrımın donanım düzeyinde olduğu ve bunların çiftler halinde görünen göreceli kavramlar olduğudur:

"Merkezi cihaz": nispeten güçlüdür; cep telefonları, tabletler vb. gibi çevresel cihazları taramak ve bağlamak için kullanılır.

"Çevresel cihaz": işlev nispeten basittir, güç tüketimi azdır ve bileklikler, akıllı termometreler vb. gibi verileri sağlamak için merkezi cihaz bağlanır.

Aslında en temel düzeyde bağlantı kurma sürecinde farklı roller arasında ayrım yapılması gerekir. Bir Bluetooth cihazının varlığını başkalarına duyurmak istiyorsa sürekli olarak dış dünyaya yayın yapması gerektiğini, bağlantının kurulabilmesi için ise karşı tarafın yayın paketini tarayıp yanıt vermesi gerektiğini biliyoruz. Bu süreçte yayından sorumlu kişi Peripheral, Central ise taramadan sorumludur.

İkisi arasındaki bağlantı süreci hakkında not:

Merkezi cihaz aynı anda birden fazla çevresel cihaza bağlanabilir. Çevresel cihaz bağlandığında yayını hemen durdurur ve bağlantı kesildikten sonra yayına devam eder. Yalnızca bir cihaz herhangi bir zamanda bağlanmayı deneyerek bağlantıları sıraya koyabilir.

GATT protokol

BLE teknolojisi GATT'a dayalı olarak iletişim kurar. GATT bir nitelik iletim protokolüdür. Öznitelik iletimi için bir uygulama katmanı protokolü olarak kabul edilebilir.

Yapısı çok basittir:   

Bunu xml olarak anlayabilirsiniz:

Her GATT, farklı işlevleri yerine getiren Hizmetlerden oluşur;

Her Hizmet farklı Niteliklerden oluşur;

Her Özellik bir değerden ve bir veya daha fazla Tanımlayıcıdan oluşur;

Hizmet ve Karakteristik etiketlere eşdeğerdir (Hizmet kategorisine eşdeğerdir ve Karakteristik ismine eşdeğerdir), değer aslında veri içerir ve Tanımlayıcı bu değerin açıklaması ve açıklamasıdır. Elbette farklı açılardan anlatıp anlatabiliriz. Açıklama, böylece birden fazla Tanımlayıcı olabilir.

Örneğin: Yaygın Xiaomi Mi Band bir BLE cihazıdır (varsayılmıştır) üç Hizmet içerir; bunlar cihaz bilgilerini sağlayan Hizmet, adımlar sağlayan Hizmet ve kalp atış hızını algılayan Hizmettir;

Cihaz bilgileri hizmetinde yer alan karakteristik, üretici bilgilerini, donanım bilgilerini, sürüm bilgilerini vb. içerir; kalp atış hızı Hizmeti, kalp atış hızı karakteristiğini vb. içerir ve kalp atış hızı özelliğindeki değer aslında kalp atış hızı verilerini içerir ve tanımlayıcı, değerdir. Açıklama, değer birimi, açıklama, izin vb. gibi.

GATT C/S

GATT'ı önceden anladığımızda GATT'ın tipik bir C/S modu olduğunu biliyoruz. C/S olduğu için Sunucu ve istemci arasında ayrım yapmamız gerekiyor.

"GATT sunucusu" ve "GATT istemcisi". Bu iki rolün var olduğu aşama, bağlantı kurulduktan sonraki aşamadır ve diyaloğun durumuna göre ayrılırlar. Veriyi tutan tarafa GATT sunucusu, verilere erişen tarafa da GATT istemcisi denildiğini anlamak kolaydır.

Bu daha önce bahsettiğimiz cihaz rolünden farklı düzeyde bir kavramdır ve bunu ayırt etmek gerekir. Açıklamak için basit bir örnek kullanalım:

Örnek olarak cep telefonu ve saat örneğini ele alalım. Cep telefonu ile cep telefonu arasında bağlantı kurulmadan önce, saatin Bluetooth cihazını aramak için cep telefonunun Bluetooth arama fonksiyonunu kullanıyoruz. Bu işlem sırasında saatin diğer cihazların varlığını bilmesi için BLE yayını yaptığı aşikardır. , bu süreçte çevre biriminin rolü vardır ve tarama görevinden cep telefonu sorumludur ve doğal olarak Merkezin rolünü oynar; İkisi bir GATT bağlantısı kurduktan sonra, cep telefonunun saatten adım sayısı gibi sensör verilerini okuması gerektiğinde, iki etkileşimli veri saate kaydedilir, dolayısıyla şu anda saat GATT'ın rolüdür. sunucu ve cep telefonu doğal olarak GATT istemcisidir; ve saat, cep telefonundan SMS çağrılarını ve diğer bilgileri okumak istediğinde, verilerin koruyucusu Cep telefonu olur, dolayısıyla cep telefonu şu anda sunucu, saat ise istemcidir.

Hizmet/Özellik

Yukarıda bunları zaten algısal olarak anlamıştık, sonra da bazı pratik bilgilere sahibiz:

  1. Karakteristik, verilerin en küçük mantıksal birimidir.
  2. Değer ve tanımlayıcıda saklanan verilerin analizi Sunucu mühendisi tarafından belirlenir, herhangi bir spesifikasyon yoktur.
  3. Hizmet/Karakteristik benzersiz bir UUID tanımlamasına sahiptir, UUID hem 16 bit hem de 128 bit'e sahiptir, anlamamız gereken şey, 16 bit UUID'nin Bluetooth kuruluşu tarafından onaylandığı ve satın alınması gerektiğidir, elbette bazı ortak noktalar vardır olanlar 16 bit UUID'dir. Örneğin Kalp Atış Hızı hizmetinin UUID'si 0X180D olup kodda 0X00001800-0000-1000-8000-00805f9b34fb olarak ifade edilir ve diğer bitler sabittir. 128 bit UUID özelleştirilebilir.
  4. GATT bağlantıları özeldir.

En gidin