Changes done in ECG and BT

Dependencies:   SDFileSystem ds3231 eeprom_Nikita mbed testUniGraphic_150217

Fork of merged_code2_20sept_2017_4th_oct_2017 by nikita teggi

Committer:
nikitateggi
Date:
Tue Sep 12 04:16:41 2017 +0000
Revision:
44:05dbea558c9a
Parent:
36:00d96aa14658
Child:
45:067673dae242
ack timeout

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nikitateggi 22:ffa88619551d 1
nikitateggi 19:1650bbc923cc 2 #include "mbed.h"
nikitateggi 19:1650bbc923cc 3 #include "sdcard.h"
nikitateggi 19:1650bbc923cc 4 #include "struct.h"
nikitateggi 44:05dbea558c9a 5 #include "eeprom_pgm.h"
nikitateggi 44:05dbea558c9a 6 #include "main.h"
nikitateggi 44:05dbea558c9a 7
nikitateggi 22:ffa88619551d 8 #define ACK 0x00 /// changed //16/06 #define all the values removing structure
nikitateggi 44:05dbea558c9a 9 #define START_OF_FILE 0x01
nikitateggi 44:05dbea558c9a 10 #define END_OF_FILE 0x02
nikitateggi 44:05dbea558c9a 11 #define DATA_TRFR 0x03
nikitateggi 22:ffa88619551d 12 #define NACK 0xFF
nikitateggi 44:05dbea558c9a 13 #define SOS 0xc0
nikitateggi 44:05dbea558c9a 14 #define EOS 0xc0
nikitateggi 44:05dbea558c9a 15 #define NO_OF_SAMPLES 600 //changed the buffer size from 150- 22/7/17- suhasini
nikitateggi 44:05dbea558c9a 16
nikitateggi 19:1650bbc923cc 17
nikitateggi 22:ffa88619551d 18 BLEMsg_info *bt_file;
nikitateggi 22:ffa88619551d 19 Point *myBleMsg;
nikitateggi 27:907f8ce0025e 20
nikitateggi 27:907f8ce0025e 21 Serial mc(USBTX,USBRX); // serial terminal
nikitateggi 27:907f8ce0025e 22 Serial blue(PTC4,PTC3); // communicating bluetooth through serial
nikitateggi 27:907f8ce0025e 23
nikitateggi 28:65f2d80b7eb7 24 static uint32_t total_samples=0; // variable to hold total number of samples
nikitateggi 19:1650bbc923cc 25 Point b; // structure copy
nikitateggi 19:1650bbc923cc 26 BLEMsg_info bt_file1; // structure copy
nikitateggi 28:65f2d80b7eb7 27 static uint32_t total_file_size=0; // to determine the size of the file
nikitateggi 44:05dbea558c9a 28 static uint32_t total_file_size_sent=0;
nikitateggi 28:65f2d80b7eb7 29 static uint32_t file_start=0; // variable for 'for loop'
nikitateggi 44:05dbea558c9a 30 //static uint32_t j=0;
nikitateggi 27:907f8ce0025e 31 uint8_t count_send=0;
nikitateggi 28:65f2d80b7eb7 32 static uint32_t file_pointer_position=0;
nikitateggi 28:65f2d80b7eb7 33 static uint32_t counter=0;
nikitateggi 44:05dbea558c9a 34 static uint32_t v1[NO_OF_SAMPLES];
nikitateggi 27:907f8ce0025e 35 uint8_t file=0;
nikitateggi 44:05dbea558c9a 36
nikitateggi 19:1650bbc923cc 37
nikitateggi 19:1650bbc923cc 38 uint8_t bt_send(uint8_t state_tx)
nikitateggi 19:1650bbc923cc 39 {
nikitateggi 32:76892fdf5e4c 40
nikitateggi 44:05dbea558c9a 41 blue.baud(115200); // baud rate of bluetooth
nikitateggi 44:05dbea558c9a 42 bt_file=&bt_file1;
nikitateggi 44:05dbea558c9a 43 myBleMsg=&b;
nikitateggi 44:05dbea558c9a 44 int8_t check_sum=0;
nikitateggi 44:05dbea558c9a 45 uint8_t state_rx =0;
nikitateggi 27:907f8ce0025e 46
nikitateggi 27:907f8ce0025e 47
nikitateggi 27:907f8ce0025e 48
nikitateggi 19:1650bbc923cc 49
nikitateggi 19:1650bbc923cc 50
nikitateggi 19:1650bbc923cc 51 switch(state_tx)
nikitateggi 19:1650bbc923cc 52 {
nikitateggi 19:1650bbc923cc 53
nikitateggi 27:907f8ce0025e 54 case 1:
nikitateggi 44:05dbea558c9a 55 state_tx =0;
nikitateggi 27:907f8ce0025e 56 counter=0;
nikitateggi 44:05dbea558c9a 57 total_file_size_sent=0;
nikitateggi 27:907f8ce0025e 58 file_start=0;
nikitateggi 44:05dbea558c9a 59 // j=0;
nikitateggi 44:05dbea558c9a 60 count_send=0; total_samples=0;
nikitateggi 27:907f8ce0025e 61 file_pointer_position=0;
nikitateggi 44:05dbea558c9a 62 // mc.printf("%d %d\n",current_file, bt_file_tosend);
nikitateggi 44:05dbea558c9a 63 if(get_filepid()>get_btpid())
nikitateggi 44:05dbea558c9a 64 {
nikitateggi 44:05dbea558c9a 65 send_initial_string();
nikitateggi 44:05dbea558c9a 66 state_rx = 1;
nikitateggi 44:05dbea558c9a 67 blue.printf("\n");
nikitateggi 44:05dbea558c9a 68 }
nikitateggi 44:05dbea558c9a 69
nikitateggi 44:05dbea558c9a 70 else
nikitateggi 44:05dbea558c9a 71 {
nikitateggi 44:05dbea558c9a 72 state_rx =0;
nikitateggi 44:05dbea558c9a 73 mc.printf("no file to send\n");
nikitateggi 44:05dbea558c9a 74 }
nikitateggi 44:05dbea558c9a 75 break;
nikitateggi 44:05dbea558c9a 76
nikitateggi 19:1650bbc923cc 77
nikitateggi 44:05dbea558c9a 78 case 2: total_samples=0;
nikitateggi 44:05dbea558c9a 79 file=sd_open_read(get_btpid());
nikitateggi 44:05dbea558c9a 80 total_file_size=file_size() ; // determined the file size
nikitateggi 19:1650bbc923cc 81 sd_read1(bt_file1); // read the sd card file
avp2417 36:00d96aa14658 82 mc.printf("sd file opened to read data in it\n");
nikitateggi 19:1650bbc923cc 83 myBleMsg->bt_msg=bt_file1; //copy the contents to the structure
nikitateggi 44:05dbea558c9a 84 send_structure(); // send the initial string
avp2417 36:00d96aa14658 85 blue.printf("\n");
avp2417 36:00d96aa14658 86 mc.printf("sent initial string\n");
nikitateggi 27:907f8ce0025e 87 total_samples= myBleMsg->bt_msg.num_samples.num_sample_ppg_dummy+myBleMsg->bt_msg.num_samples.num_sample_ecg_OTtyp;
nikitateggi 19:1650bbc923cc 88 state_tx =0;
nikitateggi 19:1650bbc923cc 89 state_rx =2;
nikitateggi 27:907f8ce0025e 90 count_send=0;
nikitateggi 44:05dbea558c9a 91 total_file_size_sent=file_size1();
nikitateggi 19:1650bbc923cc 92 break;
nikitateggi 19:1650bbc923cc 93
nikitateggi 19:1650bbc923cc 94
nikitateggi 44:05dbea558c9a 95 case 3:
nikitateggi 44:05dbea558c9a 96 counter=0;
nikitateggi 44:05dbea558c9a 97 if(count_send<(total_samples/NO_OF_SAMPLES))
nikitateggi 44:05dbea558c9a 98 {
nikitateggi 44:05dbea558c9a 99 sd_read(v1,NO_OF_SAMPLES);
nikitateggi 44:05dbea558c9a 100 counter=NO_OF_SAMPLES; //read 1500 samples
nikitateggi 44:05dbea558c9a 101 send_data_str1();
nikitateggi 44:05dbea558c9a 102 for(file_start=0;file_start<(NO_OF_SAMPLES);file_start++)
nikitateggi 44:05dbea558c9a 103 {
nikitateggi 19:1650bbc923cc 104
nikitateggi 44:05dbea558c9a 105 blue.printf("%08x", v1[file_start]);
nikitateggi 27:907f8ce0025e 106
nikitateggi 44:05dbea558c9a 107 }
avp2417 36:00d96aa14658 108
nikitateggi 44:05dbea558c9a 109 check_sum=checksum_rawdata((uint8_t *)v1,counter); // calculating checksum // calculating checksum
nikitateggi 44:05dbea558c9a 110 state_tx =0;
nikitateggi 44:05dbea558c9a 111 state_rx =3;
nikitateggi 44:05dbea558c9a 112 send_data_str2(check_sum); // send the remaining part of the string
nikitateggi 19:1650bbc923cc 113
nikitateggi 44:05dbea558c9a 114 }
nikitateggi 19:1650bbc923cc 115
nikitateggi 44:05dbea558c9a 116 else
nikitateggi 44:05dbea558c9a 117 {
nikitateggi 44:05dbea558c9a 118 for(uint16_t l=0;l<NO_OF_SAMPLES;l++)
nikitateggi 44:05dbea558c9a 119 {
nikitateggi 44:05dbea558c9a 120 v1[l]=NULL;
nikitateggi 44:05dbea558c9a 121 }
nikitateggi 44:05dbea558c9a 122 counter=(total_samples-( NO_OF_SAMPLES*count_send));
nikitateggi 27:907f8ce0025e 123 send_data_str1();
nikitateggi 44:05dbea558c9a 124 sd_read(v1,(total_samples-( NO_OF_SAMPLES*count_send)));
nikitateggi 44:05dbea558c9a 125
nikitateggi 44:05dbea558c9a 126 for(file_start=0;file_start<(total_samples-( NO_OF_SAMPLES*count_send));file_start++)
nikitateggi 19:1650bbc923cc 127 {
nikitateggi 24:d992ee8369f4 128 blue.printf("%08x", v1[file_start]);
nikitateggi 27:907f8ce0025e 129
nikitateggi 19:1650bbc923cc 130 }
nikitateggi 27:907f8ce0025e 131
nikitateggi 19:1650bbc923cc 132 state_tx=0;
nikitateggi 19:1650bbc923cc 133 state_rx=4;
nikitateggi 44:05dbea558c9a 134 check_sum=checksum_rawdata((uint8_t *)v1,counter); // calculating checksum
nikitateggi 22:ffa88619551d 135 send_data_str2(check_sum);
nikitateggi 19:1650bbc923cc 136 }
nikitateggi 19:1650bbc923cc 137
nikitateggi 44:05dbea558c9a 138 total_file_size_sent=file_size1();
nikitateggi 27:907f8ce0025e 139 blue.printf("\n");
nikitateggi 27:907f8ce0025e 140 break;
nikitateggi 19:1650bbc923cc 141
nikitateggi 19:1650bbc923cc 142
nikitateggi 44:05dbea558c9a 143 case 4: total_file_size_sent=file_size1();
nikitateggi 44:05dbea558c9a 144 if(total_file_size_sent==total_file_size) // if the total file size is same as total file size
nikitateggi 27:907f8ce0025e 145 { // then there is no more data to send in that particular file
nikitateggi 19:1650bbc923cc 146
nikitateggi 44:05dbea558c9a 147 state_rx=5;
nikitateggi 44:05dbea558c9a 148 send_last_string();
nikitateggi 24:d992ee8369f4 149 blue.printf("\n");
nikitateggi 44:05dbea558c9a 150
nikitateggi 19:1650bbc923cc 151 }
nikitateggi 19:1650bbc923cc 152 else
nikitateggi 19:1650bbc923cc 153 {
nikitateggi 44:05dbea558c9a 154
nikitateggi 44:05dbea558c9a 155 total_samples=0;
nikitateggi 44:05dbea558c9a 156 sd_read1(bt_file1); // read the sd card file
nikitateggi 44:05dbea558c9a 157 mc.printf("sd file opened to read data in it\n");
nikitateggi 44:05dbea558c9a 158 myBleMsg->bt_msg=bt_file1; //copy the contents to the structure
nikitateggi 44:05dbea558c9a 159 send_structure(); // send the initial string
nikitateggi 44:05dbea558c9a 160 blue.printf("\n");
nikitateggi 44:05dbea558c9a 161 mc.printf("sent initial string\n");
nikitateggi 44:05dbea558c9a 162 total_samples= myBleMsg->bt_msg.num_samples.num_sample_ppg_dummy+myBleMsg->bt_msg.num_samples.num_sample_ecg_OTtyp;
nikitateggi 44:05dbea558c9a 163 state_tx =0;
nikitateggi 44:05dbea558c9a 164 state_rx =2;
nikitateggi 44:05dbea558c9a 165 count_send=0;
nikitateggi 44:05dbea558c9a 166 total_file_size_sent=file_size1();
nikitateggi 44:05dbea558c9a 167
nikitateggi 19:1650bbc923cc 168 }
nikitateggi 19:1650bbc923cc 169
nikitateggi 19:1650bbc923cc 170
nikitateggi 27:907f8ce0025e 171
nikitateggi 19:1650bbc923cc 172
nikitateggi 19:1650bbc923cc 173 }
nikitateggi 27:907f8ce0025e 174
nikitateggi 19:1650bbc923cc 175 return state_rx;
nikitateggi 19:1650bbc923cc 176
nikitateggi 19:1650bbc923cc 177 }
nikitateggi 19:1650bbc923cc 178
nikitateggi 19:1650bbc923cc 179
nikitateggi 19:1650bbc923cc 180
nikitateggi 19:1650bbc923cc 181
nikitateggi 19:1650bbc923cc 182 uint8_t bt_receive (uint8_t state_rx)
nikitateggi 19:1650bbc923cc 183 {
nikitateggi 19:1650bbc923cc 184
nikitateggi 27:907f8ce0025e 185 unsigned char state_tx =1; //state for transmitting
nikitateggi 44:05dbea558c9a 186 uint8_t ack_rx=0; // varibale to receive ack from the bluetooth
nikitateggi 27:907f8ce0025e 187 uint8_t sos_rx=0; // sos received from app
nikitateggi 27:907f8ce0025e 188 uint8_t eos_rx=0; // eos received from app
nikitateggi 44:05dbea558c9a 189 uint32_t length_rx=0;
nikitateggi 44:05dbea558c9a 190 uint8_t chksum_rx=0;
nikitateggi 44:05dbea558c9a 191
nikitateggi 44:05dbea558c9a 192 while (blue.readable())
nikitateggi 44:05dbea558c9a 193 {
nikitateggi 44:05dbea558c9a 194 blue.scanf("%02x", &sos_rx);
nikitateggi 44:05dbea558c9a 195 blue.scanf("%02x", &ack_rx);
nikitateggi 44:05dbea558c9a 196 blue.scanf("%08x", &length_rx);
nikitateggi 44:05dbea558c9a 197 blue.scanf("%02x", &eos_rx);
nikitateggi 44:05dbea558c9a 198 blue.scanf("%02x", &chksum_rx);
nikitateggi 44:05dbea558c9a 199 break;
nikitateggi 44:05dbea558c9a 200 }
nikitateggi 44:05dbea558c9a 201 mc.printf("%02x%02x%08x%02x%02x", sos_rx,ack_rx,length_rx,eos_rx,chksum_rx);
nikitateggi 44:05dbea558c9a 202
nikitateggi 19:1650bbc923cc 203 switch(state_rx)
nikitateggi 19:1650bbc923cc 204 {
nikitateggi 19:1650bbc923cc 205
nikitateggi 19:1650bbc923cc 206 case 1: // wait for the ack
nikitateggi 22:ffa88619551d 207 state_rx=0;
nikitateggi 19:1650bbc923cc 208 myBleMsg->proto=ACK;
nikitateggi 44:05dbea558c9a 209 if (ack_rx == ACK)
nikitateggi 44:05dbea558c9a 210
nikitateggi 19:1650bbc923cc 211 {
nikitateggi 19:1650bbc923cc 212
nikitateggi 19:1650bbc923cc 213 state_tx=2;
nikitateggi 19:1650bbc923cc 214 }
nikitateggi 19:1650bbc923cc 215
nikitateggi 22:ffa88619551d 216 else
nikitateggi 19:1650bbc923cc 217
nikitateggi 19:1650bbc923cc 218 {
nikitateggi 19:1650bbc923cc 219
nikitateggi 19:1650bbc923cc 220 state_tx=1;
nikitateggi 44:05dbea558c9a 221 // sd_close();
nikitateggi 19:1650bbc923cc 222 }
nikitateggi 19:1650bbc923cc 223 break;
nikitateggi 19:1650bbc923cc 224
nikitateggi 19:1650bbc923cc 225 case 2: state_rx =0; //wait for the ack
nikitateggi 44:05dbea558c9a 226
nikitateggi 44:05dbea558c9a 227 if (ack_rx == ACK)
nikitateggi 19:1650bbc923cc 228 {
nikitateggi 19:1650bbc923cc 229
nikitateggi 19:1650bbc923cc 230 state_tx=3;
nikitateggi 44:05dbea558c9a 231 file_pointer_position=total_file_size_sent;
nikitateggi 19:1650bbc923cc 232 }
nikitateggi 19:1650bbc923cc 233
nikitateggi 19:1650bbc923cc 234 else
nikitateggi 19:1650bbc923cc 235
nikitateggi 19:1650bbc923cc 236 {
nikitateggi 19:1650bbc923cc 237
nikitateggi 19:1650bbc923cc 238 state_tx=2;
nikitateggi 22:ffa88619551d 239 setpos1(file_pointer_position);
nikitateggi 27:907f8ce0025e 240
nikitateggi 19:1650bbc923cc 241 }
nikitateggi 27:907f8ce0025e 242 //blue.scanf("%02x%02x%08x%02x",&sos_rx,&ack_rx,&eos_rx,&chksum_rx);
nikitateggi 19:1650bbc923cc 243 break;
nikitateggi 19:1650bbc923cc 244
nikitateggi 19:1650bbc923cc 245
nikitateggi 19:1650bbc923cc 246 case 3:
nikitateggi 19:1650bbc923cc 247 state_rx =0;
nikitateggi 44:05dbea558c9a 248 if (ack_rx == ACK)
nikitateggi 19:1650bbc923cc 249 {
nikitateggi 19:1650bbc923cc 250
nikitateggi 19:1650bbc923cc 251 state_tx=3;
nikitateggi 27:907f8ce0025e 252 count_send=count_send+1;
nikitateggi 44:05dbea558c9a 253 file_pointer_position=total_file_size_sent;
nikitateggi 19:1650bbc923cc 254 }
nikitateggi 19:1650bbc923cc 255
nikitateggi 19:1650bbc923cc 256 else
nikitateggi 19:1650bbc923cc 257
nikitateggi 19:1650bbc923cc 258 {
nikitateggi 27:907f8ce0025e 259
nikitateggi 19:1650bbc923cc 260 state_tx=3;
nikitateggi 44:05dbea558c9a 261 file_start=file_start- NO_OF_SAMPLES;
nikitateggi 44:05dbea558c9a 262 setpos1(file_pointer_position);
nikitateggi 44:05dbea558c9a 263 }
nikitateggi 44:05dbea558c9a 264
nikitateggi 44:05dbea558c9a 265 break;
nikitateggi 44:05dbea558c9a 266
nikitateggi 44:05dbea558c9a 267 case 4:
nikitateggi 44:05dbea558c9a 268 state_rx =0;
nikitateggi 44:05dbea558c9a 269 if (ack_rx == ACK)
nikitateggi 44:05dbea558c9a 270 {
nikitateggi 44:05dbea558c9a 271 state_tx=4;
nikitateggi 44:05dbea558c9a 272 count_send=count_send+1;
nikitateggi 44:05dbea558c9a 273 file_pointer_position=total_file_size_sent;
nikitateggi 44:05dbea558c9a 274 }
nikitateggi 44:05dbea558c9a 275
nikitateggi 44:05dbea558c9a 276 else
nikitateggi 44:05dbea558c9a 277
nikitateggi 44:05dbea558c9a 278 {
nikitateggi 44:05dbea558c9a 279
nikitateggi 44:05dbea558c9a 280 state_tx=3;
nikitateggi 44:05dbea558c9a 281 file_start=file_start- NO_OF_SAMPLES;
nikitateggi 19:1650bbc923cc 282 setpos1(file_pointer_position);
nikitateggi 19:1650bbc923cc 283 }
nikitateggi 19:1650bbc923cc 284 break;
nikitateggi 19:1650bbc923cc 285
nikitateggi 44:05dbea558c9a 286
nikitateggi 44:05dbea558c9a 287 case 5: state_rx = 0;
nikitateggi 44:05dbea558c9a 288 if (ack_rx == ACK)
nikitateggi 44:05dbea558c9a 289 {
nikitateggi 44:05dbea558c9a 290 sd_close();
nikitateggi 44:05dbea558c9a 291 increment_btpid();
nikitateggi 44:05dbea558c9a 292 mc.printf("next file");
nikitateggi 44:05dbea558c9a 293 state_tx=1;
nikitateggi 44:05dbea558c9a 294
nikitateggi 44:05dbea558c9a 295 }
nikitateggi 27:907f8ce0025e 296
nikitateggi 44:05dbea558c9a 297 else
nikitateggi 44:05dbea558c9a 298 {
nikitateggi 44:05dbea558c9a 299 state_tx = 4;
nikitateggi 27:907f8ce0025e 300
nikitateggi 44:05dbea558c9a 301 }
nikitateggi 44:05dbea558c9a 302 break;
nikitateggi 19:1650bbc923cc 303
nikitateggi 19:1650bbc923cc 304 }
nikitateggi 27:907f8ce0025e 305
nikitateggi 19:1650bbc923cc 306 return state_tx;
nikitateggi 19:1650bbc923cc 307 }
nikitateggi 19:1650bbc923cc 308
nikitateggi 19:1650bbc923cc 309
nikitateggi 19:1650bbc923cc 310
nikitateggi 19:1650bbc923cc 311
nikitateggi 19:1650bbc923cc 312
nikitateggi 19:1650bbc923cc 313
nikitateggi 19:1650bbc923cc 314
nikitateggi 44:05dbea558c9a 315 void send_structure() // function to send the structure to bluetooth
nikitateggi 19:1650bbc923cc 316 {
nikitateggi 44:05dbea558c9a 317 myBleMsg->start_of_string=SOS;
nikitateggi 22:ffa88619551d 318 myBleMsg->length_file=26;
nikitateggi 44:05dbea558c9a 319 myBleMsg->proto=DATA_TRFR; // data transfer mode
nikitateggi 24:d992ee8369f4 320 blue.printf("%02x",myBleMsg->start_of_string);
nikitateggi 24:d992ee8369f4 321 blue.printf("%02x",myBleMsg->proto);
nikitateggi 24:d992ee8369f4 322 blue.printf("%08x",myBleMsg->length_file); //changed the sequence
nikitateggi 24:d992ee8369f4 323 blue.printf("%08x",myBleMsg->bt_msg.length);
nikitateggi 24:d992ee8369f4 324 blue.printf("%02x",myBleMsg->bt_msg.device_id);
nikitateggi 24:d992ee8369f4 325 blue.printf("%08x",myBleMsg->bt_msg.patient_id);
nikitateggi 24:d992ee8369f4 326 blue.printf("%02x",myBleMsg->bt_msg.date_time.date);
nikitateggi 24:d992ee8369f4 327 blue.printf("%02x",myBleMsg->bt_msg.date_time.month);
nikitateggi 24:d992ee8369f4 328 blue.printf("%02x",myBleMsg->bt_msg.date_time.year);
nikitateggi 24:d992ee8369f4 329 blue.printf("%02x",myBleMsg->bt_msg.date_time.hour);
nikitateggi 24:d992ee8369f4 330 blue.printf("%02x",myBleMsg->bt_msg.date_time.mins);
nikitateggi 24:d992ee8369f4 331 blue.printf("%02x",myBleMsg->bt_msg.date_time.sec);
nikitateggi 24:d992ee8369f4 332 blue.printf("%02x",myBleMsg->bt_msg.test_type);
nikitateggi 24:d992ee8369f4 333 blue.printf("%04x",myBleMsg->bt_msg.sampling_freq);
nikitateggi 24:d992ee8369f4 334 blue.printf("%04x",myBleMsg->bt_msg.num_samples. num_sample_ppg_dummy);
nikitateggi 24:d992ee8369f4 335 blue.printf("%04x",myBleMsg->bt_msg.num_samples.num_sample_ecg_OTtyp);
nikitateggi 24:d992ee8369f4 336 blue.printf("%04x",myBleMsg->bt_msg.cal_data.cal_sbp_dummy);
nikitateggi 44:05dbea558c9a 337 blue.printf("%04x",myBleMsg->bt_msg.cal_data.cal_dbp_OTtyp); \
nikitateggi 44:05dbea558c9a 338 myBleMsg->end_of_string=EOS;
nikitateggi 31:0f67acfc6236 339 myBleMsg->chk_sum = checksum_struct((uint8_t *)myBleMsg, sizeof(Point));
nikitateggi 24:d992ee8369f4 340 blue.printf("%02x",myBleMsg->end_of_string);
nikitateggi 24:d992ee8369f4 341 blue.printf("%02x",myBleMsg->chk_sum);
nikitateggi 44:05dbea558c9a 342
nikitateggi 19:1650bbc923cc 343
nikitateggi 19:1650bbc923cc 344 }
nikitateggi 19:1650bbc923cc 345
nikitateggi 44:05dbea558c9a 346 void send_initial_string() // function to send the initial string at the start f communication to bluetooth
nikitateggi 22:ffa88619551d 347 {
nikitateggi 22:ffa88619551d 348
nikitateggi 22:ffa88619551d 349 uint8_t sum_init=0 ;
nikitateggi 44:05dbea558c9a 350 myBleMsg->start_of_string=SOS;
nikitateggi 22:ffa88619551d 351 myBleMsg->length_file=0;
nikitateggi 44:05dbea558c9a 352 myBleMsg->proto=START_OF_FILE;
nikitateggi 19:1650bbc923cc 353 // myBleMsg->bt_msg=NULL;
nikitateggi 22:ffa88619551d 354 sum_init=checksum_init();
nikitateggi 22:ffa88619551d 355 myBleMsg->chk_sum=sum_init;
nikitateggi 24:d992ee8369f4 356 blue.printf("%02x",myBleMsg->start_of_string);
nikitateggi 24:d992ee8369f4 357 blue.printf("%02x",myBleMsg->proto);
nikitateggi 24:d992ee8369f4 358 blue.printf("%08x",myBleMsg->length_file); // chnged
nikitateggi 44:05dbea558c9a 359 myBleMsg->end_of_string=EOS;
nikitateggi 24:d992ee8369f4 360 blue.printf("%02x",myBleMsg->end_of_string);
nikitateggi 24:d992ee8369f4 361 blue.printf("%02x",myBleMsg->chk_sum);
nikitateggi 19:1650bbc923cc 362
nikitateggi 19:1650bbc923cc 363 }
nikitateggi 22:ffa88619551d 364
nikitateggi 22:ffa88619551d 365
nikitateggi 27:907f8ce0025e 366 uint8_t checksum_init() // function to calculate the checksum for the initial string
nikitateggi 22:ffa88619551d 367 {
nikitateggi 22:ffa88619551d 368
nikitateggi 22:ffa88619551d 369 uint32_t sum=0;
nikitateggi 22:ffa88619551d 370 uint8_t chksum_init=0;
nikitateggi 44:05dbea558c9a 371 sum=SOS+EOS+START_OF_FILE;
nikitateggi 22:ffa88619551d 372 chksum_init=sum & 0x000000FF;
nikitateggi 22:ffa88619551d 373 return chksum_init;
nikitateggi 22:ffa88619551d 374 }
nikitateggi 22:ffa88619551d 375
nikitateggi 27:907f8ce0025e 376 uint8_t checksum_last() // function to calculate the checksum for the last string
nikitateggi 22:ffa88619551d 377 {
nikitateggi 22:ffa88619551d 378
nikitateggi 22:ffa88619551d 379 uint32_t sum=0;
nikitateggi 22:ffa88619551d 380 uint8_t chksum_last=0;
nikitateggi 44:05dbea558c9a 381 sum=SOS+EOS+END_OF_FILE; // changed //16/06 #define all the values removing structure
nikitateggi 22:ffa88619551d 382 chksum_last=sum & 0x000000FF;
nikitateggi 22:ffa88619551d 383 return chksum_last;
nikitateggi 22:ffa88619551d 384 }
nikitateggi 22:ffa88619551d 385
nikitateggi 44:05dbea558c9a 386 void send_last_string() // function to send the last string to the bluetooth // which determines the end of file
nikitateggi 22:ffa88619551d 387 {
nikitateggi 22:ffa88619551d 388 uint8_t sum_last=0;
nikitateggi 44:05dbea558c9a 389 myBleMsg->start_of_string=SOS;
nikitateggi 22:ffa88619551d 390 myBleMsg->length_file=0;
nikitateggi 44:05dbea558c9a 391 myBleMsg->proto=END_OF_FILE;
nikitateggi 22:ffa88619551d 392 // myBleMsg->bt_msg=NULL;
nikitateggi 22:ffa88619551d 393 sum_last=checksum_last();
nikitateggi 22:ffa88619551d 394 myBleMsg->chk_sum=sum_last;
nikitateggi 24:d992ee8369f4 395 blue.printf("%02x",myBleMsg->start_of_string);
nikitateggi 24:d992ee8369f4 396 blue.printf("%02x",myBleMsg->proto);
nikitateggi 24:d992ee8369f4 397 blue.printf("%08x",myBleMsg->length_file); // chnged
nikitateggi 44:05dbea558c9a 398 mc.printf("%02x",myBleMsg->start_of_string);
nikitateggi 44:05dbea558c9a 399 mc.printf("%02x",myBleMsg->proto);
nikitateggi 44:05dbea558c9a 400 mc.printf("%08x",myBleMsg->length_file);
nikitateggi 44:05dbea558c9a 401 myBleMsg->end_of_string=EOS;
nikitateggi 24:d992ee8369f4 402 blue.printf("%02x",myBleMsg->end_of_string);
nikitateggi 24:d992ee8369f4 403 blue.printf("%02x",myBleMsg->chk_sum);
nikitateggi 44:05dbea558c9a 404 mc.printf("%02x",myBleMsg->end_of_string);
nikitateggi 44:05dbea558c9a 405 mc.printf("%02x",myBleMsg->chk_sum);
nikitateggi 22:ffa88619551d 406
nikitateggi 22:ffa88619551d 407 }
nikitateggi 22:ffa88619551d 408
nikitateggi 27:907f8ce0025e 409 void send_data_str1() // function to send a part of the structure // after this raw data is sent//
nikitateggi 22:ffa88619551d 410 {
nikitateggi 44:05dbea558c9a 411 myBleMsg->start_of_string=SOS;
nikitateggi 22:ffa88619551d 412 myBleMsg->length_file=(counter*4);
nikitateggi 44:05dbea558c9a 413 myBleMsg->proto=DATA_TRFR;
nikitateggi 24:d992ee8369f4 414 blue.printf("%02x",myBleMsg->start_of_string);
nikitateggi 24:d992ee8369f4 415 blue.printf("%02x",myBleMsg->proto); // chnaged
nikitateggi 24:d992ee8369f4 416 blue.printf("%08x",myBleMsg->length_file);
nikitateggi 44:05dbea558c9a 417 mc.printf("%02x",myBleMsg->start_of_string);
nikitateggi 44:05dbea558c9a 418 mc.printf("%02x",myBleMsg->proto); // chnaged
nikitateggi 44:05dbea558c9a 419 mc.printf("%08x",myBleMsg->length_file);
nikitateggi 22:ffa88619551d 420 }
nikitateggi 19:1650bbc923cc 421
nikitateggi 19:1650bbc923cc 422
nikitateggi 19:1650bbc923cc 423
nikitateggi 27:907f8ce0025e 424 void send_data_str2(uint8_t check_sum) // after raw data// this last part of structure is sent
nikitateggi 19:1650bbc923cc 425 {
nikitateggi 22:ffa88619551d 426 myBleMsg->chk_sum=check_sum;
nikitateggi 44:05dbea558c9a 427 myBleMsg->end_of_string=EOS;
nikitateggi 24:d992ee8369f4 428 blue.printf("%02x",myBleMsg->end_of_string);
nikitateggi 24:d992ee8369f4 429 blue.printf("%02x",myBleMsg->chk_sum);
nikitateggi 44:05dbea558c9a 430 mc.printf("%02x",myBleMsg->end_of_string);
nikitateggi 44:05dbea558c9a 431 mc.printf("%02x",myBleMsg->chk_sum);
nikitateggi 19:1650bbc923cc 432 }
nikitateggi 19:1650bbc923cc 433
nikitateggi 31:0f67acfc6236 434
nikitateggi 31:0f67acfc6236 435 uint8_t checksum_struct(const uint8_t data[], uint16_t numBytes) // calculating checksum for
nikitateggi 31:0f67acfc6236 436 {
nikitateggi 31:0f67acfc6236 437 uint32_t chksum_struct = 0;
nikitateggi 31:0f67acfc6236 438 uint16_t index = 0;
nikitateggi 31:0f67acfc6236 439
nikitateggi 31:0f67acfc6236 440 for (index=0U; index < (numBytes-1); index++)
nikitateggi 31:0f67acfc6236 441 {
nikitateggi 31:0f67acfc6236 442 chksum_struct += data[index];
nikitateggi 31:0f67acfc6236 443 //blue.printf("data=%02x\n",data[index]);
nikitateggi 31:0f67acfc6236 444
nikitateggi 31:0f67acfc6236 445 }
nikitateggi 31:0f67acfc6236 446 // blue.printf("%08x\n",chksum_struct);
nikitateggi 31:0f67acfc6236 447 return chksum_struct;
nikitateggi 22:ffa88619551d 448 }
nikitateggi 31:0f67acfc6236 449
nikitateggi 31:0f67acfc6236 450
nikitateggi 44:05dbea558c9a 451 uint8_t checksum_rawdata(const uint8_t data[], uint32_t numBytes) // this function to calculate the checksum for the raw data
nikitateggi 31:0f67acfc6236 452 {
nikitateggi 31:0f67acfc6236 453
nikitateggi 31:0f67acfc6236 454 uint32_t sum=0;
nikitateggi 31:0f67acfc6236 455 uint8_t chksum_datatrfr=0;
nikitateggi 31:0f67acfc6236 456 uint32_t index = 0;
nikitateggi 31:0f67acfc6236 457 uint32_t index1 = 0;
nikitateggi 44:05dbea558c9a 458 sum += SOS;
nikitateggi 44:05dbea558c9a 459 sum += DATA_TRFR;
nikitateggi 31:0f67acfc6236 460 index1=(numBytes*4);
nikitateggi 31:0f67acfc6236 461 sum +=(index1>>(8*0))&0xFF;
nikitateggi 31:0f67acfc6236 462 sum +=(index1>>(8*1))&0xFF;
nikitateggi 31:0f67acfc6236 463
nikitateggi 31:0f67acfc6236 464 for (index=0U; index<(numBytes*4); index++)
nikitateggi 31:0f67acfc6236 465 {
nikitateggi 31:0f67acfc6236 466 sum += data[index];
nikitateggi 31:0f67acfc6236 467
nikitateggi 31:0f67acfc6236 468 }
nikitateggi 31:0f67acfc6236 469
nikitateggi 44:05dbea558c9a 470 sum+=EOS;
nikitateggi 31:0f67acfc6236 471
nikitateggi 31:0f67acfc6236 472 chksum_datatrfr = sum & 0x000000FF;
nikitateggi 44:05dbea558c9a 473 //mc.printf("chksum_datatrfr=%02x\n",chksum_datatrfr);
nikitateggi 31:0f67acfc6236 474 return chksum_datatrfr;
nikitateggi 44:05dbea558c9a 475 }
nikitateggi 44:05dbea558c9a 476
nikitateggi 44:05dbea558c9a 477
nikitateggi 44:05dbea558c9a 478
nikitateggi 44:05dbea558c9a 479