Projet Darts  0.2
BTS SNIR LaSalle Avignon 2020
Référence de la classe Communication

Déclaration de la classe Communication via la liaison Bluetooth (Module Ecran-DARTS) Plus de détails...

#include "communication.h"

Graphe de collaboration de Communication:
Collaboration graph

Types publics

enum  EtatPartie {
  Attente = 0, EnCours = 1, Fin = 2, Pause = 3,
  Regle = 4, AttenteTournois = 5, Tournois
}
 contient les different etat de la partie Plus de détails...
 

Connecteurs publics

void miseAJourEtatPartieAttenteTournois ()
 Slot appelé pour mettre à jour l'état de la partie à attenteTournois. Plus de détails...
 
void miseAJourEtatPartieEnCours ()
 Slot appelé pour mettre à jour l'état de la partie à EnCours. Plus de détails...
 
void miseAJourEtatPartieFin ()
 Slot appelé pour mettre à jour l'état de la partie à Fin. Plus de détails...
 
void miseAJourEtatPartieTournois ()
 Slot appelé pour mettre à jour l'état de la partie à tournois. Plus de détails...
 

Signaux

void afficherAttenteConnexion ()
 signal émis quand un appareil se déconnecte Plus de détails...
 
void afficherRegle (QString regle)
 signal emit pour afficher les regles Plus de détails...
 
void appareilConnecter ()
 signal émis quand un nouvel appareil est connecté Plus de détails...
 
void erreurBluetooth (QString erreur)
 signal emit quand un probleme de configuration bluetooth est detecté Plus de détails...
 
void jouerSon (QString)
 
void pause ()
 signal qui mettra en pause la partie Plus de détails...
 
void play ()
 signal qui relancera le chronometrage de la partie la partie Plus de détails...
 
void resetPartie ()
 signal qui reinitialisera la partie en cours Plus de détails...
 
void stopperRegle ()
 signal emit pour stopper la lecture des regles Plus de détails...
 

Fonctions membres publiques

void arreter ()
 Méthode qui arrête le serveur. Plus de détails...
 
 Communication (Darts *darts, QObject *parent=nullptr)
 constructeur de la classe Communication Plus de détails...
 
void demarrer ()
 Méthode qui démarre le serveur. Plus de détails...
 
int getEtatPartie ()
 Méthode qui permet de recuperer l'etat de la partie. Plus de détails...
 
void miseAJourEtatPartieAttente ()
 Méthode appelé pour mettre à jour l'état de la partie à Attente. Plus de détails...
 
void miseAJourEtatPartiePause ()
 Méthode appelé pour mettre à jour l'état de la partie à Pause. Plus de détails...
 
void miseAJourEtatPartieRegle ()
 Méthode appelé pour mettre à jour l'état de la partie à regle. Plus de détails...
 
void parametrerBluetooth ()
 Méthode qui configure la connexion Bluetooth en mode serveur. Plus de détails...
 
 ~Communication ()
 destructeur de la classe Communication Plus de détails...
 

Connecteurs privés

void deviceConnected (const QBluetoothAddress &adresse)
 Slot appelé quand un nouvel appareil est connecté Plus de détails...
 
void deviceDisconnected (const QBluetoothAddress &adresse)
 Slot appelé quand un appareil est déconnecté Plus de détails...
 
void error (QBluetoothLocalDevice::Error erreur)
 Slot appelé quand il y a une erreur avec l'appareil bluetooth. Plus de détails...
 
void nouveauClient ()
 Slot appelé quand un nouveau client veut se connecter. Plus de détails...
 
void socketDisconnected ()
 Slot appelé quand la communication est deconnectée. Plus de détails...
 
void socketReadyRead ()
 Slot appelé quand une nouvelle trame est disponible. Plus de détails...
 

Fonctions membres privées

void decomposerTrame ()
 Méthode qui decompose la trame reçue. Plus de détails...
 
void decomposerTrameTournois ()
 Méthode qui extrait les paramètres de la trame TOURNOIS. Plus de détails...
 
bool estValide ()
 Méthode qui test si la trame est valide. Plus de détails...
 
void extraireParametresTrameRegle ()
 Méthode qui extrait les paramètres de la trame REGLE. Plus de détails...
 
void extraireParametresTrameStart (QStringList &joueurs, QString &modeJeu)
 Méthode qui extrait les paramètres de la trame START. Plus de détails...
 
void reamorcerPartie ()
 Méthode qui relance la partie. Plus de détails...
 
void relancerPartie ()
 Méthode qui gere l'initialisation d'une partie de flechette. Plus de détails...
 

Attributs privés

Dartsdarts
 Association avec l'objet darts. Plus de détails...
 
EtatPartie etatPartie
 L'état de la partie. Plus de détails...
 
int etatPrecedent
 Contient l'etat dans lequel se trouver l'application. Plus de détails...
 
QBluetoothLocalDevice localDevice
 L'interface Bluetooth de la Raspberry Pi. Plus de détails...
 
