Add transmission

This commit is contained in:
Raffaele Mignone 2020-07-08 21:19:52 +02:00
parent fe3f3a31c6
commit 5de8b3b42b
Signed by: norangebit
GPG Key ID: F5255658CB220573

View File

@ -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