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:
Wed Dec 06 12:47:30 2017 +0000
Revision:
72:1f990fa8c516
Parent:
71:8f1851c556d6
Child:
73:22e4f398a2a6
merged Sd card issue and eeprom issue

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nikitateggi 0:c47fb0c1bbf6 1 #include "mbed.h"
rashmivenkataramaiah 72:1f990fa8c516 2 //#include "display_modules.h"
rashmivenkataramaiah 72:1f990fa8c516 3 //#include "touch_modules.h"
nikitateggi 1:8316c23ec6b9 4 #include "ecg_dec.h"
rashmivenkataramaiah 72:1f990fa8c516 5 //#include "touch_modules.h"
nikitateggi 1:8316c23ec6b9 6 #include "glc.h"
nikitateggi 3:9a06c2bed650 7 #include "bp.h"
nikitateggi 1:8316c23ec6b9 8 #include "sdcard.h"
nikitateggi 4:6bd81bb1790d 9 #include "eeprom_pgm.h"
nikitateggi 19:1650bbc923cc 10 #include "struct.h"
nikitateggi 22:ffa88619551d 11 #include "battery.h"
rashmivenkataramaiah 57:e82d4bd6b2c0 12 #include "rtc.h"
rashmivenkataramaiah 41:1141a75eacc4 13 #include "main.h"
rashmivenkataramaiah 72:1f990fa8c516 14 #include "SDFileSystem.h"
nikitateggi 45:067673dae242 15
nikitateggi 45:067673dae242 16 #define TIMER_RXACK_BTCONNECTION 10000
nikitateggi 45:067673dae242 17 #define BATTERY_TIMER_VALUE 600000
nikitateggi 45:067673dae242 18 #define SERIAL_BAUD_RATE 115200
nikitateggi 45:067673dae242 19 #define BATTERY_SCREEN_NO_CHARGE_CONDITION 3
nikitateggi 49:3ff80c4bc1be 20 #define TIMER_ENTER_DEBUG_MODE 10000
rashmivenkataramaiah 57:e82d4bd6b2c0 21 #define HEARTBEAT_DATA_LEN 0x0Du
rashmivenkataramaiah 57:e82d4bd6b2c0 22 #define DEVICE_RESULT_DATA_LEN 0x04u
rashmivenkataramaiah 57:e82d4bd6b2c0 23 #define ZERO_DATA_LEN 0x00u
rashmivenkataramaiah 72:1f990fa8c516 24
nikitateggi 24:d992ee8369f4 25
rashmivenkataramaiah 57:e82d4bd6b2c0 26 typedef enum
rashmivenkataramaiah 57:e82d4bd6b2c0 27 {
rashmivenkataramaiah 66:d7fc45e328d0 28 HOME_SCREEN = 0x01U,
rashmivenkataramaiah 66:d7fc45e328d0 29 TEST_SCREEN
rashmivenkataramaiah 66:d7fc45e328d0 30 }DEVICE_STATE;
rashmivenkataramaiah 66:d7fc45e328d0 31 typedef enum
rashmivenkataramaiah 66:d7fc45e328d0 32 {
rashmivenkataramaiah 57:e82d4bd6b2c0 33 GET_TOUCH_DISP_STATE = 0x00U,
rashmivenkataramaiah 57:e82d4bd6b2c0 34 BT_TX_STATE,
rashmivenkataramaiah 57:e82d4bd6b2c0 35 BT_RX_STATE
nikitateggi 51:1a4693774b60 36
rashmivenkataramaiah 57:e82d4bd6b2c0 37 }DEVICE_MAIN_STATE;
rashmivenkataramaiah 57:e82d4bd6b2c0 38
rashmivenkataramaiah 57:e82d4bd6b2c0 39 // this helps to respond various status during test cycle, error condition and simple ack or nack
rashmivenkataramaiah 57:e82d4bd6b2c0 40 typedef struct __attribute__((__packed__))
rashmivenkataramaiah 57:e82d4bd6b2c0 41 {
rashmivenkataramaiah 57:e82d4bd6b2c0 42 uint8_t sos;
rashmivenkataramaiah 57:e82d4bd6b2c0 43 uint8_t cmd; // this contains error response
rashmivenkataramaiah 57:e82d4bd6b2c0 44 uint8_t length;
rashmivenkataramaiah 57:e82d4bd6b2c0 45 uint8_t eos;
rashmivenkataramaiah 57:e82d4bd6b2c0 46 uint8_t chksum;
rashmivenkataramaiah 57:e82d4bd6b2c0 47
rashmivenkataramaiah 57:e82d4bd6b2c0 48 }poc2p0_device_msg_response;
rashmivenkataramaiah 57:e82d4bd6b2c0 49
rashmivenkataramaiah 57:e82d4bd6b2c0 50 typedef struct __attribute__((__packed__))
rashmivenkataramaiah 57:e82d4bd6b2c0 51 {
rashmivenkataramaiah 57:e82d4bd6b2c0 52 uint8_t sos;
rashmivenkataramaiah 57:e82d4bd6b2c0 53 uint8_t cmd;
rashmivenkataramaiah 57:e82d4bd6b2c0 54 uint8_t length;
rashmivenkataramaiah 57:e82d4bd6b2c0 55 uint32_t test_result;
rashmivenkataramaiah 57:e82d4bd6b2c0 56 uint8_t eos;
rashmivenkataramaiah 57:e82d4bd6b2c0 57 uint8_t chksum;
rashmivenkataramaiah 57:e82d4bd6b2c0 58
rashmivenkataramaiah 57:e82d4bd6b2c0 59 }poc2p0_device_tst_result_response;
rashmivenkataramaiah 57:e82d4bd6b2c0 60
rashmivenkataramaiah 57:e82d4bd6b2c0 61 // this will be used for responding heart beat message
rashmivenkataramaiah 57:e82d4bd6b2c0 62 typedef struct __attribute__((__packed__))
rashmivenkataramaiah 57:e82d4bd6b2c0 63 {
rashmivenkataramaiah 57:e82d4bd6b2c0 64 uint8_t sos;
rashmivenkataramaiah 57:e82d4bd6b2c0 65 uint8_t cmd; // this contains error response
rashmivenkataramaiah 57:e82d4bd6b2c0 66 uint8_t length;
rashmivenkataramaiah 65:8acfba0ce49a 67 uint8_t did;
rashmivenkataramaiah 68:41da0a3ba038 68 char pid[10];
rashmivenkataramaiah 72:1f990fa8c516 69 //uint32_t pid;
rashmivenkataramaiah 65:8acfba0ce49a 70 DateTime_info date_time;
rashmivenkataramaiah 57:e82d4bd6b2c0 71 uint8_t device_state; //changed POC2P0_DEVICE_STATE to uint8_t
rashmivenkataramaiah 57:e82d4bd6b2c0 72 uint8_t battery_status;
rashmivenkataramaiah 57:e82d4bd6b2c0 73 uint8_t eos;
rashmivenkataramaiah 57:e82d4bd6b2c0 74 uint8_t chksum;
rashmivenkataramaiah 57:e82d4bd6b2c0 75
rashmivenkataramaiah 57:e82d4bd6b2c0 76 }poc2p0_device_heartbeat_response;
nikitateggi 51:1a4693774b60 77
rashmivenkataramaiah 72:1f990fa8c516 78 SDFileSystem sd(PTE1, PTE3, PTE2, PTE4, "sd");
nikitateggi 0:c47fb0c1bbf6 79 Serial gc(USBTX, USBRX);
nikitateggi 0:c47fb0c1bbf6 80 DigitalIn q1(PTB11);
nikitateggi 29:7edc76b15e3d 81 DigitalIn q(PTC5);
nikitateggi 29:7edc76b15e3d 82 DigitalIn q3(PTC12);
rashmivenkataramaiah 42:c81673b04b6a 83 DigitalIn BT(PTA5);
rashmivenkataramaiah 65:8acfba0ce49a 84 Serial blue1(PTC4,PTC3);
rashmivenkataramaiah 65:8acfba0ce49a 85
nikitateggi 44:05dbea558c9a 86 uint32_t get_timer_bluetooth();
nikitateggi 45:067673dae242 87 static void battery_status_monitoring(); //bluetooth status pin
nikitateggi 45:067673dae242 88 uint8_t touch(uint8_t state); // touch state
nikitateggi 45:067673dae242 89 uint8_t display(uint8_t state1); // display state
rashmivenkataramaiah 68:41da0a3ba038 90 static void set_userpid(char *user_pid);
rashmivenkataramaiah 72:1f990fa8c516 91 static void ecg_bp_countdown(void);
rashmivenkataramaiah 72:1f990fa8c516 92 static void read_device_id(void);
rashmivenkataramaiah 72:1f990fa8c516 93 void sd_card_status(void);
nikitateggi 45:067673dae242 94
rashmivenkataramaiah 42:c81673b04b6a 95 static uint8_t nstate=0;
nikitateggi 53:cc6e65480a67 96 static uint8_t nstate1=0;
rashmivenkataramaiah 43:85a7f399cb9d 97 static bool file_created_status = false; //initialise file created to 0
rashmivenkataramaiah 43:85a7f399cb9d 98 static uint32_t filepid_btpid[2] = {};
nikitateggi 45:067673dae242 99 Timer timer_bt; // timer for bluetooth
rashmivenkataramaiah 57:e82d4bd6b2c0 100 Timer timer_battery; // timer for battery
nikitateggi 51:1a4693774b60 101 Timer timer_debug; // timer for entering the debug mode
nikitateggi 54:f2a413d5dffd 102 static bool debug_mode=false; // holds the status of the debug mode "1" indicates the device is in debug mode
nikitateggi 51:1a4693774b60 103 char debug_message_rx[6]; // buffer to receive the debug message data
nikitateggi 51:1a4693774b60 104 char debug_message[6]={"debug"}; //debug message to be received
nikitateggi 51:1a4693774b60 105 void debug_status_monitoring(); // debug status monitoring
nikitateggi 54:f2a413d5dffd 106 static uint32_t pid = 0; // patient ID
rashmivenkataramaiah 65:8acfba0ce49a 107 static uint8_t state_touch = 1; //added on 16-NOV rashmi
rashmivenkataramaiah 69:128e3b467820 108 uint8_t buffer_pointer = 0x00u;
rashmivenkataramaiah 69:128e3b467820 109 static char user_pid[10];
rashmivenkataramaiah 72:1f990fa8c516 110 static uint8_t device_id = 0;
rashmivenkataramaiah 68:41da0a3ba038 111
rashmivenkataramaiah 41:1141a75eacc4 112 int main()
rashmivenkataramaiah 41:1141a75eacc4 113 {
rashmivenkataramaiah 57:e82d4bd6b2c0 114 static DEVICE_MAIN_STATE main_state = GET_TOUCH_DISP_STATE;
rashmivenkataramaiah 41:1141a75eacc4 115 static uint8_t state_display = 0;
rashmivenkataramaiah 64:5a76653792e8 116 //static uint8_t state_touch = 1; //commented on 16-NOV rashmi
nikitateggi 47:3716dd41dba6 117 uint8_t state_t = 1; // state to transmit to bluetooth
nikitateggi 47:3716dd41dba6 118 uint8_t state_r = 0; // state to receive from bluetooth
avp2417 37:92fcbf22bf91 119
rashmivenkataramaiah 72:1f990fa8c516 120 //DisableTouch();
rashmivenkataramaiah 41:1141a75eacc4 121 gc.baud(115200);
nikitateggi 47:3716dd41dba6 122 blue1.baud(115200);
rashmivenkataramaiah 72:1f990fa8c516 123 sd.disk_initialize();
rashmivenkataramaiah 72:1f990fa8c516 124 sd_card_status();
nikitateggi 54:f2a413d5dffd 125 pid = get_filepid() + 1; //added on 22/09/2017 nikita
rashmivenkataramaiah 72:1f990fa8c516 126 //screen_main(); // display of main screen
nikitateggi 45:067673dae242 127 battery_monitor(); // monitor battery at the start only
rashmivenkataramaiah 72:1f990fa8c516 128 //battery_status_display(); // display of main screen
nikitateggi 45:067673dae242 129 timer_battery.start();
nikitateggi 51:1a4693774b60 130 timer_debug.start();
nikitateggi 51:1a4693774b60 131 gc.printf("enter message to go into debug mode\n");
rashmivenkataramaiah 72:1f990fa8c516 132 read_device_id();
nikitateggi 0:c47fb0c1bbf6 133 while(1)
nikitateggi 0:c47fb0c1bbf6 134 {
nikitateggi 51:1a4693774b60 135
nikitateggi 54:f2a413d5dffd 136 if (read_debug_status() == false) // checking the debug_mode status
nikitateggi 51:1a4693774b60 137 {
nikitateggi 51:1a4693774b60 138 if(timer_debug.read_ms()<TIMER_ENTER_DEBUG_MODE)
nikitateggi 51:1a4693774b60 139 {
nikitateggi 51:1a4693774b60 140 debug_status_monitoring();
nikitateggi 51:1a4693774b60 141 }
nikitateggi 51:1a4693774b60 142 }
nikitateggi 51:1a4693774b60 143
nikitateggi 45:067673dae242 144 battery_status_monitoring(); // to monitior battery status after every 10 min.
nikitateggi 45:067673dae242 145
nikitateggi 45:067673dae242 146 if (get_battery_status() == BATTERY_SCREEN_NO_CHARGE_CONDITION) // to check battery status and take action
nikitateggi 45:067673dae242 147 {
rashmivenkataramaiah 72:1f990fa8c516 148 //DisableTouch();
nikitateggi 45:067673dae242 149 }
nikitateggi 45:067673dae242 150 else
nikitateggi 45:067673dae242 151 {
rashmivenkataramaiah 72:1f990fa8c516 152 //EnableTouch();
rashmivenkataramaiah 58:b75255e6e4c3 153 //gc.printf("c");
rashmivenkataramaiah 57:e82d4bd6b2c0 154 switch(main_state) // main state machine
nikitateggi 45:067673dae242 155 {
rashmivenkataramaiah 57:e82d4bd6b2c0 156 case GET_TOUCH_DISP_STATE:
rashmivenkataramaiah 57:e82d4bd6b2c0 157
rashmivenkataramaiah 57:e82d4bd6b2c0 158 state_display = poc2p0_bt_receive(state_touch);
rashmivenkataramaiah 57:e82d4bd6b2c0 159 //state_display = touch(state_touch); // touch state
rashmivenkataramaiah 72:1f990fa8c516 160 //gc.printf(" state_display = %d\n", state_display);
rashmivenkataramaiah 57:e82d4bd6b2c0 161 display(state_display); //display state
rashmivenkataramaiah 72:1f990fa8c516 162
rashmivenkataramaiah 72:1f990fa8c516 163 // if(state_display == 3)
rashmivenkataramaiah 72:1f990fa8c516 164 //{
rashmivenkataramaiah 72:1f990fa8c516 165 // display(15);
rashmivenkataramaiah 72:1f990fa8c516 166 //main_state = GET_TOUCH_DISP_STATE;
rashmivenkataramaiah 72:1f990fa8c516 167 // }
rashmivenkataramaiah 57:e82d4bd6b2c0 168 if(state_display == 12)
rashmivenkataramaiah 57:e82d4bd6b2c0 169 {
rashmivenkataramaiah 57:e82d4bd6b2c0 170 main_state = BT_TX_STATE;
rashmivenkataramaiah 57:e82d4bd6b2c0 171 }
rashmivenkataramaiah 72:1f990fa8c516 172 // else
rashmivenkataramaiah 72:1f990fa8c516 173 // display(state_display);
rashmivenkataramaiah 57:e82d4bd6b2c0 174
rashmivenkataramaiah 57:e82d4bd6b2c0 175 break;
avp2417 37:92fcbf22bf91 176
rashmivenkataramaiah 57:e82d4bd6b2c0 177 case BT_TX_STATE:
rashmivenkataramaiah 72:1f990fa8c516 178 //DisableTouch(); // bluetooth send
nikitateggi 45:067673dae242 179 timer_bt.start();
nikitateggi 45:067673dae242 180 if(get_timer_bluetooth()<TIMER_RXACK_BTCONNECTION) // bluetooth connection timer 15 sec
nikitateggi 45:067673dae242 181 {
nikitateggi 44:05dbea558c9a 182
nikitateggi 45:067673dae242 183 if(BT==1) // checking for bluetooth connection
nikitateggi 45:067673dae242 184 {
nikitateggi 44:05dbea558c9a 185
nikitateggi 45:067673dae242 186 timer_bt.stop(); // stop the timer once connected to app
nikitateggi 45:067673dae242 187 timer_bt.reset();
rashmivenkataramaiah 72:1f990fa8c516 188 //BT_connection() ; // displaying connection on bluetooth
rashmivenkataramaiah 72:1f990fa8c516 189 gc.printf(" BT Connected\n");
nikitateggi 44:05dbea558c9a 190 state_r=bt_send(state_t);
nikitateggi 45:067673dae242 191 timer_bt.start();
nikitateggi 47:3716dd41dba6 192 //gc.printf(" state_t = %d\n", state_t);
nikitateggi 48:f90edb35a20e 193 // gc.printf(" state_r = %d\n", state_r);
nikitateggi 44:05dbea558c9a 194 if (state_r==0) // if the state received is zero, then there is no new file to send
nikitateggi 45:067673dae242 195 {
nikitateggi 45:067673dae242 196 timer_bt.stop(); // stop the timer once connected to app
nikitateggi 45:067673dae242 197 timer_bt.reset();
rashmivenkataramaiah 72:1f990fa8c516 198 //BT_finished(); // screen to display communication finished
rashmivenkataramaiah 72:1f990fa8c516 199 //screen_BT_return(); //screen to return back
rashmivenkataramaiah 72:1f990fa8c516 200 gc.printf("BT Transfer Complete\n");
rashmivenkataramaiah 72:1f990fa8c516 201 //EnableTouch();
rashmivenkataramaiah 57:e82d4bd6b2c0 202 main_state=GET_TOUCH_DISP_STATE;
nikitateggi 45:067673dae242 203 state_touch=12;
nikitateggi 45:067673dae242 204 break;
nikitateggi 44:05dbea558c9a 205 }
nikitateggi 44:05dbea558c9a 206
nikitateggi 44:05dbea558c9a 207 else
nikitateggi 44:05dbea558c9a 208 {
rashmivenkataramaiah 57:e82d4bd6b2c0 209 main_state=BT_RX_STATE; // move to receving stste of bluetooth
nikitateggi 44:05dbea558c9a 210 }
nikitateggi 44:05dbea558c9a 211
nikitateggi 45:067673dae242 212 }
nikitateggi 44:05dbea558c9a 213
nikitateggi 45:067673dae242 214 else
nikitateggi 45:067673dae242 215 {
rashmivenkataramaiah 72:1f990fa8c516 216 //BT_no_connection(); // display screen to show that there is no connection
rashmivenkataramaiah 72:1f990fa8c516 217 gc.printf("BT No Connection\n");
nikitateggi 45:067673dae242 218 }
nikitateggi 45:067673dae242 219 }
nikitateggi 44:05dbea558c9a 220
nikitateggi 45:067673dae242 221 else
rashmivenkataramaiah 60:3bb9e9ba3205 222 {
rashmivenkataramaiah 60:3bb9e9ba3205 223 poc2p0_send_device_msg_res(MSG_REJECTED_RES); //added on 14-Nov by rashmi
rashmivenkataramaiah 72:1f990fa8c516 224 //BT_no_connection(); // display screen to show that there is no connection
nikitateggi 45:067673dae242 225 gc.printf("stopped");
rashmivenkataramaiah 72:1f990fa8c516 226 //screen_BT_return(); // button to return
rashmivenkataramaiah 72:1f990fa8c516 227 //EnableTouch();
rashmivenkataramaiah 57:e82d4bd6b2c0 228 main_state=GET_TOUCH_DISP_STATE;
nikitateggi 45:067673dae242 229 state_touch=12;
nikitateggi 49:3ff80c4bc1be 230 //sd_close();
nikitateggi 45:067673dae242 231 timer_bt.stop();
nikitateggi 45:067673dae242 232 timer_bt.reset();
nikitateggi 45:067673dae242 233 }
nikitateggi 45:067673dae242 234 break;
nikitateggi 19:1650bbc923cc 235
rashmivenkataramaiah 57:e82d4bd6b2c0 236 case BT_RX_STATE:
rashmivenkataramaiah 72:1f990fa8c516 237 //DisableTouch();
nikitateggi 44:05dbea558c9a 238
nikitateggi 45:067673dae242 239 if(get_timer_bluetooth()<TIMER_RXACK_BTCONNECTION)
nikitateggi 45:067673dae242 240 {
nikitateggi 45:067673dae242 241 if (blue1.readable()) // if there is data to receive enter the loop
nikitateggi 45:067673dae242 242 {
nikitateggi 46:162ed3f051b2 243
nikitateggi 46:162ed3f051b2 244 state_t=bt_receive(state_r);
nikitateggi 48:f90edb35a20e 245 // gc.printf(" state_t = %d\n", state_t);
nikitateggi 47:3716dd41dba6 246 // gc.printf(" state_r = %d\n", state_r);
nikitateggi 45:067673dae242 247 timer_bt.stop();
nikitateggi 45:067673dae242 248 timer_bt.reset();
nikitateggi 45:067673dae242 249 if(state_t ==0) // if state_t is zero, there is no other file to send
nikitateggi 45:067673dae242 250 {
nikitateggi 45:067673dae242 251
rashmivenkataramaiah 72:1f990fa8c516 252 //BT_finished();
rashmivenkataramaiah 72:1f990fa8c516 253 //screen_BT_return();
rashmivenkataramaiah 72:1f990fa8c516 254 gc.printf("BT Transfer Complete\n");
rashmivenkataramaiah 72:1f990fa8c516 255 //EnableTouch();
rashmivenkataramaiah 57:e82d4bd6b2c0 256 main_state=GET_TOUCH_DISP_STATE;
nikitateggi 45:067673dae242 257 state_touch=12; // jumping to touch case 12
nikitateggi 45:067673dae242 258 break;
nikitateggi 45:067673dae242 259 }
nikitateggi 45:067673dae242 260 else // move to bluetooth transmit if the states are 1,2,3,4
nikitateggi 45:067673dae242 261 {
rashmivenkataramaiah 57:e82d4bd6b2c0 262 main_state=BT_TX_STATE;
nikitateggi 45:067673dae242 263 }
nikitateggi 45:067673dae242 264 }
nikitateggi 45:067673dae242 265 }
nikitateggi 44:05dbea558c9a 266
nikitateggi 45:067673dae242 267 else
nikitateggi 45:067673dae242 268 {
rashmivenkataramaiah 72:1f990fa8c516 269 //DisableTouch();
rashmivenkataramaiah 72:1f990fa8c516 270 //BT_no_connection(); // display screen to show that there is no connection
nikitateggi 45:067673dae242 271 gc.printf("stopped");
rashmivenkataramaiah 72:1f990fa8c516 272 //screen_BT_return(); // button to return
rashmivenkataramaiah 72:1f990fa8c516 273 gc.printf("BT No Connection\n");
rashmivenkataramaiah 72:1f990fa8c516 274 //EnableTouch();
rashmivenkataramaiah 57:e82d4bd6b2c0 275 main_state=GET_TOUCH_DISP_STATE;
nikitateggi 45:067673dae242 276 state_touch=12;
nikitateggi 47:3716dd41dba6 277 state_t = 1; // state to transmit to bluetooth
nikitateggi 48:f90edb35a20e 278 state_r = 0; // state to receive from bluetooth
nikitateggi 46:162ed3f051b2 279 sd_close(); ///close the opened file which was used for bluetooth
nikitateggi 45:067673dae242 280 timer_bt.stop();
nikitateggi 45:067673dae242 281 timer_bt.reset();
nikitateggi 45:067673dae242 282 }
rashmivenkataramaiah 57:e82d4bd6b2c0 283 break;
rashmivenkataramaiah 57:e82d4bd6b2c0 284 default:
rashmivenkataramaiah 57:e82d4bd6b2c0 285 break;
nikitateggi 45:067673dae242 286 }
nikitateggi 45:067673dae242 287 }
nikitateggi 45:067673dae242 288 }
nikitateggi 45:067673dae242 289
nikitateggi 22:ffa88619551d 290 }
rashmivenkataramaiah 72:1f990fa8c516 291 /*uint8_t touch(uint8_t state)
nikitateggi 19:1650bbc923cc 292 {
nikitateggi 19:1650bbc923cc 293 static uint8_t state1=0;
rashmivenkataramaiah 41:1141a75eacc4 294 detect_touch(state); // determine the touch points
nikitateggi 1:8316c23ec6b9 295
rashmivenkataramaiah 41:1141a75eacc4 296 switch(state) // state for touch
nikitateggi 0:c47fb0c1bbf6 297 {
rashmivenkataramaiah 41:1141a75eacc4 298 case 1:
rashmivenkataramaiah 41:1141a75eacc4 299 state1=touch_main(); // determining the touch for main screen
nikitateggi 0:c47fb0c1bbf6 300 state=0;
nikitateggi 1:8316c23ec6b9 301 nstate1=state1;
rashmivenkataramaiah 41:1141a75eacc4 302 break;
nikitateggi 0:c47fb0c1bbf6 303
nikitateggi 0:c47fb0c1bbf6 304 case 2:
rashmivenkataramaiah 41:1141a75eacc4 305 state1=touch_main_1(); // determining the touch for SYSTEM CONFIGURATION screen
nikitateggi 0:c47fb0c1bbf6 306 state=0;
nikitateggi 3:9a06c2bed650 307 nstate1=state1;
nikitateggi 0:c47fb0c1bbf6 308 break;
nikitateggi 0:c47fb0c1bbf6 309
nikitateggi 0:c47fb0c1bbf6 310 case 3:
rashmivenkataramaiah 41:1141a75eacc4 311 state1=touch_main_2(); // determining the touch for TEST screen
nikitateggi 0:c47fb0c1bbf6 312 state=0;
nikitateggi 1:8316c23ec6b9 313 nstate1=state1;
nikitateggi 0:c47fb0c1bbf6 314 break;
nikitateggi 0:c47fb0c1bbf6 315
nikitateggi 0:c47fb0c1bbf6 316 case 4:
rashmivenkataramaiah 41:1141a75eacc4 317 state1=touch_glc(); // determining the touch for GLC screen
nikitateggi 1:8316c23ec6b9 318 state=0;
nikitateggi 1:8316c23ec6b9 319 nstate1=state1;
nikitateggi 1:8316c23ec6b9 320 break;
nikitateggi 1:8316c23ec6b9 321
nikitateggi 1:8316c23ec6b9 322 case 5:
rashmivenkataramaiah 41:1141a75eacc4 323 state1=touch_ecg(); // determining the touch for ECG screen
nikitateggi 1:8316c23ec6b9 324 state=0;
nikitateggi 3:9a06c2bed650 325 nstate1=state1;
nikitateggi 3:9a06c2bed650 326 break;
nikitateggi 4:6bd81bb1790d 327 case 6:
rashmivenkataramaiah 41:1141a75eacc4 328 state1=touch_ret(); // determining the touch for returning back to the main screen
nikitateggi 0:c47fb0c1bbf6 329 state=0;
nikitateggi 3:9a06c2bed650 330 nstate1=state1;
nikitateggi 1:8316c23ec6b9 331 break;
nikitateggi 1:8316c23ec6b9 332
nikitateggi 4:6bd81bb1790d 333 case 7:
rashmivenkataramaiah 41:1141a75eacc4 334 state1=touch_again_ecg(); // determining the touch when readings are taken more than once screen
nikitateggi 1:8316c23ec6b9 335 state=0;
nikitateggi 1:8316c23ec6b9 336 nstate1=state1;
nikitateggi 1:8316c23ec6b9 337 break;
nikitateggi 0:c47fb0c1bbf6 338
nikitateggi 3:9a06c2bed650 339 case 8:
rashmivenkataramaiah 41:1141a75eacc4 340 state1=touch_bp(); // determining the touch for BP screen
nikitateggi 3:9a06c2bed650 341 state=0;
nikitateggi 3:9a06c2bed650 342 nstate1=state1;
nikitateggi 3:9a06c2bed650 343 break;
nikitateggi 3:9a06c2bed650 344
rashmivenkataramaiah 41:1141a75eacc4 345 case 9:
rashmivenkataramaiah 41:1141a75eacc4 346 state1=touch_again_glc();
suhasini 5:a3ea7c82b7e1 347 state=0;
suhasini 5:a3ea7c82b7e1 348 nstate1=state1;
suhasini 5:a3ea7c82b7e1 349 break;
nikitateggi 3:9a06c2bed650 350
rashmivenkataramaiah 41:1141a75eacc4 351 case 10 :
rashmivenkataramaiah 41:1141a75eacc4 352 DisableTouch();
rashmivenkataramaiah 41:1141a75eacc4 353 wait_ms(300);
rashmivenkataramaiah 41:1141a75eacc4 354 EnableTouch();
rashmivenkataramaiah 41:1141a75eacc4 355 state=nstate;
rashmivenkataramaiah 41:1141a75eacc4 356 break;
suhasini 5:a3ea7c82b7e1 357
rashmivenkataramaiah 57:e82d4bd6b2c0 358
rashmivenkataramaiah 41:1141a75eacc4 359 case 11:
rashmivenkataramaiah 41:1141a75eacc4 360 state1=touch_again_bp();
rashmivenkataramaiah 41:1141a75eacc4 361 state=0;
rashmivenkataramaiah 41:1141a75eacc4 362 nstate1=state1;
rashmivenkataramaiah 41:1141a75eacc4 363 break;
suhasini 5:a3ea7c82b7e1 364
rashmivenkataramaiah 41:1141a75eacc4 365 case 12:
rashmivenkataramaiah 41:1141a75eacc4 366 state1=BT_return();
rashmivenkataramaiah 41:1141a75eacc4 367 state=0;
rashmivenkataramaiah 41:1141a75eacc4 368 nstate1=state1;
rashmivenkataramaiah 41:1141a75eacc4 369 break;
nikitateggi 49:3ff80c4bc1be 370
nikitateggi 49:3ff80c4bc1be 371 case 13:
nikitateggi 49:3ff80c4bc1be 372 state1 = touch_debug(); //touch state for debug
nikitateggi 49:3ff80c4bc1be 373 //state=0;
nikitateggi 49:3ff80c4bc1be 374 nstate1=state1;
nikitateggi 49:3ff80c4bc1be 375 break;
rashmivenkataramaiah 41:1141a75eacc4 376 default :
rashmivenkataramaiah 41:1141a75eacc4 377 DisableTouch();
rashmivenkataramaiah 41:1141a75eacc4 378 wait_ms(300);
rashmivenkataramaiah 41:1141a75eacc4 379 EnableTouch();
rashmivenkataramaiah 41:1141a75eacc4 380 state=nstate;
rashmivenkataramaiah 41:1141a75eacc4 381 break;
nikitateggi 1:8316c23ec6b9 382
nikitateggi 0:c47fb0c1bbf6 383 }
nikitateggi 0:c47fb0c1bbf6 384
rashmivenkataramaiah 41:1141a75eacc4 385 return state1;
rashmivenkataramaiah 72:1f990fa8c516 386 }*/
nikitateggi 0:c47fb0c1bbf6 387
nikitateggi 0:c47fb0c1bbf6 388
nikitateggi 19:1650bbc923cc 389 uint8_t display(uint8_t state1)
nikitateggi 19:1650bbc923cc 390 {
rashmivenkataramaiah 41:1141a75eacc4 391 static uint8_t state=0;
rashmivenkataramaiah 41:1141a75eacc4 392 static uint8_t ecg_flag=0; // ecg_flag to indicate the ecg test is already done for the same pid
rashmivenkataramaiah 41:1141a75eacc4 393 static uint8_t glc_flag=0; // glc_flag to indicate the glc test is already done for the same pid
rashmivenkataramaiah 61:ce5ad0838227 394 //uint16_t heart_rate=0;
rashmivenkataramaiah 67:7e07cdb1b150 395
rashmivenkataramaiah 64:5a76653792e8 396 switch(state1) // state for display screens
rashmivenkataramaiah 41:1141a75eacc4 397 {
nikitateggi 4:6bd81bb1790d 398
nikitateggi 1:8316c23ec6b9 399
rashmivenkataramaiah 41:1141a75eacc4 400 case 1:
rashmivenkataramaiah 72:1f990fa8c516 401 //DisableTouch();
rashmivenkataramaiah 72:1f990fa8c516 402 //screen_main(); // main screen
nikitateggi 1:8316c23ec6b9 403 state1=0;
nikitateggi 1:8316c23ec6b9 404 state=1;
nikitateggi 1:8316c23ec6b9 405 nstate=state;
rashmivenkataramaiah 64:5a76653792e8 406 ecg_flag=0; // ecg, glc flag to determine whether the readings are taken more than once
nikitateggi 1:8316c23ec6b9 407 glc_flag=0;
rashmivenkataramaiah 41:1141a75eacc4 408 clear_filecreated_status();
rashmivenkataramaiah 72:1f990fa8c516 409 //battery_status_display(); //Display battery status on LCD
nikitateggi 53:cc6e65480a67 410 pid = get_filepid() + 1;
rashmivenkataramaiah 64:5a76653792e8 411 state_touch = TOUCH_STATE_HOME_SCREEN; //added on 16-Nov rashmi
rashmivenkataramaiah 72:1f990fa8c516 412 //EnableTouch();
nikitateggi 1:8316c23ec6b9 413 break;
nikitateggi 1:8316c23ec6b9 414
rashmivenkataramaiah 41:1141a75eacc4 415 case 2:
rashmivenkataramaiah 72:1f990fa8c516 416 //DisableTouch();
rashmivenkataramaiah 72:1f990fa8c516 417 //screen_main_1(); // System configration screen
nikitateggi 0:c47fb0c1bbf6 418 state1=0;
nikitateggi 0:c47fb0c1bbf6 419 state=2;
nikitateggi 1:8316c23ec6b9 420 nstate=state;
rashmivenkataramaiah 72:1f990fa8c516 421 //battery_status_display(); //Display battery status on LCD
rashmivenkataramaiah 72:1f990fa8c516 422 //EnableTouch();
nikitateggi 51:1a4693774b60 423 // timer_debug.stop();
nikitateggi 0:c47fb0c1bbf6 424 break;
nikitateggi 0:c47fb0c1bbf6 425
rashmivenkataramaiah 41:1141a75eacc4 426 case 3:
rashmivenkataramaiah 72:1f990fa8c516 427 //DisableTouch();
nikitateggi 19:1650bbc923cc 428 gc.printf("pidinit=%d",pid);
rashmivenkataramaiah 72:1f990fa8c516 429 //screen_main_2(pid);
rashmivenkataramaiah 41:1141a75eacc4 430 state1=0;
rashmivenkataramaiah 41:1141a75eacc4 431 state=3;
rashmivenkataramaiah 41:1141a75eacc4 432 nstate=state;
rashmivenkataramaiah 72:1f990fa8c516 433 //battery_status_display();
rashmivenkataramaiah 64:5a76653792e8 434 state_touch = TOUCH_STATE_TEST_SCREEN; //added on 16-Nov rashmi
rashmivenkataramaiah 72:1f990fa8c516 435 //EnableTouch();
rashmivenkataramaiah 41:1141a75eacc4 436 break;
nikitateggi 0:c47fb0c1bbf6 437
rashmivenkataramaiah 41:1141a75eacc4 438 case 4:
rashmivenkataramaiah 72:1f990fa8c516 439 //DisableTouch();
rashmivenkataramaiah 41:1141a75eacc4 440 if (glc_flag==1) // glc_flag=1 when already the reading has been taken
rashmivenkataramaiah 41:1141a75eacc4 441 {
rashmivenkataramaiah 72:1f990fa8c516 442 //screen_again();
rashmivenkataramaiah 41:1141a75eacc4 443 state1=0;
rashmivenkataramaiah 41:1141a75eacc4 444 state=9;
rashmivenkataramaiah 41:1141a75eacc4 445 nstate=state;
rashmivenkataramaiah 41:1141a75eacc4 446 }
rashmivenkataramaiah 41:1141a75eacc4 447 else
nikitateggi 19:1650bbc923cc 448 {
rashmivenkataramaiah 72:1f990fa8c516 449 //screen_glc(); // glc screen
rashmivenkataramaiah 41:1141a75eacc4 450 state1=0;
rashmivenkataramaiah 41:1141a75eacc4 451 state=4;
rashmivenkataramaiah 41:1141a75eacc4 452 nstate=state;
rashmivenkataramaiah 41:1141a75eacc4 453 }
rashmivenkataramaiah 72:1f990fa8c516 454 //EnableTouch();
nikitateggi 3:9a06c2bed650 455
nikitateggi 0:c47fb0c1bbf6 456 break;
nikitateggi 1:8316c23ec6b9 457
nikitateggi 1:8316c23ec6b9 458
rashmivenkataramaiah 41:1141a75eacc4 459 case 5:
rashmivenkataramaiah 72:1f990fa8c516 460 // DisableTouch();
rashmivenkataramaiah 41:1141a75eacc4 461 if (ecg_flag==1)
rashmivenkataramaiah 41:1141a75eacc4 462 {
rashmivenkataramaiah 72:1f990fa8c516 463 //screen_again();
rashmivenkataramaiah 41:1141a75eacc4 464 state1=0;
rashmivenkataramaiah 41:1141a75eacc4 465 state=7;
nikitateggi 1:8316c23ec6b9 466 nstate=state;
rashmivenkataramaiah 41:1141a75eacc4 467 }
rashmivenkataramaiah 41:1141a75eacc4 468
rashmivenkataramaiah 41:1141a75eacc4 469 else
rashmivenkataramaiah 41:1141a75eacc4 470 {
rashmivenkataramaiah 72:1f990fa8c516 471 //screen_ecg(); //ecg main screen
rashmivenkataramaiah 41:1141a75eacc4 472 state1=0;
rashmivenkataramaiah 41:1141a75eacc4 473 state=5;
nikitateggi 1:8316c23ec6b9 474 nstate=state;
rashmivenkataramaiah 41:1141a75eacc4 475 }
rashmivenkataramaiah 72:1f990fa8c516 476 //EnableTouch();
nikitateggi 1:8316c23ec6b9 477 break;
nikitateggi 1:8316c23ec6b9 478
rashmivenkataramaiah 41:1141a75eacc4 479 case 6:
rashmivenkataramaiah 72:1f990fa8c516 480 //DisableTouch();
rashmivenkataramaiah 72:1f990fa8c516 481 //screen_bp(); // bp main screen
nikitateggi 3:9a06c2bed650 482 state1=0;
nikitateggi 3:9a06c2bed650 483 state=8;
rashmivenkataramaiah 41:1141a75eacc4 484 nstate=state;
rashmivenkataramaiah 72:1f990fa8c516 485 //EnableTouch();
nikitateggi 3:9a06c2bed650 486 break;
nikitateggi 3:9a06c2bed650 487
rashmivenkataramaiah 41:1141a75eacc4 488 case 7:
rashmivenkataramaiah 72:1f990fa8c516 489 //DisableTouch();
rashmivenkataramaiah 41:1141a75eacc4 490 glc(pid); // glc measurement
nikitateggi 1:8316c23ec6b9 491 glc_flag=1;
nikitateggi 4:6bd81bb1790d 492 state1=0;
rashmivenkataramaiah 72:1f990fa8c516 493 //screen_glc_2();
rashmivenkataramaiah 41:1141a75eacc4 494 state=6;
rashmivenkataramaiah 41:1141a75eacc4 495 eprom_write_8(30,0);
rashmivenkataramaiah 62:7d2a844ed639 496 nstate=state;
rashmivenkataramaiah 66:d7fc45e328d0 497 //wait(2); //added on 16-NOV rashmi
rashmivenkataramaiah 72:1f990fa8c516 498 //screen_main_2(pid); //added on 20-NOV rashmi
rashmivenkataramaiah 64:5a76653792e8 499 state_touch = TOUCH_STATE_TEST_SCREEN; //added on 16-Nov rashmi
rashmivenkataramaiah 72:1f990fa8c516 500 //EnableTouch();
nikitateggi 1:8316c23ec6b9 501 break;
nikitateggi 1:8316c23ec6b9 502
rashmivenkataramaiah 72:1f990fa8c516 503 case 8: // DisableTouch();
rashmivenkataramaiah 57:e82d4bd6b2c0 504 // send ECG test in progress messages to mobile application
rashmivenkataramaiah 57:e82d4bd6b2c0 505 poc2p0_send_device_msg_res(ECG_TEST_IN_PROGRESS_RES);
rashmivenkataramaiah 72:1f990fa8c516 506 //ecg_countdown(); // countdown before ecg capture
rashmivenkataramaiah 72:1f990fa8c516 507 ecg_bp_countdown();
rashmivenkataramaiah 61:ce5ad0838227 508 ecg(pid); // capturing ecg
nikitateggi 1:8316c23ec6b9 509 state1=0;
rashmivenkataramaiah 61:ce5ad0838227 510 ecg_flag=1;
nikitateggi 1:8316c23ec6b9 511 state=6;
nikitateggi 24:d992ee8369f4 512 eprom_write_8(30,1);
nikitateggi 20:7c64e6ecad76 513 nstate=state;
rashmivenkataramaiah 72:1f990fa8c516 514 //screen_ecg_bp();
rashmivenkataramaiah 66:d7fc45e328d0 515 //wait(2); //added on 16-NOV rashmi
rashmivenkataramaiah 72:1f990fa8c516 516 //screen_main_2(pid); //added on 20-NOV rashmi
rashmivenkataramaiah 64:5a76653792e8 517 state_touch = TOUCH_STATE_TEST_SCREEN; //added on 16-Nov rashmi
rashmivenkataramaiah 72:1f990fa8c516 518 //EnableTouch();
nikitateggi 1:8316c23ec6b9 519 break;
rashmivenkataramaiah 41:1141a75eacc4 520
rashmivenkataramaiah 57:e82d4bd6b2c0 521 case 9:
rashmivenkataramaiah 72:1f990fa8c516 522 //DisableTouch();
rashmivenkataramaiah 72:1f990fa8c516 523 //screen_bp2(); // bp main screen
rashmivenkataramaiah 66:d7fc45e328d0 524
rashmivenkataramaiah 57:e82d4bd6b2c0 525 // send BP test in progress response to mobile application
rashmivenkataramaiah 57:e82d4bd6b2c0 526 poc2p0_send_device_msg_res(BP_TEST_IN_PROGRESS_RES);
rashmivenkataramaiah 57:e82d4bd6b2c0 527
rashmivenkataramaiah 72:1f990fa8c516 528 //bp_countdown(); // countdown for bp
rashmivenkataramaiah 72:1f990fa8c516 529 ecg_bp_countdown();
rashmivenkataramaiah 41:1141a75eacc4 530 bp(pid); // measuring bp earlier bp() changed to bp(pid) 28/4/2017
nikitateggi 3:9a06c2bed650 531 state1=0;
nikitateggi 3:9a06c2bed650 532 state=6;
nikitateggi 24:d992ee8369f4 533 eprom_write_8(30,2);
nikitateggi 3:9a06c2bed650 534 nstate=state;
rashmivenkataramaiah 66:d7fc45e328d0 535 //wait(2); //added on 16-NOV rashmi
rashmivenkataramaiah 72:1f990fa8c516 536 //screen_main_2(pid); //added on 20-NOV rashmi
rashmivenkataramaiah 64:5a76653792e8 537 state_touch = TOUCH_STATE_TEST_SCREEN; //added on 16-Nov rashmi
rashmivenkataramaiah 72:1f990fa8c516 538 //EnableTouch();
nikitateggi 3:9a06c2bed650 539 break;
nikitateggi 31:0f67acfc6236 540
nikitateggi 31:0f67acfc6236 541
rashmivenkataramaiah 72:1f990fa8c516 542 case 10 : //DisableTouch();
nikitateggi 31:0f67acfc6236 543 wait_ms(300);
rashmivenkataramaiah 72:1f990fa8c516 544 //EnableTouch();
nikitateggi 31:0f67acfc6236 545 state=nstate;
nikitateggi 31:0f67acfc6236 546 break;
nikitateggi 31:0f67acfc6236 547
rashmivenkataramaiah 41:1141a75eacc4 548 case 11 :
rashmivenkataramaiah 72:1f990fa8c516 549 //DisableTouch();
rashmivenkataramaiah 72:1f990fa8c516 550 //screen_patient_info(get_filepid(), get_btpid());
rashmivenkataramaiah 41:1141a75eacc4 551 state1=0;
rashmivenkataramaiah 41:1141a75eacc4 552 state=12;
rashmivenkataramaiah 72:1f990fa8c516 553 //EnableTouch();
nikitateggi 49:3ff80c4bc1be 554 break;
nikitateggi 49:3ff80c4bc1be 555
nikitateggi 49:3ff80c4bc1be 556 case 13 : //display screen for debug
rashmivenkataramaiah 72:1f990fa8c516 557 // DisableTouch();
rashmivenkataramaiah 72:1f990fa8c516 558 //screen_debug();
nikitateggi 49:3ff80c4bc1be 559 state1=0;
nikitateggi 49:3ff80c4bc1be 560 state=13;
nikitateggi 49:3ff80c4bc1be 561 nstate=state;
rashmivenkataramaiah 72:1f990fa8c516 562 // EnableTouch();
nikitateggi 49:3ff80c4bc1be 563 break;
nikitateggi 49:3ff80c4bc1be 564
nikitateggi 49:3ff80c4bc1be 565 case 14 :
rashmivenkataramaiah 72:1f990fa8c516 566 //DisableTouch(); //state to delete SD card
nikitateggi 49:3ff80c4bc1be 567 delete_sdcard();
rashmivenkataramaiah 72:1f990fa8c516 568 //screen_sdcard_delete();
nikitateggi 49:3ff80c4bc1be 569 state1=0;
nikitateggi 49:3ff80c4bc1be 570 state= 12;
nikitateggi 49:3ff80c4bc1be 571 nstate=state;
rashmivenkataramaiah 72:1f990fa8c516 572 //EnableTouch();
nikitateggi 49:3ff80c4bc1be 573 break;
nikitateggi 49:3ff80c4bc1be 574
nikitateggi 49:3ff80c4bc1be 575 case 15 :
rashmivenkataramaiah 72:1f990fa8c516 576 // DisableTouch();
nikitateggi 51:1a4693774b60 577 gc.printf("Total Patients' data available : %d\n",get_filepid()); //state to read SD card
nikitateggi 50:b42238e7f46d 578 gc.printf("Enter the PID number");
nikitateggi 50:b42238e7f46d 579 read_sdcard_file();
rashmivenkataramaiah 72:1f990fa8c516 580 //screen_sdcard_read();
nikitateggi 49:3ff80c4bc1be 581 state1=0;
nikitateggi 49:3ff80c4bc1be 582 state= 12;
nikitateggi 49:3ff80c4bc1be 583 nstate=state;
rashmivenkataramaiah 72:1f990fa8c516 584 // EnableTouch();
nikitateggi 49:3ff80c4bc1be 585 break;
nikitateggi 31:0f67acfc6236 586
nikitateggi 1:8316c23ec6b9 587 default :
rashmivenkataramaiah 57:e82d4bd6b2c0 588
nikitateggi 1:8316c23ec6b9 589 state1=nstate1;
rashmivenkataramaiah 57:e82d4bd6b2c0 590 break;
rashmivenkataramaiah 57:e82d4bd6b2c0 591
rashmivenkataramaiah 57:e82d4bd6b2c0 592
nikitateggi 0:c47fb0c1bbf6 593 }
rashmivenkataramaiah 57:e82d4bd6b2c0 594
rashmivenkataramaiah 57:e82d4bd6b2c0 595
rashmivenkataramaiah 57:e82d4bd6b2c0 596
rashmivenkataramaiah 41:1141a75eacc4 597 return state;
rashmivenkataramaiah 57:e82d4bd6b2c0 598
rashmivenkataramaiah 41:1141a75eacc4 599 }
rashmivenkataramaiah 41:1141a75eacc4 600
rashmivenkataramaiah 41:1141a75eacc4 601
rashmivenkataramaiah 41:1141a75eacc4 602 bool get_filecreated_status(void) //function to get file created status
rashmivenkataramaiah 41:1141a75eacc4 603 {
rashmivenkataramaiah 41:1141a75eacc4 604 return file_created_status;
rashmivenkataramaiah 41:1141a75eacc4 605 }
rashmivenkataramaiah 41:1141a75eacc4 606
rashmivenkataramaiah 41:1141a75eacc4 607 void set_filecreated_status(void) //function to set file created status
rashmivenkataramaiah 41:1141a75eacc4 608 {
rashmivenkataramaiah 42:c81673b04b6a 609 file_created_status = true;
rashmivenkataramaiah 41:1141a75eacc4 610 }
rashmivenkataramaiah 41:1141a75eacc4 611
rashmivenkataramaiah 41:1141a75eacc4 612
rashmivenkataramaiah 41:1141a75eacc4 613 void clear_filecreated_status(void) //function to clear file created status
rashmivenkataramaiah 41:1141a75eacc4 614 {
rashmivenkataramaiah 42:c81673b04b6a 615 file_created_status = false;
rashmivenkataramaiah 42:c81673b04b6a 616 }
rashmivenkataramaiah 42:c81673b04b6a 617
rashmivenkataramaiah 43:85a7f399cb9d 618 void increment_filepid (void) //increment pid if a test is completed
rashmivenkataramaiah 42:c81673b04b6a 619 {
rashmivenkataramaiah 43:85a7f399cb9d 620 //uint32_t filepid_btpid[2] = {};
rashmivenkataramaiah 42:c81673b04b6a 621
rashmivenkataramaiah 42:c81673b04b6a 622 //set_filecreated_status(); //set it to make it append mode
rashmivenkataramaiah 42:c81673b04b6a 623 sd_read(filepid_btpid); //read pid from sd card
rashmivenkataramaiah 42:c81673b04b6a 624 filepid_btpid[0] = filepid_btpid[0] + 1; //increment it by 1
rashmivenkataramaiah 42:c81673b04b6a 625 sd_write(filepid_btpid); //write it back to sd card
rashmivenkataramaiah 42:c81673b04b6a 626
rashmivenkataramaiah 42:c81673b04b6a 627 }
rashmivenkataramaiah 42:c81673b04b6a 628
rashmivenkataramaiah 43:85a7f399cb9d 629 void increment_btpid (void) //increment pid if a test is completed
rashmivenkataramaiah 43:85a7f399cb9d 630 {
rashmivenkataramaiah 43:85a7f399cb9d 631 //uint32_t filepid_btpid[2] = {};
rashmivenkataramaiah 43:85a7f399cb9d 632
rashmivenkataramaiah 43:85a7f399cb9d 633 //set_filecreated_status(); //set it to make it append mode
rashmivenkataramaiah 43:85a7f399cb9d 634 sd_read(filepid_btpid); //read pid from sd card
nikitateggi 45:067673dae242 635 filepid_btpid[1] = filepid_btpid[1] + 1; //increment it by 1
rashmivenkataramaiah 43:85a7f399cb9d 636 sd_write(filepid_btpid); //write it back to sd card
rashmivenkataramaiah 43:85a7f399cb9d 637
rashmivenkataramaiah 43:85a7f399cb9d 638 }
rashmivenkataramaiah 43:85a7f399cb9d 639
rashmivenkataramaiah 42:c81673b04b6a 640 uint32_t get_filepid(void)
rashmivenkataramaiah 42:c81673b04b6a 641 {
rashmivenkataramaiah 42:c81673b04b6a 642 //uint32_t filepid_btpid[2] = {};
rashmivenkataramaiah 42:c81673b04b6a 643 uint32_t filepid = 0;
rashmivenkataramaiah 42:c81673b04b6a 644
rashmivenkataramaiah 42:c81673b04b6a 645 sd_read(filepid_btpid); //read pid from sd card
nikitateggi 45:067673dae242 646 filepid = filepid_btpid[0];
rashmivenkataramaiah 42:c81673b04b6a 647 return filepid;
rashmivenkataramaiah 42:c81673b04b6a 648
rashmivenkataramaiah 42:c81673b04b6a 649 }
rashmivenkataramaiah 42:c81673b04b6a 650
rashmivenkataramaiah 42:c81673b04b6a 651 void store_filepid(uint32_t pid)
rashmivenkataramaiah 42:c81673b04b6a 652 {
rashmivenkataramaiah 42:c81673b04b6a 653 //uint32_t filepid_btpid[2] = {};
rashmivenkataramaiah 42:c81673b04b6a 654 sd_read(filepid_btpid); //read pid from sd card
rashmivenkataramaiah 42:c81673b04b6a 655 filepid_btpid[0] = pid;
rashmivenkataramaiah 42:c81673b04b6a 656 sd_write(filepid_btpid); //write it back to sd card
rashmivenkataramaiah 42:c81673b04b6a 657
rashmivenkataramaiah 42:c81673b04b6a 658 }
rashmivenkataramaiah 42:c81673b04b6a 659
rashmivenkataramaiah 42:c81673b04b6a 660 uint32_t get_btpid(void)
rashmivenkataramaiah 42:c81673b04b6a 661 {
rashmivenkataramaiah 42:c81673b04b6a 662 //uint32_t filepid_btpid[2] = {};
rashmivenkataramaiah 42:c81673b04b6a 663 uint32_t btpid = 0;
rashmivenkataramaiah 42:c81673b04b6a 664
rashmivenkataramaiah 42:c81673b04b6a 665 sd_read(filepid_btpid); //read pid from sd card
nikitateggi 45:067673dae242 666 btpid = filepid_btpid[1];
rashmivenkataramaiah 42:c81673b04b6a 667 return btpid;
rashmivenkataramaiah 42:c81673b04b6a 668
rashmivenkataramaiah 42:c81673b04b6a 669 }
rashmivenkataramaiah 42:c81673b04b6a 670
rashmivenkataramaiah 42:c81673b04b6a 671 void store_btpid(uint32_t bt_pid)
rashmivenkataramaiah 42:c81673b04b6a 672 {
rashmivenkataramaiah 42:c81673b04b6a 673 //uint32_t filepid_btpid[2] = {};
rashmivenkataramaiah 42:c81673b04b6a 674
rashmivenkataramaiah 42:c81673b04b6a 675 sd_read(filepid_btpid); //read pid from sd card
rashmivenkataramaiah 42:c81673b04b6a 676 filepid_btpid[1] = bt_pid;
rashmivenkataramaiah 42:c81673b04b6a 677 sd_write(filepid_btpid); //write it back to sd card
rashmivenkataramaiah 42:c81673b04b6a 678
rashmivenkataramaiah 42:c81673b04b6a 679 }
rashmivenkataramaiah 42:c81673b04b6a 680
nikitateggi 45:067673dae242 681
nikitateggi 44:05dbea558c9a 682 uint32_t get_timer_bluetooth()
nikitateggi 44:05dbea558c9a 683 {
nikitateggi 45:067673dae242 684 return timer_bt.read_ms();
nikitateggi 44:05dbea558c9a 685 }
nikitateggi 45:067673dae242 686
nikitateggi 45:067673dae242 687 void battery_status_monitoring()
nikitateggi 45:067673dae242 688 {
nikitateggi 45:067673dae242 689 if(timer_battery.read_ms() > BATTERY_TIMER_VALUE )
nikitateggi 45:067673dae242 690 {
nikitateggi 45:067673dae242 691 battery_monitor();
nikitateggi 45:067673dae242 692 timer_battery.reset();
nikitateggi 45:067673dae242 693 }
nikitateggi 49:3ff80c4bc1be 694 }
nikitateggi 49:3ff80c4bc1be 695
nikitateggi 51:1a4693774b60 696 bool read_debug_status()
nikitateggi 51:1a4693774b60 697 {
nikitateggi 52:7d9ff7781bdc 698 // gc.printf("debug_mode=%d\n",debug_mode);
nikitateggi 51:1a4693774b60 699 return debug_mode;
nikitateggi 51:1a4693774b60 700 }
nikitateggi 51:1a4693774b60 701
nikitateggi 51:1a4693774b60 702 void debug_status_monitoring()
nikitateggi 51:1a4693774b60 703 {
nikitateggi 51:1a4693774b60 704 if (gc.readable()) // check for the user input
nikitateggi 51:1a4693774b60 705 {
nikitateggi 51:1a4693774b60 706
nikitateggi 51:1a4693774b60 707 while (gc.readable()!= '\n') // read till the newline
nikitateggi 51:1a4693774b60 708 {
nikitateggi 51:1a4693774b60 709
nikitateggi 51:1a4693774b60 710 gc.scanf("%s", debug_message_rx); // store the message typed in buffer
nikitateggi 51:1a4693774b60 711 gc.printf("%s", debug_message_rx);
nikitateggi 51:1a4693774b60 712 break;
nikitateggi 51:1a4693774b60 713 }
nikitateggi 51:1a4693774b60 714
nikitateggi 51:1a4693774b60 715
nikitateggi 51:1a4693774b60 716 if (strcmp(debug_message_rx, debug_message) == 0) // compare the message with the required one
nikitateggi 51:1a4693774b60 717 {
nikitateggi 54:f2a413d5dffd 718 debug_mode = true; // enable the debug mode status
nikitateggi 51:1a4693774b60 719 gc.printf("entered into debug mode\n");
nikitateggi 51:1a4693774b60 720 timer_debug.reset();
nikitateggi 51:1a4693774b60 721 timer_debug.start(); // timer is started in orede
nikitateggi 51:1a4693774b60 722 }
nikitateggi 51:1a4693774b60 723 }
nikitateggi 51:1a4693774b60 724
nikitateggi 51:1a4693774b60 725 }
nikitateggi 51:1a4693774b60 726
nikitateggi 51:1a4693774b60 727 uint32_t get_timer_debug() // timer for enabling debug option
nikitateggi 51:1a4693774b60 728 {
nikitateggi 51:1a4693774b60 729 if(timer_debug.read_ms()>TIMER_ENABLE_DEBUG_MODE)
nikitateggi 51:1a4693774b60 730 {
nikitateggi 51:1a4693774b60 731 timer_debug.stop();
nikitateggi 51:1a4693774b60 732 }
nikitateggi 51:1a4693774b60 733 return timer_debug.read_ms();
nikitateggi 51:1a4693774b60 734 }
nikitateggi 51:1a4693774b60 735
rashmivenkataramaiah 57:e82d4bd6b2c0 736 // this command response to all the remaining command which doesn't have any data in response
rashmivenkataramaiah 57:e82d4bd6b2c0 737 void poc2p0_send_device_msg_res(uint8_t response_cmd)
rashmivenkataramaiah 57:e82d4bd6b2c0 738 {
rashmivenkataramaiah 72:1f990fa8c516 739
rashmivenkataramaiah 57:e82d4bd6b2c0 740 poc2p0_device_msg_response poc2p0_device_msg_res = {0x00u};
nikitateggi 51:1a4693774b60 741
rashmivenkataramaiah 57:e82d4bd6b2c0 742 poc2p0_device_msg_res.sos = SOS_EOS;
rashmivenkataramaiah 57:e82d4bd6b2c0 743 poc2p0_device_msg_res.cmd = response_cmd;
rashmivenkataramaiah 57:e82d4bd6b2c0 744 poc2p0_device_msg_res.length = ZERO_DATA_LEN;
rashmivenkataramaiah 57:e82d4bd6b2c0 745
rashmivenkataramaiah 57:e82d4bd6b2c0 746 poc2p0_device_msg_res.eos = SOS_EOS;
rashmivenkataramaiah 57:e82d4bd6b2c0 747
rashmivenkataramaiah 59:dadb88794375 748 poc2p0_device_msg_res.chksum = checksum_struct((uint8_t *)&poc2p0_device_msg_res.cmd, (sizeof(poc2p0_device_msg_res)-1));
rashmivenkataramaiah 72:1f990fa8c516 749
rashmivenkataramaiah 70:f2e544a5645b 750 blue1.printf("%02x",poc2p0_device_msg_res.sos);
rashmivenkataramaiah 70:f2e544a5645b 751 blue1.printf("%02x",poc2p0_device_msg_res.cmd);
rashmivenkataramaiah 70:f2e544a5645b 752 blue1.printf("%02x",poc2p0_device_msg_res.length);
rashmivenkataramaiah 70:f2e544a5645b 753 blue1.printf("%02x",poc2p0_device_msg_res.eos);
rashmivenkataramaiah 70:f2e544a5645b 754 blue1.printf("%02x",poc2p0_device_msg_res.chksum);
rashmivenkataramaiah 70:f2e544a5645b 755 blue1.printf("\n");
rashmivenkataramaiah 65:8acfba0ce49a 756
rashmivenkataramaiah 70:f2e544a5645b 757 gc.printf("%02x",poc2p0_device_msg_res.sos);
rashmivenkataramaiah 70:f2e544a5645b 758 gc.printf("%02x",poc2p0_device_msg_res.cmd);
rashmivenkataramaiah 70:f2e544a5645b 759 gc.printf("%02x",poc2p0_device_msg_res.length);
rashmivenkataramaiah 70:f2e544a5645b 760 gc.printf("%02x",poc2p0_device_msg_res.eos);
rashmivenkataramaiah 70:f2e544a5645b 761 gc.printf("%02x",poc2p0_device_msg_res.chksum);
rashmivenkataramaiah 70:f2e544a5645b 762 gc.printf("\n");
rashmivenkataramaiah 57:e82d4bd6b2c0 763 }
rashmivenkataramaiah 57:e82d4bd6b2c0 764
rashmivenkataramaiah 57:e82d4bd6b2c0 765 // this command response to heartbeat message request send by bluetooth device
rashmivenkataramaiah 57:e82d4bd6b2c0 766 void poc2p0_send_device_heartbeat_msg_res(uint8_t curr_touch_state)
rashmivenkataramaiah 72:1f990fa8c516 767 {
rashmivenkataramaiah 57:e82d4bd6b2c0 768 poc2p0_device_heartbeat_response poc2p0_device_heartbeat_res = {0x00u};
rashmivenkataramaiah 65:8acfba0ce49a 769
rashmivenkataramaiah 57:e82d4bd6b2c0 770 // RTC operations
rashmivenkataramaiah 57:e82d4bd6b2c0 771 time_t epoch_time_glc; //A copy of time_t by name epoch_time_bp is created
rashmivenkataramaiah 57:e82d4bd6b2c0 772 struct tm * ptr_time_info_glc; // Sturucture copy of tm is created
rashmivenkataramaiah 57:e82d4bd6b2c0 773
rashmivenkataramaiah 57:e82d4bd6b2c0 774 epoch_time_glc = rtc_read(); // time is got from get epoch function.
rashmivenkataramaiah 57:e82d4bd6b2c0 775 ptr_time_info_glc = localtime(&epoch_time_glc); // Structure accepts the time in local format from "time_t" type.
rashmivenkataramaiah 57:e82d4bd6b2c0 776
rashmivenkataramaiah 57:e82d4bd6b2c0 777 poc2p0_device_heartbeat_res.sos = SOS_EOS;
rashmivenkataramaiah 57:e82d4bd6b2c0 778 poc2p0_device_heartbeat_res.cmd = HEARTBEAT_SYNC_MSG_ACCEPTED_RES;
rashmivenkataramaiah 57:e82d4bd6b2c0 779 poc2p0_device_heartbeat_res.length = HEARTBEAT_DATA_LEN;
rashmivenkataramaiah 57:e82d4bd6b2c0 780
rashmivenkataramaiah 57:e82d4bd6b2c0 781 // device ID
rashmivenkataramaiah 57:e82d4bd6b2c0 782 poc2p0_device_heartbeat_res.did = eprom_read_8(12);
rashmivenkataramaiah 57:e82d4bd6b2c0 783
rashmivenkataramaiah 57:e82d4bd6b2c0 784 // patient ID
rashmivenkataramaiah 57:e82d4bd6b2c0 785 if (curr_touch_state == TOUCH_STATE_TEST_SCREEN)
rashmivenkataramaiah 57:e82d4bd6b2c0 786 {
rashmivenkataramaiah 69:128e3b467820 787 memcpy(poc2p0_device_heartbeat_res.pid,get_userpid(),sizeof(poc2p0_device_heartbeat_res.pid));
rashmivenkataramaiah 68:41da0a3ba038 788 gc.printf("poc2p0_device_heartbeat_res.pid = %s\n",poc2p0_device_heartbeat_res.pid);
rashmivenkataramaiah 69:128e3b467820 789
rashmivenkataramaiah 70:f2e544a5645b 790 //ascii_to_hex((const char *)poc2p0_device_heartbeat_res.pid, sizeof(poc2p0_device_heartbeat_res.pid));
rashmivenkataramaiah 69:128e3b467820 791 //gc.printf("poc2p0_device_heartbeat_res.pid = %2x\n",poc2p0_device_heartbeat_res.pid);
rashmivenkataramaiah 70:f2e544a5645b 792 //gc.printf("\n");
rashmivenkataramaiah 69:128e3b467820 793
rashmivenkataramaiah 70:f2e544a5645b 794 //for (uint8_t i = 0; i < sizeof(poc2p0_device_heartbeat_res.pid); i++)
rashmivenkataramaiah 70:f2e544a5645b 795 //{
rashmivenkataramaiah 70:f2e544a5645b 796 // gc.printf("%02x",poc2p0_device_heartbeat_res.pid[i]);
rashmivenkataramaiah 70:f2e544a5645b 797 //}
rashmivenkataramaiah 70:f2e544a5645b 798 //gc.printf("\n");
rashmivenkataramaiah 57:e82d4bd6b2c0 799 }
rashmivenkataramaiah 71:8f1851c556d6 800 else
rashmivenkataramaiah 57:e82d4bd6b2c0 801 {
rashmivenkataramaiah 71:8f1851c556d6 802 memset(poc2p0_device_heartbeat_res.pid,'0',sizeof(poc2p0_device_heartbeat_res.pid));
rashmivenkataramaiah 71:8f1851c556d6 803 gc.printf("poc2p0_device_heartbeat_res.pid = %s\n",poc2p0_device_heartbeat_res.pid);
rashmivenkataramaiah 71:8f1851c556d6 804
rashmivenkataramaiah 57:e82d4bd6b2c0 805 }
rashmivenkataramaiah 57:e82d4bd6b2c0 806
rashmivenkataramaiah 57:e82d4bd6b2c0 807 // device current date and time
rashmivenkataramaiah 57:e82d4bd6b2c0 808 poc2p0_device_heartbeat_res.date_time.date = (uint8_t)(*ptr_time_info_glc).tm_mday;
rashmivenkataramaiah 57:e82d4bd6b2c0 809 poc2p0_device_heartbeat_res.date_time.month = (uint8_t)(*ptr_time_info_glc).tm_mon+1;
rashmivenkataramaiah 57:e82d4bd6b2c0 810 poc2p0_device_heartbeat_res.date_time.year = (uint8_t)(*ptr_time_info_glc).tm_year-100;
rashmivenkataramaiah 57:e82d4bd6b2c0 811 poc2p0_device_heartbeat_res.date_time.hour = (uint8_t)(*ptr_time_info_glc).tm_hour;
rashmivenkataramaiah 57:e82d4bd6b2c0 812 poc2p0_device_heartbeat_res.date_time.mins = (uint8_t)(*ptr_time_info_glc).tm_min;
rashmivenkataramaiah 57:e82d4bd6b2c0 813 poc2p0_device_heartbeat_res.date_time.sec = (uint8_t)(*ptr_time_info_glc).tm_sec;
rashmivenkataramaiah 57:e82d4bd6b2c0 814
rashmivenkataramaiah 57:e82d4bd6b2c0 815 // device state
rashmivenkataramaiah 66:d7fc45e328d0 816 if (curr_touch_state == TOUCH_STATE_HOME_SCREEN)
rashmivenkataramaiah 57:e82d4bd6b2c0 817 {
rashmivenkataramaiah 66:d7fc45e328d0 818 poc2p0_device_heartbeat_res.device_state = HOME_SCREEN;
rashmivenkataramaiah 57:e82d4bd6b2c0 819 }
rashmivenkataramaiah 57:e82d4bd6b2c0 820 else
rashmivenkataramaiah 57:e82d4bd6b2c0 821 {
rashmivenkataramaiah 66:d7fc45e328d0 822 poc2p0_device_heartbeat_res.device_state = TEST_SCREEN;
rashmivenkataramaiah 57:e82d4bd6b2c0 823 }
rashmivenkataramaiah 57:e82d4bd6b2c0 824
rashmivenkataramaiah 57:e82d4bd6b2c0 825 //poc2p0_device_heartbeat_res.device_state = device_state;
rashmivenkataramaiah 57:e82d4bd6b2c0 826
rashmivenkataramaiah 57:e82d4bd6b2c0 827 // device battery status
rashmivenkataramaiah 57:e82d4bd6b2c0 828 poc2p0_device_heartbeat_res.battery_status = get_battery_status();
rashmivenkataramaiah 57:e82d4bd6b2c0 829
rashmivenkataramaiah 57:e82d4bd6b2c0 830 poc2p0_device_heartbeat_res.eos = SOS_EOS;
rashmivenkataramaiah 57:e82d4bd6b2c0 831
rashmivenkataramaiah 57:e82d4bd6b2c0 832 // calculate chksum
rashmivenkataramaiah 59:dadb88794375 833 poc2p0_device_heartbeat_res.chksum = checksum_struct((uint8_t *)&poc2p0_device_heartbeat_res.cmd, (sizeof(poc2p0_device_heartbeat_res)-1));
rashmivenkataramaiah 65:8acfba0ce49a 834
rashmivenkataramaiah 70:f2e544a5645b 835 blue1.printf("%02x",poc2p0_device_heartbeat_res.sos);
rashmivenkataramaiah 70:f2e544a5645b 836 blue1.printf("%02x",poc2p0_device_heartbeat_res.cmd);
rashmivenkataramaiah 70:f2e544a5645b 837 blue1.printf("%02x",poc2p0_device_heartbeat_res.length);
rashmivenkataramaiah 70:f2e544a5645b 838 blue1.printf("%02x",poc2p0_device_heartbeat_res.did);
rashmivenkataramaiah 71:8f1851c556d6 839 //blue1.printf("%010x",poc2p0_device_heartbeat_res.pid);
rashmivenkataramaiah 71:8f1851c556d6 840 for (uint8_t i = 0; i < sizeof(poc2p0_device_heartbeat_res.pid); i++)
rashmivenkataramaiah 71:8f1851c556d6 841 {
rashmivenkataramaiah 71:8f1851c556d6 842 blue1.printf("%02x",poc2p0_device_heartbeat_res.pid[i]);
rashmivenkataramaiah 71:8f1851c556d6 843 }
rashmivenkataramaiah 70:f2e544a5645b 844 blue1.printf("%02x",poc2p0_device_heartbeat_res.date_time.date);
rashmivenkataramaiah 70:f2e544a5645b 845 blue1.printf("%02x",poc2p0_device_heartbeat_res.date_time.month);
rashmivenkataramaiah 70:f2e544a5645b 846 blue1.printf("%02x",poc2p0_device_heartbeat_res.date_time.year);
rashmivenkataramaiah 70:f2e544a5645b 847 blue1.printf("%02x",poc2p0_device_heartbeat_res.date_time.hour);
rashmivenkataramaiah 70:f2e544a5645b 848 blue1.printf("%02x",poc2p0_device_heartbeat_res.date_time.mins);
rashmivenkataramaiah 70:f2e544a5645b 849 blue1.printf("%02x",poc2p0_device_heartbeat_res.date_time.sec);
rashmivenkataramaiah 70:f2e544a5645b 850 blue1.printf("%02x",poc2p0_device_heartbeat_res.device_state);
rashmivenkataramaiah 70:f2e544a5645b 851 blue1.printf("%02x",poc2p0_device_heartbeat_res.battery_status);
rashmivenkataramaiah 70:f2e544a5645b 852 blue1.printf("%02x",poc2p0_device_heartbeat_res.eos);
rashmivenkataramaiah 70:f2e544a5645b 853 blue1.printf("%02x",poc2p0_device_heartbeat_res.chksum);
rashmivenkataramaiah 70:f2e544a5645b 854 blue1.printf("\n");
rashmivenkataramaiah 65:8acfba0ce49a 855
rashmivenkataramaiah 70:f2e544a5645b 856 gc.printf("%02x",poc2p0_device_heartbeat_res.sos);
rashmivenkataramaiah 70:f2e544a5645b 857 gc.printf("%02x",poc2p0_device_heartbeat_res.cmd);
rashmivenkataramaiah 70:f2e544a5645b 858 gc.printf("%02x",poc2p0_device_heartbeat_res.length);
rashmivenkataramaiah 70:f2e544a5645b 859 gc.printf("%02x",poc2p0_device_heartbeat_res.did);
rashmivenkataramaiah 71:8f1851c556d6 860 //gc.printf("%010x",poc2p0_device_heartbeat_res.pid);
rashmivenkataramaiah 71:8f1851c556d6 861 for (uint8_t i = 0; i < sizeof(poc2p0_device_heartbeat_res.pid); i++)
rashmivenkataramaiah 71:8f1851c556d6 862 {
rashmivenkataramaiah 71:8f1851c556d6 863 gc.printf("%02x",poc2p0_device_heartbeat_res.pid[i]);
rashmivenkataramaiah 71:8f1851c556d6 864 }
rashmivenkataramaiah 70:f2e544a5645b 865 gc.printf("%02x",poc2p0_device_heartbeat_res.date_time.date);
rashmivenkataramaiah 70:f2e544a5645b 866 gc.printf("%02x",poc2p0_device_heartbeat_res.date_time.month);
rashmivenkataramaiah 70:f2e544a5645b 867 gc.printf("%02x",poc2p0_device_heartbeat_res.date_time.year);
rashmivenkataramaiah 70:f2e544a5645b 868 gc.printf("%02x",poc2p0_device_heartbeat_res.date_time.hour);
rashmivenkataramaiah 70:f2e544a5645b 869 gc.printf("%02x",poc2p0_device_heartbeat_res.date_time.mins);
rashmivenkataramaiah 70:f2e544a5645b 870 gc.printf("%02x",poc2p0_device_heartbeat_res.date_time.sec);
rashmivenkataramaiah 70:f2e544a5645b 871 gc.printf("%02x",poc2p0_device_heartbeat_res.device_state);
rashmivenkataramaiah 70:f2e544a5645b 872 gc.printf("%02x",poc2p0_device_heartbeat_res.battery_status);
rashmivenkataramaiah 70:f2e544a5645b 873 gc.printf("%02x",poc2p0_device_heartbeat_res.eos);
rashmivenkataramaiah 70:f2e544a5645b 874 gc.printf("%02x",poc2p0_device_heartbeat_res.chksum);
rashmivenkataramaiah 70:f2e544a5645b 875 gc.printf("\n");
rashmivenkataramaiah 57:e82d4bd6b2c0 876 }
rashmivenkataramaiah 57:e82d4bd6b2c0 877
rashmivenkataramaiah 57:e82d4bd6b2c0 878 // this command send final test result response to bluetooth device
rashmivenkataramaiah 57:e82d4bd6b2c0 879 void poc2p0_send_device_test_result_res(uint8_t response_cmd, uint32_t result)
rashmivenkataramaiah 72:1f990fa8c516 880 {
rashmivenkataramaiah 57:e82d4bd6b2c0 881 poc2p0_device_tst_result_response poc2p0_device_tst_result_res = {0x00u};
rashmivenkataramaiah 57:e82d4bd6b2c0 882
rashmivenkataramaiah 57:e82d4bd6b2c0 883 poc2p0_device_tst_result_res.sos = SOS_EOS;
rashmivenkataramaiah 57:e82d4bd6b2c0 884 poc2p0_device_tst_result_res.cmd = response_cmd;
rashmivenkataramaiah 57:e82d4bd6b2c0 885 poc2p0_device_tst_result_res.length = DEVICE_RESULT_DATA_LEN;
rashmivenkataramaiah 57:e82d4bd6b2c0 886
rashmivenkataramaiah 57:e82d4bd6b2c0 887 // device result provided by device
rashmivenkataramaiah 57:e82d4bd6b2c0 888 poc2p0_device_tst_result_res.test_result = result;
rashmivenkataramaiah 57:e82d4bd6b2c0 889
rashmivenkataramaiah 57:e82d4bd6b2c0 890 poc2p0_device_tst_result_res.eos = SOS_EOS;
rashmivenkataramaiah 57:e82d4bd6b2c0 891
rashmivenkataramaiah 59:dadb88794375 892 poc2p0_device_tst_result_res.chksum = checksum_struct((uint8_t *)&poc2p0_device_tst_result_res.cmd, (sizeof(poc2p0_device_tst_result_res)-1));
rashmivenkataramaiah 70:f2e544a5645b 893
rashmivenkataramaiah 70:f2e544a5645b 894 blue1.printf("%02x",poc2p0_device_tst_result_res.sos);
rashmivenkataramaiah 70:f2e544a5645b 895 blue1.printf("%02x",poc2p0_device_tst_result_res.cmd);
rashmivenkataramaiah 70:f2e544a5645b 896 blue1.printf("%02x",poc2p0_device_tst_result_res.length);
rashmivenkataramaiah 70:f2e544a5645b 897 blue1.printf("%08x",poc2p0_device_tst_result_res.test_result);
rashmivenkataramaiah 70:f2e544a5645b 898 blue1.printf("%02x",poc2p0_device_tst_result_res.eos);
rashmivenkataramaiah 70:f2e544a5645b 899 blue1.printf("%02x",poc2p0_device_tst_result_res.chksum);
rashmivenkataramaiah 70:f2e544a5645b 900 blue1.printf("\n");
rashmivenkataramaiah 70:f2e544a5645b 901
rashmivenkataramaiah 70:f2e544a5645b 902 gc.printf("%02x",poc2p0_device_tst_result_res.sos);
rashmivenkataramaiah 70:f2e544a5645b 903 gc.printf("%02x",poc2p0_device_tst_result_res.cmd);
rashmivenkataramaiah 70:f2e544a5645b 904 gc.printf("%02x",poc2p0_device_tst_result_res.length);
rashmivenkataramaiah 70:f2e544a5645b 905 gc.printf("%08x",poc2p0_device_tst_result_res.test_result);
rashmivenkataramaiah 70:f2e544a5645b 906 gc.printf("%02x",poc2p0_device_tst_result_res.eos);
rashmivenkataramaiah 70:f2e544a5645b 907 gc.printf("%02x",poc2p0_device_tst_result_res.chksum);
rashmivenkataramaiah 70:f2e544a5645b 908 gc.printf("\n");
rashmivenkataramaiah 57:e82d4bd6b2c0 909 }
rashmivenkataramaiah 65:8acfba0ce49a 910
rashmivenkataramaiah 67:7e07cdb1b150 911
rashmivenkataramaiah 68:41da0a3ba038 912 void set_userpid(char *user_pid)
rashmivenkataramaiah 68:41da0a3ba038 913 {
rashmivenkataramaiah 72:1f990fa8c516 914 char pid_buffer[20];
rashmivenkataramaiah 72:1f990fa8c516 915 char test_screen_chk[3];
rashmivenkataramaiah 72:1f990fa8c516 916
rashmivenkataramaiah 68:41da0a3ba038 917 //char user_pid_buffer[10] = {0};
rashmivenkataramaiah 68:41da0a3ba038 918 if (gc.readable()!= '\n') // reading string from putty
rashmivenkataramaiah 68:41da0a3ba038 919 //if (blue.readable()!= NULL) // reading string from bluetooth
rashmivenkataramaiah 68:41da0a3ba038 920 {
rashmivenkataramaiah 68:41da0a3ba038 921 //blue.scanf("%10s",user_pid);
rashmivenkataramaiah 72:1f990fa8c516 922 gc.scanf("%20s",pid_buffer);
rashmivenkataramaiah 72:1f990fa8c516 923 }
rashmivenkataramaiah 72:1f990fa8c516 924 memcpy(test_screen_chk,pid_buffer+1,2);
rashmivenkataramaiah 72:1f990fa8c516 925 //if(test_screen_chk == "73")
rashmivenkataramaiah 72:1f990fa8c516 926 memcpy(user_pid,pid_buffer+6,10);
rashmivenkataramaiah 72:1f990fa8c516 927 //else
rashmivenkataramaiah 72:1f990fa8c516 928 // gc.printf("Not a valid PID\n");
rashmivenkataramaiah 68:41da0a3ba038 929 }
rashmivenkataramaiah 68:41da0a3ba038 930
rashmivenkataramaiah 69:128e3b467820 931
rashmivenkataramaiah 71:8f1851c556d6 932
rashmivenkataramaiah 68:41da0a3ba038 933
rashmivenkataramaiah 69:128e3b467820 934
rashmivenkataramaiah 69:128e3b467820 935
rashmivenkataramaiah 68:41da0a3ba038 936 void ascii_to_hex(const char *input_buf, uint8_t len)
rashmivenkataramaiah 68:41da0a3ba038 937 {
rashmivenkataramaiah 68:41da0a3ba038 938 uint8_t i = 0;
rashmivenkataramaiah 68:41da0a3ba038 939 uint8_t j = 0;
rashmivenkataramaiah 68:41da0a3ba038 940 uint8_t temp_ms_nibble = 0;
rashmivenkataramaiah 68:41da0a3ba038 941 uint8_t temp_ls_nibble = 0;
rashmivenkataramaiah 68:41da0a3ba038 942 uint8_t temp_buf[len];
rashmivenkataramaiah 69:128e3b467820 943 gc.printf("\n\r len = %d", len);
rashmivenkataramaiah 69:128e3b467820 944 for (i = 0,j = 0; i < len; i+=1, ++j)
rashmivenkataramaiah 68:41da0a3ba038 945 {
rashmivenkataramaiah 68:41da0a3ba038 946 temp_ms_nibble = input_buf[i] > '9' ? (input_buf[i]|32) - 'a' + 10 : input_buf[i] - '0';
rashmivenkataramaiah 69:128e3b467820 947
rashmivenkataramaiah 71:8f1851c556d6 948 //gc.printf("\n\r temp_ms_nibble = %2x", temp_ms_nibble);
rashmivenkataramaiah 69:128e3b467820 949
rashmivenkataramaiah 69:128e3b467820 950 //temp_ls_nibble = input_buf[i+1] > '9' ? (input_buf[i+1]|32) - 'a' + 10 : input_buf[i+1] - '0';
rashmivenkataramaiah 69:128e3b467820 951 //gc.printf("\n\r temp_ls_nibble = %2x", temp_ls_nibble);
rashmivenkataramaiah 69:128e3b467820 952
rashmivenkataramaiah 69:128e3b467820 953 //temp_buf[j] = ((temp_ms_nibble << 4)) | temp_ls_nibble;
rashmivenkataramaiah 69:128e3b467820 954 temp_buf[j] = temp_ms_nibble ;
rashmivenkataramaiah 71:8f1851c556d6 955 //gc.printf("\n\r msg_SOS = %02x", temp_buf[j]);
rashmivenkataramaiah 68:41da0a3ba038 956 }
rashmivenkataramaiah 68:41da0a3ba038 957
rashmivenkataramaiah 68:41da0a3ba038 958 memcpy((void *)input_buf,&temp_buf, len);
rashmivenkataramaiah 68:41da0a3ba038 959
rashmivenkataramaiah 69:128e3b467820 960
rashmivenkataramaiah 68:41da0a3ba038 961 return;
rashmivenkataramaiah 68:41da0a3ba038 962 }
rashmivenkataramaiah 69:128e3b467820 963
rashmivenkataramaiah 72:1f990fa8c516 964 static void ecg_bp_countdown(void)
rashmivenkataramaiah 72:1f990fa8c516 965 {
rashmivenkataramaiah 72:1f990fa8c516 966 for(uint8_t i = 5; i <= 0; i--)
rashmivenkataramaiah 72:1f990fa8c516 967 {
rashmivenkataramaiah 72:1f990fa8c516 968 wait(1);
rashmivenkataramaiah 72:1f990fa8c516 969 }
rashmivenkataramaiah 72:1f990fa8c516 970 }
rashmivenkataramaiah 69:128e3b467820 971
rashmivenkataramaiah 72:1f990fa8c516 972 static void read_device_id(void) // reading device id from eeprom
rashmivenkataramaiah 72:1f990fa8c516 973 {
rashmivenkataramaiah 72:1f990fa8c516 974
rashmivenkataramaiah 72:1f990fa8c516 975 device_id = eprom_read_8(12); // reading from eeprom location
rashmivenkataramaiah 72:1f990fa8c516 976 gc.printf("device_id = %d\n", device_id); //read did from eeprom
rashmivenkataramaiah 72:1f990fa8c516 977 if((get_Error()!= 0) || (device_id == 0xFF)) // checking for error
rashmivenkataramaiah 72:1f990fa8c516 978 {
rashmivenkataramaiah 72:1f990fa8c516 979 device_id = eprom_read_8(12) ;
rashmivenkataramaiah 72:1f990fa8c516 980 if(get_Error()!= 0 || (device_id == 0xFF))
rashmivenkataramaiah 72:1f990fa8c516 981 {
rashmivenkataramaiah 72:1f990fa8c516 982 gc.printf("database error!\n"); // database error
rashmivenkataramaiah 72:1f990fa8c516 983 //return did;
rashmivenkataramaiah 72:1f990fa8c516 984 }
rashmivenkataramaiah 72:1f990fa8c516 985 }
rashmivenkataramaiah 72:1f990fa8c516 986
rashmivenkataramaiah 72:1f990fa8c516 987 }
rashmivenkataramaiah 72:1f990fa8c516 988
rashmivenkataramaiah 72:1f990fa8c516 989 uint8_t get_did()
rashmivenkataramaiah 72:1f990fa8c516 990 {
rashmivenkataramaiah 72:1f990fa8c516 991 return device_id;
rashmivenkataramaiah 72:1f990fa8c516 992 }
rashmivenkataramaiah 72:1f990fa8c516 993
rashmivenkataramaiah 72:1f990fa8c516 994 void sd_card_status(void) // checking the status of the sd card initialization
rashmivenkataramaiah 72:1f990fa8c516 995 {
rashmivenkataramaiah 72:1f990fa8c516 996 uint8_t error_sd= 0;
rashmivenkataramaiah 72:1f990fa8c516 997 error_sd = dummy_file_create_delete(); // creating the dummy file
rashmivenkataramaiah 72:1f990fa8c516 998
rashmivenkataramaiah 72:1f990fa8c516 999 if( error_sd == 1) // if error = 1 // error in opening file
rashmivenkataramaiah 72:1f990fa8c516 1000 {
rashmivenkataramaiah 72:1f990fa8c516 1001 error_sd = dummy_file_create_delete();
rashmivenkataramaiah 72:1f990fa8c516 1002 if( error_sd == 1)
rashmivenkataramaiah 72:1f990fa8c516 1003 {
rashmivenkataramaiah 72:1f990fa8c516 1004 gc.printf("database error!\n"); // dispaly data base error
rashmivenkataramaiah 72:1f990fa8c516 1005 //database_error();
rashmivenkataramaiah 72:1f990fa8c516 1006
rashmivenkataramaiah 72:1f990fa8c516 1007 }
rashmivenkataramaiah 72:1f990fa8c516 1008 }
rashmivenkataramaiah 72:1f990fa8c516 1009
rashmivenkataramaiah 72:1f990fa8c516 1010 }
rashmivenkataramaiah 72:1f990fa8c516 1011