QString localDeviceName
 Nom du peripherique local. 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
 La trame recue. Plus de détails...
 

Description détaillée

Déclaration de la classe Communication via la liaison Bluetooth (Module Ecran-DARTS)

Cette classe s'occupe de la partie communication Bluetooth en mode serveur (configuration, réception et traitement des trames du protocole DART)

Définition à la ligne 41 du fichier communication.h.

Documentation des énumérations membres

◆ EtatPartie

contient les different etat de la partie

Valeurs énumérées
Attente 
EnCours 
Fin 
Pause 
Regle 
AttenteTournois 
Tournois 

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

62  {
63  Attente = 0,
64  EnCours = 1,
65  Fin = 2,
66  Pause = 3,
67  Regle = 4, //État attente pendant la lecture des règles, seule une trame reset peut être reçu pour arrêter la lecture.
68  AttenteTournois = 5,
69  Tournois
70  };

Documentation des constructeurs et destructeur

◆ Communication()

Communication::Communication ( Darts darts,
QObject parent = nullptr 
)
explicit

constructeur de la classe Communication

Paramètres
darts
parent

Définition à la ligne 22 du fichier communication.cpp.

Références miseAJourEtatPartieAttente(), et parametrerBluetooth().

22  : QObject(parent), darts(darts), serveur(nullptr), socket(nullptr), localDeviceName("Ecran-Darts"), trame("")
23 {
24  qDebug() << Q_FUNC_INFO;
25 
27 
29 }
QString trame
La trame recue.
void miseAJourEtatPartieAttente()
Méthode appelé pour mettre à jour l&#39;état de la partie à Attente.
void parametrerBluetooth()
Méthode qui configure la connexion Bluetooth en mode serveur.
QBluetoothServer * serveur
Le serveur Bluetooth.
QBluetoothSocket * socket
La socket de communication Bluetooth.
QString localDeviceName
Nom du peripherique local.
La classe QObject est la classe de base de tous les objets Qt. Elle permet à ces objets Qt de dispose...
Darts * darts
Association avec l&#39;objet darts.
Definition: communication.h:99

◆ ~Communication()

Communication::~Communication ( )

destructeur de la classe Communication

Définition à la ligne 36 du fichier communication.cpp.

Références arreter(), et localDevice.

37 {
38  arreter();
39  localDevice.setHostMode(QBluetoothLocalDevice::HostPoweredOff);
40  qDebug() << Q_FUNC_INFO;
41 }
QBluetoothLocalDevice localDevice
L&#39;interface Bluetooth de la Raspberry Pi.
void arreter()
Méthode qui arrête le serveur.

Documentation des fonctions membres

◆ afficherAttenteConnexion

void Communication::afficherAttenteConnexion ( )
signal

signal émis quand un appareil se déconnecte

Référencé par deviceDisconnected().

◆ afficherRegle

void Communication::afficherRegle ( QString  regle)
signal

signal emit pour afficher les regles

Référencé par extraireParametresTrameRegle(), et extraireParametresTrameStart().

◆ appareilConnecter

void Communication::appareilConnecter ( )
signal

signal émis quand un nouvel appareil est connecté

Référencé par deviceConnected().

◆ arreter()

void Communication::arreter ( )

Méthode qui arrête le serveur.

arrete le serveur

Définition à la ligne 123 du fichier communication.cpp.

Références localDevice, serveur, serviceInfo, et socket.

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

124 {
125  if (!localDevice.isValid())
126  return;
127 
128  if (!serveur)
129  return;
130 
131  serviceInfo.unregisterService();
132 
133  if (socket)
134  {
135  if (socket->isOpen())
136  {
137  socket->close();
138  }
139  delete socket;
140  socket = nullptr;
141  }
142 
143  delete serveur;
144  serveur = nullptr;
145 }
QBluetoothLocalDevice localDevice
L&#39;interface Bluetooth de la Raspberry Pi.
QBluetoothServiceInfo serviceInfo
Informations sur le service bluetooth.
QBluetoothServer * serveur
Le serveur Bluetooth.
QBluetoothSocket * socket
La socket de communication Bluetooth.

◆ decomposerTrame()

void Communication::decomposerTrame ( )
private

Méthode qui decompose la trame reçue.

Méthode qui decompose la trame reçue et signale l'état en fonction du type de trame.

$DART;START;501;1;2;fabien;erwan

$DART;GAME;3;7

$DART;GAME;3;7

$DART;REGLE

$DART;PAUSE

$DART;PLAY

$DART;STOP

$DART;STOP

Définition à la ligne 190 du fichier communication.cpp.

Références Darts::arreterPartie(), darts, decomposerTrameTournois(), DELIMITEUR_FIN, estValide(), etatPartie, etatPrecedent, extraireParametresTrameRegle(), extraireParametresTrameStart(), jouerSon(), miseAJourEtatPartiePause(), pause(), play(), reamorcerPartie(), Darts::receptionnerImpact(), Darts::receptionnerImpactTournois(), Darts::reinitialiserPartie(), relancerPartie(), resetPartie(), stopperRegle(), et trame.

