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:
rashmivenkataramaiah
Date:
Fri Nov 10 11:58:38 2017 +0000
Revision:
57:e82d4bd6b2c0
Parent:
56:89eb9a977641
Child:
58:b75255e6e4c3
Can receive only 4 characters from receiver side

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 52:7d9ff7781bdc 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
rashmivenkataramaiah 57:e82d4bd6b2c0 17 #define POC2P0_BT_RX_MSG_LEN 0x05U
rashmivenkataramaiah 57:e82d4bd6b2c0 18
rashmivenkataramaiah 57:e82d4bd6b2c0 19 typedef struct __attribute__((__packed__))
rashmivenkataramaiah 57:e82d4bd6b2c0 20 {
rashmivenkataramaiah 57:e82d4bd6b2c0 21 uint8_t sos;
rashmivenkataramaiah 57:e82d4bd6b2c0 22 uint8_t cmd;
rashmivenkataramaiah 57:e82d4bd6b2c0 23 uint8_t length;
rashmivenkataramaiah 57:e82d4bd6b2c0 24 uint8_t eos;
rashmivenkataramaiah 57:e82d4bd6b2c0 25 uint8_t chksum;
rashmivenkataramaiah 57:e82d4bd6b2c0 26
rashmivenkataramaiah 57:e82d4bd6b2c0 27 }poc2p0_bluetooth_msg_request;
rashmivenkataramaiah 57:e82d4bd6b2c0 28
nikitateggi 22:ffa88619551d 29 BLEMsg_info *bt_file;
nikitateggi 22:ffa88619551d 30 Point *myBleMsg;
nikitateggi 52:7d9ff7781bdc 31
nikitateggi 27:907f8ce0025e 32 Serial mc(USBTX,USBRX); // serial terminal
nikitateggi 27:907f8ce0025e 33 Serial blue(PTC4,PTC3); // communicating bluetooth through serial
nikitateggi 27:907f8ce0025e 34
nikitateggi 28:65f2d80b7eb7 35 static uint32_t total_samples=0; // variable to hold total number of samples
nikitateggi 19:1650bbc923cc 36 Point b; // structure copy
nikitateggi 19:1650bbc923cc 37 BLEMsg_info bt_file1; // structure copy
nikitateggi 28:65f2d80b7eb7 38 static uint32_t total_file_size=0; // to determine the size of the file
nikitateggi 44:05dbea558c9a 39 static uint32_t total_file_size_sent=0;
nikitateggi 28:65f2d80b7eb7 40 static uint32_t file_start=0; // variable for 'for loop'
nikitateggi 44:05dbea558c9a 41 //static uint32_t j=0;
nikitateggi 27:907f8ce0025e 42 uint8_t count_send=0;
nikitateggi 28:65f2d80b7eb7 43 static uint32_t file_pointer_position=0;
nikitateggi 28:65f2d80b7eb7 44 static uint32_t counter=0;
nikitateggi 44:05dbea558c9a 45 static uint32_t v1[NO_OF_SAMPLES];
nikitateggi 27:907f8ce0025e 46 uint8_t file=0;
nikitateggi 54:f2a413d5dffd 47 static uint32_t bt_pid = 0;
nikitateggi 52:7d9ff7781bdc 48
nikitateggi 19:1650bbc923cc 49 uint8_t bt_send(uint8_t state_tx)
nikitateggi 19:1650bbc923cc 50 {
nikitateggi 32:76892fdf5e4c 51
nikitateggi 44:05dbea558c9a 52 blue.baud(115200); // baud rate of bluetooth
nikitateggi 44:05dbea558c9a 53 bt_file=&bt_file1;
nikitateggi 44:05dbea558c9a 54 myBleMsg=&b;
nikitateggi 44:05dbea558c9a 55 int8_t check_sum=0;
nikitateggi 44:05dbea558c9a 56 uint8_t state_rx =0;
nikitateggi 27:907f8ce0025e 57
nikitateggi 45:067673dae242 58 switch(state_tx)
nikitateggi 19:1650bbc923cc 59 {
nikitateggi 19:1650bbc923cc 60
nikitateggi 27:907f8ce0025e 61 case 1:
nikitateggi 44:05dbea558c9a 62 state_tx =0;
nikitateggi 27:907f8ce0025e 63 counter=0;
nikitateggi 44:05dbea558c9a 64 total_file_size_sent=0;
nikitateggi 45:067673dae242 65 file_start=0;
nikitateggi 45:067673dae242 66 count_send=0; total_samples=0;
nikitateggi 27:907f8ce0025e 67 file_pointer_position=0;
nikitateggi 54:f2a413d5dffd 68 bt_pid = get_btpid()+1; //added on 22/09/2017 nikita
nikitateggi 48:f90edb35a20e 69 mc.printf("bt_pid = %d\n",get_btpid());
nikitateggi 56:89eb9a977641 70 if(get_filepid()>=bt_pid) //check for pid and bluetooth pid by reading from file// modified to send till the current pid, 3rd nov//
nikitateggi 44:05dbea558c9a 71 {
nikitateggi 44:05dbea558c9a 72 send_initial_string();
nikitateggi 44:05dbea558c9a 73 blue.printf("\n");
nikitateggi 54:f2a413d5dffd 74 file=sd_open_read(bt_pid); // open the file for reading
nikitateggi 48:f90edb35a20e 75 total_file_size=file_size(); // determined the file size
nikitateggi 47:3716dd41dba6 76 state_rx = 1;
nikitateggi 44:05dbea558c9a 77 }
nikitateggi 44:05dbea558c9a 78
nikitateggi 44:05dbea558c9a 79 else
nikitateggi 44:05dbea558c9a 80 {
nikitateggi 45:067673dae242 81 state_rx =0; //no files to send
nikitateggi 44:05dbea558c9a 82 mc.printf("no file to send\n");
nikitateggi 44:05dbea558c9a 83 }
nikitateggi 44:05dbea558c9a 84 break;
nikitateggi 44:05dbea558c9a 85
nikitateggi 19:1650bbc923cc 86
nikitateggi 44:05dbea558c9a 87 case 2: total_samples=0;
nikitateggi 47:3716dd41dba6 88 //file=sd_open_read(get_btpid());
nikitateggi 48:f90edb35a20e 89 // total_file_size=file_size() ; // determined the file size
nikitateggi 45:067673dae242 90 sd_read1(bt_file1); // read the sd card file
avp2417 36:00d96aa14658 91 mc.printf("sd file opened to read data in it\n");
nikitateggi 45:067673dae242 92 myBleMsg->bt_msg=bt_file1; //copy the contents to the structure
nikitateggi 45:067673dae242 93 send_structure(); // send the structure string
avp2417 36:00d96aa14658 94 blue.printf("\n");
avp2417 36:00d96aa14658 95 mc.printf("sent initial string\n");
nikitateggi 27:907f8ce0025e 96 total_samples= myBleMsg->bt_msg.num_samples.num_sample_ppg_dummy+myBleMsg->bt_msg.num_samples.num_sample_ecg_OTtyp;
nikitateggi 19:1650bbc923cc 97 state_tx =0;
nikitateggi 19:1650bbc923cc 98 state_rx =2;
nikitateggi 27:907f8ce0025e 99 count_send=0;
nikitateggi 44:05dbea558c9a 100 total_file_size_sent=file_size1();
nikitateggi 19:1650bbc923cc 101 break;
nikitateggi 19:1650bbc923cc 102
nikitateggi 19:1650bbc923cc 103
nikitateggi 44:05dbea558c9a 104 case 3:
nikitateggi 44:05dbea558c9a 105 counter=0;
nikitateggi 44:05dbea558c9a 106 if(count_send<(total_samples/NO_OF_SAMPLES))
nikitateggi 44:05dbea558c9a 107 {
nikitateggi 44:05dbea558c9a 108 sd_read(v1,NO_OF_SAMPLES);
nikitateggi 44:05dbea558c9a 109 counter=NO_OF_SAMPLES; //read 1500 samples
nikitateggi 44:05dbea558c9a 110 send_data_str1();
nikitateggi 44:05dbea558c9a 111 for(file_start=0;file_start<(NO_OF_SAMPLES);file_start++)
nikitateggi 44:05dbea558c9a 112 {
nikitateggi 19:1650bbc923cc 113
nikitateggi 44:05dbea558c9a 114 blue.printf("%08x", v1[file_start]);
nikitateggi 27:907f8ce0025e 115
nikitateggi 44:05dbea558c9a 116 }
avp2417 36:00d96aa14658 117
nikitateggi 44:05dbea558c9a 118 check_sum=checksum_rawdata((uint8_t *)v1,counter); // calculating checksum // calculating checksum
nikitateggi 44:05dbea558c9a 119 state_tx =0;
nikitateggi 44:05dbea558c9a 120 state_rx =3;
nikitateggi 44:05dbea558c9a 121 send_data_str2(check_sum); // send the remaining part of the string
nikitateggi 19:1650bbc923cc 122
nikitateggi 44:05dbea558c9a 123 }
nikitateggi 19:1650bbc923cc 124
nikitateggi 44:05dbea558c9a 125 else
nikitateggi 44:05dbea558c9a 126 {
nikitateggi 44:05dbea558c9a 127 for(uint16_t l=0;l<NO_OF_SAMPLES;l++)
nikitateggi 44:05dbea558c9a 128 {
nikitateggi 44:05dbea558c9a 129 v1[l]=NULL;
nikitateggi 44:05dbea558c9a 130 }
nikitateggi 44:05dbea558c9a 131 counter=(total_samples-( NO_OF_SAMPLES*count_send));
nikitateggi 27:907f8ce0025e 132 send_data_str1();
nikitateggi 44:05dbea558c9a 133 sd_read(v1,(total_samples-( NO_OF_SAMPLES*count_send)));
nikitateggi 44:05dbea558c9a 134
nikitateggi 44:05dbea558c9a 135 for(file_start=0;file_start<(total_samples-( NO_OF_SAMPLES*count_send));file_start++)
nikitateggi 19:1650bbc923cc 136 {
nikitateggi 24:d992ee8369f4 137 blue.printf("%08x", v1[file_start]);
nikitateggi 27:907f8ce0025e 138
nikitateggi 19:1650bbc923cc 139 }
nikitateggi 27:907f8ce0025e 140
nikitateggi 19:1650bbc923cc 141 state_tx=0;
nikitateggi 19:1650bbc923cc 142 state_rx=4;
nikitateggi 44:05dbea558c9a 143 check_sum=checksum_rawdata((uint8_t *)v1,counter); // calculating checksum
nikitateggi 22:ffa88619551d 144 send_data_str2(check_sum);
nikitateggi 19:1650bbc923cc 145 }
nikitateggi 19:1650bbc923cc 146
nikitateggi 45:067673dae242 147 total_file_size_sent=file_size1();
nikitateggi 27:907f8ce0025e 148 blue.printf("\n");
nikitateggi 27:907f8ce0025e 149 break;
nikitateggi 19:1650bbc923cc 150
nikitateggi 19:1650bbc923cc 151
nikitateggi 48:f90edb35a20e 152 case 4: // total_file_size_sent=file_size1();
nikitateggi 44:05dbea558c9a 153 if(total_file_size_sent==total_file_size) // if the total file size is same as total file size
nikitateggi 27:907f8ce0025e 154 { // then there is no more data to send in that particular file
nikitateggi 19:1650bbc923cc 155
nikitateggi 44:05dbea558c9a 156 state_rx=5;
nikitateggi 44:05dbea558c9a 157 send_last_string();
nikitateggi 24:d992ee8369f4 158 blue.printf("\n");
nikitateggi 44:05dbea558c9a 159
nikitateggi 19:1650bbc923cc 160 }
nikitateggi 19:1650bbc923cc 161 else
nikitateggi 19:1650bbc923cc 162 {
nikitateggi 44:05dbea558c9a 163
nikitateggi 44:05dbea558c9a 164 total_samples=0;
nikitateggi 44:05dbea558c9a 165 sd_read1(bt_file1); // read the sd card file
nikitateggi 46:162ed3f051b2 166 // mc.printf("sd file opened to read data in it\n");
nikitateggi 44:05dbea558c9a 167 myBleMsg->bt_msg=bt_file1; //copy the contents to the structure
nikitateggi 44:05dbea558c9a 168 send_structure(); // send the initial string
nikitateggi 44:05dbea558c9a 169 blue.printf("\n");
nikitateggi 46:162ed3f051b2 170 // mc.printf("sent initial string\n");
nikitateggi 44:05dbea558c9a 171 total_samples= myBleMsg->bt_msg.num_samples.num_sample_ppg_dummy+myBleMsg->bt_msg.num_samples.num_sample_ecg_OTtyp;
nikitateggi 44:05dbea558c9a 172 state_tx =0;
nikitateggi 44:05dbea558c9a 173 state_rx =2;
nikitateggi 44:05dbea558c9a 174 count_send=0;
nikitateggi 44:05dbea558c9a 175 total_file_size_sent=file_size1();
nikitateggi 44:05dbea558c9a 176
nikitateggi 19:1650bbc923cc 177 }
nikitateggi 19:1650bbc923cc 178
nikitateggi 19:1650bbc923cc 179
nikitateggi 52:7d9ff7781bdc 180
nikitateggi 52:7d9ff7781bdc 181
nikitateggi 19:1650bbc923cc 182 }
nikitateggi 52:7d9ff7781bdc 183
nikitateggi 19:1650bbc923cc 184 return state_rx;
nikitateggi 19:1650bbc923cc 185
nikitateggi 19:1650bbc923cc 186 }
nikitateggi 19:1650bbc923cc 187
nikitateggi 19:1650bbc923cc 188
nikitateggi 19:1650bbc923cc 189
nikitateggi 19:1650bbc923cc 190
nikitateggi 19:1650bbc923cc 191 uint8_t bt_receive (uint8_t state_rx)
nikitateggi 19:1650bbc923cc 192 {
nikitateggi 19:1650bbc923cc 193
nikitateggi 52:7d9ff7781bdc 194 unsigned char state_tx =1; //state for transmitting
nikitateggi 52:7d9ff7781bdc 195 uint8_t string_length_rx=0;
nikitateggi 52:7d9ff7781bdc 196 char ack_rx[2]; // varibale to receive ack from the bluetooth
nikitateggi 52:7d9ff7781bdc 197 char chksum_rx[3];
nikitateggi 52:7d9ff7781bdc 198 char btdata_received[17];
nikitateggi 52:7d9ff7781bdc 199
nikitateggi 44:05dbea558c9a 200
nikitateggi 52:7d9ff7781bdc 201 while (blue.readable()!= NULL) // reading string from bluetooth app
nikitateggi 52:7d9ff7781bdc 202 {
nikitateggi 52:7d9ff7781bdc 203 blue.scanf("%17s", btdata_received);
nikitateggi 52:7d9ff7781bdc 204 mc.printf("%s\r\n", btdata_received);
nikitateggi 52:7d9ff7781bdc 205
nikitateggi 52:7d9ff7781bdc 206 }
nikitateggi 52:7d9ff7781bdc 207
nikitateggi 52:7d9ff7781bdc 208 string_length_rx = strlen(btdata_received); // storing the length of the string received
nikitateggi 52:7d9ff7781bdc 209 memcpy(ack_rx, btdata_received+1, 2); // reading the ack received
nikitateggi 52:7d9ff7781bdc 210 memcpy(chksum_rx, btdata_received+(string_length_rx-2), 3); // reading the checksum received
nikitateggi 52:7d9ff7781bdc 211 mc.printf("%s\r\n",ack_rx);
nikitateggi 52:7d9ff7781bdc 212 mc.printf("%s\r\n",chksum_rx);
nikitateggi 44:05dbea558c9a 213
nikitateggi 19:1650bbc923cc 214 switch(state_rx)
nikitateggi 19:1650bbc923cc 215 {
nikitateggi 19:1650bbc923cc 216
nikitateggi 52:7d9ff7781bdc 217 case 1: // wait for the ack
nikitateggi 22:ffa88619551d 218 state_rx=0;
nikitateggi 19:1650bbc923cc 219 myBleMsg->proto=ACK;
nikitateggi 52:7d9ff7781bdc 220 if ((strcmp(ack_rx ,"00") == NULL ) && (strcmp(chksum_rx ,"80" ) == NULL)) // check for ack and checksum
nikitateggi 44:05dbea558c9a 221
nikitateggi 19:1650bbc923cc 222 {
nikitateggi 19:1650bbc923cc 223
nikitateggi 19:1650bbc923cc 224 state_tx=2;
nikitateggi 19:1650bbc923cc 225 }
nikitateggi 19:1650bbc923cc 226
nikitateggi 22:ffa88619551d 227 else
nikitateggi 19:1650bbc923cc 228
nikitateggi 19:1650bbc923cc 229 {
nikitateggi 19:1650bbc923cc 230
nikitateggi 19:1650bbc923cc 231 state_tx=1;
nikitateggi 48:f90edb35a20e 232 sd_close();
nikitateggi 19:1650bbc923cc 233 }
nikitateggi 19:1650bbc923cc 234 break;
nikitateggi 19:1650bbc923cc 235
nikitateggi 19:1650bbc923cc 236 case 2: state_rx =0; //wait for the ack
nikitateggi 44:05dbea558c9a 237
nikitateggi 52:7d9ff7781bdc 238 if ((strcmp(ack_rx ,"00") == NULL ) && (strcmp(chksum_rx ,"80" ) == NULL))
nikitateggi 19:1650bbc923cc 239 {
nikitateggi 19:1650bbc923cc 240
nikitateggi 19:1650bbc923cc 241 state_tx=3;
nikitateggi 44:05dbea558c9a 242 file_pointer_position=total_file_size_sent;
nikitateggi 19:1650bbc923cc 243 }
nikitateggi 19:1650bbc923cc 244
nikitateggi 19:1650bbc923cc 245 else
nikitateggi 19:1650bbc923cc 246
nikitateggi 19:1650bbc923cc 247 {
nikitateggi 19:1650bbc923cc 248
nikitateggi 19:1650bbc923cc 249 state_tx=2;
nikitateggi 22:ffa88619551d 250 setpos1(file_pointer_position);
nikitateggi 47:3716dd41dba6 251 //sd_close(); //file closed which was opened earlier because it opens again in bt_send case 1
nikitateggi 27:907f8ce0025e 252
nikitateggi 19:1650bbc923cc 253 }
nikitateggi 27:907f8ce0025e 254 //blue.scanf("%02x%02x%08x%02x",&sos_rx,&ack_rx,&eos_rx,&chksum_rx);
nikitateggi 19:1650bbc923cc 255 break;
nikitateggi 52:7d9ff7781bdc 256
nikitateggi 19:1650bbc923cc 257
nikitateggi 19:1650bbc923cc 258 case 3:
nikitateggi 19:1650bbc923cc 259 state_rx =0;
nikitateggi 52:7d9ff7781bdc 260 if ((strcmp(ack_rx ,"00") == NULL ) && (strcmp(chksum_rx ,"80" ) == NULL))
nikitateggi 19:1650bbc923cc 261 {
nikitateggi 19:1650bbc923cc 262
nikitateggi 45:067673dae242 263 state_tx=3;
nikitateggi 27:907f8ce0025e 264 count_send=count_send+1;
nikitateggi 45:067673dae242 265 file_pointer_position=total_file_size_sent;
nikitateggi 19:1650bbc923cc 266 }
nikitateggi 19:1650bbc923cc 267
nikitateggi 19:1650bbc923cc 268 else
nikitateggi 19:1650bbc923cc 269
nikitateggi 19:1650bbc923cc 270 {
nikitateggi 27:907f8ce0025e 271
nikitateggi 19:1650bbc923cc 272 state_tx=3;
nikitateggi 44:05dbea558c9a 273 file_start=file_start- NO_OF_SAMPLES;
nikitateggi 44:05dbea558c9a 274 setpos1(file_pointer_position);
nikitateggi 44:05dbea558c9a 275 }
nikitateggi 44:05dbea558c9a 276
nikitateggi 44:05dbea558c9a 277 break;
nikitateggi 44:05dbea558c9a 278
nikitateggi 44:05dbea558c9a 279 case 4:
nikitateggi 44:05dbea558c9a 280 state_rx =0;
nikitateggi 52:7d9ff7781bdc 281 if ((strcmp(ack_rx ,"00") == NULL ) && (strcmp(chksum_rx ,"80" ) == NULL))
nikitateggi 44:05dbea558c9a 282 {
nikitateggi 45:067673dae242 283 state_tx=4;
nikitateggi 44:05dbea558c9a 284 count_send=count_send+1;
nikitateggi 45:067673dae242 285 file_pointer_position=total_file_size_sent;
nikitateggi 44:05dbea558c9a 286 }
nikitateggi 44:05dbea558c9a 287
nikitateggi 44:05dbea558c9a 288 else
nikitateggi 44:05dbea558c9a 289
nikitateggi 44:05dbea558c9a 290 {
nikitateggi 44:05dbea558c9a 291
nikitateggi 44:05dbea558c9a 292 state_tx=3;
nikitateggi 44:05dbea558c9a 293 file_start=file_start- NO_OF_SAMPLES;
nikitateggi 19:1650bbc923cc 294 setpos1(file_pointer_position);
nikitateggi 19:1650bbc923cc 295 }
nikitateggi 19:1650bbc923cc 296 break;
nikitateggi 19:1650bbc923cc 297
nikitateggi 52:7d9ff7781bdc 298
nikitateggi 44:05dbea558c9a 299 case 5: state_rx = 0;
nikitateggi 52:7d9ff7781bdc 300 if ((strcmp(ack_rx ,"00") == NULL ) && (strcmp(chksum_rx ,"80" ) == NULL))
nikitateggi 44:05dbea558c9a 301 {
nikitateggi 44:05dbea558c9a 302 sd_close();
nikitateggi 45:067673dae242 303 increment_btpid(); // increment the bluetooth pid and write in the file
nikitateggi 47:3716dd41dba6 304 mc.printf("next file");
nikitateggi 47:3716dd41dba6 305 mc.printf("bt_pid = %d\n",get_btpid());
nikitateggi 44:05dbea558c9a 306 state_tx=1;
nikitateggi 44:05dbea558c9a 307
nikitateggi 44:05dbea558c9a 308 }
nikitateggi 27:907f8ce0025e 309
nikitateggi 44:05dbea558c9a 310 else
nikitateggi 44:05dbea558c9a 311 {
nikitateggi 44:05dbea558c9a 312 state_tx = 4;
nikitateggi 27:907f8ce0025e 313
nikitateggi 44:05dbea558c9a 314 }
nikitateggi 44:05dbea558c9a 315 break;
nikitateggi 52:7d9ff7781bdc 316
nikitateggi 19:1650bbc923cc 317 }
nikitateggi 52:7d9ff7781bdc 318
nikitateggi 19:1650bbc923cc 319 return state_tx;
nikitateggi 19:1650bbc923cc 320 }
nikitateggi 19:1650bbc923cc 321
nikitateggi 19:1650bbc923cc 322
nikitateggi 19:1650bbc923cc 323
nikitateggi 19:1650bbc923cc 324
nikitateggi 19:1650bbc923cc 325
nikitateggi 19:1650bbc923cc 326
nikitateggi 19:1650bbc923cc 327
nikitateggi 44:05dbea558c9a 328 void send_structure() // function to send the structure to bluetooth
nikitateggi 19:1650bbc923cc 329 {
nikitateggi 45:067673dae242 330 myBleMsg->start_of_string=SOS;
nikitateggi 45:067673dae242 331 myBleMsg->length_file = STRUCTURE_LENGTH;
nikitateggi 45:067673dae242 332 myBleMsg->proto=DATA_TRFR; // data transfer mode
nikitateggi 45:067673dae242 333 blue.printf("%02x",myBleMsg->start_of_string);
nikitateggi 45:067673dae242 334 blue.printf("%02x",myBleMsg->proto);
nikitateggi 45:067673dae242 335 blue.printf("%08x",myBleMsg->length_file); //changed the sequence
nikitateggi 45:067673dae242 336 blue.printf("%08x",myBleMsg->bt_msg.length);
nikitateggi 45:067673dae242 337 blue.printf("%02x",myBleMsg->bt_msg.device_id);
nikitateggi 45:067673dae242 338 blue.printf("%08x",myBleMsg->bt_msg.patient_id);
nikitateggi 45:067673dae242 339 blue.printf("%02x",myBleMsg->bt_msg.date_time.date);
nikitateggi 45:067673dae242 340 blue.printf("%02x",myBleMsg->bt_msg.date_time.month);
nikitateggi 45:067673dae242 341 blue.printf("%02x",myBleMsg->bt_msg.date_time.year);
nikitateggi 45:067673dae242 342 blue.printf("%02x",myBleMsg->bt_msg.date_time.hour);
nikitateggi 45:067673dae242 343 blue.printf("%02x",myBleMsg->bt_msg.date_time.mins);
nikitateggi 45:067673dae242 344 blue.printf("%02x",myBleMsg->bt_msg.date_time.sec);
nikitateggi 45:067673dae242 345 blue.printf("%02x",myBleMsg->bt_msg.test_type);
nikitateggi 45:067673dae242 346 blue.printf("%04x",myBleMsg->bt_msg.sampling_freq);
nikitateggi 45:067673dae242 347 blue.printf("%04x",myBleMsg->bt_msg.num_samples. num_sample_ppg_dummy);
nikitateggi 45:067673dae242 348 blue.printf("%04x",myBleMsg->bt_msg.num_samples.num_sample_ecg_OTtyp);
nikitateggi 45:067673dae242 349 blue.printf("%04x",myBleMsg->bt_msg.cal_data.cal_sbp_dummy);
nikitateggi 45:067673dae242 350 blue.printf("%04x",myBleMsg->bt_msg.cal_data.cal_dbp_OTtyp);
nikitateggi 45:067673dae242 351 myBleMsg->end_of_string=EOS;
nikitateggi 45:067673dae242 352 myBleMsg->chk_sum = checksum_struct((uint8_t *)myBleMsg, sizeof(Point));
nikitateggi 45:067673dae242 353 blue.printf("%02x",myBleMsg->end_of_string);
nikitateggi 45:067673dae242 354 blue.printf("%02x",myBleMsg->chk_sum);
nikitateggi 44:05dbea558c9a 355
nikitateggi 19:1650bbc923cc 356
nikitateggi 19:1650bbc923cc 357 }
nikitateggi 19:1650bbc923cc 358
nikitateggi 44:05dbea558c9a 359 void send_initial_string() // function to send the initial string at the start f communication to bluetooth
nikitateggi 22:ffa88619551d 360 {
nikitateggi 52:7d9ff7781bdc 361
nikitateggi 45:067673dae242 362 uint8_t sum_init=0 ;
nikitateggi 45:067673dae242 363 myBleMsg->start_of_string=SOS;
nikitateggi 45:067673dae242 364 myBleMsg->length_file=0;
nikitateggi 45:067673dae242 365 myBleMsg->proto=START_OF_FILE;
nikitateggi 45:067673dae242 366 sum_init=checksum_init();
nikitateggi 45:067673dae242 367 myBleMsg->chk_sum=sum_init;
nikitateggi 45:067673dae242 368 blue.printf("%02x",myBleMsg->start_of_string);
nikitateggi 45:067673dae242 369 blue.printf("%02x",myBleMsg->proto);
nikitateggi 45:067673dae242 370 blue.printf("%08x",myBleMsg->length_file); // chnged
nikitateggi 45:067673dae242 371 myBleMsg->end_of_string=EOS;
nikitateggi 45:067673dae242 372 blue.printf("%02x",myBleMsg->end_of_string);
nikitateggi 45:067673dae242 373 blue.printf("%02x",myBleMsg->chk_sum);
nikitateggi 19:1650bbc923cc 374
nikitateggi 19:1650bbc923cc 375 }
nikitateggi 22:ffa88619551d 376
nikitateggi 22:ffa88619551d 377
nikitateggi 27:907f8ce0025e 378 uint8_t checksum_init() // function to calculate the checksum for the initial string
nikitateggi 22:ffa88619551d 379 {
nikitateggi 22:ffa88619551d 380
nikitateggi 45:067673dae242 381 uint32_t sum = 0;
nikitateggi 45:067673dae242 382 uint8_t chksum_init = 0;
nikitateggi 44:05dbea558c9a 383 sum=SOS+EOS+START_OF_FILE;
nikitateggi 45:067673dae242 384 chksum_init = sum & 0x000000FF;
nikitateggi 22:ffa88619551d 385 return chksum_init;
nikitateggi 22:ffa88619551d 386 }
nikitateggi 52:7d9ff7781bdc 387
nikitateggi 27:907f8ce0025e 388 uint8_t checksum_last() // function to calculate the checksum for the last string
nikitateggi 22:ffa88619551d 389 {
nikitateggi 22:ffa88619551d 390
nikitateggi 45:067673dae242 391 uint32_t sum = 0;
nikitateggi 45:067673dae242 392 uint8_t chksum_last = 0;
nikitateggi 44:05dbea558c9a 393 sum=SOS+EOS+END_OF_FILE; // changed //16/06 #define all the values removing structure
nikitateggi 22:ffa88619551d 394 chksum_last=sum & 0x000000FF;
nikitateggi 22:ffa88619551d 395 return chksum_last;
nikitateggi 22:ffa88619551d 396 }
nikitateggi 22:ffa88619551d 397
nikitateggi 45:067673dae242 398 void send_last_string() // function to send the last string to the bluetooth // which determines the end of file
nikitateggi 22:ffa88619551d 399 {
nikitateggi 45:067673dae242 400 uint8_t sum_last=0;
nikitateggi 45:067673dae242 401 myBleMsg->start_of_string = SOS;
nikitateggi 45:067673dae242 402 myBleMsg->length_file = 0;
nikitateggi 45:067673dae242 403 myBleMsg->proto=END_OF_FILE;
nikitateggi 45:067673dae242 404 sum_last=checksum_last();
nikitateggi 45:067673dae242 405 myBleMsg->chk_sum=sum_last;
nikitateggi 45:067673dae242 406 blue.printf("%02x",myBleMsg->start_of_string);
nikitateggi 45:067673dae242 407 blue.printf("%02x",myBleMsg->proto);
nikitateggi 45:067673dae242 408 blue.printf("%08x",myBleMsg->length_file); // chnged
nikitateggi 45:067673dae242 409 myBleMsg->end_of_string=EOS;
nikitateggi 45:067673dae242 410 blue.printf("%02x",myBleMsg->end_of_string);
nikitateggi 45:067673dae242 411 blue.printf("%02x",myBleMsg->chk_sum);
nikitateggi 45:067673dae242 412
nikitateggi 45:067673dae242 413 }
nikitateggi 22:ffa88619551d 414
nikitateggi 45:067673dae242 415 void send_data_str1() // function to send a part of the structure // after this raw data is sent//
nikitateggi 45:067673dae242 416 {
nikitateggi 45:067673dae242 417 myBleMsg->start_of_string=SOS;
nikitateggi 45:067673dae242 418 myBleMsg->length_file=(counter*4);
nikitateggi 45:067673dae242 419 myBleMsg->proto=DATA_TRFR;
nikitateggi 45:067673dae242 420 blue.printf("%02x",myBleMsg->start_of_string);
nikitateggi 45:067673dae242 421 blue.printf("%02x",myBleMsg->proto); // chnaged
nikitateggi 45:067673dae242 422 blue.printf("%08x",myBleMsg->length_file);
nikitateggi 52:7d9ff7781bdc 423
nikitateggi 45:067673dae242 424 }
nikitateggi 19:1650bbc923cc 425
nikitateggi 19:1650bbc923cc 426
nikitateggi 19:1650bbc923cc 427
nikitateggi 45:067673dae242 428 void send_data_str2(uint8_t check_sum) // after raw data// this last part of structure is sent
nikitateggi 45:067673dae242 429 {
nikitateggi 45:067673dae242 430 myBleMsg->chk_sum=check_sum;
nikitateggi 45:067673dae242 431 myBleMsg->end_of_string=EOS;
nikitateggi 45:067673dae242 432 blue.printf("%02x",myBleMsg->end_of_string);
nikitateggi 45:067673dae242 433 blue.printf("%02x",myBleMsg->chk_sum);
nikitateggi 45:067673dae242 434
nikitateggi 45:067673dae242 435 }
nikitateggi 19:1650bbc923cc 436
nikitateggi 52:7d9ff7781bdc 437
nikitateggi 31:0f67acfc6236 438 uint8_t checksum_struct(const uint8_t data[], uint16_t numBytes) // calculating checksum for
nikitateggi 31:0f67acfc6236 439 {
nikitateggi 31:0f67acfc6236 440 uint32_t chksum_struct = 0;
nikitateggi 31:0f67acfc6236 441 uint16_t index = 0;
nikitateggi 31:0f67acfc6236 442
nikitateggi 31:0f67acfc6236 443 for (index=0U; index < (numBytes-1); index++)
nikitateggi 31:0f67acfc6236 444 {
nikitateggi 31:0f67acfc6236 445 chksum_struct += data[index];
nikitateggi 31:0f67acfc6236 446 //blue.printf("data=%02x\n",data[index]);
nikitateggi 31:0f67acfc6236 447
nikitateggi 31:0f67acfc6236 448 }
nikitateggi 31:0f67acfc6236 449 // blue.printf("%08x\n",chksum_struct);
nikitateggi 31:0f67acfc6236 450 return chksum_struct;
nikitateggi 22:ffa88619551d 451 }
nikitateggi 52:7d9ff7781bdc 452
nikitateggi 52:7d9ff7781bdc 453
nikitateggi 44:05dbea558c9a 454 uint8_t checksum_rawdata(const uint8_t data[], uint32_t numBytes) // this function to calculate the checksum for the raw data
nikitateggi 31:0f67acfc6236 455 {
nikitateggi 52:7d9ff7781bdc 456
nikitateggi 45:067673dae242 457 uint32_t sum=0;
nikitateggi 45:067673dae242 458 uint8_t chksum_datatrfr=0;
nikitateggi 45:067673dae242 459 uint32_t index = 0;
nikitateggi 45:067673dae242 460 uint32_t index1 = 0;
nikitateggi 44:05dbea558c9a 461 sum += SOS;
nikitateggi 44:05dbea558c9a 462 sum += DATA_TRFR;
nikitateggi 45:067673dae242 463 index1=(numBytes*4);
nikitateggi 45:067673dae242 464 sum +=(index1>>(8*0))&0xFF;
nikitateggi 31:0f67acfc6236 465 sum +=(index1>>(8*1))&0xFF;
nikitateggi 52:7d9ff7781bdc 466
nikitateggi 45:067673dae242 467 for (index=0U; index<(numBytes*4); index++)
nikitateggi 45:067673dae242 468 {
nikitateggi 31:0f67acfc6236 469 sum += data[index];
nikitateggi 45:067673dae242 470 }
nikitateggi 52:7d9ff7781bdc 471
nikitateggi 45:067673dae242 472 sum+=EOS;
nikitateggi 52:7d9ff7781bdc 473
nikitateggi 45:067673dae242 474 chksum_datatrfr = sum & 0x000000FF;
nikitateggi 44:05dbea558c9a 475 //mc.printf("chksum_datatrfr=%02x\n",chksum_datatrfr);
nikitateggi 45:067673dae242 476 return chksum_datatrfr;
nikitateggi 44:05dbea558c9a 477 }
nikitateggi 52:7d9ff7781bdc 478
rashmivenkataramaiah 57:e82d4bd6b2c0 479
rashmivenkataramaiah 57:e82d4bd6b2c0 480 // bluetooth receive command for POC2P0
rashmivenkataramaiah 57:e82d4bd6b2c0 481 uint8_t poc2p0_bt_receive (uint8_t curr_touch_state)
rashmivenkataramaiah 57:e82d4bd6b2c0 482 {
rashmivenkataramaiah 57:e82d4bd6b2c0 483 poc2p0_bluetooth_msg_request poc2p0_bt_msg_req = {0u};
rashmivenkataramaiah 57:e82d4bd6b2c0 484 uint8_t cal_chksum = 0xFFu;
rashmivenkataramaiah 57:e82d4bd6b2c0 485 uint8_t touch_state = 0x00u;
rashmivenkataramaiah 57:e82d4bd6b2c0 486
rashmivenkataramaiah 57:e82d4bd6b2c0 487 //if (blue.readable()!= NULL) // reading string from bluetooth
rashmivenkataramaiah 57:e82d4bd6b2c0 488 while (mc.readable()!= NULL)
rashmivenkataramaiah 57:e82d4bd6b2c0 489 {
rashmivenkataramaiah 57:e82d4bd6b2c0 490 mc.printf("\n");
rashmivenkataramaiah 57:e82d4bd6b2c0 491 //blue.gets((char *)&poc2p0_bt_msg_req, sizeof(poc2p0_bt_msg_req));
rashmivenkataramaiah 57:e82d4bd6b2c0 492 mc.gets((char *)&poc2p0_bt_msg_req, sizeof(poc2p0_bt_msg_req));
rashmivenkataramaiah 57:e82d4bd6b2c0 493 mc.puts((const char *)&poc2p0_bt_msg_req); //,sizeof(poc2p0_bt_msg_req)
rashmivenkataramaiah 57:e82d4bd6b2c0 494
rashmivenkataramaiah 57:e82d4bd6b2c0 495 }
rashmivenkataramaiah 57:e82d4bd6b2c0 496
rashmivenkataramaiah 57:e82d4bd6b2c0 497 cal_chksum = checksum_struct((uint8_t *)poc2p0_bt_msg_req.cmd, (sizeof(poc2p0_bt_msg_req)-2));
rashmivenkataramaiah 57:e82d4bd6b2c0 498
rashmivenkataramaiah 57:e82d4bd6b2c0 499 if (cal_chksum == poc2p0_bt_msg_req.chksum)
rashmivenkataramaiah 57:e82d4bd6b2c0 500 {
rashmivenkataramaiah 57:e82d4bd6b2c0 501
rashmivenkataramaiah 57:e82d4bd6b2c0 502 mc.printf("CMD: %2x\n",poc2p0_bt_msg_req.cmd);
rashmivenkataramaiah 57:e82d4bd6b2c0 503 switch (poc2p0_bt_msg_req.cmd)
rashmivenkataramaiah 57:e82d4bd6b2c0 504 {
rashmivenkataramaiah 57:e82d4bd6b2c0 505 case STRT_BP_TEST_REQ:
rashmivenkataramaiah 57:e82d4bd6b2c0 506 touch_state = TOUCH_STATE_BP_TEST_SCREEN;
rashmivenkataramaiah 57:e82d4bd6b2c0 507 break;
rashmivenkataramaiah 57:e82d4bd6b2c0 508
rashmivenkataramaiah 57:e82d4bd6b2c0 509 case STRT_BG_FBS_TEST_REQ:
rashmivenkataramaiah 57:e82d4bd6b2c0 510 touch_state = TOUCH_STATE_BG_TEST_SCREEN;
rashmivenkataramaiah 57:e82d4bd6b2c0 511 break;
rashmivenkataramaiah 57:e82d4bd6b2c0 512
rashmivenkataramaiah 57:e82d4bd6b2c0 513 case STRT_BG_PP_TEST_REQ:
rashmivenkataramaiah 57:e82d4bd6b2c0 514 touch_state = TOUCH_STATE_BG_TEST_SCREEN;
rashmivenkataramaiah 57:e82d4bd6b2c0 515 break;
rashmivenkataramaiah 57:e82d4bd6b2c0 516
rashmivenkataramaiah 57:e82d4bd6b2c0 517 case STRT_BG_RAN_TEST_REQ:
rashmivenkataramaiah 57:e82d4bd6b2c0 518 touch_state = TOUCH_STATE_BG_TEST_SCREEN;
rashmivenkataramaiah 57:e82d4bd6b2c0 519 break;
rashmivenkataramaiah 57:e82d4bd6b2c0 520
rashmivenkataramaiah 57:e82d4bd6b2c0 521 case STRT_ECG_TEST_REQ:
rashmivenkataramaiah 57:e82d4bd6b2c0 522 touch_state = TOUCH_STATE_ECG_SCREEN;
rashmivenkataramaiah 57:e82d4bd6b2c0 523 break;
rashmivenkataramaiah 57:e82d4bd6b2c0 524
rashmivenkataramaiah 57:e82d4bd6b2c0 525 case DATA_SYNC_REQ:
rashmivenkataramaiah 57:e82d4bd6b2c0 526 touch_state = TOUCH_STATE_DATA_SYNC_SCREEN;
rashmivenkataramaiah 57:e82d4bd6b2c0 527 poc2p0_send_device_msg_res(DATA_SYNC_MSG_ACCEPTED_RES);
rashmivenkataramaiah 57:e82d4bd6b2c0 528 break;
rashmivenkataramaiah 57:e82d4bd6b2c0 529
rashmivenkataramaiah 57:e82d4bd6b2c0 530 case HEARTBEAT_REQ:
rashmivenkataramaiah 57:e82d4bd6b2c0 531 if ((curr_touch_state == TOUCH_STATE_HOME_SCREEN)||(curr_touch_state == TOUCH_STATE_TEST_SCREEN))
rashmivenkataramaiah 57:e82d4bd6b2c0 532 {
rashmivenkataramaiah 57:e82d4bd6b2c0 533 poc2p0_send_device_heartbeat_msg_res(curr_touch_state);
rashmivenkataramaiah 57:e82d4bd6b2c0 534 }
rashmivenkataramaiah 57:e82d4bd6b2c0 535 break;
rashmivenkataramaiah 57:e82d4bd6b2c0 536
rashmivenkataramaiah 57:e82d4bd6b2c0 537 case HOME_SCREEN_REQ:
rashmivenkataramaiah 57:e82d4bd6b2c0 538 touch_state = TOUCH_STATE_HOME_SCREEN;
rashmivenkataramaiah 57:e82d4bd6b2c0 539 poc2p0_send_device_msg_res(HOME_SCREEN_MSG_ACCEPTED_RES);
rashmivenkataramaiah 57:e82d4bd6b2c0 540 break;
rashmivenkataramaiah 57:e82d4bd6b2c0 541
rashmivenkataramaiah 57:e82d4bd6b2c0 542 case TEST_SCREEN_REQ:
rashmivenkataramaiah 57:e82d4bd6b2c0 543 touch_state = TOUCH_STATE_TEST_SCREEN;
rashmivenkataramaiah 57:e82d4bd6b2c0 544 poc2p0_send_device_msg_res(TEST_SCREEN_MSG_ACCEPTED_RES);
rashmivenkataramaiah 57:e82d4bd6b2c0 545 break;
rashmivenkataramaiah 57:e82d4bd6b2c0 546
rashmivenkataramaiah 57:e82d4bd6b2c0 547 default:
rashmivenkataramaiah 57:e82d4bd6b2c0 548 break;
rashmivenkataramaiah 57:e82d4bd6b2c0 549 }
rashmivenkataramaiah 57:e82d4bd6b2c0 550 }
rashmivenkataramaiah 57:e82d4bd6b2c0 551 cal_chksum = 0xFFu;
rashmivenkataramaiah 57:e82d4bd6b2c0 552 mc.printf("\n%d\n",touch_state);
rashmivenkataramaiah 57:e82d4bd6b2c0 553 return touch_state;
rashmivenkataramaiah 57:e82d4bd6b2c0 554 }