#include "XA_8REED.h" #include "TXA_8REED.h" #include "XA_BASE.h" #include "XA_NOTFIXEDADDR.h" #include #include using namespace std ; // Constructeur sans parametre TXA_8REED::TXA_8REED() { } // Constructeur surcharge TXA_8REED::TXA_8REED(XA_BASE *tBase, unsigned char cAddr, string cName) { XA_8REED::XA_8REED(tBase, cAddr, cName) ; } // Initialisation bool TXA_8REED::init(XA_BASE *tBase, unsigned char cAddr, string cName) { XA_8REED::init(tBase, cAddr, cName) ; } // Selection des tests void TXA_8REED::testsSelect(bool testAuto) { automaticTests = testAuto ; int selection ; do { // Si l'on ne veut pas les tests automatiques if (automaticTests) { selection = 0 ; // Tests if (connexionTest()) { outputTest() ; ledTest() ; } selection = 5 ; // Sortir } // Sinon on lance les tests generaux else { cout << endl << "\t\t****** Tests XA_8REED ******" << endl << endl ; cout << "\tNom de la carte : " << getName() << endl ; cout << "\tAdresse de la carte : " << getAddr() << endl ; cout << " *Tests Generaux - Tapez 0" << endl ; cout << " *Tests Connexion - Tapez 1" << endl ; cout << " *Tests Sorties - Tapez 2" << endl ; cout << " *Tests Led - Tapez 3" << endl ; cout << " *Test adresse - Tapez 4" << endl ; cout << " *Sortie Tests - Tapez 5" << endl ; cout << endl << "\tSaisie : " ; cin >> selection ; // choix du test cout << endl << endl ; } switch(selection) { case 0 : outputTest() ; connexionTest() ; ledTest() ; testSetAddr() ; break ; case 1 : connexionTest() ; break ; case 2 : outputTest() ; break ; case 3 : ledTest() ; break ; case 4 : testSetAddr() ; break ; } }while(selection != 5) ; } // Tests de connexion avec la carte bool TXA_8REED::connexionTest() { if (setLed(false)) { cout << "La carte semble etre connectee." << endl << endl ; return true ; } else { cout << "La carte semble ne pas etre connectee." << endl << endl ; return false ; } } // Tests de lecture des entrees de la carte bool TXA_8REED::outputTest() { int output = -1, selection = -1 ; // Variables parametres bool boucle = false ; bool validation = false ; // Si les tests ne sont pas automatiqes if (!automaticTests) { while (!boucle) { cout << "\tQue voulez-vous faire ?" << endl << endl ; cout << " * Activer les sorties - Tapez 0" << endl ; cout << " * Configurer une entree puis la lire - Tapez 1" << endl ; cout << "\tSaisie : " ; cin >> selection ; switch (selection) { case 0 : while (!boucle) { cout << "Valeur lue des sorties : " << hex << (int)activeSortiesTor() << dec << "." << endl ; cout << "La valeur corrrespond t'elle a l'etat des sorties ?" << endl << endl ; cout << "\tSaisie (1 pour oui / 0 pour non) : " ; cin >> selection ; switch (selection) { case 1: return true ; break ; case 0 : return false ; break ; } } case 1 : boucle = true ; break ; } } boucle = false ; while (!boucle) { cout << endl << "Choisissez la sortie ( 0 a 7 ) : " << endl << endl ; cout << "\tSaisie : " ; cin >> output ; switch (output) { case 0 : output = 0 ; boucle = true ; break ; case 1 : output = 1 ; boucle = true ; break ; case 2 : output = 2 ; boucle = true ; break ; case 3 : output = 3 ; boucle = true ; break ; case 4 : output = 4 ; boucle = true ; break ; case 5 : output = 5 ; boucle = true ; break ; case 6 : output = 6 ; boucle = true ; break ; case 7 : output = 7 ; boucle = true ; break ; } } boucle = false ; while (!boucle) { cout << endl << "\tQue voulez-vous faire sur la sortie " << output << " ?" << endl << endl ; cout << " * Activer toutes les sorties - Tapez 0" << endl ; cout << " * Activer une seule sortie - Tapez 1" << endl ; cout << " * Désactiver une sortie - Tapez 2" << endl ; cout << " * Activer une sortie selon un certain temps - Tapez 3" << endl ; cout << " * Activer une sortie selon un rythme donné - Tapez 4" << endl ; cout << "\tSaisie : " ; cin >> selection ; switch (selection) { case 0 : activeSortiesTor(); boucle = true ; break ; case 1 : activeSortiesTor(output); boucle = true ; break ; case 2 : desactiveSortiesTor(output); boucle = true ; break ; case 3 : activeSortiesTemps(output); boucle = true ; break ; case 4 : activeSortiesRythme(output) ; boucle = true ; break ; } } boucle = false ; while (!boucle) { cout << "La valeur corrrespond t'elle ?" << endl << endl ; cout << "\tSaisie (1 pour oui / 0 pour non) : " ; cin >> selection ; switch (selection) { case 1: validation = true ; boucle = true ; break ; case 0 : validation = false ; boucle = true ; break ; } } return validation ; } else { cout << "PAS DE TESTS AUTOMATIQUES DE LECTURE DES ENTREES" << endl ; } } // Faire clignotter la led bool TXA_8REED::ledTest() { int selection ; cout << "Vous devriez voir la LED de la carte 8REED clignoter." << endl << endl ; // Faire clignoter la LED bool led = false ; for (int index = 0 ; index < 8 ; index++) { if (led) { XA_NOTFIXEDADDR::setLed(led) ; led = false ; } else { XA_NOTFIXEDADDR::setLed(led) ; led = true ; } sleep(1) ; } bool validation = setLed(false) ; // Saisie et Verification de l'Utilisateur if (!automaticTests) { bool boucle = false ; while(!boucle) { cout << "Avez-vous vu la LED clignoter ? (1 pour oui / 0 pour non)" << endl << "\tSaisie : " ; cin >> selection ; switch (selection) { case 1: validation = true ; boucle = true ; break ; case 0 : validation = false ; boucle = true ; break ; } } } return validation ; } // tester le changement d'adresse bool TXA_8REED::testSetAddr() { int selection ; bool boucle = false ; bool validation = false ; // Si les tests ne sont pas automatiqes if (!automaticTests) { while (!boucle) { cout << "Tapez l'adresse que vous souhaitez attribuer a la carte (0 pour sortir)" << endl ; cout << "Adresse actuelle : " << getAddr() << endl ; cout << "\tSaisie : " ; cin >> selection ; if (selection == 0) { boucle = true ; } // Verification que l'adresse est valide if ((selection >= 20) && ( selection <= 127)) { setAddr((unsigned char)selection) ; // changement d'adresse cout << "Vous devriez voir la LED de la carte 8REED clignoter," << endl ; cout << "uniquement si le changement d'adresse s'est déroulé correctement." << endl << endl ; // Faire clignoter la LED bool led = false ; for (int index = 0 ; index < 8 ; index++) { if (led) { setLed(led) ; led = false ; } else { setLed(led) ; led = true ; } sleep(1) ; } while(!boucle) { cout << "Avez-vous vu la LED clignoter ? (1 pour oui / 0 pour non)" << endl << "\tSaisie : " ; cin >> selection ; switch (selection) { case 1: validation = true ; boucle = true ; break ; case 0 : validation = false ; boucle = true ; break ; } } return validation ; } } } return false ; } // Destructeur TXA_8REED::~TXA_8REED() { }