Angelo Carrieri / Mbed 2 deprecated ATCommands

Dependencies:   mbed

Committer:
angelocarrieri
Date:
Fri May 11 15:26:44 2018 +0000
Revision:
4:87ec8f45cafe
Parent:
3:1df7773ae017
Child:
5:07e3997f4856
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 4:87ec8f45cafe 12 #define MRxBDIM 50
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 4:87ec8f45cafe 83 start:
angelocarrieri 4:87ec8f45cafe 84
angelocarrieri 3:1df7773ae017 85 //FILE *flis;
angelocarrieri 3:1df7773ae017 86
angelocarrieri 3:1df7773ae017 87 // Configurazione del baud rate per la comunicazione col PC
angelocarrieri 0:3eda4839be5c 88 pc.baud(9600);
angelocarrieri 1:7f5f80b47892 89
angelocarrieri 3:1df7773ae017 90 // Configurazione dei parametri del protocollo SPI
angelocarrieri 1:7f5f80b47892 91 myspi.format(16, 0);
angelocarrieri 1:7f5f80b47892 92 myspi.frequency(3333333.3);
angelocarrieri 1:7f5f80b47892 93
angelocarrieri 3:1df7773ae017 94 pc.printf("\r\n");
angelocarrieri 3:1df7773ae017 95 pc.printf(" PROGRAMMA PER L'INVIO DI COMANDI AT SU PORTA SERIALE\r\n");
angelocarrieri 4:87ec8f45cafe 96 pc.printf("________________________________________________________________________________\r\n");
angelocarrieri 4:87ec8f45cafe 97 pc.printf("\r\n");
angelocarrieri 3:1df7773ae017 98 pc.printf(" ----------------------------------------------------------------------------\r\n");
angelocarrieri 4:87ec8f45cafe 99 pc.printf(" | Premere il tasto 'i' per inserire un comando |\r\n");
angelocarrieri 3:1df7773ae017 100 pc.printf(" | Premere il tasto 'a' per l'invio automatico della sequenza di comandi |\r\n");
angelocarrieri 4:87ec8f45cafe 101 pc.printf(" | Premere il tasto 'r' per rinviare l'ultimo comando |\r\n");
angelocarrieri 3:1df7773ae017 102 pc.printf(" | Premere il tasto 't' per testare il tempo di risposta del modem |\r\n");
angelocarrieri 4:87ec8f45cafe 103 pc.printf(" | Premere il tasto 's' per riavviare il programma |\r\n");
angelocarrieri 3:1df7773ae017 104 pc.printf(" | Premere il tasto 'e' per uscire dal programma |\r\n");
angelocarrieri 3:1df7773ae017 105 pc.printf(" ----------------------------------------------------------------------------\r\n");
angelocarrieri 3:1df7773ae017 106 pc.printf("________________________________________________________________________________\r\n");
angelocarrieri 3:1df7773ae017 107 pc.printf("\r\n");
angelocarrieri 2:52b0e1971195 108
angelocarrieri 3:1df7773ae017 109 /**flis = fopen("/local/lista.txt", "r");
angelocarrieri 3:1df7773ae017 110 if((flis=fopen("/local/lista.txt","r"))==NULL)
angelocarrieri 2:52b0e1971195 111 {
angelocarrieri 2:52b0e1971195 112 printf("Impossibile aprire il file");
angelocarrieri 3:1df7773ae017 113 exit(0);
angelocarrieri 2:52b0e1971195 114 }
angelocarrieri 2:52b0e1971195 115
angelocarrieri 2:52b0e1971195 116 while(!feof(flis))
angelocarrieri 2:52b0e1971195 117 {
angelocarrieri 2:52b0e1971195 118 fgets(vett,1,flis);
angelocarrieri 2:52b0e1971195 119 i++;
angelocarrieri 2:52b0e1971195 120 printf("%c",vett[i]);
angelocarrieri 2:52b0e1971195 121 }*/
angelocarrieri 0:3eda4839be5c 122
angelocarrieri 1:7f5f80b47892 123 while(1)
angelocarrieri 0:3eda4839be5c 124 {
angelocarrieri 3:1df7773ae017 125 Vreset();
angelocarrieri 1:7f5f80b47892 126
angelocarrieri 1:7f5f80b47892 127 input=pc.getc();
angelocarrieri 1:7f5f80b47892 128
angelocarrieri 4:87ec8f45cafe 129 if((input=='i')||(input=='I'))
angelocarrieri 1:7f5f80b47892 130 {
angelocarrieri 3:1df7773ae017 131 LedOFF();
angelocarrieri 3:1df7773ae017 132
angelocarrieri 3:1df7773ae017 133 pc.printf("Inserire un comando: ");
angelocarrieri 1:7f5f80b47892 134
angelocarrieri 1:7f5f80b47892 135 while(1)
angelocarrieri 1:7f5f80b47892 136 {
angelocarrieri 1:7f5f80b47892 137 char c = pc.getc();
angelocarrieri 1:7f5f80b47892 138 pc.putc(c);
angelocarrieri 2:52b0e1971195 139
angelocarrieri 1:7f5f80b47892 140 at.write(&c,1);
angelocarrieri 0:3eda4839be5c 141
angelocarrieri 2:52b0e1971195 142 if(c=='\r')
angelocarrieri 2:52b0e1971195 143 {
angelocarrieri 3:1df7773ae017 144 goto esc1;
angelocarrieri 2:52b0e1971195 145 }
angelocarrieri 1:7f5f80b47892 146 }
angelocarrieri 1:7f5f80b47892 147
angelocarrieri 3:1df7773ae017 148 esc1:
angelocarrieri 1:7f5f80b47892 149
angelocarrieri 3:1df7773ae017 150 pc.printf("\r\n\r\nRisposta:\r\n");
angelocarrieri 4:87ec8f45cafe 151
angelocarrieri 3:1df7773ae017 152 at.read(MRxB, MRxBDIM);
angelocarrieri 2:52b0e1971195 153
angelocarrieri 1:7f5f80b47892 154 for(i=0;i<MRxBDIM;i++)
angelocarrieri 3:1df7773ae017 155 {
angelocarrieri 1:7f5f80b47892 156 pc.printf("%c",MRxB[i]);
angelocarrieri 1:7f5f80b47892 157 }
angelocarrieri 4:87ec8f45cafe 158
angelocarrieri 3:1df7773ae017 159 pc.printf("________________________________________________________________________________\r\n");
angelocarrieri 3:1df7773ae017 160 pc.printf("\r\n");
angelocarrieri 1:7f5f80b47892 161
angelocarrieri 2:52b0e1971195 162 ERR1();
angelocarrieri 1:7f5f80b47892 163
angelocarrieri 3:1df7773ae017 164 Vreset();
angelocarrieri 3:1df7773ae017 165
angelocarrieri 1:7f5f80b47892 166 } // End if
angelocarrieri 1:7f5f80b47892 167
angelocarrieri 3:1df7773ae017 168
angelocarrieri 1:7f5f80b47892 169 if ((input=='a')||(input=='A'))
angelocarrieri 0:3eda4839be5c 170 {
angelocarrieri 3:1df7773ae017 171 LedOFF();
angelocarrieri 3:1df7773ae017 172
angelocarrieri 3:1df7773ae017 173 pc.printf("...invio automatico della sequenza di comandi...");
angelocarrieri 3:1df7773ae017 174 pc.printf("\r\n");
angelocarrieri 3:1df7773ae017 175
angelocarrieri 3:1df7773ae017 176 pc.printf("\r\nRisposta:\r\n\r\n");
angelocarrieri 3:1df7773ae017 177
angelocarrieri 1:7f5f80b47892 178 at.send("AT");
angelocarrieri 3:1df7773ae017 179
angelocarrieri 3:1df7773ae017 180 ReadModem();
angelocarrieri 3:1df7773ae017 181
angelocarrieri 3:1df7773ae017 182 at.send("AT+CSQ=?");
angelocarrieri 3:1df7773ae017 183
angelocarrieri 3:1df7773ae017 184 ReadModem();
angelocarrieri 3:1df7773ae017 185
angelocarrieri 3:1df7773ae017 186 at.send("AT+CSQ");
angelocarrieri 3:1df7773ae017 187
angelocarrieri 3:1df7773ae017 188 ReadModem();
angelocarrieri 2:52b0e1971195 189
angelocarrieri 3:1df7773ae017 190 at.send("AT+CREG=?");
angelocarrieri 3:1df7773ae017 191
angelocarrieri 3:1df7773ae017 192 ReadModem();
angelocarrieri 2:52b0e1971195 193
angelocarrieri 3:1df7773ae017 194 at.send("AT+GMI");
angelocarrieri 3:1df7773ae017 195
angelocarrieri 3:1df7773ae017 196 ReadModem();
angelocarrieri 3:1df7773ae017 197
angelocarrieri 3:1df7773ae017 198 pc.printf("________________________________________________________________________________\r\n");
angelocarrieri 3:1df7773ae017 199 pc.printf("\r\n");
angelocarrieri 1:7f5f80b47892 200
angelocarrieri 3:1df7773ae017 201 } // End if
angelocarrieri 3:1df7773ae017 202
angelocarrieri 3:1df7773ae017 203 if ((input=='r')||(input=='R'))
angelocarrieri 3:1df7773ae017 204 {
angelocarrieri 3:1df7773ae017 205 LedOFF();
angelocarrieri 2:52b0e1971195 206
angelocarrieri 3:1df7773ae017 207 pc.printf("...rinvio dell'ultimo comando...");
angelocarrieri 3:1df7773ae017 208 pc.printf("\r\n");
angelocarrieri 2:52b0e1971195 209
angelocarrieri 3:1df7773ae017 210 pc.printf("\r\nRisposta:\r\n\r\n");
angelocarrieri 3:1df7773ae017 211
angelocarrieri 3:1df7773ae017 212 at.send("AT#/");
angelocarrieri 3:1df7773ae017 213
angelocarrieri 3:1df7773ae017 214 ReadModem();
angelocarrieri 3:1df7773ae017 215
angelocarrieri 3:1df7773ae017 216 pc.printf("________________________________________________________________________________\r\n");
angelocarrieri 3:1df7773ae017 217 pc.printf("\r\n");
angelocarrieri 1:7f5f80b47892 218
angelocarrieri 1:7f5f80b47892 219 } // End if
angelocarrieri 1:7f5f80b47892 220
angelocarrieri 3:1df7773ae017 221
angelocarrieri 3:1df7773ae017 222 if ((input=='t')||(input=='T'))
angelocarrieri 3:1df7773ae017 223 {
angelocarrieri 3:1df7773ae017 224 LedOFF();
angelocarrieri 3:1df7773ae017 225
angelocarrieri 3:1df7773ae017 226 pc.printf("Inserire un comando per testare il tempo di risposta del modem: ");
angelocarrieri 3:1df7773ae017 227
angelocarrieri 3:1df7773ae017 228 while(1)
angelocarrieri 3:1df7773ae017 229 {
angelocarrieri 3:1df7773ae017 230 char c = pc.getc();
angelocarrieri 3:1df7773ae017 231 pc.putc(c);
angelocarrieri 3:1df7773ae017 232
angelocarrieri 3:1df7773ae017 233 at.write(&c,1);
angelocarrieri 3:1df7773ae017 234
angelocarrieri 3:1df7773ae017 235 if(c=='\r')
angelocarrieri 3:1df7773ae017 236 {
angelocarrieri 3:1df7773ae017 237 t.reset();
angelocarrieri 3:1df7773ae017 238 t.start();
angelocarrieri 3:1df7773ae017 239 goto esc2;
angelocarrieri 3:1df7773ae017 240 }
angelocarrieri 3:1df7773ae017 241 }
angelocarrieri 3:1df7773ae017 242
angelocarrieri 3:1df7773ae017 243 esc2:
angelocarrieri 3:1df7773ae017 244
angelocarrieri 3:1df7773ae017 245 printf("\r\n\r\n");
angelocarrieri 3:1df7773ae017 246
angelocarrieri 3:1df7773ae017 247 if (at.recv("AT")==true)
angelocarrieri 3:1df7773ae017 248 {
angelocarrieri 3:1df7773ae017 249 t.stop();
angelocarrieri 3:1df7773ae017 250 }
angelocarrieri 3:1df7773ae017 251
angelocarrieri 3:1df7773ae017 252 at.read(ARxB, ARxBDIM);
angelocarrieri 3:1df7773ae017 253
angelocarrieri 3:1df7773ae017 254 Vreset();
angelocarrieri 3:1df7773ae017 255
angelocarrieri 3:1df7773ae017 256 pc.printf("Tempo di risposta: %f secondi\r\n", t.read());
angelocarrieri 3:1df7773ae017 257
angelocarrieri 3:1df7773ae017 258 if (t.read()<1)
angelocarrieri 3:1df7773ae017 259 {
angelocarrieri 3:1df7773ae017 260 LedGREEN();
angelocarrieri 3:1df7773ae017 261 }
angelocarrieri 3:1df7773ae017 262 else
angelocarrieri 3:1df7773ae017 263 {
angelocarrieri 3:1df7773ae017 264 pc.printf("\r\nATTENZIONE: Tempo di risposta superiore ad 1 secondo\r\n");
angelocarrieri 3:1df7773ae017 265 LedRED();
angelocarrieri 3:1df7773ae017 266 }
angelocarrieri 3:1df7773ae017 267
angelocarrieri 3:1df7773ae017 268 pc.printf("________________________________________________________________________________\r\n");
angelocarrieri 3:1df7773ae017 269 pc.printf("\r\n");
angelocarrieri 3:1df7773ae017 270
angelocarrieri 3:1df7773ae017 271 } // End if
angelocarrieri 3:1df7773ae017 272
angelocarrieri 3:1df7773ae017 273
angelocarrieri 4:87ec8f45cafe 274 if ((input=='s')||(input=='S'))
angelocarrieri 4:87ec8f45cafe 275 {
angelocarrieri 4:87ec8f45cafe 276 LedOFF();
angelocarrieri 4:87ec8f45cafe 277 Vreset();
angelocarrieri 4:87ec8f45cafe 278
angelocarrieri 4:87ec8f45cafe 279 goto start;
angelocarrieri 4:87ec8f45cafe 280 }
angelocarrieri 4:87ec8f45cafe 281
angelocarrieri 4:87ec8f45cafe 282
angelocarrieri 1:7f5f80b47892 283 if ((input=='e')||(input=='E'))
angelocarrieri 1:7f5f80b47892 284 {
angelocarrieri 3:1df7773ae017 285 pc.printf("Il programma e' stato chiuso\n\r\n\r");
angelocarrieri 1:7f5f80b47892 286 LedOFF();
angelocarrieri 2:52b0e1971195 287
angelocarrieri 1:7f5f80b47892 288 exit(0);
angelocarrieri 1:7f5f80b47892 289 }
angelocarrieri 1:7f5f80b47892 290
angelocarrieri 1:7f5f80b47892 291 } // End while
angelocarrieri 0:3eda4839be5c 292
angelocarrieri 1:7f5f80b47892 293 }
angelocarrieri 0:3eda4839be5c 294
angelocarrieri 3:1df7773ae017 295 void ReadModem()
angelocarrieri 3:1df7773ae017 296 {
angelocarrieri 3:1df7773ae017 297
angelocarrieri 3:1df7773ae017 298 at.read(ARxB, ARxBDIM);
angelocarrieri 3:1df7773ae017 299
angelocarrieri 3:1df7773ae017 300 for(i=0;i<ARxBDIM;i++)
angelocarrieri 3:1df7773ae017 301 {
angelocarrieri 3:1df7773ae017 302 pc.printf("%c",ARxB[i]);
angelocarrieri 3:1df7773ae017 303 }
angelocarrieri 3:1df7773ae017 304
angelocarrieri 3:1df7773ae017 305 printf("\r\n");
angelocarrieri 3:1df7773ae017 306
angelocarrieri 3:1df7773ae017 307 ERR2();
angelocarrieri 3:1df7773ae017 308
angelocarrieri 3:1df7773ae017 309 Vreset();
angelocarrieri 3:1df7773ae017 310
angelocarrieri 3:1df7773ae017 311 }
angelocarrieri 3:1df7773ae017 312
angelocarrieri 2:52b0e1971195 313 void ERR1()
angelocarrieri 1:7f5f80b47892 314 {
angelocarrieri 1:7f5f80b47892 315
angelocarrieri 3:1df7773ae017 316 end=0;
angelocarrieri 1:7f5f80b47892 317
angelocarrieri 1:7f5f80b47892 318 E=0;
angelocarrieri 1:7f5f80b47892 319 R=0;
angelocarrieri 1:7f5f80b47892 320 ER=0;
angelocarrieri 1:7f5f80b47892 321 ERR=0;
angelocarrieri 1:7f5f80b47892 322
angelocarrieri 3:1df7773ae017 323 // Ciclo per la ricerca della parola ERROR nel vettore ricevuto dal modem in risposta al comando inviato
angelocarrieri 1:7f5f80b47892 324 for(i=0;i<MRxBDIM;i++)
angelocarrieri 1:7f5f80b47892 325 {
angelocarrieri 1:7f5f80b47892 326 if(ERR==0)
angelocarrieri 1:7f5f80b47892 327 {
angelocarrieri 2:52b0e1971195 328 if((MRxB[i])==' ') {goto jump1;}
angelocarrieri 1:7f5f80b47892 329
angelocarrieri 1:7f5f80b47892 330 if(E==0)
angelocarrieri 1:7f5f80b47892 331 {
angelocarrieri 1:7f5f80b47892 332 if ((MRxB[i])=='E')
angelocarrieri 1:7f5f80b47892 333 {
angelocarrieri 3:1df7773ae017 334 end++;
angelocarrieri 1:7f5f80b47892 335 E=1;
angelocarrieri 2:52b0e1971195 336 goto jump1;
angelocarrieri 1:7f5f80b47892 337 }
angelocarrieri 1:7f5f80b47892 338 }
angelocarrieri 1:7f5f80b47892 339 if(ER==0)
angelocarrieri 1:7f5f80b47892 340 {
angelocarrieri 1:7f5f80b47892 341 if(E==1)
angelocarrieri 1:7f5f80b47892 342 {
angelocarrieri 1:7f5f80b47892 343 if((MRxB[i])=='R')
angelocarrieri 1:7f5f80b47892 344 {
angelocarrieri 3:1df7773ae017 345 end++;
angelocarrieri 1:7f5f80b47892 346 R=1;
angelocarrieri 1:7f5f80b47892 347 ER=1;
angelocarrieri 2:52b0e1971195 348 goto jump1;
angelocarrieri 1:7f5f80b47892 349 }
angelocarrieri 1:7f5f80b47892 350 else
angelocarrieri 1:7f5f80b47892 351 {
angelocarrieri 1:7f5f80b47892 352 E=0;
angelocarrieri 3:1df7773ae017 353 end=0;
angelocarrieri 2:52b0e1971195 354 goto jump1;
angelocarrieri 1:7f5f80b47892 355 }
angelocarrieri 1:7f5f80b47892 356 }
angelocarrieri 1:7f5f80b47892 357 }
angelocarrieri 1:7f5f80b47892 358 if(R==1)
angelocarrieri 1:7f5f80b47892 359 {
angelocarrieri 1:7f5f80b47892 360 if((MRxB[i])=='R')
angelocarrieri 1:7f5f80b47892 361 {
angelocarrieri 3:1df7773ae017 362 end++;
angelocarrieri 1:7f5f80b47892 363 ERR=1;
angelocarrieri 2:52b0e1971195 364 goto jump1;
angelocarrieri 1:7f5f80b47892 365 }
angelocarrieri 1:7f5f80b47892 366 else
angelocarrieri 1:7f5f80b47892 367 {
angelocarrieri 3:1df7773ae017 368 end=0;
angelocarrieri 1:7f5f80b47892 369 E=0;
angelocarrieri 1:7f5f80b47892 370 R=0;
angelocarrieri 1:7f5f80b47892 371 ER=0;
angelocarrieri 1:7f5f80b47892 372 }
angelocarrieri 1:7f5f80b47892 373 }
angelocarrieri 1:7f5f80b47892 374
angelocarrieri 1:7f5f80b47892 375 } // End if(ERR==0)
angelocarrieri 1:7f5f80b47892 376
angelocarrieri 2:52b0e1971195 377 jump1:
angelocarrieri 1:7f5f80b47892 378
angelocarrieri 1:7f5f80b47892 379 led=1;
angelocarrieri 1:7f5f80b47892 380
angelocarrieri 1:7f5f80b47892 381 } // End ciclo for
angelocarrieri 1:7f5f80b47892 382
angelocarrieri 3:1df7773ae017 383 if(end==3)
angelocarrieri 1:7f5f80b47892 384 {
angelocarrieri 1:7f5f80b47892 385 LedRED();
angelocarrieri 1:7f5f80b47892 386 }
angelocarrieri 1:7f5f80b47892 387 else
angelocarrieri 1:7f5f80b47892 388 {
angelocarrieri 1:7f5f80b47892 389 LedGREEN();
angelocarrieri 1:7f5f80b47892 390 }
angelocarrieri 1:7f5f80b47892 391
angelocarrieri 1:7f5f80b47892 392 }
angelocarrieri 1:7f5f80b47892 393
angelocarrieri 2:52b0e1971195 394 void ERR2()
angelocarrieri 1:7f5f80b47892 395 {
angelocarrieri 3:1df7773ae017 396
angelocarrieri 3:1df7773ae017 397 end=0;
angelocarrieri 1:7f5f80b47892 398
angelocarrieri 1:7f5f80b47892 399 E=0;
angelocarrieri 1:7f5f80b47892 400 R=0;
angelocarrieri 1:7f5f80b47892 401 ER=0;
angelocarrieri 1:7f5f80b47892 402 ERR=0;
angelocarrieri 1:7f5f80b47892 403
angelocarrieri 1:7f5f80b47892 404 // Ciclo per la ricerca della parola ERROR nel vettore ricevuto dal modem in risposta alla sequenza prestabilita di comandi
angelocarrieri 1:7f5f80b47892 405 for(i=0;i<ARxBDIM;i++)
angelocarrieri 1:7f5f80b47892 406 {
angelocarrieri 1:7f5f80b47892 407 if(ERR==0)
angelocarrieri 1:7f5f80b47892 408 {
angelocarrieri 2:52b0e1971195 409 if((ARxB[i])==' ') {goto jump2;}
angelocarrieri 1:7f5f80b47892 410
angelocarrieri 1:7f5f80b47892 411 if(E==0)
angelocarrieri 1:7f5f80b47892 412 {
angelocarrieri 1:7f5f80b47892 413 if ((ARxB[i])=='E')
angelocarrieri 1:7f5f80b47892 414 {
angelocarrieri 3:1df7773ae017 415 end++;
angelocarrieri 1:7f5f80b47892 416 E=1;
angelocarrieri 2:52b0e1971195 417 goto jump2;
angelocarrieri 1:7f5f80b47892 418 }
angelocarrieri 1:7f5f80b47892 419 }
angelocarrieri 1:7f5f80b47892 420 if(ER==0)
angelocarrieri 1:7f5f80b47892 421 {
angelocarrieri 1:7f5f80b47892 422 if(E==1)
angelocarrieri 1:7f5f80b47892 423 {
angelocarrieri 1:7f5f80b47892 424 if((ARxB[i])=='R')
angelocarrieri 1:7f5f80b47892 425 {
angelocarrieri 3:1df7773ae017 426 end++;
angelocarrieri 1:7f5f80b47892 427 R=1;
angelocarrieri 1:7f5f80b47892 428 ER=1;
angelocarrieri 2:52b0e1971195 429 goto jump2;
angelocarrieri 1:7f5f80b47892 430 }
angelocarrieri 1:7f5f80b47892 431 else
angelocarrieri 1:7f5f80b47892 432 {
angelocarrieri 1:7f5f80b47892 433 E=0;
angelocarrieri 3:1df7773ae017 434 end=0;
angelocarrieri 2:52b0e1971195 435 goto jump2;
angelocarrieri 1:7f5f80b47892 436 }
angelocarrieri 1:7f5f80b47892 437 }
angelocarrieri 1:7f5f80b47892 438 }
angelocarrieri 1:7f5f80b47892 439 if(R==1)
angelocarrieri 1:7f5f80b47892 440 {
angelocarrieri 1:7f5f80b47892 441 if((ARxB[i])=='R')
angelocarrieri 1:7f5f80b47892 442 {
angelocarrieri 3:1df7773ae017 443 end++;
angelocarrieri 1:7f5f80b47892 444 ERR=1;
angelocarrieri 2:52b0e1971195 445 goto jump2;
angelocarrieri 1:7f5f80b47892 446 }
angelocarrieri 1:7f5f80b47892 447 else
angelocarrieri 1:7f5f80b47892 448 {
angelocarrieri 3:1df7773ae017 449 end=0;
angelocarrieri 1:7f5f80b47892 450 E=0;
angelocarrieri 1:7f5f80b47892 451 R=0;
angelocarrieri 1:7f5f80b47892 452 ER=0;
angelocarrieri 1:7f5f80b47892 453 }
angelocarrieri 1:7f5f80b47892 454 }
angelocarrieri 1:7f5f80b47892 455
angelocarrieri 1:7f5f80b47892 456 } // End if(ERR==0)
angelocarrieri 1:7f5f80b47892 457
angelocarrieri 2:52b0e1971195 458 jump2:
angelocarrieri 1:7f5f80b47892 459
angelocarrieri 1:7f5f80b47892 460 led=1;
angelocarrieri 1:7f5f80b47892 461
angelocarrieri 1:7f5f80b47892 462 } // End ciclo for
angelocarrieri 1:7f5f80b47892 463
angelocarrieri 3:1df7773ae017 464 if(end==3)
angelocarrieri 1:7f5f80b47892 465 {
angelocarrieri 1:7f5f80b47892 466 LedRED();
angelocarrieri 1:7f5f80b47892 467 }
angelocarrieri 1:7f5f80b47892 468 else
angelocarrieri 1:7f5f80b47892 469 {
angelocarrieri 1:7f5f80b47892 470 LedGREEN();
angelocarrieri 1:7f5f80b47892 471 }
angelocarrieri 1:7f5f80b47892 472
angelocarrieri 1:7f5f80b47892 473 }
angelocarrieri 1:7f5f80b47892 474
angelocarrieri 3:1df7773ae017 475 void Vreset()
angelocarrieri 3:1df7773ae017 476 {
angelocarrieri 3:1df7773ae017 477
angelocarrieri 3:1df7773ae017 478 // Reset del vettore MRxB
angelocarrieri 3:1df7773ae017 479 for(i=0;i<MRxBDIM;i++)
angelocarrieri 3:1df7773ae017 480 {
angelocarrieri 3:1df7773ae017 481 MRxB[i]='\0';
angelocarrieri 3:1df7773ae017 482 }
angelocarrieri 3:1df7773ae017 483
angelocarrieri 3:1df7773ae017 484 // Reset del vettore ARxB
angelocarrieri 3:1df7773ae017 485 for(j=0;j<ARxBDIM;j++)
angelocarrieri 3:1df7773ae017 486 {
angelocarrieri 3:1df7773ae017 487 ARxB[j]='\0';
angelocarrieri 3:1df7773ae017 488 }
angelocarrieri 3:1df7773ae017 489
angelocarrieri 3:1df7773ae017 490 }
angelocarrieri 3:1df7773ae017 491
angelocarrieri 1:7f5f80b47892 492 void LedGREEN()
angelocarrieri 1:7f5f80b47892 493 {
angelocarrieri 2:52b0e1971195 494
angelocarrieri 2:52b0e1971195 495 // Cicli per la configurazione del vettore Vled
angelocarrieri 1:7f5f80b47892 496 for(i = 0; i <= 3; i++)
angelocarrieri 2:52b0e1971195 497 Vled[i]=204;
angelocarrieri 1:7f5f80b47892 498
angelocarrieri 1:7f5f80b47892 499 for(i = 4; i <= 7; i++)
angelocarrieri 2:52b0e1971195 500 Vled[i]=136;
angelocarrieri 1:7f5f80b47892 501
angelocarrieri 1:7f5f80b47892 502 for(i = 8; i <= 11; i++)
angelocarrieri 2:52b0e1971195 503 Vled[i]=136;
angelocarrieri 1:7f5f80b47892 504
angelocarrieri 1:7f5f80b47892 505 for(i = 12; i <= NumByte-1; i++)
angelocarrieri 2:52b0e1971195 506 Vled[i]=136;
angelocarrieri 0:3eda4839be5c 507
angelocarrieri 2:52b0e1971195 508 // Ciclo per l'invio dei frame al led
angelocarrieri 1:7f5f80b47892 509 for(j = 0; j < NumByte; j++)
angelocarrieri 2:52b0e1971195 510 myspi.write(Vled[j]);
angelocarrieri 2:52b0e1971195 511
angelocarrieri 1:7f5f80b47892 512 }
angelocarrieri 1:7f5f80b47892 513
angelocarrieri 1:7f5f80b47892 514 void LedRED()
angelocarrieri 1:7f5f80b47892 515 {
angelocarrieri 2:52b0e1971195 516
angelocarrieri 2:52b0e1971195 517 // Cicli per la configurazione del vettore Vled
angelocarrieri 1:7f5f80b47892 518 for(i = 0; i <= 3; i++)
angelocarrieri 2:52b0e1971195 519 Vled[i]=136;
angelocarrieri 1:7f5f80b47892 520
angelocarrieri 1:7f5f80b47892 521 for(i = 4; i <= 7; i++)
angelocarrieri 2:52b0e1971195 522 Vled[i]=204;
angelocarrieri 1:7f5f80b47892 523
angelocarrieri 1:7f5f80b47892 524 for(i = 8; i <= 11; i++)
angelocarrieri 2:52b0e1971195 525 Vled[i]=136;
angelocarrieri 1:7f5f80b47892 526
angelocarrieri 1:7f5f80b47892 527 for(i = 12; i <= NumByte-1; i++)
angelocarrieri 2:52b0e1971195 528 Vled[i]=136;
angelocarrieri 0:3eda4839be5c 529
angelocarrieri 2:52b0e1971195 530 // Ciclo per l'invio dei frame al led
angelocarrieri 1:7f5f80b47892 531 for(j = 0; j < NumByte; j++)
angelocarrieri 2:52b0e1971195 532 myspi.write(Vled[j]);
angelocarrieri 1:7f5f80b47892 533
angelocarrieri 1:7f5f80b47892 534 }
angelocarrieri 1:7f5f80b47892 535
angelocarrieri 1:7f5f80b47892 536 void LedOFF()
angelocarrieri 1:7f5f80b47892 537 {
angelocarrieri 2:52b0e1971195 538
angelocarrieri 2:52b0e1971195 539 // Cicli per la configurazione del vettore Vled
angelocarrieri 0:3eda4839be5c 540 for(i = 0; i <= 3; i++)
angelocarrieri 2:52b0e1971195 541 Vled[i]=136;
angelocarrieri 0:3eda4839be5c 542
angelocarrieri 0:3eda4839be5c 543 for(i = 4; i <= 7; i++)
angelocarrieri 2:52b0e1971195 544 Vled[i]=136;
angelocarrieri 0:3eda4839be5c 545
angelocarrieri 0:3eda4839be5c 546 for(i = 8; i <= 11; i++)
angelocarrieri 2:52b0e1971195 547 Vled[i]=136;
angelocarrieri 0:3eda4839be5c 548
angelocarrieri 0:3eda4839be5c 549 for(i = 12; i <= NumByte-1; i++)
angelocarrieri 2:52b0e1971195 550 Vled[i]=136;
angelocarrieri 0:3eda4839be5c 551
angelocarrieri 2:52b0e1971195 552 // Ciclo per l'invio dei frame al led
angelocarrieri 0:3eda4839be5c 553 for(j = 0; j < NumByte; j++)
angelocarrieri 2:52b0e1971195 554 myspi.write(Vled[j]);
angelocarrieri 0:3eda4839be5c 555
angelocarrieri 1:7f5f80b47892 556 }
angelocarrieri 0:3eda4839be5c 557
angelocarrieri 3:1df7773ae017 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
angelocarrieri 0:3eda4839be5c 608
angelocarrieri 0:3eda4839be5c 609
angelocarrieri 0:3eda4839be5c 610
angelocarrieri 0:3eda4839be5c 611
angelocarrieri 0:3eda4839be5c 612
angelocarrieri 0:3eda4839be5c 613
angelocarrieri 0:3eda4839be5c 614
angelocarrieri 0:3eda4839be5c 615
angelocarrieri 0:3eda4839be5c 616
angelocarrieri 0:3eda4839be5c 617
angelocarrieri 0:3eda4839be5c 618