Référencé par socketReadyRead().

191 {
192  if(estValide()) //test si la trame est valide
193  {
194  trame.remove(DELIMITEUR_FIN);
195  if(trame.contains("START") && (etatPartie == EtatPartie::Attente || etatPartie == EtatPartie::Fin))
196  {
197  emit resetPartie();
199 
200  QString modeJeu;
201  QStringList joueurs;
202 
203  extraireParametresTrameStart(joueurs, modeJeu);
204  }
205  else if(trame.contains("GAME") && etatPartie == EtatPartie::EnCours)
206  {
207  darts->receptionnerImpact(trame.section(";",2,2).toInt(), trame.section(";",3,3).toInt());
208  }
209  else if(trame.contains("GAME") && etatPartie == EtatPartie::Tournois)
210  {
211  darts->receptionnerImpactTournois(trame.section(";",2,2).toInt(), trame.section(";",3,3).toInt());
212  }
213  else if(trame.contains("REGLE")&& etatPartie != EtatPartie::Regle)
214  {
216  }
217  else if(trame.contains("PAUSE") && (etatPartie == EtatPartie::EnCours || etatPartie == EtatPartie::Tournois))
218  {
220  emit pause();
222  }
223  else if(trame.contains("PLAY") && etatPartie == EtatPartie::Pause)
224  {
225  emit play();
226  relancerPartie();
227  }
228  else if(trame.contains("SON"))
229  {
230  emit jouerSon(trame.section(";",2,2));
231  }
232  else if(trame.contains("TOURNOIS"))
233  {
235  }
236  else if(trame.contains("RESET")) // quelque soit l'état de la partie /** $DART;RESET */
237  {
238  reamorcerPartie();
239  }
240  else if(trame.contains("STOP") && (etatPartie == EtatPartie::EnCours || etatPartie == EtatPartie::Pause))
241  {
242  darts->arreterPartie();
243  }
244  else if(trame.contains("STOP") && (etatPartie == EtatPartie::Regle)) //permet l'arret des regles en cours de lecture
245  {
246  emit stopperRegle();
247  }
248  else
249  {
250  qDebug() << Q_FUNC_INFO << "Trame non Traité: " << trame;
251  }
252  }
253 }
QString trame
La trame recue.
#define DELIMITEUR_FIN
Définit le délimiteur de fin de trame du protocole DARTS.
Definition: communication.h:30
void stopperRegle()
signal emit pour stopper la lecture des regles
void extraireParametresTrameStart(QStringList &joueurs, QString &modeJeu)
Méthode qui extrait les paramètres de la trame START.
void play()
signal qui relancera le chronometrage de la partie la partie
void reamorcerPartie()
Méthode qui relance la partie.
void jouerSon(QString)
void relancerPartie()
Méthode qui gere l&#39;initialisation d&#39;une partie de flechette.
EtatPartie etatPartie
L&#39;état de la partie.
void miseAJourEtatPartiePause()
Méthode appelé pour mettre à jour l&#39;état de la partie à Pause.
void resetPartie()
signal qui reinitialisera la partie en cours
int etatPrecedent
Contient l&#39;etat dans lequel se trouver l&#39;application.
void receptionnerImpact(int typePoint, int point)
Permets de traiter la réception d&#39;impact.
Definition: darts.cpp:261
void arreterPartie()
arrête la partie
Definition: darts.cpp:462
void extraireParametresTrameRegle()
Méthode qui extrait les paramètres de la trame REGLE.
void receptionnerImpactTournois(int typePoint, int point)
methode qui gere le deroulement de la partie tournois
Definition: darts.cpp:629
bool estValide()
Méthode qui test si la trame est valide.
void pause()
signal qui mettra en pause la partie
void decomposerTrameTournois()
Méthode qui extrait les paramètres de la trame TOURNOIS.
void reinitialiserPartie()
Méthode qui permet de remettre a zero les differents attribut et conteneur pour une nouvelle partie...
Definition: darts.cpp:217
Darts * darts
Association avec l&#39;objet darts.
Definition: communication.h:99

◆ decomposerTrameTournois()

void Communication::decomposerTrameTournois ( )
private

Méthode qui extrait les paramètres de la trame TOURNOIS.

Methode qui decompose la trame TOURNOIS.

$DART;TOURNOIS;CONFIG;501;Tournois inter classe;4;Fabien;Thierry;Erwan;Julia

$DART;TOURNOIS;PLAY

Définition à la ligne 317 du fichier communication.cpp.

Références Darts::configurationTournois(), darts, Darts::demarrerTournois(), etatPartie, Darts::reinitialiserPartie(), et trame.

Référencé par decomposerTrame().

