Modifica funzionalità in fase di runtime

Poiché le nuove funzionalità (ad es. il dimensionamento dinamico del buffer) possono essere abilitate eseguendo l'upgrade del firmware sul provider, vogliamo offrire un modo per ottenere le funzionalità del provider in fase di runtime. Per evitare di eseguire ripetutamente query sulle funzionalità, il provider deve inviare innanzitutto la revisione del firmware al Seeker tramite un flusso di messaggi quando è connesso. Quindi aggiungiamo un nuovo codice messaggio al gruppo di messaggi esistente, ovvero l'evento Informazioni sul dispositivo.

Nome gruppo di messaggi Valore
Evento informazioni del dispositivo 0x03
Nome codice messaggio Valore
Revisione firmware 0x09

Una volta ottenuto il codice di revisione del firmware, il richiedente lo confronta con quello memorizzato nella cache. Se la revisione del firmware è stata modificata, Seeker aggiornerà la revisione del firmware della cache ed eseguirà query sulle funzionalità tramite Message Stream.

Consentiamo inoltre al Provider di inviare funzionalità direttamente al Seeker senza prima richiesta, perché immaginiamo che in futuro i dispositivi più sofisticati (forse quelli basati su Android) eseguiranno una configurazione dinamica in base ai flag per la stessa revisione del firmware.

Quindi aggiungiamo di seguito un nuovo gruppo di messaggi e i relativi codici.

Nome gruppo di messaggi Valore
Evento di sincronizzazione delle funzionalità del dispositivo 0x06
Nome codice messaggio Valore
Aggiornamento della funzionalità di richiesta (inviato da Seeker) 0x01
Monitoraggio FMDN 0x03

Dopo aver ricevuto 0x0601,

  • Se il fornitore ha attivato il supporto per il monitoraggio FMDN, dovrebbe rispondere come segue:
Ottobre Tipo di dati Descrizione Valore
0 uint8 Evento di sincronizzazione delle funzionalità del dispositivo 0x06
1 uint8 Monitoraggio FMDN 0x03
2 - 3 uint16 Lunghezza dei dati aggiuntivi 0x0007
4 uint8 Stato del provisioning FMDN 0x00 se non è stato eseguito il provisioning; 0x01 se è stato eseguito il provisioning da un account
5 - 10 uint8[] L'indirizzo MAC BLE attuale del dispositivo varia