Angelo Carrieri / Mbed 2 deprecated ATCommands

Dependencies:   mbed

Committer:
angelocarrieri
Date:
Fri May 11 14:22:53 2018 +0000
Revision:
3:1df7773ae017
Parent:
2:52b0e1971195
Child:
4:87ec8f45cafe
Comandi AT

Who changed what in which revision?

UserRevisionLine numberNew contents of line
angelocarrieri 0:3eda4839be5c 1 #include "mbed.h"
angelocarrieri 0:3eda4839be5c 2 #include "string.h"
angelocarrieri 0:3eda4839be5c 3 #include "stdio.h"
angelocarrieri 0:3eda4839be5c 4 #include "stdlib.h"
angelocarrieri 0:3eda4839be5c 5 #include "Serial.h"
angelocarrieri 0:3eda4839be5c 6 #include "ATCmdParser.h"
angelocarrieri 0:3eda4839be5c 7 #include "UARTSerial.h"
angelocarrieri 0:3eda4839be5c 8
angelocarrieri 3:1df7773ae017 9 //LocalFileSystem local("local");
angelocarrieri 3:1df7773ae017 10
angelocarrieri 3:1df7773ae017 11 // Dimensione massima del vettore MRxB
angelocarrieri 3:1df7773ae017 12 #define MRxBDIM 200
angelocarrieri 0:3eda4839be5c 13
angelocarrieri 3:1df7773ae017 14 // Dimensione massima del vettore ARxB
angelocarrieri 3:1df7773ae017 15 #define ARxBDIM 200
angelocarrieri 3:1df7773ae017 16
angelocarrieri 3:1df7773ae017 17 // Numero di byte da inviare per l'accensione del led tramite il protocollo SPI
angelocarrieri 0:3eda4839be5c 18 #define NumByte 16
angelocarrieri 0:3eda4839be5c 19
angelocarrieri 3:1df7773ae017 20 // Configurazione della porta seriale del PC
angelocarrieri 0:3eda4839be5c 21 Serial pc(USBTX, USBRX);
angelocarrieri 0:3eda4839be5c 22
angelocarrieri 3:1df7773ae017 23 // Dichiarazione del LED di diagnostica
angelocarrieri 1:7f5f80b47892 24 DigitalOut led(LED2);
angelocarrieri 0:3eda4839be5c 25
angelocarrieri 1:7f5f80b47892 26 // Configurazione della porta seriale UART
angelocarrieri 1:7f5f80b47892 27 UARTSerial serial = UARTSerial(PA_9, PA_10);
angelocarrieri 0:3eda4839be5c 28 ATCmdParser at = ATCmdParser(&serial, "\r\n");
angelocarrieri 0:3eda4839be5c 29
angelocarrieri 3:1df7773ae017 30 // Configurazione dei parametri del protocollo SPI
angelocarrieri 1:7f5f80b47892 31 SPI myspi(PA_7, PA_6, PA_5, NC);
angelocarrieri 1:7f5f80b47892 32
angelocarrieri 2:52b0e1971195 33 // Vettore che conterrà i byte ricevuti in risposta al comando AT inviato
angelocarrieri 1:7f5f80b47892 34 char MRxB[MRxBDIM];
angelocarrieri 2:52b0e1971195 35
angelocarrieri 2:52b0e1971195 36 // Vettore che conterrà i byte ricevuti in risposta all'invio automatico della sequenza di comandi AT
angelocarrieri 1:7f5f80b47892 37 char ARxB[ARxBDIM];
angelocarrieri 0:3eda4839be5c 38
angelocarrieri 3:1df7773ae017 39 // Vettore che conterrà i byte da trasmettere al led tramite il protocollo SPI
angelocarrieri 2:52b0e1971195 40 uint8_t Vled[NumByte];
angelocarrieri 2:52b0e1971195 41
angelocarrieri 2:52b0e1971195 42 // Dichiarazione del parametro temporale t
angelocarrieri 2:52b0e1971195 43 Timer t;
angelocarrieri 2:52b0e1971195 44
angelocarrieri 3:1df7773ae017 45 // Variabili globali
angelocarrieri 2:52b0e1971195 46 char c;
angelocarrieri 0:3eda4839be5c 47 int i=0;
angelocarrieri 0:3eda4839be5c 48 int j=0;
angelocarrieri 1:7f5f80b47892 49 int E=0;
angelocarrieri 1:7f5f80b47892 50 int R=0;
angelocarrieri 1:7f5f80b47892 51 int ER=0;
angelocarrieri 1:7f5f80b47892 52 int ERR=0;
angelocarrieri 3:1df7773ae017 53 int end=0;
angelocarrieri 3:1df7773ae017 54
angelocarrieri 0:3eda4839be5c 55 volatile char input;
angelocarrieri 1:7f5f80b47892 56
angelocarrieri 3:1df7773ae017 57 //char vett[10];
angelocarrieri 3:1df7773ae017 58
angelocarrieri 3:1df7773ae017 59 // Funzione per l'emissione di luce verde tramite il protocollo SPI
angelocarrieri 1:7f5f80b47892 60 void LedGREEN();
angelocarrieri 1:7f5f80b47892 61
angelocarrieri 3:1df7773ae017 62 // Funzione per l'emissione di luce rossa tramite il protocollo SPI
angelocarrieri 1:7f5f80b47892 63 void LedRED();
angelocarrieri 1:7f5f80b47892 64
angelocarrieri 3:1df7773ae017 65 // Funzione per lo spegnimento del led tramite il protocollo SPI
angelocarrieri 1:7f5f80b47892 66 void LedOFF();
angelocarrieri 1:7f5f80b47892 67
angelocarrieri 1:7f5f80b47892 68 // Funzione per la ricerca della parola ERROR nel vettore ricevuto dal modem in risposta al comando digitato
angelocarrieri 2:52b0e1971195 69 void ERR1();
angelocarrieri 1:7f5f80b47892 70
angelocarrieri 1:7f5f80b47892 71 // Funzione per la ricerca della parola ERROR nel vettore ricevuto dal modem in risposta alla sequenza prestabilita di comandi
angelocarrieri 2:52b0e1971195 72 void ERR2();
angelocarrieri 0:3eda4839be5c 73
angelocarrieri 3:1df7773ae017 74 // Funzione che legge la risposta del modem
angelocarrieri 3:1df7773ae017 75 void ReadModem();
angelocarrieri 3:1df7773ae017 76
angelocarrieri 3:1df7773ae017 77 // Funzione che esegue il reset dei vettori MRxB e ARxB
angelocarrieri 3:1df7773ae017 78 void Vreset();
angelocarrieri 3:1df7773ae017 79
angelocarrieri 0:3eda4839be5c 80
angelocarrieri 0:3eda4839be5c 81 int main()
angelocarrieri 0:3eda4839be5c 82 {
angelocarrieri 3:1df7773ae017 83 //FILE *flis;
angelocarrieri 3:1df7773ae017 84
angelocarrieri 3:1df7773ae017 85 // Configurazione del baud rate per la comunicazione col PC
angelocarrieri 0:3eda4839be5c 86 pc.baud(9600);
angelocarrieri 1:7f5f80b47892 87
angelocarrieri 3:1df7773ae017 88 // Configurazione dei parametri del protocollo SPI
angelocarrieri 1:7f5f80b47892 89 myspi.format(16, 0);
angelocarrieri 1:7f5f80b47892 90 myspi.frequency(3333333.3);
angelocarrieri 1:7f5f80b47892 91
angelocarrieri 3:1df7773ae017 92 pc.printf("\r\n");
angelocarrieri 3:1df7773ae017 93 pc.printf(" PROGRAMMA PER L'INVIO DI COMANDI AT SU PORTA SERIALE\r\n");
angelocarrieri 3:1df7773ae017 94 pc.printf("________________________________________________________________________________\r\n");
angelocarrieri 3:1df7773ae017 95 pc.printf("\r\n");
angelocarrieri 3:1df7773ae017 96 pc.printf(" ----------------------------------------------------------------------------\r\n");
angelocarrieri 3:1df7773ae017 97 pc.printf(" | Premere il tasto 'm' per inserire un comando |\r\n");
angelocarrieri 3:1df7773ae017 98 pc.printf(" | Premere il tasto 'a' per l'invio automatico della sequenza di comandi |\r\n");
angelocarrieri 3:1df7773ae017 99 pc.printf(" | Premere il tasto 't' per testare il tempo di risposta del modem |\r\n");
angelocarrieri 3:1df7773ae017 100 pc.printf(" | Premere il tasto 'r' per rinviare l'ultimo comando |\r\n");
angelocarrieri 3:1df7773ae017 101 pc.printf(" | Premere il tasto 'e' per uscire dal programma |\r\n");
angelocarrieri 3:1df7773ae017 102 pc.printf(" ----------------------------------------------------------------------------\r\n");
angelocarrieri 3:1df7773ae017 103 pc.printf("________________________________________________________________________________\r\n");
angelocarrieri 3:1df7773ae017 104 pc.printf("\r\n");
angelocarrieri 2:52b0e1971195 105
angelocarrieri 3:1df7773ae017 106 /**flis = fopen("/local/lista.txt", "r");
angelocarrieri 3:1df7773ae017 107 if((flis=fopen("/local/lista.txt","r"))==NULL)
angelocarrieri 2:52b0e1971195 108 {
angelocarrieri 2:52b0e1971195 109 printf("Impossibile aprire il file");
angelocarrieri 3:1df7773ae017 110 exit(0);
angelocarrieri 2:52b0e1971195 111 }
angelocarrieri 2:52b0e1971195 112
angelocarrieri 2:52b0e1971195 113 while(!feof(flis))
angelocarrieri 2:52b0e1971195 114 {
angelocarrieri 2:52b0e1971195 115 fgets(vett,1,flis);
angelocarrieri 2:52b0e1971195 116 i++;
angelocarrieri 2:52b0e1971195 117 printf("%c",vett[i]);
angelocarrieri 2:52b0e1971195 118 }*/
angelocarrieri 0:3eda4839be5c 119
angelocarrieri 1:7f5f80b47892 120 while(1)
angelocarrieri 0:3eda4839be5c 121 {
angelocarrieri 3:1df7773ae017 122 Vreset();
angelocarrieri 1:7f5f80b47892 123
angelocarrieri 1:7f5f80b47892 124 input=pc.getc();
angelocarrieri 1:7f5f80b47892 125
angelocarrieri 3:1df7773ae017 126
angelocarrieri 1:7f5f80b47892 127 if((input=='m')||(input=='M'))
angelocarrieri 1:7f5f80b47892 128 {
angelocarrieri 3:1df7773ae017 129 LedOFF();
angelocarrieri 3:1df7773ae017 130
angelocarrieri 3:1df7773ae017 131 pc.printf("Inserire un comando: ");
angelocarrieri 1:7f5f80b47892 132
angelocarrieri 1:7f5f80b47892 133 while(1)
angelocarrieri 1:7f5f80b47892 134 {
angelocarrieri 1:7f5f80b47892 135 char c = pc.getc();
angelocarrieri 1:7f5f80b47892 136 pc.putc(c);
angelocarrieri 2:52b0e1971195 137
angelocarrieri 1:7f5f80b47892 138 at.write(&c,1);
angelocarrieri 0:3eda4839be5c 139
angelocarrieri 2:52b0e1971195 140 if(c=='\r')
angelocarrieri 2:52b0e1971195 141 {
angelocarrieri 3:1df7773ae017 142 goto esc1;
angelocarrieri 2:52b0e1971195 143 }
angelocarrieri 1:7f5f80b47892 144 }
angelocarrieri 1:7f5f80b47892 145
angelocarrieri 3:1df7773ae017 146 esc1:
angelocarrieri 1:7f5f80b47892 147
angelocarrieri 3:1df7773ae017 148 pc.printf("\r\n\r\nRisposta:\r\n");
angelocarrieri 3:1df7773ae017 149
angelocarrieri 3:1df7773ae017 150 at.read(MRxB, MRxBDIM);
angelocarrieri 2:52b0e1971195 151
angelocarrieri 1:7f5f80b47892 152 for(i=0;i<MRxBDIM;i++)
angelocarrieri 3:1df7773ae017 153 {
angelocarrieri 1:7f5f80b47892 154 pc.printf("%c",MRxB[i]);
angelocarrieri 1:7f5f80b47892 155 }
angelocarrieri 2:52b0e1971195 156
angelocarrieri 3:1df7773ae017 157 pc.printf("________________________________________________________________________________\r\n");
angelocarrieri 3:1df7773ae017 158 pc.printf("\r\n");
angelocarrieri 1:7f5f80b47892 159
angelocarrieri 2:52b0e1971195 160 ERR1();
angelocarrieri 1:7f5f80b47892 161
angelocarrieri 3:1df7773ae017 162 Vreset();
angelocarrieri 3:1df7773ae017 163
angelocarrieri 1:7f5f80b47892 164 } // End if
angelocarrieri 1:7f5f80b47892 165
angelocarrieri 3:1df7773ae017 166
angelocarrieri 1:7f5f80b47892 167 if ((input=='a')||(input=='A'))
angelocarrieri 0:3eda4839be5c 168 {
angelocarrieri 3:1df7773ae017 169 LedOFF();
angelocarrieri 3:1df7773ae017 170
angelocarrieri 3:1df7773ae017 171 pc.printf("...invio automatico della sequenza di comandi...");
angelocarrieri 3:1df7773ae017 172 pc.printf("\r\n");
angelocarrieri 3:1df7773ae017 173
angelocarrieri 3:1df7773ae017 174 pc.printf("\r\nRisposta:\r\n\r\n");
angelocarrieri 3:1df7773ae017 175
angelocarrieri 1:7f5f80b47892 176 at.send("AT");
angelocarrieri 3:1df7773ae017 177
angelocarrieri 3:1df7773ae017 178 ReadModem();
angelocarrieri 3:1df7773ae017 179
angelocarrieri 3:1df7773ae017 180 at.send("AT+CSQ=?");
angelocarrieri 3:1df7773ae017 181
angelocarrieri 3:1df7773ae017 182 ReadModem();
angelocarrieri 3:1df7773ae017 183
angelocarrieri 3:1df7773ae017 184 at.send("AT+CSQ");
angelocarrieri 3:1df7773ae017 185
angelocarrieri 3:1df7773ae017 186 ReadModem();
angelocarrieri 2:52b0e1971195 187
angelocarrieri 3:1df7773ae017 188 at.send("AT+CREG=?");
angelocarrieri 3:1df7773ae017 189
angelocarrieri 3:1df7773ae017 190 ReadModem();
angelocarrieri 2:52b0e1971195 191
angelocarrieri 3:1df7773ae017 192 at.send("AT+GMI");
angelocarrieri 3:1df7773ae017 193
angelocarrieri 3:1df7773ae017 194 ReadModem();
angelocarrieri 3:1df7773ae017 195
angelocarrieri 3:1df7773ae017 196 pc.printf("________________________________________________________________________________\r\n");
angelocarrieri 3:1df7773ae017 197 pc.printf("\r\n");
angelocarrieri 1:7f5f80b47892 198
angelocarrieri 3:1df7773ae017 199 } // End if
angelocarrieri 3:1df7773ae017 200
angelocarrieri 3:1df7773ae017 201 if ((input=='r')||(input=='R'))
angelocarrieri 3:1df7773ae017 202 {
angelocarrieri 3:1df7773ae017 203 LedOFF();
angelocarrieri 2:52b0e1971195 204
angelocarrieri 3:1df7773ae017 205 pc.printf("...rinvio dell'ultimo comando...");
angelocarrieri 3:1df7773ae017 206 pc.printf("\r\n");
angelocarrieri 2:52b0e1971195 207
angelocarrieri 3:1df7773ae017 208 pc.printf("\r\nRisposta:\r\n\r\n");
angelocarrieri 3:1df7773ae017 209
angelocarrieri 3:1df7773ae017 210 at.send("AT#/");
angelocarrieri 3:1df7773ae017 211
angelocarrieri 3:1df7773ae017 212 ReadModem();
angelocarrieri 3:1df7773ae017 213
angelocarrieri 3:1df7773ae017 214 pc.printf("________________________________________________________________________________\r\n");
angelocarrieri 3:1df7773ae017 215 pc.printf("\r\n");
angelocarrieri 1:7f5f80b47892 216
angelocarrieri 1:7f5f80b47892 217 } // End if
angelocarrieri 1:7f5f80b47892 218
angelocarrieri 3:1df7773ae017 219
angelocarrieri 3:1df7773ae017 220 if ((input=='t')||(input=='T'))
angelocarrieri 3:1df7773ae017 221 {
angelocarrieri 3:1df7773ae017 222 LedOFF();
angelocarrieri 3:1df7773ae017 223
angelocarrieri 3:1df7773ae017 224 pc.printf("Inserire un comando per testare il tempo di risposta del modem: ");
angelocarrieri 3:1df7773ae017 225
angelocarrieri 3:1df7773ae017 226 while(1)
angelocarrieri 3:1df7773ae017 227 {
angelocarrieri 3:1df7773ae017 228 char c = pc.getc();
angelocarrieri 3:1df7773ae017 229 pc.putc(c);
angelocarrieri 3:1df7773ae017 230
angelocarrieri 3:1df7773ae017 231 at.write(&c,1);
angelocarrieri 3:1df7773ae017 232
angelocarrieri 3:1df7773ae017 233 if(c=='\r')
angelocarrieri 3:1df7773ae017 234 {
angelocarrieri 3:1df7773ae017 235 t.reset();
angelocarrieri 3:1df7773ae017 236 t.start();
angelocarrieri 3:1df7773ae017 237 goto esc2;
angelocarrieri 3:1df7773ae017 238 }
angelocarrieri 3:1df7773ae017 239 }
angelocarrieri 3:1df7773ae017 240
angelocarrieri 3:1df7773ae017 241 esc2:
angelocarrieri 3:1df7773ae017 242
angelocarrieri 3:1df7773ae017 243 printf("\r\n\r\n");
angelocarrieri 3:1df7773ae017 244
angelocarrieri 3:1df7773ae017 245 if (at.recv("AT")==true)
angelocarrieri 3:1df7773ae017 246 {
angelocarrieri 3:1df7773ae017 247 t.stop();
angelocarrieri 3:1df7773ae017 248 }
angelocarrieri 3:1df7773ae017 249
angelocarrieri 3:1df7773ae017 250 at.read(ARxB, ARxBDIM);
angelocarrieri 3:1df7773ae017 251
angelocarrieri 3:1df7773ae017 252 Vreset();
angelocarrieri 3:1df7773ae017 253
angelocarrieri 3:1df7773ae017 254 pc.printf("Tempo di risposta: %f secondi\r\n", t.read());
angelocarrieri 3:1df7773ae017 255
angelocarrieri 3:1df7773ae017 256 if (t.read()<1)
angelocarrieri 3:1df7773ae017 257 {
angelocarrieri 3:1df7773ae017 258 LedGREEN();
angelocarrieri 3:1df7773ae017 259 }
angelocarrieri 3:1df7773ae017 260 else
angelocarrieri 3:1df7773ae017 261 {
angelocarrieri 3:1df7773ae017 262 pc.printf("\r\nATTENZIONE: Tempo di risposta superiore ad 1 secondo\r\n");
angelocarrieri 3:1df7773ae017 263 LedRED();
angelocarrieri 3:1df7773ae017 264 }
angelocarrieri 3:1df7773ae017 265
angelocarrieri 3:1df7773ae017 266 pc.printf("________________________________________________________________________________\r\n");
angelocarrieri 3:1df7773ae017 267 pc.printf("\r\n");
angelocarrieri 3:1df7773ae017 268
angelocarrieri 3:1df7773ae017 269 } // End if
angelocarrieri 3:1df7773ae017 270
angelocarrieri 3:1df7773ae017 271
angelocarrieri 1:7f5f80b47892 272 if ((input=='e')||(input=='E'))
angelocarrieri 1:7f5f80b47892 273 {
angelocarrieri 3:1df7773ae017 274 pc.printf("Il programma e' stato chiuso\n\r\n\r");
angelocarrieri 1:7f5f80b47892 275 LedOFF();
angelocarrieri 2:52b0e1971195 276
angelocarrieri 1:7f5f80b47892 277 exit(0);
angelocarrieri 1:7f5f80b47892 278 }
angelocarrieri 1:7f5f80b47892 279
angelocarrieri 1:7f5f80b47892 280 } // End while
angelocarrieri 0:3eda4839be5c 281
angelocarrieri 1:7f5f80b47892 282 }
angelocarrieri 0:3eda4839be5c 283
angelocarrieri 3:1df7773ae017 284 void ReadModem()
angelocarrieri 3:1df7773ae017 285 {
angelocarrieri 3:1df7773ae017 286
angelocarrieri 3:1df7773ae017 287 at.read(ARxB, ARxBDIM);
angelocarrieri 3:1df7773ae017 288
angelocarrieri 3:1df7773ae017 289 for(i=0;i<ARxBDIM;i++)
angelocarrieri 3:1df7773ae017 290 {
angelocarrieri 3:1df7773ae017 291 pc.printf("%c",ARxB[i]);
angelocarrieri 3:1df7773ae017 292 }
angelocarrieri 3:1df7773ae017 293
angelocarrieri 3:1df7773ae017 294 printf("\r\n");
angelocarrieri 3:1df7773ae017 295
angelocarrieri 3:1df7773ae017 296 ERR2();
angelocarrieri 3:1df7773ae017 297
angelocarrieri 3:1df7773ae017 298 Vreset();
angelocarrieri 3:1df7773ae017 299
angelocarrieri 3:1df7773ae017 300 }
angelocarrieri 3:1df7773ae017 301
angelocarrieri 2:52b0e1971195 302 void ERR1()
angelocarrieri 1:7f5f80b47892 303 {
angelocarrieri 1:7f5f80b47892 304
angelocarrieri 3:1df7773ae017 305 end=0;
angelocarrieri 1:7f5f80b47892 306
angelocarrieri 1:7f5f80b47892 307 E=0;
angelocarrieri 1:7f5f80b47892 308 R=0;
angelocarrieri 1:7f5f80b47892 309 ER=0;
angelocarrieri 1:7f5f80b47892 310 ERR=0;
angelocarrieri 1:7f5f80b47892 311
angelocarrieri 3:1df7773ae017 312 // Ciclo per la ricerca della parola ERROR nel vettore ricevuto dal modem in risposta al comando inviato
angelocarrieri 1:7f5f80b47892 313 for(i=0;i<MRxBDIM;i++)
angelocarrieri 1:7f5f80b47892 314 {
angelocarrieri 1:7f5f80b47892 315 if(ERR==0)
angelocarrieri 1:7f5f80b47892 316 {
angelocarrieri 2:52b0e1971195 317 if((MRxB[i])==' ') {goto jump1;}
angelocarrieri 1:7f5f80b47892 318
angelocarrieri 1:7f5f80b47892 319 if(E==0)
angelocarrieri 1:7f5f80b47892 320 {
angelocarrieri 1:7f5f80b47892 321 if ((MRxB[i])=='E')
angelocarrieri 1:7f5f80b47892 322 {
angelocarrieri 3:1df7773ae017 323 end++;
angelocarrieri 1:7f5f80b47892 324 E=1;
angelocarrieri 2:52b0e1971195 325 goto jump1;
angelocarrieri 1:7f5f80b47892 326 }
angelocarrieri 1:7f5f80b47892 327 }
angelocarrieri 1:7f5f80b47892 328 if(ER==0)
angelocarrieri 1:7f5f80b47892 329 {
angelocarrieri 1:7f5f80b47892 330 if(E==1)
angelocarrieri 1:7f5f80b47892 331 {
angelocarrieri 1:7f5f80b47892 332 if((MRxB[i])=='R')
angelocarrieri 1:7f5f80b47892 333 {
angelocarrieri 3:1df7773ae017 334 end++;
angelocarrieri 1:7f5f80b47892 335 R=1;
angelocarrieri 1:7f5f80b47892 336 ER=1;
angelocarrieri 2:52b0e1971195 337 goto jump1;
angelocarrieri 1:7f5f80b47892 338 }
angelocarrieri 1:7f5f80b47892 339 else
angelocarrieri 1:7f5f80b47892 340 {
angelocarrieri 1:7f5f80b47892 341 E=0;
angelocarrieri 3:1df7773ae017 342 end=0;
angelocarrieri 2:52b0e1971195 343 goto jump1;
angelocarrieri 1:7f5f80b47892 344 }
angelocarrieri 1:7f5f80b47892 345 }
angelocarrieri 1:7f5f80b47892 346 }
angelocarrieri 1:7f5f80b47892 347 if(R==1)
angelocarrieri 1:7f5f80b47892 348 {
angelocarrieri 1:7f5f80b47892 349 if((MRxB[i])=='R')
angelocarrieri 1:7f5f80b47892 350 {
angelocarrieri 3:1df7773ae017 351 end++;
angelocarrieri 1:7f5f80b47892 352 ERR=1;
angelocarrieri 2:52b0e1971195 353 goto jump1;
angelocarrieri 1:7f5f80b47892 354 }
angelocarrieri 1:7f5f80b47892 355 else
angelocarrieri 1:7f5f80b47892 356 {
angelocarrieri 3:1df7773ae017 357 end=0;
angelocarrieri 1:7f5f80b47892 358 E=0;
angelocarrieri 1:7f5f80b47892 359 R=0;
angelocarrieri 1:7f5f80b47892 360 ER=0;
angelocarrieri 1:7f5f80b47892 361 }
angelocarrieri 1:7f5f80b47892 362 }
angelocarrieri 1:7f5f80b47892 363
angelocarrieri 1:7f5f80b47892 364 } // End if(ERR==0)
angelocarrieri 1:7f5f80b47892 365
angelocarrieri 2:52b0e1971195 366 jump1:
angelocarrieri 1:7f5f80b47892 367
angelocarrieri 1:7f5f80b47892 368 led=1;
angelocarrieri 1:7f5f80b47892 369
angelocarrieri 1:7f5f80b47892 370 } // End ciclo for
angelocarrieri 1:7f5f80b47892 371
angelocarrieri 3:1df7773ae017 372 if(end==3)
angelocarrieri 1:7f5f80b47892 373 {
angelocarrieri 1:7f5f80b47892 374 LedRED();
angelocarrieri 1:7f5f80b47892 375 }
angelocarrieri 1:7f5f80b47892 376 else
angelocarrieri 1:7f5f80b47892 377 {
angelocarrieri 1:7f5f80b47892 378 LedGREEN();
angelocarrieri 1:7f5f80b47892 379 }
angelocarrieri 1:7f5f80b47892 380
angelocarrieri 1:7f5f80b47892 381 }
angelocarrieri 1:7f5f80b47892 382
angelocarrieri 2:52b0e1971195 383 void ERR2()
angelocarrieri 1:7f5f80b47892 384 {
angelocarrieri 3:1df7773ae017 385
angelocarrieri 3:1df7773ae017 386 end=0;
angelocarrieri 1:7f5f80b47892 387
angelocarrieri 1:7f5f80b47892 388 E=0;
angelocarrieri 1:7f5f80b47892 389 R=0;
angelocarrieri 1:7f5f80b47892 390 ER=0;
angelocarrieri 1:7f5f80b47892 391 ERR=0;
angelocarrieri 1:7f5f80b47892 392
angelocarrieri 1:7f5f80b47892 393 // Ciclo per la ricerca della parola ERROR nel vettore ricevuto dal modem in risposta alla sequenza prestabilita di comandi
angelocarrieri 1:7f5f80b47892 394 for(i=0;i<ARxBDIM;i++)
angelocarrieri 1:7f5f80b47892 395 {
angelocarrieri 1:7f5f80b47892 396 if(ERR==0)
angelocarrieri 1:7f5f80b47892 397 {
angelocarrieri 2:52b0e1971195 398 if((ARxB[i])==' ') {goto jump2;}
angelocarrieri 1:7f5f80b47892 399
angelocarrieri 1:7f5f80b47892 400 if(E==0)
angelocarrieri 1:7f5f80b47892 401 {
angelocarrieri 1:7f5f80b47892 402 if ((ARxB[i])=='E')
angelocarrieri 1:7f5f80b47892 403 {
angelocarrieri 3:1df7773ae017 404 end++;
angelocarrieri 1:7f5f80b47892 405 E=1;
angelocarrieri 2:52b0e1971195 406 goto jump2;
angelocarrieri 1:7f5f80b47892 407 }
angelocarrieri 1:7f5f80b47892 408 }
angelocarrieri 1:7f5f80b47892 409 if(ER==0)
angelocarrieri 1:7f5f80b47892 410 {
angelocarrieri 1:7f5f80b47892 411 if(E==1)
angelocarrieri 1:7f5f80b47892 412 {
angelocarrieri 1:7f5f80b47892 413 if((ARxB[i])=='R')
angelocarrieri 1:7f5f80b47892 414 {
angelocarrieri 3:1df7773ae017 415 end++;
angelocarrieri 1:7f5f80b47892 416 R=1;
angelocarrieri 1:7f5f80b47892 417 ER=1;
angelocarrieri 2:52b0e1971195 418 goto jump2;
angelocarrieri 1:7f5f80b47892 419 }
angelocarrieri 1:7f5f80b47892 420 else
angelocarrieri 1:7f5f80b47892 421 {
angelocarrieri 1:7f5f80b47892 422 E=0;
angelocarrieri 3:1df7773ae017 423 end=0;
angelocarrieri 2:52b0e1971195 424 goto jump2;
angelocarrieri 1:7f5f80b47892 425 }
angelocarrieri 1:7f5f80b47892 426 }
angelocarrieri 1:7f5f80b47892 427 }
angelocarrieri 1:7f5f80b47892 428 if(R==1)
angelocarrieri 1:7f5f80b47892 429 {
angelocarrieri 1:7f5f80b47892 430 if((ARxB[i])=='R')
angelocarrieri 1:7f5f80b47892 431 {
angelocarrieri 3:1df7773ae017 432 end++;
angelocarrieri 1:7f5f80b47892 433 ERR=1;
angelocarrieri 2:52b0e1971195 434 goto jump2;
angelocarrieri 1:7f5f80b47892 435 }
angelocarrieri 1:7f5f80b47892 436 else
angelocarrieri 1:7f5f80b47892 437 {
angelocarrieri 3:1df7773ae017 438 end=0;
angelocarrieri 1:7f5f80b47892 439 E=0;
angelocarrieri 1:7f5f80b47892 440 R=0;
angelocarrieri 1:7f5f80b47892 441 ER=0;
angelocarrieri 1:7f5f80b47892 442 }
angelocarrieri 1:7f5f80b47892 443 }
angelocarrieri 1:7f5f80b47892 444
angelocarrieri 1:7f5f80b47892 445 } // End if(ERR==0)
angelocarrieri 1:7f5f80b47892 446
angelocarrieri 2:52b0e1971195 447 jump2:
angelocarrieri 1:7f5f80b47892 448
angelocarrieri 1:7f5f80b47892 449 led=1;
angelocarrieri 1:7f5f80b47892 450
angelocarrieri 1:7f5f80b47892 451 } // End ciclo for
angelocarrieri 1:7f5f80b47892 452
angelocarrieri 3:1df7773ae017 453 if(end==3)
angelocarrieri 1:7f5f80b47892 454 {
angelocarrieri 1:7f5f80b47892 455 LedRED();
angelocarrieri 1:7f5f80b47892 456 }
angelocarrieri 1:7f5f80b47892 457 else
angelocarrieri 1:7f5f80b47892 458 {
angelocarrieri 1:7f5f80b47892 459 LedGREEN();
angelocarrieri 1:7f5f80b47892 460 }
angelocarrieri 1:7f5f80b47892 461
angelocarrieri 1:7f5f80b47892 462 }
angelocarrieri 1:7f5f80b47892 463
angelocarrieri 3:1df7773ae017 464 void Vreset()
angelocarrieri 3:1df7773ae017 465 {
angelocarrieri 3:1df7773ae017 466
angelocarrieri 3:1df7773ae017 467 // Reset del vettore MRxB
angelocarrieri 3:1df7773ae017 468 for(i=0;i<MRxBDIM;i++)
angelocarrieri 3:1df7773ae017 469 {
angelocarrieri 3:1df7773ae017 470 MRxB[i]='\0';
angelocarrieri 3:1df7773ae017 471 }
angelocarrieri 3:1df7773ae017 472
angelocarrieri 3:1df7773ae017 473 // Reset del vettore ARxB
angelocarrieri 3:1df7773ae017 474 for(j=0;j<ARxBDIM;j++)
angelocarrieri 3:1df7773ae017 475 {
angelocarrieri 3:1df7773ae017 476 ARxB[j]='\0';
angelocarrieri 3:1df7773ae017 477 }
angelocarrieri 3:1df7773ae017 478
angelocarrieri 3:1df7773ae017 479 }
angelocarrieri 3:1df7773ae017 480
angelocarrieri 1:7f5f80b47892 481 void LedGREEN()
angelocarrieri 1:7f5f80b47892 482 {
angelocarrieri 2:52b0e1971195 483
angelocarrieri 2:52b0e1971195 484 // Cicli per la configurazione del vettore Vled
angelocarrieri 1:7f5f80b47892 485 for(i = 0; i <= 3; i++)
angelocarrieri 2:52b0e1971195 486 Vled[i]=204;
angelocarrieri 1:7f5f80b47892 487
angelocarrieri 1:7f5f80b47892 488 for(i = 4; i <= 7; i++)
angelocarrieri 2:52b0e1971195 489 Vled[i]=136;
angelocarrieri 1:7f5f80b47892 490
angelocarrieri 1:7f5f80b47892 491 for(i = 8; i <= 11; i++)
angelocarrieri 2:52b0e1971195 492 Vled[i]=136;
angelocarrieri 1:7f5f80b47892 493
angelocarrieri 1:7f5f80b47892 494 for(i = 12; i <= NumByte-1; i++)
angelocarrieri 2:52b0e1971195 495 Vled[i]=136;
angelocarrieri 0:3eda4839be5c 496
angelocarrieri 2:52b0e1971195 497 // Ciclo per l'invio dei frame al led
angelocarrieri 1:7f5f80b47892 498 for(j = 0; j < NumByte; j++)
angelocarrieri 2:52b0e1971195 499 myspi.write(Vled[j]);
angelocarrieri 2:52b0e1971195 500
angelocarrieri 1:7f5f80b47892 501 }
angelocarrieri 1:7f5f80b47892 502
angelocarrieri 1:7f5f80b47892 503 void LedRED()
angelocarrieri 1:7f5f80b47892 504 {
angelocarrieri 2:52b0e1971195 505
angelocarrieri 2:52b0e1971195 506 // Cicli per la configurazione del vettore Vled
angelocarrieri 1:7f5f80b47892 507 for(i = 0; i <= 3; i++)
angelocarrieri 2:52b0e1971195 508 Vled[i]=136;
angelocarrieri 1:7f5f80b47892 509
angelocarrieri 1:7f5f80b47892 510 for(i = 4; i <= 7; i++)
angelocarrieri 2:52b0e1971195 511 Vled[i]=204;
angelocarrieri 1:7f5f80b47892 512
angelocarrieri 1:7f5f80b47892 513 for(i = 8; i <= 11; i++)
angelocarrieri 2:52b0e1971195 514 Vled[i]=136;
angelocarrieri 1:7f5f80b47892 515
angelocarrieri 1:7f5f80b47892 516 for(i = 12; i <= NumByte-1; i++)
angelocarrieri 2:52b0e1971195 517 Vled[i]=136;
angelocarrieri 0:3eda4839be5c 518
angelocarrieri 2:52b0e1971195 519 // Ciclo per l'invio dei frame al led
angelocarrieri 1:7f5f80b47892 520 for(j = 0; j < NumByte; j++)
angelocarrieri 2:52b0e1971195 521 myspi.write(Vled[j]);
angelocarrieri 1:7f5f80b47892 522
angelocarrieri 1:7f5f80b47892 523 }
angelocarrieri 1:7f5f80b47892 524
angelocarrieri 1:7f5f80b47892 525 void LedOFF()
angelocarrieri 1:7f5f80b47892 526 {
angelocarrieri 2:52b0e1971195 527
angelocarrieri 2:52b0e1971195 528 // Cicli per la configurazione del vettore Vled
angelocarrieri 0:3eda4839be5c 529 for(i = 0; i <= 3; i++)
angelocarrieri 2:52b0e1971195 530 Vled[i]=136;
angelocarrieri 0:3eda4839be5c 531
angelocarrieri 0:3eda4839be5c 532 for(i = 4; i <= 7; i++)
angelocarrieri 2:52b0e1971195 533 Vled[i]=136;
angelocarrieri 0:3eda4839be5c 534
angelocarrieri 0:3eda4839be5c 535 for(i = 8; i <= 11; i++)
angelocarrieri 2:52b0e1971195 536 Vled[i]=136;
angelocarrieri 0:3eda4839be5c 537
angelocarrieri 0:3eda4839be5c 538 for(i = 12; i <= NumByte-1; i++)
angelocarrieri 2:52b0e1971195 539 Vled[i]=136;
angelocarrieri 0:3eda4839be5c 540
angelocarrieri 2:52b0e1971195 541 // Ciclo per l'invio dei frame al led
angelocarrieri 0:3eda4839be5c 542 for(j = 0; j < NumByte; j++)
angelocarrieri 2:52b0e1971195 543 myspi.write(Vled[j]);
angelocarrieri 0:3eda4839be5c 544
angelocarrieri 1:7f5f80b47892 545 }
angelocarrieri 0:3eda4839be5c 546
angelocarrieri 3:1df7773ae017 547
angelocarrieri 0:3eda4839be5c 548
angelocarrieri 0:3eda4839be5c 549
angelocarrieri 0:3eda4839be5c 550
angelocarrieri 0:3eda4839be5c 551
angelocarrieri 0:3eda4839be5c 552
angelocarrieri 0:3eda4839be5c 553
angelocarrieri 0:3eda4839be5c 554
angelocarrieri 0:3eda4839be5c 555
angelocarrieri 0:3eda4839be5c 556
angelocarrieri 0:3eda4839be5c 557
angelocarrieri 0:3eda4839be5c 558
angelocarrieri 0:3eda4839be5c 559
angelocarrieri 0:3eda4839be5c 560
angelocarrieri 0:3eda4839be5c 561
angelocarrieri 0:3eda4839be5c 562
angelocarrieri 0:3eda4839be5c 563
angelocarrieri 0:3eda4839be5c 564
angelocarrieri 0:3eda4839be5c 565
angelocarrieri 0:3eda4839be5c 566
angelocarrieri 0:3eda4839be5c 567
angelocarrieri 0:3eda4839be5c 568
angelocarrieri 0:3eda4839be5c 569
angelocarrieri 0:3eda4839be5c 570
angelocarrieri 0:3eda4839be5c 571
angelocarrieri 0:3eda4839be5c 572
angelocarrieri 0:3eda4839be5c 573
angelocarrieri 0:3eda4839be5c 574
angelocarrieri 0:3eda4839be5c 575
angelocarrieri 0:3eda4839be5c 576
angelocarrieri 0:3eda4839be5c 577
angelocarrieri 0:3eda4839be5c 578
angelocarrieri 0:3eda4839be5c 579
angelocarrieri 0:3eda4839be5c 580
angelocarrieri 0:3eda4839be5c 581
angelocarrieri 0:3eda4839be5c 582
angelocarrieri 0:3eda4839be5c 583
angelocarrieri 0:3eda4839be5c 584
angelocarrieri 0:3eda4839be5c 585
angelocarrieri 0:3eda4839be5c 586
angelocarrieri 0:3eda4839be5c 587
angelocarrieri 0:3eda4839be5c 588
angelocarrieri 0:3eda4839be5c 589
angelocarrieri 0:3eda4839be5c 590
angelocarrieri 0:3eda4839be5c 591
angelocarrieri 0:3eda4839be5c 592
angelocarrieri 0:3eda4839be5c 593
angelocarrieri 0:3eda4839be5c 594
angelocarrieri 0:3eda4839be5c 595
angelocarrieri 0:3eda4839be5c 596
angelocarrieri 0:3eda4839be5c 597
angelocarrieri 0:3eda4839be5c 598
angelocarrieri 0:3eda4839be5c 599
angelocarrieri 0:3eda4839be5c 600
angelocarrieri 0:3eda4839be5c 601
angelocarrieri 0:3eda4839be5c 602
angelocarrieri 0:3eda4839be5c 603
angelocarrieri 0:3eda4839be5c 604
angelocarrieri 0:3eda4839be5c 605
angelocarrieri 0:3eda4839be5c 606
angelocarrieri 0:3eda4839be5c 607