Akkubenachrichtigung

Wenn ein Provider mehrere Komponenten umfasst, kann es hilfreich sein, den Suche nach dem Akkuladestand der einzelnen Komponenten. Ein Beispiel: wenn ein Kopfhörer-Case geöffnet ist und der Seeker den Akkustand für und das Lade-Case selbst.

Zu diesem Zweck kann ein Dienstleister zusätzliche Informationen in die Werbung, die auf den Kontodaten über die Funktion „Schnelles Pairing“ aufbaut, die im Artikel Werbung: Wenn nicht sichtbar:

Zusätzlich zu den Kontodaten muss der Dienstleister ein zusätzliches Feld hinzufügen. und gibt die Akkuwerte an. Das Paket muss Folgendes enthalten:

Oktett Datentyp Beschreibung Wert Obligatorisch?
0 uint8 Flags 0 x 00
(alle Bits für eine zukünftige Verwendung reserviert)
Obligatorisch
1 – s Kontoschlüsseldaten Obligatorisch
S + 1 uint8 Länge und Typ des Akkus
0bLLLLTTTT
  • L = Anzahl der Akkuwerte
  • T = Typ
0bLLLLTTT
  • length = 0b0011 = 3 Werte für Akkus
  • type = 0b0011 (UI-Anzeige anzeigen) oder 0b0100 (UI-Anzeige ausblenden)
Optional
s + 2, s + 3, s + 4 uint8 Akkuwerte
0bSVVVVVVV
  • S = Status (wird geladen oder wird nicht geladen)
  • V = Wert
  • Die Akkuwerte sollten so angeordnet werden, wie der linke Kopfhörer (s + 2), der rechte Kopfhörer (s + 3) und das Case (s + 4).
0bSVVVVVVV
  • status = 0b1 (wird geladen) oder 0b0 (wird nicht geladen)
  • value = Akkustand zwischen 0 und 100 %, 0bS1111111 für unbekannt.
Optional

Um Manipulationen zu verhindern, müssen die obigen Kontoschlüsseldaten leicht geändert, um Akkuinformationen anzuzeigen, wenn die Akkuwerte enthalten sind in der Anzeige. Beim Erstellen des Kontoschlüssels Filter, wird der Wert V durch Kombinieren des Kontos mit einem Salt versehen. Wenn stattdessen auch Akkuinformationen beworben werden, muss der Wert V so konstruiert werden:

  1. Generieren Sie einen Wert V, wobei Folgendes gilt: <ph type="x-smartling-placeholder">
      </ph>
    1. Die ersten 16 Byte sind K.
    2. Die nächsten Bytes sind Salt.
    3. Die verbleibenden Byte sind die Akkuinformationen (von s + 1 bis s + 4). einschließlich Länge und Typbyte aus der obigen Tabelle).

Wie im Feld für die Länge und den Akkutyp oben angemerkt, können Sie 0b0011 oder 0b0100.

  • 0b0011 – Zu verwenden, wenn der Anbieter möchte, dass der Seeker eine Angabe im Benutzeroberfläche der Akkuwerte
  • 0b0100 – Verwenden Sie diese Option, wenn der Anbieter möchte, dass der Seeker die Angabe blendet, wenn sie wird bereits angezeigt.

Ein häufiger Anwendungsfall hierfür ist die Verwendung von 0b0011, wenn der Fall geöffnet und 0b0100, wenn die Kopfhörer aus dem Lade-Case entfernt wurden oder wieder geschlossen wurden.

  //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];
  }

Um eine Nachverfolgung zu verhindern, sollte der Anbieter keine Akku-Rohdaten in die Werbung schalten. Sie kann stattdessen über RFCOMM gesendet werden, wenn eine Verbindung zu Für Seeker siehe Nachrichtenstream: Geräteinformationen.