Updated with option to return from BP screen to main screen, resolved screen navigation issues

Dependencies:   SDFileSystem TFTLCD_8bit ds3231 program mbed

Fork of poc_dis_5 by SenseSemi

Committer:
suhasini
Date:
Thu Mar 30 11:34:04 2017 +0000
Revision:
5:a3ea7c82b7e1
Parent:
4:6bd81bb1790d
PID updation possible, Proper screen navigation enabled, Return functionality from BP to main screen-done, date-time format modified, BP data not saved into SD card

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nikitateggi 0:c47fb0c1bbf6 1 #include "mbed.h"
nikitateggi 0:c47fb0c1bbf6 2 #include "ili9325.h"
nikitateggi 0:c47fb0c1bbf6 3 #include "lcd_base.h"
nikitateggi 0:c47fb0c1bbf6 4 #include "display_modules.h"
nikitateggi 0:c47fb0c1bbf6 5 #include "touch_modules.h"
nikitateggi 1:8316c23ec6b9 6 #include "ecg_dec.h"
nikitateggi 1:8316c23ec6b9 7 #include "touch_modules.h"
nikitateggi 1:8316c23ec6b9 8 #include "glc.h"
nikitateggi 3:9a06c2bed650 9 #include "bp.h"
nikitateggi 1:8316c23ec6b9 10 #include "sdcard.h"
nikitateggi 4:6bd81bb1790d 11 #include "eeprom_pgm.h"
nikitateggi 0:c47fb0c1bbf6 12
nikitateggi 1:8316c23ec6b9 13
nikitateggi 0:c47fb0c1bbf6 14 Serial gc(USBTX, USBRX);
nikitateggi 0:c47fb0c1bbf6 15 DigitalIn q1(PTB11);
nikitateggi 0:c47fb0c1bbf6 16 DigitalIn q(PTB8);
nikitateggi 1:8316c23ec6b9 17 //Serial ble(PTC4,PTC3);
nikitateggi 0:c47fb0c1bbf6 18
nikitateggi 0:c47fb0c1bbf6 19
nikitateggi 0:c47fb0c1bbf6 20
nikitateggi 0:c47fb0c1bbf6 21 int main(){
nikitateggi 0:c47fb0c1bbf6 22
nikitateggi 0:c47fb0c1bbf6 23
nikitateggi 3:9a06c2bed650 24 unsigned char state;
nikitateggi 3:9a06c2bed650 25 unsigned char state1;
nikitateggi 3:9a06c2bed650 26 unsigned char nstate;
nikitateggi 3:9a06c2bed650 27 unsigned char nstate1;
nikitateggi 3:9a06c2bed650 28 int pid=0; // patient ID
nikitateggi 3:9a06c2bed650 29 unsigned char flag=0;
nikitateggi 3:9a06c2bed650 30 unsigned char ecg_flag=0;
nikitateggi 3:9a06c2bed650 31 unsigned char glc_flag=0;
nikitateggi 1:8316c23ec6b9 32
nikitateggi 3:9a06c2bed650 33
nikitateggi 1:8316c23ec6b9 34 DisableTouch();
nikitateggi 1:8316c23ec6b9 35 gc.baud(115200);
nikitateggi 1:8316c23ec6b9 36
nikitateggi 1:8316c23ec6b9 37 init_screen(); //initialize lcd
nikitateggi 1:8316c23ec6b9 38 screen_main(); // display of main screen
nikitateggi 0:c47fb0c1bbf6 39 state=1;
nikitateggi 1:8316c23ec6b9 40 flag=0;
nikitateggi 1:8316c23ec6b9 41 nstate=state;
nikitateggi 0:c47fb0c1bbf6 42 EnableTouch(); // enable touch function
nikitateggi 0:c47fb0c1bbf6 43
nikitateggi 0:c47fb0c1bbf6 44 while(1)
nikitateggi 0:c47fb0c1bbf6 45 {
nikitateggi 3:9a06c2bed650 46
nikitateggi 4:6bd81bb1790d 47 detect_touch(); // determine the touch points
nikitateggi 1:8316c23ec6b9 48
nikitateggi 4:6bd81bb1790d 49 switch(state) // state for touch
nikitateggi 0:c47fb0c1bbf6 50 {
nikitateggi 0:c47fb0c1bbf6 51 case 1: state1=touch_main(); // determining the touch for main screen
nikitateggi 0:c47fb0c1bbf6 52 state=0;
nikitateggi 1:8316c23ec6b9 53 nstate1=state1;
nikitateggi 3:9a06c2bed650 54 break;
nikitateggi 0:c47fb0c1bbf6 55
nikitateggi 0:c47fb0c1bbf6 56 case 2:
nikitateggi 4:6bd81bb1790d 57 state1=touch_main_1(); // determining the touch for SYSTEM CONFIGURATION screen
nikitateggi 0:c47fb0c1bbf6 58 state=0;
nikitateggi 3:9a06c2bed650 59 nstate1=state1;
nikitateggi 0:c47fb0c1bbf6 60 break;
nikitateggi 0:c47fb0c1bbf6 61
nikitateggi 0:c47fb0c1bbf6 62 case 3:
nikitateggi 4:6bd81bb1790d 63 state1=touch_main_2(); //// determining the touch for TEST screen
nikitateggi 4:6bd81bb1790d 64
nikitateggi 0:c47fb0c1bbf6 65 state=0;
nikitateggi 1:8316c23ec6b9 66 nstate1=state1;
nikitateggi 0:c47fb0c1bbf6 67 break;
nikitateggi 0:c47fb0c1bbf6 68
nikitateggi 0:c47fb0c1bbf6 69 case 4:
nikitateggi 4:6bd81bb1790d 70 state1=touch_glc(); // determining the touch for GLC screen
nikitateggi 1:8316c23ec6b9 71 state=0;
nikitateggi 1:8316c23ec6b9 72 nstate1=state1;
nikitateggi 1:8316c23ec6b9 73 break;
nikitateggi 1:8316c23ec6b9 74
nikitateggi 1:8316c23ec6b9 75 case 5:
nikitateggi 4:6bd81bb1790d 76 state1=touch_ecg(); // determining the touch for ECG screen
nikitateggi 1:8316c23ec6b9 77 state=0;
nikitateggi 3:9a06c2bed650 78 nstate1=state1;
nikitateggi 3:9a06c2bed650 79 break;
nikitateggi 4:6bd81bb1790d 80 case 6:
nikitateggi 4:6bd81bb1790d 81 state1=touch_ret(); // determining the touch for returning back to the main screen
nikitateggi 0:c47fb0c1bbf6 82 state=0;
nikitateggi 3:9a06c2bed650 83 nstate1=state1;
nikitateggi 1:8316c23ec6b9 84 break;
nikitateggi 1:8316c23ec6b9 85
nikitateggi 4:6bd81bb1790d 86 case 7:
suhasini 5:a3ea7c82b7e1 87 state1=touch_again_ecg(); // determining the touch when readings are taken more than once screen
nikitateggi 1:8316c23ec6b9 88 state=0;
nikitateggi 1:8316c23ec6b9 89 nstate1=state1;
nikitateggi 1:8316c23ec6b9 90 break;
nikitateggi 0:c47fb0c1bbf6 91
nikitateggi 3:9a06c2bed650 92 case 8:
nikitateggi 4:6bd81bb1790d 93 state1=touch_bp(); // determining the touch for BP screen
nikitateggi 3:9a06c2bed650 94 state=0;
nikitateggi 3:9a06c2bed650 95 nstate1=state1;
nikitateggi 3:9a06c2bed650 96 break;
nikitateggi 3:9a06c2bed650 97
suhasini 5:a3ea7c82b7e1 98 case 9: state1=touch_again_glc();
suhasini 5:a3ea7c82b7e1 99 state=0;
suhasini 5:a3ea7c82b7e1 100 nstate1=state1;
suhasini 5:a3ea7c82b7e1 101 break;
nikitateggi 3:9a06c2bed650 102
nikitateggi 1:8316c23ec6b9 103 case 10 : DisableTouch();
nikitateggi 1:8316c23ec6b9 104 wait_ms(300);
nikitateggi 1:8316c23ec6b9 105 EnableTouch();
nikitateggi 3:9a06c2bed650 106 state=nstate;
nikitateggi 3:9a06c2bed650 107 break;
suhasini 5:a3ea7c82b7e1 108
suhasini 5:a3ea7c82b7e1 109
suhasini 5:a3ea7c82b7e1 110 case 11: state1=touch_again_bp();
suhasini 5:a3ea7c82b7e1 111 state=0;
suhasini 5:a3ea7c82b7e1 112 nstate1=state1;
suhasini 5:a3ea7c82b7e1 113 break;
suhasini 5:a3ea7c82b7e1 114
suhasini 5:a3ea7c82b7e1 115
nikitateggi 4:6bd81bb1790d 116 default : DisableTouch();
nikitateggi 1:8316c23ec6b9 117 wait_ms(300);
nikitateggi 1:8316c23ec6b9 118 EnableTouch();
nikitateggi 3:9a06c2bed650 119 state=nstate;
nikitateggi 3:9a06c2bed650 120 break;
nikitateggi 1:8316c23ec6b9 121
nikitateggi 0:c47fb0c1bbf6 122 }
nikitateggi 0:c47fb0c1bbf6 123
nikitateggi 0:c47fb0c1bbf6 124
nikitateggi 0:c47fb0c1bbf6 125
nikitateggi 0:c47fb0c1bbf6 126
nikitateggi 0:c47fb0c1bbf6 127
nikitateggi 4:6bd81bb1790d 128 switch(state1) // state for display screens
nikitateggi 0:c47fb0c1bbf6 129 {
nikitateggi 4:6bd81bb1790d 130
nikitateggi 1:8316c23ec6b9 131
nikitateggi 3:9a06c2bed650 132 case 1: DisableTouch();
nikitateggi 4:6bd81bb1790d 133 screen_main(); // main screen
nikitateggi 1:8316c23ec6b9 134 state1=0;
nikitateggi 1:8316c23ec6b9 135 state=1;
nikitateggi 1:8316c23ec6b9 136 nstate=state;
nikitateggi 1:8316c23ec6b9 137 flag=0;
nikitateggi 4:6bd81bb1790d 138 ecg_flag=0; // ecg, glc flag to determine whether the readings are taken more than once
nikitateggi 1:8316c23ec6b9 139 glc_flag=0;
nikitateggi 3:9a06c2bed650 140 EnableTouch();
nikitateggi 1:8316c23ec6b9 141 break;
nikitateggi 1:8316c23ec6b9 142
nikitateggi 3:9a06c2bed650 143 case 2: DisableTouch();
nikitateggi 4:6bd81bb1790d 144 screen_main_1(); // System configration screen
nikitateggi 0:c47fb0c1bbf6 145 state1=0;
nikitateggi 0:c47fb0c1bbf6 146 state=2;
nikitateggi 1:8316c23ec6b9 147 nstate=state;
nikitateggi 3:9a06c2bed650 148 EnableTouch();
nikitateggi 0:c47fb0c1bbf6 149 break;
nikitateggi 0:c47fb0c1bbf6 150
nikitateggi 3:9a06c2bed650 151 case 3: DisableTouch();
nikitateggi 1:8316c23ec6b9 152 if (flag==0)
nikitateggi 1:8316c23ec6b9 153 {
nikitateggi 4:6bd81bb1790d 154 //pid=pid+1;
nikitateggi 4:6bd81bb1790d 155 pid=eprom_read(1); // reading the patient id from eeprom
nikitateggi 4:6bd81bb1790d 156 pid=pid+1;
nikitateggi 4:6bd81bb1790d 157 eprom_write(1,pid); // writing the patient id to eeprom
nikitateggi 1:8316c23ec6b9 158 screen_main_2(pid);
nikitateggi 4:6bd81bb1790d 159 sd_open_GLCfilee(pid); // only opening the glc,bp and ecg file
nikitateggi 1:8316c23ec6b9 160 sd_close();
nikitateggi 2:3b7b71bfc941 161 sd_open_ECGfilee(pid);
nikitateggi 1:8316c23ec6b9 162 sd_close();
nikitateggi 4:6bd81bb1790d 163 sd_open_BPfilee(pid);
nikitateggi 1:8316c23ec6b9 164 sd_close();
nikitateggi 1:8316c23ec6b9 165 flag=1;
nikitateggi 1:8316c23ec6b9 166 }
nikitateggi 1:8316c23ec6b9 167 else
nikitateggi 1:8316c23ec6b9 168 {
nikitateggi 4:6bd81bb1790d 169 screen_main_2(pid); // TEST screen
nikitateggi 1:8316c23ec6b9 170 }
nikitateggi 1:8316c23ec6b9 171
nikitateggi 1:8316c23ec6b9 172 state1=0;
nikitateggi 1:8316c23ec6b9 173 state=3;
nikitateggi 1:8316c23ec6b9 174 nstate=state;
nikitateggi 3:9a06c2bed650 175 EnableTouch();
nikitateggi 1:8316c23ec6b9 176 break;
nikitateggi 0:c47fb0c1bbf6 177
nikitateggi 3:9a06c2bed650 178 case 4: DisableTouch();
nikitateggi 4:6bd81bb1790d 179 if (glc_flag==1) // glc_flag=1 when already the reading has been taken
nikitateggi 1:8316c23ec6b9 180 {
nikitateggi 4:6bd81bb1790d 181 screen_again();
nikitateggi 1:8316c23ec6b9 182 state1=0;
suhasini 5:a3ea7c82b7e1 183 state=9;
nikitateggi 1:8316c23ec6b9 184 nstate=state;
nikitateggi 1:8316c23ec6b9 185 }
nikitateggi 1:8316c23ec6b9 186 else
nikitateggi 4:6bd81bb1790d 187 { screen_glc(); // glc screen
nikitateggi 0:c47fb0c1bbf6 188 state1=0;
nikitateggi 0:c47fb0c1bbf6 189 state=4;
nikitateggi 1:8316c23ec6b9 190 nstate=state;
nikitateggi 1:8316c23ec6b9 191 }
nikitateggi 3:9a06c2bed650 192 EnableTouch();
nikitateggi 3:9a06c2bed650 193
nikitateggi 0:c47fb0c1bbf6 194 break;
nikitateggi 1:8316c23ec6b9 195
nikitateggi 1:8316c23ec6b9 196
nikitateggi 3:9a06c2bed650 197 case 5: DisableTouch();
nikitateggi 1:8316c23ec6b9 198 if (ecg_flag==1)
nikitateggi 1:8316c23ec6b9 199 {
nikitateggi 1:8316c23ec6b9 200 screen_again();
nikitateggi 1:8316c23ec6b9 201 state1=0;
nikitateggi 1:8316c23ec6b9 202 state=7;
nikitateggi 1:8316c23ec6b9 203 nstate=state;
nikitateggi 1:8316c23ec6b9 204 }
nikitateggi 1:8316c23ec6b9 205
nikitateggi 1:8316c23ec6b9 206 else
nikitateggi 1:8316c23ec6b9 207 {
nikitateggi 4:6bd81bb1790d 208 screen_ecg(); //ecg main screen
nikitateggi 1:8316c23ec6b9 209 state1=0;
nikitateggi 1:8316c23ec6b9 210 state=5;
nikitateggi 1:8316c23ec6b9 211 nstate=state;
nikitateggi 1:8316c23ec6b9 212 }
nikitateggi 3:9a06c2bed650 213 EnableTouch();
nikitateggi 1:8316c23ec6b9 214 break;
nikitateggi 1:8316c23ec6b9 215
nikitateggi 3:9a06c2bed650 216 case 6: DisableTouch();
nikitateggi 4:6bd81bb1790d 217 screen_bp(); // bp main screen
nikitateggi 3:9a06c2bed650 218 EnableTouch();
nikitateggi 3:9a06c2bed650 219 state1=0;
nikitateggi 3:9a06c2bed650 220 state=8;
nikitateggi 3:9a06c2bed650 221 break;
nikitateggi 3:9a06c2bed650 222
nikitateggi 3:9a06c2bed650 223
nikitateggi 3:9a06c2bed650 224
nikitateggi 3:9a06c2bed650 225
nikitateggi 3:9a06c2bed650 226
nikitateggi 4:6bd81bb1790d 227 case 7: DisableTouch();
nikitateggi 4:6bd81bb1790d 228 glc(pid); // glc measurement
nikitateggi 1:8316c23ec6b9 229 glc_flag=1;
nikitateggi 1:8316c23ec6b9 230 wait(5);
nikitateggi 4:6bd81bb1790d 231 state1=0;
nikitateggi 4:6bd81bb1790d 232 screen_glc_2();
nikitateggi 4:6bd81bb1790d 233 state=6;;
nikitateggi 1:8316c23ec6b9 234 // gc.printf("%d", state);
nikitateggi 3:9a06c2bed650 235 EnableTouch();
nikitateggi 1:8316c23ec6b9 236 break;
nikitateggi 1:8316c23ec6b9 237
nikitateggi 3:9a06c2bed650 238 case 8: DisableTouch();
nikitateggi 4:6bd81bb1790d 239 ecg_countdown(); // countdown before ecg capture
nikitateggi 4:6bd81bb1790d 240 ecg(pid); // capturing ecg
nikitateggi 1:8316c23ec6b9 241 state1=0;
nikitateggi 1:8316c23ec6b9 242 screen_ecg_2();
nikitateggi 1:8316c23ec6b9 243 state=6;
nikitateggi 1:8316c23ec6b9 244 nstate=state;
nikitateggi 1:8316c23ec6b9 245 ecg_flag=1;
nikitateggi 4:6bd81bb1790d 246 // ble.printf("ecg");
nikitateggi 4:6bd81bb1790d 247 EnableTouch();
nikitateggi 1:8316c23ec6b9 248 break;
nikitateggi 1:8316c23ec6b9 249
nikitateggi 1:8316c23ec6b9 250
nikitateggi 4:6bd81bb1790d 251 /*case 9:
nikitateggi 3:9a06c2bed650 252 DisableTouch();
nikitateggi 4:6bd81bb1790d 253 screen_glc_2();
nikitateggi 4:6bd81bb1790d 254 state1=0;
nikitateggi 1:8316c23ec6b9 255 state=6;
nikitateggi 1:8316c23ec6b9 256 nstate=state;
nikitateggi 3:9a06c2bed650 257 EnableTouch();
nikitateggi 4:6bd81bb1790d 258 break;*/
nikitateggi 3:9a06c2bed650 259
suhasini 5:a3ea7c82b7e1 260 case 9:
nikitateggi 3:9a06c2bed650 261 DisableTouch();
nikitateggi 4:6bd81bb1790d 262 screen_bp2(); // bp main screen
nikitateggi 4:6bd81bb1790d 263 bp(); // measuring bp
nikitateggi 3:9a06c2bed650 264 state1=0;
nikitateggi 3:9a06c2bed650 265 // wait(1);
nikitateggi 3:9a06c2bed650 266 state=6;
nikitateggi 3:9a06c2bed650 267 nstate=state;
nikitateggi 3:9a06c2bed650 268 EnableTouch();
nikitateggi 3:9a06c2bed650 269 break;
nikitateggi 3:9a06c2bed650 270
nikitateggi 3:9a06c2bed650 271
nikitateggi 3:9a06c2bed650 272
nikitateggi 1:8316c23ec6b9 273 default :
nikitateggi 3:9a06c2bed650 274
nikitateggi 1:8316c23ec6b9 275 state1=nstate1;
nikitateggi 1:8316c23ec6b9 276 break;
nikitateggi 1:8316c23ec6b9 277
nikitateggi 0:c47fb0c1bbf6 278
nikitateggi 0:c47fb0c1bbf6 279 }
nikitateggi 0:c47fb0c1bbf6 280
nikitateggi 0:c47fb0c1bbf6 281
nikitateggi 0:c47fb0c1bbf6 282
nikitateggi 0:c47fb0c1bbf6 283
nikitateggi 0:c47fb0c1bbf6 284
nikitateggi 0:c47fb0c1bbf6 285 }
nikitateggi 0:c47fb0c1bbf6 286
nikitateggi 0:c47fb0c1bbf6 287
nikitateggi 0:c47fb0c1bbf6 288 }
nikitateggi 0:c47fb0c1bbf6 289
nikitateggi 0:c47fb0c1bbf6 290
nikitateggi 0:c47fb0c1bbf6 291
nikitateggi 0:c47fb0c1bbf6 292
nikitateggi 0:c47fb0c1bbf6 293
nikitateggi 0:c47fb0c1bbf6 294
nikitateggi 1:8316c23ec6b9 295