Afficheur-AREA  1.1
BTS SNIR LaSalle Avignon 2021
Référence de la classe Communication

Déclaration de la classe Communication. Plus de détails...

#include <Communication.h>

Graphe de collaboration de Communication:
Collaboration graph

Signaux

void changementEtatPartie (int idPartie, QString etatPartie)
 Signal de début ou de fin de partie. Plus de détails...
 
void creationPartieDouble (QStringList infoTrame)
 Signal de création d'une partie double. Plus de détails...
 
void creationPartieSimple (QStringList infoTrame)
 Signal de création d'une partie simple. Plus de détails...
 
void debutRencontre (QString club1, QString club2)
 Signal de début de rencontre. Plus de détails...
 
void demandeTempsMort ()
 Signal de demande de temps mort. Plus de détails...
 
void detectionNET (int idPartie)
 Signal de détection d'une sequence de net. Plus de détails...
 
void nouveauScorePartie (int idPartie, int scoreA, int scoreB, int nbManchesJoueurA, int nbManchesJoueurB)
 Signal de rafraichissement du score d'une partie. Plus de détails...
 
void socketConnectee ()
 Signal de connextion de socket. Plus de détails...
 
void socketDeconnectee ()
 Signal de déconnextion de socket. Plus de détails...
 

Fonctions membres publiques

void arreter ()
 Méthode qui arrête le serveur Bluetooth. Plus de détails...
 
 Communication (QObject *parent=nullptr)
 Constructeur de la classe Communication. Plus de détails...
 
void demarrer ()
 Méthode qui démarre le serveur Bluetooth. Plus de détails...
 
QString getTrame () const
 Méthode qui retourne la derniere trame recue. Plus de détails...
 
void initialiser ()
 Méthode qui prépare la connexion Bluetooth en mode serveur. Plus de détails...
 
 ~Communication ()
 Déstructeur de la classe Communication. Plus de détails...
 

Connecteurs privés

void connecterSocket ()
 Méthode slot qui permet la connection au socket du serveur et connecte les signaux et slots. Plus de détails...
 
void connecterTerminalMobile (const QBluetoothAddress &adresse)
 Méthode slot de débug qui signale la connextion d'un teminal mobile. Plus de détails...
 
void deconnecterSocket ()
 Méthode slot de déconnexion du socket. Plus de détails...
 
void deconnecterTerminalMobile (const QBluetoothAddress &adresse)
 Méthode slot de débug qui signale la déconnexion d'un terminal mobile. Plus de détails...
 
void lireTrame ()
 Méthode slot qui lit les trames recues et les séparent en plusieurs trames afin de les traiter. Plus de détails...
 
void recevoirErreurBluetooth (QBluetoothLocalDevice::Error erreurBluetooth)
 Méthode slot de débug qui signale une erreur de Bluetooth. Plus de détails...
 
void recevoirErreurSocket (QBluetoothSocket::SocketError erreurSocket)
 Méthode slot de débug qui signale une erreur du socket. Plus de détails...
 

Fonctions membres privées

bool traiterTrame (QStringList infosTrame)
 Méthode qui raite la trame recue selon le champ TypeTrame. Plus de détails...
 

Attributs privés

QStringList infosTrame
 Les informations transmises dans la trame. Plus de détails...
 
QString nomPeripheriqueLocal
 Nom du périphérique local. Plus de détails...
 
QBluetoothLocalDevice peripheriqueLocal
 L'interface Bluetooth de la Raspberry Pi. Plus de détails...
 
Rencontrerencontre
 Pointeur pour la relation avec la classe Rencontre. Plus de détails...
 
QBluetoothServer * serveur
 Le serveur Bluetooth. Plus de détails...
 
QBluetoothServiceInfo serviceInfo
 Informations sur le service bluetooth. Plus de détails...
 
QBluetoothSocket * socket
 La socket de communication Bluetooth. Plus de détails...
 
QString trame
 Une trame extraite. Plus de détails...
 
QString trames
 Les trames recues. Plus de détails...
 

Description détaillée

Déclaration de la classe Communication.

Cette classe gère la communication Bluetooth

Définition à la ligne 61 du fichier Communication.h.

Documentation des constructeurs et destructeur

◆ Communication()

