ok

Dependencies:   mbed-rtos mbed

Fork of STINGR_PDR by JOEL CONTRERAS

Committer:
jmoreno10
Date:
Thu Oct 11 22:12:53 2018 +0000
Revision:
3:6dbdf3288c41
Parent:
2:a79ceae53e04
ok

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Sumobot 0:88a700f174a3 1 #include "mbed.h" //Se declara la librería mbed.
Sumobot 0:88a700f174a3 2 #include "rtos.h"
Sumobot 0:88a700f174a3 3
Sumobot 0:88a700f174a3 4 DigitalOut led1(LED1);
Sumobot 0:88a700f174a3 5 DigitalOut led2(LED2);
Sumobot 0:88a700f174a3 6 DigitalOut led3(LED3);
Sumobot 0:88a700f174a3 7 DigitalOut led4(LED4);
Sumobot 0:88a700f174a3 8 Serial pc(USBTX, USBRX, 9600); // tx, rx Conunicación Serial con la PC
jmoreno10 3:6dbdf3288c41 9 //DigitalIn CTS(p7, PullUp); // Pin Digital de entrada "CTS" en modo Pull-Up, para encontrarse normalmente a VCC cuando no haya un pulso.
jmoreno10 3:6dbdf3288c41 10 //DigitalOut RTS(p8, 1); // Pin Digital de Salida "RTS"; Predefinido para valer 1 en su estado inactivo dentro del código.
jmoreno10 3:6dbdf3288c41 11
jmoreno10 3:6dbdf3288c41 12 DigitalIn CTS(p11, PullUp); // Pin Digital de entrada "CTS" en modo Pull-Up, para encontrarse normalmente a VCC cuando no haya un pulso.
jmoreno10 3:6dbdf3288c41 13 DigitalOut RTS(p12, 1); // Pin Digital de Salida "RTS"; Predefinido para valer 1 en su estado inactivo dentro del código.
jmoreno10 3:6dbdf3288c41 14
jmoreno10 3:6dbdf3288c41 15 Serial device(p13, p14, 9600); // tx, rx Comunicación Serial con el Módulo STX3
Sumobot 0:88a700f174a3 16 int flag=1; // Declaración de la Bandera.
JCON 2:a79ceae53e04 17 int incomingByte=0;
Sumobot 0:88a700f174a3 18 Thread thread;
Sumobot 0:88a700f174a3 19
jmoreno10 3:6dbdf3288c41 20 int packet[15]; //int or char
jmoreno10 3:6dbdf3288c41 21 int num = 0;
jmoreno10 3:6dbdf3288c41 22
jmoreno10 3:6dbdf3288c41 23 void clearPacket()
jmoreno10 3:6dbdf3288c41 24 {
jmoreno10 3:6dbdf3288c41 25 num = 0;
jmoreno10 3:6dbdf3288c41 26 for(int i = 0; i < 15 ; i++)
jmoreno10 3:6dbdf3288c41 27 packet[i] = 0;
jmoreno10 3:6dbdf3288c41 28 }
jmoreno10 3:6dbdf3288c41 29
jmoreno10 3:6dbdf3288c41 30 void printPacket()
jmoreno10 3:6dbdf3288c41 31 {
jmoreno10 3:6dbdf3288c41 32 pc.printf("\nprintPacket(): ");
jmoreno10 3:6dbdf3288c41 33 for(int i = 0; i < 15 ; i++)
jmoreno10 3:6dbdf3288c41 34 {
jmoreno10 3:6dbdf3288c41 35 pc.printf("%u",packet[i]); // Format specifier
jmoreno10 3:6dbdf3288c41 36 pc.printf(" ");
jmoreno10 3:6dbdf3288c41 37 }
jmoreno10 3:6dbdf3288c41 38 }
jmoreno10 3:6dbdf3288c41 39
jmoreno10 3:6dbdf3288c41 40 void respuesta()
jmoreno10 3:6dbdf3288c41 41 {
jmoreno10 3:6dbdf3288c41 42 while(1)
jmoreno10 3:6dbdf3288c41 43 {
jmoreno10 3:6dbdf3288c41 44 if(device.readable())
jmoreno10 3:6dbdf3288c41 45 { // Se esperan datos provenientes del TX del módulo STX3
jmoreno10 3:6dbdf3288c41 46 incomingByte = device.getc();
jmoreno10 3:6dbdf3288c41 47 packet[num] = incomingByte;
jmoreno10 3:6dbdf3288c41 48 pc.printf("%X",incomingByte); // Format specifier
JCON 2:a79ceae53e04 49 pc.printf(" ");
jmoreno10 3:6dbdf3288c41 50 num++;
jmoreno10 3:6dbdf3288c41 51 }
Sumobot 0:88a700f174a3 52 }
jmoreno10 3:6dbdf3288c41 53 }
Sumobot 0:88a700f174a3 54
jmoreno10 3:6dbdf3288c41 55 void waitCTS()
jmoreno10 3:6dbdf3288c41 56 {
JCON 2:a79ceae53e04 57 Thread::wait(200); // Se da un tiempo para que el analizador se estabilice
JCON 2:a79ceae53e04 58 incomingByte=0;
jmoreno10 3:6dbdf3288c41 59 //pc.printf("El valor de CTS es %d\n\r",CTS.read()); // Se lee el valor de la variable CTS, la cual debe ser 1
jmoreno10 3:6dbdf3288c41 60 //pc.printf("El valor de RTS es %d\n\r",RTS.read()); // Se lee el valor de la variable RTS, la cual debe ser 1
Sumobot 0:88a700f174a3 61 RTS=0; // Se manda un pulso en bajo en RTS, para inicial el proceso de transmisión
jmoreno10 3:6dbdf3288c41 62
jmoreno10 3:6dbdf3288c41 63 while(flag==1)
jmoreno10 3:6dbdf3288c41 64 {// Flag inicialmente vale 1, así que el ciclo while cambiará hasta que esa condición no se cumpla
Sumobot 0:88a700f174a3 65 flag=CTS.read(); // Cuando entra el ciclo, se iguala flag a CTS, el cual cuando cambie a 0 provocará que termine el while (máx 125 ms)
jmoreno10 3:6dbdf3288c41 66 //pc.printf("El valor de flag es %d\n\r", flag); // Se imprime el valor de flag, para identificar cuando termina el ciclo while
Sumobot 0:88a700f174a3 67 }
jmoreno10 3:6dbdf3288c41 68 }
jmoreno10 3:6dbdf3288c41 69
jmoreno10 3:6dbdf3288c41 70 void postCommand()
jmoreno10 3:6dbdf3288c41 71 {
jmoreno10 3:6dbdf3288c41 72 Thread::wait(10); // Se esperan .1 segundos una vez que se terminaron de hacer las transmisiones
jmoreno10 3:6dbdf3288c41 73 //El tiempo total de transmisión es; el wait previo a las transmisiones, el tiempo que tarda el Mu en enviar los datos y el wait posterior a la transmisión
jmoreno10 3:6dbdf3288c41 74 RTS=1;
jmoreno10 3:6dbdf3288c41 75 Thread::wait(150);
jmoreno10 3:6dbdf3288c41 76 //pc.printf("\n\rCTS: %d\n\r",CTS.read());
jmoreno10 3:6dbdf3288c41 77 flag=1;
jmoreno10 3:6dbdf3288c41 78 }
jmoreno10 3:6dbdf3288c41 79
jmoreno10 3:6dbdf3288c41 80
jmoreno10 3:6dbdf3288c41 81 bool queryESN();
jmoreno10 3:6dbdf3288c41 82 bool abortTransmission();
jmoreno10 3:6dbdf3288c41 83 bool queryFirmware();
jmoreno10 3:6dbdf3288c41 84
jmoreno10 3:6dbdf3288c41 85 int queryBursts();
jmoreno10 3:6dbdf3288c41 86 long int querySetup();
jmoreno10 3:6dbdf3288c41 87
jmoreno10 3:6dbdf3288c41 88 void sendData();
jmoreno10 3:6dbdf3288c41 89 void _setup();
jmoreno10 3:6dbdf3288c41 90 void queryHardware();
jmoreno10 3:6dbdf3288c41 91 void NAKcommand();
Sumobot 0:88a700f174a3 92
jmoreno10 3:6dbdf3288c41 93 int main()
jmoreno10 3:6dbdf3288c41 94 {
jmoreno10 3:6dbdf3288c41 95 int bursts = 0;
jmoreno10 3:6dbdf3288c41 96 int long numSetup = 0;
Sumobot 0:88a700f174a3 97 thread.start(respuesta);
Sumobot 0:88a700f174a3 98
jmoreno10 3:6dbdf3288c41 99 while(1)
jmoreno10 3:6dbdf3288c41 100 {
Sumobot 0:88a700f174a3 101 switch (pc.getc())
Sumobot 0:88a700f174a3 102 {
jmoreno10 3:6dbdf3288c41 103 case '1':
jmoreno10 3:6dbdf3288c41 104 if (queryESN() == true)
jmoreno10 3:6dbdf3288c41 105 pc.printf("\nQuery ESN is correct. VALID\n");
jmoreno10 3:6dbdf3288c41 106 else
jmoreno10 3:6dbdf3288c41 107 pc.printf("\nNAK response. INVALID");
jmoreno10 3:6dbdf3288c41 108 break;
jmoreno10 3:6dbdf3288c41 109
jmoreno10 3:6dbdf3288c41 110 case '2':
jmoreno10 3:6dbdf3288c41 111 bursts = queryBursts();
jmoreno10 3:6dbdf3288c41 112 if (bursts != 99)
jmoreno10 3:6dbdf3288c41 113 {
jmoreno10 3:6dbdf3288c41 114 pc.printf("\nBursts Remaining: ");
jmoreno10 3:6dbdf3288c41 115 pc.printf("%u",bursts);
jmoreno10 3:6dbdf3288c41 116 pc.printf("\n");
jmoreno10 3:6dbdf3288c41 117 }
jmoreno10 3:6dbdf3288c41 118 else
jmoreno10 3:6dbdf3288c41 119 pc.printf("\nNAK response. INVALID");
jmoreno10 3:6dbdf3288c41 120 break;
jmoreno10 3:6dbdf3288c41 121
jmoreno10 3:6dbdf3288c41 122 case '3':
jmoreno10 3:6dbdf3288c41 123 if (queryFirmware() == true)
jmoreno10 3:6dbdf3288c41 124 pc.printf("\nQuery ESN is correct. VALID\n");
jmoreno10 3:6dbdf3288c41 125 else
jmoreno10 3:6dbdf3288c41 126 pc.printf("NAK. INVALID");
jmoreno10 3:6dbdf3288c41 127 break;
jmoreno10 3:6dbdf3288c41 128
jmoreno10 3:6dbdf3288c41 129 case '4':
jmoreno10 3:6dbdf3288c41 130 numSetup = querySetup();
jmoreno10 3:6dbdf3288c41 131 if (numSetup == NULL)
jmoreno10 3:6dbdf3288c41 132 pc.printf("NAK");
jmoreno10 3:6dbdf3288c41 133
jmoreno10 3:6dbdf3288c41 134 //Print Channel
jmoreno10 3:6dbdf3288c41 135 pc.printf("\n RF Channel: ");
jmoreno10 3:6dbdf3288c41 136 pc.printf("%u",numSetup/(10000000)); // RF channel
jmoreno10 3:6dbdf3288c41 137 numSetup = numSetup - (numSetup/10000000)*10000000; // Truncate RF Digits
jmoreno10 3:6dbdf3288c41 138 //Print Bursts
jmoreno10 3:6dbdf3288c41 139 pc.printf("\n # of Bursts: ");
jmoreno10 3:6dbdf3288c41 140 pc.printf("%u",numSetup/(100000)); // Bursts Per Message
jmoreno10 3:6dbdf3288c41 141 numSetup = numSetup - (numSetup/100000)*100000; // Truncate Burst Digits
jmoreno10 3:6dbdf3288c41 142 //Print Min Interval
jmoreno10 3:6dbdf3288c41 143 pc.printf("\n Min Burst Interval: ");
jmoreno10 3:6dbdf3288c41 144 pc.printf("%u",numSetup/1000*5); // Min Interval
jmoreno10 3:6dbdf3288c41 145 numSetup = numSetup - (numSetup/1000)*1000; // Truncate Min Interval
jmoreno10 3:6dbdf3288c41 146 pc.printf(" seconds");
jmoreno10 3:6dbdf3288c41 147 //Print Max Interval
jmoreno10 3:6dbdf3288c41 148 pc.printf("\n Max Burst Interval: ");
jmoreno10 3:6dbdf3288c41 149 pc.printf("%u",numSetup*5); // Max Interval
jmoreno10 3:6dbdf3288c41 150 pc.printf(" seconds\n");
jmoreno10 3:6dbdf3288c41 151
jmoreno10 3:6dbdf3288c41 152 break;
jmoreno10 3:6dbdf3288c41 153
jmoreno10 3:6dbdf3288c41 154 case '5':
jmoreno10 3:6dbdf3288c41 155 queryHardware();
jmoreno10 3:6dbdf3288c41 156 break;
jmoreno10 3:6dbdf3288c41 157 case '6':
jmoreno10 3:6dbdf3288c41 158 NAKcommand();
jmoreno10 3:6dbdf3288c41 159 break;
JCON 2:a79ceae53e04 160 case '7':
jmoreno10 3:6dbdf3288c41 161 _setup();
jmoreno10 3:6dbdf3288c41 162 break;
JCON 2:a79ceae53e04 163 case '8':
jmoreno10 3:6dbdf3288c41 164 sendData();
jmoreno10 3:6dbdf3288c41 165 break;
JCON 2:a79ceae53e04 166 case '9':
jmoreno10 3:6dbdf3288c41 167 if (abortTransmission() == true)
jmoreno10 3:6dbdf3288c41 168 pc.printf("\nTransmission successfully aborted.\n");
jmoreno10 3:6dbdf3288c41 169 else
jmoreno10 3:6dbdf3288c41 170 pc.printf("\nNAK response. INVALID");
jmoreno10 3:6dbdf3288c41 171 break;
Sumobot 0:88a700f174a3 172 }
jmoreno10 3:6dbdf3288c41 173 }
jmoreno10 3:6dbdf3288c41 174 }
jmoreno10 3:6dbdf3288c41 175
jmoreno10 3:6dbdf3288c41 176 //0x00 Send Data
jmoreno10 3:6dbdf3288c41 177 void sendData()
jmoreno10 3:6dbdf3288c41 178 {
jmoreno10 3:6dbdf3288c41 179 led4=!led4;
jmoreno10 3:6dbdf3288c41 180 pc.printf("\n\r0x00 Send Data\nCommand: AA 0E 00 01 02 03 04 05 06 07 08 09 BE E8\n\r");
jmoreno10 3:6dbdf3288c41 181 waitCTS();
jmoreno10 3:6dbdf3288c41 182 Thread::wait(10); // SEND DATA
jmoreno10 3:6dbdf3288c41 183 device.putc(0XAA);
jmoreno10 3:6dbdf3288c41 184 device.putc(0X0E);
jmoreno10 3:6dbdf3288c41 185 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 186 device.putc(0X01);
jmoreno10 3:6dbdf3288c41 187 device.putc(0X02);
jmoreno10 3:6dbdf3288c41 188 device.putc(0X03);
jmoreno10 3:6dbdf3288c41 189 device.putc(0X04);
jmoreno10 3:6dbdf3288c41 190 device.putc(0X05);
jmoreno10 3:6dbdf3288c41 191 device.putc(0X06);
jmoreno10 3:6dbdf3288c41 192 device.putc(0X07);
jmoreno10 3:6dbdf3288c41 193 device.putc(0X08);
jmoreno10 3:6dbdf3288c41 194 device.putc(0X09);
jmoreno10 3:6dbdf3288c41 195 device.putc(0XBE);
jmoreno10 3:6dbdf3288c41 196 device.putc(0XE8);
jmoreno10 3:6dbdf3288c41 197 postCommand();
jmoreno10 3:6dbdf3288c41 198 }
jmoreno10 3:6dbdf3288c41 199
jmoreno10 3:6dbdf3288c41 200 //0x01 Query ESN
jmoreno10 3:6dbdf3288c41 201 bool queryESN()
jmoreno10 3:6dbdf3288c41 202 {
jmoreno10 3:6dbdf3288c41 203 led1=!led1;
jmoreno10 3:6dbdf3288c41 204 pc.printf("\n\n\r0x01 Query ESN\nCommand: AA 05 01 50 D5\n\r");
jmoreno10 3:6dbdf3288c41 205 pc.printf("Response: ");
jmoreno10 3:6dbdf3288c41 206 waitCTS();
jmoreno10 3:6dbdf3288c41 207 Thread::wait(10);
jmoreno10 3:6dbdf3288c41 208
jmoreno10 3:6dbdf3288c41 209 device.putc(0XAA);
jmoreno10 3:6dbdf3288c41 210 device.putc(0X05);
jmoreno10 3:6dbdf3288c41 211 device.putc(0X01);
jmoreno10 3:6dbdf3288c41 212 device.putc(0X50);
jmoreno10 3:6dbdf3288c41 213 device.putc(0XD5);
jmoreno10 3:6dbdf3288c41 214
jmoreno10 3:6dbdf3288c41 215 postCommand();
jmoreno10 3:6dbdf3288c41 216 printPacket();
jmoreno10 3:6dbdf3288c41 217 if (packet[3] == 0 && // 0x00
jmoreno10 3:6dbdf3288c41 218 packet[4] == 41 && // 0x29
jmoreno10 3:6dbdf3288c41 219 packet[5] == 67 && // 0x43
jmoreno10 3:6dbdf3288c41 220 packet[6] == 179) // 0xB3
jmoreno10 3:6dbdf3288c41 221 {
jmoreno10 3:6dbdf3288c41 222 clearPacket();
jmoreno10 3:6dbdf3288c41 223 return true;
jmoreno10 3:6dbdf3288c41 224 }
jmoreno10 3:6dbdf3288c41 225 clearPacket();
jmoreno10 3:6dbdf3288c41 226 return false;
jmoreno10 3:6dbdf3288c41 227 }
jmoreno10 3:6dbdf3288c41 228
jmoreno10 3:6dbdf3288c41 229 //0x03 Abort Transmission
jmoreno10 3:6dbdf3288c41 230 bool abortTransmission()
jmoreno10 3:6dbdf3288c41 231 {
jmoreno10 3:6dbdf3288c41 232 led1=!led1;
jmoreno10 3:6dbdf3288c41 233 pc.printf("\n\r0x03 Abort Transmission\nCommand: AA 05 03 42 F6\n\r");
jmoreno10 3:6dbdf3288c41 234 pc.printf("Response: ");
jmoreno10 3:6dbdf3288c41 235 waitCTS();
jmoreno10 3:6dbdf3288c41 236 Thread::wait(10);
jmoreno10 3:6dbdf3288c41 237 device.putc(0XAA);
jmoreno10 3:6dbdf3288c41 238 device.putc(0X05);
jmoreno10 3:6dbdf3288c41 239 device.putc(0X03);
jmoreno10 3:6dbdf3288c41 240 device.putc(0X42);
jmoreno10 3:6dbdf3288c41 241 device.putc(0XF6);
jmoreno10 3:6dbdf3288c41 242
jmoreno10 3:6dbdf3288c41 243 postCommand();
jmoreno10 3:6dbdf3288c41 244 printPacket();
jmoreno10 3:6dbdf3288c41 245 if (packet[0] == 170 && // 0xAA
jmoreno10 3:6dbdf3288c41 246 packet[1] == 5 && // 0x05
jmoreno10 3:6dbdf3288c41 247 packet[2] == 3 && // 0x03
jmoreno10 3:6dbdf3288c41 248 packet[3] == 66 && // 0x42
jmoreno10 3:6dbdf3288c41 249 packet[4] == 246) // 0xF6
jmoreno10 3:6dbdf3288c41 250 {
jmoreno10 3:6dbdf3288c41 251 clearPacket();
jmoreno10 3:6dbdf3288c41 252 return true;
jmoreno10 3:6dbdf3288c41 253 }
jmoreno10 3:6dbdf3288c41 254 clearPacket();
jmoreno10 3:6dbdf3288c41 255 return false;
jmoreno10 3:6dbdf3288c41 256 }
jmoreno10 3:6dbdf3288c41 257
jmoreno10 3:6dbdf3288c41 258 //0x04 Query Bursts
jmoreno10 3:6dbdf3288c41 259 int queryBursts()
jmoreno10 3:6dbdf3288c41 260 {
jmoreno10 3:6dbdf3288c41 261 //int bursts = 99;
jmoreno10 3:6dbdf3288c41 262 led2=!led2;
jmoreno10 3:6dbdf3288c41 263 pc.printf("\n\r0x04 Query Burst Remaining\nCommand: AA 05 04 FD 82\n\r");
jmoreno10 3:6dbdf3288c41 264 pc.printf("Response: ");
jmoreno10 3:6dbdf3288c41 265 waitCTS();
jmoreno10 3:6dbdf3288c41 266 Thread::wait(10);
jmoreno10 3:6dbdf3288c41 267
jmoreno10 3:6dbdf3288c41 268 device.putc(0XAA);
jmoreno10 3:6dbdf3288c41 269 device.putc(0X05);
jmoreno10 3:6dbdf3288c41 270 device.putc(0X04);
jmoreno10 3:6dbdf3288c41 271 device.putc(0XFD);
jmoreno10 3:6dbdf3288c41 272 device.putc(0X82);
jmoreno10 3:6dbdf3288c41 273
jmoreno10 3:6dbdf3288c41 274 postCommand();
jmoreno10 3:6dbdf3288c41 275 printPacket();
jmoreno10 3:6dbdf3288c41 276
jmoreno10 3:6dbdf3288c41 277 //If NAK response
jmoreno10 3:6dbdf3288c41 278 if (packet[0] == 170 && // 0xAA
jmoreno10 3:6dbdf3288c41 279 packet[1] == 5 && // 0x05
jmoreno10 3:6dbdf3288c41 280 packet[2] == 255 && // 0xFF
jmoreno10 3:6dbdf3288c41 281 packet[3] == 161 && // 0xA1
jmoreno10 3:6dbdf3288c41 282 packet[4] == 203) // 0xCB
jmoreno10 3:6dbdf3288c41 283 {
jmoreno10 3:6dbdf3288c41 284 clearPacket();
jmoreno10 3:6dbdf3288c41 285 return 99;
jmoreno10 3:6dbdf3288c41 286 }
jmoreno10 3:6dbdf3288c41 287 clearPacket();
jmoreno10 3:6dbdf3288c41 288 return packet[3];
jmoreno10 3:6dbdf3288c41 289 }
jmoreno10 3:6dbdf3288c41 290
jmoreno10 3:6dbdf3288c41 291 //0x05 Query Firmware
jmoreno10 3:6dbdf3288c41 292 bool queryFirmware()
jmoreno10 3:6dbdf3288c41 293 {
jmoreno10 3:6dbdf3288c41 294 led3=!led3;
jmoreno10 3:6dbdf3288c41 295 pc.printf("\n\r0x05 Query Firmware Version\nCommand: AA 05 05 74 93\n\r");
jmoreno10 3:6dbdf3288c41 296 pc.printf("Response: ");
jmoreno10 3:6dbdf3288c41 297 waitCTS();
jmoreno10 3:6dbdf3288c41 298 Thread::wait(10);
jmoreno10 3:6dbdf3288c41 299 device.putc(0XAA);
jmoreno10 3:6dbdf3288c41 300 device.putc(0X05);
jmoreno10 3:6dbdf3288c41 301 device.putc(0X05);
jmoreno10 3:6dbdf3288c41 302 device.putc(0X74);
jmoreno10 3:6dbdf3288c41 303 device.putc(0X93);
jmoreno10 3:6dbdf3288c41 304
jmoreno10 3:6dbdf3288c41 305 postCommand();
jmoreno10 3:6dbdf3288c41 306 printPacket();
jmoreno10 3:6dbdf3288c41 307 if (packet[3] == 1 && // 0x01
jmoreno10 3:6dbdf3288c41 308 packet[4] == 3) // 0x03
jmoreno10 3:6dbdf3288c41 309 {
jmoreno10 3:6dbdf3288c41 310 clearPacket();
jmoreno10 3:6dbdf3288c41 311 return true;
Sumobot 0:88a700f174a3 312 }
jmoreno10 3:6dbdf3288c41 313 clearPacket();
jmoreno10 3:6dbdf3288c41 314 return false;
jmoreno10 3:6dbdf3288c41 315 }
jmoreno10 3:6dbdf3288c41 316
jmoreno10 3:6dbdf3288c41 317 //0x06 Setup
jmoreno10 3:6dbdf3288c41 318 void _setup()
jmoreno10 3:6dbdf3288c41 319 {
jmoreno10 3:6dbdf3288c41 320 led3=!led3;
jmoreno10 3:6dbdf3288c41 321 pc.printf("\n\r0x06 Setup\nCommand: AA 0E 06 00 00 00 00 00 03 18 30 00 CE 9C\n\r");
jmoreno10 3:6dbdf3288c41 322 pc.printf("Response: ");
jmoreno10 3:6dbdf3288c41 323 waitCTS();
jmoreno10 3:6dbdf3288c41 324 Thread::wait(10);
jmoreno10 3:6dbdf3288c41 325
jmoreno10 3:6dbdf3288c41 326 /*
jmoreno10 3:6dbdf3288c41 327 // 3 Bursts, 2 minutes, 4 minutes
jmoreno10 3:6dbdf3288c41 328 device.putc(0XAA);
jmoreno10 3:6dbdf3288c41 329 device.putc(0X0E);
jmoreno10 3:6dbdf3288c41 330 device.putc(0X06);
jmoreno10 3:6dbdf3288c41 331 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 332 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 333 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 334 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 335 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 336 device.putc(0X03); // 3 Bursts
jmoreno10 3:6dbdf3288c41 337 device.putc(0X18); // 2 minutes
jmoreno10 3:6dbdf3288c41 338 device.putc(0X30); // 4 minutes
jmoreno10 3:6dbdf3288c41 339 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 340 device.putc(0XCE); // CRC1
jmoreno10 3:6dbdf3288c41 341 device.putc(0X9C); // CRC2
jmoreno10 3:6dbdf3288c41 342 */
jmoreno10 3:6dbdf3288c41 343
jmoreno10 3:6dbdf3288c41 344 /*
jmoreno10 3:6dbdf3288c41 345 // 3 Bursts, 10 seconds, 15 seconds
jmoreno10 3:6dbdf3288c41 346 device.putc(0XAA);
jmoreno10 3:6dbdf3288c41 347 device.putc(0X0E);
jmoreno10 3:6dbdf3288c41 348 device.putc(0X06);
jmoreno10 3:6dbdf3288c41 349 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 350 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 351 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 352 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 353 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 354 device.putc(0X03); // 3 Bursts
jmoreno10 3:6dbdf3288c41 355 device.putc(0X02); // 10 seconds
jmoreno10 3:6dbdf3288c41 356 device.putc(0X03); // 15 seconds
jmoreno10 3:6dbdf3288c41 357 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 358 device.putc(0XEB); // CRC1
jmoreno10 3:6dbdf3288c41 359 device.putc(0XF6); // CRC2
jmoreno10 3:6dbdf3288c41 360 */
jmoreno10 3:6dbdf3288c41 361
jmoreno10 3:6dbdf3288c41 362
jmoreno10 3:6dbdf3288c41 363
jmoreno10 3:6dbdf3288c41 364 // 3 Bursts, 5 seconds, 10 seconds
jmoreno10 3:6dbdf3288c41 365 device.putc(0XAA);
jmoreno10 3:6dbdf3288c41 366 device.putc(0X0E);
jmoreno10 3:6dbdf3288c41 367 device.putc(0X06);
jmoreno10 3:6dbdf3288c41 368 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 369 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 370 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 371 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 372 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 373 device.putc(0X03); // 3 Bursts
jmoreno10 3:6dbdf3288c41 374 device.putc(0X01); // 5 seconds
jmoreno10 3:6dbdf3288c41 375 device.putc(0X02); // 10 seconds
jmoreno10 3:6dbdf3288c41 376 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 377 device.putc(0X57); // CRC1
jmoreno10 3:6dbdf3288c41 378 device.putc(0X00); // CRC2
jmoreno10 3:6dbdf3288c41 379
jmoreno10 3:6dbdf3288c41 380
jmoreno10 3:6dbdf3288c41 381 /*
jmoreno10 3:6dbdf3288c41 382 // 1 Burst, 10 seconds, 15 seconds
jmoreno10 3:6dbdf3288c41 383 device.putc(0XAA);
jmoreno10 3:6dbdf3288c41 384 device.putc(0X0E);
jmoreno10 3:6dbdf3288c41 385 device.putc(0X06);
jmoreno10 3:6dbdf3288c41 386 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 387 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 388 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 389 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 390 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 391 device.putc(0X01); // 1 Burst
jmoreno10 3:6dbdf3288c41 392 device.putc(0X02); // 10 seconds
jmoreno10 3:6dbdf3288c41 393 device.putc(0X03); // 15 seconds
jmoreno10 3:6dbdf3288c41 394 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 395 device.putc(0X9D); // CRC1
jmoreno10 3:6dbdf3288c41 396 device.putc(0XCF); // CRC2
jmoreno10 3:6dbdf3288c41 397 */
jmoreno10 3:6dbdf3288c41 398
jmoreno10 3:6dbdf3288c41 399
jmoreno10 3:6dbdf3288c41 400 // 1 Burst, 5 seconds, 10 seconds
jmoreno10 3:6dbdf3288c41 401 /*
jmoreno10 3:6dbdf3288c41 402 device.putc(0XAA);
jmoreno10 3:6dbdf3288c41 403 device.putc(0X0E);
jmoreno10 3:6dbdf3288c41 404 device.putc(0X06);
jmoreno10 3:6dbdf3288c41 405 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 406 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 407 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 408 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 409 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 410 device.putc(0X01); // 1 Burst
jmoreno10 3:6dbdf3288c41 411 device.putc(0X01); // 5 seconds
jmoreno10 3:6dbdf3288c41 412 device.putc(0X02); // 10 seconds
jmoreno10 3:6dbdf3288c41 413 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 414 device.putc(0X21); // CRC1
jmoreno10 3:6dbdf3288c41 415 device.putc(0X39); // CRC2
jmoreno10 3:6dbdf3288c41 416 */
jmoreno10 3:6dbdf3288c41 417
jmoreno10 3:6dbdf3288c41 418
jmoreno10 3:6dbdf3288c41 419 // 3 Bursts, 10 seconds, 20 seconds
jmoreno10 3:6dbdf3288c41 420 /*
jmoreno10 3:6dbdf3288c41 421 device.putc(0XAA);
jmoreno10 3:6dbdf3288c41 422 device.putc(0X0E);
jmoreno10 3:6dbdf3288c41 423 device.putc(0X06);
jmoreno10 3:6dbdf3288c41 424 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 425 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 426 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 427 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 428 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 429 device.putc(0X03); // 3 Bursts
jmoreno10 3:6dbdf3288c41 430 device.putc(0X02); // 10 seconds
jmoreno10 3:6dbdf3288c41 431 device.putc(0X04); // 20 seconds
jmoreno10 3:6dbdf3288c41 432 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 433 device.putc(0XE3); // CRC1
jmoreno10 3:6dbdf3288c41 434 device.putc(0XBB); // CRC2
jmoreno10 3:6dbdf3288c41 435 */
jmoreno10 3:6dbdf3288c41 436
jmoreno10 3:6dbdf3288c41 437 // 1 Burst, 30 seconds, 60 seconds
jmoreno10 3:6dbdf3288c41 438 /*
jmoreno10 3:6dbdf3288c41 439 device.putc(0XAA);
jmoreno10 3:6dbdf3288c41 440 device.putc(0X0E);
jmoreno10 3:6dbdf3288c41 441 device.putc(0X06);
jmoreno10 3:6dbdf3288c41 442 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 443 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 444 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 445 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 446 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 447 device.putc(0X01); // 1 Burst
jmoreno10 3:6dbdf3288c41 448 device.putc(0X06); // 30 seconds
jmoreno10 3:6dbdf3288c41 449 device.putc(0X0C); // 60 seconds
jmoreno10 3:6dbdf3288c41 450 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 451 device.putc(0X34); // CRC1
jmoreno10 3:6dbdf3288c41 452 device.putc(0X2F); // CRC2
jmoreno10 3:6dbdf3288c41 453 */
jmoreno10 3:6dbdf3288c41 454
jmoreno10 3:6dbdf3288c41 455 // 2 Bursts, 5 seconds, 10 seconds
jmoreno10 3:6dbdf3288c41 456 /*
jmoreno10 3:6dbdf3288c41 457 device.putc(0XAA);
jmoreno10 3:6dbdf3288c41 458 device.putc(0X0E);
jmoreno10 3:6dbdf3288c41 459 device.putc(0X06);
jmoreno10 3:6dbdf3288c41 460 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 461 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 462 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 463 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 464 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 465 device.putc(0X02); // 2 Bursts
jmoreno10 3:6dbdf3288c41 466 device.putc(0X01); // 5 seconds
jmoreno10 3:6dbdf3288c41 467 device.putc(0X02); // 10 seconds
jmoreno10 3:6dbdf3288c41 468 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 469 device.putc(0XEC); // CRC1
jmoreno10 3:6dbdf3288c41 470 device.putc(0X1C); // CRC2
jmoreno10 3:6dbdf3288c41 471 */
jmoreno10 3:6dbdf3288c41 472
jmoreno10 3:6dbdf3288c41 473 // 2 Bursts, 10 seconds, 15 seconds
jmoreno10 3:6dbdf3288c41 474 /*
jmoreno10 3:6dbdf3288c41 475 device.putc(0XAA);
jmoreno10 3:6dbdf3288c41 476 device.putc(0X0E);
jmoreno10 3:6dbdf3288c41 477 device.putc(0X06);
jmoreno10 3:6dbdf3288c41 478 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 479 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 480 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 481 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 482 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 483 device.putc(0X02); // 2 Bursts
jmoreno10 3:6dbdf3288c41 484 device.putc(0X02); // 5 seconds
jmoreno10 3:6dbdf3288c41 485 device.putc(0X03); // 10 seconds
jmoreno10 3:6dbdf3288c41 486 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 487 device.putc(0X50); // CRC1
jmoreno10 3:6dbdf3288c41 488 device.putc(0XEA); // CRC2
jmoreno10 3:6dbdf3288c41 489 */
jmoreno10 3:6dbdf3288c41 490
jmoreno10 3:6dbdf3288c41 491 // 3 Bursts, 5 seconds, 10 seconds
jmoreno10 3:6dbdf3288c41 492 /*
jmoreno10 3:6dbdf3288c41 493 device.putc(0XAA);
jmoreno10 3:6dbdf3288c41 494 device.putc(0X0E);
jmoreno10 3:6dbdf3288c41 495 device.putc(0X06);
jmoreno10 3:6dbdf3288c41 496 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 497 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 498 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 499 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 500 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 501 device.putc(0X02); // 2 Bursts
jmoreno10 3:6dbdf3288c41 502 device.putc(0X18); // 5 seconds
jmoreno10 3:6dbdf3288c41 503 device.putc(0X30); // 15 seconds
jmoreno10 3:6dbdf3288c41 504 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 505 device.putc(0X75); // CRC1
jmoreno10 3:6dbdf3288c41 506 device.putc(0X80); // CRC2
jmoreno10 3:6dbdf3288c41 507 */
jmoreno10 3:6dbdf3288c41 508
jmoreno10 3:6dbdf3288c41 509 // 3 Bursts, 5 seconds, 10 seconds
jmoreno10 3:6dbdf3288c41 510 /*
jmoreno10 3:6dbdf3288c41 511 device.putc(0XAA);
jmoreno10 3:6dbdf3288c41 512 device.putc(0X0E);
jmoreno10 3:6dbdf3288c41 513 device.putc(0X06);
jmoreno10 3:6dbdf3288c41 514 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 515 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 516 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 517 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 518 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 519 device.putc(0X03); // 3 Bursts
jmoreno10 3:6dbdf3288c41 520 device.putc(0X01); // 5 seconds
jmoreno10 3:6dbdf3288c41 521 device.putc(0X02); // 10 seconds
jmoreno10 3:6dbdf3288c41 522 device.putc(0X00);
jmoreno10 3:6dbdf3288c41 523 device.putc(0X57); // CRC1
jmoreno10 3:6dbdf3288c41 524 device.putc(0X00); // CRC2
jmoreno10 3:6dbdf3288c41 525 */
jmoreno10 3:6dbdf3288c41 526 postCommand();
jmoreno10 3:6dbdf3288c41 527
jmoreno10 3:6dbdf3288c41 528 }
jmoreno10 3:6dbdf3288c41 529
jmoreno10 3:6dbdf3288c41 530 //0x07 Query Setup
jmoreno10 3:6dbdf3288c41 531 long int querySetup()
jmoreno10 3:6dbdf3288c41 532 {
jmoreno10 3:6dbdf3288c41 533 int numSetup = 0;
jmoreno10 3:6dbdf3288c41 534 led4=!led4;
jmoreno10 3:6dbdf3288c41 535 pc.printf("\n\r0x07 Query Setup\nCommand: AA 05 07 66 B0\n\r");
jmoreno10 3:6dbdf3288c41 536 pc.printf("Response: ");
jmoreno10 3:6dbdf3288c41 537 waitCTS();
jmoreno10 3:6dbdf3288c41 538 Thread::wait(10);
jmoreno10 3:6dbdf3288c41 539
jmoreno10 3:6dbdf3288c41 540 device.putc(0XAA);
jmoreno10 3:6dbdf3288c41 541 device.putc(0X05);
jmoreno10 3:6dbdf3288c41 542 device.putc(0X07);
jmoreno10 3:6dbdf3288c41 543 device.putc(0X66);
jmoreno10 3:6dbdf3288c41 544 device.putc(0XB0);
jmoreno10 3:6dbdf3288c41 545
jmoreno10 3:6dbdf3288c41 546 postCommand();
jmoreno10 3:6dbdf3288c41 547
jmoreno10 3:6dbdf3288c41 548 //If NAK response
jmoreno10 3:6dbdf3288c41 549 if (packet[0] == 170 && // 0xAA
jmoreno10 3:6dbdf3288c41 550 packet[1] == 5 && // 0x05
jmoreno10 3:6dbdf3288c41 551 packet[2] == 255 && // 0xFF
jmoreno10 3:6dbdf3288c41 552 packet[3] == 161 && // 0xA1
jmoreno10 3:6dbdf3288c41 553 packet[4] == 203) // 0xCB
jmoreno10 3:6dbdf3288c41 554 {
jmoreno10 3:6dbdf3288c41 555 clearPacket();
jmoreno10 3:6dbdf3288c41 556 return NULL;
jmoreno10 3:6dbdf3288c41 557 }
jmoreno10 3:6dbdf3288c41 558 numSetup = packet[7]*10000000 + packet[8]*100000 + packet[9]*1000 + packet[10];
jmoreno10 3:6dbdf3288c41 559 clearPacket();
jmoreno10 3:6dbdf3288c41 560 return numSetup;
jmoreno10 3:6dbdf3288c41 561 }
jmoreno10 3:6dbdf3288c41 562
jmoreno10 3:6dbdf3288c41 563 //0x09 Query Hardware
jmoreno10 3:6dbdf3288c41 564 void queryHardware()
jmoreno10 3:6dbdf3288c41 565 {
jmoreno10 3:6dbdf3288c41 566 led1=!led1;
jmoreno10 3:6dbdf3288c41 567 pc.printf("\n\r0x09 Query Hardware Version\nCommand: AA 05 09 18 59\n\r");
jmoreno10 3:6dbdf3288c41 568 pc.printf("Response: ");
jmoreno10 3:6dbdf3288c41 569 waitCTS();
jmoreno10 3:6dbdf3288c41 570 Thread::wait(10);
jmoreno10 3:6dbdf3288c41 571
jmoreno10 3:6dbdf3288c41 572 device.putc(0XAA);
jmoreno10 3:6dbdf3288c41 573 device.putc(0X05);
jmoreno10 3:6dbdf3288c41 574 device.putc(0X09);
jmoreno10 3:6dbdf3288c41 575 device.putc(0X18);
jmoreno10 3:6dbdf3288c41 576 device.putc(0X59);
jmoreno10 3:6dbdf3288c41 577
jmoreno10 3:6dbdf3288c41 578 postCommand();
jmoreno10 3:6dbdf3288c41 579 printPacket();
jmoreno10 3:6dbdf3288c41 580 clearPacket();
jmoreno10 3:6dbdf3288c41 581 pc.printf("\n");
jmoreno10 3:6dbdf3288c41 582 }
jmoreno10 3:6dbdf3288c41 583
jmoreno10 3:6dbdf3288c41 584 //NAK Command
jmoreno10 3:6dbdf3288c41 585 void NAKcommand()
jmoreno10 3:6dbdf3288c41 586 {
jmoreno10 3:6dbdf3288c41 587 led2=!led2;
jmoreno10 3:6dbdf3288c41 588 pc.printf("\n\rXxXX NAK\nCommand: AA 05 07 66 B1\n\r");
jmoreno10 3:6dbdf3288c41 589 pc.printf("Response: ");
jmoreno10 3:6dbdf3288c41 590 waitCTS();
jmoreno10 3:6dbdf3288c41 591 Thread::wait(10);
jmoreno10 3:6dbdf3288c41 592
jmoreno10 3:6dbdf3288c41 593 device.putc(0XAA);
jmoreno10 3:6dbdf3288c41 594 device.putc(0X05);
jmoreno10 3:6dbdf3288c41 595 device.putc(0X07);
jmoreno10 3:6dbdf3288c41 596 device.putc(0X66);
jmoreno10 3:6dbdf3288c41 597 device.putc(0XB1);
jmoreno10 3:6dbdf3288c41 598
jmoreno10 3:6dbdf3288c41 599 postCommand();
jmoreno10 3:6dbdf3288c41 600 printPacket();
jmoreno10 3:6dbdf3288c41 601 clearPacket();
jmoreno10 3:6dbdf3288c41 602 pc.printf("\n");
jmoreno10 3:6dbdf3288c41 603 }