created separate function for hex to char

Dependencies:   SDFileSystem ds3231 eeprom_Nikita mbed testUniGraphic_150217

Fork of SS_SensePOC2P0_11Dec2017_USERPID by rashmi v

Committer:
nikitateggi
Date:
Wed Sep 13 11:24:19 2017 +0000
Revision:
47:3716dd41dba6
Parent:
46:162ed3f051b2
Child:
48:f90edb35a20e
for my reference

Who changed what in which revision?

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