318 {
319  QString modeJeu;
320  QString nomTournois;
321  QStringList joueurs;
322 
323  if(trame.contains("CONFIG") && (etatPartie == EtatPartie::Attente || etatPartie == EtatPartie::Fin))
324  {
325  modeJeu = trame.section(";",3,3);
326 
327  if(trame.section(";",5,5).toInt()%2 !=0)
328  {
329  qDebug() << "Nombre de joueur insuffissant";
330  return;
331  }
332 
334 
335  for(int i = 0;i <= trame.section(";",5,5).toInt();i++) //boucle qui recuperer les noms des differents joueurs
336  {
337  if(trame.section(";",5+i,5+i) == "") //test si le joueur a un nom
338  {
339  joueurs.push_back("Joueur[" + QString::number(i) + "]");
340  }
341  else
342  {
343  joueurs.push_back(trame.section(";",5+i,5+i));
344  }
345  }
346  nomTournois = trame.section(";",4,4);
347  darts->configurationTournois(joueurs, modeJeu, nomTournois);
348 
349  }
350  else if(trame.contains("PLAY") && (etatPartie == EtatPartie::AttenteTournois))
351  {
353  }
354  else
355  {
356  qDebug() << Q_FUNC_INFO << "Trame non Traité: " << trame;
357  }
358 }
QString trame
La trame recue.
void configurationTournois(QStringList joueurList, QString modeJeu, QString nomTournois)
methode utiliser pour configurer le tournois
Definition: darts.cpp:570
void demarrerTournois()
methode appelé pour demarrer le tournois
Definition: darts.cpp:614
EtatPartie etatPartie
L&#39;état de la partie.
void reinitialiserPartie()
Méthode qui permet de remettre a zero les differents attribut et conteneur pour une nouvelle partie...
Definition: darts.cpp:217
Darts * darts
Association avec l&#39;objet darts.
Definition: communication.h:99

◆ demarrer()

void Communication::demarrer ( )

Méthode qui démarre le serveur.

Démarre le serveur.

Définition à la ligne 103 du fichier communication.cpp.

Références localDevice, nouveauClient(), serveur, serviceInfo, serviceNom(), et serviceUuid().

Référencé par Ihm::Ihm().

104 {
105  if (!localDevice.isValid())
106  return;
107 
108  if (!serveur) //Démarre le serveur s'il n'est pas déjà démarré
109  {
110  serveur = new QBluetoothServer(QBluetoothServiceInfo::RfcommProtocol, this);
111  connect(serveur, SIGNAL(newConnection()), this, SLOT(nouveauClient()));
112 
113  QBluetoothUuid uuid = QBluetoothUuid(serviceUuid);
114  serviceInfo = serveur->listen(uuid, serviceNom);
115  }
116 }
static const QString serviceNom(QStringLiteral("Ecran-Darts"))
QBluetoothLocalDevice localDevice
L&#39;interface Bluetooth de la Raspberry Pi.
QBluetoothServiceInfo serviceInfo
Informations sur le service bluetooth.
QBluetoothServer * serveur
Le serveur Bluetooth.
static const QString serviceUuid(QStringLiteral("0000110a-0000-1000-8000-00805f9b34fb"))
void nouveauClient()
Slot appelé quand un nouveau client veut se connecter.

◆ deviceConnected

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

Slot appelé quand un nouvel appareil est connecté

Méthode appelée quand l'appareil est connecté

Paramètres
adresse

Définition à la ligne 415 du fichier communication.cpp.

Références appareilConnecter(), etatPartie, localDevice, play(), et relancerPartie().

Référencé par parametrerBluetooth().

416 {
417  qDebug() << Q_FUNC_INFO << adresse << localDevice.pairingStatus(adresse);
418  QString message = QString::fromUtf8("Demande connexion du client ") + adresse.toString();
419  emit appareilConnecter();
420  if (localDevice.pairingStatus(adresse) == QBluetoothLocalDevice::Paired || localDevice.pairingStatus(adresse) == QBluetoothLocalDevice::AuthorizedPaired)
421  message += " [" + QString::fromUtf8("appairé") + "]";
422  else
423  message += " [" + QString::fromUtf8("non appairé") + "]" ;
424  qDebug() << message << endl;
425 
426  if(etatPartie == EtatPartie::Pause) // si l'appareil est reconnecte, la partie reprend
427  {
428  emit play();
429  relancerPartie();
430  }
431 }
QBluetoothLocalDevice localDevice
L&#39;interface Bluetooth de la Raspberry Pi.
void play()
signal qui relancera le chronometrage de la partie la partie
void relancerPartie()
Méthode qui gere l&#39;initialisation d&#39;une partie de flechette.
EtatPartie etatPartie
L&#39;état de la partie.
void appareilConnecter()
signal émis quand un nouvel appareil est connecté

◆ deviceDisconnected

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

Slot appelé quand un appareil est déconnecté

Méthode appelée quand l'appareil est deconnecté

Paramètres
adresse

Définition à la ligne 439 du fichier communication.cpp.

Références afficherAttenteConnexion(), etatPartie, etatPrecedent, miseAJourEtatPartiePause(), et pause().

Référencé par parametrerBluetooth().

