Mimando una disconnessione bluetooth

1

Ho scritto un programma per controllare un dispositivo bluetooth. Sto provando a testare casi in cui il bluetooth si disconnette, cioè se è fuori portata.

Portare fisicamente il dispositivo fuori dal raggio d'azione è una possibilità, ma è piuttosto scomodo e devo andare fuori dal mio ufficio per raggiungere questo obiettivo.

Che cosa posso fare per attivare una disconnessione? C'è, per esempio, un interferente che posso configurare, ad esempio con un telefono Android, che farebbe cadere la connessione? O limitare la potenza di trasmissione Bluetooth? Altre possibilità?

    
posta alexibbb 07.05.2014 - 16:52
fonte

2 risposte

1

Ci sono diversi modi per attivare una disconnessione. Immagino che tu sia principalmente interessato ad innescare un'improvvisa perdita di connessione, non a una graziosa disconnessione.

Alcune cose che ho usato in passato:

  • Porta il dispositivo fuori dall'intervallo
  • Rimuovi la batteria / la fonte di alimentazione (senza interrompere la normale alimentazione - > un'improvvisa perdita di potenza)
  • Metti il dispositivo in una scatola / gabbia schermata di Faraday

Il Bluetooth è stato progettato per funzionare in una banda di frequenza con un sacco di interferenze / rumore, quindi è improbabile che sia possibile attivare in modo affidabile una disconnessione in questo modo.

    
risposta data 07.05.2014 - 17:11
fonte
1

Ecco come mi sono avvicinato a un caso simile in un'applicazione Bluetooth. Il vantaggio è che è possibile testare la logica dell'applicazione senza effettivamente utilizzare un dispositivo o dover configurare una comunicazione. Ciò significa anche che puoi eseguire il test di regressione in modo molto più semplice e veloce.

  1. Distinti dubbi

    Implementa un modulo comms che gestisce la comunicazione Bluetooth, ovvero collega, invia, riceve dati, disconnette. Questo modulo traduce ognuno di questi eventi in commands & responses a livello di applicazione e li passa a un modulo logic che li elabora. In questo modo, logic gestisce tutta la logica dell'applicazione, mentre comms gestisce la comunicazione.

  2. Costruisci un simulatore per il modulo comms , a.k.a driver . Il simulatore dovrebbe agire come il modulo comms , cioè generare e consumare commands & responses . Ma dal momento che è indipendente da qualsiasi comunicazione effettiva, puoi controllare esattamente cosa fa e quando, mentre il modulo logic pensa che in realtà parla al vero modulo comms .

  3. Crea test di unità che utilizzano driver per creare un ambiente controllato per testare il tuo modulo logic .

Ad esempio, un test di unità potrebbe essere così (pseudo-codice):

def test_disconnect():
   # create a new driver and attach it to the logic module
   driver = Driver()
   logic.attach(driver)
   # make a connection, then disconnect
   driver.connect()
   driver.disconnect()
   # check if logic has processed the disconnect
   # (assuming this produces an observable state)
   assert(logic.isDisconnected)
    
risposta data 07.06.2014 - 16:23
fonte

Leggi altre domande sui tag