Angelo Carrieri / Mbed 2 deprecated ATCommands

Dependencies:   mbed

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