Communication::Communication ( QObject parent = nullptr)

Constructeur de la classe Communication.

Paramètres
parentL'adresse de l'objet parent

Définition à la ligne 21 du fichier Communication.cpp.

Références initialiser().

21  : QObject(parent), serveur(nullptr), socket(nullptr)
22 {
23  qDebug() << Q_FUNC_INFO;
24 
25  initialiser();
26 }
QBluetoothServer * serveur
Le serveur Bluetooth.
Definition: Communication.h:66
QBluetoothSocket * socket
La socket de communication Bluetooth.
Definition: Communication.h:67
void initialiser()
Méthode qui prépare la connexion Bluetooth en mode serveur.

◆ ~Communication()

Communication::~Communication ( )

Déstructeur de la classe Communication.

Destructeur de la classe Communication.

Définition à la ligne 33 du fichier Communication.cpp.

Références arreter().

34 {
35  qDebug() << Q_FUNC_INFO;
36 
37  arreter();
38 }
void arreter()
Méthode qui arrête le serveur Bluetooth.

Documentation des fonctions membres

◆ arreter()

void Communication::arreter ( )

Méthode qui arrête le serveur Bluetooth.

Arrête la communication Bluetooth en mode serveur.

Définition à la ligne 100 du fichier Communication.cpp.

Références deconnecterSocket(), peripheriqueLocal, serveur, et socket.

Référencé par ~Communication().

101 {
102  if (serveur == nullptr)
103  return;
104 
105  if (socket != nullptr)
106  {
108  }
109 
110  delete serveur;
111  serveur = nullptr;
112  qDebug() << Q_FUNC_INFO;
113 
114  peripheriqueLocal.setHostMode(QBluetoothLocalDevice::HostPoweredOff);
115 }
QBluetoothServer * serveur
Le serveur Bluetooth.
Definition: Communication.h:66
QBluetoothSocket * socket
La socket de communication Bluetooth.
Definition: Communication.h:67
QBluetoothLocalDevice peripheriqueLocal
L&#39;interface Bluetooth de la Raspberry Pi.
Definition: Communication.h:68
void deconnecterSocket()
Méthode slot de déconnexion du socket.

◆ changementEtatPartie

void Communication::changementEtatPartie ( int  idPartie,
QString  etatPartie 
)
signal

Signal de début ou de fin de partie.

Référencé par traiterTrame().

◆ connecterSocket

void Communication::connecterSocket ( )
privateslot

Méthode slot qui permet la connection au socket du serveur et connecte les signaux et slots.

Initialise la connextion et connecte les signaux de la socket.

Définition à la ligne 122 du fichier Communication.cpp.

Références deconnecterSocket(), lireTrame(), recevoirErreurSocket(), serveur, socket, et socketConnectee().

Référencé par demarrer().

123 {
124  socket = serveur->nextPendingConnection();
125  if (!socket)
126  return;
127 
128  qDebug() << Q_FUNC_INFO;
129  socket->open(QIODevice::ReadOnly);
130  connect(socket, SIGNAL(readyRead()), this, SLOT(lireTrame()));
131 
132  connect(socket, SIGNAL(readyRead()), this, SLOT(lireTrame()));
133  connect(socket, SIGNAL(disconnected()), this, SLOT(deconnecterSocket()));
134  connect(socket, SIGNAL(error(QBluetoothSocket::SocketError)), this, SLOT(recevoirErreurSocket(QBluetoothSocket::SocketError)));
135 
136  emit socketConnectee();
137 }
void lireTrame()
Méthode slot qui lit les trames recues et les séparent en plusieurs trames afin de les traiter...
void recevoirErreurSocket(QBluetoothSocket::SocketError erreurSocket)
Méthode slot de débug qui signale une erreur du socket.
QBluetoothServer * serveur
Le serveur Bluetooth.
Definition: Communication.h:66
QBluetoothSocket * socket
La socket de communication Bluetooth.
Definition: Communication.h:67
void socketConnectee()
Signal de connextion de socket.
void deconnecterSocket()
Méthode slot de déconnexion du socket.

◆ connecterTerminalMobile

void Communication::connecterTerminalMobile ( const QBluetoothAddress &  adresse)
privateslot