440 {
441  qDebug() << Q_FUNC_INFO << adresse;
443 
444  if(etatPartie == EtatPartie::EnCours || etatPartie == EtatPartie::Tournois) // si l'appareil se deconnecte pendant la partie, il la met donc en pause
445  {
447  emit pause();
449  }
450 }
EtatPartie etatPartie
L&#39;état de la partie.
void miseAJourEtatPartiePause()
Méthode appelé pour mettre à jour l&#39;état de la partie à Pause.
int etatPrecedent
Contient l&#39;etat dans lequel se trouver l&#39;application.
void pause()
signal qui mettra en pause la partie
void afficherAttenteConnexion()
signal émis quand un appareil se déconnecte

◆ erreurBluetooth

void Communication::erreurBluetooth ( QString  erreur)
signal

signal emit quand un probleme de configuration bluetooth est detecté

Référencé par parametrerBluetooth().

◆ error

void Communication::error ( QBluetoothLocalDevice::Error  erreur)
privateslot

Slot appelé quand il y a une erreur avec l'appareil bluetooth.

Méthode appelée quand il y a une erreur avec l'appareil connecté

Paramètres
erreur

Définition à la ligne 458 du fichier communication.cpp.

Référencé par parametrerBluetooth().

459 {
460  qDebug() << Q_FUNC_INFO << erreur;
461 }

◆ estValide()

bool Communication::estValide ( )
private

Méthode qui test si la trame est valide.

Méthode qui teste si la trame reçu est valide.

Renvoie
bool

Définition à la ligne 261 du fichier communication.cpp.

Références DELIMITEUR_FIN, trame, et TYPE_TRAME.

Référencé par decomposerTrame().

262 {
263  if(trame.startsWith(TYPE_TRAME) && trame.endsWith(DELIMITEUR_FIN) && trame.contains(";"))
264  {
265  return true;
266  }
267  else
268  {
269  qDebug() << Q_FUNC_INFO << "Trame non Valide: " << trame;
270  return false;
271  }
272 }
QString trame
La trame recue.
#define DELIMITEUR_FIN
Définit le délimiteur de fin de trame du protocole DARTS.
Definition: communication.h:30
#define TYPE_TRAME
Définit le type de trame du protocole DARTS.
Definition: communication.h:24

◆ extraireParametresTrameRegle()

void Communication::extraireParametresTrameRegle ( )
private

Méthode qui extrait les paramètres de la trame REGLE.

Méthode qui decompose la trame regle.

Définition à la ligne 365 du fichier communication.cpp.

Références afficherRegle(), darts, etatPartie, pause(), Darts::testerModeDeJeu(), et trame.

Référencé par decomposerTrame().

366 {
367  QString regle ="";
368 
369  if(etatPartie != EtatPartie::Pause)
370  emit pause();
371 
372  if(trame.section(";",2,2).contains("DOUBLE_OUT"))
373  {
374  emit afficherRegle("DOUBLE_OUT");
375  }
376  else if(trame.section(";",2,2) == "" && (etatPartie == EtatPartie::EnCours || etatPartie == EtatPartie::Pause))
377  {
379  }
380  else
381  {
382  emit afficherRegle("SANS_DOUBLE_OUT");
383  }
384 }
QString trame
La trame recue.
EtatPartie etatPartie
L&#39;état de la partie.
void afficherRegle(QString regle)
signal emit pour afficher les regles
QString testerModeDeJeu()
Méthode qui teste le mode de jeu.
Definition: darts.cpp:547
void pause()
signal qui mettra en pause la partie
Darts * darts
Association avec l&#39;objet darts.
Definition: communication.h:99

◆ extraireParametresTrameStart()

void Communication::extraireParametresTrameStart ( QStringList &  joueurs,
QString &  modeJeu 
)
private

Méthode qui extrait les paramètres de la trame START.

Méthode qui decompose la trame Start.

Paramètres
joueurs
modeJeu

Définition à la ligne 281 du fichier communication.cpp.

Références afficherRegle(), darts, etatPartie, Darts::initialiserPartie(), pause(), Darts::testerModeDeJeu(), et trame.

Référencé par decomposerTrame().

282 {
283  modeJeu = trame.section(";",2,2);
284 
285  if(trame.section(";",4,4).toInt() == 0) //test effectuer pour verifier que la trame n'est pas une trame de la version du protocol DARTS 0.2
286  return;
287 
288  for(int i = 0;i <= trame.section(";",4,4).toInt();i++) //boucle qui recuperer les noms des differents joueurs
289  {
290  if(trame.section(";",4+i,4+i) == "") //test si le joueur a un nom
291  {
292  joueurs.push_back("Joueur[" + QString::number(i) + "]");
293  }
294  else
295  {
296  joueurs.push_back(trame.section(";",4+i,4+i));
297  }
298  }
299 
300  darts->initialiserPartie(joueurs, modeJeu);
301 
302  if(trame.section(";",3,3) == "1")
303  {
304  if(etatPartie != EtatPartie::Pause)
305  emit pause();
306 
308  }
309 
310 }
QString trame
La trame recue.
EtatPartie etatPartie
L&#39;état de la partie.
void afficherRegle(QString regle)
signal emit pour afficher les regles
void initialiserPartie(QStringList joueurList, QString modeJeu)
Initialise la partie.
Definition: darts.cpp:177
QString testerModeDeJeu()
Méthode qui teste le mode de jeu.
Definition: darts.cpp:547
void pause()
signal qui mettra en pause la partie
Darts * darts
Association avec l&#39;objet darts.
Definition: communication.h:99

