Cómo cambiar las funciones durante el tiempo de ejecución

Dado que se pueden habilitar funciones nuevas (p.ej., el tamaño del búfer dinámico) actualizando el firmware en el proveedor, queremos proporcionar una forma de obtener las capacidades del proveedor durante el tiempo de ejecución. Para evitar consultar las capacidades de forma reiterada, primero, el proveedor debe enviar la revisión del firmware al buscador a través del flujo de mensajes cuando esté conectado. Por lo tanto, agregamos un código de mensaje nuevo al grupo de mensajes existente, el evento de información del dispositivo.

Nombre del grupo de mensajes Valor
Evento de información del dispositivo 0x03
Nombre del código del mensaje Valor
Revisión de firmware 0x09

Cuando obtenga el código de revisión del firmware, el buscador lo comparará con el que está en la caché. Si se cambió la revisión del firmware, el buscador actualizará la revisión del firmware de la caché y consultará las funciones a través de Message Stream.

También permitimos que el proveedor envíe capacidades directamente al buscador sin una solicitud previa, ya que imaginamos que, en el futuro, los dispositivos más sofisticados (tal vez basados en Android) realizarán la configuración dinámica en función de marcas para la misma revisión de firmware.

Por lo tanto, agregamos a continuación un nuevo grupo de mensajes y códigos de mensajes.

Nombre del grupo de mensajes Valor
Evento de sincronización de capacidades del dispositivo 0x06
Nombre del código del mensaje Valor
Solicita actualización de capacidades (enviado desde Seeker) 0x01
Seguimiento de FHN 0x03

Cuando recibas 0x0601,

  • Si el proveedor habilitó la compatibilidad con el seguimiento de FHN, debe responder de la siguiente manera:
Octeto Tipo de datos Descripción Valor
0 uint8 Evento de sincronización de capacidades del dispositivo 0x06
1 uint8 Seguimiento de FHN 0x03
2 - 3 uint16 Longitud de los datos adicionales 0x0007
4 uint8 Estado de aprovisionamiento de FHN 0x00 si no se aprovisionó; 0x01 si lo aprovisionó cualquier cuenta
5 - 10 uint8[] La dirección MAC BLE actual del dispositivo varía