Dependencies: EthernetNetIf NetServices mbed HTTPServer
main.cpp@0:96cf274f19bc, 2011-05-23 (annotated)
- Committer:
- etudiant12
- Date:
- Mon May 23 05:40:11 2011 +0000
- Revision:
- 0:96cf274f19bc
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
etudiant12 | 0:96cf274f19bc | 1 | #include "stdio.h" |
etudiant12 | 0:96cf274f19bc | 2 | #include "time.h" |
etudiant12 | 0:96cf274f19bc | 3 | #include "stdlib.h" |
etudiant12 | 0:96cf274f19bc | 4 | #include "string.h" |
etudiant12 | 0:96cf274f19bc | 5 | #include "EthernetNetIf.h" |
etudiant12 | 0:96cf274f19bc | 6 | #include "HTTPServer.h" |
etudiant12 | 0:96cf274f19bc | 7 | #include "NTPClient.h" |
etudiant12 | 0:96cf274f19bc | 8 | #include "SMTPClient.h" |
etudiant12 | 0:96cf274f19bc | 9 | #include "fonctions.h" |
etudiant12 | 0:96cf274f19bc | 10 | #include <mbed.h> |
etudiant12 | 0:96cf274f19bc | 11 | #include <scmRTOS.h> |
etudiant12 | 0:96cf274f19bc | 12 | |
etudiant12 | 0:96cf274f19bc | 13 | #define HOSTNAME "mbedSE" |
etudiant12 | 0:96cf274f19bc | 14 | |
etudiant12 | 0:96cf274f19bc | 15 | |
etudiant12 | 0:96cf274f19bc | 16 | |
etudiant12 | 0:96cf274f19bc | 17 | //--------------------------------------------------------------------------- |
etudiant12 | 0:96cf274f19bc | 18 | //--------------------------------------------------------------------------- |
etudiant12 | 0:96cf274f19bc | 19 | // Creation des types |
etudiant12 | 0:96cf274f19bc | 20 | //--------------------------------------------------------------------------- |
etudiant12 | 0:96cf274f19bc | 21 | //--------------------------------------------------------------------------- |
etudiant12 | 0:96cf274f19bc | 22 | |
etudiant12 | 0:96cf274f19bc | 23 | //Definition des types process |
etudiant12 | 0:96cf274f19bc | 24 | typedef OS::process<OS::pr0, 300> TProc1; |
etudiant12 | 0:96cf274f19bc | 25 | typedef OS::process<OS::pr1, 300> TProc2; |
etudiant12 | 0:96cf274f19bc | 26 | typedef OS::process<OS::pr2, 300> TProc3; |
etudiant12 | 0:96cf274f19bc | 27 | |
etudiant12 | 0:96cf274f19bc | 28 | //Definition du type adresse_IP |
etudiant12 | 0:96cf274f19bc | 29 | typedef struct { |
etudiant12 | 0:96cf274f19bc | 30 | uint8_t champs1; |
etudiant12 | 0:96cf274f19bc | 31 | uint8_t champs2; |
etudiant12 | 0:96cf274f19bc | 32 | uint8_t champs3; |
etudiant12 | 0:96cf274f19bc | 33 | uint8_t champs4; |
etudiant12 | 0:96cf274f19bc | 34 | } adresse_IP; |
etudiant12 | 0:96cf274f19bc | 35 | |
etudiant12 | 0:96cf274f19bc | 36 | // Definition du type de configuration du serveur SMTP pour l'envoi de mail |
etudiant12 | 0:96cf274f19bc | 37 | typedef struct { |
etudiant12 | 0:96cf274f19bc | 38 | adresse_IP IP; |
etudiant12 | 0:96cf274f19bc | 39 | int port; |
etudiant12 | 0:96cf274f19bc | 40 | string user; |
etudiant12 | 0:96cf274f19bc | 41 | string password; |
etudiant12 | 0:96cf274f19bc | 42 | string domain; |
etudiant12 | 0:96cf274f19bc | 43 | string from_address; |
etudiant12 | 0:96cf274f19bc | 44 | string to_address; |
etudiant12 | 0:96cf274f19bc | 45 | |
etudiant12 | 0:96cf274f19bc | 46 | } ConfSMTP; |
etudiant12 | 0:96cf274f19bc | 47 | |
etudiant12 | 0:96cf274f19bc | 48 | |
etudiant12 | 0:96cf274f19bc | 49 | //--------------------------------------------------------------------------- |
etudiant12 | 0:96cf274f19bc | 50 | //--------------------------------------------------------------------------- |
etudiant12 | 0:96cf274f19bc | 51 | // Declaration des variables |
etudiant12 | 0:96cf274f19bc | 52 | //--------------------------------------------------------------------------- |
etudiant12 | 0:96cf274f19bc | 53 | //--------------------------------------------------------------------------- |
etudiant12 | 0:96cf274f19bc | 54 | |
etudiant12 | 0:96cf274f19bc | 55 | NTPClient ntp; |
etudiant12 | 0:96cf274f19bc | 56 | LocalFileSystem local("local"); |
etudiant12 | 0:96cf274f19bc | 57 | Serial pc(USBTX, USBRX); // tx, rx |
etudiant12 | 0:96cf274f19bc | 58 | EthernetNetIf eth(HOSTNAME); |
etudiant12 | 0:96cf274f19bc | 59 | //HTTPServer svr; |
etudiant12 | 0:96cf274f19bc | 60 | |
etudiant12 | 0:96cf274f19bc | 61 | string StationName; |
etudiant12 | 0:96cf274f19bc | 62 | |
etudiant12 | 0:96cf274f19bc | 63 | adresse_IP IP; |
etudiant12 | 0:96cf274f19bc | 64 | adresse_IP NM; |
etudiant12 | 0:96cf274f19bc | 65 | adresse_IP GW; |
etudiant12 | 0:96cf274f19bc | 66 | adresse_IP DNS; |
etudiant12 | 0:96cf274f19bc | 67 | adresse_IP NTP; |
etudiant12 | 0:96cf274f19bc | 68 | ConfSMTP SMTP; |
etudiant12 | 0:96cf274f19bc | 69 | |
etudiant12 | 0:96cf274f19bc | 70 | //Differents Processus pour le multitache |
etudiant12 | 0:96cf274f19bc | 71 | TProc1 Proc1; |
etudiant12 | 0:96cf274f19bc | 72 | TProc2 Proc2; |
etudiant12 | 0:96cf274f19bc | 73 | TProc3 Proc3; |
etudiant12 | 0:96cf274f19bc | 74 | |
etudiant12 | 0:96cf274f19bc | 75 | //Differents evenements pouvant declencher un processus en attente |
etudiant12 | 0:96cf274f19bc | 76 | OS::TEventFlag acquisition_de_lheure; |
etudiant12 | 0:96cf274f19bc | 77 | |
etudiant12 | 0:96cf274f19bc | 78 | //Heure machine et heure serveur |
etudiant12 | 0:96cf274f19bc | 79 | |
etudiant12 | 0:96cf274f19bc | 80 | time_t timer; |
etudiant12 | 0:96cf274f19bc | 81 | time_t local_time; |
etudiant12 | 0:96cf274f19bc | 82 | int server_time_h=0; |
etudiant12 | 0:96cf274f19bc | 83 | int server_time_m=0; |
etudiant12 | 0:96cf274f19bc | 84 | int server_time_s=0; |
etudiant12 | 0:96cf274f19bc | 85 | int local_time_h=0; |
etudiant12 | 0:96cf274f19bc | 86 | int local_time_min=0; |
etudiant12 | 0:96cf274f19bc | 87 | int local_time_s=0; |
etudiant12 | 0:96cf274f19bc | 88 | char hour [2]; |
etudiant12 | 0:96cf274f19bc | 89 | char mins [4]; |
etudiant12 | 0:96cf274f19bc | 90 | char sec [6]; |
etudiant12 | 0:96cf274f19bc | 91 | struct tm * server_time; |
etudiant12 | 0:96cf274f19bc | 92 | |
etudiant12 | 0:96cf274f19bc | 93 | //--------------------------------------------------------------------------- |
etudiant12 | 0:96cf274f19bc | 94 | //--------------------------------------------------------------------------- |
etudiant12 | 0:96cf274f19bc | 95 | // Mise en place des fonctions |
etudiant12 | 0:96cf274f19bc | 96 | //--------------------------------------------------------------------------- |
etudiant12 | 0:96cf274f19bc | 97 | //--------------------------------------------------------------------------- |
etudiant12 | 0:96cf274f19bc | 98 | |
etudiant12 | 0:96cf274f19bc | 99 | |
etudiant12 | 0:96cf274f19bc | 100 | // Creation du fichier de config |
etudiant12 | 0:96cf274f19bc | 101 | void creation_fichier_de_config() |
etudiant12 | 0:96cf274f19bc | 102 | { |
etudiant12 | 0:96cf274f19bc | 103 | FILE *p_fichier; |
etudiant12 | 0:96cf274f19bc | 104 | p_fichier = fopen("/local/config.txt", "r"); // Ouverture en lecture pour verifier son existence |
etudiant12 | 0:96cf274f19bc | 105 | |
etudiant12 | 0:96cf274f19bc | 106 | if (p_fichier == NULL) // Test pour voir si le fichier existe ou pas |
etudiant12 | 0:96cf274f19bc | 107 | |
etudiant12 | 0:96cf274f19bc | 108 | { |
etudiant12 | 0:96cf274f19bc | 109 | // On utilise le caractere # pour marquer les lignes de commentaires |
etudiant12 | 0:96cf274f19bc | 110 | pc.printf("le fichier n' existe pas, il faut le creer \n"); |
etudiant12 | 0:96cf274f19bc | 111 | p_fichier = fopen("/local/config.txt", "w"); // Ouverture en ecriture pour le creer |
etudiant12 | 0:96cf274f19bc | 112 | fprintf(p_fichier, "Station:observatoire\n"); |
etudiant12 | 0:96cf274f19bc | 113 | fprintf(p_fichier, "#configuration reseau \n"); |
etudiant12 | 0:96cf274f19bc | 114 | fprintf(p_fichier, "######################################## \n"); |
etudiant12 | 0:96cf274f19bc | 115 | fprintf(p_fichier, "IP:xxx.xxx.xxx.xxx\n"); |
etudiant12 | 0:96cf274f19bc | 116 | fprintf(p_fichier, "NM:xxx.xxx.xxx.xxx\n"); |
etudiant12 | 0:96cf274f19bc | 117 | fprintf(p_fichier, "GW:xxx.xxx.xxx.xxx\n"); |
etudiant12 | 0:96cf274f19bc | 118 | fprintf(p_fichier, "DNS:xxx.xxx.xxx.xxx\n"); |
etudiant12 | 0:96cf274f19bc | 119 | fprintf(p_fichier, "NTPxxx.xxx.xxx.xxx\n"); |
etudiant12 | 0:96cf274f19bc | 120 | fprintf(p_fichier, "SMTP:xxx.xxx.xxx.xxx\n"); |
etudiant12 | 0:96cf274f19bc | 121 | fprintf(p_fichier, "PORT:xx\n"); |
etudiant12 | 0:96cf274f19bc | 122 | fprintf(p_fichier, "USER:xxxxx\n"); |
etudiant12 | 0:96cf274f19bc | 123 | fprintf(p_fichier, "PASSWORD:xxxxx\n"); |
etudiant12 | 0:96cf274f19bc | 124 | fprintf(p_fichier, "DOMAIN:xxxxxxxxxx\n"); |
etudiant12 | 0:96cf274f19bc | 125 | fprintf(p_fichier, "FROM_ADDRESS:xxxxxxxxxxxxxxx\n"); |
etudiant12 | 0:96cf274f19bc | 126 | fprintf(p_fichier, "TO_ADDRESS:xxxxxxxxxxxxxxxx\n"); |
etudiant12 | 0:96cf274f19bc | 127 | fprintf(p_fichier, "######################################## \n"); |
etudiant12 | 0:96cf274f19bc | 128 | fclose(p_fichier); |
etudiant12 | 0:96cf274f19bc | 129 | pc.printf("le fichier a ete cree\n"); |
etudiant12 | 0:96cf274f19bc | 130 | } else { |
etudiant12 | 0:96cf274f19bc | 131 | fclose(p_fichier); |
etudiant12 | 0:96cf274f19bc | 132 | pc.printf("le fichier de configuration existe \n"); |
etudiant12 | 0:96cf274f19bc | 133 | } |
etudiant12 | 0:96cf274f19bc | 134 | } |
etudiant12 | 0:96cf274f19bc | 135 | |
etudiant12 | 0:96cf274f19bc | 136 | |
etudiant12 | 0:96cf274f19bc | 137 | //Lecture du fichier de config et recuperation des donnees reseaux |
etudiant12 | 0:96cf274f19bc | 138 | void lecture_du_fichier_de_config() { |
etudiant12 | 0:96cf274f19bc | 139 | FILE *p_fichier; |
etudiant12 | 0:96cf274f19bc | 140 | p_fichier = fopen("/local/config.txt","r"); // Ouverture en lecture seule pour recuperer les donnees |
etudiant12 | 0:96cf274f19bc | 141 | pc.printf("lecture du fichier de configuration \n"); |
etudiant12 | 0:96cf274f19bc | 142 | |
etudiant12 | 0:96cf274f19bc | 143 | char ligne[100]; |
etudiant12 | 0:96cf274f19bc | 144 | char *ligne_de_commentaire; |
etudiant12 | 0:96cf274f19bc | 145 | |
etudiant12 | 0:96cf274f19bc | 146 | while ( feof(p_fichier) != TRUE ) { // On verifie que le pointeur du fichier n'est pas � la fin du fichier |
etudiant12 | 0:96cf274f19bc | 147 | //feof() renvoie FALSE si pointeur different de fin de fichier sinon renvoie TRUE |
etudiant12 | 0:96cf274f19bc | 148 | |
etudiant12 | 0:96cf274f19bc | 149 | fgets(ligne,100,p_fichier); // aquisition d'une ligne pour la traiter |
etudiant12 | 0:96cf274f19bc | 150 | |
etudiant12 | 0:96cf274f19bc | 151 | if ( feof(p_fichier)) //on a pas atteint la fin du fichier |
etudiant12 | 0:96cf274f19bc | 152 | { |
etudiant12 | 0:96cf274f19bc | 153 | break; |
etudiant12 | 0:96cf274f19bc | 154 | } |
etudiant12 | 0:96cf274f19bc | 155 | |
etudiant12 | 0:96cf274f19bc | 156 | ligne_de_commentaire = strchr(ligne, '#'); // verification que la ligne ne soit pas du commentaire |
etudiant12 | 0:96cf274f19bc | 157 | // strchhr retourne l'adresse du premier caractere demande trouve |
etudiant12 | 0:96cf274f19bc | 158 | // si il n'y en a pas il retourne NULL |
etudiant12 | 0:96cf274f19bc | 159 | |
etudiant12 | 0:96cf274f19bc | 160 | if (ligne_de_commentaire==NULL) { // la ligne n'est pas du commentaire |
etudiant12 | 0:96cf274f19bc | 161 | |
etudiant12 | 0:96cf274f19bc | 162 | char *s=0; |
etudiant12 | 0:96cf274f19bc | 163 | char **test; |
etudiant12 | 0:96cf274f19bc | 164 | int lim1=0; |
etudiant12 | 0:96cf274f19bc | 165 | int lim2=0; |
etudiant12 | 0:96cf274f19bc | 166 | |
etudiant12 | 0:96cf274f19bc | 167 | /******************************/ |
etudiant12 | 0:96cf274f19bc | 168 | /*lecture du nom de la station*/ |
etudiant12 | 0:96cf274f19bc | 169 | /******************************/ |
etudiant12 | 0:96cf274f19bc | 170 | lim1 = str_istr(ligne, "Station:"); //recherche de l'emplacement de la chaine de caractere correspondante |
etudiant12 | 0:96cf274f19bc | 171 | |
etudiant12 | 0:96cf274f19bc | 172 | if (lim1!=-1) { |
etudiant12 | 0:96cf274f19bc | 173 | lim2 = str_istr(ligne, "\n"); |
etudiant12 | 0:96cf274f19bc | 174 | StationName=str_sub(ligne,lim1+8,lim2); |
etudiant12 | 0:96cf274f19bc | 175 | pc.printf("Station: %s\n",StationName); |
etudiant12 | 0:96cf274f19bc | 176 | } |
etudiant12 | 0:96cf274f19bc | 177 | |
etudiant12 | 0:96cf274f19bc | 178 | /******************************/ |
etudiant12 | 0:96cf274f19bc | 179 | /* lecture de l'adresse IP */ |
etudiant12 | 0:96cf274f19bc | 180 | /******************************/ |
etudiant12 | 0:96cf274f19bc | 181 | lim1 = str_istr(ligne, "IP:"); |
etudiant12 | 0:96cf274f19bc | 182 | if (lim1!=-1) { |
etudiant12 | 0:96cf274f19bc | 183 | lim2 = str_istr(ligne, "\n"); |
etudiant12 | 0:96cf274f19bc | 184 | s=str_sub(ligne,lim1+3,lim2); |
etudiant12 | 0:96cf274f19bc | 185 | test = str_split(s, "."); //separation de la chaine en sous chaine separee par le caractere "." |
etudiant12 | 0:96cf274f19bc | 186 | |
etudiant12 | 0:96cf274f19bc | 187 | //Transfert de l'ip vers la meroire |
etudiant12 | 0:96cf274f19bc | 188 | IP.champs1=(uint8_t)atoi(test[0]); |
etudiant12 | 0:96cf274f19bc | 189 | IP.champs2=(uint8_t)atoi(test[1]); |
etudiant12 | 0:96cf274f19bc | 190 | IP.champs3=(uint8_t)atoi(test[2]); |
etudiant12 | 0:96cf274f19bc | 191 | IP.champs4=(uint8_t)atoi(test[3]); |
etudiant12 | 0:96cf274f19bc | 192 | pc.printf("IP: %d.%d.%d.%d\n",IP.champs1,IP.champs2,IP.champs3,IP.champs4); |
etudiant12 | 0:96cf274f19bc | 193 | } |
etudiant12 | 0:96cf274f19bc | 194 | |
etudiant12 | 0:96cf274f19bc | 195 | /******************************/ |
etudiant12 | 0:96cf274f19bc | 196 | /* lecture du netmask */ |
etudiant12 | 0:96cf274f19bc | 197 | /******************************/ |
etudiant12 | 0:96cf274f19bc | 198 | lim1 = str_istr(ligne, "NM:"); |
etudiant12 | 0:96cf274f19bc | 199 | if (lim1!=-1) { |
etudiant12 | 0:96cf274f19bc | 200 | lim2 = str_istr(ligne, "\n"); |
etudiant12 | 0:96cf274f19bc | 201 | s=str_sub(ligne,lim1+3,lim2); |
etudiant12 | 0:96cf274f19bc | 202 | test = str_split(s, "."); |
etudiant12 | 0:96cf274f19bc | 203 | |
etudiant12 | 0:96cf274f19bc | 204 | //Transfert du net masque vers la memoire |
etudiant12 | 0:96cf274f19bc | 205 | NM.champs1=(uint8_t)atoi(test[0]); |
etudiant12 | 0:96cf274f19bc | 206 | NM.champs2=(uint8_t)atoi(test[1]); |
etudiant12 | 0:96cf274f19bc | 207 | NM.champs3=(uint8_t)atoi(test[2]); |
etudiant12 | 0:96cf274f19bc | 208 | NM.champs4=(uint8_t)atoi(test[3]); |
etudiant12 | 0:96cf274f19bc | 209 | pc.printf("NM: %d.%d.%d.%d\n",NM.champs1,NM.champs2,NM.champs3,NM.champs4); |
etudiant12 | 0:96cf274f19bc | 210 | } |
etudiant12 | 0:96cf274f19bc | 211 | |
etudiant12 | 0:96cf274f19bc | 212 | /******************************/ |
etudiant12 | 0:96cf274f19bc | 213 | /* lecture de la passerelle */ |
etudiant12 | 0:96cf274f19bc | 214 | /******************************/ |
etudiant12 | 0:96cf274f19bc | 215 | lim1 = str_istr(ligne, "GW:"); |
etudiant12 | 0:96cf274f19bc | 216 | if (lim1!=-1) { |
etudiant12 | 0:96cf274f19bc | 217 | lim2 = str_istr(ligne, "\n"); |
etudiant12 | 0:96cf274f19bc | 218 | s=str_sub(ligne,lim1+3,lim2); |
etudiant12 | 0:96cf274f19bc | 219 | test = str_split(s, "."); |
etudiant12 | 0:96cf274f19bc | 220 | |
etudiant12 | 0:96cf274f19bc | 221 | //Transfert de la gateway vers la memoire |
etudiant12 | 0:96cf274f19bc | 222 | GW.champs1=(uint8_t)atoi(test[0]); |
etudiant12 | 0:96cf274f19bc | 223 | GW.champs2=(uint8_t)atoi(test[1]); |
etudiant12 | 0:96cf274f19bc | 224 | GW.champs3=(uint8_t)atoi(test[2]); |
etudiant12 | 0:96cf274f19bc | 225 | GW.champs4=(uint8_t)atoi(test[3]); |
etudiant12 | 0:96cf274f19bc | 226 | pc.printf("GW: %d.%d.%d.%d\n",GW.champs1,GW.champs2,GW.champs3,GW.champs4); |
etudiant12 | 0:96cf274f19bc | 227 | } |
etudiant12 | 0:96cf274f19bc | 228 | |
etudiant12 | 0:96cf274f19bc | 229 | /******************************/ |
etudiant12 | 0:96cf274f19bc | 230 | /* lecture IP serveur DNS */ |
etudiant12 | 0:96cf274f19bc | 231 | /******************************/ |
etudiant12 | 0:96cf274f19bc | 232 | lim1 = str_istr(ligne, "DNS:"); |
etudiant12 | 0:96cf274f19bc | 233 | if (lim1!=-1) { |
etudiant12 | 0:96cf274f19bc | 234 | lim2 = str_istr(ligne, "\n"); |
etudiant12 | 0:96cf274f19bc | 235 | s=str_sub(ligne,lim1+4,lim2); |
etudiant12 | 0:96cf274f19bc | 236 | test = str_split(s, "."); |
etudiant12 | 0:96cf274f19bc | 237 | |
etudiant12 | 0:96cf274f19bc | 238 | //Transfert du DNS vers la memoire |
etudiant12 | 0:96cf274f19bc | 239 | DNS.champs1=(uint8_t)atoi(test[0]); |
etudiant12 | 0:96cf274f19bc | 240 | DNS.champs2=(uint8_t)atoi(test[1]); |
etudiant12 | 0:96cf274f19bc | 241 | DNS.champs3=(uint8_t)atoi(test[2]); |
etudiant12 | 0:96cf274f19bc | 242 | DNS.champs4=(uint8_t)atoi(test[3]); |
etudiant12 | 0:96cf274f19bc | 243 | pc.printf("DNS: %d.%d.%d.%d\n",DNS.champs1,DNS.champs2,DNS.champs3,DNS.champs4); |
etudiant12 | 0:96cf274f19bc | 244 | } |
etudiant12 | 0:96cf274f19bc | 245 | |
etudiant12 | 0:96cf274f19bc | 246 | /******************************/ |
etudiant12 | 0:96cf274f19bc | 247 | /* lecture IP serveur NTP */ |
etudiant12 | 0:96cf274f19bc | 248 | /******************************/ |
etudiant12 | 0:96cf274f19bc | 249 | lim1 = str_istr(ligne, "NTP:"); |
etudiant12 | 0:96cf274f19bc | 250 | if (lim1!=-1) { |
etudiant12 | 0:96cf274f19bc | 251 | lim2 = str_istr(ligne, "\n"); |
etudiant12 | 0:96cf274f19bc | 252 | s=str_sub(ligne,lim1+4,lim2); |
etudiant12 | 0:96cf274f19bc | 253 | test = str_split(s, "."); |
etudiant12 | 0:96cf274f19bc | 254 | |
etudiant12 | 0:96cf274f19bc | 255 | //Transfert du NTP vers la memoire |
etudiant12 | 0:96cf274f19bc | 256 | NTP.champs1=(uint8_t)atoi(test[0]); |
etudiant12 | 0:96cf274f19bc | 257 | NTP.champs2=(uint8_t)atoi(test[1]); |
etudiant12 | 0:96cf274f19bc | 258 | NTP.champs3=(uint8_t)atoi(test[2]); |
etudiant12 | 0:96cf274f19bc | 259 | NTP.champs4=(uint8_t)atoi(test[3]); |
etudiant12 | 0:96cf274f19bc | 260 | pc.printf("NTP: %d.%d.%d.%d\n",NTP.champs1,NTP.champs2,NTP.champs3,NTP.champs4); |
etudiant12 | 0:96cf274f19bc | 261 | } |
etudiant12 | 0:96cf274f19bc | 262 | |
etudiant12 | 0:96cf274f19bc | 263 | /******************************/ |
etudiant12 | 0:96cf274f19bc | 264 | /* lecture configuration SMTP */ |
etudiant12 | 0:96cf274f19bc | 265 | /******************************/ |
etudiant12 | 0:96cf274f19bc | 266 | lim1 = str_istr(ligne, "SMTP:"); |
etudiant12 | 0:96cf274f19bc | 267 | if (lim1!=-1) { |
etudiant12 | 0:96cf274f19bc | 268 | lim2 = str_istr(ligne, "\n"); |
etudiant12 | 0:96cf274f19bc | 269 | s=str_sub(ligne,lim1+5,lim2); |
etudiant12 | 0:96cf274f19bc | 270 | test = str_split(s, "."); |
etudiant12 | 0:96cf274f19bc | 271 | //Transfert du SMTP vers la memoire |
etudiant12 | 0:96cf274f19bc | 272 | SMTP.IP.champs1=(uint8_t)atoi(test[0]); |
etudiant12 | 0:96cf274f19bc | 273 | SMTP.IP.champs2=(uint8_t)atoi(test[1]); |
etudiant12 | 0:96cf274f19bc | 274 | SMTP.IP.champs3=(uint8_t)atoi(test[2]); |
etudiant12 | 0:96cf274f19bc | 275 | SMTP.IP.champs4=(uint8_t)atoi(test[3]); |
etudiant12 | 0:96cf274f19bc | 276 | pc.printf("SMTP: %d.%d.%d.%d\n",SMTP.IP.champs1,SMTP.IP.champs2,SMTP.IP.champs3,SMTP.IP.champs4); |
etudiant12 | 0:96cf274f19bc | 277 | } |
etudiant12 | 0:96cf274f19bc | 278 | |
etudiant12 | 0:96cf274f19bc | 279 | //lecture du port |
etudiant12 | 0:96cf274f19bc | 280 | lim1 = str_istr(ligne, "PORT:"); |
etudiant12 | 0:96cf274f19bc | 281 | if (lim1!=-1) { |
etudiant12 | 0:96cf274f19bc | 282 | lim2 = str_istr(ligne, "\n"); |
etudiant12 | 0:96cf274f19bc | 283 | SMTP.port=(uint8_t)atoi(str_sub(ligne,lim1+5,lim2-1)); |
etudiant12 | 0:96cf274f19bc | 284 | pc.printf("Port: %d\n",SMTP.port); |
etudiant12 | 0:96cf274f19bc | 285 | |
etudiant12 | 0:96cf274f19bc | 286 | } |
etudiant12 | 0:96cf274f19bc | 287 | //lecture de l'utilisateur |
etudiant12 | 0:96cf274f19bc | 288 | lim1 = str_istr(ligne, "USER:"); |
etudiant12 | 0:96cf274f19bc | 289 | if (lim1!=-1) { |
etudiant12 | 0:96cf274f19bc | 290 | lim2 = str_istr(ligne, "\n"); |
etudiant12 | 0:96cf274f19bc | 291 | SMTP.user=str_sub(ligne,lim1+5,lim2-1); |
etudiant12 | 0:96cf274f19bc | 292 | pc.printf("User: %s\n",SMTP.user); |
etudiant12 | 0:96cf274f19bc | 293 | } |
etudiant12 | 0:96cf274f19bc | 294 | //lecture du mot de passe |
etudiant12 | 0:96cf274f19bc | 295 | lim1 = str_istr(ligne, "PASSWORD:"); |
etudiant12 | 0:96cf274f19bc | 296 | if (lim1!=-1) { |
etudiant12 | 0:96cf274f19bc | 297 | lim2 = str_istr(ligne, "\n"); |
etudiant12 | 0:96cf274f19bc | 298 | SMTP.password=str_sub(ligne,lim1+9,lim2-1); |
etudiant12 | 0:96cf274f19bc | 299 | pc.printf("Password: %s\n",SMTP.password); |
etudiant12 | 0:96cf274f19bc | 300 | } |
etudiant12 | 0:96cf274f19bc | 301 | //lecture du domaine |
etudiant12 | 0:96cf274f19bc | 302 | lim1 = str_istr(ligne, "DOMAIN:"); |
etudiant12 | 0:96cf274f19bc | 303 | if (lim1!=-1) { |
etudiant12 | 0:96cf274f19bc | 304 | lim2 = str_istr(ligne, "\n"); |
etudiant12 | 0:96cf274f19bc | 305 | SMTP.domain=str_sub(ligne,lim1+7,lim2-1); |
etudiant12 | 0:96cf274f19bc | 306 | pc.printf("Domain: %s\n",SMTP.domain); |
etudiant12 | 0:96cf274f19bc | 307 | } |
etudiant12 | 0:96cf274f19bc | 308 | //lecture de l'adresse de destination |
etudiant12 | 0:96cf274f19bc | 309 | lim1 = str_istr(ligne, "FROM_ADDRESS:"); |
etudiant12 | 0:96cf274f19bc | 310 | if (lim1!=-1) { |
etudiant12 | 0:96cf274f19bc | 311 | lim2 = str_istr(ligne, "\n"); |
etudiant12 | 0:96cf274f19bc | 312 | SMTP.from_address=str_sub(ligne,lim1+13,lim2-1); |
etudiant12 | 0:96cf274f19bc | 313 | pc.printf("From adress: %s\n",SMTP.from_address); |
etudiant12 | 0:96cf274f19bc | 314 | } |
etudiant12 | 0:96cf274f19bc | 315 | //lecture de l' adresse de destination |
etudiant12 | 0:96cf274f19bc | 316 | lim1 = str_istr(ligne, "TO_ADDRESS:"); |
etudiant12 | 0:96cf274f19bc | 317 | if (lim1!=-1) { |
etudiant12 | 0:96cf274f19bc | 318 | lim2 = str_istr(ligne, "\n"); |
etudiant12 | 0:96cf274f19bc | 319 | SMTP.to_address=str_sub(ligne,lim1+11,lim2-1); |
etudiant12 | 0:96cf274f19bc | 320 | pc.printf("To adress: %s\n",SMTP.to_address); |
etudiant12 | 0:96cf274f19bc | 321 | } |
etudiant12 | 0:96cf274f19bc | 322 | } |
etudiant12 | 0:96cf274f19bc | 323 | } |
etudiant12 | 0:96cf274f19bc | 324 | fclose(p_fichier); |
etudiant12 | 0:96cf274f19bc | 325 | } |
etudiant12 | 0:96cf274f19bc | 326 | |
etudiant12 | 0:96cf274f19bc | 327 | |
etudiant12 | 0:96cf274f19bc | 328 | // Telechargement de l'heure sur le serveur NTP |
etudiant12 | 0:96cf274f19bc | 329 | int telechargement_heure(int initial) { |
etudiant12 | 0:96cf274f19bc | 330 | |
etudiant12 | 0:96cf274f19bc | 331 | bool connection_etablie = FALSE; |
etudiant12 | 0:96cf274f19bc | 332 | |
etudiant12 | 0:96cf274f19bc | 333 | // Connection au serveur NTP |
etudiant12 | 0:96cf274f19bc | 334 | pc.printf("Connection au serveur NTP\n"); |
etudiant12 | 0:96cf274f19bc | 335 | pc.printf("Adresse serveur: %d.%d.%d.%d\n",NTP.champs1,NTP.champs2,NTP.champs3,NTP.champs4); |
etudiant12 | 0:96cf274f19bc | 336 | Host serverNTP(IpAddr(NTP.champs1,NTP.champs2,NTP.champs3,NTP.champs4),123,""); |
etudiant12 | 0:96cf274f19bc | 337 | |
etudiant12 | 0:96cf274f19bc | 338 | // Verification de reussite de la connection |
etudiant12 | 0:96cf274f19bc | 339 | NTPResult ntpResult=ntp.setTime(serverNTP); |
etudiant12 | 0:96cf274f19bc | 340 | if( ntpResult == NTP_OK ) |
etudiant12 | 0:96cf274f19bc | 341 | { |
etudiant12 | 0:96cf274f19bc | 342 | pc.printf("Connection etablie\r\n"); |
etudiant12 | 0:96cf274f19bc | 343 | connection_etablie = TRUE; |
etudiant12 | 0:96cf274f19bc | 344 | } |
etudiant12 | 0:96cf274f19bc | 345 | else { |
etudiant12 | 0:96cf274f19bc | 346 | |
etudiant12 | 0:96cf274f19bc | 347 | pc.printf("Erreur lors de la connection au serveur, description:\n"); |
etudiant12 | 0:96cf274f19bc | 348 | |
etudiant12 | 0:96cf274f19bc | 349 | if ( ntpResult == NTP_PRTCL ) |
etudiant12 | 0:96cf274f19bc | 350 | { |
etudiant12 | 0:96cf274f19bc | 351 | pc.printf("NTP Protocol error.\r\n") ; |
etudiant12 | 0:96cf274f19bc | 352 | } |
etudiant12 | 0:96cf274f19bc | 353 | else if ( ntpResult == NTP_TIMEOUT ) |
etudiant12 | 0:96cf274f19bc | 354 | { |
etudiant12 | 0:96cf274f19bc | 355 | pc.printf("Connection timeout.\r\n"); |
etudiant12 | 0:96cf274f19bc | 356 | } |
etudiant12 | 0:96cf274f19bc | 357 | else if ( ntpResult == NTP_DNS ) |
etudiant12 | 0:96cf274f19bc | 358 | { |
etudiant12 | 0:96cf274f19bc | 359 | pc.printf("Could not resolve DNS hostname.\r\n") ; |
etudiant12 | 0:96cf274f19bc | 360 | } |
etudiant12 | 0:96cf274f19bc | 361 | else if ( ntpResult == NTP_PROCESSING ) |
etudiant12 | 0:96cf274f19bc | 362 | { |
etudiant12 | 0:96cf274f19bc | 363 | pc.printf("Processing.\r\n"); |
etudiant12 | 0:96cf274f19bc | 364 | } |
etudiant12 | 0:96cf274f19bc | 365 | else |
etudiant12 | 0:96cf274f19bc | 366 | { |
etudiant12 | 0:96cf274f19bc | 367 | pc.printf("Erreur inconnue"); |
etudiant12 | 0:96cf274f19bc | 368 | } |
etudiant12 | 0:96cf274f19bc | 369 | |
etudiant12 | 0:96cf274f19bc | 370 | }//Fin du else affichant les erreurs |
etudiant12 | 0:96cf274f19bc | 371 | |
etudiant12 | 0:96cf274f19bc | 372 | // Si erreur lors de la premiere tentative: deuxieme essai |
etudiant12 | 0:96cf274f19bc | 373 | if( ntpResult != NTP_OK ) |
etudiant12 | 0:96cf274f19bc | 374 | { |
etudiant12 | 0:96cf274f19bc | 375 | pc.printf("\nDeuxieme essai de recuperation de l'heure\n"); |
etudiant12 | 0:96cf274f19bc | 376 | |
etudiant12 | 0:96cf274f19bc | 377 | NTPResult ntpResult=ntp.setTime(serverNTP); |
etudiant12 | 0:96cf274f19bc | 378 | if( ntpResult == NTP_OK ) |
etudiant12 | 0:96cf274f19bc | 379 | { |
etudiant12 | 0:96cf274f19bc | 380 | pc.printf("Connection etablie\r\n"); |
etudiant12 | 0:96cf274f19bc | 381 | connection_etablie = TRUE; |
etudiant12 | 0:96cf274f19bc | 382 | |
etudiant12 | 0:96cf274f19bc | 383 | } |
etudiant12 | 0:96cf274f19bc | 384 | else { |
etudiant12 | 0:96cf274f19bc | 385 | |
etudiant12 | 0:96cf274f19bc | 386 | pc.printf("Erreur lors de la connection au serveur, description:\n"); |
etudiant12 | 0:96cf274f19bc | 387 | |
etudiant12 | 0:96cf274f19bc | 388 | if ( ntpResult == NTP_PRTCL ) |
etudiant12 | 0:96cf274f19bc | 389 | { |
etudiant12 | 0:96cf274f19bc | 390 | pc.printf("NTP Protocol error.\r\n") ; |
etudiant12 | 0:96cf274f19bc | 391 | } |
etudiant12 | 0:96cf274f19bc | 392 | else if ( ntpResult == NTP_TIMEOUT ) |
etudiant12 | 0:96cf274f19bc | 393 | { |
etudiant12 | 0:96cf274f19bc | 394 | pc.printf("Connection timeout.\r\n"); |
etudiant12 | 0:96cf274f19bc | 395 | } |
etudiant12 | 0:96cf274f19bc | 396 | else if ( ntpResult == NTP_DNS ) |
etudiant12 | 0:96cf274f19bc | 397 | { |
etudiant12 | 0:96cf274f19bc | 398 | pc.printf("Could not resolve DNS hostname.\r\n") ; |
etudiant12 | 0:96cf274f19bc | 399 | } |
etudiant12 | 0:96cf274f19bc | 400 | else if ( ntpResult == NTP_PROCESSING ) |
etudiant12 | 0:96cf274f19bc | 401 | { |
etudiant12 | 0:96cf274f19bc | 402 | pc.printf("Processing.\r\n"); |
etudiant12 | 0:96cf274f19bc | 403 | } |
etudiant12 | 0:96cf274f19bc | 404 | else |
etudiant12 | 0:96cf274f19bc | 405 | { |
etudiant12 | 0:96cf274f19bc | 406 | pc.printf("Erreur inconnue"); |
etudiant12 | 0:96cf274f19bc | 407 | } |
etudiant12 | 0:96cf274f19bc | 408 | } |
etudiant12 | 0:96cf274f19bc | 409 | } |
etudiant12 | 0:96cf274f19bc | 410 | |
etudiant12 | 0:96cf274f19bc | 411 | if( connection_etablie == FALSE ) |
etudiant12 | 0:96cf274f19bc | 412 | { |
etudiant12 | 0:96cf274f19bc | 413 | pc.printf("Connection impossible"); |
etudiant12 | 0:96cf274f19bc | 414 | //////////////////////////////////////////////////////////////// |
etudiant12 | 0:96cf274f19bc | 415 | //////////////////////////////////////////////////////////////// |
etudiant12 | 0:96cf274f19bc | 416 | //Ecrire ici le rapport d'erreur dans le fichier sur carte SD // |
etudiant12 | 0:96cf274f19bc | 417 | //////////////////////////////////////////////////////////////// |
etudiant12 | 0:96cf274f19bc | 418 | //////////////////////////////////////////////////////////////// |
etudiant12 | 0:96cf274f19bc | 419 | return 0; |
etudiant12 | 0:96cf274f19bc | 420 | } |
etudiant12 | 0:96cf274f19bc | 421 | else{ |
etudiant12 | 0:96cf274f19bc | 422 | |
etudiant12 | 0:96cf274f19bc | 423 | //connection etablie, recuperation de l'heure du serveur |
etudiant12 | 0:96cf274f19bc | 424 | timer=time(NULL); |
etudiant12 | 0:96cf274f19bc | 425 | |
etudiant12 | 0:96cf274f19bc | 426 | //si nous en phase d'initialisation l'heure machine = l'heure serveur |
etudiant12 | 0:96cf274f19bc | 427 | if( initial == 0) |
etudiant12 | 0:96cf274f19bc | 428 | { |
etudiant12 | 0:96cf274f19bc | 429 | local_time = timer; |
etudiant12 | 0:96cf274f19bc | 430 | } |
etudiant12 | 0:96cf274f19bc | 431 | |
etudiant12 | 0:96cf274f19bc | 432 | server_time = localtime(&timer); |
etudiant12 | 0:96cf274f19bc | 433 | |
etudiant12 | 0:96cf274f19bc | 434 | //Recuperation des differentes composantes de l'heure |
etudiant12 | 0:96cf274f19bc | 435 | strcpy (hour,""); |
etudiant12 | 0:96cf274f19bc | 436 | strftime (hour,2,"%H",server_time); |
etudiant12 | 0:96cf274f19bc | 437 | server_time_h = atoi(hour); |
etudiant12 | 0:96cf274f19bc | 438 | |
etudiant12 | 0:96cf274f19bc | 439 | strcpy (mins,""); |
etudiant12 | 0:96cf274f19bc | 440 | strftime(mins,4,"%M",server_time); |
etudiant12 | 0:96cf274f19bc | 441 | server_time_m = atoi(mins); |
etudiant12 | 0:96cf274f19bc | 442 | |
etudiant12 | 0:96cf274f19bc | 443 | strcpy (sec,""); |
etudiant12 | 0:96cf274f19bc | 444 | strftime (sec,6,"%S",server_time); |
etudiant12 | 0:96cf274f19bc | 445 | server_time_s = atoi(sec); |
etudiant12 | 0:96cf274f19bc | 446 | pc.printf("Heure serveur: %dh%dm%ds\n", server_time_h, server_time_m, server_time_s); |
etudiant12 | 0:96cf274f19bc | 447 | return 1; |
etudiant12 | 0:96cf274f19bc | 448 | |
etudiant12 | 0:96cf274f19bc | 449 | } |
etudiant12 | 0:96cf274f19bc | 450 | } |
etudiant12 | 0:96cf274f19bc | 451 | |
etudiant12 | 0:96cf274f19bc | 452 | // printf("L'heure courante est: %s\n",asctime(localtime(&timer))); |
etudiant12 | 0:96cf274f19bc | 453 | |
etudiant12 | 0:96cf274f19bc | 454 | |
etudiant12 | 0:96cf274f19bc | 455 | // Configuration connection reseau Ethernet |
etudiant12 | 0:96cf274f19bc | 456 | void configuration_reseau_static() |
etudiant12 | 0:96cf274f19bc | 457 | { |
etudiant12 | 0:96cf274f19bc | 458 | EthernetNetIf eth(IpAddr(IP.champs1,IP.champs2,IP.champs3,IP.champs4), |
etudiant12 | 0:96cf274f19bc | 459 | IpAddr(NM.champs1,NM.champs2,NM.champs3,NM.champs4), |
etudiant12 | 0:96cf274f19bc | 460 | IpAddr(GW.champs1,GW.champs2,GW.champs3,GW.champs4), |
etudiant12 | 0:96cf274f19bc | 461 | IpAddr(DNS.champs1,DNS.champs2,DNS.champs3,DNS.champs4)); |
etudiant12 | 0:96cf274f19bc | 462 | |
etudiant12 | 0:96cf274f19bc | 463 | pc.printf("Debut configuration\n"); |
etudiant12 | 0:96cf274f19bc | 464 | EthernetErr ethErr = eth.setup(); |
etudiant12 | 0:96cf274f19bc | 465 | if(ethErr) |
etudiant12 | 0:96cf274f19bc | 466 | { |
etudiant12 | 0:96cf274f19bc | 467 | pc.printf("Echec de la configuration\n"); |
etudiant12 | 0:96cf274f19bc | 468 | } |
etudiant12 | 0:96cf274f19bc | 469 | pc.printf("Configuration reseau OK\n"); |
etudiant12 | 0:96cf274f19bc | 470 | } |
etudiant12 | 0:96cf274f19bc | 471 | |
etudiant12 | 0:96cf274f19bc | 472 | // Configuration connection reseau Ethernet |
etudiant12 | 0:96cf274f19bc | 473 | void configuration_reseau_dynamic() |
etudiant12 | 0:96cf274f19bc | 474 | { |
etudiant12 | 0:96cf274f19bc | 475 | |
etudiant12 | 0:96cf274f19bc | 476 | pc.printf("Debut configuration\n"); |
etudiant12 | 0:96cf274f19bc | 477 | EthernetErr ethErr = eth.setup(); |
etudiant12 | 0:96cf274f19bc | 478 | if( ethErr == ETH_OK ) |
etudiant12 | 0:96cf274f19bc | 479 | { |
etudiant12 | 0:96cf274f19bc | 480 | IpAddr ip = eth.getIp(); |
etudiant12 | 0:96cf274f19bc | 481 | pc.printf("Utilisation du protocol DHCP\n"); |
etudiant12 | 0:96cf274f19bc | 482 | pc.printf("IP fournie: %d.%d.%d.%d\r\n", ip[0], ip[1], ip[2], ip[3]); |
etudiant12 | 0:96cf274f19bc | 483 | } |
etudiant12 | 0:96cf274f19bc | 484 | else pc.printf ("Echec de la configuration\n"); |
etudiant12 | 0:96cf274f19bc | 485 | |
etudiant12 | 0:96cf274f19bc | 486 | } |
etudiant12 | 0:96cf274f19bc | 487 | |
etudiant12 | 0:96cf274f19bc | 488 | |
etudiant12 | 0:96cf274f19bc | 489 | |
etudiant12 | 0:96cf274f19bc | 490 | int main(){ |
etudiant12 | 0:96cf274f19bc | 491 | |
etudiant12 | 0:96cf274f19bc | 492 | wait(8); |
etudiant12 | 0:96cf274f19bc | 493 | pc.printf("\n****************************\n"); |
etudiant12 | 0:96cf274f19bc | 494 | pc.printf("Initialisation connection reseau\n"); |
etudiant12 | 0:96cf274f19bc | 495 | pc.printf("****************************\n\n"); |
etudiant12 | 0:96cf274f19bc | 496 | |
etudiant12 | 0:96cf274f19bc | 497 | wait(2); |
etudiant12 | 0:96cf274f19bc | 498 | //Generation et lecture fichier de configuration |
etudiant12 | 0:96cf274f19bc | 499 | pc.printf("\nFichier de configuration\n"); |
etudiant12 | 0:96cf274f19bc | 500 | creation_fichier_de_config(); |
etudiant12 | 0:96cf274f19bc | 501 | lecture_du_fichier_de_config(); |
etudiant12 | 0:96cf274f19bc | 502 | |
etudiant12 | 0:96cf274f19bc | 503 | wait(2); |
etudiant12 | 0:96cf274f19bc | 504 | //configuration reseau |
etudiant12 | 0:96cf274f19bc | 505 | pc.printf("\nConfiguration reseau\n"); |
etudiant12 | 0:96cf274f19bc | 506 | //configuration_reseau_static(); |
etudiant12 | 0:96cf274f19bc | 507 | configuration_reseau_dynamic(); |
etudiant12 | 0:96cf274f19bc | 508 | |
etudiant12 | 0:96cf274f19bc | 509 | wait(2); |
etudiant12 | 0:96cf274f19bc | 510 | //initialisation heure locale |
etudiant12 | 0:96cf274f19bc | 511 | pc.printf("\nConnection reseau NTP et initialisation de l'heure\n"); |
etudiant12 | 0:96cf274f19bc | 512 | telechargement_heure(0); |
etudiant12 | 0:96cf274f19bc | 513 | |
etudiant12 | 0:96cf274f19bc | 514 | |
etudiant12 | 0:96cf274f19bc | 515 | wait(2); |
etudiant12 | 0:96cf274f19bc | 516 | pc.printf("\n\n****************************\n"); |
etudiant12 | 0:96cf274f19bc | 517 | pc.printf("Lancement de la gestion multitache\n"); |
etudiant12 | 0:96cf274f19bc | 518 | pc.printf("****************************\n\n"); |
etudiant12 | 0:96cf274f19bc | 519 | // run |
etudiant12 | 0:96cf274f19bc | 520 | OS::Run(); |
etudiant12 | 0:96cf274f19bc | 521 | } |
etudiant12 | 0:96cf274f19bc | 522 | |
etudiant12 | 0:96cf274f19bc | 523 | //--------------------------------------------------------------------------- |
etudiant12 | 0:96cf274f19bc | 524 | template<> OS_PROCESS void TProc1::Exec() |
etudiant12 | 0:96cf274f19bc | 525 | { |
etudiant12 | 0:96cf274f19bc | 526 | for(;;) |
etudiant12 | 0:96cf274f19bc | 527 | { |
etudiant12 | 0:96cf274f19bc | 528 | Sleep(3000); //Attente 3000ms |
etudiant12 | 0:96cf274f19bc | 529 | pc.printf("Execution Process 1\n"); |
etudiant12 | 0:96cf274f19bc | 530 | |
etudiant12 | 0:96cf274f19bc | 531 | } |
etudiant12 | 0:96cf274f19bc | 532 | } |
etudiant12 | 0:96cf274f19bc | 533 | |
etudiant12 | 0:96cf274f19bc | 534 | //--------------------------------------------------------------------------- |
etudiant12 | 0:96cf274f19bc | 535 | template<> OS_PROCESS void TProc2::Exec() |
etudiant12 | 0:96cf274f19bc | 536 | { |
etudiant12 | 0:96cf274f19bc | 537 | for(;;) |
etudiant12 | 0:96cf274f19bc | 538 | { |
etudiant12 | 0:96cf274f19bc | 539 | Sleep(5000); //Attente 5000ms |
etudiant12 | 0:96cf274f19bc | 540 | pc.printf("Execution Process 2\n"); |
etudiant12 | 0:96cf274f19bc | 541 | |
etudiant12 | 0:96cf274f19bc | 542 | } |
etudiant12 | 0:96cf274f19bc | 543 | } |
etudiant12 | 0:96cf274f19bc | 544 | |
etudiant12 | 0:96cf274f19bc | 545 | //--------------------------------------------------------------------------- |
etudiant12 | 0:96cf274f19bc | 546 | template<> OS_PROCESS void TProc3::Exec() |
etudiant12 | 0:96cf274f19bc | 547 | { |
etudiant12 | 0:96cf274f19bc | 548 | for (;;) |
etudiant12 | 0:96cf274f19bc | 549 | { |
etudiant12 | 0:96cf274f19bc | 550 | |
etudiant12 | 0:96cf274f19bc | 551 | char c = pc.getc(); |
etudiant12 | 0:96cf274f19bc | 552 | if(c == 'a') |
etudiant12 | 0:96cf274f19bc | 553 | { |
etudiant12 | 0:96cf274f19bc | 554 | telechargement_heure(1); |
etudiant12 | 0:96cf274f19bc | 555 | } |
etudiant12 | 0:96cf274f19bc | 556 | |
etudiant12 | 0:96cf274f19bc | 557 | |
etudiant12 | 0:96cf274f19bc | 558 | |
etudiant12 | 0:96cf274f19bc | 559 | } |
etudiant12 | 0:96cf274f19bc | 560 | } |
etudiant12 | 0:96cf274f19bc | 561 | |
etudiant12 | 0:96cf274f19bc | 562 | //--------------------------------------------------------------------------- |
etudiant12 | 0:96cf274f19bc | 563 | // Timer des process, c'est ici qu'on peut creer des evenement pour synchro les taches |
etudiant12 | 0:96cf274f19bc | 564 | void OS::SystemTimerUserHook() |
etudiant12 | 0:96cf274f19bc | 565 | { |
etudiant12 | 0:96cf274f19bc | 566 | //Interrogation du serveur pour maintenir connection |
etudiant12 | 0:96cf274f19bc | 567 | Net::poll(); |
etudiant12 | 0:96cf274f19bc | 568 | |
etudiant12 | 0:96cf274f19bc | 569 | } |
etudiant12 | 0:96cf274f19bc | 570 | //--------------------------------------------------------------------------- |
etudiant12 | 0:96cf274f19bc | 571 | void OS::IdleProcessUserHook() |
etudiant12 | 0:96cf274f19bc | 572 | { |
etudiant12 | 0:96cf274f19bc | 573 | __WFI(); |
etudiant12 | 0:96cf274f19bc | 574 | } |
etudiant12 | 0:96cf274f19bc | 575 | //----------------------------------------------------------------------------- |