created separate function for hex to char

Dependencies:   SDFileSystem ds3231 eeprom_Nikita mbed testUniGraphic_150217

Fork of SS_SensePOC2P0_11Dec2017_USERPID by rashmi v

Committer:
nikitateggi
Date:
Wed Sep 27 09:36:26 2017 +0000
Revision:
54:f2a413d5dffd
Parent:
53:cc6e65480a67
Child:
57:e82d4bd6b2c0
Modification in LPF and GLC

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nikitateggi 0:c47fb0c1bbf6 1 #include "mbed.h"
nikitateggi 0:c47fb0c1bbf6 2 #include "display_modules.h"
nikitateggi 0:c47fb0c1bbf6 3 #include "touch_modules.h"
nikitateggi 1:8316c23ec6b9 4 #include "ecg_dec.h"
nikitateggi 1:8316c23ec6b9 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 41:1141a75eacc4 12 #include "main.h"
nikitateggi 45:067673dae242 13
nikitateggi 45:067673dae242 14 #define TIMER_RXACK_BTCONNECTION 10000
nikitateggi 45:067673dae242 15 #define BATTERY_TIMER_VALUE 600000
nikitateggi 45:067673dae242 16 #define SERIAL_BAUD_RATE 115200
nikitateggi 45:067673dae242 17 #define BATTERY_SCREEN_NO_CHARGE_CONDITION 3
nikitateggi 49:3ff80c4bc1be 18 #define TIMER_ENTER_DEBUG_MODE 10000
nikitateggi 24:d992ee8369f4 19
nikitateggi 51:1a4693774b60 20
nikitateggi 51:1a4693774b60 21
nikitateggi 0:c47fb0c1bbf6 22 Serial gc(USBTX, USBRX);
nikitateggi 0:c47fb0c1bbf6 23 DigitalIn q1(PTB11);
nikitateggi 29:7edc76b15e3d 24 DigitalIn q(PTC5);
nikitateggi 29:7edc76b15e3d 25 DigitalIn q3(PTC12);
rashmivenkataramaiah 42:c81673b04b6a 26 DigitalIn BT(PTA5);
nikitateggi 44:05dbea558c9a 27 Serial blue1(PTC4,PTC3);
nikitateggi 44:05dbea558c9a 28 uint32_t get_timer_bluetooth();
nikitateggi 45:067673dae242 29 static void battery_status_monitoring(); //bluetooth status pin
nikitateggi 45:067673dae242 30 uint8_t touch(uint8_t state); // touch state
nikitateggi 45:067673dae242 31 uint8_t display(uint8_t state1); // display state
nikitateggi 45:067673dae242 32
rashmivenkataramaiah 42:c81673b04b6a 33 static uint8_t nstate=0;
nikitateggi 53:cc6e65480a67 34 static uint8_t nstate1=0;
rashmivenkataramaiah 43:85a7f399cb9d 35 static bool file_created_status = false; //initialise file created to 0
rashmivenkataramaiah 43:85a7f399cb9d 36 static uint32_t filepid_btpid[2] = {};
nikitateggi 45:067673dae242 37 Timer timer_bt; // timer for bluetooth
nikitateggi 45:067673dae242 38 Timer timer_battery; // timer for battery
nikitateggi 51:1a4693774b60 39 Timer timer_debug; // timer for entering the debug mode
nikitateggi 54:f2a413d5dffd 40 static bool debug_mode=false; // holds the status of the debug mode "1" indicates the device is in debug mode
nikitateggi 51:1a4693774b60 41 char debug_message_rx[6]; // buffer to receive the debug message data
nikitateggi 51:1a4693774b60 42 char debug_message[6]={"debug"}; //debug message to be received
nikitateggi 51:1a4693774b60 43 void debug_status_monitoring(); // debug status monitoring
nikitateggi 54:f2a413d5dffd 44 static uint32_t pid = 0; // patient ID
nikitateggi 0:c47fb0c1bbf6 45
rashmivenkataramaiah 41:1141a75eacc4 46 int main()
rashmivenkataramaiah 41:1141a75eacc4 47 {
rashmivenkataramaiah 41:1141a75eacc4 48 static uint8_t main_state=1;
rashmivenkataramaiah 41:1141a75eacc4 49 static uint8_t state_display = 0;
rashmivenkataramaiah 41:1141a75eacc4 50 static uint8_t state_touch = 1;
nikitateggi 47:3716dd41dba6 51 uint8_t state_t = 1; // state to transmit to bluetooth
nikitateggi 47:3716dd41dba6 52 uint8_t state_r = 0; // state to receive from bluetooth
nikitateggi 51:1a4693774b60 53
avp2417 37:92fcbf22bf91 54
avp2417 37:92fcbf22bf91 55
rashmivenkataramaiah 41:1141a75eacc4 56 DisableTouch();
rashmivenkataramaiah 41:1141a75eacc4 57 gc.baud(115200);
nikitateggi 47:3716dd41dba6 58 blue1.baud(115200);
nikitateggi 51:1a4693774b60 59 init_screen(); //initialize lcd
nikitateggi 54:f2a413d5dffd 60 pid = get_filepid() + 1; //added on 22/09/2017 nikita
nikitateggi 51:1a4693774b60 61 screen_main(); // display of main screen
nikitateggi 45:067673dae242 62 battery_monitor(); // monitor battery at the start only
nikitateggi 45:067673dae242 63 battery_status_display(); // display of main screen
nikitateggi 45:067673dae242 64 timer_battery.start();
nikitateggi 51:1a4693774b60 65 timer_debug.start();
nikitateggi 51:1a4693774b60 66 gc.printf("enter message to go into debug mode\n");
nikitateggi 49:3ff80c4bc1be 67
nikitateggi 0:c47fb0c1bbf6 68 while(1)
nikitateggi 0:c47fb0c1bbf6 69 {
nikitateggi 51:1a4693774b60 70
nikitateggi 54:f2a413d5dffd 71 if (read_debug_status() == false) // checking the debug_mode status
nikitateggi 51:1a4693774b60 72 {
nikitateggi 51:1a4693774b60 73 if(timer_debug.read_ms()<TIMER_ENTER_DEBUG_MODE)
nikitateggi 51:1a4693774b60 74 {
nikitateggi 51:1a4693774b60 75 debug_status_monitoring();
nikitateggi 51:1a4693774b60 76 }
nikitateggi 51:1a4693774b60 77 }
nikitateggi 51:1a4693774b60 78
nikitateggi 51:1a4693774b60 79
nikitateggi 45:067673dae242 80 battery_status_monitoring(); // to monitior battery status after every 10 min.
nikitateggi 45:067673dae242 81
nikitateggi 45:067673dae242 82 if (get_battery_status() == BATTERY_SCREEN_NO_CHARGE_CONDITION) // to check battery status and take action
nikitateggi 45:067673dae242 83 {
nikitateggi 45:067673dae242 84 DisableTouch();
nikitateggi 45:067673dae242 85 }
nikitateggi 45:067673dae242 86 else
nikitateggi 45:067673dae242 87 {
nikitateggi 45:067673dae242 88
nikitateggi 45:067673dae242 89 EnableTouch();
nikitateggi 51:1a4693774b60 90 gc.printf("c");
nikitateggi 45:067673dae242 91 switch(main_state) // main state machine
nikitateggi 45:067673dae242 92 {
nikitateggi 45:067673dae242 93 case 1:
nikitateggi 45:067673dae242 94 state_display = touch(state_touch); // touch state
nikitateggi 45:067673dae242 95 if(state_display == 12)
nikitateggi 45:067673dae242 96 {
nikitateggi 45:067673dae242 97 main_state = 3;
nikitateggi 45:067673dae242 98 }
nikitateggi 45:067673dae242 99 else
nikitateggi 45:067673dae242 100 {
nikitateggi 45:067673dae242 101 main_state = 2;
nikitateggi 45:067673dae242 102 }
nikitateggi 45:067673dae242 103 break;
avp2417 37:92fcbf22bf91 104
nikitateggi 45:067673dae242 105 case 2:
nikitateggi 45:067673dae242 106 state_touch = display(state_display); //display state
nikitateggi 45:067673dae242 107 main_state = 1;
nikitateggi 45:067673dae242 108 break;
nikitateggi 19:1650bbc923cc 109
nikitateggi 19:1650bbc923cc 110
nikitateggi 45:067673dae242 111 case 3:
nikitateggi 45:067673dae242 112 DisableTouch(); // bluetooth send
nikitateggi 45:067673dae242 113 timer_bt.start();
nikitateggi 45:067673dae242 114 if(get_timer_bluetooth()<TIMER_RXACK_BTCONNECTION) // bluetooth connection timer 15 sec
nikitateggi 45:067673dae242 115 {
nikitateggi 44:05dbea558c9a 116
nikitateggi 45:067673dae242 117 if(BT==1) // checking for bluetooth connection
nikitateggi 45:067673dae242 118 {
nikitateggi 44:05dbea558c9a 119
nikitateggi 45:067673dae242 120 timer_bt.stop(); // stop the timer once connected to app
nikitateggi 45:067673dae242 121 timer_bt.reset();
nikitateggi 44:05dbea558c9a 122 BT_connection() ; // displaying connection on bluetooth
nikitateggi 44:05dbea558c9a 123 state_r=bt_send(state_t);
nikitateggi 45:067673dae242 124 timer_bt.start();
nikitateggi 47:3716dd41dba6 125 //gc.printf(" state_t = %d\n", state_t);
nikitateggi 48:f90edb35a20e 126 // gc.printf(" state_r = %d\n", state_r);
nikitateggi 44:05dbea558c9a 127 if (state_r==0) // if the state received is zero, then there is no new file to send
nikitateggi 45:067673dae242 128 {
nikitateggi 45:067673dae242 129 timer_bt.stop(); // stop the timer once connected to app
nikitateggi 45:067673dae242 130 timer_bt.reset();
nikitateggi 45:067673dae242 131 BT_finished(); // screen to display communication finished
nikitateggi 45:067673dae242 132 screen_BT_return(); //screen to return back
nikitateggi 45:067673dae242 133 EnableTouch();
nikitateggi 45:067673dae242 134 main_state=1;
nikitateggi 45:067673dae242 135 state_touch=12;
nikitateggi 45:067673dae242 136 break;
nikitateggi 44:05dbea558c9a 137 }
nikitateggi 44:05dbea558c9a 138
nikitateggi 44:05dbea558c9a 139 else
nikitateggi 44:05dbea558c9a 140 {
nikitateggi 44:05dbea558c9a 141 main_state=4; // move to receving stste of bluetooth
nikitateggi 44:05dbea558c9a 142 }
nikitateggi 44:05dbea558c9a 143
nikitateggi 45:067673dae242 144 }
nikitateggi 44:05dbea558c9a 145
nikitateggi 45:067673dae242 146 else
nikitateggi 45:067673dae242 147 {
nikitateggi 45:067673dae242 148 BT_no_connection(); // display screen to show that there is no connection
nikitateggi 45:067673dae242 149 }
nikitateggi 45:067673dae242 150 }
nikitateggi 44:05dbea558c9a 151
nikitateggi 45:067673dae242 152 else
nikitateggi 45:067673dae242 153 {
nikitateggi 45:067673dae242 154 BT_no_connection(); // display screen to show that there is no connection
nikitateggi 45:067673dae242 155 gc.printf("stopped");
nikitateggi 45:067673dae242 156 screen_BT_return(); // button to return
nikitateggi 45:067673dae242 157 EnableTouch();
nikitateggi 45:067673dae242 158 main_state=1;
nikitateggi 45:067673dae242 159 state_touch=12;
nikitateggi 49:3ff80c4bc1be 160 //sd_close();
nikitateggi 45:067673dae242 161 timer_bt.stop();
nikitateggi 45:067673dae242 162 timer_bt.reset();
nikitateggi 45:067673dae242 163 }
nikitateggi 45:067673dae242 164 break;
nikitateggi 19:1650bbc923cc 165
nikitateggi 45:067673dae242 166 case 4:
nikitateggi 45:067673dae242 167 DisableTouch();
nikitateggi 44:05dbea558c9a 168
nikitateggi 45:067673dae242 169 if(get_timer_bluetooth()<TIMER_RXACK_BTCONNECTION)
nikitateggi 45:067673dae242 170 {
nikitateggi 45:067673dae242 171 if (blue1.readable()) // if there is data to receive enter the loop
nikitateggi 45:067673dae242 172 {
nikitateggi 46:162ed3f051b2 173
nikitateggi 46:162ed3f051b2 174 state_t=bt_receive(state_r);
nikitateggi 48:f90edb35a20e 175 // gc.printf(" state_t = %d\n", state_t);
nikitateggi 47:3716dd41dba6 176 // gc.printf(" state_r = %d\n", state_r);
nikitateggi 45:067673dae242 177 timer_bt.stop();
nikitateggi 45:067673dae242 178 timer_bt.reset();
nikitateggi 45:067673dae242 179 if(state_t ==0) // if state_t is zero, there is no other file to send
nikitateggi 45:067673dae242 180 {
nikitateggi 45:067673dae242 181
nikitateggi 45:067673dae242 182 BT_finished();
nikitateggi 45:067673dae242 183 screen_BT_return();
nikitateggi 45:067673dae242 184 EnableTouch();
nikitateggi 45:067673dae242 185 main_state=1;
nikitateggi 45:067673dae242 186 state_touch=12; // jumping to touch case 12
nikitateggi 45:067673dae242 187 break;
nikitateggi 45:067673dae242 188 }
nikitateggi 45:067673dae242 189 else // move to bluetooth transmit if the states are 1,2,3,4
nikitateggi 45:067673dae242 190 {
nikitateggi 44:05dbea558c9a 191 main_state=3;
nikitateggi 45:067673dae242 192 }
nikitateggi 45:067673dae242 193 }
nikitateggi 45:067673dae242 194 }
nikitateggi 44:05dbea558c9a 195
nikitateggi 45:067673dae242 196 else
nikitateggi 45:067673dae242 197 {
nikitateggi 45:067673dae242 198 DisableTouch();
nikitateggi 45:067673dae242 199 BT_no_connection(); // display screen to show that there is no connection
nikitateggi 45:067673dae242 200 gc.printf("stopped");
nikitateggi 45:067673dae242 201 screen_BT_return(); // button to return
nikitateggi 45:067673dae242 202 EnableTouch();
nikitateggi 45:067673dae242 203 main_state=1;
nikitateggi 45:067673dae242 204 state_touch=12;
nikitateggi 47:3716dd41dba6 205 state_t = 1; // state to transmit to bluetooth
nikitateggi 48:f90edb35a20e 206 state_r = 0; // state to receive from bluetooth
nikitateggi 46:162ed3f051b2 207 sd_close(); ///close the opened file which was used for bluetooth
nikitateggi 45:067673dae242 208 timer_bt.stop();
nikitateggi 45:067673dae242 209 timer_bt.reset();
nikitateggi 45:067673dae242 210 }
nikitateggi 45:067673dae242 211 break;
nikitateggi 45:067673dae242 212 }
nikitateggi 45:067673dae242 213 }
nikitateggi 45:067673dae242 214 }
nikitateggi 45:067673dae242 215
nikitateggi 22:ffa88619551d 216 }
nikitateggi 19:1650bbc923cc 217 uint8_t touch(uint8_t state)
nikitateggi 19:1650bbc923cc 218 {
nikitateggi 19:1650bbc923cc 219 static uint8_t state1=0;
rashmivenkataramaiah 41:1141a75eacc4 220 detect_touch(state); // determine the touch points
nikitateggi 1:8316c23ec6b9 221
rashmivenkataramaiah 41:1141a75eacc4 222 switch(state) // state for touch
nikitateggi 0:c47fb0c1bbf6 223 {
rashmivenkataramaiah 41:1141a75eacc4 224 case 1:
rashmivenkataramaiah 41:1141a75eacc4 225 state1=touch_main(); // determining the touch for main screen
nikitateggi 0:c47fb0c1bbf6 226 state=0;
nikitateggi 1:8316c23ec6b9 227 nstate1=state1;
rashmivenkataramaiah 41:1141a75eacc4 228 break;
nikitateggi 0:c47fb0c1bbf6 229
nikitateggi 0:c47fb0c1bbf6 230 case 2:
rashmivenkataramaiah 41:1141a75eacc4 231 state1=touch_main_1(); // determining the touch for SYSTEM CONFIGURATION screen
nikitateggi 0:c47fb0c1bbf6 232 state=0;
nikitateggi 3:9a06c2bed650 233 nstate1=state1;
nikitateggi 0:c47fb0c1bbf6 234 break;
nikitateggi 0:c47fb0c1bbf6 235
nikitateggi 0:c47fb0c1bbf6 236 case 3:
rashmivenkataramaiah 41:1141a75eacc4 237 state1=touch_main_2(); // determining the touch for TEST screen
nikitateggi 0:c47fb0c1bbf6 238 state=0;
nikitateggi 1:8316c23ec6b9 239 nstate1=state1;
nikitateggi 0:c47fb0c1bbf6 240 break;
nikitateggi 0:c47fb0c1bbf6 241
nikitateggi 0:c47fb0c1bbf6 242 case 4:
rashmivenkataramaiah 41:1141a75eacc4 243 state1=touch_glc(); // determining the touch for GLC screen
nikitateggi 1:8316c23ec6b9 244 state=0;
nikitateggi 1:8316c23ec6b9 245 nstate1=state1;
nikitateggi 1:8316c23ec6b9 246 break;
nikitateggi 1:8316c23ec6b9 247
nikitateggi 1:8316c23ec6b9 248 case 5:
rashmivenkataramaiah 41:1141a75eacc4 249 state1=touch_ecg(); // determining the touch for ECG screen
nikitateggi 1:8316c23ec6b9 250 state=0;
nikitateggi 3:9a06c2bed650 251 nstate1=state1;
nikitateggi 3:9a06c2bed650 252 break;
nikitateggi 4:6bd81bb1790d 253 case 6:
rashmivenkataramaiah 41:1141a75eacc4 254 state1=touch_ret(); // determining the touch for returning back to the main screen
nikitateggi 0:c47fb0c1bbf6 255 state=0;
nikitateggi 3:9a06c2bed650 256 nstate1=state1;
nikitateggi 1:8316c23ec6b9 257 break;
nikitateggi 1:8316c23ec6b9 258
nikitateggi 4:6bd81bb1790d 259 case 7:
rashmivenkataramaiah 41:1141a75eacc4 260 state1=touch_again_ecg(); // determining the touch when readings are taken more than once screen
nikitateggi 1:8316c23ec6b9 261 state=0;
nikitateggi 1:8316c23ec6b9 262 nstate1=state1;
nikitateggi 1:8316c23ec6b9 263 break;
nikitateggi 0:c47fb0c1bbf6 264
nikitateggi 3:9a06c2bed650 265 case 8:
rashmivenkataramaiah 41:1141a75eacc4 266 state1=touch_bp(); // determining the touch for BP screen
nikitateggi 3:9a06c2bed650 267 state=0;
nikitateggi 3:9a06c2bed650 268 nstate1=state1;
nikitateggi 3:9a06c2bed650 269 break;
nikitateggi 3:9a06c2bed650 270
rashmivenkataramaiah 41:1141a75eacc4 271 case 9:
rashmivenkataramaiah 41:1141a75eacc4 272 state1=touch_again_glc();
suhasini 5:a3ea7c82b7e1 273 state=0;
suhasini 5:a3ea7c82b7e1 274 nstate1=state1;
suhasini 5:a3ea7c82b7e1 275 break;
nikitateggi 3:9a06c2bed650 276
rashmivenkataramaiah 41:1141a75eacc4 277 case 10 :
rashmivenkataramaiah 41:1141a75eacc4 278 DisableTouch();
rashmivenkataramaiah 41:1141a75eacc4 279 wait_ms(300);
rashmivenkataramaiah 41:1141a75eacc4 280 EnableTouch();
rashmivenkataramaiah 41:1141a75eacc4 281 state=nstate;
rashmivenkataramaiah 41:1141a75eacc4 282 break;
suhasini 5:a3ea7c82b7e1 283
suhasini 5:a3ea7c82b7e1 284
rashmivenkataramaiah 41:1141a75eacc4 285 case 11:
rashmivenkataramaiah 41:1141a75eacc4 286 state1=touch_again_bp();
rashmivenkataramaiah 41:1141a75eacc4 287 state=0;
rashmivenkataramaiah 41:1141a75eacc4 288 nstate1=state1;
rashmivenkataramaiah 41:1141a75eacc4 289 break;
suhasini 5:a3ea7c82b7e1 290
rashmivenkataramaiah 41:1141a75eacc4 291 case 12:
rashmivenkataramaiah 41:1141a75eacc4 292 state1=BT_return();
rashmivenkataramaiah 41:1141a75eacc4 293 state=0;
rashmivenkataramaiah 41:1141a75eacc4 294 nstate1=state1;
rashmivenkataramaiah 41:1141a75eacc4 295 break;
nikitateggi 49:3ff80c4bc1be 296
nikitateggi 49:3ff80c4bc1be 297 case 13:
nikitateggi 49:3ff80c4bc1be 298 state1 = touch_debug(); //touch state for debug
nikitateggi 49:3ff80c4bc1be 299 //state=0;
nikitateggi 49:3ff80c4bc1be 300 nstate1=state1;
nikitateggi 49:3ff80c4bc1be 301 break;
rashmivenkataramaiah 41:1141a75eacc4 302 default :
rashmivenkataramaiah 41:1141a75eacc4 303 DisableTouch();
rashmivenkataramaiah 41:1141a75eacc4 304 wait_ms(300);
rashmivenkataramaiah 41:1141a75eacc4 305 EnableTouch();
rashmivenkataramaiah 41:1141a75eacc4 306 state=nstate;
rashmivenkataramaiah 41:1141a75eacc4 307 break;
nikitateggi 1:8316c23ec6b9 308
nikitateggi 0:c47fb0c1bbf6 309 }
nikitateggi 0:c47fb0c1bbf6 310
rashmivenkataramaiah 41:1141a75eacc4 311 return state1;
rashmivenkataramaiah 41:1141a75eacc4 312 }
nikitateggi 0:c47fb0c1bbf6 313
nikitateggi 0:c47fb0c1bbf6 314
nikitateggi 19:1650bbc923cc 315 uint8_t display(uint8_t state1)
nikitateggi 19:1650bbc923cc 316 {
rashmivenkataramaiah 41:1141a75eacc4 317 static uint8_t state=0;
rashmivenkataramaiah 41:1141a75eacc4 318 static uint8_t ecg_flag=0; // ecg_flag to indicate the ecg test is already done for the same pid
rashmivenkataramaiah 41:1141a75eacc4 319 static uint8_t glc_flag=0; // glc_flag to indicate the glc test is already done for the same pid
rashmivenkataramaiah 41:1141a75eacc4 320 uint16_t heart_rate=0;
nikitateggi 54:f2a413d5dffd 321
rashmivenkataramaiah 41:1141a75eacc4 322
rashmivenkataramaiah 41:1141a75eacc4 323 switch(state1) // state for display screens
rashmivenkataramaiah 41:1141a75eacc4 324 {
nikitateggi 4:6bd81bb1790d 325
nikitateggi 1:8316c23ec6b9 326
rashmivenkataramaiah 41:1141a75eacc4 327 case 1:
rashmivenkataramaiah 41:1141a75eacc4 328 DisableTouch();
rashmivenkataramaiah 41:1141a75eacc4 329 screen_main(); // main screen
nikitateggi 1:8316c23ec6b9 330 state1=0;
nikitateggi 1:8316c23ec6b9 331 state=1;
nikitateggi 1:8316c23ec6b9 332 nstate=state;
rashmivenkataramaiah 41:1141a75eacc4 333 ecg_flag=0; // ecg, glc flag to determine whether the readings are taken more than once
nikitateggi 1:8316c23ec6b9 334 glc_flag=0;
rashmivenkataramaiah 41:1141a75eacc4 335 clear_filecreated_status();
nikitateggi 45:067673dae242 336 battery_status_display(); //Display battery status on LCD
nikitateggi 53:cc6e65480a67 337 pid = get_filepid() + 1;
nikitateggi 3:9a06c2bed650 338 EnableTouch();
nikitateggi 1:8316c23ec6b9 339 break;
nikitateggi 1:8316c23ec6b9 340
rashmivenkataramaiah 41:1141a75eacc4 341 case 2:
rashmivenkataramaiah 41:1141a75eacc4 342 DisableTouch();
rashmivenkataramaiah 41:1141a75eacc4 343 screen_main_1(); // System configration screen
nikitateggi 0:c47fb0c1bbf6 344 state1=0;
nikitateggi 0:c47fb0c1bbf6 345 state=2;
nikitateggi 1:8316c23ec6b9 346 nstate=state;
nikitateggi 45:067673dae242 347 battery_status_display(); //Display battery status on LCD
nikitateggi 3:9a06c2bed650 348 EnableTouch();
nikitateggi 51:1a4693774b60 349 // timer_debug.stop();
nikitateggi 0:c47fb0c1bbf6 350 break;
nikitateggi 0:c47fb0c1bbf6 351
rashmivenkataramaiah 41:1141a75eacc4 352 case 3:
rashmivenkataramaiah 41:1141a75eacc4 353 DisableTouch();
rashmivenkataramaiah 42:c81673b04b6a 354 //sd_read(pid_btpid); //read pid from sd card
rashmivenkataramaiah 42:c81673b04b6a 355 //pid=pid_btpid[0]; //copy pid to a variable
nikitateggi 19:1650bbc923cc 356 gc.printf("pidinit=%d",pid);
rashmivenkataramaiah 41:1141a75eacc4 357 screen_main_2(pid);
rashmivenkataramaiah 41:1141a75eacc4 358 state1=0;
rashmivenkataramaiah 41:1141a75eacc4 359 state=3;
rashmivenkataramaiah 41:1141a75eacc4 360 nstate=state;
nikitateggi 45:067673dae242 361 battery_status_display();
rashmivenkataramaiah 41:1141a75eacc4 362 EnableTouch();
rashmivenkataramaiah 41:1141a75eacc4 363 break;
nikitateggi 0:c47fb0c1bbf6 364
rashmivenkataramaiah 41:1141a75eacc4 365 case 4:
rashmivenkataramaiah 41:1141a75eacc4 366 DisableTouch();
rashmivenkataramaiah 41:1141a75eacc4 367 if (glc_flag==1) // glc_flag=1 when already the reading has been taken
rashmivenkataramaiah 41:1141a75eacc4 368 {
rashmivenkataramaiah 41:1141a75eacc4 369 screen_again();
rashmivenkataramaiah 41:1141a75eacc4 370 state1=0;
rashmivenkataramaiah 41:1141a75eacc4 371 state=9;
rashmivenkataramaiah 41:1141a75eacc4 372 nstate=state;
rashmivenkataramaiah 41:1141a75eacc4 373 }
rashmivenkataramaiah 41:1141a75eacc4 374 else
nikitateggi 19:1650bbc923cc 375 {
rashmivenkataramaiah 41:1141a75eacc4 376 screen_glc(); // glc screen
rashmivenkataramaiah 41:1141a75eacc4 377 state1=0;
rashmivenkataramaiah 41:1141a75eacc4 378 state=4;
rashmivenkataramaiah 41:1141a75eacc4 379 nstate=state;
rashmivenkataramaiah 41:1141a75eacc4 380 }
nikitateggi 3:9a06c2bed650 381 EnableTouch();
nikitateggi 3:9a06c2bed650 382
nikitateggi 0:c47fb0c1bbf6 383 break;
nikitateggi 1:8316c23ec6b9 384
nikitateggi 1:8316c23ec6b9 385
rashmivenkataramaiah 41:1141a75eacc4 386 case 5:
rashmivenkataramaiah 41:1141a75eacc4 387 DisableTouch();
rashmivenkataramaiah 41:1141a75eacc4 388 if (ecg_flag==1)
rashmivenkataramaiah 41:1141a75eacc4 389 {
rashmivenkataramaiah 41:1141a75eacc4 390 screen_again();
rashmivenkataramaiah 41:1141a75eacc4 391 state1=0;
rashmivenkataramaiah 41:1141a75eacc4 392 state=7;
nikitateggi 1:8316c23ec6b9 393 nstate=state;
rashmivenkataramaiah 41:1141a75eacc4 394 }
rashmivenkataramaiah 41:1141a75eacc4 395
rashmivenkataramaiah 41:1141a75eacc4 396 else
rashmivenkataramaiah 41:1141a75eacc4 397 {
rashmivenkataramaiah 41:1141a75eacc4 398 screen_ecg(); //ecg main screen
rashmivenkataramaiah 41:1141a75eacc4 399 state1=0;
rashmivenkataramaiah 41:1141a75eacc4 400 state=5;
nikitateggi 1:8316c23ec6b9 401 nstate=state;
rashmivenkataramaiah 41:1141a75eacc4 402 }
rashmivenkataramaiah 41:1141a75eacc4 403 EnableTouch();
nikitateggi 1:8316c23ec6b9 404 break;
nikitateggi 1:8316c23ec6b9 405
rashmivenkataramaiah 41:1141a75eacc4 406 case 6:
rashmivenkataramaiah 41:1141a75eacc4 407 DisableTouch();
rashmivenkataramaiah 41:1141a75eacc4 408 screen_bp(); // bp main screen
nikitateggi 3:9a06c2bed650 409 state1=0;
nikitateggi 3:9a06c2bed650 410 state=8;
rashmivenkataramaiah 41:1141a75eacc4 411 nstate=state;
rashmivenkataramaiah 41:1141a75eacc4 412 EnableTouch();
nikitateggi 3:9a06c2bed650 413 break;
nikitateggi 3:9a06c2bed650 414
rashmivenkataramaiah 41:1141a75eacc4 415 case 7:
rashmivenkataramaiah 41:1141a75eacc4 416 DisableTouch();
rashmivenkataramaiah 41:1141a75eacc4 417 glc(pid); // glc measurement
nikitateggi 1:8316c23ec6b9 418 glc_flag=1;
avp2417 35:43133f017ed4 419 wait(1);
nikitateggi 4:6bd81bb1790d 420 state1=0;
nikitateggi 4:6bd81bb1790d 421 screen_glc_2();
rashmivenkataramaiah 41:1141a75eacc4 422 state=6;
rashmivenkataramaiah 41:1141a75eacc4 423 eprom_write_8(30,0);
rashmivenkataramaiah 41:1141a75eacc4 424 nstate=state;
rashmivenkataramaiah 41:1141a75eacc4 425 EnableTouch();
nikitateggi 1:8316c23ec6b9 426 break;
nikitateggi 1:8316c23ec6b9 427
nikitateggi 3:9a06c2bed650 428 case 8: DisableTouch();
rashmivenkataramaiah 41:1141a75eacc4 429 ecg_countdown(); // countdown before ecg capture
rashmivenkataramaiah 41:1141a75eacc4 430 heart_rate=ecg(pid); // capturing ecg
nikitateggi 1:8316c23ec6b9 431 state1=0;
nikitateggi 20:7c64e6ecad76 432 if (heart_rate==0)
nikitateggi 20:7c64e6ecad76 433 {
avp2417 34:8f6b0dc124e8 434
nikitateggi 20:7c64e6ecad76 435 screen_ecg_lead();
nikitateggi 20:7c64e6ecad76 436 }
rashmivenkataramaiah 41:1141a75eacc4 437 else if(heart_rate==1) // if heart rate goes above or below range display error // 10/7/17 nikita
nikitateggi 31:0f67acfc6236 438 {
nikitateggi 31:0f67acfc6236 439 screen_ecg_error();
nikitateggi 31:0f67acfc6236 440
nikitateggi 31:0f67acfc6236 441 }
avp2417 34:8f6b0dc124e8 442 else
avp2417 34:8f6b0dc124e8 443 {
avp2417 34:8f6b0dc124e8 444
nikitateggi 20:7c64e6ecad76 445 screen_ecg_2(heart_rate);
nikitateggi 20:7c64e6ecad76 446 ecg_flag=1;
rashmivenkataramaiah 43:85a7f399cb9d 447 }
nikitateggi 1:8316c23ec6b9 448 state=6;
nikitateggi 24:d992ee8369f4 449 eprom_write_8(30,1);
nikitateggi 20:7c64e6ecad76 450 nstate=state;
nikitateggi 20:7c64e6ecad76 451 screen_ecg_bp();
nikitateggi 4:6bd81bb1790d 452 EnableTouch();
nikitateggi 1:8316c23ec6b9 453 break;
rashmivenkataramaiah 41:1141a75eacc4 454
nikitateggi 49:3ff80c4bc1be 455 case 9:
nikitateggi 3:9a06c2bed650 456 DisableTouch();
rashmivenkataramaiah 41:1141a75eacc4 457 screen_bp2(); // bp main screen
rashmivenkataramaiah 41:1141a75eacc4 458 bp_countdown(); // countdown for bp
rashmivenkataramaiah 41:1141a75eacc4 459 bp(pid); // measuring bp earlier bp() changed to bp(pid) 28/4/2017
nikitateggi 3:9a06c2bed650 460 state1=0;
nikitateggi 3:9a06c2bed650 461 state=6;
nikitateggi 24:d992ee8369f4 462 eprom_write_8(30,2);
nikitateggi 3:9a06c2bed650 463 nstate=state;
nikitateggi 3:9a06c2bed650 464 EnableTouch();
nikitateggi 3:9a06c2bed650 465 break;
nikitateggi 31:0f67acfc6236 466
nikitateggi 31:0f67acfc6236 467
nikitateggi 31:0f67acfc6236 468 case 10 : DisableTouch();
nikitateggi 31:0f67acfc6236 469 wait_ms(300);
nikitateggi 31:0f67acfc6236 470 EnableTouch();
nikitateggi 31:0f67acfc6236 471 state=nstate;
nikitateggi 31:0f67acfc6236 472 break;
nikitateggi 31:0f67acfc6236 473
rashmivenkataramaiah 41:1141a75eacc4 474 case 11 :
rashmivenkataramaiah 41:1141a75eacc4 475 DisableTouch();
rashmivenkataramaiah 42:c81673b04b6a 476 screen_patient_info(get_filepid(), get_btpid());
rashmivenkataramaiah 41:1141a75eacc4 477 state1=0;
rashmivenkataramaiah 41:1141a75eacc4 478 state=12;
rashmivenkataramaiah 41:1141a75eacc4 479 EnableTouch();
nikitateggi 49:3ff80c4bc1be 480 break;
nikitateggi 49:3ff80c4bc1be 481
nikitateggi 49:3ff80c4bc1be 482 case 13 : //display screen for debug
nikitateggi 49:3ff80c4bc1be 483 DisableTouch();
nikitateggi 49:3ff80c4bc1be 484 screen_debug();
nikitateggi 49:3ff80c4bc1be 485 state1=0;
nikitateggi 49:3ff80c4bc1be 486 state=13;
nikitateggi 49:3ff80c4bc1be 487 nstate=state;
nikitateggi 49:3ff80c4bc1be 488 EnableTouch();
nikitateggi 49:3ff80c4bc1be 489 break;
nikitateggi 49:3ff80c4bc1be 490
nikitateggi 49:3ff80c4bc1be 491 case 14 :
nikitateggi 49:3ff80c4bc1be 492 DisableTouch(); //state to delete SD card
nikitateggi 49:3ff80c4bc1be 493 delete_sdcard();
nikitateggi 49:3ff80c4bc1be 494 screen_sdcard_delete();
nikitateggi 49:3ff80c4bc1be 495 state1=0;
nikitateggi 49:3ff80c4bc1be 496 state= 12;
nikitateggi 49:3ff80c4bc1be 497 nstate=state;
nikitateggi 49:3ff80c4bc1be 498 EnableTouch();
nikitateggi 49:3ff80c4bc1be 499 break;
nikitateggi 49:3ff80c4bc1be 500
nikitateggi 49:3ff80c4bc1be 501 case 15 :
nikitateggi 49:3ff80c4bc1be 502 DisableTouch();
nikitateggi 51:1a4693774b60 503 gc.printf("Total Patients' data available : %d\n",get_filepid()); //state to read SD card
nikitateggi 50:b42238e7f46d 504 gc.printf("Enter the PID number");
nikitateggi 50:b42238e7f46d 505 read_sdcard_file();
nikitateggi 51:1a4693774b60 506 screen_sdcard_read();
nikitateggi 49:3ff80c4bc1be 507 state1=0;
nikitateggi 49:3ff80c4bc1be 508 state= 12;
nikitateggi 49:3ff80c4bc1be 509 nstate=state;
nikitateggi 49:3ff80c4bc1be 510 EnableTouch();
nikitateggi 49:3ff80c4bc1be 511 break;
nikitateggi 31:0f67acfc6236 512
nikitateggi 1:8316c23ec6b9 513 default :
nikitateggi 3:9a06c2bed650 514
nikitateggi 1:8316c23ec6b9 515 state1=nstate1;
nikitateggi 1:8316c23ec6b9 516 break;
nikitateggi 1:8316c23ec6b9 517
nikitateggi 0:c47fb0c1bbf6 518
nikitateggi 0:c47fb0c1bbf6 519 }
nikitateggi 0:c47fb0c1bbf6 520
nikitateggi 0:c47fb0c1bbf6 521
nikitateggi 0:c47fb0c1bbf6 522
rashmivenkataramaiah 41:1141a75eacc4 523 return state;
nikitateggi 0:c47fb0c1bbf6 524
rashmivenkataramaiah 41:1141a75eacc4 525 }
rashmivenkataramaiah 41:1141a75eacc4 526
rashmivenkataramaiah 41:1141a75eacc4 527
rashmivenkataramaiah 41:1141a75eacc4 528 bool get_filecreated_status(void) //function to get file created status
rashmivenkataramaiah 41:1141a75eacc4 529 {
rashmivenkataramaiah 41:1141a75eacc4 530 return file_created_status;
rashmivenkataramaiah 41:1141a75eacc4 531 }
rashmivenkataramaiah 41:1141a75eacc4 532
rashmivenkataramaiah 41:1141a75eacc4 533 void set_filecreated_status(void) //function to set file created status
rashmivenkataramaiah 41:1141a75eacc4 534 {
rashmivenkataramaiah 42:c81673b04b6a 535 file_created_status = true;
rashmivenkataramaiah 41:1141a75eacc4 536 }
rashmivenkataramaiah 41:1141a75eacc4 537
rashmivenkataramaiah 41:1141a75eacc4 538
rashmivenkataramaiah 41:1141a75eacc4 539 void clear_filecreated_status(void) //function to clear file created status
rashmivenkataramaiah 41:1141a75eacc4 540 {
rashmivenkataramaiah 42:c81673b04b6a 541 file_created_status = false;
rashmivenkataramaiah 42:c81673b04b6a 542 }
rashmivenkataramaiah 42:c81673b04b6a 543
rashmivenkataramaiah 43:85a7f399cb9d 544 void increment_filepid (void) //increment pid if a test is completed
rashmivenkataramaiah 42:c81673b04b6a 545 {
rashmivenkataramaiah 43:85a7f399cb9d 546 //uint32_t filepid_btpid[2] = {};
rashmivenkataramaiah 42:c81673b04b6a 547
rashmivenkataramaiah 42:c81673b04b6a 548 //set_filecreated_status(); //set it to make it append mode
rashmivenkataramaiah 42:c81673b04b6a 549 sd_read(filepid_btpid); //read pid from sd card
rashmivenkataramaiah 42:c81673b04b6a 550 filepid_btpid[0] = filepid_btpid[0] + 1; //increment it by 1
rashmivenkataramaiah 42:c81673b04b6a 551 sd_write(filepid_btpid); //write it back to sd card
rashmivenkataramaiah 42:c81673b04b6a 552
rashmivenkataramaiah 42:c81673b04b6a 553 }
rashmivenkataramaiah 42:c81673b04b6a 554
rashmivenkataramaiah 43:85a7f399cb9d 555 void increment_btpid (void) //increment pid if a test is completed
rashmivenkataramaiah 43:85a7f399cb9d 556 {
rashmivenkataramaiah 43:85a7f399cb9d 557 //uint32_t filepid_btpid[2] = {};
rashmivenkataramaiah 43:85a7f399cb9d 558
rashmivenkataramaiah 43:85a7f399cb9d 559 //set_filecreated_status(); //set it to make it append mode
rashmivenkataramaiah 43:85a7f399cb9d 560 sd_read(filepid_btpid); //read pid from sd card
nikitateggi 45:067673dae242 561 filepid_btpid[1] = filepid_btpid[1] + 1; //increment it by 1
rashmivenkataramaiah 43:85a7f399cb9d 562 sd_write(filepid_btpid); //write it back to sd card
rashmivenkataramaiah 43:85a7f399cb9d 563
rashmivenkataramaiah 43:85a7f399cb9d 564 }
rashmivenkataramaiah 43:85a7f399cb9d 565
rashmivenkataramaiah 42:c81673b04b6a 566 uint32_t get_filepid(void)
rashmivenkataramaiah 42:c81673b04b6a 567 {
rashmivenkataramaiah 42:c81673b04b6a 568 //uint32_t filepid_btpid[2] = {};
rashmivenkataramaiah 42:c81673b04b6a 569 uint32_t filepid = 0;
rashmivenkataramaiah 42:c81673b04b6a 570
rashmivenkataramaiah 42:c81673b04b6a 571 sd_read(filepid_btpid); //read pid from sd card
nikitateggi 45:067673dae242 572 filepid = filepid_btpid[0];
rashmivenkataramaiah 42:c81673b04b6a 573 return filepid;
rashmivenkataramaiah 42:c81673b04b6a 574
rashmivenkataramaiah 42:c81673b04b6a 575 }
rashmivenkataramaiah 42:c81673b04b6a 576
rashmivenkataramaiah 42:c81673b04b6a 577 void store_filepid(uint32_t pid)
rashmivenkataramaiah 42:c81673b04b6a 578 {
rashmivenkataramaiah 42:c81673b04b6a 579 //uint32_t filepid_btpid[2] = {};
rashmivenkataramaiah 42:c81673b04b6a 580 sd_read(filepid_btpid); //read pid from sd card
rashmivenkataramaiah 42:c81673b04b6a 581 filepid_btpid[0] = pid;
rashmivenkataramaiah 42:c81673b04b6a 582 sd_write(filepid_btpid); //write it back to sd card
rashmivenkataramaiah 42:c81673b04b6a 583
rashmivenkataramaiah 42:c81673b04b6a 584 }
rashmivenkataramaiah 42:c81673b04b6a 585
rashmivenkataramaiah 42:c81673b04b6a 586 uint32_t get_btpid(void)
rashmivenkataramaiah 42:c81673b04b6a 587 {
rashmivenkataramaiah 42:c81673b04b6a 588 //uint32_t filepid_btpid[2] = {};
rashmivenkataramaiah 42:c81673b04b6a 589 uint32_t btpid = 0;
rashmivenkataramaiah 42:c81673b04b6a 590
rashmivenkataramaiah 42:c81673b04b6a 591 sd_read(filepid_btpid); //read pid from sd card
nikitateggi 45:067673dae242 592 btpid = filepid_btpid[1];
rashmivenkataramaiah 42:c81673b04b6a 593 return btpid;
rashmivenkataramaiah 42:c81673b04b6a 594
rashmivenkataramaiah 42:c81673b04b6a 595 }
rashmivenkataramaiah 42:c81673b04b6a 596
rashmivenkataramaiah 42:c81673b04b6a 597 void store_btpid(uint32_t bt_pid)
rashmivenkataramaiah 42:c81673b04b6a 598 {
rashmivenkataramaiah 42:c81673b04b6a 599 //uint32_t filepid_btpid[2] = {};
rashmivenkataramaiah 42:c81673b04b6a 600
rashmivenkataramaiah 42:c81673b04b6a 601 sd_read(filepid_btpid); //read pid from sd card
rashmivenkataramaiah 42:c81673b04b6a 602 filepid_btpid[1] = bt_pid;
rashmivenkataramaiah 42:c81673b04b6a 603 sd_write(filepid_btpid); //write it back to sd card
rashmivenkataramaiah 42:c81673b04b6a 604
rashmivenkataramaiah 42:c81673b04b6a 605 }
rashmivenkataramaiah 42:c81673b04b6a 606
nikitateggi 45:067673dae242 607
nikitateggi 44:05dbea558c9a 608 uint32_t get_timer_bluetooth()
nikitateggi 44:05dbea558c9a 609 {
nikitateggi 45:067673dae242 610 return timer_bt.read_ms();
nikitateggi 44:05dbea558c9a 611 }
nikitateggi 45:067673dae242 612
nikitateggi 45:067673dae242 613 void battery_status_monitoring()
nikitateggi 45:067673dae242 614 {
nikitateggi 45:067673dae242 615 if(timer_battery.read_ms() > BATTERY_TIMER_VALUE )
nikitateggi 45:067673dae242 616 {
nikitateggi 45:067673dae242 617 battery_monitor();
nikitateggi 45:067673dae242 618 timer_battery.reset();
nikitateggi 45:067673dae242 619 }
nikitateggi 49:3ff80c4bc1be 620 }
nikitateggi 49:3ff80c4bc1be 621
nikitateggi 51:1a4693774b60 622 bool read_debug_status()
nikitateggi 51:1a4693774b60 623 {
nikitateggi 52:7d9ff7781bdc 624 // gc.printf("debug_mode=%d\n",debug_mode);
nikitateggi 51:1a4693774b60 625 return debug_mode;
nikitateggi 51:1a4693774b60 626 }
nikitateggi 51:1a4693774b60 627
nikitateggi 51:1a4693774b60 628 void debug_status_monitoring()
nikitateggi 51:1a4693774b60 629 {
nikitateggi 51:1a4693774b60 630
nikitateggi 51:1a4693774b60 631
nikitateggi 54:f2a413d5dffd 632 //if(get_timer_debug()<TIMER_ENTER_DEBUG_MODE)
nikitateggi 54:f2a413d5dffd 633 //{
nikitateggi 51:1a4693774b60 634 if (gc.readable()) // check for the user input
nikitateggi 51:1a4693774b60 635 {
nikitateggi 51:1a4693774b60 636
nikitateggi 51:1a4693774b60 637 while (gc.readable()!= '\n') // read till the newline
nikitateggi 51:1a4693774b60 638 {
nikitateggi 51:1a4693774b60 639
nikitateggi 51:1a4693774b60 640 gc.scanf("%s", debug_message_rx); // store the message typed in buffer
nikitateggi 51:1a4693774b60 641 gc.printf("%s", debug_message_rx);
nikitateggi 51:1a4693774b60 642 break;
nikitateggi 51:1a4693774b60 643 }
nikitateggi 51:1a4693774b60 644
nikitateggi 51:1a4693774b60 645
nikitateggi 51:1a4693774b60 646 if (strcmp(debug_message_rx, debug_message) == 0) // compare the message with the required one
nikitateggi 51:1a4693774b60 647 {
nikitateggi 54:f2a413d5dffd 648 debug_mode = true; // enable the debug mode status
nikitateggi 51:1a4693774b60 649 gc.printf("entered into debug mode\n");
nikitateggi 51:1a4693774b60 650 timer_debug.reset();
nikitateggi 51:1a4693774b60 651 timer_debug.start(); // timer is started in orede
nikitateggi 51:1a4693774b60 652 }
nikitateggi 51:1a4693774b60 653 }
nikitateggi 54:f2a413d5dffd 654 //}
nikitateggi 51:1a4693774b60 655
nikitateggi 51:1a4693774b60 656 }
nikitateggi 51:1a4693774b60 657
nikitateggi 51:1a4693774b60 658 uint32_t get_timer_debug() // timer for enabling debug option
nikitateggi 51:1a4693774b60 659 {
nikitateggi 51:1a4693774b60 660 if(timer_debug.read_ms()>TIMER_ENABLE_DEBUG_MODE)
nikitateggi 51:1a4693774b60 661 {
nikitateggi 51:1a4693774b60 662 timer_debug.stop();
nikitateggi 51:1a4693774b60 663 }
nikitateggi 51:1a4693774b60 664 return timer_debug.read_ms();
nikitateggi 51:1a4693774b60 665 }
nikitateggi 51:1a4693774b60 666
nikitateggi 51:1a4693774b60 667