Skip to content

Commit

Permalink
#32 - Après tests sur la voiture. Attention aux méthodes reentrant; e…
Browse files Browse the repository at this point in the history
…lles peuvent se marcher dessus.
  • Loading branch information
jean-michel-gonet committed Jul 30, 2017
1 parent d524d40 commit 31a7307
Show file tree
Hide file tree
Showing 7 changed files with 25 additions and 41 deletions.
24 changes: 18 additions & 6 deletions direction.c
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ File fileManoeuvres;
/**
* Vide la file des manoeuvres.
*/
void reentrant reinitialiseManoeuvres() {
void reinitialiseManoeuvres() {
fileReinitialise(&fileManoeuvres);
nombreDeManoeuvresAExecuter = 0;
etatManoeuvre = PAS_DE_MANOEUVRE;
Expand All @@ -116,10 +116,12 @@ void initialiseDirection() {
* @param numeroDeManoeuvre Le numéro de manoeuvre.
*/
void enfileManoeuvre(unsigned char numeroDeManoeuvre) {
i2cExposeValeur(LECTURE_I2C_DERNIERE_MANOEUVRE_RECUE, numeroDeManoeuvre);
fileEnfile(&fileManoeuvres, numeroDeManoeuvre);
nombreDeManoeuvresAExecuter ++;
i2cExposeValeur(LECTURE_I2C_NOMBRE_DE_MANOEUVRES, nombreDeManoeuvresAExecuter);
if (!fileEstPleine(&fileManoeuvres)) {
i2cExposeValeur(LECTURE_I2C_DERNIERE_MANOEUVRE_RECUE, numeroDeManoeuvre);
fileEnfile(&fileManoeuvres, numeroDeManoeuvre);
nombreDeManoeuvresAExecuter ++;
i2cExposeValeur(LECTURE_I2C_NOMBRE_DE_MANOEUVRES, nombreDeManoeuvresAExecuter);
}
}

/**
Expand Down Expand Up @@ -167,7 +169,6 @@ void defileManoeuvre() {
etatManoeuvre = PAS_DE_MANOEUVRE;
nombreDeManoeuvresAExecuter = 0;
enfileMessageInterne(VITESSE_DEMANDEE, NEUTRE);
enfileMessageInterne(LECTURE_RC_GAUCHE_DROITE, NEUTRE);
}
i2cExposeValeur(LECTURE_I2C_NOMBRE_DE_MANOEUVRES, nombreDeManoeuvresAExecuter);
}
Expand Down Expand Up @@ -502,6 +503,16 @@ void execute_un_arret_apres_avoir_complete_la_derniere_manoeuvre() {
verifieEgalite("DIR_MAAR01", evenementEtValeur->evenement, VITESSE_DEMANDEE);
verifieEgalite("DIR_MAAR02", evenementEtValeur->valeur, NEUTRE);
}
void ignore_les_manoeuvres_si_la_file_deborde() {
unsigned char n;
reinitialiseManoeuvres();
for(n = 0; n < FILE_TAILLE; n++) {
receptionBus(2, 1);
}
verifieEgalite("DIR_MAD01", nombreDeManoeuvresAExecuter, FILE_TAILLE);
receptionBus(2, 1);
verifieEgalite("DIR_MAD02", nombreDeManoeuvresAExecuter, FILE_TAILLE);
}

void reinitialise_les_manoeuvres_si_commande_de_vitesse() {
reinitialiseManoeuvres();
Expand Down Expand Up @@ -584,6 +595,7 @@ void test_direction() {
execute_immediatement_la_premiere_manoeuvre();
execute_la_suivante_manoeuvre_apres_avoir_complete_la_premiere();
execute_un_arret_apres_avoir_complete_la_derniere_manoeuvre();
ignore_les_manoeuvres_si_la_file_deborde();
reinitialise_les_manoeuvres_si_commande_de_vitesse();
reinitialise_les_manoeuvres_si_commande_de_orientation_des_roues();
reinitialise_les_manoeuvres_si_telecommande();
Expand Down
3 changes: 0 additions & 3 deletions domaine.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,6 @@ typedef enum EVENEMENT {
/** La tension moyenne à appliquer au moteur à changé. */
MOTEUR_TENSION_MOYENNE,

/***/
MOTEUR_PWM,

/** Lecture du potentiomètre.*/
LECTURE_POTENTIOMETRE,

Expand Down
5 changes: 3 additions & 2 deletions file.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* Si il y a de la place dans la file, enfile un caractère.
* @param c Le caractère.
*/
void reentrant fileEnfile(File *file, char c) {
void fileEnfile(File *file, char c) {
file->fileVide = 0;
if (!file->filePleine) {
file->file[file->fileEntree++] = c;
Expand Down Expand Up @@ -55,11 +55,12 @@ char fileEstPleine(File *file) {
/**
* Vide et réinitialise la file.
*/
void reentrant fileReinitialise(File *file) {
void fileReinitialise(File *file) {
file->fileEntree = 0;
file->fileSortie = 0;
file->fileVide = 255;
file->filePleine = 0;

}

#ifdef TEST
Expand Down
4 changes: 2 additions & 2 deletions file.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@ typedef struct {
char filePleine;
} File;

void reentrant fileEnfile(File *file, char c);
void fileEnfile(File *file, char c);
char fileDefile(File *file);
char fileEstVide(File *file);
char fileEstPleine(File *file);
void reentrant fileReinitialise(File *file);
void fileReinitialise(File *file);

#ifdef TEST
int test_file();
Expand Down
2 changes: 1 addition & 1 deletion i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ unsigned char convertitEnAdresseLocale(unsigned char adresse) {
* demandée par le maître).
* @param valeur La valeur.
*/
void reentrant i2cExposeValeur(unsigned char adresse, unsigned char valeur) {
void i2cExposeValeur(unsigned char adresse, unsigned char valeur) {
i2cValeursExposees[adresse & I2C_MASQUE_ADRESSES_LOCALES] = valeur;
}

Expand Down
2 changes: 1 addition & 1 deletion i2c.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ unsigned char i2cValeursExposees[I2C_MASQUE_ADRESSES_LOCALES + 1];

typedef void (*I2cRappelCommande)(unsigned char, unsigned char);
void i2cRappelCommande(I2cRappelCommande r);
void reentrant i2cExposeValeur(unsigned char adresse, unsigned char valeur);
void i2cExposeValeur(unsigned char adresse, unsigned char valeur);
void i2cPrepareCommandePourEmission(I2cAdresse adresse, unsigned char valeur);
unsigned char i2cDonneesDisponiblesPourEmission();
unsigned char i2cRecupereCaracterePourEmission();
Expand Down
26 changes: 0 additions & 26 deletions puissance.c
Original file line number Diff line number Diff line change
Expand Up @@ -268,19 +268,6 @@ void test_pid_atteint_la_vitesse_demandee() {
modelePhysique(100);
verifieEgalite("PIDV01", tableauDeBord.vitesseMesuree.magnitude, 50 * 2);
}
void test_pid_atteint_la_position_demandee() {
EvenementEtValeur ev = {DEPLACEMENT_DEMANDE, NEUTRE + 50};

reinitialisePid();
tableauDeBord.vitesseMesuree.direction = AVANT;
tableauDeBord.vitesseMesuree.magnitude = 10;
PUISSANCE_machine(&ev);

modelePhysique(100);

verifieEgalite("PIDP1", erreurI, 0);
verifieEgalite("PIDP2", tableauDeBord.vitesseMesuree.magnitude, 0);
}
void test_MOTEUR_TENSION_MOYENNE_a_chaque_VITESSE_MESUREE() {
EvenementEtValeur evVitesseDemandee = {VITESSE_DEMANDEE, 150};
EvenementEtValeur evVitesseMesuree = {VITESSE_MESUREE, 128};
Expand All @@ -293,27 +280,14 @@ void test_MOTEUR_TENSION_MOYENNE_a_chaque_VITESSE_MESUREE() {
verifieEgalite("PID_TENSM", defileMessageInterne()->evenement, MOTEUR_TENSION_MOYENNE);
}
}
void test_DEPLACEMENT_ATTEINT_si_deplacement_atteint() {
EvenementEtValeur evDeplacementDemande = {DEPLACEMENT_DEMANDE, 128};
EvenementEtValeur evVitesseMesuree = {VITESSE_MESUREE, 128};

reinitialisePid();
initialiseMessagesInternes();
PUISSANCE_machine(&evDeplacementDemande);
erreurI = 0;
PUISSANCE_machine(&evVitesseMesuree);
verifieEgalite("PID_DA01", defileMessageInterne()->evenement, MOTEUR_TENSION_MOYENNE);
}

/**
* Tests unitaires pour le calcul de tension.
* @return Nombre de tests en erreur.
*/
void test_puissance() {
test_pid_atteint_la_vitesse_demandee();
test_pid_atteint_la_position_demandee();
test_MOTEUR_TENSION_MOYENNE_a_chaque_VITESSE_MESUREE();
test_DEPLACEMENT_ATTEINT_si_deplacement_atteint();
test_evalue_la_vitesse_demandee();
test_limite_la_tension_moyenne_maximum();
}
Expand Down

0 comments on commit 31a7307

Please sign in to comment.