diff --git a/documentazione.md b/documentazione.md index addb237..dd95c0a 100644 --- a/documentazione.md +++ b/documentazione.md @@ -63,6 +63,35 @@ Potendo opera unicamente nello spazio utente non è stato possibile superare que ### Trasmissione +Il dispositivo dell'utente deve eseguire il broadcast di un beacon bluetooth contenete l'UUID identificativo. +Questa operazione è stata svolta attraverso la classe `BeaconTransmitter` messa a disposizione dalla *Android Beacon Library*. +Inoltre per la modalità di funzionamento *C* è stato necessario prevedere un meccanismo di rotazione delle chiavi. +Questa rotazione viene settata attraverso la funzione `rotateTCN()` che sfrutta un `Handler` per programmare la rotazione dell'UUID. + +``` {.kotlin #lst:rotate-tcn caption="Codice necessario alla torazione del tcn."} +private fun rotateTCN() { + val advertiseHandler = Handler() + val changeTCN: Runnable = object : Runnable { + override fun run() { + tcnManager.nextTcn() + startAdvertising() + advertiseHandler.postDelayed( + this, + TCNManager.ELAPSE_BETWEEN_NEW_TCN + ) + } + } + + advertiseHandler.postDelayed( + changeTCN, + TCNManager.ELAPSE_BETWEEN_NEW_TCN + ) +} +``` + +La scelta della frequenza di *advertising* è stata dettata dai vincoli tracciati dall'API di Android @AdvertiseSettings. +Infatti la libreria permette di trasmettere un beacon o con una frequenza di 1 *Hz*, 3 *Hz* o 10 *Hz*. +Fortunatamente questi vincoli non si sono rilevati troppo limitanti infatti la frequenza di un Hertz, quindi un beacon trasmetto ogni secondo, permette di avere una buona trasmissione e di risparmiare batteria, inoltre in fase di scanning evita che siano registrate più interazioni nello stesso ciclo. ### Scansione