◆ getEtatPartie()

int Communication::getEtatPartie ( )

Méthode qui permet de recuperer l'etat de la partie.

Méthode qui retourne l'état de la partie.

Renvoie
int

Définition à la ligne 49 du fichier communication.cpp.

Références etatPartie.

Référencé par Ihm::lancerRegle().

50 {
51  return etatPartie;
52 }
EtatPartie etatPartie
L&#39;état de la partie.

◆ jouerSon

void Communication::jouerSon ( QString  )
signal

Référencé par decomposerTrame().

◆ miseAJourEtatPartieAttente()

void Communication::miseAJourEtatPartieAttente ( )

Méthode appelé pour mettre à jour l'état de la partie à Attente.

Méthode qui met à jour l'état de la partie Attente.

Définition à la ligne 468 du fichier communication.cpp.

Références etatPartie.

Référencé par Communication(), reamorcerPartie(), et Ihm::testerEtatPartie().

469 {
470  qDebug() << Q_FUNC_INFO << "EtatPartie::Attente";
471  etatPartie = EtatPartie::Attente;
472 }
EtatPartie etatPartie
L&#39;état de la partie.

◆ miseAJourEtatPartieAttenteTournois

void Communication::miseAJourEtatPartieAttenteTournois ( )
slot

Slot appelé pour mettre à jour l'état de la partie à attenteTournois.

Méthode qui met à jour l'état de la partie en mode tournois.

Définition à la ligne 535 du fichier communication.cpp.

Références etatPartie.

Référencé par parametrerBluetooth().

536 {
537  qDebug() << Q_FUNC_INFO << "EtatPartie::AttenteTournois";
538  etatPartie = EtatPartie::AttenteTournois;
539 }
EtatPartie etatPartie
L&#39;état de la partie.

◆ miseAJourEtatPartieEnCours

void Communication::miseAJourEtatPartieEnCours ( )
slot

Slot appelé pour mettre à jour l'état de la partie à EnCours.

Méthode qui met à jour l'état de la partie EnCours.

Définition à la ligne 501 du fichier communication.cpp.

Références etatPartie.

Référencé par parametrerBluetooth(), relancerPartie(), et Ihm::testerEtatPartie().

502 {
503  qDebug() << Q_FUNC_INFO << "EtatPartie::EnCours";
504  etatPartie = EtatPartie::EnCours;
505 }
EtatPartie etatPartie
L&#39;état de la partie.

◆ miseAJourEtatPartieFin

void Communication::miseAJourEtatPartieFin ( )
slot

Slot appelé pour mettre à jour l'état de la partie à Fin.

Méthode qui met à jour l'état de la partie Fin.

Définition à la ligne 490 du fichier communication.cpp.

Références etatPartie.

Référencé par parametrerBluetooth(), et Ihm::testerEtatPartie().

491 {
492  qDebug() << Q_FUNC_INFO << "EtatPartie::Fin";
493  etatPartie = EtatPartie::Fin;
494 }
EtatPartie etatPartie
L&#39;état de la partie.

◆ miseAJourEtatPartiePause()

void Communication::miseAJourEtatPartiePause ( )

Méthode appelé pour mettre à jour l'état de la partie à Pause.

Méthode qui met à jour l'état de la partie Pause.

Définition à la ligne 479 du fichier communication.cpp.

Références etatPartie.

Référencé par decomposerTrame(), deviceDisconnected(), et Ihm::testerEtatPartie().

480 {
481  qDebug() << Q_FUNC_INFO << "EtatPartie::Pause";
482  etatPartie = EtatPartie::Pause;
483 }
EtatPartie etatPartie
L&#39;état de la partie.

◆ miseAJourEtatPartieRegle()

Communication::miseAJourEtatPartieRegle ( )

Méthode appelé pour mettre à jour l'état de la partie à regle.

Méthode qui met à jour l'état de la partie en mode tournois.

Méthode qui met à jour l'état de la partie en regle.

Définition à la ligne 512 du fichier communication.cpp.

Références etatPartie.

Référencé par Ihm::lancerRegle().

513 {
514  qDebug() << Q_FUNC_INFO << "EtatPartie::Regle";
515  etatPartie = EtatPartie::Regle;
516 }
EtatPartie etatPartie
L&#39;état de la partie.

◆ miseAJourEtatPartieTournois

void Communication::miseAJourEtatPartieTournois ( )
slot

Slot appelé pour mettre à jour l'état de la partie à tournois.

Définition à la ligne 523 du fichier communication.cpp.

Références etatPartie.

