Vous êtes sur la page 1sur 2

// Déclaration des bibliothèques utilisées

#include "sms.h"
// Dimensionnement des variables
#define TAILLE_MAX_MESSAGE 100
#define TAILLE_NUMERO 15
// Définitions des types
typedef struct
{
char telephone[TAILLE_NUMERO+1];
char message[TAILLE_MAX_MESSAGE+1];
} sms_t;
// Prototypes de fonction
void initialiser_Sim808(void);
// Variables globales
SMSGSM *gestionnaire_sms;
// Fonction de démarrage, s'exécute une seule fois:
void setup()
{
// Ouverture du port USB pour l'envoi des traces au PC
Serial.begin(115200);

// Initialisation de la communication avec la carte SIM808


initialiser_sim808();
}
// Fonction principale du programme, s'exécute en boucle:
void loop()
{
sms_t sms;

if(lire_premier_sms_non_lu(&sms))
{
// Un nouveau SMS a été trouvé:
Serial.print(sms.telephone);
Serial.print(F(" --> "));
Serial.println(sms.message);
}
}
void initialiser_sim808(void)
{
if(gestionnaire_sms!=NULL)
{
free(gestionnaire_sms);
}
Serial.println(F("Connexion avec la carte SIM808."));
while(!gsm.begin(9600))
{
Serial.println(F("Echec de communication avec la carte SIM808. Nouvelle
tentative..."));
}
Serial.println(F("La communication avec la carte SIM808 est établie."));
gestionnaire_sms = new SMSGSM();
}
bool lire_premier_sms_non_lu(sms_t *sms_p)
{
char code_retour, position_sms;
bool sms_trouve;
// Valeurs par defaut
sms_trouve = false;
code_retour = gestionnaire_sms->IsSMSPresent(SMS_UNREAD);
if(code_retour<0)
{
// Reinitialisation de la communication avec la carte SIM808
initialiser_sim808();
}
else if(code_retour > 0)
{
position_sms = code_retour;
// Il y a au moins un SMS non lu:
code_retour = gestionnaire_sms->GetSMS(position_sms, sms_p->telephone,
TAILLE_NUMERO, sms_p->message, TAILLE_MAX_MESSAGE);
if(code_retour<0)
{
// Reinitialisation de la communication avec la carte SIM808
initialiser_sim808();
}
else
{
sms_trouve = true;
}
}
return(sms_trouve);
}

Vous aimerez peut-être aussi