Уведомление о батарее
Когда поставщик включает в себя несколько компонентов, может быть полезно уведомить Искателя об уровне заряда батареи для каждого компонента. Одним из примеров этого может быть случай, когда чехол для наушников открыт, и Искателю необходимо знать аккумулятор для каждого отдельного наушника и сам чехол.
Для этого Поставщик может включить в рекламу дополнительную информацию, созданную на основе данных учетной записи Fast Pair, описанных в разделе «Реклама: когда невозможно обнаружить» .
В дополнение к данным учетной записи Провайдер должен включить дополнительное поле с указанием значений заряда батареи. Пакет должен содержать следующее:
| Октет | Тип данных | Описание | Ценить | Обязательный? | 
|---|---|---|---|---|
| 0 | uint8 | Флаги | 0x00 (все биты зарезервированы для использования в будущем) | Обязательный | 
| 1 - с | Ключевые данные учетной записи | Обязательный | ||
| с + 1 | uint8 | Длина и тип уровня заряда батареи 0bLLLLTTTT 
 | 0bLLLLTTTT 
 | Необязательный | 
| с + 2 , с + 3 , с + 4 | uint8 | Значения батареи 0bSVVVVVVV 
 | 0bSVVVVVVV 
 | Необязательный | 
Чтобы предотвратить несанкционированный доступ, приведенные выше данные ключа учетной записи должны быть слегка изменены, чтобы включить информацию о батарее, когда значения батареи включены в рекламу. Обычно при построении фильтра ключа учетной записи значение V создается путем объединения ключа учетной записи с солью. Вместо этого, когда также объявляется информация о батарее, значение V должно быть построено следующим образом:
-  Создайте значение V , где:- Первые 16 байт — это K.
- Следующие байты — это Salt .
- Остальные байты — это информация о батарее (от s+1 до s+4, включая байты длины и типа из таблицы выше).
 
 Как указано выше в поле длины и типа батареи, тип может быть 0b0011 или 0b0100 .
- 0b0011 — используйте, когда Провайдер хочет, чтобы Искатель показывал в пользовательском интерфейсе значения заряда батареи;
- 0b0100 — используйте, когда Провайдер хочет, чтобы Искатель скрыл индикацию, если она уже отображается.
 Одним из распространенных вариантов использования этого является использование 0b0011 когда корпус открыт, и 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];
  }
Во избежание отслеживания Поставщик не должен постоянно включать в рекламу необработанные данные об аккумуляторе. Вместо этого его можно отправить через RFCOMM при подключении к Seeker, см. Поток сообщений: информация об устройстве .