Modificare le funzionalità in fase di runtime
Poiché le nuove funzionalità (ad es. il dimensionamento dinamico del buffer) possono essere attivate eseguendo l'upgrade del firmware sul provider, vogliamo fornire un modo per ottenere le funzionalità del provider in fase di esecuzione. Per evitare di eseguire query ripetutamente sulle funzionalità, innanzitutto il fornitore deve inviare la revisione del firmware al cercatore tramite lo stream di messaggi quando è connesso. Aggiungiamo quindi un nuovo codice messaggio al gruppo di messaggi esistente, l'evento di informazioni sul dispositivo.
Nome gruppo di messaggi | Valore |
---|---|
Evento relativo alle informazioni del dispositivo | 0x03 |
Nome del codice messaggio | Valore |
---|---|
Revisione del firmware | 0x09 |
Una volta ricevuto il codice di revisione del firmware, il cercatore deve confrontarlo con quello memorizzato nella cache. Se la revisione del firmware è stata modificata, il cercatore aggiornerà la revisione del firmware della cache e eseguirà query sulle funzionalità tramite lo stream di messaggi.
Consentiamo inoltre al fornitore di inviare direttamente le funzionalità al cercatore senza dover prima effettuare una richiesta, perché prevediamo che, in futuro, dispositivi più sofisticati (magari basati su Android) effettueranno una configurazione dinamica in base ai flag per la stessa revisione del firmware.
Aggiungiamo di seguito un nuovo gruppo di messaggi e codici di messaggio.
Nome gruppo di messaggi | Valore |
---|---|
Evento di sincronizzazione delle funzionalità del dispositivo | 0x06 |
Nome del codice messaggio | Valore |
---|---|
Richiesta di aggiornamento delle funzionalità (inviata da Seeker) | 0x01 |
Monitoraggio FHN | 0x03 |
Una volta ricevuto 0x0601
,
- Se il fornitore ha attivato il supporto per il monitoraggio FHN, deve rispondere come segue:
Ottetto | Tipo di dati | Descrizione | Valore |
---|---|---|---|
0 | uint8 | Evento di sincronizzazione delle funzionalità del dispositivo | 0x06 |
1 | uint8 | Monitoraggio FHN | 0x03 |
2 - 3 | uint16 | Lunghezza dati aggiuntiva | 0x0007 |
4 | uint8 | Stato del provisioning FHN | 0x00 se non è stato eseguito il provisioning; 0x01 se è stato eseguito il provisioning da qualsiasi account |
5 - 10 | uint8[] | L'indirizzo MAC BLE corrente del dispositivo | varia |