APP 4
Dependencies: mbed CRC16 mbed-rtos
Diff: Frame.cpp
- Revision:
- 26:f2b37f9dfca9
- Parent:
- 20:f0932bfe09ed
diff -r d41a23d8f2d7 -r f2b37f9dfca9 Frame.cpp --- a/Frame.cpp Tue Feb 23 14:50:48 2016 +0000 +++ b/Frame.cpp Tue Feb 23 20:56:47 2016 +0000 @@ -1,8 +1,12 @@ +// Vincent Bélanger et Laurent Mandrile +// belv1802 - manl2003 + #include "Frame.h" #include "CRC16.h" #pragma once +// Fonction de construction de trame bitset<FRAMESIZE> buildFrame(bitset<MAX_DATA> data, char size) { bitset<FRAMESIZE> bitset; @@ -27,9 +31,9 @@ bitset.set(14, 1); bitset.set(15, 0); - // 8 unused bits + // 8 bits non utilisés - // Length + // Longueur bitset.set(24, size & 0b10000000); bitset.set(25, size & 0b01000000); bitset.set(26, size & 0b00100000); @@ -39,6 +43,7 @@ bitset.set(30, size & 0b00000010); bitset.set(31, size & 0b00000001); + // Insertion des données utiles char payload[size]; for (int i = 0; i < size * 8; i++) { @@ -46,14 +51,16 @@ if ((i % 8) == 0) { + // Conversion en octets pour le calcul du CRC16 payload[i / 8] = (data[i] << 7) | (data[i + 1] << 6) | (data[i + 2] << 5) | (data[i + 3] << 4) | (data[i + 4] << 3) | (data[i + 5] << 2) | (data[i + 6] << 1) | (data[i + 7] << 0); } } + // Calcul du CRC16 unsigned short crc = CRC16::calculateCRC16(payload, size); int counter = 32 + size*8; - // CRC + // Ajout du CRC bitset.set(counter, crc & 0b1000000000000000); bitset.set(counter+1, crc & 0b0100000000000000); bitset.set(counter+2, crc & 0b0010000000000000); @@ -84,6 +91,7 @@ return bitset.flip(); } +// Fonction de conversion d'octets en bits bitset<MAX_DATA> convertToBits(char* message, char size) { bitset<MAX_DATA> bitset;