/** * Ajoute un caractère à la file de transmission. * Si la file de transmission est pleine, la méthode attend qu'il * y ait de la place. * @param data Le caractère à placer. */ void uartPutch(char data) { if (uartEtat == UART_TRANSMISSION_EN_REPOS) { uartEtat = UART_TRANSMISSION_EN_COURS; TXREG1 = data; PIE1bits.TX1IE = 1; } else { while (fileEstPleine(&fileTransmission)); fileEnfile(&fileTransmission, data); } }
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); }