Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SDFileSystem ds3231 eeprom_Nikita mbed testUniGraphic_150217
Fork of merged_code2_20sept_2017_4th_oct_2017 by
Diff: bt.cpp
- Revision:
- 45:067673dae242
- Parent:
- 44:05dbea558c9a
- Child:
- 46:162ed3f051b2
diff -r 05dbea558c9a -r 067673dae242 bt.cpp
--- a/bt.cpp Tue Sep 12 04:16:41 2017 +0000
+++ b/bt.cpp Tue Sep 12 10:08:04 2017 +0000
@@ -1,19 +1,19 @@
-
#include "mbed.h"
#include "sdcard.h"
#include "struct.h"
#include "eeprom_pgm.h"
#include "main.h"
-#define ACK 0x00 /// changed //16/06 #define all the values removing structure
-#define START_OF_FILE 0x01
-#define END_OF_FILE 0x02
-#define DATA_TRFR 0x03
-#define NACK 0xFF
-#define SOS 0xc0
-#define EOS 0xc0
-#define NO_OF_SAMPLES 600 //changed the buffer size from 150- 22/7/17- suhasini
-
+#define ACK 0x00 /// changed //16/06 #define all the values removing structure
+#define START_OF_FILE 0x01
+#define END_OF_FILE 0x02
+#define DATA_TRFR 0x03
+#define NACK 0xFF
+#define SOS 0xc0
+#define EOS 0xc0
+#define NO_OF_SAMPLES 600 //changed the buffer size from 150- 22/7/17- suhasini
+#define CHKSUM 0x80
+#define STRUCTURE_LENGTH 26
BLEMsg_info *bt_file;
Point *myBleMsg;
@@ -44,23 +44,18 @@
int8_t check_sum=0;
uint8_t state_rx =0;
-
-
-
-
- switch(state_tx)
+ switch(state_tx)
{
case 1:
state_tx =0;
counter=0;
total_file_size_sent=0;
- file_start=0;
- // j=0;
- count_send=0; total_samples=0;
+ file_start=0;
+ count_send=0; total_samples=0;
file_pointer_position=0;
- // mc.printf("%d %d\n",current_file, bt_file_tosend);
- if(get_filepid()>get_btpid())
+
+ if(get_filepid()>get_btpid()) //check for pid and bluetooth pid by reading from file
{
send_initial_string();
state_rx = 1;
@@ -69,7 +64,7 @@
else
{
- state_rx =0;
+ state_rx =0; //no files to send
mc.printf("no file to send\n");
}
break;
@@ -77,11 +72,11 @@
case 2: total_samples=0;
file=sd_open_read(get_btpid());
- total_file_size=file_size() ; // determined the file size
- sd_read1(bt_file1); // read the sd card file
+ total_file_size=file_size() ; // determined the file size
+ sd_read1(bt_file1); // read the sd card file
mc.printf("sd file opened to read data in it\n");
- myBleMsg->bt_msg=bt_file1; //copy the contents to the structure
- send_structure(); // send the initial string
+ myBleMsg->bt_msg=bt_file1; //copy the contents to the structure
+ send_structure(); // send the structure string
blue.printf("\n");
mc.printf("sent initial string\n");
total_samples= myBleMsg->bt_msg.num_samples.num_sample_ppg_dummy+myBleMsg->bt_msg.num_samples.num_sample_ecg_OTtyp;
@@ -135,7 +130,7 @@
send_data_str2(check_sum);
}
- total_file_size_sent=file_size1();
+ total_file_size_sent=file_size1();
blue.printf("\n");
break;
@@ -182,14 +177,14 @@
uint8_t bt_receive (uint8_t state_rx)
{
- unsigned char state_tx =1; //state for transmitting
+unsigned char state_tx =1; //state for transmitting
uint8_t ack_rx=0; // varibale to receive ack from the bluetooth
uint8_t sos_rx=0; // sos received from app
uint8_t eos_rx=0; // eos received from app
uint32_t length_rx=0;
uint8_t chksum_rx=0;
- while (blue.readable())
+ while (blue.readable()) // reading from bluetooth app
{
blue.scanf("%02x", &sos_rx);
blue.scanf("%02x", &ack_rx);
@@ -206,7 +201,7 @@
case 1: // wait for the ack
state_rx=0;
myBleMsg->proto=ACK;
- if (ack_rx == ACK)
+ if ((ack_rx == ACK) && (chksum_rx == CHKSUM)) // check for ack and checksum
{
@@ -224,7 +219,7 @@
case 2: state_rx =0; //wait for the ack
- if (ack_rx == ACK)
+ if ((ack_rx == ACK) && (chksum_rx == CHKSUM))
{
state_tx=3;
@@ -245,12 +240,12 @@
case 3:
state_rx =0;
- if (ack_rx == ACK)
+ if ((ack_rx == ACK) && (chksum_rx == CHKSUM))
{
- state_tx=3;
+ state_tx=3;
count_send=count_send+1;
- file_pointer_position=total_file_size_sent;
+ file_pointer_position=total_file_size_sent;
}
else
@@ -266,11 +261,11 @@
case 4:
state_rx =0;
- if (ack_rx == ACK)
+ if ((ack_rx == ACK) && (chksum_rx == CHKSUM))
{
- state_tx=4;
+ state_tx=4;
count_send=count_send+1;
- file_pointer_position=total_file_size_sent;
+ file_pointer_position=total_file_size_sent;
}
else
@@ -285,10 +280,10 @@
case 5: state_rx = 0;
- if (ack_rx == ACK)
+ if ((ack_rx == ACK) && (chksum_rx == CHKSUM))
{
sd_close();
- increment_btpid();
+ increment_btpid(); // increment the bluetooth pid and write in the file
mc.printf("next file");
state_tx=1;
@@ -314,31 +309,31 @@
void send_structure() // function to send the structure to bluetooth
{
- myBleMsg->start_of_string=SOS;
- myBleMsg->length_file=26;
- myBleMsg->proto=DATA_TRFR; // data transfer mode
- blue.printf("%02x",myBleMsg->start_of_string);
- blue.printf("%02x",myBleMsg->proto);
- blue.printf("%08x",myBleMsg->length_file); //changed the sequence
- blue.printf("%08x",myBleMsg->bt_msg.length);
- blue.printf("%02x",myBleMsg->bt_msg.device_id);
- blue.printf("%08x",myBleMsg->bt_msg.patient_id);
- blue.printf("%02x",myBleMsg->bt_msg.date_time.date);
- blue.printf("%02x",myBleMsg->bt_msg.date_time.month);
- blue.printf("%02x",myBleMsg->bt_msg.date_time.year);
- blue.printf("%02x",myBleMsg->bt_msg.date_time.hour);
- blue.printf("%02x",myBleMsg->bt_msg.date_time.mins);
- blue.printf("%02x",myBleMsg->bt_msg.date_time.sec);
- blue.printf("%02x",myBleMsg->bt_msg.test_type);
- blue.printf("%04x",myBleMsg->bt_msg.sampling_freq);
- blue.printf("%04x",myBleMsg->bt_msg.num_samples. num_sample_ppg_dummy);
- blue.printf("%04x",myBleMsg->bt_msg.num_samples.num_sample_ecg_OTtyp);
- blue.printf("%04x",myBleMsg->bt_msg.cal_data.cal_sbp_dummy);
- blue.printf("%04x",myBleMsg->bt_msg.cal_data.cal_dbp_OTtyp); \
- myBleMsg->end_of_string=EOS;
- myBleMsg->chk_sum = checksum_struct((uint8_t *)myBleMsg, sizeof(Point));
- blue.printf("%02x",myBleMsg->end_of_string);
- blue.printf("%02x",myBleMsg->chk_sum);
+ myBleMsg->start_of_string=SOS;
+ myBleMsg->length_file = STRUCTURE_LENGTH;
+ myBleMsg->proto=DATA_TRFR; // data transfer mode
+ blue.printf("%02x",myBleMsg->start_of_string);
+ blue.printf("%02x",myBleMsg->proto);
+ blue.printf("%08x",myBleMsg->length_file); //changed the sequence
+ blue.printf("%08x",myBleMsg->bt_msg.length);
+ blue.printf("%02x",myBleMsg->bt_msg.device_id);
+ blue.printf("%08x",myBleMsg->bt_msg.patient_id);
+ blue.printf("%02x",myBleMsg->bt_msg.date_time.date);
+ blue.printf("%02x",myBleMsg->bt_msg.date_time.month);
+ blue.printf("%02x",myBleMsg->bt_msg.date_time.year);
+ blue.printf("%02x",myBleMsg->bt_msg.date_time.hour);
+ blue.printf("%02x",myBleMsg->bt_msg.date_time.mins);
+ blue.printf("%02x",myBleMsg->bt_msg.date_time.sec);
+ blue.printf("%02x",myBleMsg->bt_msg.test_type);
+ blue.printf("%04x",myBleMsg->bt_msg.sampling_freq);
+ blue.printf("%04x",myBleMsg->bt_msg.num_samples. num_sample_ppg_dummy);
+ blue.printf("%04x",myBleMsg->bt_msg.num_samples.num_sample_ecg_OTtyp);
+ blue.printf("%04x",myBleMsg->bt_msg.cal_data.cal_sbp_dummy);
+ blue.printf("%04x",myBleMsg->bt_msg.cal_data.cal_dbp_OTtyp);
+ myBleMsg->end_of_string=EOS;
+ myBleMsg->chk_sum = checksum_struct((uint8_t *)myBleMsg, sizeof(Point));
+ blue.printf("%02x",myBleMsg->end_of_string);
+ blue.printf("%02x",myBleMsg->chk_sum);
}
@@ -346,19 +341,18 @@
void send_initial_string() // function to send the initial string at the start f communication to bluetooth
{
- uint8_t sum_init=0 ;
- myBleMsg->start_of_string=SOS;
- myBleMsg->length_file=0;
- myBleMsg->proto=START_OF_FILE;
- // myBleMsg->bt_msg=NULL;
- sum_init=checksum_init();
- myBleMsg->chk_sum=sum_init;
- blue.printf("%02x",myBleMsg->start_of_string);
- blue.printf("%02x",myBleMsg->proto);
- blue.printf("%08x",myBleMsg->length_file); // chnged
- myBleMsg->end_of_string=EOS;
- blue.printf("%02x",myBleMsg->end_of_string);
- blue.printf("%02x",myBleMsg->chk_sum);
+ uint8_t sum_init=0 ;
+ myBleMsg->start_of_string=SOS;
+ myBleMsg->length_file=0;
+ myBleMsg->proto=START_OF_FILE;
+ sum_init=checksum_init();
+ myBleMsg->chk_sum=sum_init;
+ blue.printf("%02x",myBleMsg->start_of_string);
+ blue.printf("%02x",myBleMsg->proto);
+ blue.printf("%08x",myBleMsg->length_file); // chnged
+ myBleMsg->end_of_string=EOS;
+ blue.printf("%02x",myBleMsg->end_of_string);
+ blue.printf("%02x",myBleMsg->chk_sum);
}
@@ -366,70 +360,61 @@
uint8_t checksum_init() // function to calculate the checksum for the initial string
{
- uint32_t sum=0;
- uint8_t chksum_init=0;
+ uint32_t sum = 0;
+ uint8_t chksum_init = 0;
sum=SOS+EOS+START_OF_FILE;
- chksum_init=sum & 0x000000FF;
+ chksum_init = sum & 0x000000FF;
return chksum_init;
}
uint8_t checksum_last() // function to calculate the checksum for the last string
{
- uint32_t sum=0;
- uint8_t chksum_last=0;
+ uint32_t sum = 0;
+ uint8_t chksum_last = 0;
sum=SOS+EOS+END_OF_FILE; // changed //16/06 #define all the values removing structure
chksum_last=sum & 0x000000FF;
return chksum_last;
}
- void send_last_string() // function to send the last string to the bluetooth // which determines the end of file
+void send_last_string() // function to send the last string to the bluetooth // which determines the end of file
{
- uint8_t sum_last=0;
- myBleMsg->start_of_string=SOS;
- myBleMsg->length_file=0;
- myBleMsg->proto=END_OF_FILE;
- // myBleMsg->bt_msg=NULL;
- sum_last=checksum_last();
- myBleMsg->chk_sum=sum_last;
- blue.printf("%02x",myBleMsg->start_of_string);
- blue.printf("%02x",myBleMsg->proto);
- blue.printf("%08x",myBleMsg->length_file); // chnged
- mc.printf("%02x",myBleMsg->start_of_string);
- mc.printf("%02x",myBleMsg->proto);
- mc.printf("%08x",myBleMsg->length_file);
- myBleMsg->end_of_string=EOS;
- blue.printf("%02x",myBleMsg->end_of_string);
- blue.printf("%02x",myBleMsg->chk_sum);
- mc.printf("%02x",myBleMsg->end_of_string);
- mc.printf("%02x",myBleMsg->chk_sum);
-
- }
+ uint8_t sum_last=0;
+ myBleMsg->start_of_string = SOS;
+ myBleMsg->length_file = 0;
+ myBleMsg->proto=END_OF_FILE;
+ sum_last=checksum_last();
+ myBleMsg->chk_sum=sum_last;
+ blue.printf("%02x",myBleMsg->start_of_string);
+ blue.printf("%02x",myBleMsg->proto);
+ blue.printf("%08x",myBleMsg->length_file); // chnged
+ myBleMsg->end_of_string=EOS;
+ blue.printf("%02x",myBleMsg->end_of_string);
+ blue.printf("%02x",myBleMsg->chk_sum);
+
+}
- void send_data_str1() // function to send a part of the structure // after this raw data is sent//
- {
- myBleMsg->start_of_string=SOS;
- myBleMsg->length_file=(counter*4);
- myBleMsg->proto=DATA_TRFR;
- blue.printf("%02x",myBleMsg->start_of_string);
- blue.printf("%02x",myBleMsg->proto); // chnaged
- blue.printf("%08x",myBleMsg->length_file);
- mc.printf("%02x",myBleMsg->start_of_string);
- mc.printf("%02x",myBleMsg->proto); // chnaged
- mc.printf("%08x",myBleMsg->length_file);
- }
+void send_data_str1() // function to send a part of the structure // after this raw data is sent//
+{
+ myBleMsg->start_of_string=SOS;
+ myBleMsg->length_file=(counter*4);
+ myBleMsg->proto=DATA_TRFR;
+ blue.printf("%02x",myBleMsg->start_of_string);
+ blue.printf("%02x",myBleMsg->proto); // chnaged
+ blue.printf("%08x",myBleMsg->length_file);
+
+}
- void send_data_str2(uint8_t check_sum) // after raw data// this last part of structure is sent
- {
- myBleMsg->chk_sum=check_sum;
- myBleMsg->end_of_string=EOS;
- blue.printf("%02x",myBleMsg->end_of_string);
- blue.printf("%02x",myBleMsg->chk_sum);
- mc.printf("%02x",myBleMsg->end_of_string);
- mc.printf("%02x",myBleMsg->chk_sum);
- }
+void send_data_str2(uint8_t check_sum) // after raw data// this last part of structure is sent
+{
+ myBleMsg->chk_sum=check_sum;
+ myBleMsg->end_of_string=EOS;
+ blue.printf("%02x",myBleMsg->end_of_string);
+ blue.printf("%02x",myBleMsg->chk_sum);
+
+}
uint8_t checksum_struct(const uint8_t data[], uint16_t numBytes) // calculating checksum for
@@ -451,27 +436,26 @@
uint8_t checksum_rawdata(const uint8_t data[], uint32_t numBytes) // this function to calculate the checksum for the raw data
{
-uint32_t sum=0;
-uint8_t chksum_datatrfr=0;
-uint32_t index = 0;
-uint32_t index1 = 0;
+ uint32_t sum=0;
+ uint8_t chksum_datatrfr=0;
+ uint32_t index = 0;
+ uint32_t index1 = 0;
sum += SOS;
sum += DATA_TRFR;
- index1=(numBytes*4);
- sum +=(index1>>(8*0))&0xFF;
+ index1=(numBytes*4);
+ sum +=(index1>>(8*0))&0xFF;
sum +=(index1>>(8*1))&0xFF;
-for (index=0U; index<(numBytes*4); index++)
-{
+ for (index=0U; index<(numBytes*4); index++)
+ {
sum += data[index];
-
-}
+ }
- sum+=EOS;
+ sum+=EOS;
- chksum_datatrfr = sum & 0x000000FF;
+ chksum_datatrfr = sum & 0x000000FF;
//mc.printf("chksum_datatrfr=%02x\n",chksum_datatrfr);
- return chksum_datatrfr;
+ return chksum_datatrfr;
}
