24 qDebug() << Q_FUNC_INFO;
39 localDevice.setHostMode(QBluetoothLocalDevice::HostPoweredOff);
40 qDebug() << Q_FUNC_INFO;
63 qDebug() << Q_FUNC_INFO <<
"Communication Bluetooth locale valide : " <<
localDevice.isValid();
82 localDevice.setHostMode(QBluetoothLocalDevice::HostDiscoverable);
84 QList<QBluetoothAddress> remotes;
89 connect(&
localDevice, SIGNAL(
error(QBluetoothLocalDevice::Error)),
this, SLOT(
error(QBluetoothLocalDevice::Error)));
110 serveur =
new QBluetoothServer(QBluetoothServiceInfo::RfcommProtocol,
this);
172 while (
socket->bytesAvailable())
174 donnees +=
socket->readAll();
178 trame = QString(donnees);
180 qDebug() << Q_FUNC_INFO << QString::fromUtf8(
"Trame reçues : ") << QString(donnees);
228 else if(
trame.contains(
"SON"))
232 else if(
trame.contains(
"TOURNOIS"))
236 else if(
trame.contains(
"RESET"))
250 qDebug() << Q_FUNC_INFO <<
"Trame non Traité: " <<
trame;
269 qDebug() << Q_FUNC_INFO <<
"Trame non Valide: " <<
trame;
283 modeJeu =
trame.section(
";",2,2);
285 if(
trame.section(
";",4,4).toInt() == 0)
288 for(
int i = 0;i <=
trame.section(
";",4,4).toInt();i++)
290 if(
trame.section(
";",4+i,4+i) ==
"")
292 joueurs.push_back(
"Joueur[" + QString::number(i) +
"]");
296 joueurs.push_back(
trame.section(
";",4+i,4+i));
302 if(
trame.section(
";",3,3) ==
"1")
325 modeJeu =
trame.section(
";",3,3);
327 if(
trame.section(
";",5,5).toInt()%2 !=0)
329 qDebug() <<
"Nombre de joueur insuffissant";
335 for(
int i = 0;i <=
trame.section(
";",5,5).toInt();i++)
337 if(
trame.section(
";",5+i,5+i) ==
"")
339 joueurs.push_back(
"Joueur[" + QString::number(i) +
"]");
343 joueurs.push_back(
trame.section(
";",5+i,5+i));
346 nomTournois =
trame.section(
";",4,4);
350 else if(
trame.contains(
"PLAY") && (
etatPartie == EtatPartie::AttenteTournois))
356 qDebug() << Q_FUNC_INFO <<
"Trame non Traité: " <<
trame;
372 if(
trame.section(
";",2,2).contains(
"DOUBLE_OUT"))
405 QString message = QString::fromUtf8(
"Périphérique déconnecté ");
406 qDebug() << Q_FUNC_INFO << message;
417 qDebug() << Q_FUNC_INFO << adresse <<
localDevice.pairingStatus(adresse);
418 QString message = QString::fromUtf8(
"Demande connexion du client ") + adresse.toString();
420 if (
localDevice.pairingStatus(adresse) == QBluetoothLocalDevice::Paired ||
localDevice.pairingStatus(adresse) == QBluetoothLocalDevice::AuthorizedPaired)
421 message +=
" [" + QString::fromUtf8(
"appairé") +
"]";
423 message +=
" [" + QString::fromUtf8(
"non appairé") +
"]" ;
424 qDebug() << message << endl;
441 qDebug() << Q_FUNC_INFO << adresse;
460 qDebug() << Q_FUNC_INFO << erreur;
470 qDebug() << Q_FUNC_INFO <<
"EtatPartie::Attente";
481 qDebug() << Q_FUNC_INFO <<
"EtatPartie::Pause";
492 qDebug() << Q_FUNC_INFO <<
"EtatPartie::Fin";
503 qDebug() << Q_FUNC_INFO <<
"EtatPartie::EnCours";
514 qDebug() << Q_FUNC_INFO <<
"EtatPartie::Regle";
525 qDebug() << Q_FUNC_INFO <<
"EtatPartie::Tournois";
537 qDebug() << Q_FUNC_INFO <<
"EtatPartie::AttenteTournois";
QString trame
La trame recue.
void miseAJourEtatPartieAttente()
Méthode appelé pour mettre à jour l'état de la partie à Attente.
#define DELIMITEUR_FIN
Définit le délimiteur de fin de trame du protocole DARTS.
Déclaration de la classe Communication (Module Ecran-DARTS)
void decomposerTrame()
Méthode qui decompose la trame reçue.
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 socketReadyRead()
Slot appelé quand une nouvelle trame est disponible.
void configurationTournois(QStringList joueurList, QString modeJeu, QString nomTournois)
methode utiliser pour configurer le tournois
~Communication()
destructeur de la classe Communication
static const QString serviceNom(QStringLiteral("Ecran-Darts"))
void parametrerBluetooth()
Méthode qui configure la connexion Bluetooth en mode serveur.
QBluetoothLocalDevice localDevice
L'interface Bluetooth de la Raspberry Pi.
void socketDisconnected()
Slot appelé quand la communication est deconnectée.
void play()
signal qui relancera le chronometrage de la partie la partie
void error(QBluetoothLocalDevice::Error erreur)
Slot appelé quand il y a une erreur avec l'appareil bluetooth.
void reamorcerPartie()
Méthode qui relance la partie.
void relancerPartie()
Méthode qui gere l'initialisation d'une partie de flechette.
void demarrerTournois()
methode appelé pour demarrer le tournois
EtatPartie etatPartie
L'état de la partie.
Communication(Darts *darts, QObject *parent=nullptr)
constructeur de la classe Communication
void miseAJourEtatPartiePause()
Méthode appelé pour mettre à jour l'état de la partie à Pause.
void demarrer()
Méthode qui démarre le serveur.
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.
void resetPartie()
signal qui reinitialisera la partie en cours
void deviceConnected(const QBluetoothAddress &adresse)
Slot appelé quand un nouvel appareil est connecté
int etatPrecedent
Contient l'etat dans lequel se trouver l'application.
Déclaration de la classe Darts (Module Ecran-DARTS)
void afficherRegle(QString regle)
signal emit pour afficher les regles
QBluetoothSocket * socket
La socket de communication Bluetooth.
void receptionnerImpact(int typePoint, int point)
Permets de traiter la réception d'impact.
void arreterPartie()
arrête la partie
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
void appareilConnecter()
signal émis quand un nouvel appareil est connecté
QString localDeviceName
Nom du peripherique local.
void initialiserPartie(QStringList joueurList, QString modeJeu)
Initialise la partie.
void miseAJourEtatPartieAttenteTournois()
Slot appelé pour mettre à jour l'état de la partie à attenteTournois.
int getEtatPartie()
Méthode qui permet de recuperer l'etat de la partie.
void miseAJourEtatPartieTournois()
Slot appelé pour mettre à jour l'état de la partie à tournois.
QString testerModeDeJeu()
Méthode qui teste le mode de jeu.
bool estValide()
Méthode qui test si la trame est valide.
void miseAJourEtatPartieFin()
Slot appelé pour mettre à jour l'état de la partie à Fin.
void miseAJourEtatPartieEnCours()
Slot appelé pour mettre à jour l'état de la partie à EnCours.
La classe QObject est la classe de base de tous les objets Qt. Elle permet à ces objets Qt de dispose...
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é
void pause()
signal qui mettra en pause la partie
void arreter()
Méthode qui arrête le serveur.
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...
Darts * darts
Association avec l'objet darts.
void miseAJourEtatPartieRegle()
Méthode appelé pour mettre à jour l'état de la partie à regle.
void afficherAttenteConnexion()
signal émis quand un appareil se déconnecte
#define TYPE_TRAME
Définit le type de trame du protocole DARTS.