Mobile-DARTS  1.1
BTS SNIR LaSalle Avignon 2021
TReception.java
Aller à la documentation de ce fichier.
1 package com.lasalle84.mobile_darts;
2 
3 import android.os.Bundle;
4 import android.os.Handler;
5 import android.os.Message;
6 import android.util.Log;
7 
8 import java.io.BufferedReader;
9 import java.io.IOException;
10 import java.io.InputStream;
11 import java.io.InputStreamReader;
12 import java.util.concurrent.locks.ReentrantLock;
13 
26 public class TReception extends Thread
27 {
28  private final String TAG = "_TReception_";
29 
31  private Handler handler;
32  private boolean estFini;
33  private InputStream receiveStream;
34  private final ReentrantLock mutex = new ReentrantLock();
35 
36  TReception(Peripherique peripherique, Handler handler, InputStream flux)
37  {
38  Log.d(TAG,"[TReception] " + peripherique.getNom() + " : " + peripherique.getAdresse());
39  this.peripherique = peripherique;
40  setHandlerActivite(handler);
41  estFini = false;
42  receiveStream = flux;
43  }
44 
50  @Override
51  public void run()
52  {
53  Log.d(TAG,"[run] début " + peripherique.getNom() + " : " + peripherique.getAdresse());
54  BufferedReader reception = new BufferedReader(new InputStreamReader(receiveStream));
55  while(!estFini)
56  {
57  try
58  {
59  String trame = "";
60  if(reception.ready())
61  {
62  trame = reception.readLine();
63  }
64  if(trame.length() > 0)
65  {
66  Log.d(TAG, "[run] trame reçue : " + trame);
67  Message msg = Message.obtain();
68  msg.what = Peripherique.CODE_RECEPTION;
69  Bundle b = new Bundle();
70  b.putString("nom", peripherique.getNom());
71  b.putString("adresse", peripherique.getAdresse());
72  b.putString("donnees", trame);
73  msg.setData(b);
74  handler.sendMessage(msg);
75  }
76  }
77  catch (IOException e)
78  {
79  e.printStackTrace();
80  Log.d(TAG, "Erreur socket read : " + peripherique.getNom());
81  Message msg = Message.obtain();
83  Bundle b = new Bundle();
84  b.putString("nom", peripherique.getNom());
85  b.putString("adresse", peripherique.getAdresse());
86  msg.setData(b);
87  handler.sendMessage(msg);
88  }
89  try
90  {
91  Thread.sleep(250);
92  }
93  catch (InterruptedException e)
94  {
95  e.printStackTrace();
96  }
97  }
98  Message msg = Message.obtain();
99  Bundle b = new Bundle();
100  b.putString("nom", peripherique.getNom());
101  b.putString("adresse", peripherique.getAdresse());
102  b.putInt("etat", Peripherique.CODE_DECONNEXION);
103  b.putString("donnees", "");
104  msg.setData(b);
105  handler.sendMessage(msg);
106 
107  Log.d(TAG,"[run] fin " + peripherique.getNom() + " : " + peripherique.getAdresse());
108  }
109 
114  public void arreter()
115  {
116  Log.d(TAG,"[arreter] " + peripherique.getNom() + " : " + peripherique.getAdresse());
117  if(!estFini)
118  {
119  estFini = true;
120  }
121  try
122  {
123  Thread.sleep(250);
124  }
125  catch (InterruptedException e)
126  {
127  e.printStackTrace();
128  }
129  }
130 
131  public void setHandlerActivite(Handler handler)
132  {
133  Log.d(TAG,"[setHandlerActivite] " + handler);
134  mutex.lock();
135  this.handler = handler;
136  mutex.unlock();
137  }
138 }
void setHandlerActivite(Handler handler)
static final int CODE_DECONNEXION
Code de Deconnexion.
La classe qui contient toute la gestion des periphériques.
void arreter()
Arrêt du Thread permettant l'écoute de trame du périphérique Bluetooth.
InputStream receiveStream
Input du Bluetooth.
Definition: TReception.java:33
String getAdresse()
Méthode qui retourne l'adresse du périphérique.
static final int CODE_ERREUR_RECEVOIR
Code erreur lors de la réception.
La classe qui contient toute la gestion des thread de reception et envoi de trames.
Definition: TReception.java:26
Handler handler
Handler pour faire passer la trame arrivant.
Definition: TReception.java:31
static final int CODE_RECEPTION
Code de TReception.
void run()
Execution du Thread permettant l'écoute de trame du périphérique Bluetooth.
Definition: TReception.java:51
boolean estFini
Thread est fini.
Definition: TReception.java:32
Peripherique peripherique
Peripherique à écouter.
Definition: TReception.java:30
String getNom()
Méthode qui retourne le nom du périphérique.