Méthode slot de débug qui signale la connextion d'un teminal mobile.

Débug les nouvelles connexions a des terminaux mobiles.

Paramètres
adresseAdresse de l'appareil ayant initié la nouvelle connexion

Définition à la ligne 172 du fichier Communication.cpp.

Références peripheriqueLocal.

Référencé par initialiser().

173 {
174  if (peripheriqueLocal.pairingStatus(adresse) == QBluetoothLocalDevice::Paired || peripheriqueLocal.pairingStatus(adresse) == QBluetoothLocalDevice::AuthorizedPaired)
175  {
176  qDebug() << Q_FUNC_INFO << adresse.toString() << "appairé";
177  }
178  else
179  qDebug() << Q_FUNC_INFO << adresse.toString() << "non appairé";
180 }
QBluetoothLocalDevice peripheriqueLocal
L&#39;interface Bluetooth de la Raspberry Pi.
Definition: Communication.h:68

◆ creationPartieDouble

void Communication::creationPartieDouble ( QStringList  infoTrame)
signal

Signal de création d'une partie double.

Référencé par traiterTrame().

◆ creationPartieSimple

void Communication::creationPartieSimple ( QStringList  infoTrame)
signal

Signal de création d'une partie simple.

Référencé par traiterTrame().

◆ debutRencontre

void Communication::debutRencontre ( QString  club1,
QString  club2 
)
signal

Signal de début de rencontre.

Référencé par traiterTrame().

◆ deconnecterSocket

void Communication::deconnecterSocket ( )
privateslot

Méthode slot de déconnexion du socket.

Ferme la connextion libere la mémoire de la socket.

Définition à la ligne 144 du fichier Communication.cpp.

Références socket, et socketDeconnectee().

Référencé par arreter(), et connecterSocket().

145 {
146  if (socket->isOpen())
147  socket->close();
148  delete socket;
149  socket = nullptr;
150  qDebug() << Q_FUNC_INFO;
151 
152  emit socketDeconnectee();
153 }
void socketDeconnectee()
Signal de déconnextion de socket.
QBluetoothSocket * socket
La socket de communication Bluetooth.
Definition: Communication.h:67

◆ deconnecterTerminalMobile

void Communication::deconnecterTerminalMobile ( const QBluetoothAddress &  adresse)
privateslot

Méthode slot de débug qui signale la déconnexion d'un terminal mobile.

Débug les déconnexions des terminaux mobiles.

Paramètres
adresseAdresse de l'appareil ayant terminé la connexion

Définition à la ligne 188 du fichier Communication.cpp.

Référencé par initialiser().

189 {
190  qDebug() << Q_FUNC_INFO << adresse;
191 }

◆ demandeTempsMort

void Communication::demandeTempsMort ( )
signal

Signal de demande de temps mort.

Référencé par traiterTrame().

◆ demarrer()

void Communication::demarrer ( )

Méthode qui démarre le serveur Bluetooth.

Démarre la communication Bluetooth en mode serveur.

Définition à la ligne 74 du fichier Communication.cpp.

Références connecterSocket(), nomService(), peripheriqueLocal, serveur, serviceInfo, et uuidService().

Référencé par IHMAfficheur::initialiserCommunication().

75 {
76  // vérifier la présence du Bluetooth
77  if (peripheriqueLocal.isValid() && serveur == nullptr)
78  {
79  // créer une socket serveur
80  serveur = new QBluetoothServer(QBluetoothServiceInfo::RfcommProtocol, this);
81 
82  // connecter les signaux et les slots
83  connect(serveur, SIGNAL(newConnection()), this, SLOT(connecterSocket()));
84 
85  // placer le serveur en écoute
86  QBluetoothUuid uuid = QBluetoothUuid(uuidService);
87  serviceInfo = serveur->listen(uuid, nomService);
88 
89  qDebug() << Q_FUNC_INFO << "Attente de connexion";
90  }
91  else
92  qDebug() << Q_FUNC_INFO << "Bluetooth non disponible !";
93 }
static const QString uuidService(QStringLiteral("0000110a-0000-1000-8000-00805f9b34fb"))
QBluetoothServiceInfo serviceInfo
Informations sur le service bluetooth.
Definition: Communication.h:69
QBluetoothServer * serveur
Le serveur Bluetooth.
Definition: Communication.h:66
void connecterSocket()
Méthode slot qui permet la connection au socket du serveur et connecte les signaux et slots...
QBluetoothLocalDevice peripheriqueLocal
L&#39;interface Bluetooth de la Raspberry Pi.
Definition: Communication.h:68
static const QString nomService(QStringLiteral("Afficheur_AREA"))