Référencé par parametrerBluetooth(), et relancerPartie().

524 {
525  qDebug() << Q_FUNC_INFO << "EtatPartie::Tournois";
526  etatPartie = EtatPartie::Tournois;
527 }
EtatPartie etatPartie
L&#39;état de la partie.

◆ nouveauClient

void Communication::nouveauClient ( )
privateslot

Slot appelé quand un nouveau client veut se connecter.

Méthode appelée quand un nouveau client se connecte.

Définition à la ligne 152 du fichier communication.cpp.

Références serveur, socket, socketDisconnected(), et socketReadyRead().

Référencé par demarrer().

153 {
154  // on récupère la socket
155  socket = serveur->nextPendingConnection();
156  if (!socket)
157  return;
158 
159  connect(socket, SIGNAL(disconnected()), this, SLOT(socketDisconnected()));
160  connect(socket, SIGNAL(readyRead()), this, SLOT(socketReadyRead()));
161 }
void socketReadyRead()
Slot appelé quand une nouvelle trame est disponible.
void socketDisconnected()
Slot appelé quand la communication est deconnectée.
QBluetoothServer * serveur
Le serveur Bluetooth.
QBluetoothSocket * socket
La socket de communication Bluetooth.

◆ parametrerBluetooth()

void Communication::parametrerBluetooth ( )

Méthode qui configure la connexion Bluetooth en mode serveur.

configure la communication Bluetooth

Définition à la ligne 59 du fichier communication.cpp.

Références darts, deviceConnected(), deviceDisconnected(), erreurBluetooth(), error(), localDevice, localDeviceName, miseAJourEtatPartieAttenteTournois(), miseAJourEtatPartieEnCours(), miseAJourEtatPartieFin(), et miseAJourEtatPartieTournois().

Référencé par Communication().

60 {
61  if (!localDevice.isValid())
62  {
63  qDebug() << Q_FUNC_INFO << "Communication Bluetooth locale valide : " << localDevice.isValid();
64  emit erreurBluetooth("Communication Bluetooth locale valide : " + QString::number(localDevice.isValid()));
65 
66  return;
67  }
68  else
69  {
70  // active le bluetooth
71  localDevice.powerOn();
72 
73  // lire le nom de l'appareil local
75 
76 
77  //localDevice.setHostMode(QBluetoothLocalDevice::HostConnectable);
78 
79  //ou
80 
81  //les appareil qui ne sont pas jumelé peuvent decouvrir ecran-DARTS
82  localDevice.setHostMode(QBluetoothLocalDevice::HostDiscoverable);
83 
84  QList<QBluetoothAddress> remotes;
85  remotes = localDevice.connectedDevices();
86 
87  connect(&localDevice, SIGNAL(deviceConnected(QBluetoothAddress)), this, SLOT(deviceConnected(QBluetoothAddress)));
88  connect(&localDevice, SIGNAL(deviceDisconnected(QBluetoothAddress)), this, SLOT(deviceDisconnected(QBluetoothAddress)));
89  connect(&localDevice, SIGNAL(error(QBluetoothLocalDevice::Error)), this, SLOT(error(QBluetoothLocalDevice::Error)));
90 
91  connect(darts, SIGNAL(etatPartieFini()), this , SLOT(miseAJourEtatPartieFin()));
92  connect(darts, SIGNAL(etatPartieTournois()), this , SLOT(miseAJourEtatPartieTournois()));
93  connect(darts, SIGNAL(changerEtatPartie()), this , SLOT(miseAJourEtatPartieEnCours()));
94  connect(darts, SIGNAL(etatPartieAttenteTournois()), this, SLOT(miseAJourEtatPartieAttenteTournois()));
95  }
96 }
QBluetoothLocalDevice localDevice
L&#39;interface Bluetooth de la Raspberry Pi.
void error(QBluetoothLocalDevice::Error erreur)
Slot appelé quand il y a une erreur avec l&#39;appareil bluetooth.
void deviceConnected(const QBluetoothAddress &adresse)
Slot appelé quand un nouvel appareil est connecté
QString localDeviceName
Nom du peripherique local.
void miseAJourEtatPartieAttenteTournois()
Slot appelé pour mettre à jour l&#39;état de la partie à attenteTournois.
void miseAJourEtatPartieTournois()
Slot appelé pour mettre à jour l&#39;état de la partie à tournois.
void miseAJourEtatPartieFin()
Slot appelé pour mettre à jour l&#39;état de la partie à Fin.
void miseAJourEtatPartieEnCours()
Slot appelé pour mettre à jour l&#39;état de la partie à EnCours.
void erreurBluetooth(QString erreur)
signal emit quand un probleme de configuration bluetooth est detecté
void deviceDisconnected(const QBluetoothAddress &adresse)
Slot appelé quand un appareil est déconnecté
Darts * darts
Association avec l&#39;objet darts.
Definition: communication.h:99

◆ pause

void Communication::pause ( )
signal

signal qui mettra en pause la partie

Référencé par decomposerTrame(), deviceDisconnected(), extraireParametresTrameRegle(), et extraireParametresTrameStart().

