void testMorseDetecteImpulsionsET() { morseReinitialise(); fileReinitialise(); morseEnfoncePioche(); attendTicTac(1); morseLiberePioche(); testeEgaliteChars("MDIET01", fileDefile(), CARACTERE_POINT); attendTicTac(MORSE_MIN_DUREE_PAUSE); testeEgaliteChars("MDIET02", fileDefile(), CARACTERE_PAUSE); testeEgaliteChars("MDIET03", fileDefile(), 'E'); testeEgaliteChars("MDIET04", fileDefile(), '\r'); testeEgaliteChars("MDIET05", fileDefile(), '\n'); morseEnfoncePioche(); attendTicTac(MORSE_MAX_DUREE_POINT + 1); morseLiberePioche(); testeEgaliteChars("MDIET06", fileDefile(), CARACTERE_LIGNE); attendTicTac(MORSE_MIN_DUREE_PAUSE); testeEgaliteChars("MDIET07", fileDefile(), CARACTERE_PAUSE); testeEgaliteChars("MDIET08", fileDefile(), 'T'); testeEgaliteChars("MDIET09", fileDefile(), '\r'); testeEgaliteChars("MDIET10", fileDefile(), '\n'); attendTicTac(MORSE_MIN_DUREE_PAUSE); testeEgaliteEntiers("MDIET11", fileEstVide(), 255); attendTicTac(MORSE_MIN_DUREE_PAUSE * 2); testeEgaliteEntiers("MDIET12", fileEstVide(), 255); }
/** * Récupère un caractère de la file de réception. * Si la file de réception est vide, la méthode attend qu'un * caractère soit disponible. * @return Un caractère de la file de réception */ char uartGetch() { unsigned char n = 0; while(fileEstVide(&fileReception)) { n++; }; return fileDefile(&fileReception); }
/** * Fonction à appeler pour récupérer le prochain caractère à transmettre * à travers la UART. * Cette fonction est typiquement appelée depuis la routine de transmission * des interruptions, en réponse à une interruption de transmission. * <pre> * void interrupt interruptions() { * if (IPR1bits.TX1IF) { * uartTransmission(); * } * } * </pre> * @return Le caractère à envoyer. */ void uartTransmission() { if (uartCaracteresDisponiblesPourTransmission()) { TXREG1 = fileDefile(&fileTransmission); } else { PIE1bits.TX1IE = 0; } }
void testEnfileEtDefile() { fileReinitialise(); testeEgaliteEntiers("FIL01", fileEstVide(), 255); testeEgaliteEntiers("FIL02", fileDefile(), 0); testeEgaliteEntiers("FIL03", fileDefile(), 0); fileEnfile(10); fileEnfile(20); testeEgaliteEntiers("FIL04", fileEstVide(), 0); testeEgaliteEntiers("FIL05", fileDefile(), 10); testeEgaliteEntiers("FIL06", fileDefile(), 20); testeEgaliteEntiers("FIL07", fileEstVide(), 255); testeEgaliteEntiers("FIL08", fileDefile(), 0); }
void testMorseDetecteImpulsionsU() { morseReinitialise(); fileReinitialise(); morseEnfoncePioche(); attendTicTac(1); morseLiberePioche(); testeEgaliteChars("MDIU01", fileDefile(), CARACTERE_POINT); morseEnfoncePioche(); attendTicTac(MORSE_MAX_DUREE_POINT); morseLiberePioche(); testeEgaliteChars("MDIU02", fileDefile(), CARACTERE_POINT); attendTicTac(MORSE_MIN_DUREE_PAUSE - 1); morseEnfoncePioche(); attendTicTac(MORSE_MAX_DUREE_POINT + 1); morseLiberePioche(); testeEgaliteChars("MDIU03", fileDefile(), CARACTERE_LIGNE); attendTicTac(MORSE_MIN_DUREE_PAUSE); testeEgaliteChars("MDIU04", fileDefile(), CARACTERE_PAUSE); testeEgaliteChars("MDIU05", fileDefile(), 'U'); testeEgaliteChars("MDIU06", fileDefile(), '\r'); testeEgaliteChars("MDIU07", fileDefile(), '\n'); }
void testDebordePuisRecupereLesCaracteres() { fileReinitialise(); char c = 1; while(!fileEstPleine()) { fileEnfile(c++); } testeEgaliteEntiers("FDB001", fileDefile(), 1); testeEgaliteEntiers("FDB002", fileDefile(), 2); while(!fileEstVide()) { c = fileDefile(); } fileEnfile(1); // Ces caractères sont ignorés... fileEnfile(1); // ... car la file est pleine. testeEgaliteEntiers("FDB003", c, FILE_TAILLE); }
void testEnfileEtDefileBeaucoupDeCaracteres() { int n = 0; char c = 0; fileReinitialise(); for (n = 0; n < FILE_TAILLE * 4; n++) { fileEnfile(c); if (testeEgaliteEntiers("FBC001", fileDefile(), c)) { return; } c++; } }
/** * Rend le prochain caractère à émettre. * Appelez i2cCommandeCompletementEmise avant, pour éviter * de consommer la prochaine commande. * @return */ unsigned char i2cRecupereCaracterePourEmission() { return fileDefile(&fileEmission); }