◆ detectionNET

void Communication::detectionNET ( int  idPartie)
signal

Signal de détection d'une sequence de net.

Référencé par traiterTrame().

◆ getTrame()

QString Communication::getTrame ( ) const

Méthode qui retourne la derniere trame recue.

Retourne la derniere trame traitée.

Renvoie
La derniere trame traitée

Définition à la ligne 293 du fichier Communication.cpp.

Références trame.

294 {
295  return trame;
296 }
QString trame
Une trame extraite.
Definition: Communication.h:71

◆ initialiser()

void Communication::initialiser ( )

Méthode qui prépare la connexion Bluetooth en mode serveur.

Initialise la liaison Bluetooth en mode serveur.

Définition à la ligne 45 du fichier Communication.cpp.

Références connecterTerminalMobile(), deconnecterTerminalMobile(), nomPeripheriqueLocal, peripheriqueLocal, et recevoirErreurBluetooth().

Référencé par Communication().

46 {
47  // vérifier la présence du Bluetooth
48  if (peripheriqueLocal.isValid())
49  {
50  // activer le bluetooth
51  peripheriqueLocal.powerOn();
52 
53  // récupérer le nom du périphérique local
55  qDebug() << Q_FUNC_INFO << nomPeripheriqueLocal;
56 
57  // rendre le périphérique local découvrable et jumelable
58  peripheriqueLocal.setHostMode(QBluetoothLocalDevice::HostDiscoverable);
59 
60  // connecter les signaux et les slots
61  connect(&peripheriqueLocal, SIGNAL(deviceConnected(QBluetoothAddress)), this, SLOT(connecterTerminalMobile(QBluetoothAddress)));
62  connect(&peripheriqueLocal, SIGNAL(deviceDisconnected(QBluetoothAddress)), this, SLOT(deconnecterTerminalMobile(QBluetoothAddress)));
63  connect(&peripheriqueLocal, SIGNAL(error(QBluetoothLocalDevice::Error)), this, SLOT(recevoirErreurBluetooth(QBluetoothLocalDevice::Error)));
64  }
65  else
66  qDebug() << Q_FUNC_INFO << "Bluetooth non disponible !";
67 }
void recevoirErreurBluetooth(QBluetoothLocalDevice::Error erreurBluetooth)
Méthode slot de débug qui signale une erreur de Bluetooth.
QString nomPeripheriqueLocal
Nom du périphérique local.
Definition: Communication.h:70
void deconnecterTerminalMobile(const QBluetoothAddress &adresse)
Méthode slot de débug qui signale la déconnexion d&#39;un terminal mobile.
QBluetoothLocalDevice peripheriqueLocal
L&#39;interface Bluetooth de la Raspberry Pi.
Definition: Communication.h:68
void connecterTerminalMobile(const QBluetoothAddress &adresse)
Méthode slot de débug qui signale la connextion d&#39;un teminal mobile.

◆ lireTrame

void Communication::lireTrame ( )
privateslot

Méthode slot qui lit les trames recues et les séparent en plusieurs trames afin de les traiter.

Lis les trames recues dans la socket et les sépare afin de les traiter une par une.

Définition à la ligne 210 du fichier Communication.cpp.

Références ENTETE_TRAME, infosTrame, socket, traiterTrame(), trame, et trames.

Référencé par connecterSocket().

