Ejemplo n.º 1
0
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;
    }
}
Ejemplo n.º 4
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);
}
Ejemplo n.º 5
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');
}
Ejemplo n.º 6
0
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);
}
Ejemplo n.º 7
0
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++;
    }
}
Ejemplo n.º 8
0
/**
 * Rend le prochain caractère à émettre.
 * Appelez i2cCommandeCompletementEmise avant, pour éviter
 * de consommer la prochaine commande.
 * @return 
 */
unsigned char i2cRecupereCaracterePourEmission() {
    return fileDefile(&fileEmission);
}