APP4 - S5 H16

Dependencies:   mbed-rtos mbed

Committer:
SonSenpai
Date:
Wed Feb 24 06:32:59 2016 +0000
Revision:
5:6315ad5e8686
Parent:
4:d773812f9f7b
last I guess

Who changed what in which revision?

UserRevisionLine numberNew contents of line
SonSenpai 0:6b5926b50a71 1 #include "trame.h"
SonSenpai 0:6b5926b50a71 2
SonSenpai 0:6b5926b50a71 3 trame::trame( string msg )
SonSenpai 0:6b5926b50a71 4 {
SonSenpai 4:d773812f9f7b 5 std::printf("debug : creating trame with %s \n\r", msg);
SonSenpai 0:6b5926b50a71 6 length = ( msg.length() * 8 ) + ( 7 * 8 );
SonSenpai 0:6b5926b50a71 7 dataLength = ( msg.length() * 8 );
SonSenpai 0:6b5926b50a71 8 preambule = 0x55;
SonSenpai 0:6b5926b50a71 9 start = 0x7E;
SonSenpai 0:6b5926b50a71 10 type_flags = 0x0;
SonSenpai 0:6b5926b50a71 11 end = 0x7E;
SonSenpai 4:d773812f9f7b 12 message_length = msg.length()*8;
SonSenpai 0:6b5926b50a71 13
SonSenpai 0:6b5926b50a71 14 string temp = "";
SonSenpai 0:6b5926b50a71 15 for (int i = 0; i < msg.length(); i++)
SonSenpai 0:6b5926b50a71 16 {
SonSenpai 0:6b5926b50a71 17 temp += bitset<8>( msg.c_str()[ i ]).to_string<char, string::traits_type, string::allocator_type>();
SonSenpai 0:6b5926b50a71 18 }
SonSenpai 4:d773812f9f7b 19 message = bitset<640>( temp );
SonSenpai 0:6b5926b50a71 20 char msg_c[ msg.length() ];
SonSenpai 0:6b5926b50a71 21 strcpy( msg_c, msg.c_str() );
SonSenpai 0:6b5926b50a71 22 unsigned short crc_t = CRC16::calculateCRC16( msg_c, msg.length() );
SonSenpai 0:6b5926b50a71 23 crc16 = crc_t;
SonSenpai 0:6b5926b50a71 24 }
SonSenpai 0:6b5926b50a71 25
SonSenpai 0:6b5926b50a71 26 bitset<696>* trame::getBitset()
SonSenpai 0:6b5926b50a71 27 {
SonSenpai 0:6b5926b50a71 28 bitFrame = new bitset<696>;
SonSenpai 0:6b5926b50a71 29 for( int i = 0; i < 8; i++ )
SonSenpai 0:6b5926b50a71 30 {
SonSenpai 4:d773812f9f7b 31 (*bitFrame)[i] = preambule[7-i];
SonSenpai 0:6b5926b50a71 32 }
SonSenpai 0:6b5926b50a71 33
SonSenpai 0:6b5926b50a71 34 for( int i = 0; i < 8; i++ )
SonSenpai 0:6b5926b50a71 35 {
SonSenpai 4:d773812f9f7b 36 (*bitFrame)[i+8] = start[7-i];
SonSenpai 0:6b5926b50a71 37 }
SonSenpai 0:6b5926b50a71 38
SonSenpai 0:6b5926b50a71 39 for( int i = 0; i < 8; i++ )
SonSenpai 0:6b5926b50a71 40 {
SonSenpai 4:d773812f9f7b 41 (*bitFrame)[i+16] = type_flags[7-i];
SonSenpai 0:6b5926b50a71 42 }
SonSenpai 0:6b5926b50a71 43
SonSenpai 0:6b5926b50a71 44 for( int i = 0; i < 8; i++ )
SonSenpai 0:6b5926b50a71 45 {
SonSenpai 4:d773812f9f7b 46 (*bitFrame)[i+24] = message_length[7-i];
SonSenpai 0:6b5926b50a71 47 }
SonSenpai 0:6b5926b50a71 48
SonSenpai 0:6b5926b50a71 49 for( int i = 0; i < dataLength; i++ )
SonSenpai 0:6b5926b50a71 50 {
SonSenpai 4:d773812f9f7b 51 (*bitFrame)[i+32] = message[dataLength-1-i];
SonSenpai 0:6b5926b50a71 52 }
SonSenpai 0:6b5926b50a71 53
SonSenpai 0:6b5926b50a71 54 for( int i = 0; i < 16; i++ )
SonSenpai 0:6b5926b50a71 55 {
SonSenpai 4:d773812f9f7b 56 (*bitFrame)[i+32+dataLength] = crc16[15-i];
SonSenpai 0:6b5926b50a71 57 }
SonSenpai 0:6b5926b50a71 58
SonSenpai 0:6b5926b50a71 59 for( int i = 0; i < 8; i++ )
SonSenpai 0:6b5926b50a71 60 {
SonSenpai 4:d773812f9f7b 61 (*bitFrame)[i+48+dataLength] = end[7-i];
SonSenpai 0:6b5926b50a71 62 }
SonSenpai 0:6b5926b50a71 63
SonSenpai 0:6b5926b50a71 64 for( int i = i+56+dataLength; i < 696; i++)
SonSenpai 0:6b5926b50a71 65 {
SonSenpai 4:d773812f9f7b 66 (*bitFrame)[i] = 0;
SonSenpai 4:d773812f9f7b 67 }
SonSenpai 4:d773812f9f7b 68 for(int i = 0; i<length; i++)
SonSenpai 4:d773812f9f7b 69 {
SonSenpai 4:d773812f9f7b 70 std::printf("%d", (*bitFrame)[i] & 0x1);
SonSenpai 0:6b5926b50a71 71 }
SonSenpai 0:6b5926b50a71 72 return bitFrame;
SonSenpai 0:6b5926b50a71 73 }