211 {
212  QByteArray donnees;
213 
214  donnees = socket->readAll();
215  qDebug() << Q_FUNC_INFO << donnees;
216 
217  trame += QString(donnees.data());
218  qDebug() << Q_FUNC_INFO << trame;
219 
220  if(trame.startsWith(ENTETE_TRAME) && trame.endsWith("\r\n"))
221  {
222  QStringList trames = trame.split("\r\n", QString::SkipEmptyParts);
223  qDebug() << Q_FUNC_INFO << trames;
224 
225  for(int i = 0; i < trames.count(); ++i)
226  {
227  qDebug() << Q_FUNC_INFO << i << trames[i];
228  infosTrame = trames[i].split(";");
230  }
231 
232  trame.clear();
233  }
234 }
QString trame
Une trame extraite.
Definition: Communication.h:71
bool traiterTrame(QStringList infosTrame)
Méthode qui raite la trame recue selon le champ TypeTrame.
QBluetoothSocket * socket
La socket de communication Bluetooth.
Definition: Communication.h:67
QString trames
Les trames recues.
Definition: Communication.h:72
QStringList infosTrame
Les informations transmises dans la trame.
Definition: Communication.h:73
#define ENTETE_TRAME
Definition: Communication.h:19

◆ nouveauScorePartie

void Communication::nouveauScorePartie ( int  idPartie,
int  scoreA,
int  scoreB,
int  nbManchesJoueurA,
int  nbManchesJoueurB 
)
signal

Signal de rafraichissement du score d'une partie.

Référencé par traiterTrame().

◆ recevoirErreurBluetooth

void Communication::recevoirErreurBluetooth ( QBluetoothLocalDevice::Error  erreurBluetooth)
privateslot

Méthode slot de débug qui signale une erreur de Bluetooth.

Débug les erreurs bluetooth.

Paramètres
erreurBluetoothErreur du bluetooth

Définition à la ligne 199 du fichier Communication.cpp.

Référencé par initialiser().

200 {
201  qDebug() << Q_FUNC_INFO << erreurBluetooth;
202 }

◆ recevoirErreurSocket

void Communication::recevoirErreurSocket ( QBluetoothSocket::SocketError  erreurSocket)
privateslot

Méthode slot de débug qui signale une erreur du socket.

Débug les erreurs liées a la socket Bluetoth.

Paramètres
erreurSocketErreur de la socket

Définition à la ligne 161 du fichier Communication.cpp.

Référencé par connecterSocket().

162 {
163  qDebug() << Q_FUNC_INFO << erreurSocket;
164 }

◆ socketConnectee

void Communication::socketConnectee ( )
signal

Signal de connextion de socket.

Référencé par connecterSocket().

◆ socketDeconnectee

void Communication::socketDeconnectee ( )
signal

Signal de déconnextion de socket.

Référencé par deconnecterSocket().

◆ traiterTrame()

bool Communication::traiterTrame ( QStringList  infosTrame)
private

Méthode qui raite la trame recue selon le champ TypeTrame.

Traite les trames recues et émet des signaux en fonction de la valeur du champ "CHAMP TYPE TRAME".

Paramètres
infosTrameListe des informations contenues dans la trame
Renvoie
Booléen qui renseigne si l'opération a été réalisée ou non

Définition à la ligne 243 du fichier Communication.cpp.

Références CHAMP_TYPE_TRAME, changementEtatPartie(), creationPartieDouble(), creationPartieSimple(), debutRencontre(), demandeTempsMort(), detectionNET(), ETAT, ETAT_PARTIE, ID_PARTIE, INFO_PARTIE, infosTrame, MANCHES_JOUEUR_A, MANCHES_JOUEUR_B, NB_CHAMPS_PARTIE_SIMPLE, NET, NOM_CLUB_1, NOM_CLUB_2, nouveauScorePartie(), POINTS_JOUEUR_A, POINTS_JOUEUR_B, RENCONTRE, SCORE, et TEMPS_MORT.

Référencé par lireTrame().

