Pil Bildirimi

Bir Sağlayıcı birden fazla bileşen içerdiğinde, Sağlayıcı'ya bu durumu bildirmek için Her bileşen için pil seviyesini araştırır. Buna örnek olarak kulaklığının şarjı açıldığında ve arayan kişinin cihazın pilini bilmesi gerektiğinde ve kılıfın kendisidir.

Bunu yapabilmek için Sağlayıcı, üzerine inşa edilen Hızlı Eşleme Hesap Verileri'ni temel alır. Reklamcılık: Bulunabilir olmadığında.

Hesap verilerine ek olarak, sağlayıcı ek bir alan içermelidir. pil değerlerini belirtmem gerekir. Paket şunları içermelidir:

Sekiz Veri türü Açıklama Değer Zorunlu mu?
0 uint8 Bayraklar 0x00
(tüm bitler gelecekte kullanım için ayrılmıştır)
Zorunlu
1 - sn. Hesap Önemli Verileri Zorunlu
s + 1 uint8 Pil seviyesi uzunluğu ve türü
0bLLTTTT
  • L = Pil değerlerinin sayısı
  • T = tür
0bLLTTTT
  • uzunluk = 0b0011 = 3 pil değeri
  • type = 0b0011 (kullanıcı arayüzü göstergesini göster) veya 0b0100 (kullanıcı arayüzü göstergesini gizle)
İsteğe bağlı
s + 2, s + 3, s + 4 uint8 Pil değerleri
0bSVVVVVVV
  • S = durum (şarj oluyor veya şarj olmuyor)
  • V = değer
  • Pil değerleri sol kulaklık (s + 2), sağ kulaklık (s + 3) ve kılıf (s + 4) şeklinde sıralanmalıdır.
0bSVVVVVVV
  • durum = 0b1 (şarj oluyor) veya 0b0 (şarj olmuyor)
  • değer = yüzde 0 ile 100 arasında pil seviyesi, bilinmiyor için 0bS1111111.
İsteğe bağlı

İzinsiz değişikliği önlemek için yukarıdaki Hesap Anahtarı Verileri biraz pil değerleri eklendiğinde pil bilgilerini içerecek şekilde değiştirilmiştir bahsedeceğim. Normalde, hesap anahtarını oluştururken filtresini uyguladığınızda V değeri, takviye değer bulur. Bunun yerine, pil bilgilerinin reklamı da yapılırken V değeri aşağıdaki gibi oluşturulmalıdır:

  1. V değerini oluşturun. Bu değer:
    1. İlk 16 bayt K'dır.
    2. Sonraki baytlar Salt'tır.
    3. Kalan baytlar pil bilgisidir (s + 1 - s + 4 arası) (aşağıdaki tabloda belirtilen uzunluk ve bayt türü dahil) için de aynı değeri kullanın.

Yukarıdaki pil uzunluğu ve türü alanında belirtildiği gibi, tür 0b0011 veya 0b0100.

  • 0b0011 - Sağlayıcı, Arayan'ın Pil değerlerinin kullanıcı arayüzü;
  • 0b0100 - Sağlayıcı, arayanın göstergeyi gizlemesini istediğinde kullanın. zaten gösteriliyor.

Bunun yaygın bir kullanım alanı, destek kaydı açıldığında 0b0011 kullanmaktır. Kulaklıklar destek kaydından çıkarıldığında veya tekrar kapatıldığında 0b0100.

  //The sample code demonstrates that the headset only reports the battery level.

  #define FASTPAIR_ACCOUNT_KEY_SIZE 16

  // In the sample code, the size of salt is 2 bytes.
  #define SALT_SIZE 2

  // 1st byte - Battery level length and type
  // 2nd~4th bytes - Battery values
  #define BAT_LEVEL_SIZE 3

  uint8_t V[FASTPAIR_ACCOUNT_KEY_SIZE + SALT_SIZE + BAT_LEVEL_SIZE + 1] = {0};
  int v_index = 0;

  // The first 16 bytes are K.
  uint8_t K[FASTPAIR_ACCOUNT_KEY_SIZE] = {0};
  fastpair_get_account_key_by_index(keyIndex, K);
  memcpy(V, K, FASTPAIR_ACCOUNT_KEY_SIZE);
  v_index = v_index + FASTPAIR_ACCOUNT_KEY_SIZE;

  // The next byte is the Salt.
  uint8_t randomSalt = (uint8_t)rand();
  V[v_index] = randomSalt;
  v_index = v_index + SALT_SIZE;

  // The remaining bytes are the battery information (from s + 1 to s + 4 including the length and type bytes).

  uint8_t battery_level_len = 0;
  uint8_t battery_level[BAT_LEVEL_SIZE] = {0};

  fastpair_get_bat_level(&battery_level_len, battery_level);

  // type = 0b0011 (show UI indication) or 0b0100 (hide UI indication)
  V[v_index] = (battery_level_len << 4 | (is_show_ui ? 0x3 : 0x4));
  v_index = v_index + 1;

  for (int idx = 0; idx < battery_level_len; idx++) {
          V[v_index++] = battery_level[idx];
  }

Takip edilmesini önlemek için, Sağlayıcı, ham pil verilerini her zaman daha iyidir. Bunun yerine, Arayan kişi, Message Stream: Device Information (Mesaj Akışı: Cihaz Bilgileri) bölümüne göz atın.