![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
app4
Dependencies: mbed-rtos mbed CRC16
Fork of S5info_APP2 by
Diff: main.cpp
- Revision:
- 20:ac8682cf923b
- Parent:
- 19:e13ac9d940ab
- Child:
- 22:7244c3391bac
diff -r e13ac9d940ab -r ac8682cf923b main.cpp --- a/main.cpp Tue Mar 07 05:17:38 2017 +0000 +++ b/main.cpp Tue Mar 07 05:39:28 2017 +0000 @@ -14,8 +14,9 @@ bool transmit = false; //faux pour le debut de demi-periode d'envoie d'un bit, vrai pour la 2ème demi-periode char trame_sent[80]; //tableau de la trame à envoyer uint8_t byte_sent_pos, //position de l'octet dans le tableau d'envoi - bit_sent, //position du bit de l'octet en cours d'envoi (du MSB au LSB) 7..0 trame_length; //longueur de la trame complete + +signed char bit_sent; //position du bit de l'octet en cours d'envoi (du MSB au LSB) 7..0 void initTimers() { @@ -110,18 +111,18 @@ } //création de la trame -void create_trame(char message[],int taille) +void create_trame(char message[],unsigned char taille) { - CRC16 *myCRC = new CRC16(); - unsigned short resultCRC = myCRC->calculateCRC16(message,taille); + CRC16 myCRC; + unsigned short resultCRC = myCRC.calculateCRC16(message,taille); - trame_sent[0] = 0x55; //Preambule - trame_sent[1] = 0x7E; //Start + trame_sent[0] = PREAMBULE; //Preambule + trame_sent[1] = START; //Start trame_sent[2] = 0x00; //Type + Flag mis a 0x00 - trame_sent[3] = (char)taille; //Longueur du message (Max 33 caractères) + trame_sent[3] = taille; //Longueur du message (Max 33 caractères) //message - for (int i=0;i<taille;i++) + for (char i=0;i<taille;i++) { trame_sent[taille + 4] = message[i]; } @@ -130,7 +131,7 @@ trame_sent[taille + 4] = (resultCRC >> 8) & 0xFF; trame_sent[taille + 5] = resultCRC & 0xFF; - trame_sent[taille + 6] = 0x7E; //End + trame_sent[taille + 6] = END; //End trame_length = taille + 7; //Longueur de la trame } @@ -138,10 +139,10 @@ void get_text() { pc.printf("\n\rYour text : "); - int count = 0; + unsigned char count = 0; char c = 0x00; char text[73]; - while(c != 0x0D && count < 73) { //Tant que c'est different de '\r' et pour un maximum de 73 caractères + while(c != '\r' && count < 73) { c = pc.getc(); text[count] = c; pc.putc(c); @@ -187,6 +188,15 @@ (bytes.size() == 2 && bytes[1] != START)) { bytes.clear(); + + if (bytes.size() == 1) + { + pc.printf("[DEBUG] - Invalid PREAMBULE : %x\n", bytes[0]); + } + else + { + pc.printf("[DEBUG] - Invalid START : %x\n", bytes[1]); + } } if (bytes.size() == 4) { @@ -206,6 +216,10 @@ // Affiche à l'écran le message valide pc.printf(&charge_utile[0], charge_utile.size()); } + else + { + pc.printf("[DEBUG] - Invalid CRC, dumping message\n"); + } bytes.clear(); } }