◆ play

void Communication::play ( )
signal

signal qui relancera le chronometrage de la partie la partie

Référencé par decomposerTrame(), et deviceConnected().

◆ reamorcerPartie()

void Communication::reamorcerPartie ( )
private

Méthode qui relance la partie.

Méthode qui reinitialise la partie.

Définition à la ligne 391 du fichier communication.cpp.

Références darts, miseAJourEtatPartieAttente(), Darts::reinitialiserPartie(), et resetPartie().

Référencé par decomposerTrame().

392 {
393  emit resetPartie();
396 }
void miseAJourEtatPartieAttente()
Méthode appelé pour mettre à jour l&#39;état de la partie à Attente.
void resetPartie()
signal qui reinitialisera la partie en cours
void reinitialiserPartie()
Méthode qui permet de remettre a zero les differents attribut et conteneur pour une nouvelle partie...
Definition: darts.cpp:217
Darts * darts
Association avec l&#39;objet darts.
Definition: communication.h:99

◆ relancerPartie()

void Communication::relancerPartie ( )
private

Méthode qui gere l'initialisation d'une partie de flechette.

Methode qui remet la partie dans l'etat dans lequel elle se trouver avant la pause.

Définition à la ligne 546 du fichier communication.cpp.

Références etatPrecedent, miseAJourEtatPartieEnCours(), et miseAJourEtatPartieTournois().

Référencé par decomposerTrame(), et deviceConnected().

547 {
548  if(etatPrecedent == EtatPartie::EnCours)
549  {
551  }
552  else
553  {
555  }
556 }
int etatPrecedent
Contient l&#39;etat dans lequel se trouver l&#39;application.
void miseAJourEtatPartieTournois()
Slot appelé pour mettre à jour l&#39;état de la partie à tournois.
void miseAJourEtatPartieEnCours()
Slot appelé pour mettre à jour l&#39;état de la partie à EnCours.

◆ resetPartie

void Communication::resetPartie ( )
signal

signal qui reinitialisera la partie en cours

Référencé par decomposerTrame(), et reamorcerPartie().

◆ socketDisconnected

void Communication::socketDisconnected ( )
privateslot

Slot appelé quand la communication est deconnectée.

Méthode appelée quand le socket est déconnecté

Définition à la ligne 403 du fichier communication.cpp.

Référencé par nouveauClient().

404 {
405  QString message = QString::fromUtf8("Périphérique déconnecté ");
406  qDebug() << Q_FUNC_INFO << message;
407 }

◆ socketReadyRead

void Communication::socketReadyRead ( )
privateslot

Slot appelé quand une nouvelle trame est disponible.

Méthode appelée quand une trame est disponible.

Définition à la ligne 168 du fichier communication.cpp.

Références decomposerTrame(), socket, et trame.

Référencé par nouveauClient().

169 {
170  QByteArray donnees;
171 
172  while (socket->bytesAvailable())
173  {
174  donnees += socket->readAll();
175  usleep(150000); // cf. timeout
176  }
177 
178  trame = QString(donnees);
179 
180  qDebug() << Q_FUNC_INFO << QString::fromUtf8("Trame reçues : ") << QString(donnees);
181 
182  decomposerTrame();
183 }
QString trame
La trame recue.
void decomposerTrame()
Méthode qui decompose la trame reçue.
QBluetoothSocket * socket
La socket de communication Bluetooth.

◆ stopperRegle

void Communication::stopperRegle ( )
signal

signal emit pour stopper la lecture des regles

Référencé par decomposerTrame().

Documentation des données membres

◆ darts

Darts* Communication::darts
private

◆ etatPartie

◆ etatPrecedent

int Communication::etatPrecedent
private

Contient l'etat dans lequel se trouver l'application.

Définition à la ligne 114 du fichier communication.h.

Référencé par decomposerTrame(), deviceDisconnected(), et relancerPartie().

◆ localDevice

QBluetoothLocalDevice Communication::localDevice
private

L'interface Bluetooth de la Raspberry Pi.

Définition à la ligne 102 du fichier communication.h.

Référencé par arreter(), demarrer(), deviceConnected(), parametrerBluetooth(), et ~Communication().

◆ localDeviceName

QString Communication::localDeviceName
private

Nom du peripherique local.

Définition à la ligne 104 du fichier communication.h.

Référencé par parametrerBluetooth().

◆ serveur

QBluetoothServer* Communication::serveur
private

Le serveur Bluetooth.

Définition à la ligne 100 du fichier communication.h.

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

◆ serviceInfo

QBluetoothServiceInfo Communication::serviceInfo
private

Informations sur le service bluetooth.

Définition à la ligne 103 du fichier communication.h.

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

◆ socket

QBluetoothSocket* Communication::socket
private

La socket de communication Bluetooth.

Définition à la ligne 101 du fichier communication.h.

Référencé par arreter(), nouveauClient(), et socketReadyRead().

◆ trame

QString Communication::trame
private

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