244 {
245  if(infosTrame.count() < CHAMP_TYPE_TRAME)
246  return false;
247 
248  qDebug() << Q_FUNC_INFO << infosTrame;
249 
250  switch(infosTrame[CHAMP_TYPE_TRAME].toInt())
251  {
253  emit(debutRencontre(infosTrame[NOM_CLUB_1], infosTrame[NOM_CLUB_2]));
254  break;
255 
257  if (infosTrame.count() == NB_CHAMPS_PARTIE_SIMPLE)
258  emit(creationPartieSimple(infosTrame));
259  else
260  emit(creationPartieDouble(infosTrame));
261  break;
262 
263  case TypeTrame::SCORE:
264  emit(nouveauScorePartie(infosTrame[ID_PARTIE].toInt(), infosTrame[POINTS_JOUEUR_A].toInt(), infosTrame[POINTS_JOUEUR_B].toInt(), infosTrame[MANCHES_JOUEUR_A].toInt(), infosTrame[MANCHES_JOUEUR_B].toInt()));
265  break;
266 
268  emit(changementEtatPartie(infosTrame[ID_PARTIE].toInt(),infosTrame[ETAT]));
269  break;
270 
271  case TypeTrame::NET:
272  emit(detectionNET(infosTrame[ID_PARTIE].toInt()));
273  break;
274 
276  emit(demandeTempsMort());
277  break;
278 
279  default:
280  qDebug() << Q_FUNC_INFO << "Type de trame inconnu !";
281  return false;
282  }
283 
284  return true;
285 }
#define POINTS_JOUEUR_A
Definition: Communication.h:27
#define MANCHES_JOUEUR_B
Definition: Communication.h:30
#define NOM_CLUB_1
Definition: Communication.h:22
#define MANCHES_JOUEUR_A
Definition: Communication.h:29
void changementEtatPartie(int idPartie, QString etatPartie)
Signal de début ou de fin de partie.
#define NB_CHAMPS_PARTIE_SIMPLE
Definition: Communication.h:34
void detectionNET(int idPartie)
Signal de détection d&#39;une sequence de net.
#define POINTS_JOUEUR_B
Definition: Communication.h:28
void creationPartieDouble(QStringList infoTrame)
Signal de création d&#39;une partie double.
void creationPartieSimple(QStringList infoTrame)
Signal de création d&#39;une partie simple.
#define ETAT
Definition: Communication.h:32
#define ID_PARTIE
Definition: Communication.h:25
void nouveauScorePartie(int idPartie, int scoreA, int scoreB, int nbManchesJoueurA, int nbManchesJoueurB)
Signal de rafraichissement du score d&#39;une partie.
QStringList infosTrame
Les informations transmises dans la trame.
Definition: Communication.h:73
void demandeTempsMort()
Signal de demande de temps mort.
void debutRencontre(QString club1, QString club2)
Signal de début de rencontre.
#define NOM_CLUB_2
Definition: Communication.h:23
#define CHAMP_TYPE_TRAME
Definition: Communication.h:20

Documentation des données membres

◆ infosTrame

QStringList Communication::infosTrame
private

Les informations transmises dans la trame.

Définition à la ligne 73 du fichier Communication.h.

Référencé par lireTrame(), et traiterTrame().

◆ nomPeripheriqueLocal

QString Communication::nomPeripheriqueLocal
private

Nom du périphérique local.

Définition à la ligne 70 du fichier Communication.h.

Référencé par initialiser().

◆ peripheriqueLocal

QBluetoothLocalDevice Communication::peripheriqueLocal
private

L'interface Bluetooth de la Raspberry Pi.

Définition à la ligne 68 du fichier Communication.h.

Référencé par arreter(), connecterTerminalMobile(), demarrer(), et initialiser().

◆ rencontre

Rencontre* Communication::rencontre
private

Pointeur pour la relation avec la classe Rencontre.

Définition à la ligne 65 du fichier Communication.h.

◆ serveur

QBluetoothServer* Communication::serveur
private

Le serveur Bluetooth.

Définition à la ligne 66 du fichier Communication.h.

Référencé par arreter(), connecterSocket(), et demarrer().

◆ serviceInfo

QBluetoothServiceInfo Communication::serviceInfo
private

Informations sur le service bluetooth.

Définition à la ligne 69 du fichier Communication.h.

Référencé par demarrer().

◆ socket

QBluetoothSocket* Communication::socket
private

La socket de communication Bluetooth.

Définition à la ligne 67 du fichier Communication.h.

Référencé par arreter(), connecterSocket(), deconnecterSocket(), et lireTrame().

◆ trame

QString Communication::trame
private

Une trame extraite.

Définition à la ligne 71 du fichier Communication.h.

Référencé par getTrame(), et lireTrame().

◆ trames

QString Communication::trames
private

Les trames recues.

Définition à la ligne 72 du fichier Communication.h.

Référencé par lireTrame().


La documentation de cette classe a été générée à partir des fichiers suivants :