Toujours sur mon module GSM, j'ai repris depuis le debut !
Une fonction me turlupine car je n'arrive pas à la simplifier
Voici la fonction d'origine
Code : Tout sélectionner
//------------------------------------------------------------------------------
// Get GSM response, if there is any
short Get_response() {
if (response_rcvd) { // Si il y a une reponse qui est finie (flag levé)
response_rcvd = 0; // RAZ du flag
return responseID; // On renvoie l'identification de la réponse
}
else
return -1; // Sinon on renvoie -1
}
// Attente de la réponse du GSM (boucle infinie)
void Wait_response(char rspns) {
char test = 1;
while (test){
test = Get_response();
if ((test == rspns) || (test == GSM_ERROR))
test = 0;
else
test = 1;
}
} En paramètre on lui dit la réponse que l'on attend
On va chercher la réponse et on la place dans la variable "test".
Si cette réponse est égale a la réponse attendue ou on reçoit une erreur alors on sort, sinon on attend encore !
Plutôt bien fait mais je pense qu'on doit pouvoir raccourcir .
je pensais faire comme cela en pensant que ça revenait au même mais apparemment non car car ne fonctionne pas !
Tant que la réponse est différente de celle attendue ET différente d'erreur alors je boucle!
Code : Tout sélectionner
//------------------------------------------------------------------------------
// Attente de la réponse du GSM (boucle infinie)
void Wait_response(char rspns) {
while ( (Get_response() != rspns) && (Get_response() != GSM_ERROR) );
} Je me demande si ce n'est pas a cause de la fonction qui est deux fois dans les conditions de test !
Qu'en pensez vous ?
Merci

